查看: 27|回复: 0

[oracle] Oracle database恢复被修改的视图实现方式

[复制链接]

0

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-4-20
发表于 2025-9-29 16:05:43 | 显示全部楼层 |阅读模式

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部