Oracle通過系統表獲取基本庫表資訊
阿新 • • 發佈:2019-02-10
因開發需要監控整個資料庫,所以需要獲取資料庫的基本資訊,包括資料庫資訊,表資訊,列資訊等。
介紹下使用到的系統表
- all_users
所有的資料庫資訊
select * from all_users;
官網地址 all_tables
select * from all_tables;
其中我需要的有table_name,num_rows,num_rows * avg_row_len 表size,owner所屬資料庫,last_analyzed 最後修改時間
官網地址all_objects
select * from all_objects where owner = ‘ZYT’;
owner 擁有者/資料庫
object_name 表名或其他名稱
object_id 表id
object_type 型別 這裡我們只使用table
created 建立時間
last_ddl_time 最後一次修改時間
官網地址- all_tab_columns
select * from all_tab_columns where owner = ‘ZYT’;
column_name 列名
data_type 列型別
nullable 是否允許為空
column_id 列id
官網地址 - all_col_comments
select * from all_col_comments where owner = ‘ZYT’;
comments 列備註
官網地址 - all_tab_comments
select * from all_tab_comments where owner = ‘ZYT’;
comments 表備註
官網地址
如果想了解這些表其他列的含義,請檢視官網
查詢all_ 開頭的表均不需要專門許可權,也不需要DBA許可權!*
知道了上面的系統表是不是就知道自己需要的資料從哪裡獲取了,具體的sql語句就不提供了,大家自己調研下就知道了。
問題1:為什麼不使用user_*系列的表?
因為我要獲取的是當前使用者有許可權的資料庫表,而不只是當前使用者自己的表資料。
問題2:為什麼不適用dba_*系列的表?
因為不是所有使用者都有dba許可權,會容易出事情。