oracle資料庫資料字典應用

Sebastiane發表於2018-04-09

oracle資料字典

資料字典是由oracle伺服器建立和維護的一組只讀的系統表。資料字典分為兩類:一是基表,二是資料字典檢視。

資料字典檢視包括使用者名稱、使用者許可權、物件名、約束和審計等資訊,是通過執行catalog.sql指令碼檔案來產生的。

 

資料字典儲存瞭如下資訊:

  ü 資料庫的邏輯結構和物理結構,如表空間和資料檔案的資訊。

  ü 所有資料庫物件定義的資訊。這些物件包括表、索引、檢視、序列號、同義詞、過程、函式、軟體包和觸發器等。

  ü 所有資料庫物件的磁碟空間分配的資訊,如物件所分配的磁碟空間和當前正在使用的磁碟空間。

  ü Oracle使用者名稱。

  ü 每個使用者所授予的許可權和角色。

  ü 完整性約束的資訊。

  ü 列的預設值。

  ü 審計資訊等。

 

當資料管理員或使用者發了DDLDCL語句時,oracle伺服器都要將相關的資訊記錄到資料字典中。其中DML語句有;插入(insert)、修改(update

 

資料字典表:儲存在系統表空間,資訊來源於以$結尾的基表。

   user_xxxs:顯示當前使用者所擁有的物件資訊。

   all_xxxs:顯示當前使用者所擁有的以及有權利檢視的物件資訊。

   dba_xxxs:顯示資料庫所有的物件資訊,只有管理員使用者才能訪問。

  xxx可以為tablesindexesobjects等。

 

動態效能視:結構在記憶體中初始化,資訊來源於記憶體和控制檔案,資料庫在mount狀態可以訪問的

是基於x$結尾的檢視。

   v$xxx 當前例項 (v$instance   v$database   v$version)

   gv$xxx 所有例項

nomount階段就有,open階段有表空間檢視

 

可使用模糊查詢找到需要的資料字典檢視 ,資料庫處於open狀態 。

SYS@openlab> select table_name from dict where lower(table_name) like `dba%user%`;

 

 SYS@openlab>desc dict

 Name                                      Null?    Type

 —————————————– ——– —————————-

 TABLE_NAME                                         VARCHAR2(30)

 COMMENTS                                           VARCHAR2(4000)

在資料庫處於nomount狀態下可以查詢動態效能檢視。

SYS@openlab> select count(*) from v$fixed_table;

 

  COUNT(*)

———-

      2062

 

資料字典應用例項:

SQL> connect sys/oracle as sysdba

Connected.

資料庫名字、建立日期

SQL> select name,created,log_mode,open_mode

  2  from v$database;

NAME   CREATED      LOG_MODE     OPEN_MODE

——— ———— ———— ——————–

OCP   14-JAN-18    NOARCHIVELOG     READ WRITE

查詢版本資訊

SQL> select * from v$version;

BANNER

——————————————————————————–

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production

PL/SQL Release 11.2.0.4.0 – Production

CORE 11.2.0.4.0 Production

TNS for Linux: Version 11.2.0.4.0 – Production

NLSRTL Version 11.2.0.4.0 – Production

檢視控制檔案

SQL> col name for a60

SQL> select name from v$controlfile;

NAME

————————————————————

/u01/app/oracle/oradata/ocp/control01.ctl

/u01/app/oracle/oradata/ocp/control02.ctl

檢視重做日誌組成員等資訊

SQL> select group#,members,bytes,status,archived

  2  from v$log;

 

    GROUP#    MEMBERS    BYTES STATUS   ARC

———- ———- ———- —————- —

 1     1  104857600 INACTIVE   NO

 2     1  104857600 INACTIVE   NO

 3     1  104857600 CURRENT   NO

重做日誌存放位置

SQL> col member for a60

SQL> select group#,member

  2  from v$logfile;

    GROUP# MEMBER

———- ————————————————————

 3 /u01/app/oracle/oradata/ocp/redo03.log

 2 /u01/app/oracle/oradata/ocp/redo02.log

 1 /u01/app/oracle/oradata/ocp/redo01.log

資料庫備份和恢復策略,歸檔檔案位置

SQL> archive log list

Database log mode        No Archive Mode

Automatic archival        Disabled

Archive destination        USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     4

Current log sequence        6

 

相關文章