Oracle database 恢復被修改的視圖

早上同事來找、 一個視圖被修改了、 能不能查出來修改的時間、
研究了下系統中各個數據字典、找到一個表可以看到、

select * from all_objects  where OBJECT_NAME='CV_SR_PART';
OWNER                          OBJECT_NAME                    SUBOBJECT_NAME                  OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED     LAST_DDL_TIME TIMESTAMP           STATUS  TEMPORARY GENERATED SECONDARY  NAMESPACE EDITION_NAME
------------------------------ ------------------------------ ------------------------------ ---------- -------------- ------------------- ----------- ------------- ------------------- ------- --------- --------- --------- ---------- ------------------------------
SIEBEL                         CV_SR_PART                                                        287957                VIEW                2016/7/7 2: 2018/6/8 11:5 2018-06-08:11:52:16 VALID   N         N         N                  1 

據我推測、 LAST_DDL_TIME 應該就是修改時間、


那麼問題來了、 怎麼恢復呢、
通過數據庫備份、 做不完全恢復?
太麻煩了、 生產數據庫也不合理、
視圖的本質存放的是一條sql、 那麼、

select * from dba_views where view_name='CV_SR_PART'

dba_views 這個視圖中text字段存放了視圖本質、
下面 回溯時間、 看下被視圖被修改的時間前text字段存放了什麼、

select text from dba_views as of timestamp to_date('201806081100','yyyymmddhh24miss') where view_name='CV_SR_PART';

查到之前的視圖內容、 重新執行下就可以了、


劃重點: 生產系統上創建視圖的時候不要create or replace

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章