Строка соединения JDBC и синонимы Oracle - PullRequest
0 голосов
/ 08 октября 2010

у нас есть программа на Java, подключающаяся через тонкий клиент JDBC к базе данных Oracle 10g.

Все работало нормально, но теперь администратор БД хочет, чтобы мы подключились с другим именем пользователя / паролем, которые должны иметь доступ к тем же таблицам, используя общедоступные синонимы. К сожалению, Java-программа больше не видит таблицы (см. Ошибку ниже, когда я пытаюсь выполнить команду «select * from tablename»).

Я попытался соединиться, используя то же имя пользователя / пароль с Oracle SQL Developer, и в этом случае я могу без проблем выполнить команду «выбрать * из таблицы».

Есть ли какой-то конкретный параметр, который мне нужно указать в строке подключения?

Большое спасибо!

Exception in thread "main" java.sql.SQLException: ORA-00942: table or view does not exist
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1037)
at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1687)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1653)

Edited by: user555817 on 08-Oct-2010 04:55

1 Ответ

0 голосов
/ 29 октября 2011

Вы должны добавить имя схемы вместе с именем таблицы и сделать его заглавными буквами (я не помню, учитывает ли он регистр или только заглавные буквы).

Пример: если в таблице сотрудников естьSCH1 и синоним создается в SCH2 как Emp для SCH2.Employee, тогда приведенный ниже оператор действителен,

    SELECT * FROM SCH2.emp

Где, emp: Имя синонима SCH2: Имя схемы, где создается этот синоним, а не СхемаНазвание фактической таблицы.

...