Как получить представление / триггер, прежде чем изменить на PL-SQL? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть вид:
Вчера | myview | select * from mat where bereich='AAA' |
Сегодня | myview | select * from mat where bereich='BBB' AND typ='BR' |


кто-то изменил мой взгляд на prod, или я забыл сделать резервную копию предыдущего запроса, и он был зафиксирован

Как вернуть мой запрос / myview вчера?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы можете использовать user_views представление словаря данных, чтобы увидеть прежнее text вашего представления. Для этой цели вам понадобятся некоторые привилегии, такие как

SQL> sqlplus / as sysdba
SQL> grant flashback on user_views to myschema;

и минимальные требования для использования техник воспоминания, таких как

SQL> select p.value 
  from v$parameter p
 where p.name = 'db_flashback_retention_target';

 VALUE
 -----
  1440 -- should be set to 1440(minute) as minimum to get the value for the day before.

предоставляется вашим администратором базы данных .

Затем подключитесь к своей схеме

SQL> conn myschema/mypwd

и используйте следующий запрос

SQL> select t.text 
  from user_views 
  as of timestamp systimestamp - interval '1' day t
where t.view_name = 'MYVIEW';

чтобы воссоздать text вашего взгляда в прошлом.

P.S. ключевое слово day может быть заменено на hour, minute или second из-за вашей потребности или желания.

0 голосов
/ 01 июля 2018

Представление - это просто сохраненный запрос , с данными ничего не произошло. Просто воссоздайте представление, используя старый запрос:

create or replace myview as
  select * 
  from mat
  where bereich = 'AAA';
...