Oracle完全脱机,部分脱机与部分联机备份(二)

2014-11-24 09:06:00 · 作者: · 浏览: 6
使用于归档模式,也可以使用于非归档模式,而下面的
--alter system archive log current;只能使用于归档模式
下面我们来了解一下SCN(SYSTEM CHANGE NUMBER)
我们可以通过下面语句来查询系统的SCN号,SCN号是不断变化的,即使系统没进行任何操作,每3秒钟也会增加一次:
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
13229463956339
10G之后可以通过下面的语句来查询:
SELECT a.current_scn FROM v$database a;
备份恢复的概念:
CREATE TABLE t_SCN(ID NUMBER(38), SCN NUMBER);
SELECT * FROM v$log;
SQL> SELECT * FROM v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 161 52428800 1 NO CURRENT 1322946395561 2013/6/2 10
2 1 159 52428800 1 YES INACTIVE 1322946395548 2013/6/2 10
3 1 160 52428800 1 YES INACTIVE 1322946395551 2013/6/2 10
可知当前日志的开始SCN号是:1322946395561
INSERT INTO t_scn values(1, dbms_flashback.get_system_change_number);
--所以我们进行了插入操作之后,这条语句产生的日志就在161这组日志里
select * from t_scn;--13229463960251
--提交
COMMIT;
保证产生的日志写到日志里面,因为有可能日志存在buffer中;
手动归档
SQL> alter system switch logfile;
System altered.
--查看当前的日志,起始SCN号为:1322946396032
SQL> SELECT * FROM v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 161 52428800 1 YES ACTIVE 1322946395561 2013/6/2 10
2 1 162 52428800 1 NO CURRENT 1322946396032 2013/6/2 11
3 1 160 52428800 1 YES INACTIVE 1322946395551 2013/6/2 10
SELECT a.sequence# 日志序号, a.first_change# 日志中最小的SCN号, a.next_change# 日志中最大的SCN号 FROM v$archived_log a WHERE a.sequence# = 161;
--再插入两次值,并切换日志:
INSERT INTO t_scn values(1, dbms_flashback.get_system_change_number);
COMMIT;
alter system switch logfile;
SQL> SELECT * FROM v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 161 52428800 1 YES INACTIVE 1322946395561 2013/6/2 10
2 1 162 52428800 1 YES ACTIVE 1322946396032 2013/6/2 11
3 1 163 52428800 1 NO CURRENT 1322946396049 2013/6/2 11
INSERT INTO t_scn values(1, dbms_flashback.get_system_change_number);
COMMIT;
alter system switch logfile;
SQL> SELECT * FROM v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 164 52428800 1 NO CURRENT 1322946396056 2013/6/2 11
2 1 162 52428800 1 YES ACTIVE 1322946396032 2013/6/2 11
3 1 163 52428800 1 YES ACTIVE 1322946396049 2013/6/2 11
SELECT a.sequence# 日志序号, a.first