Oracle 9.2.0.1版函數編譯一個小問題

來源:互聯網
上載者:User

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,具體不知道在什麼版本中修複了,所以建議大家在開發時最好升級到高一些的版本。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.