Oracle数据库数据恢复、性能优化来问问AskMaclean - ParnassusData诗檀软件旗下网站

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

999

积分

1

好友

942

主题
发表于 2017-4-17 14:27:23 | 查看: 244| 回复: 1
本帖最后由 biotwang 于 2017-8-16 17:51 编辑

我的oracle数据库是在unix下安装的oracle10,不知怎么的sytem表空间下的数据文件块损坏,在pl/sql devloper上看不到表、存储过程和函数,但是可以用select 语句查看记录。也不能用exp对其整库备份,后来从user_all_tables下选出所有表名,通过exp 的tables选项分批备份表竟然成功(喜出望外),现在怎么将存储过程和函数导出,请高人指教,十分感谢

点击tablUBes、procedures、functions列表出现以下错误:
  1. ORA-01578: ORACLE 数据块损坏 (文件号 1, 块号 49614)
  2. ORA-01110: 数据文件 1: '/dev/rdisk k9b'


  3. SELECT *
  4. FROM dba_extents
  5. WHERE file_id =1
  6. and 49614 between block_id AND block_id + blocks - 1
  7. ;
复制代码
也提示上面错误

最终解决方法:
  1. Select (Case When (instr(b.text,'FUNCTION')<>0 Or instr(b.text,'PROCEDURE')<>0 Or instr(b.text,'function')<>0 Or instr(b.text,'procedure')<>0) Then 'CREATE OR REPLACE '||b.text Else b.text End) source_code
  2. From user_objects a,user_source b
  3. Where a.object_name=b.Name And (object_type= 'PROCEDURE' or object_type = 'FUNCTION')
  4. Order By b.Name,b.line
复制代码
可以生成所有的存储过程和函数的语法
选择source_code列拷贝到word中
  1. "CREATE OR REPLACE FUNCTION ""FUN_JSWYJ"" (
  2. "
  3. "    av_dfje   number, --numeric(12,2),
  4. "
  5. "
  6. "
  7. "return  number
  8. "
  9. "is
复制代码
经过整理,
  1. spool f:\imp_up.log

  2. CREATE OR REPLACE FUNCTION UF_JSWYJ (
  3.     av_dfje   number, --numeric(12,2),
  4. )
  5. return  number
  6. is
  7. end UF_JSWYJ
  8. /
  9. spool off
复制代码
注意在每个过程或函数的结尾加/,(在word中整理出来)另存为sql文件(即导出成功),执行该sql脚本文件即可导入




可以查的出来,但是怎样导出,再导入,有没有什么好的思路
  1. Select a.object_name,b.* From user_objects a,user_source b
  2. Where a.object_name=b.Name And (object_type= 'PROCEDURE' or object_type = 'FUNCTION')
  3. Order By b.Name,b.line
复制代码
可以查的出来,但是怎样导出,再导入,有没有什么好的思路

dbv是不是要单独安装?RMAN没用过
下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
发表于 2017-8-16 17:08:57
本帖最后由 biotwang 于 2017-8-16 17:50 编辑

你可以通过PRM-DUL导出数据库当时建立的存储过程procedure、函数function等信息.
实现procedure及function抓取示例:

首先对原库扫描,源数据抓取和数据库是否关闭无关,这保证了即便在数据库受损无法打开的情况下,也可以对代码进行救援:
prm-extr-src01.png


选择对应schema(这里选HR),Export DDL,然后就开始工作了:
prm-extr-src02.png

注意:
1. 你需要有一个新库(或目标库)来承接导出的DDL数据,这样方便你的代码检查。
2. 最好给目标库建立一个新用户(在连接中使用新用户来做连接),将procedure 或 function导入到新用户名下,这样方便区分。
3. 使用此功能需要注册企业版



回复 显示全部楼层 道具 举报

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

扫码加入微信Oracle小密圈


QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化来问问AskMaclean - ParnassusData诗檀软件旗下网站

GMT+8, 2018-1-24 13:27 , Processed in 0.090761 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569