2019年9月27日 星期五

Oracle DB - 如何restore被意外刪除(drop)的stored procedure?


某甲: 剛剛發現一隻stored procedure不見了,請協助從備份檔案restore。

DBA看了一下技術文件,只能搖搖頭。RMAN可以做database, tablespace 的 restore,但無法只挑某支store procedure進行還原。

Restoring Files with RMAN
Use the RMAN RESTORE command to restore the following types of files from disk or other media:

Database (all datafiles)
Tablespaces
Control files
Archived redo logs
Server parameter files

某甲: 是否可以restore database到testing db,然後從完整還原的資料庫中,去把該stored procesure撈出來恢復到production db?

DBA內心OS: 阿娘喂。

DWP01目前快要3TB的size,RMAN recovery取一個stored procedure。,突然想到

《紅樓夢·第九一回》
寶玉呆了半晌,忽然大笑道:『任憑弱水三千,我只取一瓢飲。』



精神不佳的時候,很容易發生這種誤刪除 stored procedure 的狀況。
如何簡單的查詢,並且做一個"復原的動作" ?

--查現在
select text from dba_source where owner = 'APPUSER' and name='APP_PROC_AABBCC';

--connect / as sysdba
--查六小時前
select text from dba_source as of timestamp sysdate-6/24 where owner = 'APPUSER' and name='APP_PROC_AABBCC' order by line;

PL/SQL Developer 自動記憶帳號 username and 密碼 password




1 記憶帳號 username

 Configure -->  Preferences -> User Interface - Options

勾選 Autosave username --> OK






2 記憶密碼 password

Configure --> Preferences -->  Oracle  --> Logon History  -> Definition

勾選 Store history 和Store with password  --> OK