馮 驥 盧振生
(綏化學院 黑龍江 綏化 152000)
ORACLE實例和數據庫之間的關系
1.臨時性和永久性
2.實例可以在沒有數據文件的情況下單獨啟動startup nomount,通常沒什么意義
3.一個實例在其生存期內只能裝載(alter database mount)和打開(alter database open)一個數據庫
4.一個數據庫可被許多實例同時裝載和打開(即RAC),RAC環境中實例的作用能夠得到充分的體現!
在Oracle領域中有兩個詞很容易混淆,這就是“實例”(instance)和“數據庫”(database)。
作為Oracle術語,這兩個詞的定義如下:
數據庫(database):物理操作系統文件或磁盤(disk)的集合。使用Oracle 10g的自動存儲管理(Automatic Storage Management,ASM)或RAW分區時,數據庫可能不作為操作系統中單獨的文件,但定義仍然不變。
這兩個詞有時可互換使用,不過二者的概念完全不同。實例和數據庫之間的關系是:數據庫可以由多個實例裝載和打開,而實例可以在任何時間點裝載和打開一個數據庫。一組操作系統進程(或者是一個多線程的進程)以及一些內存;這些進程可以操作數據庫。
而數據庫只是一個文件集合(包括數據文件、臨時文件、重做日志文件和控制文件)。
在任何時刻,一個實例只能有一組相關的文件(與一個數據庫關聯)。大多數情況下,反過來也成立:一個數據庫上只有一個實例對其進行操作。不過,Oracle的真正應用集群 (Real Application Clusters,RAC)是一個例外,這是Oracle提供的一個選項,允許在集群環境中的多臺計算機上操作,這樣就可以有多臺實例同時裝載并打開一個數據庫(位于一組共享物理磁盤上)。數據字典(Data Dictionary)是Oracle數據庫的一個重要組成部分,是元數據(Metadata)的存儲地點。
數據字典記錄了一下內容:
◎所有數據庫Schema對象的定義(表、視圖、索引、簇、同義詞、序列、過程、函數、包、觸發器等)
◎數據庫的空間分配和使用情況;
◎字段的缺省值;
◎完整性約束信息;
◎Oracle用戶名稱、角色、權限等;
◎審計信息;
◎其他數據庫信息。
通常所說的數據字典由4個部分組成:
◎內部RDBMS(X$)表
◎數據字典表
◎動態性能視圖(V$)
◎數據字典視圖
內部 RDBMS(X$)表:
X$表示加密命名的,Oracle不做文檔說明,Oracle通過X$表建立起大量視圖提供用戶查詢管理數據庫之用;
X$表是在數據庫啟動時由Oracle應用程序動態創建,并且不允許sysdba之外的用戶直接訪問。
SYS@orclnew>set autotrace traceonly;
SYS@orclnew>select*from v$parameter;
可以看到所有的東西來自兩個內部表:X$KSPPI&X$KSPPCV
另外一個有意思的X$表:X$KVIT


靜態數據字典視圖:
由于X$表和數據字典表通常不能直接訪問,Oracle創建了靜態數據字典視圖來提供用戶對于數據字典信息的訪問。這些信息通常相對穩定、不能直接就該,所以稱之為靜態數據字典視圖
靜態數據字典視圖在創建數據庫時由 catalog.sql腳本創建,該腳本的位置:
$ORACLE_HOME/rdbms/admin/catalog.sql
靜態數據字典視圖的分類:
◎USER_ 類視圖包含了用戶所擁有的相關對象信息,用戶可以通過這個視圖查詢自己擁有的對象信息;
◎ALL_ 類視圖包含了用戶擁有權限訪問的所有對象的信息;
◎DBA_類視圖包含了數據庫所有相關對象的信息,用戶需要SELECTANY TABLE權限才能訪問。
動態性能視圖:
動態性能 V$視圖 (Dynamic Performance View)記錄了數據庫運行時信息和統計數據。
數據庫啟動時,Oracle動態創建了 X$表,在此基礎上,Oracle創建了 GV$和V$ 視圖。從Oracle 8i開始,GV$視圖被引入,含義:Global V$。基本上,每個V$視圖都有一個對應的GV$視圖存在。

通常大部分用戶訪問的 V$視圖,并不是視圖,而是指向V_$視圖的同義詞;
而V_$視圖是基于真正的V$視圖(這個視圖是基于X$表建立的)創建的。
SQL語句中對于對象名的解析順序:
1.Oracle首先查看在發出命令的用戶模式中是否存在表或者視圖;
2.如果表或者視圖不存在,Oracle檢查私有同義詞是否存在;
3.如果私有同義詞存在,將使用這個同義詞所引用的對象;
4.如果私有同義詞不存在,檢查同名的公有同義詞是否存在;
5.如果公有同義詞存在,使用這個同義詞所引用的對象;
6.如果公有同義詞不存在,那么返回錯誤
“ORA-00942 table or view does not exist.”