Heim  >  Artikel  >  Datenbank  >  Oracle 9.2.0.1版函数编译一个小问题

Oracle 9.2.0.1版函数编译一个小问题

WBOY
WBOYOriginal
2016-06-07 16:51:22948Durchsuche

OS:Windows 2003 Server ORACLE9.2.0.1 现象:在进行PL/SQL 函数编译时加上DEBUG会出现死机,详细描述如下: 下面是一个函数:

OS:Windows 2003 Server

Oracle9.2.0.1

现象:在进行PL/SQL 函数编译时加上DEBUG会出现死机,详细描述如下:

下面是一个函数:


SQL> create or replace function A2(arg_bh User_Tables.table_name%type)
  2    return number is
  3    Result VARCHAR2(50);
  4  begin
  5    select  arg_bh || rpad(arg_bh, 46) || '(测试)' into Result from dual;
  6  end A2;
  7  /
 
Function created
 
SQL> alter function a2 compile;
 
Function altered
 
SQL> alter function a2 compile debug;

然后就出现了数据库死机现象,CPU100%

会话处理等待状态,等待事件为null event

锁住了以下系统表


SYS ERROR$
SYS PROCEDUREINFO$
SYS ARGUMENT$
SYS PROCEDUREC$
SYS PROCEDUREJAVA$
SYS VTABLE$
SYS PROCEDURE$
SYS IDL_UB1$
SYS IDL_CHAR$
SYS IDL_UB2$
SYS IDL_SB4$

使用KILL不能杀掉进程,,进程一直处于killed状态,通过orakill命令才可以KILL进程

做过一些测试,发现主要问题是以下代码片段引起的:


arg_bh User_Tables.table_name%type
arg_bh || rpad(arg_bh, 46) || '(测试)'

在数据库 9.2.0.7中同样的代码编译正常,说明这是9.2.0.1的BUG,具体不知道在什么版本中修复了,所以建议大家在开发时最好升级到高一些的版本。 

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn