设为首页 收藏本站
查看: 617|回复: 0

[经验分享] oracle 11.2 控制文件还原

[复制链接]

尚未签到

发表于 2018-9-15 07:43:06 | 显示全部楼层 |阅读模式
******************************************  
1.控制文件备份分类
  
******************************************
  
通常分为:
  
1)在线镜像备份
  
2)结构备份
  
3)历史备份
  
恢复时优先考虑镜像备份.
  
除了镜像备份外其它备份恢复主要按照下面的步骤:
  
步骤1:从备份中还原控制文件
  
步骤2:利用重做日志介质恢复数据库
  
步骤3:重设日志打开数据库
  
利用resetlogs命令打开数据库的原因是recover命令只能修复控制文件中的
  
数据库物理结构信息无法修改控制文件中的当前重做日志的序列号等信息,
  
当你recover命令完成后,控制文件中当前日志序列号还是备份时的序列号,
  
国语陈旧.
  
******************************************
  
2.recover database几种区别
  
******************************************
  
第一类:SQL>recover database;
  
该命令用来对所有数据文件进行恢复,并且只能使用保存
  
在文件系统上的归档日志和在线日志。使用该命令的前提
  
是控制文件不能是还原或重建得来的,即控制文件必须
  
是在线的或损坏镜像还原的.
  
第二类:SQL>recover database using backup controfile;
  
该命令用来对所有数据文件以及控制文件进行恢复,并且只能使用保存
  
在文件系统上的归档日志和在线日志。
  
第三类:RMAN>recover database;
  
该命令用来对所有数据文件以及控制文件进行恢复,并且可以使用
  
增量备份、备份中的和文件系统上的归档日志以及文件系统上的在线日志.
  
******************************************
  
3.利用在线镜像恢复
  
******************************************
  
/***
  
基本步骤:
  
1)startup nomount
  
2)查看日志了解控制文件损坏情况
  
3)利用系统命令拷贝或手动拷贝将损坏的控制文件替换
  
4)alter database mount
  
5)alter database open
  
*****/
  
一、控制文件损坏的恢复(一个文件)
  
损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,
  
而且所有的控制文件都互为镜像,只要拷贝一个好的控制文件替换坏的控制文件就可以了。
  
--方法1:使用spfile多路复用
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
control_files                        string      E:\APP\ADMINISTRATOR\ORADATA\O
  
RCL\CONTROL01.CTL, E:\APP\ADMI
  
NISTRATOR\FLASH_RECOVERY_AREA\
  
ORCL\CONTROL02.CTL
  
SQL> shutdown immediate
  
数据库已经关闭。
  
已经卸载数据库。
  
ORACLE 例程已经关闭。
  
host del E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL
  
SQL> startup
  
ORACLE 例程已经启动。
  
Total System Global Area  599785472 bytes

  
Fixed>
  
Variable>  
Database Buffers          423624704 bytes
  
Redo Buffers                2940928 bytes
  
ORA-00205: ?????????, ??????, ???????
  
SQL> shutdown immediate;
  
ORA-01507: ??????
  
ORACLE 例程已经关闭。
  
SQL> host copy E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL
  
已复制         1 个文件。
  
SQL> startup
  
ORACLE 例程已经启动。
  
Total System Global Area  599785472 bytes

  
Fixed>
  
Variable>  
Database Buffers          423624704 bytes
  
Redo Buffers                2940928 bytes
  
数据库装载完毕。
  
数据库已经打开。
  
SQL> show parameter control_files;
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
control_files                        string      E:\APP\ADMINISTRATOR\ORADATA\O
  
RCL\CONTROL01.CTL, E:\APP\ADMI
  
NISTRATOR\FLASH_RECOVERY_AREA\
  
ORCL\CONTROL02.CTL
  
--方法2: 通过初始化文件修改设置多路控制文件复制
  
1)直接修改服务器参数文件.
  
create pfile='e:\initorcl.ora' from spfile;
  
2_编辑修改e:\initorcl.ora文件.
  
修改control_files部分,将丢失的控制文件删除.如:
  
*.control_files='E:\app\Administrator\oradata\orcl\control01.ctl',
  
'E:\app\Administrator\flash_recovery_area\orcl\control02.ctl'
  
修改为:
  
*.control_files='E:\app\Administrator\oradata\orcl\control01.ctl'
  
3)启动
  
startup pfile='e:\initorcl.ora';
  
说明:
  
1、损失单个控制文件是比较简单的,因为数据库中所有的控制文件都是镜像的,只需要简
  
单的拷贝一个好的就可以了
  
2、建议镜像控制文件在不同的磁盘上
  
3、建议多做控制文件的备份,长期保留一份由alter database backup control file
  
to trace产生的控制文件的文本备份
  
******************************************
  
4.利用手动备份还原
  
******************************************
  
/***基本步骤:
  
1)startup nomount
  
2)restore controlfile from autobackup;
  
3)alter database mount
  
4)recover database命令恢复数据库
  
5)alter database open resetlogs
  
*****/
  
案例演示:
  
--(1).利用手动备份控制文件和参数文件
  
run {
  
configure controlfile autobackup on;
  
configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F';
  
allocate channel c1 device type disk format  'E:\backup\data\bak_%u';
  
allocate channel c2 device type disk format 'E:\backup\data\bak_%u';
  
backup tablespace users ;
  
release channel c1;
  
release channel c2;
  
}
  
allocate channel for maintenance device type disk;
  
旧的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
  
新的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP ON;
  
已成功存储新的 RMAN 配置参数
  
旧的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\bak_%F';
  
新的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\controlfile\bak_%F';
  
已成功存储新的 RMAN 配置参数
  
释放的通道: ORA_DISK_1
  
分配的通道: c1
  
通道 c1: SID=202 设备类型=DISK
  
分配的通道: c2
  
通道 c2: SID=201 设备类型=DISK
  
启动 backup 于 2013-07-23 14:52:39
  
通道 c1: 正在启动全部数据文件备份集
  
通道 c1: 正在指定备份集内的数据文件
  
输入数据文件: 文件号=00004 名称=F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
通道 c1: 正在启动段 1 于 2013-07-23 14:52:41
  
通道 c1: 已完成段 1 于 2013-07-23 14:52:42
  
段句柄=E:\BACKUP\DATA\BAK_89OFFHPP 标记=TAG20130723T145241 注释=NONE
  
通道 c1: 备份集已完成, 经过时间:00:00:01
  
完成 backup 于 2013-07-23 14:52:42
  
启动 Control File and SPFILE Autobackup 于 2013-07-23 14:52:42
  
段 handle=E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-08 comment=NONE
  
完成 Control File and SPFILE Autobackup 于 2013-07-23 14:52:45
  
释放的通道: c1
  
释放的通道: c2
  
RMAN> allocate channel for maintenance device type disk;
  
分配的通道: ORA_MAINT_DISK_6
  
通道 ORA_MAINT_DISK_6: SID=202 设备类型=DISK
  
--(2).模拟删除控制文件
  
SQL> show parameters control_files;
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
control_files                        string      F:\APP\ADMINISTRATOR\ORADATA\O
  
RCL\CONTROL01.CTL, F:\APP\ADMI
  
NISTRATOR\ORADATA\ORCL\CONTROL
  
02.CTL, F:\APP\ADMINISTRATOR\O
  
RADATA\ORCL\CONTROL03.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
--(3)启动数据库,查看错误日志
  
SQL> startup
  
ORACLE 例程已经启动。
  
Total System Global Area 2538741760 bytes

  
Fixed>
  
Variable>  
Database Buffers          889192448 bytes
  
Redo Buffers               19898368 bytes
  
ORA-00205: ?????????, ??????, ???????
  
F:\app\Administrator\diag\rdbms\orcl\orcl\trace
  
Tue Jul 23 14:58:29 2013
  
ALTER DATABASE   MOUNT
  
ORA-00210: cannot open the specified control file
  
ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL'
  
ORA-27041: unable to open file
  
OSD-04002: 无法打开文件
  
O/S-Error: (OS 2) 系统找不到指定的文件。
  
ORA-00210: cannot open the specified control file
  
ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL'
  
ORA-27041: unable to open file
  
OSD-04002: 无法打开文件
  
O/S-Error: (OS 2) 系统找不到指定的文件。
  
ORA-00210: cannot open the specified control file
  
ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL'
  
ORA-27041: unable to open file
  
OSD-04002: 无法打开文件
  
O/S-Error: (OS 2) 系统找不到指定的文件。

  
ORA-205 signalled during:>  
Tue Jul 23 14:58:29 2013
  
Checker run found 3 new persistent data failures
  
---(4).利用手动备份恢复
  
C:\>rman target /

  
恢复管理器:>  
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
  
已连接到目标数据库: ORCL (未装载)
  
/****************************常见错误***************************************
  
--由于控制文件丢失,未装载数据库.所以不能查询备份情况
  
RMAN> list backup of controlfile;
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败
  
ORA-01507: 未装载数据库
  
---备份为备份到快速恢复区,所以不能找到备份
  
RMAN> restore controlfile from autobackup;
  
启动 restore 于 2013-07-23 15:03:40
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
恢复区目标: F:\arch
  
用于搜索的数据库名 (或数据库的唯一名称): ORCL
  
通道 ORA_DISK_1: 在恢复区中没有找到 AUTOBACKUP
  
由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: restore 命令 (在 07/23/2013 15:03:41 上) 失败
  
RMAN-06172: 没有找到 AUTOBACKUP, 或者指定的句柄不是有效副本或片段
  
**********************************************************************/
  
RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-08';
  
启动 restore 于 2013-07-23 15:06:07
  
使用通道 ORA_DISK_1
  
通道 ORA_DISK_1: 正在还原控制文件
  
通道 ORA_DISK_1: 还原完成, 用时: 00:00:02
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
完成 restore 于 2013-07-23 15:06:09

  
RMAN>>  
数据库已装载
  
释放的通道: ORA_DISK_1
  
RMAN> recover database;
  
启动 recover 于 2013-07-23 15:11:35
  
启动 implicit crosscheck backup 于 2013-07-23 15:11:35
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
已交叉检验的 1 对象
  
完成 implicit crosscheck backup 于 2013-07-23 15:11:37
  
启动 implicit crosscheck copy 于 2013-07-23 15:11:37
  
使用通道 ORA_DISK_1
  
完成 implicit crosscheck copy 于 2013-07-23 15:11:37
  
搜索恢复区中的所有文件
  
正在编制文件目录...
  
没有为文件编制目录
  
使用通道 ORA_DISK_1
  
正在开始介质的恢复
  
线程 1 序列 1055 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上
  
归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 线程=1 序列=1055
  
介质恢复完成, 用时: 00:00:02
  
完成 recover 于 2013-07-23 15:11:53

  
RMAN>>  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     1
  
下一个存档日志序列   1
  
当前日志序列           1
  
******************************************
  
5.利用自动备份还原
  
******************************************
  
/***基本步骤:
  
1)startup nomount
  
2)restore controlfile from autobackup;
  
3)alter database mount
  
4)recover database命令恢复数据库
  
5)alter database open resetlogs
  
*****/
  
案例演示:
  
--(1).利用自动备份控制文件和参数文件
  
run {
  
configure controlfile autobackup on;
  
configure CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE  type disk clear;
  
allocate channel c1 device type disk format  'E:\backup\data\bak_%u';
  
allocate channel c2 device type disk format 'E:\backup\data\bak_%u';
  
backup tablespace users ;
  
release channel c1;
  
release channel c2;
  
}
  
allocate channel for maintenance device type disk;
  
旧的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP ON;
  
新的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP ON;
  
已成功存储新的 RMAN 配置参数
  
RMAN 配置参数已成功重置为默认值
  
释放的通道: ORA_DISK_1
  
分配的通道: c1
  
通道 c1: SID=129 设备类型=DISK
  
分配的通道: c2
  
通道 c2: SID=198 设备类型=DISK
  
启动 backup 于 2013-07-23 15:54:44
  
通道 c1: 正在启动全部数据文件备份集
  
通道 c1: 正在指定备份集内的数据文件
  
输入数据文件: 文件号=00004 名称=F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
通道 c1: 正在启动段 1 于 2013-07-23 15:54:44
  
通道 c1: 已完成段 1 于 2013-07-23 15:54:45
  
段句柄=E:\BACKUP\DATA\BAK_8DOFFLE4 标记=TAG20130723T155444 注释=NONE
  
通道 c1: 备份集已完成, 经过时间:00:00:01
  
完成 backup 于 2013-07-23 15:54:45
  
启动 Control File and SPFILE Autobackup 于 2013-07-23 15:54:45
  
段 handle=F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP   --备份位置
  
comment=NONE
  
完成 Control File and SPFILE Autobackup 于 2013-07-23 15:54:49
  
释放的通道: c1
  
释放的通道: c2
  
RMAN> allocate channel for maintenance device type disk;
  
分配的通道: ORA_MAINT_DISK_1
  
通道 ORA_MAINT_DISK_1: SID=129 设备类型=DISK
  
RMAN> SHOW CONTROLFILE AUTOBACKUP FORMAT;  --查看autobackup位置
  
db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为:
  
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
  
--(2).模拟删除控制文件
  
shutdown  immediate;
  
SQL> show parameters control_files;
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
control_files                        string      F:\APP\ADMINISTRATOR\ORADATA\O
  
RCL\CONTROL01.CTL, F:\APP\ADMI
  
NISTRATOR\ORADATA\ORCL\CONTROL
  
02.CTL, F:\APP\ADMINISTRATOR\O
  
RADATA\ORCL\CONTROL03.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
--(3)启动数据库,查看错误日志
  
SQL> startup
  
ORACLE 例程已经启动。
  
Total System Global Area 2538741760 bytes

  
Fixed>
  
Variable>  
Database Buffers          889192448 bytes
  
Redo Buffers               19898368 bytes
  
ORA-00205: ?????????, ??????, ???????
  
F:\app\Administrator\diag\rdbms\orcl\orcl\trace
  
Tue Jul 23 14:58:29 2013
  
ALTER DATABASE   MOUNT
  
ORA-00210: cannot open the specified control file
  
ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL'
  
ORA-27041: unable to open file
  
OSD-04002: 无法打开文件
  
O/S-Error: (OS 2) 系统找不到指定的文件。
  
ORA-00210: cannot open the specified control file
  
ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL'
  
ORA-27041: unable to open file
  
OSD-04002: 无法打开文件
  
O/S-Error: (OS 2) 系统找不到指定的文件。
  
ORA-00210: cannot open the specified control file
  
ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL'
  
ORA-27041: unable to open file
  
OSD-04002: 无法打开文件
  
O/S-Error: (OS 2) 系统找不到指定的文件。

  
ORA-205 signalled during:>  
Tue Jul 23 14:58:29 2013
  
Checker run found 3 new persistent data failures
  
---(4).利用自动备份恢复
  
C:\>rman target /

  
恢复管理器:>  
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
  
已连接到目标数据库: ORCL (未装载)
  
/****************************常见错误***************************************
  
--由于控制文件丢失,未装载数据库.所以不能查询备份情况
  
RMAN> list backup of controlfile;
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败
  
ORA-01507: 未装载数据库
  
**********************************************************************/
  
RMAN> restore controlfile from autobackup;
  
启动 restore 于 2013-07-23 16:23:46
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
恢复区目标: F:\arch
  
用于搜索的数据库名 (或数据库的唯一名称): ORCL
  
通道 ORA_DISK_1: 在恢复区中找到 AUTOBACKUP F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP
  
由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP
  
通道 ORA_DISK_1: 正在从 AUTOBACKUP F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP 还原控制文件
  
通道 ORA_DISK_1: 从 AUTOBACKUP 还原控制文件已完成
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
完成 restore 于 2013-07-23 16:23:47

  
RMAN>>  
数据库已装载
  
释放的通道: ORA_DISK_1
  
RMAN> recover database;
  
启动 recover 于 2013-07-23 16:25:39
  
启动 implicit crosscheck backup 于 2013-07-23 16:25:39
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
已交叉检验的 1 对象
  
完成 implicit crosscheck backup 于 2013-07-23 16:25:40
  
启动 implicit crosscheck copy 于 2013-07-23 16:25:40
  
使用通道 ORA_DISK_1
  
完成 implicit crosscheck copy 于 2013-07-23 16:25:41
  
搜索恢复区中的所有文件
  
正在编制文件目录...
  
目录编制完毕
  
已列入目录的文件的列表
  
=======================
  
文件名: F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP
  
使用通道 ORA_DISK_1
  
正在开始介质的恢复
  
线程 1 序列 1 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 存在于磁盘上
  
线程 1 序列 2 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上
  
归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 线程=1 序列=1
  
归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 线程=1 序列=2
  
介质恢复完成, 用时: 00:00:03
  
完成 recover 于 2013-07-23 16:25:58

  
RMAN>>  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     1
  
下一个存档日志序列   1
  
当前日志序列           1
  
******************************************
  
6.利用历史备份还原
  
******************************************
  
-----6.1自动修复不一致
  
/********基本步骤:
  
1)startup nomount
  
2)restore controlfile from '';
  
3)alter database mount
  
4)recover database命令恢复数据库
  
5)alter database open resetlogs
  
*********/
  
案例演示:
  
--(1).利用手动备份控制文件和参数文件
  
run {
  
configure controlfile autobackup on;
  
configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F';
  
allocate channel c1 device type disk format  'E:\backup\data\bak_%u';
  
allocate channel c2 device type disk format 'E:\backup\data\bak_%u';
  
backup tablespace users ;
  
release channel c1;
  
release channel c2;
  
}
  
allocate channel for maintenance device type disk;
  
configure controlfile autobackup off;
  
--(2).新建一个表空间
  
SQL> select file_name from dba_data_files;
  
FILE_NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF
  
create tablespace test
  
datafile 'F:\app\administrator\oradata\orcl\test.dbf'
  
size 100m
  
autoextend on
  
next 10m maxsize unlimited
  
extent management local autoallocate
  
segment   space management auto;
  
SQL>  select file_name from dba_data_files;
  
FILE_NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF   --已经存在test
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF
  
--(3).模拟删除控制文件
  
SQL> show parameters control_files;
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
control_files                        string      F:\APP\ADMINISTRATOR\ORADATA\O
  
RCL\CONTROL01.CTL, F:\APP\ADMI
  
NISTRATOR\ORADATA\ORCL\CONTROL
  
02.CTL, F:\APP\ADMINISTRATOR\O
  
RADATA\ORCL\CONTROL03.CTL
  
shutdown immediate;
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
--(3)启动数据库,查看错误日志
  
SQL> startup
  
ORACLE 例程已经启动。
  
Total System Global Area 2538741760 bytes

  
Fixed>
  
Variable>  
Database Buffers          889192448 bytes
  
Redo Buffers               19898368 bytes
  
ORA-00205: ?????????, ??????, ???????
  
---(4).利用手动备份恢复
  
C:\>rman target /

  
恢复管理器:>  
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
  
已连接到目标数据库: ORCL (未装载)
  
/****************************常见错误***************************************
  
--由于控制文件丢失,未装载数据库.所以不能查询备份情况
  
RMAN> list backup of controlfile;
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败
  
ORA-01507: 未装载数据库
  
---备份为备份到快速恢复区,所以不能找到备份
  
RMAN> restore controlfile from autobackup;
  
启动 restore 于 2013-07-23 15:03:40
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
恢复区目标: F:\arch
  
用于搜索的数据库名 (或数据库的唯一名称): ORCL
  
通道 ORA_DISK_1: 在恢复区中没有找到 AUTOBACKUP
  
由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: restore 命令 (在 07/23/2013 15:03:41 上) 失败
  
RMAN-06172: 没有找到 AUTOBACKUP, 或者指定的句柄不是有效副本或片段
  
**********************************************************************/
  
RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-0C';
  
启动 restore 于 2013-07-23 17:13:57
  
使用目标数据库控制文件替代恢复目录
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
通道 ORA_DISK_1: 正在还原控制文件
  
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
完成 restore 于 2013-07-23 17:13:59

  
RMAN>>  
SQL> select name from v$datafile;
  
NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF
  
---还原的控制文件中没有新建的表空间TEST.
  
RMAN> recover database;
  
启动 recover 于 2013-07-23 17:16:22
  
启动 implicit crosscheck backup 于 2013-07-23 17:16:22
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
已交叉检验的 1 对象
  
完成 implicit crosscheck backup 于 2013-07-23 17:16:24
  
启动 implicit crosscheck copy 于 2013-07-23 17:16:24
  
使用通道 ORA_DISK_1
  
完成 implicit crosscheck copy 于 2013-07-23 17:16:24
  
搜索恢复区中的所有文件
  
正在编制文件目录...
  
目录编制完毕
  
已列入目录的文件的列表
  
=======================
  
文件名: F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP
  
使用通道 ORA_DISK_1
  
正在开始介质的恢复
  
线程 1 序列 1 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 存在于磁盘上
  
归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 线程=1 序列=1
  
创建数据文件, 文件号 = 5 名称 = F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF   --新建了文件TEST
  
归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 线程=1 序列=1
  
介质恢复完成, 用时: 00:00:03
  
完成 recover 于 2013-07-23 17:16:36
  
SQL> select name from v$datafile;
  
NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF   --TEST出现了
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF

  
RMAN>>  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     1
  
下一个存档日志序列   1
  
当前日志序列           1

  
SQL>>  
系统已更改。
  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     1
  
下一个存档日志序列   2
  
当前日志序列           2
  
-----6.2手动修复不一致
  
/********基本步骤:
  
1)startup nomount
  
2)restore controlfile from '';
  
3)alter database mount
  
4)recover database命令恢复数据库
  
5)alter database open resetlogs
  
*********/
  
案例演示:
  
--(1).利用手动备份控制文件和参数文件
  
run {
  
configure controlfile autobackup on;
  
configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F';
  
allocate channel c1 device type disk format  'E:\backup\data\bak_%u';
  
allocate channel c2 device type disk format 'E:\backup\data\bak_%u';
  
backup tablespace users ;
  
release channel c1;
  
release channel c2;
  
}
  
allocate channel for maintenance device type disk;
  
旧的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP ON;
  
新的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP ON;
  
已成功存储新的 RMAN 配置参数
  
旧的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\controlfile\bak_%F';
  
新的 RMAN 配置参数:
  
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\controlfile\bak_%F';
  
已成功存储新的 RMAN 配置参数
  
释放的通道: ORA_DISK_1
  
分配的通道: c1
  
通道 c1: SID=129 设备类型=DISK
  
分配的通道: c2
  
通道 c2: SID=197 设备类型=DISK
  
启动 backup 于 2013-07-23 17:24:49
  
通道 c1: 正在启动全部数据文件备份集
  
通道 c1: 正在指定备份集内的数据文件
  
输入数据文件: 文件号=00004 名称=F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
通道 c1: 正在启动段 1 于 2013-07-23 17:24:49
  
通道 c1: 已完成段 1 于 2013-07-23 17:24:50
  
段句柄=E:\BACKUP\DATA\BAK_8LOFFQN1 标记=TAG20130723T172449 注释=NONE
  
通道 c1: 备份集已完成, 经过时间:00:00:01
  
完成 backup 于 2013-07-23 17:24:50
  
启动 Control File and SPFILE Autobackup 于 2013-07-23 17:24:50
  
段 handle=E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-0E comment=NONE
  
完成 Control File and SPFILE Autobackup 于 2013-07-23 17:24:54
  
释放的通道: c1
  
释放的通道: c2
  
configure controlfile autobackup off;
  
--(2).删除一个表空间
  
SQL>  select file_name from dba_data_files;
  
FILE_NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF
  
drop tablespace test including contents and datafiles;
  
SQL> select file_name from dba_data_files;
  
FILE_NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF
  
--(3).模拟删除控制文件
  
SQL> show parameters control_files;
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
control_files                        string      F:\APP\ADMINISTRATOR\ORADATA\O
  
RCL\CONTROL01.CTL, F:\APP\ADMI
  
NISTRATOR\ORADATA\ORCL\CONTROL
  
02.CTL, F:\APP\ADMINISTRATOR\O
  
RADATA\ORCL\CONTROL03.CTL
  
shutdown immediate;
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
--(3)启动数据库,查看错误日志
  
SQL> startup
  
ORACLE 例程已经启动。
  
Total System Global Area 2538741760 bytes

  
Fixed>
  
Variable>  
Database Buffers          889192448 bytes
  
Redo Buffers               19898368 bytes
  
ORA-00205: ?????????, ??????, ???????
  
---(4).利用手动备份恢复
  
C:\>rman target /

  
恢复管理器:>  
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
  
已连接到目标数据库: ORCL (未装载)
  
/****************************常见错误***************************************
  
--由于控制文件丢失,未装载数据库.所以不能查询备份情况
  
RMAN> list backup of controlfile;
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败
  
ORA-01507: 未装载数据库
  
---备份为备份到快速恢复区,所以不能找到备份
  
RMAN> restore controlfile from autobackup;
  
启动 restore 于 2013-07-23 15:03:40
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
恢复区目标: F:\arch
  
用于搜索的数据库名 (或数据库的唯一名称): ORCL
  
通道 ORA_DISK_1: 在恢复区中没有找到 AUTOBACKUP
  
由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: restore 命令 (在 07/23/2013 15:03:41 上) 失败
  
RMAN-06172: 没有找到 AUTOBACKUP, 或者指定的句柄不是有效副本或片段
  
**********************************************************************/
  
RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-0E';
  
启动 restore 于 2013-07-23 17:31:28
  
使用目标数据库控制文件替代恢复目录
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
通道 ORA_DISK_1: 正在还原控制文件
  
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
完成 restore 于 2013-07-23 17:31:30

  
RMAN>>  
SQL> select name from v$datafile;
  
NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF
  
---还原的控制文件中存在新建的表空间TEST.
  
RMAN> recover database skip tablespace "TEST";
  
启动 recover 于 2013-07-23 17:36:32
  
使用通道 ORA_DISK_1

  
执行:>  
正在开始介质的恢复
  
线程 1 序列 2 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上
  
归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 线程=1 序列=2
  
介质恢复完成, 用时: 00:00:01
  
完成 recover 于 2013-07-23 17:36:39
  
SQL> select name from v$datafile;
  
NAME
  
--------------------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF
  
---表空间TEST消失了.

  
RMAN>>  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     1
  
下一个存档日志序列   1
  
当前日志序列           1

  
SQL>>  
系统已更改。
  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     1
  
下一个存档日志序列   2
  
当前日志序列           2
  
******************************************
  
7.缺失归档日志
  
******************************************
  
----1.数据库开启归档
  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     3
  
下一个存档日志序列   5
  
当前日志序列           5
  
----2.新建测试表
  
create tablespace test
  
datafile 'F:\app\administrator\oradata\orcl\test.dbf'
  
size 100m
  
autoextend on
  
next 10m maxsize unlimited
  
extent management local autoallocate
  
segment   space management auto;
  
select file_name from dba_data_files;
  
create table t1
  
(
  
sid number not null primary key,
  
sname varchar2(20)
  
)tablespace test;
  
insert into t1 values(101,'A');
  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     4
  
下一个存档日志序列   6
  
当前日志序列           6

  
SQL>>  
系统已更改。
  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     5
  
下一个存档日志序列   7
  
当前日志序列           7
  
set linesize 300
  
col name for a60
  
select  name,sequence#,archived,status
  
from v$archived_log where status='A' and archived='YES' ;
  
NAME                                                          SEQUENCE# ARC S
  
------------------------------------------------------------ ---------- --- -
  
F:\ARCH\ARC0000000006_0821554663.0001                                 6 YES A
  
----3.利用手动备份控制文件和参数文件
  
run {
  
configure controlfile autobackup on;
  
configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F';
  
allocate channel c1 device type disk format  'E:\backup\data\bak_%u';
  
allocate channel c2 device type disk format 'E:\backup\data\bak_%u';
  
backup tablespace "TEST" ;
  
release channel c1;
  
release channel c2;
  
}
  
allocate channel for maintenance device type disk;
  
RMAN> list backup of controlfile;
  
备份集列表
  
===================
  
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
  
------- ---- -- ---------- ----------- ------------ -------------------
  
240     Full    10.14M     DISK        00:00:02     2013-07-24 11:16:17
  
BP 关键字: 245   状态: AVAILABLE  已压缩: NO  标记: TAG20130724T111615
  
段名:E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130724-01
  
包括的控制文件: Ckp SCN: 42235305     Ckp 时间: 2013-07-24 11:16:15
  
----4.插入数据并归档
  
SQL> select * from t1;
  
SID SNAME
  
---------- --------------------
  
101 A
  
insert into t1 values(102,'B');
  
SQL> commit;
  
提交完成。
  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     5
  
下一个存档日志序列   7
  
当前日志序列           7
  
alter system switch logfile;
  
SQL> archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     6
  
下一个存档日志序列   8
  
当前日志序列           8
  
set linesize 300
  
col name for a60
  
select  name,sequence#,archived,status
  
from v$archived_log where status='A' and archived='YES' ;
  
NAME                                                          SEQUENCE# ARC S
  
------------------------------------------------------------ ---------- --- -
  
F:\ARCH\ARC0000000006_0821554663.0001                                 6 YES A
  
F:\ARCH\ARC0000000007_0821554663.0001                                 7 YES A
  
insert into t1 values(103,'C');
  
commit;
  
alter system switch logfile;
  
insert into t1 values(104,'D');
  
commit;
  
alter system switch logfile;
  
insert into t1 values(105,'E');
  
commit;
  
alter system switch logfile;
  
archive log list;
  
数据库日志模式            存档模式
  
自动存档             启用
  
存档终点            f:\arch
  
最早的联机日志序列     9
  
下一个存档日志序列   11
  
当前日志序列           11
  
set linesize 300
  
col name for a60
  
select  name,sequence#,archived,status
  
from v$archived_log where status='A' and archived='YES' ;
  
NAME                                                          SEQUENCE# ARC S
  
------------------------------------------------------------ ---------- --- -
  
F:\ARCH\ARC0000000006_0821554663.0001                                 6 YES A
  
F:\ARCH\ARC0000000007_0821554663.0001                                 7 YES A
  
F:\ARCH\ARC0000000008_0821554663.0001                                 8 YES A
  
F:\ARCH\ARC0000000009_0821554663.0001                                 9 YES A
  
F:\ARCH\ARC0000000010_0821554663.0001                                10 YES A
  
----5.模拟删除控制文件
  
SQL> show parameters control_files;
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
control_files                        string      F:\APP\ADMINISTRATOR\ORADATA\O
  
RCL\CONTROL01.CTL, F:\APP\ADMI
  
NISTRATOR\ORADATA\ORCL\CONTROL
  
02.CTL, F:\APP\ADMINISTRATOR\O
  
RADATA\ORCL\CONTROL03.CTL
  
shutdown immediate;
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
----6.启动数据库,查看错误日志
  
SQL> startup
  
ORACLE 例程已经启动。
  
Total System Global Area 2538741760 bytes

  
Fixed>
  
Variable>  
Database Buffers          889192448 bytes
  
Redo Buffers               19898368 bytes
  
ORA-00205: ?????????, ??????, ???????
  
-----7.利用手动备份恢复
  
--7.1 恢复控制文件
  
C:\>rman target /

  
恢复管理器:>  
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
  
已连接到目标数据库: ORCL (未装载)
  
RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130724-01';
  
启动 restore 于 2013-07-24 12:36:31
  
使用目标数据库控制文件替代恢复目录
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
通道 ORA_DISK_1: 正在还原控制文件
  
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
  
输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
  
完成 restore 于 2013-07-24 12:36:33
  
--7.2 装载数据库

  
RMAN>>  
--7.3 恢复数据库
  
-7.3.1 recover database
  
RMAN> recover database;
  
启动 recover 于 2013-07-24 12:37:50
  
启动 implicit crosscheck backup 于 2013-07-24 12:37:50
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
已交叉检验的 1 对象
  
完成 implicit crosscheck backup 于 2013-07-24 12:37:51
  
启动 implicit crosscheck copy 于 2013-07-24 12:37:51
  
使用通道 ORA_DISK_1
  
完成 implicit crosscheck copy 于 2013-07-24 12:37:51
  
搜索恢复区中的所有文件
  
正在编制文件目录...
  
目录编制完毕
  
已列入目录的文件的列表
  
=======================
  
文件名: F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP
  
使用通道 ORA_DISK_1
  
正在开始介质的恢复
  
线程 1 序列 9 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG 存在于磁盘上
  
线程 1 序列 10 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 存在于磁盘上
  
线程 1 序列 11 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上
  
归档日志文件名=F:\ARCH\ARC0000000007_0821554663.0001 线程=1 序列=7
  
无法找到归档日志
  
归档日志线程=1 序列=8
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: recover 命令 (在 07/24/2013 12:37:58 上) 失败
  
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 8 的归档日志以及起始 SCN 42235549
  
--提示需要8的归档日志
  
SQL> select sequence# from v$log where status='CURRENT';
  
SEQUENCE#
  
----------
  
7   --当前还原的控制文件中看到的是日志7
  
/************
  
提示需要8的归档日志,当前还原的控制文件中看到的是日志7,
  
只要让oracle放弃归档日志8,那么恢复就可以继续进行.
  
************/
  
--7.3.2备份控制文件到trace
  
alter database backup controlfile to trace;
  
select value from v$diag_info
  
where name='Default Trace File';
  
VALUE
  
---------------------------------------------------------------------
  
F:\APP\ADMINISTRATOR\diag\rdbms\orcl\orcl\trace\orcl_ora_757704.trc
  
查看备份到追踪文件的控制文件
  
show parameter user_dump_dest;
  
NAME                TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
user_dump_dest      string      F:\app\Administrator\diag\rdbms\orcl\orcl\trace
  
select a.spid from v$process a, v$session b
  
where a.addr=b.paddr and b.username='SYS';
  
---内容如下:
  
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
  
MAXLOGFILES 16
  
MAXLOGMEMBERS 3
  
MAXDATAFILES 100
  
MAXINSTANCES 8
  
MAXLOGHISTORY 584
  
LOGFILE

  
GROUP 1 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' >
  
GROUP 2 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' >
  
GROUP 3 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' >  
-- STANDBY LOGFILE
  
DATAFILE
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF'
  
CHARACTER SET ZHS16GBK
  
;
  
--7.3.3先关闭数据库
  
SQL> shutdown immediate;
  
ORA-01109: 数据库未打开
  
已经卸载数据库。
  
ORACLE 例程已经关闭。
  
--7.3.4启动数据库到nomount状态
  
SQL> startup  force nomount;
  
ORACLE 例程已经启动。
  
Total System Global Area 2538741760 bytes

  
Fixed>
  
Variable>  
Database Buffers          889192448 bytes
  
Redo Buffers               19898368 bytes
  
--7.3.5 新建控制文件
  
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
  
MAXLOGFILES 16
  
MAXLOGMEMBERS 3
  
MAXDATAFILES 100
  
MAXINSTANCES 8
  
MAXLOGHISTORY 584
  
LOGFILE

  
GROUP 1 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' >
  
GROUP 2 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' >
  
GROUP 3 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' >  
-- STANDBY LOGFILE
  
DATAFILE
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF',
  
'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF'
  
CHARACTER SET ZHS16GBK
  
;
  
SQL> select open_mode from v$database;
  
OPEN_MODE
  
--------------------
  
MOUNTED
  
---7.3.6 利用新建的控制文件recover database
  
RMAN>recover database;
  
启动 recover 于 2013-07-24 12:52:16
  
使用目标数据库控制文件替代恢复目录
  
分配的通道: ORA_DISK_1
  
通道 ORA_DISK_1: SID=129 设备类型=DISK
  
正在开始介质的恢复
  
无法找到归档日志
  
归档日志线程=1 序列=11
  
RMAN-00571: ===========================================================
  
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  
RMAN-00571: ===========================================================
  
RMAN-03002: recover 命令 (在 07/24/2013 12:52:20 上) 失败
  
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 11 的归档日志以及起始 SCN 42237323
  
SQL> select sequence#,status,group# from v$log;
  
SEQUENCE# STATUS               GROUP#
  
---------- ---------------- ----------
  
10 INACTIVE                  1
  
9 INACTIVE                  3
  
11 CURRENT                   2   --日志11在联机日志中
  

  
SQL>col member for a50
  
SQL>select * from v$logfile;
  
GROUP# STATUS  TYPE    MEMBER                                             IS_
  
---------- ------- ------- -------------------------------------------------- ---
  
2 STALE   ONLINE  F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG       NO --需要的日志
  
1 STALE   ONLINE  F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG       NO
  
3 STALE   ONLINE  F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG       NO
  
SQL> recover database using backup controlfile;
  
ORA-00279: ?? 42237323 (? 07/24/2013 11:50:11 ??) ???? 1 ????
  
ORA-00289: ??: F:\ARCH\ARC0000000011_0821554663.0001
  
ORA-00280: ?? 42237323 (???? 1) ??? #11 ?
  
指定日志: {=suggested | filename | AUTO | CANCEL}
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
  
F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
  
已应用的日志。
  
完成介质恢复。
  
--7.5打开数据库
  
alter database open resetlogs;
  
--7.6找回临时数据文件
  
alter tablespace temp add tempfile 'F:\app\Administrator\oradata\orcl\temp02.dbf'
  
reuse;
  
--7.7 catalog命令找回备份信息
  
RMAN> list backup;
  
使用目标数据库控制文件替代恢复目录
  
说明与资料档案库中的任何备份都不匹配
  
catalog start with 'E:\backup\';
  
搜索与样式 E:\backup\ 匹配的所有文件
  
数据库未知文件的列表
  
=====================================
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130723-08
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130723-0C
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130723-0E
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130724-01
  
文件名: E:\BACKUP\data\BAK_8QOFHPFU
  
是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes
  
正在编制文件目录...
  
目录编制完毕
  
已列入目录的文件的列表
  
=======================
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130723-08
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130723-0C
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130723-0E
  
文件名: E:\BACKUP\controlfile\BAK_C-1320546556-20130724-01
  
文件名: E:\BACKUP\data\BAK_8QOFHPFU
  
RMAN> list backup;
  
备份集列表
  
===================
  
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
  
------- ---- -- ---------- ----------- ------------ -------------------
  
1       Full    1.13M      DISK        00:00:00     2013-07-24 11:16:14
  
BP 关键字: 1   状态: AVAILABLE  已压缩: NO  标记: TAG20130724T111614
  
段名:E:\BACKUP\DATA\BAK_8QOFHPFU
  
备份集 1 中的数据文件列表
  
文件 LV 类型 Ckp SCN    Ckp 时间            名称
  
---- -- ---- ---------- ------------------- ----
  
5       Full 42235299   2013-07-24 11:16:14 F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-583097-1-1.html 上篇帖子: oracle 11.2控制文件备份 下篇帖子: ORACLE导入TXT文件数据的解决思路
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表