oracle 新增加控制文件,Oracle控制文件新增,备份,恢复

控制文件实验

控制文件最多8个,至少1个,互为镜像,只要丢失了控制文件,数据库将无法正常关闭,无法启动。

//增加控制文件,必须加上原有的控制文件,注意同一路径下的文件名不能相同

alter system set control_files='/lvm/app/Oracle/oradata/updb/control01.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl','/lvm/app/oracle/oradata/updb/control01a.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl' scope=spfile;

alter system set control_files='/lvm/app/oracle/oradata/updb/control01.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl','/lvm/app/oracle/oradata/updb/control01a.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02a.ctl' scope=spfile;

//复制原有的给新建的

SQL> ho cp /lvm/app/oracle/oradata/updb/control01.ctl /lvm/app/oracle/oradata/updb/control01a.ctl

SQL> ho cp /lvm/app/oracle/fast_recovery_area/updb/control02.ctl /lvm/app/oracle/fast_recovery_area/updb/control02a.ctl

shutdown transactional

startup

//减少控制文件

alter system set control_files='/lvm/app/oracle/oradata/updb/control01.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl' scope=spfile;

shutdown

startup

//控制文件异常处理

先按照 http://www.linuxidc.com/Linux/2013-09/89697.htm 的前两步建立好存储过程,再建立下面的过程

//删除控制文件 df=8删除全部控制文件,df<8删除第几个控制文件

create or replace procedure foway_test_1(df number)

as

j number;

begin

j:=1;

if df>8 or df<0 then

dbms_output.put_line('number can not gt 8 or lt 0');

else

for i in(select name from v$controlfile) loop

if length(i.name)>0 then

if df=8 then

del(i.name);

else

if j=df then

del(i.name);

exit;

end if;

end if;

j:=j+1;

end if;

end loop;

j:=1;

end if;

end;

/

1、启动时报告版本错误

复制高版本的给低版本的

2、控制文件部分丢失

//先查看控制文件的信息

SQL> select name from v$controlfile;

select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

/lvm/app/oracle/oradata/updb/control01.ctl

/lvm/app/oracle/fast_recovery_area/updb/control02.ctl

/lvm/app/oracle/oradata/updb/control01a.ctl

/lvm/app/oracle/fast_recovery_area/updb/control02a.ctl

逐个 ls检查

SQL> exec foway_test_1(1);

exec foway_test_1(1);

PL/SQL procedure successfully completed.

再检查

SQL> ho ls /lvm/app/oracle/oradata/updb/control01.ctl;

ho ls /lvm/app/oracle/oradata/updb/control01.ctl;

ls: cannot access /lvm/app/oracle/oradata/updb/control01.ctl: No such file or directory

报告文件丢失

shutdown abort; //强行关闭数据库,注意一定要关闭数据后进行操作,否则数据库将崩溃。

复制存在的给丢失的

ho cp /lvm/app/oracle/oradata/updb/control01a.ctl /lvm/app/oracle/oradata/updb/ control01.ctl

startup

完成恢复

如果报告版本错误,复制高版本的给低版本的。

3、控制文件全部丢失

exec foway_test_1(8);

a、数据库还未关闭

//备份控制文件

alter database backup controlfile to trace as '/tmp/c.sql';

shutdown abort;

//取出控制文件的建立脚本

ho sed '1,/Set #2/p' -n /tmp/c.sql >/tmp/c1.sql;

start /tmp/c1.sql;

启动成功后马上进入rman target /

backup database;

b、数据库已经关闭但是rman有有效的备份(备份之后没有resetlogs,没有重建控制文件,没有clear logfile,当前数据库使用的日志文件没有丢失,时归档的)

rman target /

startup nomount;

restore controlfile from '*s*备份文件';

alter database mount;

exit;

sqlplus / as sysdba

alter database backup controlfile to trace as '/tmp/c.sql' reuse;

shutdown abort;

//取出控制文件的建立脚本

ho sed '1,/Set #2/p' -n /tmp/c.sql >/tmp/c1.sql;

start /tmp/c1.sql;

启动成功后马上进入rman target /

backup database;

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值