PL/SQL プログラミング Ⅱ ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルア

Similar documents
Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

5 Q. 結果セットを 1 行飛ばしに FETCH することはできますか A. できません Oracle は必ず結果セットを上から 1 行ずつ FETCH します 6 Q. カーソルを一度にいくつまでオープンできますか A. 初期化パラメータ OPEN_CURSORS で指定したの値までカーソルをオ

第 3 章代表的なチューニングポイント 3 Q. ストアド プロシージャを使用した SQL 共有率の向上 A. ストアド プロシージャを使用した場合 同じストアド プロシージャを実行する複数のユーザーが 同じ共有 PL/SQL 領域を使用します また ストアド プロシージャは解析済みで格納されている

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

第 7 章 ユーザー データ用表領域の管理 この章では 表や索引を格納するユーザー データ用表領域の作成や 作成後のメンテナンスに ついて解説します 1. ユーザー データ用表領域の管理概要 2. ユーザー データ用表領域作成時の考慮事項 3. ユーザー データ用表領域の作成 4. ユーザー データ

PL/SQLからのオペレーティング・システム・コマンドの実行

A. 前ページからの続きです DBMS_SPACE.UNUSED_SPACE の各パラメータの意味 segment_owner = オブジェクトの所有者 segment_name = オブジェクト名 segment_type = オブジェクトタイプ total_blocks = セグメント合計ブロッ

Microsoft PowerPoint - 3-Forms-Others.ppt

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

Oracle Data Pumpのパラレル機能

WEBシステムのセキュリティ技術

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

第 3 章 メディア障害とバックアップ リカバリ この章では メディア障害の発生に備えたバックアップ方法と 障害時の基本的なリカバリ方法につい て説明します 1. メディア リカバリ概要 2. ファイルの多重化 3. アーカイブ モードの設定 4. バックアップ概要 5. 一貫性バックアップ ( オ

TALON Tips < カレンダー ( 月別 ) の画面を表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

PowerPoint Presentation

TALON Tips < 親子関係のある構成データを TALON で表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

新製品 Arcserve Backup r17.5 のご紹介 (SP1 対応版 ) Arcserve Japan Rev. 1.4

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

(2) [ バックアップツール ] が表示されます [1] [2] [3] [4] [5] [6] Windows Storage Server 2012 バックアップ手順 (V_01) < 画面の説明 > [1] バックアップ項目リスト登録されているバックアップセットの一覧です [2] 新規 ボタ

今さら聞けない!? Oracle入門 ~後編~

CLUSTERPRO MC RootDiskMonitor 1.0 for Windows インストールガイド 2013(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

フォーマット(初期化)について

mySQLの利用

ESMPRO/JMSS Ver6.0

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

セットアップカード

フォーマット/メンテナンスガイド

ESMPRO/JMSS Ver6.0

データベース暗号化ツール「D’Amo」性能検証

OS バージョンアップ実行後のご注意 OS バージョンアップ後 更新完了通知が自動的にNECカシオモバイルコミュニケーションズ株式会社の運用するサーバへ送信されます なお NECカシオモバイルコミュニケーションズ株式会社は送信された情報を OS バージョンアップ以外の目的には利用いたしません また

ご注意 1) 本書の内容 およびプログラムの一部 または全部を当社に無断で転載 複製することは禁止されております 2) 本書 およびプログラムに関して将来予告なしに変更することがあります 3) プログラムの機能向上のため 本書の内容と実際の画面 操作が異なってしまう可能性があります この場合には 実

HULFT8 for Windows/UNIX/Linux/zLinux の機能で発生する不具合について

CLUSTERPRO MC StorageSaver for BootDisk 1.2 (for Windows) インストールガイド 2014(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

ESMPRO/JMSS Ver6.0

ファイナライザを理解する ~ ファイナライザに起因するトラブルを避けるために ~ 2013 年 11 月 25 日 橋口雅史 Java アプリケーションでファイナライザ (finalize() メソッド ) を使用したことがあるプログラマーは多いと思います しかし ファイナライザの仕組みや注意点につ

OS バージョンアップ実行中のご注意 OS バージョンアップ中は 故障の原因になりますので 絶対に N-03E 本体の電源を切ったり 電池パックを外したりしないでください OS バージョンアップ中は 電話の発着信を含めすべての機能がご利用になれません OS バージョンアップ中は 他のアプリケーション

Oracle Data Pumpのパラレル機能

HDC-EDI Manager Ver レベルアップ詳細情報 < 製品一覧 > 製品名バージョン HDC-EDI Manager < 対応 JavaVM> Java 2 Software Development Kit, Standard Edition 1.4 Java 2

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

1 目次 1 目次 はじめに Tips セットアップ 事前準備 事前準備 セットアップ セットアップ ( その他 ) Tips 概要 概要 処理フ

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI

今さら聞けない!? Oracle入門 ~前編~

APEX Spreadsheet ATP HOL JA - Read-Only

FW ファイルアップロード ダウンロード機能利用ガイド Version 年 9 月 21 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

KDDI ペーパーレスFAXサービス

SecureLock Manager Liteの使いかた

文書ロックロックの仕組仕組み FAQ 1. 利用環境 R5 以前と Lotus Notes/Domino 6 以降の混在環境で ロックの機能は使えますか 文書ロック機能は Web ブラウザからのアクセスの場合も利用できますか 4 2. 基本 ソフトロック /

OS バージョンアップ実行後のご注意 OS バージョンアップ後 更新完了通知が自動的にNECカシオモバイルコミュニケーションズ株式会社の運用するサーバへ送信されます なお NECカシオモバイルコミュニケーションズ株式会社は送信された情報を OS バージョンアップ以外の目的には利用いたしません また

MotionBoard Ver. 5.6 パッチ適用手順書

CLUSTERPRO MC RootDiskMonitor 2.3 for Windows インストールガイド 2018(Jun) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール 本製品のアップデートインストール

CLUSTERPRO MC StorageSaver for BootDisk 2.1 (for Windows) インストールガイド 2016(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

Microsoft Word - J-jdev_dba_db_developers.doc

ランタイム版 Pro 版共通 症例登録システム 2018/12/11 Q & A 目次 1. 起動時のエラー... 2 Q11. " ファイル jsgoe_data3.fmp12 を開くことができません" と表示されます (Windows) 2 Q12. ショートカットから起動できません (Wind

CLUSTERPRO MC ProcessSaver 2.3 for Windows 導入ガイド 第 5 版 2018 年 6 月 日本電気株式会社

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

インストーラー 管理番号 内容 対象バージョン 230 HULFT がすでにインストールされているパスに対してサイレントインストールを実行すると インストールされていた HULFT の動作環境が不正な状態になる 7.3.0~7.3.1 ユーティリティ 管理番号 内容 対象バージョン 231 管理情報

(Microsoft Word - FireWall\202\314\227\341\212O\220\335\222\350\202\360\215s\202\244.doc)

PowerPoint Presentation

WES7シンクライアントIE11アップデート手順書

Microsoft認定資格問題集(70-483_demo)


Webhard_Users manual

KDDI Smart Mobile Safety Manager Mac OS キッティングマニュアル 最終更新日 2019 年 4 月 25 日 Document ver1.1 (Web サイト ver.9.6.0)

橡実践Oracle Objects for OLE

Microsoft PowerPoint pptx

自己管理型データベース: 自動SGAメモリー管理

◎phpapi.indd

Microsoft PowerPoint - db03-5.ppt

ARROWS Tab Wi-Fi (FAR70B) ソフトウェアバージョンアップ手順書

クエリの作成が楽になるUDF

フォーマット/メンテナンスガイド

WES7/WE8SシンクライアントVMwareHorizonClientアップデート手順書

ARROWS Tab Wi-Fi (FAR75A/FAR70A) ソフトウェアバージョンアップ手順書

JavaプログラミングⅠ

Microsoft Word - tutorial3-dbreverse.docx

目次 はじめに ツールのインストール ソフトウェアを起動する 画像ファイルの選択... 7 位置の調整... 8 背景色の設定 進捗バーの設定 パスワード設定 ユーザー情報の設定 設定

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

PowerPoint プレゼンテーション

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

Transcription:

PL/SQL プログラミング Ⅱ ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助として 是非お役立てください ご利用上の注意事項は最後のページにまとめられております ご確認のうえ ご利用ください 第 1 章コンポジット型 1 Q. 結合配列を使用する際 初期化の記述は必要ありませんか A. 結合配列は 値の代入時に自動的に初期化が行われますので 記述は必要ありません 2 Q. 結合配列内のデータを INSERT する際 結合配列のフィールドと表の行構造が対応していれば フィールド名を修飾せずに VALUES 句に指定できますか A. フィールド名の修飾なしに 指定が可能です また UPDATE の場合にも 同様にフィールド名を省略できます INSERT INTO 表名 VALUES 結合配列 ( 索引番号 ); UPDATE 表名 SET ROW = 結合配列 ( 索引番号 ) WHERE 条件 ; 3 Q. 結合配列の索引番号で指定できる 値の範囲を教えてください A. 数値 (PLS_INTEGER BINARY_INTEGER 型 ) の場合は -2147483648 から 2147483647 です 文字値 (VARCHAR2 型 ) の場合は 指定したサイズに基づきます VARCHAR2(5) と指定した場合は 5 バイトまで設定できます 索引番号は 連続している必要ありません 4 Q. 結合配列の要素を削除するコレクション メソッド DELETE の結果について A. コレクション メソッド DELETE を使用すると 結合配列の要素が削除され 使用していたメモリー領域は解放されます 要素は解放されるため NULL とは異なります そのため NOT NULL 制約を定義していたとしても コレクション メソッド DELETE を実行できます なお コレクション メソッド DELETE によって削除された要素を呼び出そうとすると NO_DATA_FOUND 例外が発生します 5 Q. 要素が挿入されていない結合配列にコレクション メソッド LAST を使用した結果について A. 結合配列に要素が全く定義されていない場合は コレクション メソッド LAST は NULL を戻します 1

第 2 章バルク配列処理 6 Q. FOARLL 文の INDICES OF 句を使用する際 複数のコレクションを指定することができますか A. 複数のコレクションは指定できません 代替案として 指定するコレクションに複数フィールドを設定する方法があります (OracleDatabase11g から複数フィールド設定できます ) 7 Q. FORALL 文で使用する結合配列の要素のデータ型に PL/SQL のデータ型を使用できますか A. できません 結合配列にバルク バインド入力された値は その後の SQL 文に渡されるため 要素のデータ型は SQL のデータ型で定義する必要があります 第 3 章システム固有の動的 SQL 8 Q. 実行時にプロシージャ名を動的に指定する方法 A. 実行時にプロシージャ名を動的に指定するには 動的 SQL を使用します 実行するプログラム名をパラメータとして動的に受け渡すことでプログラムを動的に実行することができます プログラム作成例は以下の通りです TEST1 TEST2 プロシージャを動的に呼び出すプログラムを作成 パラメータの値に 1 もしくは 2 を引き渡すかで毎回異なったプログラムを呼び出せます CREATE OR REPLACE PROCEDURE TEST(i number) IS w_jikko varchar2(100); BEGIN w_jikko := 'begin TEST' i '; end;'; EXECUTE IMMEDIATE w_jikko; END; 第 4 章カーソル変数 9 Q. カーソル変数に対して同時に複数の問合せを対応付けることはできますか A. カーソル変数に対して同時に複数問合せを対応付けることはできません カーソル変数に別の結果セットをオープンした時点で以前の結果セットの情報は失われます 第 5 章ユーザー定義パッケージ 10 Q. パッケージ内にどんなストアド サブプログラムが含まれているかを確認することはできますか A. USER_SOURCE ディクショナリに問い合わせることで確認することができます 詳細は以下の通りです SQL*Plus アプリケーションを使用している場合は DESCRIBE コマンドで確認できます 2

11 Q. 異なるブロック間でオーバーロードを行うことはできますか A. できません オーバーロードされたプログラムの有効範囲は同じでなくてはいけません つまり必ず同じブロック内に定義されている必要があります 12 Q. パッケージは共有メモリどこにロードされるのでしょうか A. 共有プールのライブラリキャッシュにロードされます 13 Q. パッケージに含めるオブジェクト数に制限はありますか A. ありません ソースコードサイズの制限を超えることはできません 第 6 章ユーティリティ パッケージ 14 Q. UTL_FILE パッケージで指定した OS ファイルが存在チェックやサイズチェックをする方法 A. UTL_FILE.FGETATTR プロシージャを使用することで ディレクトリに指定した OS ファイルに関する情報を取得することができます この機能を利用し OS ファイルの有無やサイズに応じて プログラムの動作を制御できます UTL_FILE.FGETATTR プロシージャの詳細については PL/SQL パッケージ プロシージャおよびタイプ リファレンス マニュアルをご参照ください 15 Q. UTL_FILE パッケージ使用時のみの例外を使用するときの注意事項 A. INVALID_PATH 例外や FILE_OPEN 例外などの UTL_FILE パッケージ使用時のみの例外は UTL_FILE パッケージ内に含まれている例外であるため 使用時には例外名の前に UTL_FILE. というパッケージ名を修飾する必要があります 16 Q. UTL_FILE_DIR パラメータに指定するディレクトリ数に制限はありますか A. 制限はありません 3

17 Q. UTL_FILE.FCLOSE_ALL プロシージャは どのような時に使用すべきでしょうか A. UTL_FILE.FCLOSE_ALL プロシージャはプログラムの処理が異常終了した時の対処として使用すると有効です UTL_FILE パッケージを使用してファイルをオープンすると ファイルをクローズするまで 他のユーザーはそのファイルにアクセスすることができません また この場合 処理中にプログラムが異常終了してもファイルはオープンされたままになります そこで 例外処理部で UTL_FILE.FCLOSE_ALL プロシージャの実行を指定することで プログラムの異常終了時の他ユーザーへの影響を 最小限にとどめることができます 18 Q. ディレクトリ オブジェクトのパスを確認する方法 A. ディレクトリ オブジェクトの設定は DBA_DIRECTORIES ビューにて確認できます SQL> SELECT owner,directory_name,directory_path FROM dba_directories 2 WHERE directory_name='utl_data'; OWNER DIRECTORY_ DIRECTORY_PATH ----- ---------- -------------------- SYS UTL_DATA D:\work\PL2 UTL_DATA ディレクトリ オブジェクトのパスを確認 19 Q. UTL_FILE.FCLOSE プロシージャを実行しなかったときの動作について A. UTL_FILE.FCLOSE プロシージャを実行しなかった場合 セッションが終了した時点で対象のファイルがクローズされるため セッションが終了するまでは他のユーザーが対象のファイルにアクセスできなくなります そのため 処理が終わった時点で UTL_FILE.FCLOSE プロシージャを実行し 明示的にファイルをクローズすることをお薦めします 20 Q. UTL_FILE.FFLUSH プロシージャはどのような時に使用するのですか A. UTL_FILE.FFLUSH プロシージャは 呼び出し時にデータを強制的にファイルに書き込みます そのため リアルタイムにデータを更新したい場合は便利です ファイルへの書き込みは UTL_FILE.PUT_LINE プロシージャでも行えますが こちらはある程度データをバッファに格納してから書き込み処理を行うため 多少の時間差が発生します 4

21 Q. DBMS_SCHEDULER パッケージでスケジュールを作成するときに 月曜日と金曜日など 1 つのスケジュールに複数の実行タイミングを指定できますか A. 実行間隔をカレンダ式で指定することで 1 つのスケジュールに複数の実行タイミングを指定できます 毎週月曜日と金曜日にジョブを実行する FREQ=WEEKLY;BYDAY=MON,FRI; ただし FREQ で指定する 月ごとや週ごとのような繰返しのタイプは 1 スケジュールにつき 1 つしか指定できません 22 Q. DBMS_SCHEDULER パッケージで作成したスケジュールを変更した場合 スケジュールに紐付けられたジョブの再作成は必要ですか A. 必要ありません 23 Q. ジョブの前回実行日と 実行したときの所要時間を確認する方法を教えて下さい A. ジョブの前回実行日と実行したときの所用時間を確認するには USER_SCHEDULER_JOBS ビュー ( または DBA_SCHEDULER_JOBS ビュー ) で確認できます DBMS_JOB パッケージで作成したジョブの情報は USER_JOBS ビュー ( または DBA_JOBS ビュー ) で確認できます USER_SCHEDULURE_JOBS ビュージョブの前回実行日 :last_start_date 列ジョブの所要時間 :last_run_duration 列 USER_JOBS ビュージョブの前回実行日 :last_date 列ジョブの所要時間 :total_time 列 24 Q. 同じ日に実行されるジョブが複数あったとき 優先順位は設定できますか A. DBMS_SCHEDULER パッケージでジョブのクラス ( ジョブをグループ化したものです ) を作成すれば クラス内のジョブに優先順位を設定できます または 実行する時間を細かく設定して 実行順番を制御する方法もあります 25 Q. 実行中のジョブを強制終了させるにはどうしたら良いでしょうか A. DBMS_SCHEDULER パッケージで登録したジョブを実行中に強制終了させるには DBMS_SCHEDULER.DBMS_STOP プロシージャを使用します 繰り返しの実行がスケジュールされている場合は 次回のタイミングでジョブが起動します また DBMS_JOB パッケージでは強制終了のプログラムがないため 管理者でジョブ実行ユーザーのセッションを強制終了します セッションの強制終了については データベース マネジメント コースでご紹介しています 5

26 Q. 現在中断状態であるすべてのジョブ 及びそのジョブが失敗した回数を表示する方法 A. 現在中断状態にあるジョブとその失敗回数は以下のビューで確認できます (1)DBMS_JOB パッケージで作成したジョブ DBA_JOBS ビュー ( または USER_JOBS ビュー ) の BROKEN 列が 'Y' となっているジョブが中断状態です また 失敗回数は FAILURES 列で確認できます (16 回失敗すると中断状態となります ) SQL> SELECT what,failures FROM dba_jobs WHERE broken = 'Y'; WHAT FAILURES --------------- -------- FILE_UNLOAD_EMP 16 (2)DBMS_SCHEDULER パッケージで作成したジョブ DBA_SCHEDULER_JOBS ビュー ( または USER_SCHEDULER_JOBS ビュー ) の ENABLED 列が FALSE となっているジョブが中断状態です また 失敗回数は FAILURE_COUNT 列で確認できます max_failures の値で許容失敗数を制御できます ( デフォルトは無制限です ) 例えば 以下の例では max_failures を 10 と設定しているため 10 回失敗するとジョブが中断状態となります SQL> SELECT job_name,enabled,failure_count,max_failures 2 FROM user_scheduler_jobs; JOB_NAME ENABLED FAILURE_COUNT MAX_FAILURES --------------- ---------- ------------- ------------ TEST_JOB FALSE 10 10 付録 27 Q. DBMS_OUTPUT パッケージで使用するバッファサイズの変更方法 A. DBMS_OUTPUT パッケージではデータを読み込んだり 書き込んだりする際にバッファを使用しますが SQL*Plus ではデフォルト値が 2000 となっています ( 10gR2 以降はデフォルトが UNLIMITED です ) バッファサイズを変更したい場合は以下のように実行してください 1.SQL*Plus では SERVEROUTPUT 環境変数設定時にバッファサイズの変更を行う SQL> /* バッファサイズを 50000 に変更する */ SQL> SET SERVEROUTPUT ON SIZE 50000 2.DBMS_OUTPUT.ENABLE プロシージャで変更する SQL> begin 2 dbms_output.enable(50000); 3 end; バッファサイズは 2000~1000000 バイト内で指定します 6

28 Q. WRAP ユーティリティで暗号化したコードを元に戻せますか A. WRAP ユーティリティで暗号化したコードは元に戻せません そのため 元のソースコードはファイルなどに残しておいてください 29 Q. DBMS_JOB パッケージで作成したジョブを DBMS_SCHEDULER パッケージの DROP_JOB プロシージャで削除できますか A. できません DBMS_JOB で作成したジョブは ジョブ番号を確認し DBMS_JOB.REMOVE プロシージャで削除してください 30 Q. USER_JOBS ビューの NEXT_DATE 列が 4000 年 1 月 1 日になっているのはなぜでしょうか A. ジョブに登録したプログラムが中断されている状態で USER_JOBS ビューを確認すると 4000 年 1 月 1 日という日にちになります DBMS_JOB.BROKEN プロシージャを使用して ジョブを中断し プログラムを再開すると設定した NEXT_DATE の値に戻ります UTL_FILE.BROKEN プロシージャの詳細については PL/SQL パッケージ プロシージャおよびタイプ リファレンス マニュアルをご参照ください 31 Q. PL/SQL ブロック内で複数のアラートを受け取ることはできますか A. WAITANY プロシージャは複数アラートが発生していても ひとつの WAITANY プロシージャにつき最新のアラート 1 つしか受け取ることができません WAITONE/WAITANY プロシージャの前に複数のアラートが発生した場合は最新の SIGNAL プロシージャによって通知されるメッセージが戻され それ以前のメッセージは破棄されます しかし LOOP 間に複数 WAITANY プロシージャを定義することで 複数のアラートを受け取れます BEGIN DBMS_ALERT.REGISTER('SIGNAL1'); DBMS_ALERT.REGISTER('SIGNAL2'); LOOP DBMS_ALERT.WAITANY(ALERT_NAME,MES,STATUS,30); DBMS_ALERT.WAITANY(ALERT_NAME,MES,STATUS,30); IF STATUS = 0 THEN EXIT; END IF; END LOOP; END; 7

32 Q. DBMS_ALERT.SET_DEFAULTS プロシージャで設定する ポーリング間隔 とは何ですか A. ポーリング とは DBMS_ALERT.REGISTER プロシージャによって登録リストに登録されているアラートを一定間隔で監視する作業のことをいいます ちなみに デフォルトでは 1 秒であり WAITONE/WAITANY プロシージャの TIMEOUT パラメータで設定されている間 監視を行います 33 Q. アラートの削除を行う必要性について A. アラートが発生すると 登録リスト上の全セッションに通知が行われます アラートの登録をしたままにしていると 不要な通知を行わなくてはいけなくなり サーバーに余計な負荷をかけてしまいます 通知側の負荷を減らすために 不要なアラートは必ず REMOVE REMOVEALL プロシージャで削除するようにして下さい 34 Q. DBMS_PIPE で作成された PIPE の情報を確認することはできますか A. V$DB_PIPE ビューにて確認することができます SQL> SELECT * FROM v$db_pipes; OWNERID NAME TYPE PIPE_SIZE -------- -------------------- ------- --------- TEST_PIPE PUBLIC 542 35 Q. パイプのセキュリティについて A. DBMS_PIPE パッケージで使用できるパイプにはパブリック パイプとプライベート パイプがあります パイプのセキュリティを強化したい場合は プライベート パイプを使用してください プライベート パイププライベート パイプは DBMS_PIPE パッケージをコールする以前に DBMS_PIPE.CREATE_PIPE ファンクションを使用して事前に明示的に作成されたパイプのことをいいます プライベートパイプは管理者 所有者 権限が付与された人しかアクセスすることができないパイプとして定義することができるため 意図しない第 3 者にデータを読み込まれることを防止できます プライベートパイプは REMOVE_PIPE プロシージャで明示的にパイプを削除するまで共有メモリー上に存在します パブリック パイプ DBMS_PIPE.CREATE_PIPE ファンクションで作成されていないパイプ名をプログラム内で指定した場合はパブリックパイプとなり Oracle が暗黙的にパイプを作成してくれます このパブリックパイプは権限などは必要なく パイプ名を知っていれば誰でもメッセージを読み込むことが可能になるため 意図しない第 3 者にデータを読み込まれる危険性があります 8

36 Q. DBMS_SHARED_POOL パッケージを使用して共有メモリ上に固定されているプログラムを確認する方法 A. V$DB_OBJECT_CACHE ビューを確認することで 共有メモリ ( 共有プール ) 上に固定されているプログラムの情報が確認できます V$DB_OBJECT_CACHE ビューの詳細については リファレンス マニュアルをご参照ください 37 Q. 共有メモリーの情報をクリアした場合 DBMS_SHARED_POOL パッケージでメモリーに固定しているオブジェクトも消去されてしまうのですか A. ALTER SYSTEM FLUSH SHARED_POOL コマンドを実行すると 共有プール上のデータが消去されます しかし 現在実行中のものや DBMS_SHARED_POOL パッケージでメモリー上に固定しているオブジェクトは消去されません ご利用上の注意事項 本書の著作権は株式会社アシストに帰属します 本書は参考資料であり 掲載されている情報は予告なしに変更されることがあります 本書で使用している製品の名称は 各社の商標または登録商標です 本資料の内容に関するご質問はご遠慮ください 本資料はお客様の責任のもとでご利用ください これらの使用によりいかなる損害が生じたとしても 株式会社アシストは一切保証致しかねますので ご了承ください 9