1. 程式人生 > >Oracle通過系統表獲取基本庫表資訊

Oracle通過系統表獲取基本庫表資訊

因開發需要監控整個資料庫,所以需要獲取資料庫的基本資訊,包括資料庫資訊,表資訊,列資訊等。

介紹下使用到的系統表

  1. all_users
    所有的資料庫資訊
    select * from all_users;
    這裡寫圖片描述
    官網地址
  2. all_tables
    select * from all_tables;
    這裡寫圖片描述
    其中我需要的有table_name,num_rows,num_rows * avg_row_len 表size,owner所屬資料庫,last_analyzed 最後修改時間
    官網地址

  3. all_objects
    select * from all_objects where owner = ‘ZYT’;
    這裡寫圖片描述


    owner 擁有者/資料庫
    object_name 表名或其他名稱
    object_id 表id
    object_type 型別 這裡我們只使用table
    created 建立時間
    last_ddl_time 最後一次修改時間
    官網地址

  4. all_tab_columns
    select * from all_tab_columns where owner = ‘ZYT’;
    這裡寫圖片描述
    column_name 列名
    data_type 列型別
    nullable 是否允許為空
    column_id 列id
    官網地址
  5. all_col_comments
    select * from all_col_comments where owner = ‘ZYT’;
    這裡寫圖片描述

    comments 列備註
    官網地址
  6. all_tab_comments
    select * from all_tab_comments where owner = ‘ZYT’;
    這裡寫圖片描述
    comments 表備註
    官網地址
    如果想了解這些表其他列的含義,請檢視官網

查詢all_ 開頭的表均不需要專門許可權,也不需要DBA許可權!*

知道了上面的系統表是不是就知道自己需要的資料從哪裡獲取了,具體的sql語句就不提供了,大家自己調研下就知道了。

問題1:為什麼不使用user_*系列的表?
因為我要獲取的是當前使用者有許可權的資料庫表,而不只是當前使用者自己的表資料。
問題2:為什麼不適用dba_*系列的表?


因為不是所有使用者都有dba許可權,會容易出事情。