DBCA數據庫出現RPCR-1071,PRCR-1066,CRS-2566錯誤的解決過程

昨天在用DBCA創建數據庫的時候,遇到了不少問題,下來來分析一下解決的過程:

先是到59%,以及往後,都會報一些錯誤,如RPCR-1071,PRCR-1066,CRS-2566 等,點“ok”確認會自動跳過,直到完成。但是最後加載數據庫資源的時候還是會報錯,先是提示ora.asm11g.db資源不存在,用srvctl手動添加數據庫資源到CRS時,又報無法添加數據庫資源,以及CRS-2566:Oracle用戶沒有權限去創建ora.one資源












用oracle用戶添加不上數據庫的資源,停止has提示權限不足



查看dbca的安裝過程日誌:

[oracle@zlm ~]$ tail -3000f /u01/app/oracle/cfgtoollogs/dbca/asm11g/trace.log|grep PRCR
[Thread-168] [ 2015-01-06 17:45:07.740 CST ] [HASIDBRegistrationStep.executeImpl:253]  Exception while registering with HAS PRCR-1006 : Failed to add resource ora.asm11g.db for asm11g
PRCR-1071 : Failed to register or update resource ora.asm11g.db
PRCR-1001 : Resource ora.asm11g.db does not exist

也都是報資源不存在,添加和註冊數據庫資源失敗,用grid用戶重啓一下has

[grid@zlm bin]$ crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'zlm'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'zlm'
CRS-2677: Stop of 'ora.DATA.dg' on 'zlm' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'zlm'
CRS-2677: Stop of 'ora.asm' on 'zlm' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'zlm'
CRS-2677: Stop of 'ora.cssd' on 'zlm' succeeded
CRS-2673: Attempting to stop 'ora.evmd' on 'zlm'
CRS-2677: Stop of 'ora.evmd' on 'zlm' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'zlm' has completed
CRS-4133: Oracle High Availability Services has been stopped.
[grid@zlm bin]$ crsctl start has
CRS-4123: Oracle High Availability Services has been started.
[grid@zlm bin]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    zlm         
ora.asm        ora.asm.type   ONLINE    ONLINE    zlm         
ora.cssd       ora.cssd.type  ONLINE    ONLINE    zlm         
ora.diskmon    ora....on.type OFFLINE   OFFLINE               
ora.evmd       ora.evm.type   ONLINE    ONLINE    zlm         
ora.ons        ora.ons.type   OFFLINE   OFFLINE       

[oracle@zlm asm11g]$ srvctl add database -d asm11g -o $ORACLE_HOME --沒有報錯,資源添加上了
[oracle@zlm asm11g]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    zlm         
ora.asm        ora.asm.type   ONLINE    ONLINE    zlm         
ora.asm11g.db  ora....se.type OFFLINE   OFFLINE               
ora.cssd       ora.cssd.type  ONLINE    ONLINE    zlm         
ora.diskmon    ora....on.type OFFLINE   OFFLINE               
ora.evmd       ora.evm.type   ONLINE    ONLINE    zlm         
ora.ons        ora.ons.type   OFFLINE   OFFLINE               
[oracle@zlm asm11g]$ srvctl start database -d asm11g
PRCR-1079 : Failed to start resource ora.asm11g.db
ORA-12547: TNS:lost contact
CRS-5017: The resource action "ora.asm11g.db start" encountered the following error: 
ORA-12547: TNS:lost contact
. For details refer to "(:CLSN00107:)" in "/g01/app/11.2.0/grid/log/zlm/agent/ohasd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of 'ora.asm11g.db' on 'zlm' failed
ORA-12547: TNS:lost contact
[oracle@zlm asm11g]$ 

重啓has後,資源依然沒有自動主導到CRS,但是可以通過srvctl添加數據庫資源到CRS了,不再報沒有權限等錯誤,不知道是否是Oracle 11gR2的一個bug。DBCA前需要重啓一下has,或者先DBCA裝完,然後重啓has再添加數據庫資源,我使用的是後者的方法

雖然資源添加上了,但是要啓動數據庫實例這個資源,還是報錯,現在是提示TNS丟失連接,既然是TNS的錯,那麼就先用Oracle用戶創建一個tnsnames.ora,完了再用Grid把監聽啓動(使用GI時,通常是用grid用戶創建監聽的)

[grid@zlm bin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 07-JAN-2015 00:19:36

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

Starting /g01/app/11.2.0/grid/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /g01/app/11.2.0/grid/network/admin/listener.ora
Log messages written to /g01/app/grid/diag/tnslsnr/zlm/listener/alert/log.xml
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm)(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...

啓動監聽依然是報錯

根據Linux Error: 98可以判斷,發生這種問題是由於端口被程序綁定而沒有釋放造成
可以使用netstat -lp命令查詢當前處於連接的程序以及對應的進程信息
然後用ps pid 察看對應的進程,並使用kill pid 關閉該進程即可

[grid@zlm bin]$ cat /g01/app/11.2.0/grid/network/admin/listener.ora
# listener.ora Network Configuration File: /g01/app/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = asm11g)
      (ORACLE_HOME = /g01/app/11.2.0/grid)
      (SID_NAME = asm11g)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = zlm)(PORT = 1521))
  )

ADR_BASE_LISTENER = /g01/app/grid

[grid@zlm bin]$ echo $ORACLE_SID
+ASM
[grid@zlm bin]$ netca

用grid創建監聽,提示1521端口已經被佔用了



[root@zlm ~]# netstat -nalp|grep 1521
tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN      27855/tnslsnr  
[root@zlm ~]# kill 27855
[root@zlm ~]# netstat -nalp|grep 1521
[root@zlm ~]#

直接啓動也是報錯:

[oracle@zlm asm11g]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 7 00:53:52 2015

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+DATA/asm11g/spfileasm11g.ora'
ORA-17503: ksfdopn:2 Failed to open file +DATA/asm11g/spfileasm11g.ora
ORA-12547: TNS:lost contact

 <txt>Started with pid=28061
 </txt>
</msg>
<msg time='2015-01-07T01:13:47.048+08:00' org_id='oracle' comp_id='tnslsnr'
 type='UNKNOWN' level='16' host_id='zlm'
 host_addr='180.168.41.175'>
 <txt>Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm)(PORT=1521)))
 </txt>
</msg>
<msg time='2015-01-07T01:13:47.048+08:00' org_id='oracle' comp_id='tnslsnr'
 type='UNKNOWN' level='16' host_id='zlm'
 host_addr='180.168.41.175'>
 <txt>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
 </txt>
</msg>
[grid@zlm alert]$ vi /etc/hosts
[grid@zlm alert]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
180.168.41.175          zlm

一直報監聽被佔用的問題原來出在這裏,這個主機名的IP地址是自動生成的,沒有對其進行過改動,把IP改成正確的,重新啓動監聽

[grid@zlm ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 07-JAN-2015 01:17:43

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

TNS-01106: Listener using listener name listener has already been started
[grid@zlm ~]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 07-JAN-2015 01:17:51

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm)(PORT=1521)))
The command completed successfully
[grid@zlm ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 07-JAN-2015 01:17:55

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

Starting /g01/app/11.2.0/grid/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /g01/app/11.2.0/grid/network/admin/listener.ora
Log messages written to /g01/app/grid/diag/tnslsnr/zlm/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zlm)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                07-JAN-2015 01:17:55
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /g01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File         /g01/app/grid/diag/tnslsnr/zlm/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zlm)(PORT=1521)))
Services Summary...
Service "asm11g" has 1 instance(s).
  Instance "asm11g", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

久違的服務終於註冊上了,是之前用grid用戶創建的靜態監聽,但查看日誌還是有錯誤,找不到監聽資源,就是還沒有被註冊到CRS上去

2015-01-07 01:23:45.345: [ USRTHRD][1116309824] {0:0:2} checkCrsStat 2 clscrs_res_get_op_status CLSCRS_STAT status 210 err_msg CRS-0210: Could not find resource 'ora.LISTENER.lsnr'.
2015-01-07 01:23:45.345: [ USRTHRD][1116309824] {0:0:2} AsmCommonAgent::setLocalListener cls::Exception CRS-0210: Could not find resource 'ora.LISTENER.lsnr'.

[grid@zlm oraagent_grid]$ srvctl start database -d asm11g
PRCR-1079 : Failed to start resource ora.asm11g.db
ORA-12547: TNS:lost contact
CRS-5017: The resource action "ora.asm11g.db start" encountered the following error: 
ORA-12547: TNS:lost contact
. For details refer to "(:CLSN00107:)" in "/g01/app/11.2.0/grid/log/zlm/agent/ohasd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of 'ora.asm11g.db' on 'zlm' failed
ORA-12547: TNS:lost contact

一直報TNS連接丟失,啓動數據庫資源失敗,tail一下提示查看的日誌:

[grid@zlm oraagent_grid]$ tail -20f /g01/app/11.2.0/grid/log/zlm/agent/ohasd/oraagent_grid/oraagent_grid.log
2015-01-07 01:30:31.572: [ USRTHRD][1116309824] {0:0:2} CrsCmd::ClscrsCmdData::stat entity 1 statflag 33 useFilter 0
2015-01-07 01:30:31.594: [ USRTHRD][1116309824] {0:0:2} checkCrsStat 2 CLSCRS_STAT ret: 200
2015-01-07 01:30:31.594: [ USRTHRD][1116309824] {0:0:2} checkCrsStat 2 clscrs_res_get_op_status CLSCRS_STAT status 210 err_msg CRS-0210: Could not find resource 'ora.LISTENER.lsnr'.
2015-01-07 01:30:31.594: [ USRTHRD][1116309824] {0:0:2} AsmCommonAgent::setLocalListener cls::Exception CRS-0210: Could not find resource 'ora.LISTENER.lsnr'.
2015-01-07 01:30:31.594: [ USRTHRD][1116309824] {0:0:2} ASM Dedicated Thread }
2015-01-07 01:30:31.594: [ USRTHRD][1116309824] {0:0:2} Thread:ASM DedicatedThreadisRunning is reset to false here

捕捉到的日誌提示找不到ora.LISTENER.lsnr資源

[grid@zlm admin]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    zlm         
ora.asm        ora.asm.type   ONLINE    ONLINE    zlm         
ora.asm11g.db  ora....se.type ONLINE    OFFLINE               
ora.cssd       ora.cssd.type  ONLINE    ONLINE    zlm         
ora.diskmon    ora....on.type OFFLINE   OFFLINE               
ora.evmd       ora.evm.type   ONLINE    ONLINE    zlm         
ora.ons        ora.ons.type   OFFLINE   OFFLINE      

監聽資源確實是沒有註冊到CRS,用srvctl手動添加一下ora.LISTENER.lsnr

[grid@zlm admin]$ srvctl add listener
PRCN-2061 : Failed to add listener ora.LISTENER.lsnr
PRCN-2065 : Port(s) 1521 are not available on the nodes given
PRCN-2067 : Port 1521 is not available across node(s) "zlm"

這是因爲,監聽開啓的狀態下,不能添加到CRS資源,需要先停掉監聽後再添加

[grid@zlm admin]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 07-JAN-2015 01:41:03

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm)(PORT=1521)))
The command completed successfully
[grid@zlm admin]$ srvctl add listener    <--這次沒有報錯了
[grid@zlm admin]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    zlm         
ora....ER.lsnr ora....er.type OFFLINE   OFFLINE              <--監聽已經註冊上了
ora.asm        ora.asm.type   ONLINE    ONLINE    zlm         
ora.asm11g.db  ora....se.type ONLINE    OFFLINE               
ora.cssd       ora.cssd.type  ONLINE    ONLINE    zlm         
ora.diskmon    ora....on.type OFFLINE   OFFLINE               
ora.evmd       ora.evm.type   ONLINE    ONLINE    zlm         
ora.ons        ora.ons.type   OFFLINE   OFFLINE               
[grid@zlm admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 07-JAN-2015 01:41:45

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

Starting /g01/app/11.2.0/grid/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /g01/app/11.2.0/grid/network/admin/listener.ora
Log messages written to /g01/app/grid/diag/tnslsnr/zlm/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zlm)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                07-JAN-2015 01:41:45
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /g01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File         /g01/app/grid/diag/tnslsnr/zlm/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zlm)(PORT=1521)))
Services Summary...
Service "asm11g" has 1 instance(s).
  Instance "asm11g", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[grid@zlm admin]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    zlm         
ora....ER.lsnr ora....er.type ONLINE    ONLINE    zlm            <--監聽的狀態爲ONLINE了
ora.asm        ora.asm.type   ONLINE    ONLINE    zlm         
ora.asm11g.db  ora....se.type ONLINE    OFFLINE               
ora.cssd       ora.cssd.type  ONLINE    ONLINE    zlm         
ora.diskmon    ora....on.type OFFLINE   OFFLINE               
ora.evmd       ora.evm.type   ONLINE    ONLINE    zlm         
ora.ons        ora.ons.type   OFFLINE   OFFLINE

再次啓動數據庫資源

[grid@zlm admin]$ srvctl start database -d asm11g
PRCR-1079 : Failed to start resource ora.asm11g.db
ORA-12547: TNS:lost contact
CRS-5017: The resource action "ora.asm11g.db start" encountered the following error: 
ORA-12547: TNS:lost contact
. For details refer to "(:CLSN00107:)" in "/g01/app/11.2.0/grid/log/zlm/agent/ohasd/oraagent_grid/oraagent_grid.log".

CRS-2674: Start of 'ora.asm11g.db' on 'zlm' failed
ORA-12547: TNS:lost contact

還是剛纔的錯,看來還不光是監聽沒有註冊到CRS的原因,因爲現在監聽在CRS資源裏已經是ONLINE的了

[oracle@zlm dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 7 01:56:18 2015

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+DATA/asm11g/spfileasm11g.ora'
ORA-17503: ksfdopn:2 Failed to open file +DATA/asm11g/spfileasm11g.ora
ORA-12547: TNS:lost contact
SQL> !
[oracle@zlm dbs]$ 

這裏出現了ORA-17503的錯誤,難道是spfileasm11g.ora這個文件不存在?查看了一下,非也
由於之前看到2個目錄中的oracle的bin文件的權限狀態不太對

oracle:


這個oracle的權限是不對的,沒有變成-rwsr-s--x 1 oracle asmadmin

grid:


其實這個grid是對的,加過6571權限了,後面的oracle是紅底的狀態(正確狀態)
而我以爲需要給oinstall組,又錯誤地執行了面的兩條命令:
[root@zlm bin]# chown oracle:oinstall /u01 -p
[root@zlm bin]# chown grid:oinstall /g01 -p

所以現在可以得知,就是目錄權限的問題導致之前的一系列報錯,TNS連接丟失,無法添加或啓動資源等(ora.LISTENER.ora的那個除外,是因爲IP地址錯誤配置導致的)

將oracle的owner修改回“oracle asmadmin",並重新配置6571權限:

grid:(不用做,已經是正確的狀態了)
[oracle@zlm dbs]$ ls -al $GRID_HOME/bin/oracle
-rwxrwxr-x 1 grid oinstall 203972923 Jan  6 15:41 /g01/app/11.2.0/grid/bin/oracle
[root@zlm bin]# chmod 6751 /g01/app/11.2.0/grid/bin/oracle
[root@zlm bin]# ls -l /g01/app/11.2.0/grid/bin/oracle
-rwsr-s--x 1 grid oinstall 203972923 Jan  6 15:41 /g01/app/11.2.0/grid/bin/oracl

oracle:
[oracle@zlm dbs]$ ls -al $ORACLE_HOME/bin/oracle
-rwxrwxr-x 1 oracle oinstall 232399473 Jan  6 15:57 /u01/app/oracle/product/11.2.0/db_1/bin/oracle
[root@zlm bin]# chown oracle:asmadmin /u01/app/oracle/product/11.2.0/db_1/bin/oracle
-rwxr-x--x 1 oracle asmadmin 232399473 Jan  6 15:57 /u01/app/oracle/product/11.2.0/db_1/bin/oracle
[root@zlm bin]# chmod 6751 /u01/app/oracle/product/11.2.0/db_1/bin/oracle
[root@zlm bin]# ls -l /u01/app/oracle/product/11.2.0/db_1/bin/oracle
-rwsr-s--x 1 oracle asmadmin 232399473 Jan  6 15:57 /u01/app/oracle/product/11.2.0/db_1/bin/oracle

[grid@zlm ~]$ srvctl start database -d asm11g --這次啓動不再報錯了
[grid@zlm ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    zlm         
ora....ER.lsnr ora....er.type ONLINE    ONLINE    zlm         
ora.asm        ora.asm.type   ONLINE    ONLINE    zlm         
ora.asm11g.db  ora....se.type ONLINE    ONLINE    zlm         
ora.cssd       ora.cssd.type  ONLINE    ONLINE    zlm         
ora.diskmon    ora....on.type OFFLINE   OFFLINE               
ora.evmd       ora.evm.type   ONLINE    ONLINE    zlm         
ora.ons        ora.ons.type   OFFLINE   OFFLINE          

修正權限問題後,數據庫資源就可以正常啓動了,以後在GI管理的數據庫上DBCA建庫,一定要注意目錄權限的問題

發佈了116 篇原創文章 · 獲贊 20 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章