10gr2自動擴充套件控制檔案中的設定

yangtingkun發表於2009-05-16

10gR2版本開始,控制檔案中設定的最大值,不再是資料庫中的限制,當資料庫的實際值超過了控制檔案中的設定,控制檔案中的值會自動擴充套件。

 

 

9i10.1的時候,Oracle的控制檔案中設定的引數確定了資料庫的一些限制,比如資料庫可以開啟的最大資料檔案數,資料庫使用的最大日誌組個數,每個日誌組最大成員數等等。這個限制是資料庫所能達到的最大值,如果超過了這個限制,則資料庫會報錯:

SQL> select type, record_size, records_total, records_used
  2  from v$controlfile_record_section
  3  where type = 'REDO LOG';

TYPE                 RECORD_SIZE RECORDS_TOTAL RECORDS_USED
-------------------- ----------- ------------- ------------
REDO LOG                      72             5            3

SQL> select group#, thread#, sequence#, bytes
  2  from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES
---------- ---------- ---------- ----------
         1          1         41  536870912
         2          1         43  536870912
         3          1         42  536870912

SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------
         1 /data/oradata/bjtest/redo01.log
         2 /data/oradata/bjtest/redo02.log
         3 /data/oradata/bjtest/redo03.log

SQL> alter database add logfile group 4 '/data/oradata/bjtest/redo04.log' size 512m;

資料庫已更改。

SQL> alter database add logfile group 5 '/data/oradata/bjtest/redo05.log' size 512m;

資料庫已更改。

SQL> alter database add logfile group 6 '/data/oradata/bjtest/redo06.log' size 512m;
alter database add logfile group 6 '/data/oradata/bjtest/redo06.log' size 512m
*
ERROR
位於第 1 :
ORA-01185:
日誌檔案組號6無效


SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

可以看到在9i中,是不能超過控制檔案中設定的最大值的,如果要解決這個問題,唯一的方法就是重建控制檔案。

而在10.2Oracle做出了改進,當資料庫的相容性初始化引數COMPATIBLE設定為10.2.0.1.0以上時,這個值會隨著實際的使用情況而擴大,而如果COMPATIBLE設定的值是10.1.0.1.0以下時,即使是10.2版本的資料庫,也不會自動擴充套件控制檔案的限制條件:

SQL> select * from v$version;

BANNER
-------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

SQL> show parameter compatible

NAME                                 TYPE                           VALUE
------------------------------------ ------------------------------ ---------------------
compatible                           string                         10.1.0.0.0

這是一個10.2.0.3的資料庫,不過資料庫相容性設定為10.1,下面看看這個資料庫的表現:

SQL> select type, record_size, records_total, records_used
  2  from v$controlfile_record_section
  3  where type = 'REDO LOG';

TYPE                           RECORD_SIZE RECORDS_TOTAL RECORDS_USED
------------------------------ ----------- ------------- ------------
REDO LOG                                72             5            3

SQL> select group#, thread#, sequence#, bytes
  2  from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES
---------- ---------- ---------- ----------
         1          1          1  104857600
         2          1          0  104857600
         3          1          0  104857600

SQL> col member format a60
SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- ------------------------------------------------------------
         1 /data/oradata/test102/redo01.log
         2 /data/oradata/test102/redo02.log
         3 /data/oradata/test102/redo03.log

SQL> alter database add logfile group 4 '/data/oradata/test102/redo04.log' size 100m;

Database altered.

SQL> alter database add logfile group 5 '/data/oradata/test102/redo05.log' size 100m;

Database altered.

SQL> alter database add logfile group 6 '/data/oradata/test102/redo06.log' size 100m;
alter database add logfile group 6 '/data/oradata/test102/redo06.log' size 100m
*
ERROR at line 1:
ORA-01185: logfile group number 6 is invalid

錯誤資訊和9i中一致,下面將相容性設定改為10.2

SQL> alter system set compatible = '10.2.0.1.0' scope = spfile;

System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  851443712 bytes
Fixed Size                  2076496 bytes
Variable Size             226492592 bytes
Database Buffers          616562688 bytes
Redo Buffers                6311936 bytes
Database mounted.
Database opened.
SQL> show parameter compatible

NAME                                 TYPE                           VALUE
------------------------------------ ------------------------------ -------------------
compatible                           string                         10.2.0.1.0
SQL> alter database add logfile group 6 '/data/oradata/test102/redo06.log' size 100m;

Database altered.

SQL> alter database add logfile group 7 '/data/oradata/test102/redo07.log' size 100m;

Database altered.

SQL> select type, record_size, records_total, records_used
  2  from v$controlfile_record_section
  3  where type = 'REDO LOG';

TYPE                           RECORD_SIZE RECORDS_TOTAL RECORDS_USED
------------------------------ ----------- ------------- ------------
REDO LOG                                72            21            7

啟動後在alert檔案中可以看到Oracle改變了重做日誌的結構:

ALTER DATABASE OPEN
Switching redo format version from 10.1.0.0.0 to 10.2.0.1.0 at change 13841

而在執行了新增日誌組6的操作後,在alert檔案中記錄了控制檔案的自動擴充套件:

alter database add logfile group 6 '/data/oradata/test102/redo06.log' size 100m
Sun May 17 06:34:27 2009
Expanded controlfile section 3 from 5 to 21 records
The number of logical blocks in section 3 remains the same
Completed: alter database add logfile group 6 '/data/oradata/test102/redo06.log' size 100m
Sun May 17 06:35:02 2009
alter database add logfile group 7 '/data/oradata/test102/redo07.log' size 100m
Sun May 17 06:35:04 2009
Completed: alter database add logfile group 7 '/data/oradata/test102/redo07.log' size 100m

10.2中,控制檔案中的限制不再是資料庫必須滿足的限制條件了,如果資料庫中配置的數量超過控制檔案中的數量,控制檔案會自動進行擴充套件,10gr2的這個功能,減少了控制檔案重建的可能性。

 

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

相關文章