SQL> SELECT obj# FROM obj$ AS OF TIMESTAMP TO_TIMESTAMP('2007-7-10 23:50:32', 'YYYY-MM-DD HH24:MI:SS') WHERE NAME='P_TEST';
OBJ# ---------- 7346
在实际中,为了更精确得到OBJ#,可能还需要限制所属用户等条件。
要恢复过程,时间就是恢复SOURCE$表在过程被删除前的数据,这个用flashback是可以轻松做到的: SQL> SELECT * FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2007-7-10 23:50:32', 'YYYY-MM-DD HH24:MI:SS') where obj#=7346 order by line;
OBJ# LINE SOURCE ---------- ---------- -------------------------------------------------------------------------------- 7346 1 procedure p_test is 7346 2 begin 7346 3 dbms_lock.sleep(60); 7346 4 Insert Into x Values(1); 7346 5 Commit; 7346 6 end p_test;