oracle 11g r2版本號,Oracle 11g r2新增版本功能(二)

在11.2中,Oracle數據庫引入的版本的概念,這為應用程序的升級提供了極大的方便。

這篇簡單描述版本的實現和查詢方式。

前一篇簡單描述了版本,下面接著上面的例子看看Oracle是如何實現這個功能的:

SQL> select synonym_name, table_name

2 ?from user_synonyms;

SYNONYM_NAME ? ? ? ? ? ? ? ? ? TABLE_NAME

------------------------------ ------------------------------

S_1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?T

SQL> select object_id, object_name, object_type, edition_name

2 ?from user_objects

3 ?where object_name = 'S_1';

OBJECT_ID OBJECT_NAME ? ? ? ? ? ? ? ? ? ?OBJECT_TYPE ? ? ? ? EDITION_NAME

---------- ------------------------------ ------------------- ------------------------------

74125 S_1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?SYNONYM ? ? ? ? ? ? ORA$BASE

SQL> select sys_context('USERENV', 'CURRENT_EDITION_NAME')

2 ?from dual;

SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME')

-------------------------------------------------------------------------------------

ORA$BASE

下面設置版本為MY_EDITION:

SQL> alter session set edition = my_edition;

會話已更改。

SQL> select synonym_name, table_name

2 ?from user_synonyms;

SYNONYM_NAME ? ? ? ? ? ? ? ? ? TABLE_NAME

------------------------------ ------------------------------

S_1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?T1

SQL> select object_id, object_name, object_type, edition_name

2 ?from user_objects

3 ?where object_name = 'S_1';

OBJECT_ID OBJECT_NAME ? ? ? ? ? ? ? ? ? ?OBJECT_TYPE ? ? ? ? EDITION_NAME

---------- ------------------------------ ------------------- ------------------------------

74128 S_1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?SYNONYM ? ? ? ? ? ? MY_EDITION

可以看到在USER_SYNONYMS視圖中可以只能看到當前版本的同義詞定義。而在USER_OBJECTS中可以看到,兩個同義詞的名稱相同,但是兩個對象的版本名稱不同,而且OBJECT_ID并不相同,也就是說,二者實際上不是同一個對象。

SQL> select obj#, owner#, name, type#

2 ?from sys.obj$

3 ?where name = 'S_1';

OBJ# ? ? OWNER# NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TYPE#

---------- ---------- ------------------------------ ----------

74125 ? ? ? ? 84 S_1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5

74128 ? ? ? ? 86 S_1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5

檢查SYS.OBJ$發現,兩個對象不但OBJECT_ID不同,連OWNER也是不同的。

SQL> select user#, name, type#, ext_username

2 ?from sys.user$

3 ?where user# in (84, 86);

USER# NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TYPE# EXT_USERNAME

---------- ------------------------------ ---------- ------------------------------

84 YANGTK ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1

86 SYS_LNLQ7CWEC5SUF_0IC_Q_ONI8GO ? ? ? ? ?2 YANGTK

當切換到不同的版本時,Oracle實際上切換到了不同的用戶。

而用戶查詢的是當前版本的對象,這時由于很多的靜態數據字典都發生了變化:

SQL> select text

2 ?from dba_views

3 ?where view_name = 'DBA_SYNONYMS';

TEXT

--------------------------------------------------------------------------------

select u.name, o.name, s.owner, s.name, s.node

from sys.user$ u, sys.syn$ s, sys."_CURRENT_EDITION_OBJ" o

where o.obj# = s.obj#

and o.type# = 5

and o.owner# = u.user#

可以看到,這些支持版本對象的數據字典信息,訪問的系統表不再是SYS.OBJ$,而是另外一個對象:SYS._CURRENT_EDITION_OBJ。

SQL> select owner, object_name, object_id, object_type

2 ?from dba_objects

3 ?where object_name = '_CURRENT_EDITION_OBJ';

OWNER ? ? ? ? ? ? ? ? ? ? ? ? ?OBJECT_NAME ? ? ? ? ? ? ? ? ? ? OBJECT_ID OBJECT_TYPE

------------------------------ ------------------------------ ---------- -------------------

SYS ? ? ? ? ? ? ? ? ? ? ? ? ? ?_CURRENT_EDITION_OBJ ? ? ? ? ? ? ? ? 3070 VIEW

這個對象是一個視圖,查看視圖的定義:

SQL> select text

2 ?from dba_views

3 ?where view_name = '_CURRENT_EDITION_OBJ';

TEXT

--------------------------------------------------------------------------------

select o."OBJ#",o."DATAOBJ#",o."OWNER#",o."NAME",o."NAMESPACE",o."SUBNAME",o."TY

PE#",o."CTIME",o."MTIME",o."STIME",o."STATUS",o."REMOTEOWNER",o."LINKNAME",o."FL

AGS",o."OID$",o."SPARE1",o."SPARE2",o."SPARE3",o."SPARE4",o."SPARE5",o."SPARE6",

o.spare3,

case when (o.type# not in (4,5,7,8,9,10,11,12,13,14,22,87) or

bitand(u.spare1, 16) = 0) then

null

when (u.type# = 2) then

(select eo.name from obj$ eo where eo.obj# = u.spare2)

else

'ORA$BASE'

end

from obj$ o, user$ u

where o.owner# = u.user#

and ( ? /* non-versionable object */

( ? o.type# not in (4,5,7,8,9,10,11,12,13,14,22,87,88)

or bitand(u.spare1, 16) = 0)

/* versionable object visible in current edition */

or ( ? ?o.type# in (4,5,7,8,9,10,11,12,13,14,22,87)

and ( ? (u.type# <> 2 and

sys_context('userenv', 'current_edition_name') = 'ORA$BASE')

or (u.type# = 2 and

u.spare2 = sys_context('userenv', 'current_edition_id'))

or exists (select 1 from obj$ o2, user$ u2

where o2.type# = 88

and o2.dataobj# = o.obj#

and o2.owner# = u2.user#

and u2.type# ?= 2

and u2.spare2 =

sys_context('userenv', 'current_edition_id'))

)

)

)

ORACLE就是通過將這個視圖代替了數據字典中的OBJ$對象,從而使得用戶可以查詢當前的版本信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540902.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540902.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540902.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 添加圖例_Python | 在圖例標簽中添加Sigma

python 添加圖例Sigma (&#x1d70e;) is very often used greek mathematical letters and has a higher repetition in probability. In this article, we are going to add &#x1d70e; using a command in matplotlib. Sigma(&#x1d70e;)是希臘數學字母中經常使用的字…

【51CTO學院】搜索V2.0——新的搜索,只為給你更好的

為了讓你能快速、準確的找到自己心儀的內容&#xff0c;51CTO學院產品及研發用盡了洪荒之力研發近2個月終于將搜索進行了全面升級。 搜索看似簡單&#xff0c;實則要做到精準和智能卻不是件易事&#xff0c;為了讓學員快速找到自己所需&#xff0c;節省找課時間&#xff0c;更高…

oracle擴容日志文件,ORACLE 加大日志文件

--新建臨時日志文件alter database add logfile group 4 (‘/u01/app/oracle/oradata/orcl/redo04.log‘) size 10m;alter database add logfile group 5 (‘/u01/app/oracle/oradata/orcl/redo05.log‘) size 10m;alter database add logfile group 6 (‘/u01/app/oracle/orad…

java多線程總結(二)

線程一般有6個狀態&#xff1a; 新建狀態&#xff1a;NEW 可運行狀態&#xff1a;RUNNABLE 休眠狀態&#xff1a;TIMED_WAITING 等待狀態&#xff1a;WAITING 阻塞狀態:BLOCKED 終止狀態“TERMINATED 當我們使用new創建線程之后&#xff0c;線程處于新建狀態&#xff0c;當調用…

scandir函數_PHP scandir()函數與示例

scandir函數PHP scandir()函數 (PHP scandir() function) The full form of scandir is "Scan Directory", the function scandir() is used to get the list of the files and directories available in the specified directory. scandir的完整格式為“ Scan Direc…

韓順平.2011最新版.玩轉oracle視頻教程筆記,韓順平.2011最新版.玩轉oracle視頻教程(筆記)...

韓順平.2011最新版.玩轉oracle視頻教程ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon denied 警告: 您不再連接到 ORACLE。 SQL> show user; USER 為 ""SQL> conn system/p; 已連接。SQL> grant connect to xiaoming; 授權成功。SQL>…

方冪序列 c+~+_C ++編程中的Trigraph序列

方冪序列 c&#xff5e;Trigraph Sequences in C are the set of three characters starting from double question marks (??). These set of the characters replaces by a single character specified in the below table, C 中的Trigraph序列是從雙問號( ?? )開始的三個…

oracle sysauth,sysauth$基表的用戶權限的一點分析

select privilege#,level from sysauth$ connect by grantee#prior privilege# and privilege#>0 start with grantee#:1 and privilege#>0如上的sql語句頻繁執行&#xff0c;其實對于遞歸sql對于自己初始oracle才一年的菜鳥一般是略去不看的&#xff0c;eygle前輩們有時…

ansys 內聚力_內聚力 軟件工程

ansys 內聚力凝聚 (Cohesion) In general terms, the word cohesion means the action or act of forming a united whole. According to the definition of Cambridge University, cohesion is defined as "the state of sticking together, or being in close agreement…

oracle認證都需要考哪幾個方面,Oracle OCP認證要通過哪些考試

Oracle OCP認證要通過哪些考試Oracle OCP DBA認證是所有Oracle認證中最普及的一種認證&#xff0c;這一認證過程是專為那些想要從事Oracle管理的專業數據庫管理人員設計的&#xff0c;適用于Oracle9I DBAs的OCP認證通過改進&#xff0c;刪除了備份和恢復以及網絡考試&#xff0…

左側固定 右側自適應三種方法

第一種&#xff1a;float 單一層浮動法 例如&#xff1a;左側固定成100px; 則核心代碼 左側&#xff1a;width:100px;float:left; 右側 width:auto;margin-left:100px; 實例&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8&q…

ruby 集合 分組_在Ruby中打印集合的元素

ruby 集合 分組We have gone through the implementation of sets in Ruby. They are very similar to arrays. Now, let us see how we print the elements present in a set. There are no indexes present in the sets because sets are used to store the large elements. …

linux下tmp目錄屬性,Linux:文件夾屬性及umask

回顧&#xff1a;文件在小&#xff0c;也要占用一個Block如&#xff1a;echo > a1.logls a1.log(文件大小為1k)du a1.log(文件大小也應該為1k&#xff0c;如果不是1k&#xff0c;可能selinux是打開的)du -s a1.log文件夾的權限&#xff0c;系統中的文件夾默認權限基本上都為…

python淺復制與深復制_Python中的淺復制與深復制

python淺復制與深復制In python, the assignment operator does not copy the objects, instead, they create bindings between an object and the target. The object, if a collection that is mutable or consists of mutable items uses the copy so that one can change …

邏輯回歸 數據_數據科學中的邏輯回歸

邏輯回歸 數據邏輯回歸 (Logistic Regression) Logistic regression is an applied mathematics analysis methodology accustomed to predict a data price supported previous observations of a data set. Logistic regression has become a very important tool within the…

Dede?刪除文檔同時文章中的圖片的方法

首先,在"/include"目錄下建立"extend.func.php"文件. 然后,將以下內容保存在"extend.func.php"文件中,一共三個函數&#xff1a;//解析body數據&#xff0c;獲得所有圖片的絕對地址function GetPicsTruePath($body,$litpic){$delfiles array();…

《linux操作系統》第06章在線測試,Linux系統管理一測試題-附答案.doc

Linux系統管理一測試題-附答案Linux系統管理一測試題姓名&#xff1a;班級&#xff1a;考試時間180分鐘,ls,ifconfig,hostname,cd的程序文件在哪里which mkdir ls ifconfig hostname cd查看當前的PATH變量的值echo $PATH在根下新建一個目錄study&#xff0c;在study目錄下建子目…

java8-02-Stream-API

[TOC] 0 Stream簡介 家庭住址 &#xff1a;java.util.stream.Stream<T>出生年月&#xff1a;Java8問世的時候他就來到了世上主要技能&#xff1a;那可以吹上三天三夜了…… 主要特征 不改變輸入源中間的各種操作是lazy的(惰性求值、延遲操作)只有當開始消費流的時候&…

跟隨者數字解碼_跟隨模式的數字

跟隨者數字解碼Problem statement: 問題陳述&#xff1a; Given a pattern containing only Is and Ds. I stands for increasing and D for decreasing. Devise an algorithm to print the minimum number following that pattern. Digits are from 1-9 and digits cant repe…

Linux內核機器ID,linux-如何強制內核重新讀取/重新初始化PCI設備ID?

我的機器(正在運行Linux內核3.2.38的計算機)在引導時具有錯誤的PCI設備的子系統ID(子設備和子供應商ID).如果我然后在系統仍處于啟動狀態(即熱插拔)時物理地拔出PCI設備并重新插入,則它將獲得正確的ID.請注意,錯誤的子設備ID和子供應商ID與設備的設備ID和供應商ID相同(請參見下…