數據字典是由oracle服務器建立和維護的一組只讀的系統表。數據字典分爲兩類:一是基表,二是數據字典視圖。sql
數據字典視圖包括用戶名、用戶權限、對象名、約束和審計等信息,是經過運行catalog.sql腳本文件來產生的。數據庫
數據字典存儲了以下信息:服務器
ü 數據庫的邏輯結構和物理結構,如表空間和數據文件的信息。oracle
ü 全部數據庫對象定義的信息。這些對象包括表、索引、視圖、序列號、同義詞、過程、函數、軟件包和觸發器等。app
ü 全部數據庫對象的磁盤空間分配的信息,如對象所分配的磁盤空間和當前正在使用的磁盤空間。函數
ü Oracle用戶名。性能
ü 每一個用戶所授予的權限和角色。spa
ü 完整性約束的信息。日誌
ü 列的默認值。對象
ü 審計信息等。
當數據管理員或用戶發了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