首页 > 解决方案 > 使用新的 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 支持链接中添加。猜想是正确的,但是“字符串缓冲区太小”的错误表明该表已被写入一个允许该列的大值。无论触发器记录在哪个表中,您都需要查看该表中的列大小。


症状 创建一个尝试连接到 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>改变触发器禁用;


推荐阅读