环境配置:oracle11.2.0.2
--本地监听状态及配置
[oracle@njdywdbs]$lsnrctlstatus
LSNRCTLforLinux:Version11.2.0.2.0-Productionon31-7月-201216:37:41
Copyright(c)1991,2010,Oracle.Allrightsreserved.
正在连接到(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER的STATUS
------------------------
别名LISTENER
版本TNSLSNRforLinux:Version11.2.0.2.0-Production
启动日期31-7月-201215:50:39
正常运行时间0天0小时47分2秒
跟踪级别off
安全性ON:LocalOSAuthentication
SNMPON
监听程序参数文件/u01/app/ora11g/product/11.2.0/grid/network/admin/listener.ora
监听程序日志文件/u01/app/ora11g/diag/tnslsnr/njdyw/listener/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.5.238)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
服务摘要..
服务"+ASM"包含1个实例。
实例"+ASM",状态READY,包含此服务的1个处理程序...
服务"gcdb"包含1个实例。
实例"gcdb",状态UNKNOWN,包含此服务的1个处理程序...
命令执行成功
[oracle@njdywdbs]$tnspinggc
TNSPingUtilityforLinux:Version11.2.0.2.0-Productionon31-7月-201216:37:52
Copyright(c)1997,2010,Oracle.Allrightsreserved.
已使用的参数文件:
已使用TNSNAMES适配器来解析别名
尝试连接(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.5.238)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=gcdb)(UR=A)))
OK(0毫秒)
[oracle@njdywdbs]$cat/u01/app/ora11g/product/11.2.0/grid/network/admin/listener.ora
#listener.oraNetworkConfigurationFile:/u01/app/ora11g/product/11.2.0/grid/network/admin/listener.ora
#GeneratedbyOracleconfigurationtools.
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.5.238)(PORT=1521))
)
)
#ADR_BASE_LISTENER=/u01/app/ora11g
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=gcdb)
(ORACLE_HOME=/u01/app/ora11g/product/11.2.0/grid)
(SID_NAME=gcdb)
)
)
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON#lineaddedbyAgent
--密码文件也创建无误
[oracle@njdywdbs]$llorapwgcdb
-rw-r-----1oracleoinstall153607-1910:41orapwgcdb
问题:
--但就是无法用连接符登录空闲实例
[oracle@njdywdbs]$exportORACLE_SID=gcdb
[oracle@njdywdbs]$sqlplus[email=sys/oracle123@gc]sys/oracle123@gc[/email]assysdba
SQL*Plus:Release11.2.0.2.0Productionon星期二7月3116:41:262012
Copyright(c)1982,2010,Oracle.Allrightsreserved.
ERROR:
ORA-01031:insufficientprivileges
请输入用户名:
ERROR:
ORA-01017:用户名/口令无效;登录被拒绝
请输入用户名:
ERROR:
ORA-01017:用户名/口令无效;登录被拒绝
SP2-0157:在3次尝试之后无法连接到ORACLE,退出SQL*Plus
--如果用系统认证方式就可以用连接符方式登录
--直接用系统认证方式可以登录空闲实例
[oracle@njdywdbs]$sqlplus"/assysdba"
SQL*Plus:Release11.2.0.2.0Productionon星期二7月3116:44:542012
Copyright(c)1982,2010,Oracle.Allrightsreserved.
已连接到空闲例程。
SQL>startupnomount
ORACLE例程已经启动。
TotalSystemGlobalArea233861120bytes
FixedSize2225224bytes
VariableSize159386552bytes
DatabaseBuffers67108864bytes
RedoBuffers5140480bytes
SQL>exit
从OracleDatabase11gEnterpriseEditionRelease11.2.0.2.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions断开
--实例启动后再用连接符方式能成功登录
[oracle@njdywdbs]$sqlplus[email=sys/oracle123@gc]sys/oracle123@gc[/email]assysdba
SQL*Plus:Release11.2.0.2.0Productionon星期二7月3116:45:182012
Copyright(c)1982,2010,Oracle.Allrightsreserved.
连接到:
OracleDatabase11gEnterpriseEditionRelease11.2.0.2.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
SQL>
原因:
静态注册的ORACLE_HOME是这个目录/u01/app/ora11g/product/11.2.0/grid
这个目录不是RDBMSHOME而是GRIDHOME,
而passwordfile在RDBMSHOME/dbs下
解决:
把静态注册的ORACLE_HOME改成/u01/app/ora11g/product/11.2.0/db_1
[oracle@njdywadmin]$vilistener.ora
#listener.oraNetworkConfigurationFile:/u01/app/ora11g/product/11.2.0/grid/network/admin/listener.ora
#GeneratedbyOracleconfigurationtools.
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.5.238)(PORT=1521))
)
)
#ADR_BASE_LISTENER=/u01/app/ora11g
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=gcdb)
(ORACLE_HOME=/u01/app/ora11g/product/11.2.0/db_1)
(SID_NAME=gcdb)
)
)
--重启监听服务
--注意:在grid环境,如果使用lsnrctl重启监听有时可能无法找到服务,所以用crs_stop,crs_start命令重启。
[oracle@njdyw~]cd/u01/app/ora11g/product/11.2.0/grid/bin
[oracle@njdyw~]crs_stopora.LISTENER.lsnr
[oracle@njdyw~]crs_startora.LISTENER.lsnr
[oracle@njdywbin]$lsnrctlstatus
LSNRCTLforLinux:Version11.2.0.2.0-Productionon01-8月-201215:29:21
Copyright(c)1991,2010,Oracle.Allrightsreserved.
正在连接到(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER的STATUS
------------------------
别名LISTENER
版本TNSLSNRforLinux:Version11.2.0.2.0-Production
启动日期01-8月-201215:29:14
正常运行时间0天0小时0分7秒
跟踪级别off
安全性ON:LocalOSAuthentication
SNMPON
监听程序参数文件/u01/app/ora11g/product/11.2.0/grid/network/admin/listener.ora
监听程序日志文件/u01/app/ora11g/product/11.2.0/grid/log/diag/tnslsnr/njdyw/listener/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.5.238)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
服务摘要..
服务"gcdb"包含1个实例。
实例"gcdb",状态UNKNOWN,包含此服务的1个处理程序...
命令执行成功
--再次用连接串登录空闲实例后成功。
[oracle@njdywbin]$sqlplusassysdba
SQL*Plus:Release11.2.0.2.0Productionon星期三8月115:29:522012
Copyright(c)1982,2010,Oracle.Allrightsreserved.
已连接到空闲例程。
SQL>startupnomount
ORACLE例程已经启动。
TotalSystemGlobalArea233861120bytes
FixedSize2225224bytes
VariableSize159386552bytes
DatabaseBuffers67108864bytes
RedoBuffers5140480bytes
SQL>
总结:
开始我的思路是集中在密码文件和系统用户权限上,结果一直搞不定,不知道是哪里出了问题。但实践告诉我们ORA-01031登陆失败99%是低级错误,只有1%的可能是bug。