Default Schema in Oracle Connection URL

前端 未结 4 997
醉酒成梦
醉酒成梦 2020-11-30 04:04

I\'d like to set default database schema in Oracle Connection URL

jdbc:oracle:thin:@::
<
相关标签:
4条回答
  • 2020-11-30 04:10

    You can create a trigger using connection DB user to change the current schema.

    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 讨论(0)
  • 2020-11-30 04:14

    If you use C3PO you can make it do it when it checks the connection out.

    As properties:

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

    As Java code:

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

    Downside is this will happen every time the connection is taken out of the pool.

    If you are using a JDBC connection yourself you could just do:

    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"));
    
    0 讨论(0)
  • 2020-11-30 04:14

    What about the use of synonyms?

    create synonym monkey for animals.monkey;
    
    select monkey_name from monkey
    
    0 讨论(0)
  • 2020-11-30 04:15

    You can't put anything in the connection URL.

    In Oracle each user has their own schema (even if doesn't contain any objects) and that is their default schema. Once logged in/connected, they can change their default schema with an

    ALTER SESSION SET CURRENT_SCHEMA=animals
    

    So you'd need to do the extra statement after connecting. It is possible to have a logon trigger on the user and/or database that will run this when they log in. I'd personally prefer an explicit statement when an application connects.

    0 讨论(0)
提交回复
热议问题