2011年1月26日 星期三

替新建立的Control File建立Backup Repository

要Restore一個一模一樣的測試環境,備份檔來源紀錄會有兩個地方,一個來自於Source DB的Control file,另外一個則來自於RMAN Repository。假設,你想還原的是一個已經超過Retention Policy的備份檔,而且你想要用新建立的Control File來建立備份記錄,那該怎麼辦呢? 方法比想像中的簡單許多。要利用RMAN的Catalog Start With指令,將備份檔整理到Control file就搞定了。舉例:

C:\> sqplus / as sysdba
SQL> startup mount;
SQL> exit;
C:\> rman target /
RMAN> catalog start with 'd:\oracle\orabak\';                                            

這時候Control file就會有放在d:\oracle\orabak\的備份檔記錄了。

2011年1月20日 星期四

有趣的行話:Bit bucket

Bit bucket 在 Wiki 裡頭解釋的挺有趣的,它所舉的生活化例子,相當於我們用中文說"資料莫名奇妙的消失在「黑洞」或「百慕達三角洲」"的味道。

這名詞記下來給大家笑一下。

2011年1月19日 星期三

ORA-01019 on Windows 7

同事今天安裝Windows 7給User使用,其中有個應用程式在安裝完成後,執行時卻遇到了ORA-01019錯誤,由錯誤訊息看起來無法判斷是哪方面的問題造成的,不過經驗上判斷這應該跟權限問題比較有關。我試著先用tnsping是沒問題的,但如果用sqlplus 登入卻會出現以下錯誤:

SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly


很有趣但又沒有用的的訊息。既然如此,換個方式來google一下SP2-1503呢?撲!答案找到了,原來是「控制台\系統管理工具\本機安全性設定\本機原則\使用者權限指派\建立通用物件(Create Global Object)」加入有需要權限的使用者即可。譬如說你希望所有網域使用者都能正常的登入Oracle,就將Domain Users群組加入就搞定。


註:XP稱Create Global Object為「建立全域物件」,個人覺得真是自找麻煩的變更

2011年1月11日 星期二

回復誤蓋的control file

實作restore的時候,不小心把source database的control file覆蓋到別的測試區的control file,等回神定眼一看,大錯已經造成。不幸中的大幸是測試區有做 3 個 multiplex control file,這次蓋到的只有兩個。立刻,心神慌亂的shutdown測試區instance(windows 平台直接關掉service),接著馬上砍掉錯誤的兩個control file,把測試區那碩果僅存的control以另存新檔的方式做出兩個control file,並命名成正確的control file name(ex, copy control03.ctl control01.ctl)。最後,restart database即成功恢復運作。

好在搞掛的是測試區,換作正式區,我可無法解釋這5分鐘的downtime怎麼來的啊...@@