基礎知識補漏 資料字典

2021-07-22 13:33:24 字數 2160 閱讀 7668

資料字典

資料字典表(data dictionary table)用以儲存表、索引、約束以及其他資料庫結構的資訊。 這些物件通常以「$」結尾(例如 tab$、obj$、ts$等),在建立資料庫的時候通過執行 sql.bsq 指令碼來建立。

dba_objects 中有兩個字段經常使人誤解:object_id 和 data_object_id。這兩個字 段分別來自 obj$中的 obj#和 dataobj#,其中 obj#(也即 object_id)可以被看作是對 象的邏輯號(類似序列號一樣分配),該序號一旦分配之後就不會發生改變;而 dataobj#

(也即 data_object_id)則是和物理儲存關聯的編號,通常被認為是物件的物理號,這個 編號會隨著物件物理儲存結構的改變而發生改變。

不要在 dataobj#上建立索引,因為在空間事務如 truncate 中, dataobj#會發生改變。

在執行 truncate 操作時,資料庫只是簡單的**空間,將空間標記為可用(並不會去資料塊上真正去刪除資料), 同時將物件的資料物件重新定位,完成空間**。那麼實際上,雖然 oracle 並未 供直接的 辦法,在原物件儲存位置被重新寫入資料之前,truncate 資料仍然是有辦法恢復的。

查詢當前會話的trace檔案(僅11g)

sql> select value from v$diag_info where name = 'default trace file';

oracle 通過將 ddl 解析為 dml 操作,並且將這些操作記錄在資料字典表中。

查詢表的ddl語句

set pagesize 99

set long 12000

select dbms_metadata.get_ddl('table','eygle') from dual;

靜態資料字典檢視按照字首的不同通常被分為三類:

1.user_ 類檢視包含了使用者所擁有的相關物件資訊,使用者可以通過這個檢視查詢自己擁有的物件資訊。

2.all_ 類檢視包含了使用者有許可權訪問的所有物件的資訊。

3.dba_ 類檢視包含了資料庫所有相關物件的資訊,使用者需要 select any table 權

限才能訪問。

每個使用者與方案 (schema)是對應的,schema 是使用者所擁有的物件的集合。

簡要統計不同使用者擁 有的表物件數量

select owner,count(*) from dba_tables group by owner order by 2;

建立公共同義詞

create public synonym sales for eygle.sales_data;

除了一些特例以外,每個 v$檢視都有乙個對應的 gv$檢視存在。

v$檢視來自gv$檢視,gv$檢視來自x$表。

v_$檢視的許可權可以授予其他使用者, 而 oracle 不允許任何對於 v$檢視的直接授權。

通常大部分使用者訪問的 v$物件,並不是檢視,而是指向 v_$檢視的 同義詞;而 v_$檢視是基於真正的 v$檢視(這個檢視是基於 x$表建立的)建立的。

在資料庫進行資料訪問時,oracle優先訪問view,然後是同義詞。

動態效能檢視是在資料庫啟動過程中自動建立的,所以在資料庫啟動的不同階段,我們能訪問的檢視也各不相同。

根據object_id檢視物件資訊

select object_name,object_id,object_type from dba_objects where object_id=841;

oracle對於物件名的解析順序:

1、oracle首先檢視在發出命令的使用者模式中是否存在表或檢視。

2、如果表或檢視不存在,檢查私有同義詞是否存在。

3、如果私有同義詞存在,使用這個同義詞所用的物件。

4、如果私有同義詞不存在,檢查同名的公有同義詞是否存在。

5、如果公有同義詞存在,將使用這個同義詞所引用的物件。

6、如果公有同義詞不存在,返回ora-00942 table or view does not exist

在業務系統的底層,應該盡量避免頻繁使用複雜的資料字典檢視。

存在long資料型別的表的複製

copy from oti/oti@fwx to oti/oti@fwx create all_tab_columns_temp using select * from all_tab_columns t where t.owner = 'oti';

基礎知識 oracle資料字典總結

下面按類別列出一些oracle使用者常用資料字典的查詢使用方法。一 使用者 檢視當前使用者的預設表空間sql select username,default tablespace from user users 檢視當前使用者的角色sql select from user role privs 檢視...

基礎知識 oracle資料字典總結

下面按類別列出一些oracle使用者常用資料字典的查詢使用方法。一 使用者 檢視當前使用者的預設表空間sql select username,default tablespace from user users 檢視當前使用者的角色sql select from user role privs 檢視...

基礎知識補漏 記憶體管理

記憶體管理 資料庫的活動主要就是 cursor 的活動 乙個關鍵的引數是 use realfree heap,當設定這個引數為 true 時,oracle 會為 cga uga 單 獨分配堆,而不從 pga 中分配。它的預設值為 false,而當設定了 pga aggregate target 後,...