はじめに
本日、システムを利用するとシステム処理が【ORA-06552: PL/SQL: Compilation unit analysis terminated】とコンパイルエラーを吐いて実行できない状態となっていました。
原因としては、【ADBS-25.4.3.2】のアップデートがAutonomousDBに先週末行われているのですが、それによってプログラムのどこかに問題が発生し、コンパイルエラーが発生している状況でした。
何が問題なのかを洗い出していったところ、思わぬところでエラーとなっていました。
PLSQLの%TYPE属性でエラー
エラーとなっていたのは、以下の2か所でした。
l_chid conversation_history.CHID%TYPE;
l_answer conversation_history.ANSWER%TYPE;
どちらも、テーブルの文字列項目を参照するように指定していただけでそれ単体では問題とはいえない箇所でネットやChatGPTで調べてもシステムのエラーからこの2つは洗い出せませんでした。
ただし、エラーの内容にVector型の項目をコンパイルする際にエラーとなっていると表記されており、テーブルにかかわる部分に問題があるとわかりました。
その為、今回の問題として先週のアップデートにより該当のテーブルにVector型が存在する状態で%TYPE属性を指定するとVector型の判断ができずにエラーとなっていたようです。
以下のように文字列として変数を書き換えて、処理を実行することでコンパイルが通るようになりました。
l_answer VARCHAR2(32767);
l_chid VARCHAR2(32767);
先週までは何も問題なかった
今回の事象で何が最も恐怖だったのかといえば、先週末までは動作しており突如としてコンパイルエラーとなっていた点です。
ADBのメンテナンスは、1週間前に実行することが可能であり、そこで検証することが大切であることを知りました。
まとめ
ADBは、自動でアップデートを行ってくれる為、助かる反面こうしたアップデートによる問題も考慮した対応が必要です。
また、こうした%TYPE型で影響が出るなどの問題はこうして共有して情報を早く得られるようにしていきたいと思います。