11.2 sqlplus新增连接是指定版本

在11.2中,Oracle新增了版本的功能,而随之一些工具都对于版本功能有所支持,比如11.2中,sqlplus在连接数据库时就可以指定当前数据库连接到哪个版本上。
需要说明的是,这种连接版本方式的优先级是最高的,它的优先级高于ORA_EDITION环境变量,更高于数据库默认版本,看一个简单的例子:

D:\>sqlplus / AS sysdba
SQL*Plus: Release 11.2.0.1.0 Production ON 星期二 927 08:21:47 2011
Copyright (c) 1982, 2010, Oracle.  ALL rights reserved.
连接到:
Oracle DATABASE 11g Enterprise Edition Release 11.2.0.1.0 - Production
WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options
SQL> SET pages 100 LINES 120
SQL> SELECT username FROM dba_users WHERE editions_enabled = 'Y';
未选定行
SQL> CREATE USER u_e IDENTIFIED BY u_e DEFAULT tablespace test enable editions;
用户已创建。
SQL> GRANT CONNECT, resource, dba TO u_e;
授权成功。
SQL> CREATE edition e1;
版本已创建。
SQL> conn u_e/u_e
已连接。
SQL> SELECT sys_context('USERENV', 'CURRENT_EDITION_NAME') FROM dual;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
--------------------------------------------------------------------------------
ORA$BASE
SQL> conn u_e/u_e edition=e1
已连接。
SQL> SELECT sys_context('USERENV', 'CURRENT_EDITION_NAME') FROM dual;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
--------------------------------------------------------------------------------
E1
SQL> ALTER DATABASE DEFAULT edition = e1;
数据库已更改。
SQL> conn u_e/u_e
已连接。
SQL> SELECT sys_context('USERENV', 'CURRENT_EDITION_NAME') FROM dual;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
--------------------------------------------------------------------------------
E1
SQL> conn u_e/u_e edition=ora$base
已连接。
SQL> SELECT sys_context('USERENV', 'CURRENT_EDITION_NAME') FROM dual;
SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
--------------------------------------------------------------------------------
ORA$BASE

除了sqlplus之外,OCI和JDBC也支持在连接时选择版本进行连接。

This entry was posted in BUG, ORACLE and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *