今早剛上班、客戶打電話過來說系統訪問不了,輸入用戶名、用戶號不能加載出來!聽到這個問題,第一時間想到的是不是服務器重新啟動了,Oracle數據庫的相關服務沒有啟動的原因、查看服務的時候,發現相關的服務都是啟動的狀態。第二想法就是查看的程序配置文件是否被修改過、也沒有異常;第三個就是用PL/SQL連接Oracle數據庫,輸入登錄名和密碼后,提示如下錯誤:ora-01033:oracle initialization or shutdown in progress;
在網上搜索了一圈,終於發現幾個比較有詳細步驟的解決方案,參考如下:
第一種解決方法:
第一步,運行cmd
第一步、sqlplus /NOLOG
第二步、SQL>connect sys/change_on_install as sysdba
提示:已成功
第三步、SQL>shutdown normal
提示:數據庫已經關閉 已經卸載數據庫 ORACLE 例程已經關閉
第四步、SQL>startup mount
第五步、SQL>alter database open;
提示:(我在操作的時候沒有遇到下邊着中錯誤)
第1 行出現錯誤: ORA-01157: 無法標識/鎖定數據文件19 - 請參閱DBWR 跟蹤文件
ORA-01110: 數據文件19: ''''C:\oracle\oradata\oradb\FYGL.ORA''
這個提示文件部分根據每個人不同情況有點差別。
繼續輸入 第六步、SQL>alter database datafile 19 offline drop;
第七步、重復使用第五第六步,直到出現“數據庫已更改”的提示,然后如下圖,
繼續輸入shutdown normal,startup mount就OK啦
內容來源:http://www.2cto.com/database/201202/118194.html
http://yuxisanren.iteye.com/blog/1754018
測試了一遍,發現還是沒有解決我這個問題;
第二種方法:
把Oracle的相關服務都停止后、在重新啟動、發現可以正常登錄。
--------------------------
一、錯誤描述
登陸PL/SQL Developer登陸本地數據庫時先報沒有監聽程序,查看服務發現Oracle監聽服務沒有啟動。右擊啟動監聽程序,報錯:
錯誤描述:本地計算機上的OracleOraDb11g_home1TNSListener服務啟動后又停止了。一些服務自動停止,如果它們沒有什么可做的,例如 "性能日志和警報 "服務。
二、原因分析
你安裝oracle的時候是連網的,那么listener.ora文件里的HOST=網絡給你分配的IP地址,而在你斷網的時候就會出現這樣的情況。
三、解決辦法
方法一:監聽器
通過listener.ora或者Net Manager修改監聽器配置。將原來本地字符串127.0.0.1或者localhost改為主機名。
首先查閱你的**\product\11.2.0\dbhome_1\NETWORK\ADMIN目錄下的"tnsnames.ora"和"listener.ora"這兩個文件,然后看看里面的"HOST"信息,看看是不是你當前的ip地址,如果不是嘗試着把這個2個文件改成你的ip地址,或直接就改成127.0.0.1(或計算機名字):
注意:此時的監聽配置文件"listener.ora"里面的HOST=的內容(IP或者主機名)必須和,服務配置文件"tnsnames.ora"里面,你想要鏈接的服務的HOST=的內容完全一致。意思就是說要么都是IP地址,要么都是主機名。如果有多個服務(Net Manager中配置的網絡服務)那么查看"tnsnames.ora"文件中與監聽HOST內容一致的PL/SQL才可正常登錄進去,否則無監聽程序。如:
上面這里是"listener.ora"里面的HOST,我的是主機名。
上面這里是"tnsnames.ora"的配置信息,由於我的機子上面裝了兩個數據庫DB1,DB2。分別建立了連接服務也叫做DB1,DB2。(不知道什么情況,建好后tnsnames.ora里一個HOST是IP地址,另一個是我的主機名。)結果導致DB1的PL/SQL正常連接進入(因為是IP地址和listener.ora的HOST地址完全匹配),而DB2的PL/SQL卻提示沒有監聽程序。(什么情況,DB1不是都正常進入了么咋還沒有監聽呢。我去~~)后來網上找教程說是【修改"listener.ora"的HOST地址,如果是IP則改成主機名】於是照搬。運行PL/SQL,DB2登陸成功,爽啊。結果DB1沒有監聽程序(什么情況啊)。后來查看"listener.ora"發現此問題,說明兩個文件的HOST的內容需要完全匹配才行,全部改成主機名,兩個數據庫登陸都成功,搞定!
方法二:環境變量
環境變量中ORACLE_HOME改為:***(你自己的安裝路徑)\product\11.2.0\dbhome_1
有的情況,裝貌似安裝客戶端被自動改為**:\Ora11InstantClient了
方法三:注冊表
KEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/OracleOraDb11g_home1TNSListener
中的ImagePath改為:D:\oracle\product\10.2.0\db_1/BIN/TNSLSNR.EXE(之前后面的.EXE沒有)。
-----------------
今兒一直在測試服務器的遷移問題,不斷地創建表空間、創建數據庫、創建用戶。后來感覺創建這么多東西太占用磁盤空間,心想刪除一下吧,於是,我們執行了dbca命令,將沒用的數據庫統統刪除,將dbf和dmp文件也統統刪除了,再后來發現服務無法啟動了,連接時會提示oracle initialization or shutdown in progress,后來經過查詢發現,原來這些dbf和dmp不是說刪除就能刪除的(當時我們明明發現有的不允許刪除,我還是故意停停掉oracle服務,然后將其刪除滴),最終導致數據庫實例無法啟動。
