ヘッダーをスキップ
Oracle Enterprise Manager管理
11gリリース1(11.1.0.1)
B61022-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

6 ジョブ・システム

今日のIT環境はいくつものコンポーネントの組合せで構成されているため、それらのITコンポーネントのサポート時間を最短にし、コンポーネントのメンテナンスに関連する人的エラーを排除することが有益になります。Enterprise Manager Grid Controlのジョブ・システムでは、日常的に繰り返し行われる管理タスクを自動化し、環境内のコンポーネントを同期化することで、より効率的に管理できます。

この章では、次の項の手順に従うことでジョブ・システムの使用が容易になります。

ジョブ・システムの目的および概要

Enterprise Managerジョブ・システムは、次の目的に役立ちます。

ジョブとは、頻繁に実行するタスクの自動化を定義するための作業の単位です。スケジュールの柔軟性は、ジョブの長所の1つです。ジョブは、すぐに開始したり、後の日時で開始したりするようにスケジュールできます。ジョブは、1回の実行または特定の間隔(月に3回など)での実行も可能です。

「ジョブ・アクティビティ」ページ(図6-1)は、ジョブ・システムの中枢です。このページからは、次の操作が可能です。

図6-1 「ジョブ・アクティビティ」ページ

「ジョブ・アクティビティ」ページのスクリーン・キャプチャ。1つのジョブが表示されます。

図6–1に示すように「ジョブ」タブから「ジョブ・アクティビティ」ページにアクセスする他に、「関連リンク」セクションの「ジョブ」リンクをクリックすると、データベースまたはクラスタ・データベースのプロパティ・ページ(「ホーム」、「パフォーマンス」、「可用性」など)からこのページにアクセスすることもできます。このような別の場所からこのページにアクセスする場合、「ジョブ・アクティビティ」ページには、ジョブの一覧ではなく、特定のターゲットに関連するジョブのサブセットが表示されます。

個別ジョブ実行とジョブ実行について

個別ジョブ実行は通常、特定のデータベースのパッチ・ジョブなど、単一のターゲットに関連付けられます。複数のターゲットに対して実行されるジョブでは、個別ジョブ実行が各ターゲットに対して1回ずつ実行されます。

個別ジョブ実行は、必ずしもターゲットへ1対1で割り当てられているとはかぎりません。個別ジョブ実行によっては、ホストの比較など、複数のターゲットに対して実行される場合があります。わずかですが、ターゲットがないジョブもあります。

複数のターゲットへジョブを発行する場合、ターゲットごとにジョブの個別実行ステータスを確認するのは大変な作業です。たとえば、複数のデータベースにパッチ適用ジョブを実行するとします。すべてのパッチは成功したか、成功しなかった場合は、どのパッチが失敗したのかを確認する必要があります。このパッチ適用ジョブが毎週実行される場合、成功したパッチと失敗したパッチを、毎週確認する必要があります。

ジョブ・システムでは、ジョブ実行を表示して、その結果を簡単に知ることができます。ジョブ実行は、スケジュールした特定の日に実行されたすべての個別ジョブ実行の集合です。たとえば、3月5日にスケジュールされたジョブがある場合、ジョブ実行は3月5日になります。ジョブ実行を示す「ジョブ」表には、「成功」、「失敗」、「エラー」などの個別ジョブ実行のステータスのロールアップが表示されます。

個別ジョブ実行とジョブ実行の操作

ジョブ・システムでは、作成、編集、類似作成、削除などの標準的なジョブ操作のサポートに加えて、次の操作を実行できます。

  • ジョブの一時停止:

    個別ジョブ実行またはジョブ全体を一時停止できます。たとえば、リソースが足りない場合、ジョブを一時停止にするか、一時停止できなければ延期する必要があります。

    ジョブの繰返しがスケジュールされていても、スケジュールされた繰返し時間を過ぎて一時停止する場合、ジョブの実行は「スキップ」とマークされます。

  • ジョブの再開:

    ジョブを一時停止すると、スケジュールされた個別ジョブ実行は、ジョブを再開するまで実行されません。

  • 失敗した個別ジョブ実行の再試行:

    個別ジョブ実行またはジョブ全体を分析する場合、原因が特定された後に失敗した個別ジョブ実行を再試行する機能があると便利です。これにより、失敗した個別実行に対して新しいジョブを作成する必要がなくなります。ジョブ・システムで再試行操作を実行する場合、Enterprise Managerは失敗した個別実行から個別実行の再試行、およびその逆のリンクを提供します。これは、失敗した原因をさかのぼって調査するのに便利です。「ジョブ実行」ページには最新の再試行のみが表示されます。

ジョブ・システムでは、ジョブ実行に関して次の操作を行うことができます。

  • 古いジョブ実行の削除

  • ジョブ実行の停止

  • ジョブ実行の再試行


関連項目:

個別ジョブ実行とジョブ実行の詳細は、Enterprise Manager Grid Controlのオンライン・ヘルプを参照してください。

事前の考慮事項

「ジョブの作成」に示す手順情報に進む前に、次の項で説明するトピックに目を通しておくと便利です。

事前定義タスクの使用

Enterprise Managerは、データベース・ターゲットとデプロイ用に事前定義済のジョブ・タスクを提供しています。ジョブ・タスクは、アプリケーションへのパッチ適用やデータベースのバックアップなど、事前定義された、変更不可のロジックに使用されます。

事前定義済のデータベース・ジョブには、バックアップ、エクスポート、インポート、パッチ、クローンなどがあります。これらのジョブは、データベース・インスタンスのホームページからアクセスできる「可用性」、「データ移動」、「ソフトウェアとサポート」プロパティ・ページで利用できます。デプロイに関連付けられている事前定義済のジョブには、パッチ適用、Oracleホームのクローニングおよびデータベースのクローニングなどがあります。

スクリプトの作成

事前定義済のジョブ・タスクに加え、OSスクリプトやSQLスクリプトに含めるコードを記述し、固有のジョブ・タスクを定義できます。これらのスクリプトの使用には、次のメリットがあります。

  • これらのジョブの定義時に、ターゲット・プロパティを使用できます。

  • これらのジョブを定義する場合、ジョブ・ライブラリを使用できます。ジョブ・ライブラリでは、ジョブを共有し、問題の発生時に更新できます。ただし、ジョブ・ライブラリを有効にするには、変更されたライブラリ・ジョブを再発行する必要があります。

  • 複数のターゲットに対してジョブを発行できます。

  • 1つのグループに対してジョブを発行できます。ジョブは、自動的にグループ・メンバーシップの変更に対応します。

  • ホスト・コマンドのジョブでは、クラスタに対してジョブを発行できます。

  • SQLジョブでは、Real Application Clusterに対してジョブを発行できます。

ジョブ職責の共有

ジョブ職責の共有を許可するために、ジョブ・システムはジョブ権限を提供しています。これらのジョブ権限を使用し、他の管理者とジョブを共有できます。権限を使用し、次の操作を許可できます。

  • ジョブの結果を確認する必要がある管理者にアクセス権を付与します。

  • ジョブ定義の編集や、ジョブ実行の制御(一時停止、再開、停止)が必要な管理者に完全なアクセス権を付与します。

これらの権限を必要に応じて付与できます。

ジョブとグループ

ジョブは、個別のターゲットに対して発行するのみでなく、ターゲットのグループに対しても発行できます。グループに発行したすべてのジョブは、自動的にそのメンバー・ターゲットへと適用され、グループのメンバーが変更されてもそれに従い適用されます。

たとえば、人事管理ジョブが給与支払グループに発行されているとします。新しいホストがこのグループに追加されると、そのホストは自動的に人事管理ジョブに追加されます。たとえば、今日の午前10時にスケジュールされた毎日の繰返しジョブでは、その時間よりも前にターゲットを追加した場合、新しいターゲットはジョブ実行に含まれます。ただし、今日の午前10時よりも後にターゲットを追加した場合、ターゲットは今日の実行には含まれませんが、次の実行に含まれます。さらに、給与支払グループがデータベース、ホスト、アプリケーション・サーバーなど複数のターゲットから構成されている場合、ジョブはグループ内の適用されるターゲットに対してのみ実行されます。

グループのホームページにアクセスし、そのグループのジョブ・アクティビティを分析できます。

ターゲットのグループに対するジョブの発行方法については、6E5ページの「一般ジョブ情報の指定」を参照してください。

ジョブの作成

「ジョブ・アクティビティ」ページからジョブを作成する場合、最初のタスクはジョブ・タイプの選択になります。これについては、次の項「ジョブ・タイプの選択」で説明します。最も一般的なジョブ・タイプは、次の項で説明するOSコマンド・ジョブ、スクリプト・ジョブ、マルチタスク・ジョブになります。

ジョブ・タイプの選択

ジョブ・システムを使用する場合、「ジョブ・アクティビティ」ページの「ジョブの作成」ドロップダウンで、次のジョブ・タイプの中からいずれかを選択してジョブを作成できます。

  • エージェントのブロック: エージェントをブロックし、ジョブ機能として発行します。ブロックされたエージェントの詳細は、次の説明を参照してください。

  • ホームのクローニング: Oracleホームの既知の状態をコピーします。たとえば、Oracleホームが既知の状態になった後(特定のインストール・オプションを選択し、必要なパッチを適用してテストする)、このOracleホームを1つ以上のホストにクローニングできます。

  • マルチタスク: マルチタスク・ジョブまたは修正処理の主な特徴を指定します。マルチタスク・ジョブにより、タスクを定義することで複合ジョブを作成できます。各タスクは個別ジョブとして機能します。タスクの編集および定義は通常のジョブとほぼ同じ方法で行います。

    詳細は、第6.3.4項「マルチタスク・ジョブの作成」を参照してください。

  • OSコマンド: オペレーティング・システムのコマンドまたはスクリプトを実行します。

  • SQLスクリプト: ユーザー定義のSQLまたはPL/SQLスクリプトを実行します。

ブロックされたエージェント

ブロックされたエージェントとは、ブロックされたエージェントからのすべてのハートビートまたはアップロード・リクエストをOMSが拒否している状態です。そのため、ブロックされたエージェントは、アラートまたはメトリック・データをOMSにアップロードできません。ただし、ブロックされたエージェントは、監視データの収集は続行します。

ブロックされたエージェントでは、OMSはブロックされたエージェントからのリクエストを無視するため、OMSへのワークロードが軽減されます。たとえば、適切にアップロードできないエージェントに対してこの機能を使用すると、アップロード問題が解決されるまでエージェントをブロックできます。

エージェントは、次の状況でブロック状態になります。

  • 正しい状態がエージェントによって送信されなくなったことが検出されます。これは、リカバリの失敗後や状態ファイルが破損した場合に発生する可能性があります。OMSは破損の一部を検出できます。破損を見つけた場合、問題が解決されるまでエージェントをブロックします。

  • スーパーユーザーは、システムにエラーや不正データが氾濫しないように不正なエージェントを防止する目的でエージェントをブロックします。

エージェントが長期間ブロックされている状態でその実行を続けると、すべての結果を保存するローカルのディスク領域が枯渇するため、最終的に監視を停止する必要があります。ただし、いずれにしてもエージェントの状態が間違っているため、これは問題ではありません。したがって、修正処理が行われないかぎり、エージェントをブロック状態のままにしてください。データはシステムを通過しません。

OSコマンド・ジョブの作成

オペレーティング・システムのコマンドまたはスクリプトを実行するには、このタイプのジョブを使用します。次に、OSコマンドを作成する場合のタスクやその従属手順について説明します。

タスク1   ジョブ作成の開始
  1. Enterprise Manager Grid Controlのホームページで「ジョブ」タブをクリックします。「ジョブ・アクティビティ」ページが表示されます。

  2. 「ジョブの作成」ドロップダウンで「OSコマンド」を選択して「実行」をクリックします。「OSコマンド・ジョブの作成」ページの「一般」プロパティ・ページが表示されます。

タスク2   一般ジョブ情報の指定

「一般」プロパティ・ページで次の手順を実行します。

  1. ジョブに必要な名前を指定し、ドロップダウンでターゲット・タイプを選択します。

  2. 「追加」をクリックして、「検索と選択: ターゲット」ポップアップ・ウィンドウで1つ以上のターゲットを選択します。「ターゲット」表にターゲットが表示されます。ターゲットのグループに対してジョブを発行するには、「ターゲット・タイプ」に「グループ」を選択します。

    ジョブに特定のタイプのターゲットを選択すると、その同じタイプのターゲットのみをジョブに追加できます。ターゲット・タイプを変更すると、「ターゲット」表に移入したターゲットが消えます。

    コンポジット(グループやサービスなど)をこのジョブのターゲットとして指定する場合、ジョブは、選択したターゲット・タイプのコンポジットのターゲットに対してのみ実行されます。たとえば、ホストとグループのターゲット・タイプをターゲットとして指定すると、グループにホスト以外のターゲットがある場合でも、グループ内のホストに対してのみジョブが実行されます。

  3. 「パラメータ」プロパティ・ページ・リンクをクリックします。

タスク3   パラメータの指定

「パラメータ」プロパティ・ページで次の手順を実行します。

  1. 「コマンド・タイプ」ドロップダウンで「単一操作」または「スクリプト」のいずれかを選択します。

    指定したコマンドやスクリプトは、ジョブのターゲット・リストに指定された各ターゲットに対して実行されます。管理エージェントは、各ターゲットに対してコマンドやスクリプトを実行します。

    目的に応じて次のいずれかのオプションを選択できます。

    • 特定のコマンドを実行する単一操作

    • OSスクリプトを実行し、インタプリタをオプションで提供するスクリプト。%perlbin%/perlまたは/bin/shなどのスクリプトを処理します。シェル・スクリプトのサイズは2GBに制限されます。

      最大ステップ出力サイズを制御するには、MGMT_PARAMETERSのmgmt_job_output_size_limitパラメータを必要な制限に設定します。10KB未満の値や2GBよりも大きな値は無視されます。デフォルトの出力サイズは10MBです。

    実行するコマンドを指定する場合、単一のコマンドラインでは不十分な場合があります。すべてのホストにスクリプトをインストールして更新できるとはかぎりません。この場合、「スクリプト」オプションを使用して、スクリプト・テキストをジョブの一部として指定できます。

  2. 目的に応じて、第6.3.2.1項「単一操作の指定」および第6.3.2.2項「スクリプトの指定」の手順に従ってください。

  3. 「資格証明」プロパティ・ページ・リンクをクリックします。

タスク4   資格証明の指定(オプション)

「資格証明」プロパティ・ページでは、ターゲット・ホストに対してOSコマンド・ジョブを実行する際にOracle Management Serviceで使用する資格証明を指定できます。ジョブはホストに対してジョブ発行者の優先資格証明を使用できます。あるいは、優先資格証明よりも優先される他の資格証明を指定できます。

優先資格証明がすでに設定されている場合、このページに入力する必要はありません。また、ジョブを共有しない場合もこのページに入力する必要はありません。

  • 優先資格証明を使用するには、次の手順を実行します。

    1. 「優先資格証明の使用」ラジオ・ボタンを選択します。

      OSコマンド・ジョブのターゲットがデータベースまたはデータベース・グループの場合、そのデータベース・ターゲットのホスト資格証明が使用されます。これらは、データベースの「優先資格証明」ページで指定し、データベースが存在するホストのホスト資格証明とは異なります。

      優先資格証明を設定するには、Enterprise Managerコンソールの上部にある「プリファレンス」リンクをクリックしてから「優先資格証明」リンクをクリックします。「優先資格証明」ページが表示されます。このページでは、資格証明を指定するターゲット・タイプの「資格証明の設定」アイコンをクリックできます。

    2. 「ホスト資格証明」ドロップダウンで「通常ホスト資格証明」または「特権ホスト資格証明」のいずれかを選択します。

      ジョブのホスト・ターゲットを選択すると、ジョブの通常資格証明または特権資格証明を使用するように選択できます。これらは、「優先資格証明」ページで個別に指定します。

  • 優先資格証明を上書きするには、次の手順を実行します。

    1. 「優先資格証明のオーバーライド」ラジオ・ボタンを選択します。

      資格証明の上書きはすべてのターゲットに適用されることに注意してください。

    2. オプションでSudoやPowerBrokerの詳細を指定します。これらはすべてのターゲットに対して適用可能にする必要があります。SudoやPowerBrokerの設定は、このジョブを実行するすべてのホストに適用されていることが前提です。


      注意:

      10.2.0.4より以前のエージェントで管理されるターゲットやWindowsターゲットでは、SudoまたはPowerBrokerの資格証明は使用できません。これらの機能が現在有効になっていない場合、その設定についてはスーパー管理者に確認してください。

タスク5   ジョブのスケジュール(オプション)

ジョブの発行直後にジョブを実行するデフォルト操作に進む場合、このページに入力する必要はありません。

  1. 次のスケジュールのタイプを選択します。

    • 1回(即時)

      ジョブの発行前にスケジュールを設定しない場合、Enterprise Managerは、無期限の猶予期間でジョブをすぐに実行します。ジョブをすぐに実行する場合でも、様々な理由でジョブが開始できないとき(停電など)に備えて決まった猶予期間を指定できます。

      猶予期間とは、スケジュールされたジョブを開始する際に最大許容遅延を定義する期間です。ジョブ・システムでは、スケジュールされた時間に猶予期間を加えた期間内に実行を開始できない場合、ジョブ・ステータスを「スキップ」に設定します。

    • 1回(後で)

      将来の指定した時間にジョブを実行するようにカスタム・スケジュールを設定できます。スケジュールにタイムゾーンを設定する場合、このタイムゾーンが指定した開始時間に達すると、ジョブはすべてのターゲットで同時に実行されます。各ターゲットのタイムゾーンを選択する場合、ジョブは管理対象ターゲットのタイムゾーンを使用してスケジュールされた時間で実行されます。選択したタイムゾーンは、ジョブに関する日時情報を「ジョブ・アクティビティ」ページ、「ジョブ実行」ページ、「ジョブ実行」ページなどに表示する場合に常に使用されます。

      たとえば、合衆国西部(US太平洋時間)と合衆国東部(東部標準時間)にターゲットがあり、タイムゾーンがUS太平洋時間、開始時間が午後5時でスケジュールを指定した場合、ジョブは合衆国西部のターゲットに対して午後5時に実行され、同時に合衆国東部のターゲットに対して午後8時に実行されます。エージェントのタイムゾーンで午後5時を指定した場合、ジョブは同時に実行されません。合衆国東部のターゲットは3時間早く実行されます。

    • 繰返し

      ジョブの繰返し間隔を定義するには、「頻度タイプ(時間単位)」パラメータと「繰返し間隔(繰返し間隔)」パラメータを指定します。「繰返し期限」のオプションは次のとおりです。

      • 無期限: ジョブは無期限で実行し続けることができます。それ以外は、「指定した日付」を選択します。

      • 指定した日付: ジョブの実行を停止する日付と、指定した停止日の時間を設定します。

      終了の日時はどちらも最後の実行を決定します。たとえば、毎日午後6時に実行するジョブの場合は次のようになります。

      開始時間は2010年6月1日午後6時、終了時間は2010年6月30日午前4時です。

      ... 最後の実行は6月30日ではなく6月29日です。6月30日の終了時間は、毎日のジョブ実行時間よりも前になるためです。

  2. 猶予期間を指定します。

    猶予期間は、ジョブが遅れた場合にジョブの最新の開始時間を制御します。ジョブは様々な理由で開始できないことがあります。ただし、ほとんどの場合、エージェントの停止や停電が理由になります。デフォルトでは、ジョブは無期限の猶予期間でスケジュールされます。

    ジョブが時間どおりに開始する場合、猶予期間は無視されます。たとえば、ジョブが午後1時にスケジュールされ、猶予期間が1時間の場合、ジョブは午後2時までに開始しなければ実行されません。

  3. 「アクセス」プロパティ・ページ・リンクをクリックします。

タスク6   ジョブにアクセス可能なユーザーの指定(オプション)

ジョブを共有しない場合、このページに入力する必要はありません。表には、ジョブに対して管理者とロールが持つアクセス権が表示されます。ジョブの「アクセス」ページで変更を加えることができるのはジョブ所有者(またはスーパー管理者)のみです。

  1. オプション: 管理者やロールのアクセス・レベルを変更します。または、管理者やロールを削除します。変更機能はユーザーの機能によって異なります。

    ジョブ所有者の場合、次の操作を実行できます。

    • 管理者やロールのアクセスを変更するには、表の「アクセス・レベル」列で「完全」または「表示」アクセス権を選択します。

    • 管理者やロールのジョブに対するすべてのアクセス権を削除するには、管理者またはロールの「削除」列のアイコンをクリックします。スーパー管理者権限を持つすべての管理者には、ジョブに対する表示アクセス権があります。ロールにアクセス権を提供する場合、ロールには完全なアクセス権ではなく、表示アクセス権のみを提供できます。

    スーパー管理者の場合、次の操作を実行できます。

    • Enterprise Managerの他の管理者またはロールに表示アクセス権を付与します。

    • すべての管理者のアクセス権限を無効にします。

    アクセス・レベルの詳細は、第6.3.2.3項「アクセス・レベルのルール」を参照してください。

  2. オプション: 「追加」をクリックして管理者やロールを追加します。「ジョブの作成」→「管理者およびロールの追加」ページが表示されます。

    1. 「検索」セクションで「名前」「タイプ」を指定し、「実行」をクリックします。名前やタイプを指定せずに「実行」をクリックすると、管理リポジトリのすべての管理者とロールが表に表示されます。

      「名前」フィールドに指定した値では大文字/小文字は区別されません。文字列のどの場所にも*または%をワイルドカード文字として指定できます(ワイルドカード文字は文字列の最後に暗黙的に追加されます)。たとえば、「名前」フィールドに%naを指定した場合、ANA、ANA2、CHRISTINAなどの名前を検索結果として「結果」セクションに返すことができます。

    2. 「結果」セクションで1つ以上の管理者やロールを選択し、「選択」をクリックしてジョブへのアクセス権をその管理者やロールに付与します。Enterprise Managerは、ジョブのアクセスの作成ページまたはジョブのアクセスの編集ページに戻ります。これらのページでは、管理者やロールのアクセス権を変更できます。

  3. オプション: 通知ルールを定義します。

    通知システム(ルール作成)を使用して、特定のジョブと通知ルールを簡単に関連付けることができます。Grid Control通知システムでは、ジョブが次のいずれかの選択状態になるとジョブ所有者に電子メールを送信する通知ルールを定義できます。

    • スケジュール

    • 実行中

    • 一時停止

    • 成功

    • 問題

    • アクション必須


    注意:

    通知を指定する前に、電子メール・アカウントと通知プリファレンスを設定する必要があります。詳細は、第3章「通知」を参照してください。

タスク7   ジョブ作成の終了

この時点で、ジョブを発行して実行するか、ジョブをジョブ・ライブラリに保存できます。

  • ジョブの送信:

    「発行」をクリックして、実行するアクティブなジョブをジョブ・システムに送信し、メインの「ジョブ・アクティビティ」ページでジョブの実行ステータスを表示します。ライブラリ・ジョブを作成している場合、「発行」によってジョブはライブラリに保存され、メインの「ジョブ・ライブラリ」ページに戻ります。このページでは、他のライブラリ・ジョブを編集または作成できます。

    問題(パラメータや資格証明が見つからないなど)があるジョブを発行すると、エラーが表示され、アクティブなジョブを発行する前に問題を修正する必要があります。ライブラリ・ジョブの場合、不完全な仕様が許可されるため、エラーは発生しません。


    注意:

    アクセス権を変更せずに「発行」をクリックする場合、スーパー管理者のみがジョブを表示できます。

  • ライブラリへのジョブの保存:

    「ライブラリに保存」をクリックして、頻繁に使用されるジョブのリポジトリとしてのジョブ・ライブラリにジョブを保存します。他の管理者は、アクセス権が提供される場合、ライブラリ・ジョブの共有や再利用が可能です。アクティブ・ジョブと同様に、特定の管理者に表示権限または完全なアクセス権限を付与できます。さらに、ジョブ・ライブラリを使用して次の内容を保存できます。

    • ジョブの基本定義、さらにターゲットおよびその他のカスタム設定(ジョブ発行前に追加可能)。

    • 自身で再利用、または他のユーザーと共有するためのジョブ。ジョブへの表示アクセス、または完全なアクセス権限を付与し、ジョブを共有できます。

    • 後から再発行するクリティカル・ジョブ。または、問題が発生した場合に修正されたジョブ。

単一操作の指定

次の情報は、6E6ページのタスク3「パラメータの指定」の手順2に適用されます。

「コマンド」フィールドに完全なコマンドを入力します。次に例を示します。

/bin/df -k /private

単一操作の指定については次の点に注意してください。

  • シェル・コマンドをコマンドの一部として使用できます。プラットフォームのデフォルトのシェルが使用されます。Linuxの場合は/bin/sh、Windowsの場合はcmd/cになります。

    ls -la /tmp > /tmp/foobar.out
    
  • 2つの連続したシェル・コマンドを実行する必要がある場合、「コマンド」フィールドでシェルを起動し、「OSスクリプト」フィールドでコマンド自体を起動する必要があります。「コマンド」フィールドでは次のように指定します。

    sleep 3; ls
    

スクリプトの指定

次の情報は、6E6ページのタスク3「パラメータの指定」の手順2に適用されます。

「OSスクリプト」フィールドで指定した値は、コマンド・インタプリタのstdinとして使用されます。デフォルトでは、Linuxの場合は/bin/sh、Windowsの場合はcmd/cになります。これは別のインタプリタ(%perlbin%/perlなど)で上書きできます。シェル・スクリプトのサイズは2GBに制限されます。

最大出力サイズを制御するには、MGMT_PARAMETERSのmgmt_job_output_size_limitパラメータを必要な制限に設定します。10KB未満の値や2GBよりも大きな値は無視されます。デフォルトの出力サイズは10MBです。

スクリプトは次のいくつかの方法で実行できます。

  • OSスクリプト: 「OSスクリプト」フィールドでスクリプトにパス名を指定します。次に例を示します。

    「OSスクリプト」フィールド: /path/to/mycommand 「インタプリタ」フィールド:

  • OSコマンドのリスト: LinuxまたはUNIXシステムの場合、次の例の標準シェル・コマンドの「インタプリタ」フィールドに入力する必要はありません。OSのデフォルトのシェル/bin/shまたはcmd/cが使用されます。

    /usr/local/bin/myProg arg1 arg2
    mkdir /home/$USER/mydir
    cp /dir/to/cp/from/file.txt /home/$USER/mydir
    /usr/local/bin/myProg2 /home/$USER/mydir/file.txt
    

    シェルベースのジョブを発行する場合、使用する構文と選択するターゲットに注意してください。たとえば、このスクリプトはNTホストでは成功しません。

  • インタプリタが必要なスクリプト: OSシェルがデフォルトで起動しますが、代替のインタプリタを指定してシェルを省略できます。たとえば、「OSスクリプト」フィールドにPerlスクリプトを指定し、「インタプリタ」フィールドにPerl実行可能ファイルの場所を指定するとPerlスクリプトを実行できます。

    「OSスクリプト」フィールド: <Perlスクリプトのコマンドをここに入力> 「インタプリタ」フィールド: %perlbin%/perl

    次の例は、特定のシェル構文に依存するコマンドのリストの実行方法を示しています。

    setenv VAR1 value1
    setenv VAR2 value2
    /user/local/bin/myProg $VAR1 $VAR2
    

    cshをインタプリタとして指定する必要があります。システム構成に応じて、「インタプリタ」フィールドに次の文字列を指定する必要があります。

    /bin/csh 
    

    シェルベースのジョブを発行する場合、使用する構文と選択するターゲットに注意してください。たとえば、このスクリプトはNTホストでは成功しません。ただし、次の例に示すように、Windowsシェル・コマンドのリストにスクリプトを実行するオプションがあります。Windowsシステムの場合、デフォルトのシェルcmd/cが使用されます。

    C:\programs\MyApp arg1 arg2
    md C:\MyDir
    copy C:\dir1x\copy\from\file.txt \home\$USER\mydir
    

アクセス・レベルのルール

次のルールは、第6.3.2項「OSコマンド・ジョブの作成」に示すジョブのアクセスの作成プロパティ・ページとジョブのアクセスの編集プロパティ・ページに適用されます。

  • スーパー管理者には、常にジョブに対する表示アクセス権限があります。

  • ジョブを所有するEnterprise Manager管理者は、ジョブに対するアクセス権限を変更できます(スーパー管理者からの表示権限の取消しを除く)。

  • ジョブに対して表示または完全アクセス・レベルを持つスーパー管理者は、新しいユーザーに表示(完全ではない)権限を付与できます。スーパー管理者は、通常のユーザーの完全権限および表示権限を取り消し、スーパー管理者の完全権限を取り消すこともできます。

  • 完全アクセス・レベルを持つ通常のEnterprise Manager管理者は、ジョブに対するアクセス権限は変更できません。

  • ジョブ所有者がジョブに対して類似作成操作を実行する場合、新しいジョブのすべてのアクセス権限は元のジョブと同じになります。ジョブ所有者が他の管理者の表示または完全ジョブ・アクセス権限を他の管理者に付与する場合、これらの管理者はそのジョブに対して類似作成操作を実行し、すべての管理者には新しく作成されたジョブに対する表示アクセス権限がデフォルトで保持されます。

SQLスクリプト・ジョブの作成

SQLスクリプト・ジョブを作成する基本プロセスは、第6.3.2項「OSコマンド・ジョブの作成」で説明するプロセスと同じです。次の項では、スクリプト・ジョブに固有の補足情報について説明します。

ターゲットの指定

SQLスクリプト・ジョブはデータベースとクラスタ・データベースのターゲット・タイプに対して実行できます。ジョブを実行するターゲットを選択するには、次の手順を実行します。

  1. 「ターゲット」セクションで「追加」をクリックします。

  2. ポップアップでデータベース・ターゲットを選択します。

選択内容が「ターゲット」表に表示されます。


注意:

クラスタ・ホストまたはRACデータベースの場合、データベース・インスタンスの数にかかわらず、ジョブがターゲットに対して実行されるのは一回のみです。そのため、RACクラスタのすべてのノードでジョブを実行することはできません。

「パラメータ」ページのオプション

SQLスクリプト・ジョブでは、「パラメータ」プロパティ・ページの「SQLスクリプト」フィールドで次の内容を指定できます。

  • SQL*Plusでサポートされるディレクティブ

  • SQLスクリプト自体の内容

  • 完全修飾SQLスクリプト・ファイル。たとえば、次のようになります。

    @/private/oracle/scripts/myscript.sql
    

    スクリプト・ファイルがすべてのターゲットの適切な場所にインストールされていることを確認します。

  • SQL*Plusでサポートされる構文を使用したPL/SQLスクリプト。たとえば、次のいずれかになります。

    EXEC plsql_block;
    

    または

    DECLARE
       local_date DATE;
    BEGIN
       SELECT SYSDATE INTO local_date FROM dual;
    END;
    /
    

    「SQLスクリプト」フィールドでターゲット・プロパティを使用できます。「ターゲット・プロパティ」表にそのリストが表示されます。ターゲット・プロパティでは大文字と小文字が区別されます。SQL*Plusへのオプションのパラメータは、「パラメータ」フィールドで入力できます。

ホスト資格証明とデータベース資格証明の指定

「資格証明」プロパティ・ページで、ホスト資格証明とデータベース資格証明を指定します。管理エージェントは、ホスト資格証明を使用してSQL*Plus実行可能ファイルを起動し、データベース資格証明でターゲット・データベースに接続してSQLスクリプトを実行します。ジョブは、ホストとデータベースに対して優先資格証明を使用するか、優先資格証明よりも優先される他の資格証明を指定できます。

  • 優先資格証明の使用:

    SQLスクリプト・ジョブのターゲットに対して優先資格証明を使用する場合はこのオプションを選択します。ホストとデータベースの両方に使用される資格証明は、ドロップダウンで指定した資格証明になります。「通常データベース資格証明」を選択する場合、通常のデータベース優先資格証明が使用されます。「SYSDBAのデータベース資格証明」を選択する場合、SYSDBA優先資格証明が使用されます。どちらの場合も、データベース・ターゲットに関連付けられたホスト資格証明が使用されます。ジョブを実行するたびに、優先資格証明の現在の値が取得されます。

  • 優先資格証明のオーバーライド:

    すべてのターゲットに対して優先資格証明を上書きする場合はこのオプションを選択し、すべてのターゲットでジョブが使用する優先資格証明を入力します。資格証明を上書きする他に、ジョブの実行にSudoまたはPowerBrokerを使用するように指定することもできます。

    多くのIT組織では、パスワードを定期的に変更する必要があります。優先資格証明のパスワードはこのオプションを使用して変更できます。優先資格証明を使用するジョブと修正処理は、新しい変更を自動的に取得します。これは、Enterprise Managerが実行時に資格証明(ユーザー名とパスワードの両方)の現在の値を使用するためです。ただし、「資格証明のオーバーライド」オプションを指定したジョブや修正処理では、これらの変更を自動的に取得しません。このようなジョブや修正処理を編集し、必要に応じてパスワードを変更する必要があります。

    修正処理の場合、優先資格証明を指定すると、Enterprise Managerは修正処理を編集した最後のEnterprise Managerユーザーの優先資格証明を使用します。このため、1番目のユーザーが最初に指定した修正処理を編集しようとする場合、Enterprise Managerでは、その修正処理に使用される資格証明を別のユーザーが指定する必要があります。

SQLスクリプト・ジョブからのエラー・コードの戻り

SQLスクリプト・ジョブは、内部でSQL*Plusを使用してユーザーのSQLまたはPL/SQLスクリプトを実行します。SQL*Plusが0を返す場合、ジョブはステータス「成功」を返します。他の値が返される場合は、ジョブ・ステータス「失敗」を返します。デフォルトでは、SQLスクリプトが実行されてエラーが発生しても、ジョブ・ステータスが「成功」のままになる場合があります。これは、SQL*Plusが値0を返したためです。このようなジョブで「失敗」ステータスを返すには、SQL*Plus EXITを使用してゼロ以外の値を返すことができます。

次の例は、PL/SQLまたはSQLスクリプトから値を返す方法を示しています。これらは、SQL*Plusの戻り値として順番に使用されるため、適切なジョブ・ステータス(「成功」または「失敗」)を返す方法が示されます。EXITコードを返す場合の詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。

例1

WHENEVER SQLERROR EXIT SQL.SQLCODE
select column_does_not_exist from dual;

例2

-- SQL*Plus will NOT return an error for the next SELECT statement
SELECT COLUMN_DOES_NOT_EXIST FROM DUAL;
 
WHENEVER SQLERROR EXIT SQL.SQLCODE;
BEGIN
  -- SQL*Plus will return an error at this point
  SELECT COLUMN_DOES_NOT_EXIST FROM DUAL;
END;
/
WHENEVER SQLERROR CONTINUE;

例3

variable exit_code number;
 
BEGIN
 DECLARE
 local_empno number(5);
 BEGIN
  -- do some work which will raise exception: no_data_found
  SELECT 123 INTO local_empno FROM sys.dual WHERE 1=2;
 EXCEPTION
  WHEN no_data_found THEN
    :exit_code := 10;
  WHEN others THEN
    :exit_code := 2;
  END;
 END;
/
exit :exit_code;

例4

-- interactive mode only
 
col test new_value bye
SELECT 123 test
FROM dual;
exit &bye;

マルチタスク・ジョブの作成

マルチタスク・ジョブを作成する基本プロセスは、第6.3.2項「OSコマンド・ジョブの作成」で説明するプロセスと同じです。次の項では、マルチタスク・ジョブに固有の補足情報について説明します。

ジョブの機能

マルチタスクのジョブを使用し、1つ以上の別個のタスクから構成される複雑なジョブを作成できます。マルチタスクのジョブは同じタイプまたは異なるタイプのターゲットに対して実行できるため、同じタイプまたは異なるタイプの1つ以上のターゲットに対して非定型操作を実行できます。

ジョブ・システムのマルチタスク機能により、非常に複雑な操作を簡単に作成できます。すべてのタスクが単一のターゲットで実行されるマルチタスクのジョブを作成できます。各ジョブのジョブ・タイプが異なり、各タスクが別のターゲット・タイプで動作する複数のタスクで構成されるマルチタスクのジョブも作成できます。次に例を示します。

  • タスク1(ジョブ・タイプはOSコマンド)はホスト1に対して動作します。

  • タスク1が成功すると、タスク2(ジョブ・タイプはSQLスクリプト)をデータベース1およびデータベース2に対して実行します。

マルチタスクのジョブのターゲットの指定

マルチタスクのジョブは、タスクとして使用可能なジョブが定義されるターゲットに対して実行できます。すべてのジョブ・タイプをタスクとして使用できるわけではありません。

「一般」ページの「ターゲット」ドロップダウンでは、すべてのタスクに対する同じターゲット、または異なるタスクに対する別のターゲットに対してジョブを実行できます。マルチタスクのジョブの各タスクは完全なジョブとみなされるため、「すべてのタスクに対して同じターゲット」オプションを選択すると、ジョブが「一般」ページから実行されるすべてのターゲットを追加します。「異なるタスクに対して別のターゲット」オプションを選択した場合、各タスクの定義どおりにタスクが実行されるターゲット(および必要な資格証明)を指定します。

「ターゲット」ドロップダウンで選択した後、「ターゲット」セクションの「追加」をクリックしてジョブを実行するターゲットを選択します。

ジョブへのタスクの追加

「タスク」ページを使用して次の操作を実行できます。

  • 各種ジョブ・タイプのタスクの追加、削除、編集

  • タスク条件および依存ロジックの設定

  • タスクのエラー処理の追加

「条件」オプションと「依存先」オプションを設定するには、少なくとも2つのタスクを定義する必要があります。タスク条件は、タスクが実行される状態を定義します。条件オプションは次のとおりです。

  • 常時: ジョブの実行のたびにタスクが実行されます。

  • 成功時: タスク実行は、別のタスクの実行が成功するかどうかに依存します

  • 失敗時: タスク実行は、別のタスクの実行が失敗するかどうかに依存します

エラー処理タスクは、多くの場合、ジョブの一部の状態を取り消すことができる「クリーンアップ」手順になります。エラー処理タスクは、マルチタスクのジョブの最後のタスクが失敗すると実行されます。エラー処理タスクによって、ジョブの実行ステータスが影響を受けることはありません。エラー処理に使用されるタスクのジョブ・タイプを指定するには、「タスク・タイプの選択」ページを使用します。

ジョブ・アクティビティの分析

ジョブの発行後、すべてのターゲットに対するすべての個別ジョブ実行は自動的にロールアップされ、「Grid Control」コンソールのホームページで参照できるようになります。図6-2は、「Grid Control」コンソールのホームページの下部にある「すべてのターゲット・ジョブ」情報を示します。

図6-2 「Grid Control」コンソールのホームページのターゲット・ジョブのサマリー

ターゲット・ジョブのサマリー・ページ。
「図6-2 「Grid Control」コンソールのホームページのターゲット・ジョブのサマリー」の説明

この情報は、何百、何千というシステムに対しジョブを実行する場合には特に重要となります。失敗した個別ジョブ実行を特定することもできます。特定の個別実行に関連付けられた数字をクリックすると、ドリルダウンして失敗したジョブの詳細を参照できます。