[20150430]列删除的简单恢复.txt

[20150430]列删除的简单恢复.txt

SCOTT@test> @ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SCOTT@test> create table tt as select * from dept ;
Table created.

SCOTT@test> @desc tt
Name     Null?    Type
-------- -------- ----------------------------
DEPTNO            NUMBER(2)
DNAME             VARCHAR2(14)
LOC               VARCHAR2(13)

SCOTT@test> alter table tt set unused column dname;
Table altered.

SCOTT@test> column name format a30
SCOTT@test> select obj#,col#,segcol#,name,intcol#,property from sys.col$ where obj# in (select object_id from dba_objects where owner=user and object_name='TT');
      OBJ#       COL#    SEGCOL# NAME                              INTCOL#   PROPERTY
---------- ---------- ---------- ------------------------------ ---------- ----------
    302306          1          1 DEPTNO                                  1          0
    302306          0          2 SYS_C00002_15043010:08:49$              2      32800
    302306          2          3 LOC                                     3          0

--可以发现SEGCOL#还存在,说明真正的数据并没有删除.

SCOTT@test> select DEPTNO,"SYS_C00002_15043010:08:49$",loc from tt;
select DEPTNO,"SYS_C00002_15043010:08:49$",loc from tt
              *
ERROR at line 1:
ORA-00904: "SYS_C00002_15043010:08:49$": invalid identifier

--如果这时要对出来如何处理呢?

SCOTT@test> select rowid,obj#,col#,segcol#,name,intcol#,property from sys.col$ where obj# in (select object_id from dba_objects where owner=user and object_name='TT');
ROWID                    OBJ#       COL#    SEGCOL# NAME                              INTCOL#   PROPERTY
------------------ ---------- ---------- ---------- ------------------------------ ---------- ----------
AAAAACAABAAAXJFAAQ     302306          1          1 DEPTNO                                  1          0
AAAAACAABAAAXJFAAR     302306          0          2 SYS_C00002_15043010:08:49$              2      32800
AAAAACAABAAAXJFAAS     302306          2          3 LOC                                     3          0

--
alter system flush shared_pool;
update  sys.col$ set col#=2 ,property=0 where rowid='AAAAACAABAAAXJFAAR';
update  sys.col$ set col#=3 ,property=0 where rowid='AAAAACAABAAAXJFAAS';
SYS@test> column name format a30
SYS@test> select rowid,obj#,col#,segcol#,name,intcol#,property from sys.col$ where obj# in (select object_id from dba_objects where owner='SCOTT' and object_name='TT');
ROWID                    OBJ#       COL#    SEGCOL# NAME                              INTCOL#   PROPERTY
------------------ ---------- ---------- ---------- ------------------------------ ---------- ----------
AAAAACAABAAAXJFAAQ     302306          1          1 DEPTNO                                  1          0
AAAAACAABAAAXJFAAR     302306          2          2 SYS_C00002_15043010:08:49$              2          0
AAAAACAABAAAXJFAAS     302306          3          3 LOC                                     3          0
commit;

SYS@test> select * from scott.tt;
select * from scott.tt
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 4299
Session ID: 580 Serial number: 11

--还不行.

SYS@test> select rowid,obj#,cols from sys.tab$ where obj# in (select object_id from dba_objects where owner='SCOTT' and object_name='TT');
ROWID                    OBJ#       COLS
------------------ ---------- ----------
AAAAACAABAAAXJFAAJ     302306          2

update sys.tab$ set cols=3 where rowid='AAAAACAABAAAXJFAAJ';
commit ;

update  sys.col$ set col#=2 ,property=0,name='DNAME' where rowid='AAAAACAABAAAXJFAAR';
commit ;

alter system flush shared_pool;
--补充1点,刷新无效,我重启才ok的.看来要一次改对,也许有一些东西在共享池子没有清楚干净.

SYS@test> select * from scott.tt;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS1
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

--注意,千万不要在生产系统做这个测试!!!!

时间: 2024-10-23 18:22:47

[20150430]列删除的简单恢复.txt的相关文章

[20170411]bbed删除记录的恢复.txt

[20170411]bbed删除记录的恢复.txt --//昨天上午做的测试,链接:http://blog.itpub.net/267265/viewspace-2136933/ --//我当时并没有选择恢复记录,仅仅看删除的内容.因为这样恢复是存在许多问题. --//执行 drop function scott.sleep ; 删除sys.source$相关记录仅仅是该命令的一小部分,恢复 --//sys.source$相关记录会存在许多问题,但是如果是应用数据恢复还是可以,实际上以前我的博客

回收站被删除了的恢复方法

  不小心操作把电脑的回收站给删除了,但又担心以后不小心把重要文件删除了,所以还是希望保留回收站更安全,那么回收站删除了怎么恢复呢?下面编辑为新手朋友介绍几种修复被删除的回收站方法. 方法一:回收站删除了简单恢复www.bcua.cn bcuablog 1.打开"我的电脑"; 2.在"工具"菜单中,单击"文件夹选项"命令; 3.单击"查看"选项卡,然后清除"隐藏受保护的操作系统文件推荐 "复选框,出现警告

QQ聊天记录删除了怎么恢复简单方法_安全相关

现在朋友之间交流,基本是都是通过QQ聊天,如果你一不小心把重要的聊天记录删除了该怎么办呢?下面小编就教你一些小窍门,保证解决你的难题. 第一种:向朋友请求帮助 相信我们大家都知道QQ聊天记录会在双方的电脑上保留着, 你电脑上的删除了,对方的电脑上可能还保留着.所以假如你和某个朋友聊天记录一不小心被删除了,你可以向你的朋友请求帮助,登陆QQ,找到你那个朋友让他把聊天记录导出一份给你.相信这是最为快速方便的一种方法了. 第二种:利用文件夹 如果对方也把QQ聊天记录删除了,又该怎么办呢?那我们就利用第

[20141218]误操作删除dual表的恢复.txt

[20141218]误操作删除dual表的恢复.txt --没事,做一个误操作删除dual表的恢复,没想到不能按照网上介绍的方法恢复,做一个记录. 1.建立测试数据库: mkdir -p /mnt/ramdisk mount -t tmpfs -o size=8G tmpfs /mnt/ramdisk $ORACLE_HOME/bin/dbca -createDatabase -templateName General_Purpose.dbc -gdbName test -sid test -s

Foxmail中邮件删除后如何恢复

故障现象: FoxMail是国人用得比较多的一种电子邮件软件,其方便快捷的操作深得用户的喜爱.其中删除邮件的操作有两种方法,一种是按"DELETE"键将邮件移至废件箱,另一种是按"SHIFT+DELETE"键直接将邮件清除,用起来十分方便.但凡事有利又有弊,如果因为不小心删除了邮件该怎么办呢? 原因分析: 删除邮件的操作有两种方法,一种是按"DELETE"键将邮件移至废件箱,另一种是按"SHIFT+DELETE"键直接将邮件清

[20120906]alter table set unused column后的恢复.txt

[20120906]alter table set unused column后的恢复.txt 我们知道表在alter table 表 set unused column 字段名 后的恢复,数据并没有真正的删除,昨天开发问如果出现误操作是否能够恢复(概率也太小了). 大家知道在执行以上操作后,执行很快,对应字段的数据并没有真正删除,自己觉得好奇,测试看看. 1.测试环境: SQL> select * from v$version ; BANNER ------------------------

[20131220]频率直方图的简单探究.txt

[20131220]频率直方图的简单探究.txt http://allthingsoracle.com/histograms-part-1-why/http://www.itpub.net/thread-1816475-1-1.html 昨天本想看12c的混合直方图的相关信息,无意之中发现以上链接,Jonathan Lewis给出很好的例子,newkid的翻译写的很清晰,自己再按照上面的介绍写一些例子做一些测试. 我的测试环境11.2.0.3,建立测试环境: SYS@test> @verBANN

桌面回收站删除了怎么恢复?

  前段时间有个网友咨询了小编这样一个问题,桌面回收站删除了怎么恢复?看到这个问题,小编有些疑问,这个问题到底是咨询回收站图标删除恢复方法还是咨询回收站中文件删除恢复方法呢?因为对这个问题正确意思琢磨不透,小编在这里就对这两个问题进行分别解答,不管问题与否,这些方法肯定都会对大家有所帮助的.下面我们就一起来看看吧! 桌面回收站文件删除了怎么恢复?小编介绍的方法方法非常简单,就是通过国内知名的无敌数据恢复软件对回收站删除文件进行恢复. 第一步:下载安装无敌数据恢复软件. 第二步:打开无敌数据恢复软

桌面回收站图标删除了如何恢复?

  桌面回收站文件删除了怎么恢复?小编介绍的方法方法非常简单,就是通过国内知名的无敌数据恢复软件对回收站删除文件进行恢复. 第一步:下载安装无敌数据恢复软件. 第二步:打开无敌数据恢复软件,用户将可以看到整个软件的基本界面.选择"误清空回收站"选项进入到下一步. 第三步:进入回收站扫描阶段,等待扫描完成. 第四步:在扫描结果中,用户可以通过浏览窗口浏览文件内容来判断是否是需要恢复的文件,选择需要恢复的文件,然后点击下一步. 第五步:选择恢复文件存储路径,这里文件不能存储在C盘,以免造成