聊聊Oracle表空間Offline的三種引數(下)
6、非歸檔情況Offline處理
上面的一系列討論,都是在歸檔檔案模式下進行的實驗。如果在非歸檔情況下,我們面對的問題是不同的。
首先,非歸檔模式下,表空間可以進行normal offline操作。
SQL> alter database noarchivelog;
Database altered.
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 22
Current log sequence 24
建立表空間,檢視檔案狀態的。
SQL> create tablespace testtbs datafile size 10m extent management local uniform. size 1m segment space management auto;
Tablespace created
SQL> alter tablespace testtbs add datafile size 20m autoextend on;
Tablespace altered
SQL> select tablespace_name, status from dba_tablespaces where tablespace_name='TESTTBS';
TABLESPACE_NAME STATUS
------------------------------ ---------
TESTTBS ONLINE
SQL> select file_name, status, online_status from dba_data_files where tablespace_name='TESTTBS';
FILE_NAME STATUS ONLINE_STATUS
-------------------- --------- -------------
/u01/app/oradata/ORA AVAILABLE ONLINE
11G/datafile/o1_mf_t
esttbs_94hsw8oo_.dbf
/u01/app/oradata/ORA AVAILABLE ONLINE
11G/datafile/o1_mf_t
esttbs_94hswx27_.dbf
正常Offline Tablespace。
SQL> alter tablespace testtbs offline normal;
Tablespace altered
SQL> select tablespace_name, status from dba_tablespaces where tablespace_name='TESTTBS';
TABLESPACE_NAME STATUS
------------------------------ ---------
TESTTBS OFFLINE
SQL> select file_name, status, online_status from dba_data_files where tablespace_name='TESTTBS';
FILE_NAME STATUS ONLINE_STATUS
-------------------- --------- -------------
/u01/app/oradata/ORA AVAILABLE OFFLINE
11G/datafile/o1_mf_t
esttbs_94hsw8oo_.dbf
/u01/app/oradata/ORA AVAILABLE OFFLINE
11G/datafile/o1_mf_t
esttbs_94hswx27_.dbf
SQL> alter tablespace testtbs online;
Tablespace altered
在非歸檔模式下,單獨對資料檔案進行offline是不允許的。
SQL> alter database datafile '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hsw8oo_.dbf' offline;
alter database datafile '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hsw8oo_.dbf' offline
ORA-01145: 除非啟用了介質恢復, 否則不允許立即離線
試想一下,這個過程是可以理解的。Oracle認為:如果你將檔案進行offline,與表空間不一致。那麼,一旦檔案online的時候,一定是需要進行recover來“追”上表空間中其他檔案。這個過程就是需要連續的redo log來進行apply動作。
在非歸檔模式下,連續的操作redo log file是不容易拿到的。從Oracle理論上,也就認為說不可能拿到的。所以,這個時候,Oracle索性禁止這種操作行為。
那麼,是不是非歸檔模式下,就不允許進行單獨檔案的offline了呢?不是的,只要你“允諾”說不會再回來。
透過後臺,我們刪除了資料檔案。
--刪除掉資料檔案
[oracle@SimpleLinux ~]$ rm /u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hswx27_.dbf
[oracle@SimpleLinux ~]$
SQL> alter system checkpoint;
alter system checkpoint
此時,資料庫發現故障,例項終止。注意:不同版本Oracle在這個問題上行為有一些差異。CKPT將例項終止。
Sun Sep 29 16:59:08 2013
Beginning global checkpoint up to RBA [0x18.ad3e.10], SCN: 1062240
Errors in file /u01/app/diag/rdbms/ora11g/ora11g/trace/ora11g_ckpt_27311.trc:
ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode
ORA-01116: error in opening database file 7
ORA-01110: data file 7: '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hswx27_.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Errors in file /u01/app/diag/rdbms/ora11g/ora11g/trace/ora11g_ckpt_27311.trc:
ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode
ORA-01116: error in opening database file 7
ORA-01110: data file 7: '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hswx27_.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Sun Sep 29 16:59:08 2013
System state dump requested by (instance=1, sid=27311 (CKPT)), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/diag/rdbms/ora11g/ora11g/trace/ora11g_diag_27299.trc
CKPT (ospid: 27311): terminating the instance due to error 1242
Dumping diagnostic data in directory=[cdmp_20130929165908], requested by (instance=1, sid=27311 (CKPT)), summary=[abnormal instance termination].
Instance terminated by CKPT, pid = 27311
--資料庫終止
[oracle@SimpleLinux ~]$ ps -ef | grep pmon
oracle 27487 27404 0 17:00 pts/2 00:00:00 grep pmon
[oracle@SimpleLinux ~]$
我們將資料庫啟動到mount狀態,之後可以offline drop檔案。
--啟動到mount狀態。
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 376635392 bytes
Fixed Size 1345072 bytes
Variable Size 306186704 bytes
Database Buffers 62914560 bytes
Redo Buffers 6189056 bytes
Database mounted.
SQL> select file#, status, recover, fuzzy, CHECKPOINT_CHANGE# from v$datafile_header;
FILE# STATUS RECOVER FUZZY CHECKPOINT_CHANGE#
---------- ------- ------- ----- ------------------
1 ONLINE NO YES 1062240
2 ONLINE NO YES 1062240
3 ONLINE NO YES 1062240
4 ONLINE NO YES 1062240
5 ONLINE NO YES 1062240
6 ONLINE NO YES 1062240
7 ONLINE 0
7 rows selected
--直接offline不允許
SQL> alter database datafile 7 offline;
alter database datafile 7 offline
ORA-01145: 除非啟用了介質恢復, 否則不允許立即離線
--未開啟情況下,表空間狀態不明確
SQL> alter tablespace testtbs offline;
alter tablespace testtbs offline
ORA-01109: 資料庫未開啟
--Offline Drop
SQL> alter database datafile 7 offline drop;
Database altered
SQL> alter database open;
Database altered
SQL> drop tablespace testtbs;
Tablespace dropped
顧名思義,Offline Drop就是永久性的刪除這個物件,也就不需要了。更不要提到重新迴歸online。
7、結論
最後,我們來總結一下Offline三種引數的情況。
offline normal:是最常用的場景,也是最不容易出問題的場景。Offline Normal的時候,Oracle會在表空間內部進行Check Point動作,保證表空間內部各個檔案頭上面的SCN一致,也就是資料一致。如果存在資料檔案不能前推SCN,如已經Offline,的情況,offline normal失效報錯。
offline temporary:比Normal要求略松的一種關閉模式。Temporary模式下,Oracle依然會去“嘗試”統一表空間內部檔案頭的SCN號。如果資料檔案可以統一,就進行Check Point動作,如果檔案不能統一,操作也不會報錯,只是將其狀態標記為不一致。Temporary模式下Offline的表空間Online的時候,那些“有問題”的不一致檔案,是需要進行media recovey的。沒有問題,打入check point的資料檔案,就不需要進行恢復動作。
offline immediate:最松的一種offline模式。Immediate模式下,Oracle不會進行check point動作,無論有無問題的Datafile,都會被設定為需要Recover過程。在重新online的時候,表空間就需要進行重新的全表空media recover。
在日常選擇上,我們傾向嚴格的原則。因為非Normal方式的offline,都需要藉助外部的redo log進行media recover動作。選擇的順序是normal,temporary和immediate。
Oracle表空間的Offline動作,是我們非常常用的一種日常維護操作手段。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2151760/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- 表空間OFFLINE的3種選項。
- Oracle表空間Oracle
- oracle 表空間Oracle
- oracle表空間的整理Oracle
- 表空間與資料檔案的offline和online操作
- 增加oracle表空間Oracle
- oracle temp 表空間Oracle
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- Oracle 批量建表空間Oracle
- Oracle清理SYSAUX表空間OracleUX
- Oracle的表空間quota詳解Oracle
- Oracle OCP(47):表空間的建立Oracle
- Oracle Temp 表空間切換Oracle
- Oracle 表空間增加檔案Oracle
- Oracle OCP(49):表空間管理Oracle
- Oracle表空間收縮方案Oracle
- Oracle RMAN 表空間恢復Oracle
- Oracle中表空間、表、索引的遷移Oracle索引
- Oracle新建使用者、表空間、表Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle臨時表空間相關Oracle
- oracle sql 表空間利用率OracleSQL
- 【Oracle 恢復表空間】 實驗Oracle
- 【TABLESPACE】Oracle表空間最佳實踐Oracle
- 剛體在三維空間的旋轉-幾種表達方式
- 聊聊Go工作空間Go
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- Oracle中新建表空間、使用者Oracle
- ORACLE線上切換undo表空間Oracle
- oracle表空間增長趨勢分析Oracle
- Oracle OCP(46):表空間、段、區、塊Oracle
- 【TABLESPACE】Oracle 表空間結構說明Oracle
- Oracle RAC+DG 表空間擴容Oracle
- oracle表空間使用率查詢Oracle