编译存储过程时出现Ora-04021错误的解决方法

编译存储过程时出现Ora-04021错误的解决方法,第1张

编译的存储过程的时候 程序死住 等待一会出现ora 错误解决办法:

可能被锁住

查看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

可能被挂起

查看v$session_waitselect b serial# a from v$session_wait a v$session bwhere a sid = b sid得到等待的session的sid和serial# 查看dba_ddl_locksselect session_id sid owner name type mode_held held mode_requested request

from dba_ddl_locks

lishixinzhi/Article/program/SQL/201311/16339

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询 文章分类:数据库 在PLSQL Developer和 Rapid SQL 760中用sys登录后连接正常,不能打开左边的菜 单项,点击后报错“ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询”,后来在网上参考

ORA-02001: 用户 SYS 不允许创建可用列表组的索引
ORA-02002: 写入审记线索时出错
ORA-02003: 无效的 USERENV 参数
ORA-02004: 违反安全性
ORA-02005: 隐含 (-1) 长度对数据类型的定义和赋值无效
ORA-02006: 无效的压缩十进制格式字符串
ORA-02007: 不能使用含 REBUILD 的ALLOCATE 或 DEALLOCATE 选项
ORA-02008: 已指定非数字列的非零标度
ORA-02009: 指定的文件大小不得为 0
ORA-02010: 缺少主机连接字符串
ORA-02011: 重复的数据库链接名
ORA-02012: 缺少 USING 关键字
ORA-02013: 缺少 CONNECT 关键字
ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 UPDATE FOR
ORA-02015: 不能从远程表选择 FOR UPDATE
ORA-02016: 不能在远程数据库中使用 START WITH 子查询
ORA-02017: 要求整数值
ORA-02018: 同名的数据库链接具有开放连接
ORA-02019: 未找到远程数据库的连接说明
ORA-02020: 过多的数据库链接在使用中
ORA-02021: 不允许对远程数据库进行 DDL *** 作
ORA-02022: 远程语句的远程对象具有未优化的视图
ORA-02023: 远程数据库无法对 START WITH 或 CONNECT BY 谓词求值
ORA-02024: 未找到数据库链接
ORA-02025: SQL 语句的所有表均必须在远程数据库中
ORA-02026: 缺少 LINK 关键字
ORA-02027: 不支持 LONG 列的多行 UPDATE
ORA-02028: 服务器不支持行数的准确读取
ORA-02029: 缺少 FLLE 关键字
ORA-02030: 只能从固定的表/视图查询
ORA-02031: 没有 ROWID 适用于固定表或外部组织的表
ORA-02032: 聚簇表无法在簇索引建立之前使用
ORA-02033: 此簇的簇索引已经存在
ORA-02034: 不允许加速赋值
ORA-02035: 非法的成组 *** 作组合
ORA-02036: 自动游标打开的变量描述过多
ORA-02037: 未初始化的加速赋值存储
ORA-02038: 不允许对数组类型定义
ORA-02039: 不允许对数组类型赋值
ORA-02040: 远程数据库不支持两段式提交
ORA-02041: 客户数据库未开始一个事务处理
ORA-02042: 分布式事务处理过多
ORA-02043: 必须在执行之前结束当前事务处理
ORA-02044: 事务处理管理器登录被拒绝: 事务处理正在进行
ORA-02045: 全局事务处理中的本地会话过多
ORA-02046: 分布式事务处理已经开始
ORA-02047: 无法连接运行中的分布式事务处理
ORA-02048: 尝试不登录而开始分布式事务处理
ORA-02049: 超时: 分布式事务处理等待锁定
ORA-02050: 事务处理已重算,某些远程 DBs 可能有问题
ORA-02051: 同一事务处理中的另一会话失败
ORA-02052: 远程事务处理在失败
ORA-02053: 事务处理已提交,某些远程 DBs 可能有问题
ORA-02054: 事务处理有问题
ORA-02055: 分布式更新 *** 作失效;要求回退
ORA-02056: 2PC: : 无效的两段命令编号(源于)
ORA-02057: 2PC: : 无效的两段恢复状态编号(源于)
ORA-02058: 未找到 ID的准备事务处理
ORA-02059: ORA-2PC-CRASH-TEST- 在提交备注中
ORA-02060: 选择指定了分布表连接的更新
ORA-02061: 锁定表指定了分布式表的列表
ORA-02062: 分布式恢复收到 DBID ,预计为
ORA-02063: 紧接着(源于)
ORA-02064: 不支持分布式 *** 作
ORA-02065: 非法的 ALTER SYSTEM 选项
ORA-02066: DISPATCHERS 文本缺失或无效
ORA-02067: 要求事务处理或保存点回退
ORA-02068: 以下严重错误源于
ORA-02069: 此 *** 作的 global_names 参数必须设置为 TRUE
ORA-02070: 数据库不支持此上下文中的
ORA-02071: 初始化远程数据库的功能时出错
ORA-02072: 分布式数据库网络协议匹配错误

最近,应该是很久了遇到这个问题,一直觉得不影响自己工作使用,就一直在执行sql的时候跳过了,但是,心里一直有个疙瘩。今天把问题解决了,很开心,就把解决问题的具体过程写一下,算是给自己一个记录。

有关此问题的所有文章中,都说了这个问题出现的场景:向某张表A中插入数据,A表的某个字段m是外键,关联到了另外一张表B,由此产生了问题。

解决方法无非三种:

首先要说的就是最不应该出现的问题:

数据类型长度不一致 :即A表中的外键字段和B表中的被外键关联的字段数据类型长度不一致。由此产生了问题,这个问题如果出现,我觉得建表的人可以找个没人的地方面壁思过一下。

后面两种情况可以归为一类:

外键或者外键环中数据不一致:

外键 :A表的外键关联的为B表中的字段,则应该A有数据则B必有数据,A为空则B必为空,如果A中有数据,但B中无数据,就会报错。

外键环 :A表的外键关联的为B表中的字段,B表中的字段又为外键关联C表中的字段。。。。。。,这个过程中,出现外键数据不一致的问题,就会报错。
每天进步一点点。

推荐微信公众号排骨肉段,记录日常的美好。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13406418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存