公司有一台儀器,使用 Empower 軟體,並擁有自己的單機版資料庫,資料庫是 oracle 9i,日前因為主機板掛掉,造成不正常的關機,所以資料庫應該是有毀損或至少是不正常關閉。
後來緊急找到二手賣家買來一模一樣的主機板並成功開機,打開儀器軟體 Empower,可以開啟程式,但要進行登入並連接 oracle 資料庫時,出現 Database Connection Failed,並有 ORA-01033 的錯誤訊息。
因為對 oracle 一整個不熟,而且又是附掛在儀器軟體 empower 的資料庫,根本也不知道是否有資料庫管理的工具可以管理。後來我到 C:\Empower\ora\database 中去看一個 OraDim.Log,裡面有提到:
ORA-00368: checksum error in redo log block
ORA-00353: log corruption near block 4 change 5271868 time 01/03/2011 09:33:49
ORA-00312: online log 1 thread 1: 'C:\EMPOWER\ORA\DATABASE\REDO01.LOG'
這是在開機啟動 OracleService WAT5 時,會寫到 OraDim.Log 的訊息。另外那三行訊息的時間 01/03/2011 09:33:49 剛好就是主機板壞掉的那一天早上...
由於我從未接觸過 Oracle,又是附掛在 Empower 的儀器軟體使用之資料庫,又因為 Empower 一定要進入資料庫才可以備份儀器的 RawData 資料到別台電腦還原,所以也不敢強迫重灌,所以很頭大不曉得該怎麼處理。
已經連絡過儀器的維護廠商,但畢竟是儀器的廠商不是資料庫的廠商,所以他們也束手無策,不知道這邊是否有高手,可以理解我的問題,並給我建議及幫助,謝謝大家。
可以嘗試重新設一次 log. (不過最後幾筆資料可能就沒有了)
c:\> sqlplus / as sysdba
SQL> startup mount;
SQL> select status from V$log; (找 current 的那一個, 這個狀況應該是 1)
SQL> select f.group, f.member, l.bytes from V$logfile f, v$log l where f.group#=l.group#;
將檔案地址記下, 還有大小. 假設有三個 redo group, 刪掉壞掉的那一個, 然後重建一個.
SQL> alter database drop logfile group 1;
SQL> alter database add logfile group 4 'c:/xxx/xxx/redo4.log' size XXM;
SQL> recover database until cancel;
SQL> alter database open resetlog;
謝謝您的回應。
我有在 C:\Empower\ora\bin 中找到 sqlplus,但我執行之後,它要我輸入 user-name 跟 password,因為我們平常是使用 empower 軟體,所以我也不知道 oracle 的 user-name 和 password。 :(
我嘗試輸入開啟 empower 的帳號密碼,它一樣會秀出 ORA-01033 的錯誤訊息。這樣要怎麼辦呢?
補充一下,我使用 sqlplus /as sysdba,它會跳出 Usage: [ [option] [<logon>] [<start>] ],意思是說 sqlplus 指令不吃 /as 這個參數。 :~~
我用了 sqlplus "/as sysdba" 則會出現 ORA-01031: insufficient privileges 的訊息。
感謝您的回應,我使用 sqlplus /nolog 進去 sql> 提示符號,想要 connect as sysdba,我輸入 sys/change_on_install 這組預設,他會說 invalid username/password; login denided,輸入 system/manager 秀的訊息不同所以我猜密碼是預設的,只是要 as sysdba 它一樣說 insufficient privileges。
我想關鍵真的是 empower 寫在軟體中的 sys 密碼,要先成功的 shutdown normal 後,才可以修正 REDO01.log 的問題了吧...
維護廠商說要幫我去跟原廠要 sys 的密碼,不過要下週才能給我,現在只好靜待密碼的到來了。這件事如果可以解決,真想請各位大大吃飯啊~~~
週末愉快and Good luck
wonton提到:
請各位大大吃飯
iT邦下一回網聚就交給版大處理了~~
呵呵,版聚還是交給專業的來吧~~
喔.. insufficient privileges, 可能是 SID 沒設.
c:\ set ORACLE_SID=XXX
其中 XXX 是你的 SID. (可以在 start -> run -> service.msc 找到 Oracle 服務中有 Service 的那一個就是了. 或是直接看在 $Oracle_HOME/dbs 的 pfile.
我到 cmd 底下 echo %ORACLE_SID% 是有值的,所以應該不是這個問題。重設 sys 的密碼就 ok 了,因為我懶得等待廠商的回應了。
也謝謝 antijava 跟 simon581923 兩位大大的幫忙,讓我有了更明確的方向去解決問題,不過 pojen 的答案比較接近解決辦法,抱歉無法挑選此答案了,不過還是萬分感謝。