Oracle 03113是數(shù)據(jù)庫(kù)開(kāi)發(fā)過(guò)程中經(jīng)常遇到的一個(gè)錯(cuò)誤代碼。在數(shù)據(jù)庫(kù)連接時(shí),如果出現(xiàn)了這個(gè)錯(cuò)誤,說(shuō)明Oracle數(shù)據(jù)庫(kù)實(shí)例沒(méi)有正常啟動(dòng)。下面我們來(lái)詳細(xì)了解一下這個(gè)錯(cuò)誤以及如何解決它。
下面舉一個(gè)例子說(shuō)明。假設(shè)我們想在Java中連接一個(gè)名為"orcl"的Oracle數(shù)據(jù)庫(kù)實(shí)例,代碼如下:
String url = "jdbc:oracle:thin:@localhost:1521:orcl"; Connection conn = DriverManager.getConnection(url, "Username", "Password");
運(yùn)行程序,若出現(xiàn)Oracle 03113錯(cuò)誤,則說(shuō)明orcl實(shí)例沒(méi)有正常啟動(dòng)。
那么我們?cè)撊绾谓鉀Q這個(gè)問(wèn)題呢?以下是解決辦法:
第一步,查看orcl實(shí)例是否正常啟動(dòng)。可以使用如下命令:
lsnrctl status #查看監(jiān)聽(tīng)服務(wù)狀態(tài) sqlplus / as sysdba #登錄oracle控制臺(tái) startup #啟動(dòng)orcl實(shí)例
若orcl實(shí)例未啟動(dòng),則可以使用以上命令啟動(dòng)它。
第二步,需要查看數(shù)據(jù)庫(kù)日志(alert_*.log)或監(jiān)聽(tīng)服務(wù)日志(listener.log)以查明問(wèn)題。例如,我們可以查看listener.log,看看其中是否出現(xiàn)了錯(cuò)誤:
tail -f listener.log #查看監(jiān)聽(tīng)服務(wù)日志
如果日志中出現(xiàn)了"ORA-12540: TNS:internal limit restriction exceeded"這個(gè)錯(cuò)誤,說(shuō)明監(jiān)聽(tīng)程序未能將連接信息轉(zhuǎn)發(fā)給orcl實(shí)例。可以嘗試修改listener.ora文件中的參數(shù),增大processes和sessions的值,以在監(jiān)聽(tīng)程序和orcl實(shí)例之間建立更多的連接:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = orcl) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) DEFAULT_SERVICE_LISTENER = (orcl) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = orcl) (PRESPAWN_MAX = 100) (SESSIONS_MAX = 100) ) )
如果還是無(wú)法解決問(wèn)題,可以使用Oracle Trace文件來(lái)進(jìn)一步診斷問(wèn)題。在SQLNET.ORA文件中,將TRACE_LEVEL_CLIENT和TRACE_DIRECTORY_CLIENT參數(shù)設(shè)置為相應(yīng)的值,Oracle客戶端會(huì)生成一個(gè)TRACE文件,其中包含了連接過(guò)程中客戶端發(fā)送的所有信息和接收的所有信息。這個(gè)文件非常龐大,需要耐心搜索其中的關(guān)鍵字來(lái)尋找問(wèn)題。
綜上所述,除了以上解決方法,當(dāng)然也有其他的解決方法,請(qǐng)大家對(duì)照自己所遇到的問(wèn)題逐一解決。Oracle 03113是個(gè)比較棘手的錯(cuò)誤,需要通過(guò)多方面的嘗試解決,希望以上方法能幫助大家。