ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle11gr2新增版本功能(一)

Oracle11gr2新增版本功能(一)

原创 Linux操作系统 作者:yangtingkun 时间:2009-09-11 23:33:29 0 删除 编辑

11.2中,Oracle数据库引入的版本的概念,这为应用程序的升级提供了极大的方便。

这篇简单描述创建版本的语法,以及版本的使用。

 

 

下面是一个最简单的例子,来说明版本的含义:

SQL> conn yangtk/yangtk
已连接。
SQL> select synonym_name from user_synonyms;

未选定行

SQL> create synonym s_1 for t;

同义词已创建。

SQL> create edition my_edition;

版本已创建。

SQL> select sys_context('USERENV', 'CURRENT_EDITION_NAME') from dual;

SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
----------------------------------------------------------------------------------
ORA$BASE

SQL> desc t
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER
 NAME                                         VARCHAR2(30)
 TYPE                                         VARCHAR2(20)

SQL> desc s_1
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER
 NAME                                         VARCHAR2(30)
 TYPE                                         VARCHAR2(20)

SQL> alter session set edition = my_edition;

会话已更改。

SQL> create or replace synonym s_1 for t1;

同义词已创建。

SQL> desc t1
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER

SQL> desc s_1
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER

SQL> alter session set edition = ora$base;

会话已更改。

SQL> desc t1
 
名称                                 是否为空? 类型
 ------------------------------------ -------- --------------------------------------------
 ID                                            NUMBER

首先创建一个指向T的同义词S_1,然后检查当前生效的版本,然后创建一个新的版本MY_EDITION,并启动这个版本,然后重建同义词S_1指向T1。上面的结果显示EDITION没有起作用,在不同的版本中看到的同义词是相同的。

这个由于当前用户并没有启用版本信息,下面启用版本后重复上面的操作:

SQL> drop edition my_edition;

版本已删除。

SQL> drop synonym s_1;

同义词已删除。

SQL> alter user yangtk enable editions;

用户已更改。

SQL> create synonym s_1 for t;

同义词已创建。

SQL> desc t
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER
 NAME                                         VARCHAR2(30)
 TYPE                                         VARCHAR2(20)

SQL> desc s_1
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER
 NAME                                         VARCHAR2(30)
 TYPE                                         VARCHAR2(20)

SQL> create edition my_edition;

版本已创建。

SQL> select sys_context('USERENV', 'CURRENT_EDITION_NAME') from dual;

SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')
------------------------------------------------------------------------------------
ORA$BASE

SQL> alter session set edition = my_edition;

会话已更改。

SQL> create synonym s_1 for t1;
create synonym s_1 for t1
               *
1 行出现错误:
ORA-00955:
名称已由现有对象使用


SQL> create or replace synonym s_1 for t1;

同义词已创建。

SQL> desc s_1
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER

SQL> desc t1
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER

SQL> alter session set edition = ora$base;

会话已更改。

SQL> desc s_1
 
名称                                是否为空? 类型
 ----------------------------------- -------- --------------------------------------------
 ID                                           NUMBER
 NAME                                         VARCHAR2(30)
 TYPE                                         VARCHAR2(20)

可以看到,在不同的版本中,同义词的指向是不同的。这种方式对于程序的升级而言,存在很大的方便之处。

除了支持同义词以外,版本还支持VIEWPROCEDUREFUNCTIONPACKAGETYPETRIGGERLIBRARY

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-614489/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10404934