今天在用rman做standby数据库时,连接auxiliary数据库报错以下信息:
1 2 3 4 5 6 7 8 |
连接到目标数据库: ORALOCAL (DBID=3856983144) RMAN> connect auxiliary sys/sys@standby RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-04006: error from auxiliary database: ORA-12541: TNS: 没有监听器 |
去查了一下备机的侦听,由于是采用动态注册,先启动了侦听,再启动instance,当时pmon还没实现动态注册,需要等待1分钟左右的时间,发现oralocal的服务已经出现,就再次用rman连接,发现出现了另外一个报错:
1 2 3 4 5 6 |
RMAN> connect auxiliary sys/sys@standby RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-04006: error from auxiliary database: ORA-12523: TNS: 监听程序未找到适用于客户机连接的例程 |
仔细检查了一下侦听的状态,发现其service是blocked的状态:
1 2 3 4 |
…… Service "oralocal" has 1 instance(s). Instance "oralocal", status BLOCKED, has 1 handler(s) for this service... …… |
奇怪,如果在listener.ora中如果没有出现sid_desc的话,应该也可以实现动态注册的呀,问题现在确实实现的动态注册,但是状态却是blocked,客户端是无法连接的。尝试修改listener.ora为静态注册后,恢复正常。
为了测试这个猜想,再次oradim了一个oratest的服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
oradim -new -sid oratest 并且建立好init文件 C:\Documents and Settings\Administrator>set oracle_sid=oratest SQL> startup nomount pfile='?/database/initoratest.ora' ORACLE 例程已经启动。 Total System Global Area 139533192 bytes Fixed Size 453512 bytes Variable Size 109051904 bytes Database Buffers 29360128 bytes Redo Buffers 667648 bytes SQL> SQL> show parameter name NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ db_file_name_convert string db_name string oratest global_names boolean FALSE instance_name string oratest lock_name_space string log_file_name_convert string oracle_trace_collection_name string oracle_trace_facility_name string oracled plsql_native_make_file_name string service_names string oratest SQL> exit 从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production中断开 C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator>lsnrctl status LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 13-11月-2007 23:58:25 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=userhostname)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production 启动日期 13-11月-2007 21:35:04 正常运行时间 0 天 2 小时 23 分 22 秒 跟踪级别 off 安全性 OFF SNMP OFF 监听器参数文件 d:\oracle\ora92\network\admin\listener.ora 监听器日志文件 d:\oracle\ora92\network\log\listener.log 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=8080))(Presentation=HTTP)(Session=RAW)) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=2100))(Presentation=FTP)(Session=RAW)) 服务摘要.. 服务 "OEMREP" 包含 1 个例程。 例程 "OEMREP", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oralocal" 包含 2 个例程。 例程 "oralocal", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 例程 "oralocal", 状态 READY, 包含此服务的 1 个处理程序... 服务 "oralocalXDB" 包含 1 个例程。 例程 "oralocal", 状态 READY, 包含此服务的 1 个处理程序... 服务 "orarman" 包含 1 个例程。 例程 "orarman", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oratest" 包含 1 个例程。 例程 "oratest", 状态 BLOCKED, 包含此服务的 1 个处理程序... 命令执行成功 C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator>lsnrctl stop LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 13-11月-2007 23:59:48 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=userhostname)(PORT=1521))) 命令执行成功 C:\Documents and Settings\Administrator>lsnrctl start LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 13-11月-2007 23:59:55 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. 启动tnslsnr:请稍候... TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production 系统参数文件为d:\oracle\ora92\network\admin\listener.ora 写入d:\oracle\ora92\network\log\listener.log的日志信息 监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=1521))) 监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc))) 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=userhostname)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production 启动日期 13-11月-2007 23:59:55 正常运行时间 0 天 0 小时 0 分 0 秒 跟踪级别 off 安全性 OFF SNMP OFF 监听器参数文件 d:\oracle\ora92\network\admin\listener.ora 监听器日志文件 d:\oracle\ora92\network\log\listener.log 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc))) 服务摘要.. 服务 "OEMREP" 包含 1 个例程。 例程 "OEMREP", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oralocal" 包含 1 个例程。 例程 "oralocal", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orarman" 包含 1 个例程。 例程 "orarman", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 C:\Documents and Settings\Administrator>lsnrctl status LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 14-11月-2007 00:00:01 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=userhostname)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production 启动日期 13-11月-2007 23:59:55 正常运行时间 0 天 0 小时 0 分 5 秒 跟踪级别 off 安全性 OFF SNMP OFF 监听器参数文件 d:\oracle\ora92\network\admin\listener.ora 监听器日志文件 d:\oracle\ora92\network\log\listener.log 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc))) 服务摘要.. 服务 "OEMREP" 包含 1 个例程。 例程 "OEMREP", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oralocal" 包含 1 个例程。 例程 "oralocal", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orarman" 包含 1 个例程。 例程 "orarman", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 (等待一分钟左右的时间) C:\Documents and Settings\Administrator>lsnrctl status LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 14-11月-2007 00:01:15 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=userhostname)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production 启动日期 13-11月-2007 23:59:55 正常运行时间 0 天 0 小时 1 分 19 秒 跟踪级别 off 安全性 OFF SNMP OFF 监听器参数文件 d:\oracle\ora92\network\admin\listener.ora 监听器日志文件 d:\oracle\ora92\network\log\listener.log 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=8080))(Presentation=HTTP)(Session=RAW)) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=userhostname)(PORT=2100))(Presentation=FTP)(Session=RAW)) 服务摘要.. 服务 "OEMREP" 包含 1 个例程。 例程 "OEMREP", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oralocal" 包含 2 个例程。 例程 "oralocal", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 例程 "oralocal", 状态 READY, 包含此服务的 1 个处理程序... 服务 "oralocalXDB" 包含 1 个例程。 例程 "oralocal", 状态 READY, 包含此服务的 1 个处理程序... 服务 "orarman" 包含 1 个例程。 例程 "orarman", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oratest" 包含 1 个例程。 例程 "oratest", 状态 BLOCKED, 包含此服务的 1 个处理程序... 命令执行成功 C:\Documents and Settings\Administrator> |
我们发现oratest是blocked状态,故障重现。
是否是因为在win下使用oradim新建service引起的呢?我们在unix环境下测试看看情况如何:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
$ export ORACLE_SID=oratest $ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.1.0 - Production on Wed Nov 14 00:19:15 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to an idle instance. SQL> startup nomount pfile='?/dbs/initoratest.ora' ORACLE instance started. Total System Global Area 1076850392 bytes Fixed Size 736984 bytes Variable Size 285212672 bytes Database Buffers 788529152 bytes Redo Buffers 2371584 bytes SQL> host $ lsnrctl status LSNRCTL for HPUX: Version 9.2.0.1.0 - Production on 14-NOV-2007 00:21:00 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for HPUX: Version 9.2.0.1.0 - Production Start Date 02-NOV-2007 09:44:27 Uptime 11 days 14 hr. 36 min. 34 sec Trace Level off Security OFF SNMP OFF Listener Parameter File /oracle/product/9.2.0.4/network/admin/listener.ora Listener Log File /oracle/product/9.2.0.4/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HP189)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HP189)(PORT=8080))(Presentation=HTTP)(Session=RAW)) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HP189)(PORT=2100))(Presentation=FTP)(Session=RAW)) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "ora9i" has 2 instance(s). Instance "ora9i", status UNKNOWN, has 1 handler(s) for this service... Instance "ora9i", status READY, has 1 handler(s) for this service... Service "oratest" has 1 instance(s). Instance "oratest", status BLOCKED, has 1 handler(s) for this service... The command completed successfully $ |
发现也是出现同样的问题。
因此可以推断,在instance没有建立的情况下,用pfile启动到nomount状态,实现数据库动态注册,虽然可以实现动态注册,在service中能看到service name,但是其状态为blocked,客户端此时无法连接。要解决此问题:
1.改用静态注册
2.建完database后才用动态注册
一条评论
Service “PROD_XPT.oracle.com” has 1 instance(s).
Instance “PROD”, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:blocked
LOCAL SERVER
有遇到过这种状态吗?我在某个库中见过这样的状况,感觉好奇。。当然实例名那些我是已经改了的。。