最近公司的泛微OA無法訪問,Oracle數據庫也無法正常啟動,嘗試了好多方法,終於解決了,先說說基本情況,希望能給碰到同樣問題的朋友帶來一點幫助。
服務器操作系統:Window s Server 2016 Datacenter
泛微OA版本: e-cology V8.0,安裝目錄為D:\WEAVER……
Oracle版本:Oracle 11g,安裝目錄為D:\app\adminitartor\……
泛微OA無法啟動,我們首先會想到查看啟動日志,D:\WEAVER\ecology\log報錯如下,
2017-12-13 07:38:44,217 ERROR weaver.conn.DBConnectionPool-weaver.conn.DBConnectionPool
java.sql.SQLException: Io 異常: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
發現是Oracle數據庫問題,接着打開Oracle的EM管理界面,https://服務器ip地址:1158/em
發現是Oracle數據庫監聽程序不能啟動的原因,但是監聽啟動后,還是不斷報錯
監聽啟動命令如下:cmd窗口輸入lsnrctl start
查看Oracle安裝目錄下Administrator\diag\tnslsnr\計算機名\listener\alert下的log文件
我們項目組成員一起研究了好多天,具體過程就不說了,解決方案如下:
D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
這個目錄下有3個文件
listener.ora
sqlnet.ora
tnsnames.ora
1. listener.ora
在listener文件開頭添加一行:DIAG_ADR_ENABLED_LISTENER = OFF
還要注意這里的HOST = 計算機名稱
# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
DIAG_ADR_ENABLED_LISTENER = OFF
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 計算機名)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = D:\app\Administrator
2. sqlnet.ora
在sqlnet文件開頭添加一行: DIAG_ADR_ENABLED = OFF
3. tnsnames.ora
這里的HOST = localhost
# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL_LOCALHOST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)
重啟監聽程序,表面看起來正常了,但是數據庫速度還是很慢,這是Oracle11g的一個bug,但alarm下的log文件超過4G的時候,數據庫運行就會變得緩慢,這時候我們刪除許久以前的日志文件,然后重啟下面幾個服務:
OracleOraDb11g_home1TNSListener 監聽服務
OracleServiceORCL 主服務
OracleDBConsoleorcl 網頁EM服務
一般來說,新手只要打開這三個服務即可
最后正常重啟Oracle實例即可,在開始菜單,Oracle安裝目錄home1下面可以找到SQL Plus
輸入系統管理員賬號密碼即可進入SQLPlus命令模式
Oracle常用啟動命令如下
關閉數據庫
shutdown 正常關閉
shutdown immediate 立即關閉
打開數據庫
startup 完成創建實例、安裝實例和打開數據庫三個步驟。