当前位置:首页 > oracle六种物理文件
2010-05-14 14:06340人阅读评论(0)收藏举报
一、控制文件(Control File):保存有关数据库的结构信息!
控制文件是一个小型的二进制文件,可以记录数据库的物理结构。包括:
* 数据库名称
* 数据文件和日志文件的名称和位置 * 数据库创建的时标 * 当前日志的序号 * 检验点信息
一般Oracle数据库创建时都会创建至少两个或两个以上的控制文件。 二、控制文件的标准
1、控制文件的文件名
由control_files参数来指定控制文件名。
若没有指定该参数,则生成默认文件名,默认文件名在各个操作系统中各不相同
2、控制文件的复用
一般不同的控制文件都存放在不同的磁盘,当某个磁盘损坏时可以通过在其他磁盘上的控制文件进行复用,不需要任何的介质恢复。
* 找到control_files参数列出所有文件名,将相应内容写入所有控制文件
* control_files中列出的第一个文件是Oracle数据库运行期间唯一可以读取的文件 * 数据库运行期间,任何控制文件变为不可用,则实例不能继续运行
3、备份控制文件
进行以下数据库物理结构改变之后,需要备份控制文件
* 添加、取消或重命名数据文件
* 添加或撤销表空间,或更改表空间读写状态 * 添加或取消重做日志文件
4、控制文件大小管理
MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES参数控制
三、创建控制文件
1、创建初始化控制文件
control_files = (/u01/oracle/prod/control01.ctl, /u02/oracle/prod/control02.ctl, /u03/oracle/prod/control03.ctl)
注:若已经存在与指定名同名的文件,则在create database语句中指定controlfile reuse子句。而且新控制文件与原先控制文件的size必须相同。
2、创建额外副本、重命名和重定位控制文件
① 关闭数据库 ② 在操作系统中复制、修改原控制文件 ③ 修改control_files,添加或修改新的控制文件名 ④ 重新启动数据库
3、创建新的控制文件
以下情况可能会需要重新创建新的控制文件:
* 数据库所有控制文件都收到永久性损坏,且无任何备份
* 希望修改数据库参数的永久性设置,例如:SID、MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES等参数
4、创建语句示例
create controlfile set databse april
LOGFILE GROUP 1 ('/export/home/oracle/oradata/april/redo01_01.log', '/export/home/oracle/oradata/april/redo01_02.log'), GROUP 2 ('/export/home/oracle/oradata/april/redo02_01.log', '/export/home/oracle/oradata/april/redo02_02.log'), GROUP 3 ('/export/home/oracle/oradata/april/redo03_01.log', '/export/home/oracle/oradata/april/redo03_02.log') noresetlogs
datafile '/export/home/oracle/oradata/april/system01.dbf' size 3M, '/export/home/oracle/oradata/april/rbs01.dbf' SIZE 5M, '/export/home/oracle/oradata/april/users01.dbf' SIZE 5M, '/export/home/oracle/oradata/april/temp01.dbf' SIZE 5M MAXLOGFILES 50 MAXLOGMEMBERS 3 MAXDATAFILES 200 MAXINSTANCES 6 ARCHIVELOG;
注:create controlfile 语句可能会损坏数据文件和联机重做日志文件,省略文件名会引
起文件中数据的丢失,或失去访问完整数据库的能力,所以在使用这条语句时需要特别小心。
5、创建步骤(严格遵守)
① 制作包括数据库所有数据文件和联机重做日志文件的列表,可以使用以下SQL列出清单
select member from v$logfile; --日志文件 select name from v$datafile; -- 数据文件
select value from v$parameter where name = 'control_files' ; -- 控制文件 ② 关闭数据库(immediate、abort) ③ 备份数据库的所有数据文件和联机重做日志文件 ④ 启动一个新的实例,但不要装载和打开数据库(nomount) ⑤ 使用create controlfile语句创建一个新的控制文件
注:若重命名数据库,或联机重做日志文件丢失,可使用resetlogs子句 ⑥ 在离线存储设备上存储新的控制文件备份 ⑦ 编辑control_file初始化参数,若重命名数据库,则编辑DB_NAME参数 ⑧ 进行数据库恢复(如果需要的话 )
注:若指定resetlogs,则需要加入using backup control file来恢复数据库 ⑨ 打开数据库(alter databse open;) ==========================控制文件的相关操作============================== 一、create controlfile错误
1、检查文件差异
创建新的控制文件之后会检查数据字典和控制文件之间的矛盾,以检查丢失或多余的文件。
丢失:
若数据字典中存在某数据文件,而控制文件中没有,则Oracle在控制文件中创建一个名为MISSINGnnn的占位符入口,表示作为脱机并需要介质恢复的标志。可以通过重命名MISSINGnnn来访问MISSINGnnn对应的真正数据文件,但该文件必须是只读或正常脱机的。
又因为数据文件需要介质恢复,而RESETLOGS的结果排除了介质恢复的可能,所以当使用了RESETLOGS子句时,必须撤销包含数据文件的表空间。
多余:
当控制文件记录的数据文件不在数据字典中时,Oracle会从新的控制文件中删除对数据文件的引用。
注:无论是丢失还是多余,都会在相应实例的alert.log文件中包含一条解释性消息。
2、创建过程中的错误
一般在创建新的控制文件后打开数据库,可能会返回一下错误类型: ORA-01173、ORA-01176、ORA-01177、ORA-01215、ORA-01216
最大的可能是在在创建时有文件丢失或多余文件。
此时应该找到备份的数据文件和联机重做日志文件,覆盖当前文件,并使用正确的CREATE CONTROLFILE语句重新创建。
二、备份控制文件
1、备份控制文件为二进制文件
alter database backup controlfile to '/oracle/backup/control.bkp';
2、制作以后可以重新创建控制文件的SQL
alter database backup controlfile to trace;
3、可以使用RMAN对控制文件进行备份
三、恢复控制文件
1、控制文件损坏
①关闭实例 ②将未损坏的控制文件副本覆盖已损坏文件 ③打开数据库
2、磁盘损坏
①关闭实例 ②经未损坏控制文件副本复制到新磁盘空间 ③修改control_file参数 ④打开数据库
也可以先修改control_file参数,然后恢复控制文件,再把
四、删除控制文件
① 关闭数据库 ② 修改control_file参数 ③启动数据库 ④ 在磁盘上删除相应controlfile文件
五、控制文件信息
共分享92篇相关文档