最近在電腦上裝了虛擬機,為的是在虛擬機上安裝Oracle數據庫,Oracle實在太占內存,配置低的電腦裝個Oracle幾乎就癱了,沒辦法,搞個虛擬機玩玩。我虛擬機用的是xp系統,順便懷念下經典。裝好Oracle之后,虛擬機使用pl/sql developer可以連接,但是物理機Java連接卻始終報一個錯誤:
1 ### Error updating database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io 異常: The Network Adapter could not establish the connection) 2 ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io 異常: The Network Adapter could not establish the connection), mergedContextConfiguration = [MergedContextConfiguration@578f7a8 testClass = UserTest, locations = '{classpath*:/META-INF/spring/spring-*.xml}', classes = '{}', contextInitializerClasses = '[]', activeProfiles = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]], class dirties context [false], class mode [null], method dirties context [false].
網上搜羅各種解決辦法,終於解決了。話不多說:
1:cmd命令行輸入hostname查看主機名並記錄主機名,如UAFDHGJK;
2:cmd命令行輸入ipconfig查看IP地址,如192.168.0.123;
3:修改C:\WINDOWS\system32\drivers\etc目錄下hosts文件,在hosts文件最后一行添加 192.168.0.123 UAFDHGJK
4:修改Oracle安裝目錄D:\oracle\softwarelocation\NETWORK\ADMIN下的監聽文件listener.ora
# listener.ora Network Configuration File: D:\oracle\softwarelocation\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = D:\oracle\softwarelocation) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\softwarelocation\bin\oraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 這里改為主機名)(PORT = 1521)) ) ) ADR_BASE_LISTENER = D:\oracle\basemenu
5:修改Oracle安裝目錄D:\oracle\softwarelocation\NETWORK\ADMIN下的監聽文件tnsnames.ora
# tnsnames.ora Network Configuration File: D:\oracle\softwarelocation\network\admin\tnsnames.ora # Generated by Oracle configuration tools. ORACLE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 這里改為主機名)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle) ) ) LISTENER_ORACLE = (ADDRESS = (PROTOCOL = TCP)(HOST = 這里改為主機名)(PORT = 1521)) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
6:重啟tnslsnr。打開cmd輸入命令:
lsnrctl stop
lsnrctl start
lsnrctl stat
7:cmd輸入命令:
lsnrctl stat
查看Oracle監聽數據已經改為配置的IP地址啦!
此時就可以通過正常Java連接數據庫的方式連接虛擬機Oracle數據庫了。
