連線資料庫報錯 ORA-12514
前幾天重新安裝了資料庫伺服器,在伺服器上使用都一切正常。然後在我的客戶端配置一個tns服務名,透過sqlplus命令來連線,確報錯:
C:\Documents and Settings\myname>sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 3月 1 18:41:06 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務
ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務
檢視伺服器端的 listener.ora ,內容如下:
# listener.ora Network Configuration File: /usr/app/oracle/product/10.2/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /usr/app/oracle/product/10.2/db_1)
(PROGRAM = extproc)
)
)
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /usr/app/oracle/product/10.2/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = oraclesvr)(PORT = 1521))
)
)
SQL> show parameter service_name
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = oraclesvr)(PORT = 1521))
)
)
SQL> show parameter service_name
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
service_names string
orcl
------------------------------------ ---------------------------------
VALUE
------------------------------
service_names string
orcl
沒有發現問題,再看客戶端的 tnsnames.ora ,如下:
ORCL118 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.118)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.118)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
也沒發現問題了,客戶端刪除再重建了幾次“本地net服務名配置”,沒有任何作用。對比了tnsnames檔案中其他的連線,配置資訊幾乎完全一致,其他連線確可以正常連線。
然後我透過 tnsping 來ping資料庫伺服器Ip和埠:
C:\Documents and Settings\myname>tnsping 192.168.0.118
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-3月 -2011 11:00:
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的引數檔案:
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
已使用 EZCONNECT 介面卡來解析別名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.0.118))(ADDRESS=(PRO
TNS-12560: TNS: 協議介面卡錯誤
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.0.118))(ADDRESS=(PRO
TNS-12560: TNS: 協議介面卡錯誤
C:\Documents and Settings\myname>tnsping orcl118
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-3月 -2011 11:18:
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的引數檔案:
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
已使用 TNSNAMES 介面卡來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192
TNS-12560: TNS: 協議介面卡錯誤
看來tnsping都不行,肯定就不要指望連線使用了。
再用 telnet 看看能不能連線這個IP的1521埠。
C:\Documents and Settings\myname>telnet 192.168.0.118 1521
正在連線到192.168.0.118 ...不能開啟到主機的連線, 在埠 1521: 連線失敗
進一步證實,應該就是1521埠問題了。
透過 netca 介面方式刪除伺服器端的監聽,重新配置監聽,重啟機器。關閉伺服器端的防火牆後,重啟監聽和資料庫,再透過sqlplus連線成功。
伺服器端:
$ lsnrctl stop
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 02-3æ -2011 14:15:46
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
The command completed successfully
$ which lsnrctl 檢視使用的命令位置,在此沒作用
/usr/app/oracle/product/10.2/db_1/bin/lsnrctl
The command completed successfully
$ which lsnrctl 檢視使用的命令位置,在此沒作用
/usr/app/oracle/product/10.2/db_1/bin/lsnrctl
$ lsnrctl start 啟動監聽
$ lsnrctl status 檢視監聽狀態
客戶端:
C:\Documents and Settings\myname>sqlplus as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 2 15:47:50 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
若資料庫的服務沒有啟動,遠端連線還是會報錯:
C:\Documents and Settings\myname>sqlplus as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 2 18:18:14 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務
ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務
請輸入使用者名稱:
要想在不啟動資料庫服務的時候能連線上,就需要修改資料庫伺服器端的監聽配置檔案 listener.ora,在裡面增加以下段(加粗)
$ cat listener.ora
# listener.ora Network Configuration File: /usr/app/oracle/product/10.2/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
# listener.ora Network Configuration File: /usr/app/oracle/product/10.2/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /usr/app/oracle/product/10.2/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /usr/app/oracle/product/10.2/db_1)
(SID_NAME = orcl)
)
)
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /usr/app/oracle/product/10.2/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /usr/app/oracle/product/10.2/db_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oraclesvr)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oraclesvr)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
重啟監聽後,再連線。
C:\Documents and Settings\myname>sqlplus as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 2 18:23:48 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到空閒例程。
SQL>
附錄:
linux下啟動和關閉防火牆
1) 重啟後生效
開啟: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啟後失效
開啟: service iptables start
關閉: service iptables stop
需要說明的是對於Linux下的其它服務都可以用以上命令執行開啟和關閉操作。
在開啟了防火牆時,做如下設定,開啟相關埠,
修改/etc/sysconfig/iptables 檔案,新增以下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-688278/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 連線資料庫報錯ORA-12514資料庫
- 連線資料庫時出現ORA-12514錯誤資料庫
- 連線資料庫出錯???資料庫
- 請教。在ejb中用DataSource連線資料庫,報錯!資料庫
- 手工建庫後 sql developer連線不上新資料庫 出現 ora-12514錯誤SQLDeveloper資料庫
- 連線oracle資料庫時,報錯:{dataSource-1} init errorOracle資料庫Error
- cacti登陸出現報錯:資料庫無法連線資料庫
- 我的postgresql資料庫報埠錯誤,連線失敗SQL資料庫
- Java專案連線資料庫Mysql報錯create connection SQLExceptionJava資料庫MySqlException
- 【Spotlight】初次連線資料庫ORA-00904報錯原因資料庫
- 資料庫例項到nomount 使用連線串無法連線到資料庫 報ORA-12528錯誤資料庫
- Oracle透過ODBC連線SQL Server資料庫後ORA-12514OracleSQLServer資料庫
- 網站連線資料庫配置錯誤網站資料庫
- 網站提示資料庫連線錯誤網站資料庫
- springboot整合Batis,執行報錯,資料庫連線密碼錯誤Spring BootBAT資料庫密碼
- 資料庫連線異常故障報告資料庫
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 連線資料庫資料庫
- 資料庫連線資料庫
- 阿里雲資料庫連線資料庫錯誤:如何解決?阿里資料庫
- MMMNL absent錯誤 ,資料庫無法連線資料庫
- Oracle 資料庫連線錯誤解決方法Oracle資料庫
- SQLYOG連線資料庫時報錯1251SQL資料庫
- asp網站提示資料庫連線出錯網站資料庫
- DedeCms錯誤警告:連線資料庫失敗資料庫
- 建立資料庫連線失敗ORA-12514的分析解決過程資料庫
- 解決navicat遠端連線資料庫報2059錯誤的方法資料庫
- 連線oracle報錯Oracle
- 網站資料庫連線錯誤怎麼辦?網站資料庫
- JDBC連線資料庫JDBC資料庫
- java連線資料庫Java資料庫
- Mybatis連線資料庫MyBatis資料庫
- Mongodb資料庫連線MongoDB資料庫
- mysqli連線資料庫MySql資料庫
- 資料庫的連線資料庫
- 連線mysql資料庫MySql資料庫
- 資料庫連線池資料庫
- 資料庫連線==odbc資料庫