Oracle RAC啟動歸檔時需要設定CLUSTER_DATABASE引數嗎?

chenoracle發表於2020-06-21

結論:

資料庫版本Release 9.0.1 to 10.1,啟動歸檔模式需要設定CLUSTER_DATABASE引數。

資料庫版本10.2 and higher version,啟動歸檔模式不需要設定CLUSTER_DATABASE引數。

那麼CLUSTER_DATABASE引數有什麼作用呢?

cluster_database

當想要多個例項同時mount資料庫,CLUSTER_DATABASE引數必須是TRUE;

當CLUSTER_DATABASE引數為FALSE時,同時只能有一個例項能mount資料庫。

If Oracle Database allows multiple instances to mount the same database concurrently, then the CLUSTER_DATABASE initialization parameter setting can make the database available to multiple instances. Database behavior depends on the setting:
If CLUSTER_DATABASE is false (default) for the first instance that mounts a database, then only this instance can mount the database.
If CLUSTER_DATABASE is true for the first instance, then other instances can mount the database if their CLUSTER_DATABASE parameter settings are set to true. The number of instances that can mount the database is subject to a predetermined maximum specified when creating the database.

測試啟動11.2.0.4.0版本資料庫歸檔模式

檢視歸檔模式

SQL> archive log list;
Database log mode       No Archive Mode
Automatic archival       Disabled
Archive destination       /u01/app/oracle/product/11.2.0/db_1/dbs/arch
Oldest online log sequence     26
Current log sequence       27

建立歸檔目錄

[grid@rac01 ~]$ asmcmd
ASMCMD> ls
ARCH/
DATA/
OCR/
ASMCMD> cd ARCH
ASMCMD> ls
ASMCMD> mkdir arch

修改歸檔目錄和歸檔格式

SQL> alter system set log_archive_format= 'cjcdb_%t_%s_%r.arc' scope=spfile sid='*';
SQL> alter system set log_archive_dest_1='location=+ARC/arch' scope=spfile sid='*';

停止資料庫

[oracle@rac01 ~]$ srvctl stop database -d cjcdb
[oracle@rac01 ~]$ srvctl status database -d cjcdb
Instance cjcdb1 is not running on node rac01
Instance cjcdb2 is not running on node rac02

掛載資料庫

[oracle@rac01 ~]$ srvctl start database -d cjcdb -o mount
[oracle@rac01 ~]$ srvctl status database -d cjcdb -v
Instance cjcdb1 is running on node rac01. Instance status: Mounted (Closed).
Instance cjcdb2 is running on node rac02. Instance status: Mounted (Closed).

啟動歸檔模式

[oracle@rac01 ~]$ sqlplus / as sysdba
SQL> alter database archivelog;

重啟資料庫

[oracle@rac01 ~]$ srvctl stop database -d cjcdb
[oracle@rac01 ~]$ srvctl start database -d cjcdb

檢視歸檔

[oracle@rac02 ~]$ sqlplus / as sysdba
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       +ARC/arch
Oldest online log sequence     1
Next log sequence to archive   2
Current log sequence       2

參考:Doc ID 235158.1和Doc ID 1186764.1

10.1和之前版本啟動歸檔模式

How To Enable/Disable Archive Log Mode in Real Application Cluster Environment (Doc ID 235158.1)

APPLIES TO:
Oracle Database - Enterprise Edition - Version 9.0.1.0 to 10.1.0.5 [Release 9.0.1 to 10.1]
Information in this document applies to any platform.
1. Shut down all instances. 
2. Set the CLUSTER_DATABASE parameter to false on one instance in the parameter 
file. If using the server parameter file, make an entry for this:
     *.CLUSTER_DATABASE= False
For Modifying server parameter file (SPFILE):
Alter system set cluster_database=FALSE scope=spfile sid='*';
See Document 137483.1 How to Modify the Content of a SPFILE Parameter File 
3. Set the LOG_ARCHIVE_START parameter to true. 
4. Set the LOG_ARCHIVE_FORMAT and make sure the parameter containing the %t parameter includes the thread number in the archived logfile name.
5. Set the cluster database wide LOG_ARCHIVE_DEST_1 parameter in the parameter file as follows: 
LOG_ARCHIVE_DEST_1='LOCATION=$ORACLE_BASE/oradata/<db_name>/archive'
 
Note: You can multiplex the destination to up to ten locations, refer to:
Document 66433.1 Oracle8i - Multiple Archive Destinations and Remote Archival
 
To specify the archive log destinations on a per instance basis for a two-instance cluster database, for example, set the parameter as follows:
   <sid1>.LOG_ARCHIVE_DEST_1='LOCATION=$ORACLE_BASE/oradata/<db_name>/archive' 
   <sid2>.LOG_ARCHIVE_DEST_1='LOCATION=$ORACLE_BASE/oradata/<db_name>/archive'
 
6. Mount the database (in exclusive mode) for the instance on which you have set CLUSTER_DATABASE to false. 
7. Set the database in ARCHIVELOG mode :
     SQL> ALTER DATABASE ARCHIVELOG;
 
8. Shutdown the instance.
     SQL> SHUTDOWN IMMEDIATE;
9. Change the value of the CLUSTER_DATABASE parameter back to true.
10. Startup all instances.
To disable archive logging, follow the same steps but use the NOARCHIVELOG clause of the ALTER DATABASE statement.

10.2版本開始啟動歸檔模式 

How To Enable/Disable Archive Logging In RAC Environment for 10.2 and higher version (Doc ID 1186764.1)

APPLIES TO:
Oracle Database Cloud Service - Version N/A and later
Oracle Database - Enterprise Edition - Version 10.2.0.1 and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Information in this document applies to any platform.
SOLUTION
1. The following steps need to be taken to enable archive logging in a RAC database environment:
-- shutdown immediate all database instances
$ srvctl stop database -d <db_unique_name>
-- startup database in mount mode
$ srvctl start database -d <db_unique_name> -o mount
-- enable archive logging
$ sqlplus / as sysdba
sql> alter database archivelog;
sql> exit;
-- stop database
$ srvctl stop database -d <db_unique_name>
-- restart all database instances
$ srvctl start database -d <db_unique_name>
-- verify archiving is enabled/disabled by means of:
sql> archive log list; 
You might need to set your log_archive_dest(_n) parameters to a shared location in each spfile, but the log_archive_start parameter does not need to be set anymore as of 10g (see Note 274302.1).
 
2. To disable archive logging, follow the same steps but use the NOARCHIVELOG clause of the ALTER DATABASE statement.

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

Oracle RAC啟動歸檔時需要設定CLUSTER_DATABASE引數嗎?

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

相關文章