ITPub博客

首页 > 数据库 > 数据库开发技术 > 数据库备份与恢复测试 5

数据库备份与恢复测试 5

原创 数据库开发技术 作者:scoreking 时间:2006-02-15 18:26:07 0 删除 编辑
##############################################################################
# [1.13] 在resetlogs前的RMAN备份如何应用到resetlogs后的
##############################################################################




SQL> alter database open;

数据库已更改。

SQL> select count(*) from arch;
select count(*) from arch
*
ERROR 位于第 1 行:
ORA-00942: ???????


SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。


已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> /

系统已更改。

SQL> /

系统已更改。

SQL> /

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

-->>模拟一个resetlogs
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> recover database until cancel;
完成介质恢复。 -->>这里我们后面可以注意到
SQL> alter database open resetlogs;

数据库已更改。

SQL> select count(*),status from arch group by status;

COUNT(*) ST
---------- --
6166 no
98656 ok

SQL> insert into arch select 'af' from dba_objects;

已创建6166行。

SQL> alter system switch logfile;

系统已更改。

SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 C:oracleoradatatestdbarchive
最早的概要日志序列 1
下一个存档日志序列 2
当前日志序列 2
SQL> shutdown
ORA-01097: 无法在事务处理过程中关闭 - 首先提交或返回
SQL> commit;

提交完成。

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

-->>此时模拟删除了users01.dbf
我们没有resetlogs后的备份,想把resetlogs前备份的数据文件恢复数据库到resetlogs后的状态

关键步骤.还原resetlogs前备份的数据文件和控制文件,不包括在线日志(我们后面可以看到在线日志包括了SCN 69628 - 69459)
SQL> select resetlogs_change# - 1 from v$database;

RESETLOGS_CHANGE#-1
-------------------
68658

SQL> recover database using backup controlfile until change 69639;
ORA-00279: 更改 69257 (在 02/28/2005 11:08:18 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:ORACLEORADATATESTDBARCHIVE1_3.DBF
ORA-00280: 更改 69257 对于线程 1 是按序列 # 3 进行的


指定日志: {=suggested | filename | AUTO | CANCEL}

ORA-00279: 更改 69582 (在 03/02/2005 10:28:34 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:ORACLEORADATATESTDBARCHIVE1_4.DBF
ORA-00280: 更改 69582 对于线程 1 是按序列 # 4 进行的
ORA-00278: 此恢复不再需要日志文件 'C:ORACLEORADATATESTDBARCHIVE1_3.DBF'


指定日志: {=suggested | filename | AUTO | CANCEL}

ORA-00279: 更改 69628 (在 03/02/2005 10:28:35 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:ORACLEORADATATESTDBARCHIVE1_5.DBF
ORA-00280: 更改 69628 对于线程 1 是按序列 # 5 进行的
ORA-00278: 此恢复不再需要日志文件 'C:ORACLEORADATATESTDBARCHIVE1_4.DBF'


指定日志: {=suggested | filename | AUTO | CANCEL}

ORA-00308: 无法打开存档日志 'C:ORACLEORADATATESTDBARCHIVE1_5.DBF'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> recover database using backup controlfile until change 69639;
ORA-00279: 更改 69628 (在 03/02/2005 10:28:35 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:ORACLEORADATATESTDBARCHIVE1_5.DBF
ORA-00280: 更改 69628 对于线程 1 是按序列 # 5 进行的


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> select CONTROLFILE_CHANGE# from v$database;

CONTROLFILE_CHANGE#
-------------------
69628

我们看到没有恢复到69639,因为我还原的时候没有把resetlogs前的在线日志备份给还原,所以没法前滚69628到69639

SQL> shutdown
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。


-->>这里还原resetlogs后的控制文件
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes


SQL> select resetlogs_change# - 1,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
69639 69795


SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01190: 控制文件或数据文件1来自于最后一个 RESETLOGS 之前
ORA-01110: 数据文件 1: 'C:ORACLEORADATATESTDBSYSTEM01.DBF'


那我们只能不完全恢复
SQL> recover database until cancel;
ORA-00279: ?? 69452 (? 03/01/2005 17:45:23 ??) ???? 1 ????
ORA-00289: ??: C:ORACLEORADATATESTDBARCHIVE1_9.DBF
ORA-00280: ?? 69452 ???? 1 ???? # 9 ???


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> recover database using backup controlfile until cancel;
ORA-00279: ?? 69452 (? 03/01/2005 17:45:23 ??) ???? 1 ????
ORA-00289: ??: C:ORACLEORADATATESTDBARCHIVE1_9.DBF
ORA-00280: ?? 69452 ???? 1 ???? # 9 ???


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> select count(*),status from arch group by status;
select count(*),status from arch group by status
*
ERROR 位于第 1 行:
ORA-01219: ??????: ???????/?????


SQL> alter database open resetlogs;

数据库已更改。

SQL> select count(*),status from arch group by status;

COUNT(*) ST
---------- --
6166 no
98656 ok --我们没有看到af状态的

我们看到这里需要在线日志恢复,无法越过resetlogs恢复

好那我们在关键步骤那步把在线日志也还原的话是否可以越过69628到69639 一直到69795


SQL> startup
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select count(*) from arch;
select count(*) from arch
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在


SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;

GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 NO CURRENT
2 3 YES ACTIVE
3 4 NO ACTIVE

SQL>
SQL>
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> recover database until cancel;
完成介质恢复。
SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> select resetlogs_change#,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
68659 69884

SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项


SQL> alter database open resetlogs;

数据库已更改。

SQL> select resetlogs_change#,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
69889 69932

SQL> insert into arch select 'af' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL>
SQL>
SQL> recover database using backup controlfile until change 69888; -->>这里我们看到until change 69888与RESETLOGS_CHANGE#接上头了,就是以为我们有备份的在线日志
ORA-00279: 更改 69888 (在 03/02/2005 11:11:40 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:ORACLEORADATATESTDBARCHIVE1_5.DBF
ORA-00280: 更改 69888 对于线程 1 是按序列 # 5 进行的


指定日志: {=suggested | filename | AUTO | CANCEL}

ORA-00308: 无法打开存档日志 'C:ORACLEORADATATESTDBARCHIVE1_5.DBF'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> select resetlogs_change#,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
68659 69888

SQL>
SQL> shutdown
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。

-->>这里我们将resetlogs后的控制文件备份还原(不包括resetlogs后的在线日志)
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> select resetlogs_change#,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
69889 69932

SQL> recover database ;
ORA-00283: 恢复会话因错误而取消
ORA-00314: 日志 1 (线程 1),预计序号 1 与 5 不匹配
ORA-00312: 联机日志 1 线程 1: 'C:ORACLEORADATATESTDBREDO01.LOG' -->>我们这里看到恢复仍然到69889截止,而没有恢复到69932

原因就是我们resetlogs后的在线日志也要做备份.
#################################################################
#[测试1] 那我们在看看resetlogs前的数据文件控制文件和在线日志都做了备份,
# 然后resetlogs后的控制文件在线日志都做备份的情况下,是不是能越过resetlogs
#################################################################

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;

GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 NO CURRENT
2 3 YES ACTIVE
3 4 NO ACTIVE

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>

SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。

-->>模拟resetlogs
SQL> recover database until cancel;
完成介质恢复。
SQL> shutdown
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。

-->>这里我们对所有的数据文件控制文件和在线日志进行备份
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项


SQL> alter database open resetlogs;

数据库已更改。

SQL> select resetlogs_change# -1,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
69808 69850

SQL> insert into arch select 'af' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

--这时我们备份控制文件和在线日志,因为我们需要69808 到 69850的数据
-->>这时我们把users01.dbf删除
-->>还原resetlogs前的所有数据文件控制文件和在线日志
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL>
SQL> select resetlogs_change#,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
68659 69804

SQL> recover database using backup controlfile until change 69808;
ORA-00279: 更改 69808 (在 03/02/2005 11:35:33 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:ORACLEORADATATESTDBARCHIVE1_5.DBF
ORA-00280: 更改 69808 对于线程 1 是按序列 # 5 进行的


指定日志: {=suggested | filename | AUTO | CANCEL}

ORA-00308: 无法打开存档日志 'C:ORACLEORADATATESTDBARCHIVE1_5.DBF'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> recover database using backup controlfile until change 69808;
ORA-00279: 更改 69808 (在 03/02/2005 11:35:33 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:ORACLEORADATATESTDBARCHIVE1_5.DBF
ORA-00280: 更改 69808 对于线程 1 是按序列 # 5 进行的


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> select resetlogs_change#,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE# --已经应用到了69808
----------------- -------------------
68659 69808

SQL>
SQL>
SQL> shutdown
ORA-01109: 数据库未打开

-->>好这时我们就需要应用69808 到 69850的数据
-->>这时我们要想恢复69808 到 69850的数据就必须要resetlogs后的控制文件,
我们从前面的CONTROLFILE_CHANGE#和ESETLOGS_CHANGE#就可以看的出来,只有他才能进行完全恢复到69850

-->>还原resetlogs后的控制文件和在线日志文件
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> select resetlogs_change#,CONTROLFILE_CHANGE# from v$database;

RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
----------------- -------------------
69809 69850

SQL> recover database;
完成介质恢复。

SQL> alter database open;

数据库已更改。

SQL> select count(*) ,status from arch group by status;

COUNT(*) ST
---------- --
6166 af
6166 no
98656 ok
--这一次是真的越过resetlogs正确的完全恢复了

-->>注意切换归档是不是的序列号是不是当前序列号







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
必须使用TEMPORARY(一些数据文件对检查点不可用)或IMMEDIATE(所有数据文件对
检查点不可用)选项。在表空间再现联机之前,那些数据文件需要被恢复(数据文件恢复或
表空间恢复)。如果文件修复之后,重新联机之前发生了数据库崩溃,而该崩溃又要求执行不
完全的介质恢复的话,其后用来恢复数据库的RESETLOGS选项将致使该脱机表空间无效。恢
复该表空间的唯一方法是将以前的备份还原到另外一台机器上,用存档重作日志实施恢复,
直到数据库失败前为止,这样做显然会浪费大量的时间和资源。因此在恢复之前,应当切记
检查v$datafile确定所有的关键表空间是联机的。但是,允许只读表空间的数据文件或通过
NORMAL选项脱机的表空间,保持不变(因为它们已经是一致的了,不希望它们隶属于恢复
操作)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


###############################################################################################
# [2]. 非归档模式下的恢复(rman和常规恢复) #
###############################################################################################
~~~~~~~~~~~~~~~~~~
准备工作
~~~~~~~~~~~~~~~~~~


SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database noarchivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL>
SQL> archive log list
数据库日志模式 非存档模式
自动存档 启用
存档终点 C:oracleoradatatestdbarchive
最早的概要日志序列 0
当前日志序列 1
SQL>
SQL>
SQL>
SQL>
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup -->>是spfile启动的,所以不需要修改初始化参数就已经启动了非存档模式
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> archive log list
数据库日志模式 非存档模式
自动存档 启用
存档终点 C:oracleoradatatestdbarchive
最早的概要日志序列 0
当前日志序列 1
SQL>




###############################################
# [测试1] 数据库在非归档模式,数据库打开
###############################################
SQL> startup -->>是spfile启动的,所以不需要修改初始化参数就已经启动了非存档模式
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> archive log list
数据库日志模式 非存档模式
自动存档 启用
存档终点 C:oracleoradatatestdbarchive
最早的概要日志序列 0
当前日志序列 1
SQL>

C:Documents and Settingslifeng.fang>rman nocatalog target "sys/sunsdl"

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

连接到目标数据库: TESTDB (DBID=2334768642)
正在使用目标数据库控制文件替代恢复目录

RMAN> show all;

RMAN 配置参数为:
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; # 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 SNAPSHOT CONTROLFILE NAME TO 'C:ORACLEORA92DATABASESNCFTESTDB.ORA'
; # default

RMAN> backup database include current controlfile;

启动 backup 于 03-3月 -05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=16 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 03/03/2005 09:46:
04
ORA-19602: 无法按 NOARCHIVELOG 模式备份或复制活动文件

~~~~~~~~~~~~~~~~~~~~~~~~~~
我们看到如果是NOARCHIVELOG 模式,
数据库如果打开则不能做RMAN备份
~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我们可以用RMAN拷贝控制文件
RMAN> copy CURRENT CONTROLFILE TO 'c:cf.cpy';

启动 copy 于 03-3月 -05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=16 devtype=DISK
通道 ORA_DISK_1: 已复制当前的控制文件
输出文件名=C:CF.CPY
完成 copy 于 03-3月 -05
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
###############################################
# [测试2] 数据库在非归档模式,数据库MOUNT,备份整个数据库
###############################################
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL>

RMAN> backup database include current controlfile;

启动 backup 于 03-3月 -05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
输入数据文件 fno=00001 name=C:ORACLEORADATATESTDBSYSTEM01.DBF
输入数据文件 fno=00002 name=C:ORACLEORADATATESTDBUNDOTBS01.DBF
输入数据文件 fno=00003 name=C:ORACLEORADATATESTDBINDX01.DBF
输入数据文件 fno=00005 name=C:ORACLEORADATATESTDBUSERS01.DBF
输入数据文件 fno=00004 name=C:ORACLEORADATATESTDBTOOLS01.DBF
输入数据文件 fno=00006 name=C:ORACLEORADATATESTDBUSERS02.DBF
通道 ORA_DISK_1: 正在启动段 1 于 03-3月 -05
通道 ORA_DISK_1: 已完成段 1 于 03-3月 -05
段 handle=C:ORACLEORA92DATABASE2GECED4_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:27
完成 backup 于 03-3月 -05

RMAN> backup tablespace users;

启动 backup 于 03-3月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=C:ORACLEORADATATESTDBUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 03-3月 -05
通道 ORA_DISK_1: 已完成段 1 于 03-3月 -05
段 handle=C:ORACLEORA92DATABASE3GECEG5_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 03-3月 -05

###############################################
# [测试3] 数据库在非归档模式,数据库MOUNT,备份表空间
###############################################
RMAN> backup tablespace users;

启动 backup 于 03-3月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=C:ORACLEORADATATESTDBUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 03-3月 -05
通道 ORA_DISK_1: 已完成段 1 于 03-3月 -05
段 handle=C:ORACLEORA92DATABASE3GECEG5_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 03-3月 -05

~~~~~~~~~~~~~~~~~~~~~~~~
注意表空间是逻辑概念,常规备份,
必须open数据库后才能看到表空间
但是RMAN可以在mount下备份表空间
~~~~~~~~~~~~~~~~~~~~~~~~

###############################################
# [测试4] 数据库在非归档模式,数据库MOUNT,备份的表空间是常规OFFLINE的
###############################################
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果使用TEMPORARY选项对表空间进行脱机,则数据库仍然会对该表空间
的所有文件进行一个检查点,其中如果有个文件IO损坏,那么他对该文件
不会执行检查点,但是normal方式脱机的话就会强制写检查点,所以如果
io物理损坏了,那么NORMAL方式可能就脱机不了了.假设表空间两个文件
T1,T2,如果T1写错误而被脱机.如果使用temporary选项,则ORACLE在使T1
脱机前设检查点检查文件D2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> alter tablespace users offline immediate;
alter tablespace users offline immediate
*
ERROR 位于第 1 行:
ORA-01145: 除非启用了介质恢复,否则不允许紧急脱机


SQL> alter tablespace users offline TEMPORARY;

表空间已更改。

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。


RMAN> backup tablespace users;

启动 backup 于 03-3月 -05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=C:ORACLEORADATATESTDBUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 03-3月 -05
通道 ORA_DISK_1: 已完成段 1 于 03-3月 -05
段 handle=C:ORACLEORA92DATABASE9GECGJ0_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 03-3月 -05

SQL> alter database open;

数据库已更改。

SQL> insert into arch select 'af' from dba_objects;
insert into arch select 'af' from dba_objects
*
ERROR 位于第 1 行:
ORA-00376: 此时无法读取文件 5
ORA-01110: 数据文件 5: 'C:ORACLEORADATATESTDBUSERS01.DBF'


SQL> alter tablespace users online;

表空间已更改。

SQL> insert into arch select 'af' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> alter tablespace users offline TEMPORARY;

表空间已更改。

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。

RMAN> backup tablespace users;

启动 backup 于 03-3月 -05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00005 name=C:ORACLEORADATATESTDBUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 03-3月 -05
通道 ORA_DISK_1: 已完成段 1 于 03-3月 -05
段 handle=C:ORACLEORA92DATABASEAGECGNM_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 03-3月 -05


###############################################
# [测试5] 数据库在非归档模式,数据库MOUNT,shutdown abort,备份的表空间
###############################################

SQL> alter tablespace users online;

表空间已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建123320行。

SQL> /

已创建246640行。

SQL> /

已创建493280行。

SQL> /

已创建986560行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;

GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 2 NO ACTIVE
2 1 NO ACTIVE
3 3 NO CURRENT

SQL> shutdown abort
ORACLE 例程已经关闭。
SQL>
SQL>
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes


[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/257699/viewspace-815190/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-11-04

  • 博文量
    40
  • 访问量
    210139