- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2017-4-17 14:27:23
|
查看: 7301 |
回复: 1
本帖最后由 biotwang 于 2017-8-16 17:51 编辑
我的oracle数据库是在unix下安装的oracle10,不知怎么的sytem表空间下的数据文件块损坏,在pl/sql devloper上看不到表、存储过程和函数,但是可以用select 语句查看记录。也不能用exp对其整库备份,后来从user_all_tables下选出所有表名,通过exp 的tables选项分批备份表竟然成功(喜出望外),现在怎么将存储过程和函数导出,请高人指教,十分感谢
点击tablUBes、procedures、functions列表出现以下错误:- ORA-01578: ORACLE 数据块损坏 (文件号 1, 块号 49614)
- ORA-01110: 数据文件 1: '/dev/rdisk k9b'
- SELECT *
- FROM dba_extents
- WHERE file_id =1
- and 49614 between block_id AND block_id + blocks - 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
- From user_objects a,user_source b
- Where a.object_name=b.Name And (object_type= 'PROCEDURE' or object_type = 'FUNCTION')
- Order By b.Name,b.line
复制代码 可以生成所有的存储过程和函数的语法
选择source_code列拷贝到word中- "CREATE OR REPLACE FUNCTION ""FUN_JSWYJ"" (
- "
- " av_dfje number, --numeric(12,2),
- "
- "
- "
- "return number
- "
- "is
复制代码 经过整理,- spool f:\imp_up.log
- CREATE OR REPLACE FUNCTION UF_JSWYJ (
- av_dfje number, --numeric(12,2),
- )
- return number
- is
- end UF_JSWYJ
- /
- spool off
复制代码 注意在每个过程或函数的结尾加/,(在word中整理出来)另存为sql文件(即导出成功),执行该sql脚本文件即可导入
可以查的出来,但是怎样导出,再导入,有没有什么好的思路- Select a.object_name,b.* From user_objects a,user_source b
- Where a.object_name=b.Name And (object_type= 'PROCEDURE' or object_type = 'FUNCTION')
- Order By b.Name,b.line
复制代码 可以查的出来,但是怎样导出,再导入,有没有什么好的思路
dbv是不是要单独安装?RMAN没用过
|
|