web-dev-qa-db-fra.com

Schéma par défaut dans l'URL de connexion Oracle

J'aimerais définir le schéma de base de données par défaut dans Oracle Connection URL

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

Mon exemple d'instruction SQL:

select monkey_name from animals.monkey

J'ai besoin d'interroger la base de données sans le préfixe de schéma animals. c'est-à-dire quand j'exécute cette instruction

select monkey_name from monkey

il utilisera le schéma animals par défaut.

Que dois-je spécifier dans l'URL de connexion ci-dessus pour obtenir un tel effet?

Merci.

37
netic

Vous ne pouvez rien mettre dans l'URL de connexion.

Dans Oracle, chaque utilisateur a son propre schéma (même s'il ne contient aucun objet) et correspond à son schéma par défaut. Une fois connectés/connectés, ils peuvent changer leur schéma par défaut avec un

ALTER SESSION SET CURRENT_SCHEMA=animals

Il est donc possible d’avoir un déclencheur de connexion sur l’utilisateur et/ou la base de données qui l’exécutera lorsqu’ils se connecteront. l'application se connecte. 

32
Gary Myers

Si vous utilisez C3PO vous pouvez le faire quand il vérifie la connexion.

En tant que propriétés:

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

En code Java:

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

L'inconvénient est que cela se produira chaque fois que la connexion est retirée du pool.

Si vous utilisez vous-même une connexion JDBC, vous pouvez simplement faire:

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"));

Qu'en est-il de l'utilisation de synonymes? 

create synonym monkey for animals.monkey;

select monkey_name from monkey
10
Rene

Vous pouvez créer un déclencheur à l'aide de l'utilisateur de la base de données de connexion pour modifier le schéma actuel.

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