您的位置:首页 > 数据库

DBCA数据库出现RPCR-1071,PRCR-1066,CRS-2566错误的解决过程

2015-01-07 09:50 387 查看
昨天在用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建库,一定要注意目录权限的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐