ORACLE系統資料表待用資料字典,常用user視圖表及其常用用法

來源:互聯網
上載者:User

Oracle中的資料字典有靜態和動態之分。待用資料字典主要是在使用者訪 問資料字典時不會發生改變的,但動態資料字典是依賴資料庫啟動並執行效能的,反映資料庫啟動並執行一些內在資訊,所以在訪問這類資料字典時往往不是一成不變的。

待用資料字典主要是由表和視圖組成,應該注意的是,資料字典中的表是不能直接被訪問的,但是可以訪問資料字典中的視圖。待用資料字典中的視圖分為三類,它們分別由三個首碼夠成:user_*、all_*、dba_*。
這裡主要介紹user的常用視圖及其用法。 user的常用視圖有 user_objects 使用者物件資訊 user_source 資料庫使用者的所有資來源物件資訊 user_tables 使用者的表對象資訊 user_tab_columns 使用者的表列資訊 user_constraints 使用者的對象約束資訊 user_tab_privs 目前使用者的對象許可權資訊 user_ind_columns 使用者的索引對應的表列資訊 user_clusters 使用者的所有簇資訊 user_clu_columns 使用者的簇所包含的內容資訊 user_cluster_hash_expressions 散列簇的資訊 user_user

主要描述目前使用者的資訊,主要包括目前使用者名、帳戶id、帳戶狀態、資料表空間名、建立時間等。例如執行下列命令即可返回這些資訊。 user_objects (使用者物件資訊)

主要描述目前使用者擁有的所有對象的資訊,對象包括表、視圖、預存程序、觸發器、包、索引、序列等。該視圖比user_tables視圖更加全面。

欄位名 解釋
object_name 對象名稱
object_id 對象id
created 對象的建立時間
last_ddl_time 跟對象相關的(不一定是改變對象的結構,也可以是其他相關,如,如果此對象是表,則將該表的select許可權賦給其他使用者也會改變這個欄位的值)最最近ddl操作的執行時間
timestamp 對象自身結構發生改變的時間,比如刪除欄位、添加欄位等
object_type 物件類型
status 狀態
……
user_tables (使用者的表對象資訊)

主要描述目前使用者擁有的所有表的資訊,主要包括表名、資料表空間名、簇名等。通過此視圖可以清楚瞭解目前使用者可以操作的表有哪些。

欄位名 解釋
TABLE_NAME 表名
TABLESPACE_NAME
CLUSTER_NAME
NUM_ROWS 表中的資料行數
STATUS
PCT_FREE
PCT_USED
INI_TRANS
MAX_TRANS
INITIAL_EXTENT
……
user_tab_comments(使用者的表注釋)
欄位名 解釋
table_name 表名或視圖名
Table_type 類型(TABLE/VIEW)
comments 已經為該列輸入的注釋
user_col_comments (使用者的表列資訊)
欄位名 解釋
table_name 表名或視圖名
column_name 列名
comments 已經為該列輸入的注釋
user_sys_privs (目前使用者的系統許可權資訊) user_tab_privs (目前使用者的對象許可權資訊 )

該視圖主要是儲存目前使用者下對所有表的許可權資訊。目前使用者對該表的許可權就可以清楚的知道,哪些操作可以執行,哪些操作不能執行。 user_col_privs 目前使用者的表列許可權資訊 user_role_privs 目前使用者的角色許可權資訊 user_indexes 使用者的索引資訊 user_ind_columns 使用者的索引對應的表列資訊 user_constraints 使用者的對象約束資訊 user_cons_columns 使用者的約束對應的表列資訊

user_constraints是資料表條件約束的視圖,描述的是約束類型(constraint_type)是什麼,屬於哪些表(table_name),如果約束的類型為R(外鍵)的話,那麼r_constraint_name欄位存放的就是被引用主表中的主鍵約束名。
user_cons_columns是資料表條件約束欄位的視圖,說明表中的和約束相關的列參與了哪些約束。這些約束有主鍵約束,外鍵約束,索引約束.
兩者可以通過(owner,constraint_name,table_name)關聯 常用用法

利用資料字典,輔助開發和實施,是極好的~~~
偷懶必學,尤其是做資料移轉,批量處理資料或者資料表大範圍整改時。 1、備份表注釋

select 'comment on table '||table_name||' is '''||comments||''';' from user_tab_comments where comments is not null;
2、備份所有的欄位注釋
select 'comment on column '||table_name||'.'||column_name||' is '''||comments||''';' from user_col_comments where comments is not null;
3、查詢主鍵/外鍵
select c.constraint_name index_name,       decode(t.constraint_type, 'P', 1, 0) type,       c.table_name,       c.column_name  from user_constraints t, user_cons_columns c where c.constraint_name = t.constraint_name   and c.column_name not like 'SYS_NC%$'   and t.constraint_type in ('P', 'U');

其中constraint_type的值為P時 表示Primary Key,即主鍵,R表示Referential AKA Foreign Key,即外鍵,U表示Unique Key,即唯一鍵。 4、欄位轉為大寫

select 'alter table ' || t.TABLE_NAME || ' rename column "' || column_name ||'" to "' || upper(column_name) || '";'  from user_tab_columns t;
5、查看某對象的狀態
select object_type,status from user_objects where object_name=upper('package1'); 

注意upper的使用,資料字典裡的所有對象均為大寫形式,而PL/SQL裡不是大小寫敏感的,所以在實際操作中一定要注意大小寫匹配。 6、CLOB轉BLOB

首先建一個clob欄位名+_1的欄位,用於替代

select 'alter table ' || table_name ||' add '||column_name||'_1 blob;' from user_tab_columns where data_type='CLOB';

然後通過一個轉換方法把Clob欄位的資料轉為BLOB並且存到建立欄位中

select 'update '||table_name||' set ' ||column_name || '_1=clob_to_blob('|| column_name ||');' from user_tab_columns where data_type='CLOB';

這時候可以把原來的clob欄位刪除了

select 'alter table ' || table_name ||' drop column '||column_name||';' from user_tab_columns where data_type='CLOB';

最後把建立欄位改為原來欄位一樣的名字,即把_1去掉

select 'alter table '||table_name||' rename column '||column_name||' to '||replace(column_name,'_1','')||';' from user_tab_columns where data_type='BLOB';
7、查看目前使用者的預設資料表空間
select username,default_tablespace from user_users;
8、查看名稱包含log字元的對象
SQL>select object_name,object_id from user_objectswhere instr(object_name,'LOG')>0; 

後續使用時再不斷補充……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.