日期:2014-05-16  浏览次数:20417 次

数据字典和控制文件
1.数据字典简介
数据字典分为两大类:一种为基表,另一种为数据字典视图。
Oracle服务器在数据库创建时通过运行sql.bsq来自动生成这些基表。
在任何数据库中,基表都永远是被最先创建的对象。一般很少有人看得懂基表,都是通过访问数据字典视图来得到数据库的相关信息。
数据字典视图是通过运行catalog.sql脚本文件来产生的,可以在$ORACLE_HOME\rdbms\admin目录下找到该脚本文件和sql.bsq脚本文件,以及许多其他的数据库管理和维护所需的脚本文件。
2.数据字典和视图
数据字典分为3类,其前缀分别为USER,ALL,和DBA。许多数据字典视图包含相似的信息,以下解释每类数据字典视图
1) USER_*:有关用户所拥有的对象的信息,即用户自已创建的对象的信息。
2) ALL_*:有关用户可以访问的对象的信息,即用户自已创建的对象的信息再加上其他用户创建的对象但该用户有权访问的信息。
3) DBA_*:有关整个数据库中对象的信息。
这里的*可以为TABLES,INDEXES,OBJECTS等。
以DBA用户登录后,可以用如下命令显示user_objects,all_objects和dba_objects
SQL>desc user_objects
SQL>desc all_objects
SQL>desc dba_objects
所有的数据字典视图都是静态视图,只有当执行了Oracle的ANALYZE命令之后,这些视图才会被刷新。
3.格式化数据字典视图的输出
使用COLUMN命令来分别格式化列owner,object_name
SQL>col owner for a8
SQL>col object_name for a12
4. 如何使用数据字典视图
查看账号下有那些表
SQL>select table_name from user_tables;
查看那些表可以使用
SQL>select table_name,owner from all_tables where owner not like ‘%SYS’;
另一个可能会用到的数据字典是user_catalog,可以用命令得到该数据字典的结构
SQL>desc user_catalog
可以用以下命令查看拥有的所有表的名字和类型
SQL>select * from user_catalog;
数据字典user_catalog有一个别名叫做cat。用户可以用它得到和user_catalog完全相同的信息。
5.动态性能表(视图)
除了静态字典视图之外,还有另一大类数据字典视图,它们就是动态性能视图。
动态性能视图是一组虚表,在数据库运行期间,这些虚表存在于内存中,它们的名字都是以v$开头,利用动态性能视图可以获得类似如下的信息:
1) 会话活动的信息
2) 对象打开或关闭的信息
3) 对象在线或离线的信息等
可能通过查询数据字典v$fixed_table或dictionary来得到Oracle数据库中所有的数据字典。
通过select * from dictionary或select * from v$fixed_table可能会显示上千行的结果,可以通过SPOOL命令输出到指定文件中查看。
6.数据字典应用实例
1)得到数据库的名字,创建日期等
SQL>select name,created,log_mode,open_mode from v$database;
2) 得到数据库的计算机的主机名,数据库的实例名及数据库管理系统的版本
SQL>select host_name,instance_name,version from v$instance;
3)得到数据库管理系统的版本
SQL>select * from v$version;
4) 得到控制文件名字
SQL>select * from v$controlfile;
5) 得到数据库的重做日志的配置信息
SQL>select group#,members,bytes,status,archived from v$log;
6) 得到每个重做日志文件所存放的具体位置
SQL>select * from v$logfile;
7) 得到数据库的备份和恢复策略并确定归档文件的具体位置
SQL>archive log list
8) 得到数据库中到底有多少表空间以及每个表空间的状态
SQL>select tablespace_name,block_size,status,contents,logging from dba_tablespaces;
9) 得到每个表空间存在哪个磁盘上以及文件的名字等信息
SQL>select file_id,file_name,tablespace_name,status,bytes from dba_data_files;
10) 得到数据库系统上到底有多少用户和什么时候创建数据库的
SQL>select username,created from dba_users;
7. 什么是控制文件及引入的目的
数据库的控制文件是数据库中极其重要的文件。记载了物理数据库的当前状态。每个控制文件只属于一个数据库,但为了防止控制文件丢失,一个数据库一般有不止一个控制文件。
8. 怎样查看控制文件的配置
可通过数据字典v$controlfile_record_section来获得
SQL>select type,record_size,records_total,records_used from v$controlfile_record_section;
1) 获得控制文件名字
SQL>select value from v$parameter where name=’control_files’;
也可以使用
SQL>select * from v$controlfile;
9.怎样添加和移动控制文件
在一个已经安装的Oracle数据库中使用正文初始化参数文件添加或移动控制文件的具体步骤:
a. 利用数据字典v$controlfile来获取现有控制文件的名字
b. 正常关闭Oracle数据库,如shutdown或shutdown immediate
c. 将新的控制文件名添加到参数文件的CONTROL_FILES参数中
d. 使用操作系统的复制命令将现有控制文件复制到指定位置
e. 重新启动ORACLE数据库
f. 利用数据字典v$controlfile来验证新的控制文件名是否正确
g. 如果有误,重做上述操作;如果无误,删除无用的旧控制文件
如果使用了服务器初始化参数文件(SPFILE),其步骤会略有不同,以下是在一个已经安装的Oracle数据库中使用二进制初始化参数文件添加或移动控制文件的具体步骤
a. 利用数据字典v$controlfile来获取现有控制文件名字
b. 修改SPFILE,使用alter system set control_files命令来改变控制文件的位置
如:
SQL>alter system set control_files=’D:\Disk3\CONTROL01.CTL’,
’D:\Disk3\CONTROL02.CTL’, ’D:\Disk3\CONTROL03.CTL’  SCOPE=SPFILE;
c. 正常关闭Oracle数据库,如shutdown或shutdown immediate
d. 使用操作系统的复制命令将现有控制文件复制到指定位置
e. 重新启动ORACLE数据库,如startup
f. 利用数据字典v$controlfile来验证新的控制文件名是否正确
g. 如果有误,重做上述操作;如果无误,删除无用的旧控制文件
10. 控制文件的备份
可以使用如下命令对控制文件进行备份
SQL>alter database backup controlfile to ‘D:\backup\control.bak’;
也可将创建控制文件的命令备份到一个追踪文件中。该追踪文件包含有重建控制文件所需的SQL语句。
SQL>alter database backup controlfile to trace;
该追踪文件在用户的追踪文件所在的目录下。