轉載-表空間和資料檔案offline的影響分析
簡單的說,offline datafile不做檢查點,online的時候需要恢復
而offline tablespace做檢查點(注意這裡指normal),online的時候不需要恢復
表空間offline
將表空間離線的語法中有三個子句可選,如下:
ALTER TABLESPACE tablespace_name OFFLINE [NORMAL,TEMPORARRY,IMMEDIATE]。
現在對這三個子句的作用及對資料庫的影響做個比較。
【NORMAL 】
如果用NORMAL子句則會使表空間所屬的資料檔案的塊的內容在系統全域性區裡的資料重新整理到檔案中,因此當你再次將表空間聯機時不需要恢復表空間裡的資料檔案。這也是預設子句。
【IMMEDIATE】
如果你在語句中指定IMMEDIATE,則資料庫不確定會對錶空間所屬資料檔案進行檢查點,這時就會造成離線檔案與資料庫不一致,所以當你需要將其聯機時,就需要進行恢復操作。
【TEMPORARY】
如果在語法中指定TEMPORARY 子句,則資料庫會執行檢查點程式,會對離線表空間中的資料檔案進行同步。但資料庫不能確定會對所有資料檔案進行。所以當你將表空間聯機時,有可能會需要進行恢復。
比較以下三種狀態對資料字典的影響
RMAN.DBF 檔案offline
users 表空間offline
最後一次,users 表空間offline immediate
sys@FOX> alter database datafile 'D:\ORACLE\ORADATA\FOX\RMAN.DBF' offline;
Database altered.
--dump控制檔案
sys@FOX> ALTER SESSION SET EVENTS 'immediate trace name controlf level 3';
Session altered.
--dump資料檔案
sys@FOX> ALTER SESSION SET EVENTS 'immediate trace name file_hdrs level 2';
Session altered.
sys@FOX> select substr(name, 1, 40) dname, CHECKPOINT_CHANGE#,LAST_CHANGE# ,OFFLINE_CHANGE#,status from v$datafile;
DNAME CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# STATUS
---------------------------------------- ------------------ ------------ --------------- -------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF 2460183058 2460066227 SYSTEM
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\INDX01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\USERS01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\DEMO01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\RMAN.DBF 2460183058 2460183439 2460066227 RECOVER
6 rows selected.
sys@FOX> select substr(name, 1, 40) dname, CHECKPOINT_CHANGE#,LAST_CHANGE# ,OFFLINE_CHANGE#,creation_change#,status from
v$datafile;
DNAME CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# CREATION_CHANGE# STATUS
---------------------------------------- ------------------ ------------ --------------- ---------------- -------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF 2460183058 2460066227 5 SYSTEM
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF 2460183058 2460066227 5042 ONLINE
D:\ORACLE\ORADATA\FOX\INDX01.DBF 2460183058 2460066227 6491 ONLINE
D:\ORACLE\ORADATA\FOX\USERS01.DBF 2460183058 2460066227 6529 ONLINE
D:\ORACLE\ORADATA\FOX\DEMO01.DBF 2460183058 2460066227 483025 ONLINE
D:\ORACLE\ORADATA\FOX\RMAN.DBF 2460183058 2460183439 2460066227 1899464 RECOVER
6 rows selected.
從dump的cf檔案可以看到檔案8的 Stop scn: 0x0000.92a36b8f
sys@FOX> select to_number('92a36b8f','xxxxxxxx') from dual;
TO_NUMBER('92A36B8F','XXXXXXXX')
--------------------------------
2460183439
就是last_change#
sys@FOX> alter tablespace users offline;
Tablespace altered.
sys@FOX> select name,SCNBAS from ts$;
NAME SCNBAS
-------------------------------------------------- ----------
SYSTEM 0
UNDOTBS1 0
TEMP 0
INDX 0
TOOLS 0
USERS 2460183864
DEMO 0
TEST 0
RMAN 0
sys@FOX> select substr(name, 1, 40) dname, CHECKPOINT_CHANGE#,LAST_CHANGE# ,OFFLINE_CHANGE#,status from v$datafile;
DNAME CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# STATUS
---------------------------------------- ------------------ ------------ --------------- -------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF 2460183058 2460066227 SYSTEM
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\INDX01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\USERS01.DBF 2460183864 2460183864 2460066227 OFFLINE
D:\ORACLE\ORADATA\FOX\DEMO01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\RMAN.DBF 2460183058 2460183439 2460066227 RECOVER
6 rows selected.
sys@FOX> select substr(name,1,40) dname, recover, fuzzy, checkpoint_change#,CHECKPOINT_COUNT from v$datafile_header;
DNAME REC FUZ CHECKPOINT_CHANGE# CHECKPOINT_COUNT
---------------------------------------- --- --- ------------------ ----------------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF NO YES 2460183058 1708
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF NO YES 2460183058 1701
D:\ORACLE\ORADATA\FOX\INDX01.DBF NO YES 2460183058 1692
0 0
D:\ORACLE\ORADATA\FOX\DEMO01.DBF NO YES 2460183058 1661
D:\ORACLE\ORADATA\FOX\RMAN.DBF YES YES 2460183058 1637
6 rows selected.
tablespace offline normal時,生成了一個ts$.SCNBAS(離線scn),對應於每個資料檔案的結束SCN,基於ts$.SCNBAS(離線scn)能夠直接online
同時可以看到users表空間對應的checkpoint_change#=last_change#
會影響CONTROLFILE_CHANGE#
再來看offline immediate
沒有生成離線scn。也會影響CONTROLFILE_CHANGE#
sys@FOX> alter tablespace users offline immediate;
Tablespace altered.
sys@FOX> select name,SCNBAS from ts$;
NAME SCNBAS
-------------------------------------------------- ----------
SYSTEM 0
UNDOTBS1 0
TEMP 0
INDX 0
TOOLS 0
USERS 0
DEMO 0
TEST 0
RMAN 0
TESTING_LMT_ASSM 0
TEST_TBS 0
UNDOTBS2 0
TBS_2K 0
T_S 6455446
T_1 0
TEST1 0
TESTING_LMT_MSSM 0
TBS_TEST 0
18 rows selected.
同時可以看到last_change#>checkpoint_change#,這兩個就是檔案恢復的終點和起點
sys@FOX> select substr(name, 1, 40) dname, CHECKPOINT_CHANGE#,LAST_CHANGE# ,OFFLINE_CHANGE#,status from v$datafile;
DNAME CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# STATUS
---------------------------------------- ------------------ ------------ --------------- -------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF 2460183058 2460066227 SYSTEM
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\INDX01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\USERS01.DBF 2460184060 2460184084 2460183864 RECOVER
D:\ORACLE\ORADATA\FOX\DEMO01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\RMAN.DBF 2460183058 2460183439 2460066227 RECOVER
6 rows selected.
sys@FOX> select substr(name,1,40) dname, recover, fuzzy, checkpoint_change#,CHECKPOINT_COUNT from v$datafile_header;
DNAME REC FUZ CHECKPOINT_CHANGE# CHECKPOINT_COUNT
---------------------------------------- --- --- ------------------ ----------------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF NO YES 2460183058 1708
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF NO YES 2460183058 1701
D:\ORACLE\ORADATA\FOX\INDX01.DBF NO YES 2460183058 1692
D:\ORACLE\ORADATA\FOX\USERS01.DBF YES YES 2460184060 1703
D:\ORACLE\ORADATA\FOX\DEMO01.DBF NO YES 2460183058 1661
D:\ORACLE\ORADATA\FOX\RMAN.DBF YES YES 2460183058 1637
6 rows selected.
sys@FOX> recover tablespace users;
Media recovery complete.
sys@FOX> select substr(name, 1, 40) dname, CHECKPOINT_CHANGE#,LAST_CHANGE# ,OFFLINE_CHANGE#,status from v$datafile;
DNAME CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# STATUS
---------------------------------------- ------------------ ------------ --------------- -------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF 2460183058 2460066227 SYSTEM
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\INDX01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\USERS01.DBF 2460184084 2460184084 2460183864 OFFLINE
D:\ORACLE\ORADATA\FOX\DEMO01.DBF 2460183058 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\RMAN.DBF 2460183058 2460183439 2460066227 RECOVER
6 rows selected.
sys@FOX> select substr(name,1,40) dname, recover, fuzzy, checkpoint_change#,CHECKPOINT_COUNT from v$datafile_header;
DNAME REC FUZ CHECKPOINT_CHANGE# CHECKPOINT_COUNT
---------------------------------------- --- --- ------------------ ----------------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF NO YES 2460183058 1708
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF NO YES 2460183058 1701
D:\ORACLE\ORADATA\FOX\INDX01.DBF NO YES 2460183058 1692
D:\ORACLE\ORADATA\FOX\USERS01.DBF NO NO 2460184084 1704
D:\ORACLE\ORADATA\FOX\DEMO01.DBF NO YES 2460183058 1661
D:\ORACLE\ORADATA\FOX\RMAN.DBF YES YES 2460183058 1637
6 rows selected.
sys@FOX> alter tablespace users online;
Tablespace altered.
最後再看一下read only狀態
也會生成離線scn,同時users表空間對應的checkpoint_change#=last_change#
會影響CONTROLFILE_CHANGE#
sys@FOX> alter tablespace USERS read only;
Tablespace altered.
sys@FOX> select name,SCNBAS from ts$;
NAME SCNBAS
-------------------------------------------------- ----------
SYSTEM 0
UNDOTBS1 0
TEMP 0
INDX 0
TOOLS 0
USERS 2460184528
DEMO 0
TEST 0
RMAN 0
TESTING_LMT_ASSM 0
TEST_TBS 0
UNDOTBS2 0
TBS_2K 0
T_S 6455446
T_1 0
TEST1 0
TESTING_LMT_MSSM 0
TBS_TEST 0
18 rows selected.
sys@FOX> select substr(name,1,40) dname, recover, fuzzy, checkpoint_change#,CHECKPOINT_COUNT from v$datafile_header;
DNAME REC FUZ CHECKPOINT_CHANGE# CHECKPOINT_COUNT
---------------------------------------- --- --- ------------------ ----------------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF NO YES 2460184522 1710
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF NO YES 2460184522 1703
D:\ORACLE\ORADATA\FOX\INDX01.DBF NO YES 2460184522 1694
D:\ORACLE\ORADATA\FOX\USERS01.DBF NO NO 2460184528 1708
D:\ORACLE\ORADATA\FOX\DEMO01.DBF NO YES 2460184522 1663
D:\ORACLE\ORADATA\FOX\RMAN.DBF YES YES 2460183058 1637
6 rows selected.
sys@FOX> select substr(name, 1, 40) dname, CHECKPOINT_CHANGE#,LAST_CHANGE# ,OFFLINE_CHANGE#,status from v$datafile;
DNAME CHECKPOINT_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# STATUS
---------------------------------------- ------------------ ------------ --------------- -------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF 2460184522 2460066227 SYSTEM
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF 2460184522 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\INDX01.DBF 2460184522 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\USERS01.DBF 2460184528 2460184528 2460183864 ONLINE
D:\ORACLE\ORADATA\FOX\DEMO01.DBF 2460184522 2460066227 ONLINE
D:\ORACLE\ORADATA\FOX\RMAN.DBF 2460183058 2460183439 2460066227 RECOVER
6 rows selected.
sys@FOX> select substr(name,1,40) dname, recover, fuzzy, checkpoint_change#,CHECKPOINT_COUNT from v$datafile_header;
DNAME REC FUZ CHECKPOINT_CHANGE# CHECKPOINT_COUNT
---------------------------------------- --- --- ------------------ ----------------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF NO YES 2460184522 1710
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF NO YES 2460184522 1703
D:\ORACLE\ORADATA\FOX\INDX01.DBF NO YES 2460184522 1694
D:\ORACLE\ORADATA\FOX\USERS01.DBF NO NO 2460184528 1708
D:\ORACLE\ORADATA\FOX\DEMO01.DBF NO YES 2460184522 1663
D:\ORACLE\ORADATA\FOX\RMAN.DBF YES YES 2460183058 1637
6 rows selected.
sys@FOX> select checkpoint_change#,CONTROLFILE_CHANGE#,resetlogs_change# from v$database;
CHECKPOINT_CHANGE# CONTROLFILE_CHANGE# RESETLOGS_CHANGE#
------------------ ------------------- -----------------
2460184522 2460184528 2460066228
sys@FOX> alter system checkpoint;
System altered.
sys@FOX> select checkpoint_change#,CONTROLFILE_CHANGE#,resetlogs_change# from v$database;
CHECKPOINT_CHANGE# CONTROLFILE_CHANGE# RESETLOGS_CHANGE#
------------------ ------------------- -----------------
2460184615 2460184615 2460066228
sys@FOX> select substr(name,1,40) dname, recover, fuzzy, checkpoint_change#,CHECKPOINT_COUNT from v$datafile_header;
DNAME REC FUZ CHECKPOINT_CHANGE# CHECKPOINT_COUNT
---------------------------------------- --- --- ------------------ ----------------
D:\ORACLE\ORADATA\FOX\SYSTEM01.DBF NO YES 2460184615 1711
D:\ORACLE\ORADATA\FOX\UNDOTBS01.DBF NO YES 2460184615 1704
D:\ORACLE\ORADATA\FOX\INDX01.DBF NO YES 2460184615 1695
D:\ORACLE\ORADATA\FOX\USERS01.DBF NO NO 2460184528 1708
D:\ORACLE\ORADATA\FOX\DEMO01.DBF NO YES 2460184615 1664
D:\ORACLE\ORADATA\FOX\RMAN.DBF YES YES 2460183058 1637
6 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11088128/viewspace-692430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 表空間與資料檔案的offline和online操作
- 表空間和資料檔案的管理
- Oracle 表空間和資料檔案遇到的坑 (轉載於 微信公眾號 JieKeXu DBA之路)Oracle
- 達夢資料庫之初始化頁大小對於表及表空間的影響分析資料庫
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- Oracle單個資料檔案損壞,在Rman命令裡設定表空間、資料檔案offline方式來恢復最方便Oracle
- 表空間OFFLINE的3種選項。
- oracle 普通表空間資料檔案壞塊Oracle
- 表空間(資料檔案shrink)收縮示例
- PostgreSQL在不同的表空間移動資料檔案SQL
- MySQL InnoDB系統表空間資料檔案配置MySql
- Oracle 10g大檔案表空間(轉)Oracle 10g
- 2.5.9 在資料庫建立期間支援大檔案表空間資料庫
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- 2.5.4 為 SYSAUX 表空間指定資料檔案屬性UX
- 關於丟失表空間資料檔案的處理方式
- Oracle 表空間增加檔案Oracle
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- 聊聊Oracle表空間Offline的三種引數(下)Oracle
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 【BBED】使用BBED修改資料檔案SCN,使該檔案從offline轉變為online
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- 達夢資料庫系統表空間資料檔案遷移過程資料庫
- oracle dg庫資料檔案空間不足Oracle
- 利用offline datafile檔案方式遷移資料
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- MySQL 系統表空間檔案解析MySql
- (轉載)刪除檔案後硬碟空間不釋放的問題硬碟
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- MySQL innodb表使用表空間物理檔案複製表MySql
- [轉帖]達夢資料庫-統計資料表資料量及空間表大小資料庫
- 3576.02空間指令碼brain.script,02檔案, 02“XX_brain”資料夾, 01空間資料夾, 04TB檔案指令碼AI
- c盤可以刪除哪些檔案 怎樣清理c盤空間不影響系統
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- 怎樣清理c盤空間不影響系統 清理c盤無用檔案的辦法
- 源資料檔案(.csv)中的空格串和空串對pandas讀取結果的影響
- 檢視磁碟使用空間和檔案大小