data dictionary(数据字典)

一、数据字典简介
有关数据字典介绍详见官网Concepts-part II Oracle Database Architecture-7 The Data Dictionary(10g)。
归纳总结有以下特点:
bb
数据字典是由基表(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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21251711/viewspace-1139019/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值