Oracle 培训笔记:归档模式备份恢复

来源:这里教程网 时间:2026-02-27 11:17:00 作者:

1、数据库置归档模式,设置归档路径1.1 查询归档状态SQLgt; select log_mode from v$database;LOG_MODE------------NOARCHIVELO

1、数据库置归档模式,设置归档路径

1.1 查询归档状态
sql> select log_mode from v$database;

log_mode
------------
noarchivelog

sql> archive log list;
数据库日志模式             非存档模式
自动存档             禁用
存档终点            use_db_recovery_file_dest
最早的联机日志序列     9
当前日志序列           11


1.2 置归档模式
sql> shutdown immediate
数据库已经关闭。
已经卸载数据库。
oracle 例程已经关闭。
sql> startup mount
oracle 例程已经启动。

total system global area  251658240 bytes
fixed size                  1241248356 bytes
variable size              79692700 bytes
database buffers          163577856 bytes
redo buffers                7139328 bytes
数据库装载完毕。
sql> alter database archivelog;
sql> alter database open;

设置非归档:alter database noarchivelog;

1.3 设置归档路径
sql> show parameter log_archive_dest_

name                                 type        value
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string
log_archive_dest_9                   string

sql> show parameter log_archive_min_succeed_dest

name                                 type        value
------------------------------------ ----------- ------------------------------
log_archive_min_succeed_dest         integer     1

sql> show parameter format

name                                 type        value
------------------------------------ ----------- ------------------------------
log_archive_format                   string      arc%s_%r.%t

sql> alter system set log_archive_format='arc%s_%r_%d.%t' scope=spfile;

系统已更改。


设置归档路径
alter system set log_archive_dest_1='location=e:\arc1 mandatory';
alter system set log_archive_dest_2='location=e:\arc2 mandatory';
alter system set log_archive_dest_3='location=e:\arc3 optional';

alter system switch logfile;

使用闪回恢复区
alter system set log_archive_dest_1='';
alter system set log_archive_dest_2='';
alter system set log_archive_dest_3='';
alter system set log_archive_dest_10='location=use_db_recovery_file_dest';

1.4 备份数据库
冷备份:关闭数据库,备份数据文件、控制文件、参数文件


2、备份
冷备份

热备份
alter tablespace xxx begin backup;
物理拷贝
alter tablespace xxx end backup;

alter database begin backup;
物理拷贝
alter database end backup;

alter tablespace users begin backup;

3、完全恢复
3.1 模拟数据变化,切换日志
insert into t01 values(40);
commit;
alter system switch logfile;

insert into t01 values(50);
commit;
alter system switch logfile;

insert into t01 values(60);
commit;
alter system switch logfile;

insert into t01 values(70);
commit;
alter system switch logfile;


sql> shutdown immediate
数据库已经关闭。
已经卸载数据库。
oracle 例程已经关闭。

删除数据文件users01.dbf

sql> startup
oracle 例程已经启动。

total system global area  251658240 bytes
fixed size                  1241248356 bytes
variable size              79692700 bytes
database buffers          163577856 bytes
redo buffers                7139328 bytes
数据库装载完毕。
ora-01157: 无法标识/锁定数据文件 4 - 请参阅 dbwr 跟踪文件
ora-01110: 数据文件 4: 'e:\oracle\product\10.2.0\oradata\mydb\users01.dbf'

还原数据文件user01.dbf

sql> select * from v$recover_file;

     file# online  online_ error                                                                change# time
---------- ------- ------- ----------------------------------------------------------------- ---------- --------------
         4 online  online                                                                        213083 03-9月 -11

sql> select * from v$recovery_log;

   thread#  sequence# time
---------- ---------- --------------
archive_name
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

         1         15 03-9月 -11
e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_15_763hhz1g_.arc

         1         16 03-9月 -11
e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_16_763hhzkl_.arc


sql> recover datafile 4;
ora-00279: 更改 213083 (在 09/03/2011 13:39:09 生成) 对于线程 1 是必需的
ora-00289: 建议: e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_15_%u_.arc
ora-00280: 更改 213083 (用于线程 1) 在序列 #15 中


指定日志: {=suggested | filename | auto | cancel}

ora-00308: 无法打开归档日志 'e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_15_763hhz1g_.arc'
ora-27041: 无法打开文件
osd-04002: 无法打开文件
o/s-error: (os 2) 系统找不到指定的文件。


sql>
sql> recover datafile 4;
ora-00279: 更改 213083 (在 09/03/2011 13:39:09 生成) 对于线程 1 是必需的
ora-00289: 建议: e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_15_%u_.arc
ora-00280: 更改 213083 (用于线程 1) 在序列 #15 中


指定日志: {=suggested | filename | auto | cancel}
d:\1_15_763hhz1g_.arc
ora-00279: 更改 213171 (在 09/03/2011 13:41:18 生成) 对于线程 1 是必需的
ora-00289: 建议: e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_16_%u_.arc
ora-00280: 更改 213171 (用于线程 1) 在序列 #16 中
ora-00278: 此恢复不再需要日志文件 'd:\1_15_763hhz1g_.arc'


指定日志: {=suggested | filename | auto | cancel}
d:\o1_mf_1_16_763hhzkl_.arc
已应用的日志。
完成介质恢复。
sql> alter database open;

数据库已更改。

3.2 在线恢复数据文件
alter tablespace users offline;
还原数据文件
恢复数据文件
alter tablespace users online;

system、undo表空间必须在mounted状态恢复

3.3 闪回恢复区监控
select * from v$recovery_file_dest;
select * from v$flash_recovery_area_usage;

3.4 控制文件损坏恢复
数据库发生结构性变化时及时备份。(表空间、数据文件增删)
sql> alter database backup controlfile to 'd:\control.ctl';

1)部分控制文件损坏
复制存在的文件,,再打开数据库

2)控制文件全部损坏
情况1:有备份
关闭数据库
删除所有控制文件
还原控制文件
启动数据库到mounted状态
恢复数据库 recover database using backup controlfile;
sql> recover database using backup controlfile;
ora-00279: change 205641 generated at 09/03/2011 11:52:37 needed for thread 1
ora-00289: suggestion :
e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_

15_%u_.arc
ora-00280: change 205641 for thread 1 is in sequence #15


specify log: {=suggested | filename | auto | cancel}
d:\1_15_763hhz1g_.arc
ora-00279: change 213171 generated at 09/03/2011 13:41:18 needed for thread 1
ora-00289: suggestion :
e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_

16_%u_.arc
ora-00280: change 213171 for thread 1 is in sequence #16
ora-00278: log file 'd:\1_15_763hhz1g_.arc' no longer needed for this recovery


specify log: {=suggested | filename | auto | cancel}
d:\o1_mf_1_16_763hhzkl_.arc
ora-00279: change 213175 generated at 09/03/2011 13:41:19 needed for thread 1
ora-00289: suggestion :
e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_

17_%u_.arc
ora-00280: change 213175 for thread 1 is in sequence #17
ora-00278: log file 'd:\o1_mf_1_16_763hhzkl_.arc' no longer needed for this
recovery


specify log: {=suggested | filename | auto | cancel}
e:\oracle\product\10.2.0\oradata\mydb\redo02.log
ora-00279: change 213180 generated at 09/03/2011 13:41:23 needed for thread 1
ora-00289: suggestion :
e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_

18_%u_.arc
ora-00280: change 213180 for thread 1 is in sequence #18
ora-00278: log file 'e:\oracle\product\10.2.0\oradata\mydb\redo02.log' no
longer needed for this recovery


specify log: {=suggested | filename | auto | cancel}
e:\oracle\product\10.2.0\oradata\mydb\redo03.log
ora-00279: change 213184 generated at 09/03/2011 13:41:24 needed for thread 1
ora-00289: suggestion :
e:\oracle\product\10.2.0\flash_recovery_area\mydb\archivelog\2011_09_03\o1_mf_1_

19_%u_.arc
ora-00280: change 213184 for thread 1 is in sequence #19
ora-00278: log file 'e:\oracle\product\10.2.0\oradata\mydb\redo03.log' no
longer needed for this recovery


specify log: {=suggested | filename | auto | cancel}
e:\oracle\product\10.2.0\oradata\mydb\redo01.log
log applied.
media recovery complete.
打开数据库 alter database open resetlogs;

相关推荐