⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 备份与恢复测试.txt

📁 oracle数据库备份与恢复的详细资料集合
💻 TXT
📖 第 1 页 / 共 5 页
字号:
ERROR 位于第 1 行:
ORA-01113: ?? 1 ??????
ORA-01110: ???? 1: 'C:\ORACLE\ORADATA\PDF\SYSTEM01.DBF'

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-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'C:\ORACLE\ORADATA\PDF\SYSTEM01.DBF'


SQL> recover database ;  --因为是shutdown abort关闭,所以需要恢复
完成介质恢复。
SQL> alter database open;

数据库已更改。
###################################################
# [测试2] --使用trace恢复 正常shutdown 
###################################################
SQL> insert into test select rownum,'aaaaaaaaaaaaaaaaaaaaaa' from dba_objects;

已创建6165行。

SQL> /

已创建6165行。

SQL> insert into test select * from test;

已创建12330行。

SQL> commit;

提交完成。

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

SQL> startup nomount
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> CREATE CONTROLFILE REUSE DATABASE "PDF" NORESETLOGS  ARCHIVELOG
  2  --  SET STANDBY TO MAXIMIZE PERFORMANCE
  3      MAXLOGFILES 5
  4      MAXLOGMEMBERS 3
  5      MAXDATAFILES 100
  6      MAXINSTANCES 1
  7      MAXLOGHISTORY 226
  8  LOGFILE
  9    GROUP 1 'C:\ORACLE\ORADATA\PDF\REDO01.LOG'  SIZE 100M,
 10    GROUP 2 'C:\ORACLE\ORADATA\PDF\REDO02.LOG'  SIZE 100M,
 11    GROUP 3 'C:\ORACLE\ORADATA\PDF\REDO03.LOG'  SIZE 100M
 12  -- STANDBY LOGFILE
 13  DATAFILE
 14    'C:\ORACLE\ORADATA\PDF\SYSTEM01.DBF',
 15    'C:\ORACLE\ORADATA\PDF\UNDOTBS01.DBF',
 16    'C:\ORACLE\ORADATA\PDF\INDX01.DBF',
 17    'C:\ORACLE\ORADATA\PDF\TOOLS01.DBF',
 18    'C:\ORACLE\ORADATA\PDF\USERS01.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制文件已创建
SQL> alter database open;
                         
 数据库已更改。 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
我们看到如果是正常数据库down机的,
那么使用noresetlog创建控制文件后
直接可以打开数据库
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 SQL> select count(*) from test;

  COUNT(*)
----------
     24660
     
用trace完成了数据库的完全恢复   

SQL> select * from v$tempfile;

未选定行

SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
UNDOTBS1
INDX
TOOLS
USERS
TEMP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
注意我们可以看到由于重建了控制文件,
临时表空间的临时文件没有了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
###################################################  
# [测试3] --使用控制文件备份来恢复
###################################################
~~~~~~~~~~~~~~~~
还原备份控制文件
~~~~~~~~~~~~~~~~
C:\Documents and Settings\lifeng.fang>copy c:\temp\controlfile.bak
 C:\oracle\oradata\pdf\CONTROL01.CTL
已复制         1 个文件。

C:\Documents and Settings\lifeng.fang>copy c:\temp\controlfile.bak
 C:\oracle\oradata\pdf\CONTROL02.CTL
已复制         1 个文件。

C:\Documents and Settings\lifeng.fang>copy c:\temp\controlfile.bak
 C:\oracle\oradata\pdf\CONTROL03.CTL
已复制         1 个文件。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
备份控制文件不会存有关于联机日志文件
和数据文件结束SCN,因此不会在恢复时使
用联机日志文件,并因此将数据文件假定了
一个无穷大的结束SCN,所以要休整他,必须
resetlogs,但是我们可以在例子[测试5.1]中可以看到
我们可以强制应用在线日志实现完全恢复
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当数据库用normal或immediate关闭时,发
出检查点处理,这将为每个数据文件在控制
文件中设置相应的结束SCN,使其等于数据
文件头中对应的开始SCN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
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-01991: ???????'C:\oracle\ora92\DATABASE\PWDpdf.ORA' 

SQL> recover database;
ORA-00283: ??????????
ORA-01610: ?? BACKUP CONTROLFILE ??????????
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据文件头中原有检查点计数器决不会大于
当前控制文件中的检查点计数器,所以必须在
恢复时指定USING  BACKUP CONTROLFILE,
这样就会基于备份控制文件的信息
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01152: ?? 1 ????????????
ORA-01110: ???? 1: 'C:\ORACLE\ORADATA\PDF\SYSTEM01.DBF'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这时,没有进行恢复,检查到当前数据文件头
的开始SCN和控制文件的结束SCN不一致需要
进行恢复
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


这里无法恢复数据库
而采用第1钟方法执行成功

###################################################
# [测试4] 我们现在模拟备份控制文件,同时备份部分数据文件先于备份
#         控制文件的数据文件
###################################################
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。

copy SYSTEM01.DBF 复件 SYSTEM01.DBF
alter database backup controlfile to 'c:\temp\controlfile1.bak';

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
C:\Documents and Settings\lifeng.fang>copy c:\temp\controlfile1.bak C:\oracle\or
adata\pdf\CONTROL01.CTL
已复制         1 个文件。

C:\Documents and Settings\lifeng.fang>copy c:\temp\controlfile1.bak C:\oracle\or
adata\pdf\CONTROL02.CTL
已复制         1 个文件。

C:\Documents and Settings\lifeng.fang>copy c:\temp\controlfile1.bak C:\oracle\or
adata\pdf\CONTROL03.CTL
已复制         1 个文件。

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> 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 using backup controlfile;
ORA-00279: 更改 1069041 (在 02/25/2005 15:36:00 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:\ORACLE\ORA92\RDBMS\ARC00012.001
ORA-00280: 更改 1069041 对于线程 1 是按序列 # 12 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 无法打开存档日志 'C:\ORACLE\ORA92\RDBMS\ARC00012.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


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


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


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'C:\ORACLE\ORADATA\PDF\SYSTEM01.DBF'


SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 1069041 (在 02/25/2005 15:36:00 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:\ORACLE\ORA92\RDBMS\ARC00012.001
ORA-00280: 更改 1069041 对于线程 1 是按序列 # 12 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 2 没有从完备的旧备份中恢复
ORA-01110: 数据文件 2: 'C:\ORACLE\ORADATA\PDF\UNDOTBS01.DBF'


ORA-01112: 未启动介质恢复


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01152: 文件 2 没有从完备的旧备份中恢复
ORA-01110: 数据文件 2: 'C:\ORACLE\ORADATA\PDF\UNDOTBS01.DBF'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
虽然在备份控制文件前备份了SYSTEM文件,但是
其他文件没有备份,而有超过控制文件检查点SCN
的信息,不能恢复成功
如果有只读表空间,使用备份控制文件恢复,
要先offline 参见备份与恢复手册

对于使用备份控制文件进行恢复由于默认是所有
数据文件联机的,而且resetlogs时需要写数据
文件的,那么只读文件恢复时,由于只读文件不
需要恢复,就要强制将他offline;
所以在选取控制文件时也要注意,如果选取了当
时正好是只读状态的控制文件时,必须将数据文
件offline ,而使得在切换前为读写状态时的数
据无法恢复,反之同理
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#######################################################
# [测试5]我们现在模拟控制文件损坏,将备份控制文件前,先备份所有数据文件
#######################################################

copy SYSTEM01.DBF 复件 SYSTEM01.DBF
copy UNDOTBS01.DBF 复件 UNDOTBS01.DBF
copy TOOLS01.DBF   复件 TOOLS01.DBF
copy USERS01.DBF   复件 USERS01.DBF
copy INDX01.DBF    复件 INDX01.DBF

SQL>  alter database backup controlfile to 'c:\temp\controlfile2.bak';
                                                                      
数据库已更改。      

替换老的控制文件

SQL> insert into test select * from test;

已创建24660行。

SQL> commit;

提交完成。

SQL> select count(*) from test;

  COUNT(*)
----------
     49320
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

copy c:\temp\controlfile2.bak C:\oracle\oradata\pdf\CONTROL01.CTL
copy c:\temp\controlfile2.bak C:\oracle\oradata\pdf\CONTROL02.CTL
copy c:\temp\controlfile2.bak C:\oracle\oradata\pdf\CONTROL03.CTL                                                       

rename SYSTEM01.DBF  复件 SYSTEM01.DBF  SYSTEM01.DBF  -->>临时文件可以不要
rename UNDOTBS01.DBF 复件 UNDOTBS01.DBF UNDOTBS01.DBF 
rename TOOLS01.DBF   复件 TOOLS01.DBF   TOOLS01.DBF   
rename USERS01.DBF   复件 USERS01.DBF   USERS01.DBF   
rename INDX01.DBF    复件 INDX01.DBF    INDX01.DBF

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 using backup controlfile until cancel;
ORA-00279: 更改 1069386 (在 02/25/2005 15:47:59 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:\ORACLE\ORA92\RDBMS\ARC00013.001
ORA-00280: 更改 1069386 对于线程 1 是按序列 # 13 进行的
 
 
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto -->>使用auto恢复也是成功
ORA-00308: 无法打开存档日志 'C:\ORACLE\ORA92\RDBMS\ARC00013.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -