修改并行参数引发ORA-600 [kgeade_is_0]的问题处理
客户有一套数据库,这周有例行停机维护的时间,于是我们趁这次停机例行维护的时间区间进行PARALLEL_EXECUTION_MESSAGE_SIZE参数的修改,修改完成后在重启的过程中遇到了ORA-00600[KGEADE_IS_0]的错误。首先来说一下为什么要修改PARALLEL_EXECUTION_MESSAGE_S
客户有一套数据库,这周有例行停机维护的时间,于是我们趁这次停机例行维护的时间区间进行PARALLEL_EXECUTION_MESSAGE_SIZE参数的修改,修改完成后在重启的过程中遇到了ORA-00600[KGEADE_IS_0]的错误。首先来说一下为什么要修改PARALLEL_EXECUTION_MESSAGE_SIZE这个参数,根据Oracle最佳实践的推荐,10g默认装完数据库该参数的值是2152,也有可能是2048,推荐将这个值设置成8192,而在11g中,这个值默认被设置成了16K,是可以满足大多数应用场景的。这个值的作用就是在并行执行中消息的大小。这个值越大,需要的shared pool也就越大。虽然能获得更好的性能,但是相应的内存也需要的更多了。还有:这个参数在并行恢复或者是standby recover情况下,增加它的大小到4096以上,也能提升至少20%恢复速度。
我们来看一下我们的报错的情况,我们修改一个节点该参数,然后直接重启。
Sun Jul 13 16:57:58 CST 2014 Errors in file /oracle/app/oracle/admin/racdb/bdump/racdb1_m000_21519.trc: ORA-00600: internal error code, arguments: [kgeade_is_0], [], [], [], [], [], [], [] Sun Jul 13 16:57:59 CST 2014 Errors in file /oracle/app/oracle/admin/racdb/bdump/racdb1_mmon_21339.trc: ORA-00600: internal error code, arguments: [kgeade_is_0], [], [], [], [], [], [], [] Sun Jul 13 16:58:00 CST 2014 Errors in file /oracle/app/oracle/admin/racdb/bdump/racdb1_mmon_21339.trc: ORA-00600: internal error code, arguments: [kgeade_is_0], [], [], [], [], [], [], [] Sun Jul 13 16:58:00 CST 2014 Trace dumping is performing id=[cdmp_20140713165800] Sun Jul 13 16:58:01 CST 2014 Trace dumping is performing id=[cdmp_20140713165801] Sun Jul 13 16:58:07 CST 2014 Errors in file /oracle/app/oracle/admin/racdb/bdump/racdb1_m000_21519.trc: ORA-00600: internal error code, arguments: [kgeade_is_0], [], [], [], [], [], [], [] Sun Jul 13 16:58:07 CST 2014 Trace dumping is performing id=[cdmp_20140713165807] *** 2014-07-13 16:57:58.781 ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [kgeade_is_0], [], [], [], [], [], [], [] Current SQL statement for this session: select tablespace_id, rfno, allocated_space, file_size, file_maxsize, changescn_base, changescn_wrap, flag from GV$FILESPACE_USAGE where inst_id != :inst and (changescn_wrap >= :w or (changescn_wrap = :w and changescn_base >= :b)) *** 2014-07-13 16:57:59.274 ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [kgeade_is_0], [], [], [], [], [], [], [] Current SQL statement for this session: SELECT INSTANCE_NAME, HOST_NAME, NVL(GVI_STARTUP_TIME, SYSTIMESTAMP) - INTERVAL '1' SECOND AS SHUTDOWN_TIME FROM (SELECT RRI.INSTANCE_NAME AS INSTANCE_NAME, RRI.HOST_NAME AS HOST_NAME, FROM_TZ(RRI.STARTUP_TIME , '+00:00') AS RRI_STARTUP_TIME, DBMS_HA_ALERTS_PRVT.INSTANCE_STARTUP_TIMESTAMP_TZ(GVI.STARTUP_TIME) AS GVI_STARTUP_TIME FROM RECENT_RESOURCE_INCARNATIONS$ RRI LEFT OUTER JOIN GV$INSTANCE GVI ON GVI.INSTANCE_N AME = RRI.RESOURCE_NAME WHERE RRI.RESOURCE_TYPE = 'INSTANCE' AND :B2 = RRI.DB_UNIQUE_NAME AND :B1 = RRI.DB_DOMAIN) WHERE GVI_STARTUP_TIME IS NULL OR GVI_STARTUP_TIME > RRI_STARTUP_TIME GROUP BY INSTANCE_NAME, HOST_NAME, GVI_STARTUP_TIME ----- PL/SQL Call Stack ----- object line object handle number name 0x7de705a8 301 package body SYS.DBMS_HA_ALERTS_PRVT 0x7de64740 1 anonymous block
可以看到,都是在查询GV$视图的语句出现了这个错误。我们在来看一下它出错时候的堆栈信息。
ksedst()+31 call ksedst1() 000000000 ? 000000001 ? 7FFF778810B0 ? 7FFF77881110 ? 7FFF77881050 ? 000000000 ? ksedmp()+610 call ksedst() 000000000 ? 000000001 ? 7FFF778810B0 ? 7FFF77881110 ? 7FFF77881050 ? 000000000 ? ksfdmp()+63 call ksedmp() 000000003 ? 000000001 ? 7FFF778810B0 ? 7FFF77881110 ? 7FFF77881050 ? 000000000 ? kgerinv()+161 call ksfdmp() 006AE9A20 ? 000000003 ? 7FFF778810B0 ? 7FFF77881110 ? 7FFF77881050 ? 000000000 ? kgeasnmierr()+163 call kgerinv() 006AE9A20 ? 2B763E0B0040 ? 7FFF77881110 ? 7FFF77881050 ? 000000000 ? 000000000 ? kgeade()+501 call kgeasnmierr() 006AE9A20 ? 2B763E0B0040 ? 7FFF77881110 ? 7FFF77881050 ? 000000000 ? 000000000 ? kgerev()+58 call kgeade() 2B763E0B0040 ? 006AE9A20 ? 2B763E0B0040 ? 000000000 ? 000000000 ? 000000000 ? kserec0()+186 call kgerev() 006AE9A20 ? 2B763E0B0040 ? 000000000 ? 000000000 ? 7FFF778821A0 ? 000000000 ? kxfpg1sg()+2014 call kserec0() 006AE9A20 ? 000000001 ? 000000029 ? 7FFF77881F40 ? 000000000 ? 388B519840 ? kxfpgsg()+2098 call kxfpg1sg() 08364D278 ? 000000001 ? 7FFF778822B0 ? 7FFF77881F40 ? 08364CC48 ? 2B7600000001 ? kxfrAllocSlaves()+3 call kxfpgsg() 000000005 ? 000000001 ? 51 000000001 ? 000000001 ? 3E0A254800000001 ? 2B763E0A2548 ? kxfrialo()+2111 call kxfrAllocSlaves() 00005322E ? 2B763E5726C0 ? 000000001 ? 7FFF00000001 ? 7FFF00000001 ? 000000001 ? kxfralo()+313 call kxfrialo() 00005322E ? 2B763E5726C0 ? 000000001 ? 07DAA7230 ? 2B763E572768 ? 7FFF77880000 ? qerpx_rowsrc_start( call kxfralo() 00005322E ? 2B763E5726C0 ? )+3892 000000001 ? 07DAA7230 ? 2B763E572768 ? 000000000 ? qerpxStart()+234 call qerpx_rowsrc_start( 7FFF77883280 ? 000000001 ? ) 000000001 ? 07DAA8910 ? 100000001 ? 000000000 ? selexe()+667 call qerpxStart() 000000001 ? 000003F60 ? 000000001 ? 07DAA8910 ? 100000001 ? 000000000 ? opiexe()+4687 call selexe() 07DACBB38 ? 7FFF77883F60 ? 7FFF77883F60 ? 07DACBB38 ? 100000001 ? 000000000 ? kpoal8()+2295 call opiexe() 000000049 ? 000000003 ? 7FFF77884428 ? 000000003 ? 100000001 ? 000000000 ? opiodr()+1184 call kpoal8() 00000005E ? 000000000 ? 7FFF77887EF8 ? 000000003 ? 83B7000000000001 ? 000000000 ? kpoodrc()+38 call opiodr() 00000005E ? 000000000 ? 7FFF77887EF8 ? 000000000 ? 005BEBDF0 ? 000000000 ? rpiswu2()+409 call kpoodrc() 7FFF77885440 ? 000000000 ? 7FFF77887EF8 ? 000000000 ? 005BEBDF0 ? 000000000 ? kpoodr()+554 call rpiswu2() 083B7ABF0 ? 000000000 ? 2B763E0F0CBC ? 000000002 ? 2B763E0F0CFC ? 000000000 ? upirtrc()+2101 call kpoodr() 2B763E342E20 ? 00000005E ? 7FFF77887EF8 ? 000000000 ? 2B763E0F0CFC ? 000000000 ? kpurcsc()+125 call upirtrc() 2B763E342E20 ? 00000005E ? 7FFF77887EF8 ? 7FFF77888060 ? 7FFF77888FD0 ? 003C558C6 ? kpuexecv8()+1705 call kpurcsc() 7FFF778897D0 ? 00000005E ? 7FFF77887EF8 ? 7FFF77888060 ? 7FFF77888FD0 ? 003C558C6 ? kpuexec()+2643 call kpuexecv8() 2B763E0FE958 ? 2B763E33F4C0 ? 2B763E33F540 ? 000000000 ? 000000000 ? 7FFF7788A8C4 ? OCIStmtExecute()+41 call kpuexec() 000000001 ? 2B763E33F4C0 ? 2B763E342DB0 ? 000000001 ? 000000000 ? 000000000 ? ktte_aggregate_finf call OCIStmtExecute() 000000001 ? 2B763E33F4C0 ? o()+3133 2B763E342DB0 ? 000000001 ? 000000000 ? 000000000 ? ktte_monitor_tsth() call ktte_aggregate_finf 7FFF7788B780 ? 000000001 ? +788 o() 000000009 ? 000000001 ? 000000000 ? 000000000 ? ktte_threshold_slav call ktte_monitor_tsth() 7FFF7788B780 ? 000000001 ? e()+183 000000009 ? 000000001 ? 000000000 ? 000000000 ? kebm_slave_main()+2 call ktte_threshold_slav 07F63B200 ? 000000001 ? 21 e() 000000000 ? 000000001 ? 000000000 ? 000000000 ? ksvrdp()+1159 call kebm_slave_main() 07F63B200 ? 07F63B200 ? 000000000 ? 000000001 ? 000000000 ? 000000000 ? opirip()+748 call ksvrdp() 07F63B200 ? 07F63B200 ? 000000000 ? 000000001 ? 000000000 ? 000000000 ? opidrv()+583 call opirip() 000000032 ? 000000004 ? 7FFF7788D298 ? 000000001 ? 000000000 ? 000000000 ? sou2o()+114 call opidrv() 000000032 ? 000000004 ? 7FFF7788D298 ? 000000001 ? 000000000 ? 000000000 ? opimai_real()+317 call sou2o() 7FFF7788D270 ? 000000032 ? 000000004 ? 7FFF7788D298 ? 000000000 ? 000000000 ? main()+116 call opimai_real() 000000003 ? 7FFF7788D300 ? 000000004 ? 7FFF7788D298 ? 000000000 ? 000000000 ? __libc_start_main() call main() 000000003 ? 7FFF7788D300 ? +244 000000004 ? 7FFF7788D298 ? 000000000 ? 000000000 ? _start()+41 call __libc_start_main() 00072D108 ? 000000001 ? 7FFF7788D458 ? 000000000 ? 000000000 ? 000000003 ?
根据文档ORA-600 [kgeade_is_0] In A Real Application Cluster (RAC) Environment (文档 ID 797182.1)里面的描述,凡是trace文件堆栈信息类似于“kxfpg1sg kxfpgsg kxfrAllocSlaves kxfrialo kxfralo qerpx_rowsrc_start”这样的,命中bug8592375。解决这个问题的办法也很简单,就是把两个库实例都停下来,修改成相同的参数,然后启动。像我们这样一个实例还在运行着,使用的是以前的参数,而新实例启动之后用的新的参数,就会导致这个问题的出现。还一个办法是安装补丁程序,但是感觉这个补丁是针对standby数据库的。8592375: PHSB: READABLE STANDBY REPORTED ORA-00700:[KGEADE_IS_0]。
参考文档:ORA-600 [kgeade_is_0] In A Real Application Cluster (RAC) Environment (文档 ID 797182.1)
原文地址:修改并行参数引发ORA-600 [kgeade_is_0]的问题处理, 感谢原作者分享。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1. まずDingTalkを開きます。 2. グループ チャットを開き、右上隅にある 3 つの点をクリックします。 3. このグループで私のニックネームを見つけます。 4. クリックして入力し、変更して保存します。

Douyin Blue V 認証は、Douyin プラットフォーム上の企業またはブランドの公式認証であり、ブランド イメージと信頼性の向上に役立ちます。企業の発展戦略の調整やブランドイメージの更新に伴い、企業はDouyin Blue V認証の名称を変更したい場合があります。では、Douyin Blue V は名前を変更できるのでしょうか?答えは「はい」です。この記事では、エンタープライズ Douyin Blue V アカウントの名前を変更する手順を詳しく紹介します。 1.Douyin Blue V の名前は変更できますか? Douyin Blue V アカウントの名前は変更できます。 Douyin の公式規定によると、企業の Blue V 認定アカウントは、一定の条件を満たした後にアカウント名の変更を申請できます。一般的に、企業は社名変更の合法性と必要性を証明するために、営業許可証、組織コード証明書などの関連資料を提供する必要があります。 2. 企業のDouyin Blue Vアカウントの名前を変更する手順は何ですか?

Win10 のスリープ時間変更のヒントが明らかに 現在広く使用されているオペレーティング システムの 1 つである Windows 10 には、ユーザーがコンピューターを使用していないときに電力を節約し、画面を保護するのに役立つスリープ機能があります。ただし、デフォルトのスリープ時間がユーザーのニーズを満たさない場合があるため、Win10 のスリープ時間を変更する方法を知ることが特に重要です。この記事では、Win10 のスリープ時間を変更するためのヒントを紹介します。これにより、システムのスリープ設定を簡単にカスタマイズできるようになります。 1.「設定」からWin10のスリープ時間を変更します。まず、最も簡単な修正です。

C++ パラメーターの型の安全性チェックでは、コンパイル時チェック、実行時チェック、静的アサーションを通じて関数が予期される型の値のみを受け入れるようにし、予期しない動作やプログラムのクラッシュを防ぎます。 コンパイル時の型チェック: コンパイラは型の互換性をチェックします。実行時の型チェック:dynamic_cast を使用して型の互換性をチェックし、一致しない場合は例外をスローします。静的アサーション: コンパイル時に型条件をアサートします。

Xianyuプラットフォームで製品を公開する際、ユーザーは実際の状況に応じて製品の地理的位置情報をカスタマイズできるため、潜在的な購入者は製品の特定の位置をより正確に把握できます。製品が無事に店頭に並べられれば、販売者の所在地が変わっても心配する必要はありません。 Xianyu プラットフォームは、柔軟で便利な変更機能を提供しています。公開された製品のアドレスを変更したい場合、どのように変更すればよいでしょうか? このチュートリアル ガイドでは、詳細なステップバイステップ ガイドが提供されます。助けてください、皆さん! Xianyu でリリース製品アドレスを変更するにはどうすればよいですか? 1. Xianyu を開き、公開したものをクリックして製品を選択し、[編集] をクリックします。 2. 位置決めアイコンをクリックし、設定したいアドレスを選択します。

タイトル: Go 言語プログラミング ガイド: Hosts ファイルの変更の実装 日常のソフトウェア開発プロセスでは、オペレーティング システムの hosts ファイルを変更する必要がある状況によく遭遇します。 Hosts ファイルは、IP アドレスとホスト名のマッピングに使用される拡張子のないテキスト ファイルで、通常はローカルでドメイン名解決を設定するために使用されます。この記事では、Go言語を使用してOSのhostsファイルを変更する機能を実装する方法と、具体的なコード例を紹介します。まず、hosts ファイルを変更できる G を作成する必要があります。

1. まず、画面上の「設定」をクリックします。 2. [表示と明るさ]をクリックします。 3. [自動ロック]をクリックします。 4. 次に、自動ロックする時間を設定します。 5. 設定完了後、戻るボタンをクリックして設定を完了します。

C++ 関数の参照パラメーター (基本的には変数のエイリアス、参照を変更すると元の変数が変更されます) とポインター パラメーター (元の変数のメモリ アドレスを保存し、ポインターを逆参照して変数を変更します) は、変数を渡したり変更したりするときに使用方法が異なります。参照パラメーターは、コンストラクターまたは代入演算子に渡されるときのコピーのオーバーヘッドを避けるために、元の変数 (特に大きな構造体) を変更するためによく使用されます。ポインター パラメーターは、メモリの場所を柔軟に指定したり、動的データ構造を実装したり、オプションのパラメーターを表すために null ポインターを渡したりするために使用されます。
