wake-up-neo.com

Standardschema in der Oracle-Verbindungs-URL

Ich möchte das Standarddatenbankschema in Oracle Connection URL einstellen.

jdbc:Oracle:thin:@<server>:<port1521>:<sid>

Meine SQL-Beispielanweisung:

select monkey_name from animals.monkey

Ich muss die Datenbank ohne Schemapräfix animals. abfragen, d. H. Wenn ich diese Anweisung ausführe

select monkey_name from monkey

es wird standardmäßig animals Schema verwendet.

Was muss ich in der Verbindungs-URL angeben, um einen solchen Effekt zu erzielen?

Vielen Dank.

37
netic

Sie können nichts in die Verbindungs-URL einfügen.

In Oracle hat jeder Benutzer ein eigenes Schema (auch wenn er keine Objekte enthält), und dies ist das Standardschema. Einmal angemeldet/verbunden, können sie ihr Standardschema mit einem ändern

ALTER SESSION SET CURRENT_SCHEMA=animals

Sie müssen also die zusätzliche Anweisung nach dem Verbinden ausführen .. Es ist möglich, einen Anmeldungsauslöser für den Benutzer und/oder die Datenbank zu haben, der diese ausführt, wenn sie sich anmelden Anwendung verbindet. 

32
Gary Myers

Wenn Sie C3PO verwenden, können Sie dies beim Auschecken der Verbindung tun.

Als Eigenschaften:

c3p0.preferredTestQuery=alter session set current_schema=animals
c3p0.testConnectionOnCheckout=true

Als Java-Code:

ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setPreferredTestQuery("alter session set current_schema=animals");
dataSource.setTestConnectionOnCheckout(true);

Nachteil ist, dass dies jedes Mal der Fall ist, wenn die Verbindung aus dem Pool genommen wird.

Wenn Sie selbst eine JDBC-Verbindung verwenden, können Sie Folgendes tun:

Class.forName("Oracle.jdbc.driver.OracleDriver");
Connection connection = getConnection("jdbc:Oracle:thin:@//server:1521/instance",   "username", "password");
connection.createStatement().execute("alter session set current_schema=animals"));

Was ist mit der Verwendung von Synonymen? 

create synonym monkey for animals.monkey;

select monkey_name from monkey
10
Rene

Sie können einen Trigger mit dem Verbindungs-DB-Benutzer erstellen, um das aktuelle Schema zu ändern.

create or replace trigger SET_SCHEMA_AFTER_LOGON
    after logon on database
begin
     execute immediate 'alter session set CURRENT_SCHEMA=animals';
end SET_SCHEMA_AFTER_LOGON;
0
robothy