日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

10g TNS 13541 监听错误 tnsping可以但是conn system/manager@mult1.net 报错

發(fā)布時(shí)間:2025/6/15 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10g TNS 13541 监听错误 tnsping可以但是conn system/manager@mult1.net 报错 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
oracle 10g : ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

error message:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

出錯(cuò)原因有很多,如果你檢查service里面所有的服務(wù)都是started,那說(shuō)明是監(jiān)聽(tīng)服務(wù)和數(shù)據(jù)庫(kù)實(shí)例服務(wù)的主動(dòng)跟被動(dòng)的關(guān)系原因?qū)е碌摹?/span>

?

問(wèn)題解決有2,
方法1.是讓listener主動(dòng)加載服務(wù)
原因是?添加
????(SID_DESC =
????? (SID_NAME = orcl)
????? (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
??? )
后,在使用lsnrctl start監(jiān)聽(tīng)程序時(shí)會(huì)將listener的服務(wù)注冊(cè)到進(jìn)程監(jiān)視器(pmon)中


方法2.listener被動(dòng)加載服務(wù)

在service里面stop監(jiān)聽(tīng)服務(wù)和數(shù)據(jù)庫(kù)實(shí)例服務(wù),然后先重新啟動(dòng)監(jiān)聽(tīng)服務(wù),再啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例服務(wù)。

原因是,如果沒(méi)有該內(nèi)容,那么由實(shí)例的pmon進(jìn)程在listener中注冊(cè)服務(wù),對(duì)listener來(lái)講,就是被動(dòng)了。
這也就是為什么先啟動(dòng)監(jiān)聽(tīng)后啟動(dòng)數(shù)據(jù)庫(kù)能夠正常連接的,反之不行的原因了。



?

Dynamically register 與Local_listener參數(shù)


因?yàn)橐粋€(gè)測(cè)試庫(kù)安裝了特殊的服務(wù)之后會(huì)自動(dòng)往LOCAL_LISTENER參數(shù)里設(shè)置值,導(dǎo)致利用原參數(shù)文件重建的數(shù)據(jù)庫(kù)無(wú)法自動(dòng)注冊(cè)監(jiān)聽(tīng)服務(wù)。
同一主機(jī)的其他數(shù)據(jù)庫(kù)能自動(dòng)注冊(cè)監(jiān)聽(tīng)服務(wù)。
<期間重試了Reload 刪除 LISTENER 重新建立一個(gè)新的LISTENER等無(wú)用功>

非默認(rèn)監(jiān)聽(tīng)由于LOCAL_LISTENER參數(shù)的設(shè)置,變成動(dòng)態(tài)注冊(cè)

改變參數(shù)

SQL> alter system set LOCAL_LISTENER='';

系統(tǒng)已更改。

?

SQL> show parameter lis
?
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------------------------
local_listener?????????????????????? string?????
recovery_parallelism???????????????? integer???? 0
remote_listener????????????????????? string?????

終于解決了。

LSNRCTL> status

Service "TEST2" has 1 instance(s).
? Instance "TEST2", status READY, has 1 handler(s) for this service...
Service "TEST2XDB" has 1 instance(s).
? Instance "TEST2", status READY, has 1 handler(s) for this service...

?

a、PMON進(jìn)程1分鐘運(yùn)行一次,當(dāng)監(jiān)聽(tīng)剛剛啟動(dòng)的時(shí)候,可能服務(wù)還沒(méi)有注冊(cè)進(jìn)去,這時(shí)候是不能使用此服務(wù)的
b、在修改local_listener參數(shù)時(shí),PMON進(jìn)程也會(huì)重新注冊(cè)一次
c、如果數(shù)據(jù)庫(kù)shutdown后,PMON進(jìn)程也停止了,服務(wù)會(huì)從監(jiān)聽(tīng)中刪除,這時(shí)候只能使用OS認(rèn)證的方式連入數(shù)據(jù)庫(kù)





ORA-12514: TNS: listener does not currently know of service requested in connect descriptor


這是個(gè)相當(dāng)惡心的錯(cuò)誤,就像癲癇病人一樣,不知道什么時(shí)候就犯了,好好的用著,吃晚飯?jiān)龠B,就報(bào)no listener 起了監(jiān)聽(tīng),之后就是這個(gè)錯(cuò)誤。胡搞一通,不行,重啟OK。不知道哪里的問(wèn)題,因?yàn)槭菧y(cè)試環(huán)境,經(jīng)常會(huì)重啟,這個(gè)錯(cuò)誤就想幽靈一樣時(shí)出時(shí)沒(méi)。現(xiàn)在的oracle怎么那么難伺候!!煩的多了終于下定決心要找出問(wèn)題所在,于是在網(wǎng)上閱貼無(wú)數(shù),終于找著了能按照一定規(guī)律解決問(wèn)題的方法,就轉(zhuǎn)載了過(guò)來(lái)

關(guān)于這個(gè)錯(cuò)誤,有很多種情況,我知道有2種情況,以下是網(wǎng)上摘錄的:

1、近日在配置Oracle 10G的流復(fù)制環(huán)境時(shí),遇到一個(gè)問(wèn)題,關(guān)閉數(shù)據(jù)庫(kù)(shutdown immediate)后,通過(guò)SQL Plus連接數(shù)據(jù)庫(kù):conn sys/his@orc0 as sysdba,出現(xiàn)如下錯(cuò)誤:

ORA-12514: TNS: 監(jiān)聽(tīng)程序當(dāng)前無(wú)法識(shí)別連接描述符中請(qǐng)求的服務(wù)

通過(guò)重啟服務(wù)的方式啟動(dòng)數(shù)據(jù)庫(kù),再次連接卻能成功登錄,也就是說(shuō)在關(guān)閉數(shù)據(jù)庫(kù)狀態(tài)下無(wú)法連接服務(wù)器。

開(kāi)始以為是系統(tǒng)環(huán)境變量Oracle_SID的配置問(wèn)題,因?yàn)闄C(jī)器有多個(gè)實(shí)例,一陣折騰后還是不能連接。后來(lái)查資料得知:

Oracle9i以后,后臺(tái)進(jìn)程PMON自動(dòng)在監(jiān)聽(tīng)器中注冊(cè)在系統(tǒng)參數(shù)SERVICE_NAMES中定義的服務(wù)名,SERVICE_NAMES默認(rèn)為DB_NAME+DOMAIN_NAME。監(jiān)聽(tīng)配置文件listener.ora中可以不必指定監(jiān)聽(tīng)的服務(wù)名。但是,當(dāng)數(shù)據(jù)庫(kù)處于關(guān)閉狀態(tài)下PMON進(jìn)程沒(méi)有啟動(dòng),也就不會(huì)自動(dòng)注冊(cè)監(jiān)聽(tīng)的實(shí)例名,所以使用sqlplus sys/his@orc0 as sysdba 會(huì)出現(xiàn)ORA-12514錯(cuò)誤。

如果在listener.ora文件中指定監(jiān)聽(tīng)的實(shí)例名,則即使數(shù)據(jù)庫(kù)處于關(guān)閉狀態(tài),仍然可以連接。


listener.ora

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = ORCL)

(http://blog.sina.com.cn/s/blog_4abe7f3a0100g7mm.html) - ORA-12514: TNS: 監(jiān)聽(tīng)程序當(dāng)前無(wú)法識(shí)別連接描述符中_

(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)

(SID_NAME = ORCL)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = zyk)(PORT = 1521))

)

)

以上粗體部件為增加的內(nèi)容,修改后重啟監(jiān)聽(tīng)服務(wù)后即可。

附:通過(guò)在lsnrctl中輸入set display verbose,然后再通過(guò)命令service查看,服務(wù)狀態(tài)為READY表示PMON自動(dòng)注冊(cè)的服務(wù)名,而UNKNOWN則表示該服務(wù)是手工在LISTENER.ORA中配置的數(shù)據(jù)庫(kù)服務(wù)。

2、可能是數(shù)據(jù)庫(kù)服務(wù)器蹦了,這樣的話,光重啟服務(wù)是不行的,重啟機(jī)器也無(wú)濟(jì)于事??梢杂孟旅娴姆椒ń鉀Q。

打開(kāi)cmd窗口,輸入sqlplus / as sysdba;startup,完畢后即恢復(fù)正常,執(zhí)行速度有點(diǎn)慢,耐心等待。

該問(wèn)題附帶錯(cuò)誤可能是:

oracle not available
shared memory realm does not exist


上述是我轉(zhuǎn)載的文章,試了一下第一種,成功了。應(yīng)該是有用的。
用sqlplus登陸時(shí)報(bào)錯(cuò)
ERROR:ORA-12514: TNS:listener does not currently know of service requested in connect
------解決方法--------------------------------------------------------
如果服務(wù)器和客戶端在同一個(gè)子網(wǎng)中,在監(jiān)聽(tīng)器的配置文件中不填ip,填計(jì)算機(jī)名。
------解決方法--------------------------------------------------------
如果是同一網(wǎng)段的話,可以將你現(xiàn)在填寫(xiě)的計(jì)算機(jī)ip改成對(duì)應(yīng)的計(jì)算機(jī)名字,不過(guò)要求網(wǎng)段中計(jì)算機(jī)名唯一

------解決方法--------------------------------------------------------


關(guān)于LISTENER.ORA,TNSNAMES.ORA和SQLNET.ORA的存在問(wèn)題

最近一次巡檢客戶的數(shù)據(jù)庫(kù)時(shí)發(fā)現(xiàn)一個(gè)小小異常,在$ORACLE_HOME/network/admin目錄下居然只有一個(gè)tnsnames.ora文件,sqlnet.ora和listener.ora文件都沒(méi)有,
檢查環(huán)境變量設(shè)置和當(dāng)前LISTENER進(jìn)程情況,沒(méi)有異常,嘗試通過(guò)TNS登錄數(shù)據(jù)庫(kù),都是正常的,馬上想到的問(wèn)題是是否這個(gè)文件是被誤刪掉了,其次就是這種情況下重新啟動(dòng)數(shù)據(jù)庫(kù)監(jiān)聽(tīng)的話是否會(huì)因?yàn)闆](méi)有LISTENER.ORA文件而無(wú)法正常啟動(dòng)監(jiān)聽(tīng)。由于是客戶在線生產(chǎn)庫(kù),所以沒(méi)有貿(mào)然嘗試,因?yàn)閺谋O(jiān)聽(tīng)日志中看到當(dāng)前連接還是很頻繁的,平均一分鐘有20左右的連入,相對(duì)比較繁忙的狀況。
因?yàn)榭蛻舻臄?shù)據(jù)庫(kù)運(yùn)行在10.2.0.4上,所以接下來(lái)的實(shí)驗(yàn)找了一個(gè)10.2.0.5的庫(kù)來(lái)進(jìn)行,版本比較接近,當(dāng)然就這個(gè)問(wèn)題來(lái)說(shuō)可以估計(jì)只要是10G的版本都不會(huì)區(qū)別太大的。
首先將當(dāng)前的三個(gè)文件做了移動(dòng),
Wilson-> pwd
/u01/app/oracle/product/10.2.0/db_1/network/admin
Wilson-> mkdir temp
Wilson-> mv ./*.ora ./temp
然后嘗試啟動(dòng)監(jiān)聽(tīng)和數(shù)據(jù)庫(kù),
監(jiān)聽(tīng)啟動(dòng)成功,檢查進(jìn)程狀態(tài)正常,那么這里的結(jié)論是如果當(dāng)前機(jī)器上只有一個(gè)實(shí)例在跑,并且端口使用的都是缺省的1521,那么沒(méi)有l(wèi)istener.ora文件的話,lsnrctl會(huì)嘗試啟動(dòng)缺省的監(jiān)聽(tīng)器,監(jiān)聽(tīng)當(dāng)前機(jī)器的1521端口。但是當(dāng)前使用的listener.ora文件在listener.log文件中可以看到,
使用listener.ora文件的日志:
TNSLSNR for Linux: Version 10.2.0.1.0 - Production on 26-APR-2011 13:07:09

Copyright (c) 1991, 2005, Oracle.? All rights reserved.

System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Trace information written to /u01/app/oracle/product/10.2.0/db_1/network/trace/listener.trc
Trace level is currently 0

沒(méi)有使用listener.ora文件的日志:
TNSLSNR for Linux: Version 10.2.0.5.0 - Production on 21-JUL-2011 03:40:57

Copyright (c) 1991, 2010, Oracle.? All rights reserved.

Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Trace information written to /u01/app/oracle/product/10.2.0/db_1/network/trace/listener.trc
Trace level is currently 0
當(dāng)然了,并不只是這點(diǎn)表面上的區(qū)別,下面是兩種情況下lsnrctl status的輸出:
使用listener.ora文件的日志:
Wilson-> lsnrctl status

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 21-JUL-2011 04:50:46

Copyright (c) 1991, 2010, Oracle.? All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias???????????????????? LISTENER
Version?????????????????? TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date??????????????? 21-JUL-2011 03:40:57
Uptime??????????????????? 0 days 1 hr. 9 min. 48 sec
Trace Level?????????????? off
Security????????????????? ON: Local OS Authentication
SNMP????????????????????? OFF
Listener Log File???????? /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
? (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Wilson.MyCorp)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
? Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
? Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
? Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

沒(méi)有使用listener.ora文件的日志:
Wilson-> lsnrctl status

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 21-JUL-2011 04:52:25

Copyright (c) 1991, 2010, Oracle.? All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias???????????????????? LISTENER
Version?????????????????? TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date??????????????? 21-JUL-2011 04:51:32
Uptime??????????????????? 0 days 0 hr. 0 min. 53 sec
Trace Level?????????????? off
Security????????????????? ON: Local OS Authentication
SNMP????????????????????? OFF
Listener Parameter File?? /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File???????? /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
? (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
? (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Wilson.MyCorp)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
? Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
? Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
? Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
? Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
可見(jiàn)兩種情況下,首先是否啟動(dòng)外部監(jiān)聽(tīng)是有區(qū)別的,也就是說(shuō)如果程序中使用到了EXTPROC方式,那么不配置listener.ora就可能會(huì)有問(wèn)題,其次才是是否使用了參數(shù)文件的區(qū)別。
至于sqlnet.ora文件的存在與否,這個(gè)不用多說(shuō),如果沒(méi)有sqlnet.ora文件,ORACLE會(huì)缺省使用TNSNAMES,ONAMES,HOSTNAME三種方式來(lái)嘗試連接,
上面是三個(gè)文件都不存在情況下的實(shí)驗(yàn),
Wilson-> sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Jul 21 05:09:47 2011

Copyright (c) 1982, 2010, Oracle.? All Rights Reserved.

SQL> conn scott/tiger
Connected.
SQL> conn?
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified


Warning: You are no longer connected to ORACLE.
SQL> conn?
Connected.
SQL> conn?
Connected.
(端口號(hào)如果是1521,可以省略)
下面試驗(yàn)有sqlnet.ora,但是只配置使用TNSNAMES方式,
#NAMES.DIRECTORY_PATH= (HOSTNAME, TNSNAMES, EZCONNECT)
NAMES.DIRECTORY_PATH= (TNSNAMES)

Wilson-> sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Jul 21 05:14:15 2011
、
Copyright (c) 1982, 2010, Oracle.? All Rights Reserved.

SQL> conn / as sysdba
Connected.
SQL> conn scott/tiger
Connected.
SQL> conn?
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Warning: You are no longer connected to ORACLE.

可見(jiàn)沒(méi)有HOSTNAME方式或者EZCONNECT方式都會(huì)導(dǎo)致這種簡(jiǎn)單連接方式的失敗。
SQL> conn?
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor


Warning: You are no longer connected to ORACLE.
SQL> conn?
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor



至于HOSTNAME和EZCONNECT這兩種方式,個(gè)人感覺(jué)在10g中已經(jīng)沒(méi)有什么大的區(qū)別,感覺(jué)是ORACLE10g中人為制造出來(lái)的一個(gè)NEW FEATURE,而相應(yīng)的之前的HOSTNAME方式已經(jīng)被取代,
在10.2.0.5這個(gè)版本上,我無(wú)法試驗(yàn)成功HOSTNAME直接方式連接成功。

下面引用ORACLE官方的說(shuō)法,
Oracle 10g Easy Connect Naming

Easy connect naming is not allowed in large or complex environments that require additional connect information. (Large or complex environments employ advanced features, such as connection pooling, external procedure calls, or Heterogeneous Services.) In these cases, you must use another naming method.

With Oracle 10g, easy connect naming is automatically configured by default at installation. However, before attempting to use this feature, you may want to ensure that EZCONNECT is specified first in the names.directory_path parameter in the sqlnet.ora file. The names.directory_path parameter is used to specify the order of naming methods that Oracle Net can use to resolve connect identifiers to connect descriptors. Verification is easy. To verify that the names.directory_path settings are correct, follow these instructions:

Start Oracle Net Manager.
?

In the navigator pane, expand Local > Profile.
?

From the list in the right pane, select Naming.
?

Click the Methods tab. Ensure that EZCONNECT is listed in the Selected Methods list. If it is not, then proceed to Step 5.
?

From the Available Methods list, select EZCONNECT, then click the right-arrow button.
?

From the Selected Methods list, select EZCONNECT, then use the Promote button to move the selection to the top of the list.?
?

Choose File > Save Network Configuration. The sqlnet.ora file updates with the names.directory_path parameter, listing ezconnect first: names.directory_path =(ezconnect, tnsnames).

從上面的表述中也可以看出來(lái),其實(shí)HOSTNAME連接方式已經(jīng)是保留對(duì)之前版本的支持而已,11gR2WIN32版本中,ORACLE的NETMGR程序中還可以看到這種連接方式,但是更常被用到的NETCA程序中已經(jīng)看不到這個(gè)連接方式的存在了。

最后說(shuō)下tnsnames.ora,這個(gè)文件其實(shí)取決于當(dāng)前應(yīng)用所需要的連接方式,在TCP/IP環(huán)境下基本上是必不可少的,否則就只能通過(guò)類似JAVA連接字符串的形式來(lái)連庫(kù)了。如果需要使用TNSNAMES,也就是本地服務(wù)名方式來(lái)連接數(shù)據(jù)庫(kù),那么就是必須的要使用到這個(gè)文件了。


總結(jié)

以上是生活随笔為你收集整理的10g TNS 13541 监听错误 tnsping可以但是conn system/manager@mult1.net 报错的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。