oracle数据库数据字典应用
oracle数据字典
数据字典是由oracle服务器创建和维护的一组只读的系统表。数据字典分为两类:一是基表,二是数据字典视图。
数据字典视图包括用户名、用户权限、对象名、约束和审计等信息,是通过运行catalog.sql脚本文件来产生的。
数据字典存储了如下信息:
ü 数据库的逻辑结构和物理结构,如表空间和数据文件的信息。
ü 所有数据库对象定义的信息。这些对象包括表、索引、视图、序列号、同义词、过程、函数、软件包和触发器等。
ü 所有数据库对象的磁盘空间分配的信息,如对象所分配的磁盘空间和当前正在使用的磁盘空间。
ü Oracle用户名。
ü 每个用户所授予的权限和角色。
ü 完整性约束的信息。
ü 列的默认值。
ü 审计信息等。
当数据管理员或用户发了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