扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
编译的存储过程的时候,程序死住,等待一会出现ora-04021错误解决办法:
创新互联公司长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为临西企业提供专业的成都网站设计、网站制作,临西网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
1.可能被锁住
查看v$lockedselect b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session b
where a.SID = b.SID
得到死锁session的SID,SERIAL#参看这个是否为你自己用户下的,然后kill掉session
2.可能被挂起
查看v$session_waitselect b.serial#,a.* from v$session_wait a,v$session
bwhere a.sid = b.sid得到等待的session的sid和serial#3.查看dba_ddl_locksselect
session_id sid, owner, name, type,
mode_held held, mode_requested request
from dba_ddl_locks
where name = 'your_package_name'
emp表是oracle安装包里的example,它属于scott,确认一下这个表是否存在:
select owner,object_type from dba_objects where object_name='EMP';
如果这个表存在,出现这个错误,有以下几个原因:
1.这个包的所有者没有对emp表的select权限
2.虽然有权限,但在引用它的时候必需明确这个表的schema,也就是上面那个查询的owner,你应该用scott.emp
不行,编译的话整个包体全部都会被编译,而不会你鼠标圈哪里编译哪里,如果你怕其他过程被编译,你就把这个过程另拿出来CREATE一个吧,然后在调用这个包里的其他过程。
可在第三方软件中,如pl/sql中编译。
1、打开pl/sql软件并登录到指定数据库。
2、点击左上方像纸片的按钮,然后点击“sql窗口”
3、在弹出窗口中编写自定义函数。
4、编写完毕后,直接点击左上角像齿轮的按钮(即执行按钮),就可以编译了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流