Oracle中表空間offline的三種引數對比案例
Oracle資料庫管理中,對錶空間操作是基礎中的基礎。其中,表空間Offline是我們經常接觸的。同資料檔案Offline一起,構成了Oracle維護資料一致性的重要體系結構。
一般我們比較常接觸到的,就是直接的alter tablespace xxx offline操作。但是在實際中,針對表空間對應資料檔案的不同情況,Oracle提供了三種offline的引數。同資料庫關閉shutdown對應的若干種引數一樣,不同的offline引數對應Oracle不同的行為,更引出後續不同的處理方法。
下面是Oracle11g官方文件關於表空間offline的相關解釋說明:
*************************************************************************************************************
You may want to take a tablespace offline for any of the following reasons:
- To make a portion of the database unavailable while allowing normal access to the remainder of the database
- To perform an offline tablespace backup (even though a tablespace can be backed up while online and in use)
- To make an application and its group of tables temporarily unavailable while updating or maintaining the application
- To rename or relocate tablespace datafiles
希望使表空間offline的原因如下:
?使資料庫的一部分不訪問,同時允許正常訪問資料庫的其餘部分
?要執行離線表空間備份(即使可以線上並在使用中備份表空間)
?在更新或維護應用程式時,使應用程式及其一組表暫時不可用
?重新命名或重新定位表空間資料檔案
When a tablespace is taken offline, the database takes all the associated files offline.
當表空間離線時,資料庫會將所有關聯的檔案離線。
You cannot take the following tablespaces offline:
- SYSTEM
- The undo tablespace
- Temporary tablespaces
SYSTEM、undo表空間、臨時表空間不可以offline;
Before taking a tablespace offline, consider altering the tablespace allocation of any users who have been assigned the tablespace as a default tablespace. Doing so is advisable because those users will not be able to access objects in the tablespace while it is offline.
在使表空間離線之前,請考慮將已分配表空間的任何使用者的表空間分配更改為預設表空間。 這樣做是可取的,因為這些使用者在離線時將無法訪問表空間中的物件。
You can specify any of the following parameters as part of the ALTER TABLESPACE...OFFLINE statement:
Clause |
Description |
NORMAL |
A tablespace can be taken offline normally if no error conditions exist for any of the datafiles of the tablespace. No datafile in the tablespace can be currently offline as the result of a write error. When you specify OFFLINE NORMAL, the database takes a checkpoint for all datafiles of the tablespace as it takes them offline. NORMAL is the default.
1、normal 是offline的預設方式 |
TEMPORARY |
A tablespace can be taken offline temporarily, even if there are error conditions for one or more files of the tablespace. When you specify OFFLINE TEMPORARY, the database takes offline the datafiles that are not already offline, checkpointing them as it does so. If no files are offline, but you use the temporary clause, media recovery is not required to bring the tablespace back online. However, if one or more files of the tablespace are offline because of write errors, and you take the tablespace offline temporarily, the tablespace requires recovery before you can bring it back online.
1、offline temporary 表空間時,如果表空間中沒有offline的資料檔案,則online該表空間時不需要介質恢復。 |
IMMEDIATE |
A tablespace can be taken offline immediately, without the database taking a checkpoint on any of the datafiles. When you specify OFFLINE IMMEDIATE, media recovery for the tablespace is required before the tablespace can be brought online. You cannot take a tablespace offline immediately if the database is running in NOARCHIVELOGmode.
1、offline immediate 不會對錶空間的任何檔案執行檢查點操作。 |
Caution:
If you must take a tablespace offline, use the NORMAL clause (the default) if possible. This setting guarantees that the tablespace will not require recovery to come back online, even if after incomplete recovery you reset the redo log sequence using an ALTER DATABASE OPEN RESETLOGS statement.
如果必須使表空間離線,請儘可能使用NORMAL子句(預設值)。 此設定保證表空間不需要恢復線上恢復,即使在不完全恢復後,使用ALTER DATABASE OPEN RESETLOGS語句重置重做日誌序列。
Speify TEMPORARY only when you cannot take the tablespace offline normally. In this case, only the files taken offline because of errors need to be recovered before the tablespace can be brought online. Specify IMMEDIATE only after trying both the normal and temporary settings.
僅在不能使表空間正常離線時指定TEMPORARY。 在這種情況下,只有在出現錯誤的情況下離線的檔案需要在表空間上線之前恢復。 僅在嘗試正常和臨時設定之後才指定IMMEDIATE。
The following example takes the users tablespace offline normally:
ALTER TABLESPACE users OFFLINE NORMAL;
*************************************************************************************************************
透過以上官方文件的說明,將表空間進行Offline的命令很簡單,就是alter tablespace xxx offline;根據不同的情況,可以使用三種引數進行命令修飾,分別為normal、temporary和immediate。三個命令分別對應了Offline過程的不同行為。
下面的實驗中,我們透過具體的案例來區別三種命令引數的不同之處:
實驗環境:
(注意:是否歸檔模式對於資料表空間和檔案Offline行為至關重要!)
SYS@seiang11g>select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 – Production
SYS@seiang11g>archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/arch
Oldest online log sequence 50
Next log sequence to archive 52
Current log sequence 52
示例一:歸檔模式下offline normal
建立表空間wjqtest,為了更加明顯進行試驗,該表空間由兩個資料檔案構成。
SYS@seiang11g>create tablespace wjqtest datafile '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf' size 5M
2 extent management local uniform size 1M
3 segment space management auto;
Tablespace created.
SYS@seiang11g>
SYS@seiang11g>alter tablespace wjqtest add datafile '/u01/app/oracle/oradata/OraDB11g/wjqtest02.dbf' size 5M;
Tablespace altered.
SYS@seiang11g>select tablespace_name,status from dba_tablespaces where tablespace_name='WJQTEST';
TABLESPACE_NAME STATUS
------------------------------ ---------
WJQTEST ONLINE
SYS@seiang11g>select file_name,status,online_status from dba_data_files where tablespace_name='WJQTEST';
FILE_NAME STATUS ONLINE_
-------------------------------------------------- --------- -------
/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf AVAILABLE ONLINE
/u01/app/oracle/oradata/OraDB11g/wjqtest02.dbf AVAILABLE ONLINE
SCOTT@seiang11g>create table wjqtest tablespace wjqtest as select * from dba_objects where rownum<1000;
Table created.
SCOTT@seiang11g>select count(*) from wjqtest;
COUNT(*)
----------
999
SYS@seiang11g>alter tablespace wjqtest offline normal;
Tablespace altered.
SYS@seiang11g>select tablespace_name ,status from dba_tablespaces where tablespace_name='WJQTEST';
TABLESPACE_NAME STATUS
------------------------------ ---------
WJQTEST OFFLINE
SYS@seiang11g>select file_name,status,online_status from dba_data_files where tablespace_name='WJQTEST';
FILE_NAME STATUS ONLINE_
-------------------------------------------------- --------- -------
/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf AVAILABLE OFFLINE
/u01/app/oracle/oradata/OraDB11g/wjqtest02.dbf AVAILABLE OFFLINE
[oracle@seiang11g trace]$ tail -f alert_seiang11g.log
Tue Sep 26 13:19:22 2017
alter tablespace wjqtest offline normal
Completed: alter tablespace wjqtest offline normal
Tue Sep 26 13:19:22 2017
Starting background process SMCO
Tue Sep 26 13:19:22 2017
SMCO started with pid=31, OS id=6497
Tue Sep 26 13:19:30 2017
Checker run found 3 new persistent data failures
資料檔案一個很重要的內容就是資料檔案頭的SCN號。我們知道,如果完全關閉資料庫或者check point的時候,Oracle是要保證控制檔案和資料檔案頭的SCN一致。
SYS@seiang11g>select file#, status, recover, fuzzy, checkpoint_change# from v$datafile_header;
FILE# STATUS REC FUZ CHECKPOINT_CHANGE#
---------- ------- --- --- ------------------
1 ONLINE NO YES 1860869
2 ONLINE NO YES 1860869
3 ONLINE NO YES 1860869
4 ONLINE NO YES 1860869
5 ONLINE NO YES 1860869
6 ONLINE NO YES 1860869
7 ONLINE NO YES 1860869
8 OFFLINE 0
9 OFFLINE 0
9 rows selected.
SYS@seiang11g>
SYS@seiang11g>select file#,checkpoint_change#,online_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# ONLINE_CHANGE#
---------- ------------------ --------------
1 1860869 925702
2 1860869 925702
3 1860869 925702
4 1860869 925702
5 1860869 951158
6 1860869 0
7 1860869 0
8 1862009 0
9 1862009 0
9 rows selected.
RMAN> list failure all;
using target database control file instead of recovery catalog
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
254 HIGH OPEN 26-SEP-17 Tablespace 9: 'WJQTEST' is offline
222 HIGH OPEN 26-SEP-17 One or more non-system datafiles are offline
如果是正常的offline normal,是可以直接online回正常的表空間。
SYS@seiang11g>alter tablespace wjqtest online;
Tablespace altered.
SYS@seiang11g>select file#, status, recover, fuzzy, checkpoint_change# from v$datafile_header;
FILE# STATUS REC FUZ CHECKPOINT_CHANGE#
---------- ------- --- --- ------------------
1 ONLINE NO YES 1860869
2 ONLINE NO YES 1860869
3 ONLINE NO YES 1860869
4 ONLINE NO YES 1860869
5 ONLINE NO YES 1860869
6 ONLINE NO YES 1860869
7 ONLINE NO YES 1860869
8 ONLINE NO YES 1862119
9 ONLINE NO YES 1862119
9 rows selected.
SYS@seiang11g>
SYS@seiang11g>select file#,checkpoint_change#,online_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# ONLINE_CHANGE#
---------- ------------------ --------------
1 1860869 925702
2 1860869 925702
3 1860869 925702
4 1860869 925702
5 1860869 951158
6 1860869 0
7 1860869 0
8 1862119 1862119
9 1862119 1862119
9 rows selected.
[oracle@seiang11g trace]$ tail -f alert_seiang11g.log
Tue Sep 26 13:21:47 2017
alter tablespace wjqtest online
Completed: alter tablespace wjqtest online
RMAN> list failure all;
no failures found that match specification
在資料庫正常情況下,出於對效能考慮資料檔案頭SCN號是不能維持一致的。我們使用offline normal之後,各個資料檔案頭SCN相同。所以,offline normal特性是在offline的時候,要在表空間所有檔案上打check point,只要能夠打上SCN號,offline normal是可以正常完成的。也就是說,offline normal是表空間各個檔案一致性的關閉。
示例二:歸檔模式下offline temporary
Offline Normal是一種比較理想的情況。在很多時候,Offline一個Tablespace的時候,並不能執行成功。比如,在offline操作的時候,如果此時有正在進行的對錶空間物件的DDL和DML操作,offline可能會受到影響。此外,如果一個表空間中有資料檔案已經被Offline過了,我們正常是不能夠進行offline normal的。此時,我們就需要使用temporary。
我們首先將表空間的其中一個資料檔案offline。
SYS@seiang11g>alter database datafile '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf' offline;
Database altered.
注意:這個操作是在Archivelog模式下才能進行。如果是在非歸檔模式下,直接offline表空間中的一個資料檔案會出現ORA-01145的錯誤如下所示:
SYS@seiang11g>alter database datafile
'/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf' offline;
alter database datafile '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf'
offline
*
ERROR at line 1:
ORA-01145: offline immediate disallowed unless media
recovery enabled
SYS@seiang11g>!oerr ora 01145
01145, 00000, "offline immediate disallowed unless media recovery
enabled"
// *Cause: ALTER TABLESPACE ... OFFLINE IMMEDIATE or ALTER DATABASE
DATAFILE
// ... OFFLINE is only
allowed if database is in ARCHIVELOG mode.
// *Action:Take tablespace offline normally or shutdown abort. Reconsider
your
// backup strategy. You could
do this if you were archiving your logs.
要想對資料檔案離線,必須在歸檔模式下,這是Oracle自動保護的一種措施,防止在非歸檔模式下對資料檔案離線,造成資料丟失。
解決辦法:
可以在非歸檔模式下,
使用alter
database datafile '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf
' offline for drop;語句將資料檔案離線,drop並不會刪除物理檔案。如果沒有使用alter
system switch logfile;切換日誌檔案組,那麼可以採用recover
datafile XXX;來恢復,並聯機。如果已切換日誌檔案組並清空了裡面的內容,這個資料檔案就不能再恢復聯機,永遠處於recover狀態(可以透過v$datafile檢視檢視)。所以如果在實際的生產環境中,儘量在歸檔模式下做離線資料檔案操作。
SYS@seiang11g>
SYS@seiang11g>select tablespace_name,status from dba_tablespaces where tablespace_name='WJQTEST';
TABLESPACE_NAME STATUS
------------------------------ ---------
WJQTEST ONLINE
觀察表空間和資料檔案狀態,發現被offline的資料檔案狀態為Recover。
SYS@seiang11g>select file_name,status,online_status from dba_data_files where tablespace_name='WJQTEST';
FILE_NAME STATUS ONLINE_
-------------------------------------------------- --------- -------
/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf AVAILABLE RECOVER
/u01/app/oracle/oradata/OraDB11g/wjqtest02.dbf AVAILABLE ONLINE
看到的檔案recover狀態,就表明如果需要這個檔案回到Online狀態,需要進行Recover。此時,Online狀態表空間下的幾個檔案狀態是不一致的。
注意,Oracle維持資料檔案一致性,是一個動態一致性的過程。如果某一個檔案或者物件臨時性的退出了這個一致性機制,就表示這個檔案或者物件已經不一致。如果該物件希望迴歸到原有的一致性體系裡面,就需要進行Recover。Oracle進行Recover手段就需要藉助於連續的redo log檔案。
嘗試使用offline normal表空間
SYS@seiang11g>alter tablespace wjqtest offline normal;
alter tablespace wjqtest offline normal
*
ERROR at line 1:
ORA-01191: file 8 is already offline - cannot do a normal offline
ORA-01110: data file 8: '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf'
SCOTT@seiang11g>create table tb_test tablespace wjqtest as select * from dba_objects where 1=0;
Table created.
[oracle@seiang11g trace]$ tail -f alert_seiang11g.log
Tue Sep 26 13:26:53 2017
alter tablespace wjqtest offline normal
ORA-1191 signalled during: alter tablespace wjqtest offline normal...
Tue Sep 26 13:26:53 2017
Checker run found 1 new persistent data failures
正常normal offline已經不能成功了。此時可以使用temporary引數。
SYS@seiang11g>alter tablespace wjqtest offline temporary;
Tablespace altered.
SYS@seiang11g>
SYS@seiang11g>select tablespace_name,status from dba_tablespaces where tablespace_name='WJQTEST';
TABLESPACE_NAME STATUS
------------------------------ ---------
WJQTEST OFFLINE
SYS@seiang11g>
SYS@seiang11g>select file_name,status,online_status from dba_data_files where tablespace_name='WJQTEST';
FILE_NAME STATUS ONLINE_
-------------------------------------------------- --------- -------
/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf AVAILABLE RECOVER
/u01/app/oracle/oradata/OraDB11g/wjqtest02.dbf AVAILABLE OFFLINE
[oracle@seiang11g trace]$ tail -f alert_seiang11g.log
Tue Sep 26 13:30:01 2017
alter tablespace wjqtest offline temporary
Completed: alter tablespace wjqtest offline temporary
Tue Sep 26 13:30:15 2017
Checker run found 2 new persistent data failures
使用temporary引數實現了Offline。但是對於那個提前進行offline的資料檔案,狀態依然是recover。猜想,Temporary Offline的過程是一種不一致的關閉。
檢視檢視v$datafile和v$datafile_header反映了控制檔案和資料檔案頭中檔案SCN號的記錄。在offline normal的時候,我們看到了各個檔案的一致性。在進行offline normal的時候,Oracle是打入了一個check point(內部),來同步各個檔案的檔案頭SCN。
在使用Temporary的時候,檢視狀態如何呢?
SYS@seiang11g>select file#, status, recover, fuzzy, checkpoint_change# from v$datafile_header;
FILE# STATUS REC FUZ CHECKPOINT_CHANGE#
---------- ------- --- --- ------------------
1 ONLINE NO YES 1860869
2 ONLINE NO YES 1860869
3 ONLINE NO YES 1860869
4 ONLINE NO YES 1860869
5 ONLINE NO YES 1860869
6 ONLINE NO YES 1860869
7 ONLINE NO YES 1860869
8 OFFLINE YES YES 1862119
9 OFFLINE NO NO 1862456
9 rows selected.
SYS@seiang11g>
SYS@seiang11g>select file#,checkpoint_change#,online_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# ONLINE_CHANGE#
---------- ------------------ --------------
1 1860869 925702
2 1860869 925702
3 1860869 925702
4 1860869 925702
5 1860869 951158
6 1860869 0
7 1860869 0
8 1862119 1862119
9 1862456 1862119
9 rows selected.
控制檔案和資料檔案頭上面兩個檔案的SCN編號不相同,說明在一個表空間內部檔案的SCN號是不一致的。
說明:在Temporary Offline的時候,一些“有問題”的資料檔案和“沒問題”的資料檔案狀態是可以不一樣。“沒問題”的資料檔案之間SCN號是一致。
如果此時直接Online表空間的話會報錯ORA-01113和ORA-01110。
SYS@seiang11g>alter tablespace wjqtest online;
alter tablespace wjqtest online
*
ERROR at line 1:
ORA-01113: file 8 needs media recovery
ORA-01110: data file 8: '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf'
在online的時候,Oracle一定會去online一個“一致”的表空間。此時,它會發現表空間內部SCN的不一致。根據提示,我們需要手工進行檔案恢復。
SYS@seiang11g>recover datafile 8;
Media recovery complete.
SYS@seiang11g>alter tablespace wjqtest online;
Tablespace altered.
online成功了,在alert 日誌中看到了進行media recovery中使用的redo log apply乃至archived redo log apply過程。注意:此時我們只恢復了datafile 6。
[oracle@seiang11g trace]$ tail -f alert_seiang11g.log
Tue Sep 26 13:34:05 2017
ALTER DATABASE RECOVER datafile 8
Media Recovery Start
Serial Media Recovery started
Recovery of Online Redo Log: Thread 1 Group 1 Seq 52 Reading mem 0
Mem# 0: /u01/app/oracle/oradata/OraDB11g/redo01.log
Media Recovery Complete (seiang11g)
Completed: ALTER DATABASE RECOVER datafile 8
SYS@seiang11g>select file#, status, recover, fuzzy, checkpoint_change# from v$datafile_header;
FILE# STATUS REC FUZ CHECKPOINT_CHANGE#
---------- ------- --- --- ------------------
1 ONLINE NO YES 1860869
2 ONLINE NO YES 1860869
3 ONLINE NO YES 1860869
4 ONLINE NO YES 1860869
5 ONLINE NO YES 1860869
6 ONLINE NO YES 1860869
7 ONLINE NO YES 1860869
8 ONLINE NO YES 1863020
9 ONLINE NO YES 1863020
9 rows selected.
SYS@seiang11g>
SYS@seiang11g>select file#,checkpoint_change#,online_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# ONLINE_CHANGE#
---------- ------------------ --------------
1 1860869 925702
2 1860869 925702
3 1860869 925702
4 1860869 925702
5 1860869 951158
6 1860869 0
7 1860869 0
8 1863020 1862119
9 1863020 1862119
示例三:歸檔模式下offline immediate
首先對錶空間中的一個資料檔案進行offline,然後再對相應的表空間進行offline,就會出現報錯ORA-01191和ORA-01110
SYS@seiang11g>alter database datafile '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf' offline;
Database altered.
SYS@seiang11g>
SYS@seiang11g>alter tablespace wjqtest offline;
alter tablespace wjqtest offline
*
ERROR at line 1:
ORA-01191: file 8 is already offline - cannot do a normal offline
ORA-01110: data file 8: '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf'
此處使用offline immediate操作。
SYS@seiang11g>alter tablespace wjqtest offline immediate;
Tablespace altered.
SYS@seiang11g>
SYS@seiang11g>select file#, status, recover, fuzzy, checkpoint_change# from v$datafile_header;
FILE# STATUS REC FUZ CHECKPOINT_CHANGE#
---------- ------- --- --- ------------------
1 ONLINE NO YES 1863090
2 ONLINE NO YES 1863090
3 ONLINE NO YES 1863090
4 ONLINE NO YES 1863090
5 ONLINE NO YES 1863090
6 ONLINE NO YES 1863090
7 ONLINE NO YES 1863090
8 OFFLINE YES YES 1863090
9 OFFLINE YES YES 1863090
9 rows selected.
SYS@seiang11g>
SYS@seiang11g>select file#,checkpoint_change#,online_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# ONLINE_CHANGE#
---------- ------------------ --------------
1 1863090 925702
2 1863090 925702
3 1863090 925702
4 1863090 925702
5 1863090 951158
6 1863090 0
7 1863090 0
8 1863090 1862119
9 1863090 1862119
[oracle@seiang11g trace]$ tail -f alert_seiang11g.log
Tue Sep 26 13:40:52 2017
alter tablespace wjqtest offline immediate
Completed: alter tablespace wjqtest offline immediate
immediate和temporary相似地方是:在“有問題”資料檔案存在的情況下,表空間依然可以進行Offline操作。但是區別是,Oracle在immediate引數情況下,就不會給任何資料檔案進行check point統一SCN動作了。這種方法類似於shutdown abort。無論檔案是不是有問題,Oracle都不進行檢查和統一動作。
有一個細節需要注意,就是v$datafile_header中的recover列。在normal引數的時候,這個列是不顯示的,也就是表示這個問題不需要關注和理睬。在tempory模式下,只有那些“有問題”檔案才會被標註為YES,也就是需要進行Recover。其他沒問題的檔案狀態為NO,也就是不需要進行recover。上面的案例證明了這點。
在immediate引數情況下,所有檔案狀態都是YES,表示無論好壞,都要進行recover。
下面嘗試online動作。
SYS@seiang11g>alter tablespace wjqtest online;
alter tablespace wjqtest online
*
ERROR at line 1:
ORA-01113: file 8 needs media recovery
ORA-01110: data file 8: '/u01/app/oracle/oradata/OraDB11g/wjqtest01.dbf'
SYS@seiang11g>
SYS@seiang11g>recover datafile 8;
Media recovery complete.
依然不行,需要將所有的檔案都recover一遍,索性直接recover表空間
SYS@seiang11g>alter tablespace wjqtest online;
alter tablespace wjqtest online
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: '/u01/app/oracle/oradata/OraDB11g/wjqtest02.dbf'
SYS@seiang11g>recover tablespace wjqtest;
Media recovery complete.
[oracle@seiang11g trace]$ tail -f alert_seiang11g.log
Tue Sep 26 13:42:44 2017
Checker run found 1 new persistent data failures
Tue Sep 26 13:43:04 2017
ALTER DATABASE RECOVER datafile 8
Media Recovery Start
Serial Media Recovery started
Recovery of Online Redo Log: Thread 1 Group 1 Seq 52 Reading mem 0
Mem# 0: /u01/app/oracle/oradata/OraDB11g/redo01.log
Media Recovery Complete (seiang11g)
Completed: ALTER DATABASE RECOVER datafile 8
alter tablespace wjqtest online
ORA-1113 signalled during: alter tablespace wjqtest online...
Tue Sep 26 13:44:43 2017
ALTER DATABASE RECOVER tablespace wjqtest
Media Recovery Start
Serial Media Recovery started
Recovery of Online Redo Log: Thread 1 Group 1 Seq 52 Reading mem 0
Mem# 0: /u01/app/oracle/oradata/OraDB11g/redo01.log
Media Recovery Complete (seiang11g)
Completed: ALTER DATABASE RECOVER tablespace wjqtest
總結
我們來總結一下Offline三種引數的情況。
(1)offline normal:是最常用的引數,也最不容易出問題。Offline
Normal的時候,Oracle會在表空間內部進行Check
Point動作,保證表空間內部各個檔案頭上面的SCN一致,也就是資料一致。如果存在資料檔案不能前推SCN,如已經Offline,的情況,offline
normal失效報錯。
(2)offline temporary:比Normal要求略松的一種關閉模式。Temporary模式下,Oracle依然會去“嘗試”統一表空間內部檔案頭的SCN號。如果資料檔案可以統一,就進行Check
Point動作,如果檔案不能統一,操作也不會報錯,只是將其狀態標記為不一致。Temporary模式下Offline的表空間Online的時候,那些“有問題”的不一致檔案,是需要進行media
recovey的。沒有問題,打入check point的資料檔案,就不需要進行恢復動作。
(3)offline immediate:最松的一種offline模式。Immediate模式下,Oracle不會進行check
point動作,無論有無問題的Datafile,都會被設定為需要Recover過程。在重新online的時候,表空間就需要進行重新的全表空media
recover。
作者:SEian.G(苦練七十二變,笑對八十一難)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31015730/viewspace-2145469/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- 聊聊Oracle表空間Offline的三種引數(下)Oracle
- Oracle中表空間、表、索引的遷移Oracle索引
- 檢視ORACLE中表、表空間的大小Oracle
- oracle shutdown 引數對比Oracle
- Oracle表空間建立引數解析Oracle
- Oracle 表空間 建立引數 說明Oracle
- Oracle各種表空間Oracle
- TempDB 中表變數和區域性臨時表的對比變數
- Java對比有引數和無引數Java
- DB CONTROL中表空間監控的SQLSQL
- oracle 表空間下資料檔案遷移的三種方法Oracle
- 表空間OFFLINE和資料檔案OFFLINE的區別
- 表空間offline,資料檔案offline 的區別(ZT)
- 分割槽表對應的表空間遷移案例
- oracle10g缺少tempfile(臨時表空間)_offline相關表空間測試筆記Oracle筆記
- Oracle資料庫使用空間統計案例Oracle資料庫
- 三種滑動方式的比較(scrollTo & view動畫 & 改變佈局引數)View動畫
- 11g 建立加密表空間的方法對比加密
- 對oracle資料表空間的計算Oracle
- 從引數空間到函式空間理解GBDT+XGBoost函式
- alter database offline 與 alter database offline drop效果比對Database
- iPhone 8和三星Note 8引數配置對比評測iPhone
- Oracle 查詢各個 “表空間/資料檔案” 的空間使用比情況Oracle
- 查詢資料庫系統中表空間的使用率資料庫
- AIX 5.3 和6.1 VMO 引數對比AI
- oracle RAC中表空間資料檔案錯誤建立到了節點本地位置Oracle
- 三星S7與蘋果7引數配置對比評測蘋果
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- Oracle三種集合資料型別的比較Oracle資料型別
- Oracle資料庫表空間READ ONLY、READ WRITE、ONLINE、OFFLINE狀態對應CHECKPOINT的變化Oracle資料庫
- 形式引數和返回值型別的對比型別
- iPhone X相機引數對比三星Note8 誰的拍照效能強?iPhone
- samtools flagstat引數對比對的bam檔案進行統計
- 使用 XmlCommand 對Oracle傳引數XMLOracle
- 歸檔模式下online已被offline的表空間模式
- 三種方法實現:獲取 url 中的引數