4 Replies Latest reply: Nov 20, 2012 10:05 PM by ydysk RSS

    CPU使用率や実行時間の制御

    879192
      よろしくお願いします。

      ■環境
      OS:Windows2008R2 SP1
      DB:Oracle11g

      開発現場にて、DBAを担当してます。

      最近、とある開発者のバグで、
      PL/SQLがループすることでCPUを100%まで使用し、

      DBサーバがハングアップしてしまう現象が続いています。
      (SQLPlusでsysユーザすら、ログインできなくなります)

      都度、開発者を特定し、コマンドプロンプトから
      CTL+Cでセッションを切らしています。
      すぐには回復しませんが・・。

      Oracle側の設定で、SQLの実行を30秒以内、またはCPU使用率を
      80%上限までに制限、などの制御は可能でしょうか?。

      ALTER SYSTEM文などで設定・解除が、望ましいですが・・

      宜しくお願いします。
        • 1. Re: CPU使用率や実行時間の制御
          Blueloco
          使ったことがないので詳細はわかりませんが、リソースマネージャを使えばできるのではないかと思います。

          [参考]
          http://docs.oracle.com/cd/E16338_01/server.112/b56301/dbrm003.htm#CHDEDAEA

          ただ、リソースマネージャの制限によってDBのパフォーマンスが悪化することもある、と聞いたこともあります。
          問題の根本原因を解決した方がいいんじゃないでしょうか。。
          • 2. Re: CPU使用率や実行時間の制御
            879192
            有難うございます。

            私もその後調査で、リソースマネージャに行き着いたのですが、
            仕様がちょっと複雑で、設定手順や検証が必要そうですね・・。

            こちらの開発者はスキルが低く、コーディングのガイドラインどおりに
            記述しなかったり、中々事前での防止が難しい状況です。

            一度発生してしまうと、以後誰もログインできなくなり、OS自体が重くなる為、
            OSからリブートするほかありません。

            過去の事例なども確認してみようと思います。
            • 3. Re: CPU使用率や実行時間の制御
              yamamoto
              Editionが記載されていませんが、リソースマネージャはEEの機能です。
              運用方法が不明ですが、プロファイルで制限がかけられるようです。(やったことありませんが)
              • 4. Re: CPU使用率や実行時間の制御
                ydysk
                方法としては、既に回答があるリソースマネージャの機能か、プロファイルのよる制限ですね。
                ざっくりですが、使い分けは制限させてでも処理を続けたい場合はリソースマネージャで、
                ある一定量に達した場合は処理を中断させるのが、プロファイルですね。