📄 备份与恢复测试.txt
字号:
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 + -