oracle數據庫系統是一個復雜的軟件系統如果不了解其內部的結構原理及關系就不可能設計和編寫出高質量的應用軟件系統也不可能管理好一個復雜的應用系統為了給以後章節的打好基礎本章簡要給出 ORACLE /ORACLEi數據庫系統結構的描述
§ 術語
數據庫塊(BLOCK)
ORACLE 數據庫中的最小存儲和處理單位包含塊本身的頭信息數據或PL/SQL代碼
ORACLE 塊的大小是可以在安裝時選擇自定義安裝來指定也可以在CREATE DATABASE創建數據庫實例時指定其最小為K最大可達為K
瓶頸(Bottleneck)
指限制系統性能的部件
面向對象的關系數據庫
具有關系數據庫的全部功能同時又支持面向對象的數據庫稱作面向對象關系數據庫系統Oracle是一種功能完備的關系數據庫系統oracle是一種面向對象的關系數據庫系統
客戶/服務器結構(Client/Server)
有客戶機服務器網絡三要素的結構客戶機(PC機)通過網絡與服務器相連和工作
胖客戶機(Fat Client)
一般的Client/Server結構中的客戶機均為胖客戶機因為這些客戶機需要配置較高的設備如內存硬盤主頻CD_ROM等
瘦客戶機(Thin Client)
也稱作NC(網絡計算機)是一種內存配置小(過去指一般只有M現無法定義)無硬盤只有處理心片的處理機
數據在線分析處理(OLAP)
是一種能以快速交互方便的方式洞察數據情況的技術如Oracle ExpressCognos(加拿大)的Power Play Business Objects公司的Business Object 等
多線程(MTS)
一個用戶可以同時運行多個程序對數據庫進行訪問比如Visual C/C++可以提供同時啟動多個進程而Visual Basic則不能
數據倉庫(Data Warehouse)
支持大量數據信息存儲的叫做支持數據倉儲或數據倉庫當把幾個小型數據庫集成為一個大型數據庫並為一個較廣泛的組織服務時如果該數據庫存儲歷史數據提供決策支持提供數據匯總提供只讀數據並且實質上充當所有向它提供數據的相關成品數據庫的數據接收器那麼它通常被叫做數據倉庫
實例(Instance)
是訪問Oracle數據庫所需的一部分計算機內存和輔助處理後台進程
對象(Objects)
是實現世界實體的軟件表示如表索引視圖同義詞過程等
數據庫文件(Datafile)
Oracle系統中用於存放數據(應用系統數據)的文件(<>中的例子不准確容易誤導讀者)
控制文件(Control File)
Oracle中存放系統用的一些數據的文件如數據文件的路徑及文件名初始化文件路徑及 文件名等都存放在控制文件中
日志文件(Logs File)
也叫事務記錄文件該文件記錄有事物對數據庫進行的一切修改操作或事務
DBA(Database administrator數據庫管理員)
是管理數據庫系統的技術工具或人員在完備的數據庫系統中都提供DBA功能
灰數據塊(Dirty data block)
存放在內存中的原始數據已被修改而修改後的數據還未寫入數據庫中
熱數據塊(Hot data block)
存放著那些經常被修改數據叫熱數據塊
LRU(Least Recently Used最近最少用)
Oracle系統使用的一種算法對於在內存中但最近又不用的數據塊(內存塊)叫做LRUOracle會根據那些數據屬於LRU而將其移出內存而騰出空間來加載另外的數據
表(Table)
存放專門數據而建立和分配的空間
表空間(Tablespace)
是一個或多個數據文件的集合所有的數據對象都存放在指定的表空間中但主要存放的是表 所以稱作表空間
回滾(Rollback)
將用戶(或者說事務)改變的數據恢復到上一次所處的狀態
恢復信息(Undo Information)
記錄用於恢復的信息稱作恢復信息回滾就是根據恢復信息內容進行恢復的
§ Oracle數據庫結構Oracle數據庫結構是Oracle數據庫系統的主要部分它是一些可以看得見的軟件包括
Oracle 數據字典l 表空間與數據文件l Oracle實例(Instance)
§ Oracle 數據字典Oracle數據庫的重要部分是數據字典它存放有Oracle數據庫所用的有關信息對用戶來說是一組只讀的表數據字典內容包括
數據庫中所有模式對象的信息如表視圖簇及索引等
分配多少空間當前使用了多少空間等
列的缺省值
約束信息的完整性
Oracle用戶的名字
用戶及角色被授予的權限
用戶訪問或使用的審計信息
其它產生的數據庫信息
數據庫數據字典是一組表和視圖結構它們存放在SYSTEM表空間中
數據庫數據字典不僅是每個數據庫的中心而且對每個用戶也是非常重要的信息用戶可以用SQL語句訪問數據庫數據字典
§ 表空間與數據文件簡單說表空間就是一個或多個數據文件(物理文件)的集合(邏輯文件)一般有下面的表空間
)系統表空間(System tablespace)
是各種不同版本的Oracle必備的部分存放Oracle系統的一些信息一般只有一個SYSTEM表空間
)臨時表空間(Temporary tablespace )
由於Oracle工作時經常需要一些臨時的磁盤空間這些空間主要用作查詢時帶有排序(Group byOrder by等)等算法所用當用完後就立即釋放對記錄在磁盤區的信息不再使用因此叫臨時表空間一般安裝之後只有一個TEMP臨時表空間
)工具表空間(Tools tablespace)
用於保存Oracle數據庫工具所需的數據庫對象這些工具表空間存放在工作時所用的專用表舊的Oracle版本無此表空間安裝之後的工具表空間是Tools
)用戶表空間(Users tablespace)
用於存放一些實驗例子用的空間當然也可以用於存放應用系統的數據舊版本無Users表空間現在的用戶表空間為 USERS
)數據及索引表空間存放數據及索引的表空間Oracle以後都提倡在應用系統中特別是具有大量數據的系統要把數據和索引分開存放在不同的分區中以便提高查詢速度在安裝後索引表空間可能是INDX數據表空間就是USERS
)回滾段表空間(Rollback Segment)
Oracle數據庫系統在運行InsertUpdateDelete時都需要一個磁盤空間來存放恢復信息(Undo Information)以便在進行恢復時能將原來信息讀出來安裝後的回滾段表空間是RBS表空間數據庫管理員也可根據應用的需要建立另外的回滾段表空間
Oracle 以表空間來存儲邏輯數據並 以物理數據相連
數據庫被分成一個或多個邏輯部件稱作表空間而表空間又被分成稱作段(segment)的邏輯部件這些段再細分就叫擴展(extents)
§ Oracle實例Oracle實例(Instance)是由一組後台進程和內存結構組成每個運行的數據庫系統都與實例有關所以有時稱Oracle實例為數據庫操作系統下面是Oracle實例的解釋
Oracle 進程Oracle有兩種類型的進程 服務器進程和後台進程(server processes and background processes)
服務器進程Oracle 服務器進程是處理用戶與實例連接的事務任務是
分析和執行應用所發出的SQL語句
從數據文件讀必要的數據到SGA區的共享數據區
返回必要信息給應用
後台進程Oracle系統使用一些附加的進程來處理系統的必須的工作這些進程叫後台進程
數據庫寫 (DBW 或DBWn)
日志寫 (LGWR)
檢測點 (CKPT)
系統監視 (SMON)
進程監視 (PMON)
歸檔 (ARCn)
恢復 (RECO)
鎖(LCK)
工作隊列 (SNPn)
隊列監視 (QMNn)
發布(Dispatcher) (Dnnn)
服務器 (Snnn)
Oracle 的內存結構(SGA)
SGA 結構為
數據高速緩沖區l 重做日志緩沖區l 共享池l 大的共享池(可選)
數據字典緩沖區l 其它數據緩沖區
§ Oracle數據庫文件ORACLE 數據庫是一個復雜的數據庫操作系統由一系列部件組成主要有)初始化參數文件)數據文件)控制文件)日志文件等
§ 初始化參數文件初始化參數文件(initialization parameter file) INITsidORA是 ORALE RDBMS 主要的配置點它是配置參數和數值的集合每一個參數值都控制或修改數據庫和實例的某個方面 早期的版本把參數都寫在 initsidora 文件中但在ORACLE 之後多數參數已不在該文件中出現需修改這些參數時只能在SQL>下用 SET SESSION 或 SET SYSTEM 來進行 查看系統參數可用例如
SQL>select * from v$parameter
來列出
Oracle初始化參數文件是一個可以編輯的文本文件它是在數據庫實例啟動時被訪問從而得到數據文件日志文件控制文件等的路徑此外初始化參數文件還提供實例所用的參數等
初始化參數文件 INITsidORA 參見 附錄
§ 數據文件用於存放所有數據庫的數據文件Oracle安裝過程中自動建立多個必要的數據文件這些數據文件用於存放Oracle系統的基本數據在應用系統開發過程中我們可根據需要另建立一些數據文件
如果數據文件按它們存放的數據類型來分的話可以分為l 用戶數據
存放應用系統的數據為用戶數據
系統數據
管理用戶數據和數據庫系統本身的數據如數據字典用戶建立的表的名字類型等都記錄在系統數據中
§ 控制文件控制文件是由Oracle數據庫實例在啟動時被訪問的內部二進制文件它們所存放的路徑由參數文件的control_files=參數來確定
Oracle一般有兩個或更多的控制文件每個控制文件記錄有相同的信息在數據庫運行中如果某個控制文件出錯時Oracle會自動使用另外一個控制文件當所有的控制文件都損壞時系統將不能工作
Oracle數據庫至少有一個控制文件
一般數據庫系統安裝完成後自動創建兩個以上控制文件
為了安全一般建議創建多個控制文件
控制文件可用下面命令查到
select namevalue from v$parameter where name like control_files
§ 重做日志文件重做日志文件是Oracle系統中一個很重要的文件特點是
重做日志是Oracle的日記帳負責記錄所有用戶對象或系統變更的信息
安裝完成後有多個重做日志文件它們是幾個分為一組組內的重做日志文件大小要一樣
為了使系統性能更好可以在創建多重做日志文件組
重做日志文件可以名下面命令查到
select * from v$logfile
§ 其它支持文件除了上面的三類文件外還有
Sqlnetora文件
Tnsnamesora文件
Listenerora文件等
§ 重做日志和重做日志工作模式重做日志日志文件及重做日工作模式是Oracle系統中很重要的概念管理員要完全理解它們的原理和使用方法下面只給簡單的概念有關的管理在另外章節給出
§ 重做日志Oracle所作的一切操作都記錄在日志文件中Oracle系統在工作當中並不是每作一條記錄的修改就立即存盤(寫入數據文件)而是只作修改記錄聯機重做日志就保存所有這些改變的信息當所有的修改最後寫入數據文件時所有的修改仍記錄在聯機重做日志中這將有利於對這些事務記錄進行恢復操作但如果不是聯機重做日志則只能恢復部分近期的操作
§ 重做日志工作模式Oracle可以在兩種模式之一來工作)ARCHIVELOG模式(可恢復)
Oracle 一般至少有兩個日志文件它們輪流交替地被寫入所作的一切修改信息當系統設置為可恢復模式Oracle自動將每次即將被覆蓋(沖掉)的日志信息先作備份然後再其上記錄所修改的信息這樣的方式就可以利用備份與恢復工作進行某時期的數據恢復
)NOARCHIVELOG模式(有限的恢復)
缺省情況下為NOARCHIVELOGOracle不保留舊的重做日志信息(可以在原來基礎覆蓋寫入)因此一般情況下不可恢復的
§ 數據塊區間和段§ 數據塊(data block)
Oracle的數據塊也叫Oracle塊
Oracle系統在創建表空間時將數據文件格式化成若干個Oracle塊
每個Oracle塊是Oracle系統處理的最小單位
塊的大小在安裝系統時確定可以選擇自定義安裝來設置大小
塊的大小一旦確定下來就不能改動
塊的大小可以從k至k不等
塊的大小可以用下面命令查到
select namevalue from v$parameter where name like db_block_size
§ 區間(extent)
l 分配給對象(如表)的任何連續塊叫區間l 區間也叫擴展因為當它用完已經分配的區間後再有新的記錄插入就必須在分配新的區間(即擴展一些塊)l 區間的大小由 next 決定l 一旦區間分配給某個對象(表索引及簇)則該區間就不能再分配給其它的對象l 一個對象所用去多少區間可用下命令查到
select segment_nametablespace_namecount(*) from dba_extents having count(*)> group by segment_nametablespace_name
§ 段(segment)
l 段是指占用數據文件空間的通稱或數據庫對象使用的空間的集合l 段可以有表段索引段回滾段臨時段和高速緩存段等l 段使用同表空間中的若干Oracle塊(可以位於不同數據文件中)
例CREATE TABLE abc ( empno number()ename varchar()sal number())
TABLESPACE user_data storage(initial k next k pctincrease )
1) 段被分配=初始區間=k2) 當開始的k用完後就再分配k 此時段=k+k3) 如果所分配的區間又用完後就再分配k …
段(segment)區間(extent)及塊的關系(seg_ext_block)
§ Oracle數據庫進程一般情況當數據庫啟動完成後(Instance 啟動成功)就至少有六個後台進程在活動這些進程根據數據庫的需要而分工不同他們分別是
)數據庫寫入器(DBWR)
數據庫寫入器(Database Writer)的任務是將修改後的(在內存)數據塊寫回數據庫文件中在某些操作系統中Oracle可以有兩個BDWR進程
)校驗點(CKPT)
是一個可選進程在系統運行中當出現查找數據請求時系統從數據庫中找出這些數據並存入內存區這樣用戶就可以對這些內存區數據進行修改等當需要對被修改的數據寫回數據文件時就產生重做日志的交替寫(Switch)這時就出現校驗點系統要把內存中灰數據(修改過)塊中的信息寫回磁盤的數據文件中此外系統還將重做日志通知控制文件DBA可以改變參數文件中CHECKPOINT_PROCESS TRUE來使能( 使有效或無效)該進程
)日志寫入器(LGWR)
用於將SGA區中的日志信息寫入日志文件的進程一般是用戶所作的修改值先記入日志文件等到一定時才真正將修改結果寫回數據文件
)系統監控器(SMON)
系統監控器(System monitor)是在數據庫系統啟動時執行恢復工作的強制性進程比如在並行服務器模式下(兩台服務器共用一磁盤組)SMON可以恢復另一台處於失敗的數據庫使系統切換到另一台正常的服務器上
)進程監控器(PMON)
進程監控器(Process Monitor)用於終止那些失敗的用戶釋放該用戶所占用的資源等
)歸檔器(ARCH)
可選進程當數據庫系統處於歸檔(ARCHIVELOG)模式時使用
)鎖(LCKn)
可選進程當在並行服務器模式可出現多個鎖定進程以利於數據庫通信
恢復器(RDCO)
分布式數據庫(不同地點有不同機器和不同的Oracle系統)模式下使用的可選進程用於數據不一致時作的恢復工作在RECO解決恢復前所作的修改數據的標志均標為可疑
)調度(Dnnn)
可選進程在多線程下使用即對每個在用(D……Dnnn)的通信協議至少創建一個調度進程每個調度進程負責從所聯接的用戶進程到可用服務器進程的路由請求把響應返回給合適的用戶進程
)快照進程(SNPn)
快照進程處理數據庫快照的自動刷新並通過 DBMS_JOB 包運行預定的數據庫過程 INITsidORA 參數 JOB_QUEUE_PROCESS 設置快照進程數 參數 JOB_QUEUE_INTERVAL 決定快照進程在被喚醒以處理掛起的作業或事務之前休眠的秒數
)並行查詢進程(Pnnn)
可根據數據庫的活動並行查詢選項的設置ORACLE服務器起動或停止查詢進程這些進程涉及並行索引的創建表的創建及查詢 啟動的數量與參數 PARALLEL_MIN_SERVERS指定的數量相同不能超出該參數指定的值
§ Oracle內存結構前面提到過Oracle的數據庫實例是一組後台進程和內存結構組成而內存結構是包括
l 系統全局區(System Global Area)
l 程序全局區(Program Global Area)
§ 系統全局區Oracle 系統用於存放系統信息的一塊存儲區域用戶進程和Oracle後台進程都可以使用SGA在SGA中含有許多組件(不同的部分)
l 數據高速緩沖區(Data Buffer Cache)
在數據高速緩沖區中存放著Oracle系統最近使用過的數據塊(即用戶的高速緩沖區)當把數據寫入數據庫時它以數據塊為單位進行讀寫當數據高速緩沖區填滿時則系統自動去掉一些不常被用訪問的數據如果用戶要查的數據不在數據高速緩沖區時Oracle自動從磁盤中去讀取數據高速緩沖區包括三個類型的區
) 髒的區(Dirty Buffers)包含有已經改變過並需要寫回數據文件的數據塊
) 自由區(Free Buffers)沒有包含任何數據並可以再寫入的區Oracle可以從數據文件讀數據塊該區
) 保留區(Pinned Buffers)此區包含有正在處理的或者明確保留用作將來用的區
Oraclei以後將緩沖池分為三個區(使用多個緩沖池特性時)) KEEP 緩沖池(KEEP buffer pool)在內存中保留數據塊它們不會被從內存中擠掉) RECYCLE緩沖池從不需要的內存將數據移掉) DEFAULT緩沖池包含有被分配的塊
l 重做日志緩沖區(Rado Log Buffer)
任何事務(Transaction)在記錄到重做日志(恢復工作需要使用聯機重做日志)之前都必須首先放到重做日志緩沖區(Redo Log Buffer)中然後由日志寫入進程(LGWR)定期將此緩沖區的內容寫入重做日志中
l 共享池(Shared Pool)
共享池是SGA保留的區用於存儲如SQLPL/SQL存儲過程及包數據字典鎖字符集信息安全屬性等共享池包含有) 庫高速緩存(Library Cache)) 字典高速緩沖區(Dictionary Cache )
l 庫高速緩存(Library Cache)
該區包含有) 共享SQL區(Shared Pool Area)) 私有SQL區(Private SQL Area)) PL/SQL存儲過程及包(PL/SQL Procedure and Package)) 控制結構(Control Structure)
也就是說該區存放有經過語法分析並且正確的SQL語句並隨時都准備被執行
l 字典高速緩沖區(Data Dictionary Cache)
用於存放Oracle系統管理自身需要的所有信息這些信息是登錄到Oracle的用戶名這些用戶有那些數據庫對象以及這些數據庫對象的位置等
SVRMGR> Show SGA Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffer bytes Redo Buffer bytes
後四項相加等於前一項
也可以使用 select * from v$SGA 查詢當前實例的SGA
l 大的池(Large Pool)
在SGA中大池是可選的緩沖區它可以根據需要有管理權進行配置它可以提供一個大的區以供象數據庫的備份與恢復等操作
)程序全局區(PGA)
PGA是Oracle使用的內存區域該區同一時間只能被一單個進程存放數據和控制用於存放會話變量及內部數組等
SGA Oracle內存結構(SGA圖)
§ 程序全局區PGA是Oracle使用的內存區域該區同一時間只能被一單個進程存放數據和控制用於存放會話變量及內部數組等
§ Oracle實例一個Oracle 實例(Instance) 是由SGA後台進程以及數據文件組成每個數據庫有自己的SGA和獨立的Oracle進程集如圖所示
Oracle 實例和後台進程(instance圖)
在分布情況下為使不同的數據庫系統的名字不致混淆Oracle使用了一個SID(System Identifer)來標識每個Oracle Server的名字在UNIX環境中以變量Oracle_Sid來區分
§ 多線程服務器 (MTS)
Oracle多線程服務器(Multithreader Server )允許對數據庫進行多個連接以充分共享內存和資源這使得可以用較少的內存來支持較多的用戶
連接到Oracle數據庫的進程都需要占用一定的內存空間這樣如果有過多的進程連接到Oracle則出現了一個性能瓶頸
Oracle可以允許一萬個以上用戶同時連接到Oracle但並不是所有的用戶都使用MTS目前的一些GL工具並不支持MTS象VBPB等不支持MTS象VC/C++可以支持MTS Oracle多線程服務器有自己的連接池(即共享服務器進程)由於用戶共享開放連接這比原來的專用方法快的多(消除瓶頸)
多線程對於一些專用的應用系統來說是非常合適的比如訂單登記系統顧客提交訂單錄入員該訂單的數據另外的錄入員在與顧客交涉並不都在錄入數據(專用服務器進程閒著)單這些終端被迫與系統連著占據了其他用戶的資源
多線程服務器則消除這些缺點多線程服務器只維護一個連接池當某個終端需和系統對話則給其分配一個連接即可不需要則可以去掉這樣系統的資源被多個用戶平攤
改變參數文件中的相關參數來達到使系統成為多線程服務器配置(重新啟動即可有效)另外數據庫實例必須提供用戶數目與所放置的一樣才行
§ Oracle事務處理流程銀行取款業務處理流程
發出查詢余款的SQL語句如Select account_balance From banktable Where account_number= And account_type=SAVINGS
l SQL語句通過SGA得到服務器進程l 服務器進程檢查共享池中有無該條語句無該條語句則將放置共享池中並准備運行l 執行SQL語句把存放有余款的數據塊從數據文件中讀到SGA的數據高速緩沖區l 顯示結果比如余款為$
取款$SQL語句為Update Bank_table set account_balanct= Where account_number= And account_type=SAVINGS
l 客戶進程通過SGA把SQL語句傳給服務器進程l 服務器進程查找有無該條語句有執行(l 分析SQL語句並存入共享池l 執行SQL語句
l 要處理的數據在數據高速緩沖區嗎?是轉l 從數據文件中讀數據塊到數據高速緩沖區l 在回滾段中記錄原來的數值($)l 在重做日志中生成該事務的一個拷貝l 將數據高速緩沖區中的余額改為$l 銀行櫃員機通過SGA發出工作完成信號(提交)l 在重做日志中記錄已完成事務l 清除回滾段中的恢復信息(Undo Information)l 顧客取錢完成
§ ORACLE系統的SYS和SYSTEM模式SYS和SYSTEM 是每個ORACLE 數據庫系統缺省安裝的兩個帳戶SYS 是所有內部數據庫表結構過程包等擁有者此外它還擁有 V$ 和數據字典視圖並創建所有封裝的數據庫角色(DBACONNECTRESOURCE) Sys是一個唯一能訪問特定內部數據字典的用戶 System 也是在安裝ORACLE 時創建的用戶用於 DBA 任務的管理
SYS 安裝後的缺省口令為 change_on_install SYSTEM 缺省口令為 manager 為了安全可在安裝完成後 用 ALTER USER sys IDENTIFIED BY password 命令修改這兩個特權帳戶的口令
§ ORACLE系統跟蹤文件所有ORACLE 數據庫都至少有一個文件用於記錄系統信息錯誤及主要事件這個文件叫做ALERTsidlog(這裡的sid 為 oracle 的系統標識)存儲位置由INITsidORA 文件的 BACKGROUND_DUMP_DEST 參數給出
後台進程和用戶進程都可以建立各自的跟蹤文件後台進程跟蹤文件位置由BACKGROUND_DUMP_DEST 參數給出 而用戶跟蹤文件位置由 USER_DUMP_DEST 參數給出 如參數文件 initoraora 中給出
# define directories to store trace and alert files background_dump_dest=d\oracle\admin\ora\bdump user_dump_dest=d\oracle\admin\ora\udump後台跟蹤文件被命名為 sidPROCTRC
§ ORACLE系統數據字典數據字典(data dictionary)是存儲在數據庫中的所有對象信息的知識庫ORACLE數據庫系統使用數據字典獲取對象信息和安全信息而用戶和DBA用它來查閱數據庫信息數據字典保存數據對象和段的信息如表視圖索引包過程以及用戶權限角色審計等的信息數據字典是只讀對象不允許任何人對其進行修改
§ 其它數據對象ORACLE 除前面給出的數據對象外還有包括視圖序列同義詞觸發器數據庫鏈及程序包過程和函數下面是必要介紹
§ 視圖視圖是存儲在數據庫中的查詢的SQL 語句它主要出於兩種主要原因安全原因 視圖可以隱藏一些數據如社會保險基金表可以用視圖只顯示姓名地址而不顯示社會保險號和工資數等另一原因是可使復雜的查詢易於理解和使用
§ 序列序列是用於產生唯一數碼的數據庫對象序列創建時帶有 初始值增量值最大值等最大可達 位整數
§ 觸發器觸發器(trigger)是個特殊的存儲過程它的執行不是由程序調用也不是手工啟動而是由個事件來觸發比如當對一個表進行操作( insertdelete update)時就會激活它執行觸發器經常用於加強數據的完整性約束和業務規則等 觸發器可以從 DBA_TRIGGERS USER_TRIGGERS 數據字典中查到
§ 同義詞同義詞(synonym)是指向其它數據庫表的數據庫指針同義詞有兩種類型私有(private)和公共(public)私有的同義詞是在指定的模式中創建並且只創建者使用的模式訪問公共同義詞是由public 指定的模式訪問所有數據庫模式(用戶)都可以訪問它
§ 數據庫鏈數據庫鏈( database link )是與遠程數據庫連接的存儲定義 它們用於查詢分布數據庫環境的遠程者 由於存儲在 DBA_DB_LINKS 數據字典中所以可以把它們看作一種數據庫對象類型
From:http://tw.wingwit.com/Article/program/Oracle/201311/17345.html