ORACLE备份恢复问题,请帮忙解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE备份恢复问题,请帮忙解析相关的知识,希望对你有一定的参考价值。

有题目有答案,但因为本人是新手,照着答案也做不出来。请ORACLE高手根据题目和答案,给出每一步的具体步骤和解析,不胜感激!!!

题目:
Oracle10G:在数据库文件全部损坏或丢失的的情况下,使用Rman备份恢复全库,假定数据库名为orcl。

答案:
步骤一.准备一个临时参数文件,参数文件内容如下 (5%)
%ORACLE_HOME%\database\initorcl.ora
db_name=orcl
sga_target=160m
compatible=10.2.0.1.0
db_recovery_file_dest='c:\oracle\flash_recovery_area' --路径可根据实际情况调整
db_recovery_file_dest_size=2g
步骤二.启动数据库到nomount状态 --- startup nomount (5%)
步骤三.恢复spfile --- restore spfile from autobackup; (20%)
步骤四.强制重新启动到nomount状态 --- startup force nomount (10%)
步骤五.恢复controlfile --- restore controlfile from autobackup; (30%)
步骤六.修改数据库状态到mount状态 --- alter database mount; (10%)
步骤七.恢复数据文件 (10%)
run
restore database;
recover database;
步骤八.修改数据库状态到open状态 --- alter database open resetlogs; (10%)
本人确实菜鸟,照着这个答案的步骤就是做不下来。 请提示,要提前具备哪些条件。 每一个命令需要在 sqlplus 还是Rman 里做。 autobackup 需要有什么前提吗?

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;
RMAN> run
2>
3> allocate channel c1 device type disk format '/home/oracle/yjs/%U';
4> backup database plus archivelog delete all input;

分配的通道: c1
通道 c1: sid=1626 devtype=DISK

启动 backup 于 05-9月 -13
当前日志已存档
通道 c1: 正在启动存档日志备份集
通道 c1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =6 记录 ID=1 时间戳=825337254
输入存档日志线程 =1 序列 =7 记录 ID=2 时间戳=825337732
通道 c1: 正在启动段 1 于 05-9月 -13
通道 c1: 已完成段 1 于 05-9月 -13
段句柄=/home/oracle/yjs/01oj39s4_1_1 标记=TAG20130905T122852 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:02
通道 c1: 正在删除存档日志
存档日志文件名 =/oradata/archivelog/1_6_825336279.dbf 记录 ID=1 时间戳 =825337254
存档日志文件名 =/oradata/archivelog/1_7_825336279.dbf 记录 ID=2 时间戳 =825337732
完成 backup 于 05-9月 -13

启动 backup 于 05-9月 -13
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=/oradata/data/orcl/system01.dbf
输入数据文件 fno=00003 name=/oradata/data/orcl/sysaux01.dbf
输入数据文件 fno=00002 name=/oradata/data/orcl/undotbs01.dbf
输入数据文件 fno=00004 name=/oradata/data/orcl/users01.dbf
输入数据文件 fno=00005 name=/oradata/data/orcl/indx01.dbf
通道 c1: 正在启动段 1 于 05-9月 -13
通道 c1: 已完成段 1 于 05-9月 -13
段句柄=/home/oracle/yjs/02oj39s7_1_1 标记=TAG20130905T122854 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 05-9月 -13

启动 backup 于 05-9月 -13
当前日志已存档
通道 c1: 正在启动存档日志备份集
通道 c1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =8 记录 ID=3 时间戳=825337738
通道 c1: 正在启动段 1 于 05-9月 -13
通道 c1: 已完成段 1 于 05-9月 -13
段句柄=/home/oracle/yjs/03oj39sa_1_1 标记=TAG20130905T122858 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:02
通道 c1: 正在删除存档日志
存档日志文件名 =/oradata/archivelog/1_8_825336279.dbf 记录 ID=3 时间戳 =825337738
完成 backup 于 05-9月 -13

启动 Control File Autobackup 于 05-9月 -13
段 handle=/oradata/flash_recovery_area/ORCL/autobackup/2013_09_05/o1_mf_n_825337740_92j24dgx_.bkp comment=NONE
完成 Control File Autobackup 于 05-9月 -13
释放的通道: c1
RMAN> backup spfile;

[oracle@swdb ~]$ cd /oradata/data/orcl
[oracle@swdb orcl]$ ls
control01.ctl control02.ctl control03.ctl indx01.dbf redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf
[oracle@swdb orcl]$ mkdir aa
[oracle@swdb orcl]$ mv * aa/
[oracle@swdb orcl]$ ls
aa
[oracle@swdb orcl]$ mv aa/redo0* .
[oracle@swdb aa]$ cd $ORACLE_HOME/dbs
[oracle@swdb dbs]$ rm -f spfileorcl.ora
[oracle@swdb dbs]$ sqlplus "/as sysdba"
SQL> create table yjs (a number);
create table yjs (a number)
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 2 出现错误
ORA-01116: 打开数据库文件 1 时出错
ORA-01110: 数据文件 1: '/oradata/data/orcl/system01.dbf'
ORA-27041: 无法打开文件
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> exit
[oracle@swdb dbs]$vi initorcl.ora

db_name=orcl
sga_target=800m
compatible=10.2.0.5.0
db_recovery_file_dest='/opt/app/oracle/product/10.2.0/db_1/dbs/'
db_recovery_file_dest_size=2g

[oracle@swdb dbs]$ rman target /

恢复管理器: Release 10.2.0.5.0 - Production on 星期四 9月 5 15:38:22 2013

Copyright (c) 1982, 2007, Oracle. All rights reserved.

已连接到目标数据库 (未启动)

RMAN> startup nomount;

Oracle 实例已启动

系统全局区域总计 838860800 字节

Fixed Size 2099912 字节
Variable Size 213910840 字节
Database Buffers 612368384 字节
Redo Buffers 10481664 字节

RMAN> set DBID=1353117015

正在执行命令: SET DBID

RMAN> restore spfile from autobackup;

启动 restore 于 05-9月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=33 devtype=DISK

恢复区目标: /opt/app/oracle/product/10.2.0/db_1/dbs/
用于搜索的数据库名 (或数据库的唯一名称): ORCL
通道 ORA_DISK_1: 在恢复区域中未找到自动备份
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20130905
通道 ORA_DISK_1: 已找到的自动备份: c-1353117015-20130905-05
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 05-9月 -13

RMAN> startup force nomount;

已连接到目标数据库 (未启动)
Oracle 实例已启动

系统全局区域总计 838860800 字节

Fixed Size 2099912 字节
Variable Size 213910840 字节
Database Buffers 612368384 字节
Redo Buffers 10481664 字节

RMAN> restore controlfile from autobackup;

启动 restore 于 05-9月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=1638 devtype=DISK

恢复区目标: /oradata/flash_recovery_area
用于搜索的数据库名 (或数据库的唯一名称): ORCL
通道 ORA_DISK_1: 在恢复区域中未找到自动备份
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20130905
通道 ORA_DISK_1: 已找到的自动备份: c-1353117015-20130905-05
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
输出文件名=/oradata/data/orcl/control01.ctl
输出文件名=/oradata/data/orcl/control02.ctl
输出文件名=/oradata/data/orcl/control03.ctl
完成 restore 于 05-9月 -13

RMAN> alter database mount;

数据库已装载
释放的通道: ORA_DISK_1

RMAN> run
2> restore database;
3> recover database;

启动 restore 于 05-9月 -13
启动 implicit crosscheck backup 于 05-9月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=1638 devtype=DISK
已交叉检验的 7 对象
完成 implicit crosscheck backup 于 05-9月 -13

启动 implicit crosscheck copy 于 05-9月 -13
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 05-9月 -13

搜索恢复区中的所有文件
正在编制文件目录...
目录编制完毕

已列入目录的文件的列表
=======================
文件名: /oradata/flash_recovery_area/ORCL/autobackup/2013_09_05/c-1353117015-20130905-01

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
正将数据文件00001还原到/oradata/data/orcl/system01.dbf
正将数据文件00002还原到/oradata/data/orcl/undotbs01.dbf
正将数据文件00003还原到/oradata/data/orcl/sysaux01.dbf
正将数据文件00004还原到/oradata/data/orcl/users01.dbf
正将数据文件00005还原到/oradata/data/orcl/indx01.dbf
通道 ORA_DISK_1: 正在读取备份片段 /home/oracle/yjs/0eoj3kri_1_1
通道 ORA_DISK_1: 已还原备份片段 1
段句柄 = /home/oracle/yjs/0eoj3kri_1_1 标记 = TAG20130905T153618
通道 ORA_DISK_1: 还原完成, 用时: 00:00:16
完成 restore 于 05-9月 -13

启动 recover 于 05-9月 -13
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 14 已作为文件 /oradata/data/orcl/redo02.log 存在于磁盘上
存档日志线程 1 序列 15 已作为文件 /oradata/data/orcl/redo03.log 存在于磁盘上
存档日志线程 1 序列 16 已作为文件 /oradata/data/orcl/redo01.log 存在于磁盘上
存档日志文件名 =/oradata/data/orcl/redo02.log 线程 =1 序列 =14
存档日志文件名 =/oradata/data/orcl/redo03.log 线程 =1 序列 =15
存档日志文件名 =/oradata/data/orcl/redo01.log 线程 =1 序列 =16
介质恢复完成, 用时: 00:00:01
完成 recover 于 05-9月 -13

RMAN>

RMAN>

RMAN> alter database open resetlogs;

数据库已打开
参考技术A 第一步在任意一种文本编辑器里做,但你的内容是不全的,你没写control_files参数(不写会恢复到默认位置)
还有:如果你是在源库上恢复,有可能在%ORACLE_HOME%\database\里有个spfileorcl.ora文件,它的优先级比你这个init要高,会先用spfile文件

你把你每一步执行一下,把完整的输入和输出都贴全,再帮你分析
参考技术B Oracle DBA神器:PRM-DUL灾难恢复工具可以直接从这种受损的Oracle数据库中将数据拯救出来。
当你的数据库因为ORA-00600/ORA-07445或其他ORA-报错,或丢失关键的system表空间数据文件,或ASM diskgroup损坏时均可以考虑采用PRM-DUL来做恢复。PRM-DUL采用独创的DataBridge恢复技术,直接从数据文件中抽取数据后可以像DBLINK那样直接插入到新建数据库中,而无需数据落地成为DMP文件占用空间。

用EXPDP如何设置自动备份了,请大家帮忙! 是用ORACLE R12. 第一次发贴,不是很会写,在线等... 那位大侠帮忙

参考技术A 写好expdp的备份语句,利用自动作业来实现。追问

自动任务会做,EXPDP的命令格式如何写,我们经理的要求是每天备份一次,删除7天前的数据备份.

以上是关于ORACLE备份恢复问题,请帮忙解析的主要内容,如果未能解决你的问题,请参考以下文章

「oracle备份恢复」oracle数据库备份恢复之逻辑备份与恢复

ORACLE数据库数据的备份与恢复

oracle 在linux上,如何使用oud工具恢复truncate 表中的记录? 超急!请帮帮忙

NBU Oracle备份恢复配置手册

如何Oracle 数据库备份与恢复

oracle rman备份与恢复 全量备份、增量备份