Oracle не предоставляет osuser, когда есть соединение из Java-программы - PullRequest
1 голос
/ 02 сентября 2011

Я пытаюсь подключиться к моей удаленной базе данных Oracle, она заблокирована и имеет белый список пользователей и компьютеров, с которых они могут подключиться.Тем не менее, oracle не предоставляет OSUSER, когда я пытаюсь подключиться, поэтому мне отказывают.

Вот как я подключаюсь:

public static final String CONNECTION_STRING =  "jdbc:oracle:thin:@myip:port:db";
public static final java.util.Properties CONNECTION_PROPERTIES = new java.util.Properties();
static {
    CONNECTION_PROPERTIES.setProperty("password","password"); 
    CONNECTION_PROPERTIES.setProperty("user","dbuser"); 
    CONNECTION_PROPERTIES.put("v$session.osuser", System.getProperty("user.name").toString());
    try {
        CONNECTION_PROPERTIES.put("v$session.machine", InetAddress.getLocalHost().getCanonicalHostName());
    } catch (UnknownHostException e) {
        System.out.println("Failed to determine hostname. Attempting with Localhost, this is unlikely to succeed.");
        e.printStackTrace();

        CONNECTION_PROPERTIES.put("v$session.machine", "localhost");
    } 
    CONNECTION_PROPERTIES.put("v$session.program", "GDS_Reports"); 
}

, и я устанавливаю соединение следующим образом:

  DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
  Connection conn = DriverManager.getConnection(GlobalConstants.CONNECTION_STRING, GlobalConstants.CONNECTION_PROPERTIES);

Но в таблице указаны эти соединения:

MACHINE                                              OSUSER               DBUSER               FTIME
---------------------------------------- -------------------- -------------------- -----------------
wn7-18tl6m1.domain                                            dbuser               02-SEP-2011 14:46
wn7-18tl6m1.domain                                            dbuser               02-SEP-2011 14:46  
wn7-18tl6m1.domain                                            dbuser               02-SEP-2011 14:46
wn7-18tl6m1.domain                                            dbuser               02-SEP-2011 14:46

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

В некоторых драйверах Oracle JDBC есть ошибка, из-за которой OSUSER не установлен, см. исправленные ошибки в 10.2.0.4 , поэтому вам нужно перейти на более новую версию, чтобы исправить это.

0 голосов
/ 03 сентября 2011

Oracle не предоставляет osuser - это должно быть сказано клиентом.Вы можете закодировать его в программу Java. Подробности здесь .

Очевидно, что поскольку вы можете сделать это, это довольно бессмысленная мера безопасности, чтобы внести в нее белый список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...