数据字典的生成
- 数据字典是在数据库创建时,由Oracle数据库服务器自动创建的,存放在数据文件中,包括基表和视图两部分。
- 基表无法直接阅读,是在create database时创建,Oracle使用数据字典视图收集基表的信息以供用户阅读。
- 数据字典数据只有Oracle数据库服务器能修改
- 在数据库运行期间,数据库结构或其他对象的变化信息会及时地记录在数据字典基表中,用户可通过动态性能视图查看(注意与下面的静态数据字典视图区分)
数据字典的内容
- 所有模式对象的定义,包括表,视图,索引,族,同义词,序列号,存储过程,函数触发器等
- 数据库的逻辑结构和物理结构,如数据文件和重做文件的信息等。
- 所有模式对象被分配多少存储空间,以及当前使用的空间
- 默认列的值
- 对象完整性约束信息
- 用户信息
- 用户或角色的特权信息
- 审计信息,如那个用户具有访问或者修稿某些模式对象的权利
数据字典视图的分类
数据字典视图包含静态数据字典视图和动态性能视图,其中静态的数据字典视图又分为三类,以不同前缀相互区分
- DBA_*** 该视图包含数据库整个对象信息,只能由数据库管理员查看
- ALL_*** 包含某个用户所能看到的全部数据库信息
- USER_*** 包含当前用户访问的数据库对象信息
实践:
C:\Users\LENOVO>sqlplus /nolog
SQL> conn / as sysdba //以管理员身份连接数据库
SQL> desc dba_objects; //查询dba_objects视图的列定义
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(30)
通过数据字典视图dba_objects查看SCOTT用户的数据库对象信息,对于另外两类视图也是类似做法
-
SQL> col owner for a20 ////指定列的输出格式为20个字符长度 SQL> col object_name for a40 //指定列的输出格式为40个字符长度 SQL> select owner,object_name,created 2 from dba_objects 3 where owner='SCOTT'; //注意用户名大小写 OWNER OBJECT_NAME CREATED -------------------- ---------------------------------------- -------------- SCOTT PK_DEPT 02-4月 -10 SCOTT DEPT 02-4月 -10 SCOTT EMP 02-4月 -10 SCOTT PK_EMP 02-4月 -10 SCOTT BONUS 02-4月 -10 SCOTT SALGRADE 02-4月 -10 已选择6行。
重点介绍几个数据字典视图的常见用法
user_tables
SQL> conn scott/orcl
SQL> select table_name from user_tables; //查看scott用户所拥有的表
TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
user_catalog
SQL> select * from user_catalog; //查看scott用户拥有的所有表名和类型
TABLE_NAME TABLE_TYPE
------------------------------ -----------
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE TABLE
动态性能视图
还有一类数据字典视图:动态性能视图,动态性能视图只存在于运行的数据库中,只有数据库管理员可以查询,以v$为前缀,如v$controlfile包含了控制文件存储目录和文件名信息,v$datafile包含了数据库文件信息,v$fixed_table视图包含了当前所有动态性能视图,v$datafile包含了当前所有动态性能视图。
实践:
SQL> conn / as sysdba
已连接。
SQL> select *
2 from v$fixed_table
3 where name like 'V$LOG%'; //查询所有和日志文件相关的动态性能视图
NAME OBJECT_ID TYPE TABLE_NUM
------------------------------ ---------- ----- ----------
V$LOGFILE 4294950935 VIEW 65537
V$LOG 4294951049 VIEW 65537
V$LOGHIST 4294951051 VIEW 65537
V$LOG_HISTORY 4294951077 VIEW 65537
V$LOGMNR_CONTENTS 4294951541 VIEW 65537
V$LOGMNR_LOGS 4294951543 VIEW 65537
V$LOGMNR_DICTIONARY 4294951545 VIEW 65537
V$LOGMNR_PARAMETERS 4294951547 VIEW 65537
V$LOGMNR_LOGFILE 4294951643 VIEW 65537
SQL> select group#,members,archived,status
2 from v$log; //查看当前正在使用的重做日志组,current说明正在使用
GROUP# MEMBERS ARC STATUS
---------- ---------- --- ----------------
1 1 NO CURRENT
2 1 NO INACTIVE
3 1 NO INACTIVE
SQL> col member for a40
SQL> select * from v$logfile; //查看重做日志文件信息
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------- ---
3 ONLINE F:\APP\LENOVO\ORADATA\ORCL\REDO03.LOG NO
2 ONLINE F:\APP\LENOVO\ORADATA\ORCL\REDO02.LOG NO
1 ONLINE F:\APP\LENOVO\ORADATA\ORCL\REDO01.LOG NO
SQL> col instance_name for a20
SQL> col host_name for a10
SQL> select instance_name,host_name,version,startup_time,logins
2 from v$instance; //查看实例信息
INSTANCE_NAME HOST_NAME VERSION STARTUP_TIME LOGINS
-------------------- ---------- ----------------- -------------- ----------
orcl LAPTOP-NV0 11.2.0.1.0 06-10月-18 ALLOWED
FE7G7
SQL> col name for a10
SQL> select name,created,log_mode
2 from v$database; //查看当前数据库信息
NAME CREATED LOG_MODE
---------- -------------- ------------
ORCL 06-10月-18 NOARCHIVELOG