Oracle9.2.0.4 RAC系統加入新節點

tolywang發表於2009-03-05

搜尋詞:  加節點,add node

 

原系統基本情況:  Linux AS3.0   2.4.21-4.ELsmp   Oracle 9.2.0.4  

注意: 以下步驟需要停機作業 。

 

1、 安裝新節點的HBA卡等硬體。 由於是3節點,所有如果原來使用反線連線作為心跳線,現在需要使用一臺HUB或交換機來連線3臺節點機器。

 

2、 安裝節點的作業系統,與已經執行的節點一致,比如Linux AS3.0  2.4.21-4.ELsmp .

 

3、 配置系統引數和ORACLE的安裝環境。

安裝Oracle軟體之前的準備和安裝單機時候一樣,這裡略過 。

確認節點123 時間一樣,最好使用時間同步伺服器同步。

複製節點12.bash_profile 環境設定,修改其中的SID部分。

 

備份節點12的以下兩個檔案。

修改節點123/etc/hosts檔案及/etc/hosts.equiv 檔案

/etc/hosts 內容如下:

10.156.4.98               dmdii-node1

172.20.1.148              dmdii-node1

10.1.1.7                  dmdii-pri1

 

10.156.4.99               dmdii-node2

172.20.1.149              dmdii-node2

10.1.1.8                  dmdii-pri2

 

10.156.4.103              dmdii-node3

172.20.1.147              dmdii-node3

10.1.1.9                  dmdii-pri3

 

/etc/hosts.equiv 內容如下:

dmdii-node1  oracle

dmdii-node2  oracle

dmdii-node3  oracle

dmdii-pri1   oracle

dmdii-pri2   oracle

dmdii-pri3   oracle

 

 

4、 從執行節點的機器上把$ORACLE_HOME$ORACLE_BASE/etc/ora*複製到新安裝機器上

對應的目錄,要同源地址一致。下面注意點只是做一些解釋,如果你是按照上面方式複製的Oracle軟體,就不需要下面的這些步驟 。

注意:     最好是複製執行節點上的oracle相關目錄。 如果單獨在新節點上安裝Oracle , 會安裝不了Real Application Cluster 元件,而且lib, bin oracle目錄下會有很多比如gsd, gsdctl , libxxx.so 等檔案不會安裝進去。最後還是需要複製oracle相關目錄下的檔案覆蓋 。 

沒有安裝RAC元件,後面開啟新節點的時候會報錯 ORA-00439: feature not enabled: Real Application Clusters,需要如下設定才能enable RAC :   

RAC ON  

1). Login as the Oracle software owner and shutdown all database instances on all nodes in the cluster.

2). cd $ORACLE_HOME/rdbms/lib

3). make -f ins_rdbms.mk rac_on

If this step did not fail with fatal errors then proceed to step 4.

4). make -f ins_rdbms.mk ioracle

 

 

5、 執行新裝節點的$ORACLE_HOME下的root.sh

 

 

6, 修改所有機器$ORACLE_HOME/oracm/adminRAC配置。

備份節點12上的OCM配置檔案 $ORACLE_HOME/oracm/admin/cmcfg.ora

開始配置節點123上的OCM配置檔案,$ORACLE_HOME/oracm/admin/cmcfg.ora 

節點123 類似如下,只是HostName不一樣而已。注意檢查所有節點:

 

dmdii-node1$cat cmcfg.ora

HeartBeat=15000

ClusterName=Oracle Cluster Manager, version 9i

PollInterval=1000 

MissCount=210

PrivateNodeNames=dmdii-pri1 dmdii-pri2  dmdii-pri3  

PublicNodeNames=dmdii-node1 dmdii-node2  dmdii-node3

ServicePort=9998

CmDiskFile=/ocfs_data/quorum.dbf

HostName=dmdii-pri1

KernelModuleName=hangcheck-timer 

所有節點cmcfg.ora檔案配置完成後,重新啟動,開啟各個節點的oracm測試(注意 su  root) ps -ef| grep oracm 檢視程式。

 

 

7, 確認當前資料庫的MAXINSTANCES大於等於您新加機器後的節點數,否則需重建控制文

件(但一般都夠,預設好像32 ),所以這一步不用修改。

 

 

8,  備份節點12listener.ora ,tnsnames.ora  。然後開始修改節點123

listener.ora tnsnames.ora

範例如下:

dmdii-node1$cat tnsnames.ora

 

LISTENERS_INTEL =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node1)(PORT = 1521))

    (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node2)(PORT = 1521))

    (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node3)(PORT = 1521))

  )

 

LISTENER_INTEL1 =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node1)(PORT = 1521))

  )

 

 

INTEL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node2)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node3)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = INTEL)

    )

  )

 

 

INST1_HTTP =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node1)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = SHARED)

      (SERVICE_NAME = MODOSE)

      (PRESENTATION = )

    )

  )

 

EXTPROC_CONNECTION_DATA =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

    )

    (CONNECT_DATA =

      (SID = PLSExtProc)

      (PRESENTATION = RO)

    )

  )

 

INTEL1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node1)(PORT = 1521))

    (CONNECT_DATA =

      (SERVICE_NAME = INTEL)

      (INSTANCE_NAME = INTEL1)

    )

  )

 

INTEL2 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node2)(PORT = 1521))

    (CONNECT_DATA =

      (SERVICE_NAME = INTEL)

      (INSTANCE_NAME = INTEL2)

    )

  )

 

INTEL3 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dmdii-node3)(PORT = 1521))

    (CONNECT_DATA =

      (SERVICE_NAME = INTEL)

      (INSTANCE_NAME = INTEL3)

    )

  )

 

 

 

dmdii-node1$cat listener.ora

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

      )

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.1.148)(PORT = 1521))

        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.156.4.98)(PORT = 1521)) 

      )

    )

  )

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /u01/product/oracle)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (ORACLE_HOME = /u01/product/oracle)

      (SID_NAME = intel1)

    )

  )

 

 

9, 在節點3 上執行命令初始化共享檔案

#su oracle    

$srvconfig    -init 

開啟GSD,   $gsdctl  start   

 

 

10, 配置節點123spfile引數檔案。

範例如下:

*.background_dump_dest='/u01/product/admin/intel/bdump'

*.cluster_database_instances=3

*.cluster_database=true

*.compatible='9.2.0.0.0'

*.control_files='/ocfs_ctrl_redo/intel/control01.ctl','/ocfs_ctrl_redo/intel/control02.ctl','/ocfs_ctrl_redo/intel/control03.ctl'

*.core_dump_dest='/u01/product/admin/intel/cdump'

*.cursor_sharing='EXACT'

*.db_block_size=8192

*.db_cache_size=1073741824

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_files=1000

*.db_name='intel'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=intelXDB)'

*.fast_start_mttr_target=300

*.hash_join_enabled=TRUE

intel1.instance_name='intel1'

intel2.instance_name='intel2'

intel3.instance_name='intel3'

intel1.instance_number=1

intel2.instance_number=2

intel3.instance_number=3

*.java_pool_size=31457280

*.job_queue_processes=36

*.large_pool_size=20971520

intel1.local_listener='LISTENER_INTEL1'

intel2.local_listener='LISTENER_INTEL2'

intel3.local_listener='LISTENER_INTEL3'

intel1.log_archive_dest_1='LOCATION=/ocfs_arch1/intel/'

intel2.log_archive_dest_1='LOCATION=/ocfs_arch2/intel/'

intel3.log_archive_dest_1='LOCATION=/ocfs_arch2/intel/'

*.log_archive_format='%t_%s.dbf'

*.log_archive_start=true

*.open_cursors=4000

*.optimizer_index_cost_adj=30

*.optimizer_mode='rule'

*.pga_aggregate_target=314572800

*.processes=1015

*.query_rewrite_enabled='FALSE'

intel1.remote_listener='LISTENERS_INTEL'

intel2.remote_listener='LISTENERS_INTEL'

intel3.remote_listener='LISTENERS_INTEL'

*.remote_login_passwordfile='exclusive'

*.resource_limit=TRUE

*.service_names='intel'

*.session_cached_cursors=20

*.shared_pool_size=419430400

*.sort_area_size=2097152

*.star_transformation_enabled='FALSE'

intel1.thread=1

intel2.thread=2

intel3.thread=3

*.timed_statistics=TRUE

*.trace_enabled=false

*.undo_management='AUTO'

*.undo_retention=10800

intel1.undo_tablespace='UNDOTBS1'

intel2.undo_tablespace='UNDOTBS2'

intel3.undo_tablespace='UNDOTBS3'

*.user_dump_dest='/u01/product/admin/intel/udump'

 

 

11、在資料庫中新增新的redo logfile undo

開啟節點1的例項到mount狀態,在節點1上為節點3建立redo logundo tbs :

SQL> startup mount

SQL> ALTER DATABASE ADD LOGFILE THREAD 3 

   GROUP 9   ('/ocfs_ctrl_redo/intel/redo09.log', '/ocfs_data/intel/redo09b.log')  size 100m,

   GROUP 10  ('/ocfs_ctrl_redo/intel/redo10.log', '/ocfs_data/intel/redo10b.log')  size 100m,

   GROUP 11  ('/ocfs_ctrl_redo/intel/redo11.log', '/ocfs_data/intel/redo11b.log')  size 100m,  

   GROUP 12  ('/ocfs_ctrl_redo/intel/redo12.log', '/ocfs_data/intel/redo12b.log')  size 100m ;

SQL> alter database open ;

SQL> alter database enable public thread 3 ;

SQL> create undo tablespace undotbs3 datafile ‘/ocfs_data/intel/undotbs03_1.dbf’ size 2048064K ;

 

 

13、確認新節點的環境變數(ORACLE_HOMEORACLE_SID等),確認spfile修改OK ,且節點3online redo undo加入OK,以及節點3例項的例項目錄及密碼檔案,各個目錄許可權等都OK . 開始開啟各個節點的 oracm ,gsdctl,  如果密碼檔案有問題,重建新節點的密碼檔案,開啟資料庫,監聽。

 

 

14、 可以透過srvctl的配置增加對新節點的管理。具體檢視srvctl幫助,例:srvctl -h   srvctl config -h

 

15, 驗證RAC

SQL> select THREAD#,STATUS,ENABLED from gv$thread ;

THREAD# STATUS ENABLED

1 OPEN PUBLIC

2 OPEN PUBLIC

3 OPEN PUBLIC

1 OPEN PUBLIC

2 OPEN PUBLIC

3 OPEN PUBLIC

1 OPEN PUBLIC

2 OPEN PUBLIC

3 OPEN PUBLIC

 

SQL> select INSTANCE_NUMBER,STATUS,HOST_NAME from gv$instance ;

INSTANCE_NUMBER STATUS HOST_NAME

1 OPEN dmdii-node1

2 OPEN dmdii-node2

3 OPEN dmdii-node3

 

$lsnodes 檢視是否監測到多個節點。

$ lsnrctl status 檢視cluster狀態。客戶端單獨連線測試。 

 

 

新增更多的例項方法相同。

 

如果還有問題,可以參考Oracle文件

     

或者參考 metalink.oracle.com  

 

 

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

相關文章