data dictionary(資料字典)
一、資料字典簡介
有關資料字典介紹詳見官網Concepts-part II Oracle Database Architecture-7 The Data Dictionary(10g)。
歸納總結有以下特點:
資料字典是由基表(x$)、檢視、同義詞構成,由$ORACLE_HOME/rdbms/admincatalog.sql指令碼生成。其中基表是儲存有關資料庫的底層表,我們無法直接訪問。
下面主要介紹檢視。
所有檢視可通過查詢dictionary表獲取,如查詢控制檔案相應檢視:
SQL> select table_name from dictionary where table_name like '%CONTROLFILE%';
TABLE_NAME
------------------------------
V$CONTROLFILE
V$CONTROLFILE_RECORD_SECTION
GV$CONTROLFILE
GV$CONTROLFILE_RECORD_SECTION
V$BACKUP_CONTROLFILE_DETAILS
V$BACKUP_CONTROLFILE_SUMMARY
6 rows selected.
注:以上查詢結果中V$與GV$一一對應,其中v$代表單例項環境下檢視,GV$代表叢集環境下檢視。
二、檢視分類
檢視可分為靜態檢視與動態檢視,其主要區別如下:
靜態檢視:
1、在資料庫open狀態下訪問,用於瞭解資料庫的物理結構資訊。
2、大部分以dba,all,user打頭,並多用於複數形式,其中
user_:儲存當前使用者所擁有的物件的相關資訊;
all_:儲存當前使用者能夠訪問的物件(包括使用者所擁有的物件和別的使用者授權訪問的物件)的資訊;
dba_:儲存所有使用者物件的資訊(預設只能有sys/system使用者訪問);
動態檢視:
1、大部分在mount下就可以訪問,反映資料庫實時的狀態。
2、大部分以v$開頭,多用單數形式,從控制檔案或記憶體中讀出。
3、從v$fixed_table這個檢視查到所有的動態檢視的名稱。
4、用於調優和資料監控。
例1:mount狀態訪問靜態、動態檢視
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 1219760 bytes
Variable Size 121635664 bytes
Database Buffers 293601280 bytes
Redo Buffers 2973696 bytes
Database mounted.
--未開庫狀態訪問靜態檢視失敗
SQL> select tablespace_name,contents,status from dba_tablespaces;
select tablespace_name,contents,status from dba_tablespaces
*
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only
----未開庫狀態訪問動態檢視成功(動態檢視資訊來自控制檔案或記憶體,mount狀態控制檔案是開啟的)
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS
SYSAUX
TEMPTS
USERS
SQL> alter database open;
Database altered.
--開庫狀態,可訪問靜態檢視
SQL> select tablespace_name,contents,status from dba_tablespaces;
TABLESPACE_NAME CONTENTS STATUS
------------------------------ --------- ---------
SYSTEM PERMANENT ONLINE
UNDOTBS UNDO ONLINE
SYSAUX PERMANENT ONLINE
TEMPTS TEMPORARY ONLINE
USERS PERMANENT ONLINE
例2:scott使用者訪問不同靜態檢視
SQL> conn scott/tiger
Connected.
--非sysdba許可權無法訪問dba_tables
SQL> select table_name,tablespace_name,blocks from dba_tables;
select table_name,tablespace_name,blocks from dba_tables
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select table_name,tablespace_name,blocks from user_tables;
TABLE_NAME TABLESPACE_NAME BLOCKS
------------------------------ ------------------------------ ----------
SALGRADE USERS 5
BONUS USERS 0
EMP USERS 5
DEPT USERS 5
SQL> select table_name,tablespace_name,blocks from all_tables;
TABLE_NAME TABLESPACE_NAME BLOCKS
------------------------------ ------------------------------ ----------
PLAN_TABLE SYSTEM 1
PLAN_TABLE$
IMPDP_STATS
KU$NOEXP_TAB
OL$NODES
OL$HINTS
OL$
DEF$_TEMP$LOB SYSTEM 0
ODCI_WARNINGS$
ODCI_SECOBJ$
WRI$_ADV_ASA_RECO_DATA
TABLE_NAME TABLESPACE_NAME BLOCKS
------------------------------ ------------------------------ ----------
PSTUBTBL
AUDIT_ACTIONS SYSTEM 1
STMT_AUDIT_OPTION_MAP SYSTEM 1
TABLE_PRIVILEGE_MAP SYSTEM 1
SYSTEM_PRIVILEGE_MAP SYSTEM 1
DUAL SYSTEM 1
SALGRADE USERS 5
BONUS USERS 0
EMP USERS 5
DEPT USERS 5
21 rows selected.
三、常用靜態檢視
SQL> conn /as sysdba
Connected.
--查詢控制檔案資訊
SQL> col name for a50;
SQL> select file#,name from v$datafile;
FILE# NAME
---------- --------------------------------------------------
1 /u01/app/oracle/oradata/PROD/disk3/system01.dbf
2 /u01/app/oracle/oradata/PROD/disk4/undotbs01.dbf
3 /u01/app/oracle/oradata/PROD/disk4/sysaux01.dbf
4 /u01/app/oracle/oradata/PROD/disk3/users01.dbf
--查詢表空間資訊
SQL> select name from v$tablespace;
NAME
--------------------------------------------------
SYSTEM
UNDOTBS
SYSAUX
TEMPTS
USERS
--查詢日誌資訊
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 10 104857600 2 NO INACTIVE 355469 03-MAY-13
2 1 11 104857600 2 NO INACTIVE 377693 02-APR-14
3 1 12 104857600 2 NO CURRENT 399207 02-APR-14
--查詢日誌檔案資訊
SQL> col member for a50
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
1 ONLINE /u01/app/oracle/oradata/PROD/disk1/redo01.log NO
1 ONLINE /u01/app/oracle/oradata/PROD/disk2/redo01.log NO
2 STALE ONLINE /u01/app/oracle/oradata/PROD/disk1/redo02.log NO
2 STALE ONLINE /u01/app/oracle/oradata/PROD/disk2/redo02.log NO
3 ONLINE /u01/app/oracle/oradata/PROD/disk1/redo03.log NO
3 ONLINE /u01/app/oracle/oradata/PROD/disk2/redo03.log NO
6 rows selected.
--查詢歸檔資訊
SQL> select name from v$archived_log;
no rows selected
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21251711/viewspace-1139019/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle10g資料字典(Data Dictionary for Oracle 10g)-ztOracle 10g
- 【檢視】oracle 資料字典檢視之 DICT / DICTIONARYOracle
- Python 3 字典(Dictionary)Python
- 字典(Dictionary)的javascript實現JavaScript
- About Static Data Dictionary ViewsView
- 字典 dictionary c# 0104C#
- Structure of the Data Dictionary : Base Tables (258)Struct
- Java自定義一個字典類(Dictionary)Java
- How Oracle Uses the Data Dictionary (262)Oracle
- Public Synonyms for Data Dictionary Views (263)View
- Cache the Data Dictionary for Fast Access (264)AST
- 【oracle DB安全性】保護資料字典引數O7_DICTIONARY_ACCESSIBILITYOracle
- How to get ORACLE_HOME from data dictionaryOracle
- Oracle 資料字典和資料字典檢視Oracle
- Object C學習筆記13-Dictionary字典Object筆記
- 資料字典
- Structure of the Data Dictionary : User-Accessible Views (259)StructView
- Step 9: Run Scripts to Build Data Dictionary Views (67)UIView
- 資料字典簡介和資料字典命中率
- ThinkCMF資料字典
- MySQL資料字典MySql
- oracle 資料字典Oracle
- InnoDB資料字典--字典表載入
- note of Beginning Oracle SQL-Oracle Data Dictionary ViewsOracleSQLView
- Keeping the Data Dictionary Cache Hit Ratio at or above 95 Percent
- 資料流圖 和 資料字典
- sqlite 資料庫的資料字典SQLite資料庫
- 檢視資料字典
- 淺析資料字典
- 資料字典簡介
- Oracle常用資料字典Oracle
- oracle 資料字典(轉)Oracle
- Oracle資料字典 (轉)Oracle
- 生成oracle資料字典Oracle
- Oracle 資料字典 (轉)Oracle
- Oracle的資料字典Oracle
- QTP測試資料管理-Excel+DictionaryQTExcel
- Python 基礎起步 (七) 初識字典 Dictionary(絕命毒師前傳)Python