Oracle10203RAC環境新增新節點(六)

yangtingkun發表於2009-11-20

簡單描述一下,在Oracle 10203 for Solaris sparcRAC雙節點環境中,新增一個節點的過程。共享儲存已經在第三個節點上配置完成,這裡主要介紹作業系統上和Oracle上的配置。

簡單描述新增節點的資料庫新增例項過程中碰到的問題。

Oracle10203RAC環境新增新節點(一):http://yangtingkun.itpub.net/post/468/493738

Oracle10203RAC環境新增新節點(二):http://yangtingkun.itpub.net/post/468/493764

Oracle10203RAC環境新增新節點(三):http://yangtingkun.itpub.net/post/468/493811

Oracle10203RAC環境新增新節點(四):http://yangtingkun.itpub.net/post/468/493848

Oracle10203RAC環境新增新節點(五):http://yangtingkun.itpub.net/post/468/493883

 

 

首先碰到一個錯誤,當新例項ASM例項啟動後,在V$ASM_DISK中僅能查詢到一個磁碟,而從DBCA的狀況看,3個例項只有2MOUNT到磁碟組。

這個問題以前碰到多,應該是缺少許可權造成的:

# cd /dev/rdsk/
# chown oracle:oinstall c1t500601603022*

授權後:

bash-3.00$ export ORACLE_SID=+ASM3
bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 4 2 15:07:23 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select count(*) from v$asm_disk;

  COUNT(*)
----------
        45

在使用dbca新增例項的時候碰到幾個問題,所有的問題都是在新增例項9個步驟中的第3個步驟:Select an active cluster database to add on instance

首先需要確保資料庫例項處於啟動狀態,否則dbca在新增例項的時候會報錯。

其次應該保證所有節點的LISTENER處於啟動狀態,否則dbca新增例項的介面點選NEXT後不會有任何的反應。

即使LISTENER全部啟動也是不夠的,必須確保LISTENER檢測每個節點的PUBLIC IP。對於以及執行的RAC環境而言,LISTENER一般監聽的是每個節點的VIP,而如果沒有新增PUBLIC IP,那麼dbca就會報錯,說明監聽的物件racnode1:1521:testrac1不存在。

需要手工在所有的節點上新增對PUBLIC IP的監聽設定,比如節點1LISTENER.ORA設定如下:

bash-2.03$ more listener.ora
# listener.ora.racnode1 Network Configuration File: /data/oracle/product/10.2/database/network/admin/listener.ora.racnode1
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /data/oracle/product/10.2/database)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = testrac)
      (ORACLE_HOME = /data/oracle/product/10.2/database)
      (SID_NAME = testrac1)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.224)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.222)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

隨後重啟監聽:

bash-2.03$ lsnrctl stop

LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 01-2 -2009 00:35:54

Copyright (c) 1991, 2006, Oracle.  All rights reserved.

正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.198.224)(PORT=1521)))
命令執行成功
bash-2.03$ lsnrctl start

LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 01-2 -2009 00:36:02

Copyright (c) 1991, 2006, Oracle.  All rights reserved.

啟動/data/oracle/product/10.2/database/bin/tnslsnr: 請稍候...

TNSLSNR for Solaris: Version 10.2.0.3.0 - Production
系統引數檔案為/data/oracle/product/10.2/database/network/admin/listener.ora
寫入/data/oracle/product/10.2/database/network/log/listener.log的日誌資訊
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.224)(PORT=1521)))
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.222)(PORT=1521)))
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.198.224)(PORT=1521)))
LISTENER
STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for Solaris: Version 10.2.0.3.0 - Production
啟動日期                  01-2 -2009 00:36:02
正常執行時間              0 0 小時 0 0
跟蹤級別                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
監聽程式引數檔案          /data/oracle/product/10.2/database/network/admin/listener.ora
監聽程式日誌檔案          /data/oracle/product/10.2/database/network/log/listener.log
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.224)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.222)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
 
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "testrac" 包含 1 個例程。
 
例程 "testrac1", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
命令執行成功

每個節點執行此操作後,再次點選next,終於可以到達下一個步驟。

最後一個問題在於DBCA對於ASM例項的處理還存在問題。由於使用了ASM,自然也就使用了OMF特性。於是新增的例項所需要新增的UNDOTBS3表空間,以及THREAD3對應的REDO.LOG檔案,都採用了OMF方式。如果說DBCA採用了OMF而不執行使用者提供儲存位置,那麼它能在正確的位置儲存檔案也可以,可惜DBCA存在問題,當最後執行的時候報錯:Failed to create directory “” on “racnode3”, “PRKC-1055: Directory name passed was null”. PRKC-1055: Directory name passed was null

所以只能採用提前建立UNDOTBS3表空間,以及THREAD3對應的REDO.LOG的方法:

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

    GROUP#    THREAD#  SEQUENCE# BYTES/1024/1024
---------- ---------- ---------- ---------------
         1          1       1716             512
         2          1       1717             512
         3          2        839             512
         4          2        840             512

SQL> select member from v$logfile;

MEMBER
---------------------------------------------------
+DISK/testrac/onlinelog/group_1.258.633485433
+DISK/testrac/onlinelog/group_2.260.633485441
+DISK/testrac/onlinelog/group_3.268.633485447
+DISK/testrac/onlinelog/group_4.270.633485455

下面手工新增THREAD 3對應的REDO.LOG

SQL> alter database add logfile thread 3 group 5 '+DISK/testrac/onlinelog/redo5.log' size 512m;

資料庫已更改。

SQL> alter database add logfile thread 3 group 6 '+DISK/testrac/onlinelog/redo6.log' size 512m;

資料庫已更改。

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

    GROUP#    THREAD#  SEQUENCE# BYTES/1024/1024
---------- ---------- ---------- ---------------
         1          1       1716             512
         2          1       1717             512
         3          2        839             512
         4          2        840             512
         5          3          0             512
         6          3          0             512

已選擇6行。

SQL> select member from v$logfile;

MEMBER
----------------------------------------------------------------
+DISK/testrac/onlinelog/group_1.258.633485433
+DISK/testrac/onlinelog/group_2.260.633485441
+DISK/testrac/onlinelog/group_3.268.633485447
+DISK/testrac/onlinelog/group_4.270.633485455
+DISK/testrac/onlinelog/redo5.log
+DISK/testrac/onlinelog/redo6.log

已選擇6行。

接著新增UNDOTBS3表空間:

SQL> select file_name from dba_data_files
  2  where tablespace_name like 'UNDOTBS_';

FILE_NAME
----------------------------------------------------------------------
+DISK/testrac/datafile/undotbs1.263.618591197
+DISK/testrac/datafile/undotbs2.266.618591249

SQL> create undo tablespace undotbs3
  2  datafile '+DISK/testrac/datafile/undotbs3.dbf' size 4096m;

表空間已建立。

隨後使用DBCA進行新增節點,不過在最後一步新增表空間和REDO的時候,需要手工將表空間和REDO.LOG刪除。不過根據DBCA提供的彙總顯示外,仍然存在問題,DBCA認為新節點對應的THREAD1,而認為對應的UNDO表空間是UNDOTBS4。點選確定後,仍然報錯。

看來只能透過手工的方法來新增例項了。具體方法在第四篇文章中已經描述過了,這裡就不在重複了。

隨後在啟動新增例項的時候碰到了一個錯誤:

bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 4 3 14:53:23 2009

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

已連線到空閒例程。

SQL> startup
ORACLE
例程已經啟動。

Total System Global Area 2147483648 bytes
Fixed Size                  2031480 bytes
Variable Size             503316616 bytes
Database Buffers         1627389952 bytes
Redo Buffers               14745600 bytes
ORA-01618: ???? 3 ??? - ????

這時由於沒有啟用對應的THREAD。登陸例項1的節點,ENABLE THREAD 3

SQL> alter database enable thread 3;

資料庫已更改。

重啟例項3問題消失。

 

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

相關文章