Oracle 备份基础知识
Oracle备份主要保护以下三类文件:
- datafile
- controlfile
- redo
SQL
>
select
*
from
v$
log
;
GROUP # THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
-- ---- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------
1 1 109 52428800 1 NO CURRENT 2644768 23 - SEP - 12
2 1 107 52428800 1 NO INACTIVE 2585151 22 - SEP - 12
3 1 108 52428800 1 NO INACTIVE 2616854 23 - SEP - 12
SQL > select * from v$logfile;
GROUP # STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
-- ---- ------- ------- -------------------------------------------------- -------------------------
1 ONLINE E:\ORACLE\WPENG\WPENG\REDO01. LOG NO
2 ONLINE E:\ORACLE\WPENG\WPENG\REDO02. LOG NO
3 ONLINE E:\ORACLE\WPENG\WPENG\REDO03. LOG NO
GROUP # THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
-- ---- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------
1 1 109 52428800 1 NO CURRENT 2644768 23 - SEP - 12
2 1 107 52428800 1 NO INACTIVE 2585151 22 - SEP - 12
3 1 108 52428800 1 NO INACTIVE 2616854 23 - SEP - 12
SQL > select * from v$logfile;
GROUP # STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE
-- ---- ------- ------- -------------------------------------------------- -------------------------
1 ONLINE E:\ORACLE\WPENG\WPENG\REDO01. LOG NO
2 ONLINE E:\ORACLE\WPENG\WPENG\REDO02. LOG NO
3 ONLINE E:\ORACLE\WPENG\WPENG\REDO03. LOG NO
归档/非归档模式
归档OR非归档的信息存储在控制文件中。
数据库默认情况是出于非归档模式。
非归档模式:
- 完全脱机备份(冷备份 - shutdown + Copy)
归档模式:
在联机日志切换的时候,就会产生相应的归档日志文件
归档日志文件路径:
- flash recover area (备份恢复文件,便于管理)
-- 查询归档日志存放路径
SQL > show parameter DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
-- ---------------------------------- ----------- ------------------------------
db_recovery_file_dest string d:\oracle\product\ 10.2 . 0 / flash_recovery_area
db_recovery_file_dest_size big integer 2G
使用闪回恢复区
--
设置参数 闪回恢复区 大小
SQL > alter system set db_recovery_file_dest_size = 2048m ;
System altered.
-- 设置参数 闪回恢复区 路径
SQL > alter system set db_recovery_file_dest = ' E:\app\WPeng\product\11.1.0\flash_recover_area\ ' ;
System altered.
-- 默认使用log_archive_dest_10
SQL > alter system set log_archive_dest_10 = ' location=use_db_recovery_file_dest ' ;
System altered.
-- 查看修改之后的结果:
SQL > show parameter db_rec
NAME TYPE VALUE
-- ---------------------------------- ----------- ------------------------------
db_recovery_file_dest string E:\app\WPeng\product\ 11.1 . 0 \fl
ash_recover_area\
db_recovery_file_dest_size big integer 2G
db_recycle_cache_size big integer 0
SQL > show parameter log_arc
SQL > alter system set db_recovery_file_dest_size = 2048m ;
System altered.
-- 设置参数 闪回恢复区 路径
SQL > alter system set db_recovery_file_dest = ' E:\app\WPeng\product\11.1.0\flash_recover_area\ ' ;
System altered.
-- 默认使用log_archive_dest_10
SQL > alter system set log_archive_dest_10 = ' location=use_db_recovery_file_dest ' ;
System altered.
-- 查看修改之后的结果:
SQL > show parameter db_rec
NAME TYPE VALUE
-- ---------------------------------- ----------- ------------------------------
db_recovery_file_dest string E:\app\WPeng\product\ 11.1 . 0 \fl
ash_recover_area\
db_recovery_file_dest_size big integer 2G
db_recycle_cache_size big integer 0
SQL > show parameter log_arc
切换归档日志模式:
--
查询是否处于归档模式
SQL > archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination E:\app\WPeng\product\ 11.1 . 0 \db_1\RDBMS
Oldest online log sequence 107
Current log sequence 109
-- 或者 SQL查询
SQL > select log_mode from v$ database ;
LOG_MODE
-- ----------
NOARCHIVELOG
SQL > archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination E:\app\WPeng\product\ 11.1 . 0 \db_1\RDBMS
Oldest online log sequence 107
Current log sequence 109
-- 或者 SQL查询
SQL > select log_mode from v$ database ;
LOG_MODE
-- ----------
NOARCHIVELOG
--
需要shutdown修改database的状态
SQL > shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
-- 将数据库启动到mount状态
SQL > startup mount
ORACLE instance started.
Total System Global Area 1319546880 bytes
Fixed Size 2114656 bytes
Variable Size 503319456 bytes
Database Buffers 805306368 bytes
Redo Buffers 8806400 bytes
Database mounted.
-- 修改数据的归档模式
SQL > alter database archivelog;
Database altered.
-- 查询 修改之后的归档模式
SQL > archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination E:\app\WPeng\product\ 11.1 . 0 \db_1\RDBMS
Oldest online log sequence 107
Next log sequence to archive 109
Current log sequence 109
SQL > shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
-- 将数据库启动到mount状态
SQL > startup mount
ORACLE instance started.
Total System Global Area 1319546880 bytes
Fixed Size 2114656 bytes
Variable Size 503319456 bytes
Database Buffers 805306368 bytes
Redo Buffers 8806400 bytes
Database mounted.
-- 修改数据的归档模式
SQL > alter database archivelog;
Database altered.
-- 查询 修改之后的归档模式
SQL > archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination E:\app\WPeng\product\ 11.1 . 0 \db_1\RDBMS
Oldest online log sequence 107
Next log sequence to archive 109
Current log sequence 109
--
最后Open Database
SQL > alter database open ;
Database altered.
SQL > alter database open ;
Database altered.
产生归档日志文件:
--
对currnt online redo log file 进行归档
SQL > alter system archive log current ;
System altered.
SQL > alter system archive log current ;
System altered.
手动归档之前,系统首先进行的是一个联机日志的切换。
--
切换联机日志
SQL > alter system switch logfile;
System altered.
SQL > alter system switch logfile;
System altered.
- 手动归档 和 切换日志 其实在10g之后,就没有什么区别,差不多
- 但是在10g之前,两者之间,还有有差别的:10g之前,需要设置手动自动归档(
log_archive_start),否则切换之后,归档进程有可能没有立即执行归档操作,导致Oracle暂时挂起
9I之前
系统只能使用以下两个参数,设置归档路径:
-
log_archive_dest
-
log_archive_duplex_dest
9I之后
系统做了改进,废弃以前的两个参数,使用了10个系统参数,设置归档日志路径。
log_archive_dest_1
-- 作为闪回恢复路径使用
log_archive_dest_10
log_archive_dest_2
log_archive_dest_3
log_archive_dest_4
log_archive_dest_5
log_archive_dest_6
log_archive_dest_7
log_archive_dest_8
log_archive_dest_9
-- 作为闪回恢复路径使用
log_archive_dest_10
log_archive_dest_2
log_archive_dest_3
log_archive_dest_4
log_archive_dest_5
log_archive_dest_6
log_archive_dest_7
log_archive_dest_8
log_archive_dest_9
在使用闪回恢复区的时候,Oracle可以有效地将,恢复or日志相关的文件,都整理到该闪回恢复区,使得目录结构较为整洁;
而在没有使用闪回恢复区之前,归档日志文件存储路径可能较为分散,但是使用以下SQL查询:
select
*
from
v$archived_log;
存储在闪回恢复区和没有存储在闪回恢复区,两者之间的命名也是有一定区别的!
-
O1_MF_1_114_862BTW8C_.ARC
-
ARC00109_0781547223.001
如果没有存储在闪回恢复区,可以使用以下参数,设置归档日志的命名格式:
log_archive_format string ARC
%
S_
%
R.
%
T