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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python 3 字典(Dictionary)Python
- 字典 dictionary c# 0104C#
- 英文單詞縮寫----DXNRY – Dictionary 字典
- Oracle 19c Concepts(06):Data Dictionary and Dynamic Performance ViewsOracleORMView
- InnoDB資料字典--字典表載入
- ThinkCMF資料字典
- MySQL資料字典MySql
- school dictionary, kids dictionary, children dictionary
- 資料流圖 和 資料字典
- 檢視資料字典
- C#中JSON字串和Dictionary字典型別的相互轉換C#JSON字串型別
- 資料編織 (Data Fabric) vs 資料網格 (Data Mesh)
- oracle資料庫資料字典應用Oracle資料庫
- 2.12 資料庫資料字典檢視資料庫
- Python 基礎起步 (七) 初識字典 Dictionary(絕命毒師前傳)Python
- C# 雜湊表Hashtable與字典表Dictionary<K,V>的比較。C#
- Python資料結構:字典Python資料結構
- MySQL 8.0 之資料字典MySql
- 資料結構-字典樹資料結構
- navicat生成mysql資料字典MySql
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- js資料結構--字典(map)JS資料結構
- lavavel 自動生成資料字典
- 06-資料型別——字典資料型別
- 資料段data、bss、rodata
- WPF 資料模板Data Template
- docker資料卷(Data Volumes)Docker
- CDM(Conceptual Data Model,概念資料模型)和 PDM(Physical Data Model,物理資料模型)模型
- 2.8.3 資料庫服務的資料字典檢視資料庫
- 資料庫升級-物理重新整理資料字典資料庫
- python-資料型別之字典Python資料型別
- Oracle相關資料字典檢視Oracle
- 使用 Python 字典向 SQLite 插入資料PythonSQLite
- 2.1.3.4 資料字典儲存在CDB中
- 2.1.3.1 資料字典分離的目的
- 什麼是Oracle的資料字典?Oracle
- SQL Server 2014 匯出資料字典SQLServer
- python字典和結構化資料Python
- 用python字典統計CSV資料Python