oracle控制文件在哪里设置_Oracle控制文件管理

oracle控制⽂件在哪⾥设置_Oracle控制⽂件管理
控制⽂件是⼀个很⼩的⼆进制⽂件(10MB左右),含有数据库结构信息,包括数据⽂件和⽇志⽂件信息。控制⽂件在数据库创建时被⾃动创
建,并在数据库发⽣物理变数时更新。控制⽂件被不断更新,在任何时候都要保证控制⽂件可⽤,否则数据库将⽆法启动或者使⽤。
1 控制⽂件包含的主要信息如下:
数据库名称和SID标识;
数据⽂件和⽇志⽂件列表;
数据库创建的时间戳;
表空间信息;
当前重做⽇志⽂件序列号;
归档⽇志信息;
检查点信息;
回滚段的起始与结束;
备份数据⽂件信息;
控制⽂件包含了如此多的重要信息,需要保护并及时备份控制⽂件,以便它被损坏或者磁盘介质损货时,能够及时恢复。⽬前保护控制⽂件
的主要策略为多路复⽤控制⽂件与备份控制⽂件。
2 查看⽬前系统的控制⽂件信息,主要是查看相关的字典视图
v$controlfile  包含所有控制⽂件的名称和状态信息
v$controlfile_record_section 包含控制⽂件中各个记录⽂档段的信息
v$parameter 包含了系统所有初始化参数,可以查询到control_files的信息
3 控制⽂件的多路复⽤
为了提⾼数据库的安全性,⾄少要为数据库建⽴两个控制⽂件,⽽且这两个⽂件最好分别放在不同的磁盘中,这样可以避免产⽣由于某个磁
盘故障⽽⽆法启动数据库的危险,该管理策略称为多路复⽤控制⽂件。当多路复⽤控制⽂件某个磁盘发⽣故障导致其包含的控制⽂件损坏,
数据库将被关闭或者发⽣异常,此时可以⽤另⼀磁盘中保存的控制⽂件来恢复被损坏的控制位⽂件,然后再重启数据库,达到保护控制⽂件
的⽬的。
数据库建⽴时,⼀般会默认创建两个控制⽂件,我们可以⼿动的再创建多个控制⽂件且不要与默认的放在同⼀个磁盘中,⾸先我们可以修改
control_files参数来增加控制⽂件。
3.1 更改CONTROL_FILES
alter system set control_files =
'/usr/oracle/app/oradata/l','/usr/oracle/app/flash_recovery_area/l','/home/oracle/ControlFiles/c
scope=spfile;
上⾯的代码中,前3个控制⽂件已经创建好,第4个⽂件是⽤户将要⼿动添加的,但是⽬前还没有创建该⽂件,创建该⽂件前需要关闭数据
库,然后将第1个复制过去即可;
3.2 复制控制⽂件
其实添加控制⽂件就是将之前可⽤的控制⽂件复制过去,重命名即可,⾸先我们需要关闭数据库,然后
将/usr/oracle/app/oradata/l 复制为/home/oracle/l即可
复制完之后,再重启数据库,重启之后查询v$control_files;
到此我们控制⽂件多路复⽤的操作完成,过程中需要注意的就是,必须先关闭数据库才能把可⽤的控制⽂件复制过去,如果没有关闭就复制过去,在重启的时候会报错原控制⽂件与新增的不⼀致的错误:
ORA-00214: control file '/usr/oracle/app/oradata/l' version
7136 inconsistent with file '/home/oracle/l' version
7133
4 创建控制⽂件
当数据库所有的控制⽂件都丢失或者损坏,唯⼀补救⽅法就是⼿动创建⼀个新的控制⽂件。创建的语法如下:
create controlfile
reuse database db_name
logfile
group 1 redofiles_list1
group 2 redofiles_list2
group 3 redofiles_list3
...
datafile
datafile1
datafile2
datafile3
...
maxlogfiles max_value1
maxlogmembers max_value2
maxinstances max_value3
maxdatafiles max_value4
noresetlogs|resetlogs
archivelog|noarchivelog;
db_name: 数据名称,通常是orcl
redofiles_list: 重做⽇志组中的重做⽇志⽂件列表;
datafile1: 数据⽂件路径;
max_value1: 最⼤的重做⽇志⽂件数,这是⼀个永久性参数,⼀旦设置就不能修改,如果想要修改只有重建控制⽂件;
4.1 创建过程
创建之前要先对数据⽂件与重做⽇志⽂件备份,因为创建过程中可能会引起某些异常导致数据⽂件与⽇志⽂件损坏。
查看⽇志⽂件,v$logfile
查看数据⽂件
根据上⾯的查询可以得到⽂件所在的路劲,然后备份⽇志⽂件与数据⽂件,备份之前⼀定先关闭数据
库,不然会卡死或者出现异常情况。进⼊到数据⽂件与⽇志⽂件所在⽬录,测试系统正好这两个⽂件都在⼀个⽂件夹下,直接使⽤ cp 命令把它们备份到其他磁盘的⽂件夹下即可:
备份完之后,将数据启动到nomount状态,即启动但不加载数据库,因为加载数据库时实例将会打开控制⽂件,⽆法达到创建新控制⽂件的效果。
数据库启动到nomount状态之后,执⾏create controlfile 命令
create controlfile
reuse database "orcl"
logfile
group 1 '/usr/oracle/app/oradata/orcl/redo01.log',
group 2 '/usr/oracle/app/oradata/orcl/redo02.log',
group 3 '/usr/oracle/app/oradata/orcl/redo03.log'
datafile
'/usr/oracle/app/oradata/orcl/system01.dbf',
'/usr/oracle/app/oradata/orcl/sysaux01.dbf',
'/usr/oracle/app/oradata/orcl/undotbs01.dbf',
'/usr/oracle/app/oradata/orcl/users01.dbf',
'/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf'
maxlogfiles 50
maxlogmembers 4
maxinstances 6
maxdatafiles 200
noresetlogs
noarchivelog;
执⾏创建命令之后,新的控制⽂件还是被存放在原来的⽂件下,可以尝试备份然后将之前的控制⽂件删掉,会发现原来的⽂件下名字⼀样的控制⽂件⼜出现了,编辑SPFILE ⽂件中的初始化参数 CONTROL_FILES,使其指向新建的控制⽂件:
alter system set control_files =
'/usr/oracle/app/oradata/l','/usr/oracle/app/flash_recovery_area/l'
scope=spfile;
5 备份恢复控制⽂件
5.1 备份控制⽂件
直接将当前可⽤的任意⼀个多路复⽤下的控制⽂件复制到你想要备份的路劲即可;
我们可以将控制⽂件备份成⼀个可读的数据⽂件,然后就可以查看⾥⾯的具体内容;
alter database backup controlfile to trace; --备份成可读的⽂本⽂件,此⽅法备份之后,可以查看控制⽂件的具体内容,⾸先使⽤语句:
select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat)); 可以获取到备份之后的⽂件路劲与名称:
得到路径之后,我们可以在linux去查看备份⽂件的具体内容:
将其拷贝出来,主要内容就是创建控制⽂件的语法:
5.2 恢复控制⽂件
当控制⽂件所在磁盘损坏,只需要在初始化⽂件中重新设置control_files参数的值,使它指向备份的控制⽂件,就可以重启数据库,但是要保证control_files下对应的路劲下所有的控制⽂件版本⼀致才⾏,不然会报错误;
如果是控制⽂件本⾝损坏,我们可以将备份⽂件复制到对应的⽬录下,然后重启数据库即可。

本文发布于:2024-09-22 14:35:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/95505.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:控制   数据库   备份   创建
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议