知识大全 数据库备份与恢复测试(3)
Posted 文件
篇首语:一身转战三千里,一剑曾百万师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据库备份与恢复测试(3)相关的知识,希望对你有一定的参考价值。
################################ # [ ] 有trace 活动在线日志损坏 ################################ ################################ # [ ] 有trace 活动在线日志损坏 正常shutdown或是当前的数据文件 ################################SQL> create table arch (status varchar( ));
表已创建
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select no from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> select GROUP# SEQUENCE# archived STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS YES ACTIVE YES ACTIVE NO CURRENT SQL> shutdown 正常关闭数据库数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭
此时模拟删除当前在线日志组 SQL>SQL>SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES MAXINSTANCES MAXLOGHISTORY LOGFILE GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M STANDBY LOGFILE DATAFILE C:\\ORACLE\\ORADATA\\testdb\\SYSTEM DBF C:\\ORACLE\\ORADATA\\testdb\\UNDOTBS DBF C:\\ORACLE\\ORADATA\\testdb\\INDX DBF C:\\ORACLE\\ORADATA\\testdb\\TOOLS DBF C:\\ORACLE\\ORADATA\\testdb\\USERS DBF CHARACTER SET ZHS GBK ;
控制文件已创建
SQL> alter database open resetlogs;
数据库已更改 SQL> select count(*) status from arch group by status;
COUNT(*) ST no ok
>>没有丢失任何数据 因为你的数据都已经写到数据文件里了
######################################### # [ ] 有trace 活动在线日志损坏 shutdown abort 或是非当前的数据文件 当前在线日志文件损坏 #########################################
####################################################[测试 ] shutdown abort 备份控制文件或者resetlog的trace 没有数据文件备份 采用强制打开数据库的方法####################################################SQL> create table arch (status varchar( )); 表已创建
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> alter system switch logfile;SQL> insert into arch select no from dba_objects;
已创建 行
SQL> mit;
提交完成 SQL> select GROUP# SEQUENCE# archived STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS YES ACTIVE NO CURRENT YES INACTIVE
SQL> insert into arch select no from dba_objects;
已创建 行
SQL> shutdown abortORACLE 例程已经关闭
SQL> startupORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytes数据库装载完毕 ORA : 无法打开日志组 (线程 ) 的成员ORA : 联机日志 线程 : C:\\ORACLE\\ORADATA\\TESTDB\\REDO LOG ORA : 无法读取文件的标题块OSD : ReadFile() 失败 无法读取文件O/S Error: (OS ) 到达文件结尾
SQL> alter database clear logfile group ;alter database clear logfile group *ERROR 位于第 行:ORA : 线程 的紧急恢复需要日志 ORA : 联机日志 线程 : C:\\ORACLE\\ORADATA\\TESTDB\\REDO LOG
SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES MAXINSTANCES MAXLOGHISTORY LOGFILE GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M STANDBY LOGFILE DATAFILE C:\\ORACLE\\ORADATA\\testdb\\SYSTEM DBF C:\\ORACLE\\ORADATA\\testdb\\UNDOTBS DBF C:\\ORACLE\\ORADATA\\testdb\\INDX DBF C:\\ORACLE\\ORADATA\\testdb\\TOOLS DBF C:\\ORACLE\\ORADATA\\testdb\\USERS DBF CHARACTER SET ZHS GBK ;
控制文件已创建
SQL> alter database open resetlogs;alter database open resetlogs*ERROR 位于第 行:ORA : ?? ?????????????ORA : ???? : C:\\ORACLE\\ORADATA\\TESTDB\\SYSTEM DBF
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???
指定日志: <RET>=suggested | filename | AUTO | CANCELcancelORA : ??: RECOVER ??? OPEN RESETLOGS ???????ORA : ?? ?????????????ORA : ???? : C:\\ORACLE\\ORADATA\\TESTDB\\SYSTEM DBF
ORA : ???????
我们看到如果是abort DOWN机的话 打开数据库都需要应用在线活动日志
这时必须加隐含参数强制打开数据库 并进行导出 重建数据库 导入业务数据
SQL> show parameter spfile NAME TYPE VALUE spfile string %ORACLE_HOME%\\DATABASE\\SPFILE ORACLE_SID% ORA SQL> create pfile= pfiletest ora from spfile; 文件已创建 SQL> create pfile= c:\\pfiletest ora from spfile; 文件已创建 编辑c:\\pfiletest ora 增加三个参数 _allow_resetlogs_corruption=true _corrupted_rollback_segments=true _offline_rollback_segments=true SQL> shutdown immediate ORA : 数据库未打开 已经卸载数据库 ORACLE 例程已经关闭 SQL> SQL> SQL> SQL> startup pfile= c:\\pfiletest ora ORACLE 例程已经启动 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes 数据库装载完毕 ORA : 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 SQL> alter database open resetlogs; alter database open resetlogs * ERROR 位于第 行: ORA : ORACLE 例程终止 强行断开连接 SQL> SQL> SQL> exit 从Oracle i Enterprise Edition Release Production With the Partitioning OLAP and Oracle Data Mining options JServer Release Production中断开 C:\\>sqlplus /as sysdba SQL*Plus: Release Production on 星期五 月 : : Copyright (c) Oracle Corporation All rights reserved 已连接到空闲例程 SQL> startup pfile= c:\\pfiletest ora ORACLE 例程已经启动 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes 数据库装载完毕 数据库已经打开 SQL>
##################################################### [测试 ] shutdown abort resetlog的trace # 有数据文件备份 当前在线日志损坏 控制文件损坏 有trace####################################################SQL> create table arch (status varchar( )) tablespace users;
表已创建
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> insert into arch select * from arch;
已创建 行
SQL> /
已创建 行
SQL> /
已创建 行
SQL> /
已创建 行
SQL> mit;
提交完成
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select no from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> select GROUP# SEQUENCE# archived STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS NO CURRENT YES ACTIVE NO ACTIVE
SQL> shutdown abortORACLE 例程已经关闭 SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:\\ORACLE\\ORADATA\\testdb\\SYSTEM DBF
C:\\ORACLE\\ORADATA\\testdb\\UNDOTBS DBF
C:\\ORACLE\\ORADATA\\testdb\\INDX DBF
C:\\ORACLE\\ORADATA\\testdb\\TOOLS DBF
C:\\ORACLE\\ORADATA\\testdb\\USERS DBF
CHARACTER SET ZHS GBK
;CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG*ERROR 位于第 行:ORA : CREATE CONTROLFILE ??ORA : ??????????
~~~~~~~~~~~~~~~~~~~~~~如果是NORESETLOGS 那么他要检查当前的在线日志 而现在没有了
SQL> CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE
GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:\\ORACLE\\ORADATA\\testdb\\SYSTEM DBF
C:\\ORACLE\\ORADATA\\testdb\\UNDOTBS DBF
C:\\ORACLE\\ORADATA\\testdb\\INDX DBF
C:\\ORACLE\\ORADATA\\testdb\\TOOLS DBF
C:\\ORACLE\\ORADATA\\testdb\\USERS DBF
CHARACTER SET ZHS GBK
;CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG*ERROR 位于第 行:ORA : CREATE CONTROLFILE ??ORA : ???? C:\\ORACLE\\ORADATA\\testdb\\REDO LOG ??? >>这个文件不在了ORA : ??????OSD : N^ ( r?*ND<~O/S Error: (OS ) O M UR ; =V ( DND<~!#
SQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:\\ORACLE\\ORADATA\\testdb\\SYSTEM DBF
C:\\ORACLE\\ORADATA\\testdb\\UNDOTBS DBF
C:\\ORACLE\\ORADATA\\testdb\\INDX DBF
C:\\ORACLE\\ORADATA\\testdb\\TOOLS DBF
C:\\ORACLE\\ORADATA\\testdb\\USERS DBF
CHARACTER SET ZHS GBK
;CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG*ERROR 位于第 行:ORA : CREATE CONTROLFILE ??ORA : ????????ORA : ????: C:\\oracle\\oradata\\testdb\\control ctl 这个文件不能被覆蓋 删除三个控制文件ORA : skgfglk: ?????? ?????OSD : N^ ( r?*ND<~O/S Error: (OS ) >\\>x CNJ!#
SQL> shutdownORA : ??????
ORACLE 例程已经关闭 SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
GROUP C:\\ORACLE\\ORADATA\\testdb\\REDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:\\ORACLE\\ORADATA\\testdb\\SYSTEM DBF
C:\\ORACLE\\ORADATA\\testdb\\UNDOTBS DBF
C:\\ORACLE\\ORADATA\\testdb\\INDX DBF
C:\\ORACLE\\ORADATA\\testdb\\TOOLS DBF
C:\\ORACLE\\ORADATA\\testdb\\USERS DBF
CHARACTER SET ZHS GBK
;
控制文件已创建
SQL> alter database open;alter database open*ERROR 位于第 行:ORA : ??????????? RESETLOGS ? NORESETLOGS ??
SQL> alter database open resetlogs;alter database open resetlogs*ERROR 位于第 行:ORA : ?? ????????????ORA : ???? : C:\\ORACLE\\ORADATA\\TESTDB\\SYSTEM DBF
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???
指定日志: <RET>=suggested | filename | AUTO | CANCEL
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBF
指定日志: <RET>=suggested | filename | AUTO | CANCEL
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBF
指定日志: <RET>=suggested | filename | AUTO | CANCEL
ORA : ???????? C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBF ORA : ??????OSD : N^ ( r?*ND<~O/S Error: (OS ) O M UR ; =V ( DND<~!#
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???
指定日志: <RET>=suggested | filename | AUTO | CANCELcancel介质恢复已取消 SQL> alter database open resetlogs;
数据库已更改
SQL> select count(*) status from arch group by status;
COUNT(*) ST ok 还原了部分数据 但不能还原在线日志中的数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~如果数据库是abort或者老的数据文件备份 那么就涉及到控制文件和数据文件不一致 需要恢复 就涉及到当前被破坏的在线日志 启动时仍然需要用在线活动日志进行恢复 如果是正常的shutdown 而且没有用老的数据备份 那么控制文件和数据文件是一致的 不需要当前在线日志 而在abort或者老的数据文件备份在这种情况下 只能用备份的datafile和备份的controlfile来做不完全恢复 都将造成数据丢失 因此多重controlfile 和 online redo log file 很重要 通常情况下是在正常运行数据库时 当前在线日志被破坏的 此时马上会数据库不正常DOWN机 也就出现 的情景我们知道如果是abort关闭的 那么有些事务是不完整的或者有些事务没有被写到数据文件 在数据文件中有这样的标识 这样 用create controlfile noresetlogs或者resetlogs创建时读取数据文件头信息 该文件在控制文件信息 比如结束SCN设置为无穷大)打开时就需要当前在线日志恢复~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##################################################### [测试 ] shutdown abort 控制文件损坏 备份控制文件 # 当前在线日志损坏 有数据文件备份####################################################
还原原来备份的数据文件 控制文件SQL> shutdownORA : 数据库未打开
ORACLE 例程已经关闭 SQL> startup mountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesORA : ??????? C:\\oracle\\ora \\DATABASE\\PWDtestdb ORA
SQL> recover database using backup controlfile ;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???
指定日志: <RET>=suggested | filename | AUTO | CANCEL
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBF
指定日志: <RET>=suggested | filename | AUTO | CANCEL
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBF
指定日志: <RET>=suggested | filename | AUTO | CANCEL
ORA : ???????? C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBF ORA : ??????OSD : N^ ( r?*ND<~O/S Error: (OS ) O M UR ; =V ( DND<~!#
SQL> alter database open resetlogs;alter database open resetlogs*ERROR 位于第 行:ORA : ?? ??????ORA : ???? : C:\\ORACLE\\ORADATA\\TESTDB\\SYSTEM DBF
SQL> select resetlogs_change# CONTROLFILE_CHANGE# from v$database;
RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:\\ORACLE\\ORADATA\\TESTDB\\ARCHIVE\\ _ DBFORA : ?? ???? ???? # ???
指定日志: <RET>=suggested | filename | AUTO | CANCELcancel介质恢复已取消 SQL> select resetlogs_change# CONTROLFILE_CHANGE# from v$database;
RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
SQL> alter database open resetlogs;
数据库已更改
SQL> select count(*) status from arch group by status;
COUNT(*) ST ok
###################################################### # [ ] 控制文件损坏 如果trace
相关参考
#######################################################################################  
[测试]数据库在非归档模式数据库MOUNT数据文件丢失有表空间备份 RMAN>backuptablespaceusers; 启动backup于月分配的通道:ORA_DISK_通道ORA_
知识大全 oracle数据库备份与恢复apieceofcake(4)
oracle数据库日志备份(windows平台) 本片是接上次的数据库在线备份进行数据库全备份后需要备份归档的日志文件 建立数据库备份的脚本 在上面建立的目录下建立如下的两个脚本 建立执行
Oracle数据库备份与恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一导出/导入(Exp
实战Oracle数据库备份与恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用户可以留意一下
Oracle数据库的备份与恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 河南省新乡市电信局
备份与恢复是我们使用数据库中不可缺少的部分也是我们在使用数据库时会经常碰到的问题当我们使用一个数据库时总希望数据库的内容是可靠的正确的但由于计算机系统的故障(硬件故障软件故障网络故障进程故障和系统
如何实现MySQL数据库的备份与恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在数据库表丢
Oracle数据库备份与恢复精华资料集锦 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!主要介绍了O
浅谈IBMDB2的数据库备份与恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要本文探讨了