起因:

在oracle测试过程中,不小心执行了delete user$ 命令,导致oracle当前实例所有的用户信息丢失,包括sys用户。

第一次使用DUL工具数据恢复:失败

下载ParnassusData_PRMForOracle 工具,使用方法参考http://jingyan.baidu.com/article/624e7459ad30ed34e8ba5a2a.html,有交互界面,需要安装java环境,选择oralce系统目录下的system01.dbf等文件和业务dbf文件,加载分析,该工具就能把该实例下所有用户的表读取出来。如果用户信息不是误删的情况下,这种恢复方式是比较方便的,但我的情况是所有用户都没了,所有表信息也无法读取。

第二次使用AUL工具数据恢复:失败

下载aul工具,使用方法参考http://blog.csdn.net/daxiang12092205/article/details/17994665,没有交互界面,根据用户使用说明要求加载文件分析后,会生成aulusr.txt, aulobj.txt,aultab.txt, aulcol.txt;

aulusr.txt:存的内容是所有的用户名信息

aulobj.txt:存的内容是所有表名信息 其中第2列意思是指 该表对应的用户id,跟aulusr.txt中的用户id对应。

aulcol.txt:  存的内容是所有表的表结构信息。

由于所有用户已经删除, aulusr.txt中的信息是空的,但是aulobj.txt中的表信息都是全的,我通过已知的某个表名名称,在aulobj.txt中进行查找,找到了对应的用户ID,然后根据这个用户ID在aulusr.txt中构建一条记录用户信息记录,然后执行还原表数据命令,数据还原出来了,但我需要的表的表字段存在NVARCHAR和CLOB字段,NVARCHAR字段会乱码,而CLOB字段压根就还原不出来。

第三次使用ODU工具数据恢复:成功

下载ODU工具,使用方法参考http://files.cnblogs.com/files/hewenhaotc/ODUUserGuide_cn.pdf,也可以查看http://www.oracleodu.com/cn/上的技术支持,没有交互界面,根据用户使用说明要求加载文件分析后,也会生成lob.odu、obj.odu、tab.odu、user.odu;文件代表的信息跟AUL工具类似,根据用户说明进行还原数据后,乱码问题解决了,CLOB的字段也导出来,但问题来了,COLB字段包含回车,导出的数据进行命令导入到数据库是,无法正常导入,使用sqlldr命令导入时,会把回车当做一条记录的结束。

查了资料后,发现该工具底下的config.txt文件中的“lob_storage”是可以控制CLOB字段作为单独的文本输出,字段说明参考:http://blog.163.com/scott_guo/blog/static/181026083201211105107102/。修改了配置,还原数据,再导入到数据库,成功,无乱码问题,无丢失字段问题!

以上三种工具的方法比较参考文章ORACLE恢复神器之ODU/AUL/DUL:http://www.cnblogs.com/oracle-dba/p/3873870.html

oracle 执行 delete user$ 误删所有用户信息后的数据恢复流程的更多相关文章

  1. .NET 实现自定义ContextUser的Identity和Principal实现自定义用户信息,权限验证。

    备用收藏,http://blog.csdn.net/msdnxgh/article/details/6894885 .NET 实现自定义ContextUser的Identity和Principal 在 ...

  2. SoringCloud(四) - 微信获取用户信息

    1.项目介绍 2.微信公众平台 和 微信开放文档 2.1 微信公众平台 2.1.1 网址链接 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?ac ...

  3. Oracle安装前用户信息设置

    如果是重复安装,首先需要清除已经存在的软件安装记录: rm -fr /usr/local/bin/*oraenv rm -fr /usr/local/bin/dbhome rm -fr /usr/tm ...

  4. 查询oracle中所有用户信息 禁用用户

    ----查询oracle中所有用户信息 ----1.查询数据库中的表空间名称 ----1)查询所有表空间 select tablespace_name from dba_tablespaces; se ...

  5. ORACLE查询当前连接的用户信息及操作的SQL语句

    ORACLE--查询当前连接的用户信息及操作的SQL语句    select sid,      status,      v$session.username 用户名,      last_call ...

  6. Oracle执行计划 explain plan

    Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的. 对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值.不过你可以像使用其它列那样 ...

  7. 转:Oracle 执行计划(Explain Plan) 说明

    Oracle 执行计划(Explain Plan) 说明 原贴地址:http://blog.csdn.net/tianlesoftware/article/details/5827245   如果要分 ...

  8. Oracle 执行报错表空间或临时表空间不足,降低水位线方法

    Oracle 执行语句插入临时表报表空间不足,在增加表空间到最大后依然报错,经分析应该为创建的临时表水位线未清除导致,查询降低水位线方法如下: 原文地址:http://blog.itpub.net/2 ...

  9. 使用Oracle执行计划分析SQL性能

    执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述.即就是对一个查询任务,做出一份怎样去完成任务的详细方案. 如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的 ...

随机推荐

  1. STM32下载调试驱动问题

    No Cortex-m SW device found解决办法 16.07.14 今天工作,遇到一个问题:用jlink采用SW下载模式时,一直显示No Cortex-m SW device found ...

  2. Github账户注册的过程

    首先我通过冯老师的博客园帖子中的链接进入了注册地址,填写了用户名,邮箱,和密码.然后我进入我的邮箱验证了Github网站给我发送的验证信息,至此,我的GITHUB账户便注册完成了.

  3. 我是如何社工TDbank获取朋友隐私的

    原创 ziwen@beebeeto 转载请保留本行 个人感觉 国外的安全方面对社工的了解和防范并不是很好 即使他们使用社工的时间比我们要长很多 比如 他们的visa在pos机上使用是不需要密码的 而且 ...

  4. shh(struts+spring+Hibernate)的搭建

    一.Struts 一.struts的流程 (1)首先,用户在地址栏中输入你的项目访问路径,然后这个请求会发送到服务器,服务器先找到要web.xml的,给web.xml中配置了一个filter过滤器,过 ...

  5. Win8.1离线安装.NET3.5

    Win8.1离线安装.NET3.5 dism.exe /online /enable-feature /featurename:NetFX3 /Source:H:\sources\sxs 其中H为盘符 ...

  6. 谈事件冒泡(Bubble)和事件捕捉(capture)

    事件的发生顺序 假设在一个元素中又嵌套了另一个元素并且两者都有一个onClick事件处理函数(event handler).如果用户单击元素2,则元素1和元素2的单击事件都会被触发.但是哪一个事件先被 ...

  7. 你应该知道的那些Android小经验

    原文出处:http://jayfeng.com/ 做Android久了,就会踩很多坑,被坑的多了就有经验了,闲暇之余整理了部分,现挑选一些重要或者偏门的“小”经验做个记录. 查看SQLite日志 ad ...

  8. Base64加密与MD5的区别?

    MD5是一种不可逆的摘要算法.而Base64是一种编码方式,主要用于将二进制数据转换为文本数据,方便使用HTTP协议等,是可逆的.无论多少二进制数据,在MD5算法一定的情况下,都会变成一个定长的数据, ...

  9. Java后台判断请求来自PC端还是移动端

    核心代码

  10. Java Web 编程

    Java Web 编程 21天学通JAVA-WEB开发:http://files.cnblogs.com/files/maven-chao/Java_Web.zip