[轉]RAC 安裝配置過程中的問題

lhyvsxman發表於2010-05-19

OS RHAS 3.2 DB 9204

在RAC的安裝配置過程中,雖然是嚴格仔細按照文件來實施,但還是出現不少問題,現整理出來。


現象一 :

在節點一安裝資料庫的時候出現以下錯誤

[oracle@rac1 dbs]$ sqlplus "/nolog"

SQL*Plus: Release 9.2.0.4.0 - Production on Thu Feb 23 14:09:08 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup nomount pfile="/home/oracle/9.2.0.4/dbs/init.ora"
ORA-00444: background process "LMD0" failed while starting
ORA-07446: sdnfy: bad value ' for parameter .
SQL> exit
Disconnected

查詢了錯誤原因

[oracle@rac1 dbs]$ oerr ora 444
00444, 00000, "background process "%s" failed while starting"
// *Cause: Usually due to a bad (or non-existent) background process image.
// *Action: Get a good background process image.

竟然是LMD0程式有問題,重新分析了一下引數檔案,沒有發現有錯誤的地方,於是懷疑在安裝的過程中出現問題。
嘗試在節點二建立資料庫,

[oracle@rac2 dbs]$ sqlplus "/nolog"

SQL*Plus: Release 9.2.0.4.0 - Production on Thu Feb 23 14:20:32 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup nomount pfile="/home/oracle/9.2.0.4/dbs/init.ora"
ORACLE instance started.

Total System Global Area 319923400 bytes
Fixed Size 451784 bytes
Variable Size 201326592 bytes
Database Buffers 117440512 bytes
Redo Buffers 704512 bytes

使用一樣的引數檔案,在節點二卻是可以的,這說明推斷還是正確的。


現象二:

從節點二建立資料庫成功,然後在節點一啟動資料庫

SQL> startup mount pfile="/home/oracle/9.2.0.4/dbs/init.ora"
ORACLE instance started.

Total System Global Area 319923400 bytes
Fixed Size 451784 bytes
Variable Size 201326592 bytes
Database Buffers 117440512 bytes
Redo Buffers 704512 bytes
ORA-00439: feature not enabled: Real Application Clusters

以上錯誤,我平臺是RH AS3.2,DB是企業版的9204,所以不會是版本出現問題。在節點一安裝的過程中,發現
$ srvconfig -init 這個命令不能使用,應該是某些元件還沒有安裝好,刪除後重灌,保留共享磁碟上節點一的REDO和UNDO資料檔案,然後直接在節點一進行startup mount pfile="/home/oracle/9.2.0.4/dbs/init.ora",這下成功了。

小插曲:在節點一MOUNT的過程中,還出現報控制檔案出錯的,很納悶,節點二和節點一用的是同樣的引數檔案,後來發現是引數檔案中,控制檔案部分有換行的錯誤,重新整理後,錯誤就解決了。


現象三 監聽的配置

監聽的配置耗了一個上午的時間折騰,按照文件去配置,就是不行。。其間有時候監聽可以起來,但是建了TEST使用者,執行sqlplus 報錯

[oracle@rac2 admin]$ sqlplus

SQL*Plus: Release 9.2.0.4.0 - Production on Fri Feb 24 14:09:13 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

ERROR:
ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect
descriptor

說明監聽還是配置不正確,監聽配置的成功必須輔以tnsping rac 這個命令成功執行為準,下面是最後我兩個節點的配置引數

節點一:

listener.ora

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/9.2.0.4)
(PROGRAM = extproc)
)
(SID_DESC =
(ORACLE_HOME = /home/oracle/9.2.0.4)
(SID_NAME = rac1)
)
)


tnsnames.ora

LISTENERS_RAC =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1522))
)

LISTENER_RAC1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

LISTENER_RAC2 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))

RAC1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac1)
)
)

RAC2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac2)
)
)

RAC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
(LOAD_BALANCE = on)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

節點二:

listener.ora

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = rac2)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/9.2.0.4)
(PROGRAM = extproc)
)
(SID_DESC =
(ORACLE_HOME = /home/oracle/9.2.0.4)
(SID_NAME = rac2)
)
)

tnsnames.ora

LISTENERS_RAC =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
)

LISTENER_RAC2 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))

LISTENER_RAC1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

RAC2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac2)
)
)

RAC1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac1)
)
)


RAC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
(LOAD_BALANCE = on)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)


在監聽配置的過程中,還出現這樣一個現象,發現在節點二上無論怎麼配置都出現以下故障

[oracle@rac2 admin]$ lsnrctl start

LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 24-FEB-2006 14:40:20

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

Starting /home/oracle/9.2.0.4/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 9.2.0.4.0 - Production
System parameter file is /home/oracle/9.2.0.4/network/admin/listener.ora
Log messages written to /home/oracle/9.2.0.4/network/log/listener.log
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac2)(PORT=1521)))
TNS-12542: TNS:address already in use
TNS-12560: TNS:protocol adapter error
TNS-00512: Address already in use
Linux Error: 98: Address already in use

Listener failed to start. See the error message(s) above...

起初以為是埠的問題,更改了監聽的埠,監聽是成功了。但是後來想想,兩臺不同的機器,怎麼會可能存在地址佔用呢,於是又去搜尋故障原因,檢查配置檔案,最後 netstat -lpn發現有個1521的埠一直開著,卻什麼事情也不幹,於是強制把這個程式給KILL掉,再重新配置,成功!


現象四 :

負載均衡和失敗切換的測試

失敗切換很簡單,就在兩邊的tnsnames.ora 加上(LOAD_BALANCE = on)和(FAILOVER = on)就可以了,具體看上面的配置。兩個引數用YES和ON都可以
在負載均衡測試上花費了一點時間,主要是在測試的過程中,發現連線的一直都是節點二,只是偶爾會切換到節點一,但是出現的次數非常少。後來嘗試
在客戶端上進行測試連線,發現還是這樣的。由於我節點一的機器配置檔次比節點二的機器配置要低很多。所以我分析,基本上,是有負載均衡切換的功能了

現象五:

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
CMCLI ERROR: OpenCommPort: connect failed with error 111.
CMCLI ERROR: OpenCommPort: connect failed with error 111.
CMCLI ERROR: OpenCommPort: connect failed with error 111.
ORACLE instance started.

Total System Global Area 319923400 bytes
Fixed Size 451784 bytes
Variable Size 201326592 bytes
Database Buffers 117440512 bytes
Redo Buffers 704512 bytes
ORA-32700: error occurred in DIAG Group Service

以ROOT使用者啟動 $ORACLE_HOME/oracm/bin/ocmstart.sh 即可

[@more@]

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

相關文章