Oracle 在PL-SQL上更改之前如何获取视图/触发器?

Oracle 在PL-SQL上更改之前如何获取视图/触发器?,oracle,view,oracle11g,database-administration,sql-view,Oracle,View,Oracle11g,Database Administration,Sql View,我有一个观点: 昨天| myview |从bereich='AAA'所在的垫子中选择*| 今天| myview |从bereich='BBB'和typ='BR'所在的垫子中选择*| 有人改变了我对prod的看法,或者我忘记备份上一个查询,因此它已提交 如何返回我的查询/我的视图 谢谢。视图只是一个存储的查询,数据没有任何变化。只需使用旧查询重新创建视图: create or replace myview as select * from mat where bereich = 'A

我有一个观点:
昨天| myview |
从bereich='AAA'所在的垫子中选择*
|
今天| myview |
从bereich='BBB'和typ='BR'所在的垫子中选择*
|

有人改变了我对prod的看法,或者我忘记备份上一个查询,因此它已提交

如何返回我的查询/我的视图

谢谢。

视图只是一个存储的查询,数据没有任何变化。只需使用旧查询重新创建视图:

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

您可以使用
用户视图
数据字典视图查看视图的前
文本
。为此,您需要一些特权,例如

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.
由您的DBA提供

然后,连接到您的模式

SQL> conn myschema/mypwd
并使用以下查询

SQL> select t.text 
  from user_views 
  as of timestamp systimestamp - interval '1' day t
where t.view_name = 'MYVIEW';
获取要重新创建的过去视图的
文本


另外,由于您的需要或愿望,关键字
day
可能会替换为
hour
minute
second

我不知道旧查询,因为有人更改了视图。数据没有发生任何变化,但我的用户大声喊道,他们的数据没有出现,我的意思是有任何方法可以回滚视图吗?您的源代码控制存储库中有一个查询副本,对吗?嗯,看起来您的系统运行时没有对模式脚本的源代码控制或对生产的受限/受监控访问。到处都是坏习惯。我知道这对你现在没有帮助,但这是一个重要的学习点。如果应用程序不以适当的尊重程度对待其生产数据库,则不可避免地会失败。好吧,我的系统在没有源代码控制的情况下运行,这将与同事分享,以讨论最佳实践。谢谢你的回答