Oracle参数文件与控制文件的备份与还原

                                                           Oracle参数文件与控制文件的备份与还原

一、参数文件的备份与启动(参数文件用于实例的启动)

1、创建初始化参数文件
 create pfile[='全路径名'] from spfile[='全路径名'];  缺省时使用默认位置下的服务器参数文件创建初始化参数文件,默认路径可使用 show parameter spfile 查看

2、使用初始化文件创建服务器参数文件
SQL> create spfile[='全路径名'] from pfile[='全路径名'];

3、通过备份的参数文件启动实例

3.1使用初始化参数文件启动
  SQL>startup <open|mount|nomount> pfile='';
3.2使用服务器参数文件启动实例
   startup <open|mount|nomount> [spfile=''];缺省默认使用spfile启动实例

二、控制文件的备份与恢复

1、备份
1.1备份为二进制映像文件
    SQL> alter database backup controlfile to '/home/oracle/controlfile01.ctl_2019-5-30bak';
1.2备份到跟踪文件,以sql语句的方式记录
   SQL>alter database backup controlfile to trace;
更重文件位置可通过以下参数查看
   SQL> show parameter user_dump_dest

2、恢复,可能存在的情况
情况一:控制文件丢失,在备份成映像文件后数据库结构未发生变化(如:创建或删除表空间,数据文件,重做日志文件等)
(1)还原控制文件 restore;
将之间备份的控制文件拷贝到参数文件中指定的路径,并将文件名改为同之前相同
(2)将实例启动到mount状态
  SQL>  startup nomount
  SQL> alter database mount
(3)恢复控制文件
   SQL>recover database using backup controlfile until cancel;
执行后有四个选项
    输入回车:按顺序搜索归档文件,没回传一次,recover搜索一次
    auto    :根据时间自动寻找归档文件
    输入归档日志的全路径名
    输入cancel:恢复过程被取消
(4)执行以上恢复若未恢复到最新状态时,恢复将会报错,需要重做日志进行恢复
错误信息有如:
ORA_00289:change 342342 for thread 1 is in sequence#23
通过以上顺序号找到日志文件
SQL>select group# sequence# from v$log where sequence# = 23;
根据以上的group#的值找到日志文件
   SQL>select group#,name from v$logfile where group#=x;
再次执行recover恢复,输入刚查询的日志全路径名
(5)恢复成功后启动实例
alter database open resetlogs;

情况二:备份后有数据库新增建了表空间或日志组或日志成员
(1)启动到mount状态
(2)还原控制文件 restore
(3)执行恢复recover
(4)结果可能同(4)的报错信息,处理方式相同
(5)之后recover可能出现以下错误提示
错误信息:
ORA_00283:recovery session canceled due to errors
ORA-01244:unameed datafile(s) added to control file by media recovery
ORA-0110:data file 5:'/opt/oracle/oradata/swdk.dbf'
ORA-0112:media recovery not started
这说明新增加的表空间、数据文件、或重做日志文件的纤细没有记录在备份的控制文件中,这时recover命令吧这些文件修改名称后记录到新的控制文件中,修改后的名称可以通过查询V$datafile和v$logfile获得
如:SQL> select file#,name from v$datafile where file#=5;
结果可能为: /opt/oracle/oradata/orcl/UNAMED0005
 (6)将以上文件修改为原始的值
SQL>alter database rename file '/opt/oracle/12c/dbs/UNAMED0005'  to '/opt/oracle/oradata/orcl/'
 (7)然后在重新执行recover命令,联机重做日志文件
 (8)将数据库实例切换到open状态
SQL> alter database open 


情况三:备份后有数据库删除建了表空间或日志组或日志成员
步骤同上似
recover错误提示如:
ORA-00283:recover session canceled due to errors
ORA-01110:data file 4:'/opt/oracle/oradata/orcl/users01.dbf'
ORA-01157:cannot identify/lock data file 4-see DBWR trace file
出现上述错误是因为 RECOVER命令发现备份的控制文件中记录有些数据文件或日志文件,但这些文件已经不存在了
解决:删除不存在的数据文件或日志后,再次执行recover,当恢复成功后切换实例状态到open
 删除数据文件:alter database datafile 4 offline drop;
 删除重做日志组:alter database drop logfile group  组号
 删除重做日志组成员ALTER DATABASE DROP LOGFILE member '/home/oracle_11/app/oradata/orcl/redoB2.log' --(不能删除当前日志组的成员 不然会出错)
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值