iT邦幫忙

0

Empower Oracle 資料庫 connect failed

公司有一台儀器,使用 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 資料到別台電腦還原,所以也不敢強迫重灌,所以很頭大不曉得該怎麼處理。

已經連絡過儀器的維護廠商,但畢竟是儀器的廠商不是資料庫的廠商,所以他們也束手無策,不知道這邊是否有高手,可以理解我的問題,並給我建議及幫助,謝謝大家。

wonton iT邦高手 6 級 ‧ 2011-04-06 13:30:12 檢舉
報告各位大大,我解決了,我的步驟如下:

1. 到 Empower\ora\database 底下,將 PWDWAT5.ORA 改名字
2. 到 Empower\ora\bin 底下,執行 orapwd file="C:\Empower\ora\database\pwdwat5.ora" password=XXX entries=10
3. 執行 sqlplus /nolog 進入 sql 提示字元
4. 關掉 database
SQL>shutdown immediate
5. 到 Empower\ora\database 底下,在 initWAT5.ora 中加入
_allow_resetlogs_corruption=TRUE
6. 重啟 database
SQL>recover database until cancel;
7. 輸入 Cancel
8. 重設 log
SQL>alter database open resetlogs;
9. 換回原本的 pwdWAT5.ora 密碼檔
10 重開機

成功進入 Empower 並連接資料庫。

以上參考了 pojen 重設密碼的方法和這一篇 http://hi.baidu.com/fuguoliang/blog/item/c13d98c87bd382127e3e6f36.html

謝謝諸位大大的幫忙。
wonton iT邦高手 6 級 ‧ 2011-04-06 14:32:19 檢舉
3 和 4 中間漏了 connect sys as sysdba
pojen iT邦新手 2 級 ‧ 2011-04-07 09:26:44 檢舉
恭喜你問題解決了.

附註: online log 不能 drop 的話可以做 check point, 如下

SQL> ALTER SYSTEM CHECKPOINT GLOBAL;

如果可以的話, 我建議 multiplex 你的 redo, (兩個以上 redo file/redo group) 這可以讓你在一個檔案壞掉的狀況下讓資料庫繼續運作. (RAID 1 的 REDO)

2 個回答

8
pojen
iT邦新手 2 級 ‧ 2011-04-01 08:29:57
最佳解答

可以嘗試重新設一次 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;

看更多先前的回應...收起先前的回應...
wonton iT邦高手 6 級 ‧ 2011-04-01 09:01:58 檢舉

謝謝您的回應。

我有在 C:\Empower\ora\bin 中找到 sqlplus,但我執行之後,它要我輸入 user-name 跟 password,因為我們平常是使用 empower 軟體,所以我也不知道 oracle 的 user-name 和 password。 :(

我嘗試輸入開啟 empower 的帳號密碼,它一樣會秀出 ORA-01033 的錯誤訊息。這樣要怎麼辦呢?

wonton iT邦高手 6 級 ‧ 2011-04-01 09:07:51 檢舉

補充一下,我使用 sqlplus /as sysdba,它會跳出 Usage: [ [option] [<logon>] [<start>] ],意思是說 sqlplus 指令不吃 /as 這個參數。 :~~

wonton iT邦高手 6 級 ‧ 2011-04-01 09:10:56 檢舉

我用了 sqlplus "/as sysdba" 則會出現 ORA-01031: insufficient privileges 的訊息。

賽門 iT邦超人 1 級 ‧ 2011-04-01 10:06:56 檢舉

試看看...

&lt;pre class="c" name="code">sqlplus /nolog
pojen iT邦新手 2 級 ‧ 2011-04-01 18:12:55 檢舉

抱歉, 沒注意是 9i.

c:\sqlplus /nolog
SQL> connect sys as sysdba

測試:

SQL> select * from V$instance;

wonton iT邦高手 6 級 ‧ 2011-04-06 13:33:03 檢舉

謝謝回應,我參考了重設密碼的方法,終於可以使用 connect sys as sysdba 進去動作,不過我想 drop 掉 logfile,它會說因為是 online 不能 drop,所以我參考了 ORA-00368 錯誤代碼到網路上找到了其他方法,終於解決了,我把解決方法寫在討論裡,謝謝大家的幫忙。

6
海綿寶寶
iT邦超人 1 級 ‧ 2011-04-01 10:11:00

連接oracle的帳號密碼
應該是寫在empower的軟體(設定檔)中
問empower的開發廠商最快

現在的關鍵
應該是在Oracle的管理者帳號密碼
如果找不到的話
就只能碰運氣了

參考這篇
帳號用SYSTEM或SYS
萬一密碼找不到就只能用猜的了落寞

Google了一下找到這篇
可以參考看看

祝好運

看更多先前的回應...收起先前的回應...
wonton iT邦高手 6 級 ‧ 2011-04-01 10:56:09 檢舉

感謝您的回應,我使用 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 的問題了吧...

wonton iT邦高手 6 級 ‧ 2011-04-01 11:23:04 檢舉

維護廠商說要幫我去跟原廠要 sys 的密碼,不過要下週才能給我,現在只好靜待密碼的到來了。這件事如果可以解決,真想請各位大大吃飯啊~~~

週末愉快and Good luck醉

賽門 iT邦超人 1 級 ‧ 2011-04-01 15:13:10 檢舉

wonton提到:
請各位大大吃飯

iT邦下一回網聚就交給版大處理了~~吃

wonton iT邦高手 6 級 ‧ 2011-04-01 16:55:26 檢舉

呵呵,版聚還是交給專業的來吧~~

pojen iT邦新手 2 級 ‧ 2011-04-01 18:10:53 檢舉

喔.. insufficient privileges, 可能是 SID 沒設.

c:\ set ORACLE_SID=XXX

其中 XXX 是你的 SID. (可以在 start -> run -> service.msc 找到 Oracle 服務中有 Service 的那一個就是了. 或是直接看在 $Oracle_HOME/dbs 的 pfile.

wonton iT邦高手 6 級 ‧ 2011-04-06 13:35:02 檢舉

我到 cmd 底下 echo %ORACLE_SID% 是有值的,所以應該不是這個問題。重設 sys 的密碼就 ok 了,因為我懶得等待廠商的回應了。

wonton iT邦高手 6 級 ‧ 2011-04-06 13:36:51 檢舉

也謝謝 antijava 跟 simon581923 兩位大大的幫忙,讓我有了更明確的方向去解決問題,不過 pojen 的答案比較接近解決辦法,抱歉無法挑選此答案了,不過還是萬分感謝。

我要發表回答

立即登入回答