oracle數據字典 數據字典是由oracle伺服器創建和維護的一組只讀的系統表。數據字典分為兩類:一是基表,二是數據字典視圖。 數據字典視圖包括用戶名、用戶許可權、對象名、約束和審計等信息,是通過運行catalog.sql腳本文件來產生的。 數據字典存儲瞭如下信息: ü 資料庫的邏輯結構和物理結構, ...
oracle數據字典
數據字典是由oracle伺服器創建和維護的一組只讀的系統表。數據字典分為兩類:一是基表,二是數據字典視圖。
數據字典視圖包括用戶名、用戶許可權、對象名、約束和審計等信息,是通過運行catalog.sql腳本文件來產生的。
數據字典存儲瞭如下信息:
ü 資料庫的邏輯結構和物理結構,如表空間和數據文件的信息。
ü 所有資料庫對象定義的信息。這些對象包括表、索引、視圖、序列號、同義詞、過程、函數、軟體包和觸發器等。
ü 所有資料庫對象的磁碟空間分配的信息,如對象所分配的磁碟空間和當前正在使用的磁碟空間。
ü Oracle用戶名。
ü 每個用戶所授予的許可權和角色。
ü 完整性約束的信息。
ü 列的預設值。
ü 審計信息等。
當數據管理員或用戶發了DDL或DCL語句時,oracle伺服器都要將相關的信息記錄到數據字典中。其中DML語句有;插入(insert)、修改(update)
數據字典表:存儲在系統表空間,信息來源於以$結尾的基表。
user_xxxs:顯示當前用戶所擁有的對象信息。
all_xxxs:顯示當前用戶所擁有的以及有權利查看的對象信息。
dba_xxxs:顯示資料庫所有的對象信息,只有管理員用戶才能訪問。
xxx可以為tables、indexes、objects等。
動態性能視圖:結構在記憶體中初始化,信息來源於記憶體和控制文件,資料庫在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