1. 数据字典是由Oracle服务器创建和维护的一组只读的系统表。Oracle服务器依赖数据字典存储的信息来管理和维护Oracle数据库。分为基表和数据字典视图。
数据字典是oracle数据库的最重要的组成部分,它提供了数据库的相关系统信息;动态性能视图记载了例程启动以来的相关性能信息。
2. Oracle服务器在数据库创建时通过运行sql.bsq来自动生成基表,在任何时候,基表永远被最先创建的对象。
3. 数据字典存储如下信息:
1)数据库的逻辑结构和物理结构
2)所有数据库对象定义的信息
3)所有数据库对象的磁盘空间分配信息
4)Oracle用户名
5)每个用户所授予的权限和角色
6)完整性约束的信息
7)列的默认值
8)审计信息等
4. 任何用户包括DBA都不能直接使用DML语句修改数据字典中的内容
DML、DDL、DCL介绍
数据定义语言(data define language) DDL
这类语句是用来建立数据库基本组件的,例如建立表,建立视图等等。包含create语句、drop语句、alter语句、truncate、comment、grant、
revoke,DDL操作是隐性提交的,不能rollback.
数据操作语句言(data manipulate language)DML
这类语句的作用是根据需要写入、删除、更新数据库中的数据。主要包括select、insert、update、delete、call、explain、lock table
数据控制语言(data control language)DCL
这类语句主要用来实现用户的权限授予或者取消,保证数据的安全性。主要包括Grant(授权)、Revoke(撤消)、Deny(拒绝)三种语句,COMMIT、SAVEPOINT、ROLLBACK、SET TRANSACTION
5. 数据字典视图分为3类
1)USER_*:用户所拥有的对象信息,即用户自己创建的对象信息;
2)ALL_*:用户可以访问的对象信息,即用户自己创建的对象信息加上其他用户创建的对象但该用户有权访问的信息;
3)DBA_*:有关整个数据库中的对象信息;
4)以前缀为ALL和DBA开始的数据字典中比USER中多了一列OWNER;
6. 常见数据字典视图介绍:
1)USER_OBJECTS,ALL_OBJECTS,DBA_OBJECTS 用户拥有的对象信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。
a)查看用户所拥有的对象。select owner,object_name,object_id,created,status,object_type from all_objects where owner='SCOTT';
2)USER_TABLES,ALL_TABLES,DBA_TABLES
a)查看用户所用户的表。select table_name from all_tables;
b)使用USER_CATALOG可以查看用户拥有的所有的所有的名字和类型。user_catalog别名为cat。 select table_name,table_type from user_catalog;
3)user_users,all_users,dba_users 描述用户信息,主要包括用户名,账号id,账号状态,表空间名,创建时间
select * from user_users;
4)user_tab_privs、all_tab_privs和dba_tab_privs 存放用户对所有表的权限信息
7. 动态性能视图,一组虚表,记录Oracle服务器当前数据库的活动记录。可以实时地反映数据库运行状态。名字以V$开头。可以从过查询数据字典V$fixed_table或dictionary来得到Oracle数据库中所有的数据字典。
1)dictionary只有两列table_name和comments;
2)v$fixed_table列出数据字典的名字和类型等
3)使用v$dict_columns查看数据字典中的某一列的含义,包括表(数据字典)名,列名和列的解释
8. 常见动态性能视图
1)v$database,可以取得Oracle数据库的名字,创建日期等
select name,created,log_mode,open_mode from v$database;
2)v$instance获得计算机的主机名,Oracle数据库的实例及Oracle数据库管理系统的版本
select host_name,instance_name,version from v$instance;
3)v$version获得安装Oracle数据库管理系统版本的详细信息
select * from v$version;
4)v$controlfile获得控制文件名字
select status,name from v$controlfile;
5)v$log获得重做日志的配置信息
select group#,members,bytes,status,archived from v$log;(group#:组,members:成员,bytes:大小,status:状态)
6)v$logfile获得重做日志文件所存放的具体位置
select group#,status,type,member from v$logfile;
7)dba_tablespaces获得表空间信息
select tablespace_name,block_size,status,contents,logging from dba_tablespaces;
8)dba_data_files获得表空间存放的位置等信息
select file_id,file_name,tablespace_name,status,bytes from dba_data_files;
9)v$access 该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象
select * from v$access;
10)v$active_instance主要描述当前数据库下的活动的实例的信息
select * from v$active_instance;
11)v$context列出当前会话的属性信息。例如命名空间、属性值等
9. 控制文件的备份
alter database backup controlfile to 'd:\backup\control.bak'
注意:尽可能使用当前的控制文件而不是备份控制文件进行数据库的恢复,因为使用备份控制文件进行的恢复是不完全恢复,而不完全恢复会造成数据库的数据丢失。
10. 创建控制文件的命令备份到一个追踪文件中,包含有重建控制文件所需的sql语句
alter database backup controlfile to trace as 'd:\trace.sql'; "d:\trace.sql" 指保存目录
11. 使用初始化参数文件(pfile)移动控制文件
1)查看控制文件的配置
select * from v$controlfile;
2)正常关闭数据库
shutdown immediate;
3)控制文件的复制
host copy 'D:\winXP\oracle9i\oradata\oracle\CONTROL01.CTL' TO 'D:\winXP\backup\disk1\CONTROL01.CTL'
4)修改初始化参数文件
修改控制文件的路径
5)启动Oacle数据库
startup
6)查看控制文件的配置
select * from v$controlfile;
7)删除旧的控制文件所在的操作系统目录
del D:\winXP\oracle9i\oradata\oracle\CONTROL02.CTL'
12. 采用二进制的初始化参数文件移动控制文件
1)获得数据库的控制文件的物理路径和文件名
select * from v$controlfile;
2)将控制文件移动到创建的新目录中
alter system set control_files ='D:\winXP\backup\disk1\control01.ctl','D:\winXP\backup\disk2\control02.ctl','D:\winXP\backup\disk3\control03.ctl' scope=spfile;
3)关闭数据库
shutdown immediate;
4)复制控制文件到新创建的目录中
host copy D:\winXP\oracle9i\oradata\oracle\CONTROL01.CTL D:\winXP\backup\disk1\
host copy D:\winXP\oracle9i\oradata\oracle\CONTROL02.CTL D:\winXP\backup\disk2\CONTROL02.CTL
host copy D:\winXP\oracle9i\oradata\oracle\CONTROL03.CTL D:\winXP\backup\disk3\CONTROL03.CTL
5)启动数据库
startup;
6)查看控制文件的配置
select * from v$controlfile;
7)删除就得控制文件所在的操作系统目录
del D:\winXP\oracle9i\oradata\oracle\CONTROL02.CTL'