暂无图片
分享
LEE
2019-05-10
编译无效对象后依旧存在

问题发生在 11.2.0.4.0 RAC环境 

编译失效对象,后仍然还是失效状态

比较奇怪的是应用程序相同,单实例环境未出现,rac环境无法编译通过

 alter procedure DUG_D处方成本更新 compile;

1.png

存储结构中只操作对应的表,未有其他引用对象


存储过程如下,

create or replace procedure DUG_D处方成本更新

(

 Pb输出状态 Out Number,

 Ps输出描述 Out Varchar2

)

IS

begin

 

  for mz in

  (

  SELECT DISTINCT 单据序号I,B.付数 FROM DUG_D中药房住院处方明细 A INNER JOIN DUG_D中药房住院处方单 B

  ON A.单据序号I=B.系统序号

   where A.成本金额 is NULL

  )

  LOOP

    UPDATE DUG_D中药房住院处方明细 A  SET 成本金额=

    (

           SELECT ROUND(B.数量*B.成本单价*mz.付数,2) FROM DUG_D中药房住院处方明细 B WHERE A.系统序号=B.系统序号

           AND B.单据序号I=mz.单据序号I

    )

    WHERE A.单据序号I=mz.单据序号i;

          

    UPDATE DUG_D中药房住院处方单 SET 成本合计=

    ( SELECT ROUND(SUM(成本金额),2) FROM DUG_D中药房住院处方明细 where 单据序号I=mz.单据序号i

    )

    WHERE 系统序号=mz.单据序号i;

    END LOOP;        

    

    

Exception

  When Others Then

    am_error(sqlcode, sqlerrm);

    ps输出描述 := Sqlcode || ':' || Sqlerrm||Pb输出状态;

  end DUG_D处方成本更新;


10046trc如下


收藏
分享
9条回答
默认
最新
LEE
上传附件:orcl1_ora_8966_10046.trc
暂无图片 评论
暂无图片 有用 0
打赏 0
Moone

编译有报错吗?

建议使用sqlplus 执行 compile语句,然后执行show errors查看是否有报错。

暂无图片 评论
暂无图片 有用 0
打赏 0
LEE

编译通过,但存储依旧失效状态

2.png


暂无图片 评论
暂无图片 有用 0
打赏 0
Moone

alter procedure <OWNER>.<NAME> compile试试,是不是有同名对象

暂无图片 评论
暂无图片 有用 0
打赏 0
LEE

按照alter procedure <OWNER>.<NAME> compile试试,是不是有同名对象 执行后,依旧无法编译通过

1.png


暂无图片 评论
暂无图片 有用 0
打赏 0
章芋文

名称上有中文,编译的时候加双引号试试

暂无图片 评论
暂无图片 有用 0
打赏 0
LEE

加上双引好可以了,感谢恩墨专家团队指导,不明白的是 单实例环境 常规方式可以编译通过 ,rac环境这种情况就需要加引号 是什么原因呢

2.png


暂无图片 评论
暂无图片 有用 0
打赏 0
Kamus

你观察到的现像可能不准确吧,理论上不应该单实例成功,RAC不成功

暂无图片 评论
暂无图片 有用 0
打赏 0
LEE
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Windows 安装11gRAC 后public ip没有注册监听
回答 7
正常部署完11grac后,publicip和vip不是会自动注册到监听上的吗,我这边Windows2008部署后publicIP没有注册,反而心跳ip和VIP注册在监听上。
oracle 备份指定归档的命令是什么?
回答 1
已采纳
plusarchivelog参考https://docs.oracle.com/cd/E1188201/backup.112/e10643/rcmsynta007.htmRCMRF107
oracle闪回空间满有可能是哪些方面导致的啊
回答 1
1、闪回空间大小设置不合理:如果闪回空间大小设置过小,建议根据业务需求适当调整闪回空间大小。2、数据库工作负载过大:数据库工作负载对闪回空间的使用也有很大的影响。如果数据库频繁进行更新操作,那么就会生
业务系统用的是Oracle数据库,现在想再搭另一台数据库,当做业务系统数据库的异地备份。可以及时热备,也可以周期性冷备。想实现这个主要用什么?
回答 2
可以使用oracle的ADG或者OGG都可以实现,或者使用第三方的备份软件,比如NBU等等
执行drop tablespace TS_CZPJ including contents and datafiles cascade constraints; 后报错了,这个表空间上的表会被删吗
回答 4
看下能否闪回,如果不能,确认有备份和归档的情况下,可以做不完全恢复。如果数据很重要,那么可以找第三方工具ODU\DUL之类的工具尝试下。
安装EM的时候,数据库实例会静默吗?
回答 3
已采纳
11.2之前的版本,数据库会静默,影响业务11.2开始,只是有个静默的提示,实际不会静默BTW静默这个词|||
oracle19c 哪里存放着用户的加密密码?
回答 1
select&nbsp;name,spare4from&nbsp;sys.user$;spare4&nbsp;存放用户的加密密码
Oracle RAC的序列会出现冲突吗?
回答 2
不会冲突,但是如果没设置ORDER的话,可能会先出现数字大的再出现数据小的情况,原因和楼上摸摸鱼说的一样
oracle 有没有自带的分割字符的函数?
回答 2
已采纳
这个貌似没有,我这里给你提供一个,也是网上的,我用了好使createorreplacefunctionfstrtocol(intextvarchar2,String&nbsp;&nbsp;&nbsp;
Oracle 怎么用命令行实现打开文件位置功能?
回答 2
已采纳
这个不能实现,打开文件夹命令请用系统命令