Oracle資料庫表空間READ ONLY、READ WRITE、ONLINE、OFFLINE狀態對應CHECKPOINT的變化

尛樣兒發表於2012-12-10

用實驗來說話。

Microsoft Windows [版本 6.1.7601]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。

C:\Users\LIUBINGLIN>
C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on 星期一 12月 10 21:54:36 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

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 32-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> archive log list;
資料庫日誌模式             非存檔模式
自動存檔             禁用
存檔終點            F:\app\oracle\product\11.2.0\dbhome_1\RDBMS
最早的聯機日誌序列     27
當前日誌序列           28

SQL> select file_id,tablespace_name,file_name from dba_data_files;

   FILE_ID TABLESPACE_NAME
---------- ------------------------------
FILE_NAME
--------------------------------------------------------------------------------
         5 CACHETBLSP
F:\APP\ORACLE\ORADATA\ORCL\DATFTTUSER.DBF

         4 USERS
F:\APP\ORACLE\ORADATA\ORCL\USERS.DBF

         3 UNDOTBS1
F:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF


   FILE_ID TABLESPACE_NAME
---------- ------------------------------
FILE_NAME
--------------------------------------------------------------------------------
         2 SYSAUX
F:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF

         1 SYSTEM
F:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF

         6 TEST
F:\APP\ORACLE\ORADATA\ORCL\TEST02.DBF


   FILE_ID TABLESPACE_NAME
---------- ------------------------------
FILE_NAME
--------------------------------------------------------------------------------
         7 TEST
F:\APP\ORACLE\ORADATA\ORCL\TEST03.DBF


已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018006

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018006
           2018006
           2018006
           2018006
           2018006
           2018006
           2018006

已選擇7行。

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
CACHETBLSP                     ONLINE
TEST                           ONLINE
TEMP01                         ONLINE

已選擇8行。

SQL> alter tablespace test read only;

表空間已更改。

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
CACHETBLSP                     ONLINE
TEST                           READ ONLY
TEMP01                         ONLINE

已選擇8行。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018006
           2018006
           2018006
           2018006
           2018006
           2018401
           2018401

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018006

SQL> alter system checkpoint;

系統已更改。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018420

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018420
           2018420
           2018420
           2018420
           2018420
           2018401
           2018401

已選擇7行。

SQL> alter tablespace test read write;

表空間已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018420
           2018420
           2018420
           2018420
           2018420
           2018438
           2018438

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018420

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
CACHETBLSP                     ONLINE
TEST                           ONLINE
TEMP01                         ONLINE

已選擇8行。

SQL> alter system checkpoint;

系統已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018472
           2018472
           2018472
           2018472
           2018472
           2018472
           2018472

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018472

SQL> alter tablespace test offline normal;

表空間已更改。

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
CACHETBLSP                     ONLINE
TEST                           OFFLINE
TEMP01                         ONLINE

已選擇8行。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018472
           2018472
           2018472
           2018472
           2018472
           2018491
           2018491

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018472

SQL> alter system checkpoint;

系統已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018513
           2018513
           2018513
           2018513
           2018513
           2018491
           2018491

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018513

SQL> alter tablespace test online;

表空間已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018513
           2018513
           2018513
           2018513
           2018513
           2018523
           2018523

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018513

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
CACHETBLSP                     ONLINE
TEST                           ONLINE
TEMP01                         ONLINE

已選擇8行。

SQL> alter tablespace test offline immediate;
alter tablespace test offline immediate
*
第 1 行出現錯誤:
ORA-01145: 除非啟用了介質恢復, 否則不允許立即離線


SQL> alter database datafile 6 offline;
alter database datafile 6 offline
*
第 1 行出現錯誤:
ORA-01145: 除非啟用了介質恢復, 否則不允許立即離線


SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。

Total System Global Area  267825152 bytes
Fixed Size                  1384044 bytes
Variable Size              96469396 bytes
Database Buffers          163577856 bytes
Redo Buffers                6393856 bytes
資料庫裝載完畢。
SQL> alter database archivelog;

資料庫已更改。

SQL> alter database open;

資料庫已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018740
           2018740
           2018740
           2018740
           2018740
           2018740
           2018740

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018740

SQL> alter tablespace test offline immediate;

表空間已更改。

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
CACHETBLSP                     ONLINE
TEST                           OFFLINE
TEMP01                         ONLINE

已選擇8行。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018740
           2018740
           2018740
           2018740
           2018740
           2018740
           2018740

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018740

SQL> alter tablespace test online;
alter tablespace test online
*
第 1 行出現錯誤:
ORA-01113: 檔案 6 需要介質恢復
ORA-01110: 資料檔案 6: 'F:\APP\ORACLE\ORADATA\ORCL\TEST02.DBF'


SQL> recover datafile 6;
完成介質恢復。
SQL> recover datafile 7;
完成介質恢復。
SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2018740
           2018740
           2018740
           2018740
           2018740
           2019053
           2019056

已選擇7行。

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2018740

SQL> alter tablespace test online;

表空間已更改。

SQL> alter system checkpoint;

系統已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2019226
           2019226
           2019226
           2019226
           2019226
           2019226
           2019226

已選擇7行。

SQL> alter database datafile 6 offline;

資料庫已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2019226
           2019226
           2019226
           2019226
           2019226
           2019226
           2019226

已選擇7行。

SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出現錯誤:
ORA-01113: 檔案 6 需要介質恢復
ORA-01110: 資料檔案 6: 'F:\APP\ORACLE\ORADATA\ORCL\TEST02.D


SQL> recover datafile 6;
完成介質恢復。
SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2019226
           2019226
           2019226
           2019226
           2019226
           2019232
           2019226

已選擇7行。

SQL> alter database datafile 6 online;

資料庫已更改。

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
           2019226
           2019226
           2019226
           2019226
           2019226
           2019257
           2019226

已選擇7行。

        從以上的實驗不難看出如下幾點:

1).執行表空間的READ ONLY和OFFLINE [NORMAL]操作,Oracle都會對錶空間對應的資料檔案執行檢查點操作。之後表空間對應的所有資料檔案檢查點SCN都不會發生變化。直到執行表空間的READ WRITE和ONLINE操作又會對錶空間對應的所有資料檔案執行一次檢查點操作。對錶空間的READ WRITE和OFFLINE NORMAL後的ONLINE都不需要介質恢復即可使表空間ONLINE。

2).對錶空間做OFFLINE IMMEDIATE或對資料檔案做OFFLINE操作都需要資料庫在歸檔模式下,原因就在於執行這些操作之後要使得表空間重新ONLINE必須執行介質恢復,如果介質恢復需要的Redo日誌丟失,那麼表空間將無法重新ONLINE。這行表空間的OFFLINE IMMEDIATE和資料檔案的OFFLINE操作,Oracle不會對相應的資料檔案做檢查點操作。但是在recover介質恢復和表空間和資料檔案ONLINE操作都會對相應的資料檔案執行檢查點操作。

3).在對錶空間做READ ONLY操作的時候, 如果有事務在操作表空間中的資料,那麼READ ONLY操作將處於等待狀態,直到所有的事務結束。

4).TABLESPACE OFFLINE TEMPORARY操作也會對錶空間對應的所有資料檔案執行檢查點操作。

5).檢查點可能只發生在單個資料檔案上。對資料庫多個表空間批次READ ONLY操作必定導致資料檔案上的檢查點SCN各不相同:
List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
4128    Full    4.07G      DISK        00:00:00     2012-12-10 13:35:56
        BP Key: 4132   Status: AVAILABLE  Compressed: YES  Tag: TAG20121210T133555
        Piece Name: /u01/app/oracle/rman_backup/ORCL_1_4456_ORCL_1257818738.RMAN
  List of Datafiles in backup set 4128
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1       Full 338405877  2012-12-10 13:35:56 Z:\ORACLE\DATA\ORCL\SYSTEM01.DBF
  4       Full 338405877  2012-12-10 13:35:56 Z:\ORACLE\DATA\ORCL\USERS01.DBF
  5       Full 337849040  2012-11-28 00:58:41 Z:\ORACLE\DATA\ORCL\APACCT.DBF
  9       Full 337849076  2012-11-28 00:58:49 Z:\ORACLE\DATA\ORCL\APECONSTAT.DBF
  10      Full 337849085  2012-11-28 00:58:50 Z:\ORACLE\DATA\ORCL\APEQUIPMENT.DBF
  12      Full 337849103  2012-11-28 00:58:54 Z:\ORACLE\DATA\ORCL\APINFECT.DBF
  18      Full 337849157  2012-11-28 00:59:06 Z:\ORACLE\DATA\ORCL\APMEDADM.DBF
  21      Full 337849185  2012-11-28 00:59:11 Z:\ORACLE\DATA\ORCL\APMEDREC.DBF
  22      Full 337849194  2012-11-28 00:59:13 Z:\ORACLE\DATA\ORCL\APNURSING.DBF
  23      Full 337849203  2012-11-28 00:59:15 Z:\ORACLE\DATA\ORCL\APOA.DBF
  25      Full 337849221  2012-11-28 00:59:19 Z:\ORACLE\DATA\ORCL\APOUTPADM.DBF
  26      Full 337849232  2012-11-28 00:59:21 Z:\ORACLE\DATA\ORCL\APOUTPBILL.DBF
  29      Full 337849269  2012-11-28 00:59:27 Z:\ORACLE\DATA\ORCL\APPHARMACY.DBF
  31      Full 337849287  2012-11-28 00:59:30 Z:\ORACLE\DATA\ORCL\APSURGERY.DBF
  32      Full 337849296  2012-11-28 00:59:32 Z:\ORACLE\DATA\ORCL\APAPPM.DBF
  33      Full 337849305  2012-11-28 00:59:34 Z:\ORACLE\DATA\ORCL\APCLINICGUIDE.DBF
  34      Full 337849314  2012-11-28 00:59:36 Z:\ORACLE\DATA\ORCL\APINQUIRE.DBF
  36      Full 337849332  2012-11-28 00:59:41 Z:\ORACLE\DATA\ORCL\APPEPIC.DBF

BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
4129    Full    3.45G      DISK        00:00:00     2012-12-10 13:35:56
        BP Key: 4133   Status: AVAILABLE  Compressed: YES  Tag: TAG20121210T133555
        Piece Name: /u01/app/oracle/rman_backup/ORCL_1_4457_ORCL_1257818738.RMAN
  List of Datafiles in backup set 4129
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  2       Full 338405878  2012-12-10 13:35:56 Z:\ORACLE\DATA\ORCL\SYSAUX01.DBF
  3       Full 338405878  2012-12-10 13:35:56 Z:\ORACLE\DATA\ORCL\UNDOTBS01.DBF
  6       Full 337849049  2012-11-28 00:58:43 Z:\ORACLE\DATA\ORCL\APBLDBANK.DBF
  7       Full 337849058  2012-11-28 00:58:45 Z:\ORACLE\DATA\ORCL\APCOMM.DBF
  8       Full 337849067  2012-11-28 00:58:47 Z:\ORACLE\DATA\ORCL\APCPR.DBF
  11      Full 337849094  2012-11-28 00:58:52 Z:\ORACLE\DATA\ORCL\APEXAM.DBF
  13      Full 337849112  2012-11-28 00:58:56 Z:\ORACLE\DATA\ORCL\APINPADM.DBF
  14      Full 337849121  2012-11-28 00:58:58 Z:\ORACLE\DATA\ORCL\APINPBILL.DBF
  15      Full 337849130  2012-11-28 00:59:00 Z:\ORACLE\DATA\ORCL\APINSURANCE.DBF
  16      Full 337849139  2012-11-28 00:59:02 Z:\ORACLE\DATA\ORCL\APLAB.DBF
  17      Full 337849148  2012-11-28 00:59:04 Z:\ORACLE\DATA\ORCL\APLIS.DBF
  19      Full 337849167  2012-11-28 00:59:07 Z:\ORACLE\DATA\ORCL\APMEDICOM_DIF.DBF
  20      Full 337849176  2012-11-28 00:59:09 Z:\ORACLE\DATA\ORCL\APMEDICOM_SAVE.DBF
  24      Full 337849212  2012-11-28 00:59:17 Z:\ORACLE\DATA\ORCL\APORDADM.DBF
  27      Full 337849251  2012-11-28 00:59:23 Z:\ORACLE\DATA\ORCL\APPACS.DBF
  28      Full 337849260  2012-11-28 00:59:25 Z:\ORACLE\DATA\ORCL\APPE.DBF
  30      Full 337849278  2012-11-28 00:59:28 Z:\ORACLE\DATA\ORCL\APPICTURE.DBF
  35      Full 337849323  2012-11-28 00:59:38 Z:\ORACLE\DATA\ORCL\APMOTES.DBF

--end--

相關文章:

        《資料檔案、表空間offline用法及區別
》:http://space.itpub.net/23135684/viewspace-705015



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-750867/,如需轉載,請註明出處,否則將追究法律責任。

相關文章