一、参数文件恢复

1.1 首先查看归档模式是否打开

SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/11204/db/dbs/arch
Oldest online log sequence     4
Current log sequence           6

1.2 关闭数据库

SQL> shutdown immediate
Database closed
Database dismounted.
ORACLE instance shut down.

1.3 将数据库启动到mount状态

SQL> startup mount
ORACLE instance started.
Total System Global Area  776646656 bytes
Fixed Size                  2257272 bytes
Variable Size             507514504 bytes
Database Buffers          264241152 bytes
Redo Buffers                2633728 bytes
Database mounted.

1.4 开启归档

SQL> alter database archivelog;
Database altered.

1.5 设置归档路径

SQL> alter system set log_archive_dest_1='location=/home/oracle/arch';
System altered.

1.6 查看归档信息

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /home/oracle/arch
Oldest online log sequence     5
Next log sequence to archive   7
Current log sequence           7

1.7 打开数据库

SQL> alter database open;
Database altered.

1.8 打开控制文件自动备份设置

(备份任意文件都会自动备份控制文件。)

[oracle@ggs1 ~]$ rman target /
connected to target database: ORCL (DBID=1442733234)
RMAN>
RMAN> show all;using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11204/db/dbs/snapcf_orcl.f'; # defaultRMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

1.9 备份全库

RMAN> backup database format '/home/oracle/%d_%T_%s_%p.bak';
Recovery Manager complete.

1.10 备份spfile

SQL> create pfile from spfile;

若spfile文件损坏并且无pfile备份
则利用控制文件自动备份生成的参数文件备份恢复。
执行restore spfile 命令,根据备份类型区别使用 from autobackup或from ‘备份集路径’子句。这里使用自动备份。

RMAN> set dbid 1442733234
RMAN> restore spfile from autobackup;
RMAN> exit

1.11 然后重启数据库即可,完成参数文件恢复。

注意:此命令要求先指定数据库的DBID,DBID可以从控制文件自动备份文件名中获得,控制文件自动备份默认保存在 $ORACLE_HOME/dbs 目录。
当控制文件自动备份没有在默认位置
RMAN> CONFIGURECONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/home/oracle/%F’;
那么,数据库在nomount状态rman只能读取默认配置的,不能读取到更改后位置的
当恢复的时候通过如下

Rman>set dbid 1442733234;
Rman>run
{SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICETYPE disk to '/home/oracle/%F';
Restore controlfilefrom autobackup;
}

如果在实例运行中发现参数文件损坏,如下:

RMAN>restore spfile to '/tmp/spfileorcl.ora' from autobackup;$cp  /tmp/spfileorcl.ora $ORACLE_HOME/dbs

二、控制文件损坏

2.1 首先破坏环境(删除控制文件),模拟故障

[oracle@ggs1 orcl]$ ls
control01.ctl  example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf
control02.ctl  redo01.log     redo03.log  system01.dbf  undotbs01.dbf
[oracle@ggs1 orcl]$ rm -rf control0*
[oracle@ggs1 orcl]$ ls
example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf
redo01.log     redo03.log  system01.dbf  undotbs01.dbf

2、重启数据时,就会报如下错误

SQL> startup force
ORACLE instance started.Total System Global Area  776646656 bytes
Fixed Size    2257272 bytes
Variable Size  507514504 bytes
Database Buffers  264241152 bytes
Redo Buffers    2633728 bytes
ORA-00205: error in identifying control file, check alert log for more info

2.2 根据报错信息发现是控制文件验证出错

进一步查看alert 日志

$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/trace
$ tail -20 alert_orcl.log

三、系统表空间数据文件损坏

SQL> startup force

如果数据库在运行过程中发现系统表空间数据文件损坏,要先关闭
实例(shutdown abort),再启动到mount状态下恢复。
在恢复之前确保数据库处于mount状态

RMAN> run{
restore datafile 1;
recover datafile 1;
alter database open;
}

四、Undo表空间数据文件损坏

UNDO表空间数据文件和system表空间数据文件都是数据库的关键数据文件,如果损坏会导致sql执行失败,用户无法登录,甚至实例崩溃等。同样恢复UNDO表空间数据文件也必须在数据库mount状态下进行。
数据库在运行过程中发现UNDO表空间数据文件损坏,此时是正常关闭数据库会报错(SP2-0717: illegal SHUTDOWN option),需要强制关闭。

SQL> shutdown abort
SQL> startup mount
RMAN> run{restore datafile '/oradata/orcl/undotbs01.dbf';
recover database;
alter database open;
}

五、应用数据文件损坏(users表空间)

5.1 在启动实例时发现应用数据文件丢失或数据文件头损坏,启动实例会提示如下错误,并只能启动到mount状态。

应用数据文件损坏,在启动数据库时会报如下错误:

SQL> startup
ORACLE instance started.Total System Global Area  776646656 bytes
Fixed Size    2257272 bytes
Variable Size  507514504 bytes
Database Buffers  264241152 bytes
Redo Buffers    2633728 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/oradata/orcl/users01.dbf'
SQL>

这种情况的恢复方法与关键数据文件恢复方法相同。启动实例到mount状态,在RMAN中执行已下命令:即可完成恢复。

run{
restore datafile 4;
recover database;
alter database open;
}

5.2 如果在数据库运行过程中发现应用数据文件损坏,此时可以在线进行恢复,不需要关闭数据库。步骤如下:

首先查看数据文件信息

SQL> select file#,name,status from v$datafile;FILE# NAME       STATUS
---------- -------------------------------------------------- -------1 /oradata/orcl/system01.dbf      SYSTEM2 /oradata/orcl/sysaux01.dbf      ONLINE3 /oradata/orcl/undotbs01.dbf      ONLINE4 /oradata/orcl/users01.dbf      ONLINE5 /oradata/orcl/example01.dbf      ONLINE

然后查看哪些用户使用表空间users表空间

SQL> select username,default_tablespace from dba_users where username='HR';
USERNAME       DEFAULT_TABLESPACE
--------------------    ------------------------------
HR                       USERS

此时模拟故障,删除user01.dbf,连接到hr用户,因为hr用户使用users表空间,在操作时会报错如下:

SQL>conn hr/hr
Connected.
SQL> create table t1 as select * from employees;
create table t1 as select * from employees*
ERROR at line 1:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/oradata/orcl/users01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

a、offline 损坏的数据文件

SQL> alter database datafile '/oradata/orcl/users01.dbf' offline;
Database altered.
SQL>

此时查询v$datafile视图status,该数据文件状态会变成RECOVER

SQL> select file#,name,status from v$datafile;FILE# NAME       STATUS
---------- -------------------------------------------------- -------1 /oradata/orcl/system01.dbf      SYSTEM2 /oradata/orcl/sysaux01.dbf      ONLINE3 /oradata/orcl/undotbs01.dbf      ONLINE4 /oradata/orcl/users01.dbf      RECOVER5 /oradata/orcl/example01.dbf      ONLINE
SQL>

b、在RMAN中,还原并恢复损坏的数据文件

RMAN> run{
restore datafile 4;
recover datafile 4;
}

c、查看数据文件状态,此时为OFFLINE

SQL>  select file#,name,status from v$datafile;FILE# NAME       STATUS
---------- -------------------------------------------------- -------1 /oradata/orcl/system01.dbf      SYSTEM2 /oradata/orcl/sysaux01.dbf      ONLINE3 /oradata/orcl/undotbs01.dbf      ONLINE4 /oradata/orcl/users01.dbf      OFFLINE5 /oradata/orcl/example01.dbf      ONLINE

d、online 数据文件并查看数据文件状态

SQL> alter database datafile 4 online;

SQL> select file#,name,status from v$datafile;FILE# NAME       STATUS
---------- -------------------------------------------------- -------1 /oradata/orcl/system01.dbf      SYSTEM2 /oradata/orcl/sysaux01.dbf      ONLINE3 /oradata/orcl/undotbs01.dbf      ONLINE4 /oradata/orcl/users01.dbf      ONLINE5 /oradata/orcl/example01.dbf      ONLINE

e、连接hr用户验证,此时创建表不再报错

SQL> conn hr/hr
SQL> create table t1 as select * from employees;

六、临时文件损坏

临时数据文件的损坏或丢失会造成需要使用临时表空间的命令执行失败,但不会造成实例崩溃。由于临时表空间存放的是临时数据,rman不会对其进行备份,一旦损坏采用的恢复方法是重建或替换。
如果在数据库运行过程中,发现临时数据文件损坏或丢失,可以采用替换的方法恢复,不需要重启数据库:

6.1 查看临时数据文件

select tablespace_name,file_id,file_name,bytes/1024/1024 Mbytes from dba_temp_files;

或者

SQL> select file#,name,bytes/1024/1024 Mb from v$tempfile;FILE# NAME       MB
---------- -------------------------------------------------- ----------1 /oradata/orcl/temp01.dbf      29

6.2、添加新的临时文件

SQL> alter tablespace temp add tempfile '/oradata/orcl/temp02.dbf' size 30M;
SQL> select file#,name,bytes/1024/1024 Mb from v$tempfile;FILE# NAME       MB
---------- -------------------------------------------------- ----------1 /oradata/orcl/temp01.dbf      292 /oradata/orcl/temp02.dbf      30

6.3 删除旧的临时文件

SQL> alter tablespace temp drop tempfile '/oradata/orcl/temp01.dbf';

七、全库备份脚本

#!/bin/bash
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11204/db_1
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
ORACLE_SID=hankey
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
export ORACLE_BASE ORACLE_HOME PATH ORACLE_SID  NLS_DATE_FORMAT echo '----------------------------------------'>>/bak/rman_hankey_full.log
echo 'Start FULL Backup at '`date +%Y-%m-%d:%H:%M:%S` >>/bak/rman_hankey_full.log
echo '----------------------------------------'>>/bak/rman_hankey_full.logrman target / nocatalog log /bak/rman_hankey_full.log append<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup  database format '/bak/full_%d_%T_%s_%p.bak';
SQL 'alter system archive log current';
SQL 'alter system archive log current';
backup archivelog  all delete input  format '/bak/arch_%d_%T_%s_%p.bak';
backup current controlfile format '/bak/ctl_%d_%T_%s_%p.bak';
backup spfile format '/bak/%d_%U.spfile.bak';
}
EOFecho '----------------------------------------'>>/bak/rman_hankey_full.log
echo 'End Full Database Backup at '`date +%Y-%m-%d:%H:%M:%S` >>/bak/rman_hankey_full.log
echo '----------------------------------------'>>/bak/rman_hankey_full.logrman target / nocatalog log /bak/rman_delete.log append<<EOF
allocate channel  for maintenance type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
EOF
exit

ORACLE之rman备份恢复及故障处理相关推荐

  1. oracle rman catalogo,ORACLE 11g RMAN备份恢复--catalog

    rman catalog是为数据备份恢复时,使用恢复目录catalog,与nocatalog的不同是,nocatalog将备份相关的信息记录在了控制文件中,而catalog将备份信息记录在了恢复目录中 ...

  2. ORACLE11G 将dataguard的rman备份恢复到测试环境的单机oracle中的详细过程

    2019独角兽企业重金招聘Python工程师标准>>> ORACLE11G 将dataguard的rman备份恢复到测试环境的单机oracle中的详细过程 原创 2015年08月21 ...

  3. oracle rman备份整库,RMAN备份恢复整个库

    RMAN备份恢复整个库 1 查看历史备份集 $ rman target / RMAN> list backup; 说明与资料档案库中的任何备份都不匹配 上述结果说明之前没有备份过 2 备份整个库 ...

  4. oracle rman恢复表空间,rman备份恢复表空间

    rman备份恢复表空间 1 创建数据表空间 SQL> create tablespace test_tablespace logging datafile '/u01/app/oracle/or ...

  5. Oracle 运维篇+RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要

    说明:本文为Oracle RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要方便用户查阅 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化 说 ...

  6. 通过 RMAN备份恢复搭建Oracle DG

    平时都是通过RMAN DUPLICATE来搭建dg,今天遇到了问题,只能改换方法. 一. 奇怪的问题 执行RMAN DUPLICATE时发现数据文件传输十分之慢,在约250M/s的磁盘上传输速度居然只 ...

  7. oracle中 initcpa,oracle  11g rman备份

    oracle 11g rman备份 Target库准备工作: 1. 查询DBID C:\Documents and Settings\Administrator>sqlplus /nolog S ...

  8. RMAN备份恢复性能优化--MAXSETSIZE, MAXPIECESIZE, FILESPERSET, SECTION SIZE等

    RMAN备份恢复性能优化--MAXSETSIZE, MAXPIECESIZE, FILESPERSET, SECTION SIZE, MAXOPENFILES等 ㈠ 发现问题 RMAN在做备份.恢复时 ...

  9. RMAN备份恢复报错 ORA-19573: cannot obtain exclusive enqueue for datafile 5

    RMAN备份恢复报错 ORA-19573: cannot obtain exclusive enqueue for datafile 5 用vi 编辑了一个数据文件 ,导致下面的错误: 验证还原 RM ...

最新文章

  1. [No0000160]常用C# 正则表达式大全
  2. 利用AVR单片机 专用下载 USBtinyISP对Arduino UNO下载程序
  3. python的常用数据类型_python 常用数据类型
  4. InvokeHelper:多线程修改主界面控件属性并调用其中方法
  5. ADS_LPC2103开发板SPI 4位数码管测试试验
  6. 排队问题解题思路_青岛版二年级数学下册8.2除加除减解决问题微课视频辅导+练习...
  7. 64位ubuntu 12.04编译linux内核提示openssl/opensslv.h文件缺失
  8. Windows在当前目录(文件)打开cmd窗口
  9. 牛客小白月赛9: div.2 A(线性筛)
  10. HTML基础【1】:认识 HTML
  11. 机器学习实战 k-近邻算法 约会网站
  12. 台式计算机颜色如何矫正,台式机怎么颜色校正操作教程
  13. 归纳法证明汉诺塔解析式思路
  14. Linu系统 rpm软件包 管理
  15. 遗传算法--函数最值问题
  16. 华为rh2288v2服务器系统,灵动高效!华为RH2288 V2服务器评测
  17. 什么是package-info.java
  18. VC5509的通用GEL代码
  19. javascript单例、代理、状态设计模式
  20. 生活陪伴、健康监测、紧急呼叫 ,深兰科技康养服务机器人成智慧养老新标配

热门文章

  1. 地图标注不完整图片_全国2020年目前最全的76家冻品水产市场标注地图,值得收藏...
  2. 百度地图jsapi在手机站里实现中心标注不随地图移动的效果
  3. C++ STL map emplace()和emplace_hint()(深入了解,一文学会)
  4. 【机器学习】新手必看的十种机器学习算法
  5. linux 硬件加密 ssd,市面上多种流行的固态硬盘产品存在硬盘加密机制绕过漏洞...
  6. 怎么又双叒叕得奖了!得帆入选中国2022低代码优秀厂商代表
  7. 【APP】App测试方法总结
  8. python猜拳游戏编程代码_用python实现“猜拳游戏
  9. java工具栏_Java自学-图形界面 工具栏
  10. 最值得推荐的任务悬赏平台