問題タブ [dbms-scheduler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - DBMS_SCHEDULER.STOP_JOB は PL-SQL プロシージャ内では使用できません。許可が与えられます
私の質問は、パッケージ内で DBMS_SCHEDULER を使用することです。ユーザーにSCHEDULER_ADMIN権限を付与しました。プロシージャの外部でスクリプトを使用してジョブを作成した後、プロシージャ内でこれらのコマンドを設定できるようになりました。
これまでのところ、すべてがうまくいきました。
私の質問: これらのコマンドが私のプロシージャのコード内で機能しないのはなぜですか?
スクリプトを介して独自のセッションでコマンドを入力し、パッケージコードに埋め込まれていないとすぐに、コマンドが機能します。問題は、これらのコマンドを PL-SQL パッケージ内に入力したいということです。パッケージ内でエラーが発生したことがわかっているため、これらのコマンドを入力したいと考えています。
手伝って頂けますか?どうもありがとうございました。
次のエラーが表示されます。
ORA-27486: Nicht ausreychende Berechtigungen ORA-06512: "SYS.DBMS_ISCHED" 内、Zeile 210 ORA-06512: "SYS.DBMS_SCHEDULER" 内、Zeile 557 ORA-06512: "SCHEMANAME.JOB_KILLEN_PCK" 内、Zeile 31 ORA-06512:ツァイレ 6
私が行った許可は、sys_user によって与えられました。
31行目に次のコードがあります
これは、プロシージャを開始してジョブを停止できるようにすることをオラクルが望んでいないというセキュリティ上の理由によるものですか。このようにして、名前を知っている各ジョブを停止できますか? これが正しい場合、手順のジョブ中に障害が発生した場合にジョブを停止できません
必要に応じて、テスト パッケージをお送りします
oracle - Oracle DBMS_Scheduler のベスト プラクティス
Oracle DBMS_Scheduler には何が適していますか?
- 毎回ジョブをスケジュール(無効)に保ちます。必要に応じて有効にして実行します。
- ジョブを作成し、実行してドロップします。
テーブル x があり、レコードがそのテーブルに送信されるたびに、そのレコードを処理するジョブが必要です。常にレコードの挿入がある場合とない場合があります..これを念頭に置いて..何が良いでしょうか..?
database - DBMS_SCHEDULER ジョブの repeat_interval に複数のスケジュールを指定する方法は?
複数のスケジュールがあり、それらすべてをジョブの repeat_interval に提供したいと考えています。しかし、私はこれを行う方法を見つけることができません.Oracleのドキュメントにはそれが可能であると書かれていますが、例が見つかりません. どんな助けでも大歓迎です。これは私が試したものですが、うまくいきません:
ORA-06512: 行 2 27418.00000 - 「繰り返し間隔またはカレンダーの構文エラー」
*原因: 繰り返し間隔またはカレンダー定義が有効な構文として認識されませんでした。
oracle - dbms_scheduler 繰り返し間隔の最大値
ドキュメント (11g、12c) には次のように書かれています。
これは、繰り返しが繰り返される頻度を表す正の整数を指定します。デフォルトは 1 です。これは、2 番目の場合は毎秒、毎日の場合は毎日などを意味します。最大値は 99 です。
ドキュメント (10g) には次のように書かれています。
... 同 ... 最大値は 999 です。
しかし、Oracle 10g および 12c では、SECONDLY 周波数の実際の最大値は 7999 です。どこが本当ですか?正誤表のドキュメントが見つかりません。
oracle - 以前のジョブ名を使用して、失敗したステップを Oracle でチェーンで実行する方法は?
私はチェーンを運営する仕事をしています。チェーンは 5 つのステップで構成されます。最初のステップが実行され、それが成功すると、他の 3 つのステップが (独立して、並行して) 実行されます。3 つのステップがすべて成功した場合にのみ、最後のステップが開始されます。すべて正常に動作します。
エラーのあるケースをテストしたいと思います。上記の 3 つの手順のいずれかで意図的にエラーを提供しました。その結果、最初のステップが成功したため、3 つのステップが実行されました。予想通り、成功したのは 2 つだけで、3 つ目は失敗しました。すべてのステップは、自動的に生成された job_name に対して機能していました (user_scheduler_job_run_details を照会して job_name を確認しました)。意図的なエラーを削除し、次を使用して失敗したステップのみを実行しました。
もちろん、以前に失敗したステップは成功しました (エラーが削除されたため)。しかし、このステップは別の自動的に生成された job_name で実行され、残念ながら最後のステップ (上記の 3 つのステップがすべて成功した後に実行される予定でした) は実行されませんでした。失敗したステップを特定の (前の) job_name で実行したいので、最後のステップを自動的に実行する必要があります。
以前の特定のジョブ名を使用して、Oracle で失敗したステップをチェーンで実行するにはどうすればよいですか?
sql - DBMS_shceduler ジョブは、作成時に select ステートメントを実行します
練習用に oracle sql でオークションハウスを設定しようとしています。各アイテムの DBMS ジョブを作成したいのは、sysdate がオークションの終了と同じになると、オークションが開始され、アイテムが販売されるためです。
新しいアイテムを売りに出すこのプロシージャ「sell」があります。そして最後にこれがあります:(identはアイテムのIDです)Ittは正しいアカウントにお金を置く関数を呼び出します。
問題は、'pay_the_seller' proc を実行しているように見えることです。start_date ではなく、ジョブが作成された時点。
たとえば、アイテムの開始入札額が 1 の場合、ジョブが起動すると、その間に入札額を変更したにもかかわらず、アカウントに 1 が追加されます。
編集: 「pay_the_seller()」プロシージャでは、ジョブの作成時に SELECT ステートメントが実行されますが、UPDATE は実行されません。
SELECT をすぐに実行しないようにするにはどうすればよいですか?