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

📄 备份与恢复测试.txt

📁 oracle数据库备份与恢复的详细资料集合
💻 TXT
📖 第 1 页 / 共 5 页
字号:
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
ORA-01991: ???????'C:\oracle\ora92\DATABASE\PWDtestdb.ORA'


SQL> select count(*) from tab;
select count(*) from tab
                     *
ERROR 位于第 1 行:
ORA-01219: ??????: ???????/?????


SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00314: ?? 1 (?? 1)?????  ?  ???
ORA-00312: ???? 1 ?? 1: 'C:\ORACLE\ORADATA\TESTDB\REDO01.LOG'  -->>这里REDO是无用的,但是因为没有对REDO进行备份,存在他就打不开


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01139: RESETLOGS ???????????????


SQL> alter database open noresetlogs;
alter database open noresetlogs
*
ERROR 位于第 1 行:
ORA-01139: RESETLOGS ???????????????


SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00314: ?? 1 (?? 1)?????  ?  ???
ORA-00312: ???? 1 ?? 1: 'C:\ORACLE\ORADATA\TESTDB\REDO01.LOG'


SQL>  alter database clear logfile group 1;

数据库已更改。

SQL>  alter database clear logfile group 2;

数据库已更改。

SQL>  alter database clear logfile group 3;
 alter database clear logfile group 3
*
ERROR 位于第 1 行:
ORA-00350: ?? 3 (?? 1) ?????
ORA-00312: ???? 3 ?? 1: 'C:\ORACLE\ORADATA\TESTDB\REDO03.LOG'


SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00338: ?? 3 (?? 1) ???????
ORA-00312: ???? 3 ?? 1: 'C:\ORACLE\ORADATA\TESTDB\REDO03.LOG'


SQL>  alter database clear UNARCHIVED logfile group 3;
 alter database clear UNARCHIVED logfile group 3
*
ERROR 位于第 1 行:
ORA-00338: ?? 3 (?? 1) ???????
ORA-00312: ???? 3 ?? 1: 'C:\ORACLE\ORADATA\TESTDB\REDO03.LOG'

方法1
SQL> recover database using backup controlfile;
ORA-00279: ?? 48540 (? 02/28/2005 10:06:38 ??) ???? 1 ????
ORA-00289: ??: C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_3.DBF
ORA-00280: ?? 48540 ???? 1 ???? # 3 ???


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: ?? 68658 (? 02/28/2005 10:22:51 ??) ???? 1 ????
ORA-00289: ??: C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_4.DBF
ORA-00280: ?? 68658 ???? 1 ???? # 4 ???
ORA-00278: ??????????? 'C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_3.DBF'


ORA-00308: ???????? 'C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_4.DBF'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND<~
O/S-Error: (OS 2) O5M3UR2;5=V86(5DND<~!#


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01113: ?? 1 ??????
ORA-01110: ???? 1: 'C:\ORACLE\ORADATA\TESTDB\SYSTEM01.DBF'


SQL> recover database using backup controlfile using cancel;
ORA-01906: ?? BACKUP ???


SQL> recover database using backup controlfile until cancel;
ORA-00279: ?? 68658 (? 02/28/2005 10:22:51 ??) ???? 1 ????
ORA-00289: ??: C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_4.DBF
ORA-00280: ?? 68658 ???? 1 ???? # 4 ???


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL>
SQL> alter database open resetlogs;

数据库已更改。
####################################################
# [方法2] --使用带resetlogs的创建控制文件trace
####################################################
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> CREATE CONTROLFILE REUSE DATABASE "TESTDB" RESETLOGS  ARCHIVELOG  --这里我们用了resetlogs
  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\TESTDB\REDO01.LOG'  SIZE 100M,
 10    GROUP 2 'C:\ORACLE\ORADATA\TESTDB\REDO02.LOG'  SIZE 100M,
 11    GROUP 3 'C:\ORACLE\ORADATA\TESTDB\REDO03.LOG'  SIZE 100M
 12  -- STANDBY LOGFILE
 13  DATAFILE
 14    'C:\ORACLE\ORADATA\TESTDB\SYSTEM01.DBF',
 15    'C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF',
 16    'C:\ORACLE\ORADATA\TESTDB\INDX01.DBF',
 17    'C:\ORACLE\ORADATA\TESTDB\TOOLS01.DBF',
 18    'C:\ORACLE\ORADATA\TESTDB\USERS01.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制文件已创建

SQL> alter database open resetlogs;

数据库已更改。
~~~~~~~~~~~~~~~
这将丢失部分数据
~~~~~~~~~~~~~~~

#############################################
# [方法3] 使用noresetlog的trace来恢复
#############################################
SQL> shutdown abort  
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;
alter database open
*
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;

数据库已更改。
#############################################
# [方法4] 那我们对数据库的数据文件控制文件和
#         在线日志文件都做备份会需要恢复吗?
#############################################

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> 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> select count(*) from test;

  COUNT(*)
----------
     12330

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

表已创建。

SQL> alter system switch logfile;

系统已更改。

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

已创建6166行。

SQL> commit;

提交完成。

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> select count(*) from test;

  COUNT(*)
----------
     12330

SQL> select count(*) from arch;
select count(*) from arch
                     *
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            C:\oracle\oradata\testdb\archive
最早的概要日志序列     1
下一个存档日志序列   3
当前日志序列           3

~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据库冷备份如果包括所有数据
文件控制文件和在线日志,那么
数据库可以直接打开,如果没有在
线日志,那么需要create controlfile
... resetlogs;
或者recover database until cancel;
alter database open resetlogs;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#####################################################
#  但是由于在线日志也被覆盖了,前面的归档3和在序列4已
#  经没有应用,那么我们序列4虽然被强制覆盖了,那么3其实
#  是被归档了,那么我们建的arch表是不是可以恢复出来呢?
#  这里我们看看能不能备份(做完冷备份后的控制文件)控制
#  文件来进行恢复
#  [测试5] 我们模拟在线日志损坏,使用备份控制文件,有数据文件的备份的恢复
####################################################

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

表已创建。

SQL>  alter system switch logfile;

系统已更改。

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

已创建6166行。

SQL> commit;

提交完成。


alter database backup controlfile to 'C:\oracle\oradata\testdb\bak2\controlfile.ctl';
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> recover database using backup controlfile;
ORA-00279: 更改 69257 (在 02/28/2005 11:08:18 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_3.DBF
ORA-00280: 更改 69257 对于线程 1 是按序列 # 3 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 69776 (在 02/28/2005 11:23:24 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_4.DBF
ORA-00280: 更改 69776 对于线程 1 是按序列 # 4 进行的

⌨️ 快捷键说明

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