幸福汽修厂 發表於 2025-9-29 16:05:43

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">Oracle database恢复被修改的视图</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">据我推测、 LAST_DDL_TIME就是修改时间</a></li><li><a href="#_lab2_0_1">下面回溯时间</a></li><li><a href="#_lab2_0_2">划重点</a></li></ul><li><a href="#_label1">总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>Oracle database恢复被修改的视图</h2>
<p>早上同事来找、 一个视图被修改了、 能不能查出来修改的时间、</p>
<p>研究了下系统中各个数据字典、找到一个表可以看到、</p>
<div class="jb51code"><pre class="brush:sql;">select * from all_objectswhere OBJECT_NAME='CV_SR_PART';
OWNER                        OBJECT_NAME                  SUBOBJECT_NAME                  OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED   LAST_DDL_TIME TIMESTAMP         STATUSTEMPORARY GENERATED SECONDARYNAMESPACE 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
</pre></div>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>据我推测、 LAST_DDL_TIME就是修改时间</h3>
<p>那么问题来了、 怎么恢复呢?</p>
<p>通过数据库备份、 做不完全恢复?</p>
<p>太麻烦了、 生产数据库也不合理、</p>
<p>视图的本质存放的是一条sql、 那么,</p>
<div class="jb51code"><pre class="brush:sql;">select * from dba_views where view_name='CV_SR_PART'</pre></div>
<p>dba_views 这个视图中text字段存放了视图本质、</p>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>下面回溯时间</h3>
<p>看下被视图被修改的时间前text字段存放了什么、</p>
<div class="jb51code"><pre class="brush:sql;">select text from dba_views as of timestamp to_date('201806081100','yyyymmddhh24miss') where view_name='CV_SR_PART';</pre></div>
<p>查到之前的视图内容、 重新执行下就可以了、</p>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>划重点</h3>
<p>生产系统上创建视图的时候不要create or replace</p>
<p class="maodian"><a name="_label1"></a></p><h2>总结</h2>
<p>以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。</p>
頁: [1]
查看完整版本: Oracle database恢复被修改的视图实现方式