oracle - 使用新的 SQL 凭据连接到 Oracle 12c 时出现 ORA-06502
问题描述
您好我正在尝试使用连接描述符和新创建的 SQL 凭据连接到 Oracle 12c 实例。但是当我尝试使用我得到的凭据进行连接时:
ORA-00604: error occurred at recursive SQL level 1
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 18
我设法在此找到可能的文档:https: //support.oracle.com/knowledge/Oracle%20Database%20Products/1274538_1.html
但不幸的是,我没有 Oracle 支持帐户来查看详细信息。我个人的猜测是一些登录 PL/SQL(触发器或过程)正在运行,并且为我获得的凭据检索到的信息可能存在问题。由于递归 SQL 级别错误,我认为当 PL/SQL 运行时,某种字典/查找表中的某些预期条目会返回 NULL 之类的东西。如果有人知道为什么会发生这种情况,我将不胜感激。与此同时,我会联系 DBA 进行调查。
更新
DBA 回复了我,并通过修改触发器来帮助我。我不需要任何额外的东西。
解决方案
我已在 oracle 支持链接中添加。猜想是正确的,但是“字符串缓冲区太小”的错误表明该表已被写入一个允许该列的大值。无论触发器记录在哪个表中,您都需要查看该表中的列大小。
症状 创建一个尝试连接到 Oracle 的新用户:
SQL> create user test 默认标识的表空间用户;
用户创建。
SQL> 授予创建会话以进行测试;
格兰特成功了。
SQL> 连接测试/错误:ORA-00604:递归 SQL 级别 1 发生错误 ORA-06502:PL/SQL:数字或值错误 ORA-06512:在第 7 行更改新用户已创建。
原因 在这种情况下,问题可能是由现有的登录触发器引起的。
解决方案 以 sysdba 身份连接并禁用触发器。
SQL> select trigger_name from dba_triggers where triggering_event like '%LOGON%';
SQL>改变触发器禁用;
推荐阅读
- r - 可以从 R 中的 lapply 函数返回命名列表吗?
- r - 如何从R中的列中的每个值中减去数据框中特定位置的数字
- c# - Nunit如何使用可并行化的顺序?
- php - CAKEPHP- 每个页面上基于数据库的导航
- outlook - 将带有 word 文档的功能区发送给其他用户
- java - 内部 RecyclerView 列表文本未通过 SetText 显示在标题 TextView 上
- dsl - 将 Presto 与 DSL 等自定义 SQL 结合使用
- javascript - 转换 ReadonlyArray
到一个通常的可变数组 []? - c++ - cppcheck 取消引用空指针
- python - 尝试将数据框转换为 rdd 以进行 RankingMetrics