oracle 备份package,案例:Oracle非常规恢复ODU恢复PACKAGE/VIEW/DBLINK等数据脚本操作

天萃荷净

Oracle非常规恢复,通过ODU工具恢复包,过程,函数,视图,触发器等数据

当数据库不能拉起来时候,我们可以通过odu找回丢失的数据,今天客户出要求,需要我帮忙找回不能起来库中的包,过程,函数,视图,触发器等之类东西。这些东西都是存在system空间中,存在一些系统的基表中,我们如果能够拿到这些基表的数据然后进行处理,原则上就可以得到客户需要的东西

一、恢复PROCEDURE/FUNCTION/PACKAGE/PACKAGE BODY/TRIGGER/TYPE/TYPE BODY中的数据

1. 查看这些数据存储在什么基表中

select u.name, o.name,

decode(o.type#, 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',

11, 'PACKAGE BODY', 12, 'TRIGGER', 13, 'TYPE', 14, 'TYPE BODY',

'UNDEFINED'),

s.line, s.source

from sys.obj$ o, sys.source$ s, sys.user$ u

where o.obj# = s.obj#

and o.owner# = u.user#

and ( o.type# in (7, 8, 9, 11, 12, 14) OR

( o.type# = 13 AND o.subname is null))

union all

select u.name, o.name, 'JAVA SOURCE', s.joxftlno, s.joxftsrc

from sys.obj$ o, x$joxfs s, sys.user$ u

where o.obj# = s.joxftobn

and o.owner# = u.user#

and o.type# = 28;

通过这个sql知道主要存储在sys.obj$ o, sys.source$ s, sys.user$中(至于x$joxfs表,我暂时在数据库中未找到,不能使用odu提取数据,也就是说我这里不能恢复出来JAVA SOURCE)

2. 使用odu导出数据(注意output_format设置为dmp,防止出现意外)

使用类此unload table sys.obj$ 下面语句导出数据

3. 加载这些数据到新库中(切记不要使用sys schema)

使用类此imp chf/oracleplus file=d:/SYS_OBJ$.dmp fromuser=sys touser=chf导入数据

4. 在查询出需要对象

SELECT u.name USER_NAME,

o.name OBJECT_nAME,

DECODE (o.type#,

7, 'PROCEDURE',

8, 'FUNCTION',

9, 'PACKAGE',

11, 'PACKAGE BODY',

12, 'TRIGGER',

13, 'TYPE',

14, 'TYPE BODY',

'UNDEFINED')

OBJECT_tYPE,

s.line,

s.source

FROM chf.obj$ o, chf.source$ s, chf.user$ u

WHERE o.obj# = s.obj# AND o.owner# = u.user#

AND (o.type# IN (7, 8, 9, 11, 12, 14)

OR (o.type# = 13 AND o.subname IS NULL))

--过来条件选择出需要对象

-- AND U.name='BSSADMIN'

ORDER BY U.NAME,

O.NAME,

O.TYPE#,

S.LINE;

5. 使用说明

在line=1的source前面加上create or replace ,使用合适的用户创建需要对象

二、恢复Oracle 视图VIEW中的数据

1. 找出视图存储基表

sys.obj$,sys.view$,sys.user$

2. 使用odu导出需要表

3. 使用imp导入数据库

4. 查询语句

SELECT u.name username, o.name viewname, v.text

FROM chf.obj$ o, chf.view$ v, chf.user$ u

WHERE o.obj# = v.obj# AND o.owner# = u.user#

--过滤条件,挑选需要视图

AND u.name = 'MAS_ADMIN';

5. 使用说明

create VIEW OR REPLACE username.viewname AS+TEXT中内容

三、恢复Oracle dblink内的数据

1. 找出关联基表

Sys.link$和sys.user$

2. odu导出相关表

3. imp导入数据

4. 查询语句

SELECT U.NAME USERNAME,

L.NAME DBLINK_NAME,

L.USERID LOGIN_USER,

L.HOST TNS,

L.CTIME

FROM CHF.LINK$ L, CHF.USER$ U

WHERE L.OWNER# = U.USER#

--过滤条件

AND U.NAME = 'PUBLIC'

5. 使用说明

根据查询出来信息,自己创建DBLINK

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之案例:Oracle非常规恢复ODU恢复PACKAGE/VIEW/DBLINK等数据脚本操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值