亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle中表空間offline的三種參數對比案例

發布時間:2020-08-11 15:45:30 來源:ITPUB博客 閱讀:281 作者:迷倪小魏 欄目:關系型數據庫


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

SYSTEMundo表空間、臨時表空間不可以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.

1normal offline的默認方式
2
normal 對表空間的所有數據文件執行檢查點操作,online表空間時不需要介質恢復。
3
normal 方式離線表空間時,不應該有寫錯誤,表空間所有文件應該online狀態。

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.

1offline temporary 表空間時,如果表空間中沒有offline的數據文件,則online該表空間時不需要介質恢復。
2
offline temporary 表空間時,不會對已經offline的數據文件執行檢查點操作,僅僅對online的數據文件執行檢查點操作
3
offline temporary 表空間時,對于離線表空間之前已經offline的數據文件,則online該表空間時,offline數據文件需要介質恢復。

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.

1offline immediate  不會對表空間的任何文件執行檢查點操作。
2
online表空間時需要對所有數據文件進行media recovery
3
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維持數據文件一致性,是一個動態一致性的過程。如果某一個文件或者對象臨時性的退出了這個一致性機制,就表示這個文件或者對象已經不一致。如果該對象希望回歸到原有的一致性體系里面,就需要進行RecoverOracle進行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(苦練七十二變,笑對八十一難)


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐亭县| 海伦市| 衡东县| 屏东县| 东乌珠穆沁旗| 沛县| 麻阳| 阿鲁科尔沁旗| 青田县| 肇庆市| 左云县| 博兴县| 南宁市| 澄江县| 庆城县| 翼城县| 阜新市| 马鞍山市| 盈江县| 山丹县| 乌鲁木齐县| 溧水县| 昌邑市| 寿光市| 昌宁县| 汶上县| 平果县| 宜兴市| 扶风县| 神农架林区| 齐河县| 蓝田县| 乌拉特后旗| 古交市| 宁远县| 太仆寺旗| 米易县| 行唐县| 资兴市| 榆中县| 资溪县|