溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么理解Oracle表空間Offline的三種參數(shù)

發(fā)布時(shí)間:2021-11-08 16:31:52 來(lái)源:億速云 閱讀:294 作者:柒染 欄目:建站服務(wù)器

本篇文章為大家展示了怎么理解Oracle表空間Offline的三種參數(shù),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

Oracle數(shù)據(jù)庫(kù)管理基礎(chǔ)中,表空間操作是基礎(chǔ)中的基礎(chǔ)。其中,表空間Offline是我們經(jīng)常接觸的一個(gè)知識(shí)點(diǎn)。同數(shù)據(jù)文件Offline一起,構(gòu)成了Oracle維護(hù)數(shù)據(jù)一致性的重要體系結(jié)構(gòu)。

一般我們比較常接觸到的,就是直接的alter tablespace xxx offline操作。但是在實(shí)際中,針對(duì)表空間對(duì)應(yīng)數(shù)據(jù)文件的不同情況,我們是有三種參數(shù)操作相對(duì)應(yīng)的。同數(shù)據(jù)庫(kù)關(guān)閉shutdown對(duì)應(yīng)的若干種參數(shù)一樣,不同的offline參數(shù)對(duì)應(yīng)Oracle不同的行為,更引出后續(xù)不同的處理方法。

 從原理入手,分別詳細(xì)介紹表空間Offline、數(shù)據(jù)文件Offline、日志歸檔模式和備份還原之間的關(guān)系。

1、Offline簡(jiǎn)說(shuō)

 

Oracle Offline表空間是一種對(duì)表空間對(duì)象和數(shù)據(jù)的“關(guān)閉訪問(wèn)”。在正常Online情況下,一個(gè)表空間中若干個(gè)數(shù)據(jù)文件是維持在動(dòng)態(tài)的一致狀態(tài)中,文件頭上的SCN根據(jù)DBWRCKPT維持一致或者不一致的狀態(tài)。

 

我們將表空間Offline的目的無(wú)非有如下三類:

 

ü  實(shí)現(xiàn)部分?jǐn)?shù)據(jù)的不可訪問(wèn)。如果使用表空間進(jìn)行多個(gè)系統(tǒng)數(shù)據(jù)模塊的劃分,可以使用offline方法,將一部分的數(shù)據(jù)不可訪問(wèn);

ü  當(dāng)進(jìn)行前端應(yīng)用程序進(jìn)行升級(jí)維護(hù)的時(shí)候,可以使用offline方法對(duì)部分?jǐn)?shù)據(jù)訪問(wèn)進(jìn)行屏蔽;

ü  對(duì)數(shù)據(jù)文件進(jìn)行改名和重定位(轉(zhuǎn)移到其他位置上);

 

在進(jìn)行數(shù)據(jù)庫(kù)管理的時(shí)候,留足備份、慎刪數(shù)據(jù)是非常重要的原則。沒(méi)有絕對(duì)把握的時(shí)候,絕對(duì)不要?jiǎng)邮謩h除數(shù)據(jù)。這里談到的offline tablespacelock user都是非常好的屏蔽數(shù)據(jù)訪問(wèn)的手段。

 

一個(gè)表空間可以有一個(gè)或者多個(gè)數(shù)據(jù)文件。如果一個(gè)表空間被offline,那么對(duì)應(yīng)的數(shù)據(jù)文件也就被offline。

 

并不是所有表空間都可以被offline。SystemUndoTemporary表空間是不允許進(jìn)行Offline操作的。一般只有非系統(tǒng)表空間,也就是業(yè)務(wù)數(shù)據(jù)表空間才會(huì)進(jìn)行Offline操作。

 

另一個(gè)重要點(diǎn)是如果要進(jìn)行offline操作的表空間是一個(gè)用戶的Default表空間,那么最好要將其默認(rèn)表空間修改一下,防止操作錯(cuò)誤出現(xiàn)。

 

將表空間進(jìn)行Offline的命令很簡(jiǎn)單,就是alter tablespace xxx offline;根據(jù)不同的情況,我們是可以使用三種參數(shù)進(jìn)行命令修飾,分別為normaltemporaryimmediate。三個(gè)命令分別對(duì)應(yīng)了Offline過(guò)程的不同行為。在下面的步驟中,我們通過(guò)實(shí)驗(yàn)來(lái)查看三種命令參數(shù)的行為特征。

 

2、實(shí)驗(yàn)環(huán)境介紹

 

實(shí)驗(yàn)選擇在Oracle 11gR2上進(jìn)行,數(shù)據(jù)庫(kù)處在歸檔模式archive log mode。注意:是否歸檔模式對(duì)于數(shù)據(jù)表空間和文件Offline行為至關(guān)重要!

 

 

SQL> select * from v$version;

 

BANNER

------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE    11.2.0.3.0      Production

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 - Production

 

 

歸檔模式數(shù)據(jù)庫(kù)。

 

 

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     21

Next log sequence to archive   23

Current log sequence           23

 

--數(shù)據(jù)庫(kù)在open狀態(tài)

SQL> select status from v$instance;

 

STATUS

------------

OPEN

 

--Oracle支持命名管理OMF

SQL> show parameter db_create_file;

 

NAME                                 TYPE        VALUE

------------------------- ----------- ------------------------------

db_create_file_dest                  string      /u01/app/oradata

 

 

創(chuàng)建實(shí)驗(yàn)表空間testtbs。為了更加明顯進(jìn)行試驗(yàn),我們?cè)O(shè)計(jì)它是由兩個(gè)數(shù)據(jù)文件構(gòu)成。

 

 

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 10m autoextend off;

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_94hpygrx_.dbf          

 

/u01/app/oradata/ORA AVAILABLE ONLINE

11G/datafile/o1_mf_t          

esttbs_94hq0dgm_.dbf          

 

 

注意三個(gè)Online狀態(tài),我們的實(shí)驗(yàn)就在這個(gè)過(guò)程中展開。最后再添加一個(gè)數(shù)據(jù)表,用于空間分配過(guò)程。

 

 

SQL> create table test tablespace testtbs as select * from dba_objects;

Table created

 

SQL> select tablespace_name from dba_segments where wner='SYS' and segment_name='TEST';

TABLESPACE_NAME

------------------------------

TESTTBS

 

SQL> select count(*) from test;

 

  COUNT(*)

----------

     75223

 

 

3、歸檔模式下數(shù)據(jù)文件offline normal

 

offline normal是我們最常用的表空間offline方法,也是默認(rèn)的offline方法。如果數(shù)據(jù)表空間和數(shù)據(jù)文件狀態(tài)都是online,我們是可以直接offline normal的。

 

--Offline數(shù)據(jù)表空間

SQL> alter tablespace testtbs offline normal;

Tablespace altered

 

--alert log中內(nèi)容

Sun Sep 29 15:35:18 2013

alter tablespace testtbs offline normal

Completed: alter tablespace testtbs offline normal

 

 

此時(shí),數(shù)據(jù)表空間和數(shù)據(jù)文件狀態(tài)如下:

 

 

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_94hpygrx_.dbf          

 

/u01/app/oradata/ORA AVAILABLE OFFLINE

11G/datafile/o1_mf_t          

esttbs_94hq0dgm_.dbf          

 

 

數(shù)據(jù)文件一個(gè)很重要的內(nèi)容就是文件頭的SCN編號(hào)。我們知道,如果完全關(guān)閉數(shù)據(jù)庫(kù)或者check point的時(shí)候,Oracle是要保證控制文件和文件頭的SCN一致。

 

 

SQL> select file#, status, recover, fuzzy, CHECKPOINT_CHANGE# from v$datafile_header;

 

     FILE# STATUS  RECOVER FUZZY CHECKPOINT_CHANGE#

---------- ------- ------- ----- ------------------

         1 ONLINE  NO      YES              1054312

         2 ONLINE  NO      YES              1054312

         3 ONLINE  NO      YES              1054312

         4 ONLINE  NO      YES              1054312

         5 ONLINE  NO      YES              1054312

         6 OFFLINE                                0

         7 OFFLINE                                0

 

 

7 rows selected

 

SQL> select file#, CHECKPOINT_CHANGE#, OFFLINE_CHANGE# from v$datafile;

 

     FILE# CHECKPOINT_CHANGE# OFFLINE_CHANGE#

---------- ------------------ ---------------

         1            1054312          787896

         2            1054312          787896

         3            1054312          787896

         4            1054312          787896

         5            1054312          819012

         6            1059175         1058506

         7            1059175         1058506

 

7 rows selected

 

 

offline normal的時(shí)候,數(shù)據(jù)文件頭的SCN是一致的。

 

alter log中信息里面,Data Recovery Advisor顯示出信息。

 

 

--有報(bào)錯(cuò)內(nèi)容

Sun Sep 29 15:53:04 2013

Checker run found 2 new persistent data failures

 

RMAN> list failure all;

 

List of Database Failures

=========================

 

Failure ID Priority Status    Time Detected Summary

---------- -------- --------- ------------- -------

122        HIGH     OPEN      29-SEP-13     One or more non-system datafiles are offline

128        HIGH     OPEN      29-SEP-13     Tablespace 7: 'TESTTBS' is offline

 

 

如果是正常的offline normal,是可以直接online回正常的。

 

 

SQL> alter tablespace testtbs online;

Tablespace altered

 

 

在數(shù)據(jù)庫(kù)正常情況下,出于性能考慮數(shù)據(jù)文件頭SCN號(hào)是不能維持一致的。我們使用offline normal之后,各個(gè)文件頭SCN相同。所以,offline normal特性是在offline的時(shí)候,要在表空間所有文件上打check point,只要能夠打上SCN號(hào),offline normal是可以正常完成的。也就是說(shuō),offline normal是表空間各個(gè)文件一致性的關(guān)閉。

 

Datafile在很多時(shí)候,是不能保證一致性的。這個(gè)時(shí)候就需要使用TemporaryImmediate兩個(gè)參數(shù)了。

 

上述內(nèi)容就是怎么理解Oracle表空間Offline的三種參數(shù),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI