Oracle® Database

PL/SQLパッケージおよびタイプ・リファレンス

12c リリース1(12.1)

B71281-05(原本部品番号:E41829-07)

2016年9月

Oracle Database PL/SQLパッケージおよびタイプ・リファレンス, 12c リリース1(12.1)

B71281-05

Copyright © 1996, 2016, Oracle and/or its affiliates.All rights reserved.

原本著者: Prashant Kannan

原本主協力者: Lance Ashdown、Drue Baker、Donna Carver、Maitreyee Chaliha、Beethoven Cheng、Rhonda Day、Steve Fogel、Bryn Llewellyn、Paul Lane、Tony Morales、Chuck Murray、Sue Pelski、Kathy Rich、Antonio Romero、Vivian Schupmann、Cathy Shea、Margaret Taft、Kathy Taylor、Randy Urbano、Rodney Ward

原本協力者: Database 12cのドキュメントを、本リリースに携わった全員にとって創造の源となったMark Townsendに捧げます。

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracleおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

このリリースでの『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の変更内容

- Oracle Database 12cリリース1(12.1)での変更内容

1 オラクル社が提供するPL/SQLパッケージおよびタイプの概要

- パッケージの概要

- パッケージのコンポーネント

- オラクル社が提供するパッケージ

- 新規パッケージの作成

- 仕様部と本体の分離

- パッケージ内容の参照

- オラクル社が提供するPL/SQLパッケージおよびタイプの概要

2 APEX_CUSTOM_AUTH

- APEX_CUSTOM_AUTHのドキュメント

3 APEX_APPLICATION

- APEX_APPLICATIONのドキュメント

4 APEX_ITEM

- APEX_ITEMのドキュメント

5 APEX_UTIL

- APEX_UTILのドキュメント

6 CTX_ADM

- CTX_ADMのドキュメント

7 CTX_ANL

- CTX_ANLのドキュメント

8 CTX_CLS

- CTX_CLSのドキュメント

9 CTX_DDL

- CTX_DDLのドキュメント

10 CTX_DOC

- CTX_DOCのドキュメント

11 CTX_ENTITY

- CTX_ENTITYのドキュメント

12 CTX_OUTPUT

- CTX_OUTPUTのドキュメント

13 CTX_QUERY

- CTX_QUERYのドキュメント

14 CTX_REPORT

- CTX_REPORTのドキュメント

15 CTX_THES

- CTX_THESのドキュメント

16 CTX_ULEXER

- CTX_ULEXERのドキュメント

17 DBMS_ADDM

- DBMS_ADDMの使用方法

- セキュリティ・モデル

- DBMS_ADDMサブプログラムの要約

- ANALYZE_DBプロシージャ

- ANALYZE_INSTプロシージャ

- ANALYZE_PARTIALプロシージャ

- COMPARE_CAPTURE_REPLAY_REPORTファンクション

- COMPARE_DATABASESファンクション

- COMPARE_INSTANCESファンクション

- COMPARE_REPLAY_REPLAY_REPORTファンクション

- DELETEプロシージャ

- DELETE_FINDING_DIRECTIVEプロシージャ

- DELETE_PARAMETER_DIRECTIVEプロシージャ

- DELETE_SEGMENT_DIRECTIVEプロシージャ

- DELETE_SQL_DIRECTIVEプロシージャ

- GET_ASH_QUERYファンクション

- GET_REPORTファンクション

- INSERT_FINDING_DIRECTIVEプロシージャ

- INSERT_PARAMETER_DIRECTIVEプロシージャ

- INSERT_SEGMENT_DIRECTIVEプロシージャ

- INSERT_SQL_DIRECTIVEプロシージャ

- REAL_TIME_ADDM_REPORTファンクション

18 DBMS_ADVANCED_REWRITE

- DBMS_ADVANCED_REWRITEの使用方法

- セキュリティ・モデル

- DBMS_ADVANCED_REWRITEサブプログラムの要約

- ALTER_REWRITE_EQUIVALENCEプロシージャ

- BUILD_SAFE_REWRITE_EQUIVALENCEプロシージャ

- DECLARE_REWRITE_EQUIVALENCEプロシージャ

- DROP_REWRITE_EQUIVALENCEプロシージャ

- VALIDATE_REWRITE_EQUIVALENCEプロシージャ

19 DBMS_ADVISOR

- DBMS_ADVISORの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- DBMS_ADVISORサブプログラムの要約

- ADD_SQLWKLD_REFプロシージャ

- ADD_SQLWKLD_STATEMENTプロシージャ

- ADD_STS_REFプロシージャ

- CANCEL_TASKプロシージャ

- COPY_SQLWKLD_TO_STSプロシージャ

- CREATE_FILEプロシージャ

- CREATE_OBJECTプロシージャ

- CREATE_SQLWKLDプロシージャ

- CREATE_TASKプロシージャ

- DELETE_SQLWKLDプロシージャ

- DELETE_SQLWKLD_REFプロシージャ

- DELETE_SQLWKLD_STATEMENTプロシージャ

- DELETE_STS_REFプロシージャ

- DELETE_TASKプロシージャ

- EXECUTE_TASKプロシージャ

- GET_REC_ATTRIBUTESプロシージャ

- GET_TASK_REPORTファンクション

- GET_TASK_SCRIPTファンクション

- IMPLEMENT_TASKプロシージャ

- IMPORT_SQLWKLD_SCHEMAプロシージャ

- IMPORT_SQLWKLD_SQLCACHEプロシージャ

- IMPORT_SQLWKLD_STSプロシージャ

- IMPORT_SQLWKLD_SUMADVプロシージャ

- IMPORT_SQLWKLD_USERプロシージャ

- INTERRUPT_TASKプロシージャ

- MARK_RECOMMENDATIONプロシージャ

- QUICK_TUNEプロシージャ

- RESET_SQLWKLDプロシージャ

- RESET_TASKプロシージャ

- SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ

- SET_DEFAULT_TASK_PARAMETERプロシージャ

- SET_SQLWKLD_PARAMETERプロシージャ

- SET_TASK_PARAMETERプロシージャ

- TUNE_MVIEWプロシージャ

- UPDATE_OBJECTプロシージャ

- UPDATE_REC_ATTRIBUTESプロシージャ

- UPDATE_SQLWKLD_ATTRIBUTESプロシージャ

- UPDATE_SQLWKLD_STATEMENTプロシージャ

- UPDATE_TASK_ATTRIBUTESプロシージャ

20 DBMS_ALERT

- DBMS_ALERTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 制限事項

- 例外

- 使用上の注意

- 例

- DBMS_ALERTサブプログラムの要約

- REGISTERプロシージャ

- REMOVEプロシージャ

- REMOVEALLプロシージャ

- SET_DEFAULTSプロシージャ

- SIGNALプロシージャ

- WAITANYプロシージャ

- WAITONEプロシージャ

21 DBMS_APP_CONT

- DBMS_APP_CONTの使用

- 概要

- セキュリティ・モデル

- DBMS_APP_CONTサブプログラムの要約

- GET_LTXID_OUTCOMEプロシージャ

22 DBMS_APPLICATION_INFO

- DBMS_APPLICATION_INFOの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_APPLICATION_INFOサブプログラムの要約

- READ_CLIENT_INFOプロシージャ

- READ_MODULEプロシージャ

- SET_ACTIONプロシージャ

- SET_CLIENT_INFOプロシージャ

- SET_MODULEプロシージャ

- SET_SESSION_LONGOPSプロシージャ

23 DBMS_APPLY_ADM

- DBMS_APPLY_ADMの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- 推奨されない適用コンポーネントのパラメータの値

- DBMS_APPLY_ADMサブプログラムの要約

- ADD_STMT_HANDLERプロシージャ

- ALTER_APPLYプロシージャ

- COMPARE_OLD_VALUESプロシージャ

- CREATE_APPLYプロシージャ

- CREATE_OBJECT_DEPENDENCYプロシージャ

- DELETE_ALL_ERRORSプロシージャ

- DELETE_ERRORプロシージャ

- DROP_APPLYプロシージャ

- DROP_OBJECT_DEPENDENCYプロシージャ

- EXECUTE_ALL_ERRORSプロシージャ

- EXECUTE_ERRORプロシージャ

- GET_ERROR_MESSAGEファンクション

- REMOVE_STMT_HANDLER

- SET_CHANGE_HANDLERプロシージャ

- SET_DML_HANDLERプロシージャ

- SET_ENQUEUE_DESTINATIONプロシージャ

- SET_EXECUTEプロシージャ

- SET_GLOBAL_INSTANTIATION_SCNプロシージャ

- SET_KEY_COLUMNSプロシージャ

- SET_PARAMETERプロシージャ

- SET_SCHEMA_INSTANTIATION_SCNプロシージャ

- SET_TABLE_INSTANTIATION_SCNプロシージャ

- SET_UPDATE_CONFLICT_HANDLERプロシージャ

- SET_VALUE_DEPENDENCYプロシージャ

- START_APPLYプロシージャ

- STOP_APPLYプロシージャ

24 DBMS_AQ

- DBMS_AQの使用方法

- セキュリティ・モデル

- 定数

- データ構造

- オブジェクト名

- タイプ名

- Oracle Databaseアドバンスト・キューイングのPL/SQLコールバック

- 使用上の注意

- DBMS_AQおよびDBMS_AQADM Javaクラス

- DBMS_AQサブプログラムの要約

- BIND_AGENTプロシージャ

- DEQUEUEプロシージャ

- DEQUEUE_ARRAYファンクション

- ENQUEUEプロシージャ

- ENQUEUE_ARRAYファンクション

- LISTENプロシージャ

- POSTプロシージャ

- REGISTERプロシージャ

- UNBIND_AGENTプロシージャ

- UNREGISTERプロシージャ

25 DBMS_AQADM

- DBMS_AQADMの使用方法

- セキュリティ・モデル

- 定数

- サブプログラム・グループ

- キュー表サブプログラム

- 権限サブプログラム

- キュー・サブプログラム

- サブスクライバ・サブプログラム

- 通知サブプログラム

- 伝播サブプログラム

- Oracle Databaseアドバンスト・キューイング・エージェント・サブプログラム

- 別名サブプログラム

- DBMS_AQADMサブプログラムの要約

- ADD_ALIAS_TO_LDAPプロシージャ

- ADD_SUBSCRIBERプロシージャ

- ALTER_AQ_AGENTプロシージャ

- ALTER_PROPAGATION_SCHEDULEプロシージャ

- ALTER_QUEUEプロシージャ

- ALTER_QUEUE_TABLEプロシージャ

- ALTER_SUBSCRIBERプロシージャ

- CREATE_AQ_AGENTプロシージャ

- CREATE_NP_QUEUEプロシージャ

- CREATE_QUEUEプロシージャ

- CREATE_SHARDED_QUEUEプロシージャ

- DROP_SHARDED_QUEUEプロシージャ

- CREATE_QUEUE_TABLEプロシージャ

- DEL_ALIAS_FROM_LDAPプロシージャ

- DISABLE_DB_ACCESSプロシージャ

- DISABLE_PROPAGATION_SCHEDULEプロシージャ

- DROP_AQ_AGENTプロシージャ

- DROP_QUEUEプロシージャ

- DROP_QUEUE_TABLEプロシージャ

- ENABLE_DB_ACCESSプロシージャ

- ENABLE_JMS_TYPESプロシージャ

- ENABLE_PROPAGATION_SCHEDULEプロシージャ

- GET_WATERMARKプロシージャ

- GET_MAX_STREAMS_POOLプロシージャ

- GET_MIN_STREAMS_POOLプロシージャ

- GRANT_QUEUE_PRIVILEGEプロシージャ

- GRANT_SYSTEM_PRIVILEGEプロシージャ

- MIGRATE_QUEUE_TABLEプロシージャ

- PURGE_QUEUE_TABLEプロシージャ

- QUEUE_SUBSCRIBERSファンクション

- REMOVE_SUBSCRIBERプロシージャ

- REVOKE_QUEUE_PRIVILEGEプロシージャ

- REVOKE_SYSTEM_PRIVILEGEプロシージャ

- SCHEDULE_PROPAGATIONプロシージャ

- SET_WATERMARKプロシージャ

- SET_MAX_STREAMS_POOLプロシージャ

- SET_MIN_STREAMS_POOLプロシージャ

- START_QUEUEプロシージャ

- STOP_QUEUEプロシージャ

- UNSCHEDULE_PROPAGATIONプロシージャ

- VERIFY_QUEUE_TYPESプロシージャ

26 DBMS_AQELM

- DBMS_AQELMの使用

- セキュリティ・モデル

- DBMS_AQELMサブプログラムの要約

- SET_MAILHOSTプロシージャ

- SET_MAILPORTプロシージャ

- SET_SENDFROMプロシージャ

27 DBMS_AQIN

- DBMS_AQINの使用方法

- セキュリティ・モデル

28 DBMS_ASSERT

- DBMS_ASSERTの使用方法

- 使用上の注意

- DBMS_ASSERTサブプログラムの要約

- ENQUOTE_LITERALファンクション

- ENQUOTE_NAMEファンクション

- NOOPファンクション

- QUALIFIED_SQL_NAMEファンクション

- SCHEMA_NAMEファンクション

- SIMPLE_SQL_NAMEファンクション

- SQL_OBJECT_NAMEファンクション

29 DBMS_AUDIT_MGMT

- DBMS_AUDIT_MGMTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- サブプログラム・グループ

- 監査証跡管理サブプログラム

- 監査証跡クリーンアップ・サブプログラム

- DBMS_AUDIT_MGMTサブプログラムの要約

- CLEAN_AUDIT_TRAILプロシージャ

- CLEAR_AUDIT_TRAIL_PROPERTYプロシージャ

- CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャ

- CREATE_PURGE_JOBプロシージャ

- DEINIT_CLEANUPプロシージャ

- DROP_OLD_UNIFIED_AUDIT_TABLESプロシージャ

- DROP_PURGE_JOBプロシージャ

- FLUSH_UNIFIED_AUDIT_TRAILプロシージャ

- GET_AUDIT_COMMIT_DELAYファンクション

- GET_ AUDIT_TRAIL_PROPERTY_VALUEファンクション

- GET_LAST_ARCHIVE_TIMESTAMPファンクション

- INIT_CLEANUPプロシージャ

- IS_CLEANUP_INITIALIZEDファンクション

- LOAD_UNIFIED_AUDIT_FILESプロシージャ

- SET_AUDIT_TRAIL_LOCATIONプロシージャ

- SET_AUDIT_TRAIL_PROPERTYプロシージャ

- SET_LAST_ARCHIVE_TIMESTAMPプロシージャ

- SET_PURGE_JOB_INTERVALプロシージャ

- SET_PURGE_JOB_STATUSプロシージャ

30 DBMS_AUTO_SQLTUNE

- DBMS_AUTO_SQLTUNEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_AUTO_SQLTUNEサブプログラムの要約

- EXECUTE_AUTO_TUNING_TASKファンクションおよびプロシージャ

- REPORT_AUTO_TUNING_TASKファンクション

- SET_AUTO_TUNING_TASK_PARAMETERプロシージャ

31 DBMS_AUTO_REPORT

- DBMS_AUTO_REPORTの使用

- 概要

- セキュリティ・モデル

- DBMS_AUTO_REPORTサブプログラムの要約

- FINISH_REPORT_CAPTUREプロシージャ

- REPORT_REPOSITORY_DETAILファンクション

- REPORT_REPOSITORY_DETAIL_XMLファンクション

- REPORT_REPOSITORY_LIST_XMLファンクション

- START_REPORT_CAPTUREプロシージャ

32 DBMS_AUTO_TASK_ADMIN

- DBMS_AUTO_TASK_ADMINの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- DBMS_AUTO_TASK_ADMINサブプログラムの要約

- DISABLEプロシージャ

- ENABLEプロシージャ

- GET_CLIENT_ATTRIBUTESプロシージャ

- GET_P1_RESOURCESプロシージャ

- OVERRIDE_PRIORITYプロシージャ

- SET_CLIENT_SERVICEプロシージャ

- SET_P1_RESOURCESプロシージャ

33 DBMS_AW_STATS

- DBMS_AW_STATSの使用方法

- DBMS_AW_STATSサブプログラムの要約

- ANALYZEプロシージャ

- CLEARプロシージャ

34 DBMS_CAPTURE_ADM

- DBMS_CAPTURE_ADMの使用方法

- 概要

- セキュリティ・モデル

- DBMS_CAPTURE_ADMサブプログラムの要約

- ABORT_GLOBAL_INSTANTIATIONプロシージャ

- ABORT_SCHEMA_INSTANTIATIONプロシージャ

- ABORT_SYNC_INSTANTIATIONプロシージャ

- ABORT_TABLE_INSTANTIATIONプロシージャ

- ALTER_CAPTUREプロシージャ

- ALTER_SYNC_CAPTUREプロシージャ

- BUILDプロシージャ

- CREATE_CAPTUREプロシージャ

- CREATE_SYNC_CAPTUREプロシージャ

- DROP_CAPTUREプロシージャ

- INCLUDE_EXTRA_ATTRIBUTEプロシージャ

- PREPARE_GLOBAL_INSTANTIATIONプロシージャ

- PREPARE_SCHEMA_INSTANTIATIONプロシージャ

- PREPARE_SYNC_INSTANTIATIONファンクション

- PREPARE_TABLE_INSTANTIATIONプロシージャ

- SET_PARAMETERプロシージャ

- START_CAPTUREプロシージャ

- STOP_CAPTUREプロシージャ

35 DBMS_COMPARISON

- DBMS_COMPARISONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_COMPARISONパッケージのOracle Databaseリリース要件

- DBMS_COMPARISONパッケージのデータベース・キャラクタ・セット要件

- DBMS_COMPARISONパッケージのデータベース・オブジェクト要件

- DBMS_COMPARISONパッケージの索引列要件

- DBMS_COMPARISONパッケージのデータ・タイプ要件

- 更新されない行のみの収束

- データ構造

- COMPARISON_TYPEレコード・タイプ

- 構文

- フィールド

- DBMS_COMPARISONサブプログラムの要約

- COMPAREファンクション

- CONVERGEプロシージャ

- CREATE_COMPARISONプロシージャ

- DROP_COMPARISONプロシージャ

- PURGE_COMPARISONプロシージャ

- RECHECKファンクション

36 DBMS_COMPRESSION

- DBMS_COMPRESSIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ構造

- COMPRECレコード・タイプ

- COMPRECLIST表タイプ

- DBMS_COMPRESSIONサブプログラムの要約

- GET_COMPRESSION_RATIOプロシージャ

- GET_COMPRESSION_TYPEファンクション

37 DBMS_CONNECTION_POOL

- DBMS_CONNECTION_POOLサブプログラムの要約

- ALTER_PARAMプロシージャ

- CONFIGURE_POOLプロシージャ

- START_POOLプロシージャ

- STOP_POOLプロシージャ

- RESTORE_DEFAULTSプロシージャ

38 DBMS_CQ_NOTIFICATION

- DBMS_CQ_NOTIFICATIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例

- データ構造

- CQ_NOTIFICATION$_DESCRIPTORオブジェクト・タイプ

- CQ_NOTIFICATION$_QUERYオブジェクト・タイプ

- CQ_NOTIFICATION$_QUERY_ARRAYオブジェクト(配列)タイプ

- CQ_NOTIFICATION$_TABLEオブジェクト・タイプ

- CQ_NOTIFICATION$_TABLE_ARRAYオブジェクト(配列)タイプ

- CQ_NOTIFICATION$_ROWオブジェクト・タイプ

- CQ_NOTIFICATION$_ROW_ARRAYオブジェクト(配列)タイプ

- CQ_NOTIFICATION$_REG_INFOオブジェクト・タイプ

- DBMS_CQ_NOTIFICATIONサブプログラムの要約

- CQ_NOTIFICATION_QUERYIDファンクション

- DEREGISTERプロシージャ

- ENABLE_REGプロシージャ

- NEW_REG_STARTファンクション

- REG_ENDプロシージャ

- SET_ROWID_THRESHOLDプロシージャ

39 DBMS_CREDENTIAL

- DBMS_CREDENTIALの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_CREDENTIALサブプログラムの要約

- CREATE_CREDENTIALプロシージャ

- DISABLE_CREDENTIALプロシージャ

- DROP_CREDENTIALプロシージャ

- ENABLE_CREDENTIALプロシージャ

- UPDATE_CREDENTIALプロシージャ

40 DBMS_CRYPTO

- DBMS_CRYPTOサブプログラムの使用方法

- 概要

- セキュリティ・モデル

- データ・タイプ

- アルゴリズム

- 制限事項

- 例外

- 使用上の注意

- 暗号化/復号化のプロシージャとファンクションの使い分け

- HASHファンクションとMACファンクションの使い分け

- 暗号化キーの作成と保守に関する注意事項

- 変換ルール

- 例

- DBMS_CRYPTOサブプログラムの要約

- DECRYPTファンクション

- DECRYPTプロシージャ

- ENCRYPTファンクション

- ENCRYPTプロシージャ

- HASHファンクション

- MACファンクション

- RANDOMBYTESファンクション

- RANDOMINTEGERファンクション

- RANDOMNUMBERファンクション

41 DBMS_CSX_ADMIN

- DBMS_CSX_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_CSX_ADMINの要約

- GETTOKENTABLEINFOプロシージャおよびファンクション

- GETTOKENTABLEINFOBYTABLESPACEプロシージャ

- NAMESPACEIDTABLEファンクション

- PATHIDTABLEファンクション

- QNAMEIDTABLEファンクション

42 DBMS_CUBE

- DBMS_CUBEの使用方法

- セキュリティ・モデル

- SQL集計管理の使用方法

- SQL集計管理のサブプログラム

- リレーショナル・マテリアライズド・ビューの要件

- キューブ・マテリアライズド・ビューの管理および問合せに対する権限

- SQL集計管理の例

- CAL_MONTH_SALES_MV リレーショナル・マテリアライズド・ビューについて

- キューブ・マテリアライズド・ビューの作成

- リレーショナル・マテリアライズド・ビューの無効化

- キューブ・マテリアライズド・ビューの実行計画の作成

- キューブ・マテリアライズド・ビューのメンテナンス

- 新しいデータベース・オブジェクト

- 10gアナリティック・ワークスペースのアップグレード

- 名前の競合の修正

- 初期化表

- 名前変更表

- シンプル・アップグレード

- カスタム・アップグレード

- DBMS_CUBEサブプログラムの要約

- BUILDプロシージャ

- CREATE_EXPORT_OPTIONSプロシージャ

- CREATE_IMPORT_OPTIONSプロシージャ

- CREATE_MVIEWファンクション

- DERIVE_FROM_MVIEWファンクション

- DROP_MVIEWプロシージャ

- EXPORT_XMLプロシージャ

- EXPORT_XML_TO_FILEプロシージャ

- IMPORT_XMLプロシージャ

- INITIALIZE_CUBE_UPGRADEプロシージャ

- REFRESH_MVIEWプロシージャ

- UPGRADE_AWプロシージャ

- VALIDATE_XMLプロシージャ

43 DBMS_CUBE_ADVISE

- DBMS_CUBE_ADVISEの使用方法

- セキュリティ・モデル

- DBMS_CUBE_ADVISEサブプログラムの要約

- MV_CUBE_ADVICEファンクション

- SET_CNS_EXCEPTION_LOGプロシージャ

- TRACEプロシージャ

44 DBMS_CUBE_LOG

- DBMS_CUBE_LOGの使用方法

- ロギング・タイプ

- ロギング・ターゲット

- 冗長性レベル

- セキュリティ・モデル

- キューブ・ログの作成

- キューブ作成ログ

- キューブ・ディメンション・コンパイル・ログ

- キューブ操作ログ

- キューブ拒否レコード・ログ

- DBMS_CUBE_LOGサブプログラムの要約

- DEFAULT_NAMEファンクション

- DISABLEプロシージャ

- ENABLEプロシージャ

- FLUSHプロシージャ

- GET_LOGプロシージャ

- GET_LOG_SPECファンクション

- GET_PARAMETERファンクション

- LEVEL_HIGHファンクション

- LEVEL_HIGHESTファンクション

- LEVEL_LOWファンクション

- LEVEL_LOWESTファンクション

- LEVEL_MEDIUMファンクション

- SET_LOG_SPECプロシージャ

- SET_PARAMETERプロシージャ

- TABLE_CREATEプロシージャ

- TARGET_FILEファンクション

- TARGET_LOBファンクション

- TARGET_TABLEファンクション

- TARGET_TRACEファンクション

- TYPE_BUILDファンクション

- TYPE_DIMENSION_COMPILEファンクション

- TYPE_OPERATIONSファンクション

- TYPE_REJECTED_RECORDSファンクション

- VERSIONファンクション

45 DBMS_DATA_MINING

- DBMS_DATA_MININGの使用方法

- 概要

- セキュリティ・モデル

- マイニング機能

- モデル設定

- アルゴリズム名

- 自動データ準備

- マイニング機能の設定

- グローバルな設定

- アルゴリズムの設定: ディシジョン・ツリー

- アルゴリズム設定: 期待値の最大化

- アルゴリズムの設定: 一般化線形モデル

- アルゴリズムの設定: k-Means

- アルゴリズムの設定: Naive Bayes

- アルゴリズムの設定: Non-Negative Matrix Factorization

- アルゴリズムの設定: O-Cluster

- アルゴリズム定数と設定: 特異値分解

- アルゴリズムの設定: サポート・ベクター・マシン

- データ・タイプ

- DBMS_DATA_MININGサブプログラムの要約

- ADD_COST_MATRIXプロシージャ

- ALTER_REVERSE_EXPRESSIONプロシージャ

- APPLYプロシージャ

- 分類

- 異常検出

- 回帰

- クラスタリング

- 特徴抽出

- COMPUTE_CONFUSION_MATRIXプロシージャ

- COMPUTE_LIFTプロシージャ

- COMPUTE_ROCプロシージャ

- CREATE_MODELプロシージャ

- DROP_MODELプロシージャ

- EXPORT_MODELプロシージャ

- GET_ASSOCIATION_RULESファンクション

- GET_FREQUENT_ITEMSETSファンクション

- GET_MODEL_COST_MATRIXファンクション

- GET_MODEL_DETAILS_AIファンクション

- GET_MODEL_DETAILS_EMファンクション

- GET_MODEL_DETAILS_EM_COMPファンクション

- GET_MODEL_DETAILS_EM_PROJファンクション

- GET_MODEL_DETAILS_GLMファンクション

- GET_MODEL_DETAILS_GLOBALファンクション

- GET_MODEL_DETAILS_KMファンクション

- GET_MODEL_DETAILS_NBファンクション

- GET_MODEL_DETAILS_NMFファンクション

- GET_MODEL_DETAILS_OCファンクション

- GET_MODEL_DETAILS_SVDファンクション

- GET_MODEL_DETAILS_SVMファンクション

- GET_MODEL_DETAILS_XMLファンクション

- GET_MODEL_TRANSFORMATIONSファンクション

- GET_TRANSFORM_LISTプロシージャ

- IMPORT_MODELプロシージャ

- RANK_APPLYプロシージャ

- 分類モデル: NBおよびSVM

- k-MeansまたはO-Clusterを使用するクラスタリング

- NMFを使用する特徴抽出

- REMOVE_COST_MATRIXプロシージャ

- RENAME_MODELプロシージャ

46 DBMS_DATA_MINING_TRANSFORM

- DBMS_DATA_MINING_TRANSFORMの使用方法

- 概要

- 外部変換または埋込み変換

- 自動変換

- DBMS_DATA_MINING_TRANSFORMでの変換

- 使用上の注意

- 変換リストについて

- スタックについて

- ネストしたデータの変換

- セキュリティ・モデル

- データ・タイプ

- 定数

- DBMS_DATA_MINING_TRANSFORMサブプログラムの要約

- CREATE_BIN_CATプロシージャ

- CREATE_BIN_NUMプロシージャ

- CREATE_CLIPプロシージャ

- CREATE_COL_REMプロシージャ

- CREATE_MISS_CATプロシージャ

- CREATE_MISS_NUMプロシージャ

- CREATE_NORM_LINプロシージャ

- DESCRIBE_STACKプロシージャ

- GET_EXPRESSIONファンクション

- INSERT_AUTOBIN_NUM_EQWIDTHプロシージャ

- INSERT_BIN_CAT_FREQプロシージャ

- INSERT_BIN_NUM_EQWIDTHプロシージャ

- INSERT_BIN_NUM_QTILEプロシージャ

- INSERT_BIN_SUPERプロシージャ

- INSERT_CLIP_TRIM_TAILプロシージャ

- INSERT_CLIP_WINSOR_TAILプロシージャ

- INSERT_MISS_CAT_MODEプロシージャ

- INSERT_MISS_NUM_MEANプロシージャ

- INSERT_NORM_LIN_MINMAXプロシージャ

- INSERT_NORM_LIN_SCALEプロシージャ

- INSERT_NORM_LIN_ZSCOREプロシージャ

- SET_EXPRESSIONプロシージャ

- SET_TRANSFORMプロシージャ

- 例

- STACK_BIN_CATプロシージャ

- STACK_BIN_NUMプロシージャ

- STACK_CLIPプロシージャ

- STACK_COL_REMプロシージャ

- STACK_MISS_CATプロシージャ

- STACK_MISS_NUMプロシージャ

- STACK_NORM_LINプロシージャ

- XFORM_BIN_CATプロシージャ

- XFORM_BIN_NUMプロシージャ

- XFORM_CLIPプロシージャ

- XFORM_COL_REMプロシージャ

- XFORM_EXPR_NUMプロシージャ

- XFORM_EXPR_STRプロシージャ

- XFORM_MISS_CATプロシージャ

- XFORM_MISS_NUMプロシージャ

- XFORM_NORM_LINプロシージャ

- XFORM_STACKプロシージャ

47 DBMS_DATAPUMP

- DBMS_DATAPUMPの使用方法

- 概要

- セキュリティ・モデル

- ロール

- 定数

- マスク・ビット定義

- ダンプ・ファイル・タイプ定義

- データ構造

- データ構造: オブジェクト・タイプ

- ワーカー・ステータス・タイプ

- ログ・エントリ・タイプおよびエラー・タイプ

- ジョブ・ステータス・タイプ

- ジョブ記述タイプ

- ステータス・タイプ

- DBMS_DATAPUMPサブプログラムの要約

- ADD_FILEプロシージャ

- ATTACHファンクション

- DATA_FILTERプロシージャ

- DATA_REMAPプロシージャ

- DETACHプロシージャ

- GET_DUMPFILE_INFOプロシージャ

- GET_STATUSプロシージャ

- LOG_ENTRYプロシージャ

- METADATA_FILTERプロシージャ

- METADATA_REMAPプロシージャ

- METADATA_TRANSFORMプロシージャ

- OPENファンクション

- SET_PARALLELプロシージャ

- SET_PARAMETERプロシージャ

- START_JOBプロシージャ

- STOP_JOBプロシージャ

- WAIT_FOR_JOBプロシージャ

48 DBMS_DBFS_CONTENT

- DBMS_DBFS_CONTENTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例外

- 使用上の注意

- データ構造

- FEATURE_Tレコード・タイプ

- MOUNT_Tレコード・タイプ

- PATH_ITEM_Tレコード・タイプ

- PROP_ITEM_Tレコード・タイプ

- PROPERTY_Tレコード・タイプ

- STORE_Tレコード・タイプ

- FEATURES_T表タイプ

- MOUNTS_T表タイプ

- PATH_ITEMS_T表タイプ

- PROP_ITEMS_T表タイプ

- PROPERTIES_T表タイプ

- STORES_T表タイプ

- DBMS_DBFS_CONTENTサブプログラムの要約

- CHECKACCESSファンクション

- CHECKSPIファンクションおよびプロシージャ

- CREATEDIRECTORYプロシージャ

- CREATEFILEプロシージャ

- CREATELINKプロシージャ

- CREATEREFERENCEプロシージャ

- DECODEFEATURESファンクション

- DELETECONTENTプロシージャ

- DELETEDIRECTORYプロシージャ

- DELETEFILEプロシージャ

- FEATURENAMEファンクション

- FLUSHSTATSファンクション

- GETDEFAULTACLプロシージャ

- GETDEFAULTASOFプロシージャ

- GETTDEFAULTCONTEXTプロシージャ

- GETDEFAULTOWNERプロシージャ

- GETDEFAULTPRINCIPALプロシージャ

- GETFEATURESBYMOUNTファンクション

- GETFEATURESBYNAMEファンクション

- GETFEATURESBYPATHファンクション

- GETPATHプロシージャ

- GETPATHBYMOUNTIDファンクション

- GETPATHBYSTOREIDファンクション

- GETPATHNOWAITプロシージャ

- GETSTOREBYMOUNTファンクション

- GETSTOREBYNAMEファンクション

- GETSTOREBYPATHファンクション

- GETSTATSプロシージャ

- GETTRACEファンクション

- GETVERSIONファンクション

- LISTファンクション

- LISTALLPROPERTIESファンクション

- LISTALLCONTENTファンクション

- LISTMOUNTSファンクション

- LISTSTORESファンクション

- LOCKPATHプロシージャ

- MOUNTSTOREプロシージャ

- NORMALIZEPATHファンクション

- PROPANYファンクション

- PROPERTIESH2Tファンクション

- PROPERTIEST2Hファンクション

- PROPNUMBERファンクション

- PROPRAWファンクション

- PROPTIMESTAMPファンクション

- PROPVARCHAR2ファンクション

- PURGEALLプロシージャ

- PURGEPATHプロシージャ

- PUTPATHプロシージャ

- REGISTERSTOREプロシージャ

- RENAMEPATHプロシージャ

- RESTOREALLプロシージャ

- RESTOREPATHプロシージャ

- SETDEFAULTACLプロシージャ

- SETDEFAULTASOFプロシージャ

- SETDEFAULTCONTEXTプロシージャ

- SETDEFAULTOWNERプロシージャ

- SETDEFAULTPRINCIPALプロシージャ

- SETPATHプロシージャ

- SETSTATSプロシージャ

- SETTRACEプロシージャ

- SPACEUSAGEプロシージャ

- TRACEプロシージャ

- TRACEENABLEDファンクション

- UNLOCKPATHプロシージャ

- UNMOUNTSTOREプロシージャ

- UNREGISTERSTOREプロシージャ

49 DBMS_DBFS_CONTENT_SPI

- DBMS_DBFS_CONTENT_SPIの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_DBFS_CONTENT_SPIサブプログラムの要約

- CHECKACCESSファンクション

- CREATEDIRECTORYプロシージャ

- CREATEFILEプロシージャ

- CREATELINKプロシージャ

- CREATEREFERENCEプロシージャ

- DELETECONTENTプロシージャ

- DELETEDIRECTORYプロシージャ

- DELETEFILEプロシージャ

- GETFEATURESファンクション

- GETPATHプロシージャ

- GETPATHBYSTOREIDファンクション

- GETPATHNOWAITプロシージャ

- GETSTOREIDファンクション

- GETVERSIONファンクション

- LISTファンクション

- LOCKPATHプロシージャ

- PURGEALLプロシージャ

- PURGEPATHプロシージャ

- PUTPATHプロシージャ

- RENAMEPATHプロシージャ

- RESTOREALLプロシージャ

- RESTOREPATHプロシージャ

- SEARCHファンクション

- SETPATHプロシージャ

- SPACEUSAGEプロシージャ

- UNLOCKPATHプロシージャ

50 DBMS_DBFS_HS

- DBMS_DBFS_HSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- DBMS_DBFS_HSサブプログラムの要約

- CLEANUPUNUSEDBACKUPFILESプロシージャ

- CREATEBUCKETプロシージャ

- CREATESTOREプロシージャ

- DEREGSTORECOMMANDファンクション

- DROPSTOREプロシージャ

- FLUSHCACHEプロシージャ

- GETSTOREPROPERTYファンクション

- RECONFIGCACHEプロシージャ

- REGISTERSTORECOMMANDプロシージャ

- SENDCOMMANDプロシージャ

- SETSTOREPROPERTYプロシージャ

- STOREPUSHプロシージャ

51 DBMS_DBFS_SFS

- DBMS_DBFS_SFSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_DBFS_SFSサブプログラムの要約

- CREATEFILESYSTEMプロシージャ

- CREATESTOREプロシージャ

- DROPFILESYSTEMプロシージャ

- INITFSプロシージャ

52 DBMS_DB_VERSION

- DBMS_DB_VERSIONの使用方法

- 概要

- 定数

- 例

53 DBMS_DEBUG

- DBMS_DEBUGの使用方法

- 概要

- 定数

- 変数

- 例外

- 使用上の注意

- インタプリタの管理

- セッションの終了

- 遅延操作

- 診断出力

- 共通セクションおよびデバッグ・セッション・セクション

- OERブレーク・ポイント

- ネームスペース

- Libunitタイプ

- ブレーク・フラグ

- 情報フラグ

- 中断理由

- データ構造

- BREAKPOINT_INFOレコード・タイプ

- PROGRAM_INFOレコード・タイプ

- RUNTIME_INFOレコード・タイプ

- BACKTRACE_TABLE表タイプ

- BREAKPOINT_TABLE表タイプ

- INDEX_TABLE表タイプ

- VC2_TABLE表タイプ

- DBMS_DEBUGサブプログラムの要約

- ATTACH_SESSIONプロシージャ

- CONTINUEファンクション

- DEBUG_OFFプロシージャ

- DEBUG_ONプロシージャ

- DELETE_BREAKPOINTファンクション

- DELETE_OER_BREAKPOINTファンクション

- DETACH_SESSIONプロシージャ

- DISABLE_BREAKPOINTファンクション

- ENABLE_BREAKPOINTファンクション

- EXECUTEプロシージャ

- GET_INDEXESファンクション

- GET_MORE_SOURCEプロシージャ

- GET_LINE_MAPファンクション

- GET_RUNTIME_INFOファンクション

- GET_TIMEOUT_BEHAVIOURファンクション

- GET_VALUEファンクション

- INITIALIZEファンクション

- PINGプロシージャ

- PRINT_BACKTRACEプロシージャ

- パラメータ

- PRINT_INSTANTIATIONSプロシージャ

- PROBE_VERSIONプロシージャ

- SELF_CHECKプロシージャ

- SET_BREAKPOINTファンクション

- SET_OER_BREAKPOINTファンクション

- SET_TIMEOUTファンクション

- SET_TIMEOUT_BEHAVIOURプロシージャ

- SET_VALUEファンクション

- SHOW_BREAKPOINTSプロシージャ

- SHOW_FRAME_SOURCEプロシージャ

- SHOW_SOURCEプロシージャ

- SYNCHRONIZEファンクション

- TARGET_PROGRAM_RUNNINGプロシージャ

54 DBMS_DDL

- DBMS_DDLの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

- DBMS_DDLサブプログラムの要約

- ALTER_COMPILEプロシージャ

- ALTER_TABLE_NOT_REFERENCEABLEプロシージャ

- ALTER_TABLE_REFERENCEABLEプロシージャ

- CREATE_WRAPPEDプロシージャ

- IS_TRIGGER_FIRE_ONCEファンクション

- SET_TRIGGER_FIRING_PROPERTYプロシージャ

- WRAPファンクション

55 DBMS_DEFER

- DBMS_DEFERのドキュメント

56 DBMS_DEFER_QUERY

- DBMS_DEFER_QUERYのドキュメント

57 DBMS_DEFER_SYS

- DBMS_DEFER_SYSのドキュメント

58 DBMS_DESCRIBE

- DBMS_DESCRIBEの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- 例外

- 例

- DBMS_DESCRIBEサブプログラムの要約

- DESCRIBE_PROCEDUREプロシージャ

59 DBMS_DG

- DBMS_DGの使用方法

- セキュリティ・モデル

- DBMS_DGサブプログラムの要約

- INITIATE_FS_FAILOVERプロシージャ

60 DBMS_DIMENSION

- DBMS_DIMENSIONの使用方法

- セキュリティ・モデル

- DBMS_DIMENSIONサブプログラムの要約

- DESCRIBE_DIMENSIONプロシージャ

- VALIDATE_DIMENSIONプロシージャ

61 DBMS_DNFS

- DBMS_DNFSの使用方法

- セキュリティ・モデル

- DBMS_DNFSサブプログラムの要約

- CLONEDB_RENAMEFILEプロシージャ

62 DBMS_DST

- DBMS_DSTの使用方法

- 概要

- セキュリティ・モデル

- ビュー

- DBMS_DSTサブプログラムの要約

- BEGIN_PREPAREプロシージャ

- BEGIN_UPGRADEプロシージャ

- CREATE_AFFECTED_TABLEプロシージャ

- CREATE_ERROR_TABLEプロシージャ

- CREATE_TRIGGER_TABLEプロシージャ

- END_PREPAREプロシージャ

- END_UPGRADEプロシージャ

- FIND_AFFECTED_TABLESプロシージャ

- UPGRADE_DATABASEプロシージャ

- UPGRADE_SCHEMAプロシージャ

- UPGRADE_TABLEプロシージャ

63 DBMS_DISTRIBUTED_TRUST_ADMIN

- DBMS_DISTRIBUTED_TRUST_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 例

- DBMS_DISTRIBUTED_TRUST_ADMINサブプログラムの要約

- ALLOW_ALLプロシージャ

- ALLOW_SERVERプロシージャ

- DENY_ALLプロシージャ

- DENY_SERVERプロシージャ

64 DBMS_EDITIONS_UTILITIES

- DBMS_EDITIONS_UTILITIESの使用方法

- 概要

- セキュリティ・モデル

- 例外

- DBMS_EDITIONS_UTILITIESサブプログラムの要約

- SET_EDITIONING_VIEWS_READ_ONLYプロシージャ

- SET_NULL_COLUMN_VALUES_TO_EXPRプロシージャ

65 DBMS_EPG

- DBMS_EPGの使用方法

- 概要

- セキュリティ・モデル

- 例外

- データ構造

- サブプログラム・グループ

- 構成サブプログラム

- 認証サブプログラム

- DBMS_EPGサブプログラムの要約

- AUTHORIZE_DADプロシージャ

- CREATE_DADプロシージャ

- DEAUTHORIZE_DADプロシージャ

- DELETE_DAD_ATTRIBUTEプロシージャ

- DELETE_GLOBAL_ATTRIBUTEプロシージャ

- DROP_DADプロシージャ

- GET_ALL_DAD_ATTRIBUTESプロシージャ

- GET_ALL_DAD_MAPPINGSプロシージャ

- GET_ALL_GLOBAL_ATTRIBUTESプロシージャ

- GET_DAD_ATTRIBUTEファンクション

- GET_DAD_LISTプロシージャ

- GET_GLOBAL_ATTRIBUTEファンクション

- MAP_DADプロシージャ

- SET_DAD_ATTRIBUTEプロシージャ

- SET_GLOBAL_ATTRIBUTEプロシージャ

- UNMAP_DADプロシージャ

66 DBMS_ERRLOG

- DBMS_ERRLOGの使用方法

- セキュリティ・モデル

- DBMS_ERRLOGサブプログラムの要約

- CREATE_ERROR_LOGプロシージャ

67 DBMS_FGA

- DBMS_FGAの使用方法

- セキュリティ・モデル

- 使用上の注意

- DBMS_FGAサブプログラムの要約

- ADD_POLICYプロシージャ

- DISABLE_POLICYプロシージャ

- DROP_POLICYプロシージャ

- ENABLE_POLICYプロシージャ

68 DBMS_FILE_GROUP

- DBMS_FILE_GROUPの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例

- DBMS_FILE_GROUPサブプログラムの要約

- ADD_FILEプロシージャ

- ALTER_FILEプロシージャ

- ALTER_FILE_GROUPプロシージャ

- ALTER_VERSIONプロシージャ

- CREATE_FILE_GROUPプロシージャ

- CREATE_VERSIONプロシージャ

- DROP_FILE_GROUPプロシージャ

- DROP_VERSIONプロシージャ

- GRANT_OBJECT_PRIVILEGEプロシージャ

- GRANT_SYSTEM_PRIVILEGEプロシージャ

- PURGE_FILE_GROUPプロシージャ

- REMOVE_FILEプロシージャ

- REVOKE_OBJECT_PRIVILEGEプロシージャ

- REVOKE_SYSTEM_PRIVILEGEプロシージャ

69 DBMS_FILE_TRANSFER

- DBMS_FILE_TRANSFERの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_FILE_TRANSFERサブプログラムの要約

- COPY_FILEプロシージャ

- GET_FILEプロシージャ

- PUT_FILEプロシージャ

70 DBMS_FLASHBACK

- DBMS_FLASHBACKの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- 例外

- 使用上の注意

- 例

- DBMS_FLASHBACKサブプログラムの要約

- DISABLEプロシージャ

- ENABLE_AT_SYSTEM_CHANGE_NUMBERプロシージャ

- ENABLE_AT_TIMEプロシージャ

- GET_SYSTEM_CHANGE_NUMBERファンクション

- TRANSACTION_BACKOUTプロシージャ

71 DBMS_FLASHBACK_ARCHIVE

- DBMS_FLASHBACK_ARCHIVEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_FLASHBACK_ARCHIVEサブプログラムの要約

- ADD_TABLE_TO_APPLICATIONプロシージャ

- CREATE_TEMP_HISTORY_TABLEプロシージャ

- DISABLE_APPLICATIONプロシージャ

- DISABLE_ASOF_VALID_TIMEプロシージャ

- DISASSOCIATE_FBAプロシージャ

- DROP_APPLICATIONプロシージャ

- ENABLE_APPLICATIONプロシージャ

- ENABLE_AT_VALID_TIMEプロシージャ

- EXTEND_MAPPINGSプロシージャ

- GET_SYS_CONTEXTファンクション

- IMPORT_HISTORYプロシージャ

- LOCK_DOWN_APPLICATIONプロシージャ

- PURGE_CONTEXTプロシージャ

- REASSOCIATE_FBAプロシージャ

- REGISTER_APPLICATIONプロシージャ

- REMOVE_TABLE_FROM_APPLICATIONプロシージャ

- SET_CONTEXT_LEVELプロシージャ

72 DBMS_GOLDENGATE_AUTH

- DBMS_GOLDENGATE_AUTHの使用

- 概要

- セキュリティ・モデル

- DBMS_GOLDENGATE_AUTHサブプログラムの要約

- GRANT_ADMIN_PRIVILEGEプロシージャ

- REVOKE_ADMIN_PRIVILEGEプロシージャ

73 DBMS_FREQUENT_ITEMSET

- DBMS_FREQUENT_ITEMSETサブプログラムの要約

- FI_HORIZONTALファンクション

- FI_TRANSACTIONALファンクション

74 DBMS_HEAT_MAP

- DBMS_HEAT_MAPの使用方法

- 概要

- セキュリティ・モデル

- DBMS_HEAT_MAPサブプログラムの要約

- BLOCK_HEAT_MAPファンクション

- EXTENT_HEAT_MAPファンクション

- OBJECT_HEAT_MAPファンクション

- SEGMENT_HEAT_MAPプロシージャ

- TABLESPACE_HEAT_MAPファンクション

75 DBMS_HM

- DBMS_HMの使用方法

- セキュリティ・モデル

- DBMS_HMサブプログラムの要約

- GET_RUN_REPORTファンクション

- RUN_CHECKプロシージャ

76 DBMS_HPROF

- DBMS_HPROFサブプログラムの要約

- ANALYZEファンクション

- START_PROFILINGプロシージャ

- STOP_PROFILINGプロシージャ

77 DBMS_HS_PARALLEL

- DBMS_HS_PARALLELの使用方法

- DBMS_HS_PARALLELサブプログラムの要約

- CREATE_OR_REPLACE_VIEW

- 構文

- パラメータ

- CREATE_TABLE_TEMPLATE

- 構文

- パラメータ

- DROP_VIEW

- 構文

- パラメータ

- LOAD_TABLE

- 構文

- パラメータ

78 DBMS_HS_PASSTHROUGH

- DBMS_HS_PASSTHROUGHの使用方法

- 概要

- 使用上の注意

- DBMS_HS_PASSTHROUGHサブプログラムの要約

- BIND_INOUT_VARIABLEプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- BIND_INOUT_VARIABLE_RAWプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- BIND_OUT_VARIABLEプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- BIND_OUT_VARIABLE_RAWプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- BIND_VARIABLEプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- BIND_VARIABLE_RAWプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- CLOSE_CURSORプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- EXECUTE_IMMEDIATEプロシージャ

- 構文

- パラメータ

- 戻り値

- 例外

- EXECUTE_NON_QUERYファンクション

- 構文

- パラメータ

- 戻り値

- 例外

- FETCH_ROWファンクション

- 構文

- パラメータ

- 戻り値

- 例外

- プラグマ

- GET_VALUEプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- GET_VALUE_RAWプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

- OPEN_CURSORファンクション

- 構文

- 戻り値

- 例外

- プラグマ

- PARSEプロシージャ

- 構文

- パラメータ

- 例外

- プラグマ

79 DBMS_ILM

- DBMS_ILMの使用

- 概要

- セキュリティ・モデル

- 定数

- 例外

- DBMS_ILMサブプログラムの要約

- ADD_TO_ILMプロシージャ

- ARCHIVESTATENAMEファンクション

- EXECUTE_ILMプロシージャ

- EXECUTE_ILM_TASKプロシージャ

- PREVIEW_ILMプロシージャ

- REMOVE_FROM_ILMプロシージャ

- STOP_ILMプロシージャ

80 DBMS_ILM_ADMIN

- DBMS_ILM_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_ILM_ADMINサブプログラムの概要

- CLEAR_HEAT_MAP_ALLプロシージャ

- CLEAR_HEAT_MAP_TABLEプロシージャ

- CUSTOMIZE_ILMプロシージャ

- DISABLE_ILMプロシージャ

- ENABLE_ILMプロシージャ

- SET_HEAT_MAP_ALLプロシージャ

- SET_HEAT_MAP_STARTプロシージャ

- SET_HEAT_MAP_TABLEプロシージャ

81 DBMS_INMEMORY

- DBMS_INMEMORYサブプログラムの概要

- POPULATEプロシージャ

- REPOPULATEプロシージャ

82 DBMS_IOT

- DBMS_IOTサブプログラムの要約

- BUILD_CHAIN_ROWS_TABLEプロシージャ

- 構文

- パラメータ

- 使用上の注意

- 例

- BUILD_EXCEPTIONS_TABLEプロシージャ

- 構文

- パラメータ

- 使用上の注意

- 例

83 DBMS_JAVA

- DBMS_JAVAのドキュメント

84 DBMS_JOB

- DBMS_JOBの使用方法

- セキュリティ・モデル

- 使用上の注意

- Oracle Real Application Clustersの操作

- ジョブの停止

- DBMS_JOBサブプログラムの要約

- BROKENプロシージャ

- CHANGEプロシージャ

- INSTANCEプロシージャ

- INTERVALプロシージャ

- NEXT_DATEプロシージャ

- REMOVEプロシージャ

- RUNプロシージャ

- SUBMITプロシージャ

- USER_EXPORTプロシージャ

- WHATプロシージャ

85 DBMS_LDAP

- DBMS_LDAPのドキュメント

86 DBMS_LDAP_UTL

- DBMS_LDAP_UTLのドキュメント

87 DBMS_LIBCACHE

- DBMS_LIBCACHEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_LIBCACHEサブプログラムの要約

- COMPILE_FROM_REMOTEプロシージャ

88 DBMS_LOB

- DBMS_LOBの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ・タイプ

- 使用上の注意

- 内部LOB

- 外部LOB

- 一時LOB

- ルールおよび制限

- 一般的なルールおよび制限

- 外部ファイル(BFILE)に固有のルールと制限

- 最大LOBサイズ

- 最大バッファ・サイズ

- 例外

- DBMS_LOBサブプログラムの要約

- APPENDプロシージャ

- CLOSEプロシージャ

- COMPAREファンクション

- CONVERTTOBLOBプロシージャ

- CONVERTTOCLOBプロシージャ

- COPYプロシージャ

- COPY_DBFS_LINKプロシージャ

- COPY_FROM_DBFS_LINK

- CREATETEMPORARYプロシージャ

- DBFS_LINK_GENERATE_PATHファンクション

- ERASEプロシージャ

- FILECLOSEプロシージャ

- FILECLOSEALLプロシージャ

- FILEEXISTSファンクション

- FILEGETNAMEプロシージャ

- FILEISOPENファンクション

- FILEOPENプロシージャ

- FRAGMENT_DELETEプロシージャ

- FRAGMENT_INSERTプロシージャ

- FRAGMENT_MOVEプロシージャ

- FRAGMENT_REPLACEプロシージャ

- FREETEMPORARYプロシージャ

- GET_DBFS_LINKファンクション

- GET_DBFS_LINK_STATEプロシージャ

- GETCONTENTTYPEファンクション

- GET_STORAGE_LIMITファンクション

- GETCHUNKSIZEファンクション

- GETLENGTHファンクション

- GETOPTIONSファンクション

- INSTRファンクション

- ISOPENファンクション

- ISSECUREFILEファンクション

- ISTEMPORARYファンクション

- LOADBLOBFROMFILEプロシージャ

- LOADCLOBFROMFILEプロシージャ

- LOADFROMFILEプロシージャ

- MOVE_TO_DBFS_LINKプロシージャ

- OPENプロシージャ

- READプロシージャ

- SET_DBFS_LINKプロシージャ

- SETCONTENTTYPEプロシージャ

- SETOPTIONSプロシージャ

- SUBSTRファンクション

- TRIMプロシージャ

- WRITEプロシージャ

- WRITEAPPENDプロシージャ

89 DBMS_LOCK

- DBMS_LOCKの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ルールおよび制限

- 使用上の注意

- DBMS_LOCKサブプログラムの要約

- ALLOCATE_UNIQUEプロシージャ

- CONVERTファンクション

- RELEASEファンクション

- REQUESTファンクション

- SLEEPプロシージャ

90 DBMS_LOGMNR

- DBMS_LOGMNRの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_LOGMNRサブプログラムの要約

- ADD_LOGFILEプロシージャ

- COLUMN_PRESENTファンクション

- END_LOGMNRプロシージャ

- MINE_VALUEファンクション

- REMOVE_LOGFILEプロシージャ

- START_LOGMNRプロシージャ

91 DBMS_LOGMNR_D

- DBMS_LOGMNR_Dの使用方法

- 概要

- セキュリティ・モデル

- DBMS_LOGMNR_Dサブプログラムの要約

- BUILDプロシージャ

- SET_TABLESPACEプロシージャ

92 DBMS_LOGSTDBY

- DBMS_LOGSTDBYの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_LOGSTDBYサブプログラムの要約

- APPLY_SETプロシージャ

- APPLY_UNSETプロシージャ

- BUILDプロシージャ

- EDS_ADD_TABLE

- EDS_EVOLVE_AUTOMATIC

- EDS_EVOLVE_MANUAL

- EDS_REMOVE_TABLE

- INSTANTIATE_TABLEプロシージャ

- IS_APPLY_SERVERファンクション

- MAP_PRIMARY_SCNファンクション

- PREPARE_FOR_NEW_PRIMARYプロシージャ

- PURGE_SESSIONプロシージャ

- REBUILDプロシージャ

- SET_TABLESPACEプロシージャ

- SKIPプロシージャ

- SKIP_ERRORプロシージャ

- SKIP_TRANSACTIONプロシージャ

- UNSKIPプロシージャ

- UNSKIP_ERRORプロシージャ

- UNSKIP_TRANSACTIONプロシージャ

93 DBMS_LOGSTDBY_CONTEXT

- DBMS_LOGSTDBY_CONTEXTの使用方法

- 概要

- セキュリティ・モデル

- DBMS_LOGSTDBY_CONTEXTサブプログラムの概要

- CLEAR_ALL_CONTEXTプロシージャ

- CLEAR_CONTEXTプロシージャ

- GET_CONTEXTプロシージャ

- SET_CONTEXTプロシージャ

94 DBMS_METADATA

- DBMS_METADATAの使用方法

- 概要

- メタデータの取出し

- XMLの送信

- セキュリティ・モデル

- ルールおよび制限

- データ構造: オブジェクト・タイプおよび表タイプ

- サブプログラムのグループ化

- データベースから複数のオブジェクトを取り出すためのサブプログラム

- データベースにXMLを送信するためのサブプログラム

- すべてのDBMS_METADATAサブプログラムの要約

- ADD_TRANSFORMファンクション

- CLOSEプロシージャ

- CONVERTファンクションおよびプロシージャ

- FETCH_xxxファンクションおよびプロシージャ

- GET_xxxファンクション

- GET_QUERYファンクション

- OPENファンクション

- OPENWファンクション

- PUTファンクション

- SET_COUNTプロシージャ

- SET_FILTERプロシージャ

- SET_PARSE_ITEMプロシージャ

- SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ

95 DBMS_METADATA_DIFF

- DBMS_METADATA_DIFFの使用方法

- 概要

- セキュリティ・モデル

- オブジェクトをフェッチおよび比較するためのAPIの参照

- DBMS_METADATA_DIFFサブプログラムの要約

- OPENCファンクション

- ADD_DOCUMENTプロシージャ

- FETCH_CLOBファンクションおよびプロシージャ

- CLOSEプロシージャ

96 DBMS_MGD_ID_UTL

- DBMS_MGD_ID_UTLの使用方法

- セキュリティ・モデル

- 定数

- 例外

- DBMS_MGD_ID_UTLサブプログラムの要約

- ADD_SCHEMEプロシージャ

- CREATE_CATEGORYファンクション

- EPC_TO_ORACLE_SCHEMEファンクション

- GET_CATEGORY_IDファンクション

- GET_COMPONENTSファンクション

- GET_ENCODINGSファンクション

- GET_JAVA_LOGGING_LEVELファンクション

- GET_PLSQL_LOGGING_LEVELファンクション

- GET_SCHEME_NAMESファンクション

- GET_TDT_XMLファンクション

- GET_VALIDATORファンクション

- REFRESH_CATEGORYファンクション

- REMOVE_CATEGORYプロシージャ

- REMOVE_PROXYプロシージャ

- REMOVE_SCHEMEプロシージャ

- SET_JAVA_LOGGING_LEVELプロシージャ

- SET_PLSQL_LOGGING_LEVELプロシージャ

- SET_PROXYプロシージャ

- VALIDATE_SCHEMEファンクション

97 DBMS_MGWADM

- DBMS_MGWADMの使用方法

- セキュリティ・モデル

- 推奨されないサブプログラム

- 定数

- データ構造

- SYS.MGW_MQSERIES_PROPERTIESオブジェクト・タイプ

- SYS.MGW_PROPERTIESオブジェクト・タイプ

- SYS.MGW_PROPERTYオブジェクト・タイプ

- SYS.MGW_TIBRV_PROPERTIESオブジェクト・タイプ

- DBMS_MGWADMサブプログラムの要約

- ADD_SUBSCRIBERプロシージャ

- ALTER_AGENTプロシージャ

- ALTER_JOBプロシージャ

- TIB/Rendezvous用のALTER_MSGSYSTEM_LINKプロシージャ

- WebSphere MQ用のALTER_MSGSYSTEM_LINKプロシージャ

- ALTER_PROPAGATION_SCHEDULEプロシージャ

- ALTER_SUBSCRIBERプロシージャ

- CLEANUP_GATEWAYプロシージャ

- CREATE_AGENTプロシージャ

- CREATE_JOBプロシージャ

- TIB/Rendezvous用のCREATE_MSGSYSTEM_LINKプロシージャ

- WebSphere MQ用のCREATE_MSGSYSTEM_LINKプロシージャ

- DB_CONNECT_INFOプロシージャ

- DISABLE_JOBプロシージャ

- DISABLE_PROPAGATION_SCHEDULEプロシージャ

- ENABLE_JOBプロシージャ

- ENABLE_PROPAGATION_SCHEDULEプロシージャ

- REGISTER_FOREIGN_QUEUEプロシージャ

- REMOVE_AGENTプロシージャ

- REMOVE_JOBプロシージャ

- REMOVE_MSGSYSTEM_LINKプロシージャ

- REMOVE_OPTIONプロシージャ

- REMOVE_SUBSCRIBERプロシージャ

- RESET_JOBプロシージャ

- RESET_SUBSCRIBERプロシージャ

- SCHEDULE_PROPAGATIONプロシージャ

- SET_LOG_LEVELプロシージャ

- SET_OPTIONプロシージャ

- SHUTDOWNプロシージャ

- STARTUPプロシージャ

- UNREGISTER_FOREIGN_QUEUEプロシージャ

- UNSCHEDULE_PROPAGATIONプロシージャ

98 DBMS_MGWMSG

- DBMS_MGWMSGの使用方法

- セキュリティ・モデル

- 定数

- タイプ

- SYS.MGW_NAME_VALUE_Tタイプ

- SYS.MGW_NAME_TYPE_ARRAY_Tタイプ

- SYS.MGW_TEXT_VALUE_Tタイプ

- SYS.MGW_RAW_VALUE_Tタイプ

- SYS.MGW_BASIC_MSG_Tタイプ

- SYS.MGW_NUMBER_ARRAY_Tタイプ

- SYS.MGW_TIBRV_FIELD_Tタイプ

- SYS.MGW_TIBRV_MSG_Tタイプ

- DBMS_MGWMSGサブプログラムの要約

- LCR_TO_XMLファンクション

- NVARRAY_ADDプロシージャ

- NVARRAY_FIND_NAMEファンクション

- NVARRAY_FIND_NAME_TYPEファンクション

- NVARRAY_GETファンクション

- NVARRAY_GET_BOOLEANファンクション

- NVARRAY_GET_BYTEファンクション

- NVARRAY_GET_DATEファンクション

- NVARRAY_GET_DOUBLEファンクション

- NVARRAY_GET_FLOATファンクション

- NVARRAY_GET_INTEGERファンクション

- NVARRAY_GET_LONGファンクション

- NVARRAY_GET_RAWファンクション

- NVARRAY_GET_SHORTファンクション

- NVARRAY_GET_TEXTファンクション

- XML_TO_LCRファンクション

99 DBMS_MONITOR

- DBMS_MONITORサブプログラムの要約

- CLIENT_ID_STAT_DISABLEプロシージャ

- CLIENT_ID_STAT_ENABLEプロシージャ

- CLIENT_ID_TRACE_DISABLEプロシージャ

- CLIENT_ID_TRACE_ENABLEプロシージャ

- DATABASE_TRACE_DISABLEプロシージャ

- DATABASE_TRACE_ENABLEプロシージャ

- SERV_MOD_ACT_STAT_DISABLEプロシージャ

- SERV_MOD_ACT_STAT_ENABLEプロシージャ

- SERV_MOD_ACT_TRACE_DISABLEプロシージャ

- SERV_MOD_ACT_TRACE_ENABLEプロシージャ

- SESSION_TRACE_DISABLEプロシージャ

- SESSION_TRACE_ENABLEプロシージャ

100 DBMS_MVIEW

- DBMS_MVIEWの使用方法

- 使用上の注意

- セキュリティ・モデル

- ルールおよび制限

- DBMS_MVIEWサブプログラムの要約

- BEGIN_TABLE_REORGANIZATIONプロシージャ

- END_TABLE_REORGANIZATIONプロシージャ

- ESTIMATE_MVIEW_SIZEプロシージャ

- EXPLAIN_MVIEWプロシージャ

- EXPLAIN_REWRITEプロシージャ

- I_AM_A_REFRESHファンクション

- PMARKERファンクション

- PURGE_DIRECT_LOAD_LOGプロシージャ

- PURGE_LOGプロシージャ

- PURGE_MVIEW_FROM_LOGプロシージャ

- REFRESHプロシージャ

- REFRESH_ALL_MVIEWSプロシージャ

- REFRESH_DEPENDENTプロシージャ

- REGISTER_MVIEWプロシージャ

- UNREGISTER_MVIEWプロシージャ

101 DBMS_NETWORK_ACL_ADMIN

- DBMS_NETWORK_ACL_ADMINの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- 例外

- 例

- DBMS_NETWORK_ACL_ADMINサブプログラムの要約

- ADD_PRIVILEGEプロシージャ

- APPEND_HOST_ACEプロシージャ

- APPEND_HOST_ACLプロシージャ

- APPEND_WALLET_ACEプロシージャ

- APPEND_WALLET_ACLプロシージャ

- ASSIGN_ACLプロシージャ

- ASSIGN_WALLET_ACLプロシージャ

- CHECK_PRIVILEGEファンクション

- CHECK_PRIVILEGE_ACLIDファンクション

- CREATE_ACLプロシージャ

- DELETE_PRIVILEGEプロシージャ

- DROP_ACLプロシージャ

- REMOVE_HOST_ACEプロシージャ

- REMOVE_WALLET_ACEプロシージャ

- SET_HOST_ACLプロシージャ

- SET_WALLET_ACLプロシージャ

- UNASSIGN_ACLプロシージャ

- UNASSIGN_WALLET_ACLプロシージャ

102 DBMS_NETWORK_ACL_UTILITY

- DBMS_NETWORK_ACL_UTILITYの使用方法

- セキュリティ・モデル

- 例

- DBMS_NETWORK_ACL_UTILITYサブプログラムの要約

- CONTAINS_HOSTファンクション

- DOMAIN_LEVELファンクション

- DOMAINSファンクション

- EQUALS_HOSTファンクション

103 DBMS_ODCI

- DBMS_ODCIサブプログラムの要約

- ESTIMATE_CPU_UNITSファンクション

104 DBMS_OFFLINE_OG

- DBMS_OFFLINE_OGのドキュメント

105 DBMS_OUTLN

- DBMS_OUTLNの使用方法

- 概要

- セキュリティ・モデル

- DBMS_OUTLNサブプログラムの要約

- CLEAR_USEDプロシージャ

- CREATE_OUTLINEプロシージャ

- DROP_BY_CATプロシージャ

- DROP_UNUSEDプロシージャ

- EXACT_TEXT_SIGNATURESプロシージャ

- UPDATE_BY_CATプロシージャ

- UPDATE_SIGNATURESプロシージャ

106 DBMS_OUTPUT

- DBMS_OUTPUTの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例外

- ルールおよび制限

- 例

- データ構造

- CHARARR表タイプ

- DBMSOUTPUT_LINESARRAYオブジェクト・タイプ

- DBMS_OUTPUTサブプログラムの要約

- DISABLEプロシージャ

- ENABLEプロシージャ

- GET_LINEプロシージャ

- GET_LINESプロシージャ

- NEW_LINEプロシージャ

- PUTプロシージャ

- PUT_LINEプロシージャ

107 DBMS_PARALLEL_EXECUTE

- DBMS_PARALLEL_EXECUTEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 例外

- 例

- DBMS_PARALLEL_EXECUTEサブプログラムの要約

- ADM_DROP_CHUNKSプロシージャ

- ADM_DROP_TASKプロシージャ

- ADM_TASK_STATUSファンクション

- ADM_STOP_TASKプロシージャ

- CREATE_TASKプロシージャ

- CREATE_CHUNKS_BY_NUMBER_COLプロシージャ

- CREATE_CHUNKS_BY_ROWIDプロシージャ

- CREATE_CHUNKS_BY_SQLプロシージャ

- DROP_TASKプロシージャ

- DROP_CHUNKSプロシージャ

- GENERATE_TASK_NAMEファンクション

- GET_NUMBER_COL_CHUNKプロシージャ

- GET_ROWID_CHUNKプロシージャ

- PURGE_PROCESSED_CHUNKSプロシージャ

- RESUME_TASKプロシージャ

- RUN_TASKプロシージャ

- SET_CHUNK_STATUSプロシージャ

- STOP_TASKプロシージャ

- TASK_STATUSプロシージャ

108 DBMS_PART

- DBMS_PARTの使用

- セキュリティ・モデル

- 使用上の注意

- DBMS_PARTサブプログラムの要約

- CLEANUP_GIDXプロシージャ

- CLEANUP_ONLINE_OPプロシージャ

109 DBMS_PCLXUTIL

- DBMS_PCLXUTILの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- DBMS_PCLXUTILサブプログラムの要約

- BUILD_PART_INDEXプロシージャ

110 DBMS_PDB

- DBMS_PDBの使用

- 概要

- セキュリティ・モデル

- DBMS_PDBサブプログラムの要約

- CHECK_PLUG_COMPATIBILITYファンクション

- DESCRIBEプロシージャ

- RECOVERプロシージャ

111 DBMS_PERF

- DBMS_PERFの使用

- 概要

- セキュリティ・モデル

- DBMS_PERFサブプログラムの概要

- REPORT_PERFHUBファンクション

- REPORT_SESSIONファンクション

- REPORT_SQLファンクション

112 DBMS_PIPE

- DBMS_PIPEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- パブリック・パイプ

- パイプへの書込みおよび読込み

- プライベート・パイプ

- 例外

- 例

- 例1: デバッグ - PL/SQL

- 例2: デバッグ - Pro*C

- 例3: システム・コマンドの実行

- 例4: 外部サービス・インタフェース

- DBMS_PIPEサブプログラムの要約

- CREATE_PIPEファンクション

- NEXT_ITEM_TYPEファンクション

- PACK_MESSAGEプロシージャ

- PURGEプロシージャ

- RECEIVE_MESSAGEファンクション

- RESET_BUFFERプロシージャ

- REMOVE_PIPEファンクション

- SEND_MESSAGEファンクション

- UNIQUE_SESSION_NAMEファンクション

- UNPACK_MESSAGEプロシージャ

113 DBMS_PREDICTIVE_ANALYTICS

- DBMS_PREDICTIVE_ANALYTICSの使用方法

- 概要

- セキュリティ・モデル

- DBMS_PREDICTIVE_ANALYTICSサブプログラムの要約

- EXPLAINプロシージャ

- PREDICTプロシージャ

- PROFILEプロシージャ

114 DBMS_PREPROCESSOR

- DBMS_PREPROCESSORの使用方法

- 概要

- 使用上の注意

- データ構造

- SOURCE_LINES_T表タイプ

- DBMS_PREPROCESSORサブプログラムの要約

- GET_POST_PROCESSED_SOURCEファンクション

- PRINT_POST_PROCESSED_SOURCEプロシージャ

115 DBMS_PRIVILEGE_CAPTURE

- DBMS_PRIVILEGE_CAPTUREの使用

- 概要

- セキュリティ・モデル

- 定数

- 例

- DBMS_PRIVILEGE_CAPTUREサブプログラムの要約

- CREATE_CAPTUREプロシージャ

- DISABLE_CAPTUREプロシージャ

- DROP_CAPTUREプロシージャ

- ENABLE_CAPTUREプロシージャ

- GENERATE_RESULTプロシージャ

116 DBMS_PROFILER

- DBMS_PROFILERの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- 一般的な実行

- 出力内容の解釈

- 2通りの例外生成方法

- 例外

- DBMS_PROFILERサブプログラムの要約

- FLUSH_DATAファンクションおよびプロシージャ

- GET_VERSIONプロシージャ

- INTERNAL_VERSION_CHECKファンクション

- PAUSE_PROFILERファンクションおよびプロシージャ

- RESUME_PROFILERファンクションおよびプロシージャ

- START_PROFILERファンクションおよびプロシージャ

- STOP_PROFILERファンクションおよびプロシージャ

117 DBMS_PROPAGATION_ADM

- DBMS_PROPAGATION_ADMの使用方法

- 概要

- セキュリティ・モデル

- DBMS_PROPAGATION_ADMサブプログラムの要約

- ALTER_PROPAGATIONプロシージャ

- CREATE_PROPAGATIONプロシージャ

- DROP_PROPAGATIONプロシージャ

- START_PROPAGATIONプロシージャ

- STOP_PROPAGATIONプロシージャ

118 DBMS_QOPATCH

- DBMS_QOPATCHの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- エラー・メッセージ

- DBMS_QOPATCHサブプログラムの要約

- GET_OPATCH_BUGSファンクション

- GET_OPATCH_COUNTファンクション

- GET_OPATCH_DATAファンクション

- GET_OPATCH_FILESファンクション

- GET_OPATCH_INSTALL_INFOファンクション

- GET_OPATCH_LISTファンクション

- GET_OPATCH_LSINVENTORY

- GET_OPATCH_OLAYSファンクション

- GET_OPATCH_PREQSファンクション

- GET_OPATCH_XSLT

- GET_PENDING_ACTIVITYファンクション

- GET_SQLPATCH_STATUSプロシージャ

- IS_PATCH_INSTALLEDファンクション

- PATCH_CONFLICT_DETECTIONファンクション

- SET_CURRENT_OPINSTプロシージャ

119 DBMS_RANDOM

- DBMS_RANDOMの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

- DBMS_RANDOMサブプログラムの要約

- INITIALIZEプロシージャ

- NORMALファンクション

- RANDOMファンクション

- SEEDプロシージャ

- STRINGファンクション

- TERMINATEプロシージャ

- VALUEファンクション

120 DBMS_RECTIFIER_DIFF

- DBMS_RECTIFIER_DIFFのドキュメント

121 DBMS_REDACT

- DBMS_REDACTの使用

- 概要

- セキュリティ・モデル

- 定数

- プロシージャの使用

- DBMS_REDACTサブプログラムの要約

- ADD_POLICYプロシージャ

- ALTER_POLICYプロシージャ

- DISABLE_POLICYプロシージャ

- DROP_POLICYプロシージャ

- ENABLE_POLICYプロシージャ

- UPDATE_FULL_REDACTION_VALUESプロシージャ

122 DBMS_REDEFINITION

- DBMS_REDEFINITIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- ルールおよび制限

- DBMS_REDEFINITIONサブプログラムの要約

- ABORT_REDEF_TABLEプロシージャ

- CAN_REDEF_TABLEプロシージャ

- COPY_TABLE_DEPENDENTSプロシージャ

- FINISH_REDEF_TABLEプロシージャ

- REDEF_TABLEプロシージャ

- REGISTER_DEPENDENT_OBJECTプロシージャ

- START_REDEF_TABLEプロシージャ

- SYNC_INTERIM_TABLEプロシージャ

- UNREGISTER_DEPENDENT_OBJECTプロシージャ

123 DBMS_REFRESH

- DBMS_REFRESHのドキュメント

124 DBMS_REPAIR

- DBMS_REPAIRの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

- DBMS_REPAIRサブプログラムの要約

- ADMIN_TABLESプロシージャ

- CHECK_OBJECTプロシージャ

- DUMP_ORPHAN_KEYSプロシージャ

- FIX_CORRUPT_BLOCKSプロシージャ

- ONLINE_INDEX_CLEANファンクション

- REBUILD_FREELISTSプロシージャ

- SEGMENT_FIX_STATUSプロシージャ

- SKIP_CORRUPT_BLOCKSプロシージャ

125 DBMS_REPCAT

- DBMS_REPCATのドキュメント

126 DBMS_REPCAT_ADMIN

- DBMS_REPCAT_ADMINのドキュメント

127 DBMS_REPCAT_INSTANTIATE

- DBMS_REPCAT_INSTANTIATEのドキュメント

128 DBMS_REPCAT_RGT

- DBMS_REPCAT_RGTのドキュメント

129 DBMS_REPUTIL

- DBMS_REPUTILのドキュメント

130 DBMS_RESCONFIG

- DBMS_RESCONFIGの使用方法

- 概要

- DBMS_RESCONFIGサブプログラムの要約

- ADDREPOSITORYRESCONFIGプロシージャ

- ADDRESCONFIGプロシージャ

- APPENDRESCONFIGプロシージャ

- DELETEREPOSITORYRESCONFIGプロシージャ

- DELETERESCONFIGプロシージャ

- GETLISTENERSファンクション

- GETREPOSITORYRESCONFIGファンクション

- GETREPOSITORYRESCONFIGPATHSファンクション

- GETRESCONFIGファンクション

- GETRESCONFIGPATHSファンクション

- PATCHREPOSITORYRESCONFIGLISTプロシージャ

131 DBMS_RESOURCE_MANAGER

- DBMS_RESOURCE_MANAGERの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- DBMS_RESOURCE_MANAGERサブプログラムの要約

- BEGIN_SQL_BLOCKプロシージャ

- CALIBRATE_IOプロシージャ

- CLEAR_PENDING_AREAプロシージャ

- CREATE_CATEGORYプロシージャ

- CREATE_CDB_PLANプロシージャ

- CREATE_CDB_PLAN_DIRECTIVEプロシージャ

- CREATE_CONSUMER_GROUPプロシージャ

- CREATE_PENDING_AREAプロシージャ

- CREATE_PLANプロシージャ

- CREATE_PLAN_DIRECTIVEプロシージャ

- CREATE_SIMPLE_PLANプロシージャ

- DELETE_CATEGORYプロシージャ

- DELETE_CDB_PLANプロシージャ

- DELETE_CDB_PLAN_DIRECTIVEプロシージャ

- DELETE_CONSUMER_GROUPプロシージャ

- DELETE_PLANプロシージャ

- DELETE_PLAN_CASCADEプロシージャ

- DELETE_PLAN_DIRECTIVEプロシージャ

- END_SQL_BLOCKプロシージャ

- SET_CONSUMER_GROUP_MAPPINGプロシージャ

- SET_CONSUMER_GROUP_MAPPING_PRIプロシージャ

- SET_INITIAL_CONSUMER_GROUPプロシージャ

- SUBMIT_PENDING_AREAプロシージャ

- SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャ

- SWITCH_CONSUMER_GROUP_FOR_USERプロシージャ

- SWITCH_PLANプロシージャ

- UPDATE_CATEGORYプロシージャ

- UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャ

- UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャ

- UPDATE_CDB_PLANプロシージャ

- UPDATE_CDB_PLAN_DIRECTIVEプロシージャ

- UPDATE_CONSUMER_GROUPプロシージャ

- UPDATE_PLANプロシージャ

- UPDATE_PLAN_DIRECTIVEプロシージャ

- VALIDATE_PENDING_AREAプロシージャ

132 DBMS_RESOURCE_MANAGER_PRIVS

- DBMS_RESOURCE_MANAGER_PRIVSサブプログラムの要約

- GRANT_SWITCH_CONSUMER_GROUPプロシージャ

- GRANT_SYSTEM_PRIVILEGEプロシージャ

- REVOKE_SWITCH_CONSUMER_GROUPプロシージャ

- REVOKE_SYSTEM_PRIVILEGEプロシージャ

133 DBMS_RESULT_CACHE

- DBMS_RESULT_CACHEの使用方法

- セキュリティ・モデル

- 定数

- DBMS_RESULT_CACHEサブプログラムの要約

- BYPASSプロシージャ

- FLUSHファンクションおよびプロシージャ

- INVALIDATEファンクションおよびプロシージャ

- INVALIDATE_OBJECTファンクションおよびプロシージャ

- MEMORY_REPORTプロシージャ

- STATUSファンクション

134 DBMS_RESUMABLE

- DBMS_RESUMABLEの使用方法

- 使用上の注意

- DBMS_RESUMABLEサブプログラムの要約

- ABORTプロシージャ

- GET_SESSION_TIMEOUTファンクション

- GET_TIMEOUTファンクション

- SET_SESSION_TIMEOUTプロシージャ

- SET_TIMEOUTプロシージャ

- SPACE_ERROR_INFOファンクション

135 DBMS_RLS

- DBMS_RLSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- ルールおよび制限

- DBMS_RLSサブプログラムの要約

- ADD_GROUPED_POLICYプロシージャ

- ADD_POLICYプロシージャ

- ADD_POLICY_CONTEXTプロシージャ

- ALTER_POLICYプロシージャ

- ALTER_GROUPED_POLICYプロシージャ

- CREATE_POLICY_GROUPプロシージャ

- DELETE_POLICY_GROUPプロシージャ

- DISABLE_GROUPED_POLICYプロシージャ

- DROP_GROUPED_POLICYプロシージャ

- DROP_POLICYプロシージャ

- DROP_POLICY_CONTEXTプロシージャ

- ENABLE_GROUPED_POLICYプロシージャ

- ENABLE_POLICYプロシージャ

- REFRESH_GROUPED_POLICYプロシージャ

- REFRESH_POLICYプロシージャ

136 DBMS_ROLLING

- DBMS_ROLLINGの使用

- 概要

- セキュリティ・モデル

- DBMS_ROLLINGサブプログラムの要約

- INIT_PLANプロシージャ

- DESTROY_PLANプロシージャ

- BUILD_PLANプロシージャ

- SET_PARAMETERプロシージャ

- START_PLANプロシージャ

- SWITCHOVERプロシージャ

- FINISH_PLANプロシージャ

- ROLLBACK_PLANプロシージャ

137 DBMS_ROWID

- DBMS_ROWIDの使用方法

- セキュリティ・モデル

- タイプ

- 拡張タイプと制限タイプ

- 検証タイプ

- オブジェクト・タイプ

- 変換タイプ

- 例外

- 使用上の注意

- 例

- DBMS_ROWIDサブプログラムの要約

- ROWID_BLOCK_NUMBERファンクション

- ROWID_CREATEファンクション

- ROWID_INFOプロシージャ

- ROWID_OBJECTファンクション

- ROWID_RELATIVE_FNOファンクション

- ROWID_ROW_NUMBERファンクション

- ROWID_TO_ABSOLUTE_FNOファンクション

- ROWID_TO_EXTENDEDファンクション

- ROWID_TO_RESTRICTEDファンクション

- ROWID_TYPEファンクション

- ROWID_VERIFYファンクション

138 DBMS_RULE

- DBMS_RULEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_RULEサブプログラムの要約

- CLOSE_ITERATORプロシージャ

- EVALUATEプロシージャ

- EVALUATE_EXPRESSIONプロシージャ

- GET_NEXT_HITファンクション

- IS_FASTプロシージャ

139 DBMS_RULE_ADM

- DBMS_RULE_ADMの使用方法

- 概要

- セキュリティ・モデル

- DBMS_RULE_ADMサブプログラムの要約

- ADD_RULEプロシージャ

- ALTER_EVALUATION_CONTEXTプロシージャ

- ALTER_RULEプロシージャ

- CREATE_EVALUATION_CONTEXTプロシージャ

- CREATE_RULEプロシージャ

- CREATE_RULE_SETプロシージャ

- DROP_EVALUATION_CONTEXTプロシージャ

- DROP_RULEプロシージャ

- DROP_RULE_SETプロシージャ

- GRANT_OBJECT_PRIVILEGEプロシージャ

- GRANT_SYSTEM_PRIVILEGEプロシージャ

- REMOVE_RULEプロシージャ

- REVOKE_OBJECT_PRIVILEGEプロシージャ

- REVOKE_SYSTEM_PRIVILEGEプロシージャ

140 DBMS_SCHEDULER

- DBMS_SCHEDULERの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- ルールおよび制限

- 使用上の注意

- データ構造

- JOBARGオブジェクト・タイプ

- JOBARGコンストラクタ・ファンクション

- JOBARG_ARRAY表タイプ

- JOB_DEFINITIONオブジェクト・タイプ

- JOB_DEFINITIONコンストラクタ・ファンクション

- JOB_DEFINITION_ARRAY表タイプ

- JOBATTRオブジェクト・タイプ

- JOBATTRコンストラクタ・ファンクション

- JOBATTR_ARRAY表タイプ

- SCHEDULER$_STEP_TYPEオブジェクト・タイプ

- SCHEDULER$_STEP_TYPE_LIST表タイプ

- SCHEDULER$_EVENT_INFOオブジェクト・タイプ

- SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプ

- SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプ

- DBMS_SCHEDULERサブプログラムの要約

- ADD_EVENT_QUEUE_SUBSCRIBERプロシージャ

- ADD_GROUP_MEMBERプロシージャ

- ADD_JOB_EMAIL_NOTIFICATIONプロシージャ

- ALTER_CHAINプロシージャ

- ALTER_RUNNING_CHAINプロシージャ

- CLOSE_WINDOWプロシージャ

- COPY_JOBプロシージャ

- CREATE_CHAINプロシージャ

- CREATE_CREDENTIALプロシージャ

- CREATE_DATABASE_DESTINATIONプロシージャ

- CREATE_EVENT_SCHEDULEプロシージャ

- パラメータ

- 使用上の注意

- CREATE_FILE_WATCHERプロシージャ

- CREATE_GROUPプロシージャ

- CREATE_JOBプロシージャ

- CREATE_JOB_CLASSプロシージャ

- CREATE_JOBSプロシージャ

- CREATE_PROGRAMプロシージャ

- CREATE_SCHEDULEプロシージャ

- CREATE_WINDOWプロシージャ

- DEFINE_ANYDATA_ARGUMENTプロシージャ

- DEFINE_CHAIN_EVENT_STEPプロシージャ

- DEFINE_CHAIN_RULEプロシージャ

- DEFINE_CHAIN_STEPプロシージャ

- DEFINE_METADATA_ARGUMENTプロシージャ

- DEFINE_PROGRAM_ARGUMENTプロシージャ

- DISABLEプロシージャ

- DROP_AGENT_DESTINATIONプロシージャ

- DROP_CHAINプロシージャ

- DROP_CHAIN_RULEプロシージャ

- DROP_CHAIN_STEPプロシージャ

- DROP_CREDENTIALプロシージャ

- DROP_DATABASE_DESTINATIONプロシージャ

- DROP_FILE_WATCHERプロシージャ

- DROP_GROUPプロシージャ

- DROP_JOBプロシージャ

- DROP_JOB_CLASSプロシージャ

- DROP_PROGRAMプロシージャ

- DROP_PROGRAM_ARGUMENTプロシージャ

- DROP_SCHEDULEプロシージャ

- DROP_WINDOWプロシージャ

- ENABLEプロシージャ

- END_DETACHED_JOB_RUNプロシージャ

- EVALUATE_CALENDAR_STRINGプロシージャ

- EVALUATE_RUNNING_CHAINプロシージャ

- GENERATE_JOB_NAMEファンクション

- GET_AGENT_INFOファンクション

- GET_AGENT_VERSIONファンクション

- GET_ATTRIBUTEプロシージャ

- GET_FILEプロシージャ

- GET_SCHEDULER_ATTRIBUTEプロシージャ

- OPEN_WINDOWプロシージャ

- PURGE_LOGプロシージャ

- PUT_FILEプロシージャ

- REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャ

- REMOVE_GROUP_MEMBERプロシージャ

- REMOVE_JOB_EMAIL_NOTIFICATIONプロシージャ

- RESET_JOB_ARGUMENT_VALUEプロシージャ

- RUN_CHAINプロシージャ

- RUN_JOBプロシージャ

- SET_AGENT_REGISTRATION_PASSプロシージャ

- SET_ATTRIBUTEプロシージャ

- SET_ATTRIBUTE_NULLプロシージャ

- SET_JOB_ANYDATA_VALUEプロシージャ

- SET_JOB_ARGUMENT_VALUEプロシージャ

- SET_JOB_ATTRIBUTESプロシージャ

- SET_RESOURCE_CONSTRAINTプロシージャ

- SET_SCHEDULER_ATTRIBUTEプロシージャ

- STOP_JOBプロシージャ

141 DBMS_SERVER_ALERT

- DBMS_SERVER_ALERTの使用方法

- セキュリティ・モデル

- オブジェクト・タイプ

- 関係演算子

- サポートされるメトリック

- DBMS_SERVER_ALERTサブプログラムの要約

- EXPAND_MESSAGEファンクション

- GET_THRESHOLDプロシージャ

- SET_THRESHOLDプロシージャ

142 DBMS_SERVICE

- DBMS_SERVICEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- プロシージャの使用

- 例外

- DBMS_SERVICEサブプログラムの要約

- CREATE_SERVICEプロシージャ

- DELETE_SERVICEプロシージャ

- DISCONNECT_SESSIONプロシージャ

- MODIFY_SERVICEプロシージャ

- START_SERVICEプロシージャ

- STOP_SERVICEプロシージャ

143 DBMS_SESSION

- DBMS_SESSIONの使用方法

- セキュリティ・モデル

- 使用上の注意

- データ構造

- INTEGER_ARRAY表タイプ

- LNAME_ARRAY表タイプ

- DBMS_SESSIONサブプログラムの要約

- CLEAR_ALL_CONTEXTプロシージャ

- CLEAR_CONTEXTプロシージャ

- CLEAR_IDENTIFIERプロシージャ

- CLOSE_DATABASE_LINKプロシージャ

- FREE_UNUSED_USER_MEMORYプロシージャ

- GET_PACKAGE_MEMORY_UTILIZATIONプロシージャ

- IS_ROLE_ENABLEDファンクション

- IS_SESSION_ALIVEファンクション

- LIST_CONTEXTプロシージャ

- MODIFY_PACKAGE_STATEプロシージャ

- SESSION_TRACE_DISABLEプロシージャ

- SESSION_TRACE_ENABLEプロシージャ

- RESET_PACKAGEプロシージャ

- SET_CONTEXTプロシージャ

- SET_EDITION_DEFERREDプロシージャ

- SET_IDENTIFIERプロシージャ

- SET_NLSプロシージャ

- SET_ROLEプロシージャ

- SET_SQL_TRACEプロシージャ

- SWITCH_CURRENT_CONSUMER_GROUPプロシージャ

- UNIQUE_SESSION_IDファンクション

144 DBMS_SHARED_POOL

- DBMS_SHARED_POOLの使用方法

- 概要

- 使用上の注意

- DBMS_SHARED_POOLサブプログラムの要約

- ABORTED_REQUEST_THRESHOLDプロシージャ

- KEEPプロシージャ

- MARKHOTプロシージャ

- PURGEプロシージャ

- SIZESプロシージャ

- UNKEEPプロシージャ

- UNMARKHOTプロシージャ

145 DBMS_SPACE

- DBMS_SPACEの使用方法

- セキュリティ・モデル

- データ構造

- CREATE_TABLE_COST_COLINFOオブジェクト・タイプ

- ASA_RECO_ROWレコード・タイプ

- ASA_RECO_ROW_TB表タイプ

- DBMS_SPACEサブプログラムの要約

- ASA_RECOMMENDATIONSファンクション

- CREATE_INDEX_COSTプロシージャ

- CREATE_TABLE_COSTプロシージャ

- FREE_BLOCKSプロシージャ

- ISDATAFILEDROPPABLE_NAMEプロシージャ

- OBJECT_DEPENDENT_SEGMENTSファンクション

- OBJECT_GROWTH_TRENDファンクション

- SPACE_USAGEプロシージャ

- UNUSED_SPACEプロシージャ

146 DBMS_SPACE_ADMIN

- DBMS_SPACE_ADMINの使用方法

- セキュリティ・モデル

- 定数

- 使用上の注意

- DBMS_SPACE_ADMINサブプログラムの要約

- ASSM_SEGMENT_VERIFYプロシージャ

- ASSM_TABLESPACE_VERIFYプロシージャ

- DROP_EMPTY_SEGMENTSプロシージャ

- MATERIALIZE_DEFERRED_SEGMENTSプロシージャ

- SEGMENT_CORRUPTプロシージャ

- SEGMENT_DROP_CORRUPTプロシージャ

- SEGMENT_DUMPプロシージャ

- SEGMENT_VERIFYプロシージャ

- TABLESPACE_FIX_BITMAPSプロシージャ

- TABLESPACE_FIX_SEGMENT_STATESプロシージャ

- TABLESPACE_MIGRATE_FROM_LOCALプロシージャ

- TABLESPACE_MIGRATE_TO_LOCALプロシージャ

- TABLESPACE_REBUILD_BITMAPSプロシージャ

- TABLESPACE_REBUILD_QUOTASプロシージャ

- TABLESPACE_RELOCATE_BITMAPSプロシージャ

- TABLESPACE_VERIFYプロシージャ

147 DBMS_SPD

- DBMS_SPDの使用

- 概要

- セキュリティ・モデル

- ビュー

- DBMS_SPDサブプログラムの要約

- ALTER_SQL_PLAN_DIRECTIVEプロシージャ

- CREATE_STGTAB_DIRECTIVEプロシージャ

- DROP_SQL_PLAN_DIRECTIVEプロシージャ

- FLUSH_SQL_PLAN_DIRECTIVEプロシージャ

- GET_PREFSファンクション

- PACK_STGTAB_DIRECTIVEファンクション

- SET_PREFSプロシージャ

- UNPACK_STGTAB_DIRECTIVEファンクション

148 DBMS_SPM

- DBMS_SPMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例

- データ構造

- NAMELIST表タイプ

- DBMS_SPMサブプログラムの要約

- ACCEPT_SQL_PLAN_BASELINEプロシージャ

- ALTER_SQL_PLAN_BASELINEファンクション

- CANCEL_EVOLVE_TASKプロシージャ

- CONFIGUREプロシージャ

- CREATE_EVOLVE_TASKファンクション

- CREATE_STGTAB_BASELINEプロシージャ

- DROP_EVOLVE_TASKプロシージャ

- DROP_SQL_PLAN_BASELINEファンクション

- EVOLVE_SQL_PLAN_BASELINEファンクション

- EXECUTE_EVOLVE_TASKファンクション

- IMPLEMENT_EVOLVE_TASKファンクション

- INTERRUPT_EVOLVE_TASKプロシージャ

- LOAD_PLANS_FROM_CURSOR_CACHEファンクション

- LOAD_PLANS_FROM_SQLSETファンクション

- MIGRATE_STORED_OUTLINEファンクション

- PACK_STGTAB_BASELINEファンクション

- RESET_EVOLVE_TASKプロシージャ

- RESUME_EVOLVE_TASKプロシージャ

- REPORT_AUTO_EVOLVE_TASKファンクション

- REPORT_EVOLVE_TASKファンクション

- SET_EVOLVE_TASK_PARAMETERプロシージャ

- UNPACK_STGTAB_BASELINEファンクション

149 DBMS_SQL

- DBMS_SQLの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例外

- 使用上の注意

- 実行フロー

- 問合せの処理

- 更新、挿入および削除の処理

- エラーの位置

- 例

- データ構造

- DESC_RECレコード・タイプ

- DESC_REC2レコード・タイプ

- DESC_REC3レコード・タイプ

- BFILE_TABLE表タイプ

- BINARY_DOUBLE_TABLE表タイプ

- BINARY_FLOAT_TABLE表タイプ

- BLOB_TABLE表タイプ

- CLOB_TABLE表タイプ

- DATE_TABLE表タイプ

- DESC_TAB表タイプ

- DESC_TAB2表タイプ

- DESC_TAB3表タイプ

- INTERVAL_DAY_TO_SECOND_TABLE表タイプ

- INTERVAL_YEAR_TO_MONTH_TABLE表タイプ

- NUMBER_TABLE表タイプ

- TIME_TABLE表タイプ

- TIME_WITH_TIME_ZONE_TABLE表タイプ

- TIMESTAMP_TABLE表タイプ

- TIMESTAMP_WITH_LTZ_TABLE表タイプ

- TIMESTAMP_WITH_TIME_ZONE_TABLE表タイプ

- UROWID_TABLE表タイプ

- VARCHAR2_TABLE表タイプ

- VARCHAR2A表タイプ

- VARCHAR2S表タイプ

- DBMS_SQLサブプログラムの要約

- BIND_ARRAYプロシージャ

- BIND_VARIABLEプロシージャ

- CLOSE_CURSORプロシージャ

- COLUMN_VALUEプロシージャ

- COLUMN_VALUE_LONGプロシージャ

- DEFINE_ARRAYプロシージャ

- DEFINE_COLUMNプロシージャ

- DEFINE_COLUMN_CHARプロシージャ

- DEFINE_COLUMN_LONGプロシージャ

- DEFINE_COLUMN_RAWプロシージャ

- DEFINE_COLUMN_ROWIDプロシージャ

- DESCRIBE_COLUMNSプロシージャ

- DESCRIBE_COLUMNS2プロシージャ

- DESCRIBE_COLUMNS3プロシージャ

- EXECUTEファンクション

- EXECUTE_AND_FETCHファンクション

- FETCH_ROWSファンクション

- GET_NEXT_RESULTプロシージャ

- IS_OPENファンクション

- LAST_ERROR_POSITIONファンクション

- LAST_ROW_COUNTファンクション

- LAST_ROW_IDファンクション

- LAST_SQL_FUNCTION_CODEファンクション

- OPEN_CURSORファンクション

- PARSEプロシージャ

- RETURN_RESULTプロシージャ

- TO_CURSOR_NUMBERファンクション

- TO_REFCURSORファンクション

- VARIABLE_VALUEプロシージャ

150 DBMS_SQL_TRANSLATOR

- DBMS_SQL_TRANSLATORの使用

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

- DBMS_SQL_TRANSLATORサブプログラムの要約

- CREATE_PROFILEプロシージャ

- DEREGISTER_SQL_TRANSLATIONプロシージャ

- DEREGISTER_ERROR_TRANSLATIONプロシージャ

- DROP_PROFILEプロシージャ

- ENABLE_ERROR_TRANSLATIONプロシージャ

- ENABLE_SQL_TRANSLATIONプロシージャ

- EXPORT_PROFILEプロシージャ

- IMPORT_PROFILEプロシージャ

- REGISTER_ERROR_TRANSLATIONプロシージャ

- REGISTER_SQL_TRANSLATIONプロシージャ

- SET_ATTRIBUTEプロシージャ

- SQL_HASHファンクション

- SQL_IDファンクション

- TRANSLATE_ERRORプロシージャ

- TRANSLATE_SQLプロシージャ

151 DBMS_SQL_MONITOR

- DBMS_SQL_MONITORの使用

- 概要

- セキュリティ・モデル

- 定数

- DBMS_SQL_MONITORサブプログラムの要約

- BEGIN_OPERATIONファンクション

- END_OPERATIONプロシージャ

- REPORT_SQL_MONITORファンクション

- REPORT_SQL_MONITOR_LISTファンクション

152 DBMS_SQLDIAG

- DBMS_SQLDIAGの使用方法

- 概要

- 定数

- 例

- DBMS_SQLDIAGサブプログラムの要約

- ACCEPT_SQL_PATCHファンクションおよびプロシージャ

- ALTER_SQL_PATCHプロシージャ

- CANCEL_DIAGNOSIS_TASKプロシージャ

- CREATE_DIAGNOSIS_TASKファンクション

- CREATE_STGTAB_SQLPATCHプロシージャ

- DROP_DIAGNOSIS_TASKプロシージャ

- DROP_SQL_PATCHプロシージャ

- EXECUTE_DIAGNOSIS_TASKプロシージャ

- EXPLAIN_SQL_TESTCASEファンクション

- EXPORT_SQL_TESTCASEプロシージャ

- EXPORT_SQL_TESTCASE_DIR_BY_INCファンクション

- EXPORT_SQL_TESTCASE_DIR_BY_TXTファンクション

- GET_FIX_CONTROLファンクション

- GET_SQLファンクション

- IMPORT_SQL_TESTCASEプロシージャ

- INCIDENTID_2_SQLプロシージャ

- INTERRUPT_DIAGNOSIS_TASKプロシージャ

- LOAD_SQLSET_FROM_TCBファンクション

- PACK_STGTAB_SQLPATCHプロシージャ

- REPLAY_SQL_TESTCASEプロシージャ

- REPORT_DIAGNOSIS_TASKファンクション

- RESET_DIAGNOSIS_TASKプロシージャ

- RESUME_DIAGNOSIS_TASKプロシージャ

- SET_DIAGNOSIS_TASK_PARAMETERプロシージャ

- UNPACK_STGTAB_SQLPATCHプロシージャ

153 DBMS_SQLPA

- DBMS_SQLPAの使用方法

- 概要

- セキュリティ・モデル

- DBMS_SQLPAサブプログラムの要約

- CANCEL_ANALYSIS_TASKプロシージャ

- CREATE_ANALYSIS_TASKファンクション

- DROP_ANALYSIS_TASKプロシージャ

- EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャ

- INTERRUPT_ANALYSIS_TASKプロシージャ

- REPORT_ANALYSIS_TASKファンクション

- RESET_ANALYSIS_TASKプロシージャ

- RESUME_ANALYSIS_TASKプロシージャ

- SET_ANALYSIS_TASK_PARAMETERプロシージャ

- SET_ANALYSIS_DEFAULT_PARAMETERプロシージャ

154 DBMS_SQLTUNE

- DBMS_SQLTUNEの使用方法

- 概要

- セキュリティ・モデル

- データ構造

- SQLSET_ROWオブジェクト・タイプ

- サブプログラム・グループ

- SQLチューニング・アドバイザ・サブプログラム

- SQLプロファイル・サブプログラム

- SQLチューニング・セット・サブプログラム

- リアルタイムSQL監視サブプログラム

- SQLパフォーマンス・レポート・サブプログラム

- DBMS_SQLTUNEサブプログラムの要約

- ACCEPT_ALL_SQL_PROFILESプロシージャ

- ACCEPT_SQL_PROFILEプロシージャおよびファンクション

- ADD_SQLSET_REFERENCEファンクション

- ALTER_SQL_PROFILEプロシージャ

- CANCEL_TUNING_TASKプロシージャ

- CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

- CREATE_SQL_PLAN_BASELINEプロシージャ

- CREATE_SQLSETプロシージャおよびファンクション

- CREATE_STGTAB_SQLPROFプロシージャ

- CREATE_STGTAB_SQLSETプロシージャ

- CREATE_TUNING_TASKファンクション

- DELETE_SQLSETプロシージャ

- DROP_SQL_PROFILEプロシージャ

- DROP_SQLSETプロシージャ

- DROP_TUNING_TASKプロシージャ

- EXECUTE_TUNING_TASKファンクションおよびプロシージャ

- IMPLEMENT_TUNING_TASKファンクション

- INTERRUPT_TUNING_TASKプロシージャ

- LOAD_SQLSETプロシージャ

- PACK_STGTAB_SQLPROFプロシージャ

- PACK_STGTAB_SQLSETプロシージャ

- REMAP_STGTAB_SQLPROFプロシージャ

- REMAP_STGTAB_SQLSETプロシージャ

- REMOVE_SQLSET_REFERENCEプロシージャ

- REPORT_AUTO_TUNING_TASKファンクション

- REPORT_SQL_DETAILファンクション

- REPORT_SQL_MONITORファンクション

- REPORT_SQL_MONITOR_LISTファンクション

- REPORT_TUNING_TASKファンクション

- RESET_TUNING_TASKプロシージャ

- RESUME_TUNING_TASKプロシージャ

- SCHEDULE_TUNING_TASKファンクション

- SCRIPT_TUNING_TASKファンクション

- SELECT_CURSOR_CACHEファンクション

- SELECT_SQL_TRACEファンクション

- SELECT_SQLPA_TASKファンクション

- SELECT_SQLSETファンクション

- SELECT_WORKLOAD_REPOSITORYファンクション

- SET_TUNING_TASK_PARAMETERプロシージャ

- SQLTEXT_TO_SIGNATUREファンクション

- UNPACK_STGTAB_SQLPROFプロシージャ

- UNPACK_STGTAB_SQLSETプロシージャ

- UPDATE_SQLSETプロシージャ

155 DBMS_STATS

- DBMS_STATSの使用方法

- 概要

- 推奨されないサブプログラム

- タイプ

- 定数

- 使用上の注意

- 推奨されないサブプログラム

- データ構造

- STAT_RECレコード・タイプ

- 構文

- フィールド

- DBMS_STATSサブプログラムの要約

- ALTER_STATS_HISTORY_RETENTIONプロシージャ

- CONVERT_RAW_VALUEプロシージャ

- CONVERT_RAW_VALUE_NVARCHARプロシージャ

- CONVERT_RAW_VALUE_ROWIDプロシージャ

- COPY_TABLE_STATSプロシージャ

- CREATE_EXTENDED_STATSファンクション

- CREATE_STAT_TABLEプロシージャ

- DELETE_COLUMN_STATSプロシージャ

- DELETE_DATABASE_PREFSプロシージャ

- DELETE_DATABASE_STATSプロシージャ

- DELETE_DICTIONARY_STATSプロシージャ

- DELETE_FIXED_OBJECTS_STATSプロシージャ

- DELETE_INDEX_STATSプロシージャ

- DELETE_PENDING_STATSプロシージャ

- DELETE_PROCESSING_RATEプロシージャ

- DELETE_SCHEMA_PREFSプロシージャ

- DELETE_SCHEMA_STATSプロシージャ

- DELETE_SYSTEM_STATSプロシージャ

- DELETE_TABLE_PREFSプロシージャ

- DELETE_TABLE_STATSプロシージャ

- DIFF_TABLE_STATS_IN_HISTORYファンクション

- DIFF_TABLE_STATS_IN_PENDINGファンクション

- DIFF_TABLE_STATS_IN_STATTABファンクション

- DROP_EXTENDED_STATSプロシージャ

- DROP_STAT_TABLEプロシージャ

- EXPORT_COLUMN_STATSプロシージャ

- EXPORT_DATABASE_PREFSプロシージャ

- EXPORT_DATABASE_STATSプロシージャ

- EXPORT_DICTIONARY_STATSプロシージャ

- EXPORT_FIXED_OBJECTS_STATSプロシージャ

- EXPORT_INDEX_STATSプロシージャ

- EXPORT_PENDING_STATSプロシージャ

- EXPORT_SCHEMA_PREFSプロシージャ

- EXPORT_SCHEMA_STATSプロシージャ

- EXPORT_SYSTEM_STATSプロシージャ

- EXPORT_TABLE_PREFSプロシージャ

- EXPORT_TABLE_STATSプロシージャ

- FLUSH_DATABASE_MONITORING_INFOプロシージャ

- GATHER_DATABASE_STATSプロシージャ

- GATHER_DICTIONARY_STATSプロシージャ

- GATHER_FIXED_OBJECTS_STATSプロシージャ

- GATHER_INDEX_STATSプロシージャ

- GATHER_PROCESSING_RATEプロシージャ

- GATHER_SCHEMA_STATSプロシージャ

- GATHER_SYSTEM_STATSプロシージャ

- GATHER_TABLE_STATSプロシージャ

- GENERATE_STATSプロシージャ

- GET_COLUMN_STATSプロシージャ

- GET_INDEX_STATSプロシージャ

- GET_PARAMファンクション

- GET_PREFSファンクション

- GET_STATS_HISTORY_AVAILABILITYファンクション

- GET_STATS_HISTORY_RETENTIONファンクション

- GET_SYSTEM_STATSプロシージャ

- GET_TABLE_STATSプロシージャ

- IMPORT_COLUMN_STATSプロシージャ

- IMPORT_DATABASE_PREFSプロシージャ

- IMPORT_DATABASE_STATSプロシージャ

- IMPORT_DICTIONARY_STATSプロシージャ

- IMPORT_FIXED_OBJECTS_STATSプロシージャ

- IMPORT_INDEX_STATSプロシージャ

- IMPORT_SCHEMA_PREFSプロシージャ

- IMPORT_SCHEMA_STATSプロシージャ

- IMPORT_SYSTEM_STATSプロシージャ

- IMPORT_TABLE_PREFSプロシージャ

- IMPORT_TABLE_STATSプロシージャ

- LOCK_PARTITION_STATSプロシージャ

- LOCK_SCHEMA_STATSプロシージャ

- LOCK_TABLE_STATSプロシージャ

- MERGE_COL_USAGEプロシージャ

- PREPARE_COLUMN_VALUESプロシージャ

- PREPARE_COLUMN_VALUES_NVARCHARプロシージャ

- PREPARE_COLUMN_VALUES_ROWIDプロシージャ

- PUBLISH_PENDING_STATSプロシージャ

- PURGE_STATSプロシージャ

- REMAP_STAT_TABLEプロシージャ

- REPORT_COL_USAGEファンクション

- REPORT_GATHER_AUTO_STATSファンクション

- 使用上の注意

- REPORT_GATHER_DATABASE_STATSファンクション

- REPORT_GATHER_DICTIONARY_STATSファンクション

- REPORT_GATHER_FIXED_OBJ_STATSファンクション

- REPORT_GATHER_SCHEMA_STATSファンクション

- REPORT_GATHER_TABLE_STATSファンクション

- REPORT_SINGLE_STATS_OPERATIONファンクション

- REPORT_STATS_OPERATIONSファンクション

- RESET_GLOBAL_PREF_DEFAULTSプロシージャ

- RESET_PARAM_DEFAULTSプロシージャ

- RESTORE_DATABASE_STATSプロシージャ

- RESTORE_DICTIONARY_STATSプロシージャ

- RESTORE_FIXED_OBJECTS_STATSプロシージャ

- RESTORE_SCHEMA_STATSプロシージャ

- RESTORE_SYSTEM_STATSプロシージャ

- RESTORE_TABLE_STATSプロシージャ

- SEED_COL_USAGEプロシージャ

- SET_COLUMN_STATSプロシージャ

- SET_DATABASE_PREFSプロシージャ

- SET_GLOBAL_PREFSプロシージャ

- SET_INDEX_STATSプロシージャ

- SET_PARAMプロシージャ

- SET_PROCESSING_RATEプロシージャ

- SET_SCHEMA_PREFSプロシージャ

- SET_SYSTEM_STATSプロシージャ

- SET_TABLE_PREFSプロシージャ

- SET_TABLE_STATSプロシージャ

- SHOW_EXTENDED_STATS_NAMEファンクション

- TRANSFER_STATSプロシージャ

- UNLOCK_PARTITION_STATSプロシージャ

- UNLOCK_SCHEMA_STATSプロシージャ

- UNLOCK_TABLE_STATSプロシージャ

- UPGRADE_STAT_TABLEプロシージャ

156 DBMS_STAT_FUNCS

- DBMS_STAT_FUNCSサブプログラムの要約

- EXPONENTIAL_DIST_FITプロシージャ

- NORMAL_DIST_FITプロシージャ

- POISSON_DIST_FITプロシージャ

- SUMMARYプロシージャ

- UNIFORM_DIST_FITプロシージャ

- WEIBULL_DIST_FITプロシージャ

157 DBMS_STORAGE_MAP

- DBMS_STORAGE_MAPの使用方法

- 概要

- 使用上の注意

- DBMS_STORAGE_MAPサブプログラムの要約

- DROP_ALLファンクション

- DROP_ELEMENTファンクション

- DROP_FILEファンクション

- パラメータ

- LOCK_MAPプロシージャ

- MAP_ALLファンクション

- MAP_ELEMENTファンクション

- MAP_FILEファンクション

- MAP_OBJECTファンクション

- RESTOREファンクション

- SAVEファンクション

- UNLOCK_MAPプロシージャ

158 DBMS_STREAMS

- DBMS_STREAMSの使用方法

- 概要

- セキュリティ・モデル

- DBMS_STREAMSサブプログラムの要約

- COMPATIBLE_12_1ファンクション

- COMPATIBLE_11_2ファンクション

- COMPATIBLE_11_1ファンクション

- COMPATIBLE_10_2ファンクション

- COMPATIBLE_10_1ファンクション

- COMPATIBLE_9_2ファンクション

- CONVERT_ANYDATA_TO_LCR_DDLファンクション

- CONVERT_ANYDATA_TO_LCR_ROWファンクション

- CONVERT_LCR_TO_XMLファンクション

- CONVERT_XML_TO_LCRファンクション

- GET_INFORMATIONファンクション

- GET_STREAMS_NAMEファンクション

- GET_STREAMS_TYPEファンクション

- GET_TAGファンクション

- MAX_COMPATIBLEファンクション

- SET_TAGプロシージャ

159 DBMS_STREAMS_ADM

- DBMS_STREAMS_ADMの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- Oracle Streams管理者

- 取得ユーザー

- 伝播ユーザー

- Oracle Streams適用プロセスの適用ユーザー

- XStreamインバウンド・サーバーの適用ユーザー

- メッセージ・クライアント・ユーザー

- 使用上の注意

- Oracle StreamsクライアントおよびXStreamクライアントのルールを作成するプロシージャ

- Oracle Streams環境を構成するプロシージャ

- DBMS_STREAMS_ADMサブプログラムの要約

- ADD_COLUMNプロシージャ

- ADD_GLOBAL_PROPAGATION_RULESプロシージャ

- ADD_GLOBAL_RULESプロシージャ

- ADD_MESSAGE_PROPAGATION_RULEプロシージャ

- ADD_MESSAGE_RULEプロシージャ

- ADD_SCHEMA_PROPAGATION_RULESプロシージャ

- ADD_SCHEMA_RULESプロシージャ

- ADD_SUBSET_PROPAGATION_RULESプロシージャ

- ADD_SUBSET_RULESプロシージャ

- ADD_TABLE_PROPAGATION_RULESプロシージャ

- ADD_TABLE_RULESプロシージャ

- CLEANUP_INSTANTIATION_SETUPプロシージャ

- DELETE_COLUMNプロシージャ

- GET_MESSAGE_TRACKINGファンクション

- GET_SCN_MAPPINGプロシージャ

- GET_TAGファンクション

- KEEP_COLUMNSプロシージャ

- MAINTAIN_CHANGE_TABLEプロシージャ

- MAINTAIN_GLOBALプロシージャ

- MAINTAIN_SCHEMASプロシージャ

- MAINTAIN_SIMPLE_TABLESPACEプロシージャ

- MAINTAIN_SIMPLE_TTSプロシージャ

- MAINTAIN_TABLESプロシージャ

- MAINTAIN_TABLESPACESプロシージャ

- MAINTAIN_TTSプロシージャ

- MERGE_STREAMSプロシージャ

- MERGE_STREAMS_JOBプロシージャ

- POST_INSTANTIATION_SETUPプロシージャ

- PRE_INSTANTIATION_SETUPプロシージャ

- PURGE_SOURCE_CATALOGプロシージャ

- RECOVER_OPERATIONプロシージャ

- REMOVE_QUEUEプロシージャ

- REMOVE_RULEプロシージャ

- REMOVE_STREAMS_CONFIGURATIONプロシージャ

- RENAME_COLUMNプロシージャ

- RENAME_SCHEMAプロシージャ

- RENAME_TABLEプロシージャ

- SET_MESSAGE_NOTIFICATIONプロシージャ

- SET_MESSAGE_TRACKINGプロシージャ

- SET_RULE_TRANSFORM_FUNCTIONプロシージャ

- SET_TAGプロシージャ

- SET_UP_QUEUEプロシージャ

- SPLIT_STREAMSプロシージャ

160 DBMS_STREAMS_ADVISOR_ADM

- DBMS_STREAMS_ADVISOR_ADMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_STREAMS_ADVISOR_ADMパッケージによって分析されるOracle Streamsコンポーネント

- Oracle Streamsパフォーマンス・アドバイザの実行および情報分析の一般的な手順

- DBMS_STREAMS_ADVISOR_ADMサブプログラムの要約

- ANALYZE_CURRENT_PERFORMANCEプロシージャ

161 DBMS_STREAMS_AUTH

- DBMS_STREAMS_AUTHの使用方法

- 概要

- セキュリティ・モデル

- DBMS_STREAMS_AUTHサブプログラムの要約

- GRANT_ADMIN_PRIVILEGEプロシージャ

- GRANT_REMOTE_ADMIN_ACCESSプロシージャ

- REVOKE_ADMIN_PRIVILEGEプロシージャ

- REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

162 DBMS_STREAMS_HANDLER_ADM

- DBMS_STREAMS_HANDLER_ADMの使用方法

- 概要

- セキュリティ・モデル

- ビュー

- 使用上の注意

- 文の実行順序

- サポートされているSQL文

- サポートされている行LCRの列属性

- サポートされている行LCRの属性

- サポートされている行LCRの追加属性

- サポートされている行LCRのメソッド

- DBMS_STREAMS_HANDLER_ADMサブプログラムの要約

- ADD_STMT_TO_HANDLERプロシージャ

- CREATE_STMT_HANDLERプロシージャ

- DROP_STMT_HANDLERプロシージャ

- REMOVE_STMT_FROM_HANDLERプロシージャ

163 DBMS_STREAMS_MESSAGING

- DBMS_STREAMS_MESSAGINGの使用方法

- 概要

- セキュリティ・モデル

- DBMS_STREAMS_MESSAGINGサブプログラムの要約

- DEQUEUEプロシージャ

- ENQUEUEプロシージャ

164 DBMS_STREAMS_TABLESPACE_ADM

- DBMS_STREAMS_TABLESPACE_ADMの使用方法

- 概要

- セキュリティ・モデル

- データ構造

- DIRECTORY_OBJECT_SET表タイプ

- 構文

- FILEレコード・タイプ

- 構文

- フィールド

- FILE_SET表タイプ

- 構文

- TABLESPACE_SET表タイプ

- 構文

- DBMS_STREAMS_TABLESPACE_ADMサブプログラムの要約

- ATTACH_SIMPLE_TABLESPACEプロシージャ

- ATTACH_TABLESPACESプロシージャ

- CLONE_SIMPLE_TABLESPACEプロシージャ

- CLONE_TABLESPACESプロシージャ

- DETACH_SIMPLE_TABLESPACEプロシージャ

- DETACH_TABLESPACESプロシージャ

- PULL_SIMPLE_TABLESPACEプロシージャ

- PULL_TABLESPACESプロシージャ

165 DBMS_SYNC_REFRESH

- DBMS_SYNC_REFRESHの使用

- 概要

- セキュリティ・モデル

- DBMS_SYNC_REFRESHサブプログラムの要約

- ABORT_REFRESHプロシージャ

- ALTER_REFRESH_STATS_RETENTIONプロシージャ

- CAN_SYNCREF_TABLEプロシージャ

- EXECUTE_REFRESHプロシージャ

- GET_ALL_GROUP_IDSファンクション

- GET_GROUP_IDファンクション

- GET_GROUP_ID_LISTファンクション

- PREPARE_REFRESHプロシージャ

- PREPARE_STAGING_LOGプロシージャ

- PURGE_REFRESH_STATSプロシージャ

- REGISTER_MVIEWS

- REGISTER_PARTITION_OPERATIONプロシージャ

- UNREGISTER_MVIEWS

- UNREGISTER_PARTITION_OPERATIONプロシージャ

166 DBMS_TDB

- DBMS_TDBの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_TDBサブプログラムの要約

- CHECK_DBファンクション

- CHECK_EXTERNALファンクション

167 DBMS_TRACE

- DBMS_TRACEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 制限事項

- 使用上の注意

- データ量の制御

- DBMS_TRACE出力を収集するデータベース表の作成

- トレース・データの収集

- 収集されたデータ

- トレース管理

- DBMS_TRACEサブプログラムの要約

- CLEAR_PLSQL_TRACEプロシージャ

- GET_PLSQL_TRACE_LEVELファンクション

- PLSQL_TRACE_VERSIONプロシージャ

- SET_PLSQL_TRACEプロシージャ

168 DBMS_TRANSACTION

- DBMS_TRANSACTIONの使用方法

- セキュリティ・モデル

- DBMS_TRANSACTIONサブプログラムの要約

- ADVISE_COMMITプロシージャ

- ADVISE_NOTHINGプロシージャ

- ADVISE_ROLLBACKプロシージャ

- COMMITプロシージャ

- COMMIT_COMMENTプロシージャ

- COMMIT_FORCEプロシージャ

- LOCAL_TRANSACTION_IDファンクション

- PURGE_LOST_DB_ENTRYプロシージャ

- PURGE_MIXEDプロシージャ

- READ_ONLYプロシージャ

- READ_WRITEプロシージャ

- ROLLBACKプロシージャ

- ROLLBACK_FORCEプロシージャ

- ROLLBACK_SAVEPOINTプロシージャ

- SAVEPOINTプロシージャ

- STEP_IDファンクション

- USE_ROLLBACK_SEGMENTプロシージャ

169 DBMS_TRANSFORM

- DBMS_TRANSFORMサブプログラムの要約

- CREATE_TRANSFORMATIONプロシージャ

- DROP_TRANSFORMATIONプロシージャ

- MODIFY_TRANSFORMATIONプロシージャ

170 DBMS_TSDP_MANAGE

- DBMS_TSDP_MANAGEの使用

- 概要

- セキュリティ・モデル

- DBMS_TSDP_MANAGEサブプログラムの要約

- ADD_SENSITIVE_COLUMNプロシージャ

- ALTER_SENSITIVE_COLUMNプロシージャ

- ADD_SENSITIVE_TYPEプロシージャ

- DROP_SENSITIVE_COLUMNプロシージャ

- DROP_SENSITIVE_TYPEプロシージャ

- DROP_SENSITIVE_TYPE_SOURCEプロシージャ

- IMPORT_DISCOVERY_RESULTプロシージャ

- IMPORT_SENSITIVE_TYPESプロシージャ

- REMOVE_DISCOVERY_RESULTプロシージャ

171 DBMS_TSDP_PROTECT

- DBMS_TSDP_PROTECTの使用

- 概要

- セキュリティ・モデル

- 定数

- データ構造

- FEATURE_OPTIONS表タイプ

- POLICY_CONDITION表タイプ

- DBMS_TSDP_PROTECTサブプログラムの要約

- ADD_POLICYプロシージャ

- ALTER_POLICYプロシージャ

- ASSOCIATE_POLICYプロシージャ

- DISABLE_PROTECTION_COLUMNプロシージャ

- DISABLE_PROTECTION_SOURCEプロシージャ

- DISABLE_PROTECTION_TYPEプロシージャ

- DROP_POLICYプロシージャ

- ENABLE_PROTECTION_COLUMNプロシージャ

- ENABLE_PROTECTION_SOURCEプロシージャ

- ENABLE_PROTECTION_TYPEプロシージャ

172 DBMS_TTS

- DBMS_TTSの使用方法

- セキュリティ・モデル

- 例外

- 使用上の注意

- DBMS_TTSサブプログラムの要約

- DOWNGRADEプロシージャ

- TRANSPORT_SET_CHECKプロシージャ

173 DBMS_TYPES

- DBMS_TYPESの使用方法

- 定数

- 例外

174 DBMS_UTILITY

- DBMS_UTILITYの使用方法

- セキュリティ・モデル

- 定数

- 例外

- データ構造

- INSTANCE_RECORDレコード・タイプ

- DBLINK_ARRAY表タイプ

- INDEX_TABLE_TYPE表タイプ

- INSTANCE_TABLE表タイプ

- LNAME_ARRAY表タイプ

- NAME_ARRAY表タイプ

- NUMBER_ARRAY表タイプ

- UNCL_ARRAY表タイプ

- DBMS_UTILITYサブプログラムの要約

- ACTIVE_INSTANCESプロシージャ

- ANALYZE_DATABASEプロシージャ

- ANALYZE_PART_OBJECTプロシージャ

- ANALYZE_SCHEMAプロシージャ

- CANONICALIZEプロシージャ

- COMMA_TO_TABLEプロシージャ

- COMPILE_SCHEMAプロシージャ

- CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ

- CURRENT_INSTANCEファンクション

- DATA_BLOCK_ADDRESS_BLOCKファンクション

- DATA_BLOCK_ADDRESS_FILEファンクション

- DB_VERSIONプロシージャ

- EXEC_DDL_STATEMENTプロシージャ

- EXPAND_SQL_TEXTプロシージャ

- FORMAT_CALL_STACKファンクション

- FORMAT_ERROR_BACKTRACEファンクション

- FORMAT_ERROR_STACKファンクション

- GET_CPU_TIMEファンクション

- GET_DEPENDENCYプロシージャ

- GET_ENDIANNESSファンクション

- GET_HASH_VALUEファンクション

- GET_PARAMETER_VALUEファンクション

- GET_SQL_HASHファンクション

- GET_TIMEファンクション

- GET_TZ_TRANSITIONSプロシージャ

- INVALIDATEプロシージャ

- IS_BIT_SETファンクション

- IS_CLUSTER_DATABASEファンクション

- MAKE_DATA_BLOCK_ADDRESSファンクション

- NAME_RESOLVEプロシージャ

- NAME_TOKENIZEプロシージャ

- OLD_CURRENT_SCHEMAファンクション

- OLD_CURRENT_USERファンクション

- PORT_STRINGファンクション

- SQLID_TO_SQLHASHファンクション

- TABLE_TO_COMMAプロシージャ

- VALIDATEプロシージャ

- WAIT_ON_PENDING_DMLファンクション

175 DBMS_WARNING

- DBMS_WARNINGの使用方法

- セキュリティ・モデル

- DBMS_WARNINGサブプログラムの要約

- ADD_WARNING_SETTING_CATプロシージャ

- ADD_WARNING_SETTING_NUMプロシージャ

- GET_CATEGORYファンクション

- GET_WARNING_SETTING_CATファンクション

- GET_WARNING_SETTING_NUMファンクション

- GET_WARNING_SETTING_STRINGファンクション

- SET_WARNING_SETTING_STRINGプロシージャ

176 DBMS_WM

- DBMS_WMのドキュメント

177 DBMS_WORKLOAD_CAPTURE

- DBMS_WORKLOAD_CAPTUREの使用方法

- 概要

- セキュリティ・モデル

- DBMS_WORKLOAD_CAPTUREサブプログラムの要約

- ADD_FILTERプロシージャ

- DELETE_CAPTURE_INFOプロシージャ

- DELETE_FILTERプロシージャ

- EXPORT_AWRプロシージャ

- FINISH_CAPTUREプロシージャ

- GET_CAPTURE_INFOファンクション

- IMPORT_AWRファンクション

- REPORTファンクション

- START_CAPTUREプロシージャ

178 DBMS_WORKLOAD_REPLAY

- DBMS_WORKLOAD_REPLAYの使用方法

- 概要

- セキュリティ・モデル

- DBMS_WORKLOAD_REPLAYサブプログラムの要約

- ADD_CAPTUREファンクション

- ADD_FILTERプロシージャ

- ADD_SCHEDULE_ORDERINGファンクション

- BEGIN_REPLAY_SCHEDULEプロシージャ

- CALIBRATEファンクション

- CANCEL_REPLAYプロシージャ

- COMPARE_PERIOD_REPORTプロシージャ

- COMPARE_SQLSET_REPORTファンクション

- CREATE_FILTER_SETプロシージャ

- DELETE_FILTERプロシージャ

- DELETE_REPLAY_INFOプロシージャ

- END_REPLAY_SCHEDULEプロシージャ

- EXPORT_AWRプロシージャ

- GENERATE_CAPTURE_SUBSETプロシージャ

- GET_DIVERGING_STATEMENTファンクション

- GET_REPLAY_DIRECTORYファンクション

- GET_REPLAY_INFOファンクション

- GET_REPLAY_TIMEOUTプロシージャ

- IMPORT_AWRファンクション

- INITIALIZE_CONSOLIDATED_REPLAYプロシージャ

- INITIALIZE_REPLAYプロシージャ

- IS_REPLAY_PAUSEDファンクション

- PAUSE_REPLAYプロシージャ

- POPULATE_DIVERGENCEプロシージャ

- PREPARE_REPLAYプロシージャ

- PREPARE_CONSOLIDATED_REPLAYプロシージャ

- PROCESS_CAPTUREプロシージャ

- REMAP_CONNECTIONプロシージャ

- REMOVE_CAPTUREプロシージャ

- REMOVE_SCHEDULE_ORDERINGプロシージャ

- REPORTファンクション

- RESUME_REPLAYプロシージャ

- REUSE_REPLAY_FILTER_SETプロシージャ

- SET_ADVANCED_PARAMETERプロシージャ

- SET_REPLAY_DIRECTORYプロシージャ

- SET_REPLAY_TIMEOUTプロシージャ

- SET_USER_MAPPINGプロシージャ

- START_CONSOLIDATED_REPLAYプロシージャ

- START_REPLAYプロシージャ

- USE_FILTER_SETプロシージャ

179 DBMS_WORKLOAD_REPOSITORY

- DBMS_WORKLOAD_REPOSITORYの使用方法

- 例

- データ構造

- AWR_BASELINE_METRIC_TYPEオブジェクト・タイプ

- AWR_BASELINE_METRIC_TYPE_TABLE表タイプ

- AWRRPT_INSTANCE_LIST_TYPE表タイプ

- DBMS_WORKLOAD_REPOSITORYサブプログラムの要約

- ADD_COLORED_SQLプロシージャ

- ASH_GLOBAL_REPORT_HTMLファンクション

- ASH_GLOBAL_REPORT_TEXTファンクション

- ASH_REPORT_HTMLファンクション

- ASH_REPORT_TEXTファンクション

- AWR_DIFF_REPORT_HTMLファンクション

- AWR_DIFF_REPORT_TEXTファンクション

- AWR_GLOBAL_DIFF_REPORT_HTMLファンクション

- AWR_GLOBAL_DIFF_REPORT_TEXTファンクション

- AWR_GLOBAL_REPORT_HTMLファンクション

- AWR_GLOBAL_REPORT_TEXTファンクション

- AWR_REPORT_HTMLファンクション

- AWR_REPORT_TEXTファンクション

- AWR_SET_REPORT_THRESHOLDSプロシージャ

- AWR_SQL_REPORT_HTMLファンクション

- AWR_SQL_REPORT_TEXTファンクション

- CREATE_BASELINEファンクションおよびプロシージャ

- CREATE_BASELINE_TEMPLATEプロシージャ

- CREATE_SNAPSHOTファンクションおよびプロシージャ

- DROP_BASELINEプロシージャ

- DROP_BASELINE_TEMPLATEプロシージャ

- DROP_SNAPSHOT_RANGEプロシージャ

- MODIFY_SNAPSHOT_SETTINGSプロシージャ

- MODIFY_BASELINE_WINDOW_SIZEプロシージャ

- PURGE_SQL_DETAILSプロシージャ

- REMOVE_COLORED_SQLプロシージャ

- RENAME_BASELINEプロシージャ

- SELECT_BASELINE_METRICファンクション

- UPDATE_OBJECT_INFOプロシージャ

180 DBMS_XA

- DBMS_XAの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- データ構造

- DBMS_XA_XIDオブジェクト・タイプ

- DBMS_XA_XID_ARRAY表タイプ

- DBMS_XAサブプログラムの要約

- DIST_TXN_SYNCプロシージャ

- XA_COMMITファンクション

- XA_ENDファンクション

- XA_FORGETファンクション

- XA_GETLASTOERファンクション

- XA_PREPAREファンクション

- XA_RECOVERファンクション

- XA_ROLLBACKファンクション

- XA_SETTIMEOUTファンクション

- XA_STARTファンクション

181 DBMS_XDB

- DBMS_XDBの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- DBMS_XDBサブプログラムの要約

- ACLCHECKPRIVILEGESファンクション

- ADDHTTPEXPIREMAPPINGプロシージャ

- ADDMIMEMAPPINGプロシージャ

- ADDSCHEMALOCMAPPINGプロシージャ

- ADDSERVLETプロシージャ

- ADDSERVLETMAPPINGプロシージャ

- ADDSERVLETSECROLEプロシージャ

- ADDXMLEXTENSIONプロシージャ

- APPENDRESOURCEMETADATAプロシージャ

- CFG_GETファンクション

- CFG_REFRESHプロシージャ

- CFG_UPDATEプロシージャ

- CHANGEOWNERプロシージャ

- CHANGEPRIVILEGESファンクション

- CHECKPRIVILEGESファンクション

- CREATEFOLDERファンクション

- CREATEOIDPATHファンクション

- CREATERESOURCEファンクション

- DELETEHTTPEXPIREMAPPINGプロシージャ

- DELETEMIMEMAPPINGプロシージャ

- DELETERESOURCEプロシージャ

- DELETERESOURCEMETADATAプロシージャ

- DELETESCHEMALOCMAPPINGプロシージャ

- DELETESERVLETプロシージャ

- DELETESERVLETMAPPINGプロシージャ

- DELETESERVLETSECROLEプロシージャ

- DELETEXMLEXTENSIONプロシージャ

- ENABLEDIGESTAUTHENTICATIONプロシージャ

- EXISTSRESOURCEファンクション

- GETACLDOCUMENTファンクション

- GETCONTENTBLOBファンクション

- GETCONTENTCLOBファンクション

- GETCONTENTVARCHAR2ファンクション

- GETCONTENTXMLREFファンクション

- GETCONTENTXMLTYPEファンクション

- GETFTPPORTファンクション

- GETHTTPPORTファンクション

- GETHTTPREQUESTHEADERファンクション

- GETLISTENERENDPOINTプロシージャ

- GETLOCKTOKENプロシージャ

- GETPRIVILEGESファンクション

- GETRESOIDファンクション

- GETXDB_TABLESPACEファンクション

- HASBLOBCONTENTファンクション

- HASCHARCONTENTファンクション

- HASXMLCONTENTファンクション

- HASXMLREFERENCEファンクション

- ISFOLDERファンクション

- LINKプロシージャ

- LOCKRESOURCEファンクション

- PROCESSLINKSプロシージャ

- PURGERESOURCEMETADATAプロシージャ

- RENAMERESOURCEプロシージャ

- SETACLプロシージャ

- SETFTPPORTプロシージャ

- SETHTTPPORTプロシージャ

- SETLISTENERENDPOINTプロシージャ

- SETLISTENERLOCALACCESSプロシージャ

- SPLITPATHプロシージャ

- TOUCHRESOURCEプロシージャ

- UNLOCKRESOURCEファンクション

- UPDATERESOURCEMETADATAプロシージャ

182 DBMS_XDB_ADMIN

- DBMS_XDB_ADMINの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- DBMS_XDB_ADMINサブプログラムの要約

- CREATENONCEKEYプロシージャ

- CREATEREPOSITORYXMLINDEXプロシージャ

- DROPREPOSITORYXMLINDEXプロシージャ

- INSTALLDEFAULTWALLETプロシージャ

- MOVEXDB_TABLESPACEプロシージャ

- REBUILDHIERARCHICALINDEXプロシージャ

- XMLINDEXADDPATHプロシージャ

- XMLINDEXREMOVEPATHプロシージャ

183 DBMS_XDB_CONFIG

- DBMS_XDB_CONFIGの使用

- 概要

- セキュリティ・モデル

- 定数

- DBMS_XDB_CONFIGサブプログラムの要約

- ADDHTTPEXPIREMAPPINGプロシージャ

- ADDMIMEMAPPINGプロシージャ

- ADDSCHEMALOCMAPPINGプロシージャ

- ADDSERVLETプロシージャ

- ADDSERVLETMAPPINGプロシージャ

- ADDSERVLETSECROLEプロシージャ

- ADDXMLEXTENSIONプロシージャ

- CFG_GETファンクション

- CFG_REFRESHプロシージャ

- CFG_UPDATEプロシージャ

- DELETEHTTPEXPIREMAPPINGプロシージャ

- DELETEMIMEMAPPINGプロシージャ

- DELETESCHEMALOCMAPPINGプロシージャ

- DELETESERVLETプロシージャ

- DELETESERVLETMAPPINGプロシージャ

- DELETESERVLETSECROLEプロシージャ

- DELETEXMLEXTENSIONプロシージャ

- ENABLEDIGESTAUTHENTICATIONプロシージャ

- GETFTPPORTファンクション

- GETHTTPPORTファンクション

- GETHTTPCONFIGREALMファンクション

- GETHTTPSPORTファンクション

- GETLISTENERENDPOINTプロシージャ

- SETFTPPORTプロシージャ

- SETHTTPPORTプロシージャ

- SETHTTPCONFIGREALMプロシージャ

- SETHTTPSPORTプロシージャ

- SETLISTENERENDPOINTプロシージャ

- SETLISTENERLOCALACCESSプロシージャ

- USEDPORTプロシージャ

184 DBMS_XDB_CONSTANTS

- DBMS_XDB_CONSTANTSの使用

- セキュリティ・モデル

- DBMS_XDB_CONSTANTSサブプログラムの要約

- ENCODING_DEFAULTファンクション

- ENCODING_ISOLATIN1ファンクション

- ENCODING_UTF8ファンクション

- ENCODING_WIN1252ファンクション

- NAMESPACE_ACLファンクション

- NAMESPACE_METADATAファンクション

- NAMESPACE_ORACLEファンクション

- NAMESPACE_ORACLE_XDBファンクション

- NAMESPACE_RESOURCEファンクション

- NAMESPACE_RESOURCE_EVENTファンクション

- NAMESPACE_RESOURCE_CONFIGファンクション

- NAMESPACE_XDBSCHEMAファンクション

- NAMESPACE_XMLDIFFファンクション

- NAMESPACE_XMLINSTANCEファンクション

- NAMESPACE_XMLSCHEMAファンクション

- NSPREFIX_ACL_ACLファンクション

- NSPREFIX_RESCONFIG_RCファンクション

- NSPREFIX_RESOURCE_Rファンクション

- NSPREFIX_XDB_XDBファンクション

- NSPREFIX_XMLINSTANCE_XSIファンクション

- NSPREFIX_XMLDIFF_XDファンクション

- NSPREFIX_XMLSCHEMA_XSDファンクション

- SCHEMAURL_ACLファンクション

- SCHEMAELEM_RES_ACLファンクション

- SCHEMAELEM_RESCONTENT_BINARYファンクション

- SCHEMAELEM_RESCONTENT_TEXTファンクション

- SCHEMAURL_RESOURCEファンクション

- SCHEMAURL_XDBSCHEMAファンクション

- XDBSCHEMA_PREFIXESファンクション

- XSD_ATTRIBUTEファンクション

- XSD_COMPLEX_TYPEファンクション

- XSD_ELEMENTファンクション

- XSD_GROUPファンクション

185 DBMS_XDB_REPOS

- DBMS_XDB_REPOSの使用

- 概要

- セキュリティ・モデル

- 定数

- DBMS_XDB_REPOSサブプログラムの要約

- ACLCHECKPRIVILEGESファンクション

- APPENDRESOURCEMETADATAプロシージャ

- CHANGEOWNERプロシージャ

- CHANGEPRIVILEGESファンクション

- CHECKPRIVILEGESファンクション

- CREATEFOLDERファンクション

- CREATEOIDPATHファンクション

- CREATERESOURCEファンクション

- DELETERESOURCEプロシージャ

- DELETERESOURCEMETADATAプロシージャ

- EXISTSRESOURCEファンクション

- GETACLDOCUMENTファンクション

- GETCONTENTBLOBファンクション

- GETCONTENTCLOBファンクション

- GETCONTENTVARCHAR2ファンクション

- GETCONTENTXMLREFファンクション

- GETCONTENTXMLTYPEファンクション

- GETLOCKTOKENプロシージャ

- GETPRIVILEGESファンクション

- GETRESOIDファンクション

- GETXDB_TABLESPACEファンクション

- HASBLOBCONTENTファンクション

- HASCHARCONTENTファンクション

- HASXMLCONTENTファンクション

- HASXMLREFERENCEファンクション

- ISFOLDERファンクション

- LINKプロシージャ

- LOCKRESOURCEファンクション

- PROCESSLINKSプロシージャ

- PURGERESOURCEMETADATAプロシージャ

- RENAMERESOURCEプロシージャ

- SETACLプロシージャ

- SPLITPATHプロシージャ

- TOUCHRESOURCEプロシージャ

- UNLOCKRESOURCEファンクション

- UPDATERESOURCEMETADATAプロシージャ

186 DBMS_XDB_VERSION

- DBMS_XDB_VERSIONの使用方法

- セキュリティ・モデル

- DBMS_XDB_VERSIONサブプログラムの要約

- CHECKINファンクション

- CHECKOUTプロシージャ

- GETCONTENTSBLOBBYRESIDファンクション

- GETCONTENTSCLOBBYRESIDファンクション

- GETCONTENTSXMLBYRESIDファンクション

- GETPREDECESSORSファンクション

- GETPREDSBYRESIDファンクション

- GETRESOURCEBYRESIDファンクション

- GETSUCCESSORSファンクション

- GETSUCCSBYRESIDファンクション

- MAKEVERSIONEDファンクション

- UNCHECKOUTファンクション

187 DBMS_XDBRESOURCE

- DBMS_XDBRESOURCEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_XDBRESOURCEサブプログラムの要約

- FREERESOURCEプロシージャ

- GETACLファンクション

- GETACLDOCFROMRESファンクション

- GETAUTHORファンクション

- GETCHARACTERSETファンクション

- GETCOMMENTファンクション

- GETCONTENTBLOBファンクション

- GETCONTENTCLOBファンクション

- GETCONTENTREFファンクション

- GETCONTENTTYPEファンクション

- GETCONTENTXMLファンクション

- GETCONTENTVARCHAR2ファンクション

- GETCREATIONDATEファンクション

- GETCREATORファンクション

- GETCUSTOMMETADATAファンクション

- GETDISPLAYNAMEファンクション

- GETLANGUAGEファンクション

- GETLASTMODIFIERファンクション

- GETMODIFICATIONDATEファンクション

- GETOWNERファンクション

- GETREFCOUNTファンクション

- GETVERSIONIDファンクション

- HASACLCHANGEDファンクション

- HASAUTHORCHANGEDファンクション

- HASCHANGEDファンクション

- HASCHARACTERSETCHANGEDファンクション

- HASCOMMENTCHANGEDファンクション

- HASCONTENTCHANGEDファンクション

- HASCONTENTTYPECHANGEDファンクション

- HASCREATIONDATECHANGEDファンクション

- HASCREATORCHANGEDファンクション

- HASCUSTOMMETADATACHANGEDファンクション

- HASDISPLAYNAMECHANGEDファンクション

- HASLANGUAGECHANGEDファンクション

- HASLASTMODIFIERCHANGEDファンクション

- HASMODIFICATIONDATECHANGEDファンクション

- HASOWNERCHANGEDファンクション

- HASREFCOUNTCHANGEDファンクション

- HASVERSIONIDCHANGEDファンクション

- ISFOLDERファンクション

- ISNULLファンクション

- MAKEDOCUMENTファンクション

- SAVEプロシージャ

- SETACLプロシージャ

- SETAUTHORプロシージャ

- SETCHARACTERSETプロシージャ

- SETCOMMENTプロシージャ

- SETCONTENTプロシージャ

- SETCONTENTTYPEプロシージャ

- SETCUSTOMMETADATAプロシージャ

- SETDISPLAYNAMEプロシージャ

- SETLANGUAGEプロシージャ

- SETOWNERプロシージャ

188 DBMS_XDBT

- DBMS_XDBTの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_XDBTサブプログラムの要約

- CONFIGUREAUTOSYNCプロシージャ

- CREATEDATASTOREPREFプロシージャ

- CREATEFILTERPREFプロシージャ

- CREATEINDEXプロシージャ

- CREATELEXERPREFプロシージャ

- CREATEPREFERENCESプロシージャ

- CREATESECTIONGROUPPREFプロシージャ

- CREATESTOPLISTPREFプロシージャ

- CREATESTORAGEPREFプロシージャ

- CREATEWORLDLISTPREFプロシージャ

- DROPPREFERENCESプロシージャ

189 DBMS_XDBZ

- DBMS_XDBZの使用方法

- セキュリティ・モデル

- 定数

- DBMS_XDBZサブプログラムの要約

- CREATENONCEKEYプロシージャ

- DISABLE_HIERARCHYプロシージャ

- ENABLE_HIERARCHYプロシージャ

- GET_ACLOIDファンクション

- GET_USERIDファンクション

- IS_HIERARCHY_ENABLEDファンクション

- PURGELDAPCACHEファンクション

190 DBMS_XEVENT

- DBMS_XEVENTの使用方法

- セキュリティ・モデル

- 定数

- サブプログラム・グループ

- XDBEventタイプのサブプログラム

- XDBRepositoryEventタイプのサブプログラム

- XDBHandlerListタイプのサブプログラム

- XDBHandlerタイプのサブプログラム

- XDBPathタイプのサブプログラム

- XDBLinkタイプのサブプログラム

- DBMS_XEVENTサブプログラムの要約

- CLEARプロシージャ

- GETAPPLICATIONDATAファンクション

- GETCHILDOIDファンクション

- GETCURRENTUSERファンクション

- GETEVENTファンクション

- GETFIRSTファンクション

- GETHANDLERLISTファンクション

- GETINTERFACEファンクション

- GETLANGUAGEファンクション

- GETLINKファンクション

- GETLINKNAMEファンクション

- GETLOCKファンクション

- GETLANGUAGEファンクション

- GETNAMEファンクション

- GETNEXTファンクション

- GETOLDRESOURCEファンクション

- GETOPENACCESSMODEファンクション

- GETOPENDENYMODEファンクション

- GETOUTPUTSTREAMファンクション

- GETPARAMETERファンクション

- GETPARENTファンクション

- GETPARENTNAMEファンクション

- GETPARENTOIDファンクション

- GETPARENTPATHファンクション

- GETPATHファンクション

- GETRESOURCEファンクション

- GETSCHEMAファンクション

- GETSOURCEファンクション

- GETUPDATEBYTECOUNTファンクション

- GETUPDATEBYTEOFFSETファンクション

- GETXDBEVENTファンクション

- ISNULLファンクション

- REMOVEプロシージャ

- SETRENDERPATHプロシージャ

- SETRENDERSTREAMプロシージャ

191 DBMS_XMLDOM

- DBMS_XMLDOMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- タイプ

- 例外

- サブプログラム・グループ

- DOMNodeサブプログラム

- DOMAttrサブプログラム

- DOMCDataSectionサブプログラム

- DOMCharacterDataサブプログラム

- DOMCommentサブプログラム

- DOMDocumentサブプログラム

- DOMDocumentFragmentサブプログラム

- DOMDocumentTypeサブプログラム

- DOMElementサブプログラム

- DOMEntityサブプログラム

- DOMEntityReferenceサブプログラム

- DOMImplementationサブプログラム

- DOMNamedNodeMapサブプログラム

- DOMNodeListサブプログラム

- DOMNotationサブプログラム

- DOMProcessingInstructionサブプログラム

- DOMTextサブプログラム

- DBMS_XMLDOMサブプログラムの要約

- ADOPTNODEファンクション

- APPENDCHILDファンクション

- APPENDDATAプロシージャ

- CLONENODEファンクション

- CREATEATTRIBUTEファンクション

- CREATECDATASECTIONファンクション

- CREATECOMMENTファンクション

- CREATEDOCUMENTファンクション

- CREATEDOCUMENTFRAGMENTファンクション

- CREATEELEMENTファンクション

- CREATEENTITYREFERENCEファンクション

- CREATEPROCESSINGINSTRUCTIONファンクション

- CREATETEXTNODEファンクション

- DELETEDATAプロシージャ

- FINDENTITYファンクション

- FINDNOTATIONファンクション

- FREEDOCFRAGプロシージャ

- FREEDOCUMENTプロシージャ

- FREEELEMENTプロシージャ

- FREENODEプロシージャ

- FREENODELISTプロシージャ

- GETATTRIBUTEファンクション

- GETATTRIBUTENODEファンクション

- GETATTRIBUTESファンクション

- GETCHARSETファンクション

- GETCHILDNODESファンクション

- GETCHILDRENBYTAGNAMEファンクション

- GETDATAファンクション

- GETDOCTYPEファンクション

- GETDOCUMENTELEMENTファンクション

- GETELEMENTSBYTAGNAMEファンクション

- GETENTITIESファンクション

- GETEXPANDEDNAMEプロシージャ/ファンクション

- GETFIRSTCHILDファンクション

- GETIMPLEMENTATIONファンクション

- GETLASTCHILDファンクション

- GETLENGTHファンクション

- GETLOCALNAMEプロシージャ/ファンクション

- GETNAMEファンクション

- GETNAMEDITEMファンクション

- GETNAMESPACEプロシージャ/ファンクション

- GETNEXTSIBLINGファンクション

- GETNODETYPEファンクション

- GETNODENAMEファンクション

- GETNODEVALUEファンクション

- GETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

- GETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

- GETNOTATIONNAMEファンクション

- GETNOTATIONSファンクション

- GETTARGETファンクション

- GETOWNERDOCUMENTファンクション

- GETOWNERELEMENTファンクション

- GETPARENTNODEファンクション

- GETPREFIXファンクション

- GETPREVIOUSSIBLINGファンクション

- GETPUBLICIDファンクション

- GETQUALIFIEDNAMEファンクション

- GETSCHEMANODEファンクション

- GETSPECIFIEDファンクション

- GETSTANDALONEファンクション

- GETSYSTEMIDファンクション

- GETTAGNAMEファンクション

- GETVALUEファンクション

- GETVERSIONファンクション

- GETXMLTYPEファンクション

- HASATTRIBUTEファンクション

- HASATTRIBUTESファンクション

- HASCHILDNODESファンクション

- HASFEATUREファンクション

- IMPORTNODEファンクション

- INSERTBEFOREファンクション

- INSERTDATAプロシージャ

- ISNULLファンクション

- ITEMファンクション

- MAKEATTRファンクション

- MAKECDATASECTIONファンクション

- MAKECHARACTERDATAファンクション

- MAKECOMMENTファンクション

- MAKEDOCUMENTファンクション

- MAKEDOCUMENTFRAGMENTファンクション

- MAKEDOCUMENTTYPEファンクション

- MAKEELEMENTファンクション

- MAKEENTITYファンクション

- MAKEENTITYREFERENCEファンクション

- MAKENODEファンクション

- MAKENOTATIONファンクション

- MAKEPROCESSINGINSTRUCTIONファンクション

- MAKETEXTファンクション

- NEWDOMDOCUMENTファンクション

- NORMALIZEプロシージャ

- REMOVEATTRIBUTEプロシージャ

- REMOVEATTRIBUTENODEファンクション

- REMOVECHILDファンクション

- REMOVENAMEDITEMファンクション

- REPLACECHILDファンクション

- REPLACEDATAプロシージャ

- RESOLVENAMESPACEPREFIXファンクション

- SETATTRIBUTEプロシージャ

- SETATTRIBUTENODEファンクション

- SETCHARSETプロシージャ

- SETDATAプロシージャ

- SETDOCTYPEプロシージャ

- SETNAMEDITEMファンクション

- SETNODEVALUEプロシージャ

- SETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

- SETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

- SETPREFIXプロシージャ

- SETSTANDALONEプロシージャ

- SETVALUEプロシージャ

- SETVERSIONプロシージャ

- SPLITTEXTファンクション

- SUBSTRINGDATAファンクション

- USEBINARYSTREAMファンクション

- WRITETOBUFFERプロシージャ

- WRITETOCLOBプロシージャ

- WRITETOFILEプロシージャ

192 DBMS_XMLGEN

- DBMS_XMLGENの使用方法

- セキュリティ・モデル

- DBMS_XMLGENサブプログラムの要約

- CLOSECONTEXTプロシージャ

- CONVERTファンクション

- GETNUMROWSPROCESSEDファンクション

- GETXMLファンクション

- GETXMLTYPEファンクション

- NEWCONTEXTファンクション

- NEWCONTEXTFROMHIERARCHYファンクション

- RESTARTQUERYプロシージャ

- SETCONVERTSPECIALCHARSプロシージャ

- SETMAXROWSプロシージャ

- SETNULLHANDLINGプロシージャ

- SETROWSETTAGプロシージャ

- SETROWTAGプロシージャ

- SETSKIPROWSプロシージャ

- USEITEMTAGSFORCOLLプロシージャ

- USENULLATTRIBUTEINDICATORプロシージャ

193 DBMS_XMLINDEX

- DBMS_XMLINDEXの使用方法

- 概要

- セキュリティ・モデル

- DBMS_XMLINDEXサブプログラムの要約

- CREATEDATEINDEXプロシージャ

- CREATENUMBERINDEXプロシージャ

- DROPPARAMETERプロシージャ

- MODIFYPARAMETERプロシージャ

- PROCESS_PENDINGプロシージャ

- REGISTERPARAMETERプロシージャ

- SYNCINDEXプロシージャ

194 DBMS_XMLPARSER

- DBMS_XMLPARSERの使用方法

- セキュリティ・モデル

- DBMS_XMLPARSERサブプログラムの要約

- FREEPARSER

- GETDOCTYPE

- GETDOCUMENT

- GETRELEASEVERSION

- GETVALIDATIONMODE

- NEWPARSER

- PARSE

- PARSEBUFFER

- PARSECLOB

- PARSEDTD

- PARSEDTDBUFFER

- PARSEDTDCLOB

- SETBASEDIR

- SETDOCTYPE

- SETERRORLOG

- SETPRESERVEWHITESPACE

- SETVALIDATIONMODE

- SHOWWARNINGS

195 DBMS_XMLQUERY

- DBMS_XMLQUERYの使用方法

- セキュリティ・モデル

- 定数

- タイプ

- DBMS_XMLQUERYサブプログラムの要約

- CLOSECONTEXT

- GETDTD

- GETEXCEPTIONCONTENT

- GETNUMROWSPROCESSED

- GETVERSION

- GETXML

- NEWCONTEXT

- PROPAGATEORIGINALEXCEPTION

- REMOVEXSLTPARAM

- SETBINDVALUE

- SETCOLLIDATTRNAME

- SETDATAHEADER

- SETDATEFORMAT

- SETENCODINGTAG

- SETERRORTAG

- SETMAXROWS

- SETMETAHEADER

- SETRAISEEXCEPTION

- SETRAISENOROWSEXCEPTION

- SETROWIDATTRNAME

- SETROWIDATTRVALUE

- SETROWSETTAG

- SETROWTAG

- SETSKIPROWS

- SETSQLTOXMLNAMEESCAPING

- SETSTYLESHEETHEADER

- SETTAGCASE

- SETXSLT

- SETXSLTPARAM

- USENULLATTRIBUTEINDICATOR

- USETYPEFORCOLLELEMTAG

196 DBMS_XMLSAVE

- DBMS_XMLSAVEの使用方法

- セキュリティ・モデル

- 定数

- タイプ

- DBMS_XMLSAVEサブプログラムの要約

- CLEARKEYCOLUMNLIST

- CLEARUPDATECOLUMNLIST

- CLOSECONTEXT

- DELETEXML

- GETEXCEPTIONCONTENT

- INSERTXML

- NEWCONTEXT

- PROPAGATEORIGINALEXCEPTION

- REMOVEXSLTPARAM

- SETBATCHSIZE

- SETCOMMITBATCH

- SETDATEFORMAT

- SETIGNORECASE

- SETKEYCOLUMN

- SETPRESERVEWHITESPACE

- SETROWTAG

- SETSQLTOXMLNAMEESCAPING

- SETUPDATECOLUMN

- SETXSLT

- SETXSLTPARAM

- UPDATEXML

197 DBMS_XMLSCHEMA

- DBMS_XMLSCHEMAの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_XMLSCHEMAサブプログラムの要約

- COMPILESCHEMAプロシージャ

- COPYEVOLVEプロシージャ

- DELETESCHEMAプロシージャ

- GENERATESCHEMAファンクション

- GENERATESCHEMASファンクション

- INPLACEEVOLVEプロシージャ

- PURGESCHEMAプロシージャ

- REGISTERSCHEMAプロシージャ

- REGISTERURIプロシージャ

198 DBMS_XMLSCHEMA_ANNOTATE

- DBMS_XMLSCHEMA_ANNOTATEの使用

- 概要

- セキュリティ・モデル

- DBMS_XMLSCHEMA_ANNOTATEサブプログラムの要約

- ADDXDBNAMESPACEプロシージャ

- DISABLEDEFAULTTABLECREATIONプロシージャ

- DISABLEMAINTAINDOMプロシージャ

- ENABLEDEFAULTTABLECREATIONプロシージャ

- ENABLEMAINTAINDOMプロシージャ

- GETSCHEMAANNOTATIONSファンクション

- GETSIDXDEFFROMVIEWファンクション

- PRINTWARNINGSプロシージャ

- REMOVEANYSTORAGEプロシージャ

- REMOVEDEFAULTTABLEプロシージャ

- REMOVEMAINTAINDOMプロシージャ

- REMOVEOUTOFLINEプロシージャ

- REMOVESQLCOLLTYPEプロシージャ

- REMOVESQLNAMEプロシージャ

- REMOVESQLTYPEプロシージャ

- REMOVESQLTYPEMAPPINGプロシージャ

- REMOVETABLEPROPSプロシージャ

- REMOVETIMESTAMPWITHTIMEZONEプロシージャ

- SETANYSTORAGEプロシージャ

- SETDEFAULTTABLEプロシージャ

- SETOUTOFLINEプロシージャ

- SETSCHEMAANNOTATATIONSプロシージャ

- SETSQLCOLLTYPEプロシージャ

- SETSQLNAMEプロシージャ

- SETSQLTYPEプロシージャ

- SETSQLTYPEMAPPINGプロシージャ

- SETTABLEPROPSプロシージャ

- SETTIMESTAMPWITHTIMEZONEプロシージャ

199 DBMS_XMLSTORAGE_MANAGE

- DBMS_XMLSTORAGE_MANAGEの使用

- 概要

- セキュリティ・モデル

- DBMS_XMLSTORAGE_MANAGEサブプログラムの要約

- DISABLEINDEXESANDCONSTRAINTSプロシージャ

- ENABLEINDEXESANDCONSTRAINTSプロシージャ

- EXCHANGEPOSTPROCプロシージャ

- EXCHANGEPREPROCプロシージャ

- INDEXXMLREFERENCESプロシージャ

- RENAMECOLLECTIONTABLEプロシージャ

- SCOPEXMLREFERENCESプロシージャ

- XPATH2TABCOLMAPPINGファンクション

200 DBMS_XMLSTORE

- DBMS_XMLSTOREの使用方法

- セキュリティ・モデル

- タイプ

- DBMS_XMLSTOREサブプログラムの要約

- CLEARKEYCOLUMNLIST

- CLEARUPDATECOLUMNLIST

- CLOSECONTEXT

- DELETEXML

- INSERTXML

- NEWCONTEXT

- SETKEYCOLUMN

- SETROWTAG

- SETUPDATECOLUMN

- UPDATEXML

201 DBMS_XMLTRANSLATIONS

- DBMS_XMLTRANSLATIONSの使用方法

- セキュリティ・モデル

- DBMS_XMLTRANSLATIONSサブプログラムの要約

- DISABLETRANSLATIONプロシージャ

- ENABLETRANSLATIONプロシージャ

- EXTRACTXLIFFファンクションおよびプロシージャ

- GETBASEDOCUMENTファンクション

- MERGEXLIFFファンクション

- SETSOURCELANGファンクション

- TRANSLATEXMLファンクション

- UPDATETRANSLATIONファンクション

202 DBMS_XPLAN

- DBMS_XPLANの使用方法

- 概要

- セキュリティ・モデル

- 例

- DBMS_XPLANサブプログラムの要約

- DIFF_PLANファンクション

- DISPLAYファンクション

- DISPLAY_AWRファンクション

- DISPLAY_CURSORファンクション

- DISPLAY_PLANファンクション

- DISPLAY_SQL_PLAN_BASELINEファンクション

- DISPLAY_SQLSETファンクション

203 DBMS_XSLPROCESSOR

- DBMS_XSLPROCESSORの使用方法

- 概要

- セキュリティ・モデル

- DBMS_XSLPROCESSORサブプログラムの要約

- CLOB2FILEプロシージャ

- FREEPROCESSORプロシージャ

- FREESTYLESHEETプロシージャ

- NEWPROCESSORファンクション

- NEWSTYLESHEETファンクション

- PROCESSXSLファンクションおよびプロシージャ

- READ2CLOBファンクション

- REMOVEPARAMプロシージャ

- RESETPARAMSプロシージャ

- SELECTNODESファンクション

- SELECTSINGLENODEファンクション

- SETERRORLOGプロシージャ

- SETPARAMプロシージャ

- SHOWWARNINGSプロシージャ

- TRANSFORMNODEファンクション

- VALUEOFファンクションおよびプロシージャ

204 DBMS_XSTREAM_ADM

- DBMS_XSTREAM_ADMの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_XSTREAM_ADMサブプログラムの要約

- ADD_COLUMNプロシージャ

- ADD_GLOBAL_PROPAGATION_RULESプロシージャ

- ADD_GLOBAL_RULESプロシージャ

- ADD_OUTBOUNDプロシージャ

- ADD_SCHEMA_PROPAGATION_RULESプロシージャ

- ADD_SCHEMA_RULESプロシージャ

- ADD_SUBSET_OUTBOUND_RULESプロシージャ

- ADD_SUBSET_PROPAGATION_RULESプロシージャ

- ADD_SUBSET_RULESプロシージャ

- ADD_TABLE_PROPAGATION_RULESプロシージャ

- ADD_TABLE_RULESプロシージャ

- ALTER_INBOUNDプロシージャ

- ALTER_OUTBOUNDプロシージャ

- CREATE_INBOUNDプロシージャ

- CREATE_OUTBOUNDプロシージャ

- DELETE_COLUMNプロシージャ

- DROP_INBOUNDプロシージャ

- DROP_OUTBOUNDプロシージャ

- ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ

- GET_MESSAGE_TRACKINGファンクション

- GET_TAGファンクション

- IS_GG_XSTREAM_FOR_STREAMSファンクション

- KEEP_COLUMNSプロシージャ

- MERGE_STREAMSプロシージャ

- MERGE_STREAMS_JOBプロシージャ

- PURGE_SOURCE_CATALOGプロシージャ

- RECOVER_OPERATIONプロシージャ

- REMOVE_QUEUEプロシージャ

- REMOVE_RULEプロシージャ

- REMOVE_SUBSET_OUTBOUND_RULESプロシージャ

- REMOVE_XSTREAM_CONFIGURATIONプロシージャ

- RENAME_COLUMNプロシージャ

- RENAME_SCHEMAプロシージャ

- RENAME_TABLEプロシージャ

- SET_MESSAGE_TRACKINGプロシージャ

- SET_PARAMETERプロシージャ

- SET_TAGプロシージャ

- SET_UP_QUEUEプロシージャ

- SPLIT_STREAMSプロシージャ

- START_OUTBOUNDプロシージャ

- STOP_OUTBOUNDプロシージャ

205 DBMS_XSTREAM_AUTH

- DBMS_XSTREAM_AUTHの使用

- 概要

- セキュリティ・モデル

- DBMS_XSTREAM_AUTHサブプログラムの要約

- GRANT_ADMIN_PRIVILEGEプロシージャ

- GRANT_REMOTE_ADMIN_ACCESSプロシージャ

- REVOKE_ADMIN_PRIVILEGEプロシージャ

- REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

206 DEBUG_EXTPROC

- DEBUG_EXTPROCの使用方法

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- DEBUG_EXTPROCサブプログラムの要約

- STARTUP_EXTPROC_AGENTプロシージャ

207 HTF

- HTFの使用方法

- 推奨されないサブプログラム

- 使用上の注意

- ルールおよび制限

- 例

- タグの要約

- HTFサブプログラムの要約

- ADDRESSファンクション

- ANCHORファンクション

- ANCHOR2ファンクション

- APPLETCLOSEファンクション

- APPLETOPENファンクション

- AREAファンクション

- BASEファンクション

- BASEFONTファンクション

- BGSOUNDファンクション

- BIGファンクション

- BLOCKQUOTECLOSEファンクション

- BLOCKQUOTEOPENファンクション

- BODYCLOSEファンクション

- BODYOPENファンクション

- BOLDファンクション

- BRファンクション

- CENTERファンクション

- CENTERCLOSEファンクション

- CENTEROPENファンクション

- CITEファンクション

- CODEファンクション

- COMMENTファンクション

- DFNファンクション

- DIRLISTCLOSEファンクション

- DIRLISTOPENファンクション

- DIVファンクション

- DLISTCLOSEファンクション

- DLISTDEFファンクション

- DLISTOPENファンクション

- DLISTTERMファンクション

- EMファンクション

- EMPHASISファンクション

- ESCAPE_SCファンクション

- ESCAPE_URLファンクション

- FONTCLOSEファンクション

- FONTOPENファンクション

- FORMAT_CELLファンクション

- FORMCHECKBOXファンクション

- FORMCLOSEファンクション

- FORMFILEファンクション

- FORMHIDDENファンクション

- FORMIMAGEファンクション

- FORMOPENファンクション

- FORMPASSWORDファンクション

- FORMRADIOファンクション

- FORMRESETファンクション

- FORMSELECTCLOSEファンクション

- FORMSELECTOPENファンクション

- FORMSELECTOPTIONファンクション

- FORMSUBMITファンクション

- FORMTEXTファンクション

- FORMTEXTAREAファンクション

- FORMTEXTAREA2ファンクション

- FORMTEXTAREACLOSEファンクション

- FORMTEXTAREAOPENファンクション

- FORMTEXTAREAOPEN2ファンクション

- FRAMEファンクション

- FRAMESETCLOSEファンクション

- FRAMESETOPENファンクション

- HEADCLOSEファンクション

- HEADERファンクション

- HEADOPENファンクション

- HRファンクション

- HTMLCLOSEファンクション

- HTMLOPENファンクション

- IMGファンクション

- IMG2ファンクション

- ISINDEXファンクション

- ITALICファンクション

- KBDファンクション

- KEYBOARDファンクション

- LINEファンクション

- LINKRELファンクション

- LINKREVファンクション

- LISTHEADERファンクション

- LISTINGCLOSEファンクション

- LISTINGOPENファンクション

- LISTITEMファンクション

- MAILTOファンクション

- MAPCLOSEファンクション

- MAPOPENファンクション

- MENULISTCLOSEファンクション

- MENULISTOPENファンクション

- METAファンクション

- NLファンクション

- NOBRファンクション

- NOFRAMESCLOSEファンクション

- NOFRAMESOPENファンクション

- OLISTCLOSEファンクション

- OLISTOPENファンクション

- PARAファンクション

- PARAGRAPHファンクション

- PARAMファンクション

- PLAINTEXTファンクション

- PRECLOSEファンクション

- PREOPENファンクション

- PRINTファンクション

- PRNファンクション

- Sファンクション

- SAMPLEファンクション

- SCRIPTファンクション

- SMALLファンクション

- STRIKEファンクション

- STRONGファンクション

- STYLEファンクション

- SUBファンクション

- SUPファンクション

- TABLECAPTIONファンクション

- TABLECLOSEファンクション

- TABLEDATAファンクション

- TABLEHEADERファンクション

- TABLEOPENファンクション

- TABLEROWCLOSEファンクション

- TABLEROWOPENファンクション

- TELETYPEファンクション

- TITLEファンクション

- ULISTCLOSEファンクション

- ULISTOPENファンクション

- UNDERLINEファンクション

- VARIABLEファンクション

- WBRファンクション

208 HTP

- HTPの使用方法

- 使用上の注意

- ルールおよび制限

- 例

- タグの要約

- HTPサブプログラムの要約

- ADDRESSプロシージャ

- ANCHORプロシージャ

- ANCHOR2プロシージャ

- APPLETCLOSEプロシージャ

- APPLETOPENプロシージャ

- AREAプロシージャ

- BASEプロシージャ

- BASEFONTプロシージャ

- BGSOUNDプロシージャ

- BIGプロシージャ

- BLOCKQUOTECLOSEプロシージャ

- BLOCKQUOTEOPENプロシージャ

- BODYCLOSEプロシージャ

- BODYOPENプロシージャ

- BOLDプロシージャ

- BRプロシージャ

- CENTERプロシージャ

- CENTERCLOSEプロシージャ

- CENTEROPENプロシージャ

- CITEプロシージャ

- CODEプロシージャ

- COMMENTプロシージャ

- DFNプロシージャ

- DIRLISTCLOSEプロシージャ

- DIRLISTOPENプロシージャ

- DIVプロシージャ

- DLISTCLOSEプロシージャ

- DLISTDEFプロシージャ

- DLISTOPENプロシージャ

- DLISTTERMプロシージャ

- EMプロシージャ

- EMPHASISプロシージャ

- ESCAPE_SCプロシージャ

- FONTCLOSEプロシージャ

- FONTOPENプロシージャ

- FORMCHECKBOXプロシージャ

- FORMCLOSEプロシージャ

- FORMOPENプロシージャ

- FORMFILEプロシージャ

- FORMHIDDENプロシージャ

- FORMIMAGEプロシージャ

- FORMPASSWORDプロシージャ

- FORMRADIOプロシージャ

- FORMRESETプロシージャ

- FORMSELECTCLOSEプロシージャ

- FORMSELECTOPENプロシージャ

- FORMSELECTOPTIONプロシージャ

- FORMSUBMITプロシージャ

- FORMTEXTプロシージャ

- FORMTEXTAREAプロシージャ

- FORMTEXTAREA2プロシージャ

- FORMTEXTAREACLOSEプロシージャ

- FORMTEXTAREAOPENプロシージャ

- FORMTEXTAREAOPEN2プロシージャ

- FRAMEプロシージャ

- FRAMESETCLOSEプロシージャ

- FRAMESETOPENプロシージャ

- HEADCLOSEプロシージャ

- HEADERプロシージャ

- HEADOPENプロシージャ

- HRプロシージャ

- HTMLCLOSEプロシージャ

- HTMLOPENプロシージャ

- IMGプロシージャ

- IMG2プロシージャ

- ISINDEXプロシージャ

- ITALICプロシージャ

- KBDプロシージャ

- KEYBOARDプロシージャ

- LINEプロシージャ

- LINKRELプロシージャ

- LINKREVプロシージャ

- LISTHEADERプロシージャ

- LISTINGCLOSEプロシージャ

- LISTINGOPENプロシージャ

- LISTITEMプロシージャ

- MAILTOプロシージャ

- MAPCLOSEプロシージャ

- MAPOPENプロシージャ

- MENULISTCLOSEプロシージャ

- MENULISTOPENプロシージャ

- METAプロシージャ

- NLプロシージャ

- NOBRプロシージャ

- NOFRAMESCLOSEプロシージャ

- NOFRAMESOPENプロシージャ

- OLISTCLOSEプロシージャ

- OLISTOPENプロシージャ

- PARAプロシージャ

- PARAGRAPHプロシージャ

- PARAMプロシージャ

- PLAINTEXTプロシージャ

- PRECLOSEプロシージャ

- PREOPENプロシージャ

- PRINTプロシージャ

- PRINTSプロシージャ

- PRNプロシージャ

- PSプロシージャ

- Sプロシージャ

- SAMPLEプロシージャ

- SCRIPTプロシージャ

- SMALLプロシージャ

- STRIKEプロシージャ

- STRONGプロシージャ

- STYLEプロシージャ

- SUBプロシージャ

- SUPプロシージャ

- TABLECAPTIONプロシージャ

- TABLECLOSEプロシージャ

- TABLEDATAプロシージャ

- TABLEHEADERプロシージャ

- TABLEOPENプロシージャ

- TABLEROWCLOSEプロシージャ

- TABLEROWOPENプロシージャ

- TELETYPEプロシージャ

- TITLEプロシージャ

- ULISTCLOSEプロシージャ

- ULISTOPENプロシージャ

- UNDERLINEプロシージャ

- VARIABLEプロシージャ

- WBRプロシージャ

209 ORD_DICOM

- ORD_DICOMのドキュメント

210 ORD_DICOM_ADMIN

- ORD_DICOM_ADMINのドキュメント

211 OWA_CACHE

- OWA_CACHEの使用方法

- 定数

- OWA_CACHEサブプログラムの要約

- DISABLEプロシージャ

- GET_ETAGファンクション

- GET_LEVELファンクション

- SET_CACHEプロシージャ

- SET_EXPIRESプロシージャ

- SET_NOT_MODIFIEDプロシージャ

- SET_SURROGATE_CONTROLプロシージャ

212 OWA_COOKIE

- OWA_COOKIEの使用方法

- 概要

- タイプ

- ルールおよび制限

- OWA_COOKIEサブプログラムの要約

- GETファンクション

- GET_ALLプロシージャ

- REMOVEプロシージャ

- SENDプロシージャ

213 OWA_CUSTOM

- OWA_CUSTOMの使用方法

- 定数

- OWA_CUSTOMサブプログラムの要約

- AUTHORIZEファンクション

214 OWA_IMAGE

- OWA_IMAGEの使用方法

- 概要

- タイプ

- 変数

- 例

- OWA_IMAGEサブプログラムの要約

- GET_Xファンクション

- GET_Yファンクション

215 OWA_OPT_LOCK

- OWA_OPT_LOCKの使用方法

- 概要

- タイプ

- OWA_OPT_LOCKサブプログラムの要約

- CHECKSUMファンクション

- GET_ROWIDファンクション

- STORE_VALUESプロシージャ

- VERIFY_VALUESファンクション

216 OWA_PATTERN

- OWA_PATTERNの使用方法

- タイプ

- 使用上の注意

- ワイルドカード

- 修飾子

- フラグ

- OWA_PATTERNサブプログラムの要約

- AMATCHファンクション

- CHANGEファンクションおよびプロシージャ

- GETPATプロシージャ

- MATCHファンクション

217 OWA_SEC

- OWA_SECの使用方法

- 使用上の注意

- OWA_SECサブプログラムの要約

- GET_CLIENT_HOSTNAMEファンクション

- GET_CLIENT_IPファンクション

- GET_PASSWORDファンクション

- GET_USER_IDファンクション

- SET_AUTHORIZATIONプロシージャ

- SET_PROTECTION_REALMプロシージャ

218 OWA_TEXT

- OWA_TEXTの使用方法

- タイプ

- MULTI_LINEデータ・タイプ

- ROW_LISTデータ・タイプ

- VC_ARRデータ・タイプ

- OWA_TEXTサブプログラムの要約

- ADD2MULTIプロシージャ

- NEW_ROW_LISTファンクションおよびプロシージャ

- PRINT_MULTIプロシージャ

- PRINT_ROW_LISTプロシージャ

- STREAM2MULTIプロシージャ

219 OWA_UTIL

- OWA_UTILの使用方法

- 概要

- タイプ

- DATETYPEデータ・タイプ

- IDENT_ARRデータ・タイプ

- IP_ADDRESSデータ・タイプ

- OWA_UTILサブプログラムの要約

- BIND_VARIABLESファンクション

- CALENDARPRINTプロシージャ

- CELLSPRINTプロシージャ

- CHOOSE_DATEプロシージャ

- GET_CGI_ENVファンクション

- GET_OWA_SERVICE_PATHファンクション

- GET_PROCEDUREファンクション

- HTTP_HEADER_CLOSEプロシージャ

- LISTPRINTプロシージャ

- MIME_HEADERプロシージャ

- PRINT_CGI_ENVプロシージャ

- REDIRECT_URLプロシージャ

- SHOWPAGEプロシージャ

- SHOWSOURCEプロシージャ

- SIGNATUREプロシージャ

- STATUS_LINEプロシージャ

- TABLEPRINTファンクション

- TODATEファンクション

- WHO_CALLED_MEプロシージャ

220 SDO_CS

- SDO_CSのドキュメント

221 SDO_CSW_PROCESS

- SDO_CSW_PROCESSのドキュメント

222 SDO_GCDR

- SDO_GCDRのドキュメント

223 SDO_GEOM

- SDO_GEOMのドキュメント

224 SDO_GEOR

- SDO_GEORのドキュメント

225 SDO_GEOR_ADMIN

- SDO_GEOR_ADMINのドキュメント

226 SDO_GEOR_AGGR

- SDO_GEOR_AGGRのドキュメント

227 SDO_GEOR_RA

- SDO_GEOR_RAのドキュメント

228 SDO_GEOR_UTL

- SDO_GEOR_UTLのドキュメント

229 SDO_LRS

- SDO_LRSのドキュメント

230 SDO_MIGRATE

- SDO_MIGRATEのドキュメント

231 SDO_NET

- SDO_NETのドキュメント

232 SDO_OLS

- SDO_OLSのドキュメント

233 SDO_PC_PKG

- SDO_PC_PKGのドキュメント

234 SDO_SAM

- SDO_SAMのドキュメント

235 SDO_TIN_PKG

- SDO_TIN_PKGのドキュメント

236 SDO_TOPO

- SDO_TOPOのドキュメント

237 SDO_TOPO_MAP

- SDO_TOPO_MAPのドキュメント

238 SDO_TUNE

- SDO_TUNEのドキュメント

239 SDO_UTIL

- SDO_UTILのドキュメント

240 SDO_WFS_LOCK

- SDO_WFS_LOCKのドキュメント

241 SDO_WFS_PROCESS

- SDO_WFS_PROCESSのドキュメント

242 SEM_APIS

- SEM_APISのドキュメント

243 SEM_OLS

- SEM_OLSのドキュメント

244 SEM_PERF

- SEM_PERFのドキュメント

245 SEM_RDFCTX

- SEM_RDFCTXのドキュメント

246 SEM_RDFSA

- SEM_RDFSAのドキュメント

247 UTL_CALL_STACK

- UTL_CALL_STACKの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例外

- データ構造

- UNIT_QUALIFIED_NAME

- UTL_CALL_STACKサブプログラムの要約

- BACKTRACE_DEPTHファンクション

- BACKTRACE_LINEファンクション

- BACKTRACE_UNITファンクション

- CURRENT_EDITIONファンクション

- CONCATENATE_SUBPROGRAMファンクション

- DYNAMIC_DEPTHファンクション

- ERROR_DEPTHファンクション

- ERROR_MSGファンクション

- ERROR_NUMBERファンクション

- LEXICAL_DEPTHファンクション

- OWNERファンクション

- UNIT_LINEファンクション

- SUBPROGRAMファンクション

248 UTL_COLL

- UTL_COLLサブプログラムの要約

- IS_LOCATORファンクション

- 例

249 UTL_COMPRESS

- UTL_COMPRESSの使用方法

- 定数

- 例外

- 使用上の注意

- UTL_COMPRESSサブプログラムの要約

- ISOPENファンクション

- 戻り値

- 例

- LZ_COMPRESSファンクションおよびプロシージャ

- LZ_COMPRESS_ADDプロシージャ

- 例外

- LZ_COMPRESS_CLOSE

- 例外

- LZ_COMPRESS_OPEN

- 戻り値

- 例外

- 使用上の注意

- LZ_UNCOMPRESSファンクションおよびプロシージャ

- LZ_UNCOMPRESS_EXTRACTプロシージャ

- 例外

- LZ_UNCOMPRESS_OPENファンクション

- 戻り値

- 例外

- 使用上の注意

- LZ_UNCOMPRESS_CLOSEプロシージャ

- 例外

250 UTL_ENCODE

- UTL_ENCODEサブプログラムの要約

- BASE64_DECODEファンクション

- BASE64_ENCODEファンクション

- MIMEHEADER_DECODEファンクション

- MIMEHEADER_ENCODEファンクション

- QUOTED_PRINTABLE_DECODEファンクション

- QUOTED_PRINTABLE_ENCODEファンクション

- TEXT_DECODEファンクション

- TEXT_ENCODEファンクション

- UUDECODEファンクション

- UUENCODEファンクション

251 UTL_FILE

- UTL_FILEの使用方法

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- 例外

- 例

- データ構造

- FILETYPEレコード・タイプ

- UTL_FILEサブプログラムの要約

- FCLOSEプロシージャ

- FCLOSE_ALLプロシージャ

- FCOPYプロシージャ

- FFLUSHプロシージャ

- FGETATTRプロシージャ

- FGETPOSファンクション

- FOPENファンクション

- FOPEN_NCHARファンクション

- FREMOVEプロシージャ

- FRENAMEプロシージャ

- FSEEKプロシージャ

- GET_LINEプロシージャ

- GET_LINE_NCHARプロシージャ

- GET_RAWプロシージャ

- IS_OPENファンクション

- NEW_LINEプロシージャ

- PUTプロシージャ

- PUT_LINEプロシージャ

- PUT_LINE_NCHARプロシージャ

- PUT_NCHARプロシージャ

- PUTFプロシージャ

- PUTF_NCHARプロシージャ

- PUT_RAWプロシージャ

252 UTL_HTTP

- UTL_HTTPの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ・タイプ

- REQタイプ

- REQUEST_CONTEXT_KEYタイプ

- RESPタイプ

- COOKIEタイプおよびCOOKIE_TABLEタイプ

- CONNECTIONタイプ

- 使用上の注意

- 操作フロー

- 単純なHTTPのフェッチ

- HTTP要求

- HTTP応答

- HTTP Cookie

- HTTPの永続的接続

- エラー条件

- セッションの設定

- 要求コンテキスト

- 外部パスワード・ストア

- 例外

- 例

- 一般的な使用方法

- HTTP応答ヘッダーの取出し

- HTTP認証の処理

- Cookieの取出しおよびリストア

- プライベートのWalletおよびCookieの表によるHTTP要求

- サブプログラム・グループ

- 単一コール・サブプログラムでの単純なHTTPのフェッチ

- セッションの設定サブプログラム

- HTTP要求サブプログラム

- HTTP要求コンテキスト・サブプログラム

- HTTP応答サブプログラム

- HTTP Cookieサブプログラム

- HTTPの永続的接続サブプログラム

- エラー条件のサブプログラム

- UTL_HTTPサブプログラムの要約

- ADD_COOKIESプロシージャ

- BEGIN_REQUESTファンクション

- CLEAR_COOKIESプロシージャ

- CLOSE_PERSISTENT_CONNプロシージャ

- CLOSE_PERSISTENT_CONNSプロシージャ

- CREATE_REQUEST_CONTEXTファンクション

- DESTROY_REQUEST_CONTEXTプロシージャ

- END_REQUESTプロシージャ

- END_RESPONSEプロシージャ

- GET_AUTHENTICATIONプロシージャ

- GET_BODY_CHARSETプロシージャ

- GET_COOKIE_COUNTファンクション

- GET_COOKIE_SUPPORTプロシージャ

- GET_COOKIESファンクション

- GET_DETAILED_EXCP_SUPPORTプロシージャ

- GET_DETAILED_SQLCODEファンクション

- GET_DETAILED_SQLERRMファンクション

- GET_FOLLOW_REDIRECTプロシージャ

- GET_HEADERプロシージャ

- GET_HEADER_BY_NAMEプロシージャ

- GET_HEADER_COUNTファンクション

- GET_PERSISTENT_CONN_COUNTファンクション

- GET_PERSISTENT_CONN_SUPPORTプロシージャ

- GET_PERSISTENT_CONNSプロシージャ

- GET_PROXYプロシージャ

- GET_RESPONSEファンクション

- GET_RESPONSE_ERROR_CHECKプロシージャ

- GET_TRANSFER_TIMEOUTプロシージャ

- READ_LINEプロシージャ

- READ_RAWプロシージャ

- READ_TEXTプロシージャ

- REQUESTファンクション

- REQUEST_PIECESファンクション

- SET_AUTHENTICATIONプロシージャ

- SET_AUTHENTICATION_FROM_WALLETプロシージャ

- SET_BODY_CHARSETプロシージャ

- SET_COOKIE_SUPPORTプロシージャ

- SET_DETAILED_EXCP_SUPPORTプロシージャ

- SET_FOLLOW_REDIRECTプロシージャ

- SET_HEADERプロシージャ

- SET_PERSISTENT_CONN_SUPPORTプロシージャ

- SET_PROXYプロシージャ

- SET_RESPONSE_ERROR_CHECKプロシージャ

- SET_TRANSFER_TIMEOUTプロシージャ

- SET_WALLETプロシージャ

- WRITE_LINEプロシージャ

- WRITE_RAWプロシージャ

- WRITE_TEXTプロシージャ

253 UTL_I18N

- UTL_I18Nの使用方法

- 概要

- セキュリティ・モデル

- 定数

- UTL_I18Nサブプログラムの要約

- ESCAPE_REFERENCEファンクション

- GET_COMMON_TIME_ZONESファンクション

- GET_DEFAULT_CHARSETファンクション

- GET_DEFAULT_ISO_CURRENCYファンクション

- GET_DEFAULT_LINGUISTIC_SORTファンクション

- GET_LOCAL_LANGUAGESファンクション

- GET_LOCAL_LINGUISTIC_SORTSファンクション

- GET_LOCAL_TERRITORIESファンクション

- GET_LOCAL_TIME_ZONESファンクション

- GET_MAX_CHARACTER_SIZEファンクション

- GET_TRANSLATIONファンクション

- MAP_CHARSETファンクション

- MAP_FROM_SHORT_LANGUAGEファンクション

- MAP_LANGUAGE_FROM_ISOファンクション

- MAP_LOCALE_TO_ISOファンクション

- MAP_TERRITORY_FROM_ISOファンクション

- MAP_TO_SHORT_LANGUAGEファンクション

- RAW_TO_CHARファンクション

- RAW_TO_NCHARファンクション

- STRING_TO_RAWファンクション

- TRANSLITERATEファンクション

- UNESCAPE_REFERENCEファンクション

254 UTL_INADDR

- UTL_INADDRの使用方法

- セキュリティ・モデル

- 例外

- 例

- UTL_INADDRサブプログラムの要約

- GET_HOST_ADDRESSファンクション

- GET_HOST_NAMEファンクション

255 UTL_IDENT

- UTL_IDENTの使用方法

- 概要

- セキュリティ・モデル

- 定数

256 UTL_LMS

- UTL_LMSの使用方法

- セキュリティ・モデル

- UTL_LMSサブプログラムの要約

- FORMAT_MESSAGEファンクション

- GET_MESSAGEファンクション

257 UTL_MAIL

- UTL_MAILの使用方法

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- UTL_MAILサブプログラムの要約

- SENDプロシージャ

- SEND_ATTACH_RAWプロシージャ

- SEND_ATTACH_VARCHAR2プロシージャ

258 UTL_MATCH

- UTL_MATCHの使用方法

- 概要

- セキュリティ・モデル

- UTL_MATCHサブプログラムの要約

- EDIT_DISTANCEファンクション

- EDIT_DISTANCE_SIMILARITYファンクション

- JARO_WINKLERファンクション

- JARO_WINKLER_SIMILARITYファンクション

259 UTL_NLA

- UTL_NLAの使用方法

- 概要

- ルールおよび制限

- セキュリティ・モデル

- サブプログラム・グループ

- BLASレベル1(ベクトル-ベクトル演算)サブプログラム

- BLASレベル2(マトリックス-ベクトル演算)サブプログラム

- BLASレベル3(マトリックス-マトリックス演算)サブプログラム

- LAPACKドライバ・ルーチン(一次方程式)サブプログラム

- LAPACKドライバ・ルーチン(LLSおよび固有値問題)サブプログラム

- UTL_NLAサブプログラムの要約

- BLAS_ASUMファンクション

- BLAS_AXPYプロシージャ

- BLAS_COPYプロシージャ

- BLAS_DOTファンクション

- BLAS_GBMVプロシージャ

- BLAS_GEMMプロシージャ

- BLAS_GEMVプロシージャ

- BLAS_GERプロシージャ

- BLAS_IAMAXファンクション

- BLAS_NRM2ファンクション

- BLAS_ROTプロシージャ

- BLAS_ROTGプロシージャ

- BLAS_SCALプロシージャ

- BLAS_SPMVプロシージャ

- BLAS_SPRプロシージャ

- BLAS_SPR2プロシージャ

- BLAS_SBMVプロシージャ

- BLAS_SWAPプロシージャ

- BLAS_SYMMプロシージャ

- BLAS_SYMVプロシージャ

- BLAS_SYRプロシージャ

- BLAS_SYR2プロシージャ

- BLAS_SYR2Kプロシージャ

- BLAS_SYRKプロシージャ

- BLAS_TBMVプロシージャ

- BLAS_TBSVプロシージャ

- BLAS_TPMVプロシージャ

- BLAS_TPSVプロシージャ

- BLAS_TRMMプロシージャ

- BLAS_TRMVプロシージャ

- BLAS_TRSMプロシージャ

- BLAS_TRSVプロシージャ

- LAPACK_GBSVプロシージャ

- LAPACK_GEESプロシージャ

- LAPACK_GELSプロシージャ

- LAPACK_GESDDプロシージャ

- LAPACK_GESVプロシージャ

- LAPACK_GESVDプロシージャ

- LAPACK_GEEVプロシージャ

- LAPACK_GTSVプロシージャ

- LAPACK_PBSVプロシージャ

- LAPACK_POSVプロシージャ

- LAPACK_PPSVプロシージャ

- LAPACK_PTSVプロシージャ

- LAPACK_SBEVプロシージャ

- LAPACK_SBEVDプロシージャ

- LAPACK_SPEVプロシージャ

- LAPACK_SPEVDプロシージャ

- LAPACK_SPSVプロシージャ

- LAPACK_STEVプロシージャ

- LAPACK_STEVDプロシージャ

- LAPACK_SYEVプロシージャ

- LAPACK_SYEVDプロシージャ

- LAPACK_SYSVプロシージャ

260 UTL_RAW

- UTL_RAWの使用方法

- 概要

- 使用上の注意

- UTL_RAWサブプログラムの要約

- BIT_ANDファンクション

- BIT_COMPLEMENTファンクション

- BIT_ORファンクション

- BIT_XORファンクション

- CAST_FROM_BINARY_DOUBLEファンクション

- CAST_FROM_BINARY_FLOATファンクション

- CAST_FROM_BINARY_INTEGERファンクション

- CAST_FROM_NUMBERファンクション

- CAST_TO_BINARY_DOUBLEファンクション

- CAST_TO_BINARY_FLOATファンクション

- CAST_TO_BINARY_INTEGERファンクション

- CAST_TO_NUMBERファンクション

- CAST_TO_NVARCHAR2ファンクション

- CAST_TO_RAWファンクション

- CAST_TO_VARCHAR2ファンクション

- COMPAREファンクション

- CONCATファンクション

- CONVERTファンクション

- COPIESファンクション

- LENGTHファンクション

- OVERLAYファンクション

- REVERSEファンクション

- SUBSTRファンクション

- TRANSLATEファンクション

- TRANSLITERATEファンクション

- XRANGEファンクション

261 UTL_RECOMP

- UTL_RECOMPの使用方法

- 概要

- 使用上の注意

- 例

- UTL_RECOMPサブプログラムの要約

- RECOMP_PARALLELプロシージャ

- RECOMP_SERIALプロシージャ

262 UTL_REF

- UTL_REFの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- 例外

- UTL_REFサブプログラムの要約

- DELETE_OBJECTプロシージャ

- LOCK_OBJECTプロシージャ

- SELECT_OBJECTプロシージャ

- UPDATE_OBJECTプロシージャ

263 UTL_SMTP

- UTL_SMTPの使用方法

- 概要

- セキュリティ・モデル

- 定数

- タイプ

- connectionレコード・タイプ

- reply、repliesレコード・タイプ

- 応答コード

- 使用上の注意

- 例外

- ルールおよび制限

- 例

- UTL_SMTPサブプログラムの要約

- AUTHファンクションおよびプロシージャ

- CLOSE_CONNECTIONプロシージャ

- CLOSE_DATAファンクションおよびプロシージャ

- COMMANDファンクションおよびプロシージャ

- COMMAND_REPLIESファンクション

- DATAファンクションおよびプロシージャ

- EHLOファンクションおよびプロシージャ

- HELOファンクションおよびプロシージャ

- HELPファンクション

- MAILファンクションおよびプロシージャ

- NOOPファンクションおよびプロシージャ

- OPEN_CONNECTIONファンクション

- OPEN_DATAファンクションおよびプロシージャ

- QUITファンクションおよびプロシージャ

- RCPTファンクション

- RSETファンクションおよびプロシージャ

- STARTTLSファンクションおよびプロシージャ

- VRFYファンクション

- WRITE_DATAプロシージャ

- WRITE_RAW_DATAプロシージャ

264 UTL_SPADV

- UTL_SPADVの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- UTL_SPADVサブプログラムの要約

- ALTER_MONITORINGプロシージャ

- COLLECT_STATSプロシージャ

- IS_MONITORINGファンクション

- SHOW_STATSプロシージャ

- SHOW_STATS_HTMLプロシージャ

- START_MONITORINGプロシージャ

- STOP_MONITORINGプロシージャ

265 UTL_TCP

- UTL_TCPの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- CONNECTIONタイプ

- CRLF

- 例外

- ルールおよび制限

- 例

- UTL_TCPサブプログラムの要約

- AVAILABLEファンクション

- CLOSE_ALL_CONNECTIONSプロシージャ

- CLOSE_CONNECTIONプロシージャ

- FLUSHプロシージャ

- GET_LINEファンクション

- GET_LINE_NCHARファンクション

- GET_RAWファンクション

- GET_TEXTファンクション

- GET_TEXT_NCHARファンクション

- OPEN_CONNECTIONファンクション

- READ_LINEファンクション

- READ_RAWファンクション

- READ_TEXTファンクション

- SECURE_CONNECTIONプロシージャ

- WRITE_LINEファンクション

- WRITE_RAWファンクション

- WRITE_TEXTファンクション

266 UTL_URL

- UTL_URLの使用方法

- 概要

- 例外

- 例

- UTL_URLサブプログラムの要約

- ESCAPEファンクション

- UNESCAPEファンクション

267 WPG_DOCLOAD

- WPG_DOCLOADの使用方法

- 定数

- NAME_COL_LEN

- MIMET_COL_LEN

- MAX_DOCTABLE_NAME_LEN

- WPG_DOCLOADサブプログラムの要約

- DOWNLOAD_FILEプロシージャ

268 ANYDATAタイプ

- ANYDATAタイプの使用方法

- 制限事項

- 使用上の注意

- 構成

- アクセス

- ANYDATAサブプログラムの要約

- BEGINCREATE静的プロシージャ

- ENDCREATEメンバー・プロシージャ

- GET*メンバー・ファンクション

- GETTYPEメンバー・ファンクション

- GETTYPENAMEメンバー・ファンクション

- PIECEWISEメンバー・プロシージャ

- SET*メンバー・プロシージャ

269 ANYDATASETタイプ

- 構成

- ANYDATASETタイプのサブプログラムの要約

- ADDINSTANCEメンバー・プロシージャ

- BEGINCREATE静的プロシージャ

- ENDCREATEメンバー・プロシージャ

- GET*メンバー・ファンクション

- GETCOUNTメンバー・ファンクション

- GETINSTANCEメンバー・ファンクション

- GETTYPEメンバー・ファンクション

- GETTYPENAMEメンバー・ファンクション

- PIECEWISEメンバー・プロシージャ

- SET*メンバー・プロシージャ

270 ANYTYPEタイプ

- ANYTYPEサブプログラムの要約

- BEGINCREATE静的プロシージャ

- SETINFOメンバー・プロシージャ

- ADDATTRメンバー・プロシージャ

- ENDCREATEメンバー・プロシージャ

- GETPERSISTENT静的ファンクション

- GETINFOメンバー・ファンクション

- GETATTRELEMINFOメンバー・ファンクション

271 Oracle Databaseアドバンスト・キューイング(AQ)のタイプ

- Oracle Databaseアドバンスト・キューイングのタイプの使用

- セキュリティ・モデル

- タイプの要約

- AQ$_AGENTタイプ

- AQ$_AGENT_LIST_Tタイプ

- AQ$_DESCRIPTORタイプ

- AQ$_NTFN_DESCRIPTORタイプ

- AQ$_NTFN_MSGID_ARRAYタイプ

- AQ$_POST_INFOタイプ

- AQ$_POST_INFO_LISTタイプ

- AQ$_PURGE_OPTIONS_Tタイプ

- AQ$_RECIPIENT_LIST_Tタイプ

- AQ$_REG_INFOタイプ

- AQ$_REG_INFO_LISTタイプ

- AQ$_SUBSCRIBER_LIST_Tタイプ

- DEQUEUE_OPTIONS_Tタイプ

- ENQUEUE_OPTIONS_Tタイプ

- SYS.MSG_PROP_Tタイプ

- MESSAGE_PROPERTIES_Tタイプ

- MESSAGE_PROPERTIES_ARRAY_Tタイプ

- MSGID_ARRAY_Tタイプ

272 DBFS Content Interfaceタイプ

- コンテンツ・タイプの使用方法

- 概要

- セキュリティ・モデル

- データ構造

- DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ

- DBMS_DBFS_CONTENT_LIST_ITEM_Tオブジェクト・タイプ

- DBMS_DBFS_CONTENT_PROPERTY_Tオブジェクト・タイプ

- DBMS_DBFS_CONTENT_LIST_ITEMS_T表タイプ

- DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ

- DBMS_DBFS_CONTENT_RAW_T表タイプ

273 データベースのURIタイプ

- URITYPEスーパータイプのサブプログラムの要約

- GETBLOB

- GETCLOB

- GETCONTENTTYPE

- GETEXTERNALURL

- GETURL

- GETXML

- HTTPURITYPEサブタイプのサブプログラムの要約

- CREATEURI

- GETBLOB

- GETCLOB

- GETCONTENTTYPE

- GETEXTERNALURL

- GETURL

- GETXML

- HTTPURITYPE

- DBURITYPEサブタイプのサブプログラムの要約

- CREATEURI

- DBURITYPE

- GETBLOB

- GETCLOB

- GETCONTENTTYPE

- GETEXTERNALURL

- GETURL

- GETXML

- XDBURITYPEサブタイプのサブプログラムの要約

- CREATEURI

- GETBLOB

- GETCLOB

- GETCONTENTTYPE

- GETEXTERNALURL

- GETURL

- GETXML

- XDBURITYPE

- URIFACTORYパッケージのサブプログラムの要約

- GETURI

- ESCAPEURI

- UNESCAPEURI

- REGISTERURLHANDLER

- UNREGISTERURLHANDLER

274 JMSタイプ

- JMSタイプの使用方法

- 概要

- セキュリティ・モデル

- JavaとPL/SQLのデータ・タイプ

- Oracle Database 10g の新しいJMSサポート

- バイト、ストリームおよびマップ・メッセージの詳細

- Oracle Databaseアドバンスト・キューイングのメッセージをエンコードおよびデコードするJavaストアド・プロシージャの使用

- Jservの静的な変数の初期化

- PL/SQLへのペイロード・データの引戻し

- 静的な変数のガベージ・コレクション

- メッセージ・ストアの使用: 静的な変数のコレクション

- 通常のコール順序

- ストリームおよびバイト・メッセージに対する読取り専用および書込み専用モードの実行

- バイトおよびストリーム・メッセージの違い

- バイト、マップおよびストリーム・メッセージのRAWバイトとしての取得および設定

- 一般的メッセージと固有メッセージのアップキャストおよびダウンキャスト

- JMSタイプのエラー・レポート

- Oracle JMSタイプの定数

- CONVERT_JMS_SELECTOR

- 最小限の仕様による変換

- 宛先のペイロード・タイプを指定した場合の変換

- 宛先のペイロード・タイプおよび準拠モードを指定した場合の変換

- JMSタイプの要約

- SYS.AQ$_JMS_MESSAGEタイプ

- CONSTRUCT静的ファンクション

- 変換メソッド

- JMSヘッダー・メソッド

- システム・プロパティ・メソッド

- ユーザー・プロパティ・メソッド

- ペイロード・メソッド

- SYS.AQ$_JMS_TEXT_MESSAGEタイプ

- CONSTRUCTファンクション

- JMSヘッダー・メソッド

- システム・プロパティ・メソッド

- ユーザー・プロパティ・メソッド

- ペイロード・メソッド

- SYS.AQ$_JMS_BYTES_MESSAGEタイプ

- CONSTRUCTファンクション

- JMSヘッダー・メソッド

- システム・プロパティ・メソッド

- ユーザー・プロパティ・メソッド

- ペイロード・メソッド

- SYS.AQ$_JMS_MAP_MESSAGEタイプ

- CONSTRUCTファンクション

- JMSヘッダー・メソッド

- システム・プロパティ・メソッド

- ユーザー・プロパティ・メソッド

- ペイロード・メソッド

- SYS.AQ$_JMS_STREAM_MESSAGEタイプ

- CONSTRUCTファンクション

- JMSヘッダー・メソッド

- システム・プロパティ・メソッド

- ユーザー・プロパティ・メソッド

- ペイロード・メソッド

- SYS.AQ$_JMS_OBJECT_MESSAGEタイプ

- SYS.AQ$_JMS_NAMEARRAYタイプ

- SYS.AQ$_JMS_VALUEタイプ

- SYS.AQ$_JMS_EXCEPTIONタイプ

275 論理変更レコードのタイプ

- 論理変更レコードのタイプの使用

- 概要

- セキュリティ・モデル

- 論理変更レコードのタイプの要約

- LCR$_DDL_RECORDタイプ

- LCR$_DDL_RECORDコンストラクタ

- LCR$_DDL_RECORDサブプログラムの要約

- LCR$_ROW_RECORDタイプ

- LCR$_ROW_RECORDコンストラクタ

- LCR$_ROW_RECORDサブプログラムの要約

- LCR$_DDL_RECORDとLCR$_ROW_RECORDに共通するサブプログラム

- LCR$_ROW_LISTタイプ

- LCR$_ROW_UNITタイプ

276 Oracle Multimedia ORDAudioタイプ

- ORDAudioのマニュアル

277 Oracle Multimedia ORDDicomタイプ

- ORDDicomのマニュアル

278 Oracle Multimedia ORDDocタイプ

- ORDDocのマニュアル

279 Oracle Multimedia ORDImageタイプ

- ORDImageのマニュアル

280 Oracle Multimedia SQL/MM Still Imageタイプ

- SQL/MM Still Imageのマニュアル

281 Oracle Multimedia ORDVideoタイプ

- ORDVideoのマニュアル

282 MGD_IDパッケージ・タイプ

- MGD_IDパッケージのオブジェクト・タイプの使用方法

- セキュリティ・モデル

- タイプの要約

- MGD_ID_COMPONENTオブジェクト・タイプ

- MGD_ID_COMPONENT_VARRAYオブジェクト・タイプ

- MGD_IDオブジェクト・タイプ

- MGD_IDサブプログラムの要約

- MGD_IDコンストラクタ・ファンクション

- FORMATファンクション

- GET_COMPONENTファンクション

- TO_STRINGファンクション

- TRANSLATEファンクション

283 ルール・タイプ

- ルール・タイプの使用方法

- 概要

- セキュリティ・モデル

- ルール・タイプの要約

- RE$ATTRIBUTE_VALUEタイプ

- RE$ATTRIBUTE_VALUE_LISTタイプ

- RE$COLUMN_VALUEタイプ

- RE$COLUMN_VALUE_LISTタイプ

- RE$NAME_ARRAYタイプ

- RE$NV_ARRAYタイプ

- 構文

- RE$NV_LISTタイプ

- RE$NV_NODEタイプ

- RE$RULE_HITタイプ

- RE$RULE_HIT_LISTタイプ

- RE$TABLE_ALIASタイプ

- RE$TABLE_ALIAS_LISTタイプ

- RE$TABLE_VALUEタイプ

- RE$TABLE_VALUE_LISTタイプ

- RE$VARIABLE_TYPEタイプ

- RE$VARIABLE_TYPE_LISTタイプ

- RE$VARIABLE_VALUEタイプ

- RE$VARIABLE_VALUE_LISTタイプ

284 UTL Streamsタイプ

- UTL Streamsタイプの使用方法

- セキュリティ・モデル

- UTL Binary Streamsタイプの要約

- UTL_BINARYINPUTSTREAMタイプ

- UTL_BINARYOUTPUTSTREAMタイプ

- UTL_CHARACTERINPUTSTREAMタイプ

- UTL_CHARACTEROUTPUTSTREAMタイプ

285 XMLTYPE

- XMLTypeサブプログラムの要約

- CREATENONSCHEMABASEDXML

- CREATESCHEMABASEDXML

- CREATEXML

- EXISTSNODE

- EXTRACT

- GETBLOBVAL

- GETCLOBVAL

- GETNAMESPACE

- GETNUMBERVAL

- GETROOTELEMENT

- GETSCHEMAURL

- GETSTRINGVAL

- ISFRAGMENT

- ISSCHEMABASED

- ISSCHEMAVALID

- ISSCHEMAVALIDATED

- SCHEMAVALIDATE

- SETSCHEMAVALIDATED

- TOOBJECT

- TRANSFORM

- XMLTYPE

索引

はじめに

この章では、次の項目について説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』 は、プログラマ、システム・アナリスト、プロジェクト・マネージャおよびデータベース・アプリケーションの開発に関心のある方々に有効です。このマニュアルでは、読者にアプリケーション・プログラミングについての作業知識があること、リレーショナル・データベース・システムの情報にアクセスするためのSQLの使用経験が十分にあることを前提としています。一部の項では、オブジェクト指向プログラミングの基本的な知識も必要です。

ドキュメントのアクセシビリティについて

オラクル社のアクセシビリティの詳細は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポート・サービスへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoを参照するか、聴覚に障害のあるお客様の場合はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

詳細は、次のドキュメントを参照してください。

- 『Oracle Database開発ガイド』

- 『Oracle Database PL/SQL言語リファレンス』

このマニュアルで使用している例の多くでは、Oracle Databaseのインストール時に「基本インストール」オプションを選択したときにデフォルトでインストールされるサンプル・スキーマを使用しています。これらのスキーマがどのように作成されているか、およびその使用方法の詳細は、『Oracle Databaseサンプル・スキーマ』を参照してください。

印刷版のドキュメントは、Oracle Storeの次の場所から購入できます。

http://shop.oracle.com/

リリース・ノート、インストール関連ドキュメント、ホワイト・ペーパーまたはその他の関連ドキュメントは、OTN(Oracle Technology Network)から、無償でダウンロードできます。

http://docs.oracle.com/

表記規則

この項では、このマニュアルの本文およびコード例で使用される表記規則について説明します。この項の内容は次のとおりです。

- 本文の表記規則

- コード例の表記規則

本文の表記規則

本文では、特定の項目が一目でわかるように、次の表記規則を使用します。次の表に、その規則と使用例を示します。

規則

意味

例

太字

太字は、操作に関連するグラフィカル・ユーザー・インタフェース要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

この句を指定すると、索引構成表が作成されます。

イタリック体

イタリックは、ドキュメントのタイトルまたは強調を示します。

『Oracle Database概要』
リカバリ・カタログおよびターゲット・データベースが同じディスクに存在しないことを確認します。

固定幅フォントの大文字

固定幅フォントの大文字は、システム指定の要素を示します。このような要素には、パラメータ、権限、データ・タイプ、RMANキーワード、SQLキーワード、SQL*Plusまたはユーティリティ・コマンド、パッケージおよびメソッドがあります。また、システム指定の列名、データベース・オブジェクト、データベース構造、ユーザー名およびロールも含まれます。

NUMBER列に対してのみ、この句を指定できます。
BACKUPコマンドを使用して、データベースのバックアップを作成できます。

USER_TABLESデータ・ディクショナリ・ビュー内のTABLE_NAME列を問い合せます。

DBMS_STATS.GENERATE_STATSプロシージャを使用します。

固定幅フォントの小文字

固定幅フォントの小文字は、実行可能ファイル、ファイル名、ディレクトリ名およびユーザーが指定する要素のサンプルを示します。このような要素には、コンピュータ名およびデータベース名、ネット・サービス名および接続識別子があります。また、ユーザーが指定するデータベース・オブジェクトとデータベース構造、列名、パッケージとクラス、ユーザー名とロール、プログラム・ユニットおよびパラメータ値も含まれます。
注意: プログラム要素には、大文字と小文字を組み合せて使用するものもあります。これらの要素は、記載されているとおりに入力してください。

sqlplusと入力して、SQL*Plusを起動します。
パスワードは、orapwdファイルで指定します。

/disk1/oracle/dbsディレクトリ内のデータ・ファイルおよび制御ファイルのバックアップを作成します。

hr.departments表には、department_id、department_nameおよびlocation_id列があります。

QUERY_REWRITE_ENABLED初期化パラメータをtrueに設定します。

JRepUtilクラスが次のメソッドを実装します。

固定幅フォントの小文字のイタリック

固定幅フォントの小文字のイタリックは、プレースホルダまたは変数を示します。

parallel_clauseを指定できます。
old_release.SQLを実行します。ここで、old_releaseとはアップグレード前にインストールしたリリースを示します。

コード例の表記規則

コード例は、SQL、PL/SQL、SQL*Plusまたは他のコマンドライン文の例です。次のように固定幅フォントで表示され、通常のテキストと区別されます。

SELECT username FROM dba_users WHERE username = 'MIGRATE';

次の表に、コード例で使用される表記規則とその使用例を示します。

規則

意味

例

[ ]

大カッコは、カッコ内の項目を任意に選択することを表します。

DECIMAL (digits [ , precision ])

{ }

中カッコは、カッコ内の項目をグループ化することを表します。

{ENABLE | DISABLE}

|

縦線は、2つの選択項目の区切りに使用します。

{ENABLE | DISABLE}
[COMPRESS | NOCOMPRESS]

...

省略記号は、構文の説明での繰返しを示します。
また、コード例または本文での省略を示す場合もあります。

CREATE TABLE ... AS subquery;

SELECT col1, col2, ... , coln FROM employees;

その他の記号

大カッコ([ ])、中カッコ({ })、縦線()および省略記号(...)以外の記号は、記載されているとおりに入力する必要があります。

acctbal NUMBER(11,2);
acct    CONSTANT NUMBER(4) := 3;

Italics

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

enter password

DB_NAME = database_name

UPPERCASE

大文字は、システム指定の要素を示します。これらの要素は、ユーザー定義の要素と区別するために大文字で示されます。大カッコ内にないかぎり、表示されているとおりの順序および綴りで入力します。ただし、大/小文字が区別されないため、大文字または小文字のいずれでも入力できます。

SELECT last_name, employee_id FROM employees;
SELECT * FROM USER_TABLES;
DROP TABLE hr.employees;

lowercase

表名、列名またはファイル名などのユーザー定義のプログラム要素を示します。
注意: プログラム要素には、大文字と小文字を組み合せて使用するものもあります。これらの要素は、記載されているとおりに入力してください。

SELECT last_name, employee_id FROM employees;
sqlplus hr/hr
CREATE USER mjones IDENTIFIED BY ty3MU9;

このリリースでの『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の変更内容

この章の内容は次のとおりです。

- Oracle Database 12cリリース1(12.1)での変更内容

Oracle Database 12cリリース1(12.1)での変更内容

Oracle Database 12cリリース1(12.1)での『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の変更内容は次のとおりです。

新機能

このリリースの新機能は次のとおりです。

- ディシジョン・ツリーのテキスト・データのマイニング
「DBMS_DATA_MINING」を参照してください。

- テキストのネイティブ・サポート
「DBMS_DATA_MINING」および「DBMS_DATA_MINING_TRANSFORM」を参照してください。

- テキストのネイティブ・サポート
「DBMS_DATA_MINING」および「DBMS_DATA_MINING_TRANSFORM」を参照してください。

- XMLオブジェクトリレーショナルおよびバイナリのXStreamでのサポート
「論理変更レコードのタイプ」を参照してください。

- データ・マイニング関数のネイティブのdouble型
「DBMS_DATA_MINING」および「DBMS_DATA_MINING_TRANSFORM」を参照してください。

- 一般化線形モデル(GLM)の特徴選択および特徴生成
「DBMS_DATA_MINING_TRANSFORM」を参照してください。

- 期待値最大化(EM)のクラスタリングと密度算定
「DBMS_DATA_MINING」を参照してください。

- 特異値分解を使用した特徴抽出
「DBMS_DATA_MINING」を参照してください。

- 権限分析
「DBMS_PRIVILEGE_CAPTURE」を参照してください。

- Database Replayでのデータベース統合のサポート
「DBMS_WORKLOAD_REPLAY」を参照してください。

- ルール・エンジンの結果キャッシュ
「DBMS_RULE」を参照してください。

- AQルール・エンジンのSYS_CONTEXTおよびその他の熟語に対する高速な評価
「DBMS_RULE」を参照してください。

- Oracle Data Redaction
「DBMS_REDACT」を参照してください。

- リアルタイム・データベース操作監視
「DBMS_MONITOR」を参照してください。

- Oracle DatabaseでのSecure Hash Algorithm SHA-2のサポート
「DBMS_CRYPTO」を参照してください。

- プラガブル・データベースのリソース・プラン
「DBMS_RESOURCE_MANAGER」を参照してください。

- セグメントレベルの圧縮の階層化
「DBMS_ILM」、「DBMS_ILM_ADMIN」および「DBMS_HEAT_MAP」を参照してください。

- 行レベルの圧縮の階層化
「DBMS_ILM」、「DBMS_ILM_ADMIN」および「DBMS_HEAT_MAP」を参照してください。

- ADOポリシーの管理用PL/SQLインタフェース
「DBMS_ILM」、「DBMS_ILM_ADMIN」および「DBMS_HEAT_MAP」を参照してください。

- Resource Managerのランナウェイ問合せ管理
「DBMS_RESOURCE_MANAGER」を参照してください。

- Oracle Data Pumpでのインポートのロギングなしオプション
「DBMS_DATAPUMP」を参照してください。

- Oracle Data Pumpの表としてエクスポート・ビュー
「DBMS_DATAPUMP」および「DBMS_METADATA」を参照してください。

- Oracle Data Pump: デフォルトでのSecureFiles LOBのサポート
「DBMS_DATAPUMP」および「DBMS_METADATA」を参照してください。

- プラガブル・データベース
「DBMS_PDB」および「UTL_RECOMP」を参照してください。

- 同期マテリアライズド・ビュー・リフレッシュ
「DBMS_SYNC_REFRESH」を参照してください。

- パラレル・ステートメント・キューの拡張
「DBMS_RESOURCE_MANAGER」および「DBMS_SESSION」を参照してください。

- XStreamの適用のための新しいパラメータ
「DBMS_APPLY_ADM」を参照してください。

- XStreamによって最適化される大規模トランザクションの管理
「DBMS_APPLY_ADM」を参照してください。

- 適応SQL計画管理
「DBMS_AUTO_SQLTUNE」、「DBMS_SPM」および「DBMS_XPLAN」を参照してください。

- SQL計画ディレクティブ
「DBMS_SPD」および「DBMS_STATS」を参照してください。

- データベースのPL/SQLプログラムに埋め込まれたSQL文の結果を外部クライアント・プログラムに暗黙に渡すメカニズム
「DBMS_SQL」を参照してください。

- 同時統計収集
「DBMS_SPD」および「DBMS_STATS」を参照してください。

- Javaのアプリケーション・コンティニュイティ
「DBMS_APP_CONT」および「DBMS_SERVICE」を参照してください。

- SQL翻訳フレームワーク
「DBMS_SERVICE」、「DBMS_SQL」および「DBMS_SQL_TRANSLATOR」を参照してください。

- 新しいタイプのオプティマイザ統計
「DBMS_SPD」および「DBMS_STATS」を参照してください。

- グローバル一時表のセッション固有統計
「DBMS_SPD」および「DBMS_STATS」を参照してください。

- 適応問合せ最適化
「DBMS_XPLAN」を参照してください。

- Active Data Guardを使用したローリング・アップグレード
「DBMS_ROLLING」を参照してください。

- Oracle Database HTTPリスナーでのダイジェスト認証の有効化
「DBMS_XDB」、「DBMS_XDB_ADMIN」および「DBMS_XDBZ」を参照してください。

- XStreamの新しい取得パラメータ
「DBMS_CAPTURE_ADM」を参照してください。

- 複数パーティションのオンライン再定義
「DBMS_REDEFINITION」を参照してください。

- VPDポリシーを含む表の再定義のサポート
「DBMS_REDEFINITION」を参照してください。

- FINISH_REDEF_TABLEのロック・タイムアウト
「DBMS_REDEFINITION」を参照してください。

- 新しいジョブ・タイプ
「DBMS_SCHEDULER」を参照してください。

- テキストのネイティブ・サポート
「DBMS_DATA_MINING」および「DBMS_DATA_MINING_TRANSFORM」を参照してください。

- パフォーマンスとスケーラビリティのためのキューのシャーディング
「DBMS_AQ」、「DBMS_AQADM」および「DBMS_PROPAGATION_ADM」を参照してください。

- 新しいPL/SQL DBMS_UTILITY.EXPAND_SQL_TEXTプロシージャ
「DBMS_UTILITY」を参照してください。

- 新しいPL/SQLパッケージUTL_CALL_STACK
「UTL_CALL_STACK」を参照してください。

- Oracle Data Pumpでのデータベース統合のサポート: 全体トランスポータブル
「DBMS_DATAPUMP」を参照してください。

- 自動列グループ検出
「DBMS_STATS」を参照してください。

- ヒート・マップ
「DBMS_HEAT_MAP」、「DBMS_ILM」、「DBMS_ILM_ADMIN」および「DBMS_FLASHBACK」を参照してください。

- DBMS_SQL.PARSEプロシージャの新しいschemaパラメータ
「DBMS_SQL」を参照してください。

- パーティションのDROPおよびTRUNCATEでの非同期グローバル索引メンテナンス
「DBMS_PART」を参照してください。

- VPDファイングレイン・コンテキスト依存ポリシー
「DBMS_RLS」を参照してください。

- ホーム外のマテリアライズド・ビュー・リフレッシュ
「DBMS_MVIEW」を参照してください。

- 自動並列度の改善
「DBMS_STATS」を参照してください。

- 透過的機密データ保護
「DBMS_TSDP_MANAGE」および「DBMS_TSDP_PROTECT」を参照してください。

- Oracle Data Pumpでの圧縮オプションの拡張
「DBMS_DATAPUMP」を参照してください。

- システム統計の拡張
「DBMS_STATS」を参照してください。

- トランザクション・ガード
「DBMS_APP_CONT」を参照してください。

- 増分統計の拡張
「DBMS_STATS」を参照してください。

- 時制有効性フラッシュバック問合せ
「DBMS_FLASHBACK_ARCHIVE」を参照してください。

- Oracle Data PumpコマンドのLOGTIMEパラメータ
「DBMS_DATAPUMP」を参照してください。

- 問合せ可能パッチ・インベントリ
「DBMS_QOPATCH」を参照してください。

- Enterprise Manager Database Express
「DBMS_XDB_ADMIN」および「DBMS_XDB_CONFIG」を参照してください。

1 オラクル社が提供するPL/SQLパッケージおよびタイプの概要

オラクル社では、Oracleサーバーでデータベース機能を拡張する数多くのPL/SQLパッケージを提供し、SQL機能にアクセス可能なPL/SQLの機能を用意しています。このような提供パッケージは、アプリケーション構築、または独自のストアド・プロシージャ作成を検討する際に使用できます。

このマニュアルでは、Oracle Databaseサーバーに付属するパッケージについて説明しています。Oracle DeveloperやOracle Application Serverなど、他の製品に付属するパッケージについては説明しません。

このマニュアルおよびOracle Databaseドキュメント・ライブラリのいずれかのマニュアルに説明のあるパッケージおよびタイプには、デフォルトではインストールされていないものがあります。このような場合、ドキュメントには、オブジェクトがデフォルトではインストールされていないことと、そのオブジェクトをインストールする方法が記載されています。適切な権限のあるユーザーとして、次の問合せを実行してください。

SELECT DISTINCT Owner, Object_Type, Object_Name FROM DBA_Objects_AE
WHERE Owner IN (
'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
'LOGSTDBY_ADMINISTRATOR', 'ORDSYS',
'ORDPLUGINS', 'OEM_MONITOR', 'MDSYS', 'LBACSYS',
'DMSYS', 'WMSYS', 'OLAPDBA', 'OLAPSVR', 'OLAP_USER',
'OLAPSYS', 'EXFSYS', 'SYSMAN', 'MDDATA',
'SI_INFORMTN_SCHEMA', 'XDB', 'ODM')
AND Object_Type IN ('PACKAGE', 'TYPE')
ORDER BY Owner, Object_Type, Object_Name

この問合せを実行すると、現在データベースにインストールされている、オラクル社提供のパッケージおよびタイプが一覧表示されます。この一覧には、Oracle Databaseドキュメント・ライブラリでは説明されていないオブジェクトが数多く表示されることに注意してください。これは仕様です。オラクル社が提供するパッケージおよびタイプには、オラクル社が新たに提供するコンポーネントでのみ使用されるものがあります。Oracle Databaseドキュメント・ライブラリで説明されていないパッケージおよびタイプを、ユーザーが直接使用することはできません。

この章では、次の項目について説明します。

- パッケージの概要

- オラクル社が提供するPL/SQLパッケージおよびタイプの概要

関連項目:
ユーザー独自のパッケージの作成方法については、『Oracle Database開発ガイド』を参照してください。

パッケージの概要

パッケージとは、関連するプログラム・オブジェクトをカプセル化した集合体で、データベースにまとめて格納されています。プログラム・オブジェクトには、プロシージャ、ファンクション、変数、定数、カーソルおよび例外があります。

パッケージのコンポーネント

PL/SQLパッケージには、仕様部と本体の2つの部分がありますが、本体は不要な場合もあります。仕様部とは、アプリケーションへのインタフェースで、使用可能な型、変数、定数、例外、カーソルおよびサブプログラムが宣言されます。本体はカーソルとサブプログラムを完全に定義し、仕様部を完全に実装します。

パッケージは、サブプログラムとは異なり、コール、パラメータ化またはネスト化することはできません。ただし、パッケージおよびサブプログラムのフォーマットは類似しています。

CREATE PACKAGE name AS  -- specification (visible part)
-- public type and item declarations
-- subprogram specifications
END [name];

CREATE PACKAGE BODY name AS  -- body (hidden part)
-- private type and item declarations
-- subprogram bodies
[BEGIN
-- initialization statements]
END [name];

仕様部には、アプリケーションで参照できるパブリック宣言が含まれています。本体には、実装の詳細およびプライベート宣言が含まれていますが、アプリケーションからは参照できません。仕様部を変更せずに、パッケージ本体をデバッグ、拡張または置換できます。パッケージ本体の実装の詳細はアプリケーションから隠されているため、コール元プログラムを再コンパイルせずに、パッケージ本体を変更できます。

オラクル社が提供するパッケージ

オラクル社が提供するパッケージの大部分は、データベースが作成されるときに自動的にインストールされます。一部のパッケージは、自動的にはインストールされません。これらのパッケージをインストールするには、該当する各章の指示に従ってください。

SQLからPL/SQLファンクションをコールするには、コールするユーザーがそのファンクションの所有者であるか、またはユーザーにそのファンクションのEXECUTE権限が付与されている必要があります。PL/SQLファンクションで定義されたビューを検索するには、そのビューのSELECT権限が必要です。ビューを検索するには個々のEXECUTE権限は必要ありません。パッケージに関する特別要件については、それぞれの章の記述を参照してください。

新規パッケージの作成

パッケージを作成し、Oracle Databaseに格納するには、CREATE PACKAGEおよびCREATE PACKAGE BODY文を使用します。これらの文は、SQL*PlusまたはEnterprise Managerから対話形式で実行できます。

新規パッケージを作成するには、次の手順を実行します。

1. CREATE PACKAGE文でパッケージ仕様部を作成します。
パッケージ仕様部にはプログラム・オブジェクトを宣言できます。このようなオブジェクトは、パブリック・オブジェクトと呼ばれます。パブリック・オブジェクトは、パッケージ内の別のオブジェクトからも、パッケージの外部からも参照できます。

注意:
CREATE PACKAGE文にOR REPLACE句を追加するとさらに便利になる場合があります。ただし、既存のパッケージを同じ名前で上書きする場合、CREATE OR REPLACEと指定すると警告なしで上書きされますが、CREATE PACKAGEと指定すると警告が表示されます。

2. CREATE PACKAGE BODY文でパッケージ本体を作成します。
パッケージ本体にはプログラム・オブジェクトを宣言および定義できます。

- パッケージ仕様部で宣言したパブリック・オブジェクトをパッケージ本体で定義する必要があります。

- プライベート・オブジェクトと呼ばれる追加のパッケージ・オブジェクトを宣言および定義できます。プライベート・オブジェクトは、パッケージ仕様部ではなくパッケージ本体で宣言されるため、パッケージ内の他のオブジェクトからのみ参照できます。パッケージの外部からは参照できません。

関連項目:

- 『Oracle Database PL/SQL言語リファレンス』

- 新規パッケージ作成の詳細は、『Oracle Database開発ガイド』を参照してください。

- 『Oracle Database概要』

(パッケージの格納および実行の詳細)

仕様部と本体の分離

パッケージの仕様で、パッケージの直接の有効範囲外で参照可能なパブリックな型、変数、定数およびサブプログラムが宣言されます。パッケージの本体には、仕様部で宣言したオブジェクトおよびパッケージ外のアプリケーションには表示されないプライベート・オブジェクトが定義されています。

パッケージの仕様部と本体は、データベースに別々に格納されます。パブリック・プログラム・オブジェクトをコールまたは参照するその他のスキーマ・オブジェクトはパッケージ仕様部にのみ依存し、パッケージ本体には依存しません。仕様部と本体が分かれているため、パッケージ本体にあるプログラム・オブジェクトの定義を変更しても、そのプログラム・オブジェクトをコールまたは参照するその他のスキーマ・オブジェクトを無効にすることはありません。パッケージ仕様部にあるプログラム・オブジェクトの宣言を変更した場合のみ、それに依存しているスキーマ・オブジェクトが無効になります。

新規パッケージの作成: 例

次の例は、EMPLOYEE_MANAGEMENTという名前のパッケージのパッケージ仕様部です。このパッケージには、ストアド・ファンクションが1つ、ストアド・プロシージャが2つ含まれています。

CREATE PACKAGE employee_management AS
FUNCTION hire_emp (name VARCHAR2, job VARCHAR2,
mgr NUMBER, hiredate DATE, sal NUMBER, comm NUMBER,
deptno NUMBER) RETURN NUMBER;
PROCEDURE fire_emp (emp_id NUMBER);
PROCEDURE sal_raise (emp_id NUMBER, sal_incr NUMBER);
END employee_management;

このパッケージの本体では、ファンクションおよびプロシージャが定義されます。

CREATE PACKAGE BODY employee_management AS
FUNCTION hire_emp (name VARCHAR2, job VARCHAR2,
mgr NUMBER, hiredate DATE, sal NUMBER, comm NUMBER,
deptno NUMBER) RETURN NUMBER IS

ファンクションでは、従業員番号を除き、フィールドに対するすべての引数を従業員表に挿入します。フィールドに対する値は順番に設定されます。このファンクションへのコールによって生成された順序番号が戻されます。

new_empno    NUMBER(10);

BEGIN
SELECT emp_sequence.NEXTVAL INTO new_empno FROM dual;
INSERT INTO emp VALUES (new_empno, name, job, mgr,
hiredate, sal, comm, deptno);
RETURN (new_empno);
END hire_emp;

PROCEDURE fire_emp(emp_id IN NUMBER) AS

プロシージャは、引数emp_idに対応する従業員番号を持つ従業員を削除します。該当する従業員が見つからない場合は、例外が呼び出されます。

BEGIN
DELETE FROM emp WHERE empno = emp_id;
IF SQL%NOTFOUND THEN
raise_application_error(-20011, 'Invalid Employee
Number: ' || TO_CHAR(emp_id));
END IF;
END fire_emp;

PROCEDURE sal_raise (emp_id IN NUMBER, sal_incr IN NUMBER) AS

プロシージャは2つの引数を使用します。emp_idは従業員番号に対応する番号です。sal_incrは、その従業員の給料増額分です。

BEGIN

-- If employee exists, then update salary with increase.

UPDATE emp
SET sal = sal + sal_incr
WHERE empno = emp_id;
IF SQL%NOTFOUND THEN
raise_application_error(-20011, 'Invalid Employee
Number: ' || TO_CHAR(emp_id));
END IF;
END sal_raise;
END employee_management;

注意:
この例を実際に試すには、最初に順序番号emp_sequenceを作成してください。次のSQL*Plus文で作成できます。

SQL> CREATE SEQUENCE emp_sequence
> START WITH 8000 INCREMENT BY 10;

パッケージ内容の参照

パッケージ仕様部で宣言されたタイプ、アイテムおよびサブプログラムを参照するには、ドット表記法を使用します。次に例を示します。

package_name.type_name
package_name.item_name
package_name.subprogram_name

オラクル社が提供するPL/SQLパッケージおよびタイプの概要

表1-1に、提供するPL/SQLサーバー・パッケージを示します。これらのパッケージは、パッケージ所有者ではなく起動ユーザーとして実行されます。特に注記がないかぎり、パッケージは同じ名前のパブリック・シノニムを介してコールできます。

注意:

- これらのパッケージが提供するプロシージャとファンクションおよびその外部インタフェースはオラクル社が所有するもので、変更される可能性があります。

- オラクル社が提供するパッケージを変更すると、内部エラーおよびデータベースのセキュリティ違反が発生する可能性があります。提供するパッケージを変更しないでください。

表1-1 オラクル社が提供するPL/SQLパッケージの概要

パッケージ名

説明

APEX_CUSTOM_AUTH

認証およびセッション管理のためのインタフェースを提供します。

APEX_APPLICATION

グローバル変数を利用できます。

APEX_ITEM

ページごとに項目を作成せずに、SQL問合せに基づいてフォーム要素を動的に作成できます。

APEX_UTIL

セッション状態の取得と設定、ファイルの取得、ユーザー権限の確認、ユーザーの状態の再設定、およびユーザーのプリファレンスの取得と設定を行うユーティリティを提供します。

CTX_ADM

サーバーとデータ・ディクショナリを管理できます。

CTX_CLS

一連のドキュメントに対してCTXRULEルールを生成できます。

CTX_DDL

テキスト索引に必要なプリファレンス、セクション・リストおよびストップ・グループを作成および管理できます。

CTX_DOC

ドキュメント・サービスを要求できます。

CTX_OUTPUT

索引ログを管理できます。

CTX_QUERY

問合せフィードバックの生成、件数のカウントおよびストアド・クエリー式の作成ができます。

CTX_REPORT

各種索引レポートを作成できます。

CTX_THES

シソーラスを管理および参照できます。

CTX_ULEXER

ユーザーレクサーと一緒に使用します。

DBMS_ADDM

自動データベース診断モニターに関するアドバイザ機能を簡単に使用できるようになります。

DBMS_ADVANCED_REWRITE

クエリー・リライトに機能等価宣言の作成、削除およびメンテナンスを行う、クエリー・リライトを熟知したユーザー向けのインタフェースが含まれます。

DBMS_ADVISOR

SQLAccess Advisorの一部。SQL文の実行に関連するパフォーマンス上の問題を特定し、解決を支援する熟練者向けシステムです。

DBMS_ALERT

データベース・イベントの非同期通知をサポートします。

DBMS_APPLICATION_INFO

監査またはパフォーマンス追跡の目的で、アプリケーション名をデータベースに登録できます。

DBMS_APPLY_ADM

適用プロセスを開始、停止および構成する管理プロシージャを提供します。

DBMS_AQ

(事前定義されたオブジェクト・タイプの)メッセージをキューに追加したり、デキューできます。

DBMS_AQADM

キューまたはキュー表にある管理ファンクションを、事前定義されたオブジェクト・タイプのメッセージに対して実行できます。

DBMS_AQELM

電子メールおよびHTTPによりアドバンスト・キューイングの非同期通知の構成管理プロシージャを提供します。

DBMS_AQIN

Oracle JMSインタフェースに安全にアクセスできます。

DBMS_ASSERT

入力値のプロパティを検証するためのインタフェースを提供します。

DBMS_AUTO_TASK_ADMIN

AUTOTASKコントロールにアクセスするために、DBAおよびEnterprise Managerによって使用されます。

DBMS_AW_STATS

キューブおよびディメンションに関するオプティマイザの統計情報を生成して保存するサブプログラムが含まれています。

DBMS_CAPTURE_ADM

取得プロセスを開始、停止および構成する管理プロシージャを記述します。Streamsで使用されます。

DBMS_COMPARISON

異なるデータベースのデータベース・オブジェクトを比較および収束するインタフェースを提供します。

DBMS_COMPRESSION

アプリケーションの正しい圧縮レベルを簡単に選択できるインタフェースを提供します。

DBMS_CONNECTION_POOL

データベース常駐接続プールを管理するインタフェースを提供します。

DBMS_CQ_NOTIFICATION

問合せの結果セットが変更された場合に通知を受け取るためにクライアントで使用される一連の機能の一部です。このパッケージには、中間層クライアントがオブジェクトを登録し、配信メカニズムを指定するために使用可能なインタフェースが含まれています。

DBMS_CRYPTO

格納されたデータを暗号化および復号化できます。また、ネットワーク通信を実行するPL/SQLプログラムとともに使用でき、暗号化およびハッシュ・アルゴリズムをサポートします。

DBMS_CSX_ADMIN

バイナリXMLデータを含む表領域を移動する場合に設定をカスタマイズするインタフェースを提供します。

DBMS_CUBE

OLAPキューブおよびディメンションを作成するサブプログラム、および問合せのためにデータをロードおよび処理するサブプログラムが含まれています。

DBMS_CUBE_ADVISE

ログ・ベースの高速リフレッシュおよびクエリー・リライトをサポートするキューブ・マテリアライズド・ビューを評価するためのサブプログラムが含まれています。

DBMS_DATA_MINING

マイニング・モデルを作成、評価および管理するOracle Data Miningインタフェースを実装します。

DBMS_DATA_MINING_TRANSFORM

Oracle Data Mining用のデータの準備に使用できるサブルーチンを提供します。

DBMS_DATAPUMP

データベース間で任意のデータベースを全部または一部移動できます(データ、メタデータの両方)。

DBMS_DBFS_CONTENT

1つ以上のストア・プロバイダによってサポートされるファイル・システムのような抽象化を構成するインタフェースを提供します。

DBMS_DBFS_CONTENT_SPI

DBMS_DBFS_CONTENTサービス・プロバイダにApplication Program Interface(API)の仕様を提供します。

DBMS_DBFS_HS

ユーザーは、データベース表の情報ライフサイクル管理を行う場合に、テープまたはAmazon S3 Webサービスをストレージ層として使用できるようになります。

DBMS_DBFS_SFS

DBMS_DBFS_CONTENTパッケージで説明されているコンテンツ・インタフェースにSecureFileベース・ストア(SFS)を操作するためのインタフェースを提供します。

DBMS_DB_VERSION

Oracleのバージョン番号、およびOracleのバージョンに基づいた単純な条件付きコンパイルに役立つその他の情報を指定します。

DBMS_DDL

ストアド・プロシージャから一部のSQL DDL文へのアクセスを提供し、DDLでは使用できない特殊な管理操作を提供します。

DBMS_DEBUG

サーバー側のデバッガを実装し、サーバー側のPL/SQLプログラム・ユニットをデバッグする方法を提供します。

DBMS_DEFER

レプリケート・トランザクション遅延リモート・プロシージャ・コール機能へのユーザー・インタフェースを提供します。分散オプションが必要です。

DBMS_DEFER_QUERY

ビューでは参照できない遅延リモート・プロシージャ・コール(RPC)のキュー・データの問合せを許可します。分散オプションが必要です。

DBMS_DEFER_SYS

レプリケート・トランザクション遅延リモート・プロシージャ・コール機能へのシステム管理者用インタフェースを提供します。分散オプションが必要です。

DBMS_DESCRIBE

ストアド・プロシージャの引数をフルネーム変換およびセキュリティ・チェックとともに記述します。

DBMS_DG

アプリケーションでフェイルオーバーの原因となる状況が発生した場合にファスト・スタート・フェイルオーバーを開始するように、アプリケーションからOracle Data Guard Broker環境内のプライマリ・データベースに通知できます。

DBMS_DIMENSION

ディメンションの関連を検証でき、また、Enterprise Managerのディメンション・ウィザードのかわりにディメンションの定義を表示できます。

DBMS_DISTRIBUTED_TRUST_ADMIN

Trusted Databaseリストをメンテナンスします。このリストは、特定のサーバーからの権限データベース・リンクが受入れ可能かどうかを判断するために使用されます。

DBMS_EPG

WebブラウザがHTTPリスナーを介してPL/SQLのストアド・プロシージャを起動できるようにする埋込みPL/SQLゲートウェイを実装します。

DBMS_ERRLOG

エラーの発生時に中断やロールバックではなく、DML操作を続行できるようにエラー・ロギング表を作成するプロシージャを提供します。

DBMS_EXPFIL

属性セット、式セット、式索引、オプティマイザ統計情報および権限を式フィルタによって管理する場合に使用されるすべてのプロシージャが含まれています。

DBMS_FGA

ファイングレイン・セキュリティ機能を提供します。

DBMS_FILE_GROUP

一連のStreamsパッケージの1つで、ファイル・グループ、ファイル・グループのバージョン、ファイルおよびファイル・グループ・リポジトリの管理をするための管理インタフェースを提供します。

DBMS_FILE_TRANSFER

データベース内のバイナリ・ファイルのコピーや、他のデータベースへのバイナリ・ファイルの転送ができます。

DBMS_FLASHBACK

指定した実時間または指定したシステム変更番号(SCN)にデータベースのバージョンをフラッシュバックします。

DBMS_FLASHBACK_ARCHIVE

フラッシュバック・データ・アーカイブ(FDA)を有効にした表の基礎となるFDAからの関連付け解除、および基礎となるFDAとの再関連付けを行うためのプロシージャが含まれています。

DBMS_FREQUENT_ITEMSET

使用頻度の高い項目セットをカウントできます。

DBMS_HM

ヘルス・チェックの管理用の定数およびプロシージャ宣言が含まれています。

DBMS_HPROF

PL/SQLアプリケーションの実行をプロファイルするためのインタフェースを提供します。

DBMS_HS_PARALLEL

異種ターゲットへのアクセスにおける並列処理を有効にします。

DBMS_HS_PASSTHROUGH

異機種間サービスを使用して、パススルーSQL文をOracle以外のシステムに送信できます。

DBMS_IOT

ANALYZEコマンドを使用して、索引構成表の連鎖行への参照を設定できる表を作成します。

DBMS_JAVA

Javaからデータベース機能にアクセスするためのPL/SQLインタフェースを提供します。

DBMS_JOB

ジョブ・キュー内のジョブをスケジュールおよび管理します。

DBMS_LDAP

LDAPサーバーからデータにアクセスするファンクションおよびプロシージャを提供します。

DBMS_LDAP_UTL

LDAP向けのOracle拡張ユーティリティ・ファンクションを提供します。

DBMS_LIBCACHE

リモート・インスタンスからSQLおよびPL/SQLを抽出し、このSQLを実行せずにローカルでコンパイルして、Oracleインスタンスにライブラリ・キャッシュを用意します。

DBMS_LOB

Oracleラージ・オブジェクト(LOB)データ・タイプ - BLOB、CLOB(読取り/書込み)およびBFILE(読取り専用)における操作に対する汎用ルーチンを提供します。

DBMS_LOCK

Oracle Lock Managementサービスを使用して、ロックの要求、変換および解放を実行できます。

DBMS_LOGMNR

ログ・リーダーを初期化および実行するためのファンクションを提供します。

DBMS_LOGMNR_D

現行のデータベースのディクショナリ表を問い合せ、その内容を含んだテキスト・ベースのファイルを作成します。

DBMS_LOGSTDBY

ロジカル・スタンバイ・データベース環境を構成および管理するためのプロシージャを記述します。

DBMS_METADATA

コール元で完全なデータベース・オブジェクト定義(メタデータ)をディクショナリから容易に取り出します。

DBMS_METADATA_DIFF

SXML形式の2つのメタデータ・ドキュメントを比較するためのインタフェースが含まれています。比較の結果はSXML差分ドキュメントに出力されます。このドキュメントは、DBMS_METADATA送信インタフェースおよびCONVERT APIを使用して他の形式に変換できます。

DBMS_MGD_ID_UTL

一連のユーティリティ・サブプログラムを提供します。

DBMS_MGWADM

メッセージ・ゲートウェイ管理インタフェースを記述します。アドバンスト・キューイングで使用されます。

DBMS_MGWMSG

オブジェクト・タイプ(メッセージ本体を変換するために標準的なメッセージ・タイプで使用)、およびメッセージ・ゲートウェイ・メッセージ・タイプを処理するためのヘルパー・メソッド、定数およびサブプログラムを記述します。アドバンスト・キューイングで使用されます。

DBMS_MONITOR

追加トレースの管理および統計収集にPL/SQLを使用できます。

DBMS_MVIEW

同じリフレッシュ・グループおよびパージ・ログの一部ではない複数のスナップショットをまとめてリフレッシュします。DBMS_SNAPSHOTはシノニムです。

DBMS_NETWORK_ACL_ADMIN

ネットワークのアクセス制御リスト(ACL)を管理するためのインタフェースを提供します。

DBMS_NETWORK_UTL

ネットワークのアクセス制御リスト(ACL)を管理するためのインタフェースを提供します。

DBMS_ODCI

ファンクションの経過時間に基づき、ユーザー・ファンクションのCPUコストを戻します。

DBMS_OFFLINE_OG

マスター・グループのオフライン・インスタンス化用のパブリック・インタフェースを提供します。

DBMS_OLAP

サマリー、ディメンションおよびクエリー・リライト用のプロシージャを提供します。

DBMS_OUTLN

ストアド・アウトラインの管理に関連するプロシージャおよびファンクションに対するインタフェースを提供します。OUTLN_PKGのシノニムです。

DBMS_OUTPUT

情報をバッファに蓄積して後で取り出せるようにします。

DBMS_PARALLEL_EXECUTE

ユーザーは表データをパラレルで増分更新できるようになります。

DBMS_PCLXUTIL

パーティション単位でローカル索引を作成するためのパーティション内並列性を提供します。

DBMS_PIPE

セッション間のメッセージ送信を可能にするDBMSパイプ・サービスを提供します。

DBMS_PREDICTIVE_ANALYTICS

予測、分析およびプロファイリングを行うための自動データ・マイニング操作を実装するサブルーチンを提供します。

DBMS_PREPROCESSOR

後処理された形式でPL/SQLユニットのソース・テキストの出力または取出しを行うためのインタフェースを提供します。

DBMS_PROFILER

既存のPL/SQLアプリケーションをプロファイルし、パフォーマンス上のボトルネックを識別するためのプローブ・プロファイラAPIを提供します。

DBMS_PROPAGATION_ADM

ソース・キューから宛先キューへの伝播を構成するための管理プロシージャを提供します。

DBMS_RANDOM

組込み式の乱数ジェネレータを提供します。

DBMS_RECTIFIER_DIFF

2つのレプリケート・サイト間のデータの不整合を検出および解決するために使用するインタフェースを提供します。

DBMS_REDEFINITION

表のオンライン再編成を実行します。

DBMS_REFRESH

トランザクション的に一貫性のある時点にまとめてリフレッシュできるスナップショットのグループを作成できます。分散オプションが必要です。

DBMS_REPAIR

データの破損修復プロシージャを提供します。

DBMS_REPCAT

レプリケーション・カタログと環境を管理および更新するためのルーチンを提供します。レプリケーション・オプションが必要です。

DBMS_REPCAT_ADMIN

対称型レプリケーション機能に必要な権限を持つユーザーを作成します。レプリケーション・オプションが必要です。

DBMS_REPCAT_INSTANTIATE

デプロイメント・テンプレートをインスタンス化します。レプリケーション・オプションが必要です。

DBMS_REPCAT_RGT

リフレッシュ・グループ・テンプレートのメンテナンスおよび定義を制御します。レプリケーション・オプションが必要です。

DBMS_REPUTIL

表複製用のシャドウ表、トリガーおよびパッケージを生成するルーチンを提供します。

DBMS_RESCONFIG

リソース構成リストを操作して、リソースのリスナー情報を取得するインタフェースを提供します。

DBMS_RESOURCE_MANAGER

計画、コンシューマ・グループおよびプラン・ディレクティブをメンテナンスします。また、変更内容をプラン・スキーマにグループ化する方法も提供します。

DBMS_RESOURCE_MANAGER_PRIVS

リソース・コンシューマ・グループに関連付けられた権限を管理します。

DBMS_RESULT_CACHE

結果キャッシュを操作するためのインタフェースを提供します。

DBMS_RESUMABLE

長時間にわたる実行後に領域を使い果たしたり、領域制限に達するような大規模な操作を一時停止し、問題を修正した後で文の実行を再開できます。

DBMS_RLMGR

ルール・マネージャを使用してルールおよびルール・セッションを作成および管理する様々なプロシージャが含まれています。

DBMS_RLS

行レベルのセキュリティ管理インタフェースを提供します。

DBMS_ROWID

ROWIDを作成し、その内容を解釈するプロシージャを提供します。

DBMS_RULE

EVALUATEプロシージャを記述します。Streamsで使用されます。

DBMS_RULE_ADM

ルール、ルール・セットおよびルール評価コンテキストを作成および管理するための管理インタフェースを記述します。Streamsで使用されます。

DBMS_SCHEDULER

PL/SQLプログラムからコールできる一連のスケジューリング機能を提供します。

DBMS_SERVER_ALERT

しきい値に違反があった場合に警告を発行します。

DBMS_SERVICE

単一のインスタンスに対するサービスを作成、削除、アクティブ化および非アクティブ化できます。

DBMS_SESSION

SQL ALTER SESSION文とその他のセッション情報に、ストアド・プロシージャからアクセスできるようにします。

DBMS_SHARED_POOL

標準のLRUメカニズムによって期限切れで削除されないようにオブジェクトを共有メモリーに保存します。

DBMS_SPACE

標準SQLを介しては使用できないセグメント領域情報を提供します。

DBMS_SPACE_ADMIN

標準SQLを介しては使用できない表領域とセグメント領域の管理を提供します。

DBMS_SPM

様々なSQL文に対して保持される、計画履歴およびSQL計画のベースラインに対する制御された操作を実行するためのインタフェースを、DBA向けおよびその他のユーザー向けに提供することによって、SQL計画管理機能をサポートします。

DBMS_SQL

動的SQLを使用してデータベースへのアクセスを可能にします。

DBMS_SQLDIAG

SQL診断機能のインタフェースを提供します。

DBMS_SQLPA

SQLパフォーマンス・アナライザを実装するためのインタフェースを提供します。

DBMS_SQLTUNE

SQL文をチューニングするインタフェースを提供します。

DBMS_STAT_FUNCS

統計ファンクションを提供します。

DBMS_STATS

データベース・オブジェクト用に収集したオプティマイザの統計情報を、ユーザーが表示および変更するためのメカニズムを提供します。

DBMS_STORAGE_MAP

FMONと通信して、マッピング操作を起動します。

DBMS_STREAMS

SYS.AnyDataオブジェクトをLCRオブジェクトに変換するインタフェース、およびセッションによって生成されたREDOエントリにバイナリ・タグで注釈を付けるインタフェースを記述します。

DBMS_STREAMS_ADMIN

表、スキーマおよびデータベース・レベルでの取得、伝播および適用に使用する、変換不要の単純なルールを追加および削除するための管理プロシージャを記述します。

DBMS_STREAMS_ADVISOR_ADM

Oracle Streams環境に関する情報を収集し、収集した情報に基づいてデータベース管理者にアドバイスを提供するためのインタフェースを提供します。

DBMS_STREAMS_AUTH

Streams管理者への権限付与およびStreams管理者からの権限取消しを行うインタフェースを提供します。

DBMS_STREAMS_HANDLER_ADM

SYS.AnyDataキューへのメッセージのエンキューおよびデキューを行うインタフェースを提供します。

DBMS_STREAMS_MESSAGING

SYS.AnyDataキューへのメッセージのエンキューおよびデキューを行うインタフェースを提供します。

DBMS_STREAMS_TABLESPACE_ADM

データベース間での表領域コピーおよび他のデータベースへの表領域移動の管理プロシージャを提供します。

DBMS_TDB

RMANのCONVERT DATABASEコマンドを使用してプラットフォーム間でデータベースを転送できるかどうかをレポートします。これは、現在のホスト・プラットフォーム上のデータベースのエンディアン形式が転送先プラットフォームと同じであること、および現在のデータベースの状態によってデータベースの転送が妨げられないことを検証します。

DBMS_TRACE

PL/SQLトレースを起動および停止するルーチンを提供します。

DBMS_TRANSACTION

ストアド・プロシージャからSQLトランザクション文へのアクセスを提供し、トランザクション・アクティビティを監視します。

DBMS_TRANSFORM

Oracle Advanced Queuingのメッセージ形式変換機能へのインタフェースを提供します。

DBMS_TTS

トランスポート可能なセットが自己完結タイプかどうかをチェックします。

DBMS_TYPES

組込みおよびユーザー定義のタイプを表現する定数で構成されます。

DBMS_UTILITY

様々なユーティリティ・ルーチンを提供します。

DBMS_WARNING

現行のシステムまたはセッション設定の問合せ、変更および削除を行うインタフェースを提供します。

DBMS_WM

Oracle Database Workspace Managerへのプログラミング・インタフェースを使用して、長いトランザクションを処理する方法を記述します。

DBMS_WORKLOAD_CAPTURE

ワークロードの取得システムを構成し、ワークロードの取得データを作成します。

DBMS_WORKLOAD_REPLAY

本番システムまたはテスト・システムのワークロードのレコードを使用してリプレイおよびレポートを行うためのインタフェースを提供します。

DBMS_WORKLOAD_REPOSITORY

スナップショットおよびベースラインの管理などを行うワークロード・リポジトリを管理できます。

DBMS_XA

PL/SQLでXAインタフェースをコールするアプリケーション用のXA/Openインタフェースが含まれています。

DBMS_XDB

PL/SQL用のリソース管理およびアクセス制御のインタフェースを記述します。

DBMS_XDB_ADMIN

XMLIndex管理操作を実装するためのインタフェースを提供します。

DBMS_XDBRESOURCE

XDBリソースのメタデータおよび内容を操作するためのインタフェースを提供します。

DBMS_XDB_VERSION

バージョニング・インタフェースを記述します。

DBMS_XDBT

管理者がXML DB階層上にConText索引を作成し、それを自動メンテナンス用に構成する方法を記述します。

DBMS_XDBZ

アクセス制御リスト(ACL)に基づいてOracle XML DBリポジトリのセキュリティを管理します。

DBMS_XEVENT

イベント関連のタイプおよびサポートするサブプログラムを提供します。

DBMS_XMLDOM

XMLTypeオブジェクトへのアクセスについて記述します。

DBMS_XMLGEN

SQL問合せの結果を標準的なXML形式に変換します。

DBMS_XMLINDEX

非同期の索引付けを実装し、ノードへの参照を適用するためのインタフェースを提供します。

DBMS_XMLPARSER

XML文書のコンテンツおよび構造体へのアクセスについて記述します。

DBMS_XMLQUERY

データベースからXMLTypeへの変換機能を提供します。

DBMS_XMLSAVE

XMLからデータベース・タイプへの変換機能を提供します。

DBMS_XMLSCHEMA

XMLスキーマを登録および削除するプロシージャを記述します。

DBMS_XMLSTORE

リレーショナル表にXMLデータを格納できます。

DBMS_XMLTRANSLATIONS

文字列を様々な言語で検索または表示できるように変換を行うためのインタフェースを提供します。

DBMS_XPLAN

EXPLAIN PLANコマンドの出力のフォーマット方法を記述します。

DBMS_XSLPROCESSOR

XML文書のコンテンツおよび構造体へのアクセスについて記述します。

DEBUG_EXTPROC

実行プロセスに連結するデバッガを使用して、プラットフォーム上で外部プロシージャをデバッグできるようにします。

HTF

ハイパーテキスト・ファンクションは、HTMLタグを生成します。

HTP

ハイパーテキスト・プロシージャは、HTMLタグを生成します。

ORD_DICOM

ORDDicomオブジェクト・タイプではなく、BLOBまたはBFILEに格納されたDigital Imaging and Communications in Medicine(DICOM)コンテンツの管理および操作をサポートします。

ORD_DICOM_ADMIN

Oracle Multimedia Digital Imaging and Communications in Medicine(DICOM)の管理者がOracle Multimedia DICOMデータ・モデル・リポジトリを保守する場合に使用します。

OWA_CACHE

PL/SQL Gatewayのキャッシュを使用してPL/SQL Webアプリケーションのパフォーマンスを向上させるインタフェースを提供します。

OWA_COOKIE

クライアントのブラウザからHTTP Cookieの送信および取得を行うインタフェースを提供します。

OWA_CUSTOM

Global PLSQL Agent Authorizationコールバック・ファンクションを提供します。

OWA_IMAGE

ユーザーがイメージ上でクリックした座標にアクセスするインタフェースを提供します。

OWA_OPT_LOCK

更新内容の消失を防ぐためにロックを最適化するサブプログラムを含みます。

OWA_PATTERN

文字列からテキスト・パターンを検索し、一致した文字列を他の文字列と置換するためのインタフェースを提供します。

OWA_SEC

カスタム認証を行うインタフェースを提供します。

OWA_TEXT

文字列の操作でOWA_PATTERNによって使用されるサブプログラムを含みます。これは外部化されているため、直接使用できます。

OWA_UTIL

CGI環境変数値の取得、クライアントに戻されたデータの出力、HTML表での問合せ結果の出力などの操作を実行するユーティリティ・サブプログラムを含みます。

SDO_CS

座標システム変換のファンクションを提供します。

SDO_CSW_PROCESS

Catalog Services for the Web(CSW)のサポートに関連する様々な処理操作のサブプログラムが含まれています。

SDO_GCDR

未フォーマットの郵便用の住所を分類できるOracle Spatialのジオコーディング・サブプログラムを含みます。

SDO_GEOM

空間オブジェクトで形状操作を実装するファンクションを提供します。

SDO_GEOR

Spatial GeoRaster機能用のファンクションおよびプロシージャを含みます。これを使用すると、ラスター・イメージ・データとそれに関連付けられた空間ベクター・ジオメトリ・データおよびメタデータの格納、索引付け、問合せ、分析および配信を行えます。

SDO_GEOR_ADMIN

GeoRasterに関連する管理操作のためのサブプログラムが含まれています。

SDO_GEOR_UTL

GeoRasterデータでのトリガーの使用に関連するものも含めて、Spatial GeoRaster機能用のユーティリティ・ファンクションおよびプロシージャを含みます。

SDO_LRS

線形参照システムのサポート・ファンクションを提供します。

SDO_MIGRATE

以前のリリースから空間データを移行するファンクションを提供します。

SDO_NET

ネットワーク内でノードおよびリンクとしてモデル化されたデータを操作するファンクションおよびプロシージャを提供します。

SDO_NET_MEM

ネットワーク・メモリー・オブジェクトを使用してネットワーク・データに対して編集および分析操作を実行するためのファンクションおよびプロシージャが含まれています。

SDO_OLS

ネットワーク・メモリー・オブジェクトを使用してネットワーク・データに対して編集および分析操作を実行するためのファンクションおよびプロシージャが含まれています。

SDO_PC_PKG

Spatialでの点群の使用をサポートするサブプログラムが含まれています。

SDO_SAM

空間分析およびデータ・マイニング用のファンクションおよびプロシージャを含みます。

SDO_TIN_PKG

SpatialでのTriangulated Irregular Network(TIN)の使用をサポートするサブプログラムが含まれています。

SDO_TOPO

Spatialトポロジを作成および管理するプロシージャを提供します。

SDO_TOPO_MAP

キャッシュ(TopoMapオブジェクト)を使用するSpatialトポロジを編集するためのサブプログラムを含みます。

SDO_TUNE

Oracle Spatialで使用される空間索引スキームの動作を決定するパラメータを選択するためのファンクションを提供します。

SDO_UTIL

Oracle Spatial用のユーティリティ・ファンクションおよびプロシージャを提供します。

SDO_WFS_LOCK

機能表を登録および登録解除するためのWFSサポート用のサブプログラムが含まれています。

SDO_WFS_PROC

Oracle Spatial用のユーティリティ・ファンクションおよびプロシージャを提供します。

SEM_APIS

Oracle DatabaseでResource Description Framework(RDF)およびWeb Ontology Language(OWL)を使用して作業するためのサブプログラムが含まれています。

SEM_PERF

Oracle DatabaseでのResource Description Framework(RDF)およびWeb Ontology Language(OWL)サポートのパフォーマンスを検証および拡張するためのサブプログラムが含まれています。

SEM_RDFCTX

ドキュメントに作成されたエクストラクタ・ポリシーおよびセマンティク索引を管理するためのサブプログラムが含まれています。

SEM_RDFSA

Virtual Private Database (VPD)またはOracle Label Security (OLS)を使用して、RDFデータに対するファイングレイン・アクセス・コントロールを提供するためのサブプログラムが含まれています。

UTL_COLL

PL/SQLプログラムで、コレクション・ロケータを使用した問合せおよび更新を可能にします。

UTL_COMPRESS

一連のデータ圧縮ユーティリティを提供します。

UTL_DBWS

データベースWebサービスを提供します。

UTL_ENCODE

ホスト間でのデータ転送が可能になるように、RAWデータを標準形式にエンコードするファンクションを提供します。

UTL_FILE

PL/SQLプログラムで、オペレーティング・システムのテキスト・ファイルの読込みおよび書込みを可能にし、標準オペレーティング・システムのストリーム・ファイルI/Oの制限付きバージョンを提供します。

UTL_HTTP

PL/SQLとSQLからHTTPコールアウトを使用可能にして、インターネット上のデータへのアクセスまたはOracle Web Serverカートリッジのコールを可能にします。

UTL_I18N

多言語アプリケーションの構築を支援する一連のサービス(Oracleグローバリゼーション・サービス)を提供します。

UTL_INADDR

インターネット・アドレッシングをサポートするためのプロシージャを提供します。

UTL_IDENT

実行されているデータベースまたはクライアントPL/SQLを指定します。

UTL_LMS

エラー・メッセージを異なる言語で取り出し、フォーマットします。

UTL_MAIL

共通で使用される電子メール機能(添付ファイル、CC、BCC、受信確認など)を含む電子メールを管理するユーティリティです。

UTL_NLA

VARRAYとして表されるベクトルおよびマトリックスに対するBLAS演算およびLAPACK(バージョン3.0)演算のサブセットを表示します。

UTL_RAW

RAWデータ・タイプを操作するためのSQLファンクションを提供します。

UTL_RECOMP

データベースに含まれている無効なPL/SQLモジュール、無効なビュー、Javaクラス、索引タイプおよび演算子を、順次またはパラレルに再コンパイルします。

UTL_REF

オブジェクトへの参照を提供することによって、PL/SQLプログラムがオブジェクトにアクセスできるようにします。

UTL_SMTP

電子メールを送信するためのPL/SQL機能を提供します。

UTL_SPADV

分散データベース環境のOracle Streamsコンポーネントの統計を収集および分析するサブプログラムを提供します。

UTL_TCP

サーバーと外部とのTCP/IPベースの通信をサポートするPL/SQL機能を提供します。

UTL_URL

URL文字のエスケープおよびエスケープ解除のメカニズムを提供します。

WPG_DOCLOAD

BLOBおよびBFILEの両方のファイルをダウンロードするためのインタフェースを提供します。

ANYDATAタイプ

タイプおよび説明のインスタンスを含む、自己記述型のデータ・インスタンス・タイプ。

ANYDATASETタイプ

特定のタイプの説明およびそのタイプの一連のデータ・インスタンスを含みます。

ANYTYPEタイプ

名前の有無にかかわらず、オブジェクト・タイプおよびコレクション・タイプなどの永続的なSQLタイプの説明を含みます。また、一時的なタイプの説明を新しく構築する場合にも使用できます。

Oracle Databaseアドバンスト・キューイングのタイプ

アドバンスト・キューイングで使用されるタイプを記述します。

DBFSコンテンツ・インタフェース・タイプ

DBMS_DBFS_CONTENTインタフェースをサポートするために定義されたパブリック・タイプを記述します。

データベースのURIタイプ

URIサポート、UriTypeスーパー・タイプ、HttpUriTypeサブタイプ、DBUriTypeサブタイプ、XDBUriTypeサブタイプ、UriFactoryパッケージを含みます。

式フィルタのタイプ

式フィルタ機能では、事前定義された一連のタイプおよびこれらのタイプのパブリック・シノニムが提供されています。

JMSタイプ

PL/SQLアプリケーションでJMSタイプのJMSキューを使用できるようにJMSタイプを記述します。

Oracle Multimedia ORDAudioタイプ

オーディオ・データの格納および管理をサポートします。

Oracle Multimedia ORDDicomタイプ

Digital Imaging and Communications in Medicine(DICOM)データの格納、管理および操作をサポートします。

Oracle Multimedia ORDDocタイプ

異種環境のメディア・データ(イメージ、オーディオ、ビデオなど)の格納および管理をサポートします。

Oracle Multimedia ORDImageタイプ

イメージ・データの格納、管理および操作をサポートします。

Oracle Multimedia SQL/MM Still Imageタイプ

SQL/MM Still Image規格をサポートします。データベースのイメージを格納、抽出および変更でき、視覚的な条件を使用してイメージを検索できます。

Oracle Multimedia ORDVideoタイプ

ビデオ・データの格納および管理をサポートします。

論理変更レコードのタイプ

データベースの変更に関する情報が含まれているメッセージ・ペイロードであるLCRタイプを記述します。Streamsで使用されます。

MG_IDパッケージ・タイプ

サポートされるエンコーディング・タイプとして、EPCビット・エンコーディングの標準ファミリを使用した現在のRFIDタグをサポートする拡張可能なフレームワークを提供します。

ルール・タイプ

ルール、ルール・セットおよび評価コンテキストで使用されるタイプを記述します。

ルール・マネージャのタイプ

ルール・マネージャには、事前定義タイプおよびパブリック・シノニムがあります。

UTL Streamsタイプ

Oracle XML機能とともに使用される抽象的なStreamsタイプを記述します。

XMLType

サーバー内のネイティブのXMLサポートに使用されるタイプおよびファンクションを記述します。

2 APEX_CUSTOM_AUTH

APEX_CUSTOM_AUTHパッケージでは、認証およびセッション管理のためのインタフェースを提供します。

- APEX_CUSTOM_AUTHのドキュメント

APEX_CUSTOM_AUTHのドキュメント

APEXのコンテキストでのこのパッケージの詳細は、『Oracle Application Express API Reference』のAPEX_CUSTOM_AUTHに関する項を参照してください。

3 APEX_APPLICATION

APEX_APPLICATIONパッケージを使用すると、ユーザーはグローバル変数を使用できます。

- APEX_APPLICATIONのドキュメント

APEX_APPLICATIONのドキュメント

APEXのコンテキストでのこのパッケージの詳細は、『Oracle Application Express APIリファレンス』のAPEX_APPLICATIONに関する項を参照してください。

4 APEX_ITEM

APEX_ITEMパッケージを使用すると、ユーザーはページごとに個々のアイテムを作成するかわりに、SQL問合せに基づいた要素を動的に作成できます。

- APEX_ITEMのドキュメント

APEX_ITEMのドキュメント

APEXのコンテキストでのこのパッケージの詳細は、『Oracle Application Express APIリファレンス』のAPEX_ITEMに関する項を参照してください。

5 APEX_UTIL

APEX_UTILパッケージでは、セッション・ステータスの取得および設定、ファイルの取得、ユーザー認証のチェック、ユーザーに対する異なるステータスの再設定、ユーザー設定の取得および設定のためのユーティリティを提供します。

- APEX_UTILのドキュメント

APEX_UTILのドキュメント

APEXのコンテキストでのこのパッケージの詳細は、『Oracle Application Express APIリファレンス』のAPEX_UTILに関する項を参照してください。

6 CTX_ADM

CTX_ADMパッケージを使用すると、Oracle Textデータ・ディクショナリを管理できます。このパッケージを使用するには、インストールする必要があります。

- CTX_ADMのドキュメント

CTX_ADMのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_ADMに関する項を参照してください。

7 CTX_ANL

AUTO_LEXERと一緒に使用されるCTX_ANLパッケージには、レクサーにカスタム・ディクショナリを追加したり、レクサーからカスタム・ディクショナリを削除するためのプロシージャが用意されています。カスタム・ディクショナリは、学問や業界の専門分野に特化して作成されたものであることがあります。ほとんどの場合、Oracle Textのサポート対象言語で用意されているディクショナリを使用しても、ユーザーの要件を十分に満たすことができます。

- CTX_ANLのドキュメント

CTX_ANLのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_ANLに関する項を参照してください。

8 CTX_CLS

CTX_CLSパッケージを使用すると、一連のドキュメントのCTXRULEルールを生成できます。

- CTX_CLSのドキュメント

CTX_CLSのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_CLSに関する項を参照してください。

9 CTX_DDL

CTX_DDLパッケージを使用すると、テキスト索引に必要なプリファレンス、セクション・グループおよびストップリストを作成および管理できます。このパッケージを使用するには、インストールする必要があります。

- CTX_DDLのドキュメント

CTX_DDLのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_DDLに関する項を参照してください。

10 CTX_DOC

CTX_DOCパッケージを使用すると、ドキュメント・サービスを要求できます。このパッケージを使用するには、インストールする必要があります。

- CTX_DOCのドキュメント

CTX_DOCのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_DOCに関する項を参照してください。

11 CTX_ENTITY

CTX_ENTITYパッケージを使用すると、特定の検索テキストを指定しなくても、不明な用語を検索できます。そのために、ドキュメント内に名前、場所、日付などのオブジェクトが明示されている場合にこれらを識別し、各出現(メンションと呼ばれる)にそのタイプとサブタイプをタグ付けします。このプロセスによって、後からテキスト・マイニングおよびデータ・マイニングやより包括的なインテリジェンス分析に使用できる、ドキュメントの構造化ビューを作成できます。

- CTX_ENTITYのドキュメント

CTX_ENTITYのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_ENTITYに関する項を参照してください。

12 CTX_OUTPUT

このOracle Textパッケージを使用すると、索引ログを管理できます。このパッケージを使用するには、インストールする必要があります。

- CTX_OUTPUTのドキュメント

CTX_OUTPUTのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_OUTPUTに関する項を参照してください。

13 CTX_QUERY

このOracle Textパッケージを使用すると、問合せフィードバックの作成、件数のカウントおよびストアド・クエリー式の作成ができます。このパッケージを使用するには、インストールする必要があります。

- CTX_QUERYのドキュメント

CTX_QUERYのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_QUERYに関する項を参照してください。

14 CTX_REPORT

このOracle Textパッケージを使用すると、索引レポートを作成できます。このパッケージを使用するには、インストールする必要があります。

- CTX_REPORTのドキュメント

CTX_REPORTのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_REPORTに関する項を参照してください。

15 CTX_THES

このOracle Textパッケージを使用すると、シソーラスを管理および参照できます。このパッケージを使用するには、インストールする必要があります。

- CTX_THESのドキュメント

CTX_THESのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_THESに関する項を参照してください。

16 CTX_ULEXER

このOracle Textパッケージはユーザーレクサーと一緒に使用します。このパッケージを使用するには、インストールする必要があります。

- CTX_ULEXERのドキュメント

CTX_ULEXERのドキュメント

Oracle Textのコンテキストでのこのパッケージの詳細は、『Oracle Textリファレンス』のCTX_ULEXERに関する項を参照してください。

17 DBMS_ADDM

DBMS_ADDMパッケージによって、自動データベース診断モニターに関するアドバイザ機能を簡単に使用できるようになります。

関連項目:

- Oracle Real Application Clusters環境の自動ワークロード・リポジトリの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

- 自動パフォーマンス診断の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_ADDMの使用方法

- セキュリティ・モデル

- DBMS_ADDMサブプログラムの要約

DBMS_ADDMの使用方法

- セキュリティ・モデル

セキュリティ・モデル

DBMS_ADDMパッケージは、定義者の権限ではなくコール元の権限で実行され、DBMS_ADVISORパッケージで必要なセキュリティ制約が適用されます。

関連項目:
セキュリティ・モデルの詳細は、「DBMS_ADVISOR」パッケージを参照してください。

DBMS_ADDMサブプログラムの要約

表17-1 DBMS_ADDMパッケージのサブプログラム

サブプログラム

説明

ANALYZE_DBプロシージャ

データベース分析モードで分析するためのADDMタスクを作成して実行します。

ANALYZE_INSTプロシージャ

インスタンス分析モードで分析するためのADDMタスクを作成して実行します。

ANALYZE_PARTIALプロシージャ

部分的な分析モードでインスタンスのサブセットを分析するためのADDMタスクを作成して実行します。

COMPARE_CAPTURE_REPLAY_REPORTファンクション

取得のパフォーマンスをリプレイと比較する期間比較ADDMレポートを作成します。

COMPARE_DATABASESファンクション

データベース全体でパフォーマンスを比較するための期間比較ADDMレポートを作成します。

COMPARE_INSTANCESファンクション

インスタンス・レベルでパフォーマンスを比較するための期間比較ADDMレポートを作成します。

COMPARE_REPLAY_REPLAY_REPORTファンクション

リプレイのパフォーマンスを別のリプレイと比較する期間比較ADDMレポートを作成します。

DELETEプロシージャ

作成済のすべてのADDMタスクを削除します。

DELETE_FINDING_DIRECTIVEプロシージャ

検索結果ディレクティブを削除します。

DELETE_PARAMETER_DIRECTIVEプロシージャ

パラメータ・ディレクティブを削除します。

DELETE_SEGMENT_DIRECTIVEプロシージャ

セグメント・ディレクティブを削除します。

DELETE_SQL_DIRECTIVEプロシージャ

SQLディレクティブを削除します。

GET_ASH_QUERYファンクション

検索結果に影響するASHの行を特定するASH問合せのSQLテキストを含む文字列を戻します。

GET_REPORTファンクション

実行済のADDMタスクのデフォルトのテキスト・レポートを取得します。

INSERT_FINDING_DIRECTIVEプロシージャ

特定の検索結果タイプのレポートを制限するディレクティブを作成します。

INSERT_PARAMETER_DIRECTIVEプロシージャ

特定のシステム・パラメータの値を変更するアクションがADDMによって作成されないようにするディレクティブを作成します。

INSERT_SEGMENT_DIRECTIVEプロシージャ

特定のセグメントに対してセグメント・アドバイザを実行するアクションがADDMによって作成されないようにするディレクティブを作成します。

INSERT_SQL_DIRECTIVEプロシージャ

特定のSQLに対するアクションのレポートを制限するディレクティブを作成します。

REAL_TIME_ADDM_REPORTファンクション

ADDMアクティビティのリアルタイム・レポートを作成します。

ANALYZE_DBプロシージャ

このプロシージャは、データベース分析モードで分析するためのADDMタスクを作成して実行します。

構文

DBMS_ADDM.ANALYZE_DB (
task_name           IN OUT VARCHAR2,
begin_snapshot      IN     NUMBER,
end_snapshot        IN     NUMBER,
db_id               IN     NUMBER := NULL);

パラメータ

表17-2 ANALYZE_DBプロシージャのパラメータ

パラメータ

説明

task_name

作成するタスクの名前。

begin_snapshot

分析期間を開始するスナップショットの数。

end_snapshot

分析期間を終了するスナップショットの数。

db_id

分析するデータベースのデータベースID。デフォルトでは、これは、現在接続しているデータベースです。

戻り値

作成するタスクの名前は、task_nameパラメータに戻されます。この名前は、入力として指定されている値と異なる場合があります(その名前が別のタスクですでに使用されている場合のみ)。

例

tname変数に名前を指定して、データベース分析モードでADDMタスクを作成して実行するには、次のように入力します。

var tname VARCHAR2(60);
BEGIN
:tname := 'my_database_analysis_mode_task';
DBMS_ADDM.ANALYZE_DB(:tname, 1, 2);
END

レポートを表示するには、次のように入力します。

SET LONG 100000
SET PAGESIZE 50000
SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;

レポートの戻り値のタイプはCLOBであり、行サイズ(80)に合うように書式化されます。

ANALYZE_INSTプロシージャ

このプロシージャは、インスタンス分析モードで分析するためのADDMタスクを作成して実行します。

構文

DBMS_ADDM.ANALYZE_INST (
task_name           IN OUT VARCHAR2,
begin_snapshot      IN     NUMBER,
end_snapshot        IN     NUMBER,
instance_number     IN     NUMBER := NULL,
db_id               IN     NUMBER := NULL);

パラメータ

表17-3 ANALYZE_INSTプロシージャのパラメータ

パラメータ

説明

task_name

作成するタスクの名前。

begin_snapshot

分析期間を開始するスナップショットの数。

end_snapshot

分析期間を終了するスナップショットの数。

instance_number

分析するインスタンスの番号。デフォルトでは、これは、現在接続しているインスタンスです。

db_id

分析するデータベースのデータベースID。デフォルトでは、これは、現在接続しているデータベースです。

戻り値

作成するタスクの名前は、task_nameパラメータに戻されます。この名前は、入力として指定されている値と異なる場合があります(その名前が別のタスクですでに使用されている場合のみ)。

使用上の注意

シングル・インスタンス・システム(Oracle RACを使用していないインスタンス・システムの場合)では、作成されるタスクはANALYZE_DBプロシージャを使用した場合と同じです。

例

tname変数に名前を指定して、インスタンス分析モードでADDMタスクを作成して実行するには、次のように入力します。

var tname VARCHAR2(60);
BEGIN
:tname := 'my_instance_analysis_mode_task';
DBMS_ADDM.ANALYZE_INST(:tname, 1, 2);
END

レポートを表示するには、次のように入力します。

SET LONG 100000
SET PAGESIZE 50000
SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;

レポートの戻り値のタイプはCLOBであり、行サイズ(80)に合うように書式化されます。

ANALYZE_PARTIALプロシージャ

このプロシージャは、部分的な分析モードでインスタンスのサブセットを分析するADDMタスクを作成して実行します。

構文

DBMS_ADDM.ANALYZE_PARTIAL (
task_name           IN OUT VARCHAR2,
instance_numbers    IN     VARCHAR2,
begin_snapshot      IN     NUMBER,
end_snapshot        IN     NUMBER,
db_id               IN     NUMBER := NULL);

パラメータ

表17-4 ANALYZE_PARTIALプロシージャのパラメータ

パラメータ

説明

task_name

作成するタスクの名前。

instance_numbers

分析するインスタンスの番号のカンマ区切りリスト。

begin_snapshot

分析期間を開始するスナップショットの数。

end_snapshot

分析期間を終了するスナップショットの数。

db_id

分析するデータベースのデータベースID。デフォルトでは、これは、現在接続しているデータベースです。

戻り値

作成するタスクの名前は、task_nameパラメータに戻されます。この名前は、入力として指定されている値と異なる場合があります(その名前が別のタスクですでに使用されている場合のみ)。

例

tname変数に名前を指定して、部分的な分析モードでADDMタスクを作成して実行するには、次のように入力します。

var tname VARCHAR2(60);
BEGIN
:tname := 'my_partial_analysis_modetask';
DBMS_ADDM.ANALYZE_PARTIAL(:tname, '1,2,3', 1, 2);
END

レポートを表示するには、次のように入力します。

SET LONG 100000
SET PAGESIZE 50000
SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;

レポートの戻り値のタイプはCLOBであり、行サイズ(80)に合うように書式化されます。

COMPARE_CAPTURE_REPLAY_REPORTファンクション

このファンクションは、取得のパフォーマンスをリプレイと比較する期間比較ADDMレポートを作成します。AWRデータは同じデータベースに格納されている必要がありますが、異なるデータベースから作成されていても構いません。このファンクションは、XMLまたはHTML(アクティブ・レポート)のどちらかの形式でレポートを生成します。

構文

DBMS_ADDM.COMPARE_CAPTURE_REPLAY_REPORT (
replay_id             IN NUMBER,
report_type           IN VARCHAR2 := 'HTML')
RETURN CLOB;

パラメータ

表17-5 COMPARE_CAPTURE_REPLAY_REPORTファンクションのパラメータ

パラメータ

説明

replay_id

基本期間として使用するリプレイID。基本期間は、改善または低下を判別するために比較するベースライン期間です。

report_type

HTMLアクティブ・レポートの場合はHTML(デフォルト)、XMLレポートの場合はXMLです。

戻り値

期間比較ADDMレポートを含むCLOB

COMPARE_DATABASESファンクション

このファンクションは、2つの異なる期間にわたる1つのデータベースのパフォーマンス、または2つの異なる期間にわたる2つの異なるデータベースのパフォーマンスを比較する期間比較ADDMレポートを作成します。AWRデータは同じデータベースに格納されている必要がありますが、異なるデータベースから作成されたものであっても構いません。このファンクションは、XMLまたはHTML(アクティブ・レポート)のどちらかの形式でレポートを生成します。

構文

DBMS_ADDM.COMPARE_DATABASES (
base_dbid             IN NUMBER := NULL,
base_begin_snap_id    IN NUMBER,
base_end_snap_id      IN NUMBER,
comp_dbid             IN NUMBER := NULL,
comp_begin_snap_id    IN NUMBER,
comp_end_snap_id      IN NUMBER,
report_type           IN VARCHAR2 := 'HTML')
RETURN CLOB;

パラメータ

表17-6 COMPARE_DATABASESファンクションのパラメータ

パラメータ

説明

base_dbid

基本期間のデータベースID (DBID)。基本期間は、改善または低下を判別するために比較するベースライン期間です。

base_begin_snap_id

基本期間の開始AWRスナップショットID。

base_end_snap_id

基本期間の終了AWRスナップショットID。

comp_dbid

比較期間のデータベースID (DBID)。比較期間は、基本期間と比較する期間です。

comp_begin_snap_id

比較期間の開始AWRスナップショットID。

comp_end_snap_id

比較期間の終了AWRスナップショットID。

report_type

HTMLアクティブ・レポートの場合はHTML(デフォルト)、XMLレポートの場合はXMLです。

戻り値

期間比較ADDMレポートを含むCLOB

COMPARE_INSTANCESファンクション

このファンクションは、2つの異なる期間にわたる単一インスタンスのパフォーマンスを比較する期間比較ADDMレポート、または2つの異なる期間にわたる2つの異なるインスタンスのパフォーマンスを比較する期間比較ADDMレポートを作成します。AWRデータは同じデータベースに格納されている必要がありますが、異なるデータベースから作成されたものであっても構いません。このファンクションは、XMLまたはHTML(アクティブ・レポート)のどちらかの形式でレポートを生成します。

構文

DBMS_ADDM.COMPARE_INSTANCES (
base_dbid             IN NUMBER := NULL,
base_instance_id      IN NUMBER
base_begin_snap_id    IN NUMBER,
base_end_snap_id      IN NUMBER,
comp_dbid             IN NUMBER := NULL,
comp_instance_id      IN NUMBER,
comp_begin_snap_id    IN NUMBER,
comp_end_snap_id      IN  NUMBER,
report_type           IN VARCHAR2 := 'HTML')
RETURN CLOB;

パラメータ

表17-7 COMPARE_INSTANCESファンクションのパラメータ

パラメータ

説明

base_dbid

基本期間のデータベースID (DBID)。基本期間は、改善または低下を判別するために比較するベースライン期間です。

base_instance_id

基本期間から対象に含めるデータベース・インスタンスのインスタンス番号

base_begin_snap_id

基本期間の開始AWRスナップショットID。

base_end_snap_id

基本期間の終了AWRスナップショットID。

comp_dbid

比較期間のデータベースID (DBID)。比較期間は、基本期間と比較する期間です。

comp_instance_id

比較期間から対象に含めるデータベース・インスタンスのインスタンス番号

comp_begin_snap_id

比較期間の開始AWRスナップショットID。

comp_end_snap_id

比較期間の終了AWRスナップショットID。

report_type

HTMLアクティブ・レポートの場合はHTML(デフォルト)、XMLレポートの場合はXMLです。

戻り値

期間比較ADDMレポートを含むCLOB

COMPARE_REPLAY_REPLAY_REPORTファンクション

このファンクションは、リプレイのパフォーマンスを別のリプレイと比較する期間比較ADDMレポートを作成します。AWRデータは同じデータベースに格納されている必要がありますが、異なるデータベースから作成されていても構いません。このファンクションは、XMLまたはHTML(アクティブ・レポート)のどちらかの形式でレポートを生成します。

構文

DBMS_ADDM.COMPARE_CAPTURE_REPLAY_REPORT (
replay_id1            IN NUMBER,
replay_id2            IN NUMBER,
report_type           IN VARCHAR2 := 'HTML')
RETURN CLOB;

パラメータ

表17-8 COMPARE_REPLAY_REPLAY_REPORTファンクションのパラメータ

パラメータ

説明

replay_id1

基本期間として使用するリプレイID。基本期間は、改善または低下を判別するために比較するベースライン期間です。

replay_id2

比較期間として使用するリプレイID。比較期間は、改善または低下を判別するために基本期間と比較する期間です。

report_type

HTMLアクティブ・レポートの場合はHTML(デフォルト)、XMLレポートの場合はXMLです。

戻り値

期間比較ADDMレポートを含むCLOB

DELETEプロシージャ

このプロシージャは、作成済のすべてのADDMタスクを削除します。データベース分析モードおよび部分的な分析モードの場合は、メイン・タスクに関連付けられているローカル・タスクを削除します。

構文

DBMS_ADDM.DELETE (
task_name           IN VARCHAR2);

パラメータ

表17-9 DELETEプロシージャのパラメータ

パラメータ

説明

task_name

削除するタスクの名前。

例

BEGIN
DBMS_ADDM.DELETE ('my_partial_analysis_mode_task');
END

DELETE_FINDING_DIRECTIVEプロシージャ

このプロシージャは、検索結果ディレクティブを削除します。

構文

DBMS_ADDM.DELETE_FINDING_DIRECTIVE (
task_name           IN VARCHAR2,
dir_name            IN VARCHAR2);

パラメータ

表17-10 DELETE_FINDING_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

DELETE_PARAMETER_DIRECTIVEプロシージャ

このプロシージャは、パラメータ・ディレクティブを削除します。また、パラメータ用の特定のシステム・ディレクティブを削除します。後続のADDMタスクは、このディレクティブの影響を受けません。

構文

DBMS_ADDM.DELETE_PARAMETER_DIRECTIVE (
task_name           IN VARCHAR2,
dir_name            IN VARCHAR2);

パラメータ

表17-11 DELETE_PARAMETER_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

例

BEGIN
DBMS_ADDM.DELETE_PARAMETER_DIRECTIVE (NULL,'my Parameter directive');
END;

DELETE_SEGMENT_DIRECTIVEプロシージャ

このプロシージャは、セグメント・ディレクティブを削除します。

構文

DBMS_ADDM.DELETE_SEGMENT_DIRECTIVE (
task_name           IN VARCHAR2,
dir_name            IN VARCHAR2);

パラメータ

表17-12 DELETE_SEGMENT_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

DELETE_SQL_DIRECTIVEプロシージャ

このプロシージャは、SQLディレクティブを削除します。

構文

DBMS_ADDM.DELETE_SQL_DIRECTIVE (
task_name           IN VARCHAR2,
dir_name            IN VARCHAR2);

パラメータ

表17-13 DELETE_SQL_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

GET_ASH_QUERYファンクション

このファンクションは、検索結果に影響するASHの行を特定するASH問合せのSQLテキストを含む文字列を戻します。ほとんどのタイプの検索結果では、これにより検索結果に対応する正確なASHの行が特定されます。検索結果のタイプによっては、問合せは近似値であるため、検索結果の影響や検索結果の特定のアクティビティを正確に識別するために使用しないでください。

構文

DBMS_ADDM.GET_ASH_QUERY (
task_name           IN   VARCHAR2,
finding_id          IN   NUMBER)
RETURN VARCHAR2;

パラメータ

表17-14 GET_ASH_QUERYファンクションのパラメータ

パラメータ

説明

task_name

タスクの名前。

finding

タスク内の検索結果のID

戻り値

検査結果に影響するASHの行を特定するASH問合せを含むVARCHAR

GET_REPORTファンクション

このファンクションは、実行済のADDMタスクのデフォルトのテキスト・レポートを取得します。

構文

DBMS_ADDM.GET_REPORT (
task_name           IN VARCHAR2)
RETURN CLOB;

パラメータ

表17-15 GET_REPORTファンクションのパラメータ

パラメータ

説明

task_name

タスクの名前。

例

Set long 1000000
Set pagesize 50000
SELECT DBMS_ADDM.GET_REPORT('my_partial_analysis_mode_task') FROM DUAL;

INSERT_FINDING_DIRECTIVEプロシージャ

このプロシージャは、特定の検索結果タイプのレポートを制限するディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIALの場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。

構文

DBMS_ADDM.INSERT_FINDING_DIRECTIVE (
task_name             IN VARCHAR2,
dir_name              IN VARCHAR2,
finding_name          IN VARCHAR2,
min_active_sessions   IN NUMBER := 0,
min_perc_impact       IN NUMBER := 0);

パラメータ

表17-16 INSERT_FINDING_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

finding_name

このディレクティブを適用するADDM検索結果の名前。すべての有効な検索結果の名前は、DBA_ADVISOR_FINDING_NAMESビューのNAME列に表示されます。

min_active_sessions

検査結果に対するアクティブなセッションの最小数。検索結果がこの数より少ない場合は、ADDM結果に対してフィルタ処理が実行されています。

min_perc_impact

分析期間の合計データベース時間に対する検索結果の影響の割合の最小数。検索結果の影響がこの数より小さい場合は、ADDM結果に対してフィルタ処理が実行されています。

例

ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、'Undersized SGA'検索結果に対して特別な処理が行われます。'Undersized SGA'検索結果は、分析期間中2つ以上の平均アクティブ・セッションに関与し、その分析期間中の10%以上の合計データベース時間を構成する場合にのみ、GET_REPORTの結果に表示されます。

var tname VARCHAR2(60);
BEGIN
DBMS_ADDM.INSERT_FINDING_DIRECTIVE(
NULL,
'Undersized SGA directive',
'Undersized SGA',
2,
10);
:tname := 'my_instance_analysis_mode_task';
DBMS_ADDM.ANALYZE_INST(:tname, 1, 2);
END;

ディレクティブに関係なく'Undersized SGA'検索結果が含まれているレポートを表示するには、次のように入力します。

SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;

INSERT_PARAMETER_DIRECTIVEプロシージャ

このプロシージャは、特定のシステム・パラメータの値を変更するアクションがADDMによって作成されないようにするディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIALの場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。

構文

DBMS_ADDM.INSERT_PARAMETER_DIRECTIVE (
task_name             IN VARCHAR2,
dir_name              IN VARCHAR2,
parameter_name        IN VARCHAR2);

パラメータ

表17-17 INSERT_PARAMETER_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

parameter_name

使用するパラメータを指定します。有効なパラメータの名前がV$PARAMETERに表示されます。

例

ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、'sga_target'パラメータの変更を推奨するすべてのアクションに対して特別な処理が行われます。GET_REPORTの結果に、これらのアクションは表示されません。

var tname varchar2(60);
BEGIN
DBMS_ADDM.INSERT_PARAMETER_DIRECTIVE(
NULL,
'my Parameter directive',
'sga_target');
:tname := 'my_instance_analysis_mode_task';
DBMS_ADDM.ANALYZE_INST(:tname, 1, 2);
END;

ディレクティブに関係なくすべてのアクションが含まれるレポートを表示するには、次のように入力します。

SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;

INSERT_SEGMENT_DIRECTIVEプロシージャ

このプロシージャは、特定のセグメントに対してセグメント・アドバイザを実行するアクションがADDMによって作成されないようにするディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIALの場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。

構文

DBMS_ADDM.INSERT_SEGMENT_DIRECTIVE (
task_name             IN VARCHAR2,
dir_name              IN VARCHAR2,
owner_name            IN VARCHAR2,
object_name           IN VARCHAR2 := NULL,
sub_object_name       IN VARCHAR2 := NULL);

DBMS_ADDM.INSERT_SEGMENT_DIRECTIVE (
task_name             IN VARCHAR2,
dir_name              IN VARCHAR2,
object_number         IN NUMBER);

パラメータ

表17-18 INSERT_SEGMENT_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

owner_name

フィルタ処理するセグメントの所有者を指定します。LIKE制約に使用される同じ構文でワイルドカードを使用できます。

object_name

フィルタ処理するメイン・オブジェクトの名前。ワイルドカードを使用できます。NULLのデフォルト値は、'%'の値と同じです。

sub_object_name

フィルタ処理するメイン・オブジェクトの一部の名前。この名前には、パラメータ名または(.で区切られた)サブパーティション名を指定できます。ワイルドカードを使用できます。NULLのデフォルト値は、'%'の値と同じです。

object_number

このディレクティブによってフィルタ処理されるSEGMENTのオブジェクト番号。DBA_OBJECTSまたはDBA_SEGMENTSのビューにあります。

例

ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、ユーザーSCOTTに属するすべてのセグメントに対して特別な処理が行われます。GET_REPORTの結果に、SCOTTに属するセグメントに対してセグメント・アドバイザを実行するためのアクションは表示されません。

var tname VARCHAR2(60);
BEGIN
DBMS_ADDM.INSERT_SEGMENT_DIRECTIVE(NULL,
'my Segment directive',
'SCOTT');
:tname := 'my_instance_analysis_mode_task';
DBMS_ADDM.ANALYZE_INST(:tname, 1, 2);
END;

ディレクティブに関係なくすべてのアクションが含まれるレポートを表示するには、次のように入力します。

SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;

INSERT_SQL_DIRECTIVEプロシージャ

このプロシージャは、特定のSQLに対するアクションのレポートを制限するディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIALの場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。

構文

DBMS_ADDM.INSERT_SQL_DIRECTIVE (
task_name             IN VARCHAR2,
dir_name              IN VARCHAR2,
sql_id                IN VARCHAR2,
min_active_sessions   IN NUMBER := 0,
min_response_time     IN NUMBER := 0);

パラメータ

表17-19 INSERT_SQL_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

sql_id

フィルタ処理するSQL文を識別します。有効な値には、0から9およびaからzまでの13文字が含まれています。

min_active_sessions

SQLに対するアクティブなセッションの最小数。SQLアクションがこの数より少ない場合は、ADDM結果に対してフィルタ処理が実行されています。

min_response_time

SQLの応答時間の最小値(マイクロ秒)。SQLの応答時間がこの値より小さい場合は、ADDM結果に対してフィルタ処理が実行されています。

例

ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、IDがabcd123456789のSQLに対して特別な処理が行われます。そのSQLのアクション(SQLをチューニングするアクション、またはSQLを使用してアプリケーションを調査するアクション)は、そのSQLが分析期間中2つ以上の平均アクティブ・セッションに関与し、平均応答時間が1秒以上だった場合にのみ、GET_REPORTの結果に表示されます。

var tname VARCHAR2(60);
BEGIN
DBMS_ADDM.INSERT_SQL_DIRECTIVE(
NULL,
'my SQL directive',
'abcd123456789',
2,
1000000);
:tname := 'my_instance_analysis_mode_task';
DBMS_ADDM.ANALYZE_INST(:tname, 1, 2);
END;

ディレクティブに関係なくすべてのアクションが含まれるレポートを表示するには、次のように入力します。

SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;

REAL_TIME_ADDM_REPORTファンクション

このファンクションは、直近5分間のADDM関連のアクティビティに関するリアルタイムADDMレポートを作成します。Oracle Real Application Clusters (Oracle RAC)環境では、このファンクションはGV$を指定したSQLの実行が可能であることを前提としています。

構文

DBMS_ADDM.REAL_TIME_ADDM_REPORT ()
RETURN CLOB;

戻り値

リアルタイムADDMレポートを含むCLOB

18 DBMS_ADVANCED_REWRITE

DBMS_ADVANCED_REWRITEには、上級のクエリー・リライト・ユーザー用のインタフェースが格納されます。このパッケージを使用すると、クエリー・リライトに機能上等しい宣言を作成、削除および保守できます。

関連項目:
クエリー・リライトの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_ADVANCED_REWRITEの使用方法

- セキュリティ・モデル

- DBMS_ADVANCED_REWRITEサブプログラムの要約

DBMS_ADVANCED_REWRITEの使用方法

この項では、DBMS_ADVANCED_REWRITEパッケージの使用に関連する項目について説明します。

- セキュリティ・モデル

セキュリティ・モデル

デフォルトでは、これらのプロシージャにアクセスする権限は存在しません。これらのプロシージャにアクセスするには、SYSDBAとして接続し、目的のデータベース管理者に実行アクセス許可を明示的に付与する必要があります。

選択したデータベース管理者またはロールにEXECUTE権限を付与することによって、このパッケージのセキュリティを制御できます。たとえば、SYSDBAとして実行される次の文で、ユーザーerにこのパッケージを使用するアクセス許可を付与することができます。

GRANT EXECUTE ON DBMS_ADVANCED_REWRITE TO er;

このパッケージの先頭部分に、使用するアラート名を制限する個別のカバー・パッケージを記述することもできます。DBMS_ADVANCED_REWRITEパッケージに直接EXECUTE権限を付与するかわりに、カバー・パッケージにその権限を付与することができます。

また、標準のマテリアライズド・ビューに必要な権限と同様に、等価宣言の作成権限をユーザーに付与する必要があります。たとえば、次の文をSYSDBAとして実行すると、この権限をユーザーerに付与できます。

GRANT CREATE MATERIALIZED VIEW TO er;

DBMS_ADVANCED_REWRITEサブプログラムの要約

次の表に、このパッケージのすべてのサブプログラムをアルファベット順に示します。

表18-1 DBMS_ADVANCED_REWRITEパッケージのサブプログラム

サブプログラム

説明

ALTER_REWRITE_EQUIVALENCEプロシージャ

リライト等価宣言のモードを指定したモードに変更します。

BUILD_SAFE_REWRITE_EQUIVALENCEプロシージャ

サブマテリアライズド・ビューを使用してトップレベルのマテリアライズド・ビューのリライトを有効にします。このプロシージャは、直接使用しないことをお薦めします。

DECLARE_REWRITE_EQUIVALENCEプロシージャ

等価宣言が有効であるかぎり、source_stmtがdestination_stmtと機能上等しいこと、およびパフォーマンスの点から、destination_stmtが好ましいことを示す宣言を作成します。

DROP_REWRITE_EQUIVALENCEプロシージャ

指定したリライト等価宣言を削除します。

VALIDATE_REWRITE_EQUIVALENCEプロシージャ

validateパラメータで記述した検証方法と同じ方法を使用して、指定したリライト等価宣言を検証します。

ALTER_REWRITE_EQUIVALENCEプロシージャ

このプロシージャは、リライト等価宣言のモードを指定したモードに変更します。

構文

DBMS_ADVANCED_REWRITE.ALTER_REWRITE_EQUIVALENCE (
name            VARCHAR2,
rewrite_mode    VARCHAR2);

パラメータ

表18-2 ALTER_REWRITE_EQUIVALENCEプロシージャのパラメータ

パラメータ

説明

name

変更する等価宣言の名前。名前はowner.nameの形式で指定でき、ownerはスキーマ名のルールに従い、nameは表名のルールに従います。または、表名のルールに従った単一の名前を指定できます。この場合、リライト等価値は、現在のスキーマで変更します。実行者が自分のスキーマ外で等価宣言を変更するには、適切なマテリアライズド・ビューの変更権限を持つ必要があります。

rewrite_mode

以下のモードがサポートされます。強度順に並べています。

disabled: クエリー・リライトは等価宣言を使用しません。このモードは、リライト等価宣言の使用を一時的に無効にする場合に使用します。

text_match: クエリー・リライトはテキスト一致モードでのみ等価宣言を使用します。このモードは簡単な変換に役立ちます。

general: クエリー・リライトは受信リクエスト・クエリーに対して、すべての変換モードで等価宣言を使用します。ただし、クエリー・リライトは指定したdestination_queryのリライトは試みません。

recursive: クエリー・リライトは受信リクエスト・クエリーに対して、すべての変換モードで等価宣言を使用します。さらに、等価宣言を使用する場合に常にパフォーマンス向上のため、指定したdestination_queryのリライトを試みます。

パフォーマンス上の問題を起こさない最低限のモードを使用することをお薦めします。

BUILD_SAFE_REWRITE_EQUIVALENCEプロシージャ

このプロシージャは、サブマテリアライズド・ビューを使用して、トップレベルのマテリアライズド・ビューのリライトおよびリフレッシュを有効にします。このプロシージャは、DBMS_ADVISOR.TUNE_MVIEWプロシージャによって生成されたスクリプトでの排他使用のために提供されます。DBMS_ADVISOR.TUNE_MVIEWによってマテリアライズド・ビューを1つのトップレベルのマテリアライズド・ビューと1つ以上のサブマテリアライズド・ビューに分解する際に、クエリー・リライトおよび高速リフレッシュを有効にする場合に必要です。

BUILD_SAFE_REWRITE_EQUIVALENCEプロシージャは、直接使用しないことをお薦めします。必要に応じて、DBMS_ADVISOR.TUNE_MVIEWプロシージャまたはDBMS_ADVANCED_REWRITE.CREATE_REWRITE_EQUIVALENCEプロシージャのいずれかを使用してください。

DECLARE_REWRITE_EQUIVALENCEプロシージャ

このプロシージャは、等価宣言が有効であるかぎり、source_stmtがdestination_stmtと機能上等しいこと、およびパフォーマンスの点から、destination_stmtが好ましいことを示す宣言を作成します。宣言の範囲はシステム全体です。クエリー・リライト・エンジンは、それらの宣言を使用して、QUERY_REWRITE_INTEGRITY = trustedモードおよびstale_toleratedモードで、リライト変換を実行します。

ソース文と宛先文の基礎となる等価宣言はクエリー・リライト・エンジンで施行できないため、問合せはtrustedおよびstale_toleratedのIntegrityモードでのみリライトされます。

構文

DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE (
name                 VARCHAR2,
source_stmt          VARCHAR2,
destination_stmt     VARCHAR2,
validate             BOOLEAN    := TRUE,
rewrite_mode         VARCHAR2   := 'TEXT_MATCH');

DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE (
name                 VARCHAR2,
source_stmt          CLOB,
destination_stmt     CLOB,
validate             BOOLEAN   := TRUE,
rewrite_mode         VARCHAR2  := 'TEXT_MATCH');

パラメータ

表18-3 DECLARE_REWRITE_EQUIVALENCEプロシージャのパラメータ

パラメータ

説明

name

等価宣言の名前。名前はowner.nameの形式で指定でき、ownerはスキーマ名のルールに従い、nameは表名のルールに従います。

または、表名のルールに従った単一の名前を指定できます。この場合、リライト等価宣言は、現在のスキーマに作成されます。等価宣言を変更するには、実行者が適切なCREATE MATERIALIZED VIEW権限を持つ必要があります。

source_stmt

VARCHAR2またはCLOB形式でのサブSELECT式。これは最適化の目的となる問合せ文です。

destination_stmt

VARCHAR2またはCLOB形式でのサブSELECT式。

validate

指定したsource_stmtが指定したdestination_stmtと機能上等しいことを検証するかどうかを示すブール値。validateにTRUEを指定すると、DECLARE_REWRITE_EQUIVALENCEは2つのサブSELECTを評価し、それらの結果を比較します。結果が同じでない場合、DECLARE_REWRITE_EQUIVALENCEはリライト等価宣言を作成せず、エラー状況を戻します。FALSEの場合、DECLARE_REWRITE_EQUIVALENCEは等価宣言を検証しません。

rewrite_mode

以下のモードがサポートされます。強度順に並べています。

- disabled: クエリー・リライトは等価宣言を使用しません。このモードは、リライト等価宣言の使用を一時的に無効にする場合に使用します。

- text_match: クエリー・リライトはテキスト一致モードでのみ等価宣言を使用します。このモードは簡単な変換に役立ちます。

- general: クエリー・リライトは受信リクエスト・クエリーに対して、すべての変換モードで等価宣言を使用します。ただし、クエリー・リライトは指定したdestination_queryのリライトは試みません。

- recursive: クエリー・リライトは受信リクエスト・クエリーに対して、すべての変換モードで等価宣言を使用します。さらに、等価宣言を使用する場合に常にパフォーマンス向上のため、指定したdestination_queryのリライトを試みます。

パフォーマンス上の問題を起こさない最低限のモードを使用することをお薦めします。

例外

表18-4 DECLARE_REWRITE_EQUIVALENCEプロシージャの例外

例外

説明

ORA-30388

リライト同値化の名前が指定されていません。

ORA-30391

指定したリライト同値化が存在しません。

ORA-30392

リライト同値化のチェックサム分析に失敗しました。

ORA-30393

文内の問合せブロックはリライトされていません。

ORA-30396

リライト同値化プロシージャで、COMPATIBLEパラメータを10.1以上に設定する必要があります。

使用上の注意

等価宣言を使用したクエリー・リライトは、同時にマテリアライズド・ビューを使用したクエリー・リライトと一緒に行われます。どちらのリライトにも同じクエリー・リライト・エンジンが使用されます。クエリー・リライト・エンジンは、等価宣言とマテリアライズド・ビューを使用したクエリーのリライトに同じリライト・ルールを使用します。リライト等価宣言は上級ユーザーによって作成された特定のリライトを表すため、マテリアライズド・ビューによるリライトまたはリライト等価宣言によるリライトが実行可能な場合に、クエリー・リライト・エンジンは、マテリアライズド・ビューより、リライト等価宣言を優先します。このため、コストベースのオプティマイザ(特に、コストベースのリライト)は、リライトしないクエリー・プランのコストの方が好ましいと考えられる場合でも、リライトしないクエリー・プランを選択せず、リライトするクエリー・プランで、リライト等価宣言を使用します。クエリー・リライトは受信リクエスト・クエリーのプロパティを等価宣言のsource_stmtまたはマテリアライズド・ビューの定義文とそれぞれ照らし合わせて、等価宣言のdestination_stmtまたはマテリアライズド・ビューのコンテナ表それぞれに関する同等の関係式を取得します。

DROP_REWRITE_EQUIVALENCEプロシージャ

このプロシージャは指定したリライト等価宣言を削除します。

構文

DBMS_ADVANCED_REWRITE.DROP_REWRITE_EQUIVALENCE (
name        VARCHAR2);

パラメータ

表18-5 DROP_REWRITE_EQUIVALENCEプロシージャ

パラメータ

説明

name

削除する等価宣言の名前。名前はowner.nameの形式で指定でき、ownerはスキーマ名のルールに従い、nameは表名のルールに従います。または、表名のルールに従った単一の名前を指定できます。この場合、リライト等価値は、現在のスキーマで削除されます。実行者が自分のスキーマ外で等価宣言を削除するには、適切なマテリアライズド・ビューの削除権限を持つ必要があります。

VALIDATE_REWRITE_EQUIVALENCEプロシージャ

このプロシージャは、「VALIDATE_REWRITE_EQUIVALENCEプロシージャ」のVALIDATEパラメータで説明した検証方法と同じ方法を使用して、指定したリライト等価宣言を検証します。

構文

DBMS_ADVANCED_REWRITE.VALIDATE_REWRITE_EQUIVALENCE (
name         VARCHAR2);

パラメータ

表18-6 VALIDATE_REWRITE_EQUIVALENCEプロシージャ

パラメータ

説明

name

検証する等価宣言の名前。名前はowner.nameの形式で指定でき、ownerはスキーマ名のルールに従い、nameは表名のルールに従います。または、表名のルールに従った単一の名前を指定できます。この場合、リライト等価値は、現在のスキーマで検証されます。実行者は、指定した等価宣言のsource_stmtとdestination_stmtの両方を実行する十分な権限を持つ必要があります。

19 DBMS_ADVISOR

DBMS_ADVISORは、データベース・サーバー・コンポーネントに関するパフォーマンス問題を特定および解決する一連のエキスパート・システムであるアドバイザのサーバー管理スイートに含まれます。

一部のアドバイザには、独自のパッケージが含まれます。これらのアドバイザに関しては、DBMS_ADVISORではなくアドバイザ固有のパッケージを使用することをお薦めします。次の各アドバイザには、その特定の機能に特化した独自のパッケージが含まれます。

- 自動データベース診断モニター(DBMS_ADDM)

- SQLパフォーマンス・アナライザ(DBMS_SQLPA)

- SQL修復アドバイザ(DBMS_SQLDIAG)

- SQLチューニング・アドバイザ(DBMS_SQLTUNE)

- 圧縮アドバイザ(DBMS_COMPRESSION.GET_COMPRESSION_RATIO)

SQLアクセス・アドバイザおよびセグメント・アドバイザのみが、DBMS_ADVISORを一般的に使用します。UNDOアドバイザおよび圧縮アドバイザは、DBMS_ADVISORサブプログラムをサポートしていません。

関連項目:

- セグメント・アドバイザについては、『Oracle Database管理者ガイド』を参照してください。

- Enterprise ManagerでSQLアクセス・アドバイザを使用する方法の詳細は、『Oracle Database 2日でパフォーマンス・チューニング・ガイド』を参照してください。

- SQLアクセス・アドバイザの詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_ADVISORの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- DBMS_ADVISORサブプログラムの要約

DBMS_ADVISORの使用方法

この項では、DBMS_ADVISORパッケージの使用に関連する項目について説明します。

- 推奨されないサブプログラム

- セキュリティ・モデル

推奨されないサブプログラム

注意:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 11gでは、次のサブプログラムの使用は推奨されていません。

- ADD_SQLWKLD_REFプロシージャ

- CREATE_SQLWKLDプロシージャ

- DELETE_SQLWKLDプロシージャ

- DELETE_SQLWKLD_REFプロシージャ

- DELETE_SQLWKLD_STATEMENTプロシージャ

- IMPORT_SQLWKLD_SCHEMAプロシージャ

- IMPORT_SQLWKLD_SQLCACHEプロシージャ

- IMPORT_SQLWKLD_STSプロシージャ

- IMPORT_SQLWKLD_SUMADVプロシージャ

- IMPORT_SQLWKLD_USERプロシージャ

- RESET_SQLWKLDプロシージャ

- SET_SQLWKLD_PARAMETERプロシージャ

- UPDATE_SQLWKLD_ATTRIBUTESプロシージャ

- UPDATE_SQLWKLD_STATEMENTプロシージャ

セキュリティ・モデル

このパッケージを使用するには、ADVISOR権限が必要です。

DBMS_ADVISORサブプログラムの要約

表19-1に、このパッケージのサブプログラムの要約を示します。「使用されているプログラム」列は各サブプログラムに関連するアドバイザのリストですが、ADDM、SQLパフォーマンス・アナライザ、SQL修復アドバイザおよびSQLチューニング・アドバイザには独自のパッケージが含まれるため、これらのアドバイザは除外されています。

表19-1 DBMS_ADVISORパッケージのサブプログラム

サブプログラム

説明

使用されているプログラム

ADD_SQLWKLD_REFプロシージャ

アドバイザ・タスクにワークロード参照を追加します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

ADD_SQLWKLD_STATEMENTプロシージャ

単一の文をワークロードに追加します。

SQLアクセス・アドバイザ

ADD_STS_REFプロシージャ

現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを確立します。

SQLアクセス・アドバイザ

CANCEL_TASKプロシージャ

現在実行中のタスク操作を取り消します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

COPY_SQLWKLD_TO_STSプロシージャ

SQLワークロード・オブジェクトの内容をSQLチューニング・セットにコピーします。

SQLアクセス・アドバイザ

CREATE_FILEプロシージャ

PL/SQL CLOB変数から外部ファイルを作成します。スクリプトやレポートの作成に役立ちます。

SQLアクセス・アドバイザ

CREATE_OBJECTプロシージャ

新しいタスク・オブジェクトを作成します。

セグメント・アドバイザ

CREATE_SQLWKLDプロシージャ

新しいワークロード・オブジェクトを作成します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

CREATE_TASKプロシージャ

リポジトリ内に新しいアドバイザ・タスクを作成します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

DELETE_SQLWKLDプロシージャ

ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

DELETE_SQLWKLD_REFプロシージャ

ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

DELETE_SQLWKLD_STATEMENTプロシージャ

ワークロードから1つ以上の文を削除します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

DELETE_STS_REFプロシージャ

現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット・オブジェクト間のリンクを削除します。

SQLアクセス・アドバイザ

DELETE_TASKプロシージャ

リポジトリから指定したタスクを削除します。

SQLアクセス・アドバイザ

EXECUTE_TASKプロシージャ

指定したタスクを実行します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

GET_REC_ATTRIBUTESプロシージャ

タスクから特定のリコメンデーション属性を取り出します。

SQLアクセス・アドバイザ

GET_TASK_REPORTファンクション

指定したタスクのレポートを作成して戻します。

GET_TASK_SCRIPTファンクション

バッファ内にアドバイザ・タスクのリコメンデーションの実行可能なSQLスクリプトを作成して、戻します。

SQLアクセス・アドバイザ

IMPLEMENT_TASKプロシージャ

タスクに対してリコメンデーションを実装します。

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_SCHEMAプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_SQLCACHEプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_STSプロシージャ

データをSQLチューニング・セットからSQLワークロード・データ・オブジェクトにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_SUMADVプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_USERプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

INTERRUPT_TASKプロシージャ

現在実行中のタスクを停止し、通常の終了時と同じように操作を終了します。これによって、リコメンデーションが表示可能になります。

セグメント・アドバイザ、SQLアクセス・アドバイザ

MARK_RECOMMENDATIONプロシージャ

特定のリコメンデーションにannotation_statusを設定します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

QUICK_TUNEプロシージャ

単一のSQL文の分析を行います。

SQLアクセス・アドバイザ

RESET_SQLWKLDプロシージャ

ワークロードを初期開始ポイントにリセットします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

RESET_TASKプロシージャ

タスクを初期状態にリセットします。

セグメント・アドバイザ、SQLアクセス・アドバイザ

SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ

データをスキーマからワークロードにインポートします。

SQLアクセス・アドバイザ

SET_DEFAULT_TASK_PARAMETERプロシージャ

デフォルトのタスク・パラメータを変更します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

SET_SQLWKLD_PARAMETERプロシージャ

ワークロード・パラメータの値を設定します。

SQLアクセス・アドバイザ

SET_TASK_PARAMETERプロシージャ

指定したタスク・パラメータ値を設定します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

TUNE_MVIEWプロシージャ

マテリアライズド・ビューを複数のマテリアライズド・ビューに分解する方法、またはリフレッシュおよびクエリー・リライトの高速化を優先してマテリアライズド・ビューを更新する方法を示します。

SQLアクセス・アドバイザ

UPDATE_OBJECTプロシージャ

タスク・オブジェクトを更新します。

セグメント・アドバイザ

UPDATE_REC_ATTRIBUTESプロシージャ

指定したタスクの既存のリコメンデーションを更新します。

SQLアクセス・アドバイザ

UPDATE_SQLWKLD_ATTRIBUTESプロシージャ

ワークロード・オブジェクトを更新します。

SQLアクセス・アドバイザ

UPDATE_SQLWKLD_STATEMENTプロシージャ

ワークロードの1つ以上のSQL文を更新します。

SQLアクセス・アドバイザ

UPDATE_TASK_ATTRIBUTESプロシージャ

タスクの属性を更新します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

ADD_SQLWKLD_REFプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、現行のSQLアクセス・アドバイザ・タスクとSQLワークロード・オブジェクト間のリンクを確立します。このリンクを使用して、アドバイザ・タスクが分析の実行に関心のあるデータにアクセスできます。さらに、このリンクからデータの安定したビューも得られます。SQLアクセス・アドバイザ・タスクとSQLワークロード・オブジェクト間のリンクが確立されると、ワークロードは削除や変更から保護されます。

ユーザーは、すべてのSQLチューニング・セットベースのアドバイザの実行に対して、ADD_SQLWKLD_REFではなくADD_STS_REFを使用する必要があります。このファンクションは、下位互換性を維持する目的でのみ提供されています。

構文

DBMS_ADVISOR.ADD_SQLWKLD_REF (
task_name              IN VARCHAR2,
workload_name          IN VARCHAR2,
is_sts                 IN NUMBER :=0);

パラメータ

表19-2 ADD_SQLWKLD_REFプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

workload_name

リンクするワークロード・オブジェクトの名前。オブジェクトをタスクにリンクすると、読取り専用になり、削除できません。ワークロード・オブジェクトへのリンク数の制限はありません。ワークロード・オブジェクトへのリンクを削除するには、プロシージャDELETE_REFERENCEを使用します。

is_sts

ワークロード・ソースのタイプを示します。有効な値は、次のとおりです。

- 0 - SQLワークロード・オブジェクト

- 1 - SQLチューニング・セット

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name, 1);
END;
/

ADD_SQLWKLD_STATEMENTプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、指定したワークロードに単一の文を追加します。

構文

DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT (
workload_name          IN VARCHAR2,
module                 IN VARCHAR2,
action                 IN VARCHAR2,
cpu_time               IN NUMBER := 0,
elapsed_time           IN NUMBER := 0,
disk_reads             IN NUMBER := 0,
buffer_gets            IN NUMBER := 0,
rows_processed         IN NUMBER := 0,
optimizer_cost         IN NUMBER := 0,
executions             IN NUMBER := 1,
priority               IN NUMBER := 2,
last_execution_date    IN DATE := 'SYSDATE',
stat_period            IN NUMBER := 0,
username               IN VARCHAR2,
sql_text               IN CLOB);

パラメータ

表19-3 ADD_SQLWKLD_STATEMENTプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード名。

module

SQL文に関連付ける、オプションのビジネス・アプリケーション・モジュール。

action

SQL文に関連付ける、オプションのアプリケーション・アクション。

cpu_time

SQL文によって消費される秒単位での合計CPU時間。

elapsed_time

SQL文によって消費される秒単位での合計経過時間。

disk_reads

SQL文によって消費される合計ディスク読取り処理時間。

buffer_gets

SQL文によって消費される合計バッファ読取り処理時間。

rows_processed

SQL文によって処理される平均行数。

optimizer_cost

オプティマイザの計算されたコスト値。

executions

SQL文による実行数の合計。この値は0(ゼロ)より大きい必要があります。

priority

SQL文の相対優先度。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

last_execution_date

SQL文が最後に実行する日付と時刻。値がNULLの場合、現行の日付と時刻が使用されます。

stat_period

文の統計情報が計算されてからの秒単位での時間。

username

SQL文を実行したOracleユーザー名。ユーザー名はOracle識別子であるため、username値はサーバーに保存されているとおりに正確に入力する必要があります。たとえば、ユーザーSCOTTが実行中のユーザーである場合、ユーザー識別子SCOTTはすべて大文字で指定する必要があります。ユーザーscottはSCOTTと同じものとして認識されません。

sql_text

完全なSQL文。リコメンデーションの品質を向上させるため、SQL文にはバインド変数を含めないでください。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定する手順については、「RESET_TASKプロシージャ」を参照してください。

ADD_SQLWKLD_STATEMENTプロシージャは、コール元によって無視される可能性があるパラメータを複数受け入れます。実際の分析時には、cpu_time、elapsed_time、disk_reads、buffer_getsおよびoptimizer_costのみがワークロード・データのソートに使用されるため、実際の値は、order_listタスク・パラメータによって特定の統計が参照される場合にのみ必要となります。新しいSQL文をワークロードに追加する場合に提供される統計を判別するには、タスク・パラメータorder_listを調べるか、設定します。order_listパラメータは、buffer_gets、optimizer_cost、cpu_time、disk_reads、elapsed_time、executionsおよびpriorityキーの任意の組合せを受け入れます。priorityの一般的な設定では、optimizer_costは、SQLアクセス・アドバイザによってpriorityおよびoptimizer_costでワークロード・データがソートされ、最も高いコストの文が最初に処理されることを示します。ワークロードに追加する文には、適切なpriorityおよびoptimizer_costの値を含める必要があります。他のすべての統計は、デフォルト値または0 (ゼロ)に設定できます。order_listタスク・パラメータによって参照される統計キーの場合、実際のパラメータ値はワークロードの他の文と比較されるため、適切に指定する必要があります。コール元で値を推定できない場合は、ワークロードの他の文と比較して重要度を決定できる値を選択します。たとえば、現行の文が業務で最も重要な問合せであるとみなされる場合、適切な値は、ワークロード内の同じ統計の他のすべての値より大きい値になります。

例

DECLARE
workload_name VARCHAR2(30);
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold) FROM sh.sales');
END;
/

ADD_STS_REFプロシージャ

このプロシージャは、現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを確立します。このリンクを使用すると、分析を実行するためにアドバイザ・タスクでデータにアクセスできます。さらに、このリンクからデータの安定したビューも得られます。SQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクが確立されると、STSは削除や変更から保護されます。

STSベースのアドバイザの実行に対して、ADD_STS_REFを使用してください。パラメータIS_STS=1が指定されたADD_SQLWKLD_REFを使用する古いメソッドは、下位互換性を維持する目的でのみサポートされています。また、ADD_STS_REFファンクションはSQLチューニング・セットの所有者名を受け入れますが、ADD_SQLWKLD_REFは受け入れません。

構文

DBMS_ADVISOR.ADD_STS_REF(
task_name       IN VARCHAR2 NOT NULL,
sts_owner       IN VARCHAR2,
workload_name   IN VARCHAR2 NOT NULL);

パラメータ

表19-4 ADD_STS_REFプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

sts_owner

SQLチューニング・セットの所有者。このパラメータの値はNULLの場合があり、この場合、アドバイザでは、現在ログインしているユーザーがSQLチューニング・セットを所有しているとみなされます。

workload_name

リンクするワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。

ワークロードをタスクにリンクすると、読取り専用になり、削除できません。

ワークロードへのリンク数の制限はありません。

ワークロードへのリンクを削除するには、プロシージャDBMS_ADVISOR.DELETE_STS_REFを使用します。

例

DBMS_ADVISOR.ADD_STS_REF ('My Task', 'SCOTT', 'My Workload');

CANCEL_TASKプロシージャ

このプロシージャは、現在実行中の処理を終了します。このコールはソフト割込みを実行します。Ctrl-Cなどのハード割込みのように、低レベル・データベース・アクセス・コールには割り込みません。SQLアクセス・アドバイザは定期的にソフト割込みをチェックし、それに応じて適切に動作します。結果として、この処理ではコールに応答するまで数秒かかることがあります。

構文

DBMS_ADVISOR.CANCEL_TASK (
task_name      IN  VARCHAR2);

パラメータ

表19-5 CANCEL_TASKプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別する有効なアドバイザ・タスク名。

使用上の注意

取消しコマンドは、取り消した操作の開始前の状態にタスクを復元します。そのため、取り消されたタスクまたはデータ・オブジェクトは再開できません。

すべてのアドバイザ・タスク・プロシージャは同期されるため、操作を取り消すには、個別のデータベース・セッションを使用する必要があります。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CANCEL_TASK('My Task');
END;
/

COPY_SQLWKLD_TO_STSプロシージャ

このプロシージャは、SQLワークロード・オブジェクトの内容をSQLチューニング・セットにコピーします。

構文

コール元は、このプロシージャを使用する場合、SQLチューニング・セットを作成および変更する権限を持っている必要があります。

DBMS_ADVISOR.COPY_SQLWKLD_TO_STS (
workload_name         IN VARCHAR2,
sts_name              IN VARCHAR2,
import_mode           IN VARCHAR2 := 'NEW');

パラメータ

表19-6 COPY_SQLWKLD_TO_STSプロシージャのパラメータ

パラメータ

説明

workload_name

コピーするSQLワークロード・オブジェクトの名前。

sts_name

SQLワークロード・オブジェクトをコピーするSQLチューニング・セットの名前。

import_mode

ターゲットSQLチューニング・セットの処理を指定します。有効な値は、次のとおりです。

- APPEND
SQLワークロード・データをターゲットSQLチューニング・セットに追加します。

- NEW
コピーされた内容のみをSQLチューニング・セットに含めることができることを示します。SQLチューニング・セットが存在し、そのSQLチューニング・セットにデータが含まれている場合は、エラーがレポートされます。

- REPLACE
ターゲットSQLチューニング・セットの既存のデータをワークロードのコピーの前にパージします。

指定したSQLチューニング・セットが存在しない場合は、常に作成されます。

使用上の注意

コール元は、このプロシージャを使用する場合、SQLチューニング・セットを作成および変更する権限を持っている必要があります。

例

BEGIN
DBMS_ADVISOR.COPY_SQLWKLD_TO_STS('MY_OLD_WORKLOAD', 'MY_NEW_STS', 'NEW');
END;
/

CREATE_FILEプロシージャ

このプロシージャは、PL/SQL CLOB変数から外部ファイルを作成し、スクリプトやレポートの作成に使用できます。CREATE_FILEはCLOB入力パラメータを受け入れ、指定されたファイルに文字列の内容を書き込みます。

構文

DBMS_ADVISOR.CREATE_FILE (
buffer       IN  CLOB,
location     IN  VARCHAR2,
filename     IN  VARCHAR2);

パラメータ

表19-7 CREATE_FILEプロシージャのパラメータ

パラメータ

説明

buffer

レポートまたはスクリプト情報を格納するCLOBバッファ。

location

新しいファイルを格納するディレクトリを指定します。CREATE DIRECTORY文で定義したとおりに、ディレクトリ別名を使用する必要があります。アドバイザは別名を実際のディレクトリの場所に変換します。

filename

スクリプト・コマンドを受け取る出力ファイルを指定します。ファイル名には、形式filename.filetypeの名前とオプションのファイル・タイプのみを含めることができます。

使用上の注意

すべての書式設定をCLOBに埋め込む必要があります。

Oracleサーバーでは、ファイル・アクセスをOracleストアド・プロシージャ内に限定しています。このため、ファイルの場所と名前は、サーバーの既知のファイル・アクセス権を厳守する必要があります。

例

CREATE DIRECTORY MY_DIR as '/homedir/user4/gssmith';
GRANT READ,WRITE ON DIRECTORY MY_DIR TO PUBLIC;

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales');
DBMS_ADVISOR.EXECUTE_TASK(task_name);
DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT(task_name),
'MY_DIR','script.sql');

END;
/

CREATE_OBJECTプロシージャ

このプロシージャは、新しいタスク・オブジェクトを作成します。

構文

DBMS_ADVISOR.CREATE_OBJECT (
task_name         IN VARCHAR2,
object_type       IN VARCHAR2,
attr1             IN VARCHAR2 :=  NULL,
attr2             IN VARCHAR2 :=  NULL,
attr3             IN VARCHAR2 :=  NULL,
attr4             IN CLOB     :=  NULL,
object_id         OUT NUMBER);

DBMS_ADVISOR.CREATE_OBJECT (
task_name         IN VARCHAR2,
object_type       IN VARCHAR2,
attr1             IN VARCHAR2 :=  NULL,
attr2             IN VARCHAR2 :=  NULL,
attr3             IN VARCHAR2 :=  NULL,
attr4             IN CLOB     :=  NULL,
attr5             IN VARCHAR2 :=  NULL,
object_id         OUT NUMBER);

パラメータ

表19-8 CREATE_OBJECTプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別する有効なアドバイザ・タスク名。

object_type

外部オブジェクト・タイプを指定します。

attr1

アドバイザ固有のデータ。

attr2

アドバイザ固有のデータ。

attr3

アドバイザ固有のデータ。

attr4

アドバイザ固有のデータ。

attr5

アドバイザ固有のデータ。

object_id

アドバイザが割り当てたオブジェクト識別子。

属性パラメータは、オブジェクト・タイプによって値が異なります。これらのパラメータおよびオブジェクト・タイプの詳細は、『Oracle Database管理者ガイド』を参照してください。

戻り値

新しいオブジェクト識別子を戻します。

使用上の注意

タスク・オブジェクトは、一般に、特定のアドバイザの入力データとして使用します。セグメント・アドバイスは、オブジェクト、セグメントまたは表領域レベルで生成できます。オブジェクト・レベルの場合、アドバイスはオブジェクトのすべてのパーティションに関して生成されます(オブジェクトがパーティション化されている場合)。アドバイスは依存オブジェクトに伝達されません。セグメント・レベルの場合、アドバイスは表のパーティションまたはサブパーティション、索引、LOB列などの単一のセグメントに関して取得できます。表領域レベルの場合、表領域内のすべてのセグメントに対するターゲット・アドバイスが生成されます。

セグメント・アドバイザの詳細は、『Oracle Database管理者ガイド』を参照してください。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
obj_id NUMBER;
BEGIN
task_name := 'My Task';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CREATE_OBJECT (task_name,'SQL',NULL,NULL,NULL,
'SELECT * FROM SH.SALES',obj_id);
END;
/

CREATE_SQLWKLDプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、ユーザーの新しいプライベートSQLワークロード・オブジェクトを作成します。SQLワークロード・オブジェクトは、SQLアクセス・アドバイザにかわってSQLワークロードを管理します。SQLワークロード・オブジェクトは、SQL文のインポートや更新などの他のSQLワークロード操作を実行する前に存在している必要があります。

構文

DBMS_ADVISOR.CREATE_SQLWKLD (
workload_name            IN OUT VARCHAR2,
description              IN VARCHAR2 := NULL,
template                 IN VARCHAR2 := NULL,
is_template              IN VARCHAR2 := 'FALSE');

パラメータ

表19-9 CREATE_SQLWKLDプロシージャのパラメータ

パラメータ

説明

workload_name

作成したワークロードを一意に識別する名前。指定しない場合は、システムによって一意の名前が生成されます。名前の長さは30文字までです。

description

オプションのワークロードの説明を指定します。説明の長さは256文字までです。

template

既存のワークロード・データ・オブジェクトまたはデータ・オブジェクト・テンプレートの、オプションのSQLワークロード名

is_template

新しく作成したワークロードをテンプレートとして設定できるオプションの値。有効な値はTRUEおよびFALSEです。

戻り値

SQLアクセス・アドバイザは、新しいSQLワークロード・オブジェクト内の後続のアクティビティで使用する必要がある、一意のワークロード・オブジェクト識別子番号を戻します。

使用上の注意

デフォルトでは、組込みのデフォルト設定を使用してワークロード・オブジェクトが作成されます。既存のワークロードのパラメータ設定またはワークロード・テンプレートを使用してワークロードを作成するには、既存のワークロード名を指定します。

SQLワークロード・オブジェクトが存在している場合、ADD_SQLWKLD_REFプロシージャを使用して、1つ以上のSQLアクセス・アドバイザのタスクから参照できます。

例

DECLARE
workload_name VARCHAR2(30);
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
END;
/

CREATE_TASKプロシージャ

このプロシージャは、リポジトリ内に新しいアドバイザ・タスクを作成します。

構文

DBMS_ADVISOR.CREATE_TASK (
advisor_name          IN VARCHAR2,
task_id               OUT NUMBER,
task_name             IN OUT VARCHAR2,
task_desc             IN VARCHAR2 := NULL,
template              IN VARCHAR2 := NULL,
is_template           IN VARCHAR2 := 'FALSE',
how_created           IN VARCHAR2 := NULL);

DBMS_ADVISOR.CREATE_TASK (
advisor_name          IN VARCHAR2,
task_name             IN VARCHAR2,
task_desc             IN VARCHAR2 := NULL,
template              IN VARCHAR2 := NULL,
is_template           IN VARCHAR2 := 'FALSE',
how_created           IN VARCHAR2 := NULL);

DBMS_ADVISOR.CREATE_TASK (
parent_task_name      IN VARCHAR2,
rec_id                IN NUMBER,
task_id               OUT NUMBER,
task_name             IN OUT VARCHAR2,
task_desc             IN VARCHAR2,
template              IN VARCHAR2);

パラメータ

表19-10 CREATE_TASKプロシージャのパラメータ

パラメータ

説明

advisor_name

DBA_ADVISOR_DEFINITIONSビューに定義されているとおりに、一意のアドバイザ名を指定します。

task_id

作成したタスクを一意に識別する番号。番号はプロシージャによって作成され、ユーザーに戻されます。

task_name

新しいタスク名を指定します。名前は、すべてのタスクの中でユーザーに一意である必要があります。

前述のCREATE_TASK構文(OUT付き)の2番目の形式を使用すると、一意の名前を生成できます。名前の長さは30文字までです。

task_desc

オプションのタスクの説明を指定します。説明の長さは256文字までです。

template

既存のタスクまたはタスク・テンプレートの、オプションのタスク名。組込みのSQLアクセス・アドバイザのテンプレートを指定するには、前述のようにテンプレート名を使用します。

is_template

ユーザーが新しく作成したタスクをテンプレートとして設定できるようにするオプションの値。有効な値はTRUEおよびFALSEです。

how_created

ソースが作成された方法を識別するオプションの値。

戻り値

パラメータが指定されていない場合は、一意のタスクID番号および一意のタスク名を戻します。

使用上の注意

タスクはアドバイザに関連付ける必要があり、タスクを作成すると、元のアドバイザに永久に関連付けられます。デフォルトでは、組込みのデフォルト設定を使用してタスクが作成されます。既存のタスクのパラメータ設定またはタスク・テンプレートを使用してワークロードを作成するには、既存のタスク名を指定します。

SQLアクセス・アドバイザの場合、advisor_nameとして識別子DBMS_ADVISOR.SQLACCESS_ADVISORを使用します。

SQLアクセス・アドバイザは、次の定数を使用して、3つの組込みのタスク・テンプレートを提供します。

- DBMS_ADVISOR.SQLACCESS_OLTP
パラメータはOLTPアプリケーション環境向けにプリセットされます。

- DBMS_ADVISOR.SQLACCESS_WAREHOUSE
パラメータはデータ・ウェアハウス・アプリケーション環境向けにプリセットされます。

- DBMS_ADVISOR.SQLACCESS_GENERAL
パラメータは、OLTPとデータ・ウェアハウスの両方の操作が行われる可能性のあるハイブリッド・アプリケーション環境向けにプリセットされます。SQLアクセス・アドバイザの場合、これがデフォルトのテンプレートです。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
BEGIN
task_name := 'My Task';
DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
END;
/

DELETE_SQLWKLDプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、リポジトリから既存のSQLワークロードを削除します。

構文

DBMS_ADVISOR.DELETE_SQLWKLD (
workload_name        IN VARCHAR2);

パラメータ

表19-11 DELETE_SQLWKLDプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。WORKLOAD_NAMEとして、ワイルドカード%がサポートされます。使用規則はLIKE演算子と同一です。たとえば、現行のユーザーのすべてのタスクを削除するには、WORKLOAD_NAMEとして、ワイルドカード%を使用します。ワイルドカードを指定すると、DELETE_SQLWKLDの操作ではREAD_ONLYまたはTEMPLATEとマークされたすべてのワークロードが削除されません。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

例

DECLARE
workload_name VARCHAR2(30);
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.DELETE_SQLWKLD(workload_name);
END;
/

DELETE_SQLWKLD_REFプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、現行のSQLアクセス・アドバイザのタスクとSQLワークロード・データ・オブジェクト間のリンクを削除します。

すべてのSQLチューニング・セットベースのアドバイザの実行に対して、DELETE_SQLWKLD_REFではなくDELETE_STS_REFを使用してください。このファンクションは、下位互換性を維持する目的でのみ提供されています。

構文

DBMS_ADVISOR.DELETE_SQLWKLD_REF (
task_name              IN VARCHAR2,
workload_name          IN VARCHAR2,
is_sts                 IN NUMBER :=0);

パラメータ

表19-12 DELETE_SQLWKLD_REFプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

workload_name

リンクを解除するワークロード・オブジェクトの名前。workload_nameとして、ワイルドカード%がサポートされます。使用規則はLIKE演算子と同一です。たとえば、ワークロード・オブジェクトへのすべてのリンクを削除するには、workload_nameとしてワイルドカード%を使用します。

is_sts

ワークロード・ソースのタイプを示します。有効な値は、次のとおりです。

- 0 - SQLワークロード・オブジェクト

- 1 - SQLチューニング・セット

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.DELETE_SQLWKLD_REF(task_name, workload_name);
END;
/

DELETE_SQLWKLD_STATEMENTプロシージャ

このプロシージャは非推奨となっています。

このプロシージャは、ワークロードから1つ以上の文を削除します。

構文

DBMS_ADVISOR.DELETE_SQLWKLD_STATEMENT (
workload_name        IN VARCHAR2,
sql_id               IN NUMBER);

DBMS_ADVISOR.DELETE_SQLWKLD_STATEMENT (
workload_name        IN VARCHAR2,
search               IN VARCHAR2,
deleted              OUT NUMBER);

パラメータ

表19-13 DELETE_SQLWKLD_STATEMENTプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

sql_id

文に割り当てられるアドバイザによって生成された識別子番号。すべてのワークロード文を指定するには、定数ADVISOR_ALLを使用します。

search

無効になっています。

deleted

削除された操作の検索によって削除された文の数を戻します。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

例

DECLARE
workload_name VARCHAR2(30);
deleted NUMBER;
id NUMBER;
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'YEARLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales');

SELECT sql_id INTO id FROM USER_ADVISOR_SQLW_STMTS
WHERE workload_name = 'My Workload';

DBMS_ADVISOR.DELETE_SQLWKLD_STATEMENT(workload_name, id);
END;
/

DELETE_STS_REFプロシージャ

このプロシージャは、現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを削除します。すべてのSTSベースのアドバイザの実行に対して、DELETE_STS_REFを使用します。パラメータIS_STS=1が指定されたDELETE_SQLWKLD_REFを使用する古いメソッドは、下位互換性を維持する目的でのみサポートされています。また、DELETE_STS_REFファンクションはSTSの所有者名を受け入れますが、DELETE_SQLWKLD_REFは受け入れません。

構文

DBMS_ADVISOR.DELETE_STS_REF (
task_name      IN VARCHAR2 NOT NULL,
sts_owner      IN VARCHAR2,
workload_name  IN VARCHAR2 NOT NULL);

パラメータ

表19-14 DELETE_STS_REFプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

sts_owner

SQLチューニング・セットの所有者。このパラメータの値はNULLの場合があり、この場合、アドバイザでは、現在ログインしているユーザーがSQLチューニング・セットを所有しているとみなされます。

workload_name

リンクを解除するワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。

ワークロード名として、ワイルドカード%がサポートされます。使用規則はSQLのLIKE演算子と同一です。たとえば、SQLチューニング・セット・オブジェクトへのすべてのリンクを削除するには、STS_NAMEとしてワイルドカード%を使用します。

例

DBMS_ADVISOR.DELETE_STS_REF ('My task', 'SCOTT', 'My workload');

DELETE_TASKプロシージャ

このプロシージャは、リポジトリから既存のタスクを削除します。

構文

DBMS_ADVISOR.DELETE_TASK (
task_name          IN VARCHAR2);

パラメータ

表19-15 DELETE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

リポジトリから削除する単一のアドバイザ・タスク名。

TASK_NAMEとして、ワイルドカード%がサポートされます。使用規則はLIKE演算子と同一です。たとえば、現行のユーザーのすべてのタスクを削除するには、TASK_NAMEとして、ワイルドカード%を使用します。

ワイルドカードを指定すると、DELETE_TASK操作ではREAD_ONLYまたはTEMPLATEとマークされたすべてのワークロードが削除されません。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
BEGIN
task_name := 'My Task';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.DELETE_TASK(task_name);
END;
/

EXECUTE_TASKプロシージャ

このプロシージャは、アドバイザ分析、または指定したタスクの評価を行います。このプロシージャはオーバーロードされています。

実行に関連する引数はオプションです。タスクを複数回実行できないアドバイザに設定する必要はありません。

アドバイザでは、タスクを複数回実行し、得られた結果をそれ以降の処理および分析に使用することができます。

構文

DBMS_ADVISOR.EXECUTE_TASK (
task_name          IN VARCHAR2);

DBMS_ADVISOR.EXECUTE_TASK (
task_name         IN VARCHAR2,
execution_type    IN VARCHAR2             := NULL,
execution_name    IN VARCHAR2             := NULL,
execution_params  IN dbms_advisor.argList := NULL,
execution_desc    IN VARCHAR2             := NULL,
RETURN VARCHAR2;

パラメータ

表19-16 EXECUTE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するタスク名。

execution_type

ファンクションによって実行されるアクションのタイプ。NULLの場合、デフォルト値はDEFAULT_EXECUTION_TYPEパラメータの値に設定されます。

たとえば、SQLパフォーマンス・アナライザは、次の値を受け入れます。

- EXPLAIN PLAN: SQL文のEXPLAIN PLANを生成します。これは、EXPLAIN PLANコマンドに類似しています。生成される計画は、タスクに関連付けられているアドバイザ・フレームワークに格納されます。

- TEST EXECUTE: SQL文をテスト実行し、実行計画および統計情報を収集します。生成される計画および統計情報は、アドバイザ・フレームワークに格納されます。

- ANALYZE PERFORMANCE: 2つのバージョンのSQLパフォーマンス・データを分析および比較します。パフォーマンス・データを生成するには、SQL文のテスト実行またはそのEXPLAIN PLANの生成を行います。

execution_name

実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。

execution_params

指定した実行のパラメータ(名前、値)のリスト。実行パラメータは実タスク・パラメータですが、指定されている実行に対してのみ影響します。

次に例を示します。

DBMS_ADVISOR.ARGLIST('time_limit', 12, 'username', 'hr')

execution_desc

実行について説明する256文字の長さの文字列。

使用上の注意

タスクの実行は同期処理です。処理が完了するか、またはユーザーの割込みが検出されるまで、コントロールはコール元に返されません。

コントロールが返されると、DBA_ADVISOR_LOG表で実行状態をチェックできます。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.EXECUTE_TASK(task_name);
END;
/

GET_REC_ATTRIBUTESプロシージャ

このプロシージャは、アドバイザ分析による推奨のとおりに、新しいオブジェクトの指定した属性を取得します。

構文

DBMS_ADVISOR.GET_REC_ATTRIBUTES (
workload_name         IN VARCHAR2,
rec_id                IN NUMBER,
action_id             IN NUMBER,
attribute_name        IN VARCHAR2,
value                 OUT VARCHAR2,
owner_name            IN VARCHAR2 := NULL);

パラメータ

表19-17 GET_REC_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するタスク名。

rec_id

リコメンデーションに割り当てられる、アドバイザによって生成される識別子番号。

action_id

特定のコマンドに割り当てられる、アドバイザによって生成されたアクション識別子。

attribute_name

変更する属性を指定します。

value

要求された属性値を受け取るバッファ。

owner_name

ターゲット・タスクのオプションの所有者名。これによって、現行のユーザーが所有していないタスク・データへのアクセスを許可します。

戻り値

要求された属性値はVALUE引数に戻されます。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
attribute VARCHAR2(100);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';
DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales WHERE promo_id = 10');
DBMS_ADVISOR.EXECUTE_TASK(task_name);
DBMS_ADVISOR.GET_REC_ATTRIBUTES(task_name, 1, 1, 'NAME', attribute);
END;
/

GET_TASK_REPORTファンクション

このファンクションは、指定したタスクのレポートを作成して戻します。

構文

DBMS_ADVISOR.GET_TASK_REPORT (
task_name      IN VARCHAR2,
type           IN VARCHAR2 := 'TEXT',
level          IN VARCHAR2 := 'TYPICAL',
section        IN VARCHAR2 := 'ALL',
owner_name     IN VARCHAR2 := NULL,
execution_name IN VARCHAR2 := NULL,
object_id      IN NUMBER   := NULL)
RETURN CLOB;

パラメータ

表19-18 GET_TASK_REPORTファンクションのパラメータ

パラメータ

説明

task_name

スクリプトを作成するタスクの名前。

type

有効な値は、TEXTのみです。

level

設定可能な値は、BASIC、TYPICALおよびALLです。

section

アドバイザ固有のレポート・セクション。

owner_name

タスクの所有者。指定すると、現行のユーザーがタスクのデータに対する読取り権限を持つかどうかがチェックされます。

execution_name

特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。

object_id

スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。

戻り値

スクリプトを受け取るバッファを戻します。

GET_TASK_SCRIPTファンクション

このファンクションは、SQL*Plus互換SQLスクリプトを作成し、ファイルに出力します。このスクリプトには、指定したタスクから受け入れるすべてのリコメンデーションを格納します。

構文

DBMS_ADVISOR.GET_TASK_SCRIPT (
task_name          IN VARCHAR2
type               IN VARCHAR2 := 'IMPLEMENTATION',
rec_id             IN NUMBER   := NULL,
act_id             IN NUMBER   := NULL,
owner_name         IN VARCHAR2 := NULL,
execution_name     IN VARCHAR2 := NULL,
object_id          IN NUMBER   := NULL)
RETURN CLOB;

パラメータ

表19-19 GET_TASK_SCRIPTファンクションのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するタスク名。

type

生成するスクリプトのタイプを指定します。設定可能な値はIMPLEMENTATIONおよびUNDOです。

rec_id

実装スクリプトのサブセットの取出しに使用できる、オプションのリコメンデーション識別子番号。

0または値DBMS_ADVISOR.ADVISOR_ALLは、受け入れるすべてのリコメンデーションを含めることを示します。デフォルトは、受け入れるすべてのタスクのリコメンデーションを含めることです。

act_id

DDLコマンドとして単一のアクションの取出しに使用できる、オプションのアクション識別子番号。

0または値DBMS_ADVISOR.ADVISOR_ALLは、すべてのリコメンデーションのアクションを含めることを示します。デフォルトは、すべてのリコメンデーションのアクションを含めることです。

owner_name

オプションのタスク所有者名。

execution_name

特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。

object_id

スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。

戻り値

CLOBバッファとしてスクリプトを戻します。

使用上の注意

スクリプトは実行する準備ができていますが、新しいマテリアライズド・ビューおよび索引の受入れ可能な場所についてスクリプトを確認することをお薦めします。

生成されたスクリプトに含まれるリコメンデーションは、受入れ済としてマークする必要があります。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
buf CLOB;
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales');
DBMS_ADVISOR.EXECUTE_TASK(task_name);
buf := DBMS_ADVISOR.GET_TASK_SCRIPT(task_name);
END;
/

IMPLEMENT_TASKプロシージャ

このプロシージャは、指定したタスクのリコメンデーションを実装します。

構文

DBMS_ADVISOR.IMPLEMENT_TASK (
task_name          IN VARCHAR2,
rec_id             IN NUMBER := NULL,
exit_on_error      IN BOOLEAN := NULL);

パラメータ

表19-20 IMPLEMENT_TASKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

rec_id

オプションのリコメンデーションID。

exit_on_error

最初のエラー時に終了するオプションのブール。

IMPORT_SQLWKLD_SCHEMAプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、スキーマに基づいたSQLワークロードを構築し、ロードします。このワークロードは仮定ワークロードとも呼ばれます。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_SCHEMA (
workload_name         IN VARCHAR2,
import_mode           IN VARCHAR2 := 'NEW',
priority              IN NUMBER := 2,
saved_rows            OUT NUMBER,
failed_rows           OUT NUMBER);

パラメータ

表19-21 IMPORT_SQLWKLD_SCHEMAプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。有効な値は、次のとおりです。

- APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

- NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

- REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

saved_rows

リポジトリに実際に保存された行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上の注意

仮定ワークロードを正しくインポートするには、ターゲット・スキーマにディメンションが格納されている必要があります。

VALID_TABLE_LISTパラメータを設定しない場合、検索領域が著しく大きくなり、実行に長い時間を要することがあります。検索領域を特定の一連の表に制限することをお薦めします。

タスクに以前の実行からの有効なリコメンデーションが含まれる場合に、タスクを追加または変更すると、そのタスクが無効としてマークされ、価値の高いリコメンデーション・データの表示とレポートが妨げられることがあります。

例

DECLARE
workload_name VARCHAR2(30);
saved NUMBER;
failed NUMBER;
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
DBMS_ADVISOR.IMPORT_SQLWKLD_SCHEMA(workload_name, 'REPLACE', 1, saved,
failed);
END;
/

IMPORT_SQLWKLD_SQLCACHEプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、サーバーのSQLキャッシュの現行の内容からSQLワークロードを作成します。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_SQLCACHE (
workload_name         IN VARCHAR2,
import_mode           IN VARCHAR2 := 'NEW',
priority              IN NUMBER := 2,
saved_rows            OUT NUMBER,
failed_rows           OUT NUMBER);

パラメータ

表19-22 IMPORT_SQLWKLD_SQLCACHEプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。有効な値は、次のとおりです。

- APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

- NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

- REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

saved_rows

保存された行の数を出力パラメータとして戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

例

DECLARE
workload_name VARCHAR2(30);
saved NUMBER;
failed NUMBER;
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
DBMS_ADVISOR.IMPORT_SQLWKLD_SQLCACHE(workload_name, 'REPLACE', 1, saved,
failed);
END;
/

IMPORT_SQLWKLD_STSプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、既存のSQLチューニング・セットからSQLワークロードをロードします。SQLチューニング・セットは、一般に、様々な時刻と日付フィルタを使用してサーバー・ワークロード・リポジトリから作成されます。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_STS (
workload_name         IN VARCHAR2,
sts_name              IN VARCHAR2,
import_mode           IN VARCHAR2 := 'NEW',
priority              IN NUMBER := 2,
saved_rows            OUT NUMBER,
failed_rows           OUT NUMBER);

DBMS_ADVISOR.IMPORT_SQLWKLD_STS (
workload_name         IN VARCHAR2,
sts_owner             IN VARCHAR2,
sts_name              IN VARCHAR2,
import_mode           IN VARCHAR2 := 'NEW',
priority              IN NUMBER := 2,
saved_rows            OUT NUMBER,
failed_rows           OUT NUMBER);

パラメータ

表19-23 IMPORT_SQLWKLD_STSプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

sts_owner

SQLチューニング・セットのオプションの所有者。

sts_name

データのインポート元となる、既存のSQLチューニング・セット・ワークロードの名前。sts_owner値を指定しない場合、デフォルトで所有者が現行のユーザーに設定されます。

import_mode

ワークロードの格納時に実行するアクションを指定します。有効な値は、次のとおりです。

- APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

- NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

- REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。デフォルト値は2です。

saved_rows

リポジトリに実際に保存された行数を戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

例

DECLARE
workload_name VARCHAR2(30);
saved NUMBER;
failed NUMBER;
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
DBMS_ADVISOR.IMPORT_SQLWKLD_STS(workload_name, 'MY_SQLSET', 'REPLACE', 1,
saved, failed);
END;
/

IMPORT_SQLWKLD_SUMADVプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、サマリー・アドバイザ・ワークロードからSQLワークロードを収集します。このプロシージャの目的は、SQLアクセス・アドバイザへのOracle9i データベースのサマリー・アドバイザ・ユーザーの移行を支援することです。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_SUMADV (
workload_name         IN VARCHAR2,
import_mode           IN VARCHAR2 := 'NEW',
priority              IN NUMBER := 2,
sumadv_id             IN NUMBER,
saved_rows            OUT NUMBER,
failed_rows           OUT NUMBER);

パラメータ

表19-24 IMPORT_SQLWKLD_SUMADVプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。有効な値は、次のとおりです。

- APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

- NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

- REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のデフォルトのアプリケーション優先度を指定します。サマリー・アドバイザのワークロード文に0の優先度が含まれている場合は、デフォルトの優先度が適用されます。ワークロード文に有効な優先度が含まれる場合は、サマリー・アドバイザの優先度がSQLアクセス・アドバイザで相当する優先度に変換されます。値は次のいずれかになります。

1-HIGH、2 - MEDIUMまたは3 - LOW。

sumadv_id

サマリー・アドバイザ・ワークロード識別子番号を指定します。

saved_rows

リポジトリに実際に保存された行数を戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

例

DECLARE
workload_name VARCHAR2(30);
saved NUMBER;
failed NUMBER;
sumadv_id NUMBER;
BEGIN
workload_name := 'My Workload';
sumadv_id := 394;

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
DBMS_ADVISOR.IMPORT_SQLWKLD_SUMADV(workload_name, 'REPLACE', 1, sumadv_id,
saved, failed);
END;
/

IMPORT_SQLWKLD_USERプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、指定したユーザー表からSQLワークロードを収集します。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_USER (
workload_name         IN VARCHAR2,
import_mode           IN VARCHAR2 := 'NEW',
owner_name            IN VARCHAR2,
table_name            IN VARCHAR2,
saved_rows            OUT NUMBER,
failed_rows           OUT NUMBER);

パラメータ

表19-25 IMPORT_SQLWKLD_USERプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。有効な値は、次のとおりです。

- APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

- NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

- REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

owner_name

ワークロードを収集する表またはビューの所有者名を指定します。

table_name

ワークロード・データを収集する表またはビューの名前を指定します。

saved_rows

ワークロード・オブジェクトに実際に保存された行数を戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

例

DECLARE
workload_name VARCHAR2(30);
saved NUMBER;
failed NUMBER;
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
DBMS_ADVISOR.IMPORT_SQLWKLD_USER(workload_name, 'REPLACE', 'SH',
'USER_WORKLOAD', saved, failed);
END;
/

INTERRUPT_TASKプロシージャ

このプロシージャは、現在実行中のタスクを停止します。タスクは、正常終了時と同じように処理を停止します。ユーザーは、この時点までに存在するすべてのリコメンデーションにアクセスできます。

構文

DBMS_ADVISOR.INTERRUPT_TASK (
task_name          IN VARCHAR2);

パラメータ

表19-26 INTERRUPT_TASKプロシージャのパラメータ

パラメータ

説明

task_name

中断する単一のアドバイザ・タスク名。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
BEGIN
task_name := 'My Task';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.EXECUTE_TASK(task_name);
END;
/

このセッションがタスクを実行中に、次の文を使用して2番目のセッションからタスクを中断できます。

BEGIN
DBMS_ADVISOR.INTERRUPT_TASK('My Task');
END;
/

MARK_RECOMMENDATIONプロシージャ

このプロシージャは、インポートまたは実装用にリコメンデーションをマークします。

構文

DBMS_ADVISOR.MARK_RECOMMENDATION (
task_name          IN VARCHAR2
id                 IN NUMBER,
action             IN VARCHAR2);

パラメータ

表19-27 MARK_RECOMMENDATIONプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

id

アドバイザによって割り当てられたリコメンデーション識別子番号。

action

リコメンデーション・アクション設定。設定可能なアクションは、次のとおりです。

- ACCEPT: リコメンデーションを受入れ済としてマークします。この設定では、リコメンデーションが実装スクリプトおよびUNDOスクリプトに表示されます。

- IGNORE: リコメンデーションを無視としてマークします。この設定では、リコメンデーションが実装スクリプトおよびUNDOスクリプトに表示されません。

- REJECT: リコメンデーションを拒否としてマークします。この設定では、リコメンデーションが実装スクリプトおよびUNDOスクリプトに表示されません。

使用上の注意

リコメンデーションを実装する場合は、受入れ済としてマークされている必要があります。デフォルトでは、すべてのリコメンデーションが受入れ済としてみなされ、生成されるすべてのスクリプトに表示されます。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
attribute VARCHAR2(100);
rec_id NUMBER;
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales WHERE promo_id = 10');
DBMS_ADVISOR.EXECUTE_TASK(task_name);

rec_id := 1;
DBMS_ADVISOR.MARK_RECOMMENDATION(task_name, rec_id, 'REJECT');
END;
/

QUICK_TUNEプロシージャ

このプロシージャは、分析を実行し、単一のSQL文のリコメンデーションを生成します。

これにより、指定したSQL文の分析に必要なすべての処理を短縮できます。この操作によって、指定したタスク名を使用したタスクが作成されます。このタスクは、指定したアドバイザ・タスク・テンプレートを使用して作成されます。最終的に、タスクが実行され、結果がリポジトリに保存されます。

構文

DBMS_ADVISOR.QUICK_TUNE (
advisor_name           IN VARCHAR2,
task_name              IN VARCHAR2,
attr1                  IN CLOB,
attr2                  IN VARCHAR2 := NULL,
attr3                  IN NUMBER := NULL,
task_or_template       IN VARCHAR2 := NULL);

パラメータ

表19-28 QUICK_TUNEプロシージャのパラメータ

パラメータ

説明

advisor_name

分析を実行するアドバイザの名前。

task_name

タスクの名前。

attr1

CLOB変数の形式でのアドバイザ固有の属性。

attr2

VARCHAR2変数の形式でのアドバイザ固有の属性。

attr3

NUMBERの形式でのアドバイザ固有の属性。

task_or_template

既存のタスクまたはタスク・テンプレートの、オプションのタスク名。

使用上の注意

ユーザーが指定する場合は、最終的なリコメンデーションをプロシージャによって実装できます。

タスクは指定したSQLアクセス・アドバイザのタスク・テンプレートまたは組込みのデフォルトのSQLACCESS_GENERALテンプレートのいずれかを使用して作成されます。ワークロードには指定した文のみが格納され、すべてのタスク・パラメータはデフォルトに設定されます。

attr1はチューニングする単一のSQL文にする必要があります。SQLアクセス・アドバイザの場合、attr2は単一の文を実行するユーザーになります。省略した場合は現行のユーザーが使用されます。

例

DECLARE
task_name VARCHAR2(30);
BEGIN
task_name := 'My Task';

DBMS_ADVISOR.QUICK_TUNE(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_name,
'SELECT AVG(amount_sold) FROM sh.sales WHERE promo_id=10');
END;
/

RESET_SQLWKLDプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、ワークロードを初期開始ポイントにリセットします。これにより、すべてのジャーナル・メッセージ、ログ・メッセージが削除され、必要な変動および利用統計情報が再計算されます。

構文

DBMS_ADVISOR.RESET_SQLWKLD (
workload_name        IN VARCHAR2);

パラメータ

表19-29 RESET_SQLWKLDプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。

使用上の注意

RESET_SQLWKLDは、SQL文の追加や削除などのワークロードを調整してから実行する必要があります。

例

DECLARE
workload_name VARCHAR2(30);
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales WHERE promo_id = 10');

DBMS_ADVISOR.RESET_SQLWKLD(workload_name);
END;
/

RESET_TASKプロシージャ

このプロシージャは、指定したタスクのメタデータを再初期化します。タスクの状態はINITIALに設定されます。

構文

DBMS_ADVISOR.RESET_TASK (
task_name          IN VARCHAR2);

パラメータ

表19-30 RESET_TASKプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するタスク名。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.EXECUTE_TASK(task_name);
DBMS_ADVISOR.RESET_TASK(task_name);
END;
/

SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、SQLワークロード・オブジェクトまたはSQLワークロード・オブジェクト・テンプレート内のユーザー・パラメータのデフォルト値を変更します。ユーザー・パラメータは、ワークロード・コレクション、チューニングの決定およびレポートに影響を及ぼす様々な属性を格納する単一の変数です。パラメータのデフォルト値を変更すると、ワークロード・オブジェクトの作成時に新しい値が継承されます。

構文

DBMS_ADVISOR.SET_DEFAULT_SQLWKLD_PARAMETER (
parameter            IN VARCHAR2,
value                IN VARCHAR2);

DBMS_ADVISOR.SET_DEFAULT_SQLWKLD_PARAMETER (
parameter            IN VARCHAR2,
value                IN NUMBER);

パラメータ

表19-31 SET_DEFAULT_SQLWKLD_PARAMETERプロシージャのパラメータ

パラメータ

説明

parameter

変更するデータ・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、ワークロード・オブジェクト・タイプに一意ですが、すべてのワークロード・オブジェクト・タイプに一意である必要はありません。様々なオブジェクト・タイプで、様々な目的において同一のパラメータ名を使用できます。

value

指定したパラメータの値。値は文字列または数値で指定できます。値がDBMS_ADVISOR.DEFAULTの場合、デフォルト値にリセットされます。

使用上の注意

パラメータが影響を及ぼすのは、ワークロード・コレクションを変更する操作に限られます。そのため、新しいSQL文をワークロードにインポートまたは追加する前にパラメータを設定する必要があります。データをワークロードに配置した後にパラメータを設定しても、既存のデータに影響を与えません。

例

BEGIN
DBMS_ADVISOR.SET_DEFAULT_SQLWKLD_PARAMETER('VALID_TABLE_LIST','SH.%');
END;
/

SET_DEFAULT_TASK_PARAMETERプロシージャ

このプロシージャは、タスクまたはテンプレート内のユーザー・パラメータのデフォルト値を変更します。ユーザー・パラメータは、アドバイザの操作に様々な影響を与える、様々な属性を格納する単一の変数です。パラメータのデフォルト値を変更すると、タスクの作成時に新しい値が継承されます。

デフォルトのタスクは、通常のタスクとは異なります。デフォルト値は、新しく作成したタスクに挿入される初期値ですが、SET_TASK_PARAMETERを指定してタスク・パラメータを設定すると、ローカル値のみが設定されます。したがって、SET_DEFAULT_TASK_PARAMETERは、既存のタスクに影響を与えません。

構文

DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER (
advisor_name        IN VARCHAR2
parameter           IN VARCHAR2,
value               IN VARCHAR2);

DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER (
advisor_name        IN VARCHAR2
parameter           IN VARCHAR2,
value               IN NUMBER);

パラメータ

表19-32 SET_DEFAULT_TASK_PARAMETERプロシージャのパラメータ

パラメータ

説明

advisor_name

DBA_ADVISOR_DEFINITIONSビューに定義されているとおりに、一意のアドバイザ名を指定します。

parameter

変更するタスク・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、タスク・タイプに一意ですが、すべてのタスク・タイプに一意である必要はありません。様々なタスク・タイプで、同一のパラメータ名を様々な目的に使用できます。

value

指定したタスク・パラメータの値。値は文字列または数値で指定できます。

例

BEGIN
DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER(DBMS_ADVISOR.SQLACCESS_ADVISOR,
'VALID_TABLE_LIST', 'SH.%');
END;
/

SET_SQLWKLD_PARAMETERプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、SQLワークロード・オブジェクトまたはSQLワークロード・オブジェクト・テンプレート内のユーザー・パラメータを変更します。ユーザー・パラメータは、ワークロード・コレクション、チューニングの決定およびレポートに影響を及ぼす様々な属性を格納する単一の変数です。

構文

DBMS_ADVISOR.SET_SQLWKLD_PARAMETER (
workload_name        IN VARCHAR2,
parameter            IN VARCHAR2,
value                IN VARCHAR2);

DBMS_ADVISOR.SET_SQLWKLD_PARAMETER (
workload_name        IN VARCHAR2,
parameter            IN VARCHAR2,
value                IN NUMBER);

パラメータ

表19-33 SET_SQLWKLD_PARAMETERプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。

parameter

変更するデータ・パラメータの名前。パラメータ名は大/小文字が区別されません。

value

指定したパラメータの値。値は文字列または数値で指定できます。値がDBMS_ADVISOR.DEFAULTの場合、デフォルト値にリセットされます。

使用上の注意

パラメータが影響を及ぼすのは、ワークロード・コレクションを変更する操作に限られます。そのため、新しいSQL文をワークロードにインポートまたは追加する前にパラメータを設定する必要があります。データをワークロードに配置した後にパラメータを設定しても、既存のデータに影響を与えません。

例

DECLARE
workload_name VARCHAR2(30);
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name, 'VALID_TABLE_LIST','SH.%');
END;
/

SET_TASK_PARAMETERプロシージャ

このプロシージャは、アドバイザ・タスクまたはテンプレート内のユーザー・パラメータを変更します。ユーザー・パラメータは、ワークロード・コレクション、チューニングの決定およびレポートに影響を及ぼす様々な属性を格納する単一の変数です。

構文

DBMS_ADVISOR.SET_TASK_PARAMETER (
task_name           IN VARCHAR2
parameter           IN VARCHAR2,
value               IN VARCHAR2);

DBMS_ADVISOR.SET_TASK_PARAMETER (
task_name           IN VARCHAR2
parameter           IN VARCHAR2,
value               IN NUMBER);

パラメータ

表19-34 SET_TASK_PARAMETERプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するアドバイザ・タスク名。

parameter

変更するタスク・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、タスク・タイプに一意ですが、すべてのタスク・タイプに一意である必要はありません。様々なタスク・タイプで、同一のパラメータ名を様々な目的に使用できます。

value

指定したタスク・パラメータの値。値は文字列または数値で指定できます。値がDEFAULTの場合、デフォルト値にリセットされます。

使用上の注意

タスクは、初期状態にある場合を除いて変更できません。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。このプロシージャの使用方法の詳細は、アドバイザ固有のマニュアルを参照してください。

SQLアクセス・アドバイザのタスク・パラメータ

表19-35に、SQLアクセス・アドバイザのタスク・パラメータを示します。

表19-35 SQLアクセス・アドバイザのタスク・パラメータ

パラメータ

説明

ANALYSIS_SCOPE

分析時に考慮するチューニング結果を指定するカンマ区切りリスト。

有効な値は、次のとおりです。

- ALL。INDEX、MVIEW、TABLEおよびPARTITIONを指定するための短縮名。

- EVALUATION。指定したワークロードの読取り専用の評価を実行します。新しいリコメンデーションは作成されません。単独でのみ指定できます。

- INDEX。SQLアクセス・アドバイザで索引構成の変更を推奨できます。

- MVIEW。SQLアクセス・アドバイザでマテリアライズド・ビューおよびログの変更を推奨できます。

- PARTITION。SQLアクセス・アドバイザでパーティションのオプションを推奨できます。これは、INDEX、MVIEWおよびTABLEオプションと組み合せて使用します。

- TABLE。SQLアクセス・アドバイザで元表のリコメンデーションを作成できます。このリリースでは、元表のリコメンデーションはパーティションのみです。

新しいキーワードを使用すると、次の組合せが有効となります。

- INDEX

- MVIEW

- INDEX、PARTITION

- INDEX、MVIEW、PARTITION

- INDEX、TABLE、PARTITION

- MVIEW、PARTITION

- MIVEW、TABLE、PARTITION

- INDEX、MVIEW、TABLE、PARTITION

- TABLE、PARTITION

- EVALUATION

デフォルト値はINDEXです。データ・タイプはSTRINGLISTです。

CREATION_COST

TRUE(デフォルト)に設定すると、SQLアクセス・アドバイザはアクセス構造(索引またはマテリアライズド・ビュー)の作成のコストを、問合せの頻度および問合せ実行時間の向上の可能性に照らして比較検討します。FALSEに設定すると、作成のコストは無視されます。データ・タイプはSTRINGです。

DAYS_TO_EXPIRE

現行のSQLアクセス・アドバイザのタスクの有効期限を日単位で指定します。この値は最終更新日付に関連します。タスクの期限が切れると、自動パージ操作による削除の候補となります。

SQLアクセス・アドバイザのタスクの有効期限を日単位で指定します。この値は最終更新日付に関連します。データ・タイプはNUMBERです。

タスクの期限が切れると、自動パージ操作による削除の候補となります。

有効な値は、次のとおりです。

- 0から2147483647の範囲の整数

- ADVISOR_UNLIMITED

- ADVISOR_UNUSED

デフォルト値は30です。

DEF_EM_TEMPLATE

Enterprise ManagerのSQLアクセス・アドバイザ・ウィザードによって初期値が読み取られるデフォルトのタスクまたはテンプレート名を格納します。

デフォルト値はSQLACCESS_EMTASKです。データ・タイプはSTRINGです。

DEF_INDEX_OWNER

新しい索引リコメンデーションのデフォルトの所有者を指定します。スクリプトの作成時に、この値が索引名の修飾に使用されます。

有効な値は、次のとおりです。

- 既存のスキーマ名。引用された識別子がサポートされます。

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGです。

DEF_INDEX_TABLESPACE

新しい索引リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

有効な値は、次のとおりです。

- 既存の表領域名。引用された識別子がサポートされます。

- ADVISOR_UNUSED。スクリプトに索引の表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGです。

DEF_MVIEW_OWNER

新しいマテリアライズド・ビュー・リコメンデーションのデフォルトの所有者を指定します。スクリプトの作成時に、この値がマテリアライズド・ビュー名の修飾に使用されます。

有効な値は、次のとおりです。

- 既存のスキーマ名。引用された識別子がサポートされます。

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGです。

DEF_MVIEW_TABLESPACE

新しいマテリアライズド・ビュー・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

有効な値は、次のとおりです。

- 既存の表領域名。引用された識別子がサポートされます。

- ADVISOR_UNUSED。スクリプトにマテリアライズド・ビュー・ログの表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGです。

DEF_MVLOG_TABLSPACE

新しいマテリアライズド・ビュー・ログ・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

有効な値は、次のとおりです。

- 既存の表領域名。引用された識別子がサポートされます。

- ADVISOR_UNUSED。スクリプトにマテリアライズド・ビュー・ログの表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGです。

DEF_PARTITION_TABLESPACE

新しいパーティション・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

有効な値は、次のとおりです。

- 既存の表領域名。引用された識別子がサポートされます。

- ADVISOR_UNUSED。スクリプトにマテリアライズド・ビューの表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGです。

DML_VOLATILITY

TRUEに設定すると、SQLアクセス・アドバイザは、リコメンデーションの判断において索引メンテナンスとマテリアライズド・ビューのリフレッシュの影響を考慮します。これにより、頻繁に更新される列や表を含むアクセス構造リコメンデーションが制限されます。たとえば、列に大量のDML文がある場合、その列にはビットマップ索引よりもBツリー索引が好ましいと考えられます。このプロセスの効率を高めるため、ワークロードにはアプリケーションの更新動作を表すDML (insert/update/delete/merge/direct path inserts)文を含める必要があります。データ・タイプはSTRINGです。

関連パラメータrefresh_modeを参照してください。

END_TIME

SQL文の選択の終了時刻を指定します。文が指定された時刻までに実行されなかった場合、処理されません。

各日付は、MM-DD-YYYY HH24:MI:SSの標準Oracle形式である必要があります。ここで、

- DDは数値の日付です。

- MMは数値の月です。

- YYYYは数値の年です。

- HHは24時間形式での時間です。

- MIは分です。

- SSは秒です。

データ・タイプはSTRINGです。

EVALUATION_ONLY

このパラメータは、下位互換性を維持する目的で保持されています。すべての値が変換され、ANALYSIS_SCOPEタスク・パラメータに格納されます。

TRUEに設定すると、SQLアクセス・アドバイザはワークロードを分析しますが、現行の構成がそれをどの程度サポートしているかについてコメントするだけです。チューニング・リコメンデーションは作成されません。

有効な値は、次のとおりです。

- FALSE

- TRUE

デフォルト値はFALSEです。データ・タイプはSTRINGです。

EXECUTION_TYPE

このパラメータは、下位互換性を維持する目的で保持されています。すべての値が変換され、ANALYSIS_SCOPEタスク・パラメータに格納されます。

変換される値は、次のとおりです。

- FULL → FULL

- INDEX_ONLY → INDEX

- MVIEW_ONLY → MVIEW

- MVIEW_LOG_ONLY → MVIEW_LOG_ONLY

望ましいリコメンデーションの種類。有効な値は、次のとおりです。

- FULL。サポートされるすべてのリコメンデーションの種類が考慮されます。

- INDEX_ONLY。SQLアクセス・アドバイザはリコメンデーションとして、索引ソリューションのみを考慮します。

- MVIEW_ONLY。SQLアクセス・アドバイザはリコメンデーションとして、マテリアライズド・ビューおよびマテリアライズド・ビュー・ログのソリューションを考慮します。

- MVIEW_LOG_ONLY。SQLアクセス・アドバイザはリコメンデーションとして、マテリアライズド・ビュー・ログ・ソリューションのみを考慮します。

デフォルト値はFULLです。データ・タイプはSTRINGLISTです。

IMPLEMENT_EXIT_ON_ERROR

IMPLEMENT_TASK操作の実行時、このパラメータによって、アクションの実装に失敗した場合の動作が制御されます。TRUEに設定すると、IMPLEMENT_TASKは、最初の予期しないエラーの発生時に停止します。

有効な値は、次のとおりです。

- TRUE

- FALSE

デフォルト値はTRUEです。データ・タイプはSTRINGです。

INDEX_NAME_TEMPLATE

新しい索引名を構成する方法を指定します。

テンプレートからTASK_IDを省略すると、同時実行の2つのSQLアクセス・アドバイザのタスクによって生成される名前が競合し、好ましくない影響を及ぼすことがあります。そのため、テンプレートにはTASK_IDを含めることをお薦めします。構成した名前の最大長は30文字です。

有効なキーワードは、次のとおりです。

- 22文字までの任意のリテラル値。

- TABLE。親の表の名前を索引名に代入します。名前が長すぎる場合、収まるように切り詰められます。

- TASK_ID。現行のタスク識別子番号を16進形式で挿入します。

- SEQ。順序番号を16進形式で挿入します。この数値は一意性を確保するために使用されるため、必須トークンです。

デフォルトのテンプレートは、table_IDX$$_task_idsequenceです。データ・タイプはSTRINGです。

INVALID_ACTION_LIST

SQLワークロード・オブジェクトを処理できないアクションの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

アクションは任意の文字列です。アクションを引用符で囲まない場合、大文字に変更され、先頭と末尾のスペースが取り除かれます。アクション文字列の正確性については調査されません。

タスクの実行中にSQL文のアクションがアクション・リストの名前と一致する場合、そのアクションは実行中のタスクでは処理されません。アクション名は大/小文字が区別されます。

有効な値は、次のとおりです。

- 単一のアクション

- カンマ区切りアクション・リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

INVALID_MODULE_LIST

SQLワークロード・オブジェクトを処理できないモジュールの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

モジュールは任意の文字列です。モジュールを引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。モジュール文字列の正確性については調査されません。

タスクの実行中にSQL文のモジュールがモジュール・リストの名前と一致する場合、そのモジュールは実行中のタスクでは処理されません。モジュール名は大/小文字が区別されます。

有効な値は、次のとおりです。

- 単一のアプリケーション

- カンマ区切りモジュール・リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

INVALID_SQLSTRING_LIST

SQLワークロード・オブジェクトを処理できないテキスト文字列の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた値をサポートしています。

SQL文字列は任意の文字列です。文字列を引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。SQL文字列の正確性については調査されません。

タスクの実行中に、SQL文にSQL文字列リストの文字列が含まれている場合、そのSQL文は実行中のタスクでは処理されません。

有効な値は、次のとおりです。

- 単一の文字列

- カンマ区切り文字列リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

INVALID_USERNAME_LIST

SQLワークロード・オブジェクトを処理できないユーザー名の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

タスクの実行中にSQL文のユーザー名がユーザー名リストの名前と一致する場合、そのユーザー名は実行中のタスクでは処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。

有効な値は、次のとおりです。

- 単一のユーザー名

- カンマ区切りのユーザー名リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

JOURNALING

ジャーナル(DBA_ADVISOR_JOURNALおよびUSER_ADVISOR_JOURNALビュー)へのメッセージのロギングを制御します。設定の値を大きくするほど、ジャーナルにロギングされる情報量が増えます。

有効な値は、次のとおりです。

- UNUSED: ジャーナル・メッセージなし

- FATAL: 致命的な状況の説明

- ERROR: エラーの説明

- WARNING: 警告の説明

- INFORMATION: 情報メッセージ

- INFORMATION2: 共通の情報

- INFORMATION3: 共通の情報

- INFORMATION4: 共通の情報

- INFORMATION5: 共通の情報

- INFORMATION6: 共通の情報

各ジャーナル値は、該当するレベル以下のレベルの記録されたすべてのメッセージを表します。たとえば、WARNINGを選択すると、ERRORおよびFATALとともにWARNINGとマークされたメッセージもリポジトリに記録されます。

INFORMATION6は最大限のメッセージの記録を表し、UNUSEDは最小限の記録を表します。

デフォルト値はINFORMATIONです。データ・タイプはNUMBERです。

LIMITED_PARTITION_SCHEMES

ユーザーは、調査するパーティション・スキームの数をパーティション・エキスパートが削減するように推奨できます。これによって、アドバイザのランタイムを短縮することができます。

有効な値は、次のとおりです。

- 1から10の範囲の整数

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはNUMBERです。

MAX_NUMBER_PARTITIONS

アドバイザによって元表、索引またはマテリアライズド・ビューに対して推奨されるパーティションの数を制限します。

有効な値は、次のとおりです。

- 1から4294967295の範囲の整数

- ADVISOR_UNLIMITED

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNLIMITEDです。データ・タイプはNUMBERです。

MODE

アクセス・アドバイザが分析時に実行するモードを指定します。

有効な値は、次のとおりです。

- LIMITED: アドバイザに候補のリコメンデーションの検索領域を制限することによって高速処理を試みるように指示しますが、それに応じて結果の品質が低下することがあります。

- COMPREHENSIVE: アドバイザに大量の候補のプールを検索するように指示します。実行に長時間かかる可能性がありますが、結果のリコメンデーションの品質は最高になります。

デフォルト値はCOMPREHENSIVEです。データ・タイプはSTRINGです。

MVIEW_NAME_TEMPLATE

新しいマテリアライズド・ビュー名を構成する方法を指定します。

テンプレートからTASK_IDを省略すると、同時実行の2つのSQLアクセス・アドバイザのタスクによって生成される名前が競合し、好ましくない影響を及ぼすことがあります。そのため、テンプレートにはTASK_IDを含めることをお薦めします。

形式はキーワード・トークンとリテラルの任意の組合せです。ただし、構成した名前の最大長は30文字です。

有効なトークンは、次のとおりです。

- 22文字までの任意のリテラル値。

- TASK_ID。現行のタスク識別子番号を16進形式で挿入します。

- SEQ。順序番号を16進形式で挿入します。この数値は一意性を確保するために使用されるため、必須トークンです。

デフォルトのテンプレートは、MV$$_task_idsequenceです。データ・タイプはSTRINGです。

ORDER_LIST

このパラメータは非推奨となっています。

分析処理時に、アクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。絶対自然順序を決定するため、アクセス・アドバイザはORDER_LIST値を使用して、ワークロードをソートします。複数の順序キーはカンマで区切る必要があります。

有効な値は、次のとおりです。

- BUFFER_GETS。SQL文のバッファ読取りカウント値を使用して順序を設定します。

- CPU_TIME。SQL文のCPU時間値を使用して順序を設定します。

- DISK_READS。SQL文のdisk-readカウント値を使用して順序を設定します。

- ELAPSED_TIME。SQL文の経過時間値を使用して順序を設定します。

- EXECUTIONS。SQL文の実行頻度値を使用して順序を設定します。

- OPTIMIZER_COST。SQL文のオプティマイザ・コスト値を使用して順序を設定します。

- I/O。SQL文の入出力カウント値を使用して順序を設定します。

- PRIORITY。ユーザー指定のビジネス優先順位値を使用して順序を設定します。

すべての値は降順でアクセスされ、値が大きいほど、優先度が高いものとみなされます。

デフォルト値はPRIORITY、OPTIMIZER_COSTです。データ・タイプはSTRINGLISTです。

PARTITION_NAME_TEMPLATE

新しいパーティション名を構成する方法を指定します。形式はキーワード・トークンとリテラルの任意の組合せです。ただし、構成した名前の最大長は30文字です。

有効なトークンは、次のとおりです。

- 22文字までの任意のリテラル値。

- table。親の表の名前をパーティション名に代入します。名前が長すぎる場合、収まるように切り詰められます。

- task_id。現行のタスク識別子番号を16進形式で挿入します。

- sequence。順序番号を16進形式で挿入します。この数値は一意性を確保するために使用されるため、必須トークンです。

デフォルトのテンプレートは、PTN$$_table_task_idsequenceです。データ・タイプはSTRINGです。

PARTITIONING_GOAL

パーティション・リコメンデーションの作成に使用する方法を指定します。有効な値の1つに、PERFORMANCEがあり、これはデフォルトです。データ・タイプはSTRINGです。

PARTITIONING_TYPES

使用されるパーティションのタイプを指定します。有効な値はRANGEおよびHASHです。データ・タイプはSTRINGです。

RANKING_MEASURE

分析処理時に、SQLアクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。SQLアクセス・アドバイザは、絶対自然順序を決定するために、RANKING_MEASURE値を使用してワークロードをソートします。複数の順序キーはカンマで区切る必要があります。

有効な値は、次のとおりです。

- BUFFER_GETS。SQL文のバッファ読取りカウント値を使用して順序を設定します。

- CPU_TIME。SQL文のCPU時間値を使用して順序を設定します。

- DISK_READS。SQL文のdisk-readカウント値を使用して順序を設定します。

- ELAPSED_TIME。SQL文の経過時間値を使用して順序を設定します。

- EXECUTIONS。SQL文の経過時間値を使用して順序を設定します。

- OPTIMIZER_COST。SQL文のオプティマイザ・コスト値を使用して順序を設定します。

- PRIORITY。ユーザー指定のビジネス優先順位値を使用して順序を設定します。

すべての値は降順でアクセスされ、値が大きいほど、優先度が高いものとみなされます。

デフォルト値はPRIORITY、OPTIMIZER_COSTです。データ・タイプはSTRINGLISTです。

RECOMMEND_MV_EXACT_TEXT_MATCH

候補のマテリアライズド・ビューについて考慮する際は、このパラメータにTRUEが含まれている場合にのみ完全なテキスト一致ソリューションが含まれます。

有効な値は、次のとおりです。

- TRUE

- FALSE

デフォルト値はTRUEです。データ・タイプはSTRINGです。

RECOMMENDED_TABLESPACES

SQLアクセス・アドバイザでパーティション・スキームに対する最適な表領域を推奨できます。これを設定しなかった場合、SQLアクセス・アドバイザではパーティション・メソッドのみの推奨が行われ、物理的な表領域についての推奨は行われません。

有効な値は、次のとおりです。

- TRUE

- FALSE(デフォルト)

データ・タイプはSTRINGです。

REFRESH_MODE

マテリアライズド・ビューをON_DEMANDでリフレッシュするか、ON_COMMITでリフレッシュするかを指定します。これは、パラメータdml_volatilityをTRUEに設定した場合に、マテリアライズド・ビューのリフレッシュの影響を評価するために使用します。

有効な値は、次のとおりです。

- ON_DEMAND

- ON_COMMIT

デフォルト値はON_DEMANDです。データ・タイプはSTRINGです。

REPORT_DATE_FORMAT

これはデフォルトの日付および時刻の書式テンプレートです。デフォルトの書式はDD/MM/YYYYHH24:MIです。データ・タイプはSTRINGです。

SHOW_RETAINS

実装スクリプトおよびSQLアクセス・アドバイザ・ウィザード内のRETAINアクションの表示を制御します。

有効な値は、次のとおりです。

- TRUE

- FALSE

デフォルト値はTRUEです。データ・タイプはSTRINGです。

SQL_LIMIT

分析するSQL文の数を指定します。他のすべてのフィルタが適用された後に、SQL_LIMITフィルタが適用されます。たとえば、表foo.barを参照する文のみを受け入れる場合、これらの文にはSQL_LIMIT値のみが適用されます。

パラメータORDER_LISTと一緒に使用すると、SQLアクセス・アドバイザは指定されたソート・キーに従って文を順序付けすることによって、最も優先度が高いSQL文を処理します。

有効な値は、次のとおりです。

- 1から2147483647の範囲の整数

- ADVISOR_UNLIMITED

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはNUMBERです。

START_TIME

SQL文の選択の開始時刻を指定します。文が指定された時刻までに実行されなかった場合、処理されません。

各日付は、MM-DD-YYYY HH24:MI:SSの標準Oracle形式である必要があります。ここで、

- DDは数値の日付です。

- MMは数値の月です。

- YYYYは数値の年です。

- HHは24時間形式での時間です。

- MIは分です。

- SSは秒です。

データ・タイプはSTRINGです。

STORAGE_CHANGE

SQLアクセス・アドバイザのリコメンデーションによって消費可能な領域調整の量を格納します。ワークロードの有効範囲がFULLとしてマークされている場合にのみ、0(ゼロ)または負の値を指定できます。

SQLアクセス・アドバイザが一連のリコメンデーションを生成した際に、結果の物理構造が配分された領域に収まる必要があります。領域の配分は、現在既存のアクセス構造によって使用されている領域に、STORAGE_CHANGE値を加算して計算されます。負のSTORAGE_CHANGE値によって、SQLアクセス・アドバイザは領域縮小要求のため、既存の構造を削除することがあります。

有効な値は、次のとおりです。

- 負の値、0、正の値を含むすべての有効な整数

デフォルト値はADVISOR_UNLIMITEDです。データ・タイプはNUMBERです。

TIME_LIMIT

SQLアクセス・アドバイザで分析処理の実行に使用される時間を分単位で指定します。指定したリコメンデーションの品質にSQLアクセス・アドバイザが達した場合、またはすべての入力データが分析された場合、残りの時間に関係なく処理は終了します。

有効な値は、次のとおりです。

- 1から10,000の範囲の整数

- ADVISOR_UNLIMITED

デフォルト値は、720(12時間)です。データ・タイプはNUMBERです。

ADVISOR_UNLIMITEDを指定すると、パラメータを最大値の10,000(約1週間)に設定した場合と同じ効果があります。SQLアクセス・アドバイザは、10,000分を超えて稼働することはありません。

VALID_ACTION_LIST

SQLワークロード・オブジェクトを処理できるアクションの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

アクションは任意の文字列です。アクションを引用符で囲まない場合、大文字に変更され、先頭と末尾のスペースが取り除かれます。アクション文字列の正確性については調査されません。

タスクの実行中にSQL文のアクションがアクション・リストの名前と一致しない場合、そのアクションはタスクで実行されません。アクション名は大/小文字が区別されます。

有効な値は、次のとおりです。

- 単一のアクション

- カンマ区切りアクション・リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

VALID_MODULE_LIST

SQLワークロード・オブジェクトを処理できるアプリケーション・モジュールの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

モジュールは任意の文字列です。モジュールを引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。モジュール文字列の正確性については調査されません。

タスクの実行中に、SQL文のモジュールがモジュール・リストの名前と一致しない場合、そのモジュールは実行中のタスクでは処理されません。モジュール名は大/小文字が区別されます。

有効な値は、次のとおりです。

- 単一のアプリケーション

- カンマ区切りモジュール・リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

VALID_SQLSTRING_LIST

SQLワークロード・オブジェクトを処理できるテキスト文字列の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

SQL文字列は任意の文字列です。文字列を引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。SQL文字列の正確性については調査されません。

タスクの実行中に、SQL文にSQL文字列リストの文字列が含まれない場合、そのSQL文は実行中のタスクでは処理されません。

有効な値は、次のとおりです。

- 単一の文字列

- カンマ区切り文字列リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

VALID_TABLE_LIST

チューニング可能な表の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用された識別子をサポートしています。表にはワイルドカード仕様がサポートされています。デフォルト値はユーザーの範囲内のすべての表がチューニング可能です。サポートされるワイルドカード文字は%です。%ワイルドカードは、連続する任意の文字に一致します。

SQL文の処理時に、有効な表のリストに少なくとも1つの参照される表が指定されていないと受け入れられません。リストを使用しない場合、SQL文のすべての表の参照が有効であるとみなされます。

表の参照の有効な構文は、次のとおりです。

- schema.table

- schema

- schema.%(schemaと同じ)

- カンマ区切りアクション・リスト

- ADVISOR_UNUSED

有効な値は、次のとおりです。

- 単一の表参照

- カンマ区切り参照リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはTABLELISTです。

VALID_USERNAME_LIST

SQLワークロード・オブジェクトを処理できるユーザー名の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

タスクの実行中にSQL文のユーザー名がユーザー名リストの名前と一致しない場合、そのユーザー名は実行中のタスクでは処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。

有効な値は、次のとおりです。

- 単一のユーザー名

- カンマ区切りのユーザー名リスト

- ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ・タイプはSTRINGLISTです。

WORKLOAD_SCOPE

ワークロードが表すアプリケーションの適用範囲のレベルを指定します。設定可能な値はFULLおよびPARTIALです。

FULL ワークロードに、目的の表に関連するすべてのアプリケーションSQL文を格納する場合に使用する必要があります。

PARTIAL(デフォルト)ワークロードに、目的の表に関連するアプリケーションSQL文の完全な表現に満たないものを格納する場合に使用する必要があります。

データ・タイプはSTRINGです。

セグメント・アドバイザのパラメータ

表19-36に、セグメント・アドバイザでSET_TASK_PARAMETERプロシージャを使用して設定できる入力タスク・パラメータを示します。

表19-36 セグメント・アドバイザのタスク・パラメータ

パラメータ

説明

MODE

分析に使用するデータ。デフォルト値はCOMPREHENSIVEで、有効な値は次のとおりです。

- LIMITED: 自動ワークロード・リポジトリで使用可能な統計情報に限定される分析。

- COMPREHENSIVE: サンプリングと自動ワークロード・リポジトリ統計情報に基づく分析。

TIME_LIST

アドバイザが実行する必要がある時間制限。秒単位で指定し、有効な値はUNLIMITED (デフォルト)です。

RECOMMEND_ALL

すべてのセグメントに対するリコメンデーションを生成するかどうかを指定します。

デフォルト値はTRUEです。TRUEに設定すると、ユーザーによって指定されたすべてのセグメントに関するリコメンデーションを生成します。FALSEに設定すると、縮小可能なオブジェクトのみに関するリコメンデーションを生成します。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
BEGIN
task_name := 'My Task';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.SET_TASK_PARAMETER(task_name, 'VALID_TABLELIST',
'SH.%,SCOTT.EMP');
END;
/

UNDOアドバイザのタスク・パラメータ

表19-37に、UNDOアドバイザでSET_TASK_PARAMETERプロシージャを使用して設定できる入力タスク・パラメータを示します。

表19-37 UNDOアドバイザのタスク・パラメータ

パラメータ

説明

TARGET_OBJECTS

システムのUNDO表領域。デフォルト値はなく、有効な値はUNDO_TBSです。

START_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を開始する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

END_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を終了する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

BEGIN_TIME_SEC

開始時間から現在までの秒数。システムが分析を実行する時間を示します。BEGIN_TIME_SECは、END_TIME_SECより大きい必要があります。デフォルト値はなく、有効な値は正の整数です。

END_TIME_SEC

終了時間から現在までの秒数。END_TIME_SECは、BEGIN_TIME_SECより大きい必要があります。デフォルト値はなく、有効な値は正の整数です。

例

DECLARE
tname  VARCHAR2(30);
oid    NUMBER;
BEGIN
DBMS_ADVISOR.CREATE_TASK('Undo Advisor', tid, tname, 'Undo Advisor Task');
DBMS_ADVISOR.CREATE_OBJECT(tname, 'UNDO_TBS', null, null, null, 'null', oid);
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'TARGET_OBJECTS', oid);
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'START_SNAPSHOT', 1);
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'END_SNAPSHOT', 2);
DBMS_ADVISOR.EXECUTE_TASK(tname);
END;
/

自動データベース診断モニター(ADDM)のタスク・パラメータ

表19-38に、ADDMでSET_TASK_PARAMETERプロシージャを使用して設定できる入力タスク・パラメータを示します。これらのパラメータの使用方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

表19-38 ADDMのタスク・パラメータ

パラメータ

説明

START_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を開始する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

END_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を終了する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

DB_ID

START_SNAPSHOTおよびEND_SNAPSHOTのデータベース。デフォルト値は現行のデータベースIDです。

INSTANCE

START_SNAPSHOTおよびEND_SNAPSHOTのインスタンス。デフォルト値は0またはUNUSEDで、有効な値はすべての正の整数です。デフォルトでは、すべてのインスタンスが分析されます。

INSTANCES

INSTANCEパラメータが設定されている場合、INSTANCESは無視されます。デフォルト値はUNUSEDで、有効な値は、インスタンス番号のカンマ区切りリスト(1, 3, 5など)です。デフォルトでは、すべてのインスタンスが分析されます。

DBIO_EXPECTED

データベース・ブロックの平均読込み時間(マイクロ秒単位)。デフォルト値は10ミリ秒で、有効な値はシステムによって異なります。

例

次の例では、現行のデータベースおよび19から26の範囲のAWRスナップショットに対してADDMタスクを作成して実行します。この例では、1つのみのデータベースを所有しているか、Oracle RACデータベースを所有しているかに関係なく、すべてのインスタンスを分析します。

DECLARE
tid     NUMBER;
tname VARCHAR2(30) := 'ADDM_TEST';
BEGIN
DBMS_ADVISOR.CREATE_TASK('ADDM', tid, tname, 'my test');
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'START_SNAPSHOT', '19');
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'END_SNAPSHOT', '26');
DBMS_ADVISOR.EXECUTE_TASK(tname);
END;
/

関連項目:

- ADDMの使用方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

- ADDMタスクを作成して実行する方法の詳細は、DBMS_ADDMパッケージの説明を参照してください。

SQLチューニング・アドバイザのタスク・パラメータ

詳細は、DBMS_SQLTUNEパッケージおよび『Oracle Database SQLチューニング・ガイド』を参照してください。

TUNE_MVIEWプロシージャ

このプロシージャは、マテリアライズド・ビューを複数のマテリアライズド・ビューに分解する方法、またはリフレッシュおよびクエリー・リライトの高速化を優先してマテリアライズド・ビューを更新する方法を示します。さらに、マテリアライズド・ビュー・ログを修正する方法やクエリー・リライトを有効にする方法も示します。

構文

DBMS_ADVISOR.TUNE_MVIEW (
task_name IN OUT VARCHAR2,
mv_create_stmt IN [CLOB | VARCHAR2]);

パラメータ

表19-39 TUNE_MVIEWプロシージャのパラメータ

パラメータ

説明

task_name

カタログ・ビューで結果を検索するためのタスク名。指定しない場合は、システムによって名前が生成され、戻されます。

mv_create_stmt

元のマテリアライズド・ビュー作成文。

関連項目:
TUNE_MVIEWプロシージャの使用方法の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

使用上の注意

TUNE_MVIEWを実行すると、2つの一連の出力結果が生成されますが、一方はCREATE実装に対するもので、もう一方はCREATE MATERIALIZED VIEW実装の取消しに対するものです。出力結果は、USER_TUNE_MVIEWビューおよびDBA_TUNE_MVIEWビューからアクセスできます。さらに、DBMS_ADVISOR.GET_TASK_SCRIPTおよびDBMS_ADVISOR.CREATE_FILEを使用して、TUNE_MVIEW結果をスクリプト・ファイルに出力し、後で実行できます。

USER_TUNE_MVIEWビューとDBA_TUNE_MVIEWビュー

これらのビューは、TUNE_MVIEWプロシージャの実行後に結果を取得します。

表19-40 USER_TUNE_MVIEWビューとDBA_TUNE_MVIEWビュー

列名

列の説明

OWNER

マテリアライズド・ビューの所有者の名前。

TASK_NAME

キーとして一連のリコメンデーションにアクセスするタスク名。

SCRIPT_TYPE

IMPLEMENTATIONまたはUNDOスクリプトの行を示すために使用するリコメンデーションID。

ACTION_ID

コマンド順序番号として使用するアクションID。

STATEMENT

TUNE_MVIEW出力の場合、この列は次の文を表し、REFRESHオプションおよびREWRITEオプションなどの文のプロパティが含まれます。

- CREATE MATERIALIZED VIEW LOG

- ALTER MATERIALIZED VIEW LOG FORCE

- [CREATE | DROP] MATERIALIZED VIEW

例

name VARCHAR2(30);
DBMS_ADVISOR.TUNE_MVIEW.(name, 'SELECT AVG(C1) FROM my_fact_table WHERE c10 = 7');

次の例に、TUNE_MVIEWを使用して、CREATE MATERIALIZED VIEW文を最適化する方法を示します。

NAME VARCHAR2(30) := 'my_tune_mview_task';
EXECUTE DBMS_ADVISOR.TUNE_MVIEW (name, 'CREATE MATERIALIZED VIEW MY_MV
REFRESH FAST AS SELECT C2, AVG(C1) FROM MY_FACT_TABLE WHERE C10 = 7
GROUP BY C2');

次の例のように、USER_TUNE_MVIEWまたはDBA_TUNE_MVIEWを問い合せてCREATE出力結果を表示できます。

SELECT * FROM USER_TUNE_MVIEW WHERE TASK_NAME='my_tune_mview_task' AND
SCRIPT_TYPE='CREATE';

または、次の例のように、出力結果を外部スクリプト・ファイルに保存することもできます。

CREATE DIRECTORY TUNE_RESULTS AS  ''/myscript_dir'' ;
GRANT READ, WRITE ON DIRECTORY TUNE_RESULTS TO PUBLIC;
EXECUTE DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT('my_tune_mview_task'), -
'/homes/tune','my_tune_mview_create.sql');

前述の文によって、CREATE出力結果が/myscript_dir/my_tune_mview_create.sqlに保存されます。

UPDATE_OBJECTプロシージャ

このプロシージャは、既存のタスク・オブジェクトを更新します。タスク・オブジェクトは、一般に、特定のアドバイザの入力データとして使用します。セグメント・アドバイスは、オブジェクト、セグメントまたは表領域レベルで生成できます。

構文

DBMS_ADVISOR.UPDATE_OBJECT (
task_name       IN VARCHAR2
object_id       IN NUMBER,
attr1           IN VARCHAR2 := NULL,
attr2           IN VARCHAR2 := NULL,
attr3           IN VARCHAR2 := NULL,
attr4           IN CLOB := NULL,
attr5           IN VARCHAR2 := NULL);

パラメータ

表19-41 UPDATE_OBJECTプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別する有効なアドバイザ・タスク名。

object_id

アドバイザが割り当てたオブジェクト識別子。

attr1

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr2

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr3

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr4

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr5

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

属性パラメータは、オブジェクト・タイプによって値が異なります。これらのパラメータおよびオブジェクト・タイプの詳細は、『Oracle Database管理者ガイド』を参照してください。

使用上の注意

オブジェクト・レベルの場合、アドバイスはオブジェクトのすべてのパーティションに関して生成されます(オブジェクトがパーティション化されている場合)。アドバイスは依存オブジェクトに伝達されません。セグメント・レベルの場合、アドバイスは表のパーティションまたはサブパーティション、索引、LOB列などの単一のセグメントに関して取得できます。表領域レベルの場合、表領域内のすべてのセグメントに対するターゲット・アドバイスが生成されます。

セグメント・アドバイザの詳細は、『Oracle Database管理者ガイド』を参照してください。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
obj_id NUMBER;
BEGIN
task_name := 'My Task';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CREATE_OBJECT (task_name,'SQL',NULL,NULL,NULL,
'SELECT * FROM SH.SALES',obj_id);
DBMS_ADVISOR.UPDATE_OBJECT (task_name, obj_id,NULL,NULL,NULL,
'SELECT count(*) FROM SH.SALES');
END;
/

UPDATE_REC_ATTRIBUTESプロシージャ

このプロシージャは、リコメンデーションの所有者、名前および表領域を更新します。

構文

DBMS_ADVISOR.UPDATE_REC_ATTRIBUTES (
task_name            IN VARCHAR2
rec_id               IN NUMBER,
action_id            IN NUMBER,
attribute_name       IN VARCHAR2,
value                IN VARCHAR2);

パラメータ

表19-42 UPDATE_REC_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するタスク名。

rec_id

リコメンデーションに割り当てられる、アドバイザによって生成される識別子番号。

action_id

特定のコマンドに割り当てられる、アドバイザによって生成されたアクション識別子。

attribute_name

変更する属性の名前。有効な値は、次のとおりです。

- owner: オブジェクトの新しい所有者。

- name: オブジェクトの新しい名前。

- tablespace: オブジェクトの新しい表領域。

value

リコメンデーション属性の新しい値を指定します。

使用上の注意

タスクが正しく実行されないかぎり、リコメンデーション属性は変更できません。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
workload_name VARCHAR2(30);
attribute VARCHAR2(100);
BEGIN
task_name := 'My Task';
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales WHERE promo_id = 10');
DBMS_ADVISOR.EXECUTE_TASK(task_name);

attribute := 'SH';

DBMS_ADVISOR.UPDATE_REC_ATTRIBUTES(task_name, 1, 3, 'OWNER', attribute);
END;
/

UPDATE_SQLWKLD_ATTRIBUTESプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、SQLワークロード・オブジェクトまたはテンプレートの様々な属性を変更します。

構文

DBMS_ADVISOR.UPDATE_SQLWKLD_ATTRIBUTES (
workload_name        IN VARCHAR2,
new_name             IN VARCHAR2 := NULL,
description          IN VARCHAR2 := NULL,
read_only            IN VARCHAR2 := NULL,
is_template          IN VARCHAR2 := NULL,
how_created          IN VARCHAR2 := NULL);

パラメータ

表19-43 UPDATE_SQLWKLD_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

new_name

新しいワークロード・オブジェクト名。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ワークロードの名前は変更されません。タスク名の長さは30文字までです。

description

新しいワークロードの説明。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、説明は変更されません。名前の長さは256文字までです。

read_only

TRUEに設定すると、変更できません。

is_template

ワークロードをテンプレートとして使用する場合はTRUEに設定します。

how_created

ワークロードの作成を開始したソース・アプリケーション名を示します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ソースは変更されません。

例

DECLARE
workload_name VARCHAR2(30);
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales WHERE promo_id = 10');
DBMS_ADVISOR.UPDATE_SQLWKLD_ATTRIBUTES(workload_name,'New workload name');
END;
/

UPDATE_SQLWKLD_STATEMENTプロシージャ

注意:
Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このプロシージャは、指定したSQLワークロード内の既存のSQL文を更新します。

構文

DBMS_ADVISOR.UPDATE_SQLWKLD_STATEMENT (
workload_name     IN VARCHAR2,
sql_id            IN NUMBER,
application       IN VARCHAR2 := NULL,
action            IN VARCHAR2 := NULL,
priority          IN NUMBER := NULL,
username          IN VARCHAR2 := NULL);

DBMS_ADVISOR.UPDATE_SQLWKLD_STATEMENT (
workload_name     IN VARCHAR2,
search            IN VARCHAR2,
updated           OUT NUMBER,
application       IN VARCHAR2 := NULL,
action            IN VARCHAR2 := NULL,
priority          IN NUMBER := NULL,
username          IN VARCHAR2 := NULL);

パラメータ

表19-44 UPDATE_SQLWKLD_STATEMENTプロシージャのパラメータ

パラメータ

説明

workload_name

既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。

sql_id

文に割り当てられるアドバイザによって生成された識別子番号。すべてのワークロード文を指定するには、定数DBMS_ADVISOR.ADVISOR_ALLを使用します。

updated

検索された更新によって変更された文の数を戻します。

application

SQL文に関連付けるビジネス・アプリケーション名を指定します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

action

文のアプリケーション・アクションを指定します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

priority

SQL文の相対優先度。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

username

SQL文を実行したOracleユーザー名。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

ユーザー名はOracle識別子であるため、username値はデータベースに保存されているとおりに正確に入力する必要があります。たとえば、ユーザーSCOTTが実行中のユーザーである場合、ユーザー識別子SCOTTはすべて大文字で指定する必要があります。データベースでは、ユーザーscottはSCOTTと同じものとして認識されません。

search

無効になっています。

使用上の注意

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

例

DECLARE
workload_name VARCHAR2(30);
updated NUMBER;
id NUMBER;
BEGIN
workload_name := 'My Workload';

DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
100,400,5041,103,640445,680000,2,
1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
FROM sh.sales WHERE promo_id = 10');

SELECT sql_id INTO id FROM USER_ADVISOR_SQLW_STMTS
WHERE workload_name = 'My Workload';

DBMS_ADVISOR.UPDATE_SQLWKLD_STATEMENT(workload_name, id);
END;
/

UPDATE_TASK_ATTRIBUTESプロシージャ

このプロシージャは、タスクまたはタスク・テンプレートの様々な属性を変更します。

構文

DBMS_ADVISOR.UPDATE_TASK_ATTRIBUTES (
task_name          IN VARCHAR2
new_name           IN VARCHAR2 := NULL,
description        IN VARCHAR2 := NULL,
read_only          IN VARCHAR2 := NULL,
is_template        IN VARCHAR2 := NULL,
how_created        IN VARCHAR2 := NULL);

パラメータ

表19-45 UPDATE_TASK_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

task_name

既存のタスクを一意に識別するアドバイザ・タスク名。

new_name

新しいアドバイザ・タスク名。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ワークロードの名前は変更されません。タスク名の長さは30文字までです。

description

新しいタスクの説明。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、説明は変更されません。名前の長さは256文字までです。

read_only

タスクを読取り専用に設定します。設定可能な値はTRUEおよびFALSEです。

値がNULLか、またはADVISOR_UNUSEDが格納されている場合、設定は変更されません。

is_template

タスクをテンプレートとしてマークします。物理的にタスクとテンプレートの違いはありませんが、テンプレートは実行できません。設定可能な値はTRUEおよびFALSEです。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、設定は変更されません。

how_created

タスクの作成を開始したソース・アプリケーション名を示します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ソースは変更されません。

例

DECLARE
task_id NUMBER;
task_name VARCHAR2(30);
BEGIN
task_name := 'My Task';

DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
DBMS_ADVISOR.UPDATE_TASK_ATTRIBUTES(task_name,'New Task Name');
DBMS_ADVISOR.UPDATE_TASK_ATTRIBUTES('New Task Name',NULL,'New description');
END;
/

20 DBMS_ALERT

DBMS_ALERTは、データベース・イベント(アラート)の非同期通知をサポートします。このパッケージおよびデータベース・トリガーを適切に使用することで、アプリケーションは、データベース内で関連する値が変更されるたびに通知を受け取ることができます。

この章では、次の項目について説明します。

- DBMS_ALERTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 制限事項

- 例外

- 使用上の注意

- 例

- DBMS_ALERTサブプログラムの要約

DBMS_ALERTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 制限事項

- 例外

- 使用上の注意

- 例

概要

グラフィック・ツールで、データベース表のデータをグラフ表示する場合を想定します。グラフィック・ツールは、データを読み込んでグラフ表示した後、読み込んだデータに関連するデータベース・アラート(WAITONE)を待機できます。他のユーザーがデータを変更すると、ツールが自動的に起動されます。必要となるのは、データベース表にトリガーを設定することのみであり、この設定によって、トリガーが起動されると必ず信号(SIGNAL)が送信されます。

セキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE権限を付与することで制御できます。このパッケージの先頭部分に、使用するアラート名を制限するためのカバー・パッケージを記述することもできます。この場合は、パッケージではなく、このカバー・パッケージのEXECUTE権限を付与できます。

定数

DBMS_ALERTパッケージでは、表20-1に示す定数が使用されます。

表20-1 DBMS_ALERTの定数

名前

タイプ

値

説明

MAXWAIT

INTEGER

86400000

アラートの最大待機時間です(1000日で、実質的には無期限)。

制限事項

データベース・アラートはコミットを発行するため、Oracle Formsでは使用できません。Oracle Formsがアクティブの状態でストアド・プロシージャをコールする場合の制限については、Oracle Formsのドキュメントを参照してください。

例外

DBMS_ALERTを使用すると、エラー状態のときにアプリケーション・エラー-20000が発生します。表20-2に、エラー・メッセージおよびそのエラーが発生する可能性のあるプロシージャを示します。

使用上の注意

次に、一般的アプリケーションおよび特定のアプリケーションに関する注意を示します。

- アラートは、トランザクション単位で処理されます。つまり、アラートを通知するトランザクションがコミットされるまで、待機中セッションはアラートを受け取りません。したがって、特定のアラートに対する同時実行の送信と待機がいくつか発生する場合があります。

- 待機中のアプリケーションはデータベース内でブロックされるため、別の処理は実行できません。

- アプリケーションは、複数のイベントに対して登録でき、WAITANYプロシージャを使用して、すべてのイベントの発生を待機できます。

- WAITONEまたはWAITANYプロシージャに対して、オプションのtimeoutパラメータを指定することもできます。timeoutを0(ゼロ)に設定すると、保留中のアラートが存在しない場合はすぐに戻されます。

- 通知セッションは、待機中セッションが受け取るメッセージをオプションで渡せます。

- アラートは、対応するアプリケーションの待機コールよりも頻繁に通知されます。この場合、古いアラートは廃棄されます。アプリケーションは、トランザクションのコミットごとに、最新のアラートを取得します。

- アプリケーションで、トランザクション単位のアラートが必要ない場合は、DBMS_PIPEパッケージを使用してください。

関連項目:
第112章「DBMS_PIPE」

- SIGNALのコール後にトランザクションがロールバックされた場合、アラートは発生しません。

- アラートを受け取り、データを読み込んでも、データが変更されていない場合があります。これは、先行したアラートの後にデータが変更されたが、その前に先行したアラートに関するデータが読み込まれているためです。

- 通常、Oracleはイベント・ドリブンであるため、ポーリング・ループは発生しません。ポーリング・ループは、次の2つの場合に発生する可能性があります。

- 共有モード。データベースを共有モードで実行している場合は、別のインスタンスからのアラートをチェックするためにポーリング・ループが必要です。ポーリング・ループのデフォルト値は1秒で、SET_DEFAULTSプロシージャで設定できます。

- WAITANYプロシージャ。WAITANYプロシージャを使用していて、通知セッションが通知の1秒以内にコミットしない場合は、このコミットされていないアラートが別のアラートをカムフラージュしないようにするために、ポーリング・ループが必要です。ポーリング・ループは1秒間隔で始まり、30秒間隔まで段階的に変化します。

表20-2 DBMS_ALERTエラー・メッセージ

エラー・メッセージ

プロシージャ

ORU-10001 lock request error, status: N

SIGNAL

ORU-10015 error: N waiting for pipe status

WAITANY

ORU-10016 error: N sending on pipe 'X'

SIGNAL

ORU-10017 error: N receiving on pipe 'X'

SIGNAL

ORU-10019 error: N on lock request

WAIT

ORU-10020 error: N on lock request

WAITANY

ORU-10021 lock request error; status: N

REGISTER

ORU-10022 lock request error, status: N

SIGNAL

ORU-10023 lock request error; status N

WAITONE

ORU-10024 there are no alerts registered

WAITANY

ORU-10025 lock request error; status N

REGISTER

ORU-10037 attempting to wait on uncommitted signal from same session

WAITONE

例

全従業員について、部門ごとの平均給与のグラフを作成するとします。アプリケーションは、EMPの変更を常に認識しておく必要があります。アプリケーションのコードは次のようになります。

DBMS_ALERT.REGISTER('emp_table_alert');
<<readagain>>:
/* ... read the emp table and graph it */
DBMS_ALERT.WAITONE('emp_table_alert', :message, :status);
if status = 0 then goto <<readagain>>; else
/* ... error condition */

EMP表のトリガーは次のようになります。

CREATE TRIGGER emptrig AFTER INSERT OR UPDATE OR DELETE ON emp
BEGIN
DBMS_ALERT.SIGNAL('emp_table_alert', 'message_text');
END;

アラートが不要になると、アプリケーションは次の要求を作成します。

DBMS_ALERT.REMOVE('emp_table_alert');

この要求によって、アラートの通知側の処理量が削減されます。登録したアラートが存在している間にセッションが終了(または異常終了)した場合、そのアラートは結果的に、このパッケージの次のユーザーによって消去されます。

例では、アプリケーションが中間値をすべて参照するとはかぎりませんが、常に最新のデータを参照することが保証されます。

DBMS_ALERTサブプログラムの要約

表20-3 DBMS_ALERTパッケージのサブプログラム

サブプログラム

説明

REGISTERプロシージャ

アラートからメッセージを受け取ります。

REMOVEプロシージャ

アラートからの通知を無効にします。

REMOVEALLプロシージャ

このセッションに対するアラートを登録リストからすべて削除します。

SET_DEFAULTSプロシージャ

ポーリング間隔を設定します。

SIGNALプロシージャ

アラートを通知します(登録セッションにメッセージを送信します)。

WAITANYプロシージャ

セッションに登録したアラートからのメッセージの受取りを、timeout秒待機します。

WAITONEプロシージャ

名前を設定したアラートからのメッセージの受取りを、timeout秒待機します。

REGISTERプロシージャ

セッションは、このプロシージャによってアラートを登録します。

構文

DBMS_ALERT.REGISTER (
name      IN  VARCHAR2,
cleanup   IN  BOOLEAN DEFAULT TRUE);

パラメータ

表20-4 REGISTERプロシージャのパラメータ

パラメータ

説明

name

このセッションに関連しているアラート名。

cleanup

DBMS_ALERTパッケージで使用される実在する孤立したパイプのクリーンアップを実行するかどうかを指定します。このクリーンアップは、パッケージのインスタンス化ごとにREGISTERへの最初のコールでのみ実行されます。パラメータのデフォルト値はTRUEです。

注意:

'ORA$'で始まるアラート名は、オラクル社の製品用に予約されています。アラート名は、30バイト以内で設定してください。大文字と小文字は区別されません。

使用上の注意

セッションは、必要な数のアラートを登録できます。アラートとの関連が不要になった場合は、REMOVEをコールしてそのアラートの登録を削除する必要があります。

REMOVEプロシージャ

アラートとの関連が不要になったセッションは、このプロシージャによって登録リストからそのアラートを削除できます。アラートを削除すると、アラートの通知側が行う処理量が削減されます。

構文

DBMS_ALERT.REMOVE (
name  IN  VARCHAR2);

パラメータ

表20-5 REMOVEプロシージャのパラメータ

パラメータ

説明

name

登録リストから削除するアラート名(大/小文字区別なし)

使用上の注意

アラートの削除は、アラートの通知側が行う処理量を削減するための重要な処理です。セッションがアラートを削除せずに異常終了した場合、そのアラートは(即時ではありませんが)結果的に消去されます。

REMOVEALLプロシージャ

このプロシージャによって、このセッションに関連するアラートを登録リストからすべて削除します。セッションですべてのアラートが不要になったときは、必ずこのプロシージャを使用してください。

このプロシージャは、セッションの中でこのパッケージを初めて参照すると、自動的にコールされます。したがって、前のセッションが異常終了した場合でも、そのセッションに関連するアラートが現在のセッションに影響を与えることはありません。

このプロシージャは常にコミットを実行します。

構文

DBMS_ALERT.REMOVEALL;

SET_DEFAULTSプロシージャ

ポーリング・ループが必要な場合は、このSET_DEFAULTSプロシージャを使用してポーリング間隔を設定します。

構文

DBMS_ALERT.SET_DEFAULTS (
sensitivity  IN  NUMBER);

パラメータ

表20-6 SET_DEFAULTSプロシージャのパラメータ

パラメータ

説明

sensitivity

ポール間でスリープするポーリング間隔(秒)。デフォルトは5秒です。

SIGNALプロシージャ

このプロシージャはアラートを通知します。SIGNALコールは、コールしたトランザクションがコミットされたときのみ有効になります。トランザクションがロールバックされると、SIGNALは無効になります。

このアラートを登録したすべてのセッションに通知されます。関連しているセッションが現在待機中の場合は、そのセッションが起動されます。関連しているセッションが現在待機中でない場合は、次にそのセッションが待機コールを行ったときに通知されます。

複数のセッションが、同時に同じアラートの通知を受けられます。各セッションは、アラートを通知するとき、コミットするまでその他の同時セッションをすべてブロックします。この結果、トランザクションはシリアル化されます。

構文

DBMS_ALERT.SIGNAL (
name     IN  VARCHAR2,
message  IN  VARCHAR2);

パラメータ

表20-7 SIGNALプロシージャのパラメータ

パラメータ

説明

name

通知するアラート名。

message

このアラートに関連付けるメッセージ(1800バイト以下)。

このメッセージが待機中のセッションに渡されます。待機中のセッションは、メッセージ内の情報を使用して、アラート発生後のデータベースの読込みを中止することもできます。

WAITANYプロシージャ

現行のセッションが登録されているすべてのアラートを対象として、そのいずれかの発生を待機する場合にこのプロシージャをコールします。

構文

DBMS_ALERT.WAITANY (
name      OUT  VARCHAR2,
message   OUT  VARCHAR2,
status    OUT  INTEGER,
timeout   IN   NUMBER DEFAULT MAXWAIT);

パラメータ

表20-8 WAITANYプロシージャのパラメータ

パラメータ

説明

name

発生したアラート名を戻します。

message

アラートに関連付けられたメッセージを戻します。

これは、SIGNALコールが提供するメッセージです。WAITANYの前に、このアラートで複数の通知が発生した場合は、最新のSIGNALコールに対応するメッセージが戻されます。それ以前のSIGNALコールのメッセージは廃棄されます。

status

戻される値。

0 - アラート発生。

1 - タイムアウト発生。

timeout

アラートの最大待機時間。

timeout秒以内にアラートが発生しない場合は、ステータス1が戻されます。

使用上の注意

このプロシージャが実行される前に、暗黙的なCOMMITが発行されます。アラートを待機する同じセッションが、最初にアラートを通知する場合もあります。この場合は、通知の後および待機の前にコミットする必要があり、この処理を行わないと、(DBMS_ALERTによってコールされる) DBMS_LOCK.REQUESTからステータス4が戻されます。

例外

-20000, ORU-10024: there are no alerts registered.

WAITONEプロシージャ

このプロシージャは、特定のアラートの発生を待機します。このプロシージャが実行される前に、暗黙的なCOMMITが発行されます。最初にアラートを通知するセッションが、その後のトランザクションでアラートを待機する場合もあります。この場合は、通知の後および待機の前にコミットする必要があり、この処理を行わないと、(DBMS_ALERTによってコールされる) DBMS_LOCK.REQUESTからステータス4が戻されます。

構文

DBMS_ALERT.WAITONE (
name      IN   VARCHAR2,
message   OUT  VARCHAR2,
status    OUT  INTEGER,
timeout   IN   NUMBER DEFAULT MAXWAIT);

パラメータ

表20-9 WAITONEプロシージャのパラメータ

パラメータ

説明

name

待機するアラート名。

message

アラートに関連付けられたメッセージを戻します。

これは、SIGNALコールが提供するメッセージです。WAITONEの前に、このアラートで複数の通知が発生した場合は、最新のSIGNALコールに対応するメッセージが戻されます。それ以前のSIGNALコールのメッセージは廃棄されます。

status

戻される値。

0 - アラート発生。

1 - タイムアウト発生。

timeout

アラートの最大待機時間。

名前を設定したアラートがtimeout秒以内に発生しない場合は、ステータス1が戻されます。

21 DBMS_APP_CONT

DBMS_APP_CONTパッケージは、使用できなくなったセッションの実行中のトランザクションがコミットされたかどうか、およびそのセッションに対する最後のコールが完了したかどうかを判断できるインタフェースを提供します。

関連項目:
アプリケーション・コンティニュイティとトランザクション・ガードの説明およびこれら2つの機能の関連性については、『Oracle Database開発ガイド』を参照してください。

- トランザクション・ガードの使用に関する項

- アプリケーション・コンティニュイティの確保に関する項

この章では、次の項目について説明します。

- DBMS_APP_CONTの使用

- 概要

- セキュリティ・モデル

- DBMS_APP_CONTサブプログラムの要約

DBMS_APP_CONTの使用

- 概要

- セキュリティ・モデル

概要

問題の詳細

停止後にアプリケーションをリカバリする際の根本的問題の1つが、クライアントに返送されたコミット・メッセージに継続性がないことです。クライアントとサーバー間に間隔がある場合、クライアントには通信の失敗というエラー・メッセージが示されます。このエラーでは次のことがアプリケーションに知らされません。すなわち、送信によってコミット操作が実行されたかどうか、もしくは、プロシージャ・コールが予定されたすべてのコミットおよびセッション状態変更を行って完了まで実行されたか、一部の動作は失敗したか、またはクライアントから切断したまま現在も実行中というさらに悪い状態になっているかということです。

GET_LTXID_OUTCOME

GET_LTXID_OUTCOMEプロシージャの目的は、使用できなくなったセッションの実行中のトランザクションが完了したかどうかを判断することです。元のセッションが使用できなくなったためにエラーが戻されるときに使用されます。セッションが使用できなくなる理由として、セッション、インスタンス、サーバー、ネットワークの障害や、計画済停止または計画外停止があげられます。このような停止が発生すると、アプリケーションは切断エラーを受信します。しかし、このエラーでは、トランザクションがコミットされたかどうかを示す情報が提供されません。また、アプリケーションの復旧後に、どんなコミット結果が期待されているかも示されていません。

関連項目:
論理トランザクションIDについては、『Oracle Database概要』を参照してください。

セキュリティ・モデル

アプリケーションでは、DBMS_APP_CONTパッケージのEXECUTE権限が必要です。この権限を付与するには、データベース管理者が次のSQL文を実行する必要があります。

GRANT execute on DBMS_APP_CONT to application user ;

DBMS_APP_CONTサブプログラムの要約

表21-1 DBMS_APP_CONTパッケージのサブプログラム

サブプログラム

説明

GET_LTXID_OUTCOMEプロシージャ

セッションが使用できなくなったときに、カスタマ・アプリケーションとサード・パーティ・アプリケーションで最後のセッションのトランザクション・ステータスを確認できるようにします。

GET_LTXID_OUTCOMEプロシージャ

このプロシージャは、セッションが使用できなくなったときに、カスタマ・アプリケーションとサード・パーティ・アプリケーションで最後のセッションのトランザクション・ステータスを確認できるようにします。

構文

DBMS_APP_CONT.GET_LTXID_OUTCOME (
client_ltxid          IN    RAW,
committed             OUT   BOOLEAN,
user_call_completed   OUT   BOOLEAN)

パラメータ

表21-2 GET_LTXID_OUTCOMEプロシージャのパラメータ

パラメータ

説明

client_ltxid

クライアント側の論理トランザクションID。前回失敗したセッションからLTXIDを、クライアント・ドライバで提供されたAPI、すなわちJDBCの場合はgetLTXID、ODP.netの場合はLogicalTransactionId、およびOCIの場合はLTXIDとOCI_ATTR_GETを使用して取得します。

committed

指定した論理LTXIDのトランザクションがCOMMITTEDの場合、TRUEを戻します。論理LTXIDがCOMMITTEDでない場合、FALSEを戻します。FALSEが戻されるときにLTXIDの使用がブロックされるため、前回実行していたトランザクションがこのLTXIDでコミットされることはありません。

user_call_completed

すべての情報がクライアントに戻されたかどうか。このようなメッセージの例として、自動コミットまたはコミットを正常に使用できたときに処理された行数、PL/SQLコール時のパラメータとファンクションの結果、またはCOMMIT後の処理を記述するPL/SQLなどがあげられます。正常に機能するためにコミットの戻り値のデータを必要とするアプリケーションでは、この2番目のパラメータを参照してください。

例外

表21-3 GET_LTXID_OUTCOMEプロシージャのパラメータ

例外

説明

ORA-14950: SERVER_AHEAD

サーバーの情報が最新であるため、トランザクションは古くてすでにコミットされたものです。アプリケーションから渡されたLTXIDは古く、そのセッションで最後に使用したものではないため、これはエラーです。GET_LTXID_OUTCOMEの目的は、リカバリ可能な停止後にそのセッションの現在のトランザクションの結果を戻すことです。

ORA-14951: CLIENT_AHEAD

クライアントの情報がサーバーよりも最新です。これは、サーバーがフラッシュバックされた場合やメディア・リカバリを使用してリカバリされた場合、またはデータ損失を伴いながらも早期にオープンされたスタンバイである場合に発生することがあります。

ORA-14906: SAME_SESSION

LTXIDの所有セッションでのGET_LTXID_OUTCOMEの実行はサポートされていません。リカバリ可能な停止後は、そのセッションにおける処理がブロックされるからです。

ORA-14909: COMMIT_BLOCKED

同じユーザー名を持ち、GET_LTXID_OUTCOMEを使用している別のユーザーが、ユーザー・セッションのコミットをブロックしました。GET_LTXID_OUTCOMEは、非活動状態のセッションでのみコールしてください。アプリケーション管理者に確認してください。

ORA-14952: ERROR

結果を確認できません。処理中にエラーが発生しました。エラー・スタックにエラーの詳細が示されています。

22 DBMS_APPLICATION_INFO

アプリケーション開発者は、Oracle TraceおよびSQLトレース機能を持つDBMS_APPLICATION_INFOパッケージを使用して、実行しているモジュール名またはトランザクションをデータベースに記録できます。この記録は、後で行う様々なモジュールおよびデバッグのパフォーマンスを追跡するときに使用されます。

この章では、次の項目について説明します。

- DBMS_APPLICATION_INFOの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_APPLICATION_INFOサブプログラムの要約

DBMS_APPLICATION_INFOの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

概要

アプリケーションを登録することによって、システム管理者およびパフォーマンス・チューニング担当者は、パフォーマンスをモジュール別に追跡できます。システム管理者は、モジュール別のリソース使用率をこの情報から追跡することもできます。アプリケーションをデータベースに登録すると、その名前およびアクションがV$SESSIONおよびV$SQLAREAビューに記録されます。

セキュリティ・モデル

注意:
DBMS_APPLICATION_INFOのパブリック・シノニムが作成前に削除されることはありません。これは、ユーザーがパブリック・シノニムをユーザー独自のパッケージまでリダイレクトできるようにするためです。

これ以上の権限は不要です。DBMSAPIN.SQLスクリプトは、標準データベース作成の一部としてすでに実行されています。

使用上の注意

ユーザーがモジュールを入力するたびに、アプリケーションがモジュール名およびアクション名を自動的に設定するようにしてください。モジュール名は、Oracle Formsアプリケーションのフォーム名またはOracleプリコンパイラ・アプリケーションのコード・セグメント名である場合があります。アクション名は、通常、モジュール内の現行トランザクションの名前または説明にしてください。

モジュールに基づいて独自の統計情報を収集する場合は、統計を最初に収集する別のスキーマにこのパッケージのバージョンを記述してこのパッケージにラッパーを実装してから、SYSバージョンのパッケージをコールします。このようにして、DBMS_APPLICATION_INFOのパブリック・シノニムを、DBAバージョンのパッケージまで変更できます。

DBMS_APPLICATION_INFOサブプログラムの要約

表22-1 DBMS_APPLICATION_INFOパッケージのサブプログラム

サブプログラム

説明

READ_CLIENT_INFOプロシージャ

現行セッションのclient_infoフィールドの値を読み込みます。

READ_MODULEプロシージャ

現行セッションのモジュールおよびアクションのフィールド値を読み込みます。

SET_ACTIONプロシージャ

現行モジュール内の現行アクション名を設定します。

SET_CLIENT_INFOプロシージャ

セッションのclient_infoフィールドを設定します。

SET_MODULEプロシージャ

現在実行中のモジュール名を新規モジュールに設定します。

SET_SESSION_LONGOPSプロシージャ

V$SESSION_LONGOPS表に行を設定します。

READ_CLIENT_INFOプロシージャ

このプロシージャは、現行セッションのclient_infoフィールドの値を読み込みます。

構文

DBMS_APPLICATION_INFO.READ_CLIENT_INFO (
client_info OUT VARCHAR2);

パラメータ

表22-2 READ_CLIENT_INFOプロシージャのパラメータ

パラメータ

説明

client_info

SET_CLIENT_INFOプロシージャに提供された最新のクライアント情報の値

READ_MODULEプロシージャ

このプロシージャは、現行セッションのモジュールおよびアクション・フィールドの値を読み込みます。

構文

DBMS_APPLICATION_INFO.READ_MODULE (
module_name OUT VARCHAR2,
action_name OUT VARCHAR2);

パラメータ

表22-3 READ_MODULEプロシージャのパラメータ

パラメータ

説明

module_name

SET_MODULEのコールによってモジュール名に設定された最後の値

action_name

SET_ACTIONまたはSET_MODULEのコールによってアクション名に設定された最後の値

使用上の注意

登録アプリケーションのモジュール名およびアクション名は、V$SQLAREAを問い合せるか、またはREAD_MODULEプロシージャをコールして取り出せます。クライアント情報は、V$SESSIONビューを問い合せるか、またはREAD_CLIENT_INFOプロシージャをコールして取り出せます。

例

次の問合せのサンプルは、V$SQLAREAのMODULEおよびACTION列の使用方法の例です。

SELECT sql_text, disk_reads, module, action
FROM v$sqlarea
WHERE module = 'add_employee';

SQL_TEXT DISK_READS MODULE ACTION
------------------- ---------- ------------------ ----------------
INSERT INTO emp 1 add_employee insert into emp
(ename, empno, sal, mgr, job, hiredate, comm, deptno)
VALUES
(name, next.emp_seq, manager, title, SYSDATE, commission, department)

1 row selected.

SET_ACTIONプロシージャ

このプロシージャは、現行モジュール内の現行アクション名を設定します。

構文

DBMS_APPLICATION_INFO.SET_ACTION (
action_name IN VARCHAR2);

パラメータ

表22-4 SET_ACTIONプロシージャのパラメータ

パラメータ

説明

action_name

現行モジュール内の現行アクション名。現行アクションが終了したときは、次のアクションがある場合はその名前で、ない場合はNULLでこのプロシージャをコールします。32バイトを超える名前は切り捨てられます。

使用上の注意

アクション名には、実行されている現行のアクションを説明する名前を設定してください。アクション名は、すべてのトランザクションの開始前に設定することをお薦めします。

後続のトランザクションのログが正しく記録されるように、トランザクション完了後はトランザクション名をNULLに設定してください。トランザクション名をNULLに設定しないと、後続のトランザクションのログがその前のトランザクション名で記録される可能性があります。

例

次のコードは、登録プロシージャを使用するトランザクションの例です。

CREATE OR REPLACE PROCEDURE bal_tran (amt IN NUMBER(7,2)) AS
BEGIN

-- balance transfer transaction

DBMS_APPLICATION_INFO.SET_ACTION(
action_name => 'transfer from chk to sav');
UPDATE chk SET bal = bal + :amt
WHERE acct# = :acct;
UPDATE sav SET bal = bal - :amt
WHERE acct# = :acct;
COMMIT;
DBMS_APPLICATION_INFO.SET_ACTION(null);

END;

SET_CLIENT_INFOプロシージャ

このプロシージャは、クライアント・アプリケーションに関する追加情報を提供します。

構文

DBMS_APPLICATION_INFO.SET_CLIENT_INFO (
client_info IN VARCHAR2);

パラメータ

表22-5 SET_CLIENT_INFOプロシージャのパラメータ

パラメータ

説明

client_info

クライアント・アプリケーションに関するあらゆる追加情報を提供します。この情報は、V$SESSIONビューに格納されています。64バイトを超える情報は切り捨てられます。

注意:
CLIENT_INFOは、ユーザーによる読込みおよび書込みが可能です。保護アプリケーション属性の格納には、アプリケーション・コンテキスト機能を使用できます。

SET_MODULEプロシージャ

このプロシージャは、現行のアプリケーションまたはモジュールの名前を設定します。

構文

DBMS_APPLICATION_INFO.SET_MODULE (
module_name IN VARCHAR2,
action_name IN VARCHAR2);

パラメータ

表22-6 SET_MODULEプロシージャのパラメータ

パラメータ

説明

module_name

現在実行中のモジュール名。現行のモジュールが終了したときは、新規モジュールがある場合はその名前で、ない場合はNULLでこのプロシージャをコールします。48バイトを超える名前は切り捨てられます。

action_name

現行モジュール内の現行アクション名。アクションを指定しない場合は、この値をNULLに設定してください。32バイトを超える名前は切り捨てられます。

使用上の注意

例

CREATE or replace PROCEDURE add_employee(
name VARCHAR2,
salary NUMBER,
manager NUMBER,
title VARCHAR2,
commission NUMBER,
department NUMBER) AS
BEGIN
DBMS_APPLICATION_INFO.SET_MODULE(
module_name => 'add_employee',
action_name => 'insert into emp');
INSERT INTO emp
(ename, empno, sal, mgr, job, hiredate, comm, deptno)
VALUES (name, emp_seq.nextval, salary, manager, title, SYSDATE,
commission, department);
DBMS_APPLICATION_INFO.SET_MODULE(null,null);
END;

SET_SESSION_LONGOPSプロシージャ

このプロシージャは、V$SESSION_LONGOPSビューに行を設定します。このビューは、長時間にわたって実行する操作の進行状況を示すために使用されます。パラレル実行やServer Managed Recoveryなどの一部のOracle機能は、このビューの行を使用してデータベース・バックアップなどの状態を示します。

アプリケーション固有の長時間実行タスクの進行状況に関する情報を通知するために、アプリケーションでSET_SESSION_LONGOPSプロシージャを使用できます。この結果、V$SESSION_LONGOPSビューで進行状況を監視できます。

構文

DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS (
rindex      IN OUT BINARY_INTEGER,
slno        IN OUT BINARY_INTEGER,
op_name     IN     VARCHAR2       DEFAULT NULL,
target      IN     BINARY_INTEGER DEFAULT 0,
context     IN     BINARY_INTEGER DEFAULT 0,
sofar       IN     NUMBER         DEFAULT 0,
totalwork   IN     NUMBER         DEFAULT 0,
target_desc IN     VARCHAR2       DEFAULT 'unknown target',
units       IN     VARCHAR2       DEFAULT NULL)

set_session_longops_nohint constant BINARY_INTEGER := -1;

パラメータ

表22-7 SET_SESSION_LONGOPSプロシージャのパラメータ

パラメータ

説明

rindex

更新するv$session_longops行を示すトークン。新規行を使用するには、このトークンをset_session_longops_nohintに設定します。行を再利用する場合は、先行するコールの戻り値を使用します。

slno

set_session_longopsへのコール全体の情報を保存しますが、内部使用のためのパラメータであるため、コール元で修正しないでください。

op_name

長時間実行タスクの名前を指定します。v$session_longopsのOPNAME列に表示されます。最大長は64バイトです。

target

長時間実行操作中に処理されるオブジェクトを指定します。たとえば、ソートされる表のIDなどを指定します。v$session_longopsのTARGET列に表示されます。

context

クライアントが格納する数。v$session_longopsのCONTEXT列に表示されます。

sofar

クライアントが格納する数。v$session_longopsのSOFAR列に表示されます。これは通常、その時点までに処理した作業量です。

totalwork

クライアントが格納する数。v$session_longopsのTOTALWORK列に表示されます。これは通常、この長時間実行操作で行う必要がある推定合計作業量です。

target_desc

この長時間操作で操作されるオブジェクトの説明を指定します。この結果、targetパラメータにキャプションが提供されます。この値は、v$session_longopsのTARGET_DESCフィールドに表示されます。最大長は32バイトです。

units

sofarおよびtotalworkを表す単位を指定します。v$session_longopsのUNITSフィールドに表示されます。最大長は32バイトです。

例

この例では、ループ内で10個のオブジェクトに対してタスクを実行します。各オブジェクトの処理が完了するたびに、プロシージャの進行状況に関するV$SESSION_LONGOPSが更新されます。

DECLARE
rindex    BINARY_INTEGER;
slno      BINARY_INTEGER;
totalwork number;
sofar     number;
obj       BINARY_INTEGER;

BEGIN
rindex := dbms_application_info.set_session_longops_nohint;
sofar := 0;
totalwork := 10;

WHILE sofar < 10 LOOP
-- update obj based on sofar
-- perform task on object target

sofar := sofar + 1;
dbms_application_info.set_session_longops(rindex, slno,
"Operation X", obj, 0, sofar, totalwork, "table", "tables");
END LOOP;
END;

23 DBMS_APPLY_ADM

DBMS_APPLY_ADMパッケージは、Oracle Streams適用プロセス、XStreamアウトバウンド・サーバーおよびXStreamインバウンド・サーバーを構成および管理するサブプログラムを提供しています。

この章では、次の項目について説明します。

- DBMS_APPLY_ADMの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_APPLY_ADMサブプログラムの要約

関連項目:

- このパッケージおよび適用プロセスの詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

- XStreamアウトバウンド・サーバーおよびインバウンド・サーバーの詳細は、Oracle DatabaseのXStreamガイドを参照してください。

DBMS_APPLY_ADMの使用方法

この項では、DBMS_APPLY_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 使用上の注意

概要

このパッケージは、Oracle Streams適用プロセス、XStreamアウトバウンド・サーバーおよびXStreamインバウンド・サーバーを開始、停止および構成するインタフェースを提供します。このパッケージには、適用ハンドラの構成、メッセージのエンキュー先の設定、メッセージの実行ディレクティブの指定を行うサブプログラムが含まれます。また、このパッケージは、接続先データベースのオブジェクトにインスタンス化SCNを設定する管理サブプログラムも提供します。さらには、適用エラーを管理するサブプログラムもあります。

Xstreamインバウンド・サーバーおよびアウトバウンド・サーバーは、マルチテナント・コンテナ・データベース(CDB)のXStream構成で使用できます。CDBは、ユーザーが作成した0以上のプラガブル・データベース(PDB)を含むOracle Databaseです。

注意:

- 簡略化のため、この章では、適用プロセス、XStreamアウトバウンド・サーバーおよびXStreamインバウンド・サーバーを適用コンポーネントと呼びます。この章では、必要に応じて適用コンポーネントのタイプを特定します。

- XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。

関連項目:

- 『Oracle Streams概要および管理』

- 『Oracle Streamsレプリケーション管理者ガイド』

- Oracle Database XStreamガイド

- CDBおよびPDBの詳細は、『Oracle Database概要』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

DBMS_APPLY_ADMパッケージを使用してOracle Streams構成を管理する場合、ユーザーには、Oracle Streams管理者の権限を付与する必要があります。

DBMS_APPLY_ADMパッケージを使用してXStream構成を管理する場合、ユーザーには、XStream管理者の権限を付与する必要があります。

注意:
ユーザーには、このパッケージ内のサブプログラムを使用して複数の管理タスク(適用ユーザーの設定など)を実行するための追加の権限を付与する必要があります。サブプログラムのために追加の権限が必要な場合、その権限は、サブプログラムを説明する項に記載されています。

関連項目:

- Oracle Streams管理者の構成の詳細は、『Oracle Streams概要および管理』を参照してください。

- XStream管理者の構成の詳細は、Oracle DatabaseのXStreamガイドを参照してください。

使用上の注意

次の各項では、このパッケージの使用上の注意について説明します。

- 推奨されない適用コンポーネントのパラメータの値

推奨されない適用コンポーネントのパラメータの値

注意:
推奨されない適用コンポーネントのパラメータの値は使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

commit_serialization適用コンポーネントのパラメータにNONE値を使用することは推奨されていません。かわりに、DEPENDENT_TRANSACTIONS値を使用してください。

関連項目:
SET_PARAMETERプロシージャ

DBMS_APPLY_ADMサブプログラムの要約

表23-1 DBMS_APPLY_ADMパッケージのサブプログラム

サブプログラム

説明

ADD_STMT_HANDLERプロシージャ

特定のデータベース・オブジェクトに対して指定された操作の文DMLハンドラを単一の適用コンポーネントまたはデータベース内のすべての適用コンポーネントに追加します。

ALTER_APPLYプロシージャ

適用コンポーネントを変更します。

COMPARE_OLD_VALUESプロシージャ

適用時に、行論理変更レコード(行LCR)内に存在する1つ以上の列の元の値を、宛先サイトの対応する列の現在の値と比較するかどうかを指定します。

CREATE_APPLYプロシージャ

適用コンポーネントを作成します。

CREATE_OBJECT_DEPENDENCYプロシージャ

オブジェクトの依存性を作成します。

DELETE_ALL_ERRORSプロシージャ

指定した適用コンポーネントに対するすべてのエラー・トランザクションを削除します。

DELETE_ERRORプロシージャ

指定したエラー・トランザクションを削除します。

DROP_APPLYプロシージャ

適用コンポーネントを削除します。

DROP_OBJECT_DEPENDENCYプロシージャ

オブジェクトの依存性を削除します。

EXECUTE_ALL_ERRORSプロシージャ

指定した適用コンポーネントに対するエラー・トランザクションを再実行します。

EXECUTE_ERRORプロシージャ

指定したエラー・トランザクションを再実行します。

GET_ERROR_MESSAGEファンクション

指定したメッセージ番号とトランザクション識別子に対するメッセージ・ペイロードをエラー・キューから返します。

REMOVE_STMT_HANDLER

特定のデータベース・オブジェクトに対して指定された操作の文DMLハンドラを単一の適用コンポーネントまたはデータベース内のすべての適用コンポーネントから削除します。

SET_CHANGE_HANDLERプロシージャ

特定のデータベース・オブジェクトに対して指定された操作の変更を追跡する文DMLハンドラを、単一の適用コンポーネントで設定または設定解除します。

SET_DML_HANDLERプロシージャ

ユーザー・プロシージャを、特定のデータベース・オブジェクトに対して指定された操作のプロシージャDMLハンドラとして単一の適用コンポーネントまたはデータベース内のすべての適用コンポーネントに設定します。

SET_ENQUEUE_DESTINATIONプロシージャ

指定したルールを満たすメッセージが適用コンポーネントによって自動的にエンキューされるキューを設定します。

SET_EXECUTEプロシージャ

指定したルールを満たすメッセージを適用コンポーネントによって実行するかどうかを指定します。

SET_GLOBAL_INSTANTIATION_SCNプロシージャ

指定したソース・データベースに対して、およびオプションで、ソース・データベースのスキーマとそのスキーマが所有する表に対して、指定したインスタンス化SCNを記録します。

SET_KEY_COLUMNSプロシージャ

ローカル適用の目的で代替主キーとして使用される列セットを記録し、指定オブジェクトに対する既存の代替主キー列が存在する場合は、それを削除します。

SET_PARAMETERプロシージャ

適用パラメータを指定した値に設定します。

SET_SCHEMA_INSTANTIATION_SCNプロシージャ

指定したソース・データベース内の指定のスキーマに対して、およびオプションで、ソース・データベースのスキーマが所有する表に対して、指定したインスタンス化SCNを記録します。

SET_TABLE_INSTANTIATION_SCNプロシージャ

指定したソース・データベース内の指定表に対する指定インスタンス化SCNを記録します。

SET_UPDATE_CONFLICT_HANDLERプロシージャ

指定オブジェクトに対する更新競合ハンドラを追加、更新または削除します。

SET_VALUE_DEPENDENCYプロシージャ

値の依存性を設定または削除します。

START_APPLYプロシージャ

適用コンポーネントにメッセージの適用開始を指示します。

STOP_APPLYプロシージャ

適用コンポーネントを停止してメッセージの適用を中断し、適用が終了していないトランザクションをロールバックします。

注意:
特に指定がないかぎり、すべてのプロシージャがコミットされます。ただし、GET_ERROR_MESSAGEファンクションはコミットされません。

ADD_STMT_HANDLERプロシージャ

このプロシージャは、特定のデータベース・オブジェクトに対して指定された操作の文DMLハンドラを追加します。このプロシージャは、文DMLハンドラを単一の適用コンポーネントまたはデータベース内のすべての適用コンポーネントに追加します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンではstatementおよびcommentパラメータを使用しますが、もう一方のバージョンでは使用しません。statementパラメータを使用すると、文DMLハンドラを作成して、1つ以上のプロセスに1ステップで追加できます。それ以外の場合は、DBMS_STREAMS_HANDLER_ADMパッケージを使用して、文DMLハンドラを作成してから1つ以上のプロセスに追加します。

関連項目:

- 第162章「DBMS_STREAMS_HANDLER_ADM」

- 『Oracle Streams概要および管理』

構文

DBMS_APPLY_ADM.ADD_STMT_HANDLER(
object_name     IN  VARCHAR2,
operation_name  IN  VARCHAR2,
handler_name    IN  VARCHAR2,
statement       IN  CLOB,
apply_name      IN  VARCHAR2  DEFAULT NULL,
comment         IN  VARCHAR2  DEFAULT NULL);

DBMS_APPLY_ADM.ADD_STMT_HANDLER(
object_name     IN  VARCHAR2,
operation_name  IN  VARCHAR2,
handler_name    IN  VARCHAR2,
apply_name      IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-2 ADD_STMT_HANDLERプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]object_nameの形式で指定したソース・オブジェクトの名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。指定するオブジェクトは、このプロシージャの実行時に存在している必要はありません。

NULLの場合は、エラーが発生します。

operation_name

操作名。次の操作名を指定できます。

- INSERT

- UPDATE

- DELETE

NULLの場合は、エラーが発生します。

注意: 文DMLハンドラはLOB操作には指定できません。

handler_name

文DMLハンドラの名前。

指定された文DMLハンドラが存在する場合は、statementパラメータの文が既存のハンドラに追加されます。既存の文DMLハンドラが、operation_nameパラメータおよびobject_nameパラメータそれぞれに設定されている、同じデータベース・オブジェクトに対する同じ操作のものであることを確認します。既存のハンドラが異なる操作またはデータベース・オブジェクトに対応する場合、ハンドラが起動されたときに適用エラーが発生します。

指定された文DMLハンドラが存在せず、NULL以外の文パラメータが指定された場合、このプロシージャは文DMLハンドラを作成します。

指定された文DMLハンドラが存在せず、statementパラメータが指定されないか、またはNULLである場合、エラーが発生します。

NULLの場合は、エラーが発生します。

statement

文DMLハンドラに追加するSQL文のテキスト。

NULLの場合は、エラーが発生します。

apply_name

文DMLハンドラを使用する適用コンポーネントの名前。

NULLを指定すると、データベース内のすべての適用コンポーネントに対する汎用ハンドラとして、文DMLハンドラが追加されます。

comment

文DMLハンドラのコメント。

NULLの場合、文DMLハンドラに対するコメントは記録されません。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- ADD_STMT_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

- ADD_STMT_HANDLERプロシージャおよびXStreamインバウンド・サーバー

ADD_STMT_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。アウトバウンド・サーバーでは、すべての適用ハンドラが無視されます。

ADD_STMT_HANDLERプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

ALTER_APPLYプロシージャ

このプロシージャでは、適用コンポーネントを変更します。

構文

DBMS_APPLY_ADM.ALTER_APPLY(
apply_name                IN  VARCHAR2,
rule_set_name             IN  VARCHAR2  DEFAULT NULL,
remove_rule_set           IN  BOOLEAN   DEFAULT FALSE,
message_handler           IN  VARCHAR2  DEFAULT NULL
remove_message_handler    IN  BOOLEAN   DEFAULT FALSE,
ddl_handler               IN  VARCHAR2  DEFAULT NULL,
remove_ddl_handler        IN  BOOLEAN   DEFAULT FALSE,
apply_user                IN  VARCHAR2  DEFAULT NULL,
apply_tag                 IN  RAW       DEFAULT NULL,
remove_apply_tag          IN  BOOLEAN   DEFAULT FALSE,
precommit_handler         IN  VARCHAR2  DEFAULT NULL,
remove_precommit_handler  IN  BOOLEAN   DEFAULT FALSE,
negative_rule_set_name    IN  VARCHAR2  DEFAULT NULL,
remove_negative_rule_set  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表23-3 ALTER_APPLYプロシージャのパラメータ

パラメータ

説明

apply_name

変更する適用コンポーネントの名前。既存の適用コンポーネントの名前を指定する必要があります。所有者を指定しないでください。

rule_set_name

適用コンポーネントのポジティブ・ルール・セットの名前。ポジティブ・ルール・セットには、適用コンポーネントにメッセージの適用を指示するルールが含まれます。

適用コンポーネントに対してポジティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるjob_apply_rulesという名前のポジティブ・ルール・セットを指定するには、hr.job_apply_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_rule_setパラメータをFALSEに設定すると、指定した適用コンポーネントに対する既存のすべてのポジティブ・ルール・セットが保持されます。NULLを指定し、remove_rule_setパラメータをTRUEに設定すると、指定した適用コンポーネントから既存のすべてのポジティブ・ルール・セットが削除されます。

remove_rule_set

TRUEに設定すると、指定した適用コンポーネントに対するポジティブ・ルール・セットが削除されます。適用コンポーネントのポジティブ・ルール・セットを削除し、適用コンポーネントにネガティブ・ルール・セットがない場合、適用コンポーネントは、キュー内のすべてのメッセージをデキューします。

適用コンポーネントのポジティブ・ルール・セットを削除し、ネガティブ・ルール・セットが適用コンポーネントに存在する場合は、そのネガティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、適用コンポーネントによってデキューされます。

FALSEに設定すると、指定した適用コンポーネントに対するポジティブ・ルール・セットが保持されます。

rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

message_handler

適用コンポーネントに対する、キュー内の非LCRメッセージを処理するユーザー定義プロシージャ。

メッセージ・ハンドラ・プロシージャの詳細は、「CREATE_APPLYプロシージャ」の「使用上の注意」を参照してください。

remove_message_handler

TRUEに設定すると、指定した適用コンポーネントに対するメッセージ・ハンドラが削除されます。

FALSEに設定すると、指定した適用コンポーネントに対するメッセージ・ハンドラは保持されます。

message_handler パラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

ddl_handler

適用コンポーネントに対する、キュー内のDDL論理変更レコード(DDL LCR)を処理するユーザー定義プロシージャ。

適用されたDDL LCRはすべて自動的にコミットします。したがって、DDLハンドラが、DDL LCRのEXECUTEメンバー・プロシージャをコールすると、コミットが自動的に実行されます。

DDLハンドラ・プロシージャの詳細は、「CREATE_APPLYプロシージャ」の「使用上の注意」を参照してください。

remove_ddl_handler

TRUEに設定すると、指定した適用コンポーネントに対するDDLハンドラが削除されます。

FALSEに設定すると、指定した適用コンポーネントに対するDDLハンドラは保持されます。

ddl_handlerパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

apply_user

適用コンポーネントが、そのユーザーのセキュリティ・ドメイン内で適用コンポーネントのルール・セットを満たすメッセージをデキューし、データベース・オブジェクトにメッセージを直接適用し、カスタム・ルールベースの変換を実行して、適用ハンドラを実行するユーザーを指定します。NULLの場合、適用ユーザーは変更されません。

NULL以外の値を指定して適用ユーザーを変更する場合は、ALTER_APPLYプロシージャを起動するユーザーにDBAロールが付与されている必要があります。apply_userをSYSに設定できるのは、SYSユーザーに限られています。

適用ユーザーを変更すると、このプロシージャは、適用コンポーネントで使用されるキューのデキュー権限を新しい適用ユーザーに付与します。また、そのユーザーをキューの保護キュー・ユーザーとして構成します。

適用ユーザーには、このプロシージャによって付与される権限の他に、次の権限も付与する必要があります。

- 適用オブジェクトのDML変更とDDL変更を実行する際に必要な権限

- 適用コンポーネントで使用されるルール・セットのEXECUTE権限

- ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

- すべての適用ハンドラ・プロシージャのEXECUTE権限

これらの権限は適用ユーザーに直接付与するか、またはロールによって付与できます。

また、適用ユーザーには、適用コンポーネントによって実行されるサブプログラムで起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限が付与されている必要があります。これらの権限は、適用ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

デフォルトでは、このパラメータは、このパッケージのCREATE_APPLYプロシージャまたはDBMS_STREAMS_ADMパッケージのプロシージャを実行して適用コンポーネントを作成したユーザーに設定されます。

注意: 適用コンポーネントの適用ユーザーがDROP USER. . . CASCADEを使用して削除されると、適用コンポーネントも自動的に削除されます。

apply_tag

指定した適用コンポーネントによって生成されたREDOエントリに追加されるバイナリ・タグ。タグは、LCRの追跡に使用できるバイナリ値です。

タグは、適用コンポーネントを実行しているデータベースの取得プロセスが、適用コンポーネントによって加えられた変更を取得した場合にのみ関係します。この場合、取得した変更に、このパラメータで指定されたタグが含まれます。

NULL(デフォルト)の場合、適用コンポーネントに対する適用タグは変更されません。

次は、16進値17のタグの例です。

HEXTORAW('17')

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

remove_apply_tag

TRUEに設定すると、指定した適用コンポーネントに対する適用タグにNULLが設定され、適用コンポーネントが生成したREDOエントリにNULLタグが付加されます。

FALSEに設定すると、指定した適用コンポーネントに対する適用タグは保持されます。

apply_tagパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

precommit_handler

適用コンポーネントのキュー内の内部コミット・ディレクティブを適用コンポーネントによって処理される前に受け取ることができるユーザー定義のプロシージャ。通常は、適用コンポーネントによって処理されるトランザクションのコミット情報を監査するために、プリコミット・ハンドラを使用します。

内部コミット・ディレクティブは、次のようにエンキューされます。

- 取得プロセスで行LCRが取得されると、その取得プロセスによって、行LCRが含まれているトランザクションのコミット・ディレクティブがエンキューされます。

- ユーザーまたはアプリケーションがメッセージをエンキューしてCOMMIT文を発行すると、コミット・ディレクティブが自動的にエンキューされます。

取得された行LCRの場合、コミット・ディレクティブにソース・データベースからのトランザクションのコミットSCNが含まれます。ユーザー・メッセージの場合、コミットSCNは適用コンポーネントによって生成されます。

プリコミット・ハンドラ・プロシージャでは、次の制限に従ってください。

- コミットする作業を自律型トランザクションにする。

- ロールバックには、プロシージャ内に作成した名前付きセーブポイントを指定する。

プリコミット・ハンドラで例外が発生した場合は、適用トランザクション全体がロールバックされ、トランザクション内のすべてのメッセージがエラー・キューに移動されます。

プリコミット・ハンドラ・プロシージャの詳細は、「CREATE_APPLYプロシージャ」の「使用上の注意」を参照してください。

remove_precommit_handler

TRUEに設定すると、指定した適用コンポーネントに対するプリコミット・ハンドラが削除されます。

FALSEに設定すると、指定した適用コンポーネントに対するプリコミット・ハンドラは保持されます。

precommit_handlerパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

negative_rule_set_name

適用コンポーネントのネガティブ・ルール・セットの名前。ネガティブ・ルール・セットには、適用コンポーネントにメッセージの廃棄を指示するルールが含まれます。

適用コンポーネントに対してネガティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるneg_apply_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_apply_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_negative_rule_setパラメータをFALSEに設定すると、既存のすべてのネガティブ・ルール・セットが保持されます。NULLを指定し、remove_negative_rule_setパラメータをTRUEに設定すると、既存のすべてのネガティブ・ルール・セットが削除されます。

適用コンポーネントに対してポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定した場合は、ネガティブ・ルール・セットが常に最初に評価されます。

remove_negative_rule_set

TRUEに設定すると、指定した適用コンポーネントに対するネガティブ・ルール・セットが削除されます。適用コンポーネントのネガティブ・ルール・セットを削除し、適用コンポーネントにポジティブ・ルール・セットがない場合、適用コンポーネントは、キュー内のすべてのメッセージをデキューします。

適用コンポーネントのネガティブ・ルール・セットを削除し、適用コンポーネントのポジティブ・ルール・セットが存在する場合、適用コンポーネントは、ポジティブ・ルール・セットによって廃棄されないキュー内のすべてのメッセージをデキューします。

FALSEに設定すると、指定した適用コンポーネントに対するネガティブ・ルール・セットが保持されます。

negative_rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 適用コンポーネントの自動再開

- ALTER_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

- ALTER_APPLYプロシージャおよびXStreamインバウンド・サーバー

適用コンポーネントの自動再開

適用コンポーネントは、次に示すALTER_APPLYプロシージャのパラメータ値を1つ以上変更すると、自動的に停止および再開します。

- message_handler

- ddl_handler

- apply_user

- apply_tag

- precommit_handler

ALTER_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャおよびXStreamアウトバウンド・サーバーには、次の使用上の注意が適用されます。

- apply_userパラメータで、アウトバウンド・サーバーの接続ユーザーを変更できます。

- アウトバウンド・サーバーの適用ハンドラを指定することはできません。アウトバウンド・サーバーでは、message_handler、ddl_handlerおよびprecommit_handlerパラメータの設定は無視されます。
かわりに、クライアント・アプリケーションでは、必要に応じてLCRのカスタム処理を実行できます。

- アウトバウンド・サーバーでは、処理対象の変更に対する適用タグは設定できません。アウトバウンド・サーバーでは、apply_tagパラメータの設定は無視されます。

ALTER_APPLYプロシージャおよびXStreamインバウンド・サーバー

インバウンド・サーバーでは、適用ハンドラを使用してDMLとDDL LCRのみを処理できます。そのため、インバウンド・サーバーでは、message_handlerパラメータに指定されたメッセージ・ハンドラは無視されます。

COMPARE_OLD_VALUESプロシージャ

このプロシージャは、適用時に、行論理変更レコード(行LCR)内に存在する1つ以上の列の元の値を、宛先サイトの対応する列の現在の値と比較するかどうかを指定します。このプロシージャで実行するのは、UPDATEおよびDELETE関連の操作のみですが、これは、これらの操作によってのみ行LCRに元の列値が入るためです。デフォルトでは、すべての列の古い値が比較されます。

このプロシージャはオーバーロードされています。column_listパラメータとcolumn_tableパラメータは、両方同時には指定できません。

関連項目:
Oracle Streams環境における競合の検出と解消の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_APPLY_ADM.COMPARE_OLD_VALUES(
object_name         IN VARCHAR2,
column_list         IN VARCHAR2,
operation           IN VARCHAR2 DEFAULT 'UPDATE',
compare             IN BOOLEAN  DEFAULT TRUE,
apply_database_link IN VARCHAR2 DEFAULT NULL);

DBMS_APPLY_ADM.COMPARE_OLD_VALUES(
object_name         IN VARCHAR2,
column_table        IN DBMS_UTILITY.LNAME_ARRAY,
operation           IN VARCHAR2 DEFAULT 'UPDATE',
compare             IN BOOLEAN  DEFAULT TRUE,
apply_database_link IN VARCHAR2 DEFAULT NULL);

パラメータ

表23-4 COMPARE_OLD_VALUESプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]object_nameの形式で指定したソース表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

column_list

表内の列名のカンマ区切りリスト。エントリ間に空白を挿入しないでください。

すべての非キー列を指定する場合は、この値を*にします。

column_table

表内の列名が含まれているDBMS_UTILITY.LNAME_ARRAYタイプのPL/SQL連想配列。最初の列名は位置1、2番目は位置2、以降同様に設定されている必要があります。表の最後をNULLにする必要はありません。

operation

操作名。次の操作名を指定できます。

- UPDATE操作の場合はUPDATE

- DELETE操作の場合はDELETE

- UPDATE操作とDELETE操作の両方の場合は*

compare

compareがTRUEの場合、指定した列の元の値は適用時に比較されます。

compareがFALSEの場合、指定した列の元の値は適用時に比較されません。

apply_database_link

Oracle以外のデータベースへのデータベース・リンクの名前。このパラメータは、接続先データベースがOracle以外のデータベースの場合にのみ設定する必要があります。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 競合の検出

- COMPARE_OLD_VALUESプロシージャおよびXStreamアウトバウンド・サーバー

- COMPARE_OLD_VALUESプロシージャおよびXStreamインバウンド・サーバー

競合の検出

デフォルトでは、適用コンポーネントは行LCRの元の列値を使用して競合を検出します。元の列値を比較しないようにすると、特定の表の競合を検出しないようにできます。たとえば、適用時に列セットの元の値を比較しない場合、COMPARE_OLD_VALUESプロシージャを使用してcolumn_listまたはcolumn_tableパラメータに列セットを指定し、compareパラメータをFALSEに設定します。

また、compare_key_only適用コンポーネント・パラメータをYに設定すると、自動競合検出が無効になり、適用コンポーネントは、主キーおよび一意キーの列のみを使用して行LCRに対応する表の行を識別します。compare_key_only適用コンポーネント・パラメータをNに設定すると、自動競合検出が有効になり、適用コンポーネントは、行LCRのすべての元の値を使用して行LCRに対応する表の行を識別します。

注意:

- 適用コンポーネントは、行LCRに非キー列の元の値が存在し、compare_key_only適用コンポーネント・パラメータがNに設定されている場合、非キー列の元の値を比較します。

- column_listまたはcolumn_tableにキー列が指定されていてcompareパラメータがFALSEに設定されている場合は、エラーが発生します。

関連項目:
compare_key_only適用コンポーネント・パラメータの詳細は、「SET_PARAMETERプロシージャ」を参照してください。

COMPARE_OLD_VALUESプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

COMPARE_OLD_VALUESプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

CREATE_APPLYプロシージャ

このプロシージャでは、適用コンポーネントを作成します。

構文

DBMS_APPLY_ADM.CREATE_APPLY(
queue_name              IN  VARCHAR2,
apply_name              IN  VARCHAR2,
rule_set_name           IN  VARCHAR2  DEFAULT NULL,
message_handler         IN  VARCHAR2  DEFAULT NULL,
ddl_handler             IN  VARCHAR2  DEFAULT NULL,
apply_user              IN  VARCHAR2  DEFAULT NULL,
apply_database_link     IN  VARCHAR2  DEFAULT NULL,
apply_tag               IN  RAW       DEFAULT '00',
apply_captured          IN  BOOLEAN   DEFAULT FALSE,
precommit_handler       IN  VARCHAR2  DEFAULT NULL,
negative_rule_set_name  IN  VARCHAR2  DEFAULT NULL,
source_database         IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-5 CREATE_APPLYプロシージャのパラメータ

パラメータ

説明

queue_name

適用コンポーネントがメッセージをデキューするキュー名。既存のキューを[schema_name.]queue_nameの形式で指定する必要があります。たとえば、hrスキーマ内のstreams_queueという名前のキューを指定するには、hr.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

注意: queue_nameの設定は、適用コンポーネントの作成後には変更できません。

apply_name

作成する適用コンポーネントの名前。NULL指定は許可されていません。所有者を指定しないでください。

また、既存の適用コンポーネント名やメッセージ・クライアント名と同じ名前を指定しないでください。

注意: apply_nameの設定は、適用コンポーネントの作成後には変更できません。

rule_set_name

適用コンポーネントのポジティブ・ルール・セットの名前。ポジティブ・ルール・セットには、適用コンポーネントにメッセージの適用を指示するルールが含まれます。

適用コンポーネントに対してポジティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるjob_apply_rulesという名前のポジティブ・ルール・セットを指定するには、hr.job_apply_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLを指定し、ネガティブ・ルール・セットを指定しない場合、適用コンポーネントはapply_capturedパラメータの設定内容に応じて、永続キュー内に存在する、すべての取得済メッセージまたはすべてのメッセージを適用します。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

message_handler

適用コンポーネントに対する、キュー内の非LCRメッセージを処理するユーザー定義プロシージャ。

メッセージ・ハンドラ・プロシージャの詳細は、「使用上の注意」を参照してください。

ddl_handler

適用コンポーネントに対する、キュー内のDDL論理変更レコード(DDL LCR)を処理するユーザー定義プロシージャ。

適用されたDDL LCRはすべて自動的にコミットします。したがって、DDLハンドラが、DDL LCRのEXECUTEメンバー・プロシージャをコールすると、コミットが自動的に実行されます。

DDLハンドラ・プロシージャの詳細は、「使用上の注意」を参照してください。

apply_user

適用コンポーネント・ルール・セットを満たすDML変更とDDL変更をすべて適用し、ユーザー定義の適用ハンドラを実行するユーザー。NULLの場合は、CREATE_APPLYプロシージャの実行ユーザーが使用されます。

適用ユーザーとは、そのユーザーのセキュリティ・ドメイン内で、適用コンポーネントが、適用コンポーネントのルール・セットを満たすメッセージをデキューし、データベース・オブジェクトにメッセージを直接適用し、適用コンポーネント・ルールに対して構成されているカスタム・ルールベースの変換を実行し、適用コンポーネントに対して構成されている適用ハンドラを実行するユーザーのことです。このユーザーには、変更を適用できる権限が必要です。このプロシージャでは、適用コンポーネントで使用されるキューのデキュー権限を適用ユーザーに付与し、そのユーザーをキューの保護キュー・ユーザーとして構成します。

適用ユーザーには、このプロシージャによって付与される権限の他に、次の権限も付与する必要があります。

- 適用オブジェクトのDML変更とDDL変更を実行する際に必要な権限

- 適用コンポーネントで使用されるルール・セットのEXECUTE権限

- ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

- すべての適用ハンドラ・プロシージャのEXECUTE権限

これらの権限は適用ユーザーに直接付与するか、またはロールによって付与できます。

また、適用ユーザーには、適用コンポーネントによって実行されるサブプログラムで起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限が付与されている必要があります。これらの権限は、適用ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

DBMS_STREAMS_AUTHパッケージとDBMS_XSTREAM_AUTHパッケージを使用して、Oracle StreamsおよびXStreamの各構成の管理権限を付与したり、取り消すことができます。これらのパッケージでは、適用オブジェクトに対するDML変更またはDDL変更を実行するために必要な権限が構成されません。

注意: 適用コンポーネントの適用ユーザーがDROP USER . . . CASCADEを使用して削除されると、適用コンポーネントも自動的に削除されます。

このパラメータの詳細は、「使用上の注意」を参照してください。

apply_database_link

適用コンポーネントがメッセージを適用するデータベース。このパラメータは、Oracleからオラクル以外のシステム(例: Sybase)に変更を適用するときに適用コンポーネントで使用されます。ローカル・データベースでメッセージを適用するように指定するには、このパラメータをNULLに設定します。

注意: apply_database_linkの設定は、適用コンポーネントの作成後には変更できません。

apply_tag

指定した適用コンポーネントによって生成されたREDOエントリに追加されるバイナリ・タグ。タグは、LCRの追跡に使用できるバイナリ値です。

タグは、適用コンポーネントを実行しているデータベースの取得プロセスが、適用コンポーネントによって加えられた変更を取得した場合にのみ関係します。この場合、取得した変更に、このパラメータで指定されたタグが含まれます。

デフォルトでは、適用コンポーネントに対するタグは、'00'(ダブル・ゼロ)に相当する16進値です。

次は、16進値17のタグの例です。

HEXTORAW('17')

NULLに設定すると、適用コンポーネントはNULLタグを付加してREDOエントリを生成します。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

apply_captured

TRUEまたはFALSE。

TRUEに設定すると、適用コンポーネントはキュー内に存在する取得済LCRのみを適用します。取得済LCRは、Oracle Streams取得プロセスで取得されたLCRです。

FALSEに設定すると、適用コンポーネントは永続キュー内に存在するメッセージのみを適用します。これらは、Oracle Streams取得プロセスによって取得されなかった永続LCRやユーザー・メッセージなどのメッセージです。

永続キュー内に存在する、取得されたLCRとメッセージの両方を適用するには、2つ以上の適用コンポーネントを作成する必要があります。

注意: apply_capturedの設定は、適用コンポーネントの作成後には変更できません。

関連項目: メッセージを適用コンポーネントで処理する方法の詳細は、『Oracle Streams概要および管理』を参照してください。

precommit_handler

適用コンポーネントのキュー内の内部コミット・ディレクティブを適用コンポーネントによって処理される前に受け取ることができるユーザー定義のプロシージャ。通常は、適用コンポーネントによって処理されるトランザクションのコミット情報を監査するために、プリコミット・ハンドラを使用します。

内部コミット・ディレクティブは、次のようにエンキューされます。

- 取得プロセスで行LCRが取得されると、その取得プロセスによって、行LCRが含まれているトランザクションのコミット・ディレクティブがエンキューされます。

- 同期取得で行LCRが取得されると、同期取得でエンキューされた永続LCRはメッセージ・グループに編成されます。同期取得は、トランザクション内の各永続LCRにトランザクション識別子を記録します。

- ユーザーまたはアプリケーションがメッセージをエンキューしてCOMMIT文を発行すると、コミット・ディレクティブが自動的にエンキューされます。

取得プロセスまたは同期取得によって取得された行LCRの場合、コミット・ディレクティブにソース・データベースからのトランザクションのコミットSCNが含まれます。ユーザーまたはアプリケーションによってエンキューされたメッセージの場合、コミットSCNは適用コンポーネントによって生成されます。

プリコミット・ハンドラ・プロシージャでは、次の制限に従ってください。

- コミットする作業を自律型トランザクションにする。

- ロールバックには、プロシージャ内に作成した名前付きセーブポイントを指定する。

プリコミット・ハンドラで例外が発生した場合は、適用トランザクション全体がロールバックされ、トランザクション内のすべてのメッセージがエラー・キューに移動されます。

プリコミット・ハンドラ・プロシージャの詳細は、「使用上の注意」を参照してください。

negative_rule_set_name

適用コンポーネントのネガティブ・ルール・セットの名前。ネガティブ・ルール・セットには、適用コンポーネントにメッセージの廃棄を指示するルールが含まれます。

適用コンポーネントに対してネガティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるneg_apply_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_apply_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLを指定し、ポジティブ・ルール・セットを指定しない場合、適用コンポーネントはapply_capturedパラメータの設定内容に応じて、永続キュー内に存在する、すべての取得済LCRまたはすべてのメッセージを適用します。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

適用コンポーネントに対してポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定した場合は、ネガティブ・ルール・セットが常に最初に評価されます。

source_database

適用コンポーネントによって適用される変更のソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用コンポーネントによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。

NULLの場合、適用コンポーネントが受け取る最初のLCRのソース・データベース名がソース・データベースに使用されます。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名がNETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

適用コンポーネント・ルール・セットのルールによって、適用コンポーネントがデキューするメッセージが決まります。適用コンポーネントのソース・データベースとは異なるソース・データベースで、適用コンポーネントによるLCRのデキューを行うと、エラーが発生します。適用コンポーネントのソース・データベースを特定する場合は、DBA_APPLY_PROGRESSデータ・ディクショナリ・ビューへの問合せを行います。

使用上の注意

次の各項では、このプロシージャの使用上の注意について説明します。

- DBAロール要件

- ハンドラ・プロシージャの名前

- メッセージ・ハンドラおよびDDLハンドラのプロシージャ

- プリコミット・ハンドラ・プロシージャ

- CREATE_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

- CREATE_APPLYプロシージャおよびXStreamインバウンド・サーバー

DBAロール要件

このプロシージャを起動するユーザーがapply_userパラメータに指定されたユーザーと異なる場合、起動するユーザーにDBAロールが付与されている必要があります。このプロシージャを起動するユーザーがapply_userパラメータに指定されたユーザーと同じである場合、起動するユーザーにDBAロールは必要ありません。apply_userをSYSに設定できるのは、SYSユーザーに限られています。

ハンドラ・プロシージャの名前

message_handler、ddl_handlerおよびprecommit_handlerパラメータの場合は、既存のプロシージャを次のいずれかの形式で指定します。

- [schema_name.]procedure_name

- [schema_name.]package_name.procedure_name

プロシージャがパッケージ内にある場合は、package_nameを指定する必要があります。たとえば、hrスキーマ内のapply_pkgパッケージにあるprocess_ddlsという名前のプロシージャを指定するには、hr.apply_pkg.process_ddlsと入力します。指定したプロシージャが存在しない場合はエラーが戻されます。

CREATE_APPLYプロシージャを起動するユーザーには、指定したハンドラ・プロシージャのEXECUTE権限が必要です。また、schema_nameを指定しない場合は、CREATE_APPLYプロシージャの起動ユーザー名がデフォルトで使用されます。

メッセージ・ハンドラおよびDDLハンドラのプロシージャ

message_handlerパラメータおよびddl_handlerパラメータの両方に指定されたプロシージャには、次の署名が必要です。

PROCEDURE handler_procedure (
parameter_name  IN  ANYDATA);

handler_procedureはプロシージャ名、parameter_nameはプロシージャに渡されるパラメータ名を表します。メッセージ・ハンドラの場合、プロシージャに渡されるパラメータは、ユーザー・メッセージをANYDATAにカプセル化したものです。DDLハンドラの場合は、DDL LCRをANYDATAにカプセル化したものです。

関連項目:
DDL LCRの詳細は、第275章「論理変更レコードのタイプ」を参照してください。

プリコミット・ハンドラ・プロシージャ

precommit_handlerパラメータに指定するプロシージャには、次の署名が必要です。

PROCEDURE handler_procedure (
parameter_name   IN  NUMBER);

handler_procedureはプロシージャ名、parameter_nameはプロシージャに渡されるパラメータ名を表します。プロシージャに渡すパラメータは、コミット・ディレクティブのコミットSCNです。

CREATE_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーを作成できません。XStreamアウトバウンド・サーバーを作成するには、DBMS_XSTREAM_ADMパッケージを使用します。

CREATE_APPLYプロシージャおよびXStreamインバウンド・サーバー

このプロシージャおよびXStreamインバウンド・サーバーには、次の使用上の注意が適用されます。

- CREATE_APPLYプロシージャは、常に適用プロセスを作成します。適用プロセスは、XStreamクライアント・アプリケーション以外のソース(取得プロセスなど)からメッセージを受信する場合は、適用プロセスのままです。適用プロセスは、他のソースからメッセージを受信する前にXStreamクライアント・アプリケーションに連結されると、インバウンド・サーバーになることができます。初期接続の後では、適用プロセスがインバウンド・サーバーに変更されることはなく、インバウンド・サーバーが適用プロセスに変更されることもありません。

- CREATE_APPLYプロシージャを使用してインバウンド・サーバーを作成する場合、apply_capturedパラメータをTRUEに設定します。インバウンド・サーバーでは、取得プロセスによって取得されたLCRのみが処理されます。

- インバウンド・サーバーでは、適用ハンドラを使用できます。インバウンド・サーバーでは、DMLとDDL LCRのみが処理されます。そのため、インバウンド・サーバーでは、message_handlerパラメータに指定されたメッセージ・ハンドラは無視されます。

CREATE_OBJECT_DEPENDENCYプロシージャ

このプロシージャでは、オブジェクトの依存性を作成します。オブジェクトの依存性とは、接続先データベースにある2つのオブジェクト間の親子関係を規定する仮想的な依存性の定義です。

適用コンポーネントでは、親オブジェクトが含まれている、コミット・システム変更番号(コミットSCN)が小さいすべてのトランザクションがコミットされた後に、子オブジェクトが含まれているトランザクションが実行されるようにスケジュールされます。適用コンポーネントでは、依存性の検出に、論理変更レコード(LCR)内のオブジェクトのオブジェクト識別子が使用されます。依存性の検出に、LCRの列値は使用されません。

注意:
このプロシージャのいずれかのパラメータに対してNULLを指定すると、エラーが発生します。

関連項目:

- DROP_OBJECT_DEPENDENCYプロシージャ

- 『Oracle Streams概要および管理』

構文

DBMS_APPLY_ADM.CREATE_OBJECT_DEPENDENCY(
object_name         IN  VARCHAR2,
parent_object_name  IN  VARCHAR2);

パラメータ

表23-6 CREATE_OBJECT_DEPENDENCYプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]object_nameの形式で指定した子データベース・オブジェクトの名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

parent_object_name

[schema_name.]object_nameの形式で指定した親データベース・オブジェクトの名前。たとえば、hr.departmentsのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- CREATE_OBJECT_DEPENDENCYプロシージャおよびXStreamアウトバウンド・サーバー

- CREATE_OBJECT_DEPENDENCYプロシージャおよびXStreamインバウンド・サーバー

CREATE_OBJECT_DEPENDENCYプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

CREATE_OBJECT_DEPENDENCYプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

DELETE_ALL_ERRORSプロシージャ

このプロシージャでは、指定した適用コンポーネントに対するすべてのエラー・トランザクションを削除します。

構文

DBMS_APPLY_ADM.DELETE_ALL_ERRORS(
apply_name  IN  VARCHAR2 DEFAULT NULL);

パラメータ

表23-7 DELETE_ALL_ERRORSプロシージャのパラメータ

パラメータ

説明

apply_name

トランザクション処理時にエラーが発生した適用コンポーネントの名前。所有者を指定しないでください。

NULLの場合は、すべての適用コンポーネントに対するすべてのエラー・トランザクションが削除されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- DELETE_ALL_ERRORSプロシージャおよびXStreamアウトバウンド・サーバー

- DELETE_ALL_ERRORSプロシージャおよびXStreamインバウンド・サーバー

DELETE_ALL_ERRORSプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーは、エラー・キューにエラー・トランザクションをエンキューしません。このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

DELETE_ALL_ERRORSプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

DELETE_ERRORプロシージャ

このプロシージャでは、指定したエラー・トランザクションを削除します。

構文

DBMS_APPLY_ADM.DELETE_ERROR(
local_transaction_id  IN  VARCHAR2);

パラメータ

表23-8 DELETE_ERRORプロシージャのパラメータ

パラメータ

説明

local_transaction_id

削除するエラー・トランザクションの識別番号。指定したトランザクションがエラー・キューに存在しない場合は、エラーが発生します。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

DELETE_ERRORプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーは、エラー・キューにエラー・トランザクションをエンキューしません。このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

DELETE_ERRORプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

DROP_APPLYプロシージャ

このプロシージャでは、適用コンポーネントを削除します。

構文

DBMS_APPLY_ADM.DROP_APPLY(
apply_name             IN  VARCHAR2,
drop_unused_rule_sets  IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表23-9 DROP_APPLYプロシージャのパラメータ

パラメータ

説明

apply_name

削除する適用コンポーネントの名前。既存の適用コンポーネント名を指定する必要があります。所有者を指定しないでください。

drop_unused_rule_sets

TRUEに設定すると、指定した適用コンポーネントで使用されるポジティブ・ルール・セットおよびネガティブ・ルール・セットが、他のOracle StreamsまたはXStreamコンポーネントによって使用されない場合に削除されます。これらのコンポーネントには、取得プロセス、伝播、適用プロセス、インバウンド・サーバー、メッセージ・クライアントがあります。このプロシージャによってルール・セットが削除される場合は、そのルール・セット内のルールのうち、別のルール・セット内に存在しないルールも同時に削除されます。

FALSEに設定すると、指定した適用コンポーネントで使用されるルール・セットは削除されず、ルール・セットにルールが保持されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- DROP_APPLYプロシージャおよびルール

- DROP_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

- DROP_APPLYプロシージャおよびXStreamインバウンド・サーバー

DROP_APPLYプロシージャおよびルール

このプロシージャを使用して適用コンポーネントを削除すると、その適用コンポーネントに対してDBMS_STREAMS_ADMパッケージを使用して作成したルールに関する情報は、ルールのデータ・ディクショナリ・ビューから削除されます。このルールに関する情報は、このルールが適用コンポーネントのポジティブ・ルール・セットとネガティブ・ルール・セットのいずれにも含まれていない場合でも削除されます。ルールのデータ・ディクショナリ・ビューは次のとおりです。

- ALL_STREAMS_GLOBAL_RULES

- DBA_STREAMS_GLOBAL_RULES

- ALL_STREAMS_MESSAGE_RULES

- DBA_STREAMS_MESSAGE_RULES

- ALL_STREAMS_SCHEMA_RULES

- DBA_STREAMS_SCHEMA_RULES

- ALL_STREAMS_TABLE_RULES

- DBA_STREAMS_TABLE_RULES

関連項目:
Oracle Streamsデータ・ディクショナリ・ビューの詳細は、『Oracle Streams概要および管理』を参照してください。

DROP_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

DROP_APPLYプロシージャをアウトバウンド・サーバーで実行すると、それによってDBMS_XSTREAM_ADMパッケージのDROP_OUTBOUNDプロシージャが実行されます。そのため、アウトバウンド・サーバーの取得プロセスおよびキューも削除される可能性があります。

DROP_APPLYプロシージャおよびXStreamインバウンド・サーバー

DROP_APPLYプロシージャをインバウンド・サーバーで実行すると、それによってDBMS_XSTREAM_ADMパッケージのDROP_INBOUNDプロシージャが実行されます。そのため、インバウンド・サーバーのキューも削除される可能性があります。

DROP_OBJECT_DEPENDENCYプロシージャ

このプロシージャでは、オブジェクトの依存性を削除します。オブジェクトの依存性とは、接続先データベースにある2つのオブジェクト間の親子関係を規定する仮想的な依存性の定義です。

注意:

- 指定したデータベース・オブジェクトに、オブジェクトの依存性が存在しない場合は、エラーが発生します。

- このプロシージャのいずれかのパラメータに対してNULLを指定すると、エラーが発生します。

関連項目:

- CREATE_OBJECT_DEPENDENCYプロシージャ

- 『Oracle Streams概要および管理』

構文

DBMS_APPLY_ADM.DROP_OBJECT_DEPENDENCY(
object_name         IN  VARCHAR2,
parent_object_name  IN  VARCHAR2);

パラメータ

表23-10 DROP_OBJECT_DEPENDENCYプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]object_nameの形式で指定した子データベース・オブジェクトの名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

parent_object_name

[schema_name.]object_nameの形式で指定した親データベース・オブジェクトの名前。たとえば、hr.departmentsのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

DROP_OBJECT_DEPENDENCYプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

DROP_OBJECT_DEPENDENCYプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

EXECUTE_ALL_ERRORSプロシージャ

このプロシージャでは、指定した適用コンポーネントのエラー・キュー内のエラー・トランザクションを再実行します。

トランザクションは、コミットSCN順に再実行されます。エラーが発生すると、エラーの再実行を停止します。

関連項目:
エラー・キューの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_APPLY_ADM.EXECUTE_ALL_ERRORS(
apply_name       IN  VARCHAR2  DEFAULT NULL,
execute_as_user  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表23-11 EXECUTE_ALL_ERRORSプロシージャのパラメータ

パラメータ

説明

apply_name

トランザクション処理時にエラーが発生した適用コンポーネントの名前。所有者を指定しないでください。

NULLの場合は、すべての適用コンポーネントに対するすべてのエラー・トランザクションが再実行されます。

execute_as_user

TRUEに設定すると、現行のユーザーのセキュリティ・コンテキスト内でトランザクションが再実行されます。

FALSEに設定すると、トランザクションの元の受信者のセキュリティ・コンテキスト内で各トランザクションが再実行されます。元の受信者とは、エラー発生時にトランザクションを処理していたユーザーです。DBA_APPLY_ERRORデータ・ディクショナリ・ビューに、各エラー・トランザクションに対する元の受信者がリストされます。

トランザクションを実行するユーザーには、適用オブジェクトに対してDML変更とDDL変更を実行する権限、および適用ハンドラを実行する権限が必要です。また、適用コンポーネントで使用されるキューに対するデキュー権限も必要です。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- EXECUTE_ALL_ERRORSプロシージャおよびXStreamアウトバウンド・サーバー

- EXECUTE_ALL_ERRORSプロシージャおよびXStreamインバウンド・サーバー

EXECUTE_ALL_ERRORSプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーは、エラー・キューにエラー・トランザクションをエンキューしません。このプロシージャは、XStreamアウトバウンド・サーバーでは使用できません。

EXECUTE_ALL_ERRORSプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

EXECUTE_ERRORプロシージャ

このプロシージャでは、エラー・キュー内の指定したエラー・トランザクションを再実行します。

関連項目:
エラー・キューの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_APPLY_ADM.EXECUTE_ERROR(
local_transaction_id  IN  VARCHAR2,
execute_as_user       IN  BOOLEAN   DEFAULT FALSE,
user_procedure        IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-12 EXECUTE_ERRORプロシージャのパラメータ

パラメータ

説明

local_transaction_id

実行するエラー・トランザクションの識別番号。指定したトランザクションがエラー・キューに存在しない場合は、エラーが発生します。

execute_as_user

TRUEに設定すると、現行のユーザーのセキュリティ・コンテキスト内でトランザクションが再実行されます。

FALSEに設定すると、トランザクションの元の受信者のセキュリティ・コンテキスト内でトランザクションが再実行されます。元の受信者とは、エラー発生時にトランザクションを処理していたユーザーです。DBA_APPLY_ERRORデータ・ディクショナリ・ビューに、各エラー・トランザクションに対する元の受信者がリストされます。

トランザクションを実行するユーザーには、適用オブジェクトに対してDML変更とDDL変更を実行する権限、および適用ハンドラを実行する権限が必要です。また、適用コンポーネントで使用されるキューに対するデキュー権限も必要です。

user_procedure

エラー・トランザクションを正しく実行できるように変更するユーザー定義プロシージャ。

NULLを指定すると、ユーザー・プロシージャを実行せずに、エラー・トランザクションが実行されます。

関連項目: ユーザー・プロシージャの詳細は、「使用上の注意」を参照してください。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- ユーザー・プロシージャ

- EXECUTE_ERRORプロシージャおよびXStreamアウトバウンド・サーバー

- EXECUTE_ERRORプロシージャおよびXStreamインバウンド・サーバー

ユーザー・プロシージャ

user_procedureパラメータには、完全なプロシージャ名を次のいずれかの形式で指定する必要があります。

- [schema_name.]package_name.procedure_name

- [schema_name.]procedure_name

プロシージャがパッケージ内にある場合は、package_nameを指定する必要があります。EXECUTE_ERRORプロシージャを起動するユーザーには、指定したプロシージャのEXECUTE権限が必要です。またschema_nameを指定しない場合は、EXECUTE_ERRORプロシージャを起動するユーザーの名前がデフォルトで使用されます。

たとえば、procedure_nameのプロパティが次のとおりであるとします。

- strmadminは、schema_nameです。

- fix_errorsは、package_nameです。

- fix_hr_errorsは、procedure_nameです。

この場合、次のように指定します。

strmadmin.fix_errors.fix_hr_errors

エラー処理用に作成するプロシージャには、次の署名が必要です。

PROCEDURE user_procedure (
in_anydata                    IN      ANYDATA,
error_record                  IN      DBA_APPLY_ERROR%ROWTYPE,
error_message_number          IN      NUMBER,
messaging_default_processing  IN OUT  BOOLEAN,
out_anydata                   OUT     ANYDATA);

ユーザー・プロシージャには、次のパラメータがあります。

- in_anydata: 適用コンポーネントによってプロシージャに渡されるメッセージをANYDATAにカプセル化したもの。1つのトランザクションに複数のメッセージを含めることができます。行論理変更レコード(行LCR)、DDL論理変更レコード(DDL LCR)またはユーザー・メッセージをメッセージにできます。

- error_record: トランザクションを識別するDBA_APPLY_ERRORデータ・ディクショナリ・ビューの行。

- error_message_number: in_anydataパラメータのANYDATAオブジェクトのメッセージ番号。1から始まります。

- messaging_default_processing: TRUEに設定すると、適用コンポーネントはin_anydataパラメータのメッセージの処理(DML文またはDDL文の実行、適用ハンドラの起動など)を続行します。
FALSEに設定すると、適用コンポーネントはin_anydataパラメータのメッセージの処理をスキップし、in_anydataパラメータの次のメッセージに移ります。

- out_anydata: messaging_default_processingがTRUEの場合にユーザー・プロシージャで処理され、適用コンポーネントで使用されるANYDATAオブジェクト。

LCRをユーザー・プロシージャ内のEXECUTE LCRメンバー・プロシージャを使用して実行すると、このLCRは直接実行されるため、messaging_default_processingパラメータをFALSEに設定する必要があります。この場合、LCRは適用ハンドラに渡されません。

ユーザー・プロシージャでエラー・トランザクションを処理すると、次のいずれかの結果になります。

- ユーザー・プロシージャによって、正しく実行できるようにトランザクションが変更される。

- 必要な変更をユーザー・プロシージャで実行できなかったため、トランザクションを実行しようとするとエラーが発生する。この場合、トランザクションは、ロールバックされ、エラー・キューに残ったままになります。

ユーザー・プロシージャには、次の制限事項が適用されます。

- COMMIT文またはROLLBACK文を実行しないでください。これらの文を実行すると、トランザクションの一貫性が失われる危険性があります。

- LCR内のLONG列、LONG RAW列またはLOB列のデータを変更しないでください。

- in_anydataパラメータ内のANYDATAオブジェクトが行LCRで、messaging_default_processingパラメータがTRUEに設定されている場合、out_anydataパラメータは行LCRである必要があります。

- in_anydataパラメータ内のANYDATAオブジェクトがDDL LCRで、messaging_default_processingパラメータがTRUEに設定されている場合、out_anydataパラメータはDDL LCRである必要があります。

- ユーザー・プロシージャを実行するユーザーには、DBA_APPLY_ERRORデータ・ディクショナリ・ビューに対するSELECTまたはREAD権限が必要です。

注意:
COMMIT、ROLLBACKなどのトランザクション・ディレクティブが含まれているLCRは、ユーザー・プロシージャに渡されません。

EXECUTE_ERRORプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーは、エラー・キューにエラー・トランザクションをエンキューしません。このプロシージャは、XStreamアウトバウンド・サーバーでは使用できません。

EXECUTE_ERRORプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

GET_ERROR_MESSAGEファンクション

このファンクションでは、指定したメッセージ番号とトランザクション識別子に対するメッセージ・ペイロードをエラー・キューから返します。メッセージは、LCR(論理変更レコード)メッセージまたは非LCRメッセージになります。

このファンクションはオーバーロードされています。このファンクションには、2つのOUTパラメータを持つバージョンがあります。その場合、2つのOUTパラメータには、メッセージをエンキューする宛先キューが存在していればそのキューを指定し、メッセージを実行するかどうかを指定します。宛先キューを指定する場合はSET_ENQUEUE_DESTINATIONプロシージャ、実行ディレクティブを指定する場合はSET_EXECUTEプロシージャを使用します。

関連項目:

- SET_ENQUEUE_DESTINATIONプロシージャ

- SET_EXECUTEプロシージャ

構文

DBMS_APPLY_ADM.GET_ERROR_MESSAGE(
message_number          IN   NUMBER,
local_transaction_id    IN   VARCHAR2,
destination_queue_name  OUT  VARCHAR2,
execute                 OUT  BOOLEAN)
RETURN ANYDATA;

DBMS_APPLY_ADM.GET_ERROR_MESSAGE(
message_number          IN   NUMBER,
local_transaction_id    IN   VARCHAR2)
RETURN ANYDATA;

パラメータ

表23-13 GET_ERROR_MESSAGEファンクションのパラメータ

パラメータ

説明

message_number

メッセージの識別番号。この番号によって、トランザクション内のメッセージの位置が識別されます。DBA_APPLY_ERRORデータ・ディクショナリ・ビューを問い合せて、各適用エラーのメッセージ番号を表示します。

local_transaction_id

メッセージを返すエラー・トランザクションの識別子。

destination_queue_name

メッセージをエンキューするキュー名を指定します。メッセージをキューにエンキューしない場合は、NULLを指定します。

execute

メッセージを実行する場合は、TRUEを指定します。

メッセージを実行しない場合は、FALSEを指定します。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- GET_ERROR_MESSAGEプロシージャおよびXStreamアウトバウンド・サーバー

- GET_ERROR_MESSAGEプロシージャおよびXStreamインバウンド・サーバー

GET_ERROR_MESSAGEプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーは、エラー・キューにエラー・トランザクションをエンキューしません。このプロシージャは、XStreamアウトバウンド・サーバーでは使用できません。

GET_ERROR_MESSAGEプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

REMOVE_STMT_HANDLER

このプロシージャは、特定のデータベース・オブジェクトに対して指定された操作の文DMLハンドラを単一の適用コンポーネントまたはデータベース内のすべての適用コンポーネントから削除します。

関連項目:

- 第162章「DBMS_STREAMS_HANDLER_ADM」

- 『Oracle Streams概要および管理』

構文

DBMS_APPLY_ADM.REMOVE_STMT_HANDLER(
object_name     IN  VARCHAR2,
operation_name  IN  VARCHAR2,
handler_name    IN  VARCHAR2,
apply_name      IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-14 REMOVE_STMT_HANDLERプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]object_nameの形式で指定したソース・オブジェクトの名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。指定するオブジェクトは、このプロシージャの実行時に存在している必要はありません。

NULLの場合は、エラーが発生します。

operation_name

操作名。次の操作名を指定できます。

- INSERT

- UPDATE

- DELETE

NULLの場合は、エラーが発生します。

handler_name

文DMLハンドラの名前。

NULLの場合は、エラーが発生します。

apply_name

文DMLハンドラを使用する適用コンポーネントの名前。

NULLを指定すると、データベース内のすべての適用コンポーネントから文DMLハンドラが削除されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- REMOVE_STMT_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

- REMOVE_STMT_HANDLERプロシージャおよびXStreamインバウンド・サーバー

REMOVE_STMT_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーでは、すべての適用ハンドラが無視されます。このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

REMOVE_STMT_HANDLERプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

SET_CHANGE_HANDLERプロシージャ

このプロシージャは、特定のデータベース・オブジェクトに対して指定された操作の変更を追跡する変更ハンドラを、単一の適用コンポーネントで設定または設定解除します。

変更ハンドラは、表の変更を追跡する特別なタイプの文DMLハンドラであり、DBMS_STREAMS_ADM.MAINTAIN_CHANGE_TABLEプロシージャまたはこのSET_CHANGE_HANDLERプロシージャのいずれかによって作成されました。変更ハンドラに関する情報は、ALL_APPLY_CHANGE_HANDLERSおよびDBA_APPLY_CHANGE_HANDLERSビューに格納されています。

このプロシージャは、プロシージャのパラメータで指定された値に基づいて変更ハンドラに追加される文を自動的に生成します。このプロシージャは、データベースの変更を追跡する構成が存在する場合のみ実行してください。

注意:
表の変更を追跡する環境を構成するには、MAINTAIN_CHANGE_TABLEプロシージャを使用します。

構文

DBMS_APPLY_ADM.SET_CHANGE_HANDLER(
change_table_name    IN  VARCHAR2,
source_table_name    IN  VARCHAR2,
capture_values       IN  VARCHAR2,
apply_name           IN  VARCHAR2,
operation_name       IN  VARCHAR2,
change_handler_name  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-15 SET_CHANGE_HANDLERプロシージャのパラメータ

パラメータ

説明

change_table_name

ソース・テーブルの変更を記録する表。

表は、[schema_name.]table_nameという形式で指定します。たとえば、hr.jobs_change_tableとなります。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLの場合は、エラーが発生します。

source_table_name

変更が記録されるソース・データベースの表。

表は、[schema_name.]table_nameという形式で指定します。たとえば、hr.jobsとなります。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLの場合は、エラーが発生します。

capture_values

ソース・テーブルで更新操作が実行されるときにチェンジ・テーブルに記録する値を指定します。

- old: ソース・テーブルで更新された列の元の値を記録します。

- new: ソース・テーブルで更新された列の新しい値を記録します。

- *: ソース・テーブルで更新された列の元の値と新しい値の両方を記録します。

NULLの場合は、エラーが発生します。

注意: 挿入操作では、新しい列値のみが取得されます。削除操作では、古い列値のみが取得されます。

apply_name

チェンジ・テーブルに変更を適用する適用コンポーネントの名前。所有者を指定しないでください。

NULLの場合は、エラーが発生します。

operation_name

操作名。次の操作名を指定できます。

- INSERT

- UPDATE

- DELETE

NULLの場合は、エラーが発生します。

注意: 変更ハンドラはLOB操作には指定できません。

change_handler_name

変更ハンドラの名前。

指定された変更ハンドラが存在する場合は、文が既存のハンドラに追加されます。既存の変更ハンドラが、operation_nameパラメータおよびsource_table_nameパラメータそれぞれに対する設定と同じ表の同じ操作に対応していることを確認します。既存のハンドラが異なる操作または表に対応する場合、ハンドラが起動されたときに適用エラーが発生します。

NULL以外が指定され、指定された変更ハンドラが存在しない場合、このプロシージャは変更ハンドラを作成します。

NULLが指定され、変更ハンドラが、operation_nameパラメータおよびsource_table_nameパラメータそれぞれに対する設定と同じ表の同じ操作に対して存在している場合、既存の変更ハンドラは削除されます。

NULLが指定され、指定された変更ハンドラが存在しない場合は、エラーが発生します。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 既存の変更ハンドラのチェック

- SET_CHANGE_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

- SET_CHANGE_HANDLERプロシージャおよびXStreamインバウンド・サーバー

既存の変更ハンドラのチェック

特定のソース・テーブルに対する特定の操作の既存の変更ハンドラをチェックするには、次の問合せを実行します。

SELECT HANDLER_NAME, APPLY_NAME FROM DBA_APPLY_CHANGE_HANDLERS
WHERE  operation_name     = 'operation'
AND  source_table_owner = 'source_table_owner'
AND  source_table_name  = 'source_table_name'
AND  change_table_owner = 'change_table_owner'
AND  change_table_name  = 'change_table_name';

各項目の意味は、次のとおりです。

- operationは新しいハンドラに対して指定される操作で、INSERT、UPDATEまたはDELETEのいずれかになります。

- source_table_ownerは、ソース・テーブルの所有者です。

- source_table_nameは、ソース・テーブルの名前です。

- change_table_ownerは、チェンジ・テーブルの所有者です。

- change_table_ownerは、チェンジ・テーブルの所有者です。

SET_CHANGE_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーでは、すべての適用ハンドラが無視されます。このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

SET_CHANGE_HANDLERプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

SET_DML_HANDLERプロシージャ

このプロシージャは、ユーザー・プロシージャを、特定のデータベース・オブジェクトに対して指定された操作のプロシージャDMLハンドラとして、単一の適用コンポーネントまたはデータベース内のすべての適用コンポーネントで設定または設定解除します。このユーザー・プロシージャは、特定のオブジェクトに対して指定された操作の適用動作を変更します。

構文

DBMS_APPLY_ADM.SET_DML_HANDLER(
object_name          IN  VARCHAR2,
object_type          IN  VARCHAR2,
operation_name       IN  VARCHAR2,
error_handler        IN  BOOLEAN   DEFAULT FALSE,
user_procedure       IN  VARCHAR2,
apply_database_link  IN  VARCHAR2  DEFAULT NULL,
apply_name           IN  VARCHAR2  DEFAULT NULL,
assemble_lobs        IN  BOOLEAN   DEFAULT TRUE);

パラメータ

表23-16 SET_DML_HANDLERプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]object_nameの形式で指定したソース・オブジェクトの名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。指定するオブジェクトは、このプロシージャの実行時に存在している必要はありません。

object_type

ソース・オブジェクトのタイプ。現在、指定できるソース・オブジェクトのタイプはTABLEのみです。

operation_name

操作名。次の操作名を指定できます。

- INSERT

- UPDATE

- DELETE

- LOB_UPDATE

- DEFAULT

たとえば、hr.employees表に対してこのプロシージャを2回実行するとします。1回目のコールで、operation_nameをUPDATE、user_procedureをemployees_updateに設定します。2回目のコールでは、operation_nameをINSERT、user_procedureをemployees_insertに設定します。両方とも、error_handlerをFALSEに設定します。この場合、hr.employees表のUPDATE操作に対してemployees_updateプロシージャが実行され、hr.employees表のINSERT操作に対してはemployees_insertプロシージャが実行されます。

このプロシージャをデータベース・オブジェクトのデフォルトのプロシージャDMLハンドラとして設定するには、DEFAULTを指定します。これにより、データベース・オブジェクトでの操作用に別のプロシージャDMLハンドラが設定されていない場合は、このデフォルトのプロシージャDMLハンドラがデータベース・オブジェクトのINSERT、UPDATE、DELETEおよびLOB_WRITEに対して使用されます。

error_handler

TRUEに設定すると、指定オブジェクトでの指定操作に関連する行論理変更レコード(行LCR)で適用エラーが発生したときに、指定したユーザー・プロシージャが実行されます。このユーザー・プロシージャは、潜在的なエラー条件の解決、管理者へのエラー通知、エラーのログの記録またはこれらの処理を任意に組み合せて実行するようにコード化できます。

FALSEに設定すると、指定オブジェクトでの指定操作に関連するすべての行LCRに対して、設定されているハンドラが実行されます。

user_procedure

指定オブジェクトでの指定操作に対する適用時に起動されるユーザー定義プロシージャ。プロシージャがプロシージャDMLハンドラの場合は、Oracleで実行されるデフォルト適用のかわりに起動されます。プロシージャがエラー・ハンドラの場合は、適用エラーが発生したときに起動されます。

指定オブジェクトでの指定操作で起動されるプロシージャDMLハンドラを設定解除する場合は、NULLを指定します。

apply_database_link

Oracle以外のデータベースへのデータベース・リンクの名前。このパラメータは、接続先データベースがOracle以外のデータベースの場合にのみ設定する必要があります。

apply_name

プロシージャDMLハンドラまたはエラー・ハンドラを使用する適用コンポーネントの名前。

NULLを指定すると、データベース内のすべての適用コンポーネントに対する汎用ハンドラとして、プロシージャDMLハンドラまたはエラー・ハンドラが設定されます。

user_procedureパラメータにNULLを指定してハンドラの設定を解除するときに、設定解除するハンドラが特定の適用コンポーネントに対して設定されている場合は、apply_nameパラメータを使用して、ハンドラの設定を解除する適用コンポーネントを指定します。

assemble_lobs

TRUEに設定すると、ハンドラで処理される、LCR内のLOB列に対してLOBアセンブリが使用されます。LOBアセンブリは、1つの行変更によって生成されたLOB列の複数のLCRを、1つの行LCRにまとめてハンドラに渡します。LOBアセンブリを使用するには、データベース互換性が10.2.0以上である必要があります。

FALSEに設定すると、ハンドラで処理される、LCR内のLOB列に対してLOBアセンブリは使用されません。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 接続先データベースでのSET_DML_HANDLERプロシージャの実行

- プロシージャDMLハンドラおよびエラー・ハンドラ

- apply_nameパラメータ

- DMLハンドラ・プロシージャまたはエラー・ハンドラ・プロシージャの署名

- LOBアセンブリ

- SET_DML_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

- SET_DML_HANDLERプロシージャおよびXStreamインバウンド・サーバー

接続先データベースでのSET_DML_HANDLERプロシージャの実行

このプロシージャは、接続先データベースで実行します。SET_DML_HANDLERプロシージャは、カスタマイズされた適用を使用して、DML変更(行LCR)が含まれる論理変更レコードを適用する方法をユーザーに提供します。

プロシージャDMLハンドラおよびエラー・ハンドラ

error_handlerパラメータをTRUEに設定すると、ユーザー・プロシージャがエラー・ハンドラとして指定されます。エラー・ハンドラは、行LCRで適用エラーが発生したときに起動されます。このようなエラーは、競合ハンドラが指定されていないか、または更新競合ハンドラで競合を解消できない場合に、データ競合が原因で発生する可能性があります。error_handlerパラメータをFALSEに設定すると、ユーザー・プロシージャはエラー・ハンドラではなくプロシージャDMLハンドラとして指定され、指定オブジェクトで指定操作を実行するかわりに、プロシージャDMLハンドラが常に実行されます。

このプロシージャは、オブジェクトでの特定操作に対して、プロシージャDMLハンドラまたはエラー・ハンドラのいずれかを設定します。同じオブジェクトと操作に対して、プロシージャDMLハンドラとエラー・ハンドラの両方は設定できません。

注意:
現在、Oracle以外のデータベースに変更を適用している適用コンポーネントに対するエラー・ハンドラの設定はサポートされていません。

apply_nameパラメータ

apply_nameパラメータがNULL以外の場合は、指定した適用コンポーネントにプロシージャDMLハンドラまたはエラー・ハンドラが設定されます。この場合、設定されたハンドラは、ローカルの接続先データベースで他の適用コンポーネントに対して起動されません。apply_nameパラメータがNULL(デフォルト)の場合は、接続先データベースのすべての適用コンポーネントに対する汎用ハンドラとして、ハンドラが設定されます。特定の適用コンポーネントに対して設定されたハンドラは、すべての汎用ハンドラに優先します。たとえば、次の状況を想定します。

- 表hr.employeesに対するUPDATE操作のapply_hrという適用コンポーネントに対して、handler_hrというプロシージャDMLハンドラが指定されている。

- 表hr.employeesに対するUPDATE操作には、handler_genという汎用プロシージャDMLハンドラも存在する。

この場合、apply_hr適用コンポーネントは、hr.employees表のUPDATE操作にhandler_hrプロシージャDMLハンドラを使用します。

ソース・データベースでは、DMLハンドラまたはエラー・ハンドラで必要な列に対して、絶対的なサプリメンタル・ログ・グループを指定する必要があります。

DMLハンドラ・プロシージャまたはエラー・ハンドラ・プロシージャの署名

SET_DML_HANDLERプロシージャを使用すると、指定オブジェクトで指定操作を実行する行LCRに対して、プロシージャDMLハンドラまたはエラー・ハンドラのいずれかを設定できます。次の項では、DMLハンドラ・プロシージャの署名およびエラー・ハンドラ・プロシージャの署名について説明します。

どちらの場合も、次のいずれかの形式でuser_procedureパラメータに完全なプロシージャ名を指定する必要があります。

- [schema_name.]package_name.procedure_name

- [schema_name.]procedure_name

プロシージャがパッケージ内にある場合は、package_nameを指定する必要があります。SET_DML_HANDLERプロシージャを起動するユーザーには、指定したプロシージャのEXECUTE権限が必要です。また、schema_nameを指定しない場合は、SET_DML_HANDLERプロシージャの起動ユーザー名がデフォルトで使用されます。

たとえば、procedure_nameのプロパティが次のとおりであるとします。

- hrは、schema_nameです。

- apply_pkgは、package_nameです。

- employees_defaultは、procedure_nameです。

この場合、次のように指定します。

hr.apply_pkg.employees_default

ユーザー・プロシージャには、次の制限事項が適用されます。

- COMMIT文またはROLLBACK文を実行しないでください。これらの文を実行すると、LCRが含まれるトランザクションの一貫性が失われる危険性があります。

- 行LCRに対してEXECUTEメンバー・プロシージャを使用して行を操作している場合は、1つの行操作で複数行を操作しないでください。複数行を操作するDML文は、手動で構成および実行する必要があります。

- コマンド・タイプがUPDATEまたはDELETEの場合、LCRに対してEXECUTEメンバー・プロシージャを使用して再実行される行操作では、以前の値リストにキー全体が含まれている必要があります。SET_KEY_COLUMNSプロシージャで代替キーが指定されていないかぎり、キーは主キーであるか、少なくとも1つのNOT NULL列を持つ一意の最小の索引になります。キーを指定しない場合は、LOB列、LONG列およびLONG RAW列以外のすべての列によってキーが構成されます。

- コマンド・タイプがINSERTの場合、LCRに対してEXECUTEメンバー・プロシージャを使用して再実行される行操作では、新規の値リストにキー全体が含まれている必要があります。キー全体が組み込まれていない場合は、行が重複する可能性があります。SET_KEY_COLUMNSプロシージャで代替キーが指定されていないかぎり、キーは主キーであるか、少なくとも1つのNOT NULL列を持つ一意の最小の索引になります。指定されたキーがない場合、キーは、LOB、LONG、LONG RAW、ユーザー定義タイプ(オブジェクト・タイプ、REF、VARRAY、ネストした表)およびオラクル社提供のタイプ(任意のタイプ、XMLタイプ、空間タイプ、メディア・タイプ)などのデータ・タイプの列を除くすべての表の列で構成されます。

関連項目:
プロシージャDMLハンドラおよびデータ・タイプ(LOB、LONG、LONG RAW)の詳細と制限は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

user_procedureパラメータに指定されるプロシージャには、次の署名が必要です。

PROCEDURE user_procedure (
parameter_name  IN  ANYDATA);

user_procedureはプロシージャ名、parameter_nameはプロシージャに渡されるパラメータ名を表します。プロシージャに渡されるパラメータは、行LCRをANYDATAにカプセル化したものです。

関連項目:
LCRの詳細は、第275章「論理変更レコードのタイプ」を参照してください。

エラー処理用に作成するプロシージャには、次の署名が必要です。

PROCEDURE user_procedure (
message            IN  ANYDATA,
error_stack_depth  IN  NUMBER,
error_numbers      IN  DBMS_UTILITY.NUMBER_ARRAY,
error_messages     IN  emsg_array);

エラー・ハンドラ内でDML操作を再試行する場合は、エラー・ハンドラ・プロシージャで、LCRに対してEXECUTEメンバー・プロシージャを実行してください。最後に発生したエラーがエラー・スタックの一番上にあります。エラー・スタックの一番上のエラー・メッセージを指定するには、error_numbers(1)およびerror_messages(1)を使用します。

注意:

- 各パラメータは必須で、指定のデータ・タイプであることが必要です。ただし、パラメータの名前は変更できます。

- emsg_array値はユーザー定義配列で、76文字以上のVARCHAR2タイプの表であることが必要です。

エラー・ハンドラを実行すると、次のいずれかの結果になります。

- エラー・ハンドラがエラーを正常に解決し、適用コンポーネントに制御を戻します。

- エラー・ハンドラがエラーを解決できず、エラーが発生します。エラーが発生すると、トランザクションはロールバックされ、エラー・キューに入れられます。

LOBアセンブリ

プロシージャDMLハンドラ、エラー・ハンドラおよびカスタム・ルールベースの変換ファンクションで、LCR内のLONG列、LONG RAW列およびアセンブルされていないLOB列のデータを変更しないでください。LOBアセンブリによって作成された行LCR内のLOB列は、プロシージャDMLハンドラおよびエラー・ハンドラで変更できます。

SET_DML_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーでは、すべての適用ハンドラが無視されます。このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

SET_DML_HANDLERプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

SET_ENQUEUE_DESTINATIONプロシージャ

このプロシージャでは、指定したルールを満たすメッセージが適用コンポーネントによって自動的にエンキューされるキューを設定します。

このプロシージャによって、指定したルールのアクション・コンテキストを変更し、キューを指定します。ルールのアクション・コンテキストは、ルールがメッセージに対してTRUEに評価された後、ルール・エンジンのクライアントが解析するルールに関連付けられているオプションの情報です。この場合、ルール・エンジンのクライアントは適用コンポーネントです。アクション・コンテキスト内の情報はSYS.RE$NV_LISTタイプのオブジェクトであり、名前/値ペアで構成されています。

このプロシージャで指定するキューの宛先は、アクション・コンテキスト内の次の名前/値ペアで常に構成されます。

- 名前は、APPLY$_ENQUEUEです。

- 値は、VARCHAR2として指定されたキュー名を格納するANYDATAインスタンスです。

構文

DBMS_APPLY_ADM.SET_ENQUEUE_DESTINATION(
rule_name               IN  VARCHAR2,
destination_queue_name  IN  VARCHAR2);

パラメータ

表23-17 SET_ENQUEUE_DESTINATIONプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。たとえば、hrスキーマのhr5という名前のルールを指定するには、このパラメータにhr.hr5と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

適用コンポーネントがメッセージをエンキューするキューの名前。キューを[schema_name.]queue_nameの形式で指定します。ローカル・キューのみを指定できます。

たとえば、hrスキーマ内のstreams_queueという名前のキューを指定するには、hr.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLを指定すると、名前APPLY$_ENQUEUEを持つ既存の名前/値ペアが削除されます。名前APPLY$_ENQUEUEを持つ名前/値ペアがルールに対して存在しない場合、アクションは実行されません。

NULL以外を指定したときに、名前APPLY$_ENQUEUEを持つ名前/値ペアがルールに対して存在する場合は、それが削除され、このパラメータで指定する値を持つ新しい名前/値ペアが追加されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- SET_ENQUEUE_DESTINATIONプロシージャおよび適用ハンドラ

- SET_ENQUEUE_DESTINATIONプロシージャに関する注意事項

- SET_ENQUEUE_DESTINATIONプロシージャおよびXStreamアウトバウンド・サーバー

- SET_ENQUEUE_DESTINATIONプロシージャおよびXStreamインバウンド・サーバー

SET_ENQUEUE_DESTINATIONプロシージャおよび適用ハンドラ

プロシージャDMLハンドラ、DDLハンドラ、メッセージ・ハンドラなどの適用ハンドラは、宛先キューにもエンキューされるメッセージを処理する場合、そのメッセージがエンキューされる前に処理します。

SET_ENQUEUE_DESTINATIONプロシージャに関する注意事項

このプロシージャを使用する場合は、次の点に注意してください。

- このプロシージャでは、指定したキューが存在するかどうかを確認しません。キューが存在しない場合、適用コンポーネントがメッセージをエンキューしようとするとエラーが発生します。

- Oracle Streamsの取得プロセス、伝播、メッセージ・クライアントは、このプロシージャによって作成されるアクション・コンテキストを無視します。

- 指定したルールを使用する適用コンポーネントの適用ユーザーには、指定したキューにメッセージをエンキューできる権限が必要です。キューが保護キューの場合、適用ユーザーはキューの保護キュー・ユーザーである必要があります。

- 指定したルールは、適用コンポーネントのポジティブ・ルール・セットである必要があります。ルールが適用コンポーネントのネガティブ・ルール・セットに含まれる場合、適用コンポーネントはメッセージを宛先キューにエンキューしません。

- メッセージのコミットSCNがメッセージの関連インスタンス化SCN以下の場合、そのメッセージは、適用コンポーネント・ルール・セットを満たしている場合でも、宛先キューにエンキューされません。

SET_ENQUEUE_DESTINATIONプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

SET_ENQUEUE_DESTINATIONプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

SET_EXECUTEプロシージャ

このプロシージャでは、指定したルールを満たすメッセージを適用コンポーネントによって実行するかどうかを指定します。

このプロシージャによって、指定したルールのアクション・コンテキストを変更し、メッセージの実行を指定します。ルールのアクション・コンテキストは、ルールがメッセージに対してTRUEに評価された後、ルール・エンジンのクライアントが解析するルールに関連付けられているオプションの情報です。この場合、ルール・エンジンのクライアントは適用コンポーネントです。アクション・コンテキスト内の情報はSYS.RE$NV_LISTタイプのオブジェクトであり、名前/値ペアで構成されています。

このプロシージャで指定するメッセージ実行ディレクティブは、アクション・コンテキスト内の次の名前/値ペアで常に構成されます。

- 名前は、APPLY$_EXECUTEです。

- 値は、VARCHAR2としてNOを格納するANYDATAインスタンスです。値がNOの場合、適用コンポーネントはメッセージを実行せず、メッセージを適用ハンドラに送りません。

構文

DBMS_APPLY_ADM.SET_EXECUTE(
rule_name  IN  VARCHAR2,
execute    IN  BOOLEAN);

パラメータ

表23-18 SET_EXECUTEプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。たとえば、hrスキーマのhr5という名前のルールを指定するには、このパラメータにhr.hr5と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

execute

TRUEの場合、指定したルールにおいて、名前APPLY$_EXECUTEを持つ名前/値ペアが削除されます。名前/値ペアを削除することは、ルールを満たすメッセージを適用コンポーネントが実行することです。名前APPLY$_EXECUTEを持つ名前/値ペアがルールに対して存在しない場合、アクションは実行されません。

FALSEの場合、ルールのアクション・コンテキストに名前/値ペアが追加されます。名前はAPPLY$_EXECUTEで、値はNOです。適用コンポーネントは、ルールを満たすメッセージを実行せず、メッセージを適用ハンドラに送りません。名前APPLY$_EXECUTEを持つ名前/値ペアがルールに対して存在する場合は、それが削除され、値NOを持つ新しい名前/値ペアが追加されます。

NULLの場合は、エラーが発生します。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- SET_EXECUTEプロシージャに関する注意事項

- SET_EXECUTEプロシージャおよびXStreamアウトバウンド・サーバー

- SET_EXECUTEプロシージャおよびXStreamインバウンド・サーバー

SET_EXECUTEプロシージャに関する注意事項

このプロシージャを使用する場合は、次の点に注意してください。

- メッセージが論理変更レコード(LCR)のときにそのメッセージが実行されない場合、関連するローカル・データベース・オブジェクトに対して、LCRにカプセル化された変更は実行されません。また、メッセージが実行されない場合、そのメッセージは適用ハンドラに送られません。

- Oracle Streamsの取得プロセス、伝播、メッセージ・クライアントは、このプロシージャによって作成されるアクション・コンテキストを無視します。

- 指定したルールは、適用コンポーネントのポジティブ・ルール・セット内に存在して実行ディレクティブに従う必要があります。ルールが適用コンポーネントのネガティブ・ルール・セットに含まれる場合、適用コンポーネントはルールの実行ディレクティブを無視します。

SET_EXECUTEプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

SET_EXECUTEプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

SET_GLOBAL_INSTANTIATION_SCNプロシージャ

このプロシージャでは、指定したソース・データベースに対して、およびオプションで、ソース・データベースのスキーマとそのスキーマが所有する表に対して、指定したインスタンス化SCNを記録します。このプロシージャは、データベースの既存のインスタンス化SCNを上書きしますが、スキーマまたは表のインスタンス化SCNを設定する場合は、スキーマまたは表の既存のインスタンス化SCNを上書きします。

このプロシージャを使用すると、ソース・データベースのDDL論理変更レコード(DDL LCR)の中で、適用コンポーネントで無視するものと適用するものを正確に制御できます。

構文

DBMS_APPLY_ADM.SET_GLOBAL_INSTANTIATION_SCN(
source_database_name  IN  VARCHAR2,
instantiation_scn     IN  NUMBER,
apply_database_link   IN  VARCHAR2  DEFAULT NULL,
recursive             IN  BOOLEAN   DEFAULT FALSE,
source_root_name      IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-19 SET_GLOBAL_INSTANTIATION_SCNプロシージャのパラメータ

パラメータ

説明

source_database_name

ソース・データベースのグローバル名。たとえば、DBS1.NETのようになります。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名がNETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

instantiation_scn

インスタンス化SCN。NULLを指定すると、ソース・データベースに対するインスタンス化SCNのメタデータがデータ・ディクショナリから削除されます。

apply_database_link

Oracle以外のデータベースへのデータベース・リンクの名前。このパラメータは、ローカル適用コンポーネントの接続先データベースがOracle以外のデータベースの場合にのみ設定する必要があります。

recursive

TRUEの場合、ソース・データベース、ソース・データベースのすべてのスキーマ、ソース・データベースのスキーマが所有するすべての表に対して、インスタンス化SCNが設定されます。このプロシージャは、現行のユーザーのセキュリティ・コンテキストの下のソース・データベースにおいて、ALL_USERSデータ・ディクショナリ・ビューからスキーマを、ALL_TABLESデータ・ディクショナリ・ビューから表を選択します。

FALSEの場合、ソース・データベースのグローバル・インスタンス化SCNは設定されますが、スキーマまたは表のインスタンス化SCNは設定されません。

注意: recursiveをTRUEに設定する場合は、接続先データベースからソース・データベースへのデータベース・リンクが必要です。その場合、データベース・リンクにはソース・データベースのグローバル名と同じ名前を付けて、現行のユーザーからアクセスできるようにしてください。また、このプロシージャで接続先データベースの表にインスタンス化SCNを設定するには、ソース・データベースのALL_TABLESまたはDBA_TABLESデータ・ディクショナリ・ビューの現行のユーザーから表にアクセスできるようにしてください。

source_root_name

ソース・ルート・データベースのグローバル名。

CDB以外の場合、このパラメータはNULLである必要があります。

CDBで特定のコンテナをインスタンス化する場合は、source_databaseとsource_root_nameを両方とも指定する必要があります。CDBのすべてのコンテナをインスタンス化する場合は、データベースのsource_root_nameを指定してから、source_database名をNULLとして残します。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- インスタンス化SCNおよびDDL LCR

- recursiveパラメータ

- SET_GLOBAL_INSTANTIATION_SCNプロシージャに関する注意事項

- SET_GLOBAL_INSTANTIATION_SCNプロシージャおよびXStreamアウトバウンド・サーバー

- SET_GLOBAL_INSTANTIATION_SCNプロシージャおよびXStreamインバウンド・サーバー

- SET_GLOBAL_INSTANTIATION_SCNプロシージャおよびCDB

関連項目:

- SET_SCHEMA_INSTANTIATION_SCNプロシージャ

- SET_TABLE_INSTANTIATION_SCNプロシージャ

- DDL LCRの詳細は、「LCR$_DDL_RECORDタイプ」を参照してください。

- 『Oracle Streamsレプリケーション管理者ガイド』

インスタンス化SCNおよびDDL LCR

ソース・データベースからのデータベース・オブジェクトに対するDDL LCRのコミットSCNが、接続先データベースでそのソース・データベースに対するインスタンス化SCN以下の場合は、接続先データベースでの適用コンポーネントで、そのDDL LCRは無視されます。それ以外の場合は、DDL LCRが適用されます。

このプロシージャで指定するグローバル・インスタンス化SCNがDDL LCRに対して使用されるのは、object_owner、base_table_ownerおよびbase_table_nameがDDL LCRに指定されていない場合のみです。たとえば、このプロシージャによって設定されるグローバル・インスタンス化SCNは、command_typeがCREATE USERのDDL LCRに使用されます。

recursiveパラメータ

recursiveパラメータをTRUEに設定すると、このプロシージャは、ソース・データベースの各スキーマおよびそのスキーマが所有している表にインスタンス化SCNを設定します。このプロシージャでは、スキーマにインスタンス化SCNを設定する場合はSET_SCHEMA_INSTANTIATION_SCNプロシージャ、表にインスタンス化SCNを設定する場合はSET_TABLE_INSTANTIATION_SCNプロシージャを使用します。スキーマのDDL LCRにはスキーマのインスタンス化SCNが使用され、表のDDL LCRと行LCRには表のインスタンス化SCNが使用されます。

recursiveパラメータをFALSEに設定すると、スキーマや表にはインスタンス化SCNが設定されません。

SET_GLOBAL_INSTANTIATION_SCNプロシージャに関する注意事項

このプロシージャを使用する場合は、次の点に注意してください。

- このプロシージャによって指定されるインスタンス化SCNは、取得プロセスによって取得されたLCRに対してのみ使用されます。ユーザーが作成したLCRには使用されません。

- インスタンス化SCNは、SYSスキーマやSYSTEMスキーマには設定できません。

SET_GLOBAL_INSTANTIATION_SCNプロシージャおよびXStreamアウトバウンド・サーバー

インスタンス化SCNは、アウトバウンド・サーバーによって処理されるデータベース・オブジェクトには不要です。インスタンス化SCNをデータベース・オブジェクトに対して設定すると、アウトバウンド・サーバーでは、インスタンス化SCN値より大きいSCN値を持つデータベース・オブジェクトのLCRのみが送信されます。データベース・オブジェクトにインスタンス化SCNセットが含まれない場合、アウトバウンド・サーバーでは、インスタンス化SCNのチェックがスキップされ、そのデータベース・オブジェクトのすべてのLCRが送信されます。いずれの場合も、アウトバウンド・サーバーでは、そのルール・セットを満たすLCRのみが送信されます。

このプロシージャでアウトバウンド・サーバーのインスタンス化SCNを設定するには、apply_database_linkパラメータをNULLまたはローカル・データベースに設定する必要があります。

関連項目:
アウトバウンド・サーバーおよびインスタンス化SCNの詳細は、Oracle DatabaseのXStreamガイドを参照してください。

SET_GLOBAL_INSTANTIATION_SCNプロシージャおよびXStreamインバウンド・サーバー

インバウンド・サーバーでは、インスタンス化SCNは無視されます。このプロシージャは、XStreamインバウンド・サーバーに影響を与えません。

SET_GLOBAL_INSTANTIATION_SCNプロシージャおよびCDB

CDBでは、このプロシージャは、インスタンス化のSCN情報を使用する適用プロセスと同一のコンテナから起動する必要があります。

SET_KEY_COLUMNSプロシージャ

このプロシージャでは、適用の目的で代替主キーとして使用される列セットを記録し、指定オブジェクトに対する既存の代替主キー列が存在する場合は、それを削除します。

このプロシージャはオーバーロードされています。column_listパラメータとcolumn_tableパラメータは、両方同時には指定できません。

構文

DBMS_APPLY_ADM.SET_KEY_COLUMNS(
object_name          IN  VARCHAR2,
column_list          IN  VARCHAR2,
apply_database_link  IN  VARCHAR2  DEFAULT NULL);

DBMS_APPLY_ADM.SET_KEY_COLUMNS(
object_name          IN  VARCHAR2,
column_table         IN  DBMS_UTILITY.NAME_ARRAY,
apply_database_link  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-20 SET_KEY_COLUMNSプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。適用コンポーネントが異機種環境のOracle以外のデータベースに変更を適用している場合、オブジェクト名は検証されません。

column_list

代替主キーとして使用する、表内の列のカンマで区切られたリスト。列名の間に空白は入れません。

column_listパラメータが空またはNULLの場合は、現行のキー列のセットが削除されます。

column_table

代替主キーとして使用する、表内の列のDBMS_UTILITY.NAME_ARRAYタイプのPL/SQL連想配列。column_tableの索引は1から始まり、1ずつ増え、NULLで終了する必要があります。

column_tableパラメータが空またはNULLの場合は、現行のキー列のセットが削除されます。

apply_database_link

Oracle以外のデータベースへのデータベース・リンクの名前。このパラメータは、接続先データベースがOracle以外のデータベースの場合にのみ設定する必要があります。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- SET_KEY_COLUMNSプロシージャに関する注意事項

- 重複行と代替主キー列

- SET_KEY_COLUMNSプロシージャおよびXStreamアウトバウンド・サーバー

- SET_KEY_COLUMNSプロシージャおよびXStreamインバウンド・サーバー

- SET_KEY_COLUMNSプロシージャおよびCDB

SET_KEY_COLUMNSプロシージャに関する注意事項

このプロシージャを使用する場合は、次の点に注意してください。

- 空でない場合、指定列セットは、指定オブジェクトの主キーより優先されます。オブジェクトに主キー列があり、これらの主キー列をキーとして使用する場合は、代替キー列を指定しないでください。

- このプロシージャは、接続先データベースで実行します。ソース・データベースでは、代替キー列に対して絶対的なサプリメンタル・ログ・グループを指定する必要があります。

- 本来の主キーとは異なり、代替キー列として指定する列にはNULLを含めることができます。ただし、代替キー列として指定する各列はNOT NULL列にすることをお薦めします。また、すべての列を代替キーに含める単一の索引も作成してください。これらのガイドラインに従うと、Oracleは関連する行をさらに効率的に検索できるため、LOBに対する更新、削除およびピース単位の更新のパフォーマンスが向上します。

- 表の主キー列または代替キー列は、アプリケーションで更新できないようにしてください。更新できないようにすることにより、Oracleは行を識別でき、データの整合性を保つことができます。

- 主キーも、少なくとも1つのNOT NULL列がある一意の索引も、表の代替キーもない場合、キーは、LOB、LONG、LONG RAW、ユーザー定義タイプ(オブジェクト・タイプ、REF、VARRAY、ネストした表)およびオラクル社提供のタイプ(任意のタイプ、XMLタイプ、空間タイプ、メディア・タイプ)などのデータ・タイプの列を除くすべての表の列で構成されます。

重複行と代替主キー列

表の複数の行で、LOB列、LONG列およびLONG RAW列を除くすべての列値が同じ場合、その表には重複行が含まれています。SET_KEY_COLUMNSプロシージャを使用すると、接続先データベースの表に、代替主キー列を指定できます。接続先データベースの重複行を持つ表に対して代替主キー列が指定され、適用コンポーネント・パラメータallow_duplicate_rowsがYに設定されている場合、ソース・データベースと接続先データベースで表データを同期させるには、次の要件を満たしている必要があります。

- 接続先データベースの代替キー列として指定されている列に対して、ソース・データベースでサプリメンタル・ロギングを必ず指定すること。代替キー列は、ソース・データベースの無条件のログ・グループに含まれている必要があります。

- 代替キー列によって、接続データベースの表内の各行が一意に識別されること。

この項の後半では、これらの要件の詳細を説明します。

表にキーがなく、allow_duplicate_rows適用コンポーネント・パラメータがYに設定されている場合、UPDATEまたはDELETEコマンド・タイプのみを持つ単一の行LCRは、いずれかの重複行に適用されます。この場合、ソース・データベースのすべての重複行が変更される変更を行う際にソース・データベースの表および接続先データベースの表に対応する重複行が存在すると、その変更の結果生成された行LCRの適用時に、接続先データベースのすべての重複行も変更されます。

たとえば、ソース・データベースの表に2つの重複行があるとします。それらの重複行に対して更新を行うと、2つの行LCRが生成されます。接続先データベースでは、1つの行LCRが重複行の1つに適用されます。重複行の1つが変更されたため、この時点で、接続先データベースに重複行は存在しなくなります。接続先データベースで2番目の行LCRが適用されると、行は再度重複することになります。同様に、ソース・データベースのこれらの重複行に対して削除を実行すると、ソースの変更の結果生成された行LCRの適用時に、接続先データベースの両方の行が削除されます。

表に対して代替主キー列が指定されている場合、行LCRは、代替主キー列に基づいて適用時に表内の行で識別されます。接続先データベースの重複行を持つ表に対して代替主キー列が指定され、適用コンポーネント・パラメータallow_duplicate_rowsがYに設定されている場合、ソース・データベースの重複行に対して行った更新の内容が、接続先データベースで行LCRが適用される際の変更の内容と異なることがあります。特に、代替主キー列として指定されている列の1つが更新によって変更されない場合、接続先データベースでは、同じ重複行が複数回更新され、他の重複行が更新されないことがあります。

また、接続先データベースの表内の各行が代替キー列によって一意に識別されない場合は、複数行で識別される行LCRで、それらの行のいずれかを更新できます。この場合、行LCR内の更新内容が、接続先データベースの表の正しい行に適用されない可能性があります。

適用コンポーネントでは、表内の行が重複しているかどうかを判断する場合、代替主キー列は無視されます。適用コンポーネントでは、行内のLOB列、LONG列およびLONG RAW列を除くすべての列値が同じ場合にのみ、行が重複していると判断されます。したがって、1回の更新または削除によって、表内の重複していない複数の行が変更されると、常にエラーが発生します。

たとえば、列c1、c2およびc3を持つ表で、列c1を代替主キーとして指定するためにSET_KEY_COLUMNSプロシージャが使用されているとします。2つの行のc1列のキー値が同じで、c2列またはc3列の値が異なっている場合、適用コンポーネントでは、これらの行は重複行として処理されません。行のc1値が同じであるため、更新または削除によって複数の行が変更される場合は、allow_duplicate_rows適用コンポーネント・パラメータの設定に関係なく、エラーが発生します。

関連項目:
allow_duplicate_rows適用コンポーネント・パラメータの詳細は、「SET_PARAMETERプロシージャ」を参照してください。

SET_KEY_COLUMNSプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

SET_KEY_COLUMNSプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

SET_KEY_COLUMNSプロシージャおよびCDB

このプロシージャは、代替主キーとして使用される列を定義します。適切なPDBで、SET_KEY_COLUMNSプロシージャを実行する必要があります。

SET_PARAMETERプロシージャ

このプロシージャでは、適用パラメータを指定した値に設定します。

構文

DBMS_APPLY_ADM.SET_PARAMETER (
apply_name  IN  VARCHAR2,
parameter   IN  VARCHAR2,
value       IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-21 SET_PARAMETERプロシージャのパラメータ

パラメータ

説明

apply_name

適用コンポーネント名。所有者を指定しないでください。

parameter

設定するパラメータの名前。これらのパラメータのリストについては、「適用コンポーネントのパラメータ」を参照してください。

value

パラメータに設定する値。

NULLの場合、パラメータはデフォルト値に設定されます。

適用コンポーネントのパラメータ

次の表に、適用コンポーネントのパラメータを示します。

表23-22 適用コンポーネントのパラメータ

パラメータ名

設定可能な値

デフォルト

説明

allow_duplicate_rows

YまたはN

N

Yの場合、UPDATEまたはDELETEコマンド・タイプを持つ単一の行論理変換レコード(行LCR)によって複数の行が変更されていると、適用コンポーネントではそれらの行の中の1行のみが更新または削除されます。

Nの場合、適用コンポーネントでは、表内の複数の行を変更する、UPDATEまたはDELETEコマンド・タイプを持つ単一行LCRが検出されると、エラーが発生します。

注意: このパラメータの設定に関係なく、適用コンポーネントでは、LOB列、LONG列またはLONG RAW列が含まれている表の重複行に対して変更を行うことはできません。

関連項目: 「使用上の注意」および「重複行と代替主キー列」

apply_sequence_nextval

YまたはN

N(適用プロセスの場合)

Y(XStreamアウトバウンド・サーバーおよびXStreamインバウンド・サーバーの場合)

適用コンポーネントによって順序値をチェックおよび調整するかどうかを制御します。

Yの場合、適用コンポーネントによって順序値がチェックおよび調整されます。

昇順の順序では、このパラメータをYに設定すると、接続先の順序値が必ずソースの順序値以上になります。

降順の順序では、このパラメータをYに設定すると、接続先の順序値が必ずソースの順序値以下になります。

Nの場合、適用コンポーネントによって順序値はチェックまたは調整されません。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境の適用プロセスに対してこのパラメータをYに設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: capture_sequence_nextval取得プロセス・パラメータの詳細は、「SET_PARAMETERプロシージャ」を参照してください。

commit_serialization

DEPENDENT_TRANSACTIONSまたはFULL

DEPENDENT_TRANSACTIONS

適用済トランザクションがコミットされる順序。

適用サーバーは、ソース・データベースでのコミット時と異なる順で、接続先データベースで非依存トランザクションを適用できます。依存トランザクションは、ソース・データベースでのコミット時と常に同じ順序で、接続先データベースで適用されます。

commit_serialization適用パラメータを使用して、適用サーバーが、接続先データベースで異なる順序で非依存トランザクションを適用できるかどうかを制御します。このパラメータの設定は次のとおりです。

- DEPENDENT_TRANSACTIONS: 適用コンポーネントは、任意の順序で非依存トランザクションをコミットできます。DEPENDENT_TRANSACTIONSを指定すると、パフォーマンスは最大になります。

- FULL: 適用コンポーネントは、ソース・データベースでコミットされた順序で、適用済トランザクションをコミットします。

適用するトランザクションは、指定に関係なく、データ依存性と制約依存性に従って、パラレルで実行できます。

DEPENDENT_TRANSACTIONSを指定すると、接続先データベースでは、ソース・データベースとは異なる順序で変更がコミットされる可能性があります。たとえば、ソース・データベースでは、2つの非依存トランザクションが次の順序でコミットされるとします。

1. トランザクションA

2. トランザクションB

接続先データベースでは、これらのトランザクションが逆の順序でコミットされる可能性があります。

1. トランザクションB

2. トランザクションA

DEPENDENT_TRANSACTIONSを指定して、データベースにより施行されないアプリケーションの制約がある場合、アプリケーションの制約を把握するには、仮想的な依存性の定義を使用するか、またはRELY制約を追加します。仮想的な依存性の定義の詳細は『Oracle Streams概要および管理』を、RELY制約の詳細は『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

注意: 値NONEは、このパラメータでは非推奨となっています。かわりに、DEPENDENT_TRANSACTIONS値を使用してください。

関連項目: 「使用上の注意」

compare_key_only

YまたはN

N(適用プロセスの場合)

Y(XStreamインバウンド・サーバーの場合)

Yの場合、自動競合検出が無効になり、行LCRに対応する表の行を識別するために主キーおよび一意キーの列のみが使用されます。

Nの場合、自動競合検出が有効になり、行LCRに対応する表の行を識別するために行LCRのすべての元の値が使用されます。

注意: このパッケージのCOMPARE_OLD_VALUESプロシージャでは、指定した列の元の値の適用時における比較を無効にできます。「COMPARE_OLD_VALUESプロシージャ」を参照してください。

関連項目: 自動競合検出の詳細は、「使用上の注意」および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

compute_lcr_dep_on_arrival

YまたはN

N

Yの場合、トランザクションのLCRの受信中に依存性が計算されます。

Nの場合、トランザクションのすべてのLCRが受信された後に初めて依存性が計算されます。

ターゲット表にソース表と同じ制約がすべて含まれている場合、このパラメータをYに設定するとパフォーマンスを改善できます。

トランザクション内のLCR数がeager_sizeパラメータの数値を超える場合は、compute_lcr_dep_on_arrivalの設定に関係なく、そのトランザクションの依存性は受信時に計算されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境の適用プロセスに対してこのパラメータをYに設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

disable_on_error

YまたはN

Y

Yの場合は、未解決の最初のエラーによって、そのエラーがリカバリ可能である場合でも、適用コンポーネントは無効化されます。

Nの場合は、未解決のエラーがある場合でも適用コンポーネントは続行されます。

disable_on_limit

YまたはN

N

Yの場合は、time_limitパラメータまたはtransaction_limitパラメータによって指定された値に達したために適用コンポーネントが終了すると、適用コンポーネントは無効化されます。

Nの場合、適用コンポーネントは、制限に達したために停止した後すぐに再開されます。

再開された適用コンポーネントは、新しいセッション識別子を取得し、この適用コンポーネントに関連付けられているプロセスも新しいセッション識別子を取得します。ただし、コーディネータ・プロセス番号(APnn)は変更されません。

eager_size

正の整数

9500

通常、適用コンポーネントは、コミット・レコードを受信するまで待機してから、トランザクションの変更を適用します。XStreamが有効で、特定のトランザクションでeager_sizeより多くのLCRが受信される場合、適用プロセスによって変更内容の処理が開始されます。XStreamが無効で、特定のトランザクションでeager_sizeより多くのLCRが受信される場合、適用プロセスは、全トランザクションが受信されるまで待機してから、変更内容の処理を開始します。

既存のすべての適用サーバーは、ソースからの全トランザクションを処理している可能性があるため、残りの即時トランザクションを処理するために追加の適用サーバーが自動的に作成されます。適用パラメータmax_parallelismは、適用プロセスにおいて使用可能な適用サーバーの最大数を制限します。

この適用パラメータは、その値がtxn_lcr_spill_threshold適用パラメータよりも少ない場合にのみ適用されます。txn_lcr_spill_thresholdの値がeager_sizeよりも少ない場合は、即時適用が開始される前にトランザクションがディスクに書き込まれます。

注意: このパラメータは、XStreamを対象としています。XStream機能をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

enable_xstream_table_stats

YまたはN

Y

このパラメータをYに設定すると、適用されたトランザクションの操作に関する統計が収集され、V$XSTREAM_TABLE_STATSビューに表示されます。

このパラメータをNに設定すると、統計は収集されません。

注意: このパラメータは、XStreamを対象としています。Oracle Streamsレプリケーション環境の適用プロセスに対してこのパラメータをYに設定しないでください。

excludetag

Oracle Streamsタグのカンマ区切りリスト

NULL

アウトバウンド・サーバーの取得プロセスによって、指定したOracle Streamsタグの1つでタグ付けされたDML変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、複数のアウトバウンド・サーバーが同一の取得プロセスを使用する、XStream Out環境を対象としています。XStreamインバウンド・サーバーでは、このパラメータは無視されます。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

関連項目: このパラメータの詳細は、DBMS_CAPTURE_ADM.SET_PARAMETERプロシージャの「使用上の注意」を参照してください。

excludetrans

トランザクション名のカンマ区切りリスト

NULL

アウトバウンド・サーバーの取得プロセスによって、指定したトランザクション名のDML変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、複数のアウトバウンド・サーバーが同一の取得プロセスを使用する、XStream Out環境を対象としています。XStreamインバウンド・サーバーでは、このパラメータは無視されます。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

関連項目: このパラメータの詳細は、DBMS_CAPTURE_ADM.SET_PARAMETERプロシージャの「使用上の注意」を参照してください。

excludeuser

ユーザー名のカンマ区切りリスト

NULL

アウトバウンド・サーバーの取得プロセスによって、指定したユーザーが加えたDML変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

各ユーザー名の完全パターン一致を指定します。パターン一致では大/小文字が区別されます。たとえば、hrユーザーの場合はHRを指定します。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、複数のアウトバウンド・サーバーが同一の取得プロセスを使用する、XStream Out環境を対象としています。XStreamインバウンド・サーバーでは、このパラメータは無視されます。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

関連項目: このパラメータの詳細は、DBMS_CAPTURE_ADM.SET_PARAMETERプロシージャの「使用上の注意」を参照してください。

excludeuserid

ユーザーID値のカンマ区切りリスト

NULL

アウトバウンド・サーバーの取得プロセスによって、指定したユーザーが加えたデータ操作言語(DML)変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

ユーザーのユーザーIDを表示するには、ALL_USERSデータ・ディクショナリ・ビューのUSER_ID列を問い合せます。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、複数のアウトバウンド・サーバーが同一の取得プロセスを使用する、XStream Out環境を対象としています。XStreamインバウンド・サーバーでは、このパラメータは無視されます。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

関連項目: このパラメータの詳細は、DBMS_CAPTURE_ADM.SET_PARAMETERプロシージャの「使用上の注意」を参照してください。

getapplops

YまたはN

Y

Yの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定されておらず、トランザクション名がexcludetransパラメータに指定されていなければ、取得プロセスによってDMLの変更が取得されます。

Nの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定されておらず、トランザクション名がexcludetransパラメータに指定されていなければ、取得プロセスによってDMLの変更は無視されます。

どちらの設定でも、取得プロセスのルール・セットが満たされる場合にのみ、取得プロセスによってDMLの変更が取得されます。

Nをgetapplopsおよびgetreplicatesの両方に設定すると、データは取得されません。

注意: このパラメータは、複数のアウトバウンド・サーバーが同一の取得プロセスを使用する、XStream Out環境を対象としています。XStreamインバウンド・サーバーでは、このパラメータは無視されます。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

関連項目: このパラメータの詳細は、DBMS_CAPTURE_ADM.SET_PARAMETERプロシージャの「使用上の注意」を参照してください。

getreplicates

YまたはN

N

Yの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定され、トランザクション名がexcludetransパラメータに指定されていれば、取得プロセスによってDMLの変更が取得されます。

Nの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定され、トランザクション名がexcludetransパラメータに指定されていれば、取得プロセスによってDMLの変更は無視されます。

どちらの設定でも、取得プロセスのルール・セットが満たされる場合にのみ、取得プロセスによってDMLの変更が取得されます。

Nをgetapplopsおよびgetreplicatesの両方に設定すると、データは取得されません。

注意: このパラメータは、複数のアウトバウンド・サーバーが同一の取得プロセスを使用する、XStream Out環境を対象としています。XStreamインバウンド・サーバーでは、このパラメータは無視されます。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

関連項目: このパラメータの詳細は、DBMS_CAPTURE_ADM.SET_PARAMETERプロシージャの「使用上の注意」を参照してください。

grouptransops

1から10000までの正の整数

250(適用プロセスおよびXStreamインバウンド・サーバーの場合)

10000(XStreamアウトバウンド・サーバーの場合)

1つのトランザクションにグループ化できるLCRの最小数。トランザクションのコミットLCRは、トランザクションのLCR数に含まれません。

このパラメータによって、適用コンポーネントが複数のトランザクションのLCRを1つのトランザクションにグループ化できるようにします。適用コンポーネントは、コミットされたトランザクションに含まれるLCRのみをグループ化します。

トランザクションにこのパラメータの設定より多くのLCRが含まれる場合、そのトランザクションは1つのトランザクションとして適用されます。適用コンポーネントは、1つのトランザクションを個別のトランザクションに分割しません。

このパラメータは、parallelismパラメータの設定が1の場合にのみ有効になります。grouptransopsパラメータは、parallelismパラメータの設定が1より大きい場合、無視されます。

注意: このパラメータは、XStreamアウトバウンド・サーバーおよびインバウンド・サーバーを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、このパラメータはOracle Streams適用プロセスによって無視されます。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: 「使用上の注意」

handlecollisions

YまたはN

N

このパラメータは、データのロード中に変更を適用するときに、適用コンポーネントが重複レコードおよび欠損レコードのエラーを解決するかどうかを制御します。

通常のレプリケーション・アクティビティの場合は、このパラメータをNに設定する必要があります。データのロード時(インスタンス化)およびレプリケーションが有効な場合のみ、Yに設定する必要があります。

Yに設定すると、ROW_EXISTSエラーを取得するINSERT、UPDATEおよびDELETEの各操作のOVERWRITEの同等機能を実行し、ROW_MISSINGエラーを取得するUPDATE操作およびDELETE操作を無視します。

このパラメータがYに設定された場合、適用コンポーネントは次の操作を実行します。

- 操作が挿入で、主キーまたは一意キーが存在する場合、その挿入は更新に変換されます。

- 操作が主キー列または一意キー列を変更しない更新で、行が存在しない場合、その変更は無視されます。

- 操作が主キー列または一意キー列を変更する更新で、行が存在しない場合、その変更は無視されます。

- 操作が主キー列または一意キー列を変更する更新で、新しいキー値のある行がすでに存在している場合、以前のキー値のある行が削除され、新しいキー値のある列に置換されます。

- 操作が削除で、行が存在しない場合、その変更は無視されます。

Nに設定すると、これらの設定は無効になります。

注意: このパラメータは、1つ以上のインバウンド・サーバーのあるXStream In環境を対象としています。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

ignore_transaction

有効なソース・トランザクションIDまたはNULL

NULL

適用コンポーネントがソース・データベースの指定したトランザクションを無視するように設定し、即座に有効化します。

トランザクションを無視すると、ソース・データベースと接続先データベース間でデータ相違が発生する可能性があるため、このパラメータを設定する場合は注意してください。

複数のトランザクションを無視するには、SET_PARAMETERプロシージャへの別々のコールで各トランザクションを指定します。DBA_APPLY_PARAMETERSビューに、無視されるすべてのトランザクションのカンマ区切りリストが表示されます。無視されるトランザクションのリストを消去するには、SET_PARAMETERプロシージャを実行し、ignore_transactionパラメータにNULLを指定します。

NULLの場合、適用コンポーネントではこのパラメータは無視されます。

注意: 適用コンポーネントでは、取得プロセスによって取得されなかったトランザクションについて、このパラメータは無視されます。

関連項目: 「使用上の注意」

maximum_scn

有効なSCN値またはINFINITE

INFINITE

適用コンポーネントは、指定された値以上のコミットSCNを持つトランザクションの適用前に無効化されます。

INFINITEの場合は、SCNの値に関係なく適用コンポーネントが実行されます。

注意: 適用コンポーネントでは、取得プロセスによって取得されなかったトランザクションについて、このパラメータは無視されます。

関連項目: 「使用上の注意」

max_parallelism

正の整数

50

適用コンポーネントにおいて使用可能な適用サーバーの最大数を制限します。

parallelism適用パラメータを2以上に設定すると、このパラメータ(max_parallelism)によって設定された制限に到達するまで、適用コンポーネントが必要に応じてトランザクションを処理するために適用サーバーを追加します。トランザクションには、未割当てのトランザクション(即時)と割当て済トランザクションが含まれます。

5分以上アイドル状態にある適用サーバーは、構成されたparallelismが達成されるまで停止されます。

全適用プロセスの正確な適用統計が保持されるように、停止されたサーバーのランタイム統計は適用サーバー0に集約されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境の適用プロセスに対してこのパラメータをYに設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

max_sga_size

正の整数

INFINITE

適用コンポーネントのために特に割り当てられたシステム・グローバル領域(SGA)メモリーの量をMB単位で制御します。

このメモリーは、適用コンポーネントのセッション期間中に割り当てられ、適用コンポーネントが無効になると解放されます。

注意: データベース上のすべてのコンポーネントに割り当てられたシステムグローバル領域(SGA)メモリーは、合計でSTREAMS_POOL_SIZE初期化パラメータに設定されている値未満である必要があります。

NULLの場合、適用コンポーネントでは元のデフォルト値が使用されます。NULL値には、パラメータをデフォルト値に再設定した場合と同じ効果があります。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用または設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: 「使用上の注意」

optimize_progress_table

YまたはN

Y

このパラメータによって、表またはREDOログで適用トランザクションを追跡するかどうかを決定できます。進捗表では、完了した適用トランザクションが追跡されます。

Yの場合、REDOログでトランザクションが追跡されます。

Nの場合、表でトランザクションが追跡されます。

データベースがアーカイブ・ログ・モードではない場合は、Yの設定は無視されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: 「使用上の注意」

optimize_self_updates

YまたはN

Y

このパラメータは、ソース・データベースへの更新で列が既存の値に設定されるときの競合解決に影響を与えます。

このパラメータをYに設定すると、LCRの値とターゲット・データベースの対応する列との競合が解決したものとみなされます。

このパラメータをNに設定すると、競合が処理されます。

parallelism

正の整数

4

トランザクションを同時に適用できる適用サーバーの数。

リーダー・サーバーおよび適用サーバー・プロセス名はASnnであり、nnには文字および数字を含めることができます。ASnnプロセスの合計数は、parallelismパラメータの値に1を加算したものです。

たとえば、parallelismを4に設定すると、適用コンポーネントでは合計5つのASnnプロセスが使用されます。この場合、1台のリーダー・サーバーと4台の適用サーバーがあります。

parallelismパラメータを、使用可能なオペレーティング・システムのユーザー・プロセス数より大きい値に設定すると、適用コンポーネントが無効になる場合があります。parallelismパラメータを設定するときは、PROCESSES初期化パラメータが適切に設定されていることを確認してください。

注意: このパラメータの値を1から実行中の適用コンポーネントに対するそれより高い値に変更すると、適用コンポーネントは自動的に停止し、再開します。現在適用中のトランザクションのサイズによっては、時間がかかる場合があります。このパラメータの値が1より大きい場合で、パラメータの値が増減された場合は、適用コンポーネントは再起動しません。

関連項目: 「使用上の注意」

parallelism_interval

0または正の整数

0

parallelism interval(並列度間隔)とは、現行のワークロード・アクティビティを計算する時間間隔(秒単位)です。

適用コンポーネントは5 X parallelism_interval秒ごとに平均スループットを計算します。各計算の終了後、適用コンポーネントはスループットを改善するために、適用サーバーの数を増加または減少させます。スループットが改善されると、適用コンポーネントは新しい数の適用サーバーを維持します。

並列度間隔は、parallelismパラメータの値が2以上に設定され、max_parallelismパラメータの値がparallelismパラメータの値より大きい場合のみ使用されます。

注意: このパラメータは、1つ以上のインバウンド・サーバーのあるXStream In環境を対象としています。XStreamアウトバウンド・サーバーは、このパラメータを無視します。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: 「使用上の注意」

preserve_encryption

YまたはN

Y

透過的なデータの暗号化を使用して暗号化された列の暗号化を保持するかどうか。

Yの場合、接続先データベースの表内の列は、行LCR内の対応する列の暗号化時に暗号化する必要があります。行LCR内の列が暗号化され、接続先データベースの表内の列が暗号化されなかった場合、適用コンポーネントで行LCRを適用しようとするとエラーが発生します。

Nの場合、接続先データベースの表内の列は、行LCR内の対応する列の暗号化時に暗号化する必要はありません。行LCR内の列が暗号化され、接続先データベース内の表の列が暗号化されなかった場合、適用コンポーネントは行LCRの変更を適用します。

注意: 実行中の適用コンポーネントに対してこのパラメータの値を変更すると、適用コンポーネントは自動的に停止し、再開します。現在適用中のトランザクションのサイズによっては、時間がかかる場合があります。

関連項目: 「使用上の注意」

rtrim_on_implicit_conversion

YまたはN

Y

適用時に自動データ・タイプ変換が実行された場合に、列の右端の空白埋めを削除するかどうか。

Yの場合、行LCR内のCHARソース列またはNCHARソース列が表内のVARCHAR2列、NVARCHAR2列またはCLOB列に変換されたときに空白埋めが削除されます。

Nの場合、列の空白埋めが保持されます。

関連項目: 適用時の自動データ・タイプ変換の詳細は、「使用上の注意」および『Oracle Streams概要および管理』を参照してください。

startup_seconds

0、正の整数またはINFINITE

0

同じ適用コンポーネントの別のインスタンス化が終了するのを待機する最大秒数。同じ適用コンポーネントの別のインスタンス化がこの時間内に終了しない場合、適用コンポーネントは開始しません。

INFINITEの場合、適用コンポーネントは、同じ適用コンポーネントの別のインスタンス化が終了した後で開始します。

関連項目: 「使用上の注意」

suppresstriggers

YまたはN

Y

このパラメータは、適用コンポーネントによる変更があった場合、トリガーを実行するかどうかを制御します。

Yの場合、適用コンポーネントによる変更に対してトリガーは実行されません。

Nの場合、適用コンポーネントによる変更に対してトリガーが実行されます。

トリガーの実行プロパティが常に実行されるよう設定されている場合、suppresstriggersパラメータの値に関係なく、そのトリガーは適用コンポーネントによる変更に対して常に実行されます。トリガーが常に実行されるようトリガーの実行プロパティを設定するには、fire_onceパラメータをFALSEに設定して、DBMS_DDL.SET_TRIGGER_FIRING_PROPERTYプロシージャを実行します。

注意: このパラメータは、1つ以上のインバウンド・サーバーのあるXStream In環境を対象としています。このパラメータはOracle Streamsレプリケーション環境では設定しないでください。

関連項目: 「使用上の注意」

time_limit

正の整数またはINFINITE

INFINITE

適用コンポーネントは、開始してから指定秒数が経過した後、可能なかぎり早く停止します。

INFINITEの場合、適用コンポーネントは明示的に停止されるまで実行し続けます。

関連項目: 「使用上の注意」

trace_level

0または正の整数

0

Oracleサポート・サービスから指示がないかぎり、このパラメータは設定しないでください。

関連項目: 「使用上の注意」

transaction_limit

正の整数またはINFINITE

INFINITE

適用コンポーネントは、指定した数のトランザクションを適用した後停止します。

INFINITEの場合は、適用したトランザクションの数に関係なく実行し続けます。

関連項目: 「使用上の注意」

txn_age_spill_threshold

正の整数またはINFINITE

900

特定のトランザクションのメッセージに、指定した時間を超えてメモリーに保持されているものがある場合、適用コンポーネントによって、メモリーからハードディスクへのメッセージの書出しが開始されます。このパラメータは経過時間を秒単位で指定します。

リーダー・サーバーによってメモリーから書き出されたメッセージは、ハードディスク上のデータベース表に格納されます。これらのメッセージは、メモリーからキュー表へは書き出されません。

メッセージの書出しは、トランザクション単位で行われます。たとえば、このパラメータの設定が900の場合、適用コンポーネントのリーダー・サーバーによって、あるトランザクションのメッセージの1つが900秒を超えてメモリーに保持されていることが検出されると、そのトランザクションのすべてのメッセージがメモリーからハードディスクに書き出されます。

INFINITEの場合、メッセージは、適用コンポーネントによってメッセージの経過時間に基づいてハードディスクに書き出されません。

適用コンポーネントによって書き出されたトランザクションについては、DBA_APPLY_SPILL_TXNデータ・ディクショナリ・ビューを問い合せてください。

関連項目: 「使用上の注意」

txn_lcr_spill_threshold

正の整数またはINFINITE

10000

メモリー内の特定のトランザクションのメッセージ数が指定した数を超えると、適用コンポーネントによって、メモリーからハードディスクへのそのトランザクションのメッセージの書出しが開始されます。メモリーから書き出される最初のチャンクのメッセージの数は、このパラメータに指定した数と同じになり、それ以降のチャンクで書き出されるメッセージの数は、100またはこのパラメータに指定した数のいずれか小さいほうと同じになります。

適用コンポーネントのリーダー・サーバーでは、指定した数のメッセージが特定のトランザクションに対してメモリー内に保持されている場合、そのトランザクションに対する次のメッセージが検出されると、メモリー内のメッセージがハードディスクに書き出されます。たとえば、パラメータの設定が10000で、トランザクションに10,200個のメッセージがある場合、そのトランザクションはリーダー・サーバーによって次のように処理されます。

1. トランザクションの最初の10,000個のメッセージがメモリーに読み込まれます。

2. メッセージ10,000が検出されると、メッセージ1から10,000がハードディスクに書き出されます。

3. トランザクションの次の100個のメッセージがメモリーに読み込まれます。

4. メッセージ10,100が検出されると、メッセージ10,001から10,100がハードディスクに書き出されます。

5. トランザクションの次の100個のメッセージがメモリーに読み込まれます。

適用コンポーネントは、最初の10,100個のメッセージをハードディスクから適用し、最後の100個のメッセージをメモリーから適用します。

リーダー・サーバーによってメモリーから書き出されたメッセージは、ハードディスク上のデータベース表に格納されます。これらのメッセージは、メモリーからキュー表へは書き出されません。

メッセージの書出しは、トランザクション単位で行われます。たとえば、このパラメータの設定が10000の場合、適用コンポーネントのリーダー・サーバーで、7,500個のメッセージがあるトランザクションと8,000個のメッセージがあるトランザクションの2つをアセンブルしていても、メッセージは書き出されません。

INFINITEの場合、メッセージは、適用コンポーネントによってトランザクションのメッセージ数に基づいてハードディスクに書き出されません。

適用コンポーネントによって書き出されたトランザクションについては、DBA_APPLY_SPILL_TXNデータ・ディクショナリ・ビューを問い合せてください。

関連項目: 「使用上の注意」

write_alert_log

YまたはN

Y

Yの場合、適用コンポーネントは、終了時にアラート・ログにメッセージを書き込みます。

Nの場合は、終了時にアラート・ログにメッセージを書き込みません。

メッセージには、適用コンポーネントの停止理由が示されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 新しいパラメータ設定の有効化が遅延する可能性

- 正の整数として解釈されるパラメータ

- システム変更番号(SCN)設定のあるパラメータ

- SET_PARAMETERプロシージャおよびストリーム

- SET_PARAMETERプロシージャおよびXStreamアウトバウンド・サーバー

- SET_PARAMETERプロシージャおよびXStreamインバウンド・サーバー

新しいパラメータ設定の有効化が遅延する可能性

パラメータ値を変更したとき、パラメータの新しい値が有効になるまでに時間がかかる場合があります。

正の整数として解釈されるパラメータ

正の整数として解釈されるすべてのパラメータについて、設定可能な最大値は4,294,967,295です。適用可能な場合、比較的大きい値にはINFINITEを指定してください。

システム変更番号(SCN)設定のあるパラメータ

SCN設定が必要なパラメータについては、任意の有効なSCN値を指定できます。

SET_PARAMETERプロシージャおよびストリーム

DBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャを使用してOracle StreamsのXStreamパフォーマンス最適化を有効にした場合、ストリームで次のパラメータを使用できます。

- apply_sequence_nextval

- compute_lcr_dep_on_arrival

- eager_size

- grouptransops

- max_parallelism

- max_sga_size

- optimize_progress_table

- parallelism_interval

SET_PARAMETERプロシージャおよびXStreamアウトバウンド・サーバー

アウトバウンド・サーバーでは、次の適用パラメータの設定は無視されます。

- allow_duplicate_rows

- commit_serialization

- compare_key_only

- compute_lcr_dep_on_arrival

- disable_on_error

- eager_size

- enable_xstream_table_stats

- grouptransops

- handlecollisions

- optimize_self_updates

- parallelism

- parallelism_interval

- preserve_encryption

- rtrim_on_implicit_conversion

- suppresstriggers

commit_serializationパラメータは、アウトバウンド・サーバーでは常にFULLに設定され、parallelismパラメータは、アウトバウンド・サーバーでは常に1に設定されます。

その他の適用パラメータは、アウトバウンド・サーバーで使用できます。

注意:
XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

SET_PARAMETERプロシージャおよびXStreamインバウンド・サーバー

インバウンド・サーバーでは、次の適用パラメータの設定は無視されます。

- excludetag

- excludetrans

- excludeuser

- excludeuserid

- getapplops

- getreplicates

- ignore_transaction

- maximum_scn

その他すべての適用コンポーネント・パラメータは、インバウンド・サーバーで使用できます。

インバウンド・サーバーに対するcompare_key_onlyパラメータのデフォルト設定は、Yです。

インバウンド・サーバーに対するparallelismパラメータのデフォルト設定は、4です。

注意:
XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

SET_SCHEMA_INSTANTIATION_SCNプロシージャ

このプロシージャでは、指定したソース・データベース内の指定のスキーマに対して、およびオプションで、ソース・データベースのスキーマが所有する表に対して、指定したインスタンス化SCNを記録します。このプロシージャは、スキーマの既存のインスタンス化SCNを上書きしますが、表のインスタンス化SCNを設定する場合は、表の既存のインスタンス化SCNを上書きします。

このプロシージャを使用すると、スキーマに対するDDL論理変更レコード(LCR)の中で、適用コンポーネントで無視するものと適用するものを正確に制御できます。

構文

DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN(
source_schema_name    IN  VARCHAR2,
source_database_name  IN  VARCHAR2,
instantiation_scn     IN  NUMBER,
apply_database_link   IN  VARCHAR2  DEFAULT NULL,
recursive             IN  BOOLEAN   DEFAULT FALSE,
source_root_name      IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-23 SET_SCHEMA_INSTANTIATION_SCNプロシージャのパラメータ

パラメータ

説明

source_schema_name

ソース・スキーマの名前。たとえば、hrのように指定します。

ルールベースの変換または適用ハンドラがスキーマ名を変更するように構成されている場合でも、スキーマにインスタンス化SCNを設定するときには、常に、ソース・データベースのスキーマの名前を指定します。

source_database_name

ソース・データベースのグローバル名。たとえば、DBS1.NETのようになります。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名がNETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

instantiation_scn

インスタンス化SCN。NULLを指定すると、ソース・スキーマに対するインスタンス化SCNのメタデータがデータ・ディクショナリから削除されます。

apply_database_link

Oracle以外のデータベースへのデータベース・リンクの名前。このパラメータは、ローカル適用コンポーネントの接続先データベースがOracle以外のデータベースの場合にのみ設定する必要があります。

recursive

TRUEの場合、指定したスキーマに対して、またソース・データベースのスキーマが所有するすべての表に対して、インスタンス化SCNが設定されます。このプロシージャは、現行のユーザーのセキュリティ・コンテキストにおいて、ソース・データベースのALL_TABLESデータ・ディクショナリ・ビューから、指定したスキーマによって所有される表を選択します。

FALSEの場合、指定したスキーマのインスタンス化SCNは設定されますが、表のインスタンス化SCNは設定されません。

注意: recursiveをTRUEに設定する場合は、接続先データベースからソース・データベースへのデータベース・リンクが必要です。その場合、データベース・リンクにはソース・データベースのグローバル名と同じ名前を付けて、現行のユーザーからアクセスできるようにしてください。また、このプロシージャで接続先データベースの表にインスタンス化SCNを設定するには、ソース・データベースのALL_TABLESまたはDBA_TABLESデータ・ディクショナリ・ビューの現行のユーザーから表にアクセスできるようにしてください。

source_root_name

ソース・ルート・データベースのグローバル名。

CDB以外の場合、このパラメータはNULLである必要があります。

CDBでは、特定のコンテナを識別するためにsource_databaseとsource_root_nameを両方とも指定する必要があります。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびLCR

- インスタンス化SCNおよびDDL LCR

- recursiveパラメータ

- SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびXStreamアウトバウンド・サーバー

- SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびXStreamインバウンド・サーバー

- SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびCDB

関連項目:

- SET_GLOBAL_INSTANTIATION_SCNプロシージャ

- SET_TABLE_INSTANTIATION_SCNプロシージャ

- DDL LCRの詳細は、「LCR$_DDL_RECORDタイプ」を参照してください。

- 『Oracle Streamsレプリケーション管理者ガイド』

SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびLCR

このプロシージャによって指定されるインスタンス化SCNは、取得プロセスによって取得されたLCRに対してのみ使用されます。ユーザーが作成したLCRには使用されません。

インスタンス化SCNおよびDDL LCR

ソース・データベースからのスキーマ内のデータベース・オブジェクトに対するDDL LCRのコミットSCNが、接続先データベースでそのデータベース・オブジェクトに対するインスタンス化SCN以下の場合は、接続先データベースでの適用コンポーネントで、そのDDL LCRは無視されます。それ以外の場合は、DDL LCRが適用されます。

このプロシージャによって指定されるスキーマ・インスタンス化SCNは、次のタイプのDDL LCRで使用されます。

- command_typeがCREATE TABLEのDDL LCR

- NULL以外のobject_ownerが指定されていて、base_table_ownerとbase_table_nameがいずれも指定されていないDDL LCR

たとえば、このプロシージャによって設定されるスキーマ・インスタンス化SCNは、command_typeがCREATE TABLEおよびALTER USERのDDL LCRに使用されます。

このプロシージャによって指定されるスキーマ・インスタンス化SCNは、command_typeがCREATE USERのDDL LCRには使用されません。そうしたDDL LCRには、グローバル・インスタンス化SCNが必要です。

recursiveパラメータ

recursiveパラメータをTRUEに設定すると、このプロシージャは、スキーマが所有しているソース・データベースの各表に表インスタンス化SCNを設定します。このプロシージャでは、SET_TABLE_INSTANTIATION_SCNプロシージャを使用して各表のインスタンス化SCNを設定します。表のDDL LCRおよび行LCRには、各表のインスタンス化SCNが使用されます。

recursiveパラメータをFALSEに設定すると、表にインスタンス化SCNは設定されません。

SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびXStreamアウトバウンド・サーバー

インスタンス化SCNは、アウトバウンド・サーバーによって処理されるデータベース・オブジェクトには不要です。インスタンス化SCNをデータベース・オブジェクトに対して設定すると、アウトバウンド・サーバーでは、インスタンス化SCN値より大きいSCN値を持つデータベース・オブジェクトのLCRのみが送信されます。データベース・オブジェクトにインスタンス化SCNセットが含まれない場合、アウトバウンド・サーバーでは、インスタンス化SCNのチェックがスキップされ、そのデータベース・オブジェクトのすべてのLCRが送信されます。いずれの場合も、アウトバウンド・サーバーでは、そのルール・セットを満たすLCRのみが送信されます。

このプロシージャでアウトバウンド・サーバーのインスタンス化SCNを設定するには、apply_database_linkパラメータをNULLまたはローカル・データベースに設定する必要があります。

関連項目:
アウトバウンド・サーバーおよびインスタンス化SCNの詳細は、Oracle DatabaseのXStreamガイドを参照してください。

SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびXStreamインバウンド・サーバー

インバウンド・サーバーでは、インスタンス化SCNは無視されます。このプロシージャは、XStreamインバウンド・サーバーに影響を与えません。

SET_SCHEMA_INSTANTIATION_SCNプロシージャおよびCDB

CDBでは、このプロシージャは、インスタンス化のSCN情報を使用する適用プロセスと同一のコンテナから起動する必要があります。

SET_TABLE_INSTANTIATION_SCNプロシージャ

このプロシージャでは、指定したソース・データベース内の指定表に対する指定インスタンス化SCNを記録します。このプロシージャは、特定の表に対する既存のインスタンス化SCNを上書きします。

このプロシージャを使用すると、表に対する論理変更レコード(LCR)の中で、適用コンポーネントで無視するものと適用するものを正確に制御できます。

構文

DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN(
source_object_name    IN  VARCHAR2,
source_database_name  IN  VARCHAR2,
instantiation_scn     IN  NUMBER,
apply_database_link   IN  VARCHAR2  DEFAULT NULL,
source_root_name      IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-24 SET_TABLE_INSTANTIATION_SCNプロシージャのパラメータ

パラメータ

説明

source_object_name

[schema_name.]object_nameの形式で指定したソース・オブジェクトの名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

ルールベースの変換または適用ハンドラがスキーマ名またはデータベース・オブジェクト名を変更するように構成されている場合でも、データベース・オブジェクトにインスタンス化SCNを設定するときには、常に、ソース・データベースのスキーマおよびデータベース・オブジェクトの名前を指定します。

source_database_name

ソース・データベースのグローバル名。たとえば、DBS1.NETのようになります。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名がNETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

instantiation_scn

インスタンス化SCN。NULLを指定すると、ソース表に対するインスタンス化SCNのメタデータがデータ・ディクショナリから削除されます。

apply_database_link

Oracle以外のデータベースへのデータベース・リンクの名前。このパラメータは、ローカル適用コンポーネントの接続先データベースがOracle以外のデータベースの場合にのみ設定する必要があります。

注意: CDBのルートからプロシージャを起動する場合、このパラメータをNULLにする必要があります。

source_root_name

ソース・ルート・データベースのグローバル名。

CDB以外の場合、このパラメータはNULLである必要があります。

CDBでは、特定のコンテナを識別するためにsource_databaseとsource_root_nameを両方とも指定する必要があります。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- インスタンス化SCNおよびLCR

- SET_TABLE_INSTANTIATION_SCNプロシージャおよびXStreamアウトバウンド・サーバー

- SET_TABLE_INSTANTIATION_SCNプロシージャおよびXStreamインバウンド・サーバー

- SET_TABLE_INSTANTIATION_SCNプロシージャおよびCDB

インスタンス化SCNおよびLCR

ソース・データベースからの表に対するLCRのコミットSCNが、一部の接続先データベースでその表に対するインスタンス化SCN以下の場合は、接続先データベースでの適用コンポーネントで、そのLCRは無視されます。それ以外の場合は、LCRが適用されます。

このプロシージャによって指定される表のインスタンス化SCNは、次のタイプのLCRで使用されます。

- 表に対する行LCR。

- NULL以外のbase_table_ownerとbase_table_nameが指定されているDDL LCR。ただし、command_typeがCREATE TABLEのDDL LCRは除きます。

たとえば、このプロシージャによって設定されるインスタンス化SCNは、command_typeがALTER TABLEまたはCREATE TRIGGERのDDL LCRに対して使用されます。

注意:
このプロシージャによって指定されるインスタンス化SCNは、取得プロセスによって取得されたLCRに対してのみ使用されます。ユーザーが作成したLCRには使用されません。

関連項目:

- SET_GLOBAL_INSTANTIATION_SCNプロシージャ

- SET_SCHEMA_INSTANTIATION_SCNプロシージャ

- 行LCRの詳細は、「LCR$_ROW_RECORDタイプ」を参照してください。

- DDL LCRの詳細は、「LCR$_DDL_RECORDタイプ」を参照してください。

- 『Oracle Streamsレプリケーション管理者ガイド』

SET_TABLE_INSTANTIATION_SCNプロシージャおよびXStreamアウトバウンド・サーバー

インスタンス化SCNは、アウトバウンド・サーバーによって処理されるデータベース・オブジェクトには不要です。インスタンス化SCNをデータベース・オブジェクトに対して設定すると、アウトバウンド・サーバーでは、インスタンス化SCN値より大きいSCN値を持つデータベース・オブジェクトのLCRのみが送信されます。データベース・オブジェクトにインスタンス化SCNセットが含まれない場合、アウトバウンド・サーバーでは、インスタンス化SCNのチェックがスキップされ、そのデータベース・オブジェクトのすべてのLCRが送信されます。いずれの場合も、アウトバウンド・サーバーでは、そのルール・セットを満たすLCRのみが送信されます。

このプロシージャでアウトバウンド・サーバーのインスタンス化SCNを設定するには、apply_database_linkパラメータをNULLまたはローカル・データベースに設定する必要があります。

関連項目:
アウトバウンド・サーバーおよびインスタンス化SCNの詳細は、Oracle DatabaseのXStreamガイドを参照してください。

SET_TABLE_INSTANTIATION_SCNプロシージャおよびXStreamインバウンド・サーバー

インバウンド・サーバーでは、インスタンス化SCNは無視されます。このプロシージャは、XStreamインバウンド・サーバーに影響を与えません。

SET_TABLE_INSTANTIATION_SCNプロシージャおよびCDB

CDBでは、このプロシージャは、インスタンス化のSCN情報を使用する適用プロセスと同一のコンテナから起動する必要があります。

SET_UPDATE_CONFLICT_HANDLERプロシージャ

このプロシージャは、指定オブジェクト用に事前作成された更新競合ハンドラを追加、変更または削除します。

構文

DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER(
object_name          IN  VARCHAR2,
method_name          IN  VARCHAR2,
resolution_column    IN  VARCHAR2,
column_list          IN  DBMS_UTILITY.NAME_ARRAY,
apply_database_link  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表23-25 SET_UPDATE_CONFLICT_HANDLERプロシージャのパラメータ

パラメータ

説明

object_name

更新競合ハンドラが追加、変更または削除されるスキーマと表の名前。[schema_name.]object_nameの形式で指定します。

たとえば、ユーザーhrが所有する表employeesに更新競合ハンドラを追加する場合は、hr.employeesと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

method_name

作成する更新競合ハンドラのタイプ。

事前作成されたハンドラの1つを指定できます。このハンドラは、行に対してソース・データベースの列リストを適用するかどうか、または接続先データベースの行の値を保持するかどうかを決定します。

- MAXIMUM: ソース・データベースの列リストの値が解消列に関して大きい場合は、そのソース・データベースの列リストを適用します。それ以外の場合は、接続先データベースの値を保持します。

- MINIMUM: ソース・データベースの列リストの値が解消列に関して小さい場合は、そのソース・データベースの列リストを適用します。それ以外の場合は、接続先データベースの値を保持します。

- OVERWRITE: ソース・データベースの列リストを適用し、接続先データベースの列の値を上書きします。

- DISCARD: 接続先データベースの列リストを保持し、ソース・データベースの列リストを廃棄します。

NULLの場合は、同じobject_name、resolution_columnおよびcolumn_listを持つ既存の更新競合ハンドラを削除します。NULL以外の場合は、同じobject_nameおよびresolution_columnを持つ既存の更新競合ハンドラを置換します。

resolution_column

更新競合ハンドラを一意に識別するために使用される列の名前。MAXIMUMおよびMINIMUM事前作成メソッドの場合、解消列は競合の解消にも使用されます。解消列は、column_listパラメータにリストされた列の1つであることが必要です。

このパラメータにNULLは指定できません。OVERWRITEおよびDISCARD事前作成メソッドの場合は、列リスト内のどの列でも指定できます。

column_list

競合ハンドラがコールされる列のリスト。

同一の列が複数の列リストに存在することはできません。

適用コンポーネントが行論理変更レコード(行LCR)を適用しようとしたときに、リスト内の1つ以上の列に対して競合が発生すると、競合を解消するために競合ハンドラがコールされます。競合ハンドラは、リストにない列でのみ競合が発生した場合はコールされません。

注意: 事前作成された更新競合ハンドラでは、LOB列、LONG列、LONG RAW列、ユーザー定義タイプの列およびオラクル社提供のタイプの列がサポートされません。列がこれらのタイプである場合は、column_listパラメータに指定しないでください。

apply_database_link

Oracle以外のデータベースへのデータベース・リンクの名前。このパラメータは、接続先データベースがOracle以外のデータベースの場合にのみ設定する必要があります。

注意: 現在、Oracle以外のデータベースに変更を適用するときに、競合ハンドラはサポートされません。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 既存の更新競合ハンドラの変更

- 既存の更新競合ハンドラの削除

- 競合に対する一連の処理

- 競合に対するプロシージャDMLハンドラ

- 1つの列リストにのみ指定可能な列

- 更新競合ハンドラおよびOracle以外のデータベース

- SET_UPDATE_CONFLICT_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

- SET_UPDATE_CONFLICT_HANDLERプロシージャおよびXStreamインバウンド・サーバー

関連項目:
事前作成された更新競合ハンドラおよびカスタム更新競合ハンドラの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

既存の更新競合ハンドラの変更

既存の更新競合ハンドラを変更する場合は、既存の更新競合ハンドラの表と解消列を指定します。事前作成メソッドまたは列リストを変更できます。

既存の更新競合ハンドラの削除

既存の更新競合ハンドラを削除する場合は、事前作成メソッドにNULLを指定し、既存の更新競合ハンドラの表、列リストおよび解消列を指定します。

競合に対する一連の処理

更新の競合が発生した場合、次の一連の処理が実行されます。

1. 適切な更新競合ハンドラをコールして、競合を解消します。

2. 更新競合ハンドラが指定されていない場合、または更新競合ハンドラで競合を解消できない場合は、適用コンポーネント、表および操作に対する適切なエラー・ハンドラをコールしてエラーを処理します。

3. エラー・ハンドラが指定されていない、またはエラー・ハンドラでエラーを解決できない場合は、エラーが発生し、エラーの原因となった行LCRが含まれているトランザクションがエラー・キューに移されます。

関連項目:
エラー・ハンドラの設定方法の詳細は、「DMLハンドラ・プロシージャまたはエラー・ハンドラ・プロシージャの署名」を参照してください。

競合に対するプロシージャDMLハンドラ

事前作成された更新競合ハンドラを使用して要件を満たすことができない場合は、PL/SQLプロシージャを作成し、カスタム競合ハンドラとして使用できます。特定の表に対して1つ以上のカスタム競合ハンドラを指定するには、SET_DML_HANDLERプロシージャを使用します。また、カスタム競合ハンドラでは、LOB列を処理し、LOBアセンブリを使用することができます。

関連項目:
SET_DML_HANDLERプロシージャ

1つの列リストにのみ指定可能な列

列が列リストにある場合、同じ列を別の列リストに追加しようとすると、このプロシージャは次のエラーを戻します。

ORA-00001: UNIQUE CONSTRAINT (SYS.APPLY$_CONF_HDLR_COLUMNS_UNQ1) VIOLATED

更新競合ハンドラおよびOracle以外のデータベース

Oracle以外のデータベースに適用している適用コンポーネントに対する更新競合ハンドラの設定はサポートされていません。

SET_UPDATE_CONFLICT_HANDLERプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

SET_UPDATE_CONFLICT_HANDLERプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

例

次は、hrスキーマ内のemployees表に対して更新競合ハンドラを設定する場合の例です。

DECLARE
cols  DBMS_UTILITY.NAME_ARRAY;
BEGIN
cols(1) := 'salary';
cols(2) := 'commission_pct';
DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER(
object_name           =>  'hr.employees',
method_name           =>  'MAXIMUM',
resolution_column     =>  'salary',
column_list           =>  cols);
END;
/

この例では、hr.employees表内のsalary列またはcommission_pct列で競合が発生した場合にコールされる競合ハンドラが設定されます。このような競合が発生した場合は、競合を解消するためにsalary列が評価されます。job_id列など、列リストにない列でのみ競合が発生した場合、この競合ハンドラはコールされません。

SET_VALUE_DEPENDENCYプロシージャ

値の依存性を設定または削除します。値の依存性とは、複数の表の列間の関係を規定する仮想的な依存性の定義です。

適用コンポーネントでは、値の依存性の名前を使用して、値の依存性に定義されている列が含まれている行論理変更レコード(行LCR)間の依存性を検出します。値の依存性には、表間の仮想的な外部キー関係を定義できますが、外部キー関係とは異なり、複数のデータベース・オブジェクトを含めることができます。

このプロシージャはオーバーロードされています。attribute_listパラメータとattribute_tableパラメータは、両方同時には指定できません。

関連項目:
『Oracle Streams概要および管理』

構文

DBMS_APPLY_ADM.SET_VALUE_DEPENDENCY(
dependency_name IN VARCHAR2,
object_name     IN VARCHAR2,
attribute_list  IN VARCHAR2);

DBMS_APPLY_ADM.SET_VALUE_DEPENDENCY(
dependency_name IN VARCHAR2,
object_name     IN VARCHAR2,
attribute_table IN DBMS_UTILITY.NAME_ARRAY);

パラメータ

表23-26 SET_VALUE_DEPENDENCYプロシージャのパラメータ

パラメータ

説明

dependency_name

値の依存性の名前。

指定した名前の依存性が存在しない場合は、作成されます。

指定した名前の依存性が存在する場合は、指定したオブジェクトおよび属性がその依存性に追加されます。

NULLに設定すると、エラーが発生します。

object_name

[schema_name.]table_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLに設定して、指定した依存性が存在する場合、その依存性は削除されます。NULLに設定して、指定した依存性が存在しない場合、エラーが発生します。

NULLに設定すると、attribute_listおよびattribute_tableもNULLにする必要があります。

attribute_list

表内の列名のカンマ区切りリスト。エントリ間に空白を挿入しないでください。

attribute_table

表内の列名が含まれているDBMS_UTILITY.NAME_ARRAYタイプのPL/SQL連想配列。最初の列名は位置1、2番目は位置2、以降同様に設定されている必要があります。表の最後をNULLにする必要はありません。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- SET_VALUE_DEPENDENCYプロシージャおよびXStreamアウトバウンド・サーバー

- SET_VALUE_DEPENDENCYプロシージャおよびXStreamインバウンド・サーバー

SET_VALUE_DEPENDENCYプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、XStreamアウトバウンド・サーバーに影響を与えません。

SET_VALUE_DEPENDENCYプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

START_APPLYプロシージャ

このプロシージャでは、適用コンポーネントにメッセージの適用開始を指示します。

構文

DBMS_APPLY_ADM.START_APPLY(
apply_name  IN  VARCHAR2);

パラメータ

表23-27 START_APPLYプロシージャのパラメータ

パラメータ

説明

apply_name

適用コンポーネント名。NULLを設定することはできません。所有者を指定しないでください。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 適用コンポーネントのステータス

- START_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

- START_APPLYプロシージャおよびXStreamインバウンド・サーバー

適用コンポーネントのステータス

適用コンポーネントのステータスは永続的に記録されます。したがって、ステータスがENABLEDの場合、適用コンポーネントはデータベース・インスタンスの起動時に開始されます。適用コンポーネント(annn)は、Oracleバックグラウンド・プロセスです。DBMS_AQADM.START_QUEUEおよびDBMS_AQADM.STOP_QUEUEのエンキューとデキューの状態は、適用コンポーネントの開始ステータスには影響を与えません。

START_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、適用プロセスとアウトバウンド・サーバーに対して同じように動作します。

START_APPLYプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

STOP_APPLYプロシージャ

このプロシージャでは、適用コンポーネントによるメッセージの適用を停止し、適用が終了していないトランザクションをロールバックします。

構文

DBMS_APPLY_ADM.STOP_APPLY(
apply_name  IN  VARCHAR2,
force       IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表23-28 STOP_APPLYプロシージャのパラメータ

パラメータ

説明

apply_name

適用コンポーネント名。NULLを設定することはできません。所有者を指定しないでください。

force

TRUEに設定すると、適用コンポーネントは可能なかぎり早く停止されます。

FALSEに設定すると、適用された一連のトランザクションに不整合のないことが確認された後で、適用コンポーネントが停止されます。

適用コンポーネントの動作は、forceパラメータに指定された設定、およびcommit_serialization適用コンポーネント・パラメータに指定された設定によって決まります。詳細は、「使用上の注意」を参照してください。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 適用コンポーネントのステータス

- 適用コンポーネントのステータスに影響を与えないキュー・サブプログラム

- STOP_APPLYのforceパラメータおよびcommit_serialization適用パラメータ

- STOP_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

- STOP_APPLYプロシージャおよびXStreamインバウンド・サーバー

適用コンポーネントのステータス

適用コンポーネントのステータスは永続的に記録されます。したがって、ステータスがDISABLEDまたはABORTEDの場合、適用コンポーネントはデータベース・インスタンスの起動時に開始されません。

適用コンポーネントのステータスに影響を与えないキュー・サブプログラム

DBMS_AQADM.START_QUEUEおよびDBMS_AQADM.STOP_QUEUEのエンキューとデキューの状態は、適用コンポーネントのSTOPステータスには影響を与えません。

STOP_APPLYのforceパラメータおよびcommit_serialization適用パラメータ

次の表では、STOP_APPLYプロシージャのforceパラメータ、およびcommit_serialization適用コンポーネント・パラメータの各設定に対する適用コンポーネントの動作を説明します。すべての場合で、停止時に、適用コンポーネントは未完了のトランザクションをロールバックします。

force

commit_serialization

適用コンポーネントの動作

TRUE

FULL

適用コンポーネントは即時に停止され、未完了のトランザクションは適用されません。

TRUE

DEPENDENT_TRANSACTIONS

適用コンポーネントの停止時に、ローカルで適用済の一部のトランザクションが、ローカルで適用されていない一部のトランザクションより、時間的に遅れてソース・データベースでコミットされる場合があります。

FALSE

FULL

適用コンポーネントは、コミット順で次のコミットされていないトランザクションが処理中の場合、そのトランザクションを適用した後で停止します。

FALSE

DEPENDENT_TRANSACTIONS

停止する前に、適用コンポーネントは、コミット・タイムが最新の適用済トランザクションより早いコミット・タイムを持つトランザクションをすべて適用します。

たとえば、commit_serialization適用コンポーネント・パラメータがDEPENDENT_TRANSACTIONSに設定されていて、コミット・タイムが最も早いトランザクション1、トランザクション1の後にコミットされたトランザクション2、およびコミット・タイムが最も遅いトランザクション3の3つのトランザクションがあるとします。また、STOP_APPLYプロシージャの実行時に、適用コンポーネントはトランザクション1とトランザクション3を適用済で、トランザクション2の適用処理中であるとします。この例では、forceパラメータがTRUEに設定されていると、トランザクション2は適用されず、適用コンポーネントは停止します(トランザクション2はロールバックされます)。ただし、forceパラメータがFALSEに設定されていると、トランザクション2は、適用コンポーネントが停止する前に適用されます。

commit_serialization適用コンポーネント・パラメータがFULLに設定されている別の例では、次のようになります。たとえば、commit_serialization適用コンポーネント・パラメータがFULLに設定されていて、コミット・タイムが最も早いトランザクションA、トランザクションAの後にコミットされたトランザクションB、およびコミット・タイムが最も遅いトランザクションCの3つのトランザクションがあるとします。この場合、STOP_APPLYプロシージャの実行時に、適用コンポーネントはトランザクションAを適用済で、トランザクションBとCの適用処理中であるとします。この例では、forceパラメータがTRUEに設定されていると、トランザクションBとCは適用されず、適用コンポーネントは停止します(トランザクションBとCはロールバックされます)。ただし、forceパラメータがFALSEに設定されていると、トランザクションBは適用コンポーネントが停止する前に適用され、トランザクションCはロールバックされます。

関連項目:
commit_serialization適用コンポーネント・パラメータの詳細は、「SET_PARAMETERプロシージャ」を参照してください。

STOP_APPLYプロシージャおよびXStreamアウトバウンド・サーバー

このプロシージャは、適用プロセスとアウトバウンド・サーバーに対して同じように動作します。

STOP_APPLYプロシージャおよびXStreamインバウンド・サーバー

このプロシージャは、適用プロセスとインバウンド・サーバーに対して同じように動作します。

24 DBMS_AQ

DBMS_AQパッケージは、Oracle Streams Advanced Queuing(AQ)へのインタフェースを提供します。

関連項目:

- 『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』

- DBMS_AQと一緒に使用するTYPEについては、「Oracle Databaseアドバンスト・キューイング(AQ)のタイプ」を参照してください。

この章では、次の項目について説明します。

- DBMS_AQの使用方法

- セキュリティ・モデル

- 定数

- データ構造

- 使用上の注意

- DBMS_AQサブプログラムの要約

DBMS_AQの使用方法

この項では、次の項目について説明します。

- セキュリティ・モデル

- 定数

- データ構造

- 使用上の注意

セキュリティ・モデル

最初は、SYSおよびSYSTEMのみに、DBMS_AQおよびDBMS_AQADM内のプロシージャの実行権限が付与されています。

キューのセキュリティ

エンキューまたはデキューするユーザーには、DBMS_AQのEXECUTE権限の他、ターゲット・キューでのENQUEUEまたはDEQUEUE権限、もしくはENQUEUE_ANY/DEQUEUE_ANYシステム権限のいずれかが必要です。DBMS_AQとDBMS_AQADMのEXECUTE権限が付与されたユーザーは、自分のスキーマで、キューの作成、管理および使用ができます。他のスキーマのキューを作成および管理する場合は、MANAGE_ANY AQシステム権限が使用されます。

データベース・ユーザーは、DBMS_AQに対するEXECUTE権限以外に、オブジェクト・レベルまたはシステム・レベルの明示的な権限を付与されなくても、自分のスキーマでのキューのエンキューおよびデキューが可能です。

関連項目:
キュー権限およびアクセス制御の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

OCIアプリケーションとキュー・アクセス

Oracle Call Interface(OCI)アプリケーションでキューにアクセスするには、セッション・ユーザーに、アクセス先のキューのオブジェクト権限、またはシステム権限(ENQUEUE ANY QUEUEまたはDEQUEUE ANY QUEUE)のいずれかを付与する必要があります。DBMS_AQのEXECUTE権限とセッション・ユーザーの権限が照合されて確認されることはありません。

伝播に必要なセキュリティ

伝播ジョブの所有者はSYSですが、伝播はキュー表の所有者のセキュリティ・コンテキスト内で発生します。以前は、伝播ジョブの所有者は、伝播をスケジューリングするユーザーで、伝播が発生するのは、伝播スケジュールを設定するユーザーのセキュリティ・コンテキスト内でした。キュー表の所有者には、DBMS_AQADMパッケージのEXECUTE権限が必要です。権限がない場合、Oracleデータベース・スナップショット・プロセスは、エラー識別子SYS.DBMS_AQADMが定義されていないトレース・ファイルを伝播および生成しません。伝播には、キュー表の所有者が所有するプライベート・データベース・リンクを使用できます。接続文字列に指定されたユーザーには、リモート・データベース上のDBMS_AQパッケージおよびDBMS_AQADMパッケージに対するEXECUTEアクセス権限が必要です。

関連項目:

- 第25章「DBMS_AQADM」

- 伝播する際のセキュリティ要件の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

定数

DBMS_AQパッケージでは、表24-1に示す定数が使用されます。

BROWSE、LOCKEDまたはREMOVEなどの列挙定数を使用するときは、それを定義しているパッケージの有効範囲内で、PL/SQL定数を指定する必要があります。操作インタフェースに関連付けられているすべてのタイプに、DBMS_AQを付加する必要があります。たとえば、DBMS_AQ.BROWSEのようにします。

注意:
DBMS_AQADMサブプログラムのmessage_groupingパラメータをTRANSACTIONALに設定すると、sequence_deviation属性は、Oracle Streams AQ 10g リリース1(10.1)以前のリリースでは無効になります。Oracle Streams AQ 10g リリース2(10.2)では、順序逸脱機能の使用は推奨されていません。

表24-1 列挙定数

パラメータ

オプション

タイプ

説明

VISIBILITY

IMMEDIATE

.

ON_COMMIT

DEQUEUE_MODE

BROWSE

.

LOCKED

.

REMOVE

.

REMOVE_NODATA

NAVIGATION

FIRST_MESSAGE

.

NEXT_MESSAGE

STATE

WAITING

.

READY

.

PROCESSED

.

EXPIRED

SEQUENCE_DEVIATION

BEFORE

.

TOP

WAIT

FOREVER

BINARY_INTEGER

.

NO_WAIT

BINARY_INTEGER

DELAY

NO_DELAY

EXPIRATION

NEVER

NAMESPACE

NAMESPACE_AQ

.

NAMESPACE_ANONYMOUS

NTFN_GROUPING_CLASS

NFTN_GROUPING_CLASS_TIME

NUMBER

NTFN_GROUPING_TYPE

NTFN_GROUPING_TYPE_SUMMARY

NUMBER

.

NTFN_GROUPING_TYPE_LAST

NUMBER

NTFN_GROUPING_REPEAT_COUNT

NTFN_GROUPING_FOREVER

NUMBER

データ構造

表24-2 DBMS_AQのデータ構造

データ構造

説明

オブジェクト名

データベース・オブジェクトに名前を付けます。

タイプ名

キュー・タイプを定義します。

Oracle Databaseアドバンスト・キューイングのPL/SQLコールバック

メッセージ通知時に起動されるようにデータベースに定義することで、ユーザー定義のPL/SQLプロシージャを指定します。

オブジェクト名

object_nameデータ構造は、データベース・オブジェクトの名前を付けます。この構造は、キュー、キュー表、エージェント名およびオブジェクト・タイプに適用されます。

構文

object_name := VARCHAR2;
object_name := [schema_name.]name;

使用上の注意

オブジェクト名は、オプションのスキーマ名および名前で指定します。スキーマ名が指定されない場合は、現在のスキーマ名が使用されます。名前は、予約語について、『Oracle Database SQL言語リファレンス』のオブジェクト名ガイドラインに従う必要があります。スキーマ、エージェントおよびオブジェクト・タイプの名前は、30バイト以内で設定します。キューおよびキュー表の名前は、24バイト以内で設定します。

タイプ名

type_nameデータ構造は、キュー・タイプを定義します。

構文

type_name := VARCHAR2;
type_name := object_type | "RAW";

属性

表24-3 タイプ名の属性

属性

説明

object_type

オブジェクト・タイプ内の属性の最大数は900です。

"RAW"

RAW型のペイロードを格納するために、Oracle Databaseアドバンスト・キューイングでは、ペイロード・リポジトリとしてLOB列を持つキュー表が作成されます。メッセージ・ペイロードの理論上の最大サイズは、LOB列に格納可能な最大データ量です。ただし、ペイロードの最大サイズは、Oracle Databaseアドバンスト・キューイングにアクセスするときに使用するプログラム環境によって決まります。PL/SQL、Javaおよびプリコンパイラの場合は32K、OCIの場合は4Gです。PL/SQLのエンキューおよびデキューのインタフェースは、RAWバッファをペイロード・パラメータとして受け入れるため、32KBに制限されます。OCIでは、ユーザーのRAWデータの最大サイズは、OCIオブジェクト・キャッシュによる割当てが可能な最大連続メモリー量(OCIRawが単純にバイト配列の場合)に制限されます。通常は、最低32KBですが、ほとんどの場合それ以上になります。

LOB列はRAWペイロードの格納に使用されるため、Oracle Databaseアドバンスト・キューイング管理者は、LOB表領域を選択して、キュー表作成時にstorage_clauseパラメータにLOB記憶域文字列を設定すると、LOB記憶域を構成できます。

Oracle Databaseアドバンスト・キューイングのPL/SQLコールバック

plsqlcallbackデータ構造は、メッセージ通知時に起動されるようにデータベースで定義することで、ユーザー定義のPL/SQLプロシージャを指定します。

構文

RAWペイロード・エンキューの通知メッセージが要求されている場合、PL/SQLコールバックには次の署名が付加されている必要があります。

procedure plsqlcallback(
context  IN  RAW,
reginfo  IN  SYS.AQ$_REG_INFO,
descr    IN  SYS.AQ$_DESCRIPTOR,
payload  IN  RAW,
payloadl IN  NUMBER);

属性

表24-4 Oracle Databaseアドバンスト・キューイングのPL/SQLコールバックの属性

属性

説明

context

dbms_aq.registerにより渡されたコールバック関数のコンテキストを指定します。「AQ$_REG_INFOタイプ」を参照してください。

reginfo

「AQ$_REG_INFOタイプ」を参照してください。

descr

「AQ$_DESCRIPTORタイプ」を参照してください。

payload

RAWペイロード・エンキューの通知メッセージが要求されている場合、非永続キューにエンキューされたRAWペイロードが含まれます。RAWペイロードが含まれる永続キューの場合、パラメータはNULLです。

payloadl

payloadの長さを指定します。payloadがNULLの場合、payload1 = 0です。

ADTのペイロード・エンキューの通知メッセージが要求されている場合、PL/SQLコールバックには次の署名が付加されている必要があります。

procedure plsqlcallback(
context  IN RAW,
reginfo  IN SYS.AQ$_REG_INFO,
descr    IN SYS.AQ$_DESCRIPTOR,
payload  IN VARCHAR2,
payloadl IN NUMBER);

使用上の注意

- DBMS_AQおよびDBMS_AQADM Javaクラス

DBMS_AQおよびDBMS_AQADM Javaクラス

DBMS_AQおよびDBMS_AQADMには、Javaインタフェースを使用できます。Javaインタフェースは、$ORACLE_HOME/rdbms/jlib/aqapi.jarにあります。これらのインタフェースを使用するには、ユーザーにDBMS_AQINパッケージのEXECUTE権限が必要です。

DBMS_AQサブプログラムの要約

表24-5 DBMS_AQパッケージのサブプログラム

サブプログラム

説明

BIND_AGENTプロシージャ

LDAPディレクトリ内にOracle Databaseアドバンスト・キューイング・エージェントのエントリを作成します。

DEQUEUEプロシージャ

指定したキューからメッセージをデキューします。

DEQUEUE_ARRAYファンクション

指定したキューからメッセージの配列をデキューします。

ENQUEUEプロシージャ

指定したキューにメッセージを追加します。

ENQUEUE_ARRAYファンクション

指定したキューにメッセージの配列を追加します。

LISTENプロシージャ

エージェントのリストにかわって1つ以上のキューをリスニングします。

POSTプロシージャ

匿名サブスクリプションに転送します。サブスクリプションに登録された全クライアントが通知を受信できます。

REGISTERプロシージャ

メッセージ通知を登録します。

UNBIND_AGENTプロシージャ

LDAPディレクトリからOracle Databaseアドバンスト・キューイング・エージェントのエントリを削除します。

UNREGISTERプロシージャ

通知をオフにするサブスクリプションを登録解除します。

注意:
DBMS_AQには、純正レベルが定義されていません。したがって、RNDS、WNDS、RNPSまたはWNPS制約が定義されている他のプロシージャからこのパッケージ内のプロシージャをコールできません。

BIND_AGENTプロシージャ

このプロシージャは、LDAPサーバーにOracle Databaseアドバンスト・キューイング・エージェントのエントリを作成します。

構文

DBMS_AQ.BIND_AGENT(
agent        IN SYS.AQ$_AGENT,
certificate  IN VARCHAR2 default NULL);

パラメータ

表24-6 BIND_AGENTプロシージャのパラメータ

パラメータ

説明

agent

LDAPサーバーで登録されるエージェント。

certificate

このエージェントでデジタル証明書(usercertificate属性)が使用されるLDAPにおける、organizationalpersonエントリの場所(LDAPの識別名)。たとえば、"cn=OE, cn=ACME, cn=com"は、指定したエージェントで証明書が使用されるOrganizationalPerson OEの識別名です。

使用上の注意

LDAPサーバーでは、デジタル証明書がOrganizationalPersonエンティティの属性(usercertificate)として格納されます。このOrganizationalPersonの識別名をエージェントのバインド時に指定する必要があります。

DEQUEUEプロシージャ

このプロシージャは、指定したキューからメッセージをデキューします。

構文

DBMS_AQ.DEQUEUE (
queue_name          IN      VARCHAR2,
dequeue_options     IN      dequeue_options_t,
message_properties  OUT     message_properties_t,
payload             OUT     "<ADT_1>"
msgid               OUT     RAW);

パラメータ

表24-7 DEQUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

キュー名を指定します。

dequeue_options

「DEQUEUE_OPTIONS_Tタイプ」を参照してください。

message_properties

「MESSAGE_PROPERTIES_Tタイプ」を参照してください。

payload

Oracle Databaseアドバンスト・キューイングでは解釈されません。ペイロードは、関連するキュー表の仕様に基づいて指定する必要があります。type_nameの定義の詳細は、「タイプ名」を参照してください。

msgid

システムが生成するメッセージID。

使用上の注意

デキューされるメッセージの検索基準は、dequeue_optionsの次のパラメータによって判断されます。

- consumer_name

- msgid
msgidはデキューされるメッセージを一意に識別します。msgidが指定されていないかぎり、READY状態のメッセージのみがデキューされます。

- correlation
相関識別子は、Oracle Databaseアドバンスト・キューイングでは解釈されない、アプリケーション定義の識別子です。

- deq_condition
デキュー条件は、メッセージ・プロパティ、メッセージ・データ・プロパティおよびPL/SQLファンクションに基づいた式です。deq_conditionはSQL問合せのWHERE句と同様の構文を使用して、ブール式で指定されます。このブール式には、メッセージ・プロパティ、ユーザー・データのプロパティ(オブジェクト・ペイロードのみ)、およびPL/SQLファンクションまたはSQLファンクション(SQL問合せのWHERE句で指定)に関する条件を組み込むことができます。メッセージ・プロパティには、priority、corridおよびキュー表におけるその他の列が含まれます。

メッセージ・ペイロード(オブジェクト・ペイロード)のデキュー条件を指定するには、句にオブジェクト・タイプの属性を使用します。各属性の前に修飾子としてtab.user_dataを付加して、ペイロードを格納するキュー表の特定の列を示します。

例: tab.user_data.orderstatus='EXPRESS'

デキュー順序は、dequeue_optionsのmsgidと相関IDで上書きされないかぎり、キュー表の作成時に指定した値によって判断されます。

キュー操作には、データベース読込み一貫性メカニズムが適用されます。たとえば、BROWSEコールは、ブラウズ・トランザクションの開始後にエンキューされたメッセージを参照しない場合があります。

デキュー時のデフォルトのNAVIGATIONパラメータは、NEXT_MESSAGEです。この場合、後続のデキューは、最初のデキューで取得したスナップショットに基づいて、キューからメッセージを取り出します。特に、最初のデキュー・コマンド後にエンキューされたメッセージは、キュー内の残りのメッセージがすべて処理されるまで処理されません。これは、すべてのメッセージがすでにキューにエンキューされている場合、またはキューに優先順位が設定されていない場合は、通常問題ありません。ただし、デキュー・コマンドのたびにキュー内の先頭メッセージを処理する必要がある場合は、アプリケーションでFIRST_MESSAGEナビゲーション・オプションを使用する必要があります。この処理は、すでにエンキューされたメッセージの処理中に優先順位の高いメッセージがキューに登録された場合に必要になります。

注意:
同時にエンキューされている複数のメッセージがある場合は、FIRST_MESSAGEナビゲーション・オプションを使用すると効率が向上します。FIRST_MESSAGEオプションを指定しないと、Oracle Databaseアドバンスト・キューイングでは最初のデキュー・コマンドと同様のスナップショットが継続的に生成されるため、パフォーマンスの低下につながります。FIRST_MESSAGEオプションを指定すると、Oracle Databaseアドバンスト・キューイングでは、すべてのデキュー・コマンドに新規のスナップショットが使用されます。

同一トランザクションでメッセージのグループ化に対応しているキューにエンキューされたメッセージは、グループを形成します。そのトランザクションでエンキューされたメッセージが1つのみの場合は、実質的に1つのメッセージでグループを形成します。1つのトランザクションでグループ化できるメッセージの数に上限はありません。

メッセージのグループ化に対応していないキューでは、LOCKEDまたはREMOVEモードのデキューは、1つのメッセージのみロックします。これに対して、グループの一部のメッセージをデキューしようとするデキュー操作は、グループ全体をロックします。これは、グループ内のすべてのメッセージを基本単位で処理する必要がある場合に有効です。

グループ内のすべてのメッセージがデキューされている場合、そのデキューはグループ内のすべてのメッセージが処理済であることを示すエラーを戻します。この場合、アプリケーションはNEXT_TRANSACTIONを使用して、次に使用可能なグループからメッセージのデキューを開始します。使用可能なグループがない場合、デキューは指定したWAIT期間後にタイムアウトします。

保護キューの使用方法

保護キューの場合は、dequeue_optionsパラメータにconsumer_nameを指定する必要があります。consumer_nameの詳細は、「DEQUEUE_OPTIONS_Tタイプ」を参照してください。

保護キューを使用するときは、次の事項を満たしている必要があります。

- DBMS_AQADM.CREATE_AQ_AGENTを使用して、有効なOracle Databaseアドバンスト・キューイング・エージェントを作成しておく必要があります。「CREATE_AQ_AGENTプロシージャ」を参照してください。

- Oracle Databaseアドバンスト・キューイング・エージェントを、セキュアなキューに対するデキュー権限を持つデータベース・ユーザーにマッピングする必要があります。これは、DBMS_AQADM.ENABLE_DB_ACCESSを使用して行います。「ENABLE_DB_ACCESSプロシージャ」を参照してください。

関連項目:
保護キューの詳細は、『Oracle Streams概要および管理』を参照してください。

DEQUEUE_ARRAYファンクション

このファンクションはメッセージの配列をデキューし、ペイロードの配列、メッセージ・プロパティの配列およびメッセージIDの配列の形式でそれらを戻します。このファンクションは、正常にデキューされたメッセージの数を返します。

構文

DBMS_AQ.DEQUEUE_ARRAY (
queue_name                IN   VARCHAR2,
dequeue_options           IN   dequeue_options_t,
array_size                IN   pls_integer,
message_properties_array  OUT  message_properties_array_t,
payload_array             OUT  "<COLLECTION_1>",
msgid_array               OUT  msgid_array_t,
error_array               OUT  error_array_t)
RETURN pls_integer;

パラメータ

表24-8 DEQUEUE_ARRAYファンクションのパラメータ

パラメータ

説明

queue_name

メッセージをデキューするキュー名(単一行デキューと同じ)。

dequeue_options

配列内のすべてのメッセージに適用する一連のオプション(単一行デキューと同じ)。

array_size

デキューする要素の数。

message_properties_array

各メッセージ・プロパティに対応する配列を格納するレコード。各ペイロード要素は、対応する一連のメッセージ・プロパティを持ちます。「MESSAGE_PROPERTIES_ARRAY_Tタイプ」を参照してください。

payload_array

デキューされたペイロード・データの配列。"<COLLECTION_1>"は連想配列、VARRAYまたはPL/SQL表現でのネストした表です。

msgid_array

デキューされたメッセージのメッセージIDの配列。「MSGID_ARRAY_Tタイプ」を参照してください。

error_array

現在、実装されていません。

使用上の注意

dequeue_optionsに指定する0(ゼロ)以外の待機時間は、キュー内にメッセージがない場合にのみ認識されます。キューにデキュー可能なメッセージが格納されている場合、DEQUEUE_ARRAYファンクションによって、最大array_sizeメッセージがデキューされ、ただちに戻ります。

message_idによるデキューはサポートしていません。navigationパラメータの詳細は、「DEQUEUEプロシージャ」を参照してください。既存のNAVIGATIONモードをサポートしています。さらに、メッセージのグループ化に対応しているキュー用に、2つの新しいNAVIGATIONモードをサポートしています。

- FIRST_MESSAGE_MULTI_GROUP

- NEXT_MESSAGE_MULTI_GROUP

関連項目:
ENQUEUE_OPTIONS_Tタイプ

トランザクション・グループ・キューおよびONE_GROUPナビゲーションの場合、メッセージはarray_size制限に従って、単一のトランザクション・グループからのみデキューされます。MULTI_GROUPナビゲーションでは、メッセージはarray_size制限に従って、複数のトランザクション・グループからデキューされます。ORA-25235が返され、トランザクション・グループの終わりを示します。

DEQUEUE_ARRAYは、バッファに入れたメッセージではサポートされませんが、1つのメッセージにarray_sizeを設定すると、バッファに入れた個々のメッセージで使用できます。

ENQUEUEプロシージャ

このプロシージャは、指定したキューにメッセージを追加します。

構文

DBMS_AQ.ENQUEUE (
queue_name          IN      VARCHAR2,
enqueue_options     IN      enqueue_options_t,
message_properties  IN      message_properties_t,
payload             IN       "<ADT_1>",
msgid               OUT     RAW);

パラメータ

表24-9 ENQUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

このメッセージをエンキューするキュー名を指定します。例外キューは指定できません。

enqueue_options

「ENQUEUE_OPTIONS_Tタイプ」を参照してください。

message_properties

「MESSAGE_PROPERTIES_Tタイプ」を参照してください。

payload

Oracle Databaseアドバンスト・キューイングでは解釈されません。ペイロードは、関連するキュー表の仕様に基づいて指定する必要があります。NULLは受け入れ可能なパラメータの1つです。type_nameの定義の詳細は、「タイプ名」を参照してください。

msgid

システムが生成するメッセージID。これは、デキュー時にメッセージを識別するために使用するグローバルな一意のIDです。

使用上の注意

enqueue_optionsのsequence_deviationパラメータを使用すると、2つのメッセージ間の処理順序を変更できます。参照されるメッセージのIDは、enqueue_optionsのパラメータrelative_msgidで指定できます。関係は、sequence_deviationパラメータによって識別されます。

メッセージにsequence_deviationを指定すると、このメッセージに指定できる遅延および優先の順位値が一部制限されます。遅延の値は、このメッセージより後にエンキューされるメッセージの遅延以下に設定する必要があります。優先順位は、このメッセージより後にエンキューされるメッセージの優先順位以上に設定する必要があります。

注意:
DBMS_AQADMサブプログラムのmessage_groupingパラメータをTRANSACTIONALに設定すると、sequence_deviation属性は、Oracle Streams AQ 10g リリース1(10.1)以前のリリースでは無効になります。Oracle Streams AQ 10g リリース2(10.2)では、順序逸脱機能の使用は推奨されていません。

メッセージが受信者のいないマルチ・コンシューマ・キューにエンキューされ、かつそのキューにサブスクライバが存在しない(またはこのメッセージと一致するルールベースのサブスクライバが存在しない)場合は、OracleエラーORA_24033が発生します。これは、配信可能な受信者またはサブスクライバが存在しないために、そのメッセージが廃棄されることを示す警告です。

保護キューの使用方法

保護キューの場合は、messages_propertiesパラメータにsender_idを指定する必要があります。sender_idの詳細は、「MESSAGE_PROPERTIES_Tタイプ」を参照してください。

保護キューを使用するときは、次の事項を満たしている必要があります。

- DBMS_AQADM.CREATE_AQ_AGENTを使用して、有効なOracle Databaseアドバンスト・キューイング・エージェントを作成しておく必要があります。「CREATE_AQ_AGENTプロシージャ」を参照してください。

- 保護キューに対するエンキュー権限のあるデータベース・ユーザーにsender_idをマップする必要があります。これは、DBMS_AQADM.ENABLE_DB_ACCESSを使用して行います。「ENABLE_DB_ACCESSプロシージャ」を参照してください。

関連項目:
保護キューの詳細は、『Oracle Streams概要および管理』を参照してください。

ENQUEUE_ARRAYファンクション

このファンクションは、対応するメッセージ・プロパティの配列を使用して、ペイロードの配列をエンキューします。出力は、エンキューしたメッセージのメッセージIDの配列になります。

構文

DBMS_AQ.ENQUEUE_ARRAY (
queue_name                IN   VARCHAR2,
enqueue_options           IN   enqueue_options_t,
array_size                IN   pls_integer,
message_properties_array  IN   message_properties_array_t,
payload_array             IN   "<COLLECTION_1>",
msgid_array               OUT  msgid_array_t,
error_array               OUT  error_array_t)
RETURN pls_integer;

パラメータ

表24-10 ENQUEUE_ARRAYファンクションのパラメータ

パラメータ

説明

queue_name

メッセージをエンキューするキュー名(単一行エンキューと同じ)。

enqueue_options

「ENQUEUE_OPTIONS_Tタイプ」を参照してください。

array_size

エンキューする要素の数。

message_properties_array

各メッセージ・プロパティに対応する配列を格納するレコード。プロパティごとにarray_size要素を割り当てる必要があります。「MESSAGE_PROPERTIES_ARRAY_Tタイプ」を参照してください。

payload_array

ペイロード・データの配列。"<COLLECTION_1>"は連想配列、VARRAYまたはPL/SQL表現でのネストした表です。

msgid_array

エンキューされたメッセージのメッセージIDの配列。特定のメッセージでエラーが発生すると、対応するメッセージIDがNULLになります。「MSGID_ARRAY_Tタイプ」を参照してください。

error_array

現在、実装されていません。

使用上の注意

ENQUEUE_ARRAYは、バッファに入れたメッセージではサポートされませんが、1つのメッセージにarray_sizeを設定すると、バッファに入れた個々のメッセージで使用できます。

LISTENプロシージャ

このプロシージャは、エージェントのリストのかわりに1つ以上のキューをリスニングします。エージェントのアドレス・フィールドは、エージェントが監視するキューを示します。ローカル・キューのみアドレスとしてサポートされています。将来使用するためにプロトコルが予約されています。

構文

DBMS_AQ.LISTEN (
agent_list            IN    AQ$_AGENT_LIST_T,
wait                  IN    BINARY_INTEGER DEFAULT DBMS_AQ.FOREVER,
agent                 OUT   SYS.AQ$_AGENT);

DBMS_AQ.LISTEN (
agent_list             IN   AQ$_AGENT_LIST_T,
wait                   IN   BINARY_INTEGER DEFAULT FOREVER,
listen_delivery_mode   IN   PLS_INTEGER DEFAULT DBMS_AQ.PERSISTENT,
agent                  OUT  SYS.AQ$_AGENT,
message_delivery_mode  OUT  PLS_INTEGER);

TYPE aq$_agent_list_t IS TABLE of aq$_agent INDEXED BY BINARY_INTEGER;
TYPE aq$_agent_list_t IS TABLE of aq$_agent INDEXED BY BINARY_INTEGER;

パラメータ

表24-11 LISTENプロシージャのパラメータ

パラメータ

説明

agent_list

リスニングするエージェントのリスト。

wait

リスニング・コールのタイムアウト(秒数)。デフォルトでは、コールは永続的にブロックします。

listen_delivery_mode

永続メッセージ、バッファに入れたメッセージまたは両方のタイプのメッセージのいずれを優先するかをコール元が指定します。DBMS_AQ.PERSISTENT、DBMS_AQ.BUFFEREDまたはDBMS_AQ.PERSISTENT_OR_BUFFEREDの配信モードを指定します。

agent

コンシューマ用のメッセージがあるエージェント。

message_delivery_mode

メッセージがあるキューおよびコンシューマとともにメッセージ・タイプを戻します。

使用上の注意

エージェント・アドレスがマルチ・コンシューマ・キューである場合、エージェント名は必須項目です。単一コンシューマ・キューの場合は、エージェント名を指定する必要はありません。

このプロシージャは、引数としてエージェントのリストを使用します。リストされた各エージェントのアドレス・フィールドに、監視するキューを指定します。マルチ・コンシューマ・キューを監視するときは、エージェントの名前も指定する必要があります。単一コンシューマ・キューの場合は、エージェント名を指定する必要はありません。ローカル・キューのみアドレスとしてサポートされています。将来使用するためにプロトコルが予約されています。

これは、リスト内のエージェントに対してコンシューマ用のメッセージが準備されているときに戻されるブロック・コールです。複数のエージェントに対するメッセージがある場合は、リストの最初のエージェントのみ戻されます。待機時間が期限切れしてもメッセージが見つからない場合は、エラーが発生します。

LISTENコールが正常に戻された場合でも、指定したキューの中に、リストされたエージェントの1つに対するメッセージがあることのみを示しています。対象となっているエージェントは、関連メッセージを継続してデキューする必要があります。

注意:
非永続キューでは、LISTENはコールできません。

POSTプロシージャ

このプロシージャにより、匿名サブスクリプションのリストに転送します。匿名サブスクリプションの場合、サブスクリプションに登録された全クライアントが通知を受信できます。

構文

DBMS_AQ.POST (
post_list       IN  SYS.AQ$_POST_INFO_LIST,
post_count      IN  NUMBER);

パラメータ

表24-12 POSTプロシージャのパラメータ

パラメータ

説明

post_list

転送する匿名サブスクリプションのリストを指定します。AQ$_POST_INFO_LISTタイプのリストです。

post_count

post_listのエントリ数を指定します。

使用上の注意

このプロシージャにより、匿名サブスクリプションに転送しますが、匿名サブスクリプションでは、サブスクリプションに登録された全クライアントが通知を受信できます。一度に、複数のサブスクリプションを転送できます。

REGISTERプロシージャ

このプロシージャにより、電子メール・アドレス、ユーザー定義のPL/SQLプロシージャまたはメッセージ通知用のHTTP URLを登録します。

構文

DBMS_AQ.REGISTER (
reg_list     IN  SYS.AQ$_REG_INFO_LIST,
count        IN  NUMBER);

パラメータ

表24-13 REGISTERプロシージャのパラメータ

パラメータ

説明

reg_list

メッセージ通知用に登録するサブスクリプションのリストを指定します。AQ$_REG_INFOタイプのリストです。

count

reg_listのエントリ数を指定します。

使用上の注意

- このプロシージャは、通知の登録に使用します。メッセージ通知の送信先電子メール・アドレスの指定、通知時に起動するプロシージャの登録または通知転送先のHTTP URLの登録ができます。複数のサブスクリプションを一度に登録することもできます。

- プロシージャは、次に示す5つのグループ化属性を使用して、グループ化通知を登録する場合にも使用できます。

- Class: グループ化の基準(現在、TIME基準のみサポート)

- Value: グループ化の基準値(現在、TIME基準の時間(秒)のみ)

- Type: 要約または最新の通知で、グループで受信した通知の数も含みます(AQネームスペースに対してのみ。DBCHANGEネームスペースは対象外)

- Repeat count: グループ化を実行する回数(デフォルトはFOREVER)

- Start time: グループ化を開始する時間(デフォルトは現在の時間)

- 電子メール通知を登録する場合、データベースが電子メール通知の送信に使用するSMTPサーバーのホスト名およびポート名を設定する必要があります。必要な場合は、データベースのsent fromフィールドを使用して、発信元の電子メール・アドレスを設定してください。この機能を使用するには、Java対応のデータベースが必要です。

- HTTP通知を登録する場合、データベースがHTTP通知の転送に使用するプロキシ・サーバーおよび非プロキシ・ドメイン・リストのホスト名およびポート名を設定する必要があります。

関連項目:
電子メールとHTTP通知の詳細は、第26章「DBMS_AQELM」を参照してください。

UNBIND_AGENTプロシージャ

このプロシージャは、LDAPサーバーからOracle Databaseアドバンスト・キューイング・エージェントのエントリを削除します。

構文

DBMS_AQ.UNBIND_AGENT(
agent    IN SYS.AQ$_AGENT);

パラメータ

表24-14 BIND_AGENTプロシージャのパラメータ

パラメータ

説明

agent

LDAPサーバーから削除されるエージェント

UNREGISTERプロシージャ

このプロシージャでは、通知をオフにするサブスクリプションを登録解除します。

構文

DBMS_AQ.UNREGISTER (
reg_list     IN  SYS.AQ$_REG_INFO_LIST,
reg_count    IN  NUMBER);

パラメータ

表24-15 UNREGISTERプロシージャのパラメータ

パラメータ

説明

reg_list

メッセージ通知用に登録するサブスクリプションのリストを指定します。AQ$_REG_INFOタイプのリストです。

reg_count

reg_listのエントリ数を指定します。

使用上の注意

このプロシージャにより、通知をオフにするサブスクリプションを登録解除します。複数のサブスクリプションを一度に登録解除することもできます。

25 DBMS_AQADM

DBMS_AQADMパッケージは、Oracle Databaseアドバンスト・キューイング(AQ)の構成および管理情報を管理するプロシージャを提供します。

関連項目:

- 『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』

- DBMS_AQADMと一緒に使用するTYPEについては、第271章「Oracle Databaseアドバンスト・キューイング(AQ)のタイプ」を参照してください。

この章では、次の項目について説明します。

- DBMS_AQADMの使用方法

- セキュリティ・モデル

- 定数

- サブプログラム・グループ

- キュー表サブプログラム

- 権限サブプログラム

- キュー・サブプログラム

- サブスクライバ・サブプログラム

- 通知サブプログラム

- 伝播サブプログラム

- Oracle Streams AQエージェント・サブプログラム

- 別名サブプログラム

- DBMS_AQADMサブプログラムの要約

DBMS_AQADMの使用方法

この項では、次の項目について説明します。

- セキュリティ・モデル

- 定数

セキュリティ・モデル

最初は、SYSおよびSYSTEMのみに、DBMS_AQADMおよびDBMS_AQ内のプロシージャの実行権限が付与されています。DBMS_AQとDBMS_AQADMのEXECUTE権限が付与されたユーザーは、自分のスキーマで、キューの作成、管理および使用ができます。MANAGE_ANY AQシステム権限は、その他のスキーマでキューを作成したり管理したりするために使用し、DBMS_AQADM.GRANT_SYSTEM_PRIVILEGEで権限の付与、DBMS_AQADM.REVOKE_SYSTEM_PRIVILEGEで権限の削除が行えます。

ユーザー・ロール

ユーザーにこのレベルの制御を付与する場合は、データベース管理者がDBMS_AQADM.GRANT_SYSTEM_PRIVILEGEおよびDBMS_AQADM.REVOKE_SYSTEM_PRIVILEGEを直接データベース・ユーザーに対して実行し、システム権限ENQUEUE_ANYおよびDEQUEUE_ANYを付与するオプションがあります。

アプリケーション開発者がキューに権限を付与するには、DBMS_AQADM.GRANT_QUEUE_PRIVILEGEおよびDBMS_AQADM.REVOKE_QUEUE_PRIVILEGEを実行して、オブジェクト・レベルの権限を付与および取り消します。

関連項目:

- 第24章「DBMS_AQ」。

- キュー権限およびアクセス制御の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

伝播に必要なセキュリティ

伝播ジョブの所有者はSYSですが、伝播はキュー表の所有者のセキュリティ・コンテキスト内で発生します。以前は、伝播ジョブの所有者は、伝播をスケジューリングするユーザーで、伝播が発生するのは、伝播スケジュールを設定するユーザーのセキュリティ・コンテキスト内でした。キュー表の所有者には、DBMS_AQADMパッケージのEXECUTE権限が必要です。権限がない場合、Oracleデータベース・スナップショット・プロセスは、エラー識別子SYS.DBMS_AQADMが定義されていないトレース・ファイルを伝播および生成しません。伝播には、キュー表の所有者が所有するプライベート・データベース・リンクを使用できます。接続文字列に指定されたユーザーには、リモート・データベース上のDBMS_AQパッケージおよびDBMS_AQADMパッケージに対するEXECUTEアクセス権限が必要です。

関連項目:
伝播する際のセキュリティ要件の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

キュー表の移行

MIGRATE_QUEUE_TABLEプロシージャでは、キュー表の所有者(通常のキュー・ユーザー)にDBMS_AQADMのEXECUTE権限を付与する必要があります。通常のキュー・ユーザーに対してキューおよびキュー表の作成と削除、サブスクライバの追加と削除などを許可しない場合は、移行完了の直後にEXECUTE権限を取り消す必要があります。

関連項目:

- 「MIGRATE_QUEUE_TABLEプロシージャ」。

- Oracle Databaseアドバンスト・キューイングのシステム権限の付与の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

定数

INFINITE、TRANSACTIONALまたはNORMAL_QUEUEなどの列挙定数を使用するときは、それを定義するパッケージの範囲内で、その記号を指定する必要があります。管理インタフェースに関連付けられているすべてのタイプには、DBMS_AQADMを付加する必要があります。たとえば、DBMS_AQADM.NORMAL_QUEUEのようにします。

表25-1 管理インタフェース内の列挙タイプ

パラメータ

オプション

retention

0, 1, 2...INFINITE

message_grouping

TRANSACTIONAL、NONE

queue_type

NORMAL_QUEUE、EXCEPTION_QUEUE、NON_PERSISTENT_QUEUE

関連項目:
DBMS_AQおよびDBMS_AQADMで使用されるJavaクラスとデータ構造の詳細は、「DBMS_AQ」パッケージを参照してください。

サブプログラム・グループ

DBMS_AQADMパッケージは、次のサブプログラム・グループで構成されています。

- キュー表サブプログラム

- 権限サブプログラム

- キュー・サブプログラム

- サブスクライバ・サブプログラム

- 通知サブプログラム

- 伝播サブプログラム

- Oracle Databaseアドバンスト・キューイング・エージェント・サブプログラム

- 別名サブプログラム

キュー表サブプログラム

表25-2 キュー表サブプログラム

サブプログラム

説明

ALTER_QUEUE_TABLEプロシージャ

キュー表の既存のプロパティを変更します。

CREATE_QUEUE_TABLEプロシージャ

事前定義タイプのメッセージのキュー表を作成します。

DROP_QUEUE_TABLEプロシージャ

既存のキュー表を削除します。

ENABLE_JMS_TYPESプロシージャ

JMSタイプおよびXMLタイプのエンキューの事前条件です。

MIGRATE_QUEUE_TABLEプロシージャ

8.0互換キュー表から8.1以上互換キュー表へのアップグレード、または8.1以上互換キュー表から8.0互換キュー表へのダウングレードを実行します。

PURGE_QUEUE_TABLEプロシージャ

キュー表からメッセージをパージします。

権限サブプログラム

表25-3 権限サブプログラム

サブプログラム

説明

GRANT_QUEUE_PRIVILEGEプロシージャ

ユーザーおよびロールにキューの権限を付与します。

GRANT_SYSTEM_PRIVILEGEプロシージャ

ユーザーおよびロールにOracle Databaseアドバンスト・キューイングのシステム権限を付与します。

REVOKE_QUEUE_PRIVILEGEプロシージャ

ユーザーおよびロールからキューの権限を取り消します。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

ユーザーおよびロールからOracle Databaseアドバンスト・キューイングのシステム権限を取り消します。

キュー・サブプログラム

表25-4 キュー・サブプログラム

サブプログラム

説明

ALTER_QUEUEプロシージャ

キューの既存のプロパティを変更します。

CREATE_NP_QUEUEプロシージャ

非永続のRAWキューを作成します。

CREATE_QUEUEプロシージャ

指定したキュー表にキューを作成します。

CREATE_SHARDED_QUEUEプロシージャ

共有されるキュー用に、キューとそのキュー表をまとめて作成します。

DROP_SHARDED_QUEUEプロシージャ

データベース・キューイング・システムから既存の共有されているキューを削除します。

DROP_QUEUEプロシージャ

既存のキューを削除します。

QUEUE_SUBSCRIBERSファンクション

PL/SQL索引付き表のコレクション・タイプDBMS_AQADM.AQ$_subscriber_list_tで、サブスクライバを8.0互換マルチ・コンシューマ・キューに返します。

START_QUEUEプロシージャ

指定したキューのエンキューまたはデキューを使用可能にします。

STOP_QUEUEプロシージャ

指定したキューのエンキューまたはデキューを使用禁止にします。

サブスクライバ・サブプログラム

表25-5 サブスクライバ・サブプログラム

サブプログラム

説明

ADD_SUBSCRIBERプロシージャ

キューにデフォルトのサブスクライバを追加します。

ALTER_SUBSCRIBERプロシージャ

指定したキューに対するサブスクライバの既存プロパティを変更します。

REMOVE_SUBSCRIBERプロシージャ

キューからデフォルトのサブスクライバを削除します。

通知サブプログラム

表25-6 通知サブプログラム

サブプログラム

説明

GET_WATERMARKプロシージャ

SET_WATERMARKプロシージャによって設定された水位標の値を取り出します。

GET_MAX_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングのストリーム・プールの最大メモリー制限値を取り出します。

GET_MIN_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングのストリーム・プールの最小メモリー制限値を取り出します。

SET_WATERMARKプロシージャ

Oracle Databaseアドバンスト・キューイング通知で、メモリーの使用を指定および制限するために使用されます。

SET_MAX_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングで、ストリーム・プールの最大メモリーの使用を指定および制限するために使用されます。

SET_MIN_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングで、ストリーム・プールの最小メモリーの使用を指定および制限するために使用されます。

伝播サブプログラム

表25-7 伝播サブプログラム

サブプログラム

説明

ALTER_PROPAGATION_SCHEDULEプロシージャ

伝播スケジュールのパラメータを変更します。

DISABLE_PROPAGATION_SCHEDULEプロシージャ

伝播スケジュールを使用禁止にします。

ENABLE_PROPAGATION_SCHEDULEプロシージャ

以前使用禁止にした伝播スケジュールを使用可能にします。

SCHEDULE_PROPAGATIONプロシージャ

キューから特定のデータベース・リンクで指定された宛先へのメッセージ伝播をスケジュールします。

UNSCHEDULE_PROPAGATIONプロシージャ

キューから特定のデータベース・リンクで指定された宛先へのメッセージ伝播の旧スケジュールを取り消します。

VERIFY_QUEUE_TYPESプロシージャ

ソース・キューおよび宛先キューのタイプが同じかどうかを検証します。

Oracle Databaseアドバンスト・キューイング・エージェント・サブプログラム

表25-8 Oracle Streams AQエージェント・サブプログラム

サブプログラム

説明

ALTER_AQ_AGENTプロシージャ

Oracle Databaseアドバンスト・キューイング・インターネット・アクセス用に登録されたエージェントと、セキュアなキューにアクセスするOracle Databaseアドバンスト・キューイング・エージェントを変更します。

CREATE_AQ_AGENTプロシージャ

HTTPまたはSMTPプロトコルを使用してOracle Databaseアドバンスト・キューイング・インターネット・アクセス用にエージェントを登録し、セキュアなキューにアクセスするOracle Databaseアドバンスト・キューイング・エージェントを作成します。

DISABLE_DB_ACCESSプロシージャ

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントから特定のデータベース・ユーザーの権限を取り消します。

DROP_AQ_AGENTプロシージャ

以前にOracle Databaseアドバンスト・キューイング・インターネット・アクセス用に登録されたエージェントを削除します。

ENABLE_DB_ACCESSプロシージャ

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントに特定のデータベース・ユーザーの権限を付与します。

別名サブプログラム

表25-9 別名サブプログラム

サブプログラム

説明

ADD_ALIAS_TO_LDAPプロシージャ

LDAPにキュー、エージェントまたはJMS ConnectionFactoryの別名を作成します。

DEL_ALIAS_FROM_LDAPプロシージャ

キュー、エージェントまたはJMS ConnectionFactoryの別名をLDAPから削除します。

DBMS_AQADMサブプログラムの要約

表25-10 DBMS_AQADMパッケージのサブプログラム

サブプログラム

説明

ADD_ALIAS_TO_LDAPプロシージャ

LDAPにキュー、エージェントまたはJMS ConnectionFactoryの別名を作成します。

ADD_SUBSCRIBERプロシージャ

キューにデフォルトのサブスクライバを追加します。

ALTER_AQ_AGENTプロシージャ

Oracle Databaseアドバンスト・キューイング・インターネット・アクセス用に登録されたエージェントと、セキュアなキューにアクセスするOracle Databaseアドバンスト・キューイング・エージェントを変更します。

ALTER_PROPAGATION_SCHEDULEプロシージャ

伝播スケジュールのパラメータを変更します。

ALTER_QUEUEプロシージャ

キューの既存のプロパティを変更します。

ALTER_QUEUE_TABLEプロシージャ

キュー表の既存のプロパティを変更します。

ALTER_SUBSCRIBERプロシージャ

指定したキューに対するサブスクライバの既存プロパティを変更します。

CREATE_AQ_AGENTプロシージャ

HTTPまたはSMTPプロトコルを使用してOracle Databaseアドバンスト・キューイング・インターネット・アクセス用にエージェントを登録し、セキュアなキューにアクセスするOracle Databaseアドバンスト・キューイング・エージェントを作成します。

CREATE_NP_QUEUEプロシージャ

非永続のRAWキューを作成します。

CREATE_QUEUEプロシージャ

指定したキュー表にキューを作成します。

CREATE_SHARDED_QUEUEプロシージャ

共有されるキュー用に、キューとそのキュー表をまとめて作成します。

CREATE_QUEUE_TABLEプロシージャ

事前定義タイプのメッセージのキュー表を作成します。

DROP_SHARDED_QUEUEプロシージャ

データベース・キューイング・システムから既存の共有されているキューを削除します。

DEL_ALIAS_FROM_LDAPプロシージャ

キュー、エージェントまたはJMS ConnectionFactoryの別名をLDAPから削除します。

DISABLE_DB_ACCESSプロシージャ

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントから特定のデータベース・ユーザーの権限を取り消します。

DISABLE_PROPAGATION_SCHEDULEプロシージャ

伝播スケジュールを使用禁止にします。

DROP_AQ_AGENTプロシージャ

以前にOracle Databaseアドバンスト・キューイング・インターネット・アクセス用に登録されたエージェントを削除します。

DROP_QUEUEプロシージャ

既存のキューを削除します。

DROP_QUEUE_TABLEプロシージャ

既存のキュー表を削除します。

ENABLE_DB_ACCESSプロシージャ

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントに特定のデータベース・ユーザーの権限を付与します。

ENABLE_JMS_TYPESプロシージャ

JMSタイプおよびXMLタイプのエンキューの事前条件です。

ENABLE_PROPAGATION_SCHEDULEプロシージャ

以前使用禁止にした伝播スケジュールを使用可能にします。

GET_WATERMARKプロシージャ

SET_WATERMARKプロシージャによって設定された水位標の値を取り出します。

GET_MAX_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングのストリーム・プールの最大メモリー制限値を取り出します。

GET_MIN_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングのストリーム・プールの最小メモリー制限値を取り出します。

GRANT_QUEUE_PRIVILEGEプロシージャ

ユーザーおよびロールにキューの権限を付与します。

GRANT_SYSTEM_PRIVILEGEプロシージャ

ユーザーおよびロールにOracle Databaseアドバンスト・キューイングのシステム権限を付与します。

MIGRATE_QUEUE_TABLEプロシージャ

8.0互換キュー表から8.1以上互換キュー表へのアップグレード、または8.1以上互換キュー表から8.0互換キュー表へのダウングレードを実行します。

PURGE_QUEUE_TABLEプロシージャ

キュー表からメッセージをパージします。

QUEUE_SUBSCRIBERSファンクション

PL/SQL索引付き表のコレクション・タイプDBMS_AQADM.AQ$_subscriber_list_tで、サブスクライバを8.0互換マルチ・コンシューマ・キューに返します。

REMOVE_SUBSCRIBERプロシージャ

キューからデフォルトのサブスクライバを削除します。

REVOKE_QUEUE_PRIVILEGEプロシージャ

ユーザーおよびロールからキューの権限を取り消します。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

ユーザーおよびロールからOracle Databaseアドバンスト・キューイングのシステム権限を取り消します。

SCHEDULE_PROPAGATIONプロシージャ

キューから特定のデータベース・リンクで指定された宛先へのメッセージ伝播をスケジュールします。

SET_WATERMARKプロシージャ

Oracle Databaseアドバンスト・キューイング通知で、メモリーの使用を指定および制限するために使用されます。

SET_MAX_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングで、ストリーム・プールの最大メモリーの使用を指定および制限するために使用されます。

SET_MIN_STREAMS_POOLプロシージャ

Oracle Databaseアドバンスト・キューイングで、ストリーム・プールの最小メモリーの使用を指定および制限するために使用されます。

START_QUEUEプロシージャ

指定したキューのエンキューまたはデキューを使用可能にします。

STOP_QUEUEプロシージャ

指定したキューのエンキューまたはデキューを使用禁止にします。

UNSCHEDULE_PROPAGATIONプロシージャ

キューから特定のデータベース・リンクで指定された宛先へのメッセージ伝播の旧スケジュールを取り消します。

VERIFY_QUEUE_TYPESプロシージャ

ソース・キューおよび宛先キューのタイプが同じかどうかを検証します。

ADD_ALIAS_TO_LDAPプロシージャ

このプロシージャは、キュー、エージェントまたはJMS ConnectionFactoryの別名をLDAPに作成します。別名は、LDAP階層においてデータベース・サーバーの識別名の下に直接配置されます。

構文

DBMS_AQADM.ADD_ALIAS_TO_LDAP(
alias          IN VARCHAR2,
obj_location   IN VARCHAR2);

パラメータ

表25-11 ADD_ALIAS_TO_LDAPプロシージャのパラメータ

パラメータ

説明

alias

別名。例: west_shipping。

obj_location

aliasが参照するオブジェクト(キュー、エージェントまたはコネクション・ファクトリ)の識別名。

使用上の注意

この方法は、キュー、エージェントおよびJMS ConnectionFactoryオブジェクトの別名の作成に使用できます。別名を作成するには、オブジェクトが存在している必要があります。これらの別名は、JMSのJNDI参照と、Oracle Databaseアドバンスト・キューイング・インターネット・アクセスで使用できます。

ADD_SUBSCRIBERプロシージャ

このプロシージャは、キューにデフォルトのサブスクライバを追加します。

構文

DBMS_AQADM.ADD_SUBSCRIBER (
queue_name      IN    VARCHAR2,
subscriber      IN    sys.aq$_agent,
rule            IN    VARCHAR2 DEFAULT NULL,
transformation  IN    VARCHAR2 DEFAULT NULL
queue_to_queue  IN    BOOLEAN DEFAULT FALSE,
delivery_mode   IN    PLS_INTEGER DEFAULT DBMS_AQADM.PERSISTENT);

パラメータ

表25-12 ADD_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

queue_name

キュー名。

subscriber

サブスクリプションを定義しようとしているエージェント。

rule

メッセージ・プロパティ、メッセージ・データ・プロパティおよびPL/SQLファンクションに基づいた条件式。ルールはSQL問合せのWHERE句と同様の構文を使用して、ブール式で指定されます。このブール式には、メッセージ・プロパティ、ユーザー・データのプロパティ(オブジェクト・ペイロードのみ)、およびPL/SQLファンクションまたはSQLファンクション(SQL問合せのWHERE句で指定)に関する条件を組み込むことができます。現在サポートされているメッセージ・プロパティは、priorityおよびcorridです。

メッセージ・ペイロード(オブジェクト・ペイロード)のルールを指定するには、句にオブジェクト・タイプの属性を使用します。各属性の前に修飾子としてtab.user_dataを付加して、ペイロードを格納するキュー表の特定の列を示します。ルールのパラメータは4000バイト以内です。

transformation

このサブスクライバがメッセージをデキューしたときに適用される変換を指定します。変換のソース・タイプは、キューのタイプと一致させる必要があります。サブスクライバがリモートで操作している場合、リモート・キューに伝播される前に変換が適用されます。

queue_to_queue

TRUEの場合、キュー間で伝播が実行されます。

delivery_mode

管理者は、サブスクライバで必要なメッセージの配信モードに、DBMS_AQADM.PERSISTENT、DBMS_AQADM.BUFFEREDまたはDBMS_AQADM.PERSISTENT_OR_BUFFEREDのいずれかを指定できます。このパラメータは、ALTER_SUBSCRIBERでは変更できません。

使用上の注意

プログラムは、特定の受信者リストまたはデフォルトのサブスクライバ・リストに対してメッセージをエンキューできます。この操作は、マルチ・コンシューマが許可されているキューでのみ成功します。この操作はすぐに有効となり、含まれるトランザクションがコミットされます。このコール後に実行されたエンキュー要求は、新しい動作を反映します。

ルール内の任意の文字列を次に示します。

rule   => 'PRIORITY <= 3 AND CORRID =  ''FROM JAPAN'''

すべて一重引用符が使用されていることに注意してください。

ALTER_AQ_AGENTプロシージャ

このプロシージャは、Oracle Databaseアドバンスト・キューイング・インターネット・アクセス用に登録されたエージェントを変更します。セキュアなキューにアクセスするOracle Databaseアドバンスト・キューイング・エージェントを変更するためにも使用されます。

関連項目:
保護キューの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_AQADM.ALTER_AQ_AGENT (
agent_name                IN VARCHAR2,
certificate_location      IN VARCHAR2 DEFAULT NULL,
enable_http               IN BOOLEAN DEFAULT FALSE,
enable_smtp               IN BOOLEAN DEFAULT FALSE,
enable_anyp               IN BOOLEAN DEFAULT FALSE )

パラメータ

表25-13 ALTER_AQ_AGENTプロシージャのパラメータ

パラメータ

説明

agent_name

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントのユーザー名を指定します。

certification_location

LDAPにおけるエージェントの証明書の位置(デフォルトはNULL)。Oracle Databaseアドバンスト・キューイングへのSMTPを介したアクセスをエージェントに許可する場合、エージェントの証明書をLDAPで登録する必要があります。HTTPを介してアクセスする場合は、証明書の位置は必要ありません。

enable_http

TRUEの場合、エージェントがHTTPを介してOracle Databaseアドバンスト・キューイングにアクセスできることを意味します。FALSEの場合、エージェントがHTTPを介してOracle Databaseアドバンスト・キューイングにアクセスできないことを意味します。

enable_smtp

TRUEの場合、エージェントがSMTP(電子メール)を介してOracle Databaseアドバンスト・キューイングにアクセスできることを意味します。FALSEの場合、エージェントがSMTPを介してOracle Databaseアドバンスト・キューイングにアクセスできないことを意味します。

enable_anyp

TRUEの場合、エージェントがどんなプロトコル(HTTPまたはSMTP)を介してもOracle Databaseアドバンスト・キューイングにアクセスできることを意味します。

ALTER_PROPAGATION_SCHEDULEプロシージャ

このプロシージャは、伝播スケジュールのパラメータを変更します。

構文

DBMS_AQADM.ALTER_PROPAGATION_SCHEDULE (
queue_name           IN    VARCHAR2,
destination          IN    VARCHAR2 DEFAULT NULL,
duration             IN    NUMBER   DEFAULT NULL,
next_time            IN    VARCHAR2 DEFAULT NULL,
latency              IN    NUMBER   DEFAULT 60,
destination_queue    IN    VARCHAR2 DEFAULT NULL);

パラメータ

表25-14 ALTER_PROPAGATION_SCHEDULEプロシージャのパラメータ

パラメータ

説明

queue_name

伝播対象のメッセージがあるソース・キューの名前で、スキーマ名を含みます。スキーマ名が指定されていない場合は、デフォルトでユーザーのスキーマ名が設定されます。

destination

宛先のデータベース・リンク。この宛先の受信者に対するソース・キュー内のメッセージが伝播されます。宛先がNULLの場合は、ローカル・データベースが宛先となり、メッセージはローカル・データベース内の他のキューに伝播されます。このフィールドの長さは128バイトに制限されており、名前が完全に修飾されていない場合は、デフォルトのドメイン名が使用されます。

duration

伝播ウィンドウの継続期間(秒数)。NULL値の場合、伝播ウィンドウは無期限または伝播スケジュールが取り消されるまで継続します。

next_time

現在の伝播ウィンドウの終了から次の伝播ウィンドウの開始を計算する日付ファンクション。この値がNULLの場合は、現在のウィンドウが終了すると伝播は停止されます。たとえば、毎日同時刻にウィンドウを起動するには、next_timeにSYSDATE + 1 - duration/86400と指定します。

latency

伝播ウィンドウにおける、メッセージがエンキュー後に伝播されるまでの最大待機時間(秒数)。デフォルト値は、60です。注意: このコールに対して待機時間が指定されない場合、待機時間は既存の値をデフォルト値で上書きします。

たとえば、待機時間が60秒で伝播ウィンドウに伝播するメッセージがない場合、そのキューからのその宛先に対するメッセージは、最低60秒間伝播されません。指定した宛先に対してメッセージを伝播するためにキューを再度チェックするまでの時間は、最短で60秒になります。待機時間が600の場合、キューは10分間チェックされず、待機時間が0 (ゼロ)の場合は、宛先に対するメッセージがエンキューされるまでジョブ・キュー・プロセスが待機することになり、メッセージがエンキューされるとすぐに伝播されます。

destination_queue

dblinkの形式でメッセージが伝播される宛先キューの名前。

ALTER_QUEUEプロシージャ

このプロシージャは、キューの既存プロパティを変更します。パラメータmax_retries、retention_timeおよびretry_delayは、非永続キューではサポートされていません。

構文

DBMS_AQADM.ALTER_QUEUE (
queue_name        IN    VARCHAR2,
max_retries       IN    NUMBER   DEFAULT NULL,
retry_delay       IN    NUMBER   DEFAULT NULL,
retention_time    IN    NUMBER   DEFAULT NULL,
auto_commit       IN    BOOLEAN  DEFAULT TRUE,
comment           IN    VARCHAR2 DEFAULT NULL);

パラメータ

表25-15 ALTER_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

変更するキューの名前。

max_retries

REMOVEモードのデキューがメッセージ上で試行される回数を制限します。max_retriesの最大値は2**31 -1です。

RETRY_COUNTがMAX_RETRIESより大きい場合、メッセージは例外キューにします。デキューの実行後にアプリケーションがロールバックを発行するたびに、RETRY_COUNTが増加します。サーバー・プロセスの停止(ALTER SYSTEM KILL SESSION)またはインスタンスのSHUTDOWN ABORTによって、デキュー・トランザクションが失敗した場合は、RETRY_COUNTは増加しません。

max_retriesはすべてのシングル・コンシューマ・キューおよび8.1以上互換のマルチ・コンシューマ・キューでサポートされていますが、8.0互換のマルチ・コンシューマ・キューではサポートされていないことに注意してください。

retry_delay

アプリケーションのロールバック後、このメッセージの再処理をスケジュールするまでの遅延時間(秒数)。デフォルトはNULLで、値が変更されないことを意味します。

retry_delayは、シングル・コンシューマ・キューおよび8.1以上互換のマルチ・コンシューマ・キューでサポートされていますが、8.0互換のマルチ・コンシューマ・キューではサポートされていないことに注意してください。

retention_time

デキュー後、メッセージがキュー表内に保持される時間(秒数)。デフォルトはNULLで、値が変更されないことを意味します。

auto_commit

TRUEの場合、現行のトランザクションがある場合は、ALTER_QUEUE操作が実行される前にコミットされます。ALTER_QUEUE操作は、コールから戻ると持続されます。これがデフォルトです。FALSEの場合、この操作は現行トランザクションの一部で、コール元がコミットを入力した場合のみ持続されます。

注意: このパラメータは非推奨となっています。

comment

キューに関するユーザー指定の説明。このユーザー・コメントは、キュー・カタログに追加されます。デフォルト値はNULLで、値が変更されないことを意味します。

ALTER_QUEUE_TABLEプロシージャ

このプロシージャは、キュー表の既存のプロパティを変更します。

構文

DBMS_AQADM.ALTER_QUEUE_TABLE (
queue_table          IN   VARCHAR2,
comment              IN   VARCHAR2       DEFAULT NULL,
primary_instance     IN   BINARY_INTEGER DEFAULT NULL,
secondary_instance   IN   BINARY_INTEGER DEFAULT NULL);

パラメータ

表25-16 ALTER_QUEUE_TABLEプロシージャのパラメータ

パラメータ

説明

queue_table

作成するキュー表の名前。

comment

キュー表に関するユーザー指定の説明を変更します。このユーザー・コメントは、キュー・カタログに追加されます。デフォルト値はNULLで、値が変更されないことを意味します。

primary_instance

キュー表のプライマリ所有者。キュー表内のキューに対するキュー・モニターのスケジューリングおよび伝播は、このインスタンス内で行われます。デフォルト値はNULLで、現行の値が変更されないことを意味します。

secondary_instance

プライマリ・インスタンスが使用不可の場合、キュー表はセカンダリ・インスタンスにフェイルオーバーします。デフォルト値はNULLで、現行の値が変更されないことを意味します。

ALTER_SUBSCRIBERプロシージャ

このプロシージャは、指定したキューに対するサブスクライバの既存プロパティを変更します。ルールのみの変更が可能です。

構文

DBMS_AQADM.ALTER_SUBSCRIBER (
queue_name     IN    VARCHAR2,
subscriber     IN    sys.aq$_agent,
rule           IN    VARCHAR2
transformation IN    VARCHAR2);

パラメータ

表25-17 ALTER_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

queue_name

キュー名。

subscriber

サブスクリプションを変更するエージェント。「AQ$_AGENTタイプ」を参照してください。

rule

メッセージ・プロパティ、メッセージ・データ・プロパティおよびPL/SQLファンクションに基づいた条件式。ルールのパラメータは4000バイト以内です。ルールを削除する場合は、ルール・パラメータをNULLに設定します。

transformation

このサブスクライバがメッセージをデキューしたときに適用される変換を指定します。変換のソース・タイプは、キューのタイプと一致させる必要があります。サブスクライバがリモートで操作している場合、リモート・キューに伝播される前に変換が適用されます。

使用上の注意

このプロシージャは、サブスクライバのルールおよび変換の両方を変更します。どちらかを既存値のまま保持する場合は、元の値を指定する必要があります。サブスクライバのルールおよび変換の現在の値を取得するには、schema.AQ$queue_table_Rおよびschema.AQ$queue_table_Sのビューを使用します。

CREATE_AQ_AGENTプロシージャ

このプロシージャは、HTTPまたはSMTPプロトコルを使用して、Oracle Databaseアドバンスト・キューイング・インターネット・アクセス用にエージェントを登録します。セキュアなキューにアクセスするOracle Databaseアドバンスト・キューイング・エージェントを作成するためにも使用されます。

関連項目:
保護キューの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_AQADM.CREATE_AQ_AGENT (
agent_name                IN VARCHAR2,
certificate_location      IN VARCHAR2 DEFAULT NULL,
enable_http               IN BOOLEAN DEFAULT FALSE,
enable_smtp               IN BOOLEAN DEFAULT FALSE,
enable_anyp               IN BOOLEAN DEFAULT FALSE )

パラメータ

表25-18 CREATE_AQ_AGENTプロシージャのパラメータ

パラメータ

説明

agent_name

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントのユーザー名を指定します。

certification_location

LDAPにおけるエージェントの証明書の位置(デフォルトはNULL)。Oracle Databaseアドバンスト・キューイングへのSMTPを介したアクセスをエージェントに許可する場合、エージェントの証明書をLDAPで登録する必要があります。HTTPを介してアクセスする場合は、証明書の位置は必要ありません。

enable_http

TRUEの場合、エージェントがHTTPを介してOracle Databaseアドバンスト・キューイングにアクセスできることを意味します。FALSEの場合、エージェントがHTTPを介してOracle Databaseアドバンスト・キューイングにアクセスできないことを意味します。

enable_smtp

TRUEの場合、エージェントがSMTP(電子メール)を介してOracle Databaseアドバンスト・キューイングにアクセスできることを意味します。FALSEの場合、エージェントがSMTPを介してOracle Databaseアドバンスト・キューイングにアクセスできないことを意味します。

enable_anyp

TRUEの場合、エージェントがどんなプロトコル(HTTPまたはSMTP)を介してもOracle Databaseアドバンスト・キューイングにアクセスできることを意味します。

使用上の注意

SYS.AQ$INTERNET_USERSビューには、すべてのOracle Databaseアドバンスト・キューイング・インターネット・エージェントのリストが表示されます。

CREATE_NP_QUEUEプロシージャ

注意:
リリース10gR2では、非永続キューの使用は推奨されていません。バッファに入れたメッセージを使用することをお薦めします。

このプロシージャは、非永続のRAWキューを作成します。

構文

DBMS_AQADM.CREATE_NP_QUEUE (
queue_name              IN        VARCHAR2,
multiple_consumers      IN        BOOLEAN  DEFAULT FALSE,
comment                 IN        VARCHAR2 DEFAULT NULL);

パラメータ

表25-19 CREATE_NP_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

作成する非永続キューの名前。名前はスキーマ内で重複しないようにし、『Oracle Database SQL言語リファレンス』のオブジェクト名のガイドラインに従う必要があります。

multiple_consumers

FALSEの場合、表内に作成されたキューには、各メッセージに対してコンシューマを1つのみ設定できます。これがデフォルトです。TRUEの場合、表内に作成されたキューには、各メッセージに対して複数のコンシューマを設定できます。

非永続キューは、ユーザーが作成したキュー表からこの特性を継承しないため、このパラメータはキュー・レベルで識別されることに注意してください。

comment

キューに関するユーザー指定の説明。このユーザー・コメントは、キュー・カタログに追加されます。

使用上の注意

キューは、シングル・コンシューマ・キューまたはマルチ・コンシューマ・キューのいずれかです。すべてのキュー名はスキーマ内で重複しないようにしてください。キューは、キュー名で指定されたスキーマ内の8.1以上互換のシステム作成キュー表(AQ$_MEM_SCまたはAQ$_MEM_MC)に作成されます。

キュー名でスキーマ名が指定されていない場合、キューはログイン・ユーザーのスキーマ内に作成されます。CREATE_NP_QUEUEでキューが作成された後、START_QUEUEをコールするとそのキューが使用可能になります。デフォルトでは、キューはエンキューおよびデキューともに使用禁止で作成されます。

非永続キューからはデキューできません。非永続キューからメッセージを取り出す唯一の方法は、OCI通知メカニズムを使用することです。非永続キューでは、LISTENコールは起動できません。

CREATE_QUEUEプロシージャ

このプロシージャは、指定したキュー表にキューを作成します。

構文

DBMS_AQADM.CREATE_QUEUE (
queue_name          IN       VARCHAR2,
queue_table         IN       VARCHAR2,
queue_type          IN       BINARY_INTEGER DEFAULT NORMAL_QUEUE,
max_retries         IN       NUMBER         DEFAULT NULL,
retry_delay         IN       NUMBER         DEFAULT 0,
retention_time      IN       NUMBER         DEFAULT 0,
dependency_tracking IN       BOOLEAN        DEFAULT FALSE,
comment             IN       VARCHAR2       DEFAULT NULL,
auto_commit         IN       BOOLEAN        DEFAULT TRUE);

パラメータ

表25-20 CREATE_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

作成するキューの名前。名前はスキーマ内で重複しないようにし、予約語については、『Oracle Database SQL言語リファレンス』のオブジェクト名のガイドラインに従う必要があります。

queue_table

キューを格納するキュー表の名前。

queue_type

作成されるキューが例外キューか標準キューかを指定します。NORMAL_QUEUEの場合、キューは標準キューです。これがデフォルトです。EXCEPTION_QUEUEの場合、キューは例外キューです。例外キューでは、デキュー操作のみ許可されます。

max_retries

REMOVEモードのデキューがメッセージ上で試行される回数を制限します。max_retriesの最大値は2**31 -1です。

RETRY_COUNTがMAX_RETRIESより大きい場合、メッセージは例外キューにします。デキューの実行後にアプリケーションがロールバックを発行するたびに、RETRY_COUNTが増加します。サーバー・プロセスの停止(ALTER SYSTEM KILL SESSION)またはインスタンスのSHUTDOWN ABORTによって、デキュー・トランザクションが失敗した場合は、RETRY_COUNTは増加しません。

max_retriesはすべてのシングル・コンシューマ・キューおよび8.1以上互換のマルチ・コンシューマ・キューでサポートされていますが、8.0互換のマルチ・コンシューマ・キューではサポートされていないことに注意してください。

retry_delay

アプリケーションのロールバック後、このメッセージの再処理をスケジュールするまでの遅延時間(秒数)。

デフォルトは0(ゼロ)で、メッセージを最も迅速に取り出せます。このパラメータは、max_retriesが0(ゼロ)に設定されている場合は無効です。retry_delayは、シングル・コンシューマ・キューおよび8.1以上互換のマルチ・コンシューマ・キューでサポートされていますが、8.0互換のマルチ・コンシューマ・キューではサポートされていないことに注意してください。

retention_time

キューからデキューされた後に、メッセージがキュー表に保持される秒数。INFINITEでは、メッセージが無期限で保持されます。NUMBERは、メッセージを保持する秒数です。デフォルトは0(ゼロ)で、保持されません。

dependency_tracking

将来使用するために予約されています。FALSEはデフォルトです。TRUEは、このリリースでは指定できません。

comment

キューに関するユーザー指定の説明。このユーザー・コメントは、キュー・カタログに追加されます。

auto_commit

TRUEの場合、現行のトランザクションがある場合は、CREATE_QUEUE操作が実行される前にコミットされます。CREATE_QUEUE操作は、コールから戻ると持続されます。これがデフォルトです。FALSEの場合、この操作は現行トランザクションの一部で、コール元がコミットを入力した場合のみ持続されます。

注意: このパラメータは非推奨となっています。

使用上の注意

すべてのキュー名はスキーマ内で重複しないようにしてください。CREATE_QUEUEでキューが作成された後、START_QUEUEをコールするとそのキューが使用可能になります。デフォルトでは、キューはエンキューおよびデキューともに使用禁止で作成されます。

CREATE_SHARDED_QUEUEプロシージャ

CREATE_SHARDED_QUEUEは、12cリリース1(12.1)の新しいAPIで、JMSの共有されたキューに適したキューとキュー表を作成します。このAPIは、共有されていないキューの作成には使用できません。JMSの共有されたキューは、この統合された単一のAPIを使用して作成する必要があります。これにより、JMSでAQプロパティが必要に応じて自動的に設定されます。

JMSの共有されたキューは、シングル・コンシューマ・キューとマルチ・コンシューマ・キューのいずれかとして作成可能です。

構文

PROCEDURE CREATE_SHARDED_QUEUE (
queue_name             IN VARCHAR2,
storage_clause         IN VARCHAR2       DEFAULT NULL,
multiple_consumers     IN BOOLEAN        DEFAULT FALSE,
max_retries            IN NUMBER         DEFAULT NULL,
comment                IN VARCHAR2       DEFAULT NULL);

パラメータ

表25-21 CREATE_SHARDED_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

この必須パラメータは、新しいキューの名前を指定します。

storage_clause

記憶域パラメータは、キュー表の作成時に、CREATE TABLE文に組み込まれます。storage_clause引数には、標準CREATE TABLE storage_clause引数で使用できるすべてのテキストを指定できます。記憶域パラメータは、PCTFREE、PCTUSED、INITRANS、MAXTRANS、TABLESPACE、LOBおよび表STORAGE句のパラメータの任意の組合せから構成できます。

ここで表領域が指定されない場合は、キュー表とそのすべての関連オブジェクトが、デフォルトのユーザー表領域に作成されます。ここで表領域が指定されると、キュー表とそのすべての関連オブジェクトが、STORAGE句で指定された表領域に作成されます。これらのパラメータの使用方法は、『Oracle Database SQL言語リファレンス』を参照してください。

multiple_consumers

FALSEの場合、各メッセージに対してコンシューマを1つのみ設定できます。これがデフォルトです。TRUEの場合、表内に作成されたキューには、各メッセージに対して複数のコンシューマを設定できます。

max_retries

このオプション・パラメータは、メッセージのデキューに失敗した後に再試行できる回数を制限します。max_retriesの最大値は2**31 -1です。再試行の制限を超えると、メッセージがキューからパージされます。デキューの実行後にアプリケーションがロールバックを発行するたびに、RETRY_COUNTが増加します。サーバー・プロセスの停止(ALTER SYSTEM KILL SESSION)またはインスタンスのSHUTDOWN ABORTによって、デキュー・トランザクションが失敗した場合は、RETRY_COUNTは増加しません。

comment

このオプション・パラメータは、ユーザーが指定したキュー表の説明です。このユーザー・コメントは、キュー・カタログに追加されます。

DROP_SHARDED_QUEUEプロシージャ

このプロシージャは、データベース・キューイング・システムから既存の共有されているキューを削除します。DROP_SHARDED_QUEUEをコールする前に、キューを停止する必要があります。forceをFALSEに設定した場合、ユーザーはDROP_SHARDED_QUEUEをコールする前にキューを明示的に停止する必要があります。forceをTRUEに設定した場合、キューは内部的に停止されてから削除されます。

構文

DBMS_AQADM.DROP_SHARDED_QUEUE(
queue_name IN VARCHAR2,
force      IN BOOLEAN DEFAULT FALSE )

パラメータ

表25-22 CREATE_SHARDED_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

この必須パラメータは、共有されているキューの名前を指定します。

force

キューが停止されていない場合でも、共有されているキューは削除されます。

CREATE_QUEUE_TABLEプロシージャ

このプロシージャは、事前定義タイプのメッセージ用のキュー表を作成します。

構文

DBMS_AQADM.CREATE_QUEUE_TABLE (
queue_table          IN      VARCHAR2,
queue_payload_type   IN      VARCHAR2,
storage_clause       IN      VARCHAR2        DEFAULT NULL,
sort_list            IN      VARCHAR2        DEFAULT NULL,
multiple_consumers   IN      BOOLEAN         DEFAULT FALSE,
message_grouping     IN      BINARY_INTEGER  DEFAULT NONE,
comment              IN      VARCHAR2        DEFAULT NULL,
auto_commit          IN      BOOLEAN         DEFAULT TRUE,
primary_instance     IN      BINARY_INTEGER  DEFAULT 0,
secondary_instance   IN      BINARY_INTEGER  DEFAULT 0,
compatible           IN      VARCHAR2        DEFAULT NULL,
secure               IN      BOOLEAN         DEFAULT FALSE);

パラメータ

表25-23 CREATE_QUEUE_TABLEプロシージャのパラメータ

パラメータ

説明

queue_table

作成するキュー表の名前。

queue_payload_type

格納されるユーザー・データのタイプ。このパラメータの有効値については、「タイプ名」を参照してください。

storage_clause

記憶域パラメータ。記憶域パラメータは、キュー表の作成時に、CREATE TABLE文に組み込まれます。storage_clause引数には、標準CREATE TABLE storage_clause引数で使用できるすべてのテキストを指定できます。記憶域パラメータは、PCTFREE、PCTUSED、INITRANS、MAXTRANS、TABLESPACE、LOBおよび表STORAGE句のパラメータの任意の組合せから構成できます。

ここで表領域が指定されない場合は、キュー表とそのすべての関連オブジェクトが、デフォルトのユーザー表領域に作成されます。ここで表領域が指定されると、キュー表とそのすべての関連オブジェクトが、STORAGE句で指定された表領域に作成されます。これらのパラメータの使用方法は、『Oracle Database SQL言語リファレンス』を参照してください。

sort_list

昇順ソート・キーに使用する列。このパラメータの書式は次のとおりです。

'sort_column_1,sort_column_2'

指定できる列名は、priority、enq_time、およびcommit_timeです。両方の列を指定する場合は、sort_column_1に優先順位を定義します。

特定の順序付けメカニズムでキュー表が作成されると、キュー表内のすべてのキューに同じデフォルトが設定されます。キュー表の順序は、キュー表の作成後には変更できません。

ソート・リストが指定されていない場合、このキュー表内のキューはすべて、エンキュー時に昇順ソートされます。この順序はFIFO順と同じです。

デフォルトの順序が定義されている場合でも、デキュー元はmsgid、correlation. msgidまたはcorrelationを指定して、デキューするメッセージを選択できます。sequence_deviationが指定されている場合は、デフォルトのデキュー順序よりも優先されます。

sort_listパラメータにcommit_timeを指定すると、生成されるキュー表でコミット時間による順序付けが使用されます。コミット時間による順序付けの詳細は、『Oracle Streams概要および管理』のコミット時間キューに関する項を参照してください。

Oracle Databaseアドバンスト・キューイングでのメッセージの順序付けについては、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のメッセージの優先順位と順序付けに関する項も参照してください。

multiple_consumers

FALSEの場合、表内に作成されたキューには、各メッセージに対してコンシューマを1つのみ設定できます。これがデフォルトです。TRUEの場合、表内に作成されたキューには、各メッセージに対して複数のコンシューマを設定できます。

message_grouping

表内に作成されたキューのメッセージ・グループ化に関する動作。NONEの場合、各メッセージは個々に処理されます。TRANSACTIONALでは、特定のトランザクションの一部としてエンキューされたメッセージ(複数)は同じグループに属するものとみなされ、関連するメッセージのグループとしてデキューできます。

comment

キュー表に関するユーザー指定の説明。このユーザー・コメントは、キュー・カタログに追加されます。

auto_commit

TRUEの場合、現行のトランザクションがある場合は、CREATE_QUEUE_TABLE操作が実行される前にコミットされます。CREATE_QUEUE_TABLE操作は、コールから戻ると持続されます。これがデフォルトです。FALSEの場合、この操作は現行トランザクションの一部で、コール元がコミットを入力した場合のみ持続されます。

注意: このパラメータは非推奨となっています。

primary_instance

キュー表のプライマリ所有者。キュー表内のキューに対するキュー・モニターのスケジューリングおよび伝播は、このインスタンス内で行われます。

プライマリ・インスタンスのデフォルト値は0(ゼロ)で、キュー・モニターのスケジューリングおよび伝播は、使用可能なすべてのインスタンス内で行われます。

secondary_instance

プライマリ・インスタンスが使用不可の場合、キュー表はセカンダリ・インスタンスにフェイルオーバーします。デフォルト値は0(ゼロ)で、キュー表は使用可能なすべてのインスタンスにフェイルオーバーします。

compatible

キューと互換性があるデータベースの最下位バージョン。現在、設定可能な値は、8.0、8.1または10.0のいずれかです。データベースが10.1互換モードの場合、デフォルト値は10.0です。データベースが8.1互換モードまたは9.2互換モードの場合、デフォルト値は8.1です。データベースが8.0互換モードの場合、デフォルト値は8.0です。

secure

保護キューのキュー表を使用する場合は、このパラメータをTRUEに設定する必要があります。保護キューとは、エンキューやデキューなどのキュー操作を実行できる1人以上のデータベース・ユーザーに対して、AQエージェントを明示的に関連付ける必要があるキューのことです。保護キューの所有者は、キューに対してすべてのキュー操作を実行できますが、他のユーザーは保護キュー・ユーザーとして設定されていないかぎり、保護キューに対してキュー操作を実行することはできません。

使用上の注意

デキュー順序のソート・キーがある場合は、表作成時に定義する必要があります。このときに次のオブジェクトが作成されます。

- aq$_queue_table_name_e: キュー表に関連付けられているデフォルトの例外キューです。

- aq$queue_table_name: Oracle Databaseアドバンスト・キューイング・アプリケーションでのキュー・データの問合せに使用する読取り専用ビューです。

- aq$_queue_table_name_t: キュー・モニター操作用の索引(マルチ・コンシューマ・キューの場合は索引構成表)です。

- aq$_queue_table_name_i: デキュー操作用の索引(マルチ・コンシューマ・キューの場合は索引構成表)です。

8.1互換以上のキュー表の場合は、次の索引構成表が作成されます。

- aq$_queue_table_name_s: この表にはサブスクライバに関する情報が格納されます。

- aq$_queue_table_name_r: この表にはサブスクリプションのルールに関する情報が格納されます。

aq$_queue_table_name_h: この索引構成表にはデキュー履歴データが格納されます。

CLOB、BLOBおよびBFILEは、Oracle Databaseアドバンスト・キューイングのオブジェクト・タイプ・ペイロードに有効な属性です。ただし、Oracle8iリリース8.1.5以降では、Oracle Databaseアドバンスト・キューイング伝播を使用して伝播できるのはCLOBとBLOBのみです。詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

互換パラメータのデフォルト値は、init.oraのデータベース互換モードにより異なります。データベースが10.1互換モードの場合、デフォルト値は10.0です。データベースが8.1互換モードまたは9.2互換モードの場合、デフォルト値は8.1です。データベースが8.0互換モードの場合、デフォルト値は8.0です。

primary_instanceとsecondary_instanceは、8.1以上互換モードでのみ指定および変更できます。プライマリ・インスタンスが存在しないと、セカンダリ・インスタンスは指定できません。

DEL_ALIAS_FROM_LDAPプロシージャ

このプロシージャは、キュー、エージェントまたはJMS ConnectionFactoryの別名をLDAPから削除します。

構文

DBMS_AQ.DEL_ALIAS_FROM_LDAP(
alias IN VARCHAR2);

パラメータ

表25-24 DEL_ALIAS_FROM_LDAPプロシージャのパラメータ

パラメータ

説明

alias

削除する別名

DISABLE_DB_ACCESSプロシージャ

このプロシージャは、Oracle Databaseアドバンスト・キューイング・インターネット・エージェントから特定のデータベース・ユーザーの権限を取り消します。

構文

DBMS_AQADM.DISABLE_DB_ACCESS (
agent_name                IN VARCHAR2,
db_username               IN VARCHAR2)

パラメータ

表25-25 DISABLE_DB_ACCESSプロシージャのパラメータ

パラメータ

説明

agent_name

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントのユーザー名を指定します。

db_username

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントから権限を取り消されるデータベース・ユーザーを指定します。

使用上の注意

ENABLE_DB_ACCESSプロシージャを使用して、事前にOracle Databaseアドバンスト・キューイング・インターネット・エージェントに対してそれらの権限が付与されている必要があります。

DISABLE_PROPAGATION_SCHEDULEプロシージャ

このプロシージャは、伝播スケジュールを無効にします。

構文

DBMS_AQADM.DISABLE_PROPAGATION_SCHEDULE (
queue_name            IN   VARCHAR2,
destination           IN   VARCHAR2 DEFAULT NULL,
destination_queue  IN  VARCHAR2 DEFAULT NULL);

パラメータ

表25-26 DISABLE_PROPAGATION_SCHEDULEプロシージャのパラメータ

パラメータ

説明

queue_name

伝播対象のメッセージがあるソース・キューの名前で、スキーマ名を含みます。スキーマ名が指定されていない場合は、デフォルトでユーザーのスキーマ名が設定されます。

destination

宛先のデータベース・リンク。この宛先の受信者に対するソース・キュー内のメッセージが伝播されます。宛先がNULLの場合は、ローカル・データベースが宛先となり、メッセージはローカル・データベース内の他のキューに伝播されます。このフィールドの長さは128バイトに制限されており、名前が完全に修飾されていない場合は、デフォルトのドメイン名が使用されます。

destination_queue

dblinkの形式でメッセージが伝播される宛先キューの名前。

DROP_AQ_AGENTプロシージャ

このプロシージャは、以前にOracle Databaseアドバンスト・キューイング・インターネット・アクセス用に登録されたエージェントを削除します。

構文

DBMS_AQADM.DROP_AQ_AGENT (
agent_name                IN VARCHAR2)

パラメータ

表25-27 DROP_AQ_AGENTプロシージャのパラメータ

パラメータ

説明

agent_name

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントのユーザー名を指定します。

DROP_QUEUEプロシージャ

このプロシージャは、既存のキューを削除します。

構文

DBMS_AQADM.DROP_QUEUE (
queue_name        IN    VARCHAR2,
auto_commit       IN    BOOLEAN DEFAULT TRUE);

パラメータ

表25-28 DROP_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

削除するキューの名前。

auto_commit

TRUEの場合、現行のトランザクションがある場合は、DROP_QUEUE操作が実行される前にコミットされます。DROP_QUEUE操作は、コールから戻ると持続されます。これがデフォルトです。FALSEの場合、この操作は現行トランザクションの一部で、コール元がコミットを入力した場合のみ持続されます。

注意: このパラメータは非推奨となっています。

使用上の注意

DROP_QUEUEは、STOP_QUEUEをコールして、キューに対するエンキューおよびデキューを使用禁止にしないと許可されません。すべてのキュー・データが、削除操作の一部として削除されます。

DROP_QUEUE_TABLEプロシージャ

このプロシージャは、既存のキュー表を削除します。

構文

DBMS_AQADM.DROP_QUEUE_TABLE (
queue_table       IN    VARCHAR2,
force             IN    BOOLEAN DEFAULT FALSE,
auto_commit       IN    BOOLEAN DEFAULT TRUE);

パラメータ

表25-29 DROP_QUEUE_TABLEプロシージャのパラメータ

パラメータ

説明

queue_table

削除するキュー表の名前。

force

FALSEでは、表内にキューが存在する場合は操作は成功しません。これがデフォルトです。TRUEの場合、表内のすべてのキューが自動的に停止および削除されます。

auto_commit

TRUEの場合、現行のトランザクションがある場合は、DROP_QUEUE_TABLE操作が実行される前にコミットされます。DROP_QUEUE_TABLE操作は、コールから戻ると持続されます。これがデフォルトです。FALSEの場合、この操作は現行トランザクションの一部で、コール元がコミットを入力した場合のみ持続されます。

注意: このパラメータは非推奨となっています。

使用上の注意

キュー表を削除するには、キュー表内のすべてのキューを停止し、削除しておく必要があります。この処理を自動的に実行するforceオプションを使用しない場合は、明示的に実行する必要があります。

ENABLE_DB_ACCESSプロシージャ

このプロシージャは、Oracle Databaseアドバンスト・キューイング・インターネット・エージェントに特定のデータベース・ユーザーの権限を付与します。

構文

DBMS_AQADM.ENABLE_DB_ACCESS (
agent_name                IN VARCHAR2,
db_username               IN VARCHAR2)

パラメータ

表25-30 ENABLE_DB_ACCESSプロシージャのパラメータ

パラメータ

説明

agent_name

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントのユーザー名を指定します。

db_username

Oracle Databaseアドバンスト・キューイング・インターネット・エージェントに対する権限を付与されるデータベース・ユーザーを指定します。

使用上の注意

CREATE_AQ_AGENTプロシージャを使用して、事前にOracle Databaseアドバンスト・キューイング・インターネット・エージェントを作成している必要があります。

保護キューの場合、メッセージの送信者エージェントと受信者エージェントが、エンキュー操作またはデキュー操作を実行するデータベース・ユーザーにマップされる必要があります。

関連項目:
保護キューの詳細は、『Oracle Streams概要および管理』を参照してください。

SYS.AQ$INTERNET_USERSビューには、すべてのOracle Databaseアドバンスト・キューイング・インターネット・エージェント、および権限が付与されているデータベース・ユーザーの名前のリストが表示されます。

ENABLE_JMS_TYPESプロシージャ

DBMS_STREAMS_ADM.SET_UP_QUEUEの後にこのプロシージャをコールしない場合、JMSタイプおよびXMLタイプのエンキューがOracle Streams Sys.Anydataキューで機能しません。これらのタイプについてOracle Streamsキューを有効にした場合、キュー表のインポート/エクスポートに影響する可能性があります。

構文

DBMS_AQADM.ENABLE_JMS_TYPES (
queue_table   IN   VARCHAR2);

パラメータ

表25-31 ENABLE_JMS_TYPESプロシージャのパラメータ

パラメータ

説明

queue_table

JMSタイプおよびXMLタイプについて使用可能にするキュー表の名前を指定します。

ENABLE_PROPAGATION_SCHEDULEプロシージャ

このプロシージャは、以前に使用禁止にした伝播スケジュールを使用可能にします。

構文

DBMS_AQADM.ENABLE_PROPAGATION_SCHEDULE (
queue_name         IN   VARCHAR2,
destination        IN   VARCHAR2 DEFAULT NULL,
destination_queue  IN   VARCHAR2  DEFAULT NULL);

パラメータ

表25-32 ENABLE_PROPAGATION_SCHEDULEプロシージャのパラメータ

パラメータ

説明

queue_name

伝播対象のメッセージがあるソース・キューの名前で、スキーマ名を含みます。スキーマ名が指定されていない場合は、デフォルトでユーザーのスキーマ名が設定されます。

destination

宛先のデータベース・リンク。この宛先の受信者に対するソース・キュー内のメッセージが伝播されます。宛先がNULLの場合は、ローカル・データベースが宛先となり、メッセージはローカル・データベース内の他のキューに伝播されます。このフィールドの長さは128バイトに制限されており、名前が完全に修飾されていない場合は、デフォルトのドメイン名が使用されます。

destination_queue

dblinkの形式でメッセージが伝播される宛先キューの名前。

GET_WATERMARKプロシージャ

このプロシージャは、SET_WATERMARKによって設定された水位標の値を取り出します。

構文

DBMS_AQADM.GET_WATERMARK (
wmvalue     IN      NUMBER);

パラメータ

表25-33 GET_WATERMARKプロシージャのパラメータ

パラメータ

説明

wmvalue

メガバイト単位での水位標の値。

GET_MAX_STREAMS_POOLプロシージャ

このプロシージャは、Oracle Databaseアドバンスト・キューイングのストリーム・プールの最大メモリー制限値を取り出します。

構文

DBMS_AQADM.GET_MAX_STREAMS_POOL (
value     OUT      NUMBER);

パラメータ

表25-34 GET_MAX_STREAMS_POOLプロシージャのパラメータ

パラメータ

説明

value

メガバイト単位での値。

GET_MIN_STREAMS_POOLプロシージャ

このプロシージャは、Oracle Databaseアドバンスト・キューイングのストリーム・プールの最小メモリー制限値を取り出します。

構文

DBMS_AQADM.GET_MIN_STREAMS_POOL (
value     OUT      NUMBER);

パラメータ

表25-35 GET_MIN_STREAMS_POOLプロシージャのパラメータ

パラメータ

説明

value

メガバイト単位での値。

GRANT_QUEUE_PRIVILEGEプロシージャ

このプロシージャは、ユーザーおよびロールにキューの権限を付与します。権限は、ENQUEUEまたはDEQUEUEです。初期設定では、キュー表の所有者のみがこのプロシージャを使用してそのキューの権限を付与できます。

構文

DBMS_AQADM.GRANT_QUEUE_PRIVILEGE (
privilege        IN    VARCHAR2,
queue_name       IN    VARCHAR2,
grantee          IN    VARCHAR2,
grant_option     IN    BOOLEAN := FALSE);

パラメータ

表25-36 GRANT_QUEUE_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

付与するOracle Databaseアドバンスト・キューイングのキュー権限。ENQUEUE、DEQUEUEおよびALLから選択できます。ALLは、ENQUEUEおよびDEQUEUEの両方の権限を付与します。

queue_name

キュー名。

grantee

権限受領者。権限受領者には、ユーザー、ロールまたはPUBLICロールを指定できます。

grant_option

アクセス権限をGRANTオプション付きで付与するかどうかを指定します。権限がGRANTオプションを使用して付与される場合は、権限受領者はキュー表の所有権に関係なく、このプロシージャを使用して他のユーザーまたはロールにアクセス権限を付与できます。デフォルトはFALSEです。

GRANT_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、ユーザーおよびロールにOracle Databaseアドバンスト・キューイングのシステム権限を付与します。権限には、ENQUEUE_ANY、DEQUEUE_ANYおよびMANAGE_ANYがあります。初期設定では、SYSおよびSYSTEMのみがこのプロシージャを正常に使用できます。

構文

DBMS_AQADM.GRANT_SYSTEM_PRIVILEGE (
privilege         IN    VARCHAR2,
grantee           IN    VARCHAR2,
admin_option      IN    BOOLEAN := FALSE);

パラメータ

表25-37 GRANT_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

付与するOracle Databaseアドバンスト・キューイングのシステム権限。ENQUEUE_ANY、DEQUEUE_ANYおよびMANAGE_ANYから選択できます。ENQUEUE_ANYでは、この権限を付与されたユーザーは、データベース内のすべてのキューにメッセージをエンキューできます。DEQUEUE_ANYでは、この権限を付与されたユーザーは、データベース内のすべてのキューからメッセージをデキューできます。MANAGE_ANYの場合は、この権限を付与されたユーザーは、データベース内のすべてのスキーマでDBMS_AQADMコールを実行できます。

grantee

権限受領者。権限受領者には、ユーザー、ロールまたはPUBLICロールを指定できます。

admin_option

システム権限をADMINオプション付きで付与するかどうかを指定します。

権限がADMINオプションを使用して付与される場合は、権限受領者はこのプロシージャを使用して、他のユーザーまたはロールにシステム権限を付与できます。デフォルトはFALSEです。

MIGRATE_QUEUE_TABLEプロシージャ

このプロシージャは、8.0互換キュー表から8.1以上互換キュー表へのアップグレード、または8.1以上互換キュー表から8.0互換キュー表へのダウングレードを実行します。

構文

DBMS_AQADM.MIGRATE_QUEUE_TABLE (
queue_table   IN   VARCHAR2,
compatible    IN   VARCHAR2);

パラメータ

表25-38 MIGRATE_QUEUE_TABLEプロシージャのパラメータ

パラメータ

説明

queue_table

移行するキュー表の名前を指定します。

compatible

8.0互換キュー表をアップグレードする場合は8.1を設定します。8.1互換キュー表をダウングレードする場合は8.0を設定します。

PURGE_QUEUE_TABLEプロシージャ

このプロシージャは、キュー表からメッセージをパージします。シングル・コンシューマ・キュー表およびマルチ・コンシューマ・キュー表の両方で、永続メッセージおよびバッファに入れたメッセージに対する様々なパージ操作を実行できます。

構文

DBMS_AQADM.PURGE_QUEUE_TABLE(
queue_table        IN   VARCHAR2,
purge_condition    IN   VARCHAR2,
purge_options      IN   aq$_purge_options_t);

aq$_purge_options_tタイプについては、第271章「Oracle Databaseアドバンスト・キューイング(AQ)のタイプ」を参照してください。

パラメータ

表25-39 PURGE_QUEUE_TABLEプロシージャのパラメータ

パラメータ

説明

queue_table

パージするキュー表の名前を指定します。

purge_condition

キュー表のパージ時に使用するパージ条件を指定します。パージ条件はSQL WHERE句の形式にする必要があり、大/小文字が区別されます。条件はaq$queue_table_nameビューの列に基づきます。

purge_conditionを指定する場合は、aq$queue_table_nameビューの列名をqtviewで修飾します。

キュー表のすべてのキューをパージする場合、purge_conditionにNULL(NULL値のみ、引用符なし)または''(2つの一重引用符)のいずれかを設定します。

purge_options

タイプaq$_purge_options_tは、blockパラメータおよびdelivery_modeパラメータを含みます。

- blockがTRUEの場合、キュー表をパージしている間は、キュー表に含まれるすべてのキューの排他ロックは解放されません。これにより、キュー表のパージ時にエンキュー実行者とデキュー実行者が同時にブロックされます。blockがTRUEの場合、パージ・コールは常に成功します。blockのデフォルトはFALSEです。この場合、エンキュー実行者とデキュー実行者はブロックされませんが、同時実行回数が多いと、パージがエラーによって失敗する可能性があります。

- パージするメッセージのタイプ(DBMS_AQADM.PERSISTENT、DBMS_AQADM.BUFFERED、またはDBMS_AQADM.PERSISTENT_OR_BUFFERED)を指定するには、delivery_modeを使用します。バッファに入れたメッセージをパージする必要がある場合、任意のパージ条件は実装できません。

使用上の注意

- purge_conditionを指定すると、選択したメッセージをキュー表からパージできます。これらのパラメータについては、表25-39を参照してください。キュー表のパージ中に、メッセージをキュー表にエンキューしたりキュー表からデキューできます。

- このプロシージャを実行すると、トレース・ファイルがudumpの宛先に生成されます。プロシージャの実行内容の詳細が示されます。

- このプロシージャは、自律型トランザクションのメッセージのバッチをコミットします。このような自律型トランザクションは、キュー表のメッセージ数に応じてpurge_queue_tableコールの一部として実行できます。

QUEUE_SUBSCRIBERSファンクション

このファンクションは、PL/SQL索引付き表のコレクション・タイプDBMS_AQADM.AQ$_subscriber_list_tで、サブスクライバを8.0互換マルチ・コンシューマ・キューに返します。コレクションの各要素のタイプはsys.aq$_agentです。この機能は、AQ$queue_table_name_Sビューによって、8.1互換キューに対して提供されます。

構文

DBMS_AQADM.QUEUE_SUBSCRIBERS (
queue_name         IN         VARCHAR2);
RETURN aq$_subscriber_list_t IS

パラメータ

表25-40 QUEUE_SUBSCRIBERSファンクションのパラメータ

パラメータ

説明

queue_name

サブスクライバを出力するキューを指定します。

REMOVE_SUBSCRIBERプロシージャ

このプロシージャは、キューからデフォルトのサブスクライバを削除します。この操作はすぐに有効となり、含まれるトランザクションがコミットされます。既存のメッセージ内のサブスクライバへの参照は、この操作の一部としてすべて削除されます。

構文

DBMS_AQADM.REMOVE_SUBSCRIBER (
queue_name         IN         VARCHAR2,
subscriber         IN         sys.aq$_agent);

パラメータ

表25-41 REMOVE_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

queue_name

キュー名。

subscriber

削除するエージェント。「AQ$_AGENTタイプ」を参照してください。

REVOKE_QUEUE_PRIVILEGEプロシージャ

このプロシージャは、ユーザーおよびロールからキューの権限を取り消します。権限は、ENQUEUEまたはDEQUEUEです。

構文

DBMS_AQADM.REVOKE_QUEUE_PRIVILEGE (
privilege         IN      VARCHAR2,
queue_name        IN      VARCHAR2,
grantee           IN      VARCHAR2);

パラメータ

表25-42 REVOKE_QUEUE_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

取り消すOracle Databaseアドバンスト・キューイングのキュー権限。ENQUEUE、DEQUEUEおよびALLから選択できます。ALLは、ENQUEUEおよびDEQUEUEの両方の権限を付与します。

queue_name

キュー名。

grantee

権限受領者。権限受領者には、ユーザー、ロールまたはPUBLICロールを指定できます。権限受領者によってGRANTオプションを使用して権限が付与されている場合は、その権限も取り消されます。

使用上の注意

権限を取り消すには、取消し実行者がその権限の付与者である必要があります。GRANTオプションを使用して付与された権限は、付与者の権限が取り消されると、同様に取り消されます。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、ユーザーおよびロールからOracle Databaseアドバンスト・キューイングのシステム権限を取り消します。権限には、ENQUEUE_ANY、DEQUEUE_ANYおよびMANAGE_ANYがあります。システム権限のADMINオプションは、選択的に取り消すことはできません。

構文

DBMS_AQADM.REVOKE_SYSTEM_PRIVILEGE (
privilege         IN   VARCHAR2,
grantee           IN   VARCHAR2);

パラメータ

表25-43 REVOKE_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

取り消すOracle Databaseアドバンスト・キューイングのシステム権限。ENQUEUE_ANY、DEQUEUE_ANYおよびMANAGE_ANYから選択できます。システム権限のADMINオプションは、選択的に取り消すことはできません。

grantee

権限受領者。権限受領者には、ユーザー、ロールまたはPUBLICロールを指定できます。

SCHEDULE_PROPAGATIONプロシージャ

このプロシージャは、キューから特定のデータベース・リンクによって識別される宛先へのメッセージ伝播をスケジュールします。

構文

DBMS_AQADM.SCHEDULE_PROPAGATION (
queue_name          IN    VARCHAR2,
destination         IN    VARCHAR2 DEFAULT NULL,
start_time          IN    DATE     DEFAULT SYSDATE,
duration            IN    NUMBER   DEFAULT NULL,
next_time           IN    VARCHAR2 DEFAULT NULL,
latency             IN    NUMBER   DEFAULT 60,
destination_queue   IN    VARCHAR2 DEFAULT NULL);

パラメータ

表25-44 SCHEDULE_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

queue_name

伝播対象のメッセージがあるソース・キューの名前で、スキーマ名を含みます。スキーマ名が指定されない場合は、デフォルトで管理ユーザーのスキーマ名に設定されます。

destination

宛先のデータベース・リンク。この宛先の受信者に対するソース・キュー内のメッセージが伝播されます。宛先がNULLの場合は、ローカル・データベースが宛先となり、メッセージはローカル・データベース内の他のキューに伝播されます。このフィールドの長さは128バイトに制限されており、名前が完全に修飾されていない場合は、デフォルトのドメイン名が使用されます。

start_time

ソース・キューから宛先へのメッセージに関する伝播ウィンドウの初期起動時間。

duration

伝播ウィンドウの継続期間(秒数)。NULL値の場合、伝播ウィンドウは無期限または伝播スケジュールが取り消されるまで継続します。

next_time

現在の伝播ウィンドウの終了から次の伝播ウィンドウの開始を計算する日付ファンクション。この値がNULLの場合は、現在のウィンドウが終了すると伝播は停止されます。たとえば、毎日同時刻にウィンドウを起動するには、next_timeにSYSDATE + 1 - duration/86400と指定します。

latency

伝播ウィンドウにおける、メッセージがエンキュー後に伝播されるまでの最大待機時間(秒数)。

たとえば、待機時間が60秒で伝播ウィンドウに伝播するメッセージがない場合、そのキューからのその宛先に対するメッセージは、最低60秒間伝播されません。

指定した宛先に対してメッセージを伝播するためにキューを再度チェックするまでの時間は、最短で60秒です。待機時間が600秒の場合、キューは10分間チェックされず、待機時間が0(ゼロ)の場合は、宛先に対するメッセージがエンキューされるまでジョブ・キュー・プロセスが待機することになります。メッセージは、エンキューされるとすぐに伝播されます。

destination_queue

dblinkの形式でメッセージが伝播される宛先キューの名前。

使用上の注意

宛先にNULLを指定すると、同じデータベース内の他のキューにもメッセージを伝播できます。同じ宛先にメッセージの受信者が複数存在する場合は、同じキューにあるか、異なるキューにあるかに関係なく、そのすべてに同時に伝播されます。

SET_WATERMARKプロシージャ

このプロシージャはOracle Databaseアドバンスト・キューイング通知で、メモリーの使用を指定および制限するために使用されます。

構文

DBMS_AQADM.SET_WATERMARK (
wmvalue     IN      NUMBER);

パラメータ

表25-45 SET_WATERMARKプロシージャのパラメータ

パラメータ

説明

wmvalue

メガバイト単位での水位標の値。

SET_MAX_STREAMS_POOLプロシージャ

このプロシージャはOracle Databaseアドバンスト・キューイングで、ストリーム・プールの最大メモリーの使用を指定および制限するために使用されます。

構文

DBMS_AQADM.SET_MAX_STREAMS_POOL (
value     IN      NUMBER);

パラメータ

表25-46 SET_MAX_STREAMS_POOLプロシージャのパラメータ

パラメータ

説明

value

メガバイト単位での値。

SET_MIN_STREAMS_POOLプロシージャ

このプロシージャはOracle Databaseアドバンスト・キューイングで、ストリーム・プールの最小メモリーの使用を指定および制限するために使用されます。

構文

DBMS_AQADM.SET_MIN_STREAMS_POOL (
value     IN      NUMBER);

パラメータ

表25-47 SET_MIN_STREAMS_POOLプロシージャのパラメータ

パラメータ

説明

value

メガバイト単位での値。

START_QUEUEプロシージャ

このプロシージャは、指定したキューのエンキューまたはデキューを可能にします。

構文

DBMS_AQADM.START_QUEUE (
queue_name      IN     VARCHAR2,
enqueue         IN     BOOLEAN DEFAULT TRUE,
dequeue         IN     BOOLEAN DEFAULT TRUE);

パラメータ

表25-48 START_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

使用可能にするキューの名前。

enqueue

このキューでENQUEUEを使用可能にするかどうかを指定します。TRUEの場合、ENQUEUEを使用可能にします。これがデフォルトです。FALSEの場合、現在の設定を変更しません。

dequeue

このキューでDEQUEUEを使用可能にするかどうかを指定します。TRUEの場合、DEQUEUEを使用可能にします。これがデフォルトです。FALSEの場合、現在の設定を変更しません。

使用上の注意

キューの作成後に、管理者はSTART_QUEUEを使用してキューを使用可能にする必要があります。デフォルトでは、ENQUEUEおよびDEQUEUEの両方が使用可能になります。例外キューでは、デキュー操作のみ許可されます。この操作はコールが完了すると有効になり、トランザクションの特性はありません。

STOP_QUEUEプロシージャ

このプロシージャは、指定したキューに対するエンキューまたはデキューを使用禁止にします。

構文

DBMS_AQADM.STOP_QUEUE (
queue_name      IN   VARCHAR2,
enqueue         IN   BOOLEAN DEFAULT TRUE,
dequeue         IN   BOOLEAN DEFAULT TRUE,
wait            IN   BOOLEAN DEFAULT TRUE);

パラメータ

表25-49 STOP_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

使用禁止にするキューの名前。

enqueue

このキューでENQUEUEを使用禁止にするかどうかを指定します。TRUEの場合、ENQUEUEを使用禁止にします。これがデフォルトです。FALSEの場合、現在の設定を変更しません。

dequeue

このキューでDEQUEUEを使用禁止にするかどうかを指定します。TRUEの場合、DEQUEUEを使用禁止にします。これがデフォルトです。FALSEの場合、現在の設定を変更しません。

wait

未処理のトランザクションの完了を待つかどうかを指定します。TRUEの場合、未処理のトランザクションがある場合は待機します。この状態では、このキューへのエンキューまたはこのキューからのデキューを行う新規トランザクションは許可されません。FALSEの場合、正常終了かエラーかをすぐに戻します。

使用上の注意

デフォルトでは、このプロシージャをコールするとENQUEUEおよびDEQUEUEの両方が使用禁止になります。キューに対する未処理のトランザクションがある場合、キューは停止できません。この操作はコールが完了すると有効になり、トランザクションの特性はありません。

UNSCHEDULE_PROPAGATIONプロシージャ

このプロシージャは、キューから特定のデータベース・リンクによって識別される宛先への以前にスケジュールされたメッセージ伝播のスケジュールを取り消します。

構文

DBMS_AQADM.UNSCHEDULE_PROPAGATION (
queue_name         IN  VARCHAR2,
destination        IN  VARCHAR2 DEFAULT NULL
destination_queue  IN  VARCHAR2 DEFAULT NULL);

パラメータ

表25-50 UNSCHEDULE_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

queue_name

伝播対象のメッセージがあるソース・キューの名前で、スキーマ名を含みます。スキーマ名が指定されない場合は、デフォルトで管理ユーザーのスキーマ名に設定されます。

destination

宛先のデータベース・リンク。この宛先の受信者に対するソース・キュー内のメッセージが伝播されます。宛先がNULLの場合は、ローカル・データベースが宛先となり、メッセージはローカル・データベース内の他のキューに伝播されます。このフィールドの長さは128バイトに制限されており、名前が完全に修飾されていない場合は、デフォルトのドメイン名が使用されます。

destination_queue

dblinkの形式でメッセージが伝播される宛先キューの名前。

VERIFY_QUEUE_TYPESプロシージャ

このプロシージャは、ソース・キューおよび宛先キューのタイプが同じであるかどうかを検証します。検証結果は、sys.aq$_message_types表に格納され、このコマンドの以前の出力がすべて上書きされます。

構文

DBMS_AQADM.VERIFY_QUEUE_TYPES (
src_queue_name    IN    VARCHAR2,
dest_queue_name   IN    VARCHAR2,
destination       IN    VARCHAR2 DEFAULT NULL,
rc                OUT   BINARY_INTEGER);

パラメータ

表25-51 VERIFY_QUEUE_TYPESプロシージャのパラメータ

パラメータ

説明

src_queue_name

伝播対象のメッセージがあるソース・キューの名前で、スキーマ名を含みます。スキーマ名が指定されていない場合は、デフォルトでユーザーのスキーマ名が設定されます。

dest_queue_name

メッセージが伝播される宛先キューの名前で、スキーマ名を含みます。スキーマ名が指定されていない場合は、デフォルトでユーザーのスキーマ名が設定されます。

destination

宛先のデータベース・リンク。この宛先の受信者に対するソース・キュー内のメッセージが伝播されます。宛先がNULLの場合は、ローカル・データベースが宛先となり、メッセージはローカル・データベース内の他のキューに伝播されます。このフィールドの長さは128バイトに制限されており、名前が完全に修飾されていない場合は、デフォルトのドメイン名が使用されます。

rc

プロシージャの結果を示すリターン・コード。エラーがなく、ソースと宛先のキュー・タイプが一致している場合、結果は1になります。一致していない場合、結果は0(ゼロ)になります。Oracleエラーが発生した場合は、rcに戻されます。

26 DBMS_AQELM

DBMS_AQELMパッケージは、電子メールおよびHTTPによるOracle Streams Advanced Queuing(AQ)の非同期通知の構成を管理するサブプログラムを提供します。

関連項目:
DBMS_AQELMの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_AQELMの使用

- セキュリティ・モデル

- DBMS_AQELMサブプログラムの要約

DBMS_AQELMの使用

このセクションには次のトピックが含まれます。

- セキュリティ・モデル

セキュリティ・モデル

DBMS_AQELMのすべてのプロシージャを実行するには、管理者ロールAQ_ADMINISTRATOR_ROLEが必要です。

DBMS_AQELMサブプログラムの要約

表26-1 DBMS_ALERTパッケージのサブプログラム

サブプログラム

説明

SET_MAILHOSTプロシージャ

データベースが電子メール通知の送信に使用するSMTPサーバーのホスト名を設定します。

SET_MAILPORTプロシージャ

SMTPサーバーのポート番号を設定します。

SET_SENDFROMプロシージャ

発信元電子メール・アドレスを設定します。

SET_MAILHOSTプロシージャ

このプロシージャは、SMTPサーバーのホスト名を設定します。データベースではこのSMTPサーバーのホスト名を使用して、電子メール通知を送信します。

構文

DBMS_AQELM.SET_MAILHOST (
mailhost  IN  VARCHAR2);

パラメータ

表26-2 SET_MAILHOSTプロシージャのパラメータ

パラメータ

説明

mailhost

SMTPサーバーのホスト名

使用上の注意

電子メール通知を構成する一部分として、DBMS_AQELMパッケージに対してAQ_ADMINISTRATOR_ROLEまたはEXECUTEの許可を付与されたユーザーは、電子メール通知を登録する前にホスト名を設定する必要があります。

SET_MAILPORTプロシージャ

このプロシージャは、SMTPサーバーのポート番号を設定します。

構文

DBMS_AQELM.SET_MAILPORT (
mailport  IN NUMBER);

パラメータ

表26-3 SET_MAILPORTプロシージャのパラメータ

パラメータ

説明

mailport

SMTPサーバーのポート番号

使用上の注意

電子メール通知を構成する一部分として、DBMS_AQELMパッケージに対してAQ_ADMINISTRATOR_ROLEまたはEXECUTEの許可を付与されたユーザーは、電子メール通知を登録する前にホスト名を設定する必要があります。データベースではこのSMTPサーバーのポート番号を使用して、電子メール通知を送信します。設定されていない場合、SMTPのmailportのデフォルトは25となります。

SET_SENDFROMプロシージャ

このプロシージャは、発信元電子メール・アドレスを設定します。この電子メール・アドレスは、登録された電子メール・アドレス宛にデータベースから送信されるすべての電子メール通知の発信元フィールドに使用されます。

構文

DBMS_AQELM.SET_SENDFROM (
sendfrom  IN  VARCHAR2);

パラメータ

表26-4 SET_SENDFROMプロシージャのパラメータ

パラメータ

説明

sendfrom

発信元電子メール・アドレス

使用上の注意

電子メール通知を構成する一部分として、DBMS_AQELMパッケージに対してAQ_ADMINISTRATOR_ROLEまたはEXECUTEの許可を付与されたユーザーは、電子メール通知を登録する前にホスト名を設定する必要があります。

27 DBMS_AQIN

DBMS_AQINパッケージを使用すると、Oracle JMSインタフェースに安全にアクセスできます。

関連項目:
DBMS_AQINの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_AQINの使用方法

- セキュリティ・モデル

DBMS_AQINの使用方法

このセクションには次のトピックが含まれます。

- セキュリティ・モデル

セキュリティ・モデル

DBMS_AQINパッケージでサブプログラムは直接コールできないため、Oracle JMSインタフェースを使用するには、DBMS_AQINパッケージおよびDBMS_AQJMSパッケージに対するEXECUTE権限が必要です。これを取得するには、DBMS_AQINパッケージで次の構文を使用します。

GRANT EXECUTE ON DBMS_AQIN to user;

Oracle JMSインタフェースを使用するには、DBMS_AQINおよびDBMS_AQJMSパッケージに対するEXECUTE権限が必要です。これらの権限は、AQ_USER_ROLEまたはAQ_ADMINSTRATOR_ROLEを使用しても取得できます。

関連項目:
標準アプリケーションおよびOracle JMSアプリケーションへのアクセスの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

28 DBMS_ASSERT

DBMS_ASSERTパッケージは、入力値のプロパティを検証するためのインタフェースを提供します。

関連項目:
PL/SQLでのSQLインジェクションの回避の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_ASSERTの使用方法

- 使用上の注意

- DBMS_ASSERTサブプログラムの要約

DBMS_ASSERTの使用方法

- 使用上の注意

使用上の注意

ファンクションでアサートされたプロパティを判断する条件が満たされていない場合は、値のエラーが発生します。条件が満たされた場合は、戻り値として入力値が戻されます。通常、値は変更されずに戻されますが、一部のファンクションでは変更された値が戻されます。

DBMS_ASSERTサブプログラムの要約

表28-1 DBMS_APPLICATION_INFOパッケージのサブプログラム

サブプログラム

説明

ENQUOTE_LITERALファンクション

文字列リテラルを引用符で囲みます。

ENQUOTE_NAMEファンクション

名前を二重引用符で囲みます。

NOOPファンクション

チェックなしで値を戻します。

QUALIFIED_SQL_NAMEファンクション

入力文字列が修飾SQL名であることを検証します。

SCHEMA_NAMEファンクション

入力文字列が既存のスキーマ名であることを検証します。

SIMPLE_SQL_NAMEファンクション

入力文字列が単純SQL名であることを検証します。

SQL_OBJECT_NAMEファンクション

入力パラメータ文字列が既存のSQLオブジェクトの修飾SQL識別子であることを検証します。

ENQUOTE_LITERALファンクション

このファンクションは、文字列リテラルを開始一重引用符と終了一重引用符で囲みます。

構文

DBMS_ASSERT.ENQUOTE_LITERAL (
str            VARCHAR2)
RETURN VARCHAR2;

パラメータ

表28-2 ENQUOTE_LITERALファンクションのパラメータ

パラメータ

説明

str

引用符で囲む文字列。

使用上の注意

- 先行および後続文字を除く、すべての一重引用符が対を成していることを検証します。

- 名前がすでに引用符で囲まれている場合、引用符は追加されません。

ENQUOTE_NAMEファンクション

このファンクションは、指定された文字列を引用符で囲みます。ただし、文字列がすでに引用符で囲まれている場合、引用符は追加されません。その後、引用符で囲まれた文字列は、有効な識別子であるかどうかチェックされます。

データベース・オブジェクトの名前および修飾子の詳細は、『Oracle Database SQL言語リファレンス』ガイドを参照してください。

構文

DBMS_ASSERT.ENQUOTE_NAME (
str            VARCHAR2,
capitalize     BOOLEAN DEFAULT TRUE)
RETURN VARCHAR2;

パラメータ

表28-3 ENQUOTE_NAMEファンクションのパラメータ

パラメータ

説明

str

引用符で囲む文字列。

capitalize

TRUEまたはデフォルトに設定すると、引用符で囲まれていないstrの英字は大文字に変換されます。

使用上の注意

- 名前がすでに引用符で囲まれている場合、引用符は追加されません。

- 文字列に含まれる他のすべての二重引用符が、隣り合う二重引用符のペアであることを確認してください。

NOOPファンクション

このファンクションは、チェックなしで値を戻します。

構文

DBMS_ASSERT.NOOP (
str      VARCHAR2 CHARACTER SET ANY_CS)
RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

DBMS_ASSERT.NOOP (
str      CLOB CHARACTER SET ANY_CS)
RETURN     CLOB CHARACTER SET str%CHARSET;

パラメータ

表28-4 NOOPファンクションのパラメータ

パラメータ

説明

str

入力値。

QUALIFIED_SQL_NAMEファンクション

このファンクションは、入力文字列が修飾SQL名であることを検証します。

構文

DBMS_ASSERT.QUALIFIED_SQL_NAME (
str      VARCHAR2 CHARACTER SET ANY_CS)
RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表28-5 QUALIFIED_SQL_NAMEファンクションのパラメータ

パラメータ

説明

str

入力値。

例外

ORA44004: 修飾SQL名が無効です

使用上の注意

修飾SQL名<qualified name>は、次の文法で表現できます。

<local qualified name> ::= <simple name> {'.' <simple name>}
<database link name> ::= <local qualified name> ['@' <connection string>]
<connection string> ::= <simple name>
<qualified name> ::= <local qualified name> ['@' <database link name>]

SCHEMA_NAMEファンクション

このファンクションは、入力文字列が既存のスキーマ名であることを検証します。

構文

DBMS_ASSERT.SCHEMA_NAME (
str      VARCHAR2 CHARACTER SET ANY_CS)
RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表28-6 SCHEMA_NAMEファンクションのパラメータ

パラメータ

説明

str

入力値。

例外

ORA44001: スキーマ名が無効です

使用上の注意

定義上は、スキーマ名は単純SQL名である必要はありません。たとえば、"FIRST LAST"は有効なスキーマ名です。したがって、スキーマ名の出力は、SQLテキストに連結する前に引用符で囲む必要があります。

SIMPLE_SQL_NAMEファンクション

このファンクションは、入力文字列が単純SQL名であることを検証します。

構文

DBMS_ASSERT.SIMPLE_SQL_NAME (
str      VARCHAR2 CHARACTER SET ANY_CS)
RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表28-7 SIMPLE_SQL_NAMEファンクションのパラメータ

パラメータ

説明

str

入力値。

例外

ORA44003: SQL名が無効です

使用上の注意

- 入力値は次の条件を満たす必要があります。

- 名前はアルファベット文字で始める必要があります。2文字目以降は、英数字、_、$および#を使用できます。

- 引用符付きのSQL名も使用できます。

- 引用符付きの名前は、二重引用符で囲む必要があります。

- 引用符付きの名前は、引用符の間に任意の文字を使用できます。

- 名前内の引用符は、引用文字を2つ連続して表記します。たとえば、"a name with "" inside"は有効な引用符付きの名前です。

- 入力パラメータには、先頭または末尾(あるいはその両方)に任意の数の空白文字を含むことができます。

- 名前の長さはチェックされません。

SQL_OBJECT_NAMEファンクション

このファンクションは、入力パラメータ文字列が既存のSQLオブジェクトの修飾SQL識別子であることを検証します。

構文

DBMS_ASSERT.SQL_OBJECT_NAME (
str      VARCHAR2 CHARACTER SET ANY_CS)
RETURN     VARCHAR2 CHARACTER SET str%CHARSET;

パラメータ

表28-8 SQL_OBJECT_NAMEファンクションのパラメータ

パラメータ

説明

str

入力値。

例外

ORA44002: オブジェクト名が無効です

使用上の注意

シノニムを使用するにはベース・オブジェクトが存在している必要があります。

29 DBMS_AUDIT_MGMT

DBMS_AUDIT_MGMTパッケージでは、監査証跡レコードを管理するためのサブプログラムが提供されます。監査管理者は、これらのサブプログラムを使用して監査証跡を管理できます。混合モード環境では、監査証跡はデータベース、オペレーティング・システム(OS)およびXMLの各監査証跡から構成されます。統合監査環境では、統合監査証跡から構成されます。

関連項目:

- 監査時のセキュリティ・アクセスの検証については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- 統合監査への移行については、『Oracle Databaseアップグレード・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_AUDIT_MGMTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- サブプログラム・グループ

- 監査証跡管理サブプログラム

- 監査証跡クリーンアップ・サブプログラム

- DBMS_AUDIT_MGMTサブプログラムの要約

DBMS_AUDIT_MGMTの使用方法

この項では、DBMS_AUDIT_MGMTパッケージの使用に関連する項目について説明します。この項の内容は、次のとおりです。

- 概要

- セキュリティ・モデル

- 定数

- ビュー

概要

データベース監査によって、データベースのセキュリティおよびコンプライアンスに関する要件を満たすことができます。混合モード環境では、監査レコードはAUDIT_TRAIL初期化パラメータの設定に応じて、データベース表、オペレーティング・システム(OS)ファイルまたはXMLファイルに書き込まれます。統合監査にアップグレードした場合は、監査レコードは統合監査証跡に書き込まれます。

混合モード環境では、AUDIT_TRAILがDBに設定されている場合、データベース・レコードはAUD$表に書き込まれます。統合監査環境では、監査レコードはAUDSYSスキーマ内の読取り専用表に書き込まれます。この表の内容は、UNIFIED_AUDIT_TRAILデータ・ディクショナリ・ビューで表示可能です。AUDIT_TRAILがOSに設定されると、監査レコードはオペレーティング・システム・ファイルに書き込まれます。AUDIT_TRAILがXMLに設定されている場合、監査レコードはオペレーティング・システム・ファイルにXML形式で書き込まれます。

統合監査ファシリティを使用すると、すべての監査レコードは共通形式で統合監査証跡に書き込まれます。これは、UNIFIED_AUDIT_TRAILビューで表示可能です。

効率的な実行およびディスク領域管理を行うには、監査レコードを適切に管理することが重要です。DBMS_AUDIT_MGMTサブプログラムを使用すると、監査証跡レコードを効率的に管理できます。

統合監査環境へ移行していないユーザーのために、DBMS_AUDIT_MGMTパッケージでは、SYSTEM表領域からデータベース監査証跡表を移動できるサブプログラムが提供されています。これにより、SYSTEM表領域の負荷を減らすことで、データベース全体のパフォーマンスが向上します。また、最適化された表領域を監査レコード専用にすることもできます。

混合モード環境では、DBMS_AUDIT_MGMTサブプログラムを使用して、オペレーティング・システムおよびXMLの監査ファイルを管理することもできます。監査ファイルの最大サイズ、経過時間などのプロパティを定義できます。これにより、OSおよびXML監査ファイルのファイル・サイズを抑えることができます。

DBMS_AUDIT_MGMTサブプログラムを使用すると、すべての監査証跡タイプに対してクリーンアップ操作を実行できます。監査証跡は、最終アーカイブ・タイムスタンプの値に基づいて消去できます。最終アーカイブ・タイムスタンプは、安全にアーカイブされた最近の監査レコードのタイムスタンプを表します。

DBMS_AUDIT_MGMTパッケージでは、監査管理者がアーカイブ済監査レコードに最終アーカイブ・タイムスタンプを設定できるサブプログラムが提供されています。このサブプログラムは、外部アーカイブ・システムで最終アーカイブ・タイムスタンプを設定する場合も使用できます。

DBMS_AUDIT_MGMTサブプログラムを使用して、定期的に監査証跡レコードを削除するジョブを構成することもできます。これらのジョブの実行頻度は、監査管理者が制御できます。

関連項目:
統合監査の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

セキュリティ・モデル

ユーザーがすべてのDBMS_AUDIT_MGMTサブプログラムを実行するには、DBMS_AUDIT_MGMTパッケージに対するEXECUTE権限が必要です。SYSDBAおよびAUDIT_ADMINロールには、このパッケージに対するEXECUTE権限がデフォルトで付与されています。

DBMS_AUDIT_MGMTパッケージに対するEXECUTE権限およびAUDIT_ADMINロールは、監査管理者にのみ付与することをお薦めします。

DBMS_AUDIT_MGMTサブプログラムの実行は常に監査されています。

定数

DBMS_AUDIT_MGMTパッケージは、パラメータ値の指定に使用できるいくつかの定数を定義します。

DBMS_AUDIT_MGMTパッケージには、次の表に示す定数が含まれます。

- DBMS_AUDIT_MGMTの定数: 監査証跡タイプ

- DBMS_AUDIT_MGMTの定数: 監査証跡プロパティ

- DBMS_AUDIT_MGMTの定数: パージ・ジョブ・ステータス

監査証跡は、監査レコードがデータベース表、オペレーティング・システム・ファイルまたはXMLファイルのいずれに書き込まれるかに基づいて分類できます。表29-1に、監査証跡タイプの定数を示します。

表29-1 DBMS_AUDIT_MGMT定数: 監査証跡タイプ

定数

タイプ

説明

AUDIT_TRAIL_ALL

PLS_INTEGER

すべての監査証跡タイプ。標準データベース監査証跡(SYS.AUD$表、SYS.FGA_LOG$表および統合監査証跡表)、オペレーティング・システム(OS)監査証跡およびXML監査証跡を含みます。

AUDIT_TRAIL_AUD_STD

PLS_INTEGER

SYS.AUD$表の標準データベース監査証跡レコード。

AUDIT_TRAIL_DB_STD

PLS_INTEGER

標準監査(SYS.AUD$)およびFGA監査(SYS.FGA_LOG$)レコードの両方。

AUDIT_TRAIL_FGA_STD

PLS_INTEGER

SYS.FGA_LOG$表の標準データベース・ファイングレイン監査(FGA)レコード。

AUDIT_TRAIL_FILES

PLS_INTEGER

オペレーティング・システム(OS)監査証跡およびXML監査証跡の両方。

AUDIT_TRAIL_OS

PLS_INTEGER

オペレーティング・システム監査証跡。オペレーティング・システム・ファイルに格納された監査レコードを参照します。

AUDIT_TRAIL_UNIFIED

PLS_INTEGER

統合監査証跡。統合監査では、すべての監査レコードは監査証跡に書き込まれ、UNIFIED_AUDIT_TRAILなどの統合監査証跡ビューから表示できます。

AUDIT_TRAIL_XML

PLS_INTEGER

XML監査証跡。XMLファイルに格納された監査レコードを参照します。

監査証跡プロパティによって、監査構成設定が決定されます。表29-2に、監査証跡のプロパティに関連のある定数を示します。

表29-2 DBMS_AUDIT_MGMTの定数: 監査証跡のプロパティ

定数

タイプ

説明

AUDIT_TRAIL_WRITE_MODE

PLS_INTEGER

AUDIT_TRAIL_IMMEDIATE_WRITE値は、監査レコードをキューイングするのではなく、すぐに永続化する必要があることを示します。一方、AUDIT_TRAIL_QUEUED_WRITEは、監査レコードをキューイングした後、データベースのフラッシュ計画に沿って永続化できることを示します。

『Oracle Databaseセキュリティ・ガイド』も参照してください。

CLEAN_UP_INTERVAL

PLS_INTEGER

指定された監査証跡の監査レコードを消去するためにクリーンアップ・プロシージャをコールする間隔(時間単位)。

DB_DELETE_BATCH_SIZE

PLS_INTEGER

データベース監査表の監査レコードを削除する場合に使用するバッチ・サイズを指定します。監査レコードは、DB_DELETE_BATCH_SIZEと同じサイズのバッチで削除されます。

FILE_DELETE_BATCH_SIZE

PLS_INTEGER

監査ディレクトリの監査ファイルを削除する場合に使用するバッチ・サイズを指定します。監査ファイルは、FILE_DELETE_BATCH_SIZEと同じサイズのバッチで削除されます。

OS_FILE_MAX_AGE

PLS_INTEGER

新しい監査ファイルが作成されるまでオペレーティング・システム(OS)監査ファイルまたはXML監査ファイルをオープンしておくことができる最大日数を指定します。

OS_FILE_MAX_SIZE

PLS_INTEGER

新しい監査ファイルがオープンされるまでオペレーティング・システム(OS)監査ファイルまたはXML監査ファイル・サイズを大きくできる最大サイズ(KB単位)を指定します。

監査証跡は、監査証跡パージ・ジョブによって消去されます。表29-3に、パージ・ジョブ・ステータスの値に関連する定数を示します。

表29-3 DBMS_AUDIT_MGMTの定数: パージ・ジョブ・ステータス

定数

タイプ

説明

PURGE_JOB_DISABLE

PLS_INTEGER

パージ・ジョブを使用禁止にします。

PURGE_JOB_ENABLE

PLS_INTEGER

パージ・ジョブを使用可能にします。

ビュー

表29-4にリストされているビューは、DBMS_AUDIT_MGMT構成イベントおよびクリーンアップ・イベントを表示するために使用されます。

表29-4 DBMS_AUDIT_MGMTで使用されるビュー

ビュー

説明

DBA_AUDIT_MGMT_CLEAN_EVENTS

クリーンアップ・イベント履歴を表示します。

DBA_AUDIT_MGMT_CLEANUP_JOBS

現在構成されている監査証跡パージ・ジョブを表示します。

DBA_AUDIT_MGMT_CONFIG_PARAMS

現在構成されている監査証跡プロパティを表示します。

DBA_AUDIT_MGMT_LAST_ARCH_TS

監査証跡の最終アーカイブ・タイムスタンプ設定を表示します。

関連項目:
これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

サブプログラム・グループ

DBMS_AUDIT_MGMTパッケージのサブプログラムは、次のカテゴリにグループ化できます。

- 監査証跡管理サブプログラム

- 監査証跡クリーンアップ・サブプログラム

監査証跡管理サブプログラム

監査証跡管理サブプログラムでは、監査証跡プロパティを管理できます。

表29-5 監査証跡管理サブプログラム

サブプログラム

説明

CLEAR_AUDIT_TRAIL_PROPERTYプロシージャ

指定した監査証跡プロパティの値を消去します。

FLUSH_UNIFIED_AUDIT_TRAILプロシージャ

SGAキューにある統合監査証跡レコードをディスクに書き込みます。

GET_ AUDIT_TRAIL_PROPERTY_VALUEファンクション

SET_AUDIT_TRAIL_PROPERTYプロシージャで設定されたプロパティ値を戻します。

GET_LAST_ARCHIVE_TIMESTAMPファンクション

データベース・インスタンスのSET_LAST_ARCHIVE_TIMESTAMPプロシージャで設定されたタイムスタンプを戻します。

LOAD_UNIFIED_AUDIT_FILESプロシージャ

統合監査証跡からあふれたOS監査ファイルのデータを、指定した統合監査証跡表領域にロードします。

SET_AUDIT_TRAIL_LOCATIONプロシージャ

現行の表領域からユーザー指定の表領域に監査証跡表を移動します。

SET_AUDIT_TRAIL_PROPERTYプロシージャ

指定した監査証跡タイプの監査証跡プロパティを設定します。

SET_LAST_ARCHIVE_TIMESTAMPプロシージャ

監査レコードまたはファイルが最後にアーカイブされた日時を示すタイムスタンプを設定します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_AUDIT_MGMTサブプログラムの要約」を参照してください。

監査証跡クリーンアップ・サブプログラム

監査証跡クリーンアップ・サブプログラムでは、監査証跡レコードに対してクリーンアップに関連する操作を実行できます。

表29-6 監査証跡クリーンアップ・サブプログラム

サブプログラム

説明

CLEAN_AUDIT_TRAILプロシージャ

アーカイブされた監査証跡レコードまたはファイルを削除します。

CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャ

SET_LAST_ARCHIVE_TIMESTAMPプロシージャによって設定されたタイムスタンプを消去します。

CREATE_PURGE_JOBプロシージャ

定期的に監査証跡レコードまたはファイルを削除するパージ・ジョブを作成します。

DEINIT_CLEANUPプロシージャ

INIT_CLEANUPプロシージャによって実行された設定および初期化を元に戻します。

DROP_OLD_UNIFIED_AUDIT_TABLESプロシージャ

プラガブル・データベース(PDB)のクローニングの後の古い統合監査表を削除します。

DROP_PURGE_JOBプロシージャ

CREATE_PURGE_JOBプロシージャを使用して作成されたパージ・ジョブを削除します。

INIT_CLEANUPプロシージャ

監査管理インフラストラクチャを設定し、監査証跡レコードまたはファイルのデフォルトのクリーンアップ間隔を設定します。

IS_CLEANUP_INITIALIZEDファンクション

監査証跡タイプに対してINIT_CLEANUPプロシージャが実行されたかどうかを確認します。

SET_PURGE_JOB_INTERVALプロシージャ

指定したパージ・ジョブでCLEAN_AUDIT_TRAILプロシージャをコールする間隔を設定します。

SET_PURGE_JOB_STATUSプロシージャ

指定したパージ・ジョブを使用可能または使用禁止にします。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_AUDIT_MGMTサブプログラムの要約」を参照してください。

DBMS_AUDIT_MGMTサブプログラムの要約

表29-7 DBMS_AUDIT_MGMTパッケージのサブプログラム

サブプログラム

説明

CLEAN_AUDIT_TRAILプロシージャ

アーカイブされた監査証跡レコードを削除します。

CLEAR_AUDIT_TRAIL_PROPERTYプロシージャ

指定した監査証跡プロパティの値を消去します。

CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャ

SET_LAST_ARCHIVE_TIMESTAMPプロシージャによって設定されたタイムスタンプを消去します。

CREATE_PURGE_JOBプロシージャ

定期的に監査証跡レコードを削除するパージ・ジョブを作成します。

DEINIT_CLEANUPプロシージャ

INIT_CLEANUPプロシージャによって実行された設定および初期化を元に戻します。

DROP_OLD_UNIFIED_AUDIT_TABLESプロシージャ

プラガブル・データベース(PDB)のクローニングの後の古い統合監査表を削除します。

DROP_PURGE_JOBプロシージャ

CREATE_PURGE_JOBプロシージャを使用して作成されたパージ・ジョブを削除します。

FLUSH_UNIFIED_AUDIT_TRAILプロシージャ

SGAキューにある統合監査証跡レコードをディスクに書き込みます。

GET_AUDIT_COMMIT_DELAYファンクション

監査のコミット遅延時間を秒数で戻します。これは、監査レコードをデータベース監査証跡にCOMMITするのにかかる最大時間です。

GET_ AUDIT_TRAIL_PROPERTY_VALUEファンクション

SET_AUDIT_TRAIL_PROPERTYプロシージャで設定されたプロパティ値を戻します。

GET_LAST_ARCHIVE_TIMESTAMPファンクション

データベース・インスタンスのSET_LAST_ARCHIVE_TIMESTAMPプロシージャで設定されたタイムスタンプを戻します。

INIT_CLEANUPプロシージャ

監査管理インフラストラクチャを設定し、監査証跡レコードのデフォルトのクリーンアップ間隔を設定します。

IS_CLEANUP_INITIALIZEDファンクション

監査証跡タイプに対してINIT_CLEANUPプロシージャが実行されたかどうかを確認します。

LOAD_UNIFIED_AUDIT_FILESプロシージャ

統合監査証跡からあふれたOS監査ファイルのデータを、指定した統合監査証跡表領域にロードします。

SET_AUDIT_TRAIL_LOCATIONプロシージャ

現行の表領域からユーザー指定の表領域に監査証跡表を移動します。

SET_AUDIT_TRAIL_PROPERTYプロシージャ

指定した監査証跡タイプの監査証跡プロパティを設定します。

SET_LAST_ARCHIVE_TIMESTAMPプロシージャ

監査レコードが最後にアーカイブされた日時を示すタイムスタンプを設定します。

SET_PURGE_JOB_INTERVALプロシージャ

指定したパージ・ジョブでCLEAN_AUDIT_TRAILプロシージャをコールする間隔を設定します。

SET_PURGE_JOB_STATUSプロシージャ

指定したパージ・ジョブを使用可能または使用禁止にします。

CLEAN_AUDIT_TRAILプロシージャ

このプロシージャは、監査証跡レコードを削除します。通常、CLEAN_AUDIT_TRAILプロシージャは、SET_LAST_ARCHIVE_TIMESTAMPプロシージャを使用して監査レコードの最終アーカイブ・タイムスタンプが設定された後にコールされます。

構文

DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type         IN PLS_INTEGER,
use_last_arch_timestamp  IN BOOLEAN DEFAULT TRUE,
container                IN PLS_INTEGER DEFAULT CONTAINER_CURRENT,
database_id              IN NUMBER DEFAULT NULL,
container_guid           IN VARCHAR2 DEFAULT NULL);

パラメータ

表29-8 CLEAN_AUDIT_TRAILプロシージャのパラメータ

パラメータ

説明

audit_trail_type

クリーンアップ操作を実行する必要がある監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

use_last_arch_timestamp

削除対象となるレコードを決定するときに最終アーカイブ・タイムスタンプを使用するかどうかを指定します。

値がTRUEの場合は、最終アーカイブ・タイムスタンプより前に作成された監査レコードのみが削除されます。

値がFALSEの場合は、すべての監査レコードが削除されます。

デフォルト値はTRUEです。不注意によるレコードの削除を防止するため、この値を使用することをお薦めします。

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。CONTAINERがCONTAINER_ALLに設定されている場合はすべてのPDBの監査証跡をパージし、それ以外の場合は接続されたPDBからのみパージします。

database_id

クリーンアップするSYS.AUD$およびSYS.FGA$の各監査レコードのデータベースID (DBID)。統合監査レコードには適用されません。

container_guid

クリーンアップする監査レコードのコンテナのGUID。統合監査レコードに適用されます。

使用上の注意

次の使用上の注意が適用されます。

- オペレーティング・システム(OS)またはXML監査ファイルをクリーンアップするとき、AUDIT_FILE_DESTパラメータによって指定された現在の監査ディレクトリのファイルのみがクリーンアップされます。

- Windowsプラットフォームでは、audit_trail_typeパラメータがDBMS_AUDIT_MGMT.AUDIT_TRAIL_OSに設定されたとき、クリーンアップは実行されません。これは、Windows上のオペレーティング・システム(OS)監査レコードがWindowsのイベント ビューアに書き込まれるためです。

- UNIXプラットフォームでは、オペレーティング・システム(OS)監査レコードがsyslogに書き込まれる場合、クリーンアップは実行されません。audit_trail_typeパラメータがDBMS_AUDIT_MGMT.AUDIT_TRAIL_OSに設定されている場合、AUDIT_FILE_DEST初期化パラメータに指定されたディレクトリの下にある*.audファイルのみを削除します。

関連項目:
『Oracle Databaseリファレンス』の「AUDIT_SYSLOG_LEVEL」

- audit_trail_typeパラメータがDBMS_AUDIT_MGMT.AUDIT_TRAIL_XMLに設定されている場合、このプロシージャは現在の監査ディレクトリからXML監査ファイル(*.xml)のみを削除します。
Oracle Databaseは、XML監査ファイルに対して、ブックキーピング・ファイル(adx_$ORACLE_SID.txt)を保持しています。このファイルは、クリーンアップ・プロシージャでは削除されません。

例

次の例では、最終アーカイブ・タイムスタンプより前に更新されたオペレーティング・システム(OS)監査証跡レコードをクリーンアップするために、CLEAN_AUDIT_TRAILプロシージャをコールしています。

BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type         =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
use_last_arch_timestamp  =>  TRUE);
END;

CLEAR_AUDIT_TRAIL_PROPERTYプロシージャ

このプロシージャは、指定した監査証跡プロパティの値を消去します。監査証跡プロパティは、SET_AUDIT_TRAIL_PROPERTYプロシージャを使用して設定されます。

CLEAR_AUDIT_TRAIL_PROPERTYプロシージャでは、オプションでuse_default_valuesパラメータを使用して、プロパティの値をデフォルト値にリセットできます。

構文

DBMS_AUDIT_MGMT.CLEAR_AUDIT_TRAIL_PROPERTY(
audit_trail_type        IN PLS_INTEGER,
audit_trail_property    IN PLS_INTEGER,
use_default_values      IN BOOLEAN DEFAULT FALSE) ;

パラメータ

表29-9 CLEAR_AUDIT_TRAIL_PROPERTYプロシージャのパラメータ

パラメータ

説明

audit_trail_type

プロパティを消去する必要がある監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

audit_trail_property

値を消去する必要がある監査証跡プロパティ。CLEANUP_INTERVALプロパティの値は消去できません。

監査証跡プロパティについては、表29-2「DBMS_AUDIT_MGMTの定数: 監査証跡プロパティ」を参照してください。

use_default_values

消去する値のかわりに、audit_trail_propertyのデフォルト値を使用するかどうかを指定します。値がTRUEの場合は、パラメータのデフォルト値が使用されます。値がFALSEの場合は、audit_trail_propertyに値が設定されません。

このパラメータのデフォルト値はFALSEです。

使用上の注意

次の使用上の注意が適用されます。

- このプロシージャは、使用しない監査証跡プロパティの値を消去する場合に使用できます。たとえば、オペレーティング・システム監査ファイルのサイズを制限しない場合、このプロシージャを使用してOS_FILE_MAX_SIZEプロパティを再設定できます。
また、このプロシージャを使用して、監査証跡プロパティをデフォルト値にリセットすることもできます。この場合、このプロシージャを起動するときに、use_default_valuesをTRUEに設定する必要があります。

- AUDIT_TRAIL_AUD_STD監査証跡タイプおよびAUDIT_TRAIL_FGA_STD監査証跡タイプに対しては、DB_DELETE_BATCH_SIZEプロパティを個別に消去する必要があります。AUDIT_TRAIL_DB_STD監査証跡タイプおよびAUDIT_TRAIL_ALL監査証跡タイプを使用して、このプロパティをまとめて消去することはできません。

- use_default_valueをFALSEに設定してDB_DELETE_BATCH_SIZEプロパティの値を消去しても、DB_DELETE_BATCH_SIZEのデフォルト値が想定されます。監査レコードは常にバッチで削除されるためです。

- AUDIT_TRAIL_OS監査証跡タイプおよびAUDIT_TRAIL_XML監査証跡タイプに対しては、FILE_DELETE_BATCH_SIZEプロパティを個別に消去する必要があります。AUDIT_TRAIL_FILES監査証跡タイプおよびAUDIT_TRAIL_ALL監査証跡タイプを使用して、このプロパティをまとめて消去することはできません。

- use_default_valueをFALSEに設定してFILE_DELETE_BATCH_SIZEプロパティの値を消去しても、FILE_DELETE_BATCH_SIZEのデフォルト値が想定されます。監査ファイルは常にバッチで削除されるためです。

- CLEANUP_INTERVALプロパティの値は消去できません。

- AUDIT_TRAIL_WRITE_MODEプロパティの値は消去できません。

例

次の例では、OS_FILE_MAX_SIZE監査証跡プロパティの値を消去するために、CLEAR_AUDIT_TRAIL_PROPERTYプロシージャをコールしています。このプロシージャでは、USE_DEFAULT_VALUESパラメータに値FALSEが使用されています。これは、オペレーティング・システム(OS)監査ファイルの最大サイズのしきい値がなくなることを意味します。

BEGIN
DBMS_AUDIT_MGMT.CLEAR_AUDIT_TRAIL_PROPERTY(
AUDIT_TRAIL_TYPE        =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
AUDIT_TRAIL_PROPERTY    =>  DBMS_AUDIT_MGMT.OS_FILE_MAX_SIZE,
USE_DEFAULT_VALUES      =>  FALSE );
END;

CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャ

このプロシージャは、SET_LAST_ARCHIVE_TIMESTAMPプロシージャによって設定されたタイムスタンプを消去します。

構文

DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type         IN PLS_INTEGER,
rac_instance_number      IN PLS_INTEGER DEFAULT NULL,
container                IN PLS_INTEGER DEFAULT CONTAINER_CURRENT,
database_id              IN NUMBER DEFAULT NULL,
container_guid           IN VARCHAR2 DEFAULT NULL);

パラメータ

表29-10 CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャのパラメータ

パラメータ

説明

audit_trail_type

タイムスタンプを消去する必要がある監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

rac_instance_number

Oracle Real Application Clusters(Oracle RAC)インスタンスのインスタンス番号。デフォルト値はNULLです。シングル・インスタンス・データベースでは、rac_instance_numberは関係がありません。インスタンス番号を調べるには、SQL*PlusでSHOW PARAMETER INSTANCE_NUMBERコマンドを発行します。

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。CONTAINERがCONTAINER_ALLに設定されている場合はすべてのPDBから最終アーカイブ・タイムスタンプを消去し、それ以外の場合は接続されたPDBからのみ消去します。

database_id

クリーンアップする監査レコードのデータベースID (DBID)

container_guid

クリーンアップする監査レコードのコンテナのGUID

使用上の注意

次の使用上の注意が適用されます。

- 一度に消去できるのは、1つのaudit_trail_typeのタイムスタンプのみです。

- 次の値はこのプロシージャでは無効なaudit_trail_type値であり、使用できません。

- AUDIT_TRAIL_ALL

- AUDIT_TRAIL_DB_STD

- AUDIT_TRAIL_FILES

例

次の例では、オペレーティング・システム(OS)監査証跡タイプのタイムスタンプ値を消去するために、CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャをコールしています。

BEGIN
DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
rac_instance_number  =>  1);
END;

CREATE_PURGE_JOBプロシージャ

このプロシージャは、定期的に監査証跡レコードを削除するパージ・ジョブを作成します。

このプロシージャは、ユーザーが指定した間隔でクリーンアップ操作を実行します。クリーンアップ操作を実行するために、CLEAN_AUDIT_TRAILプロシージャをコールします。

パージ・ジョブの頻度を変更するには、SET_PURGE_JOB_INTERVALプロシージャを使用します。

パージ・ジョブを使用可能または使用禁止にするには、SET_PURGE_JOB_STATUSプロシージャを使用します。

CREATE_PURGE_JOBプロシージャによって作成されたパージ・ジョブを削除するには、DROP_PURGE_JOBプロシージャを使用します。

構文

DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
audit_trail_type            IN PLS_INTEGER,
audit_trail_purge_interval  IN PLS_INTEGER,
audit_trail_purge_name      IN VARCHAR2,
use_last_arch_timestamp     IN BOOLEAN DEFAULT TRUE,
container                   IN PLS_INTEGER DEFAULT CONTAINER_CURRENT) ;

パラメータ

表29-11 CREATE_PURGE_JOBプロシージャのパラメータ

パラメータ

説明

audit_trail_type

パージ・ジョブを作成する必要がある監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

audit_trail_purge_interval

クリーンアップ・プロシージャがコールされる間隔(時間単位)。値が小さいほど頻繁にクリーンアップが実行されます。

audit_trail_purge_name

パージ・ジョブを識別する名前。

use_last_arch_timestamp

削除対象となるレコードを決定するときに最終アーカイブ・タイムスタンプを使用するかどうかを指定します。

値がTRUEの場合は、最終アーカイブ・タイムスタンプより前に作成された監査レコードのみが削除されます。

値がFALSEの場合は、すべての監査レコードが削除されます。

デフォルト値はTRUEです。

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。CONTAINERがCONTAINER_ALLに設定されている場合、ルートPDBに1つのジョブが作成され、このジョブの起動によってすべてのPDBでクリーンアップが実行されます。

使用上の注意

このプロシージャを使用して、監査証跡レコードに対してCLEAN_AUDIT_TRAILプロシージャをスケジュールします。

例

次の例では、すべての監査証跡タイプに対してCLEANUPという名前のクリーンアップ・ジョブを作成するために、CREATE_PURGE_JOBプロシージャをコールしています。audit_trail_purge_intervalパラメータを100に設定しています。これは、クリーンアップ・ジョブが100時間ごとに起動されることを意味します。また、use_last_arch_timestampパラメータの値をTRUEに設定しています。これは、最終アーカイブ・タイムスタンプより古いすべての監査レコードが削除されることを意味します。

BEGIN
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
audit_trail_type             =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
audit_trail_purge_interval   =>  100 /* hours */,
audit_trail_purge_name       =>  'CLEANUP',
use_last_arch_timestamp      =>  TRUE);
END;

DEINIT_CLEANUPプロシージャ

このプロシージャは、INIT_CLEANUPプロシージャによって実行された設定および初期化を元に戻します。DEINIT_CLEANUPプロシージャは、default_cleanup_intervalパラメータの値を消去します。ただし、監査表に使用した場合は、監査証跡表を元の表領域に戻しません。

構文

DBMS_AUDIT_MGMT.DEINIT_CLEANUP(
audit_trail_type  IN PLS_INTEGER,
container         IN PLS_INTEGER DEFAULT CONTAINER_CURRENT);

パラメータ

表29-12 DEINIT_CLEANUPプロシージャのパラメータ

パラメータ

説明

audit_trail_type

プロシージャをコールする必要がある監査証跡タイプ。

監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。CONTAINERがCONTAINER_ALLに設定されている場合はすべてのPDBの監査証跡をパージし、それ以外の場合は接続されたPDBからのみパージします。

使用上の注意

このプロシージャは、AUDIT_TRAIL_UNIFIEDに対して起動できません。起動すると、「ORA-46250 : Invalid value for argument 'AUDIT_TRAIL_TYPE'」エラーが発生します。

例

次の例では、標準データベース監査証跡のdefault_cleanup_intervalパラメータの設定を消去しています。

BEGIN
DBMS_AUDIT_MGMT.DEINIT_CLEANUP(
AUDIT_TRAIL_TYPE  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD);
END;

DROP_OLD_UNIFIED_AUDIT_TABLESプロシージャ

このプロシージャは、プラガブル・データベース(PDB)のクローニングの後の古い統合監査表を削除します。

構文

DBMS_AUDIT_MGMT.DROP_OLD_UNIFIED_AUDIT_TABLES(
container_guid    IN VARCHAR2) ;

パラメータ

表29-13 DROP_OLD_UNIFIED_AUDIT_TABLESプロシージャのパラメータ

パラメータ

説明

container_guid

古い統合監査表のコンテナのGUID

使用上の注意

プラガブル・データベースがクローニングされると、統合監査表が新しいプラガブル・データベースで新規に作成されます。古い統合監査表を削除するには、クローニングの作成元となったPDBの古いGUIDを指定して、DROP_OLD_UNIFIED_AUDIT_TABLESを使用します。指定したPDBのDBA_PDB_HISTORYビューからGUIDの履歴を問い合せることができます。

例

BEGIN
DBMS_AUDIT_MGMT.DROP_OLD_UNIFIED_AUDIT_TABLES (
container_guid => 'E4721865A9321CB5E043EFA9E80A2D77');
END;

DROP_PURGE_JOBプロシージャ

このプロシージャは、CREATE_PURGE_JOBプロシージャを使用して作成されたパージ・ジョブを削除します。パージ・ジョブの名前を引数として渡します。

構文

DBMS_AUDIT_MGMT.DROP_PURGE_JOB(
audit_trail_purge_name    IN VARCHAR2) ;

パラメータ

表29-14 DROP_PURGE_JOBプロシージャのパラメータ

パラメータ

説明

audit_trail_purge_name

削除されるパージ・ジョブの名前。この名前は、CREATE_PURGE_JOBプロシージャで指定したパージ・ジョブの名前です。

例

次の例では、DROP_PURGE_JOBプロシージャを呼び出してパージ・ジョブCLEANUPを削除します。

BEGIN
DBMS_AUDIT_MGMT.DROP_PURGE_JOB(
AUDIT_TRAIL_PURGE_NAME  => 'CLEANUP');
END;

FLUSH_UNIFIED_AUDIT_TRAILプロシージャ

このプロシージャは、SGAキューにある統合監査証跡レコードをディスクに書き込みます。

構文

DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL (
flush_type      IN BINARY_INTEGER   DEFAULT FLUSH_CURRENT_INSTANCE,
container       IN BINARY_INTEGER   DEFAULT CONTAINER_CURRENT);

パラメータ

表29-15 FLUSH_UNIFIED_AUDIT_TRAILプロシージャのパラメータ

パラメータ

説明

flush_type

このパラメータは、次のいずれかの引数をとります。

- FLUSH_CURRENT_INSTANCE: その特定のRACインスタンスでSGAキューから監査レコードをフラッシュします。

- FLUSH_ALL_INSTANCES: すべてのRACインスタンスでSGAキューから監査レコードをフラッシュします。

container

SGAキューがフラッシュされるコンテナ。このパラメータは、次のいずれかの引数をとります。

- CONTAINER_CURRENT: その特定のPDBでSGAキューから監査レコードをフラッシュします。

- CONTAINER_ALL: すべてのアクティブなPDBでSGAキューから監査レコードをフラッシュします。

GET_AUDIT_COMMIT_DELAYファンクション

このファンクションは、監査のコミット遅延時間を秒数で戻します。監査のコミット遅延時間は、監査レコードをデータベース監査証跡にCOMMITするのにかかる最大時間です。監査レコードのコミットに、監査のコミット遅延時間で定義された値よりも長い時間がかかる場合、監査レコードのコピーがオペレーティング・システム(OS)監査証跡に書き込まれます。

監査のコミット遅延時間の値は、データベース監査レコードの最終アーカイブ・タイムスタンプを決定する場合に役立ちます。

構文

DBMS_AUDIT_MGMT.GET_AUDIT_COMMIT_DELAY
RETURN NUMBER;

GET_ AUDIT_TRAIL_PROPERTY_VALUEファンクション

このプロシージャは、SET_AUDIT_TRAIL_PROPERTYプロシージャで設定されたプロパティ値を戻します。

構文

DBMS_AUDIT_MGMT.GET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type         IN PLS_INTEGER,
audit_trail_property     IN PLS_INTEGER)
RETURN NUMBER;

パラメータ

表29-16 GET_ AUDIT_TRAIL_PROPERTY_VALUEファンクションのパラメータ

パラメータ

説明

audit_trail_type

取得するタイムスタンプの監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

audit_trail_property

問合せの実行対象の監査証跡プロパティ。監査証跡プロパティの詳細は、表29-2「DBMS_AUDIT_MGMTの定数: 監査証跡プロパティ」を参照してください。

戻り値

プロパティ値がSGAメモリー内にキャッシュされる場合、このファンクションは、SET_AUDIT_TRAIL_PROPERTY Procedureで設定された値を戻します。それ以外の場合、NULLを戻します。

例

次の例では、SET_AUDIT_TRAIL_PROPERTYプロシージャで設定されたOS_FILE_MAX_AGEのプロパティ値を出力します。

SET_AUDIT_TRAIL_PROPERTY.
SET SERVEROUTPUT ON
DECLARE
OS_MAX_AGE_VAL NUMBER;
BEGIN
OS_MAX_AGE_VAL := DBMS_AUDIT_MGMT.GET_AUDIT_TRAIL_PROPERTY_VALUE(
audit_trail_type          => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property      => DBMS_AUDIT_MGMT. OS_FILE_MAX_AGE);
IF OS_MAX_AGE_VAL is not NULL THEN
DBMS_OUTPUT.PUT_LINE('The Maximum Age configured for OS Audit files is: ' ||
OS_MAX_AGE_VAL);
END IF;
END;

GET_LAST_ARCHIVE_TIMESTAMPファンクション

このプロシージャは、データベース・インスタンスのSET_LAST_ARCHIVE_TIMESTAMPプロシージャで設定されたタイムスタンプを戻します。

構文

DBMS_AUDIT_MGMT.GET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type     IN PLS_INTEGER)
RETURN TIMESTAMP;

パラメータ

例29-17 GET_LAST_ARCHIVE_TIMESTAMPファンクションのパラメータ

パラメータ

説明

audit_trail_type

取得するタイムスタンプの監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

戻り値

READ WRITEでオープンしているデータベースには、SGAメモリーに格納済のタイムスタンプがないので、このファンクションはNULLを戻します。ただし、READ ONLYでオープンしているデータベースでは、タイムスタンプがSET_LAST_ARCHIVE_TIMESTAMPプロシージャで設定されている場合、タイムスタンプを戻します。それ以外の場合、NULLを戻します。

使用上の注意

このファンクションは、READ WRITEでオープンしているデータベースに対しては、NULLを戻します。この場合、DBA_AUDIT_MGMT_LAST_ARCH_TSビューを使用して、タイムスタンプをチェックします。

例

次の例では、READ ONLYのデータベースにSET_LAST_ARCHIVE_TIMESTAMPプロシージャで設定されたタイムスタンプを出力します。

SET SERVEROUTPUT ON
DECLARE
LAT_TS TIMESTAMP;
BEGIN
LAT_TS := DBMS_AUDIT_MGMT.GET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type          => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS);
IF LAT_TS is not NULL THEN
DBMS_OUTPUT.PUT_LINE('The Last Archive Timestamp is: ' || to_char(LAT_TS));
END IF;
END;

INIT_CLEANUPプロシージャ

このプロシージャは、監査管理インフラストラクチャを設定し、監査証跡レコードのデフォルトのクリーンアップ間隔を設定します。監査証跡表がSYSTEM表領域にある場合、プロシージャによってSYSAUX表領域に移動されます。統合監査を使用している場合は、このプロシージャを実行する必要はありません。統合監査証跡表は、SYSAUX表領域にデフォルトで存在するからです。統合監査を使用していない場合は、総合監査なしで環境を参照するドキュメントについて、『Oracle Databaseアップグレード・ガイド』を参照してください。

監査証跡表をSYSTEM表領域から移動すると、データベース全体のパフォーマンスが向上します。監査証跡表は、INIT_CLEANUPプロシージャによってSYSAUX表領域に移動されます。監査表がSET_AUDIT_TRAIL_LOCATIONプロシージャによって他の場所にすでに移動されている場合、表は移動されません。

SET_AUDIT_TRAIL_LOCATIONプロシージャでは、データベース監査表の代替ターゲット表領域を指定できます。

INIT_CLEANUPプロシージャは、現時点では、AUDIT_TRAIL_OS、AUDIT_TRAIL_XMLおよびAUDIT_TRAIL_FILES監査証跡タイプには関係ありません。これらの監査証跡タイプに、事前設定は必要ありません。

関連項目:
監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

このプロシージャは、監査証跡レコードのデフォルトのクリーンアップ間隔も設定します。

構文

DBMS_AUDIT_MGMT.INIT_CLEANUP(
audit_trail_type          IN PLS_INTEGER,
default_cleanup_interval  IN PLS_INTEGER
container                 IN PLS_INTEGER DEFAULT CONTAINER_CURRENT);

パラメータ

表29-18 INIT_CLEANUPプロシージャのパラメータ

パラメータ

説明

audit_trail_type

クリーンアップ操作を初期化する必要がある監査証跡タイプ。

AUDIT_TRAIL_UNIFIED以外の監査証跡タイプは、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」で説明されています。

default_cleanup_interval

クリーンアップ・プロシージャがコールされるデフォルトの間隔(時間単位)。最小値は1、最大値は999です。

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。CONTAINERがCONTAINER_ALLに設定されている場合はすべてのプラガブル・データベースでクリーンアップのために監査証跡を初期化し、それ以外の場合は接続されたPDBでのみ監査証跡を初期化します。

使用上の注意

次の使用上の注意が適用されます。

- このプロシージャでは、表領域間のデータ移動が発生する可能性があります。特に、データベース監査証跡表への移入がすでに行われている場合、この操作によってリソースが集中的に使用される可能性があります。このプロシージャは、オフピークの時間帯に起動することをお薦めします。

- 監査証跡表の移動先のSYSAUX表領域に、監査証跡表に対応する十分な領域があることを確認してください。また、頻繁な書込み操作を行うために、SYSAUX表領域を最適化する必要があります。

- default_cleanup_intervalは、SET_AUDIT_TRAIL_PROPERTYプロシージャを使用して後で変更できます。

- 監査証跡表をSYSAUX表領域に移動しない場合は、INIT_CLEANUPプロシージャをコールする前に、DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATIONプロシージャを使用して、監査証跡表を別の表領域に移動する必要があります。

- このプロシージャをAUDIT_TRAIL_UNIFIEDに対して起動すると、ORA-46250エラーが発生します。デフォルトでクリーンアップが実行可能なため、クリーンアップ用の初期化を行う必要はありません。

関連項目:
「SET_AUDIT_TRAIL_LOCATIONプロシージャ」

例

次の例では、すべての監査証跡タイプに対してdefault_cleanup_intervalを12時間に設定するために、INIT_CLEANUPプロシージャをコールしています。

BEGIN
DBMS_AUDIT_MGMT.INIT_CLEANUP(
audit_trail_type   => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
default_cleanup_interval   => 12 /* hours */);
END;

関連項目:
監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

IS_CLEANUP_INITIALIZEDファンクション

このファンクションは、監査証跡タイプに対してINIT_CLEANUPプロシージャが実行されたかどうかを確認します。監査証跡タイプに対してこのプロシージャがすでに実行されている場合、IS_CLEANUP_INITIALIZEDファンクションはTRUEを戻します。監査証跡タイプに対してこのプロシージャが実行されていない場合は、FALSEを戻します。

このファンクションは、現時点では、AUDIT_TRAIL_OS、AUDIT_TRAIL_XMLおよびAUDIT_TRAIL_FILES監査証跡タイプには関係ありません。これらの監査証跡タイプに対しては、常にTRUEを戻します。これらの監査証跡タイプに、事前設定は必要ありません。

関連項目:
監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

構文

DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(
audit_trail_type  IN PLS_INTEGER
container         IN PLS_INTEGER DEFAULT CONTAINER_CURRENT)
RETURN BOOLEAN;

パラメータ

表29-19 IS_CLEANUP_INITIALIZEDファンクションのパラメータ

パラメータ

説明

audit_trail_type

ファンクションをコールする必要がある監査証跡タイプ。AUDIT_TRAIL_UNIFIEDには当てはまらないことに注意してください。

監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。

- CONTAINERがCONTAINER_ALLに設定されている場合、このファンクションはすべてのプラガブル・データベースの初期化ステータスを返します。このファンクションは、初期化されていないPDBが1つでもあればFALSEを戻します。

- CONTAINERがCONTAINER_CURRENTに設定されている場合、接続されたPDBの初期化ステータスを戻します。

例

次の例では、クリーンアップ操作のために標準データベース監査証跡タイプが初期化されているかどうかを確認しています。監査証跡タイプが初期化されていない場合は、初期化するためにINIT_CLEANUPプロシージャをコールしています。

BEGIN
IF
NOT DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD)
THEN
DBMS_AUDIT_MGMT.INIT_CLEANUP(
audit_trail_type          => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
default_cleanup_interval  => 12 /* hours */);
END IF;
END;

LOAD_UNIFIED_AUDIT_FILESプロシージャ

このプロシージャは、統合監査証跡からあふれたOS監査ファイルのデータを、指定した統合監査証跡表領域にロードします。

関連項目:
OS監査証跡レコードの統合監査証跡への移動については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

構文

DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES (
container       IN BINARY_INTEGER);

パラメータ

表29-20 LOAD_UNIFIED_AUDIT_FILESプロシージャのパラメータ

パラメータ

説明

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。

- CONTAINER_CURRENT: 統合監査ファイルを$ORACLE_BASE/audit/$ORACLE_SID OSディレクトリから現在のPDBの表にのみロードします。

- CONTAINER_ALL: 統合監査ファイルを$ORACLE_BASE/audit/$ORACLE_SID OSディレクトリから各PDBの表にロードしますが、すべてのアクティブなPDBが対象です。

SET_AUDIT_TRAIL_LOCATIONプロシージャ

このプロシージャは、現行の表領域からユーザー指定の表領域に監査証跡表を移動します。

SET_AUDIT_TRAIL_LOCATIONプロシージャは、AUDIT_TRAIL_OS、AUDIT_TRAIL_XMLおよびAUDIT_TRAIL_FILES監査証跡タイプには関係ありません。AUDIT_FILE_DEST初期化パラメータは、これらの監査証跡タイプに対して宛先ディレクトリを指定できる唯一の方法です。

関連項目:

- 監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

- 『Oracle Databaseリファレンス』の「AUDIT_FILE_DEST」

構文

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
audit_trail_type            IN PLS_INTEGER,
audit_trail_location_value  IN VARCHAR2) ;

パラメータ

表29-21 SET_AUDIT_TRAIL_LOCATIONプロシージャのパラメータ

パラメータ

説明

audit_trail_type

監査証跡位置を設定する必要がある監査証跡タイプ。

監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

audit_trail_location_value

監査証跡レコードの移動先または表領域。

使用上の注意

次の使用上の注意が適用されます。

- このプロシージャでは、表領域間のデータ移動が発生します。特に、データベース監査証跡表への移入がすでに行われている場合、この操作によってリソースが集中的に使用される可能性があります。このプロシージャは、オフピークの時間帯に起動することをお薦めします。

- 監査証跡表の移動先のターゲット表領域に、監査証跡表に対応する十分な領域があることを確認してください。また、頻繁な書込み操作を行うために、ターゲット表領域を最適化する必要があります。

- このプロシージャは、次のaudit_trail_type値に対してのみ有効です。

- AUDIT_TRAIL_AUD_STD

- AUDIT_TRAIL_FGA_STD

- AUDIT_TRAIL_DB_STD

- オプションで、監査証跡位置として暗号化された表領域を指定できます。
AUDIT_TRAIL_TYPEがAUDIT_TRAIL_UNIFIEDの場合、このプロシージャによって統合監査証跡内の新しい監査レコードの表領域が設定されますが、古い監査レコードは移動されません。つまり、統合監査証跡では、リソースが集中的に使用されることはありません。

例

次の例では、データベース監査証跡表AUD$およびFGA_LOG$を、現行の表領域からユーザー作成の表領域RECORDSに移動しています。

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
audit_trail_type            => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value  =>  'RECORDS');
END;

SET_AUDIT_TRAIL_PROPERTYプロシージャ

このプロシージャは、指定した監査証跡タイプの監査証跡プロパティを設定します。

オペレーティング・システム(OS)監査証跡タイプおよびXML監査証跡タイプに対しては、OS_FILE_MAX_SIZE、OS_FILE_MAX_AGEおよびFILE_DELETE_BATCH_SIZEプロパティを設定します。OS_FILE_MAX_SIZEプロパティおよびOS_FILE_MAX_AGEプロパティによって、新しい監査証跡ファイルが作成されるまでの監査証跡ファイルのサイズおよび経過時間の最大値が決定されます。FILE_DELETE_BATCH_SIZEプロパティは、1つのバッチで削除される監査認証ファイルの数を指定します。

データベース監査証跡タイプに対しては、DB_DELETE_BATCH_SIZEおよびCLEANUP_INTERVALプロパティを設定します。DB_DELETE_BATCH_SIZEによって、監査証跡表から削除されるレコードのバッチ・サイズが指定されます。これによって、クリーンアップ操作が中断された場合、次にその操作が開始されたときに最初から開始する必要がなくなります。これは、最後に処理されたバッチより前のすべてのバッチがすでにコミットされているためです。

CLEANUP_INTERVALによって、クリーンアップ・プロシージャがコールされる頻度が時間単位で指定されます。

構文

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
audit_trail_type            IN PLS_INTEGER,
audit_trail_property        IN PLS_INTEGER,
audit_trail_property_value  IN PLS_INTEGER) ;

パラメータ

表29-22 SET_AUDIT_TRAIL_PROPERTYプロシージャのパラメータ

パラメータ

説明

audit_trail_type

プロパティを設定する必要がある監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

audit_trail_property

設定される監査証跡プロパティ。監査証跡プロパティについては、表29-2「DBMS_AUDIT_MGMTの定数: 監査証跡プロパティ」を参照してください。

audit_trail_property_value

audit_trail_propertyを使用して指定されるプロパティの値。監査証跡プロパティの有効な値は、次のとおりです。

- OS_FILE_MAX_SIZE: 最小値は1、最大値は2000000です。デフォルト値は10000です。OS_FILE_MAX_SIZEはキロバイト(KB)単位で測定されます。

- OS_FILE_MAX_AGE: 最小値は1、最大値は497です。デフォルト値は5です。OS_FILE_MAX_AGEは日数で測定されます。

- DB_DELETE_BATCH_SIZE: 最小値は100、最大値は1000000です。デフォルト値は10000です。DB_DELETE_BATCH_SIZEは、1つのバッチで削除される監査レコードの数として測定されます。

- FILE_DELETE_BATCH_SIZE: 最小値は100、最大値は1000000です。デフォルト値は1000です。FILE_DELETE_BATCH_SIZEは、1つのバッチで削除される監査ファイルの数として測定されます。

- CLEANUP_INTERVAL: 最小値は1、最大値は999です。デフォルト値はINIT_CLEANUPプロシージャを使用して設定されます。CLEANUP_INTERVALは時間単位で測定されます。

使用上の注意

次の使用上の注意が適用されます。

- 値を明示的に設定しない監査証跡プロパティでは、デフォルト値が使用されます。

- 1つのオペレーティング・システム(OS)監査証跡タイプまたはXML監査証跡タイプに対してOS_FILE_MAX_SIZEおよびOS_FILE_MAX_AGEプロパティの両方を設定すると、これらの2つの制限のいずれかに達したときに新しい監査証跡ファイルが作成されます。
たとえば、OS_FILE_MAX_SIZEが10000、OS_FILE_MAX_AGEが5であるとします。オペレーティング・システム監査ファイルがすでに5日を超えて保持されている場合は、サイズが9000KBでも、新しい監査ファイルがオープンされます。これは、いずれかの制限に達したためです。

- AUDIT_TRAIL_AUD_STDおよびAUDIT_TRAIL_FGA_STD監査証跡タイプに対しては、DB_DELETE_BATCH_SIZEプロパティを個別に設定する必要があります。AUDIT_TRAIL_DB_STD監査証跡タイプおよびAUDIT_TRAIL_ALL監査証跡タイプを使用して、このプロパティをまとめて設定することはできません。

- DB_DELETE_BATCH_SIZEプロパティを使用すると、1つのバッチで削除される監査レコードの数を制御できます。このパラメータに大きな値を設定するには、UNDOログ領域の割当てを増やす必要があります。

- AUDIT_TRAIL_OS監査証跡タイプおよびAUDIT_TRAIL_XML監査証跡タイプに対しては、FILE_DELETE_BATCH_SIZEプロパティを個別に設定する必要があります。AUDIT_TRAIL_FILES監査証跡タイプおよびAUDIT_TRAIL_ALL監査証跡タイプを使用して、このプロパティをまとめて設定することはできません。

- FILE_DELETE_BATCH_SIZEプロパティを使用すると、1つのバッチで削除される監査ファイル数を制御できます。非常に大きな値を設定すると、GEN0バックグラウンド・プロセスが長時間実行される場合があります。

- Oracle Database Standard Editionでは、統合監査の表領域は1回のみ関連付けることができます。統合監査証跡内では、監査レコードを生成する前にこの関連付けを行う必要があります。デフォルトの表領域はSYSAUXです。関連付け後は、Standard Editionで表領域を変更することはできません。これは、パーティション化機能がStandard Editionでサポートされていないためです。

例

次の例では、オペレーティング・システム(OS)監査証跡にOS_FILE_MAX_SIZEプロパティを設定するために、SET_AUDIT_TRAIL_PROPERTYプロシージャをコールしています。このプロパティ値を102400に設定しています。これは、現行の監査ファイルのサイズが100MBに達するたびに、新しい監査ファイルが作成されることを意味します。

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
audit_trail_type            => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property        =>  DBMS_AUDIT_MGMT.OS_FILE_MAX_SIZE,
audit_trail_property_value  =>  102400 /* 100MB*/ );
END;

次の例では、オペレーティング・システム(OS)監査証跡にOS_FILE_MAX_AGEプロパティを設定するために、SET_AUDIT_TRAIL_PROPERTYプロシージャをコールしています。このプロパティ値を5に設定しています。これは、6日目ごとに新しい監査ファイルが作成されることを意味します。

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
audit_trail_type            => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
audit_trail_property        =>  DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,
audit_trail_property_value  =>  5 /* days */);
END;

次の例では、AUDIT_TRAIL_AUD_STD監査証跡にDB_DELETE_BATCH_SIZEプロパティを設定するために、SET_AUDIT_TRAIL_PROPERTYプロシージャをコールしています。このプロパティ値を100000に設定しています。これは、クリーンアップ操作時に、サイズ100000のバッチで監査レコードがSYS.AUD$表から削除されることを意味します。

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
audit_trail_type              => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_property          => DBMS_AUDIT_MGMT.DB_DELETE_BATCH_SIZE,
audit_trail_property_value    => 100000 /* delete batch size */);
END;

SET_LAST_ARCHIVE_TIMESTAMPプロシージャ

このプロシージャは、監査レコードが最後にアーカイブされた日時を示すタイムスタンプを設定します。監査管理者は、監査レコードに連結するタイムスタンプを設定します。CLEAN_AUDIT_TRAILプロシージャは、このタイムスタンプを使用して、削除する監査レコードを決定します。

構文

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type         IN PLS_INTEGER,
last_archive_time        IN TIMESTAMP,
rac_instance_number      IN PLS_INTEGER DEFAULT NULL,
container                IN PLS_INTEGER DEFAULT CONTAINER_CURRENT,
database_id              IN NUMBER DEFAULT NULL,
container_guid           IN VARCHAR2 DEFAULT NULL);

パラメータ

表29-23 SET_LAST_ARCHIVE_TIMESTAMPプロシージャのパラメータ

パラメータ

説明

audit_trail_type

タイムスタンプを設定する必要がある監査証跡タイプ。監査証跡タイプについては、表29-1「DBMS_AUDIT_MGMTの定数: 監査証跡タイプ」を参照してください。

last_archive_time

削除される監査レコードまたはファイルに基づくTIMESTAMP値。これは、監査レコードまたはファイルが最後にアーカイブされた日時を示します。

rac_instance_number

Oracle Real Application Clusters(Oracle RAC)インスタンスのインスタンス番号。デフォルト値はNULLです。

データベース監査証跡表がすべてのOracle RACインスタンスで共有されるため、rac_instance_numberはデータベース監査証跡タイプには関係ありません。シングル・インスタンス・データベースでは、rac_instance_numberも関係がありません。

container

値は、接続されたプラガブル・データベース(PDB)の場合はCONTAINER_CURRENT、すべてのプラガブル・データベース(PDB)の場合はCONTAINER_ALLです。CONTAINERがCONTAINER_ALLに設定されている場合はすべてのプラガブル・データベースで最終アーカイブ・タイムスタンプの値を設定し、それ以外の場合は接続されたPDBでのみ値を設定します。

database_id

クリーンアップする監査レコードのデータベースID (DBID)

container_guid

クリーンアップする監査レコードのコンテナのGUID

使用上の注意

次の使用上の注意が適用されます。

- 監査証跡タイプがAUDIT_TRAIL_AUD_STD、AUDIT_TRAIL_FGA_STDまたはAUDIT_TRAIL_UNIFIEDの場合、last_archive_timeは協定世界時(UTC)で指定する必要があります。これは、データベース監査証跡がタイムスタンプをUTCで格納するためです。UTCはグリニッジ標準時(GMT)とも呼ばれます。

- 監査証跡タイプがAUDIT_TRAIL_OSまたはAUDIT_TRAIL_XMLの場合、last_archive_timeはローカル・タイム・ゾーンの日時で指定する必要があります。タイム・ゾーンは、OSまたはXML監査ファイルが作成されたマシンのタイム・ゾーンである必要があります。これは、オペレーティング・システム監査ファイルが、監査ファイルの最終変更タイムスタンプ・プロパティに基づいて消去されるためです。最終変更タイムスタンプ・プロパティの値は、マシンのローカル・タイム・ゾーンに格納されています。

- 次のaudit_trail_type値はこのプロシージャに対して有効です。

- AUDIT_TRAIL_AUD_STD

- AUDIT_TRAIL_FGA_STD

- AUDIT_TRAIL_OS

- AUDIT_TRAIL_XML

- Oracle Real Application Clusters(Oracle RAC)データベースを使用している場合は、個々のOracle RACノードを同期化するためにネットワーク・タイム・プロトコル(NTP)を使用することをお薦めします。

例

次の例では、Oracle RACインスタンス1にあるオペレーティング・システム(OS)監査証跡タイプに最終アーカイブ・タイムスタンプを設定するために、SET_LAST_ARCHIVE_TIMESTAMPプロシージャをコールしています。TO_TIMESTAMPファンクションを使用して、文字列をタイムスタンプ値に変換しています。

use_last_arch_timestampをTRUEに設定した状態でその後にCLEAN_AUDIT_TRAILプロシージャをコールすると、2012年9月10日14:10:10.0以前に変更された現在のAUDIT_FILE_DESTディレクトリからすべてのOS監査ファイルが削除されます。

BEGIN
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type     => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
last_archive_time    => TO_TIMESTAMP('12-SEP-0714:10:10.0','DD-MON-RRHH24:MI:SS.FF'),
rac_instance_number  => 1);
END;

SET_PURGE_JOB_INTERVALプロシージャ

このプロシージャは、指定したパージ・ジョブでCLEAN_AUDIT_TRAILプロシージャをコールする間隔を設定します。このパージ・ジョブは、CREATE_PURGE_JOBプロシージャを使用して作成済である必要があります。

構文

DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVAL(
audit_trail_purge_name      IN VARCHAR2,
audit_trail_interval_value  IN PLS_INTEGER) ;

パラメータ

表29-24 SET_PURGE_JOB_INTERVALプロシージャのパラメータ

パラメータ

説明

audit_trail_purge_name

間隔を設定するパージ・ジョブの名前。この名前は、CREATE_PURGE_JOBプロシージャで指定したパージ・ジョブの名前です。

audit_trail_interval_value

クリーンアップ・プロシージャがコールされる間隔(時間単位)。この値によって、CREATE_PURGE_JOBプロシージャで設定されたaudit_trail_purge_intervalパラメータは変更されます。

使用上の注意

このプロシージャを使用して、CREATE_PURGE_JOBプロシージャで設定されたaudit_trail_purge_intervalパラメータを変更します。

例

次の例では、CLEANUPという名前のパージ・ジョブを起動する頻度を変更するために、SET_PURGE_JOB_INTERVALプロシージャをコールしています。新しい間隔は24時間に設定されています。

BEGIN
DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVAL(
AUDIT_TRAIL_PURGE_NAME       => 'CLEANUP',
AUDIT_TRAIL_INTERVAL_VALUE   => 24 );
END;

SET_PURGE_JOB_STATUSプロシージャ

このプロシージャは、指定したパージ・ジョブを使用可能または使用禁止にします。このパージ・ジョブは、CREATE_PURGE_JOBプロシージャを使用して作成済である必要があります。

構文

DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS(
audit_trail_purge_name    IN VARCHAR2,
audit_trail_status_value  IN PLS_INTEGER) ;

パラメータ

表29-25 SET_PURGE_JOB_STATUSプロシージャのパラメータ

パラメータ

説明

audit_trail_purge_name

ステータスを設定するパージ・ジョブの名前。この名前は、CREATE_PURGE_JOBプロシージャで指定したパージ・ジョブの名前です。

audit_trail_status_value

「DBMS_AUDIT_MGMTの定数: パージ・ジョブ・ステータス」で指定されている値の1つ。

値PURGE_JOB_ENABLEによって、指定したパージ・ジョブが使用可能になります。

値PURGE_JOB_DISABLEによって、指定したパージ・ジョブが使用禁止になります。

例

次の例では、CLEANUPパージ・ジョブを使用可能にするために、SET_PURGE_JOB_STATUSプロシージャをコールしています。

BEGIN
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS(
audit_trail_purge_name      => 'CLEANUP',
audit_trail_status_value    => DBMS_AUDIT_MGMT.PURGE_JOB_ENABLE);
END;

30 DBMS_AUTO_SQLTUNE

DBMS_AUTO_SQLTUNEパッケージは、自動SQLチューニング・タスクを管理するためのインタフェースです。DBMS_SQLTUNEとは異なり、DBMS_AUTO_SQLTUNEパッケージには、DBAロールが必要です。

この章では、次の項目について説明します。

- DBMS_AUTO_SQLTUNEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_AUTO_SQLTUNEサブプログラムの要約

DBMS_AUTO_SQLTUNEの使用方法

- 概要

- セキュリティ・モデル

概要

DBMS_AUTO_SQLTUNEパッケージは、自動タスク・フレームワーク内で実行されるSQLチューニング・アドバイザ(DBMS_SQLTUNE)へのインタフェースです。データベースでは、カタログ・スクリプトの一部として自動システム・タスクSYS_AUTO_SQL_TUNING_TASKが作成されます。このタスクによってAWRから一連の高負荷SQLが自動的に選択され、そのSQLに対してSQLチューニング・アドバイザが実行されます。自動タスクでは、他のSQLチューニング・タスクと同じ包括的な分析が実行されます。

自動タスクでは、新旧のクエリー・プランを実行して検出されたSQLプロファイルがテストされます。自動SQLチューニングは、1つの重要な点で手動SQLチューニングと異なります。SQLプロファイルの自動実装が有効になると(デフォルトは無効)、データベースによって、パフォーマンスの大幅な向上が保証されるSQLプロファイルが実装されます。実装は、データベースが新しい計画のメリットを即座に得ることができるように、チューニング時に行われます。自動実装を有効化または無効化するには、SET_AUTO_TUNING_TASK_PARAMETER APIを使用してACCEPT_SQL_PROFILESパラメータを設定します。

各メンテナンス・ウィンドウで、自動チューニング・タスクはその結果を新しい実行として格納します。各実行の結果は、タスク名は同じですが、実行名は異なります。タスク実行の詳細は、DBA_ADVISOR_EXECUTIONSビューを問い合せてください。REPORT_AUTO_TUNING_TASKファンクションを使用すると、複数の実行にわたるレポートを表示できます。

セキュリティ・モデル

このパッケージは、DBAロールを持つユーザーが使用できます。他のユーザーには、パッケージに対するEXECUTE権限を明示的に付与する必要があります。EXECUTE_AUTO_TUNING_TASKプロシージャは例外で、SYSのみが起動できることに注意してください。

ユーザーは、このパッケージのAPIをコールして、自動チューニング・タスクの実行時の動作方法(自動SQLプロファイル作成の有効化や、タスク実行時の合計時間制限およびSQL単位の時間制限の構成など)を制御できます。これらの設定は、データベースのパフォーマンス全体に影響するため、ADVISOR権限を持つすべてのユーザーがこのパッケージにアクセスすることは、適切ではない場合があります。

DBMS_AUTO_SQLTUNEサブプログラムの要約

表30-1 DBMS_AUTO_SQLTUNEパッケージのサブプログラム

サブプログラム

説明

EXECUTE_AUTO_TUNING_TASKファンクションおよびプロシージャ

自動SQLチューニング・タスクを即座に実行します(SYSのみ)。

REPORT_AUTO_TUNING_TASKファンクション

自動チューニング・タスクの履歴のテキスト・レポートを表示します。

SET_AUTO_TUNING_TASK_PARAMETERプロシージャ

毎日の自動実行のタスク・パラメータ値を変更します。

EXECUTE_AUTO_TUNING_TASKファンクションおよびプロシージャ

このファンクションおよびプロシージャは、自動SQLチューニング・タスク(SYS_AUTO_SQL_TUNING_TASK)を実行します。ファンクションとプロシージャの両方とも、新しいタスク実行のコンテキストで実行されます。ファンクションは新しい実行名を戻す点が異なります。SYSのみがこのサブプログラムを起動できることに注意してください。

構文

DBMS_AUTO_SQLTUNE.EXECUTE_AUTO_TUNING_TASK(
execution_name    IN VARCHAR2               := NULL,
execution_params  IN dbms_advisor.argList   := NULL,
execution_desc    IN VARCHAR2               := NULL)
RETURN VARCHAR2;

DBMS_AUTO_SQLTUNE.EXECUTE_AUTO_TUNING_TASK(
execution_name    IN VARCHAR2               := NULL,
execution_params  IN dbms_advisor.argList   := NULL,
execution_desc    IN VARCHAR2               := NULL);

パラメータ

表30-2 EXECUTE_TUNING_TASKファンクションおよびプロシージャのパラメータ

パラメータ

説明

execution_name

実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。

execution_params

指定した実行のパラメータ(名前、値)のリスト。実行パラメータは、指定した実行に対してのみ影響します。これらのパラメータは、(SET_AUTO_TUNING_TASK_PARAMETERプロシージャを使用して設定された)タスクに格納されているパラメータの値より優先されます。

execution_desc

実行について説明する256文字の長さの文字列。

使用上の注意

チューニング・タスクは、リセットせずに複数回実行できます。

例

EXEC DBMS_AUTO_SQLTUNE.EXECUTE_AUTO_TUNING_TASK(:exec_name);

REPORT_AUTO_TUNING_TASKファンクション

このプロシージャは、自動SQLチューニング・タスクの結果を表示します。

構文

DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK(
begin_exec      IN   VARCHAR2   := NULL,
end_exec        IN   VARCHAR2   := NULL,
type            IN   VARCHAR2   := 'TEXT',
level           IN   VARCHAR2   := 'TYPICAL',
section         IN   VARCHAR2   := ALL,
object_id       IN   NUMBER     := NULL,
result_limit    IN   NUMBER     := NULL)
RETURN CLOB;

パラメータ

表30-3 REPORT_TUNING_TASKファンクションのパラメータ

パラメータ

説明

begin_exec

使用する開始タスク実行の名前。NULLの場合は、最新のタスク実行に関するレポートが生成されます。

end_exec

使用する終了タスク実行の名前。NULLの場合は、最新のタスク実行に関するレポートが生成されます。

type

作成するレポートのタイプ。設定可能な値は、テキストのレポートを作成するTEXTです。

level

レポートの詳細なレベル。

- BASIC: 簡単なバージョンのレポート。アドバイザによって実行されるアクションに関する情報を表示します。

- TYPICAL: 分析対象の各文に関する情報(実装されていない要求など)を表示します。

- ALL: 高度に詳細なレポート・レベル。スキップされた文に関する注釈も表示します。

section

含めるレポートのセクション。

- SUMMARY: サマリー情報

- FINDINGS: チューニングの結果

- PLAN: EXPLAIN PLAN

- INFORMATION: 一般的な情報

- ERROR: エラーが発生した文

- ALL: すべてのセクション

object_id

レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、NULLを指定します。単一の実行を対象とするレポートでのみ有効です。

result_limit

レポートに表示されるSQL文の最大数。

戻り値

必要なレポートが含まれているCLOB。

例

-- Get the whole report for the most recent execution
SELECT DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK
FROM   DUAL;

-- Show the summary for a range of executions
SELECT DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK(:begin_exec, :end_exec, 'TEXT',
'TYPICAL', 'SUMMARY')
FROM   DUAL;

-- Show the findings for the statement of interest
SELECT DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK(:exec, :exec, 'TEXT',
'TYPICAL', 'FINDINGS', 5)
FROM   DUAL;

SET_AUTO_TUNING_TASK_PARAMETERプロシージャ

このプロシージャは、予約された自動チューニング・タスクSYS_AUTO_SQL_TUNING_TASKに使用するVARCHAR2タイプまたはNUMBERタイプのSQLチューニング・パラメータの値を更新します。

構文

DBMS_AUTO_SQLTUNE.SET_AUTO_TUNING_TASK_PARAMETER(
parameter    IN  VARCHAR2,
value        IN  VARCHAR2);

DBMS_AUTO_SQLTUNE.SET_AUTO_TUNING_TASK_PARAMETER(
parameter    IN  VARCHAR2,
value        IN  NUMBER);

パラメータ

表30-4 SET_AUTO_TUNING_TASK_PARAMETERプロシージャのパラメータ

パラメータ

説明

parameter

設定するパラメータの名前。パラメータをVARCHAR2形式で使用してこのプロシージャで設定できるチューニング・パラメータは、次のとおりです。

- MODE: チューニング・スコープ(制限付き/包括的)。

- USERNAME: 文を解析するユーザーの名前。

- DAYS_TO_EXPIRE: タスクが削除されるまでの日数。

- EXECUTION_DAYS_TO_EXPIRE: (タスクが削除されることなく)タスクの実行が削除されるまでの日数。

- DEFAULT_EXECUTION_TYPE: EXECUTE_AUTO_TUNING_TASKファンクションおよびプロシージャによって何も指定されていない場合、タスクの実行タイプはデフォルトでこのタイプに設定されます。

- TIME_LIMIT: グローバル・タイムアウト(秒)。

- LOCAL_TIME_LIMIT: 文単位のタイムアウト(秒)。

- TEST_EXECUTE: FULL/AUTO/OFF。
* FULL: SQLのローカル時間制限(SQLの時間制限が設定されていない場合はグローバル・タスクの時間制限)まで、必要な時間テスト実行します。

* AUTO: チューニング時間に比例して自動的に選択された時間テスト実行します。

* OFF: テスト実行しません。

- BASIC_FILTER: SQLチューニング・セットの基本フィルタ。

- OBJECT_FILTER: SQLチューニング・セットのオブジェクト・フィルタ。

- PLAN_FILTER: SQLチューニング・セットの計画フィルタ(設定可能な値については、SELECT_SQLSETを参照してください)。

- RANK_MEASURE1: SQLチューニング・セットの最初のランキング・メジャー。

- RANK_MEASURE2: SQLチューニング・セットの2番目の設定可能なランキング・メジャー。

- RANK_MEASURE3: SQLチューニング・セットの3番目の設定可能なランキング・メジャー。

- RESUME_FILTER: SQLチューニング・セットのBASIC_FILTER以外の追加フィルタ。

- SQL_LIMIT: チューニングするSQL文の最大数。

- SQL_PERCENTAGE: SQLチューニング・セットの文のパーセント・フィルタ。

自動チューニング・タスクでのみ、次のパラメータがサポートされます。

- ACCEPT_SQL_PROFILES: タスクでSQLプロファイルを自動的に受け入れるかどうかによってTRUEまたはFALSE。

- MAX_AUTO_SQL_PROFILES: システムで許容される自動SQLプロファイルの最大数(合計)。

- MAX_SQL_PROFILES_PER_EXEC: タスクを実行するたびに自動的に実装できるSQLプロファイルの最大数。

value

指定したパラメータの新しい値。

31 DBMS_AUTO_REPORT

DBMS_AUTO_REPORTパッケージは、自動ワークロード・リポジトリ(AWR)で取得されたSQL監視データおよびリアルタイムの自動データベース診断モニター(ADDM)データを表示するためのインタフェースを提供します。また、これらのデータのAWRでの取得方法を制御するサブプログラムも提供します。

関連項目:
データベース操作のレポート作成の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_AUTO_REPORTの使用

- 概要

- セキュリティ・モデル

- DBMS_AUTO_REPORTサブプログラムの要約

DBMS_AUTO_REPORTの使用

- 概要

- セキュリティ・モデル

概要

このパッケージは、AWRで取得されたSQL監視データおよびリアルタイムADDMデータを表示するためのインタフェースを提供します。また、これらのデータのAWRでの取得方法の動作を制御するサブプログラムも提供し、DBA_HIST_REPORTSおよびDBA_HIST_REPORTS_DETAILSという2つのビューで公開します。

セキュリティ・モデル

このパッケージは、PUBLICで使用可能で、独自のセキュリティ・チェックが実行されます。

DBMS_AUTO_REPORTサブプログラムの要約

表31-1 DBMS_AUTO_REPORTパッケージのサブプログラム

サブプログラム

説明

FINISH_REPORT_CAPTUREプロシージャ

START_REPORT_CAPTUREプロシージャで開始されたSQL監視データ全体の取得を終了します。

REPORT_REPOSITORY_DETAILファンクション

指定したレポートIDの格納済レポートを取得します。

REPORT_REPOSITORY_DETAIL_XMLファンクション

指定したレポートIDの格納済XMLレポートを取得します。

REPORT_REPOSITORY_LIST_XMLファンクション

AWRで取得されたSQL監視データおよびリアルタイムADDMデータを一覧表示する、XMLレポートを取得します。

START_REPORT_CAPTUREプロシージャ

取得サイクルを前回実行した後に新たに監視されるようになったSQLのSQL監視データを毎分取得し、AWRに格納します。

FINISH_REPORT_CAPTUREプロシージャ

このプロシージャは、START_REPORT_CAPTUREプロシージャで開始されたSQL監視データ全体の取得を終了します。このサブプログラムは、すぐに最終の取得サイクルを実行して任意の新しいデータを取得し、1分毎の全体取得を終了します。

このサブプログラムがコールされた後も、すべてのアクティブなSQLではなく、監視が完了したSQLのうち重要だと思われるトップ5のSQL(経過時間、あるいはPQの場合は経過時間*DOPに応じる)に対しては、1分毎にデータが取得されます。

構文

DBMS_AUTO_REPORT.FINISH_REPORT_CAPTURE;

REPORT_REPOSITORY_DETAILファンクション

このプロシージャは、指定されたレポートIDの格納済レポートを、XMLやHTMLなどの指定された形式で取得します。

構文

DBMS_AUTO_REPORT.REPORT_REPOSITORY_DETAIL (
rid              IN NUMBER    DEFAULT NULL,
type             IN VARCHAR2  DEFAULT 'XML',
base_path        IN VARCHAR2  DEFAULT NULL)
RETURNS CLOB

パラメータ

表31-2 REPORT_REPOSITORY_DETAILファンクションのパラメータ

パラメータ

説明

rid

ファンクションによって戻される格納済レポートのID。

type

レポートの目的の形式。値は'XML'、'TEXT'、'HTML'、'EM'または'ACTIVE'です。最後の2つのオプションは、アクティブなHTMLという同じ形式でレポートを生成します。デフォルト値は'XML'です。

base_path

未使用/操作不能

戻り値

指定したレコードIDの永続化されたレポート。

REPORT_REPOSITORY_DETAIL_XMLファンクション

このプロシージャは、指定したレポートIDの格納済XMLレポートを取得します。

構文

DBMS_AUTO_REPORT.REPORT_REPOSITORY_DETAIL_XML (
rid              IN NUMBER    DEFAULT NULL,
base_path        IN VARCHAR2  DEFAULT NULL)
RETURNS XMLTYPE

パラメータ

表31-3 REPORT_REPOSITORY_DETAIL_XMLファンクションのパラメータ

パラメータ

説明

rid

ファンクションによって戻される格納済レポートのID。

base_path

未使用/操作不能

戻り値

指定したレコードIDの永続化されたXMLレポート。

REPORT_REPOSITORY_LIST_XMLファンクション

このプロシージャは、AWRで取得されたSQL監視データおよびリアルタイムADDMデータを一覧表示する、XMLレポートを取得します。入力パラメータを使用すると、このリスト・レポートに組み込む取得データを選択したり、制限することができます。すべてのパラメータはオプションです。

構文

DBMS_AUTO_REPORT.REPORT_REPOSITORY_LIST_XML (
active_since              IN DATE     DEFAULT NULL,
active_upto               IN DATE     DEFAULT NULL,
snapshot_id               IN NUMBER   DEFAULT NULL,
dbid                      IN NUMBER   DEFAULT NULL,
inst_id                   IN NUMBER   DEFAULT NULL,
con_dbid                  IN NUMBER   DEFAULT NULL,
session_id                IN NUMBER   DEFAULT NULL,
session_serial            IN NUMBER   DEFAULT NULL,
component_name            IN VARCHAR2 DEFAULT NULL,
key1                      IN VARCHAR2 DEFAULT NULL,
key2                      IN VARCHAR2 DEFAULT NULL,
key3                      IN VARCHAR2 DEFAULT NULL,
report_level              IN VARCHAR2 DEFAULT 'TYPICAL',
base_path                 IN VARCHAR2 DEFAULT NULL)
RETURNS XMLTYPE

パラメータ

表31-4 REPORT_REPOSITORY_LIST_XMLファンクションのパラメータ

パラメータ

説明

active_since

データ選択に使用する時間範囲の開始時点。時間範囲を指定すると、その時間範囲内にアクティブであったデータのみがリストに含められます。値が指定されていない場合は、この時間範囲として、現在のシステム時間で終了する過去24時間が選択されます。

active_upto

時間範囲の終わりであること以外は、active_sinceと同様。

snapshot_id

値を指定すると、指定したスナップショットIDの期間内に取得されたデータのみがリスト・レポートに含められます。値が指定されていない場合は、スナップショットIDによるフィルタリングは実行されません。

dbid

値を指定すると、指定したデータベースIDで取得されたデータのみがリスト・レポートに含められます。値が指定されていない場合は、データベースIDによるフィルタリングは実行されません。

inst_id

値を指定すると、指定したインスタンス番号で取得されたデータのみがリスト・レポートに含められます。値が指定されていない場合は、インスタンスIDによるフィルタリングは実行されません。

con_dbid

値を指定すると、指定したコンテナDBIDで取得されたデータのみがリスト・レポートに含められます。値が指定されていない場合は、コンテナDBIDによるフィルタリングは実行されません。

session_id

値を指定すると、指定したセッションIDで取得されたデータのみがリスト・レポートに含められます。値が指定されていない場合は、セッションIDによるフィルタリングは実行されません。

session_serial

値を指定すると、指定したセッションで取得されたデータのみがリスト・レポートに含められます。値が指定されていない場合は、セッション・シリアル番号によるフィルタリングは実行されません。このパラメータは、session_idパラメータと組み合せて使用する必要があります。

component_name

SQL監視データでは'sqlmonitor'、リアルタイムADDMデータでは'rtaddm'になります。値を指定すると、指定したコンポーネントのみに関連するデータがリスト・レポートに含められます。値が指定されていない場合は、フィルタリングは実行されません。

key1

コンポーネント関連のキー値。SQL監視の場合、key1は、取得したSQL文のSQL IDです。値を指定すると、key1に指定された値を持つデータのみが含められます。値が指定されていない場合は、key1によるフィルタリングは実行されません。

key2

コンポーネント関連のキー値。SQL監視の場合、key2は、取得したSQL文のSQL実行IDです。値を指定すると、key2に指定された値を持つデータのみが含められます。値が指定されていない場合は、key2によるフィルタリングは実行されません。

key3

コンポーネント関連のキー値。SQL監視の場合、key3は、取得したSQL文のSQL実行開始時間です。値を指定すると、key3に指定された値を持つデータのみが含められます。値が指定されていない場合は、key3によるフィルタリングは実行されません。

report_level

現時点では、'TYPICAL'のみが使用されています。

base_path

未使用/操作不能

START_REPORT_CAPTUREプロシージャ

このプロシージャは、取得サイクルを前回実行した後に新たに監視されるようになったSQLのSQL監視データを毎分取得し、AWRに格納します。各取得サイクルでは、現在実行もキューイングもされていないSQLのデータの取得が試みられます。これは、データ全体の取得です。新たに監視されるすべてのSQLのデータが取得されるからです。FINISH_REPORT_CAPTUREプロシージャで明示的に終了されるまで、毎分実行されます。RACシステムの場合は、クラスタ内の各ノードで取得が開始されます。

構文

DBMS_AUTO_REPORT.START_REPORT_CAPTURE;

32 DBMS_AUTO_TASK_ADMIN

DBMS_AUTO_TASK_ADMINパッケージは、AUTOTASK機能へのインタフェースを提供します。このインタフェースは、AUTOTASKコントロールにアクセスするために、DBAおよびEnterprise Managerによって使用されます。Enterprise ManagerではAUTOTASKアドバイザも使用します。

関連項目:
自動メンテナンス・タスクの構成の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_AUTO_TASK_ADMINの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- DBMS_AUTO_TASK_ADMINサブプログラムの要約

DBMS_AUTO_TASK_ADMINの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

推奨されないサブプログラム

注意:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

- OVERRIDE_PRIORITYプロシージャ

セキュリティ・モデル

DBMS_AUTO_TASK_ADMINは定義者の権限パッケージで、EXECUTEはDBA、IMP_FULL_DATABASE、およびDATAPUMP_IMP_FULL_DATABASEに自動的に付与されます。

定数

DBMS_AUTO_TASK_ADMINパッケージでは、表32-1に示す定数が使用されます。

表32-1 DBMS_AUTO_TASK_ADMINの定数

名前

タイプ

値

説明

PRIORITY_MEDIUM

VARCHAR2

'MEDIUM'

この優先順位を持つタスクは、時間の許す範囲で実行する必要があります。

PRIORITY_HIGH

VARCHAR2

'HIGH'

この優先順位を持つタスクは、現在のメンテナンス・ウィンドウ内で実行する必要があります。

PRIORITY_URGENT

VARCHAR2

'URGENT'

この優先順位を持つタスクは、できるだけ早く実行する必要があります。

DBMS_AUTO_TASK_ADMINサブプログラムの要約

表32-2 DBMS_XMLSTOREパッケージのサブプログラム

メソッド

説明

DISABLEプロシージャ

AUTOTASKが、指定したクライアントまたは操作による要求を実行しないようにします。

ENABLEプロシージャ

以前に使用禁止にしたクライアント、操作、ターゲット・タイプまたは個々のターゲットをAUTOTASKコントロールの下で使用可能にします。

GET_CLIENT_ATTRIBUTESプロシージャ

選択したクライアント属性の値を戻します。

GET_P1_RESOURCESプロシージャ

優先順位の高いAUTOTASKコンシューマ・グループにそれぞれ割り当てられたリソースの割合。

OVERRIDE_PRIORITYプロシージャ

タスクの優先順位を手動で上書きします。

SET_CLIENT_SERVICEプロシージャ

指定したサービスにAUTOTASKクライアントを関連付けます。

SET_P1_RESOURCESプロシージャ

AUTOTASKクライアントで使用される優先順位の高いコンシューマ・グループにそれぞれ割り当てるリソースの割合を設定します。

DISABLEプロシージャ

このプロシージャは、AUTOTASKが、指定したクライアントまたは操作による要求を実行しないようにします。

構文

すべてのAUTOTASK機能を使用禁止にします。

DBMS_AUTO_TASK_ADMIN.DISABLE;

クライアントまたは操作に対するすべてのタスクを使用禁止にします。

DBMS_AUTO_TASK_ADMIN.DISABLE (
client_name       IN    VARCHAR2,
operation         IN    VARCHAR2,
window_name       IN    VARCHAR2);

パラメータ

表32-3 DISABLEプロシージャのパラメータ

パラメータ

説明

client_name

クライアント名。DBA_AUTOTASK_CLIENTビューにあります。

operation

操作名。DBA_AUTOTASK_OPERATIONビューにあります。

window_name

クライアントが使用禁止になるウィンドウの名前(オプション)。

使用上の注意

- operationおよびwindow_nameの両方がNULLの場合、クライアントは使用禁止になります。

- operationがNULL以外の場合、window_nameは無視され、操作は使用禁止になります。

- operationがNULL、window_nameがNULL以外の場合、クライアントは指定したウィンドウ内で使用禁止になります。

ENABLEプロシージャ

このプロシージャは、以前に使用禁止にしたクライアント、操作、ターゲット・タイプまたは個々のターゲットを、AUTOTASKコントロールの下で使用可能にします。DEFERREDオプションを指定すると、次のメンテナンス・ウィンドウの開始までこのコールは有効になりません。IMMEDIATEオプションを指定すると、現在オープンしているメンテナンス・ウィンドウがある場合にかぎり、このコールは即時に有効になります。

構文

AUTOTASKを再度使用可能にします。このバージョンでは、指定したクライアントを使用可能にします。明示的にタスクまたは操作を使用禁止にした場合は、個別に再度使用可能にする必要があります。

DBMS_AUTO_TASK_ADMIN.ENABLE;

クライアントまたは操作を再度使用可能にします。明示的にタスクまたは操作を使用禁止にした場合は、個別に再度使用可能にする必要があります。

DBMS_AUTO_TASK_ADMIN.ENABLE (
client_name       IN    VARCHAR2,
operation         IN    VARCHAR2,
window_name       IN    VARCHAR2);

パラメータ

表32-4 ENABLEプロシージャのパラメータ

パラメータ

説明

client_name

クライアント名。DBA_AUTOTASK_CLIENTビューにあります。

operation

操作名。DBA_AUTOTASK_OPERATIONビューにあります。

window_name

クライアントが使用可能になるウィンドウの名前(オプション)。

使用上の注意

- operationおよびwindow_nameの両方がNULLの場合、クライアントは使用可能になります。

- operationがNULL以外の場合、window_nameは無視され、指定した操作は使用可能になります。

- operationがNULL、window_nameがNULL以外の場合、クライアントは指定したウィンドウ内で使用可能になります。

GET_CLIENT_ATTRIBUTESプロシージャ

このプロシージャは、選択したクライアント属性の値を戻します。

構文

DBMS_AUTO_TASK_ADMIN.GET_CLIENT_ATTRIBUTES(
client_name        IN    VARCHAR2,   service_name       OUT   VARCHAR2,   window_group       OUT   VARCHAR2);

パラメータ

表32-5 GET_CLIENT_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

client_name

クライアント名。DBA_AUTOTASK_CLIENTビューにあります。

service_name

クライアントのサービス名。NULLの場合があります。

window_group

クライアントがアクティブなウィンドウ・グループの名前。

GET_P1_RESOURCESプロシージャ

このプロシージャは、優先順位の高いAUTOTASKコンシューマ・グループにそれぞれ割り当てられたリソースの割合を戻します。

構文

DBMS_AUTO_TASK_ADMIN.GET_P1_RESOURCES(
stats_group_pct     OUT   NUMBER,
seg_group_pct       OUT   NUMBER,
tune_group_pct      OUT   NUMBER,
health_group_pct    OUT   NUMBER);

パラメータ

表32-6 GET_P1_RESOURCESプロシージャのパラメータ

パラメータ

説明

stats_group_pct

統計情報収集に割り当てられたリソース(%)

seq_group_pct

領域管理に割り当てられたリソース(%)

tune_group_pct

SQLチューニングに割り当てられたリソース(%)

health_group_pct

ヘルス・チェックに割り当てられたリソース(%)

使用上の注意

合計値は、100%です。

OVERRIDE_PRIORITYプロシージャ

注意:
このサブプログラムの使用は推奨されておらず、Oracle Database 12cでは動作しなくなります。

このプロシージャは、タスクの優先順位を手動で上書きする場合に使用します。これは、クライアント、操作または個別のタスクのレベルで行うことができます。この優先順位の割当ては、指定したクライアントがアクティブな次のメンテナンス・ウィンドウ時に有効になります。具体的には、priorityをURGENTに設定すると、メンテナンス・ウィンドウの開始時に優先順位の高いジョブが生成されます。priorityをCLEARに設定すると、その上書きが削除されます。

構文

クライアントの優先順位を上書きします。

DBMS_AUTO_TASK_ADMIN.OVERRIDE_PRIORITY (
client_name       IN    VARCHAR2,
priority          IN    VARCHAR2);

操作の優先順位を上書きします。

DBMS_AUTO_TASK_ADMIN.OVERRIDE_PRIORITY (
client_name       IN    VARCHAR2,
operation         IN    VARCHAR2,
priority          IN    VARCHAR2);

タスクの優先順位を上書きします。

DBMS_AUTO_TASK_ADMIN.OVERRIDE_PRIORITY (
client_name       IN    VARCHAR2,
operation         IN    VARCHAR2,
task_target_type  IN    VARCHAR2,
task_target_name  IN    VARCHAR2,
priority          IN    VARCHAR2);

パラメータ

表32-7 OVERRIDE_PRIORITYプロシージャのパラメータ

パラメータ

説明

client_name

クライアント名。DBA_AUTOTASK_CLIENTビューにあります。

priority

URGENT、HIGH、MEDIUMまたはLOW。

operation

操作名。DBA_AUTOTASK_OPERATIONビューにあります。

task_target_type

影響を受けるターゲットのタイプ。V$AUTOTASK_TARGET_TYPEビューにあります。

task_target_name

影響を受ける特定のターゲットの名前。

SET_CLIENT_SERVICEプロシージャ

このプロシージャは、指定したサービスにAUTOTASKクライアントを関連付けます。

構文

DBMS_AUTO_TASK_ADMIN.SET_CLIENT_SERVICE(
client_name        IN    VARCHAR2,
service_name       IN   VARCHAR2);

パラメータ

表32-8 SET_CLIENT_SERVICEプロシージャのパラメータ

パラメータ

説明

client_name

クライアント名。DBA_AUTOTASK_CLIENTビューにあります。

service_name

クライアントのサービス名。NULLの場合があります。

使用上の注意

クライアントにかわって実行されるすべての作業は、サービスが使用可能なインスタンス上でのみ行われます。

SET_P1_RESOURCESプロシージャ

このプロシージャは、AUTOTASKクライアントで使用される優先順位の高いコンシューマ・グループにそれぞれ割り当てるリソースの割合を設定します。

構文

DBMS_AUTO_TASK_ADMIN.SET_P1_RESOURCES(
stats_group_pct     OUT   NUMBER,
seg_group_pct       OUT   NUMBER,
tune_group_pct      OUT   NUMBER,
health_group_pct    OUT   NUMBER);

パラメータ

表32-9 SET_P1_RESOURCESプロシージャのパラメータ

パラメータ

説明

stats_group_pct

統計情報収集に割り当てられたリソース(%)

seq_group_pct

領域管理に割り当てられたリソース(%)

tune_group_pct

SQLチューニングに割り当てられたリソース(%)

health_group_pct

ヘルス・チェックに割り当てられたリソース(%)

使用上の注意

値は0から100の整数である必要があります。また、合計値は100(パーセント)になる必要があります。それ以外の場合は、例外が発生します。

33 DBMS_AW_STATS

DBMS_AW_STATSには、キューブおよびディメンションのオプティマイザ統計情報を管理するためのサブプログラムが含まれています。統計情報の生成には、大幅なパフォーマンス・コストはかかりません。

関連項目:
ビジネス・インテリジェンス・アプリケーションおよび分析アプリケーションをサポートするOLAPオプションの使用の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_AW_STATSの使用方法

- DBMS_AW_STATSサブプログラムの要約

DBMS_AW_STATSの使用方法

キューブおよびディメンションは、複数ディメンションの分析をサポートする優れたデータ・オブジェクトです。キューブおよびディメンションは、アナリティック・ワークスペースと呼ばれるコンテナに格納されています。OLAPオプションを使用すると、Oracle Databaseで複数ディメンションのオブジェクトと分析を使用できます。

オプティマイザ統計情報は、2つのキューブ・ビューを結合する問合せ、またはキューブ・ビューを表または表のビューに結合する問合せの実行計画を作成するために使用されます。また、キューブ・マテリアライズド・ビューへのクエリー・リライトにも使用されます。オプティマイザ統計情報は、これらのタイプの問合せに対してのみ必要です。

単一のキューブに対する問合せでは、オプティマイザ統計情報を使用しません。これらの問合せは、アナリティック・ワークスペース内で自動的に最適化されます。

DBMS_AW_STATSサブプログラムの要約

表33-1 DBMS_AW_STATSパッケージのサブプログラム

サブプログラム

説明

ANALYZEプロシージャ

キューブおよびキューブ・ディメンションに関するオプティマイザ統計情報を生成します。

CLEARプロシージャ

キューブおよびキューブ・ディメンションに関するオプティマイザ統計情報を消去します。

ANALYZEプロシージャ

このプロシージャは、キューブまたはキューブ・ディメンションに関するオプティマイザ統計情報を生成します。これらの統計情報を使用した実行計画の生成については、「DBMS_AW_STATSの使用方法」を参照してください。

キューブの場合、統計情報は、すべてのメジャーおよびキューブに関連付けられた計算済のメジャーに対して収集されます。統計情報には次のものが含まれています。

- データ値の平均長

- 最大データ値の長さ

- 最小値

- 個別値の数

- NULL値の数

ディメンションの場合、統計情報は、ディメンションとその属性、レベルおよび階層に対して収集されます。統計情報には次のものが含まれています。

- 値の平均長

- 最大値の長さ

- 最小値

- 最大値

構文

DBMS_AW_STATS.ANALYZE
(inname       IN VARCHAR2);

パラメータ

表33-2 ANALYZEプロシージャのパラメータ

パラメータ

説明

inname

キューブまたはディメンションの修飾名。

キューブの場合、修飾名の形式は、owner.cube_nameです。

ディメンションの場合、修飾名の形式は、owner.dimension_nameです。

使用上の注意

常に、最初にディメンションを分析してから、キューブを分析してください。

ディメンションの分析後、そのディメンションを使用するすべてのキューブを分析します。

例

このサンプル・スクリプトは、UNITS_CUBEおよびそのディメンションに関するオプティマイザ統計情報を生成します。

BEGIN
DBMS_AW_STATS.ANALYZE('time');
DBMS_AW_STATS.ANALYZE('customer');
DBMS_AW_STATS.ANALYZE('product');
DBMS_AW_STATS.ANALYZE('channel');
DBMS_AW_STATS.ANALYZE('units_cube');
END;
/

次の例では、UNITS_CUBE_VIEW、CUSTOMER_PRIMARY_VIEWおよびACCOUNTS表の列を結合するSELECT文の実行計画を作成して表示しています。

EXPLAIN PLAN FOR SELECT
cu.long_description customer,
a.city city,
a.zip_pc zip,
cu.level_name "LEVEL",
round(f.sales) sales
/* From dimension views and cube view */
FROM time_calendar_view t,
product_primary_view p,
customer_view cu,
channel_view ch,
units_cube_view f,
account a
/* Create level filters instead of GROUP BY */
WHERE t.long_description = '2004'
AND p.level_name ='TOTAL'
AND cu.customer_account_id like 'COMP%'
AND ch.level_name = 'TOTAL'
/* Join dimension views to cube view */
AND t.dim_key = f.TIME
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
AND a.account_id = cu.customer_account_id
ORDER BY zip;

SQL>  SELECT plan_table_output FROM TABLE(dbms_xplan.display());

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------
Plan hash value: 3890178023

-----------------------------------------------------------------------------------------------
| Id  | Operation                        | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                 |            |     1 |    89 |     6  (34)| 00:00:01 |
|   1 |  SORT ORDER BY                   |            |     1 |    89 |     6  (34)| 00:00:01 |
|*  2 |   HASH JOIN                      |            |     1 |    89 |     5  (20)| 00:00:01 |
|   3 |    JOINED CUBE SCAN PARTIAL OUTER|            |       |       |            |          |
|   4 |     CUBE ACCESS                  | UNITS_CUBE |       |       |            |          |
|   5 |     CUBE ACCESS                  | CHANNEL    |       |       |            |          |
|   6 |     CUBE ACCESS                  | CUSTOMER   |       |       |            |          |
|   7 |     CUBE ACCESS                  | PRODUCT    |       |       |            |          |
|*  8 |     CUBE ACCESS                  | TIME       |     1 |    55 |     2   (0)| 00:00:01 |
|*  9 |    TABLE ACCESS FULL             | ACCOUNT    |     3 |   102 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ACCOUNT_ID"=SYS_OP_ATG(VALUE(KOKBF$),39,40,2))
8 - filter(SYS_OP_ATG(VALUE(KOKBF$),16,17,2)='2004' AND
SYS_OP_ATG(VALUE(KOKBF$),39,40,2) LIKE 'COMP%' AND
SYS_OP_ATG(VALUE(KOKBF$),47,48,2)='TOTAL' AND
SYS_OP_ATG(VALUE(KOKBF$),25,26,2)='TOTAL')
9 - filter("A"."ACCOUNT_ID" LIKE 'COMP%')

Note
-----
- dynamic statistics used for this statement

30 rows selected.

CLEARプロシージャ

ANALYZEプロシージャによって生成された統計情報を消去します。

構文

DBMS_AW_STATS.CLEAR (
inname        IN  VARCHAR2;

パラメータ

表33-3 CLEARプロシージャのパラメータ

パラメータ

説明

inname

キューブまたはディメンションの修飾名。

キューブの場合、修飾名の形式は、owner.cube_nameです。

ディメンションの場合、修飾名の形式は、owner.dimension_nameです。

例

次のスクリプトは、UNITS_CUBEおよびそのディメンションの統計情報を消去します。

BEGIN
DBMS_AW_STATS.clear('units_cube');
DBMS_AW_STATS.clear('time');
DBMS_AW_STATS.clear('customer');
DBMS_AW_STATS.clear('product');
DBMS_AW_STATS.clear('channel');
END;
/

34 DBMS_CAPTURE_ADM

Oracle Streamsパッケージの1つであるDBMS_CAPTURE_ADMパッケージでは、取得プロセスの開始、停止および構成を実行するためのサブプログラムが提供されています。取得した変更のソースはREDOログで、取得した変更のリポジトリはキューです。

関連項目:
このパッケージおよび取得プロセスの詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_CAPTURE_ADMの使用方法

- 概要

- セキュリティ・モデル

- DBMS_CAPTURE_ADMサブプログラムの要約

DBMS_CAPTURE_ADMの使用方法

この項では、DBMS_CAPTURE_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージは、取得プロセスまたは同期取得を開始、停止および構成するインタフェースを提供します。このパッケージには、データベース・オブジェクトをインスタンス化する準備を行うためのサブプログラムが含まれます。

取得プロセスは、マルチテナント・コンテナ・データベース(CDB)のXStream構成で使用できます。CDBは、ユーザーが作成した0以上のプラガブル・データベース(PDB)を含むOracle Databaseです。

関連項目:
CDBおよびPDBの詳細は、『Oracle Database概要』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

DBMS_CAPTURE_ADMパッケージを使用してOracle Streams構成を管理する場合、ユーザーには、Oracle Streams管理者の権限を付与する必要があります。

DBMS_CAPTURE_ADMパッケージを使用してXStream構成を管理する場合、ユーザーには、XStream管理者の権限を付与する必要があります。

注意:

- ユーザーには、このパッケージ内のサブプログラムを使用して複数の管理タスク(取得ユーザーの設定など)を実行するための追加の権限を付与する必要があります。サブプログラムのために追加の権限が必要な場合、その権限は、サブプログラムを説明する項に記載されています。

- XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

関連項目:

- Oracle Streams管理者の構成の詳細は、『Oracle Streams概要および管理』を参照してください。

- XStream管理者の構成の詳細は、Oracle DatabaseのXStreamガイドを参照してください。

DBMS_CAPTURE_ADMサブプログラムの要約

表34-1 DBMS_CAPTURE_ADMパッケージのサブプログラム

サブプログラム

説明

ABORT_GLOBAL_INSTANTIATIONプロシージャ

PREPARE_GLOBAL_INSTANTIATION、PREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

ABORT_SCHEMA_INSTANTIATIONプロシージャ

PREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

ABORT_SYNC_INSTANTIATIONプロシージャ

PREPARE_SYNC_INSTANTIATIONプロシージャの実行効果を元に戻します。

ABORT_TABLE_INSTANTIATIONプロシージャ

PREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

ALTER_CAPTUREプロシージャ

取得プロセスを変更します。

ALTER_SYNC_CAPTUREプロシージャ

同期取得を変更します。

BUILDプロシージャ

現行のデータベースのデータ・ディクショナリをREDOログに抽出し、すべての主キー列と一意キー列についてデータベースのサプリメンタル・ロギングを自動的に指定します。

CREATE_CAPTUREプロシージャ

取得プロセスを作成します。

CREATE_SYNC_CAPTUREプロシージャ

同期取得を作成します。

DROP_CAPTUREプロシージャ

取得プロセスを削除します。

INCLUDE_EXTRA_ATTRIBUTEプロシージャ

指定した取得プロセスまたは同期取得によって取得される論理変更レコード(LCR)に追加属性を記録するかどうかを指示します。

PREPARE_GLOBAL_INSTANTIATIONプロシージャ

別のデータベースで、データベース内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

PREPARE_SCHEMA_INSTANTIATIONプロシージャ

別のデータベースで、スキーマ内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

PREPARE_SYNC_INSTANTIATIONファンクション

別のデータベースで、1つ以上の表をインスタンス化するために必要な同期化を行い、準備SCNを戻します。

PREPARE_TABLE_INSTANTIATIONプロシージャ

別のデータベースで、表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。

SET_PARAMETERプロシージャ

取得プロセス・パラメータを指定した値に設定します。

START_CAPTUREプロシージャ

取得プロセスを開始します。取得プロセスは、REDOログを調査し、取り出したREDO情報を関連キューにエンキューします。

STOP_CAPTUREプロシージャ

取得プロセスを停止してREDOログの調査を中断します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

ABORT_GLOBAL_INSTANTIATIONプロシージャ

このプロシージャは、PREPARE_GLOBAL_INSTANTIATION、PREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

具体的には、このプロシージャは次の操作を実行します。

- データベース、スキーマおよび表のインスタンス化に関連するデータ・ディクショナリ情報を削除します。

- PREPARE_GLOBAL_INSTANTIATION、PREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_TABLE_INSTANTIATIONプロシージャで有効にしたサプリメンタル・ロギングを削除します。

構文

DBMS_CAPTURE_ADM.ABORT_GLOBAL_INSTANTIATION(
container    IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表34-2 ABORT_SCHEMA_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

container

CURRENT、ALLまたはpdb_nameのいずれか。

CURRENTを指定すると、現在のコンテナのサプリメンタル・ロギングが削除されます。

ALLを指定すると、現在のCDBのすべてのコンテナでサプリメンタル・ロギングが削除されます。

pdb_nameを指定すると、指定したPDBのサプリメンタル・ロギングが削除されます。

ALLとpdb_nameは、プロシージャをルートから起動する場合にのみ有効です。

ABORT_SCHEMA_INSTANTIATIONプロシージャ

このプロシージャは、PREPARE_SCHEMA_INSTANTIATIONプロシージャの実行効果を元に戻します。また、指定したスキーマ内にある表のPREPARE_TABLE_INSTANTIATIONプロシージャの実行結果も元に戻します。

具体的には、このプロシージャは次の操作を実行します。

- スキーマのインスタンス化およびスキーマ内の表のインスタンス化に関連するデータ・ディクショナリ情報を削除します。

- PREPARE_SCHEMA_INSTANTIATIONプロシージャで有効にしたサプリメンタル・ロギングを削除します。

- 指定したスキーマ内にある表のPREPARE_TABLE_INSTANTIATIONプロシージャで有効にしたサプリメンタル・ロギングを削除します。

構文

DBMS_CAPTURE_ADM.ABORT_SCHEMA_INSTANTIATION(
schema_name  IN  VARCHAR2,
container    IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表34-3 ABORT_SCHEMA_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

schema_name

準備中のインスタンス化の結果を元に戻すスキーマの名前。

container

CURRENT、ALLまたはpdb_nameのいずれか。

CURRENTを指定すると、現在のコンテナのサプリメンタル・ロギングが削除されます。

ALLを指定すると、現在のCDBのすべてのコンテナでサプリメンタル・ロギングが削除されます。

pdb_nameを指定すると、指定したPDBのサプリメンタル・ロギングが削除されます。

ALLとpdb_nameは、プロシージャをルートから起動する場合にのみ有効です。

ABORT_SYNC_INSTANTIATIONプロシージャ

このプロシージャは、PREPARE_SYNC_INSTANTIATIONプロシージャの実行効果を元に戻します。具体的には、表のインスタンス化に関連するデータ・ディクショナリ情報を削除します。

このプロシージャはオーバーロードされています。table_namesパラメータは、一方のバージョンではVARCHAR2データ・タイプであり、もう一方のバージョンではDBMS_UTILITY.UNCL_ARRAYデータ・タイプです。

構文

DBMS_CAPTURE_ADM.ABORT_SYNC_INSTANTIATION(
table_names IN  VARCHAR2);

DBMS_CAPTURE_ADM.ABORT_SYNC_INSTANTIATION(
table_names IN  DBMS_UTILITY.UNCL_ARRAY);

パラメータ

表34-4 ABORT_SYNC_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

table_names

table_namesパラメータがVARCHAR2データ・タイプの場合は、準備中のインスタンス化の結果を元に戻す表のカンマ区切りリスト。エントリ間に空白を挿入しないでください。

table_namesパラメータがDBMS_UTILITY.UNCL_ARRAYデータ・タイプの場合は、準備中のインスタンス化の結果を元に戻す表の名前が含まれているPL/SQL連想配列を指定します。最初の表名は位置1、2番目は位置2、以降同様です。表の最後をNULLにする必要はありません。

いずれのバージョンのプロシージャも、それぞれの表の名前を[schema_name.]table_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

ABORT_TABLE_INSTANTIATIONプロシージャ

このプロシージャは、PREPARE_TABLE_INSTANTIATIONプロシージャの実行効果を元に戻します。

具体的には、このプロシージャは次の操作を実行します。

- 表のインスタンス化に関連するデータ・ディクショナリ情報を削除します。

- PREPARE_TABLE_INSTANTIATIONプロシージャで有効にしたサプリメンタル・ロギングを削除します。

構文

DBMS_CAPTURE_ADM.ABORT_TABLE_INSTANTIATION(
table_name  IN  VARCHAR2);
container   IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表34-5 ABORT_TABLE_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した、準備中のインスタンス化の効果を元に戻す表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

container

CURRENT、ALLまたはpdb_nameのいずれか。

CURRENTを指定すると、現在のコンテナのサプリメンタル・ロギングが削除されます。

ALLを指定すると、現在のCDBのすべてのコンテナでサプリメンタル・ロギングが削除されます。

pdb_nameを指定すると、指定したPDBのサプリメンタル・ロギングが削除されます。

ALLとpdb_nameは、プロシージャをルートから起動する場合にのみ有効です。

ALTER_CAPTUREプロシージャ

このプロシージャは、取得プロセスを変更します。

関連項目:
取得プロセスの変更の詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_CAPTURE_ADM.ALTER_CAPTURE(
capture_name               IN  VARCHAR2,
rule_set_name              IN  VARCHAR2   DEFAULT NULL,
remove_rule_set            IN  BOOLEAN    DEFAULT FALSE,
start_scn                  IN  NUMBER     DEFAULT NULL,
use_database_link          IN  BOOLEAN    DEFAULT NULL,
first_scn                  IN  NUMBER     DEFAULT NULL,
negative_rule_set_name     IN  VARCHAR2   DEFAULT NULL,
remove_negative_rule_set   IN  BOOLEAN    DEFAULT FALSE,
capture_user               IN  VARCHAR2   DEFAULT NULL,
checkpoint_retention_time  IN  NUMBER     DEFAULT NULL,
start_time                 IN  TIMESTAMP  DEFAULT NULL);

パラメータ

表34-6 ALTER_CAPTUREプロシージャのパラメータ

パラメータ

説明

capture_name

変更する取得プロセスの名前。既存の取得プロセス名を指定する必要があります。所有者を指定しないでください。

rule_set_name

取得プロセスに対するポジティブ・ルール・セットの名前。ポジティブ・ルール・セットには、変更の取得を取得プロセスに指示するためのルールが含まれています。

取得プロセスのポジティブ・ルール・セットを変更するには、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定します。たとえば、hrスキーマに含まれるjob_capture_rulesという名前のポジティブ・ルール・セットを指定するには、hr.job_capture_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_rule_setパラメータをFALSEに設定すると、既存のすべてのポジティブ・ルール・セットが保持されます。NULLを指定し、remove_rule_setパラメータをTRUEに設定すると、既存のすべてのポジティブ・ルール・セットが削除されます。

関連項目: 取得プロセスによって取得可能な変更の詳細は、『Oracle Streams概要および管理』を参照してください。

remove_rule_set

TRUEに設定すると、指定した取得プロセスに対するポジティブ・ルール・セットが削除されます。取得プロセスのネガティブ・ルール・セットが存在しないときに、取得プロセスに対するポジティブ・ルール・セットを削除すると、取得プロセスは、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得しますが、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのネガティブ・ルール・セットが存在するときに、取得プロセスに対するポジティブ・ルール・セットを削除すると、取得プロセスは、ネガティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

FALSEに設定すると、指定した取得プロセスに対するポジティブ・ルール・セットが保持されます。

rule_set_nameパラメータがNULL以外の場合、このパラメータがFALSEに設定されていることを確認してください。

start_scn

データベースの有効なSCNのうち、取得プロセスによる変更の取得の開始時に使用するSCN(開始時SCN)。SCN値は、取得プロセスの最初のSCN値以上にする必要があります。また、開始時SCNを再設定する前に、取得プロセスを停止する必要があります。

無効なSCNが指定された場合または取得プロセスが有効である場合に、エラーが戻されます。

use_database_link

TRUEに設定すると、取得プロセスに関する管理タスクを実行するために、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されます。データベース・リンクを現在使用していない取得プロセスでデータベース・リンクの使用を開始する場合は、このパラメータをTRUEに設定してください。その場合は、ソース・データベースのグローバル名と同じ名前を持つデータベース・リンクが、ダウンストリーム・データベースに存在する必要があります。

FALSEに設定すると、取得プロセスがソース・データベース上で実行されるか、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されません。データベース・リンクを現在使用している取得プロセスでデータベース・リンクの使用を停止する場合は、このパラメータをFALSEに設定してください。その場合は、ソース・データベースのデータベース・オブジェクトに関連する取得プロセス・ルールの追加または変更を行うときに、それらのデータベース・オブジェクトを手動でインスタンス化する準備を行う必要があります。

NULLに設定すると、現行のパラメータ値は変更されず、取得プロセスの動作も変わりません。

first_scn

取得プロセスで変更を取得できるREDOログの最小SCN。取得プロセスに対して新たに最小(最初の)SCNを指定する場合、その最小SCNは次の条件を満たす必要があります。

- 取得プロセスの現在の先頭SCNより大きい値である必要があります。

- 取得プロセスの現在の適用済SCN以下の値である必要があります。ただし、取得プロセスに現在適用されているSCNがゼロである場合は、この条件を満たす必要はありません。

- 取得プロセスの必須チェックポイントSCN以下の値である必要があります。

指定した最小SCNがこれら3つの条件を満たさない場合は、エラーが戻されます。これらのすべての条件を満たすSCN値を決定する方法は、「使用上の注意」を参照してください。

最小(最初の)SCNを変更すると、以前のSCNからの取得プロセス再開に必要な情報が取得プロセスのLogMinerデータ・ディクショナリからパージされます。LogMinerデータ・ディクショナリの詳細は、「BUILDプロシージャ」を参照してください。

指定された最小SCNが取得プロセスに対する現行の開始時SCNより大きい場合は、現行の開始時SCNが自動的に新しい最小SCNに変更されます。

negative_rule_set_name

取得プロセスに対するネガティブ・ルール・セットの名前。ネガティブ・ルール・セットには、変更の破棄を取得プロセスに指示するためのルールが含まれています。

取得プロセスのネガティブ・ルール・セットを変更するには、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定します。たとえば、hrスキーマに含まれるneg_capture_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_capture_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_negative_rule_setパラメータをFALSEに設定すると、既存のすべてのネガティブ・ルール・セットが保持されます。NULLを指定し、remove_negative_rule_setパラメータをTRUEに設定すると、既存のすべてのネガティブ・ルール・セットが削除されます。

1つの取得プロセスに対してポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定した場合は、常にネガティブ・ルール・セットが最初に評価されます。

remove_negative_rule_set

TRUEに設定すると、指定した取得プロセスに対するネガティブ・ルール・セットが削除されます。取得プロセスのポジティブ・ルール・セットが存在しないときに、取得プロセスに対するネガティブ・ルール・セットを削除すると、取得プロセスは、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得しますが、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのポジティブ・ルール・セットが存在するときに、取得プロセスに対するネガティブ・ルール・セットを削除すると、取得プロセスは、ポジティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

FALSEに設定すると、指定した取得プロセスに対するネガティブ・ルール・セットは保持されます。

negative_rule_set_nameパラメータがNULL以外の場合、このパラメータがFALSEに設定されていることを確認してください。

capture_user

ユーザーを指定しますが、このユーザーのセキュリティ・ドメイン内で、取得プロセスは、取得プロセスのルール・セットを満たす変更を取得し、取得プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行します。NULLの場合、取得ユーザーは変更されません。

取得ユーザーを変更するには、ALTER_CAPTUREプロシージャをコールするユーザーにDBAロールを付与する必要があります。capture_userをSYSに設定できるのは、SYSユーザーに限られています。

取得ユーザーを変更すると、取得プロセスで使用されるキューに対するエンキュー権限が新しい取得ユーザーに付与され、その取得ユーザーがキューの保護キュー・ユーザーとして構成されます。なお、取得ユーザーには次の権限が必要です。

- 取得プロセスで使用されるルール・セットのEXECUTE権限

- ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

これらの権限は取得ユーザーに直接付与するか、またはロールによって付与できます。

また、取得ユーザーには、取得プロセスによって実行されるルールベース変換で起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限が付与されている必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

このパラメータの値を変更すると、取得プロセスは自動的に停止し、再開します。

注意: 取得プロセスの取得ユーザーがDROP USER . . . CASCADEを使用して削除されると、取得プロセスも自動的に削除されます。

checkpoint_retention_time

取得プロセスで自動的にパージが行われるまでチェックポイントが保存される日数、またはチェックポイントを自動的にパージしない場合は、DBMS_CAPTURE_ADM.INFINITEに設定します。NULLに設定すると、チェックポイントの保存期間は変更されません。

日数を指定すると、チェックポイントが取得されてから指定した日数後に、取得プロセスによってチェックポイントがパージされます。小数値を使用して時間単位で指定することもできます。たとえば、6時間は、.25のように指定します。

チェックポイントがパージされると、そのチェックポイントに対応するアーカイブREDOログ・ファイルのLogMinerデータ・ディクショナリ情報もパージされ、取得プロセスのfirst_scnは、次のアーカイブREDOログ・ファイルの最初の変更に対応するSCN値に再設定されます。

関連項目: チェックポイントの保存期間の詳細は、『Oracle Streams概要および管理』を参照してください。

start_time

取得プロセスによる変更の取得の開始時点となる有効な時間。開始時間を再設定する前に、取得プロセスを停止する必要があります。

無効な時間が指定された場合または取得プロセスが有効である場合に、エラーが戻されます。

start_scnパラメータとstart_timeパラメータは、両方同時には指定できません。

使用上の注意

取得プロセスの最初の(最小)SCNを変更する場合は、first_scnパラメータで説明した条件を満たすSCN値を指定する必要があります。

例

データベース内の個々の取得プロセスについて、最初のSCN、適用されているSCNおよび必要とされるチェックポイントSCNの現行の値を確認するには、次のような問合せを使用します。

SELECT CAPTURE_NAME, FIRST_SCN, APPLIED_SCN, REQUIRED_CHECKPOINT_SCN
FROM DBA_CAPTURE;

ALTER_SYNC_CAPTUREプロシージャ

このプロシージャは、同期取得を変更します。

関連項目:
取得プロセスの変更の詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_CAPTURE_ADM.ALTER_SYNC_CAPTURE(
capture_name   IN  VARCHAR2,
rule_set_name  IN  VARCHAR2  DEFAULT NULL,
capture_user   IN  VARCHAR2  DEFAULT NULL);

パラメータ

表34-7 ALTER_SYNC_CAPTUREプロシージャのパラメータ

パラメータ

説明

capture_name

変更する同期取得の名前。既存の同期取得名を指定する必要があります。所有者を指定しないでください。

rule_set_name

同期取得に対するポジティブ・ルール・セットの名前。ポジティブ・ルール・セットには、変更の取得を同期取得に指示するためのルールが含まれています。

同期取得のルール・セットを変更するには、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定します。たとえば、strmadminスキーマに含まれるsync_cap_rulesという名前のポジティブ・ルール・セットを指定するには、strmadmin.sync_cap_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。DBMS_STREAMS_ADMパッケージを使用して作成されたルール・セットを指定する必要があります。

NULLの場合、ルール・セットは変更されません。

関連項目: 同期取得によって取得可能な変更の詳細は、『Oracle Streams概要および管理』を参照してください。

capture_user

ユーザーを指定しますが、このユーザーのセキュリティ・ドメイン内で、同期取得は、同期取得のルール・セットを満たす変更を取得し、同期取得ルールに対して構成されているカスタム・ルールベースの変換を実行します。NULLの場合、取得ユーザーは変更されません。

取得ユーザーを変更するには、ALTER_SYNC_CAPTUREプロシージャをコールするユーザーにDBAロールを付与する必要があります。capture_userをSYSに設定できるのは、SYSユーザーに限られています。

取得ユーザーを変更すると、同期取得で使用されるキューに対するエンキュー権限が新しい取得ユーザーに付与され、その取得ユーザーがキューの保護キュー・ユーザーとして構成されます。なお、取得ユーザーには次の権限が必要です。

- 同期取得で使用されるルール・セットのEXECUTE権限

- ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

これらの権限は取得ユーザーに直接付与するか、またはロールによって付与できます。

また、取得ユーザーには、同期取得によって実行されるルールベース変換で起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限が付与されている必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

使用上の注意

同期取得の取得ユーザーがDROP USER . . . CASCADEを使用して削除されると、同期取得も自動的に削除されます。

BUILDプロシージャ

このプロシージャは、現行のデータベースのデータ・ディクショナリをREDOログに抽出し、次のSQL文を実行して、データベースのサプリメンタル・ロギングを自動的に指定します。

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンではOUTパラメータfirst_scnを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_CAPTURE_ADM.BUILD(
first_scn OUT NUMBER);

DBMS_CAPTURE_ADM.BUILD;

パラメータ

表34-8 BUILDプロシージャのパラメータ

パラメータ

説明

first_scn

REDOログに抽出されるデータ・ディクショナリに対応する最初の(最小)SCN値を指定します。この値は、取得プロセスの最初のSCNとして指定できます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- このプロシージャは、ソース・データベースで繰り返し実行できます。

- ソース・データベースで発生する変更を取得プロセスによって取得する場合は、このプロシージャをソース・データベースで少なくとも1回は実行する必要があります。ローカル・ソース・データベースまたはダウンストリーム・データベースで取得プロセスを起動すると、REDOログに抽出された情報に基づいて、LogMinerデータ・ディクショナリが作成されます。

- LogMinerデータ・ディクショナリは、取得する変更の詳細を判別するために取得プロセスで使用される個別のデータ・ディクショナリです。ソース・データベースの1次データ・ディクショナリが、取得プロセスでスキャンされているREDOデータと同期化されない場合があるため、LogMinerデータ・ディクショナリが必要となります。

- このプロシージャを実行した後、DICTIONARY_BEGIN列をYESに指定して、V$ARCHIVED_LOG動的パフォーマンス・ビューのFIRST_CHANGE#列を問い合せると、取得プロセスに対する最初のSCNとして指定できるデータベースの最小SCNの値がわかります。取得プロセスに対する最初のSCNは、REDOログ内にある最小のSCNであり、取得プロセスでは、この最小SCNから変更の取得を開始できます。DBMS_CAPTURE_ADMパッケージ内のCREATE_CAPTUREプロシージャまたはALTER_CAPTUREプロシージャの実行時に、取得プロセスに対する最初のSCNを指定できます。

- CDBでは、BUILDプロシージャはルートから実行する必要があります。

CREATE_CAPTUREプロシージャ

このプロシージャは、取得プロセスを作成します。

関連項目:

- 取得プロセスの作成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

- ルールとルール・セットの詳細は、第139章「DBMS_RULE_ADM」を参照してください。

構文

DBMS_CAPTURE_ADM.CREATE_CAPTURE(
queue_name                 IN  VARCHAR2,
capture_name               IN  VARCHAR2,
rule_set_name              IN  VARCHAR2   DEFAULT NULL,
start_scn                  IN  NUMBER     DEFAULT NULL,
source_database            IN  VARCHAR2   DEFAULT NULL,
use_database_link          IN  BOOLEAN    DEFAULT FALSE,
first_scn                  IN  NUMBER     DEFAULT NULL,
logfile_assignment         IN  VARCHAR2   DEFAULT 'implicit',
negative_rule_set_name     IN  VARCHAR2   DEFAULT NULL,
capture_user               IN  VARCHAR2   DEFAULT NULL,
checkpoint_retention_time  IN  NUMBER     DEFAULT 60,
start_time                 IN  TIMESTAMP  DEFAULT NULL,
source_root_name           IN  VARCHAR2   DEFAULT NULL,
capture_class              IN  VARCHAR2   DEFAULT 'Streams');

パラメータ

表34-9 CREATE_CAPTUREプロシージャのパラメータ

パラメータ

説明

queue_name

取得プロセスが変更をエンキューするキューの名前。既存のキューを[schema_name.]queue_nameの形式で指定する必要があります。たとえば、hrスキーマ内のstreams_queueという名前のキューを指定するには、hr.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

注意: queue_nameの設定は、取得プロセスの作成後には変更できません。

capture_name

作成する取得プロセスの名前。NULL指定は許可されていません。所有者を指定しないでください。

注意: capture_nameの設定は、取得プロセスの作成後には変更できません。

rule_set_name

取得プロセスに対するポジティブ・ルール・セットの名前。ポジティブ・ルール・セットには、変更の取得を取得プロセスに指示するためのルールが含まれています。

取得プロセスに対してポジティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるjob_capture_rulesという名前のポジティブ・ルール・セットを指定するには、hr.job_capture_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定すると、取得プロセスに対するネガティブ・ルール・セットが指定されない場合、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得します。ただし、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのネガティブ・ルール・セットが存在するときにNULLを指定すると、取得プロセスは、ネガティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

関連項目: 取得プロセスによって取得可能な変更の詳細は、『Oracle Streams概要および管理』を参照してください。

start_scn

データベースの有効なSCNのうち、取得プロセスによる変更の取得の開始時に使用するSCN(開始時SCN)。

無効なSCNが指定された場合はエラーが戻されます。

start_scnパラメータとstart_timeパラメータは、両方同時には指定できません。

関連項目: start_scnパラメータの詳細は、「使用上の注意」を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、取得対象の変更が発生したデータベースです。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.EXAMPLE.COMの場合にDBS1を指定すると、自動的にDBS1.EXAMPLE.COMが指定されます。

このパラメータにNULL、または現行のデータベースのグローバル名と同じ名前を指定した場合は、ローカル取得プロセスとみなされ、use_database_linkとfirst_scnにはデフォルト値のみを指定できます。

use_database_link

TRUEに設定すると、取得プロセスに関する管理タスクを実行するために、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されます。ソース・データベースのグローバル名と同じ名前を持つデータベース・リンクが、ダウンストリーム・データベースに存在する必要があります。

取得プロセスでは、このデータベース・リンクを使用してソース・データベースでデータベース・オブジェクトをインスタンス化するための準備を行い、必要に応じてソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャを実行します。

ダウンストリーム取得プロセスの作成時に、first_scnパラメータがNULLに設定されている場合は、use_database_linkパラメータをTRUEに設定する必要があります。そうでない場合は、エラーが戻されます。

FALSEに設定すると、取得プロセスがソース・データベース上で実行されるか、ダウンストリーム・データベース上の取得プロセスにおいて、ソース・データベースに対するデータベース・リンクが使用されません。その場合は、次の管理タスクを手動で実行する必要があります。

- 取得プロセスの作成時に、ソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャを実行し、ソース・データベースのデータ・ディクショナリをREDOログに抽出する。

- 取得プロセスの作成時に最初のSCNが指定されていない場合に、ダウンストリームの取得プロセスで使用する最初のSCNを決定する。(取得プロセスの作成と保守には、最初のSCNが必要です。)

- ソース・データベースでデータベース・オブジェクトをインスタンス化する準備を行う。

first_scn

取得プロセスで変更を取得できるREDOログの最小SCN。このパラメータにNULL以外の値を指定できるのは、ソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャが少なくとも1回は実行された場合に限られます。

ソース・データベースでDBMS_CAPTURE_ADM.BUILDプロシージャが実行されたかどうかを調べるには、DICTIONARY_BEGIN列の値がYESであるという条件式を指定して、V$ARCHIVED_LOG動的パフォーマンス・ビューのFIRST_CHANGE#列の値を問い合せます。この問合せから返されるSCN値を含むREDOログが利用可能な状態である場合は、そのSCN値をfirst_scnパラメータの値として使用できます。

関連項目: first_scnパラメータの詳細は、「使用上の注意」を参照してください。

logfile_assignment

デフォルト値であるimplicitを指定すると、REDO転送サービスによって追加されたREDOログ・ファイル、またはソース・データベースからダウンストリーム・データベースに手動で追加されたREDOログ・ファイルがダウンストリーム・データベース上の取得プロセスによって漏れなくスキャンされます。

explicitを指定すると、FOR logminer_session_name句で取得プロセスの名前を指定した場合にかぎり、ダウンストリーム・データベース上の取得プロセスによってREDOログ・ファイルがスキャンされます。explicitを指定した場合、ダウンストリーム・データベースに手動でREDOログ・ファイルを追加する必要があり、REDO転送サービスでは作成中の取得プロセスにREDOログ・ファイルを追加できません。

ローカル取得プロセス用のこのパラメータに対してexplicitを指定した場合は、ローカル取得プロセスでオンラインREDOログを使用して変更を検索できません。その場合は、アーカイブREDOログを使用する必要があります。

関連項目: REDOログ・ファイルを手動で追加する方法は、「使用上の注意」を参照してください。

negative_rule_set_name

取得プロセスに対するネガティブ・ルール・セットの名前。ネガティブ・ルール・セットには、変更の破棄を取得プロセスに指示するためのルールが含まれています。

取得プロセスに対してネガティブ・ルール・セットを使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるneg_capture_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_capture_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLを指定すると、取得プロセスに対するポジティブ・ルール・セットが指定されない場合、データベース内のすべてのオブジェクトに対してサポートされているすべての変更を取得します。ただし、SYSスキーマとSYSTEMスキーマ内のデータベース・オブジェクトは除きます。

取得プロセスのポジティブ・ルール・セットが存在するときにNULLを指定すると、取得プロセスは、ポジティブ・ルール・セットによって破棄されない、サポートされているすべての変更を取得します。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

1つの取得プロセスに対してポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定した場合は、常にネガティブ・ルール・セットが最初に評価されます。

capture_user

ユーザーを指定しますが、このユーザーのセキュリティ・ドメイン内で、取得プロセスは、取得プロセスのルール・セットを満たす変更を取得し、取得プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行します。NULLの場合は、CREATE_CAPTUREプロシージャの実行ユーザーが使用されます。

注意: 取得プロセスの取得ユーザーがDROP USER . . . CASCADEを使用して削除されると、取得プロセスも自動的に削除されます。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

checkpoint_retention_time

取得プロセスで自動的にパージが行われるまでチェックポイントが保存される日数を指定します。または、チェックポイントを自動的にパージしない場合は、DBMS_CAPTURE_ADM.INFINITEを指定します。

日数を指定すると、チェックポイントが取得されてから指定した日数後に、取得プロセスによってチェックポイントがパージされます。小数値を使用して時間単位で指定することもできます。たとえば、6時間は、.25のように指定します。

チェックポイントがパージされると、そのチェックポイントに対応するアーカイブREDOログ・ファイルのLogMinerデータ・ディクショナリ情報もパージされ、取得プロセスのfirst_scnは、次のアーカイブREDOログ・ファイルの最初の変更に対応するSCN値に再設定されます。

関連項目: チェックポイントの保存期間の詳細は、『Oracle Streams概要および管理』を参照してください。

start_time

取得プロセスによる変更の取得の開始時点となる有効な時間。

無効な時間が指定された場合はエラーが戻されます。

start_scnパラメータとstart_timeパラメータは、両方同時には指定できません。

関連項目: start_timeパラメータの設定の詳細は、「使用上の注意」を参照してください。

source_root_name

ソースCDBのルートのグローバル名。

NULLを指定する場合、または指定した名前が現在のルートのグローバル名と同じ場合、ローカルでの取得が想定されます。

NULLでない場合は、リモートでの取得が想定されます。生成されたルールには、ソースCDBのルートに基づいてLCRをフィルタリングする条件が追加されます。

注意: ダウンストリーム取得構成では、取得データベースがCDBでソース・データベースがCDB以外の場合は、source_root_nameとsource_databaseに同じ値を指定する必要があります。ローカルでの取得では、CDB、CDB以外を問わず、source_root_nameパラメータを指定する必要はありません。

capture_class

有効な値は'Streams'、'XStream'または'GoldenGate'です。

NULLを指定すると、'Streams'であるとみなされます。

注意: 取得データベースがCDBの場合は、capture_classパラメータを'Streams'またはNULLに設定できません。

使用上の注意

このプロシージャを実行する場合は、次の使用上の注意を考慮する必要があります。

- DBAロール要件

- 取得ユーザー要件

- 最小SCNと開始時SCNの設定

- ログ・ファイルの明示的な割当て

DBAロール要件

このプロシージャを起動するユーザーがcapture_userパラメータに指定されたユーザーと異なる場合、起動するユーザーにDBAロールが付与されている必要があります。このプロシージャを起動するユーザーがcapture_userパラメータに指定されたユーザーと同じである場合、起動するユーザーにDBAロールは必要ありません。capture_userをSYSに設定できるのは、SYSユーザーに限られています。

取得ユーザー要件

capture_userパラメータでは、取得プロセスのルール・セットを満たす変更を取得するユーザーを指定します。このユーザーには、変更を取得するためのいくつかの権限が必要です。このプロシージャを実行すると、取得プロセスで使用されるキューに対するエンキュー権限が取得ユーザーに付与され、その取得ユーザーがキューの保護キュー・ユーザーとして構成されます。

なお、取得ユーザーには次の権限が必要です。

- 取得プロセスで使用されるルール・セットのEXECUTE権限

- ポジティブ・ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

これらの権限は取得ユーザーに直接付与するか、またはロールによって付与できます。

また、取得ユーザーには、取得プロセスによって実行されるルールベース変換で起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限が付与されている必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

注意:

- 取得ユーザーは、データベース・オブジェクトに対する権限を持っていなくても、データベース・オブジェクトに対する変更を取得できます。取得プロセスでは、データベース・オブジェクトに対する変更をルールベースの変換ファンクションに渡すことができます。したがって、取得プロセスを構成するときは、セキュリティ問題に留意する必要があります。

- データベースで最初の取得プロセスを作成するときは、作成時にデータ・ディクショナリが複製されるため、時間がかかる場合があります。

最小SCNと開始時SCNの設定

このプロシージャを使用して取得プロセスを作成する場合、取得プロセスの最小SCNおよび開始時SCNを指定できます。取得プロセスは、開始時SCNが最小SCNまたはチェックポイントSCNより大きい場合でも、最小SCNまたは既存の取得プロセスのチェックポイント以降のREDOデータをスキャンします。この場合、取得プロセスは、開始時SCNより前のREDOデータの変更を取得しません。取得プロセスの作成時に、最小SCNと開始時SCNの差をできるかぎり小さくして、取得プロセスでスキャンされるREDOの量を最小限に抑えることをお薦めします。

注意:
start_scnパラメータのかわりにstart_timeパラメータを指定する場合、start_timeは特定のSCNに一致します。その場合、この項の情報は、指定したstart_timeに一致するSCNにも適用されます。

取得プロセスの動作は、これらのSCNの設定値、および取得プロセスがローカルであるかダウンストリームであるかによって異なる場合があります。

次の表に、SCNの設定値に対する取得プロセスの動作を示します。

最小SCNの設定

開始時SCNの設定

取得プロセスのタイプ

説明

NULL以外

NULL

ローカルまたはダウンストリーム

新しい取得プロセスは、first_scnパラメータに指定した値から開始される新しいLogMinerセッションとともにローカル・データベースに作成されます。開始SCNは、指定した先頭SCNに自動的に設定されます。新しい取得プロセスでは、このSCNより以前に行われた変更は取得されません。
DBMS_CAPTURE_ADMパッケージのBUILDプロシージャは、自動的には実行されません。このプロシージャが事前にソース・データベースで1回以上実行されており、指定した先頭SCNが、REDOログで使用可能な以前のビルドのSCN値に対応している必要があります。新しい取得プロセスが初めて起動されると、REDOログのデータ・ディクショナリ情報を使用して、新しいLogMinerデータ・ディクショナリが作成されます。ソース・データベースでBUILDプロシージャが1回も実行されていない場合は、取得プロセスを開始するとエラーが発生します。

これらのSCN設定で作成したローカル取得プロセスおよびダウンストリーム取得プロセスでは、取得プロセスの動作は同じになります。ただし、ローカル取得プロセスはソース・データベースで作成され、ダウンストリーム取得プロセスはダウンストリーム・データベースで作成されます。

NULL以外

NULL以外

ローカルまたはダウンストリーム

start_scnパラメータに指定した値がfirst_scnパラメータに指定した値以上である場合、指定した最小SCNから開始される新しいLogMinerセッションとともに、新しい取得プロセスがローカル・データベースで作成されます。この場合、新しい取得プロセスでは、指定した開始時SCNより前に行われた変更は取得されません。start_scnパラメータに指定した値がfirst_scnパラメータに指定した値より小さい場合、エラーが発生します。
DBMS_CAPTURE_ADMパッケージのBUILDプロシージャは、自動的には実行されません。このプロシージャが事前にソース・データベースで1回以上実行されており、指定したfirst_SCNが、現在でもREDOログで使用可能な以前のビルドのSCN値に対応している必要があります。新しい取得プロセスが初めて起動されると、REDOログのデータ・ディクショナリ情報を使用して、新しいLogMinerデータ・ディクショナリが作成されます。ソース・データベースでBUILDプロシージャが1回も実行されていない場合は、エラーが発生します。

これらのSCN設定で作成したローカル取得プロセスおよびダウンストリーム取得プロセスでは、取得プロセスの動作は同じになります。ただし、ローカル取得プロセスはソース・データベースで作成され、ダウンストリーム取得プロセスはダウンストリーム・データベースで作成されます。

NULL

NULL以外

ローカル

次のいずれかの条件に該当した場合、新しい取得プロセスによって新しいLogMinerデータ・ディクショナリが作成されます。

- ローカル・ソース・データベースに既存の取得プロセスが存在せず、start_scnパラメータに指定した値がデータベースの現行のSCN以上である場合。

- 既存の取得プロセスが存在するが、いずれの取得プロセスもチェックポイントを取得しておらず、start_scnパラメータに指定した値がデータベースの現行のSCN以上である場合。

いずれの場合も、取得プロセスの作成時にDBMS_CAPTURE_ADMパッケージのBUILDプロシージャが実行されます。新しい取得プロセスを初めて起動すると、REDOログのソース・データ・ディクショナリの生成済ビルドを使用して、LogMinerデータ・ディクショナリが作成されます。この場合、先頭SCNは、データ・ディクショナリ・ビルドのSCNに対応しています。BUILDプロシージャは、処理中のトランザクションが存在する場合、それらのトランザクションが完了のためにコミットされるまで待機します。処理中のトランザクションとは、取得プロセスの作成時またはデータ・ディクショナリのビルド時にアクティブなトランザクションです。

ただし、ローカル・ソース・データベースに、チェックポイントを取得した既存のローカル取得プロセスが1つ以上存在する場合、新しい取得プロセスは、既存のLogMinerデータ・ディクショナリをこの既存の取得プロセスと共有します。この場合、指定した開始時SCN以下の最小SCNを持つ取得プロセスが、1回以上正常に実行されている必要があります。また、処理中のトランザクションが存在する場合は、それらのトランザクションがコミットされた後に取得プロセスが作成されます。

ローカル・ソース・データベースに既存の取得プロセスが存在せず(チェックポイントを取得済の既存の取得プロセスが存在しない)、指定された開始時SCNがデータベースの現行のSCNより小さい場合は、エラーが発生します。

NULL

NULL以外

ダウンストリーム

CREATE_CAPTUREプロシージャによるダウンストリーム取得プロセスの作成時に、first_scnパラメータがNULLに設定されている場合は、use_database_linkパラメータをTRUEに設定する必要があります。そうでない場合は、エラーが発生します。データベース・リンクを使用して、ソース・データベースの現行のSCNを取得します。
次のいずれかの条件に該当した場合、新しい取得プロセスによって新しいLogMinerデータ・ディクショナリが作成されます。

- ソース・データベースに対する変更を取得する既存の取得プロセスがダウンストリーム・データベースに存在せず、start_scnパラメータに指定した値がソース・データベースの現行のSCN以上である場合。

- ソース・データベースに対する変更を取得する既存の取得プロセスがダウンストリーム・データベースに存在するが、いずれの取得プロセスもチェックポイントを取得しておらず、start_scnパラメータに指定した値がソース・データベースの現行のSCN以上である場合。

いずれの場合も、取得プロセスの作成時にDBMS_CAPTURE_ADMパッケージのBUILDプロシージャが実行されます。新しい取得プロセスでは、この取得プロセスの最初の実行時に、ダウンストリーム・データベースにコピーされたREDOログ・ファイルに作成されたソース・データ・ディクショナリを使用して、LogMinerデータ・ディクショナリが作成されます。この場合、新しい取得プロセスの最小SCNは、作成されたデータ・ディクショナリのSCNに対応しています。BUILDプロシージャは、処理中のトランザクションが存在する場合、それらのトランザクションが完了のためにコミットされるまで待機します。

ただし、ダウンストリーム・データベースで、1つ以上の既存の取得プロセスがチェックポイントを取得済で、ソース・データベースに対する変更を取得する場合、新しい取得プロセスは、既存のLogMinerデータ・ディクショナリを1つ以上の既存の取得プロセスと共有します。この場合、指定した開始時SCN以下の最小SCNを持つこれらの既存の取得プロセスのいずれかが、1回以上正常に実行されている必要があります。また、処理中のトランザクションが存在する場合は、それらのトランザクションがコミットされた後に取得プロセスが作成されます。

ソース・データベースに対する変更を取得する既存の取得プロセスがダウンストリーム・データベースに存在せず(チェックポイントを取得済の既存の取得プロセスが存在しない)、start_scnパラメータに指定した値がソース・データベースの現行のSCNより小さい場合は、エラーが発生します。

NULL

NULL

ローカルまたはダウンストリーム

動作は、first_scnパラメータをNULLに設定し、start_scnパラメータをソース・データベースの現行のSCNに設定した場合と同じになります。

注意:
DBMS_STREAMS_ADMパッケージを使用して取得プロセスを作成する場合は、取得プロセスの作成時に最小SCNと開始時SCNをNULLに設定する必要があります。

関連項目:
BUILDプロシージャとLogMinerデータ・ディクショナリの詳細は、「BUILDプロシージャ」を参照してください。

ログ・ファイルの明示的な割当て

logfile_assignmentパラメータにexplicitを指定した場合は、次の文を使用して、ダウンストリーム・データベースに手動でREDOログ・ファイルを追加します。

ALTER DATABASE REGISTER LOGICAL LOGFILE
file_name FOR capture_process;

ここで、file_nameは追加するREDOログ・ファイルの名前であり、capture_processはダウンストリーム・データベースでREDOログ・ファイルを使用する取得プロセスの名前です。capture_processには、logminer_session_nameと同じ名前を必ず指定してください。REDOログ・ファイルは、ダウンストリーム・データベースが実行されるサイトに存在する必要があります。ダウンストリーム・データベースが実行されるサイトに手動でこのファイルを転送する場合は、DBMS_FILE_TRANSFERパッケージ、FTPまたはその他の転送手法を使用する必要があります。

関連項目:
ALTER DATABASE文の詳細は『Oracle Database SQL言語リファレンス』、REDOログ・ファイルの登録方法の詳細は『Oracle Data Guard概要および管理』を参照してください。

CREATE_SYNC_CAPTUREプロシージャ

このプロシージャは、同期取得を作成します。

関連項目:
同期取得の作成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.CREATE_SYNC_CAPTURE(
queue_name     IN  VARCHAR2,
capture_name   IN  VARCHAR2,
rule_set_name  IN  VARCHAR2,
capture_user   IN  VARCHAR2  DEFAULT NUL);

パラメータ

表34-10 CREATE_SYNC_CAPTUREプロシージャのパラメータ

パラメータ

説明

queue_name

同期取得が変更をエンキューするキューの名前。既存のキューを[schema_name.]queue_nameの形式で指定する必要があります。たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、strmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

注意: queue_nameの設定は、同期取得の作成後には変更できません。

capture_name

作成する同期取得の名前。NULL指定は許可されていません。所有者を指定しないでください。

注意: capture_nameの設定は、同期取得の作成後には変更できません。

rule_set_name

同期取得に対するポジティブ・ルール・セットの名前。ポジティブ・ルール・セットには、変更の取得を同期取得に指示するためのルールが含まれています。

既存のルール・セットを[schema_name.]rule_set_nameの形式で指定します。たとえば、strmadminスキーマに含まれるsync_cap_rulesという名前のポジティブ・ルール・セットを指定するには、strmadmin.sync_cap_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。DBMS_STREAMS_ADMパッケージを使用して作成されたルール・セットを指定する必要があります。

NULLに設定すると、エラーが戻されます。

注意: 同期取得ルールは、DBMS_STREAMS_ADMパッケージのADD_TABLE_RULESプロシージャまたはADD_SUBSET_RULESプロシージャを使用して、同期取得ルール・セットに追加する必要があります。同期取得は、その他のプロシージャでルール・セットに追加されたルールを無視します。

関連項目: 同期取得によって取得可能な変更の詳細は、『Oracle Streams概要および管理』を参照してください。

capture_user

ユーザーを指定しますが、このユーザーのセキュリティ・ドメイン内で、同期取得は、同期取得のルール・セットを満たす変更を取得し、同期取得ルールに対して構成されているカスタム・ルールベースの変換を実行します。NULLの場合は、CREATE_SYNC_CAPTUREプロシージャの実行ユーザーが使用されます。

取得ユーザーを設定できるのは、DBAロールを付与されたユーザーに限られています。capture_userをSYSに設定できるのは、SYSユーザーに限られています。

注意: 同期取得の取得ユーザーがDROP USER . . . CASCADEを使用して削除されると、同期取得も自動的に削除されます。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

使用上の注意

CREATE_SYNC_CAPTUREプロシージャは、同期取得の作成時に、変更を取得する各表の排他ロックを取得する必要があります。これらの表は、同期取得に対して指定されたルール・セットのルールによって決定されます。同期取得が変更を取得する表に未処理のトランザクションが存在する場合、このプロシージャはロックを取得できるまで待機します。

capture_userパラメータでは、同期取得のルール・セットを満たす変更を取得するユーザーを指定します。このユーザーには、変更を取得するためのいくつかの権限が必要です。

なお、取得ユーザーには次の権限が必要です。

- queue_nameパラメータに指定したキューのENQUEUE権限

- 同期取得で使用されるルール・セットのEXECUTE権限

- ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

これらの権限は取得ユーザーに直接付与するか、またはロールによって付与できます。

また、取得ユーザーには、同期取得によって実行されるルールベース変換で起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限が付与されている必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。ロールを通してこれらの権限を付与することはできません。

注意:
取得ユーザーは、データベース・オブジェクトに対する権限を持っていなくても、データベース・オブジェクトに対する変更を取得できます。同期取得では、データベース・オブジェクトに対する変更をルールベースの変換ファンクションに渡すことができます。したがって、同期取得を構成するときは、セキュリティ問題に留意する必要があります。

DROP_CAPTUREプロシージャ

このプロシージャは、取得プロセスを削除します。

構文

DBMS_CAPTURE_ADM.DROP_CAPTURE(
capture_name           IN  VARCHAR2,
drop_unused_rule_sets  IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表34-11 DROP_CAPTUREプロシージャのパラメータ

パラメータ

説明

capture_name

削除する取得プロセスの名前。既存の取得プロセス名を指定します。所有者を指定しないでください。

drop_unused_rule_sets

TRUEに設定すると、指定した取得プロセスで使用されるポジティブ・ルール・セットおよびネガティブ・ルール・セットが、他のOracle Streamsクライアントによって使用されない場合に削除されます。Oracle Streamsクライアントには、取得プロセス、伝播、適用プロセス、メッセージ・クライアントがあります。このプロシージャによってルール・セットが削除される場合は、そのルール・セット内のルールのうち、別のルール・セット内に存在しないルールも同時に削除されます。

FALSEに設定すると、指定した取得プロセスで使用されるルール・セットは削除されず、ルール・セットにルールが保持されます。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 削除する前に停止する必要のある取得プロセス

- DROP_CAPTUREプロシージャおよびルールに関する情報

削除する前に停止する必要のある取得プロセス

取得プロセスを削除するには、その取得プロセスを事前に停止する必要があります。

関連項目:
STOP_CAPTUREプロシージャ

DROP_CAPTUREプロシージャおよびルールに関する情報

このプロシージャを使用して取得プロセスを削除すると、その取得プロセスに対してDBMS_STREAMS_ADMパッケージで作成したルールに関する情報は、Oracle Streamsルールのデータ・ディクショナリ・ビューから削除されます。そのようなルールが取得プロセスのどのルール・セットに含まれているかに関係なく、ルールに関する情報は削除されます。

Oracle Streamsルールのデータ・ディクショナリ・ビューは次のとおりです。

- ALL_STREAMS_GLOBAL_RULES

- DBA_STREAMS_GLOBAL_RULES

- ALL_STREAMS_MESSAGE_RULES

- DBA_STREAMS_MESSAGE_RULES

- ALL_STREAMS_SCHEMA_RULES

- DBA_STREAMS_SCHEMA_RULES

- ALL_STREAMS_TABLE_RULES

- DBA_STREAMS_TABLE_RULES

- ALL_STREAMS_RULES

- DBA_STREAMS_RULES

関連項目:
Oracle Streamsデータ・ディクショナリ・ビューの詳細は、『Oracle Streams概要および管理』を参照してください。

INCLUDE_EXTRA_ATTRIBUTEプロシージャ

このプロシージャは、指定した取得プロセスまたは同期取得によって取得される論理変更レコード(LCR)に追加属性を記録するかどうかを指示します。

構文

DBMS_CAPTURE_ADM.INCLUDE_EXTRA_ATTRIBUTE(
capture_name    IN  VARCHAR2,
attribute_name  IN  VARCHAR2,
include         IN  BOOLEAN   DEFAULT TRUE);

パラメータ

表34-12 INCLUDE_EXTRA_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

capture_name

取得プロセスまたは同期取得の名前。既存の取得プロセス名または同期取得名を指定します。所有者を指定しないでください。

attribute_name

取得プロセスまたは同期取得によって取得される論理変更レコード(LCR)に記録する属性名、またはLCRから除外する属性名を指定します。指定できる属性名は次のとおりです。

- row_id
行のLCRで変更された行のROWID。この属性は、DDL LCRにも索引構成表の行LCRにも記録されません。データ・タイプはVARCHAR2です。

- serial#
LCRに取得された変更を実行したセッションのシリアル番号。データ・タイプはNUMBERです。

- session#
LCRに取得された変更を実行したセッションの識別子。データ・タイプはNUMBERです。

- thread#
LCRに取得された変更が実行されたインスタンスのスレッド番号。通常、スレッド番号はOracle Real Application Clusters(Oracle RAC)環境のみで使用されます。データ・タイプはNUMBERです。

- tx_name
LCRの属するトランザクションの名前。データ・タイプはVARCHAR2です。

- username
LCRに取得された変更を実行したユーザーの名前。データ・タイプはVARCHAR2です。

include

TRUEに設定すると、取得プロセスまたは同期取得によって取得される論理変更レコード(LCR)に、指定した属性が記録されます。

FALSEに設定すると、取得プロセスまたは同期取得によって取得される論理変更レコード(LCR)から、指定した属性が除外されます。

使用上の注意

一部の情報は、それらの情報が取得されるようにこのプロシージャを使用して指定しないかぎり、取得プロセスまたは同期取得によって取得されません。取得プロセスまたは同期取得によって取得された情報から特定の追加属性を除外する場合は、目的の属性を指定し、includeパラメータをFALSEに設定します。

PREPARE_GLOBAL_INSTANTIATIONプロシージャ

このプロシージャは、別のデータベースで、データベース内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。取得プロセスを使用してデータベース内の表に対する変更を取得する場合は、このプロシージャによって、データベース内の表をインスタンス化する準備を行います。

このプロシージャは、インスタンス化のためにデータベース内の各オブジェクトの最小SCNを記録します。オブジェクトに対する最小SCNに続くSCNをオブジェクトのインスタンス化に使用できます。このプロシージャを実行すると、データベース内のすべての現行オブジェクトと将来のオブジェクトのインスタンス化が準備されます。

関連項目:
インスタンス化およびサプリメンタル・ロギングの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.PREPARE_GLOBAL_INSTANTIATION
supplemental_logging  IN  VARCHAR2  DEFAULT 'KEYS',
container             IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表34-13 PREPARE_GLOBAL_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

supplemental_logging

NONE、KEYSまたはALL。

NONEを指定すると、データベース内の表の列でサプリメンタル・ロギングは有効になりません。このプロシージャは、これらの表の既存のサプリメンタル・ロギング指定は削除しません。

KEYSを指定すると、データベース内の表の主キー、一意キー、ビットマップ索引および外部キーの列でサプリメンタル・ロギングが有効になり、将来データベースに表が追加された場合も、サプリメンタル・ロギングは有効になります。主キー列は、無条件でログに記録されます。一意キー列、ビットマップ索引列および外部キー列は、条件付きでログに記録されます。KEYSを指定しても、ビットマップ結合索引の列でサプリメンタル・ロギングは有効になりません。

ALLを指定すると、データベース内のすべての列でサプリメンタル・ロギングが有効になり、将来データベースに表が追加された場合も、サプリメンタル・ロギングは有効になります。すべての列は、無条件でログに記録されます。LOBタイプ、LONGタイプ、LONG RAWタイプ、ユーザー定義タイプおよびオラクル社が提供するタイプの列では、サプリメンタル・ロギングは有効になりません。

container

CURRENT、ALLまたはpdb_nameのいずれか。

CURRENTを指定すると、現在のコンテナのサプリメンタル・ロギングが追加されます。

ALLを指定すると、現在のCDBのすべてのコンテナでサプリメンタル・ロギングが追加されます。

pdb_nameを指定すると、指定したPDBのサプリメンタル・ロギングが追加されます。

ALLとpdb_nameは、プロシージャをルートから起動する場合にのみ有効です。

使用上の注意

このプロシージャは、ソース・データベースで実行します。

データベースに対するすべての変更を取得プロセスによって取得する場合は、取得プロセスを構成した後、このプロシージャを使用してデータベース内の表をインスタンス化する準備を行ってください。

PREPARE_SCHEMA_INSTANTIATIONプロシージャ

このプロシージャは、別のデータベースで、スキーマ内のすべての表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。スキーマ内の表に対する変更の取得に取得プロセスを使用する場合は、このプロシージャによって、スキーマ内の表をインスタンス化する準備を行います。

このプロシージャは、インスタンス化のためにスキーマ内の各オブジェクトの最小SCNを記録します。オブジェクトに対する最小SCNに続くSCNをオブジェクトのインスタンス化に使用できます。このプロシージャを実行すると、スキーマ内のすべての現行オブジェクトと将来のオブジェクトのインスタンス化が準備されます。

関連項目:
インスタンス化およびサプリメンタル・ロギングの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.PREPARE_SCHEMA_INSTANTIATION(
schema_name           IN  VARCHAR2,
supplemental_logging  IN  VARCHAR2  DEFAULT 'KEYS',
container             IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表34-14 PREPARE_SCHEMA_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。たとえば、hrのように指定します。

supplemental_logging

NONE、KEYSまたはALL。

NONEを指定すると、スキーマ内の表の列でサプリメンタル・ロギングは有効になりません。このプロシージャは、これらの表の既存のサプリメンタル・ロギング指定は削除しません。

KEYSを指定すると、スキーマ内の表の主キー、一意キー、ビットマップ索引および外部キーの列でサプリメンタル・ロギングが有効になり、将来このスキーマに表が追加された場合も、サプリメンタル・ロギングは有効になります。主キー列は、無条件でログに記録されます。一意キー列、ビットマップ索引列および外部キー列は、条件付きでログに記録されます。KEYSを指定しても、ビットマップ結合索引の列でサプリメンタル・ロギングは有効になりません。

ALLを指定すると、スキーマ内のすべての列でサプリメンタル・ロギングが有効になり、将来このスキーマに表が追加された場合も、サプリメンタル・ロギングは有効になります。すべての列は、無条件でログに記録されます。LOBタイプ、LONGタイプ、LONG RAWタイプ、ユーザー定義タイプおよびオラクル社が提供するタイプの列では、サプリメンタル・ロギングは有効になりません。

container

CURRENT、ALLまたはpdb_nameのいずれか。

CURRENTを指定すると、現在のコンテナのサプリメンタル・ロギングが追加されます。

ALLを指定すると、現在のCDBのすべてのコンテナでサプリメンタル・ロギングが追加されます。

pdb_nameを指定すると、指定したPDBのサプリメンタル・ロギングが追加されます。

ALLとpdb_nameは、プロシージャをルートから起動する場合にのみ有効です。

使用上の注意

このプロシージャは、ソース・データベースで実行します。スキーマに対するすべての変更を取得プロセスによって取得する場合は、取得プロセスを構成した後、このプロシージャを使用してスキーマ内の表をインスタンス化する準備を行ってください。

PREPARE_SYNC_INSTANTIATIONファンクション

このファンクションは、別のデータベースで、1つ以上の表をインスタンス化するために必要な同期化を行います。このファンクションは、インスタンス化のために準備された表(複数も可)に対して、準備システム変更番号(SCN)を戻します。

表に対する変更の取得に同期取得を使用する場合は、このファンクションによって、1つ以上の表をインスタンス化する準備を行います。

このファンクションは、インスタンス化のために各表の最小SCNを記録します(準備SCN)。オブジェクトに対する最小SCNに続くSCNをオブジェクトのインスタンス化に使用できます。

このファンクションはオーバーロードされています。table_namesパラメータは、一方のバージョンではVARCHAR2データ・タイプであり、もう一方のバージョンではDBMS_UTILITY.UNCL_ARRAYデータ・タイプです。

関連項目:
インスタンス化の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.PREPARE_SYNC_INSTANTIATION(
table_names  IN  VARCHAR2)
RETURN NUMBER;

DBMS_CAPTURE_ADM.PREPARE_SYNC_INSTANTIATION(
table_names  IN  DBMS_UTILITY.UNCL_ARRAY)
RETURN NUMBER;

パラメータ

表34-15 PREPARE_SYNC_INSTANTIATIONファンクションのパラメータ

パラメータ

説明

table_names

table_namesパラメータがVARCHAR2データ・タイプの場合は、インスタンス化のために準備する表のカンマ区切りリスト。エントリ間に空白を挿入しないでください。

table_namesパラメータがDBMS_UTILITY.UNCL_ARRAYデータ・タイプの場合は、インスタンス化のために準備する表の名前が含まれているPL/SQL連想配列を指定します。最初の表名は位置1、2番目は位置2、以降同様です。表の最後をNULLにする必要はありません。

いずれのバージョンのファンクションも、それぞれの表の名前を[schema_name.]table_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

PREPARE_TABLE_INSTANTIATIONプロシージャ

このプロシージャは、別のデータベースで、表をインスタンス化するために必要な同期化を行い、表内のキー列またはすべての列でサプリメンタル・ロギングを有効にできます。表に対する変更の取得に取得プロセスを使用する場合は、このプロシージャによって表をインスタンス化する準備を行います。

このプロシージャは、インスタンス化のために表の最小SCNを記録します。オブジェクトに対する最小SCNに続くSCNをオブジェクトのインスタンス化に使用できます。

関連項目:
インスタンス化およびサプリメンタル・ロギングの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(
table_name            IN  VARCHAR2,
supplemental_logging  IN  VARCHAR2  DEFAULT 'KEYS',
container             IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表34-16 PREPARE_TABLE_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

supplemental_logging

NONE、KEYSまたはALL。

NONEを指定すると、表内の列でサプリメンタル・ロギングは有効になりません。このプロシージャは、表の既存のサプリメンタル・ロギング指定は削除しません。

KEYSを指定すると、表の主キー、一意キー、ビットマップ索引および外部キーの列でサプリメンタル・ロギングが有効になります。このプロシージャによって、主キー列は無条件のログ・グループ、一意キー列とビットマップ索引列は条件付きログ・グループ、外部キー列は条件付きのログ・グループというように、表のキー列が3つの個別のログ・グループに配置されます。KEYSを指定しても、ビットマップ結合索引の列でサプリメンタル・ロギングは有効になりません。

ALLを指定すると、表のすべての列でサプリメンタル・ロギングが有効になります。このプロシージャは、表内のすべての列を無条件のログ・グループに配置します。LOBタイプ、LONGタイプ、LONG RAWタイプ、ユーザー定義タイプおよびオラクル社が提供するタイプの列では、サプリメンタル・ロギングは有効になりません。

container

CURRENT、ALLまたはpdb_nameのいずれか。

CURRENTを指定すると、現在のコンテナのサプリメンタル・ロギングが追加されます。

ALLを指定すると、現在のCDBのすべてのコンテナでサプリメンタル・ロギングが追加されます。

pdb_nameを指定すると、指定したPDBのサプリメンタル・ロギングが追加されます。

ALLとpdb_nameは、プロシージャをルートから起動する場合にのみ有効です。

使用上の注意

このプロシージャは、ソース・データベースで実行します。表に対するすべての変更を取得プロセスによって取得する場合は、取得プロセスを構成した後、このプロシージャを使用して表をインスタンス化する準備を行ってください。

SET_PARAMETERプロシージャ

このプロシージャは、取得プロセス・パラメータを指定した値に設定します。

構文

DBMS_CAPTURE_ADM.SET_PARAMETER(
capture_name  IN  VARCHAR2,
parameter     IN  VARCHAR2,
value         IN  VARCHAR2  DEFAULT NULL);

パラメータ

表34-17 SET_PARAMETERプロシージャのパラメータ

パラメータ

説明

capture_name

取得プロセスの名前。所有者を指定しないでください。

parameter

設定するパラメータの名前。これらのパラメータのリストについては、「取得プロセスのパラメータ」を参照してください。

value

パラメータに設定する値。

NULLの場合、パラメータはデフォルト値に設定されます。

取得プロセスのパラメータ

次の表に、取得プロセスのパラメータを示します。

表34-18 取得プロセスのパラメータ

パラメータ名

設定可能な値

デフォルト

説明

capture_idkey_objects

YまたはN

N

Yの場合、取得プロセスはIDキーの論理変更レコード(LCR)を取得します。

Nの場合、取得プロセスはIDキーLCRを取得しません。

取得プロセスは、一部のデータ・タイプに対する変更をREDOログから取得することに完全には対応していません。IDキーLCRによって、XStream構成を使用してこれらの変更を取得し、XStreamクライアント・アプリケーションで処理できます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。IDキーLCRの詳細は、Oracle DatabaseのXStreamガイドを参照してください。

capture_sequence_nextval

YまたはN

N

Yの場合、取得プロセスは、データベースのすべての順序に対応する順序LCRを取得しますが、オラクル社が提供するSYSやSYSTEMなどの管理スキーマの順序は除きます。取得プロセスのルール・セットによって、行LCRやDDL LCRをフィルタ処理する場合と同じように順序LCRをフィルタ処理できます。

Nの場合、取得プロセスは順序LCRを取得しません。

適用プロセスまたはXStreamインバウンド・サーバーでは、順序LCRを使用することで、接続先データベースの順序値に適切な値が使用されることを保証できます。増加する順序の場合、接続先の順序値は、ソース・データベースの順序値以上になります。減少する順序の場合、接続先の順序値は、ソース・データベースの順序値以下になります。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。apply_sequence_nextval適用プロセス・パラメータの詳細は、「SET_PARAMETERプロシージャ」を参照してください。

disable_on_limit

YまたはN

N

Yの場合は、time_limitパラメータまたはmessage_limitパラメータによって指定された値に達すると、取得プロセスは無効化されます。

Nの場合、取得プロセスは、制限に達したために停止した後すぐに再開されます。

取得プロセスは、再起動されると、最後に停止した時点から変更の取得を開始します。再起動された取得プロセスは、新しいセッション識別子を取得します。取得プロセスに関連付けられているプロセスも新しいセッション識別子を取得します。ただし、取得プロセス番号(CPnn)は変更されません。

downstream_real_time_mine

YまたはN

Y(ローカル取得プロセスの場合)

N(ダウンストリーム取得プロセスの場合)

Yの場合、取得プロセスはリアルタイムのダウンストリーム取得プロセスになります。このパラメータをYに設定した後、SQL文ALTER SYSTEM ARCHIVE LOG CURRENTを使用してソース・データベースのREDOログ・ファイルを切り替え、リアルタイムのダウンストリーム取得プロセスを開始します。このパラメータをYに設定した場合は、ソース・データベースのREDOデータをダウンストリーム・データベースのスタンバイREDOログに送信する必要があります。リアルタイムのダウンストリーム取得プロセスの作成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

Nの場合、取得プロセスはアーカイブ・ログのダウンストリーム取得プロセスになります。

このパラメータをローカル取得プロセスに対して設定しようとすると、エラーが発生します。

excludetag

Oracle Streamsタグのカンマ区切りリスト

NULL

取得プロセスによって、指定したOracle Streamsタグの1つでタグ付けされたDML変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

excludetrans

トランザクション名のカンマ区切りリスト

NULL

取得プロセスによって、指定したトランザクション名におけるDMLの変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

excludeuser

ユーザー名のカンマ区切りリスト

NULL

取得プロセスによって、指定したユーザーが行ったDMLの変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

各ユーザー名の完全パターン一致を指定します。パターン一致では大/小文字が区別されます。たとえば、hrユーザーの場合はHRを指定します。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

excludeuserid

ユーザーID値のカンマ区切りリスト

NULL

取得プロセスによって、指定したユーザーが行ったデータ操作言語(DML)の変更を取得するかどうかを制御します。

取得プロセスがこれらの変更を取得するかどうかは、getapplopsパラメータとgetreplicatesパラメータの設定に応じて変化します。

ユーザーのユーザーIDを表示するには、ALL_USERSデータ・ディクショナリ・ビューのUSER_ID列を問い合せます。

NULLの場合、取得プロセスではこのパラメータは無視されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

getapplops

YまたはN

Y

Yの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定されておらず、トランザクション名がexcludetransパラメータに指定されていなければ、取得プロセスによってDMLの変更が取得されます。

Nの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定されておらず、トランザクション名がexcludetransパラメータに指定されていなければ、取得プロセスによってDMLの変更は無視されます。

どちらの設定でも、取得プロセスのルール・セットが満たされる場合にのみ、取得プロセスによってDMLの変更が取得されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

getreplicates

YまたはN

N

Yの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定され、トランザクション名がexcludetransパラメータに指定されていれば、取得プロセスによってDMLの変更が取得されます。

Nの場合、元のユーザーがexcludeuseridパラメータまたはexcludeuserパラメータに指定され、トランザクション名がexcludetransパラメータに指定されていれば、取得プロセスによってDMLの変更は無視されます。

どちらの設定でも、取得プロセスのルール・セットが満たされる場合にのみ、取得プロセスによってDMLの変更が取得されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

ignore_transaction

有効なトランザクションIDまたはNULL

NULL

取得プロセスがソース・データベースの指定したトランザクションを無視するように設定し、即座に有効化します。

取得プロセスでは、そのトランザクションに対応するすべての後続のLCRが排除されます。指定したトランザクションがソース・データベースで正常にコミットされると、接続先データベースは、かわりにROLLBACK文を受信し、トランザクション無視の要求より前にエンキューされていたトランザクションからのLCRは、接続先データベースですべてロールバックされます。

NULLの場合、取得プロセスではこのパラメータは無視されます。

トランザクションを無視すると、ソース・データベースと接続先データベース間でデータ相違が発生する可能性があるため、このパラメータを設定する場合は注意してください。

複数のトランザクションを無視するには、SET_PARAMETERプロシージャへの別々のコールで各トランザクションを指定します。DBA_CAPTURE_PARAMETERSビューに、無視されるすべてのトランザクションのカンマ区切りリストが表示されます。無視されるトランザクションのリストを消去するには、SET_PARAMETERプロシージャを実行し、ignore_transactionパラメータにNULLを指定します。

ignore_unsupported_table

表の完全修飾名、*または-

*

指定した表またはサポートされない表に対する変更を取得プロセスが取得しようとした場合の動作を制御します。

取得プロセスは、そのルール・セットに指示がある場合、サポートされない表に対する変更を取得しようとします。サポートされない表に対する変更を取得プロセスで取得しない場合、取得プロセスのルール・セットからサポートされない表が除外されていることを確認してください。

表名を指定すると、取得プロセスでは、その指定した表に対する変更が取得されません。表名は、table_owner. table_nameという形式で入力する必要があります。たとえば、hr.employeesのように指定します。複数の表を指定するには、SET_PARAMETERプロシージャへの別々のコールで各表を指定します。

*を指定した場合、取得プロセスは、サポートされない表に対する変更を取得しようとした時点でその変更を無視して実行を継続します。サポートされない表に対する変更は取得されず、取得プロセスでは、サポートされない表がアラート・ログに記録されます。

-を指定した場合、取得プロセスは、サポートされない表に対する変更を取得しようとした時点で中断します。

include_objects

カンマで区切られた表またはスキーマ名のリスト

none

指定した表またはスキーマにおける変更を取得に含めるように指示します。

include_objectsによって選択されたLCRは、それ以降にどのフィルタを指定したかにかかわらず、アウトバウンド・サーバーに渡されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用または設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

inline_lob_optimization

YまたはN

N

Yの場合、インラインで処理できるLOB(サイズの小さなLOBなど)は、LOBチャンクのLCRとして送信されるかわりにLCR内に直接格納されます。

Nの場合、それぞれのLOB列がNULLとして送信されてから、LOB列を更新するLOBチャンクのLCRが送信されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用または設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

maximum_scn

有効なSCN値またはINFINITE

INFINITE

取得プロセスは、指定された値以上のSCNを持つ変更レコードの取得前に無効化されます。

INFINITEの場合は、SCNの値に関係なく取得プロセスが実行されます。

max_sga_size

正の整数

INFINITE

取得プロセスのために特に割り当てられたシステム・グローバル領域(SGA)メモリーの量をMB単位で制御します。取得プロセスは、この制限値までメモリーを割り当てようとします。取得プロセスは、Oracle LogMinerを使用してREDOログ内の変更をスキャンします。

このメモリーは、取得プロセスのセッション期間中に割り当てられ、取得プロセスが無効になると解放されます。

注意: データベース上のすべてのコンポーネントに割り当てられたシステムグローバル領域(SGA)メモリーは、合計でSTREAMS_POOL_SIZE初期化パラメータに設定されている値未満である必要があります。

NULLの場合、取得コンポーネントでは元のデフォルト値が使用されます。NULL値には、パラメータをデフォルト値に再設定した場合と同じ効果があります。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用または設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

merge_threshold

負の整数、0、正の整数またはINFINITE

60

元の取得プロセスのメッセージ作成時間とクローニングされた取得プロセスのメッセージ作成時間の間隔(秒)。

特に、クローニングされた取得プロセスと元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEの差(秒数)がこのパラメータに指定された値以下の場合、MERGE_STREAMSプロシージャを実行することで自動マージが始まります。差がこのパラメータで指定された値よりも大きい場合、自動マージは始まらず、DBA_STREAMS_SPLIT_MERGEビューのLAG列に値が記録されます。CAPTURE_MESSAGE_CREATE_TIMEはV$STREAMS_CAPTUREビューに記録されます。

このパラメータが関連するのは、取得プロセスにより取得された変更が2つ以上の適用プロセスにより適用され、split_thresholdパラメータがINFINITE以外の値に設定された場合のみです。

負の値を指定すると、自動マージは無効になります。

0(ゼロ)を指定した場合、元の取得プロセスとクローニングされた取得プロセスがマージを始める時間に遅延はありません。

INFINITEを指定すると、自動マージはただちに始まります。

関連項目: 『Oracle Streamsレプリケーション管理者ガイド』

message_limit

正の整数またはINFINITE

INFINITE

取得プロセスは、指定した数のメッセージを取得した後停止します。

INFINITEの場合は、取得したメッセージの数に関係なく実行し続けます。

message_tracking_frequency

0または正の整数

2000000

取得プロセスによって取得されるメッセージが自動的に追跡される頻度。

たとえば、このパラメータがデフォルト値の2000000に設定されている場合は、200万番目ごとにメッセージが自動的に追跡されます。

自動メッセージ追跡に使用される追跡ラベルはcapture_process_name:AUTOTRACKで、capture_process_nameは取得プロセスの名前です。取得プロセス名の最初の20バイトのみが使用され、20バイトを超える場合、残りは切り捨てられます。

0(ゼロ)の場合、メッセージは自動的に追跡されません。

メッセージの追跡の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

parallelism

正の整数

1

取得プロセスのREDOログを同時に調査できるプリペアラ・サーバーの数。

取得プロセスは、リーダー・サーバー1台、プリペアラ・サーバー1台以上およびビルダー・サーバー1台で構成されます。プリペアラ・サーバーは、REDOログ内で検出された変更を同時に論理変更レコード(LCR)形式にフォーマットします。各リーダー・サーバー、プリペアラ・サーバーおよびビルダー・サーバーはプロセスであり、プリペアラ・サーバーの数はparallelism取得プロセス・パラメータに指定した数と同じになります。そのため、parallelismを5に設定すると、取得プロセスでは合計7つのプロセス(リーダー・サーバー1台、プリペアラ・サーバー5台、ビルダー・サーバー1台)が使用されます。

parallelismパラメータを、使用可能なパラレル実行サーバー数より大きい値に設定すると、取得プロセスが無効化される場合があります。parallelism取得プロセス・パラメータを設定するときは、PROCESSES初期化パラメータが適切に設定されていることを確認してください。

注意: このパラメータの値を変更すると、取得プロセスは自動的に停止し、再開します。

関連項目: 取得プロセスのコンポーネントの詳細は、『Oracle Streams概要および管理』を参照してください。

skip_autofiltered_table_ddl

YまたはN

Y

Yの場合は、取得プロセスにより自動的にフィルタ処理される表に対するデータ定義言語(DDL)の変更が、取得プロセスで取得されません。

Nの場合にDDL変更が取得プロセスのルール・セットに適合していると、取得プロセスにより自動的にフィルタ処理される表に対するDDL変更が、取得プロセスで取得されます。

取得プロセスによって自動的にフィルタ処理される表は、DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューのAUTO_FILTERED列に示されます。

split_threshold

0、正の整数またはINFINITE

1800

ストリームが取得プロセスから流れる他のストリームから自動的に分割される前にストリームが中断する間隔(秒)。ストリームが分割されると、取得プロセス、キューおよび伝播がクローニングされます。

この場合、ストリームは、取得プロセスから適用に流れる論理変更レコード(LCR)のフローです。ストリームは、取得プロセスに取得されたLCRが適用プロセスに達することができないとき、中断します。たとえば、関連する伝播または適用プロセスが無効にされると中断します。

このパラメータが関連するのは、取得プロセスにより取得された変更が2つ以上の適用プロセスにより適用された場合のみです。

0(ゼロ)を指定した場合、自動分割はただちに始まります。

INFINITEを指定した場合、自動分割は無効にされます。ストリームは、中断される時間にかかわらず分割されません。

このパラメータは、merge_thresholdパラメータと一緒に使用することになっています。自動分割およびマージ操作は、DBA_STREAMS_SPLIT_MERGEビューに問い合せることによって監視できます。

関連項目: 『Oracle Streamsレプリケーション管理者ガイド』

startup_seconds

0、正の整数またはINFINITE

0

同じ取得プロセスの別のインスタンス化が終了するのを待機する最大秒数。同じ取得プロセスの別のインスタンス化がこの時間内に終了しない場合、取得プロセスは開始しません。このパラメータが有用になるのは、取得プロセスを手動で起動する場合に限られます。

INFINITEの場合、取得プロセスは、同じ取得プロセスの別のインスタンス化が終了した後で開始します。

time_limit

正の整数またはINFINITE

INFINITE

取得プロセスは、開始してから指定秒数が経過した後、可能なかぎり早く停止します。

INFINITEの場合、取得プロセスは明示的に停止されるまで実行し続けます。

trace_level

0または正の整数

0

Oracleサポート・サービスから指示がないかぎり、このパラメータは設定しないでください。

use_rac_service

YまたはN

Streamsの場合はY

XStreamの場合はN

Yの場合、取得プロセスは、そのキューの所有するインスタンスで実行されます。

Nの場合、クライアントによって、取得プロセスを実行するかどうかが指定されます。

注意: このパラメータは、XStreamを対象としています。XStream最適化をDBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによって有効にする場合を除き、Oracle Streamsレプリケーション環境でこのパラメータを使用または設定しないでください。XStream最適化の有効化については、「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」を参照してください。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

write_alert_log

YまたはN

Y

Yの場合、取得プロセスは、終了時にアラート・ログにメッセージを書き込みます。

Nの場合は、終了時にアラート・ログにメッセージを書き込みません。

メッセージには、取得プロセスの停止理由が示されます。

xout_client_exists

YまたはN

Y(取得プロセスでXStreamアウトバウンド・サーバーにLCRを送信する場合)

N(取得プロセスでOracle Streams適用プロセスにLCRを送信する場合)

Yは、取得プロセスで1つ以上のXStreamアウトバウンド・サーバーにLCRを送信することを示します。

Nは、取得プロセスで1つ以上のOracle Streams適用プロセスにLCRを送信することを示します。

1つの取得プロセスでアウトバウンド・サーバーと適用プロセスの両方にLCRを送信することはできません。

アウトバウンド・サーバーがその取得プロセスとは異なるデータベースで実行されるXStream構成では、このパラメータをYに設定して取得プロセスがアウトバウンド・サーバーにLCRを送信できるようにします。

注意: XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

使用上の注意

SET_PARAMETERプロシージャには、次の使用上の注意が適用されます。

- 新しいパラメータ設定の有効化が遅延する可能性

- 正の整数として解釈されるパラメータ

- システム変更番号(SCN)設定のあるパラメータ

- XStream最適化を必要とするパラメータ

- XStreamまたはOracle GoldenGate統合取得構成

新しいパラメータ設定の有効化が遅延する可能性

パラメータ値を変更したとき、パラメータの新しい値が有効になるまでに時間がかかる場合があります。

正の整数として解釈されるパラメータ

正の整数として解釈されるすべてのパラメータについて、設定可能な最大値は4,294,967,295です。適用可能な場合、比較的大きい値にはINFINITEを指定してください。

システム変更番号(SCN)設定のあるパラメータ

SCN設定が必要なパラメータについては、任意の有効なSCN値を指定できます。

XStream最適化を必要とするパラメータ

取得プロセスで次のパラメータが使用されるのは、取得プロセスがXStreamアウトバウンド・サーバーに論理変更レコード(LCR)を送信している場合、またはXStream最適化がOracle Streamsコンポーネントで有効化されている場合にかぎられます。

- capture_idkey_objects

- capture_sequence_nextval

- excludetag

- excludetrans

- excludeuser

- excludeuserid

- getapplops

- getreplicates

- include_objects

- inline_lob_optimization

- max_sga_size

- use_rac_services

DBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャを使用して、Oracle StreamsでXStream最適化を有効化します。DBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャによってXStream最適化が有効化されていない場合に、これらのパラメータのいずれかがデフォルト値以外の値に設定されると、取得プロセスでエラーが発生します。

XStream最適化がOracle Streamsで有効化され、capture_idkey_objectsパラメータがYに設定されている場合、取得プロセスによってIDキーLCRを取得できます。IDキーLCRには、行の変更に関するすべての列が含まれるわけではありません。かわりに、変更された行のROWID、表の行を識別するためのキー列のグループ、および取得プロセスによってサポートされる表のスカラー列のデータが含まれます。適用プロセスは、IDキーLCRの使用可能な情報を使用してこれらの変更を適用できます。

取得プロセスによってIDキーLCRが取得されるデータベース・オブジェクトを確認するには、ソース・データベースに対して次の問合せを実行します。

SELECT OWNER, OBJECT_NAME
FROM DBA_XSTREAM_OUT_SUPPORT_MODE
WHERE SUPPORT_MODE='ID KEY';

注意:
XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

XStreamまたはOracle GoldenGate統合取得構成

XStreamまたはOracle GoldenGate統合取得構成では、次のパラメータで、取得プロセスがどの変更内容を取得するかを制御できます。

- capture_idkey_objects

- capture_sequence_nextval

- excludetag

- excludetrans

- excludeuser

- excludeuserid

- getapplops

- getreplicates

- include_objects

- inline_lob_optimization

- max_sga_size

- use_rac_services

これらのパラメータを設定すると、変更の循環を回避できます。変更の循環では、変更が発生場所であるデータベースに再送されます。通常、レプリケーション環境では、変更の循環を回避する必要があります。同じ変更がデータベースに対して複数回適用されないためです。

双方向のレプリケーションが実行されるXStreamまたはOracle GoldenGate統合取得構成では、GoldenGate Replicatプロセスが取得プロセスのソース・データベースで実行されます。そのため、GoldenGate Replicatで加えた変更は、REDOログに記録されます。

統合構成で双方向のレプリケーションを実行するときには、変更の循環を回避するために、Oracle GoldenGate Replicatプロセスで加えた変更を取得プロセスで取得しないでください。この目標を達成するには、getapplopsパラメータとgetreplicatesパラメータのデフォルトの設定を使用した後、Replicatプロセスの実行ユーザーが加えた変更を除外します。これらの変更を除外するには、このユーザーをexcludeuseridまたはexcludeuserパラメータで指定します。通常、Oracle GoldenGate Replicatプロセスの実行ユーザーはXStream管理者です。

一部の構成では、アプリケーションまたはReplicatプロセスによって加えられた変更の取得または除外が目標の場合があります。たとえば、レプリケーション環境の中間データベースでは、アプリケーション変更やReplicatプロセス変更を含む、データベースへのすべての変更が取得された後、これらの変更を別の宛先データベースに送信することがあります。

表34-19は、少なくとも1つの除外パラメータがNULL以外の場合の取得プロセスの動作を示しています。

表34-19 少なくとも1つの除外パラメータがNULL以外の場合の動作

getapplops設定

getreplicates設定

説明

Y

Y

取得プロセスによって、すべてのDML変更が取得されます。

Y

N

取得プロセスによって、excludeuseridまたはexcludeuserパラメータの対象外のユーザーが加えたDML変更が取得されます。

取得プロセスによって、excludetransパラメータの対象外のトランザクションのDML変更が取得されます。

取得プロセスによって、excludetagsパラメータの対象タグを持たないDML変更のみが取得されます。

N

Y

取得プロセスによって、excludeuseridまたはexcludeuserパラメータの対象ユーザーが加えたDML変更のみが取得されます。

取得プロセスによって、excludetransパラメータの対象トランザクションのDML変更のみが取得されます。

取得プロセスによって、excludetagsパラメータの対象タグを持つDML変更のみが取得されます。

N

N

取得プロセスによって、DML変更は取得されません。

表34-19は、すべての除外パラメータがNULLに設定されている場合の取得プロセスの動作を示しています。

表34-20 すべての除外パラメータがNULLに設定されている場合の動作

getapplops設定

getreplicates設定

説明

Y

Y

取得プロセスによって、すべてのDML変更が取得されます。

Y

N

取得プロセスによって、すべてのDML変更が取得されます。

N

Y

取得プロセスによって、DML変更は取得されません。

N

N

取得プロセスによって、DML変更は取得されません。

詳細は、次のリンクにあるOracle GoldenGate製品のドキュメントを参照してください。

http://docs.oracle.com/cd/E15881_01/index.htm

注意:
取得プロセスでは、そのルール・セットを使用して変更を評価する前に、前述のパラメータを使用して変更が評価されます。つまり、取得プロセスのルール・セットに照らして変更を評価する前に、その変更が取り消される可能性があります。また、これらのパラメータの設定に関係なく、取得プロセスでは、変更がルール・セットを満たしている場合にのみ取得されます。

関連項目:
Oracle Database XStreamガイド

START_CAPTUREプロシージャ

このプロシージャは、取得プロセスを開始します。取得プロセスは、REDOログを調査し、取り出したREDO情報を関連キューにエンキューします。

開始ステータスは永続的に記録されます。したがって、ステータスがENABLEDの場合、取得プロセスはデータベース・インスタンスの起動時に開始されます。

取得プロセスはバックグラウンドのOracleプロセスであり、接頭辞cが付加されます。

DBMS_AQADM.START_QUEUEおよびDBMS_AQADM.STOP_QUEUEのエンキューとデキューの状態は、取得プロセスの開始ステータスには影響を与えません。

関連項目:
第159章「DBMS_STREAMS_ADM」

構文

DBMS_CAPTURE_ADM.START_CAPTURE(
capture_name  IN  VARCHAR2);

パラメータ

表34-21 START_CAPTUREプロシージャのパラメータ

パラメータ

説明

capture_name

取得プロセスの名前。所有者を指定しないでください。

取得プロセスは、LogMinerを使用してREDO情報内の変更を取得します。NULLを設定することはできません。

使用上の注意

取得プロセスのステータスは永続的に記録されます。したがって、ステータスがENABLEDの場合、取得プロセスはデータベース・インスタンスの起動時に開始されます。取得プロセス(cnnn)はOracleバックグラウンド・プロセスです。

STOP_CAPTUREプロシージャ

このプロシージャは、取得プロセスを停止してREDOログの調査を中断します。

構文

DBMS_CAPTURE_ADM.STOP_CAPTURE(
capture_name  IN  VARCHAR2,
force         IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表34-22 STOP_CAPTUREプロシージャのパラメータ

パラメータ

説明

capture_name

取得プロセスの名前。NULLを設定することはできません。所有者を指定しないでください。

force

TRUEに設定すると、取得プロセスは可能なかぎり早く停止されます。取得プロセスを正常に停止できない場合は、中断されます。

FALSEに設定すると、取得プロセスは可能なかぎり早く停止されます。取得プロセスを正常に停止できない場合は、ORA-26672エラーが戻され、取得プロセスが引き続き実行されることがあります。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- 取得プロセスのステータスは永続的に記録されます。したがって、ステータスがDISABLEDまたはABORTEDの場合、取得プロセスはデータベース・インスタンスの起動時に開始されません。

- 取得プロセスは、CPnn(nnに含まれるのは文字および数字)という形式の名前を持つOracleバックグラウンド・プロセスです。

- DBMS_AQADM.START_QUEUEおよびDBMS_AQADM.STOP_QUEUEのエンキューとデキューの状態は、取得プロセスの停止ステータスには影響を与えません。

35 DBMS_COMPARISON

DBMS_COMPARISONパッケージでは、様々なデータベースでデータベース・オブジェクトを比較および収束するインタフェースが提供されています。

この章では、次の項目について説明します。

- DBMS_COMPARISONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- データ構造

- DBMS_COMPARISONサブプログラムの要約

関連項目:

- このパッケージの基本機能の使用方法については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

DBMS_COMPARISONの使用方法

この項では、DBMS_COMPARISONパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

概要

DBMS_COMPARISONパッケージは、2つのデータベースのデータベース・オブジェクトの比較に使用できるオラクル社提供のパッケージです。また、このパッケージを使用すると、様々なデータベースで一貫性が保持されるようにデータベース・オブジェクトを収束することができます。通常、このパッケージは、複数のデータベースでデータベース・オブジェクトを共有している環境で使用されます。複数のデータベースに同じデータベース・オブジェクトのコピーが存在する場合、そのデータベース・オブジェクトは共有データベース・オブジェクトです。いくつかのデータ・ディクショナリ・ビューには、DBMS_COMPARISONパッケージで作成された比較に関する情報が含まれています。

共有データベース・オブジェクトは、データ・レプリケーションによって保持できます。たとえば、マテリアライズド・ビューまたはOracle Streamsコンポーネントは、データベース・オブジェクトをレプリケートして複数のデータベースに保持できます。また、カスタム・アプリケーションでも共有データベース・オブジェクトを保持できます。共有されているデータベース・オブジェクトは、そのデータベース・オブジェクトを共有している複数のデータベースで異なる場合があります。このパッケージを使用すると、共有データベース・オブジェクトの相違点を特定できます。相違点を特定した後、必要に応じて、このパッケージを使用して共有データベース・オブジェクトを同期化できます。

2つの異なるデータベースで共有されているデータベース・オブジェクトを比較するには、次の一般的な手順を実行します。

1. このパッケージのCREATE_COMPARISONプロシージャを実行して、比較を作成します。この比較によって、比較するデータベース・オブジェクトが特定され、比較用のパラメータが指定されます。

2. このパッケージのCOMPAREファンクションを実行して、2つのデータベースのデータベース・オブジェクトを比較し、相違点を特定します。このファンクションは、相違点が検出された場合はTRUE、相違点が検出されなかった場合はFALSEを戻します。また、このファンクションは、データ・ディクショナリ・ビューに比較結果を移入します。COMPAREファンクションを実行するたびに、個別の比較結果が生成されます。

3. 比較結果を確認する場合は、次のデータ・ディクショナリ・ビューを問い合せます。

- DBA_COMPARISON_SCAN

- USER_COMPARISON_SCAN

- DBA_COMPARISON_SCAN_VALUES

- USER_COMPARISON_SCAN_VALUES

- DBA_COMPARISON_ROW_DIF

- USER_COMPARISON_ROW_DIF

4. 2つのデータベース間で相違点が検出されたデータベース・オブジェクトを同期化する場合は、このパッケージのCONVERGEプロシージャを実行します。

DBMS_COMPARISONパッケージのCREATE_COMPARISONプロシージャを使用して比較を作成した後は、COMPAREファンクションを使用して比較を随時実行できます。COMPAREファンクションを実行するたびに、適切なデータ・ディクショナリ・ビューに比較結果が記録されます。このパッケージのサブプログラムを起動し、比較結果のスキャンを指定すると、比較結果が変更される場合があります。たとえば、RECHECKファンクションを実行すると、比較結果が変更される場合があります。

COMPAREファンクションを1回実行したときの比較結果に、1回以上のスキャンが含まれている場合があります。スキャンでは、共有データベース・オブジェクトの一部またはすべての行で、特定の時点における違いが確認されます。データベース・オブジェクトは複数回比較することができ、比較結果の各スキャンは一意のスキャンIDによって識別されます。

バケットは、比較されるデータベース・オブジェクトの行の範囲です。バケットでは、データベース・オブジェクトが複数の範囲に分割され、それらの範囲が別々に比較されるため、パフォーマンスが向上します。すべての比較では、比較対象の行が適切な数のバケットに分割され、各バケットがスキャンによって比較されます。

COMPAREファンクションによって、バケットが小さいバケットに分割されるたびに、それらの小さいバケットのスキャンが新しく実行されます。大きいバケットを分析するスキャンは、大きいバケットが分割されて生成された小さいバケットを分析する各スキャンの親スキャンとなります。比較結果のルート・スキャンは、最上位の親スキャンです。ルート・スキャンに親スキャンはありません。

スキャンを再チェックするにはRECHECKファンクションを使用し、スキャンを収束するにはCONVERGEプロシージャを使用します。比較結果のすべての行を再チェックまたは収束する場合は、適切なサブプログラムの比較結果にルート・スキャンIDを指定します。比較結果の一部の行を再チェックまたは収束する場合は、相違点が含まれているスキャンのスキャンIDを指定します。

関連項目:
スキャン、バケット、親スキャンおよびルート・スキャンの詳細情報などの比較の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

DBMS_COMPARISONパッケージの各サブプログラムには、comparison_nameパラメータがあります。現行のユーザーは、DBMS_COMPARISONパッケージのサブプログラムを実行する場合、指定した比較の所有者である必要があります。

COMPAREファンクション、RECHECKファンクションまたはCONVERGEプロシージャを実行するには、次のユーザーが共有データベース・オブジェクトのコピーごとにSELECTまたはREAD権限を持っている必要があります。

- ローカル・データベースの比較の所有者

- 比較の所有者がデータベース・リンクを介して接続するリモート・データベースのユーザー(データベース・リンクを使用する場合)

CONVERGEプロシージャには、共有データベース・オブジェクトに対する変更を行うデータベースのいずれかのユーザーに対して追加の権限も必要です。このユーザーは、このデータベースの共有データベース・オブジェクトに対するINSERT、UPDATEおよびDELETE権限を持っている必要があります。

また、CONVERGEプロシージャが、NULL以外の値に設定されたlocal_converge_tagまたはremote_converge_tagパラメータで実行されるとき、次の要件も満たしている必要があります。

- ローカル表が優先される場合は、CONVERGEプロシージャの実行者がデータベース・リンクを通じて接続するリモート・データベースのユーザーにDBMS_STREAMS_ADMパッケージのEXECUTE_CATALOG_ROLEまたはEXECUTE権限を付与する必要があります。

- リモート表が優先される場合は、ローカル・データベースのCONVERGEプロシージャ実行者にDBMS_STREAMS_ADMパッケージのEXECUTE_CATALOG_ROLEまたはEXECUTE権限を付与する必要があります。

注意:
データベース管理者(DBA)は、他のユーザーが所有する一部のDBMS_COMPARISONファンクションおよびプロシージャを制御することができます。DROP_COMPARISONとPURGE_COMPARISONも制御の対象になります。DBAによるオーバーライドは、別のユーザーが作成した比較を削除する必要があるクリーンアップ操作で特に有用です。

定数

DBMS_COMPARISONパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります。たとえば、DBMS_COMPARISON.CMP_SCAN_MODE_FULLです。

表35-1に、パラメータおよび列挙定数の一覧を示します。

表35-1 DBMS_COMPARISONパラメータおよび列挙定数

パラメータ

オプション

タイプ

説明

comparison_mode

- CMP_COMPARE_MODE_OBJECT

VARCHAR2(30)

CMP_COMPARE_MODE_OBJECTは、データベース・オブジェクトです。この定数は、'OBJECT'のように指定できます。

scan_mode

- CMP_SCAN_MODE_FULL

- CMP_SCAN_MODE_RANDOM

- CMP_SCAN_MODE_CYCLIC

- CMP_SCAN_MODE_CUSTOM

VARCHAR2(30)

CMP_SCAN_MODE_FULLは、データベース・オブジェクト全体が比較されることを示します。この定数は、'FULL'のように指定できます。

CMP_SCAN_MODE_RANDOMは、データベース・オブジェクトの一部がランダムに比較されることを示します。この定数は、'RANDOM'のように指定できます。

CMP_SCAN_MODE_CYCLICは、比較を1回実行した場合、データベース・オブジェクトの一部が比較されることを示します。データベース・オブジェクトを再度比較すると、前回の比較が終了した場所から、データベース・オブジェクトの別の部分が比較されます。この定数は、'CYCLIC'のように指定できます。

CMP_SCAN_MODE_CUSTOMは、サブプログラムを実行するユーザーが、データベース・オブジェクトで比較する範囲を指定することを示します。この定数は、'CUSTOM'のように指定できます。

converge_options

- CMP_CONVERGE_LOCAL_WINS

- CMP_CONVERGE_REMOTE_WINS

VARCHAR2(30)

CMP_CONVERGE_LOCAL_WINSは、ローカル・データベースの列の値とリモート・データベースの列の値が異なる場合、リモート・データベースの列の値がローカル・データベースの列の値に置き換えられることを示します。この定数は、'LOCAL'のように指定できます。

CMP_CONVERGE_REMOTE_WINSは、ローカル・データベースの列の値とリモート・データベースの列の値が異なる場合、ローカル・データベースの列の値がリモート・データベースの列の値に置き換えられることを示します。この定数は、'REMOTE'のように指定できます。

null_value

- CMP_NULL_VALUE_DEF

VARCHAR2(100)

CMP_NULL_VALUE_DEFは、比較時にデータベース・オブジェクトのNULL値がORA$STREAMS$NVに置き換えられることを示します。この定数は、'ORA$STREAMS$NV'のように指定できます。

max_num_buckets

- CMP_MAX_NUM_BUCKETS

INTEGER

CMP_MAX_NUM_BUCKETSは、バケットの最大数が1,000であることを示します。この定数は、1000のように指定できます。

min_rows_in_bucket

- CMP_MIN_ROWS_IN_BUCKET

INTEGER

CMP_MIN_ROWS_IN_BUCKETは、バケット内の行の最小数が10,000であることを示します。この定数は、10000のように指定できます。

ビュー

DBMS_COMPARISONパッケージでは、次のビューが使用されます。

- DBA_COMPARISON

- USER_COMPARISON

- DBA_COMPARISON_COLUMNS

- USER_COMPARISON_COLUMNS

- DBA_COMPARISON_SCAN

- USER_COMPARISON_SCAN

- DBA_COMPARISON_SCAN_VALUES

- USER_COMPARISON_SCAN_VALUES

- DBA_COMPARISON_ROW_DIF

- USER_COMPARISON_ROW_DIF

関連項目:
『Oracle Databaseリファレンス』

使用上の注意

この項では、DBMS_COMPARISONパッケージの次の使用上の注意について説明します。

- DBMS_COMPARISONパッケージのOracle Databaseリリース要件

- DBMS_COMPARISONパッケージのデータベース・キャラクタ・セット要件

- DBMS_COMPARISONパッケージのデータベース・オブジェクト要件

- DBMS_COMPARISONパッケージの索引列要件

- DBMS_COMPARISONパッケージのデータ・タイプ要件

- 更新されない行のみの収束

DBMS_COMPARISONパッケージのOracle Databaseリリース要件

DBMS_COMPARISONパッケージのサブプログラムを実行する場合は、次のOracle Databaseリリース要件を満たしている必要があります。

- DBMS_COMPARISONのサブプログラムを実行するローカル・データベースは、Oracle Database 11gリリース1(11.1)のデータベースである必要があります。

- リモート・データベースは、Oracle Database 10gリリース1(10.1)以上のデータベースである必要があります。このリリースより前のOracle DatabaseおよびOracle以外のデータベースは、サポートされていません。

DBMS_COMPARISONパッケージのデータベース・キャラクタ・セット要件

データベース・キャラクタ・セットは、比較対象のデータベース・オブジェクトが含まれているデータベースのものと同じである必要があります。

関連項目:
データベース・キャラクタ・セットの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

DBMS_COMPARISONパッケージのデータベース・オブジェクト要件

DBMS_COMPARISONパッケージでは、次のタイプのデータベース・オブジェクトを比較できます。

- 表

- 単一表ビュー

- マテリアライズド・ビュー

- 表、単一表ビューおよびマテリアライズド・ビューのシノニム

様々なデータベースで、様々なタイプのデータベース・オブジェクトを比較および収束できます。たとえば、このパッケージを使用すると、あるデータベースの表と別のデータベースのマテリアライズド・ビューを比較および収束できます。

DBMS_COMPARISONパッケージのサブプログラムを実行するには、指定したデータベース・オブジェクトが各データベースで同じ形状をしている必要があります。具体的には、データベース・オブジェクトは各データベースで同数の列を持ち、対応する列のデータ・タイプが一致している必要があります。

比較されるデータベース・オブジェクトに、その他のデータベース・オブジェクトに存在しない列が含まれている場合は、比較の作成時に余分な列を除外することによってデータベース・オブジェクトを比較できます。両方のデータベース・オブジェクトに存在する列のみを表示するには、CREATE_COMPARISONプロシージャでcolumn_listパラメータを使用します。

関連項目:
CREATE_COMPARISONプロシージャ

DBMS_COMPARISONパッケージの索引列要件

この項では、数値、タイムスタンプおよび時間隔の列について説明します。これらには、次のデータ・タイプのものが含まれます。

- 数値列のデータ・タイプは、NUMBER、FLOAT、BINARY_FLOAT、およびBINARY_DOUBLEです。

- タイムスタンプ列のデータ・タイプは、TIMESTAMP、TIMESTAMP WITH TIME ZONE、およびTIMESTAMP WITH LOCAL TIME ZONEです。

- 期間列のデータ・タイプは、INTERVAL YEAR TO MONTHおよびINTERVAL DAY TO SECONDです。

DBMS_COMPARISONパッケージですべてのスキャン・モードがサポートされるには、データベース・オブジェクトに次のいずれかのタイプの索引が必要です。

- 数値、タイムスタンプまたはDATEデータ・タイプの列に対する単一列索引。

- 数値、タイムスタンプ、時間隔またはDATEデータ・タイプの列のみが含まれているコンポジット索引。コンポジット索引内の各列は、NOT NULL制約を含んでいるか、または主キーの一部である必要があります。

CMP_SCAN_MODE_FULLおよびCMP_SCAN_MODE_CUSTOMがサポートされるには、データベース・オブジェクトに次のいずれかのタイプの索引が必要です。

- 数値、タイムスタンプ、期間、DATE、VARCHAR2、またはCHARの各データ・タイプの列に対する単一列索引。

- 数値、タイムスタンプ、時間隔、DATE、VARCHAR2またはCHARの列のみが含まれているコンポジット索引。コンポジット索引内の各列は、NOT NULL制約を含んでいるか、または主キーの一部である必要があります。

データベース・オブジェクトにこれらのタイプの索引のいずれかが含まれていない場合、そのデータベース・オブジェクトはDBMS_COMPARISONパッケージではサポートされません。たとえば、データベース・オブジェクトにNVARCHAR2列に対する単一索引のみが含まれている場合、そのデータベース・オブジェクトはDBMS_COMPARISONパッケージではサポートされません。また、データベース・オブジェクトに1つのみの索引が含まれていて、その索引がNUMBER列およびNCHAR列を含むコンポジット索引である場合、そのデータベース・オブジェクトはDBMS_COMPARISONパッケージではサポートされません。

CREATE_COMPARISONプロシージャでindex_schema_nameおよびindex_nameパラメータを使用して比較を作成すると、索引を指定できます。索引を指定する場合は、索引の列が、比較に使用されるスキャン・モードの要件を満たしていることを確認してください。

比較の索引列は、比較に関連するすべての行を一意に識別する必要があります。次の制約は、この要件を満たしている必要があります。

- 主キー制約

- 1つ以上のNULL以外の列に対する一意制約

これらの制約が表に存在しない場合は、CREATE_COMPARISONプロシージャでindex_schema_nameおよびindex_nameパラメータを使用して、この要件を満たす列を含む索引を指定できます。

単一の索引値によってローカル行およびリモート行の両方が識別される場合、それらの行はレプリケーション表の同じ行のコピーである必要があります。また、同じ行のコピーの各ペアの索引値は常に同じである必要があります。

CREATE_COMPARISONプロシージャを使用して比較を作成するときは、索引内のすべての列がcolumn_listパラメータに含まれている場合にのみDBMS_COMPARISONパッケージで索引を使用できます。

比較の作成後、次の問合せを実行して索引列(複数も可)を特定できます。

SELECT COLUMN_NAME, COLUMN_POSITION FROM DBA_COMPARISON_COLUMNS
WHERE COMPARISON_NAME = 'COMPARE_CUSTOM' AND
INDEX_COLUMN    = 'Y';

2つ以上の索引列が存在する場合は、COLUMN_POSITIONに1が指定されている索引列がコンポジット索引の先頭の索引列となります。

関連項目:

- スキャン・モードについては、「定数」を参照してください。

- 比較用の索引の指定方法については、「CREATE_COMPARISONプロシージャ」を参照してください。

DBMS_COMPARISONパッケージのデータ・タイプ要件

DBMS_COMPARISONパッケージでは、次のデータ・タイプの列のデータを比較できます。

- VARCHAR2

- NVARCHAR2

- NUMBER

- FLOAT

- DATE

- BINARY_FLOAT

- BINARY_DOUBLE

- TIMESTAMP

- TIMESTAMP WITH TIME ZONE

- TIMESTAMP WITH LOCAL TIME ZONE

- INTERVAL YEAR TO MONTH

- INTERVAL DAY TO SECOND

- RAW

- CHAR

- NCHAR

TIMESTAMP WITH LOCAL TIME ZONEデータ・タイプの列を比較する場合、2つのデータベースで同じタイムゾーンが使用されている必要があります。また、データ・タイプNVARCHAR2またはNCHARの列を比較する場合、2つのデータベースで同じ各国語キャラクタ・セットが使用される必要があります。

DBMS_COMPARISONパッケージでは、次のデータ・タイプの列のデータは比較できません。

- LONG

- LONG RAW

- ROWID

- UROWID

- CLOB

- NCLOB

- BLOB

- BFILE

- ユーザー定義タイプ(オブジェクト・タイプ、REF、VARRAY、ネストした表など)

- オラクル社提供のタイプ(任意のタイプ、XMLタイプ、空間タイプ、メディア・タイプなど)

比較の作成時にサポートされていない列を除外することによって、サポートされていない列が含まれているデータベース・オブジェクトを比較できます。共有データベース・オブジェクトでサポートされている列のみを表示するには、CREATE_COMPARISONプロシージャでcolumn_listパラメータを使用します。

関連項目:

- CREATE_COMPARISONプロシージャ

- データ型の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

- 各国語キャラクタ・セットの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

更新されない行のみの収束

いずれのデータベースでも更新されない行のみを収束する必要があります。たとえば、共有データベース・オブジェクトがレプリケーション・コンポーネントによって更新される場合は、レプリケーションの変更が適用されている行のみを収束し、これらの行に対する新しい変更がレプリケートされていないことを確認します。レプリケートされたデータベース・オブジェクトを比較する場合は、通常、レプリケーション・アクティビティが少ないか、またはまったくない期間に比較して、永続的な相違点を識別することをお薦めします。

注意:
スキャンによって、2つのデータベースの共有データベース・オブジェクトの行が異なることが識別され、スキャン後にその行が変更された場合、CONVERGEプロシージャを実行すると、その行によって予期しないデータが戻される可能性があります。

関連項目:
Oracle Streamsレプリケーション環境でのDBMS_COMPARISONパッケージの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

データ構造

DBMS_COMPARISONパッケージは、レコード・タイプを定義します。

レコード・タイプ

- COMPARISON_TYPEレコード・タイプ

COMPARISON_TYPEレコード・タイプ

DBMS_COMPARISONパッケージのCOMPAREファンクションまたはCONVERGEプロシージャによって戻される情報が含まれています。

注意:
COMPAREファンクションは、scan_idフィールドの値のみを戻します。

構文

TYPE COMPARISON_TYPE IS RECORD(
scan_id            NUMBER,
loc_rows_merged    NUMBER,
rmt_rows_merged    NUMBER,
loc_rows_deleted   NUMBER,
rmt_rows_deleted   NUMBER);

フィールド

表35-2 COMPARISON_TYPE属性

フィールド

説明

scan_id

スキャンのスキャンID

loc_rows_merged

リモート・サイトのデータベース・オブジェクトからの情報で更新されたローカル・データベース・オブジェクトの行の数

rmt_rows_merged

ローカル・サイトのデータベース・オブジェクトからの情報で、リモート・サイトで更新されたデータベース・オブジェクトの行の数

loc_rows_deleted

ローカル・データベース・オブジェクトから削除された行の数

rmt_rows_deleted

リモート・データベース・オブジェクトから削除された行の数

DBMS_COMPARISONサブプログラムの要約

表35-3 DBMS_COMPARISONパッケージのサブプログラム

サブプログラム

説明

COMPAREファンクション

指定した比較を実行します。

CONVERGEプロシージャ

指定したスキャンで比較されたデータベース・オブジェクトの一部を同期化するために、データ操作言語(DML)の変更を実行します。

CREATE_COMPARISONプロシージャ

比較を作成します。

DROP_COMPARISONプロシージャ

比較を削除します。

PURGE_COMPARISONプロシージャ

比較のために、比較結果または比較結果のサブセットをパージします。

RECHECKファンクション

比較のために指定したスキャンで相違点を再チェックします。

COMPAREファンクション

このファンクションは、指定した比較を実行します。

比較を実行するたびに新しいスキャンが1回以上実行され、各スキャンには一意のスキャンIDがあります。CREATE_COMPARISONプロシージャを使用すると、比較を定義し、名前を付けることができます。

関連項目:

- 「概要」

- CREATE_COMPARISONプロシージャ

構文

DBMS_COMPARISON.COMPARE(
comparison_name  IN   VARCHAR2,
scan_info        OUT  COMPARISON_TYPE,
min_value        IN   VARCHAR2   DEFAULT NULL,
max_value        IN   VARCHAR2   DEFAULT NULL,
perform_row_dif  IN   BOOLEAN    DEFAULT FALSE)
RETURN BOOLEAN;

パラメータ

表35-4 COMPAREファンクションのパラメータ

パラメータ

説明

comparison_name

比較の名前。

scan_info

COMPARISON_TYPEデータ・タイプに戻される比較操作に関する情報。

「COMPARISON_TYPEレコード・タイプ」を参照してください。

min_value

比較のスキャン・モードがCMP_SCAN_MODE_CUSTOMに設定されている場合は、比較される行の範囲に最小の索引列値を指定します。比較対象の索引列を決定するには、DBA_COMPARISON_COLUMNSデータ・ディクショナリ・ビューを問い合せます。コンポジット索引の場合は、DBA_COMPARISON_COLUMNSビューで、column_positionが1の列の値を指定します。「DBMS_COMPARISONパッケージの索引列要件」を参照してください。

スキャン・モードがCMP_SCAN_MODE_CUSTOM以外の値に設定されている場合は、このパラメータをNULLに設定する必要があります。

scan_modeパラメータがCMP_SCAN_MODE_CUSTOMに設定されている場合にNULLに設定すると、エラーが発生します。

比較対象のスキャン・モードを決定するには、DBA_COMPARISONデータ・ディクショナリ・ビューを問い合せます。

スキャン・モードについては、「定数」を参照してください。

max_value

比較のスキャン・モードがCMP_SCAN_MODE_CUSTOMに設定されている場合は、比較される行の範囲に最大の索引列値を指定します。比較対象の索引列を決定するには、DBA_COMPARISON_COLUMNSデータ・ディクショナリ・ビューを問い合せます。コンポジット索引の場合は、DBA_COMPARISON_COLUMNSビューで、column_positionが1の列の値を指定します。「DBMS_COMPARISONパッケージの索引列要件」を参照してください。

スキャン・モードがCMP_SCAN_MODE_CUSTOM以外の値に設定されている場合は、このパラメータをNULLに設定する必要があります。

scan_modeパラメータがCMP_SCAN_MODE_CUSTOMに設定されている場合にNULLに設定すると、エラーが発生します。

比較対象のスキャン・モードを決定するには、DBA_COMPARISONデータ・ディクショナリ・ビューを問い合せます。

スキャン・モードについては、「定数」を参照してください。

perform_row_dif

TRUEの場合は、比較用の許容最小バケットに達した後、比較対象のデータベース・オブジェクトの各行を別々に比較します。

FALSEの場合は、バケットの相違点を比較します。ただし、許容最小バケット内で相違点が検出された場合、各行の個別比較は行われません。

バケットの詳細は、「概要」を参照してください。

戻り値

このファンクションは、比較対象のデータベース・オブジェクトで相違点が検出されなかった場合はTRUEを戻します。また、比較されるデータベース・オブジェクトで相違点が検出された場合はFALSEを戻します。

CONVERGEプロシージャ

このプロシージャは、指定したスキャンで比較されたデータベース・オブジェクトの一部を同期化するために、データ操作言語(DML)の変更を実行します。

構文

DBMS_COMPARISON.CONVERGE(
comparison_name      IN   VARCHAR2,
scan_id              IN   NUMBER,
scan_info            OUT  COMPARISON_TYPE,
converge_options     IN   VARCHAR2  DEFAULT CMP_CONVERGE_LOCAL_WINS,
perform_commit       IN   BOOLEAN   DEFAULT TRUE,
local_converge_tag   IN   RAW       DEFAULT NULL,
remote_converge_tag  IN   RAW       DEFAULT NULL);

パラメータ

表35-5 CONVERGEプロシージャのパラメータ

パラメータ

説明

comparison_name

比較の名前。

scan_id

収束されるデータベース・オブジェクト間での相違点が含まれているスキャンの識別子。

このパラメータでスキャンIDを指定する方法の詳細は、「概要」を参照してください。

scan_info

COMPARISON_TYPEデータ・タイプに戻される収束操作に関する情報。

「COMPARISON_TYPEレコード・タイプ」を参照してください。

converge_options

CMP_CONVERGE_LOCAL_WINS定数またはCMP_CONVERGE_REMOTE_WINS定数のいずれか。

これらの定数の詳細は、「定数」を参照してください。

perform_commit

TRUEの場合は、DMLの変更時に定期的にCOMMITを実行します。このパラメータをTRUEに設定すると、CONVERGEプロシージャでCOMMITが2回以上実行される場合があります。

FALSEの場合は、DMLの変更時にCOMMITを実行しません。

local_converge_tag

収束されるデータベース・オブジェクトでデータを収束するための変更を行う前に、ローカル・データベース上のセッションに設定するOracle Streamsタグ。

このパラメータ設定は、NULL以外の場合、比較を作成したCREATE_COMPARISONプロシージャのlocal_converge_tagパラメータより優先されます。

NULLの場合、このパラメータは無視され、比較を作成したCREATE_COMPARISONプロシージャのlocal_converge_tagパラメータが使用されます。

このパラメータに関連したセキュリティ要件の詳細は、「セキュリティ・モデル」を、またタグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

remote_converge_tag

収束されるデータベース・オブジェクトでデータを収束するための変更を行う前に、リモート・データベース上のセッションに設定するOracle Streamsタグ。

このパラメータ設定は、NULL以外の場合、比較を作成したCREATE_COMPARISONプロシージャのremote_converge_tagパラメータより優先されます。

NULLの場合、このパラメータは無視され、比較を作成したCREATE_COMPARISONプロシージャのremote_converge_tagパラメータが使用されます。

このパラメータに関連したセキュリティ要件の詳細は、「セキュリティ・モデル」を、またタグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

使用上の注意

収束されるデータベース・オブジェクトのいずれかが読取り専用のマテリアライズド・ビューである場合は、その読取り専用のマテリアライズド・ビューが収束操作で優先されるようにconverge_optionsパラメータを設定する必要があります。CONVERGEプロシージャで読取り専用のマテリアライズド・ビューに対する変更を試行すると、エラーが発生します。

CREATE_COMPARISONプロシージャ

このプロシージャは、比較を作成します。

構文

DBMS_COMPARISON.CREATE_COMPARISON(
comparison_name      IN  VARCHAR2,
schema_name          IN  VARCHAR2,
object_name          IN  VARCHAR2,
dblink_name          IN  VARCHAR2,
index_schema_name    IN  VARCHAR2  DEFAULT NULL,
index_name           IN  VARCHAR2  DEFAULT NULL,
remote_schema_name   IN  VARCHAR2  DEFAULT NULL,
remote_object_name   IN  VARCHAR2  DEFAULT NULL,
comparison_mode      IN  VARCHAR2  DEFAULT CMP_COMPARE_MODE_OBJECT,
column_list          IN  VARCHAR2  DEFAULT '*',
scan_mode            IN  VARCHAR2  DEFAULT CMP_SCAN_MODE_FULL,
scan_percent         IN  NUMBER    DEFAULT NULL,
null_value           IN  VARCHAR2  DEFAULT CMP_NULL_VALUE_DEF,
local_converge_tag   IN  RAW       DEFAULT NULL,
remote_converge_tag  IN  RAW       DEFAULT NULL,
max_num_buckets      IN  NUMBER    DEFAULT CMP_MAX_NUM_BUCKETS,
min_rows_in_bucket   IN  NUMBER    DEFAULT CMP_MIN_ROWS_IN_BUCKET);

パラメータ

表35-6 CREATE_COMPARISONプロシージャのパラメータ

パラメータ

説明

comparison_name

比較の名前。

schema_name

比較するローカル・データベース・オブジェクトが含まれているスキーマの名前。

object_name

比較するローカル・データベース・オブジェクトの名前。

dblink_name

リモート・データベースへのデータベース・リンク。リモート・データベースに指定されたデータベース・オブジェクトは、ローカル・データベースのデータベース・オブジェクトと比較されます。

NULLの場合は、ローカル・データベースの2つのデータベース・オブジェクトを比較するように比較が構成されます。この場合、リモート・データベース・オブジェクトを指定するパラメータは、比較の2番目のデータベース・オブジェクトおよび2番目のデータベース・オブジェクトに対する操作に適用されます。たとえば、remote_schema_nameおよびremote_object_nameパラメータを使用して、このプロシージャの2番目のデータベース・オブジェクトを指定します。

index_schema_name

索引が含まれているスキーマの名前。

NULLの場合は、schema_nameパラメータで指定されているスキーマが使用されます。

index_name

索引の名前。

NULLの場合は、比較用の索引列がシステムによって自動的に決定されます。

index_schema_nameパラメータがNULL以外の場合は、index_nameパラメータもNULL以外にする必要があります。そうでない場合は、エラーが発生します。

関連項目: 索引の指定方法の詳細は、「使用上の注意」を参照してください。

remote_schema_name

リモート・データベースのデータベース・オブジェクトが含まれているスキーマの名前。2つのデータベースでスキーマ名が異なる場合は、NULL以外の値を指定します。

NULLの場合は、schema_nameパラメータで指定されているスキーマが使用されます。

remote_object_name

リモート・データベースのデータベース・オブジェクトの名前。2つのデータベースでデータベース・オブジェクト名が異なる場合は、NULL以外の値を指定します。

NULLの場合は、object_nameパラメータで指定されているデータベース・オブジェクトが使用されます。

comparison_mode

デフォルト値のCMP_COMPARE_MODE_OBJECTを指定します。今後のリリースで、モードが追加される可能性があります。

column_list

比較されるデータベース・オブジェクトにすべての列を含めるには、'*'を指定します。

データベース・オブジェクトの列のサブセットを比較するには、チェックする列をカンマで区切ったリストを指定します。リストに含まれていない列は、比較時および収束時に無視されます。

column_listパラメータで必要な列については、「使用上の注意」を参照してください。

scan_mode

CMP_SCAN_MODE_FULL、CMP_SCAN_MODE_RANDOM、CMP_SCAN_MODE_CYCLICまたはCMP_SCAN_MODE_CUSTOMのいずれか。

CMP_SCAN_MODE_CUSTOMを指定した場合は、index_schema_nameおよびindex_nameパラメータを使用して索引を指定してください。索引を指定すると、COMPAREまたはRECHECKファンクションの実行時に、先頭の索引列に正しいmax_valueおよびmax_valueの値を指定できます。

これらの定数の詳細は、「定数」を参照してください。

scan_percent

scan_modeパラメータがCMP_SCAN_MODE_RANDOMまたはCMP_SCAN_MODE_CYCLICのいずれかに設定されている場合に、比較用にスキャンするデータベース・オブジェクトの割合。これらのscan_mode設定では、0(ゼロ)より大きく、100より小さいNULL以外の値が必要です。

scan_modeパラメータがCMP_SCAN_MODE_FULLに設定されている場合にNULLに設定すると、データベース・オブジェクト全体が比較用にスキャンされます。

scan_modeパラメータがCMP_SCAN_MODE_CUSTOMに設定されている場合にNULLに設定すると、COMPAREファンクションの実行時に比較用にスキャンされるデータベース・オブジェクトの一部が指定されます。

scan_modeパラメータがCMP_SCAN_MODE_FULLまたはCMP_SCAN_MODE_CUSTOMに設定されている場合にNULL以外に設定すると、scan_percentパラメータは無視されます。

注意: scan_percentパラメータがNULL以外に設定されており、比較用の先頭の索引列によってデータベース・オブジェクトの行が均等に配布されない場合は、比較対象のデータベース・オブジェクトの一部が、指定したscan_percentの値より小さくなるか、または大きくなることがあります。先頭の索引列の詳細は、「DBMS_COMPARISONパッケージの索引列要件」を参照してください。

null_value

比較されるデータベース・オブジェクトの各NULLのかわりに使用される値。値を指定するか、またはCMP_NULL_VALUE_DEF定数を使用します。

比較される列にNULLを含めることができる場合は、その列のNULL以外の値とは異なる値をこのパラメータに指定する必要があります。そうしない場合、このパラメータに指定した値を列に表示したときに、行の相違点が検出されないことがあります。

この定数の詳細は、「定数」を参照してください。

local_converge_tag

比較されるデータベース・オブジェクトでデータを収束するための変更を行う前に、ローカル・データベース上のセッションに設定するOracle Streamsタグ。

この比較の結果が収束される際にCONVERGEプロシージャのlocal_converge_tagパラメータがNULL以外である場合は、CONVERGEプロシージャの設定が優先されます。詳細は、「CONVERGEプロシージャ」を参照してください。

タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

remote_converge_tag

比較されるデータベース・オブジェクトでデータを収束するための変更を行う前に、リモート・データベース上のセッションに設定するOracle Streamsタグ。

この比較の結果が収束される際にCONVERGEプロシージャのremote_converge_tagパラメータがNULL以外である場合は、CONVERGEプロシージャの設定が優先されます。詳細は、「CONVERGEプロシージャ」を参照してください。

タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

max_num_buckets

使用するバケットの最大数を指定します。値を指定するか、またはCMP_MAX_NUM_BUCKETS定数を使用します。この定数の詳細は、「定数」を参照してください。

バケットの詳細は、「概要」を参照してください。

注意: 比較用の索引列がVARCHAR2またはCHAR列の場合は、バケットの数がmax_num_bucketsパラメータに指定された値を超えることがあります。

min_rows_in_bucket

各バケットの行の最小数を指定します。値を指定するか、またはCMP_MIN_ROWS_IN_BUCKET定数を使用します。この定数の詳細は、「定数」を参照してください。

バケットの詳細は、「概要」を参照してください。

使用上の注意

この項では、CREATE_COMPARISONプロシージャの使用上の注意について説明します。

index_schema_nameおよびindex_nameパラメータの使用上の注意

index_schema_nameおよびindex_nameパラメータを使用して比較用の索引を指定すると、指定した索引によって比較の索引列およびその順序付けが決定されます。指定した索引の列の順序によって、比較用の索引列の順序付けが決定されます。したがって、索引の列位置1にある列が比較用の先頭列となります。

索引列およびその順序付けによって、比較用に生成および実行される各SQL文の詳細が影響を受けます。各SQL文に対して、索引を使用するかどうかがオプティマイザによって決定されます。オプティマイザでは、索引の使用の決定時に、使用する特定の索引も決定されます。column_listパラメータに指定された索引が使用される場合も、使用されない場合もあります。

指定した索引の列は、「DBMS_COMPARISONパッケージの索引列要件」に示されている要件を満たしている必要があります。索引列がこれらの要件を満たしていない場合は、エラーが発生します。

注意:
比較の作成時に索引を指定しなかった場合、CREATE_COMPARISONプロシージャは主キー(存在する場合)または既存の一意の索引のいずれかを選択します。このプロシージャが一意でない索引を選択することはありません。ただし、索引を指定した場合、CREATE_COMPARISONプロシージャは索引の一意性をチェックしません。したがって、索引キーが重複して存在する場合に一意でない索引を選択すると、CONVERGEプロシージャでデータを同期化したときに、結果が不適切になる可能性があります。

column_listパラメータの使用上の注意

column_listパラメータを'*'以外の値に設定する場合、column_listパラメータには次の列が必要です。

- DBMS_COMPARISONパッケージの索引列要件を満たすために必要な列。index_nameパラメータがNULL以外の場合は、指定した索引の列が列リストに含まれている必要があります。index_nameパラメータがNULLの場合は、「DBMS_COMPARISONパッケージの索引列要件」を参照してください。

- CONVERGEプロシージャを使用して、比較に基づいてデータベース・オブジェクトを変更する場合は、NOT NULL制約が含まれ、デフォルト値は含まれていないデータベース・オブジェクト内の列が、列リストに含まれている必要があります。これらの列が含まれていない場合、CONVERGEプロシージャはエラーを戻します。詳細は、「CONVERGEプロシージャ」を参照してください。

DROP_COMPARISONプロシージャ

このプロシージャは、比較を削除します。

構文

DBMS_COMPARISON.DROP_COMPARISON(
comparison_name  IN  VARCHAR2);

パラメータ

表35-7 DROP_COMPARISONプロシージャのパラメータ

パラメータ

説明

comparison_name

比較の名前。

PURGE_COMPARISONプロシージャ

このプロシージャは、比較のために、比較結果または比較結果のサブセットをパージします。

注意:
少なくともscan_idまたはpurge_timeパラメータのいずれかをNULLに設定する必要があります。scan_idとpurge_timeパラメータの両方をNULLに設定すると、このプロシージャは比較のすべての結果をパージします。

構文

DBMS_COMPARISON.PURGE_COMPARISON(
comparison_name  IN  VARCHAR2,
scan_id          IN  NUMBER     DEFAULT NULL,
purge_time       IN  TIMESTAMP  DEFAULT NULL);

パラメータ

表35-8 PURGE_COMPARISONプロシージャのパラメータ

パラメータ

説明

comparison_name

比較の名前。

scan_id

結果がパージされるスキャンのスキャンID。スキャンIDでルート・スキャンが識別される必要があります。スキャンIDでルート・スキャンが識別されない場合は、エラーが発生します。ルート・スキャンIDが指定されている場合、そのIDはパージされ、指定したルート・スキャンのすべての直接的および間接的な子スキャンもパージされます。

NULLの場合は、比較の結果のパージ時にスキャンIDは考慮されません。

スキャンの詳細は、「概要」を参照してください。

purge_time

この日付より前の結果がパージされます。

NULLの場合は、比較の結果のパージ時に日付は考慮されません。

RECHECKファンクション

このファンクションは、比較のために指定したスキャンで相違点を再チェックします。

このファンクションは、次のいずれかのアクションを実行します。

- 指定したスキャンが前回実行時に正常に完了していた場合、このファンクションは、スキャンで以前に特定された相違点をチェックします。

- 指定したスキャンが部分的に完了していた場合、このファンクションは、以前のスキャンが終了した時点からデータベース・オブジェクトのチェックを継続します。

注意:
このファンクションは、指定した比較スキャンに記録されなかった相違点については共有データベース・オブジェクトを比較しません。これらの相違点をチェックするには、COMPAREファンクションを実行します。

関連項目:

- 『Oracle Streamsレプリケーション管理者ガイド』

- COMPAREファンクション

構文

DBMS_COMPARISON.RECHECK(
comparison_name  IN  VARCHAR2,
scan_id          IN  NUMBER,
perform_row_dif  IN  BOOLEAN  DEFAULT FALSE)
RETURN BOOLEAN;

パラメータ

表35-9 RECHECKファンクションのパラメータ

パラメータ

説明

comparison_name

比較の名前。

scan_id

再チェックするスキャンのスキャンID。

このパラメータでスキャンIDを指定する方法の詳細は、「概要」を参照してください。

perform_row_dif

TRUEの場合は、比較用の許容最小バケットに達した後、比較対象のデータベース・オブジェクトの各行を別々に比較します。

FALSEの場合は、バケットの相違点を比較します。ただし、許容最小バケット内で相違点が検出された場合、各行の個別比較は行われません。

バケットの詳細は、「概要」を参照してください。

戻り値

このファンクションは、比較対象のデータベース・オブジェクトで相違点が検出されなかった場合はTRUEを戻します。また、比較されるデータベース・オブジェクトで相違点が検出された場合はFALSEを戻します。

36 DBMS_COMPRESSION

DBMS_COMPRESSIONパッケージは、アプリケーションの正しい圧縮レベルを簡単に選択できるインタフェースを提供します。

関連項目:

- 『Oracle Database管理者ガイド』

- 『Oracle Database概要』

- 『Oracle Database SQL言語リファレンス』

- 『Oracle Databaseデータ・ウェアハウス・ガイド』

- 『Oracle Database VLDBおよびパーティショニング・ガイド』

- 『Oracle Databaseリファレンス』

この章では、次の項目について説明します。

- DBMS_COMPRESSIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ構造

- DBMS_COMPRESSIONサブプログラムの要約

DBMS_COMPRESSIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

概要

DBMS_COMPRESSIONパッケージは、データベース環境内で圧縮に関連する情報を収集します。これには、パーティション化された表およびパーティション化されていない表について圧縮率を推測し、以前に圧縮された表に関する行レベルの圧縮情報を収集するツールが含まれます。これによって、圧縮に関連した決定を行うための適切な情報が得られます。

セキュリティ・モデル

DBMS_COMPRESSSIONパッケージはAUTHID CURRENT USERで定義されるため、現在のユーザーの権限で実行されます。

定数

DBMS_COMPRESSIONパッケージでは、表36-1「DBMS_COMPRESSIONの定数 - 圧縮タイプ」に示す定数が使用されます。

表36-1 DBMS_COMPRESSIONの定数 - 圧縮タイプ

定数

タイプ

値

説明

COMP_NOCOMPRESS

NUMBER

1

圧縮なし

COMP_ADVANCED

NUMBER

2

詳細圧縮レベル

COMP_QUERY_HIGH

NUMBER

4

問合せ操作のための高圧縮レベル

COMP_QUERY_LOW

NUMBER

8

問合せ操作のための低圧縮レベル

COMP_ARCHIVE_HIGH

NUMBER

16

アーカイブ操作のための高圧縮レベル

COMP_ARCHIVE_LOW

NUMBER

32

アーカイブ操作のための低圧縮レベル

COMP_BLOCK

NUMBER

64

圧縮される行

COMP_LOB_HIGH

NUMBER

128

LOB操作のための高圧縮レベル

COMP_LOB_MEDIUM

NUMBER

256

LOB操作のための中圧縮レベル

COMP_LOB_LOW

NUMBER

512

LOB操作のための低圧縮レベル

COMP_INDEX_ADVANCED_HIGH

NUMBER

1024

索引のための高圧縮レベル

COMP_INDEX_ADVANCED_LOW

NUMBER

2048

索引のための低圧縮レベル

COMP_RATIO_LOB_MINROWS

NUMBER

1000

LOB圧縮率が見積られるオブジェクトの必要最低限のLOB数

COMP_BASIC

NUMBER

4096

基本圧縮レベル

COMP_RATIO_LOB_MAXROWS

NUMBER

5000

LOB圧縮率の計算に使用されるLOBの最大数

COMP_INMEMORY_NOCOMPRESS

NUMBER

8192

インメモリー圧縮なし

COMP_INMEMORY_DML

NUMBER

16384

DMLのためのインメモリー圧縮レベル

COMP_INMEMORY_QUERY_LOW

NUMBER

32768

問合せパフォーマンスのために最適化されたインメモリー圧縮レベル

COMP_INMEMORY_QUERY_HIGH

NUMBER

65536

問合せパフォーマンスおよび領域の節約に対して最適化されたインメモリー圧縮レベル

COMP_INMEMORY_CAPACITY_LOW

NUMBER

32768

容量を最適化するインメモリー低圧縮レベル

COMP_INMEMORY_CAPACITY_HIGH

NUMBER

65536

容量を最適化するインメモリー高圧縮レベル

COMP_RATIO_MINROWS

NUMBER

1000000

HCC比が見積もられるオブジェクトの必要最低限の行数

COMP_RATIO_ALLROWS

NUMBER

-1

オブジェクトのすべての行を使用してHCC比が見積もられたことを示します。

OBJTYPE_TABLE

PLS_INTEGER

1

圧縮率を見積もるオブジェクトをタイプ表として識別します。

OBJTYPE_INDEX

PLS_INTEGER

2

圧縮率が見積もられるオブジェクトをタイプ索引として識別します。

注意:
ハイブリッド列圧縮は特定のOracleストレージ・システムの機能です。詳細は、『Oracle Database概要』を参照してください。

データ構造

DBMS_COMPRESSIONパッケージでは、レコード・タイプと表タイプを定義します。

レコード・タイプ

COMPRECレコード・タイプ

表タイプ

COMPRECLIST表タイプ

COMPRECレコード・タイプ

表の個々の索引圧縮率を計算するためのレコードです。

構文

TYPE COMPREC IS RECORD(
ownname           varchar2(255),
objname           varchar2(255),
blkcnt_cmp        PLS_INTEGER,
blkcnt_uncmp      PLS_INTEGER,
row_cmp           PLS_INTEGER,
row_uncmp         PLS_INTEGER,
cmp_ratio         NUMBER,
objtype           PLS_INTEGER);

フィールド

表36-2 COMPREC属性

フィールド

説明

ownname

オブジェクト所有者のスキーマ。

objname

オブジェクト名。

blkcnt_cmp

オブジェクトの圧縮されたサンプルに使用されるブロック数。

blkcnt_uncmp

オブジェクトの圧縮解除されたサンプルに使用されるブロック数。

row_cmp

オブジェクトの圧縮されたサンプルにあるブロック内の行数。

row_uncmp

オブジェクトの圧縮解除されたサンプルにあるブロック内の行数。

cmp_ratio

圧縮比、blkcnt_uncmpをblkcnt_cmpで割った値。

objtype

オブジェクトのタイプ

COMPRECLIST表タイプ

COMPRECレコード・タイプの表タイプです。

構文

TYPE compreclist IS TABLE OF comprec;

DBMS_COMPRESSIONサブプログラムの要約

表36-3 DBMS_COMPRESSIONパッケージのサブプログラム

サブプログラム

説明

GET_COMPRESSION_RATIOプロシージャ

表の圧縮比を分析し、表の圧縮率に関する情報を提供します。

GET_COMPRESSION_TYPEファンクション

特定の行に対する圧縮タイプを戻します。

GET_COMPRESSION_RATIOプロシージャ

このプロシージャは、表の圧縮比を分析し、表の圧縮率に関する情報を提供します。ユーザーは様々なパラメータを入力して、異なる圧縮タイプを選択的に分析できます。

構文

次のようにオブジェクト(表または索引。デフォルトは表)の圧縮率を取得します。

DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
scratchtbsname        IN     VARCHAR2,
ownname               IN     VARCHAR2,
objname               IN     VARCHAR2,
subobjname            IN     VARCHAR2,
comptype              IN     NUMBER,
blkcnt_cmp            OUT    PLS_INTEGER,
blkcnt_uncmp          OUT    PLS_INTEGER,
row_cmp               OUT    PLS_INTEGER,
row_uncmp             OUT    PLS_INTEGER,
cmp_ratio             OUT    NUMBER,
comptype_str          OUT    VARCHAR2,
subset_numrows        IN     NUMBER  DEFAULT COMP_RATIO_MINROWS,
objtype               IN     PLS_INTEGER DEFAULT OBJTYPE_TABLE);

次のように、LOBの圧縮率を取得します。

DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
scratchtbsname        IN     VARCHAR2,
tabowner              IN     VARCHAR2,
tabname               IN     VARCHAR2,
lobname               IN     VARCHAR2,
partname              IN     VARCHAR2,
comptype              IN     NUMBER,
blkcnt_cmp            OUT    PLS_INTEGER,
blkcnt_uncmp          OUT    PLS_INTEGER,
lobcnt                OUT    PLS_INTEGER,
cmp_ratio             OUT    NUMBER,
comptype_str          OUT    VARCHAR2,
subset_numrows        IN     number DEFAULT COMP_RATIO_LOB_MAXROWS);

表のすべての索引の圧縮率を取得します。圧縮率はコレクションとして戻されます。

DBMS_COMPRESSION.GET_COMPRESSION_RATIO (
scratchtbsname        IN     VARCHAR2,
ownname               IN     VARCHAR2,
tabname               IN     VARCHAR2,
comptype              IN     NUMBER,
index_cr              OUT    compRecList,
comptype_str          OUT    VARCHAR2,
subset_numrows        IN     NUMBER DEFAULT COMP_RATIO_INDEX_MINROWS);

パラメータ

表36-4 GET_COMPRESSION_RATIOプロシージャのパラメータ

パラメータ

説明

scratchtbsname

分析に使用できる一時スクラッチ表領域。

ownname / tabowner

分析する表のスキーマ。

tabname

分析する表の名前。

objname

オブジェクト名。

subobjname

オブジェクトのパーティションまたはサブパーティションの名前。

comptype

分析を実行する対象の圧縮タイプ。

blkcnt_cmp

表の圧縮されたサンプルに使用されるブロック数。

blkcnt_uncmp

表の圧縮解除されたサンプルに使用されるブロック数。

row_cmp

表の圧縮されたサンプルにあるブロック内の行数。

row_uncmp

表の圧縮解除されたサンプルにあるブロック内の行数。

cmp_ratio

圧縮比、blkcnt_uncmpをblkcnt_cmpで割った値。

comptype_str

圧縮タイプを説明する文字列。

subset_numrows

圧縮比を見積もるためにサンプリングされた行数。

objtype

オブジェクトのタイプ。このパッケージに定義されているオブジェクト型を示すには定数である必要があります。

lobname

LOB列名

partname

パーティション化された表の場合は、関連したパーティション名。

lobcnt

圧縮比を見積もるために実際にサンプリングされたLOBの数。

index_cr

索引のリストおよび見積り済の圧縮率。

使用上の注意

プロシージャは、スクラッチ表領域に異なる表を作成し、これらのオブジェクトで分析を実行します。ユーザー指定の表では何も変更しません。

GET_COMPRESSION_TYPEファンクション

このファンクションは、特定の行に対する圧縮タイプを戻します。行が連鎖している場合は、ファンクションは先頭の圧縮タイプのみを戻し、先頭は異なる圧縮が可能であるため、中間や末尾は調べません。

構文

DBMS_COMPRESSION.GET_COMPRESSION_TYPE (
ownname      IN    VARCHAR2,
tabname      IN    VARCHAR2,
row_id       IN    ROWID,
subobjname   IN    VARCHAR2 DEFAULT NULL))
RETURN NUMBER;

パラメータ

表36-5 GET_COMPRESSION_TYPEファンクションのパラメータ

パラメータ

説明

ownname

表のスキーマ名。

tabname

表の名前。

rowid

行のROWID。

subobjname

表パーティションまたは表サブパーティションの名前。

戻り値

圧縮のタイプを示すフラグ(「DBMS_COMPRESSIONの定数: 圧縮タイプ」を参照)。

37 DBMS_CONNECTION_POOL

DBMS_CONNECTION_POOLパッケージは、データベース常駐接続プールを管理するインタフェースを提供します。

関連項目:
データベース常駐接続プールの詳細は、『Oracle Database概要』を参照してください。

この章では、次の項目について説明します。

- DBMS_CONNECTION_POOLサブプログラムの要約

DBMS_CONNECTION_POOLサブプログラムの要約

表37-1 DBMS_CONNECTION_POOLパッケージのサブプログラム

サブプログラム

説明

ALTER_PARAMプロシージャ

特定の構成パラメータをスタンドアロン単位で変更します。他のパラメータは影響を受けません。

CONFIGURE_POOLプロシージャ

拡張オプションでプールを構成します。

START_POOLプロシージャ

操作を行うためにプールを開始します。これがコールされた後に、接続クライアントがプールを使用してセッションを作成できます。

STOP_POOLプロシージャ

プールを停止し、登録されている接続クライアントに対してプールを使用不可にします。

RESTORE_DEFAULTSプロシージャ

プールをデフォルト設定に戻します。

ALTER_PARAMプロシージャ

このプロシージャは、特定の構成パラメータをスタンドアロン単位で変更します。他のパラメータは影響を受けません。

構文

DBMS_CONNECTION_POOL.ALTER_PARAM (
pool_name     IN  VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL',   param_name    IN  VARCHAR2,   param_value   IN  VARCHAR2);

パラメータ

表37-2 ALTER_PARAMプロシージャのパラメータ

パラメータ

説明

pool_name

構成するプール。現在は、デフォルトのプール名のみがサポートされています。

param_name

CONFIGURE_POOLからの任意のパラメータ名。

param_value

param_nameのパラメータ値。

例外

表37-3 ALTER_PARAMプロシージャの例外

例外

説明

ORA-56500

接続プールが見つかりません

ORA-56504

接続プール構成パラメータ名が無効です

ORA-56505

接続プール構成パラメータ値が無効です

ORA-56507

接続プールの変更構成に失敗しました

例

DBMS_CONNECTION_POOL.ALTER_PARAM(
'SYS_DEFAULT_CONNECTION_POOL', 'MAX_LIFETIME_SESSION', '120');

CONFIGURE_POOLプロシージャ

このプロシージャは、拡張オプションでプールを構成します。

構文

DBMS_CONNECTION_POOL.CONFIGURE_POOL (
pool_name                IN VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL',
minsize                  IN NUMBER   DEFAULT 4,
maxsize                  IN NUMBER   DEFAULT 40,
incrsize                 IN NUMBER   DEFAULT 2,
session_cached_cursors   IN NUMBER   DEFAULT 20,
inactivity_timeout       IN NUMBER   DEFAULT 300,
max_think_time           IN NUMBER   DEFAULT 120,
max_use_session          IN NUMBER   DEFAULT 500000,
max_lifetime_session     IN NUMBER   DEFAULT 86400,
num_cbrok                IN NUMBER   DEFAULT 1,
maxconn_cbrok            IN NUMBER   DEFAULT 40000);

パラメータ

表37-4 CONFIGURE_POOLプロシージャのパラメータ

パラメータ

説明

pool_name

構成するプール。現在は、デフォルトのプール名のみがサポートされています。

minsize

プール内にプールされるサーバーの最小数。

maxsize

プール内にプールできるサーバーの最大数。

incrsize

アプリケーションの要求時に、プールされたサーバーが使用不可になっている場合、プールを増大させるプールされたサーバーの数。

session_cached_cursors

プールのすべての接続でSESSION_CACHED_CURSORSを有効にします。これは、既存のinit.oraパラメータです。

inactivity_timeout

プールのアイドル・セッションのTTL(有効期間)。このパラメータは、プールが最大容量まで使用されていないときに、プールを縮小するのに役立ちます。この期間中プール接続がアイドル状態のまま続くと、接続は切断されます。

max_think_time

プールからセッションを取得した後、クライアントが非アクティブな状態を保持する最大時間。プールからサーバーを取得した後にクライアントがデータベース・コールを発行しない場合、プールされたサーバーの制御が強制的に解放され、クライアント側でORA-xxxxxエラーが発生します。解放されたサーバーは、プールに戻される場合と、戻されない場合があります。

max_use_session

接続を取得し、プールに解放できる最大回数。

max_lifetime_session

プールされたセッションのTTL(有効期間)。

num_cbrok

プールの開始時に開始されるブローカ数。

maxconn_brok

各ブローカの最大接続数。

例外

表37-5 CONFIGURE_POOLプロシージャの例外

例外

説明

ORA-56500

接続プールが見つかりません

ORA-56507

接続プールの変更構成に失敗しました

使用上の注意

- 時間はすべて秒単位で指定します。

- すべてのパラメータは、要求パターンの統計に基づいて設定する必要があります。

- minsizeは、サーバー・リソースの消費に下限が設けられることを考慮して設定する必要があります。このパラメータは、非アクティブ期間が短い場合に、タイムアウトによってプールが極端に少なくなることを防ぎます。

- maxsizeは、同時実行性、応答時間およびサーバー・リソースの消費に上限が設けられることを考慮して設定する必要があります。

- session_cached_cursorsは、通常、最も頻繁に使用される文の数に設定されます。これにより、サーバーのカーソル・リソースが占有されます。

- 不確かな場合は、incrementおよびinactivity_timeoutは設定しないでください。プールには、適切なデフォルト値が使用されます。

- max_use_sessionおよびmax_lifetime_sessionは、一定期間に新しいセッションを取得することで、潜在的なバグ、リーク、蓄積、問題などに対してソフトウェアの回復または予防的アプローチを可能にします。

- 接続プールでは、プールされたサーバーの5%が認証のために保持され、少なくとも1つのプールされたサーバーが認証のために常時保持されます。maxsizeパラメータの設定時には、認証と接続の両方に対して十分な数のプールされたサーバーがあることを確認します。

START_POOLプロシージャ

このプロシージャは、操作を行うためにプールを開始します。これがコールされた後に、接続クラスがプールを使用してセッションを作成できます。

構文

DBMS_CONNECTION_POOL.START_POOL (
pool_name  IN  VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL');

パラメータ

表37-6 START_POOLプロシージャのパラメータ

パラメータ

説明

pool_name

開始するプール。現在は、デフォルトのプール名のみがサポートされています。

例外

表37-7 START_POOLプロシージャの例外

例外

説明

ORA-56500

接続プールが見つかりません

ORA-56501

接続プールの起動に失敗しました

使用上の注意

インスタンスを再起動(停止後に起動)すると、プールは自動的に開始されます。

STOP_POOLプロシージャ

このプロシージャは、プールを停止し、登録されている接続クラスに対してプールを使用不可にします。

構文

DBMS_CONNECTION_POOL.STOP_POOL (
pool_name   IN   VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL');

パラメータ

表37-8 STOP_POOLプロシージャのパラメータ

パラメータ

説明

pool_name

停止するプール。現在は、デフォルトのプール名のみがサポートされています。

例外

表37-9 STOP_POOLプロシージャの例外

例外

説明

ORA-56500

接続プールが見つかりません

ORA-56506

接続プールの停止に失敗しました

使用上の注意

このプロシージャにより、プールが停止しオフラインになります。プールに関連付けられた永続的なデータ(プール名、構成パラメータなど)は破損しません。

RESTORE_DEFAULTSプロシージャ

このプロシージャは、プールをデフォルト設定に戻します。

構文

DBMS_CONNECTION_POOL.RESTORE_DEFAULTS (
pool_name   IN  VARCHAR2 DEFAULT 'SYS_DEFAULT_CONNECTION_POOL');

パラメータ

表37-10 RESTORE_DEFAULTSプロシージャのパラメータ

パラメータ

説明

pool_name

戻されるプール。現在は、デフォルトのプール名のみがサポートされています。

例外

表37-11 RESTORE_DEFAULTSプロシージャの例外

例外

説明

ORA-56500

接続プールが見つかりません

ORA-56507

接続プールの変更構成に失敗しました

使用上の注意

インスタンスを再起動(停止後に起動)すると、プールは自動的に開始されます。

38 DBMS_CQ_NOTIFICATION

DBMS_CQ_NOTIFICATIONパッケージは、クライアント・アプリケーションによって指定された問合せに関する登録を作成し、その問合せに関連付けられているオブジェクトでDML変更またはDDL変更が発生した際に通知を受け取る機能を提供するデータベース変更通知機能の一部です。通知は、DMLトランザクションまたはDDLトランザクションのコミット時にデータベースによって発行されます。

関連項目:
データベース変更通知の実装については、『Oracle Database開発ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_CQ_NOTIFICATIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例

- データ構造

- オブジェクト・タイプ

- DBMS_CQ_NOTIFICATIONサブプログラムの要約

DBMS_CQ_NOTIFICATIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例

概要

DBMS_CQ_NOTIFICATIONパッケージは、PL/SQLベースの登録インタフェースを提供します。クライアントは、このインタフェースを使用して、問合せに関する登録を対象となるオブジェクトに基づいて作成し、通知を受け取るPL/SQLコールバック・ハンドラを指定できます。オブジェクト・レベルの登録の場合、登録した問合せに関連付けられているオブジェクトのいずれかがトランザクションによって変更され、そのトランザクションが|COMMIT|されると、それらのオブジェクトの登録時に指定したPL/SQLコールバックが起動されます。このアプリケーションによって、PL/SQLコールバック・ハンドラの実装の内部に、クライアント固有の処理を定義できます。

このインタフェースでは、(BEGIN-ENDブロックと同様の方法で)登録ブロックを定義できます。BEGINフェーズでは、通知の受信者(PL/SQLコールバック・ハンドラの名前)およびその他のいくつかの登録プロパティ(タイムアウトなど)を指定できます。(登録ブロック内で)続いて実行される問合せは優先度が高い問合せとみなされ、問合せの実行時にこれらの問合せによって参照されるオブジェクトが登録されます。登録は、登録ブロックをENDで終了することで完了します。登録ブロックでは、新しい登録の作成および既存の登録へのオブジェクトの追加を行うことができます。

PL/SQLインタフェースで登録を作成すると、RDBMSによって一意の登録IDが割り当てられます。クライアント・アプリケーションは、作成した登録をこの登録IDで追跡できます。RDBMSによって通知が発行されると、この登録IDが通知に含まれます。

通常のアプリケーション

たとえば、この機能は、問合せの結果セットを中間層内の読取り専用のオブジェクトに多くの場合キャッシュして、データベースへのネットワーク上のラウンドトリップを回避するアプリケーションで有効です。このようなアプリケーションでは、キャッシュする必要がある問合せに関する登録を作成できます。それらの問合せ内で参照されているオブジェクトに変更があった場合、元のトランザクションのコミット時に、データベースによって通知が発行されます。この通知に対応して、中間層のアプリケーションは、問合せを再度実行してキャッシュをリフレッシュできます。

セキュリティ・モデル

DBMS_CQ_NOTIFICATIONパッケージを使用して通知を受け取るユーザーは、CHANGE NOTIFICATIONシステム権限およびDBMS_CQ_NOTIFICATIONパッケージに対するEXECUTE権限を付与されている必要があります。

また、このユーザーには、登録するすべてのオブジェクトに対するSELECTまたはREAD権限も必要です。登録の作成時に付与されたオブジェクトに対するSELECTまたはREAD権限を、その後(失効などで)失った場合は、登録がパージされ、そのことが通知されます。

定数

DBMS_CQ_NOTIFICATIONパッケージでは、表38-1に示す定数が使用されます。これらの定数は、登録時または通知受信時のflagパラメータとして使用されます。

DBMS_CQ_NOTIFICATIONパッケージには、次の定数があります。

- EVENT_STARTUP、EVENT_SHUTDOWN、EVENT_SHUTDOWN_ANY、EVENT_DEREGは、データベースによって発行される通知のタイプを示します。

- INSERTOP、DELETEOP、UPDATEOP、ALTEROP、DROPOPおよびUNKNOWNOPは、(データベースによって発行される通知での)表の操作のタイプです。

- QOS_RELIABLE、QOS_DEREG_NFY、QOS_ROWIDsは、クライアントから要求される、登録のサービス品質プロパティを示します。これらは、登録時に指定されます。

表38-1 DBMS_CQ_NOTIFICATIONの定数

名前

タイプ

値

説明

ALL_OPERATIONS

BINARY_INTEGER

0

すべての操作に対する通知(登録時のパラメータとして指定)。

ALL_ROWS

BINARY_INTEGER

1

表内のすべての行が変更された可能性があります。

EVENT_STARTUP

BINARY_INTEGER

1

インスタンス起動通知。

EVENT_SHUTDOWN

BINARY_INTEGER

2

インスタンス停止通知。

EVENT_SHUTDOWN_ANY

BINARY_INTEGER

3

Oracle Real Application Clusters(Oracle RAC)実行時のインスタンスの停止。

EVENT_DEREG

BINARY_INTEGER

5

登録が削除されました。

EVENT_OBJCHANGE

BINARY_INTEGER

6

オブジェクト変更通知。

EVENT_QUERYCHANGE

BINARY_INTEGER

7

問合せ結果セットの変更の通知。

INSERTOP

BINARY_INTEGER

2

挿入操作。

UPDATEOP

BINARY_INTEGER

4

更新操作。

DELETEOP

BINARY_INTEGER

8

削除操作。

ALTEROP

BINARY_INTEGER

16

表の変更。

DROPOP

BINARY_INTEGER

32

表の削除。

UNKNOWNOP

BINARY_INTEGER

64

不明な操作。

QOS_RELIABLE

BINARY_INTEGER

1

信頼性(永続性)のある通知。また、コミットするとオブジェクトが変更されるトランザクションによって、通知が最小単位で持続記憶域に挿入されることも示します。

QOS_DEREG_NFY

BINARY_INTEGER

2

最初の通知時での登録のパージ。

QOS_ROWIDS

BINARY_INTEGER

4

変更した行のROWIDの要求。

QOS_QUERY

BINARY_INTEGER

8

問合せの粒度での登録。

QOS_BEST_EFFORT

BINARY_INTEGER

16

ベスト・エフォートの評価。

NTFN_GROUPING_CLASS_TIME

BINARY_INTEGER

1

時間別の通知のグループ化。

NTFN_GROUPING_TYPE_SUMMARY

BINARY_INTEGER

1

通知の要約のグループ化。

NTFN_GROUPING_TYPE_LAST

BINARY_INTEGER

2

グループ内の最後の通知。

NTFN_GROUPING_FOREVER

BINARY_INTEGER

-1

無期限の通知の繰返し。

使用上の注意

オブジェクト・レベルの登録:

- 通知は、登録されたオブジェクトがトランザクションによって変更され、そのトランザクションがCOMMITでコミットされると、データベースによって発行されます。

- 以前のNEW_REG_STARTまたはENABLE_REGからREG_ENDまでの登録ブロック内で実行された問合せで参照されているすべてのオブジェクトは、優先度が高いオブジェクトとみなされ、登録に追加されます。

問合せ結果の変更の登録:

- 通知は、登録された問合せの結果セットがトランザクションによって変更され、そのトランザクションがCOMMITされると、データベースによって発行されます。

トラブルシューティング

登録の作成後、元の表の変更時に通知が送られていないと考えられる場合は、次の内容を確認します。

- job_queue_processesパラメータが0(ゼロ)以外の値に設定されているかどうか。ハンドラを介してPL/SQL通知を受け取るには、このパラメータを0(ゼロ)以外の値に設定する必要があります。

- SYSユーザー以外のユーザーとして登録を作成しているかどうか。

- 登録されたオブジェクトにDML変更を行う場合、トランザクションをCOMMITでコミットしているかどうか。通知は、トランザクション処理であるため、トランザクションをCOMMITでコミットすると生成されます。

- PL/SQLコールバックの実行時に、実装エラーが原因でランタイム・エラーが発生する可能性があります。その場合は、プロシージャを実行しようとしたJOBQプロセスのトレース・ファイルにエラーが記録されます。通常、トレース・ファイルは、<ORACLE_SID>_j*_<PID>.trcという名前です。'
たとえば、ORACLE_SIDが'dbs1'で、プロセスが12483の場合、トレース・ファイルはdbs1_j000_12483.trcという名前になります。

chnf_callbackを通知ハンドラとし、registration_idに100を指定して登録が作成されているとします。ユーザーがchnf_callbackプロシージャを定義し忘れたとします。この場合、JOBQトレース・ファイルには次の形式のメッセージが含まれます。

Runtime error during execution of PL/SQL cbk chnf_callback for reg CHNF100
Error in PLSQL notification of msgid:
Queue :
Consumer Name :
PLSQL function :chnf_callback
Exception Occured, Error msg:
ORA-00604: error occurred at recursive SQL level 2
ORA-06550: line 1, column 7:
PLS-00201: identifier 'CHNF_CALLBACK' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

関連項目:
データベース変更通知のトラブルシューティングの詳細は、『Oracle Database開発ガイド』を参照してください。

例

オブジェクトの変更の登録例

中間層のアプリケーションに、HR.EMPLOYEES表に関する大量の問合せがあるとします。EMPLOYEES表の更新頻度が低い場合は、表の行をキャッシュすると、バックエンドのデータベース・サーバーに対するラウンドトリップおよびサーバー側での実行待機時間を回避できるため、パフォーマンスが向上します。このアプリケーションによって、通知をリスニングする中間層のHTTPリスナーが実装され、通知に対応して中間層のキャッシュが更新されるとします。

この例では、DBMS_CQ_NOTIFICATIONパッケージを使用し、次の手順で表の変更に関する通知を送信できます。

1. データベースから送信される通知メッセージをリスニングし、通知に対応して中間層のキャッシュをリフレッシュするキャッシュ管理システムの中間層リスナー・コンポーネント(たとえば、HTTPを使用)を実装します。

2. 通知を処理する、サーバー側のストアド・プロシージャを作成します。

CONNECT system;
Enter password: password
GRANT CHANGE NOTIFICATION TO hr;
GRANT EXECUTE ON DBMS_CQ_NOTIFICATION TO hr;

Rem Enable job queue processes to receive notifications.
ALTER SYSTEM SET "job_queue_processes"=2;

CONNECT hr;
Enter password: password
Rem Create a table to record notification events
CREATE TABLE nfevents(regid number, event_type number);

Rem create a table to record changes to registered tables
CREATE TABLE nftablechanges(regid number, table_name varchar2(100),
table_operation number);

Rem create a table to record rowids of changed rows.
CREATE TABLE nfrowchanges(regid number, table_name varchar2(100),
row_id varchar2(30));

Rem Create a PL/SQL callback handler to process notifications.
CREATE OR REPLACE PROCEDURE chnf_callback(ntfnds IN SYS.CHNF$_DESC) IS
regid           NUMBER;
tbname          VARCHAR2(60);
event_type      NUMBER;
numtables       NUMBER;
operation_type  NUMBER;
numrows         NUMBER;
row_id          VARCHAR2(20);
BEGIN
regid      := ntfnds.registration_id;
numtables  := ntfnds.numtables;
event_type := ntfnds.event_type;

INSERT INTO nfevents VALUES(regid, event_type);
IF (event_type = DBMS_CQ_NOTIFICATION.EVENT_OBJCHANGE) THEN
FOR i IN 1..numtables LOOP
tbname          := ntfnds.table_desc_array(i).table_name;
operation_type  := ntfnds.table_desc_array(I). Opflags;
INSERT INTO nftablechanges VALUES(regid, tbname, operation_type);
/* Send the table name and operation_type to client side listener using UTL_HTTP */
/* If interested in the rowids, obtain them as follows */
IF (bitand(operation_type, DBMS_CQ_NOTIFICATION.ALL_ROWS) = 0) THEN
numrows := ntfnds.table_desc_array(i).numrows;
ELSE
numrows :=0;   /* ROWID INFO NOT AVAILABLE */
END IF;

/* The body of the loop is not executed when numrows is ZERO */
FOR j IN 1..numrows LOOP
Row_id := ntfnds.table_desc_array(i).row_desc_array(j).row_id;
INSERT INTO nfrowchanges VALUES(regid, tbname, Row_id);
/* optionally Send out row_ids to client side listener using UTL_HTTP; */
END LOOP;

END LOOP;
END IF;
COMMIT;
END;
/

手順2では、通知記述子で取得される情報に基づいて、中間層アプリケーションで必要な無効化に関する情報を送信できます。

注意

1. 前述の例では、'chnf_callback'を通知のPL/SQLハンドラとして使用してEMPLOYEES表に関する登録を作成しました。登録時に、クライアントによって、信頼性のある通知(QOS_RELIABLE)およびROWIDの通知(QOS_ROWIDS)が指定されました。

2. ハンドラは、通知タイプがEVENT_OBJCHANGEの場合にのみ、通知記述子の表記述子配列にアクセスします。他のすべての場合(たとえば、EVENT_DEREG、EVENT_SHUTDOWNの場合)、表記述子配列はアクセスされません。

3. ハンドラは、表操作フラグにALL_ROWSビットがセットされていない場合にのみ、表通知記述子の行記述子配列にアクセスします。表操作フラグにALL_ROWSビットがセットされている場合は、表内のすべての行が変更された可能性があることを示します。また、このビットは、表内のすべての行に影響するTRUNCATEのような操作の他に、個々のROWIDがFULLタイプの表の無効化にロールアップされた場合にもセットされます。
これは、ある表で行われた1つのトランザクションで変更された行が多すぎる(80行を超えている)か、またはRDBMSのROWIDが原因で共有メモリーの消費合計が多すぎる(動的共有プール・サイズの1%を超えている)と判断された場合に発生します。この場合、受信者は、表全体が無効になったことを想定し、コールバック/アプリケーションでこの状況に対処できるようにする必要があります。

また、ユーザー定義のコールバックの実装は、開発者が決定することに注意してください。前述の例では、コールバックを使用してイベントの詳細をデータベース表に記録しました。また、このアプリケーションでは、(例のように)UTL_HTTPを使用して、通知の詳細をキャッシュ管理システムの中間層HTTPリスナーに送信することもできます。このリスナーは、バックエンドのデータベースから問合せを行ってキャッシュをリフレッシュすることができます。

3. 通知を行う対象となる表の登録を作成します。以前に定義したプロシージャの名前(chnf_callback)を、通知の生成時に実行するサーバー側のPL/SQLプロシージャの名前として渡します。

Rem Create a REGISTRATION on the EMPLOYEES TABLE
DECLARE
REGDS      SYS.CHNF$_REG_INFO;
regid      NUMBER;
mgr_id     NUMBER;
dept_id    NUMBER;
qosflags   NUMBER;
BEGIN
qosflags := DBMS_CQ_NOTIFICATION.QOS_RELIABLE +
DBMS_CQ_NOTIFICATION.QOS_ROWIDS;
REGDS := SYS.CHNF$_REG_INFO ('chnf_callback', qosflags, 0,0,0);
regid := DBMS_CQ_NOTIFICATION.NEW_REG_START (REGDS);
SELECT manager_id INTO mgr_id FROM EMPLOYEES WHERE employee_id = 200;
DBMS_CQ_NOTIFICATION.REG_END;
END;
/

前述の手順3で登録を作成すると、手順2で定義したサーバー側のPL/SQLプロシージャが、HR.EMPLOYEES表に対してCOMMITでコミットされた変更に対応して実行されます。たとえば、employees表に対して次の更新が行われるとします。

UPDATE employees SET salary=salary*1.05 WHERE employee_id=203;COMMIT;

通知が処理されると、nfevents、nftablechanges、nfrowchangesの各表に、次のような行が挿入されます。

SQL> SELECT * FROM nfevents;

REGID     EVENT_TYPE
---------------------------
20045          6

SQL> SELECT * FROM nftablechanges;

REGID      TABLE_NAME         TABLE_OPERATION
-------------------------------------------
20045      HR.EMPLOYEES            4

SQL> select * from nfrowchanges;

REGID      TABLE_NAME          ROW_ID
------------------------------------------------------
20045     HR.EMPLOYEES    AAAKB/AABAAAJ8zAAF

問合せ結果の変更の登録例

1. コールバックを作成します。

CONNECT system;
Enter password: password
GRANT CHANGE NOTIFICATION TO hr;
GRANT EXECUTE ON DBMS_CQ_NOTIFICATION TO hr;
CONNECT hr;
Enter password: password
Rem Create a table to record notification events
CREATE TABLE nfevents(regid NUMBER, event_type NUMBER);

Rem Create a table to record notification queries
CREATE TABLE nfqueries (qid NUMBER, qop NUMBER);

Rem Create a table to record changes to registered tables
CREATE TABLE nftablechanges(
qid                NUMBER,
table_name         VARCHAR2(100),
table_operation    NUMBER);

Rem Create a table to record rowids of changed rows.
CREATE TABLE nfrowchanges(
qid                NUMBER,
table_name         VARCHAR2(100),
row_id             VARCHAR2(2000));

CREATE OR REPLACE PROCEDURE chnf_callback
(ntfnds IN CQ_NOTIFICATION$_DESCRIPTOR)
IS
regid           NUMBER;
tbname          VARCHAR2(60);
event_type      NUMBER;
numtables       NUMBER;
operation_type  NUMBER;
numrows         NUMBER;
row_id          VARCHAR2(2000);
numqueries      NUMBER;
qid NUMBER;
qop NUMBER;

BEGIN
regid := ntfnds.registration_id;
event_type := ntfnds.event_type;
INSERT INTO nfevents VALUES(regid, event_type);
numqueries :=0;
IF (event_type = DBMS_CQ_NOTIFICATION.EVENT_QUERYCHANGE) THEN
numqueries := ntfnds.query_desc_array.count;
FOR i in 1..numqueries LOOP
qid := ntfnds.QUERY_DESC_ARRAY(i).queryid;
qop := ntfnds.QUERY_DESC_ARRAY(i).queryop;
INSERT INTO nfqueries VALUES(qid, qop);
numtables := 0;
numtables := ntfnds.QUERY_DESC_ARRAY(i).table_desc_array.count;
FOR j IN 1..numtables LOOP
tbname := ntfnds.QUERY_DESC_ARRAY(i).table_desc_array(j).table_name;
operation_type := ntfnds.QUERY_DESC_ARRAY(i).table_desc_array(j).Opflags;
INSERT INTO nftablechanges VALUES(qid, tbname, operation_type);
IF (bitand(operation_type, DBMS_CQ_NOTIFICATION.ALL_ROWS) = 0)
THEN
numrows := ntfnds.query_desc_array(i).table_desc_array(j).numrows;
ELSE
numrows :=0;   /* ROWID INFO NOT AVAILABLE */
END IF;

/* The body of the loop is not executed when numrows is ZERO */
FOR k IN 1..numrows LOOP
Row_id := ntfnds.query_desc_array(i).table_desc_array(j).row_desc_array(k).row_id;
INSERT INTO nfrowchanges VALUES(qid, tbname, Row_id);

END LOOP;  /* loop over rows */
END LOOP;     /* loop over tables */
END LOOP;        /* loop over queries */
END IF;
COMMIT;
END;
/

2. 問合せの登録を作成します。

DECLARE
reginfo    cq_notification$_reg_info;
mgr_id     NUMBER;
dept_id    NUMBER;
v_cursor   SYS_REFCURSOR;
regid      NUMBER;
qosflags   NUMBER;

BEGIN
/* Register two queries for result-set-change notifications: */

/* 1. Construct registration information.
'chnf_callback' is name of notification handler.
QOS_QUERY specifies result-set-change notifications. */

qosflags := DBMS_CQ_NOTIFICATION.QOS_QUERY +
DBMS_CQ_NOTIFICATION.QOS_ROWIDS;

reginfo := cq_notification$_reg_info('chnf_callback', qosflags,0, 0, 0);

/* 2. Create registration */

regid := DBMS_CQ_NOTIFICATION.NEW_REG_START(reginfo);

OPEN v_cursor FOR
SELECT DBMS_CQ_NOTIFICATION.CQ_NOTIFICATION_QUERYID, manager_id
FROM HR.employees
WHERE employee_id = 7902;
CLOSE v_cursor;

OPEN v_cursor for
SELECT DBMS_CQ_NOTIFICATION.CQ_NOTIFICATION_QUERYID, department_id
FROM HR.departments
WHERE department_name = 'IT';
CLOSE v_cursor;

DBMS_CQ_NOTIFICATION.REG_END;
END;
/

3. 問合せの登録を作成すると、USER_CQ_NOTIFICATION_QUERIESからの出力が次のように表示されます。

SQL> SELECT queryid, regid, to_char(querytext)
FROM user_cq_notification_queries;

QUERYID      REGID
---------- ----------
TO_CHAR(QUERYTEXT)
--------------------------------------------------------------------------------
22         41
SELECT HR.DEPARTMENTS.DEPARTMENT_ID  FROM HR.DEPARTMENTS  WHERE HR.DEPARTMENTS.
DEPARTMENT_NAME  = 'IT'

21         41
SELECT HR.EMPLOYEES.MANAGER_ID  FROM HR.EMPLOYEES  WHERE HR.EMPLOYEES.EMPLOYEE_
ID  = 7902

Now, let us perform an UPDATE that changes the result of the query with queryid 22
by renaming the department with name 'IT' to FINANCE.

SQL>  update departments set department_name = 'FINANCE' where department_name = 'IT';

1 row updated.

SQL> commit;

Commit complete.

Now we can query the notifications that we recorded in the callback.

SQL> select * from nfevents;

REGID EVENT_TYPE
---------- ----------
61          7

Event type 7 corresponds to EVENT_QUERYCHANGE

SQL> select * from nfqueries;

QID        QOP
---------- ----------
42          7

Event type 7 corresponds to EVENT_QUERYCHANGE

SQL> select * from nftablechanges;
SQL> select * from nftablechanges;

REGID
----------
TABLE_NAME
--------------------------------------------------------------------------------
TABLE_OPERATION
---------------
42
HR.DEPARTMENTS
4

TABLE_OPERATION 4 corresponds to UPDATEOP

SQL> select * from nfrowchanges;
REGID
----------
TABLE_NAME
--------------------------------------------------------------------------------
ROW_ID
--------------------------------------------------------------------------------
61
HR.DEPARTMENTS
AAANkdAABAAALinAAF

データ構造

DBMS_CQ_NOTIFICATIONパッケージは、次のOBJECTタイプを定義します。

オブジェクト・タイプ

- CQ_NOTIFICATION$_DESCRIPTORオブジェクト・タイプ

- CQ_NOTIFICATION$_QUERYオブジェクト・タイプ

- CQ_NOTIFICATION$_QUERY_ARRAYオブジェクト(配列)タイプ

- CQ_NOTIFICATION$_TABLEオブジェクト・タイプ

- CQ_NOTIFICATION$_TABLE_ARRAYオブジェクト(配列)タイプ

- CQ_NOTIFICATION$_ROWオブジェクト・タイプ

- CQ_NOTIFICATION$_ROW_ARRAYオブジェクト(配列)タイプ

- CQ_NOTIFICATION$_REG_INFOオブジェクト・タイプ

CQ_NOTIFICATION$_DESCRIPTORオブジェクト・タイプ

これは、トップレベルの変更通知記述子タイプです。これは、SYS.CHNF$_DESCタイプのシノニムです。

構文

TYPE SYS.CHNF$_DESC IS OBJECT(
registration_id    NUMBER,
transaction_id     RAW(8),
dbname             VARCHAR2(30),
event_type         NUMBER,
numtables          NUMBER,
table_desc_array   CQ_NOTIFICATION$_TABLE_ARRAY,
query_desc_array   CQ_NOTIFICATION$_QUERY_ARRAY);

属性

表38-2 CQ_NOTIFICATION$_DESCRIPTORオブジェクト・タイプ

属性

説明

registration_id

登録時に戻される登録ID。

transaction_id

トランザクションID。変更を行ったトランザクションのtransaction_id。event_typeがEVENT_OBJCHANGEまたはEVENT_QUERYCHANGE以外の場合は、NULLになります。

dbname

データベースの名前。

event_type

通知に関連付けられているデータベース・イベント。EVENT_OBJCHANGE(登録されたオブジェクトへの変更)、EVENT_STARTUP、EVENT_QUERYCHANGE、EVENT_SHUTDOWN、EVENT_DEREG(タイムアウトなどの理由で登録が削除された)のいずれかになります。

numtables

変更された表の数。event_typeがEVENT_OBJCHANGE以外の場合は、NULLになります。

table_desc_array

表記述子の配列。event_typeがEVENT_OBJCHANGE以外の場合は、NULLになります。

query_desc_array

変更された問合せの配列。event_typeがEVENT_QUERYCHANGE以外の場合は、NULLになります。

CQ_NOTIFICATION$_QUERYオブジェクト・タイプ

このオブジェクト・タイプは、トランザクションのコミットなどのイベントで発生する問合せ結果への変更を示します。CQ_NOTIFICATION$_QUERY記述子の配列は、EVENT_QUERYCHANGEタイプのイベントに対するトップレベルの通知記述子(CQ_NOTIFICATION$_DESCRIPTOR)内に埋め込まれます。この配列は、イベントの結果として無効になったqueryidのSETに対応します。

これは、ベース・タイプSYS.CHNF$_QDESCのシノニムです。

構文

TYPE SYS.CHNF$_QDESC IS OBJECT (
queryid            NUMBER,
queryop            NUMBER,
table_desc_array   CQ_NOTIFICATION$_TABLE_ARRAY);

属性

表38-3 TYPE SYS.CQ_NOTIFICATION$_QUERYオブジェクト・タイプ

属性

説明

queryid

変更された問合せのQueryId

queryop

問合せへの変更を示す操作

table_desc_array

問合せ結果セットの変更の原因となる表の変更の配列

CQ_NOTIFICATION$_QUERY_ARRAYオブジェクト(配列)タイプ

このタイプは、CQ_NOTIFICATION$_QUERYオブジェクトの配列に対応します。これは、SYS.CHNF$_QUERY_ARRAYタイプのシノニムです。

構文

TYPE CQ_NOTIFICATION$_TABLE_ARRAY IS VARRAY (1073741824) OF CQ_NOTIFICATION$_TABLE;

CQ_NOTIFICATION$_TABLEオブジェクト・タイプ

この記述子タイプは表への変更を示し、EVENT_OBJCHANGEタイプのイベントに対するトップレベルの変更通知記述子タイプ内に埋め込まれます。問合せ結果セットの変更の場合(イベント・タイプがEVENT_QUERYCHANGEに設定される場合)、表記述子の配列が各問合せの変更記述子内に埋め込まれます。

これは、SYS.CHNF$_TDESC(以前の名前)タイプのシノニムです。

構文

TYPE SYS.CHNF$_TDESC IS OBJECT (
opflags            NUMBER,
table_name         VARCHAR2(2*M_IDEN+1),
numrows            NUMBER,
row_desc_array     CQ_NOTIFICATION$_ROW_ARRAY)

属性

表38-4 TYPE SYS.CQ_NOTIFICATION$_TABLEオブジェクト・タイプ

属性

説明

opflags

表レベルの操作フラグ。これは、表に対して行われた操作内容を表すフラグ・フィールド(ビットベクトル)です。ビット・フィールド(INSERTOP、UPDATEOP、DELETEOP、DROPOP、ALTEROPおよびALL_ROWS)のORになります。ALL_ROWS (0x1)ビットが設定されている場合は、表全体が変更されている(DELETE * FROM tなど)、または通知で行レベル粒度の情報が要求されていないか使用できないため、受信者は表全体が無効になっていると想定する必要があることを示します。

table_name

変更された表の名前。

numrows

表内の変更された行の数。表変更記述子にALL_ROWSビットがセットされている場合、numrowsはNULLになるため、アクセスしないでください。

row_desc_array

行記述子の配列。opflagsにALL_ROWSビットがセットされている場合、このフィールドはNULLになります。

CQ_NOTIFICATION$_TABLE_ARRAYオブジェクト(配列)タイプ

このタイプは、CQ_NOTIFICATION$_TABLEオブジェクトの配列に対応します。これは、SYS.CHNF$_TDESC_ARRAYタイプのシノニムです。

構文

TYPE CQ_NOTIFICATION$_TABLE_ARRAY IS VARRAY (1073741824) OF CQ_NOTIFICATION$_TABLE;

CQ_NOTIFICATION$_ROWオブジェクト・タイプ

登録時にQOS_ROWIDSオプションを選択し、表変更記述子のopflagsフィールドにALL_ROWSビットがセットされていない場合、CQ_NOTIFICATION$_ROWの配列が、CQ_NOTIFICATION$_TABLE(表変更記述子)内に埋め込まれます。

これは、SYS.CHNF$_RDESC(以前の名前)タイプのシノニムです。

構文

TYPE SYS.CHNF$_RDESC IS OBJECT (
opflags            NUMBER,
row_id             VARCAHR2 (2000));

属性

表38-5 TYPE SYS.CQ_NOTIFICATION$_ROWオブジェクト・タイプ

属性

説明

opflags

行レベルの操作フラグ。このフラグ・フィールド(ビットベクトル)は、行の操作内容(INSERTOP、UPDATEOP、DELETEOPなど)を表します。

row_id

変更した行のROWID。

CQ_NOTIFICATION$_ROW_ARRAYオブジェクト(配列)タイプ

登録時にQOS_ROWIDSオプションを指定し、表変更記述子のopflagsフィールドにALL_ROWSビットがセットされていない場合、このオブジェクト・タイプがCQ_NOTIFICATION$_ROWの配列に対応し、CQ_NOTIFICATION$_TABLE(表変更記述子)内に埋め込まれます。

これは、SYS.CHNF$_RDESC_ARRAYタイプのシノニムです。

構文

TYPE CQ_NOTIFICATION$_ROW_ARRAY IS VARRAY (1073741824) OF CQ_NOTIFICATION$_ROW;

CQ_NOTIFICATION$_REG_INFOオブジェクト・タイプ

このオブジェクト・タイプは、登録の新規作成に関連する属性を表します。これは、SYS.CHNF$_REG_INFO(以前の名前)タイプのシノニムです。

構文

TYPE SYS.CHNF$_REG_INFO IS OBJECT (
callback                        VARCHAR2(20),
quosflags                       NUMBER,
timeout                         NUMBER,
operations_filter               NUMBER,
transaction_lag                 NUMBER,
ntfn_grouping_class             NUMBER,
ntfn_grouping_value             NUMBER,
ntfn_grouping_type              NUMBER,
ntfn_grouping_start_time        TIMESTAMP WITH TIME ZONE,
ntfn_grouping_repeat_count      NUMBER);

属性

表38-6 TYPE CQ_NOTIFICATION$_REG_INFOオブジェクト・タイプ

属性

説明

callback

通知時に実行するサーバー側のPL/SQLプロシージャの名前。プロトタイプは、<call_backname>(ntfnds IN SYS.chnf$_desc)です。

qosflags

サービス品質フラグ。次の値のORに設定できます。

- QOS_RELIABLE(0x1): 通知は信頼性(永続性)があり、インスタンスの停止後も有効です。これは、Oracle RACクラスタでインスタンスが停止した場合に、停止していないインスタンスによって、キュー内の無効化情報を配信できることを意味します。同様に、保留になっている無効化情報は、単一インスタンス構成で、インスタンスの再起動時に配信可能です。デメリットは、無効化メッセージを永続ストアに挿入すると発生するCPUコストおよび待機時間です。このパラメータがFALSEの場合は、イン・メモリー・キューに無効化情報がバッファリングされるため、サーバー側のCPUおよび待機時間は最小になりますが、インスタンスの停止時にクライアントが無効化メッセージを失う可能性があります。

- QOS_DEREG_NFY(0x2): 最初の通知時に登録が完全削除されます。

- QOS_ROWIDS(0x4): 変更されたROWIDに関する情報を通知に含める必要があります。

- QOS_QUERY(0x8): オブジェクトの変更通知ではなく、問合せ結果の変更通知を指定します。

- QOS_BEST_EFFORt(0x16): 簡易版の問合せを登録し、評価を最小化できます。一部偽陽性が発生します。

timeout

0(ゼロ)以外の値に設定すると、その時間(秒)の経過後にデータベースによって登録が自動的に完全削除されます。0(ゼロ)またはNULLに設定すると、登録は、明示的に登録解除するまで存在します。timeoutオプションは、通知時にパージするオプション(QOS_DEREG_NFY)と組み合せて設定することもできます。

operations_filter

0(ゼロ)以外の場合は、特定の操作を選択して通知するフィルタを指定します。次のフラグを使用すると、特定の操作のタイプに基づいてフィルタ処理を行うことができます。

- 0: すべての操作について通知(DBMS_CQ_NOTIFICATION.ALL_OPERATIONS)

- 0x2: すべてのINSERTについて通知(DBMS_CQ_NOTIFICATION.INSERTOP)

- 0x4: すべてのUPDATEについて通知(DBMS_CQ_NOTIFICATION.UPDATEOP)

- 0x8: すべてのDELETEについて通知(DBMS_CQ_NOTIFICATION.DELETEOP)

ビット単位のORを使用すると、操作を組み合せて指定できます。

注意: このパラメータはオブジェクト・レベルの登録には有効ですが、問合せ結果の変更の登録では無視されます。11gで通知フロー制御を実装するために、アプリケーションではGROUPING通知オプションを使用できます。

transaction_lag

トランザクション単位で指定する、連続する通知間のタイム・ラグ。トランザクション数/データベース変更数の指定に使用でき、これによって、クライアントによるデータベースに対する遅れを指定できます。0 (ゼロ)の場合、生成直後にクライアントが無効化メッセージを受信する必要があることを意味します。

注意: このパラメータはオブジェクト・レベルの登録には有効ですが、問合せ結果の変更通知の登録では無視されます。

ntfn_grouping_class

通知をグループ化するときに、このクラスに基づきグループが導出されます。現在、使用できる値は、通知を時間別にグループ化するDBMS_CQ_NOTIFICATION.NTFN_GROUPING_CLASS_TIMEのみです。

ntfn_grouping_value

グループ化の値。グループを定義する時間間隔を秒単位で指定します。たとえば、この値を900に設定した場合、生成された通知は15分間隔でグループ化されます。

ntfn_grouping_type

指定するグループ化のタイプ。使用できる2つの値のいずれかを指定します。

- DBMS_CQ_NOTIFICATION.NTFN_GROUPING_TYPE_SUMMARY: グループ内のすべての通知が、単一の通知に要約されます。

- DBMS_CQ_NOTIFICATION.NTFN_GROUPING_TYPE_LAST: グループ内の最後の通知のみが公開され、それより前の通知は破棄されます。

ntfn_grouping_start_time

通知の生成を開始する時間。NULLを指定すると、現行のシステムで生成される時間がデフォルトとなります。

ntfn_grouping_repeat_count

通知が繰り返される回数。登録の存続期間を通して通知を受け取り続けるには、この値をDBMS_CQ_NOTIFICATION.NTFN_GROUPING_FOREVERに設定します。登録の存続期間に対して特定の回数の通知のみを要求する場合は、0(ゼロ)以外の値に設定します。

使用上の注意

- このタイプ宣言は、他の3つの代替コンストラクタを組み込みます。1番目のケースでは、他のすべてのパラメータがデフォルト値に設定されます。

TYPE CQ_NOTIFICATION$_REG_INFO IS OBJECT (
callback                        VARCHAR2(20),
quosflags                       NUMBER,
timeout                         NUMBER);

2番目のオプションは、以前のリリースで定義されたタイプ・コンストラクタに適用されます(下位互換性のために保持されています)。

TYPE CQ_NOTIFICATION$_REG_INFO IS OBJECT (
callback                        VARCHAR2(20),
quosflags                       NUMBER,
timeout                         NUMBER,
operations_filter               NUMBER,
transaction_lag                 NUMBER);

3番目の定義には、推奨されていないtransaction_lagを除いて、タイプのメンバーがすべて含まれます。

TYPE CQ_NOTIFICATION$_REG_INFO IS OBJECT (
callback                        VARCHAR2(20),
quosflags                       NUMBER,
timeout                         NUMBER,
operations_filter               NUMBER,
ntfn_grouping_class             NUMBER,
ntfn_grouping_value             NUMBER,
ntfn_grouping_type              NUMBER,
ntfn_grouping_start_time        TIMESTAMP WITH TIME ZONE,
ntfn_grouping_repeat_count      NUMBER);

- データベース変更に対応して、callbackで指定されたサーバー側のPL/SQLプロシージャが実行されます。PL/SQLプロシージャの名前は、schema_name.procedure_nameの形式で指定する必要があります。このプロシージャには、次の署名が必要です。

PROCEDURE <procedure_name>(ntfnds IN SYS.chnf$_desc)

CHNF$_DESCは、変更通知記述子を示します。

- 指定したプロシージャは、通知の生成時にジョブ・キュー・プロセス内で実行されるため、PL/SQL通知を受け取るには、init.oraのパラメータjob_queue_processesを0(ゼロ)以外の値に設定する必要があります。

DBMS_CQ_NOTIFICATIONサブプログラムの要約

表38-7 DBMS_CQ_NOTIFICATIONパッケージのサブプログラム

サブプログラム

説明

CQ_NOTIFICATION_QUERYIDファンクション

登録ブロックへの登録が試行された最新の問合せのqueryidを戻します。

DEREGISTERプロシージャ

指定した登録識別子(ID)のクライアントのサブスクライブを解除します。

ENABLE_REGプロシージャ

既存の登録識別子(ID)を使用して、登録ブロックを開始します。

NEW_REG_STARTファンクション

新しい登録ブロックを開始します。

REG_ENDプロシージャ

登録範囲を終了します。

SET_ROWID_THRESHOLDプロシージャ

トランザクションで表の行が変更された場合に変更通知でパブリッシュされる表の行の最大数を設定します。

CQ_NOTIFICATION_QUERYIDファンクション

このファンクションは、登録ブロックへの登録が試行された最新の問合せのqueryidを戻します。

構文

DBMS_CQ_NOTIFICATION.CQ_NOTIFICATION_QUERYID
RETURN NUMBER;

戻り値

登録された最新の問合せのqueryidを戻します。

DEREGISTERプロシージャ

このプロシージャは、指定した登録識別子(ID)のクライアントのサブスクライブを解除します。

構文

DBMS_CQ_NOTIFICATION.DEREGISTER (
regid IN NUMBER);

パラメータ

表38-8 DEREGISTERプロシージャのパラメータ

パラメータ

説明

regid

クライアントの登録ID。

使用上の注意

登録を作成したユーザー(またはSYSユーザー)のみが、その登録のサブスクライブを解除できます。

ENABLE_REGプロシージャ

このプロシージャは、既存の登録識別子(ID)にオブジェクトを追加します。これは、オブジェクトの追加に既存のregidを使用することを除くと、新規登録の作成に使用するインタフェースに似ています。この後、問合せで参照されるオブジェクトが、指定したregidに追加され、REG_ENDプロシージャを起動すると、登録が終了します。

構文

DBMS_CQ_NOTIFICATION.ENABLE_REG (
regid IN NUMBER);

パラメータ

表38-9 ENABLE_REGプロシージャのパラメータ

パラメータ

説明

regid

クライアントの登録ID。

使用上の注意

登録を作成したユーザーのみが、その登録にオブジェクトを追加できます。

NEW_REG_STARTファンクション

このプロシージャは、新しい登録ブロックを開始します。この登録ブロック内で実行する問合せによって参照されるすべてのオブジェクトは、優先度が高いオブジェクトとみなされ、登録に追加されます。登録ブロックは、REG_ENDプロシージャをコールすると終了します。

構文

DBMS_CQ_NOTIFICATION.NEW_REG_START (
regds IN sys.chnf$_reg_info)
RETURN NUMBER;

パラメータ

表38-10 NEW_REG_STARTファンクションのパラメータ

パラメータ

説明

sys.chnf$_reg_info

通知ハンドラなどの登録プロパティを示す登録記述子。

戻り値

このプロシージャは、登録ID(データベースによってこの登録に割り当てられた一意の整数)を戻します。登録IDは、この登録に関して受け取るすべての通知でエコーバックされます。

使用上の注意

- 登録ブロック内で実行可能な操作は、(ユーザーが登録する)問合せのみです。DML操作およびDDL操作は実行できません。

- 登録ブロックは、セッションのプロパティであり、セッションを終了すると暗黙的に終了されます。登録ブロックはセッションのプロパティですが、登録自体は永続的なデータベース・エンティティです。作成された登録は、クライアント・アプリケーションまたはタイムアウトによって明示的に登録解除されるか、またはその他の理由(権限の失効など)でデータベースによって削除されるまで存在します。

- ユーザーには、CHANGE NOTIFICATIONシステム権限および登録するオブジェクトに対するSELECTまたはREAD権限が必要です。

- SYSユーザーは、登録の新規作成を実行できません。

- 登録ブロックは、ネストできません。

REG_ENDプロシージャ

このプロシージャは、登録ブロックの終了を示します。これ以降に実行される問合せは追跡されません。

構文

DBMS_CQ_NOTIFICATION.REG_END;

SET_ROWID_THRESHOLDプロシージャ

このプロシージャは、トランザクションで表の行が変更された場合に変更通知でパブリッシュされる表の行の最大数を設定します。

構文

DBMS_CQ_NOTIFICATION.SET_ROWID_THRESHOLD (
tbname     IN  VARCHAR2,
threshold  IN  NUMBER);

パラメータ

表38-11 SET_ROWID_THRESHOLDプロシージャのパラメータ

パラメータ

説明

tbname

schemaname.tablenameの形式でスキーマ名で修飾された表名

threshold

変更通知でパブリッシュされる表の変更行の最大数

使用上の注意

- オブジェクトの変更粒度または問合せ結果セットの粒度のいずれかで変更通知用に表を登録する必要があります。

- このサブプログラムを使用して設定したしきい値は、そのインスタンスにのみ適用され、インスタンスの起動や停止を行うと存続しなくなります。

39 DBMS_CREDENTIAL

DBMS_CREDENTIALパッケージは、EXTPROCコールアウト・ファンクションのみでなく、SCHEDULERの外部ジョブ、リモート・ジョブ、ファイル・ウォッチャを認証および偽装するためのインタフェースを提供します。

関連項目:

- ジョブの資格証明の指定については、『Oracle Database管理者ガイド』を参照してください。

- 外部プロセスのセキュリティ確保のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_CREDENTIALの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例

- DBMS_CREDENTIALサブプログラムの要約

DBMS_CREDENTIALの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例

概要

資格証明は、EXTPROCコールアウト・ファンクションのみでなく、SCHEDULERのリモート・ジョブ、外部ジョブ、ファイル・ウォッチャを認証および偽装するためのユーザー名とパスワードのペアを保持するデータベース・オブジェクトです。これらは、CREATE_CREDENTIALプロシージャを使用して作成されます。プロシージャでは、Windowsサーバーに対して実行するリモート外部ジョブでWindowsドメインを指定することもできます。

セキュリティ・モデル

Oracle資格証明には、それぞれ一意の資格証明名が付けられています。資格証明の関連付けは、その一意の資格証明名をPL/SQL別名ライブラリを介してEXTPROCに関連付けることで実行できます。

資格証明をPL/SQL別名ライブラリと外部プロシージャに関連付けるには、CREATE AND/OR REPLACE LIBRARY権限またはCREATE AND/OR REPLACE FUNCTION / PROCEDURE権限、および関連付ける別名ライブラリのDLLまたは共有オブジェクトに対する読取り権限が必要です。ファンクションまたはプロシージャを作成または置換(あるいはその両方)して、別名ライブラリを利用できるようにするためです。

認証後は、指定されたユーザー資格証明に定義されているクライアントの識別情報に基づいて、EXTPROCがクライアントのかわりに動作する必要があります。認証されていない場合は、EXTPROCはエラー・メッセージを戻す必要があります。

資格証明を作成または変更するには、CREATE CREDENTIAL権限が必要です。自身のスキーマ以外のスキーマに資格証明を作成しようとしている場合は、CREATE ANY CREDENTIAL権限が必要です。

使用上の注意

既存のCREATE OR REPLACE LIBRARY文とCREATE OR REPLACE FUNCTION/PROCEDUREではCREDENTIAL句がサポートされていないため、このモデルのCREATE OR REPLACE LIBRARYおよびCREATE OR REPLACE FUNCTION/PROCEDURE文では、構文およびセマンティクの変更が必要になります。

次に例を示します。

CREATE OR REPLACE LIBRARY test
AS '$ORACLE_HOME/bin/test.so' CREDENTIAL ricky_cred;
CREATE OR REPLACE FUNCTION ftest1
(x VARCHAR2, y BINARY_INTEGER)
RETURN BINARY_INTEGER
AS LANGUAGE C
LIBRARY test
NAME "negative"
PARAMETERS(x STRING, y INT);

CREDENTIAL句で定義されている資格証明名は、データベース・オブジェクトの名前です。そのため、資格証明名を一重または二重引用符で囲まないでください。

外部ジョブで使用する資格証明の例を、次に示します。

BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name            => 'example_job',
job_type            => 'EXECUTABLE',
job_action          => '/bin/ls',
credential_name     => 'ricky_cred');
END;
/

DBMS_CREDENTIALサブプログラムの要約

表39-1 DBMS_CREDENTIALパッケージのサブプログラム

サブプログラム

説明

CREATE_CREDENTIALプロシージャ

Oracle資格証明というデータベース・オブジェクトに、保存済のユーザー名とパスワードのペアを作成します。

DISABLE_CREDENTIALプロシージャ

Oracle資格証明を無効にします。

DROP_CREDENTIALプロシージャ

Oracle資格証明を削除します。

ENABLE_CREDENTIALプロシージャ

Oracle資格証明を有効にします。

UPDATE_CREDENTIALプロシージャ

既存のOracle資格証明を更新します。

CREATE_CREDENTIALプロシージャ

このプロシージャは、Oracle資格証明というデータベース・オブジェクトに、保存済のユーザー名とパスワードのペアを作成します。

構文

DBMS_CREDENTIAL.CREATE_CREDENTIAL (
credential_name   IN  VARCHAR2,
username          IN  VARCHAR2,
password          IN  VARCHAR2,
database_role     IN  VARCHAR2 DEFAULT NULL
windows_domain    IN  VARCHAR2 DEFAULT NULL,
comments          IN  VARCHAR2 DEFAULT NULL,
enabled           IN  BOOLEAN DEFAULT TRUE);

パラメータ

表39-2 CREATE_CREDENTIALプロシージャのパラメータ

パラメータ

説明

credential_name

資格証明の名前。オプションで、スキーマを接頭辞として付加できます。NULLには設定できません。二重引用符で囲まれていない場合は、大文字に変換されます。

username

この資格証明を選択した場合、ジョブの実行時にオペレーティング・システムまたはリモート・データベースにログインするためのユーザー名。NULLには設定できません。

password

この資格証明を選択した場合、ジョブの実行時にリモート・オペレーティング・システムにログインするためのパスワード。大文字と小文字が区別されます。

database_role

この資格証明を使用するデータベース・ジョブが管理者権限でログインするかどうかを示します。値は、SYSDBA, SYSDG、SYSADMINまたはSYSBACKUPです。

windows_domain

Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。このドメインは、自動的に大文字に変換されます。

comments

ユーザーへの資格証明の説明に使用可能なテキスト文字列。スケジューラでは、このフィールドは使用されません。

enabled

資格証明が有効化されるかどうかを決定します。

使用上の注意

- 資格証明は特定のスキーマに存在し、CREATE CREDENTIALまたはCREATE ANY CREDENTIALシステム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマに資格証明を作成するには、CREATE CREDENTIALまたはCREATE ANY CREDENTIAL権限が必要です。

- ユーザー名では大文字と小文字が区別されます。二重引用符または空白を含むことはできません。

- 既存の資格証明名を使用して資格証明を作成しようとすると、エラーが戻されます。既存の資格証明を変更するには、ユーザーはDROP_CREDENTIALプロシージャを使用して、まず既存の資格証明を削除する必要があります。

- 別名ライブラリによってすでに参照されている既存の資格証明を削除しようとすると、エラーが戻されます。既存の資格証明を確認せずに削除するには、DROP_CREDENTIALプロシージャのforceパラメータをTRUEに設定する必要があります。

- 資格証明は、UPDATE_CREDENTIALプロシージャを使用しても変更できます。

例

基本資格証明の作成

CONN scott
Enter password: password

BEGIN
-- Basic credential.
DBMS_CREDENTIAL.CREATE_CREDENTIAL(
credential_name  =>  'TIM_HALL_CREDENTIAL',
username         =>  'tim_hall',
password         =>  'password');
END

Windows資格証明の作成

CONN scott
Enter password: password

-- Credential including Windows domain
BEGIN
DBMS_CREDENTIAL.CREATE_CREDENTIAL(
credential_name   =>  'TIM_HALL_WIN_CREDENTIAL',
username          =>  'tim_hall',
password          =>  'password',
windows_domain    =>  'localdomain');
END

資格証明の表示情報

資格証明に関する情報は、[DBA|ALL|USER] _CREDENTIALSビューを使用して表示されます。

COLUMN credential_name FORMAT A25
COLUMN username FORMAT A20
COLUMN windows_domain FORMAT A20
SELECT credential_name,
username,
windows_domain
FROM   user_credentials
ORDER BY credential_name;

CREDENTIAL_NAME           USERNAME             WINDOWS_DOMAIN
------------------------- -------------------- --------------------
TIM_HALL_CREDENTIAL       tim_hall
TIM_HALL_WIN_CREDENTIAL   tim_hall             LOCALDOMAIN
2 rows selected.

SQL>

DISABLE_CREDENTIALプロシージャ

このプロシージャは、Oracle資格証明を無効にします。

構文

DBMS_CREDENTIAL.DISABLE_CREDENTIAL (
credential_name   IN  VARCHAR2,
force             IN  BOOLEAN DEFAULT FALSE);

パラメータ

表39-3 DISABLE_CREDENTIALプロシージャのパラメータ

パラメータ

説明

credential_name

資格証明の名前。オプションで、スキーマを接頭辞として付加できます。NULLには設定できません。二重引用符で囲まれていない場合は、大文字に変換されます。

force

FALSEの場合、既存のスケジューラ・ジョブまたはPL/SQLライブラリに依存していないかぎり、資格証明は有効なままです。依存性が検出されると、エラーが戻されます。TRUEの場合、資格証明を参照するスケジューラ・ジョブまたはPL/SQLライブラリが存在するかどうかに関係なく、その資格証明は無効になります。

使用上の注意

- 資格証明は特定のスキーマに存在し、CREATE CREDENTIALまたはCREATE ANY CREDENTIALシステム権限を持つユーザーが無効にできます。自身のスキーマ以外のスキーマで資格証明を無効にするには、CREATE ANY CREDENTIAL権限が必要です。

- オペレーティング・システムへの特定のユーザーとしてのアクセスのエントリ・ポイントとして、OSユーザーの資格証明を表示できます。資格証明の無効化を許可することで、管理者(または資格証明の所有者)は、(外部ジョブ、データベース・ジョブ、ファイル転送、外部プロシージャ、ファイル・ウォッチの)特定のユーザーとしてのデータベースからOSへのすべてのログインを迅速かつ簡単に、また可逆的に拒否することができます。既存の無効な資格証明を有効にするには、ENABLE_CREDENTIALプロシージャを使用する必要があります。

- ライブラリは、その資格証明のプロパティ(Windowsドメイン、ユーザー名、パスワード、有効ビットまたは無効ビットなど)が変更されると、無効になる場合があります。

DROP_CREDENTIALプロシージャ

このプロシージャは、Oracle資格証明を削除します。

構文

DBMS_CREDENTIAL.DROP_CREDENTIAL (
credential_name   IN  VARCHAR2,
force             IN  BOOLEAN DEFAULT FALSE);

パラメータ

表39-4 DROP_CREDENTIALプロシージャのパラメータ

パラメータ

説明

credential_name

資格証明の名前。オプションで、スキーマを接頭辞として付加できます。NULLには設定できません。

force

FALSEに設定する場合、資格証明をEXTPROC別名ライブラリで参照することはできません。参照すると、エラーが発生します。TRUEに設定する場合、資格証明を参照するextproc別名ライブラリが存在するかどうかに関係なく、その資格証明は削除されます。削除された資格証明を参照するEXTPROC別名ライブラリは無効になります。

使用上の注意

資格証明を削除できるのは、その資格証明の所有者かCREATE ANY CREDENTIALシステム権限を持つユーザーのみです。

例

EXEC DBMS_CREDENTIAL.DROP_CREDENTIAL('TIM_HALL_CREDENTIAL', FALSE);
EXEC DBMS_CREDENTIAL.DROP_CREDENTIAL('TIM_HALL_WIN_CREDENTIAL', FALSE);

ENABLE_CREDENTIALプロシージャ

このプロシージャは、Oracle資格証明を有効にします。

構文

DBMS_CREDENTIAL.ENABLE_CREDENTIAL (
credential_name   IN  VARCHAR2);

パラメータ

表39-5 ENABLE_CREDENTIALプロシージャのパラメータ

パラメータ

説明

credential_name

資格証明の名前。オプションで、スキーマを接頭辞として付加できます。NULLには設定できません。二重引用符で囲まれていない場合は、大文字に変換されます。

使用上の注意

- 資格証明は特定のスキーマに存在し、CREATE CREDENTIAL OR CREATE ANY CREDENTIALシステム権限を持つユーザーが無効にできます。自身のスキーマ以外のスキーマで資格証明を無効にするには、CREATE CREDENTIAL OR CREATE ANY CREDENTIAL権限が必要です。

- オペレーティング・システムへの特定のユーザーとしてのアクセスのエントリ・ポイントとして、OSユーザーの資格証明を表示できます。資格証明の無効化を許可することで、管理者(または資格証明の所有者)は、(外部ジョブ、ファイル転送、外部プロシージャ、ファイル・ウォッチの)特定のユーザーとしてのデータベースからOSへのすべてのログインを迅速かつ簡単に、また可逆的に拒否することができます。既存の資格証明を無効にするには、DISABLE_CREDENTIALプロシージャを使用する必要があります。

- ライブラリは、その資格証明のプロパティ(Windowsドメイン、ユーザー名、パスワード、有効ビットまたは無効ビットなど)が変更されると、無効になる場合があります。

UPDATE_CREDENTIALプロシージャ

このプロシージャは、既存のOracle資格証明を更新します。

構文

DBMS_CREDENTIAL.UPDATE_CREDENTIAL (
credential_name   IN   VARCHAR2,
attribute         IN   VARCHAR2,
value             IN   VARCHAR2);

パラメータ

表39-6 UPDATE_CREDENTIALプロシージャのパラメータ

パラメータ

説明

credential_name

資格証明の名前。オプションで、スキーマを接頭辞として付加できます。NULLには設定できません。二重引用符で囲まれていない場合は、大文字に変換されます。

attribute

更新する属性の名前。USERNAME、PASSWORD、WINDOWS_DOMAIN、DATABASE_ROLEまたはCOMMENTSです。

value

選択した属性の新しい値。

使用上の注意

- 資格証明は特定のスキーマに存在し、CREATE CREDENTIALまたはCREATE ANY CREDENTIALシステム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマに資格証明を作成するには、CREATE ANY CREDENTIAL権限が必要です。

- ユーザー名では大文字と小文字が区別されます。二重引用符または空白を含むことはできません。

- 更新された資格証明を参照するEXTPROC別名ライブラリは無効になります。ライブラリは、その資格証明のプロパティ(Windowsドメイン、ユーザー名、パスワード、有効ビットまたは無効ビットなど)が変更されると、無効になります。

例

基本資格証明の更新

CONN scott
Enter password: password

BEGIN
-- Basic credential.
DBMS_CREDENTIAL.UPDATE_CREDENTIAL (
credential_name  =>  'TIM_HALL_CREDENTIAL',
attribute        =>  'password',
value            =>  'password2');

DBMS_CREDENTIAL.UPDATE_CREDENTIAL (
credential_name  =>  'TIM_HALL_CREDENTIAL',
attribute        =>  'username',
value            => 'tim_hall');
END;

Windows資格証明の更新

CONN scott
Enter password: password

-- Credential including Windows domain
BEGIN
DBMS_CREDENTIAL.UPDATE_CREDENTIAL(
credential_name   =>  'TIM_HALL_WIN_CREDENTIAL',
username          =>  'tim_hall',
password          =>  'password',
windows_domain    =>  'localdomain');
END

資格証明の表示情報

資格証明に関する情報は、[DBA|ALL|USER] _CREDENTIALSビューを使用して表示されます。

COLUMN credential_name FORMAT A25
COLUMN username FORMAT A20
COLUMN windows_domain FORMAT A20
SELECT credential_name,
username,
windows_domain
FROM   all_credentials
ORDER BY credential_name;

CREDENTIAL_NAME           USERNAME             WINDOWS_DOMAIN
------------------------- -------------------- --------------------
TIM_HALL_CREDENTIAL       tim_hall
TIM_HALL_WIN_CREDENTIAL   tim_hall             LOCALDOMAIN
2 rows selected.

SQL>

40 DBMS_CRYPTO

DBMS_CRYPTOは格納されたデータの暗号化と復号化のためのインタフェースを提供するパッケージであり、ネットワーク通信を実行するPL/SQLプログラムとともに使用できます。このパッケージでは、Advanced Encryption Standard (AES)暗号化アルゴリズムなど、業界標準の複数の暗号化/ハッシュ・アルゴリズムがサポートされます。AESは、米国標準技術局(National Institute of Standards and Technology: NIST)により、Data Encryption Standard (DES)にかわるアルゴリズムとして承認されています。

関連項目:
このパッケージの使用方法および一般的なデータ暗号化の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_CRYPTOサブプログラムの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- アルゴリズム

- 制限事項

- 例外

- 使用上の注意

- DBMS_CRYPTOサブプログラムの要約

DBMS_CRYPTOサブプログラムの使用方法

- 概要

- セキュリティ・モデル

- データ・タイプ

- アルゴリズム

- 制限事項

- 例外

- 使用上の注意

概要

DBMS_CRYPTOパッケージには、暗号化に関する基本的なファンクションとプロシージャが収録されています。このパッケージを正しく安全に使用するためには、セキュリティに関する一般的なレベルの知識と経験が必要です。

DBMS_CRYPTOパッケージでは、イメージやサウンドを含むRAWやラージ・オブジェクト(LOB)などのOracle汎用データ・タイプに対する暗号化および復号化が可能になります。特に、BLOBおよびCLOBをサポートします。また、グローバリゼーション・サポートを通じて、複数の異なるデータベース・キャラクタ・セットにわたるデータの暗号化も可能です。

このパッケージでは、次の暗号化アルゴリズムがサポートされます。

- データ暗号化規格(DES)、トリプルDES(3DES、2キーおよび3キー)

- Advanced Encryption Standard(AES)

- 暗号化ハッシュとして、MD5、MD4、SHA-1、SHA-2

- Message Authentication Code(MAC)として、MD5、SHA-1、SHA-2

DBMS_CRYPTOでは、ブロック暗号修飾子もサポートされます。また、PKCS(公開鍵暗号規格)#5などの複数のパディング・オプション、暗号ブロック連鎖(CBC)などの4種類のブロック暗号連鎖モードを選択できます。

表40-1に、DBMS_CRYPTOパッケージ機能の概要を示します。

表40-1 DBMS_CRYPTOの機能

パッケージの機能

DBMS_CRYPTO

暗号化アルゴリズム

DES、3DES、AES、RC4、3DES_2KEY

パディング方式

PKCS5、0(ゼロ)

ブロック暗号連鎖モード

CBC、CFB、ECB、OFB

暗号化ハッシュ・アルゴリズム

MD5、SHA-1、SHA-2(SHA-256、SHA-384、SHA-512)、MD4

キーを使用するハッシュ(MAC)アルゴリズム

HMAC_MD5、HMAC_SH1、HMAC_SH256、HMAC_SH384、HMAC_SH512

暗号化擬似乱数ジェネレータ

RAW、NUMBER、BINARY_INTEGER

データベース・タイプ

RAW、CLOB、BLOB

DBMS_CRYPTOはDBMS_OBFUSCATION_TOOLKITに代わって使用されるパッケージであり、利便性が大幅に強化されているほか、新しいシステムと既存のシステムの両方に対応できるように広範なアルゴリズムがサポートされています。具体的には、3DES_2KEYおよびMD4が下位互換性を維持する目的で提供されています。これらのアルゴリズムでは、3DES、AES、MD5、SHA-1、SHA-2と同等のセキュリティが提供されないため、使用しないことをお薦めします。

セキュリティ・モデル

Oracle Databaseでは、このパッケージがSYSスキーマにインストールされます。必要に応じて、既存のユーザーおよびロールに、パッケージ・アクセス権限を付与できます。

データ・タイプ

DBMS_CRYPTOサブプログラムのパラメータには、次のデータ・タイプが使用されます。

表40-2 DBMS_CRYPTOデータ・タイプ

タイプ

説明

BLOB

ソースまたは宛先のバイナリLOB。

CLOB

ソースまたは宛先の文字LOB(NCLOBを除く)。

PLS_INTEGER

暗号化アルゴリズムのタイプを指定します(データ・タイプがBLOB、CLOB、RAWである場合に使用されます)。

RAW

ソースまたは宛先のRAWバッファ。

アルゴリズム

このパッケージでは、次の暗号化アルゴリズム、修飾子、暗号スイートが事前に定義されています。

表40-3 DBMS_CRYPTO暗号化ハッシュ・アルゴリズム

名前

説明

HASH_MD4

128ビットのハッシュ(入力メッセージのメッセージ・ダイジェスト)を作成します。

HASH_MD5

MD4と同様に128ビットのハッシュを作成しますが、MD4よりも複雑です。

HASH_SH1

Secure Hash Algorithm(SHA-1)。160ビットのハッシュを作成します。

HASH_SH256

SHA-2。256ビットのハッシュを作成します。

HASH_SH384

SHA-2。384ビットのハッシュを作成します。

HASH_SH512

SHA-2。512ビットのハッシュを作成します。

表40-4 DBMS_CRYPTO MAC(Message Authentication Code)アルゴリズム

名前

説明

HMAC_MD5[1]

MD5ハッシュ関数と同じですが、ハッシュ値を確認するときに秘密鍵が必要となります。

HMAC_SH1[1]

SHAハッシュ関数と同じですが、ハッシュ値を確認するときに秘密鍵が必要となります。

HMAC_SH256

SHA-2の256ビットのハッシュ関数と同じですが、ハッシュ値を確認するときに秘密鍵が必要となります。

HMAC_SH384

SHA-2の384ビットのハッシュ関数と同じですが、ハッシュ値を確認するときに秘密鍵が必要となります。

HMAC_SH512

SHA-2の512ビットのハッシュ関数と同じですが、ハッシュ値を確認するときに秘密鍵が必要となります。

1 IETF RFC 2104規格に準拠。

表40-5 DBMS_CRYPTO暗号化アルゴリズム

名前

説明

ENCRYPT_DES

データ暗号化規格。ブロック暗号。長さが56ビットのキーを使用します。

ENCRYPT_3DES_2KEY

データ暗号化規格。ブロック暗号。2つのキーを使用して1つのブロックを3回処理します。有効長が112ビットのキーを使用します。

ENCRYPT_3DES

データ暗号化規格。ブロック暗号。1つのブロックを3回処理します。

ENCRYPT_AES128

Advanced Encryption Standard。ブロック暗号。長さが128ビットのキーを使用します。

ENCRYPT_AES192

Advanced Encryption Standard。ブロック暗号。長さが192ビットのキーを使用します。

ENCRYPT_AES256

Advanced Encryption Standard。ブロック暗号。長さが256ビットのキーを使用します。

ENCRYPT_RC4

ストリーム暗号。個々のセッション単位でランダムに生成される秘密鍵を使用します。

表40-6 DBMS_CRYPTOブロック暗号スイート

名前

説明

DES_CBC_PKCS5

ENCRYPT_DES[3]

DES3_CBC_PKCS5

ENCRYPT_3DES [3]

1 表40-5「DBMS_CRYPTO暗号化アルゴリズム」を参照してください。

2 表40-7「DBMS_CRYPTOブロック暗号連鎖の修飾子」を参照してください。

3 表40-8「DBMS_CRYPTOブロック暗号パディングの修飾子」を参照してください。

表40-7 DBMS_CRYPTOブロック暗号連鎖の修飾子

名前

説明

CHAIN_ECB

Electronic Codebook。個々のプレーン・テキストブロックを別々に暗号化します。

CHAIN_CBC

暗号ブロック連鎖。直前の暗号文ブロックでプレーン・テキストをXOR演算してから暗号化します。

CHAIN_CFB

Cipher-Feedback。ブロック・サイズより小さいデータ単位を暗号化できるようにします。

CHAIN_OFB

Output-Feedback。ブロック暗号を同期ストリーム暗号として実行できるようにします。CFBと似ていますが、直前の出力ブロックのうちnビットがデータ・キューの右端の位置に移動されて、暗号化を待機する点が異なります。

表40-8 DBMS_CRYPTOブロック暗号パディングの修飾子

名前

説明

PAD_PKCS5

PKCS #5(パスワードに基づく暗号化規格)に準拠するパディングを提供します。

PAD_NONE

パディングを実行しないオプションを提供します。コール元はブロック・サイズが正しいことを確認する必要があり、ブロック・サイズが不適切であると、エラーが戻されます。

PAD_ZERO

0(ゼロ)からなるパディングを提供します。

制限事項

DBMS_CRYPTOパッケージでは、VARCHAR2データ・タイプは直接的にサポートされません。VARCHAR2タイプのデータに対して暗号化操作を実行する場合は、そのデータを事前に汎用的なデータベース・キャラクタ・セットであるAL32UTF8に変換した後、RAWデータ・タイプに変換する必要があります。これらの変換が完了すると、DBMS_CRYPTOパッケージによる暗号化操作が可能になります。

関連項目:
データ・タイプの変換の詳細は、「変換ルール」を参照してください。

例外

表40-9に、DBMS_CRYPTOで定義された例外を示します。

表40-9 DBMS_CRYPTOの例外

例外

コード

説明

CipherSuiteInvalid

28827

指定した暗号スイートが定義されていません。

CipherSuiteNull

28829

使用する暗号スイートが指定されていません。

KeyNull

28239

暗号化キーが指定されていないか、暗号化キーにNULL値が含まれています。

KeyBadSize

28234

DESキー: 指定されたキー長が短かすぎます。DESキーの長さは少なくとも8バイト(64ビット)にしてください。

AESキー: 指定されたキー長はサポートされていません。AESキーの長さは、128ビット、192ビット、256ビットのいずれかにしてください。

DoubleEncryption

28233

ソース・データは以前に暗号化されています。

使用上の注意

- 暗号化/復号化のプロシージャとファンクションの使い分け

- HASHファンクションとMACファンクションの使い分け

- 暗号化キーの作成と保守に関する注意事項

- 変換ルール

暗号化/復号化のプロシージャとファンクションの使い分け

このパッケージでは、暗号化(ENCRYPT)と復号化(DECRYPT)の機能がプロシージャおよびファンクションの両方の形式で提供されています。これらのプロシージャは、LOBデータ・タイプ(CLOBタイプとBLOBタイプを対象としてオーバーロードされたデータ・タイプ)の暗号化と復号化に使用します。一方、ENCRYPTファンクションとDECRYPTファンクションは、RAWデータ・タイプの暗号化と復号化に使用します。VARCHAR2タイプのデータについては、DBMS_CRYPTOパッケージのファンクションを使用して暗号化操作を実行する前に、RAWデータ・タイプに変換する必要があります。

HASHファンクションとMACファンクションの使い分け

このパッケージには、HASHファンクションおよびMACファンクションという2種類の異なる一方向ハッシュ関数が用意されています。ハッシュ関数は任意の長さの入力メッセージを処理して、固定長のハッシュ値を戻します。一方向ハッシュ関数は片方向のみに動作します。入力メッセージからハッシュ値を計算するのは簡単ですが、特定のハッシュ値から入力メッセージを生成するのはきわめて困難です。ハッシュ値の安全性を維持するには、ハッシュ値の長さを少なくとも128ビットにする必要があります。

ハッシュ値を使用すると、データが変更されたかどうかを確認することができます。たとえば、ユーザーがデータを保存する前に、保存対象のデータに対してDBMS_CRYPTO.HASHを実行し、ハッシュ値を作成したと想定します。保存したデータを戻すときは、同じアルゴリズムを指定し、保存済データに対してハッシュ関数を再実行します。2回目のハッシュ値が最初のハッシュ値と同じであれば、データは変更されていません。ハッシュ値は「データの指紋」のようなものであり、データの整合性を保証するために使用されます。

DBMS_CRYPTOのHASHファンクションは一方向ハッシュ関数であり、RAWまたはLOBデータのいずれかからハッシュ値を生成するために使用できます。MACファンクションも一方向ハッシュ関数ですが、秘密鍵の機能が追加されています。このファンクションはDBMS_CRYPTO.HASHファンクションと同様に機能しますが、秘密鍵を持つユーザーのみがハッシュ値を確認できます。

MACを使用すると、複数のユーザー間でファイルを認証できます。また、1人のユーザーがそれらを使用して、自分のファイルがウィルスなどによって変更されたかどうかを調べることもできます。自分のファイルのMACを計算して、そのMAC値を表に保存できます。MACファンクションを使用しなければ、ウィルスが新しいハッシュ値を計算して、表内の既存のハッシュ値を置き換えてしまう可能性があります。MACを使用している場合、秘密鍵を知らないユーザーは、ハッシュ値の読取りや書換えを実行できません。

暗号化キーの作成と保守に関する注意事項

DBMS_CRYPTOパッケージには暗号化キー用の乱数ジェネレータがありますが、暗号化キーを保守するメカニズムは用意されていません。アプリケーションを開発するときには、このパッケージで使用される暗号化キーを安全に作成して保存するように注意する必要があります。また、DBMS_CRYPTOパッケージによる暗号化操作と復号化操作はクライアント上ではなくサーバー上で実行されることに注意してください。したがって、クライアントとサーバー間で暗号化キーを転送するときは、ネットワーク暗号化機能を使用して、クライアントとサーバー間の接続を保護する必要があります。適切な保護対策を実施しないと、ネットワーク上で暗号化キーが不正傍受される可能性があります。

DBMS_CRYPTOには独自にキーを作成する機能はありませんが、キーの作成時に使用できるツールが用意されています。たとえば、RANDOMBYTESファンクションを使用すると、キー用の乱数ジェネレータを生成できます。

DES用の暗号化キーを作成するときには、特定のキー値が弱点キーまたは準弱点キーとみなされることに注意してください。アルゴリズムのパターンと暗号化キーの初期値のパターンを組み合せることで、暗号分析に対して脆弱な暗号文が生成される場合、その暗号化キーは弱点キーまたは準弱点キーとみなされます。脆弱な暗号文が生成されないようにするためには、弱点キーまたは準弱点キーであることが判明しているDESキーを事前に除外する必要があります。弱点キーまたは準弱点キーの一覧は、複数のパブリック・インターネット・サイトで参照できます。

関連項目:

- ネットワーク暗号化およびSSLの構成方法の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

- 「RANDOMBYTESファンクション」

変換ルール

- VARCHAR2をRAWに変換するには、UTL_I18N.STRING_TO_RAWファンクションを使用して次の手順を実行します。

1. 現行のデータベース・キャラクタ・セット内のVARCHAR2をAL32UTF8データベース・キャラクタ・セット内のVARCHAR2に変換します。

2. AL32UTF8データベース・キャラクタ・セット内のVARCHAR2をRAWに変換します。

構文の例:

UTL_I18N.STRING_TO_RAW (string, 'AL32UTF8');

- RAWをVARCHAR2に変換するには、UTL_I18N.RAW_TO_CHARファンクションを使用して次の手順を実行します。

1. RAWをAL32UTF8データベース・キャラクタ・セット内のVARCHAR2に変換します。

2. AL32UTF8データベース・キャラクタ・セット内のVARCHAR2を目的のデータベース・キャラクタ・セット内のVARCHAR2に変換します。

構文の例:

UTL_I18N.RAW_TO_CHAR (data, 'AL32UTF8');

関連項目:
PL/SQLパッケージUTL_I18Nの使用方法の詳細は、第253章「UTL_I18N」を参照してください。

- RAWタイプの暗号化データをデータベース内のVARCHAR2タイプの列に保存する場合は、RAWTOHEXファンクションまたはUTL_ENCODE.BASE64_ENCODEファンクションを使用して、VARCHAR2タイプの列に適したサイズにデータを変換してください。これらのファンクションは、データのサイズをそれぞれ2倍または4/3倍に変更します。

例

次に、暗号ブロック連鎖およびPKCS#5準拠のパディングを使用した256ビットのAESアルゴリズムを使用して、事前定義済のinput_stringを暗号化および復号化するPL/SQLブロックを示します。

DECLARE
input_string       VARCHAR2 (200) :=  'Secret Message';
output_string      VARCHAR2 (200);
encrypted_raw      RAW (2000);             -- stores encrypted binary text
decrypted_raw      RAW (2000);             -- stores decrypted binary text
num_key_bytes      NUMBER := 256/8;        -- key length 256 bits (32 bytes)
key_bytes_raw      RAW (32);               -- stores 256-bit encryption key
encryption_type    PLS_INTEGER :=          -- total encryption type
DBMS_CRYPTO.ENCRYPT_AES256
+ DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5;
iv_raw             RAW (16);

BEGIN
DBMS_OUTPUT.PUT_LINE ( 'Original string: ' || input_string);
key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES (num_key_bytes);
iv_raw        := DBMS_CRYPTO.RANDOMBYTES (16);
encrypted_raw := DBMS_CRYPTO.ENCRYPT
(
src => UTL_I18N.STRING_TO_RAW (input_string,  'AL32UTF8'),
typ => encryption_type,
key => key_bytes_raw,
iv  => iv_raw
);
-- The encrypted value "encrypted_raw" can be used here

decrypted_raw := DBMS_CRYPTO.DECRYPT
(
src => encrypted_raw,
typ => encryption_type,
key => key_bytes_raw,
iv  => iv_raw
);
output_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');

DBMS_OUTPUT.PUT_LINE ('Decrypted string: ' || output_string);

END;

DBMS_CRYPTOサブプログラムの要約

表40-10 DBMS_CRYPTOパッケージのサブプログラム

サブプログラム

説明

DECRYPTファンクション

ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを復号化します。

DECRYPTプロシージャ

ユーザーが指定するキーとオプションのIVに基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを復号化します。

ENCRYPTファンクション

ユーザーが指定するキーとオプションのIVに基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを暗号化します。

ENCRYPTプロシージャ

ユーザーが指定するキーとオプションのIVに基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを暗号化します。

HASHファンクション

サポートされる暗号化ハッシュ・アルゴリズム(MD4、MD5、SHA-1、SHA-2)の1つをデータに適用します。

MACファンクション

Message Authentication Codeアルゴリズム(MD5、SHA-1、SHA-2)をデータに適用し、キーを使用してメッセージを保護します。

RANDOMBYTESファンクション

暗号的に安全な擬似乱数バイト列を含むRAWデータ値を戻します。暗号化キー用の乱数ジェネレータとして使用できます。

RANDOMINTEGERファンクション

BINARY_INTEGERデータ・タイプの乱数を戻します。

RANDOMNUMBERファンクション

NUMBERデータ・タイプの128ビット整数を戻します。

DECRYPTファンクション

このファンクションは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを復号化します。

構文

DBMS_CRYPTO.DECRYPT(
src IN RAW,
typ IN PLS_INTEGER,
key IN RAW,
iv  IN RAW DEFAULT NULL)
RETURN RAW;

プラグマ

pragma restrict_references(decrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表40-11 DECRYPTファンクションのパラメータ

パラメータ名

説明

src

復号化するRAWデータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

復号化に使用するキー。

iv

ブロック暗号で使用するオプションの初期化ベクター。デフォルトはNULLです。

使用上の注意

- 元のプレーン・テキストデータを復元するには、そのデータを暗号化したときと同じ暗号、修飾子、キー、IVを指定して、DECRYPTをコールする必要があります。

関連項目:
このパッケージで使用できる暗号と修飾子の詳細は、「ENCRYPTファンクション」の「使用上の注意」を参照してください。

- VARCHAR2データをRAWに変換してから暗号化した場合は、UTL_I18Nパッケージを使用し、暗号化済のデータを適切なデータベース・キャラクタ・セットに再変換する必要があります。

関連項目:
VARCHAR2をRAWに変換する手順の詳細は、「変換ルール」を参照してください。

DECRYPTプロシージャ

これらのプロシージャは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを復号化します。

構文

DBMS_CRYPTO.DECRYPT(
dst IN OUT NOCOPY BLOB,
src IN            BLOB,
typ IN            PLS_INTEGER,
key IN            RAW,
iv  IN            RAW          DEFAULT NULL);

DBMS_CRYPT.DECRYPT(
dst IN OUT NOCOPY CLOB         CHARACTER SET ANY_CS,
src IN            BLOB,
typ IN            PLS_INTEGER,
key IN            RAW,
iv  IN            RAW          DEFAULT NULL);

プラグマ

pragma restrict_references(decrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表40-12 DECRYPTプロシージャのパラメータ

パラメータ名

説明

dst

出力データのLOBロケータ。出力のLOB <dst>の値は上書きされます。

src

入力データのLOBロケータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

復号化に使用するキー。

iv

ブロック暗号で使用するオプションの初期化ベクター。デフォルトはすべて0(ゼロ)です。

ENCRYPTファンクション

このファンクションは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを暗号化します。

構文

DBMS_CRYPTO.ENCRYPT(
src IN RAW,
typ IN PLS_INTEGER,
key IN RAW,
iv  IN RAW          DEFAULT NULL)
RETURN RAW;

プラグマ

pragma restrict_references(encrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表40-13 ENCRYPTファンクションのパラメータ

パラメータ名

説明

src

暗号化するRAWデータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

データの暗号化に使用する暗号化キー。

iv

ブロック暗号で使用するオプションの初期化ベクター。デフォルトはNULLです。

使用上の注意

- ブロック暗号は、連鎖モードまたはパディング種類に関する修飾子で修飾できます。連鎖モードとパディング種類に関する修飾子がブロック暗号に追加されて、暗号スイートは形成されます。最も一般的に使用される連鎖モードは暗号ブロック連鎖(CBC)であり、推奨のパディング種類はPKCS #5です。ブロック暗号連鎖モードおよびパディング種類に関してこのパッケージで定義された修飾子定数の詳細は、表40-7および表40-8を参照してください。

- 暗号化と復号化に使用する暗号スイートの内容がよくわかるように、パッケージ・レベルの独自の定数を定義できます。たとえば、DESと暗号ブロック連鎖モードを使用し、パディングを行わない暗号スイートを表すには、次のような定数を定義します。

DES_CBC_NONE CONSTANT PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_DES
+ DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_NONE;

このパッケージですでに定数として定義されているブロック暗号スイートは、表40-6を参照してください。

- VARCHAR2データを暗号化する場合は、そのデータを最初にAL32UTF8キャラクタ・セットに変換する必要があります。

関連項目:
変換手順の詳細は、「変換ルール」を参照してください。

- 保存するデータを暗号化するときに、RC4などのストリーム暗号はお薦めしません。

ENCRYPTプロシージャ

これらのプロシージャは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを暗号化します。

構文

DBMS_CRYPTO.ENCRYPT(
dst IN OUT NOCOPY BLOB,
src IN            BLOB,
typ IN            PLS_INTEGER,
key IN            RAW,
iv  IN            RAW          DEFAULT NULL);

DBMS_CRYPTO.ENCRYPT(
dst IN OUT NOCOPY BLOB,
src IN            CLOB         CHARACTER SET ANY_CS,
typ IN            PLS_INTEGER,
key IN            RAW,
iv  IN            RAW          DEFAULT NULL);

プラグマ

pragma restrict_references(encrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表40-14 ENCRYPTプロシージャのパラメータ

パラメータ名

説明

dst

出力データのLOBロケータ。出力のLOB <dst>の値は上書きされます。

src

入力データのLOBロケータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

データの暗号化に使用する暗号化キー。

iv

ブロック暗号で使用するオプションの初期化ベクター。デフォルトはNULLです。

使用上の注意

ENCRYPTプロシージャの使用上の注意は、「変換ルール」を参照してください。

HASHファンクション

一方向ハッシュ関数は、可変長の入力文字列(データ)をハッシュ値と呼ばれる固定長の(通常は入力文字列より小さい)出力文字列に変換します。ハッシュ値は、入力データの一意の識別子(指紋のようなもの)として使用できます。ハッシュ値を使用すると、データが変更されたかどうかを確認することができます。

一方向ハッシュ関数は、片方向のみに動作するハッシュ関数です。入力メッセージからハッシュ値を計算するのは簡単ですが、特定のハッシュ値からデータを生成するのは困難です。したがって、一方向ハッシュ関数はデータの整合性を保証するのに役立ちます。一方向ハッシュ関数の使用方法の詳細は、「HASHファンクションとMACファンクションの使い分け」を参照してください。

HASHファンクションは、サポートされる暗号化ハッシュ・アルゴリズム(表40-3を参照)の1つをデータに適用します。

構文

DBMS_CRYPTO.Hash (
src IN RAW,
typ IN PLS_INTEGER)
RETURN RAW;

DBMS_CRYPTO.Hash (
src IN BLOB,
typ IN PLS_INTEGER)
RETURN RAW;

DBMS_CRYPTO.Hash (
src IN CLOB CHARACTER SET ANY_CS,
typ IN PLS_INTEGER)
RETURN RAW;

プラグマ

pragma restrict_references(hash,WNDS,RNDS,WNPS,RNPS);

パラメータ

表40-15 HASHファンクションのパラメータ

パラメータ名

説明

src

ハッシュ値が計算されるソース・データ

typ

ソース・データに適用するハッシュ・アルゴリズム

使用上の注意

Secure Hash Algorithmアルゴリズムは、MD4やMD5よりも不当攻撃に対する抵抗力があるため、SHA-1(Secure Hash Algorithm)またはSHA-2を使用することをお薦めします。メッセージ・ダイジェスト・アルゴリズムを使用する必要がある場合、MD4よりもMD5のほうが強力なセキュリティ機能を提供します。

MACファンクション

Message Authentication Code(MAC)ファンクションは、キーで補強された一方向ハッシュ関数です。MACファンクションは「HASHファンクション」で説明した一方向ハッシュ関数と同様の機能を持っていますが、秘密鍵の機能が追加されています。同じ秘密鍵を持つユーザーのみがハッシュ値を照合できます。MACの使用方法の詳細は、「HASHファンクションとMACファンクションの使い分け」も参照してください。

MACファンクションはMACアルゴリズムをデータに適用し、キーを使用してメッセージを保護します。このパッケージで定義されているMACアルゴリズムのリストは、表40-4を参照してください。

構文

DBMS_CRYPTO.MAC (
src IN RAW,
typ IN PLS_INTEGER,
key IN RAW)
RETURN RAW;

DBMS_CRYPTO.MAC (
src IN BLOB,
typ IN PLS_INTEGER
key IN RAW)
RETURN RAW;

DBMS_CRYPTO.MAC (
src IN CLOB CHARACTER SET ANY_CS,
typ IN PLS_INTEGER
key IN RAW)
RETURN RAW;

プラグマ

pragma restrict_references(mac,WNDS,RNDS,WNPS,RNPS);

パラメータ

表40-16 MACファンクションのパラメータ

パラメータ名

説明

src

MACアルゴリズムが適用されるソース・データ

typ

ソース・データに適用するMACアルゴリズム

key

MACアルゴリズムで使用するキー

RANDOMBYTESファンクション

このファンクションは、暗号的に安全な擬似乱数バイト列を含むRAW値を戻しますが、これは、暗号化キー用の乱数ジェネレータとして使用できます。RANDOMBYTESファンクションは、RSA X9.31 PRNG (Pseudo-Random Number Generator)に基づいています。

構文

DBMS_CRYPTO.RANDOMBYTES (
number_bytes IN POSITIVE)
RETURN RAW;

プラグマ

pragma restrict_references(randombytes,WNDS,RNDS,WNPS,RNPS);

パラメータ

表40-17 RANDOMBYTESファンクションのパラメータ

パラメータ名

説明

number_bytes

生成する擬似乱数バイトのバイト数

使用上の注意

number_bytesの値がRAW変数の最大長を超えないように注意してください。

RANDOMINTEGERファンクション

このファンクションは、OracleのBINARY_INTEGERデータ・タイプで表現可能な範囲の整数を戻します。

構文

DBMS_CRYPTO.RANDOMINTEGER
RETURN BINARY_INTEGER;

プラグマ

pragma restrict_references(randominteger,WNDS,RNDS,WNPS,RNPS);

RANDOMNUMBERファンクション

このファンクションは、OracleのNUMBERデータ・タイプで表現可能な範囲([0..2**128-1])の整数乱数を戻します。

構文

DBMS_CRYPTO.RANDOMNUMBER
RETURN NUMBER;

プラグマ

pragma restrict_references(randomnumber,WNDS,RNDS,WNPS,RNPS);

41 DBMS_CSX_ADMIN

DBMS_CSX_ADMINパッケージは、バイナリXMLデータを含む表領域を移動する場合に設定をカスタマイズするインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_CSX_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_CSX_ADMINの要約

DBMS_CSX_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 定数

概要

このパッケージをDBAで使用すると、バイナリXMLデータを含む表領域を移動する場合に設定をカスタマイズできます。トランスポータブル表領域のジョブを実行するには、このパッケージを使用する必要はありません。

デフォルトでは、すべてのバイナリXML表に、デフォルトのトークン表の設定が使用されますが、これは移動中にターゲット・データベースにレプリケートされます。トークン表の設定を大量に転送するコストを回避するため、DBAでは、特定の表領域にトークン表の設定を新しく登録することも選択できます。このパッケージでは、トークン表の設定を登録および参照するためのルーチンが提供されています。

セキュリティ・モデル

DBMS_CSX_ADMINパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、SYS、XDBまたはDBAに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

DBMS_CSX_ADMINパッケージでは、表41-1に示す定数が使用されます。

表41-1 DBMS_CSX_ADMINの定数

名前

タイプ

値

説明

DEFAULT_LEVEL

BINARY_INTEGER

0

デフォルトのトークン表。

TAB_LEVEL

BINARY_INTEGER

1

表(表領域ではなく)に関連付けられているトークン表の設定。

TBS_LEVEL

BINARY_INTEGER

2

表領域に関連付けられているトークン表の設定。

NO_CREATE

BINARY_INTEGER

0

特定の表/表領域に関連付けられたトークン表がすでに存在します。

NO_INDEXES

BINARY_INTEGER

1

トークン表の新しい設定には索引を作成しません。

WITH_INDEXES

BINARY_INTEGER

2

トークン表に索引を作成します。

DEFAULT_TOKS

BINARY_INTEGER

0

デフォルトのトークン・マッピングをトークン表に事前に移入します。

NO_DEFAULT_TOKS

BINARY_INTEGER

1

デフォルトのトークン・マッピングをトークン表に事前に移入しません。

DBMS_CSX_ADMINの要約

表41-2 DBMS_CSX_ADMINパッケージのサブプログラム

サブプログラム

説明

GETTOKENTABLEINFOプロシージャおよびファンクション

指定した表のトークン・マッピングが設定されたトークン表のGUIDを戻します。

GETTOKENTABLEINFOBYTABLESPACEプロシージャ

指定した表領域のGUIDおよびトークン表の名前を戻します。

NAMESPACEIDTABLEファンクション

デフォルトのnamespace-IDトークン表を戻します。

PATHIDTABLEファンクション

デフォルトのpath-IDトークン表を戻します。

QNAMEIDTABLEファンクション

デフォルトのqname-IDトークン表を戻します。

GETTOKENTABLEINFOプロシージャおよびファンクション

表の名前および所有者を指定すると、プロシージャの1番目のオーバーロードで、この表のトークン・マッピングが存在するトークン表設定のグローバルな一意の識別子(GUID)が戻されます。また、このプロシージャでは、トークン表の名前、およびトークン表の設定がデフォルトであるかどうかも戻されます。

表のオブジェクト番号を指定すると、プロシージャの2番目のオーバーロードで、表に使用されるトークン表の設定のGUID、およびこれがデフォルトのトークン表の設定かどうかが戻されます。

構文

DBMS_CSX_ADMIN.GETTOKENTABLEINFO  (
ownername      IN   VARCHAR2,
tablename      IN   VARCHAR2,
guid           OUT  RAW,
qnametable     OUT  VARCHAR2,
nmspctable     OUT  VARCHAR2,
level          OUT  NUMBER,
tabno          OUT  NUMBER);

DBMS_CSX_ADMIN.GETTOKENTABLEINFO  (
tabno          IN   NUMBER,
guid           OUT  RAW);
RETURN BOOLEAN;

パラメータ

表41-3 GETTOKENTABLEINFOプロシージャおよびファンクションのパラメータ

パラメータ

説明

ownername

表の所有者。

tablename

表の名前。

guid

指定した表で使用されるトークン表の設定のGUID。

qnametable

新しい設定でのqname-IDテーブルの名前。

nmspctable

新しい設定でのnamespace-IDテーブルの名前。

level

デフォルトのトークン表の設定の場合はDEFAULT_LEVEL、指定した表と同じ表領域のすべての表で、同じトークン表の設定が使用される場合はTBS_LEVEL、その他の場合はTAB_LEVEL。

tabno

表オブジェクト番号。

GETTOKENTABLEINFOBYTABLESPACEプロシージャ

このプロシージャでは、表領域番号を指定すると、この表領域のGUIDおよびトークン表の名前が戻されます。

構文

DBMS_CSX_ADMIN.GETTOKENTABLEINFOBYTABLESPACE  (
tsname          IN   VARCHAR2,
tablespaceno    IN   NUMBER,
guid            OUT  RAW,
qnametable      OUT  VARCHAR2,
nmspctable      OUT  VARCHAR2,
isdefault       OUT  BOOLEAN,
containTokTab   OUT  BOOLEAN);

パラメータ

表41-4 GETTOKENTABLEINFOBYTABLESPACEプロシージャのパラメータ

パラメータ

説明

tsname

表領域の名前。

tablespaceno

表領域番号。

guid

指定した表領域(存在する場合)に対応するトークン表の設定のGUID。

qnametable

qname-ID表の名前。

nmspctable

namespace-ID表の名前。

isdefault

トークン表がデフォルトの場合はTRUE。

containTokTab

表領域に独自のトークン表の設定が含まれている場合はTRUE。

NAMESPACEIDTABLEファンクション

このプロシージャは、デフォルトのnamespace-IDトークン表を戻します。

構文

DBMS_CSX_ADMIN.NAMESPACEIDTABLE
RETURN VARCHAR2;

PATHIDTABLEファンクション

このプロシージャは、デフォルトのpath-IDトークン表を戻します。このプロシージャは、XML索引を持つXML表への問合せに対してEXPLAIN PLANを実行する前に、デフォルトのpath-IDトークン表への権限をユーザーに付与するために使用されます。

構文

DBMS_CSX_ADMIN.PATHIDTABLE
RETURN VARCHAR2;

QNAMEIDTABLEファンクション

このプロシージャは、デフォルトのqname-IDトークン表を戻します。

構文

DBMS_CSX_ADMIN.QNAMEIDTABLE
RETURN VARCHAR2;

42 DBMS_CUBE

DBMS_CUBEには、OLAPキューブおよびディメンションを作成するサブプログラム、および問合せのためにデータをロードして処理するサブプログラムが含まれています。

関連項目:
ビジネス・インテリジェンス・アプリケーションおよび分析アプリケーションをサポートするOLAPオプションの使用の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_CUBEの使用方法

- SQL集計管理の使用方法

- 10gアナリティック・ワークスペースのアップグレード

- DBMS_CUBEサブプログラムの要約

DBMS_CUBEの使用方法

キューブおよびキューブ・ディメンションは、複数ディメンションの分析をサポートする優れたデータ・オブジェクトです。キューブおよびディメンションは、アナリティック・ワークスペースと呼ばれるコンテナに格納されています。OLAPオプションを使用すると、Oracle Databaseで複数ディメンションのオブジェクトと分析を使用できます。

キューブおよびディメンションを自動リフレッシュし、クエリー・リライトを実行するために、キューブをキューブ・マテリアライズド・ビューとして使用できます。複数のDBMS_CUBEサブプログラムで、リレーショナル・マテリアライズド・ビューのかわりとしてのキューブ・マテリアライズド・ビューの作成およびメンテナンスがサポートされています。これらのサブプログラムの詳細は、「SQL集計管理の使用方法」を参照してください。

キューブおよびディメンションのメタデータはテンプレートと呼ばれるXML文書に定義されていて、CREATE_CUBEファンクションまたはDERIVE_FROM_MVIEWファンクションを使用してリレーショナル・マテリアライズド・ビューから導出できます。Analytic Workspace Managerというグラフィック・ツールを使用して、アナリティック・コンテンツでキューブを拡張したり、新しいキューブおよびキューブ・ディメンションに対してメタデータを最初から作成できます。

その他のいくつかのDBMS_CUBEサブプログラムでは、XMLテンプレートからアナリティック・ワークスペースを作成し、キューブとディメンションに格納されたデータをリフレッシュする場合にAnalytic Workspace ManagerのかわりとなるSQLを提供しています。IMPORT_XMLプロシージャは、キューブおよびキューブ・ディメンションを含むアナリティック・ワークスペースをXMLテンプレートから作成します。BUILDプロシージャは、データ・ソースからキューブおよびディメンションにデータをロードし、問合せ用のデータを準備するために必要な処理手順を実行します。

セキュリティ・モデル

このパッケージを使用するには、次のロールおよびシステム権限が必要です。

ユーザー独自のスキーマ内にディメンション・オブジェクトを作成する場合:

- OLAP_USERロール

- CREATE SESSION権限

異なるスキーマ内にディメンション・オブジェクトを作成する場合:

- OLAP_DBAロール

- CREATE SESSION権限

ユーザー独自のスキーマ内にキューブ・マテリアライズド・ビューを作成する場合:

- CREATE MATERIALIZED VIEW権限

- CREATE DIMENSION権限

- ADVISOR権限

異なるスキーマ内にキューブ・マテリアライズド・ビューを作成する場合:

- CREATE ANY MATERIALIZED VIEW権限

- CREATE ANY DIMENSION権限

- ADVISOR権限

ソース・テーブルが異なるスキーマ内にある場合、ディメンション・オブジェクトの所有者には、それらのテーブルに対するSELECTオブジェクト権限が必要です。

SQL集計管理の使用方法

SQL集計管理はDBMS_CUBEのPL/SQLサブプログラムのグループで、既存のリレーショナル・マテリアライズド・ビューからのキューブ・マテリアライズド・ビューの迅速なデプロイをサポートしています。キューブ・マテリアライズド・ビューは、Oracle Databaseの自動リフレッシュ機能およびクエリー・リライト機能のために拡張されたキューブです。単一のキューブ・マテリアライズド・ビューでは、ファクト表上にあるサマリーの多数のリレーショナル・マテリアライズド・ビューを置き換えることができるため、すべてのサマリー・データへのレスポンス時間を均一にできます。

キューブ・マテリアライズド・ビューによって、詳細なリレーショナル表のサマリーを問い合せるアプリケーションで、OLAPオプションの高速更新機能および高速問合せ機能を使用できるようになります。サマリー・データが生成されてキューブに格納され、クエリー・リライトによって、問合せが自動的にキューブ・マテリアライズド・ビューにリダイレクトされます。アプリケーションの問合せのパフォーマンスが向上します。

キューブ・マテリアライズド・ビューの作成プロセスでは、DBMS_CUBEによって、キューブおよびキューブ・ディメンションを含むすべての機能を備えたアナリティック・ワークスペースも作成されます。キューブには、リレーショナル・マテリアライズド・ビューのデータが格納される表のかわりに、キューブ・マテリアライズド・ビューのデータが格納されます。また、キューブでは、情報が豊富なコンテンツでデータベースを拡張するための様々な分析関数もサポートされています。

キューブ・マテリアライズド・ビューは、他のマテリアライズド・ビューとともに、データ・ディクショナリに登録されます。キューブ・マテリアライズド・ビューは、CB$接頭辞によって識別されます。

DBMS_CUBEサブプログラムでは、キューブ・マテリアライズド・ビューのライフサイクル管理もサポートされています。

関連項目:
キューブ・マテリアライズド・ビューおよび拡張OLAP分析の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

SQL集計管理のサブプログラム

SQL集計管理には、次のサブプログラムが含まれています。

- CREATE_MVIEWファンクション

- DERIVE_FROM_MVIEWファンクション

- DROP_MVIEWプロシージャ

- REFRESH_MVIEWプロシージャ

リレーショナル・マテリアライズド・ビューの要件

SQL集計管理では、既存のリレーショナル・マテリアライズド・ビューを使用して、キューブ・マテリアライズド・ビューの生成に必要なすべての情報を導出します。リレーショナル・マテリアライズド・ビューは、キューブ・マテリアライズド・ビューに格納されたデータの詳細レベルを決定します。関連付けられたリレーショナル・ディメンション・オブジェクトは、マテリアライズド・ビュー副問合せのGROUP BY句で指定される最下位レベルからディメンション階層の最上位レベルまで、集計の範囲を決定します。

リレーショナル・マテリアライズド・ビューは、次の要件を満たしている必要があります。

- 1つ以上の列に対する明示的なGROUP BY句。

- 選択リストまたはGROUP BY句に式がないこと。

- SUM、MIN、MAX、AVG数値集計メソッドの1つ以上。

- 外部結合がないこと。

- リレーショナル・ディメンションに関連付けられた1つ以上の単純列を持つサマリー・キー。
または

1つ以上の単純列を持ち、階層またはレベルを持たないサマリー・キー。

- ファクト列に対する任意の数値データ・タイプ。すべてのファクトはNUMBERに変換されます。

- リライトが可能です。REWRITE_CAPABILITYはGENERALにする必要があり、NONEにはできません。『Oracle Databaseリファレンス』のALL_MVIEWSエントリを参照してください。

- 定義問合せの集計関数では、DISTINCTまたはUNIQUEキーワードは使用できません。たとえば、AVG(DISTINCT units)は、STRICTモードではエラーの原因になり、LOOSEモードでは無視されます。

キューブ・マテリアライズド・ビューを表示する場合は、LOOSEおよびSTRICTの2つのモードから選択できます。STRICTモードでは、要件から逸脱すると例外が発生し、マテリアライズド・ビューが作成されません。LOOSEモード(デフォルト)では、一部の逸脱は許容されますが、マテリアライズド・ビューの内容に影響があります。リレーショナル・マテリアライズド・ビューにこれらの要素があると、次の警告メッセージが生成されます。

- 定義問合せの複雑な式は無視され、キューブ・マテリアライズド・ビューには表示されません。

- AVGファンクションはSUMおよびCOUNTに変更されます。

- SUM、MIN、MAXまたはAVGファンクションを伴わないCOUNTファンクションは無視されます。

- STDDEVおよびVARIANCEファンクションは無視されます。

WHERE句での条件のフィルタ処理方法を選択することもできます。フィルタ処理がオフの場合、条件は無視されます。オンの場合、有効な条件はキューブ・マテリアライズド・ビューで表示されますが、ディメンション・レベル間で条件が非対称な場合は例外が発生します。

キューブ・マテリアライズド・ビューの管理および問合せに対する権限

キューブ・マテリアライズド・ビューを作成するには、次の権限が必要です。

- CREATE [ANY] MATERIALIZED VIEW権限

- CREATE [ANY] DIMENSION権限

- ADVISOR権限

クエリー・リライトを使用して別のスキーマからキューブ・マテリアライズド・ビューにアクセスするには、次の権限が必要です。

- GLOBAL QUERY REWRITE権限

- リレーショナル・ソース表に対するSELECTまたはREAD権限

- キューブ・マテリアライズド・ビューがサポートされているアナリティック・ワークスペース(AW$name)に対するSELECTまたはREAD権限

- キューブに対するSELECTまたはREAD権限

- キューブのディメンションに対するSELECTまたはREAD権限

キューブ・マテリアライズド・ビューに対してではなく、キューブ・マテリアライズド・ビューをサポートしているデータベース・オブジェクトに対するSELECTまたはREAD権限が必要なことに注意してください。

SQL集計管理の例

SQL集計管理サブプログラムのすべての例で、サンプルの販売履歴スキーマが使用されます。このスキーマはCAL_MONTH_SALES_MVおよびFWEEK_PSCAT_SALES_MVの2つのリレーショナル・マテリアライズド・ビューとともにOracle Databaseにインストールされます。

CAL_MONTH_SALES_MV リレーショナル・マテリアライズド・ビューについて

次の例では、キューブ・マテリアライズド・ビューの作成の基本として、CAL_MONTH_SALES_MVを使用しています。CAL_MONTH_SALES_MVの作成には、次の問合せが使われました。CAL_MONTH_SALES_MVは、SALES表に格納されている日次販売データを月ごとに要約します。

SELECT query FROM user_mviews
WHERE mview_name='CAL_MONTH_SALES_MV';

QUERY
--------------------------------------------
SELECT   t.calendar_month_desc
,        sum(s.amount_sold) AS dollars
FROM     sales s
,        times t
WHERE    s.time_id = t.time_id
GROUP BY t.calendar_month_desc

DBMS_CUBEは、リレーショナル・ディメンションを使用して、キューブ・マテリアライズド・ビューのレベルおよび階層を導出します。次の問合せは、スキーマ内のほとんどのディメンション表に対してリレーショナル・ディメンションを持つSHスキーマを示しています。

SELECT dimension_name FROM user_dimensions;

DIMENSION_NAME
-------------------------------------
CUSTOMERS_DIM
PRODUCTS_DIM
TIMES_DIM
CHANNELS_DIM
PROMOTIONS_DIM

キューブ・マテリアライズド・ビューの作成

次のPL/SQLスクリプトでは、CREATE_MVIEWファンクションを使用して、CAL_MONTH_SALES_MVからキューブ・マテリアライズド・ビューを作成します。CREATE_MVIEWによって、キューブ・マテリアライズド・ビューをすぐにリフレッシュするためのオプションのBUILDパラメータが設定されます。

SET serverout ON format wrapped

DECLARE
salesaw  varchar2(30);

BEGIN
salesaw := dbms_cube.create_mview('SH', 'CAL_MONTH_SALES_MV',
'build=immediate');
END;
/

次のメッセージは、スクリプトがCB$CAL_MONTH_SALESを正常に作成し、リフレッシュしたことを示します。

Completed refresh of cube mview "SH"."CB$CAL_MONTH_SALES" at 20130212 08:42:58.0
03.
Created cube organized materialized view "CB$CAL_MONTH_SALES" for rewrite at 200
130212 08:42:58.004.

次の問合せを実行すると、SHスキーマ内のマテリアライズド・ビューが表示されます。

SELECT mview_name FROM user_mviews;

MVIEW_NAME
------------------------------
CB$CAL_MONTH_SALES
CB$TIMES_DIM_D1_CAL_ROLLUP
CAL_MONTH_SALES_MV
FWEEK_PSCAT_SALES_MV

次の2つの新しいマテリアライズド・ビューが、データ・ディクショナリに登録されます。

- CB$CAL_MONTH_SALES: キューブ・マテリアライズド・ビュー

- CB$TIMES_DIM_D1_CAL_ROLLUP: TIME_DIMカレンダ・ロールアップ階層のキューブ・ディメンション・マテリアライズド・ビュー

キューブ・ディメンション・マテリアライズド・ビューでは、キューブ・マテリアライズド・ビューのリフレッシュがサポートされています。ディメンション・マテリアライズド・ビューを直接管理しないでください。

リレーショナル・マテリアライズド・ビューの無効化

キューブ・マテリアライズド・ビューの作成後、キューブ・マテリアライズド・ビューでサポートされるようになったファクトに対するすべてのリレーショナル・マテリアライズド・ビューでのクエリー・リライトを無効にします。リレーショナル・マテリアライズド・ビューは、最適なパラメータでキューブ・マテリアライズド・ビューが作成されたことを確認できたら削除できます。

ALTER MATERIALIZED VIEW cal_month_sales_mv DISABLE QUERY REWRITE;

Materialized view altered.

CREATE_MVIEWファンクションではDISABLEQRWパラメータを使用することもできます。このパラメータによってソース・マテリアライズド・ビューでのクエリー・リライトが無効になります(表42-7を参照)。

キューブ・マテリアライズド・ビューの実行計画の作成

キューブ・マテリアライズド・ビューに対する実行計画は、リレーショナル・マテリアライズド・ビューと同じ方法で作成できます。次のコマンドは、日レベルのデータを含むSALES表への問合せに対する実行計画を生成します。回答セットでは、四半期ごとに要約されたデータが必要です。リレーショナル・マテリアライズド・ビューのデータは月ごとに要約されているため、クエリー・リライトでは、この問合せに元のリレーショナル・マテリアライズド・ビューは使用されません。ただし、クエリー・リライトでは、月、四半期、年およびすべての年についてのサマリー・データに対して、新しいキューブ・マテリアライズド・ビューを使用できます。

EXPLAIN PLAN FOR SELECT
t.calendar_quarter_desc,
sum(s.amount_sold) AS dollars
FROM     sales s,
times t
WHERE    s.time_id = t.time_id
AND      t.calendar_quarter_desc LIKE '2001%'
GROUP BY t.calendar_quarter_desc
ORDER BY t.calendar_quarter_desc;

この問合せは次の結果を戻します

CALENDAR_QUARTER_DESC    DOLLARS
--------------------- ----------
2001-01               6547097.44
2001-02               6922468.39
2001-03               7195998.63
2001-04               7470897.52

次の実行計画は、クエリー・リライトがSALES表から再計算するかわりに、キューブ・マテリアライズド・ビューからサマリー・データCB$CAL_MONTH_SALESを戻すことを示しています。

SELECT plan_table_output FROM TABLE(dbms_xplan.display());

PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------
Plan hash value: 2999729407

-----------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |                    |     1 |    30 |     3  (34)| 00:00:01 |
|   1 |  SORT GROUP BY                 |                    |     1 |    30 |     3  (34)| 00:00:01 |
|*  2 |   MAT_VIEW REWRITE CUBE ACCESS | CB$CAL_MONTH_SALES |     1 |    30 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - filter("CB$CAL_MONTH_SALES"."D1_CALENDAR_QUARTER_DESC" LIKE '2001%' AND
"CB$CAL_MONTH_SALES"."SYS_GID"=63)

15 rows selected.

キューブ・マテリアライズド・ビューのメンテナンス

自動的にリフレッシュするキューブ・マテリアライズド・ビューを作成できます。ただし、リフレッシュは、随時REFRESH_MVIEWプロシージャを使用して強制実行できます。

BEGIN
dbms_cube.refresh_mview('SH', 'CB$CAL_MONTH_SALES');
END;
/

Completed refresh of cube mview "SH"."CB$CAL_MONTH_SALES" at 20130212
14:30:59.534.

キューブ・マテリアライズド・ビューを削除する必要がある場合は、すべてのサポート・データベース・オブジェクト(アナリティック・ワークスペース、キューブ、キューブ・ディメンションなど)も削除するためにDROP_MVIEWプロシージャを使用します。

BEGIN
dbms_cube.drop_mview('SH', 'CB$CAL_MONTH_SALES');
END;
/

Dropped cube organized materialized view "SH"."CAL_MONTH_SALES" including
container analytic workspace "SH"."CAL_MONTH_SALES_AW" at 20130212 13:38:47.878.

新しいデータベース・オブジェクト

CREATE_MVIEWファンクションは、キューブ・マテリアライズド・ビューに加えていくつかの優れたデータベース・オブジェクトを作成します。これらのオブジェクトは、ALL_CUBES、ALL_CUBE_DIMENSIONSなどのビューを問い合せてデータ・ディクショナリで検索できます。

この例では、次のサポート・オブジェクトが作成されています。

- アナリティック・ワークスペースCAL_MONTH_SALES_AW(AW$CAL_MONTH_SALES_AW表)

- キューブCAL_MONTH_SALES

- キューブ・ディメンションTIMES_DIM_D1

- ディメンション階層CAL_ROLLUP

- ディメンション・レベルALL_TIMES_DIM、YEAR、QUARTERおよびMONTH

- CAL_ROLLUP階層内のレベルに対する数値属性

10gアナリティック・ワークスペースのアップグレード

Oracle OLAPメタデータはOLAP 11gとOLAP 12cで同じなので、OLAP 11gアナリティック・ワークスペースをOLAP 12cにアップグレードする必要はありません。このトピックでは、Oracle OLAP 10gアナリティック・ワークスペースをOLAP 12cにアップグレードする方法を説明します。

OLAP 10gアナリティック・ワークスペースをOLAP 12cにアップグレードするには、OLAP 10gオブジェクトをXMLテンプレートとして保存し、そのXMLを別のスキーマにインポートします。元のアナリティック・ワークスペースにはそのままアクセス可能で、アップグレード・プロセスによって変更されません。

ヒント:
アップグレードの実行には、Analytic Workspace Managerを使用することをお薦めします。『Oracle OLAPユーザーズ・ガイド』を参照してください。

関連項目:
Oracle Databaseのアップグレードについては、『Oracle Databaseアップグレード・ガイド』を参照してください。

DBMS_CUBEにあるこれらのサブプログラムは、アップグレード・プロセスをサポートします。

- CREATE_EXPORT_OPTIONSプロシージャ

- CREATE_IMPORT_OPTIONSプロシージャ

- EXPORT_XMLプロシージャ

- EXPORT_XML_TO_FILEプロシージャ

- IMPORT_XMLプロシージャ

- INITIALIZE_CUBE_UPGRADEプロシージャ

- UPGRADE_AWプロシージャ

前提条件は次のとおりです。

- OLAP 10gアナリティック・ワークスペースでは、OLAP標準形式のメタデータを使用できます。

- OLAP 10gアナリティック・ワークスペースでのカスタマイズはXMLテンプレートにエクスポートされない場合があります。OLAP 12cでこれらを再作成する必要があります。

- 元のリレーショナル・ソース・データは、新しいアナリティック・ワークスペースにロードするために使用できる必要があります。データが別のスキーマにある場合、または表の名前が異なる場合は、アップグレード後にディメンション・オブジェクトを新しいリレーショナル・ソースに再マップする必要があります。

- OLAP 12cアナリティック・ワークスペースは、OLAP 10gアナリティック・ワークスペースと同じスキーマに作成できます。ただし、別のスキーマに作成する必要がある場合は、次の権限を持つ新しいユーザーを作成します。

- OLAP 10gアナリティック・ワークスペース(GRANT SELECT ON schema.AW$analytic_workspace)に対するSELECTまたはREAD権限。

- OLAP 10gアナリティック・ワークスペースのソース・データを含むすべてのデータベース表とビューに対するSELECTまたはREAD権限。

- OLAP管理者の適切な権限。

- Oracle 10gユーザーと同じデフォルトの表領域。

『Oracle OLAPユーザーズ・ガイド』を参照してください。

名前の競合の修正

OLAP 10gとOLAP 12cではネームスペースが異なります。正常にアップグレードするには、12cのネーミング規則で複数回使用されている10gのオブジェクト名を特定し、それらに一意の名前を指定する必要があります。

Oracle 12cのOLAPオブジェクト名の一意性は、次のネームスペースによって制御されます。

- スキーマ: キューブ、ディメンションおよびメジャー・フォルダの名前はスキーマ内で一意である必要があります。これらは、表、ビュー、索引、リレーショナル・ディメンションまたはその他の優れたオブジェクトの名前とは競合できません。ただし、これらのOLAP 12cオブジェクト名と10gオブジェクト名は、異なるネームスペースに存在するため、区別する必要はありません。

- キューブ: メジャーの名前はキューブ内で一意である必要があります。

- ディメンション: 階層、レベルおよび属性の名前はディメンション内で一意である必要があります。たとえば、ディメンション内に、Customersという階層とCustomersというレベルが存在することはできません。

初期化表および名前変更表を使用して、アップグレードした12cアナリティック・ワークスペース内のオブジェクトの名前を変更できます。

初期化表

INITIALIZE_CUBE_UPGRADEプロシージャは、OLAP 12cネーミング規則での曖昧な名前を識別します。たとえば、10gディメンションには同じ名前の階層とレベルが含まれている場合があります。12cでは、同じ12cネームスペースに階層とレベルが存在するために名前が一意ではなくなり、12cクライアントは、階層とレベルを名前で区別することはできません。

INITIALIZE_CUBE_UPGRADEは、CUBE_UPGRADE_INFOという表を作成してこれらのレベル、階層および属性に一意の名前を移入します。12cクライアントは、表に移入された一意の名前を使用して、OLAP 12cのメタデータを参照できます。10gのメタデータに曖昧な名前が含まれていると、OLAP 12cクライアントをアナリティック・ワークスペースに連結したり、CUBE_UPGRADE_INFO表なしでアップグレードを実行したりすることはできません。

CUBE_UPGRADE_INFOを編集して、デフォルトの一意の名前を選択した名前に変更できます。また、行を追加して他のオブジェクトの名前を変更することもできます。12cクライアントの使用時に、新しいオブジェクト名が表示されます。10gクライアントの使用時には、元の名前が表示されます。ただし、この表はINITIALIZE_CUBE_UPGRADEプロシージャによって上書きされるため、カスタマイズした内容を名前変更表に入力する必要がある場合があります。

OLAP 10gからのアップグレード時には、CUBE_UPGRADE_INFO内の一意のオブジェクト名が新しいアナリティック・ワークスペース内の12cオブジェクトの名前として使用されます。ただし、INITIALIZE_CUBE_UPGRADEは、キューブ、ディメンションおよびメジャー・フォルダに一意の名前を自動的には指定しません。アップグレードを完了するには、12cネームスペース内でこれらのオブジェクトの名前が一意であることを確認する必要があります。CUBE_UPGRADE_INFO表または名前変更表でこれらのオブジェクトに新しい名前を指定できます。

OLAP 12cクライアントは、OLAP 10gアナリティック・ワークスペースと同じスキーマに存在する場合、自動的にCUBE_UPGRADE_INFOを使用します。

関連項目:
「INITIALIZE_CUBE_UPGRADEプロシージャ」

名前変更表

OLAP 12cアナリティック・ワークスペース用の新しいオブジェクト名を含む名前変更表を作成できます。その後、名前変更表をCREATE_IMPORT_OPTIONSおよびUPGRADE_AWプロシージャで使用できます。

同じスキーマ内でアップグレードする場合は、12cアナリティック・ワークスペース用に一意の名前を指定する必要があります。UPGRADE_AWプロシージャによってこのためのパラメータが提供されますが、提供されない場合は、名前変更表に新しい名前を指定する必要があります。12cキューブは10gキューブとは異なるネームスペースに作成されるため、キューブ名の複製によって曖昧さが生じることはありません。

名前変更表に指定されている名前は、アップグレード時にのみ使用され、CUBE_UPGRADE_INFO表に入力されている名前に上書きされます。

名前変更表を作成するには、次の手順を実行します。

1. SQL*Plusまたは別のSQLクライアントを開き、Oracle Databaseに10gアナリティック・ワークスペースの所有者として接続します。

2. 次のようなコマンドを発行します。

CREATE TABLE table_name (
source_id    VARCHAR2(300),
new_name     VARCHAR2(30),
object_type  VARCHAR2(30));

3. 次のように名前変更表に適切な値を移入します。

table_nameは、名前変更表の名前です。

source_idは、IMPORT_XMLに提供されるXML文書に記述されているオブジェクトの識別子です。この識別子は、次の形式である必要があります。

schema_name.object_name[.subobject_name]

new_nameは、source_idで指定されたオブジェクトへのインポート時に指定されるオブジェクト名です。

object_typeは、XMLで記述されるStandardDimension、DerivedMeasureなどのオブジェクト・タイプです。

たとえば、次のSQL文によって、アナリティック・ワークスペース、1つのキューブおよび4つのディメンションの新しい名前が表に移入されます。

INSERT INTO my_object_map VALUES('GLOBAL_AW.GLOBAL10.AW', 'GLOBAL12', 'AW');
INSERT INTO my_object_map VALUES('GLOBAL_AW.UNITS_CUBE', 'UNIT_SALES_CUBE', 'Cube');
INSERT INTO my_object_map VALUES('GLOBAL_AW.CUSTOMER', 'CUSTOMERS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.CHANNEL', 'CHANNELS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.PRODUCT', 'PRODUCTS', 'StandardDimension');
INSERT INTO my_object_map VALUES('GLOBAL_AW.TIME', 'TIME_PERIODS', 'TimeDimension');

関連項目:
「CREATE_IMPORT_OPTIONSプロシージャ」

シンプル・アップグレード

シンプル・アップグレードでは、OLAP 10gアナリティック・ワークスペースからOLAP 12cアナリティック・ワークスペースが作成されます。

Oracle OLAP 10gアナリティック・ワークスペースのシンプル・アップグレードを実行するには、次の手順を実行します。

1. SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 12cアナリティック・ワークスペースのスキーマ所有者としてOracle Database 12cに接続します。

2. 12cアナリティック・ワークスペース内のオブジェクトの名前を変更するために、「名前変更表」の説明に従って名前変更表を作成します。 (オプション)

3. 「UPGRADE_AWプロシージャ」の説明に従ってアップグレードを実行します。

4. DBMS_CUBE.BUILDプロシージャを使用してデータをキューブにロードします。

例42-1 GLOBALアナリティック・ワークスペースへのシンプル・アップグレードの実行

この例では、GLOBAL10というOLAP 10gアナリティック・ワークスペースからGLOBAL12というOLAP 12cアナリティック・ワークスペースを作成します。GLOBAL10には同じスキーマ内のキューブ、ディメンション、メジャー・フォルダまたは表の名前の競合は存在しないため、この例では名前変更表は必要ありません。

BEGIN

-- Upgrade the analytic workspace
dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL12');

-- Load and aggregate the data
dbms_cube.build(script => 'UNITS_CUBE, PRICE_AND_COST_CUBE');

END;
/

カスタム・アップグレード

カスタム・アップグレードでは、エクスポートおよびインポートのオプションを設定できます。

Oracle OLAP 10gアナリティック・ワークスペースのカスタム・アップグレードを実行するには、次の手順を実行します。

1. SQL*Plusまたは同様のSQLコマンドライン・インタフェースを開き、OLAP 12cアナリティック・ワークスペースのスキーマ所有者としてOracle Database 12cに接続します。

2. 「初期化表」の説明に従って、初期化表を生成します。新しいデフォルトのオブジェクト名を確認し、必要に応じて変更します。

3. 「名前変更表」の説明に従って、名前変更表を作成します。同じスキーマ内でアップグレードする場合は、名前変更表を使用して、12cアナリティック・ワークスペース用に一意の名前を指定する必要があります。そうでない場合、名前変更表は、アナリティック・ワークスペースのキューブ、ディメンション、メジャー・フォルダ間またはそれらの名前と宛先スキーマの既存のキューブ、ディメンション、メジャー・フォルダ、表間で名前が複製されたときにのみ必要となります。

4. 次を行うSQLスクリプトを作成します。

1. 「CREATE_EXPORT_OPTIONSプロシージャ」の説明に従って、エクスポート・オプション用のXML文書を作成します。アップグレードを実行するには、SUPPRESS_NAMESPACEオプションをTRUEに設定する必要があります。

2. 「CREATE_IMPORT_OPTIONSプロシージャ」の説明に従って、インポート・オプション用のXML文書を作成します。

3. 「EXPORT_XMLプロシージャ」の説明に従って、OLAP 12c形式でXMLテンプレートを作成します。

4. 「IMPORT_XMLプロシージャ」の説明に従って、XMLテンプレートからOLAP 12cアナリティック・ワークスペースを作成します。

5. 「BUILDプロシージャ」の説明に従って、新しいアナリティック・ワークスペースのデータをロードして集計します。

例42-2 GLOBALアナリティック・ワークスペースへのカスタム・アップグレードの実行

この例では、GLOBAL10アナリティック・ワークスペースのOLAP 10gメタデータをGLOBAL_AWスキーマ内のOLAP 12cメタデータにアップグレードします。

名前変更表によってアナリティック・ワークスペースの新しい名前が提供されます。名前変更表は、次のコマンドで定義されます。

CREATE TABLE my_object_map(
source_id    VARCHAR2(300),
new_name     VARCHAR2(30),
object_type  VARCHAR2(30));

INSERT INTO my_object_map VALUES('GLOBAL_AW.GLOBAL10.AW',  'GLOBAL12', 'AW');
COMMIT;

次に、アップグレードを実行するためのスクリプトを示します。

set serverout on

DECLARE
importClob    clob;
exportClob    clob;
exportOptClob clob;
importOptClob clob;

BEGIN

-- Create table of reconciled names
dbms_cube.initialize_cube_upgrade;

-- Create a CLOB containing the export options
dbms_lob.createtemporary(exportOptClob, TRUE);
dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, preserve_table_owners=>TRUE);

-- Create a CLOB containing the import options
dbms_lob.createtemporary(importOptClob, TRUE);
dbms_cube.create_import_options(out_options_xml=>importOptClob, rename_table => 'MY_OBJECT_MAP');

-- Create CLOBs for the metadata
dbms_lob.createtemporary(importClob, TRUE);
dbms_lob.createtemporary(exportClob, TRUE);

-- Export metadata from a 10g analytic workspace to a CLOB
dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob);

-- Import metadata from the CLOB
dbms_cube.import_xml(in_xml => exportClob, options_xml=>importOptClob, out_xml=>importClob);

-- Load and aggregate the data
dbms_cube.build('UNITS_CUBE, PRICE_AND_COST_CUBE');

END;
/

DBMS_CUBEサブプログラムの要約

表42-1 DBMS_CUBEサブプログラム

サブプログラム

説明

BUILDプロシージャ

データを1つ以上のキューブおよびディメンションにロードし、問合せ用のデータを準備します。

CREATE_EXPORT_OPTIONSプロシージャ

EXPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。

CREATE_IMPORT_OPTIONSプロシージャ

IMPORT_XMLプロシージャの処理オプションについての入力XML文書を作成します。

CREATE_MVIEWファンクション

リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューを作成します。

DERIVE_FROM_MVIEWファンクション

リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューのXMLテンプレートを作成します。

DROP_MVIEWプロシージャ

キューブ・マテリアライズド・ビューを削除します。

EXPORT_XMLプロシージャ

アナリティック・ワークスペースのXMLをCLOBにエクスポートします。

EXPORT_XML_TO_FILEプロシージャ

アナリティック・ワークスペースのXMLをファイルにエクスポートします。

IMPORT_XMLプロシージャ

XMLテンプレートを使用してアナリティック・ワークスペースを作成、変更または削除します。

INITIALIZE_CUBE_UPGRADEプロシージャ

名前が競合しているOracle OLAP 10gオブジェクトを処理して、Oracle 12cクライアントがそれらにアクセスできるようにします。

REFRESH_MVIEWプロシージャ

キューブ・マテリアライズド・ビューをリフレッシュします。

UPGRADE_AWプロシージャ

アナリティック・ワークスペースをOracle OLAP 10gから12cにアップグレードします。

VALIDATE_XMLプロシージャ

結果をデータベースにコミットしないで、XMLが有効かどうかをチェックします。

BUILDプロシージャ

このプロシージャは、データを1つ以上のキューブおよびディメンションにロードし、そのキューブで集計値を生成します。結果は自動的にデータベースにコミットされます。

構文

DBMS_CUBE.BUILD (
script                IN  VARCHAR2,
method                IN  VARCHAR2        DEFAULT NULL,
refresh_after_errors  IN  BOOLEAN         DEFAULT FALSE,
parallelism           IN  BINARY_INTEGER  DEFAULT 0,
atomic_refresh        IN  BOOLEAN         DEFAULT FALSE,
automatic_order       IN  BOOLEAN         DEFAULT TRUE,
add_dimensions        IN  BOOLEAN         DEFAULT TRUE,
scheduler_job         IN  VARCHAR2        DEFAULT NULL,
master_build_id       IN  BINARY_INTEGER  DEFAULT 0,
nested                IN  BOOLEAN         DEFAULT FALSE);
job_class             IN  VARCHAR2        DEFAULT 'DEFAULT_JOB_CLASS'

パラメータ

表42-2 BUILDプロシージャのパラメータ

パラメータ

説明

script

キューブおよびディメンションのリストと作成オプション(「SCRIPTパラメータ」を参照)。

method

完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。

各キューブおよびディメンションに順番にメソッドを指定するか、またはすべてのキューブおよびディメンションに単一のメソッドを適用できます。指定したオブジェクトの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのオブジェクトに適用されます。

- C: 完全リフレッシュでは、ロードする前にすべてのディメンション値が消去されます。(デフォルト)。

- F: キューブ・マテリアライズド・ビューの高速リフレッシュ。ソース・テーブルの変更された行のみの増分リフレッシュおよび再集計が実行されます。

- ?: 使用可能な場合は高速リフレッシュ、それ以外の場合は完全リフレッシュ。

- P: キューブ・マテリアライズド・ビュー内の行のうち、ディテール表で変更されたパーティションによって影響を受ける行を再計算します。

- S: 圧縮済のキューブの高速リフレッシュ。高速リフレッシュによって、詳細データが再ロードされ、変更された値のみが再集計されます。

詳細は、「使用上の注意」を参照してください。

メソッドはディメンションには適用されません。

refresh_after_errors

TRUEにすると、エラーを含むキューブまたはディメンションのみがロールバックされ、他のオブジェクトの作成は続行されます。

FALSEにすると、作成中のオブジェクトがすべてロールバックされます。

parallelism

このジョブに割り当てられた並列処理の数(「使用上の注意」を参照)。

atomic_refresh

TRUEにすると、ユーザーは作成中に中間結果にアクセスできなくなります。現行のセッションでデータの一貫性を保つために、作成開始時にアナリティック・ワークスペースの現行の状態がフリーズされます。このオプションでは、作成終了時にアナリティック・ワークスペースがアンフリーズされ、新規セッションにリフレッシュしたデータへのアクセス権が付与されます。作成中にエラーが発生すると、すべてのオブジェクトがフリーズした状態にロールバックされます。

FALSEにすると、ユーザーは作成中に中間結果にアクセスできます。

automatic_order

TRUEにすると、作成順序を最適化できます。ディメンションは、キューブより前にロードされます。

FALSEにすると、スクリプトに指定した順序でオブジェクトが作成されます。

add_dimensions

TRUEにすると、スクリプトに指定したかどうかに関係なく、作成時にキューブのすべてのディメンションが自動的に追加されます。特定のディメンションを含むキューブ・マテリアライズド・ビューが更新されると、そのディメンションは再ロードされません。スクリプトにキューブを指定できるのは1回です。

FALSEにすると、スクリプトに指定したディメンションのみが追加されます。

scheduler_job

ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。

master_build_id

作成に対する一意の名前。

nested

TRUEに設定すると、指定したキューブ・マテリアライズド・ビューのセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定したマテリアライズド・ビューのセットと、すべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表の観点から完全に更新されます。

すべてのオブジェクトが1つのアナリティック・ワークスペースに存在する必要があります。

job_class

このジョブに関連付けるクラス。

SCRIPTパラメータ

SCRIPTパラメータは、作成時に追加するオブジェクトを識別し、各作成で実行する処理のタイプを指定します。このパラメータの構文は、次のとおりです。

[VALIDATE | NO COMMIT] objects [ USING ( commands ) ][,...]

各項目の意味は次のとおりです。

VALIDATEは、すべての作成手順を確認し、計画された手順を実行せずにCUBE_BUILD_LOGに送信します。生成されたすべてのSQLをログ表のOUTPUT列で確認できます。

NO COMMITは、現行の連結モード(またはアナリティック・ワークスペースが連結されていない場合は読取り専用)でオブジェクトを作成し、変更をコミットしません。このオプションでは、一時的にデータ値を変更できるため、what-if分析がサポートされます。詳細は、「SCRIPTパラメータ: USING句: SETコマンド」を参照してください。

objectsは、[aw_name.]object形式のカンマで区切られた1つ以上のキューブまたはディメンションの修飾名(UNITS_CUBE、GLOBAL.UNITS_CUBEなど)を示します。

SCRIPTパラメータ: USING句

USING句は、処理オプションを指定します。カンマで区切られた1つ以上のコマンドで構成されます。

注意:
リライト・マテリアライズド・ビューを含むキューブでは、ANALYZEコマンドを除いてUSING句は使用できません。デフォルトの作成オプションが使用されます。

commandsには、次のいずれかを指定できます。

- AGGREGATE USING [MEASURE]
「SCRIPTパラメータ: USING句: AGGREGATEコマンド」に記載されている構文を使用して、集計値を生成します。

- ANALYZE
DBMS_AW_STATS.ANALYZEを実行して、キューブおよびディメンションのオプティマイザ統計を生成し格納します。

- CLEAR [VALUES | LEAVES | AGGREGATES] [SERIAL | PARALLEL]
データ・リフレッシュ用にキューブを準備します。ディメンションに対して使用することもできますが、CLEARでは、すべてのディメンション・キーが削除されるため、ディメンションを使用するキューブのデータ値がすべて削除されます。

次のオプションの引数で、リフレッシュ・メソッドを制御します。引数を省略した場合、CLEARの動作はリフレッシュ・メソッドによって異なります。「C」(完全)リフレッシュ・メソッドではCLEAR VALUESが実行され、他のすべてのリフレッシュ・メソッドではCLEAR LEAVESが実行されます。

- VALUES: キューブ内のデータをすべて消去します。すべてのファクトを再ロードし、すべての集計を再計算する必要があります。このオプションでは、COMPLETEリフレッシュ・メソッドがサポートされています。(CおよびFメソッドのデフォルト)

- LEAVES: 詳細データを消去し、集計を保持します。すべてのファクトを再ロードし、すべての新しいファクトまたは変更されたファクトの集計を再計算する必要があります。このオプションでは、FASTリフレッシュ・メソッドがサポートされています。(?メソッドのデフォルト)

- AGGREGATES: 詳細データを保持し、集計を消去します。すべての集計を再計算する必要があります。

次のオプションの引数でロード・メソッドを制御しますが、これらのオプションはリフレッシュ・オプションと組み合せることができます。

- PARALLEL: 各パーティションが個別に消去されます。(デフォルト)。

- SERIAL: すべてのパーティションがまとめて消去されます。

CLEARコマンドを省略した場合、DBMS_CUBEは新しいファクトおよび更新されたファクトをロードしますが、古い詳細データは削除しません。これは、ディメンションに対するLOAD NO SYNCと同様です

- COMPILE [SORT | NO SORT | SORT ONLY]
ディメンションでサポートされる構造を作成します。(ディメンションのみ)

次のオプションで、ソート順序属性の使用を制御します。

- SORT: ユーザー定義のソート順序属性によって、埋込み(ET)ビューのソート列に移入されます。(デフォルト)。

- NO SORT: すべてのソート順序属性が無視されます。このオプションは、ソートに消費されるリソースが多くなりすぎる場合がある非常に大きいディメンション用です。

- SORT ONLY: コンパイル手順でのみソートが実行されます。

- EXECUTE PLSQL文字列
データベースでPL/SQLコマンドまたはスクリプトを実行します。

- EXECUTE OLAP DML string [PARALLEL | SERIAL]
アナリティック・ワークスペースでOLAP DMLコマンドまたはプログラムを実行します。次のオプションで、コマンドまたはプログラムの実行を制御します。

- PARALLEL: 各パーティションに対してコマンドまたはプログラムを1回実行します。このオプションを使用して、予測やモデルなどの複雑なDML操作のパフォーマンスを向上させることができます。

- SERIAL: キューブ全体に対してコマンドまたはプログラムを1回実行します。(デフォルト)。

- [INSERT | MERGE] INTO [ALL HIERARCHIES | HIERARCHIES (dimension.hierarchy)] VALUES (dim_key, parent, level_name)
1つ以上の階層に1つのディメンション・メンバーを追加します。INSERTはメンバーがすでに存在する場合にエラーをスローしますが、MERGEはスローしません。詳細は、「ディメンションのメンテナンス例」を参照してください。

dimension.hierarchy: 新しいメンバーが属する階層の名前。"PRODUCT"."PRIMARY"などのように名前の各部分を二重引用符で囲みます。

dim_key: ディメンション・メンバーのDIM_KEY値。

parent: ディメンション・キーの親。

level_name: ディメンション・キーのレベル。

- UPDATE [ALL HIERARCHIES | HIERARCHIES (dimension.hierarchy)] SET PARENT = parent, LEVEL=level_name WHERE MEMBER = dim_key
既存のディメンション・メンバーのレベルまたは親を変更します。オプションについては、「INSERT」を参照してください。また、「ディメンションのメンテナンス例」も参照してください。

- DELETE FROM DIMENSION WHERE MEMBER=dim_key
ディメンション・メンバーを削除します。詳細は、「ディメンションのメンテナンス例」を参照してください。

dim_key: 削除するディメンション・メンバーのDIM_KEY値。

- SET dimension.attribute[qdr] = CAST('attribute_value' AS VARCHAR2))
ディメンション・メンバーの属性の値を設定します。詳細は、「ディメンションのメンテナンス例」を参照してください。

dimension.attribute: 属性の名前。"PRODUCT"."LONG_DESCRIPTION"などのように名前の各部分を二重引用符で囲みます。

qdr: "PRODUCT"='OPT MOUSE'などの修飾データ参照の形式で属性値が指定されたディメンション・メンバー。

attribute_value: 'Optical Mouse'などの属性の値。

- FOR dimension_clause measure_clause BUILD (commands)
次の引数を使用して、特定のメジャーおよびディメンション値に作成を制限します。詳細は、「FOR句の例」を参照してください。

- dimension_clause:
dimension ALL | NONE | WHERE condition | LEVELS (level [, level...])

dimensionは、キューブのディメンション・メンバーの名前です。

ALLは、一連のコマンドを実行する前にすべてのメンバーにディメンション・ステータスを設定します。

NONEは、ディメンション・メンバーの値をロードしません。

WHEREは、条件に一致するディメンション・メンバーの値をロードします。

LEVELSは、指定されたレベルのディメンション・メンバーの値をロードします。

levelは、指定されたディメンション・メンバーのレベルです。

- measure_clause:
MEASURES (measure [, measure...])

measureは、キューブのメジャーの名前です。

- commands: 他のUSINGコマンドのいずれか。

- LOAD [SYNCH | NO SYNCH | RETAIN] [PRUNE | PARALLEL | SERIAL] [WHERE condition]
データをディメンションまたはキューブにロードします。

- WHEREは、conditionに一致する、マップされたリレーショナル表内の値にロードを制限します。

- conditionは、マップされた表の列に基づく有効な述語です。詳細は、「例」を参照してください。

次のオプションの引数は、ディメンションのみに適用されます。

- SYNCHは、ディメンション・キーをリレーショナル・データ・ソースと一致させます。(デフォルト)。

- NO SYNCHは、新規ディメンション・キーをロードしますが、古いキーは削除しません。
ディメンション・キーの親がリレーショナル・データ・ソースで変更された場合、このオプションにより、アナリティック・ワークスペースの親子関係を変更するロードを実行できます。

- RETAINは、新規ディメンション・キーをロードしますが、古いキーは削除しません。
このオプションでは、ディメンション・キーの親を変更できません。親が変更された場合、そのレコードがロードで拒否されます。ログが有効な場合は、拒否レコード・ログにエラーが生成されます。

次のオプションの引数は、キューブのみに適用されます。

- PRUNE: ファクト表で全表スキャンを実行して、ロードするパーティションを判別します。たとえば、キューブが月ごとにパーティション化され、ファクト表に過去2か月のみの値が含まれている場合は、過去2か月のパーティションをロードするジョブのみが開始されます。

- PARALLEL: 各パーティションが個別にロードされます。(デフォルト)。

- SERIAL: すべてのパーティションが1つのSELECT文でロードされます。

- MODEL model_name [PARALLEL | SERIAL]
事前にキューブ用に作成されたモデルを実行します。次の引数を指定できます。

- PARALLEL: 各パーティションでモデルが個別に実行されます。

- SERIAL: すべてのキューブでモデルが同時に実行されます。(デフォルト)。

- SET
「SCRIPTパラメータ: USING句: SETコマンド」に記載されている構文を使用してキューブへのライトバックをサポートします。(キューブのみ)

- SOLVE [PARALLEL | SERIAL]
キューブ用に定義したルール(集計演算子、事前計算の仕様など)を使用して、キューブを集計します。(キューブのみ)

次の引数を指定できます。

- PARALLEL: 各パーティションが個別に解決されます。(デフォルト)。

- SERIAL: すべてのパーティションが同時に解決されます。

SCRIPTパラメータ: USING句: AGGREGATEコマンド

スクリプトのAGGREGATEコマンドは、1つ以上のメジャーに対して集計ルールを指定します。

注意:
AGGREGATEコマンドは、未圧縮のキューブでのみ使用できます。

AGGREGATEの構文は、次のとおりです。

{ AGGREGATE USING MEASURE
WHEN measure1 THEN operator1
WHEN measure2 THEN operator2...
ELSE default_operator
|
[AGGREGATE USING] operator_clause }
processing_options
OVER { ALL | dimension | dimension HIERARCHIES (hierarchy)}

USING MEASURE句

この句を使用すると、キューブ内の様々なメジャーに対して、それぞれ異なる集計演算子を指定できます。

operator_clause

operator_clauseの構文は、次のとおりです。

operator(WEIGHTBY expression | SCALEBY expression)

WEIGHTBYは、集計前に各データ値を式で乗算します。

SCALEBYは、集計前に各データ値に式の値を追加します。

表42-3 集計演算子

演算子

オプション

説明

AVG

WEIGHTBY

データ値を追加し、その合計を追加したデータ値の数で割ります。

FIRST

WEIGHTBY

最初の実際のデータ値。

HIER_AVG

WEIGHTBY

データ値を追加し、その合計をディメンション階層の子の数で割ります。非NAの子のみをカウントするAVERAGEとは異なり、HAVERAGEでは、各子が値を持っているかどうかに関係なく、1つの親の論理的な子がすべてカウントされます。

HIER_FIRST

WEIGHTBY

階層の最初のデータ値(値がNAの場合でも)。

HIER_LAST

WEIGHTBY

階層の最後のデータ値(値がNAの場合でも)。

LAST

WEIGHTBY

最後の実際のデータ値。

MAX

WEIGHTBY

各親の子の中で最大のデータ値。

MIN

WEIGHTBY

各親の子の中で最小のデータ値。

NO AGGREGATION

オプションなし

1つまたは複数のディメンションの値を集計しないでください。すべての集計値をNAとして残します。

SUM

SCALEBY | WEIGHTBY

データ値を追加します。(デフォルト)。

処理オプション

次の処理オプションを集計用に指定できます。

- (ALLOW | DISALLOW) OVERFLOW
小数部オーバーフローを許可するかどうかを指定します。小数部オーバーフローは、計算の結果が大きすぎて、数値の指数部分で表現できない場合に発生します。

- ALLOW: オーバーフローが発生する計算がエラーなしで実行され、結果はNULLとなります。(デフォルト)。

- DISALLOW: オーバーフローを含む計算の実行が停止され、エラー・メッセージが生成されます。

- (ALLOW | DISALLOW) DIVISION BY ZERO
0(ゼロ)で割り算できるかどうかを指定します。

- ALLOW: 0 (ゼロ)の割り算を含む計算はエラーなしで実行されますが、NULL値が戻されます。(デフォルト)。

- DISALLOW: 0(ゼロ)の割り算を含む計算の実行が停止され、エラー・メッセージが生成されます。

- (CONSIDER | IGNORE) NULLS
NULLが計算に含まれるかどうかを指定します。

- CONSIDER: NULLが計算に含まれます。NULL値が含まれる計算では、NULL値が戻されます。

- IGNORE: 実際のデータ値のみが計算に使用されます。NULLは存在しないものとして処理されます。(デフォルト)。

- MAINTAIN COUNT
平均の計算に使用するために、ディメンション・メンバーの最新数を保存します。オンザフライでメンバーをカウントするには、このオプションを省略します。

SCRIPTパラメータ: USING句: SETコマンド

スクリプト内のSETコマンドは、格納されているメジャー内の1つ以上のセルに値を割り当てます。構文は次のとおりです。

SET target = expression

各項目の意味は、次のとおりです。

targetは、メジャーまたは修飾データ参照です。

expressionは、targetに適したデータ・タイプの値を戻します。

修飾データ参照

修飾データ参照(QDR)は、問合せの継続中ディメンション・オブジェクトを1つ以上のディメンション内の1つのメンバーに制限します。

QDRの構文は、次のとおりです。

expression [ { dimension = member }[ , { dimension = member } ...] ]

各項目の意味は、次のとおりです。

expressionは、ディメンション式(通常はメジャーの名前)です。

dimensionは、式の一次ディメンションです。

memberは、ディメンションの値です。

太字で示されている外側の大カッコはリテラル構文要素であり、オプションの引数は示していません。通常のテキストで示されている内側の大カッコはオプションの引数の境界を示しており、構文要素ではありません。

次の例では、2007年の売上値が戻されます。

global.sales[global.time = 'CY2007'
]

次の例では、2007年の米国のみでの売上値が戻されます。

sales[customer = 'US', time = 'CY2007'
]

詳細は、SETコマンドの修飾データ参照の例を参照してください。

使用上の注意

作成メソッド

C、Sおよび?メソッドは常に成功し、任意のキューブで使用できます。

FおよびPメソッドでは、作成済の高速マテリアライズド・ビューまたはリライト・マテリアライズド・ビューがキューブに存在している必要があります。

並列度

パーティション化されたキューブは、並列処理でロードおよび集計できます。たとえば、5つのパーティションがあるキューブでは、最大で5つのプロセスを使用できます。ディメンションは常に、直列でロードされます。

作成で実際に割り当てられる並列処理の数は、次の要素の最小値で制御されます。

- 作成中のキューブの数および各キューブのパーティションの数。

- BUILDプロシージャのPARALLELISM引数の設定。

- JOB_QUEUE_PROCESSESデータベース初期化パラメータの設定。

UNITS_CUBEにパーティションが12個あり、PARALLELISMを10に設定し、JOB_QUEUE_PROCESSESを4に設定するとします。OLAPでは、スレーブ・プロセスとして作成ログに表示される4つのプロセスが使用されます。

PARALLEL_DEGREE_POLICYデータベース初期化パラメータがAUTOまたはLIMITEDに設定されていると、SQLエンジンによって追加プロセスが割り当てられる場合があります。たとえば、OLAPが4つのプロセスを割り当てる場合、SQLエンジンがこれらのプロセスのうち2つは4つのプロセス、合計6つのプロセスで実行する必要があると判断する可能性があります。

作成ログ

OLAPは、作成に関する診断情報を提供する3つのログを生成します。

- キューブ作成ログ

- 拒否レコード・ログ

- キューブ・ディメンション・コンパイル・ログ

Analytic Workspace Managerは、アナリティック・ワークスペースと同じスキーマにある表として、これらのログを自動的に作成します。Analytic Workspace Managerを使用しない場合は、DBMS_CUBE_LOGパッケージを使用して、PL/SQLにログを作成して管理できます。

また、$ORACLE_HOME/olap/admin/utlolaplog.sqlを実行してキューブ・ログ・ファイルを作成することもできます。このスクリプトは、さらに次の3つのビューを作成します。

- CUBE_BUILD_LATEST: 最後の作成からのみ行を戻します。

- CUBE_BUILD_REPORT: 経過時間とともに、コマンドごとに1行を戻します。

- CUBE_BUILD_REPORT_LATEST: 最後の作成からのみCUBE_BUILD_REPORTなどのレポートを戻します。

次のレポートは、4つのディメンションと2つのキューブがあるGLOBALアナリティック・ワークスペースのオブジェクトの作成が正常に完了したことを示しています。

SELECT command, status, build_object, build_object_type type
FROM cube_build_report_latest;

COMMAND                   STATUS     BUILD_OBJECT                   TYPE
------------------------- ---------- ------------------------------ ----------
BUILD                     COMPLETED                                 BUILD
FREEZE                    COMPLETED                                 BUILD
LOAD NO SYNCH             COMPLETED  CHANNEL                        DIMENSION
COMPILE                   COMPLETED  CHANNEL                        DIMENSION
UPDATE/COMMIT             COMPLETED  CHANNEL                        DIMENSION
LOAD NO SYNCH             COMPLETED  CUSTOMER                       DIMENSION
COMPILE                   COMPLETED  CUSTOMER                       DIMENSION
UPDATE/COMMIT             COMPLETED  CUSTOMER                       DIMENSION
LOAD NO SYNCH             COMPLETED  PRODUCT                        DIMENSION
COMPILE                   COMPLETED  PRODUCT                        DIMENSION
UPDATE/COMMIT             COMPLETED  PRODUCT                        DIMENSION
LOAD NO SYNCH             COMPLETED  TIME                           DIMENSION
COMPILE                   COMPLETED  TIME                           DIMENSION
UPDATE/COMMIT             COMPLETED  TIME                           DIMENSION
COMPILE AGGMAP            COMPLETED  PRICE_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  PRICE_CUBE                     CUBE
COMPILE AGGMAP            COMPLETED  UNITS_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  UNITS_CUBE                     CUBE
DBMS_SCHEDULER.CREATE_JOB COMPLETED  PRICE_CUBE                     CUBE
DBMS_SCHEDULER.CREATE_JOB COMPLETED  UNITS_CUBE                     CUBE
BUILD                     COMPLETED                                 BUILD
LOAD                      COMPLETED  PRICE_CUBE                     CUBE
SOLVE                     COMPLETED  PRICE_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  PRICE_CUBE                     CUBE
BUILD                     COMPLETED                                 BUILD
LOAD                      COMPLETED  UNITS_CUBE                     CUBE
SOLVE                     COMPLETED  UNITS_CUBE                     CUBE
UPDATE/COMMIT             COMPLETED  UNITS_CUBE                     CUBE
ANALYZE                   COMPLETED  PRICE_CUBE                     CUBE
ANALYZE                   COMPLETED  UNITS_CUBE                     CUBE
THAW                      COMPLETED                                 BUILD

31 rows selected.

例

この例では、デフォルト・パラメータを使用してUNITS_CUBEを作成します。

EXECUTE DBMS_CUBE.BUILD('GLOBAL.UNITS_CUBE');

次の例では、UNITS_CUBEを作成し、TIMEおよびCHANNELという2つのディメンションを明示的に作成します。ディメンションでは完全(C)メソッドが使用され、キューブでは高速リフレッシュ(S)・メソッドが使用されます。

BEGIN
DBMS_CUBE.BUILD(
script=>'GLOBAL."TIME", GLOBAL.CHANNEL, GLOBAL.UNITS_CUBE',
method=>'CCS',
parallelism=>2);
END;
/

次の例では、WHERE句で識別して選択したデータのみをロードします。

BEGIN
DBMS_CUBE.BUILD(q'!
GLOBAL."TIME",
GLOBAL.CHANNEL,
GLOBAL.CUSTOMER,
GLOBAL.PRODUCT,
GLOBAL.UNITS_CUBE USING (LOAD NO SYNCH
WHERE UNITS_FACT.MONTH_ID LIKE '2006%'
AND UNITS_FACT.SALES > 5000)!');
END;
/

FOR句の例

この例では、時間ディメンションが暦年ごとにパーティション化され、CY2006で識別されたパーティションのみがDBMS_CUBEによって作成されます。HIER_ANCESTORは、OLAP式の構文の分析機能です。

BEGIN
dbms_cube.build(q'!
UNITS_CUBE USING
(
FOR "TIME"
WHERE HIER_ANCESTOR(WITHIN "TIME".CALENDAR LEVEL "TIME".CALENDAR_YEAR) = 'CY2006'
BUILD (LOAD, SOLVE)
)!',
parallelism=>1);
END;
/

次の例では、FOR句を使用して作成を2006年のSALESメジャーに制限します。すべてのオブジェクトが完全(C)メソッドを使用して作成されます。

BEGIN
DBMS_CUBE.BUILD(
script => '
GLOBAL."TIME",
GLOBAL.CHANNEL,
GLOBAL.CUSTOMER,
GLOBAL.PRODUCT,
GLOBAL.UNITS_CUBE USING
(
FOR MEASURES(GLOBAL.UNITS_CUBE.SALES)
BUILD(LOAD NO SYNCH WHERE GLOBAL.UNITS_FACT.MONTH_ID LIKE ''2006%'')
)',
method => 'C',
parallelism => 2);
END;
/

ライトバックの例

次に、USING句でのSETコマンドの様々な使用例を示します。

次の例では、Sales TargetをSalesの5%増に設定します。

DBMS_CUBE.BUILD('UNITS_CUBE USING(
SET UNITS_CUBE.SALES_TARGET = UNITS_CUBE.SALES * 1.05, SOLVE)');

次の例では、2007年5月のDeluxe Mouseの価格を$29.99に設定します。

DBMS_CUBE.BUILD('PRICE_CUBE USING(
SET PRICE_CUBE.UNIT_PRICE["TIME"=''2007.05'', "PRODUCT"=''DLX MOUSE'']
= 29.99, SOLVE)');

次の例には2つのSETコマンドが含まれていますが、キューブは再集計されません。

DBMS_CUBE.BUILD('PRICE_CUBE USING(
SET PRICE_CUBE.UNIT_PRICE["TIME"=''2006.12'', "PRODUCT"=''DLX MOUSE'']
= 29.49,
SET PRICE_CUBE.UNIT_PRICE["TIME"=''2007.05'', "PRODUCT"=''DLX MOUSE'']
= 29.99)');

ディメンションのメンテナンス例

次のスクリプトは、ディメンションのメンテナンスを示しています。OPT MOUSEという新しいディメンション・メンバーをすべての階層に追加し、一次階層でのその位置を変更し、長い説明を割り当ててから、ディメンションから削除しています。

BEGIN
dbms_output.put_line('Add optical mouse');
dbms_cube.build(q'!
"PRODUCT" using (MERGE INTO ALL HIERARCHIES
VALUES ('ITEM_OPT MOUSE', 'CLASS_SFT', "PRODUCT"."FAMILY"))
!');

dbms_output.put_line('Alter optical mouse');
dbms_cube.build(q'!
"PRODUCT" using (UPDATE HIERARCHIES ("PRODUCT"."PRIMARY")
SET PARENT = 'FAMILY_ACC', LEVEL = "PRODUCT"."ITEM"
WHERE MEMBER = 'ITEM_OPT MOUSE')
!');

dbms_output.put_line('Provide attributes to optical mouse');
dbms_cube.build(q'!
"PRODUCT" USING (SET "PRODUCT"."LONG_DESCRIPTION"["PRODUCT" = 'ITEM_OPT MOUSE']
= CAST('Optical Mouse' AS VARCHAR2))
!');

dbms_output.put_line('Delete optical mouse');
dbms_cube.build(q'!
"PRODUCT" USING (DELETE FROM DIMENSION WHERE MEMBER='ITEM_OPT MOUSE')
!');

END;
/

OLAP DMLの例

次の例では、OLAP DMLを使用してキューブ作成ログにコメントを追加します。

BEGIN
DBMS_CUBE.BUILD(q'!
global.units_cube USING (
EXECUTE OLAP DML 'SHOW STATLEN(units_cube_prt_list)' PARALLEL,
EXECUTE OLAP DML 'SHOW LIMIT(units_cube_prt_list KEEP ALL)' PARALLEL,
EXECUTE OLAP DML 'SHOW STATLEN(time)' parallel,
EXECUTE OLAP DML 'SHOW LIMIT(time KEEP time_levelrel ''CALENDAR_YEAR'')' parallel)!',
parallelism=>2,
add_dimensions=>false);
END;
/

次の問合せで、キューブ作成ログのコメントを表示します。

SELECT partition, slave_number, TO_CHAR(output) output
FROM cube_build_log
WHERE command = 'OLAP DML'
AND status = 'COMPLETED'
ORDER BY slave_number, time;

PARTITION    SLAVE_NUMBER OUTPUT
------------ ------------ -------------------------------------------------------
P10:CY2007              1 <OLAPDMLExpression
Expression="TO_CHAR(statlen(units_cube_prt_list))"
Value="1"/>

P10:CY2007              1 <OLAPDMLExpression
Expression="TO_CHAR(limit(units_cube_prt_list keep al
l))"
Value="P10"/>

P10:CY2007              1 <OLAPDMLExpression
Expression="TO_CHAR(statlen(time))"
Value="17"/>

P10:CY2007              1 <OLAPDMLExpression
Expression="TO_CHAR(limit(time keep time_levelrel &ap
os;CALENDAR_YEAR&apos;))"
Value="CALENDAR_YEAR_CY2007"/>

P9:CY2006               2 <OLAPDMLExpression
Expression="TO_CHAR(statlen(units_cube_prt_list))"
Value="1"/>

P9:CY2006               2 <OLAPDMLExpression
Expression="TO_CHAR(limit(units_cube_prt_list keep al
l))"
Value="P9"/>

P9:CY2006               2 <OLAPDMLExpression
Expression="TO_CHAR(statlen(time))"
Value="17"/>
.
.
.

CREATE_EXPORT_OPTIONSプロシージャ

このプロシージャは、EXPORT_XMLプロシージャおよびEXPORT_XML_TO_FILEプロシージャの処理オプションについて記述する入力XML文書を作成します。

構文

DBMS_CUBE.CREATE_EXPORT_OPTIONS (
out_options_xml        IN/OUT  CLOB,
target_version         IN      VARCHAR2  DEFAULT NULL,
suppress_owner         IN      BOOLEAN   DEFAULT FALSE,
suppress_namespace     IN      BOOLEAN   DEFAULT FALSE,
preserve_table_owners  IN      BOOLEAN   DEFAULT FALSE,
metadata_changes       IN      CLOB      DEFAULT NULL);

パラメータ

表42-4 CREATE_EXPORT_OPTIONSプロシージャのパラメータ

パラメータ

説明

out_options_xml

EXPORT_XMLプロシージャのoptions_xmlパラメータに渡すことができる、生成されたXML文書を含んでいます。

target_version

EXPORT_XMLまたはEXPORT_XML_TO_FILEによって生成されたXML文書がインポートされるOracle Databaseのバージョンを指定します。12.1、12.1.0.1.0などの2桁から5桁の数字を指定できます。このパラメータは、デフォルトでは現行のデータベース・バージョンになるため、通常は省略できます。

suppress_owner

XML要素での所有者属性およびオブジェクト名での所有者修飾子の使用を制御します。XMLから所有者を削除するにはTrueを入力し、保持するにはFalseを入力します。エクスポートしたメタデータを別のスキーマにインポートする予定の場合は、Trueを入力します。

suppress_namespace

XML要素でのネームスペース属性およびオブジェクト名でのネームスペース修飾子の使用を制御します。XMLからネームスペースを削除するにはTrueを入力し、保持する(デフォルト)にはFalseを入力します。Oracle OLAP 12cメタデータにアップグレードするときには、Trueを入力します。

ネームスペースによって、Oracle 10gで作成されたオブジェクトをOracle 12cで作成されたオブジェクトと共存させることができます。ネームスペースの設定または変更はできません。

preserve_table_owners

UNITS_HISTORY_FACTのかわりにGLOBAL.UNITS_HISTORY_FACTなど、マッピング要素で表の名前を修飾するときに所有者の使用を制御します。表の所有者を保持するにはTrueを入力し、表のマッピングで現在のスキーマをデフォルトにするにはFalseを入力します。エクスポートされたメタデータを別のスキーマにインポートする予定の場合は、宛先スキーマに表およびビューの独自のコピーがある場合を除き、このオプションをTrueに設定して元のスキーマの表およびビューからデータをロードする必要があります。

metadata_changes

エクスポートされたオブジェクトの記述を上書きする、オブジェクトの12c XML記述を含んでいます。XML文書には、変更された要素を一意に識別するために必要な属性を含むそれらの要素のすべての親XML要素が含まれている必要があります。Name属性が存在する場合はそれを使用します。詳細は、「例」を参照してください。

例

次の例では、エクスポート・オプションのXML文書を生成します。

DECLARE
optionsClob  CLOB;

BEGIN
dbms_lob.createtemporary(optionsClob, false, dbms_lob.CALL);
dbms_cube.create_export_options(out_options_xml=>optionsClob, suppress_namespace=>TRUE);
dbms_output.put_line(optionsClob);
END;
/

DBMS_OUTPUT.PUT_LINEプロシージャによって次のXML文書が表示されます(読みやすさを考慮して書式設定されています)。

<?xml version="1.0"?>
<Export TargetVersion="12.1.0.1">
<ExportOptions>
<Option Name="SuppressOwner" Value="FALSE"/>
<Option Name="SuppressNamespace" Value="TRUE"/>
<Option Name="PreserveTableOwners" Value="FALSE"/>
</ExportOptions>
</Export>

次の例では、CHANNELディメンションの米語での長い記述属性のマッピングに対するメタデータの変更を含むXML文書を生成します。

DECLARE
importClob         clob;
exportClob         clob;
overClob           clob;
exportOptClob      clob;
importOptClob      clob;

BEGIN
dbms_lob.createtemporary(overClob, TRUE);
dbms_lob.open(overClob, DBMS_LOB.LOB_READWRITE);
dbms_lob.writeappend(overClob,58, '<Metadata Version="1.3" MinimumDatabaseVersion="12.1.0.1">');
dbms_lob.writeappend(overClob,34, '<StandardDimension Name="CHANNEL">');
dbms_lob.writeappend(overClob,75, '<Description Type="Description" Language="AMERICAN" Value="Sales Channel"/>');
dbms_lob.writeappend(overClob,20, '</StandardDimension>');
dbms_lob.writeappend(overClob,11, '</Metadata>');
dbms_lob.close(overClob);

-- Enable Oracle Database 12c Release 1 (12.1) clients to access 10g metadata
dbms_cube.initialize_cube_upgrade;

-- Create a CLOB containing the export options
dbms_lob.createtemporary(exportOptClob, TRUE);
dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, metadata_changes=>overClob);

-- Create a CLOB containing the import options
dbms_lob.createtemporary(importOptClob, TRUE);
dbms_cube.create_import_options(out_options_xml=>importOptClob, rename_table => 'MY_OBJECT_MAP');

-- Create CLOBs for the metadata
dbms_lob.createtemporary(importClob, TRUE);
dbms_lob.createtemporary(exportClob, TRUE);

-- Export metadata from a 10g analytic workspace to a CLOB
dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob);

-- Import metadata from the CLOB
dbms_cube.import_xml(in_xml => exportClob, options_xml=>importOptClob, out_xml=>importClob);

-- Load and aggregate the data
dbms_cube.build(script=>'UNITS_CUBE, PRICE_AND_COST_CUBE');

END;
/

次に、exportClobのコンテンツを示します(読みやすさを考慮して書式設定が追加されています)。このXML文書によってChannelについての記述がSales Channelに変更されます。

<Metadata Version="1.3" MinimumDatabaseVersion="12.1.0.1">
<StandardDimension Name="CHANNEL">
<Description Type="Description" Language="AMERICAN" Value="Sales Channel"/>
</StandardDimension>
</Metadata>

CREATE_IMPORT_OPTIONSプロシージャ

このプロシージャは、IMPORT_XMLプロシージャの処理オプションについて記述する入力XML文書を作成します。

構文

DBMS_CUBE.CREATE_IMPORT_OPTIONS (
out_options_xml  IN/OUT  CLOB,
validate_only    IN      BOOLEAN   DEFAULT FALSE,
rename_table     IN      VARCHAR2  DEFAULT NULL);

パラメータ

表42-5 CREATE_IMPORT_OPTIONSプロシージャのパラメータ

パラメータ

説明

out_options_xml

IMPORT_XMLプロシージャのoptions_xmlパラメータに渡すことができる、生成されたXML文書を含んでいます。

validate_only

TRUEに設定すると、IMPORT_XMLプロシージャは、入力ファイルまたはin_xmlパラメータに記述されているメタデータへの変更を、コミットせずに検証します。

rename_table

インポートしたオブジェクトの新しい名前を識別する、[schema_name.]table_name形式の表の名前。IMPORT_XMLプロシージャは、XML文書に指定された名前ではなく、この表に指定された名前を使用してオブジェクトを作成します。名前変更表の形式については、「使用上の注意」を参照してください。

使用上の注意

詳細は、「名前変更表」を参照してください。

例

この例では、検証のみおよび名前変更表を指定します。インポートで使用されるインポートCLOBの例については、「IMPORT_XMLプロシージャ」を参照してください。

DECLARE
importClob  clob;

BEGIN
dbms_lob.createtemporary(importClob, TRUE);

dbms_cube.create_import_options(out_options_xml => importClob, rename_table => 'MY_OBJECT_MAP', validate_only => TRUE);

dbms_output.put_line(importClob);
END;
/

次のXML文書が生成されます。

<?xml version="1.0"?>
<Import>
<ImportOptions>
<Option Name="ValidateOnly" Value="TRUE"/>
<Option Name="RenameTable" Value="MY_OBJECT_MAP"/>
</ImportOptions>
</Import>

CREATE_MVIEWファンクション

このファンクションは、リレーショナル・マテリアライズド・ビューの定義から、キューブ・マテリアライズド・ビューを作成します。

構文

DBMS_CUBE.CREATE_MVIEW (
mvowner        IN  VARCHAR2,
mvname         IN  VARCHAR2,
sam_parameters IN  CLOB  DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表42-6 CREATE_MVIEWファンクションのパラメータ

パラメータ

説明

mvowner

リレーショナル・マテリアライズド・ビューの所有者。

mvname

リレーショナル・マテリアライズド・ビューの名前。制約については、「リレーショナル・マテリアライズド・ビューの要件」を参照してください。

表内の多くのリレーショナル・マテリアライズド・ビューを単一のキューブ・マテリアライズド・ビューに置き換えることができます。キューブ・マテリアライズド・ビューで表示されるディメンション階層のレベルが最下位のマテリアライズド・ビューを選択してください。

sam_parameters

'parameter1=value1, parameter2=value2,...'形式のパラメータ。「SQL集計管理パラメータ」を参照してください。

SQL集計管理パラメータ

CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションでは、表42-7に示すSQL集計管理(SAM)パラメータが使用されます。一部のパラメータでは、高度な分析を行うキューブの開発がサポートされています。他のパラメータでは、Javaアプリケーションの開発がサポートされています。デフォルト設定は、リレーショナル・マテリアライズド・ビューにかわって置き換えられたキューブ・マテリアライズド・ビューに適した設定になっています。

表42-7 SQL集計管理パラメータ

パラメータ

説明

ADDTOPS

キューブ内のすべてのディメンション階層に、再上位レベルおよびレベル・メンバーを追加します。関連付けられたリレーショナル・ディメンションに階層がない場合は、ディメンション階層が作成されます。

TRUE: レベル・メンバーAll_dimensionでレベル名ALL_dimensionを作成します。(デフォルト)。

FALSE: リレーショナル・ディメンションで識別される階層およびレベルのみを作成します。

ADDUNIQUEKEYPREFIX

ディメンション・キーの作成を制御します。

TRUE: レベル名とリレーショナル・ディメンション・キーを連結して、キューブ・ディメンション・キーを作成します。これによって、すべてのレベル間でディメンション・キー(CITY_NEW_YORK、STATE_NEW_YORKなど)が一意となります。(デフォルト)。

FALSE: リレーショナル・ディメンション・キーをキューブ・ディメンションとして使用します。

ATRMAPTYPE

属性を階層レベル、ディメンション・レベルまたはその両方のいずれにマップするかを指定します。

HIER_LEVEL: 属性を特定のディメンション階層のレベルにマップします。(デフォルト)。

DIM_LEVEL: 階層に関係なく、属性をディメンションのレベルにマップします。

BOTH: 属性をディメンション・レベルおよび階層レベルの両方にマップします。

AUTO: スター・スキーマの場合はディメンションのレベルに、スノーフレーク・スキーマの場合は特定のディメンション階層のレベルに属性をマップします。

AWNAME

キューブを所有するアナリティック・ワークスペースの名前を指定します。1から30バイトの長さの単純なデータベース・オブジェクト名を選択します。デフォルト名はfact_tablename_AWnです。

BUILD

キューブ・マテリアライズド・ビューの作成後、すぐにデータ・リフレッシュを実行するかどうかを指定します。

IMMEDIATE: すぐにリフレッシュします。

DEFERRED: データ・リフレッシュを実行しません。(デフォルト)。

注意: このパラメータはCREATE_MVIEWファンクションでのみ使用されます。

CUBEMVOPTION

キューブ・マテリアライズド・ビューの検証および作成を制御します。ファンクションは、この設定に関係なく、キューブとそれに関連するキューブ・ディメンションを含むアナリティック・ワークスペースを作成します。

COMPLETE_REFRESH: 完全リフレッシュ・キューブ・マテリアライズド・ビューを作成します(完全更新)。

FAST_REFRESH: 高速リフレッシュ・マテリアライズド・ビューを作成します(増分更新)。

REWRITE_READY: リライト・キューブ・マテリアライズド・ビューの検証チェックは実行しますが、作成は実行しません。

REWRITE: リライト・キューブ・マテリアライズド・ビューを作成します。

REWRITE_WITH_ATTRIBUTES: ディメンション属性を持つ列を含むリライト・キューブ・マテリアライズド・ビューを作成し、問合せの応答時間を短縮します。(デフォルト)。

注意: 次の設定では、キューブ・マテリアライズド・ビューが作成されません。キューブ・マテリアライズド・ビューがないアナリティック・ワークスペースを削除するには、Analytic Workspace Managerを使用してください。DROP_MVIEWプロシージャを使用してアナリティック・ワークスペースを削除できるのは、アナリティック・ワークスペースでキューブ・マテリアライズド・ビューがサポートされている場合のみです。

NONE: キューブ・マテリアライズド・ビューを作成しません。

COMPLETE_REFRESH_READY: 完全リフレッシュ・キューブ・マテリアライズド・ビューの検証チェックは実行しますが、作成は実行しません。

FAST_REFRESH_READY: 高速リフレッシュの検証チェックは実行しますが、キューブ・マテリアライズド・ビューは作成しません。

CUBENAME

リレーショナル・マテリアライズド・ビューから導出されるキューブの名前を指定します。1から30バイトの長さの単純なデータベース・オブジェクト名を選択します。デフォルト名はfact_tablename_Cnです。

DIMJAVABINDVARS

JavaプログラムによるXML文書へのアクセスをサポートします。

TRUE: ディメンション名にJavaのバインド変数表記を使用するXML文書を生成します。XMLの検証は実行しません。このテンプレートを使用してキューブを作成するために、IMPORT_XMLプロシージャを使用することはできません。

FALSE: Javaのバインド変数をサポートしないXMLテンプレートを生成します。(デフォルト)。

DISABLEQRW

ソース・リレーショナル・マテリアライズド・ビューのクエリー・リライトの無効化を制御します。

TRUE: ALTER MATERIALIZED VIEW mview_name DISABLE QUERY REWRITEコマンドを発行します。

FALSE: アクションは実行されません。

注意: このパラメータはBUILD=IMMEDIATEが指定されたCREATE_MVIEWファンクションでのみ使用されます。

EXPORTXML

dir/filenameとして指定したファイルに、ディメンション・オブジェクトを定義するXMLをエクスポートします。ディレクトリ名およびファイル名では、大/小文字が区別されます。

dir: データベース・ディレクトリの名前。

filename: ファイルの名前。通常、拡張子はXMLファイル名拡張子です。

FILTERPARTITIONANCESTORLEVELS

パーティション化されたキューブのパーティション・レベルより上位の集計値の生成を制御します。

TRUE: パーティション・レベルより上位のレベルをキューブから削除します。パーティション・レベルより上位のサマリー値に対する要求は、SQLによって解決されます。

FALSE: すべてのレベルがキューブに保持されます。サマリー値に対する要求は、OLAPによって解決されます。(デフォルト)。

LOGDEST

ログ・メッセージを送信して格納します。デフォルトでは、メッセージは使用できません。

SERVEROUT: メッセージをサーバー出力(通常は画面)に送信します。サーバー出力は、SQL*Plus、SQL Developerなどでの対話形式の作業に適しています。

TRACEFILE: メッセージをセッション・トレース・ファイルに送信します。

PARTITIONOPTION

キューブのパーティション化を制御します。

NONE: パーティション化しません。

DEFAULT: スパーシティ・アドバイザで、パーティション化が必要かどうか、およびキューブをどのようにパーティション化するかを決定できます。(デフォルト)。

FORCE: スパーシティ・アドバイザで推奨されない場合でも、キューブをパーティション化します。スパーシティ・アドバイザはパーティション化に使用するのに最適なディメンション、階層およびレベルを指定します。

dimension.hierarchy.level: 指定されたディメンション、階層およびレベルを使用して、キューブをパーティション化します。

POPULATELINEAGE

キューブ・マテリアライズド・ビュー内の属性の外観を制御します。

TRUE: キューブ・マテリアライズド・ビュー内にすべてのディメンション属性を含めます。(デフォルト)。

FALSE: キューブ・マテリアライズド・ビューからすべてのディメンション属性を省略します。

PRECOMPUTE

集計および格納されるデータの割合を指定します。残りの値は、セッション中に問合せからの要求に応じて計算されます。

precompute_percentage[:precompute_top_percentage]

パーティション・キューブの最上位パーティションの割合を指定します。デフォルト値は35:0で、この値では、最下位パーティションの35%および最上位パーティションの0%を事前計算するように指定されます。キューブがパーティション化されていない場合、2番目の数値は無視されます。

REMAPCOMPOSITEKEYS

複数列キーがキューブで表示される方法を制御します。

TRUE: 一意のキー属性を作成し、その値は列値の間のアンダースコアで連結された文字列式です。たとえば、値BOSTON_MA_USAは、CITY、STATEおよびCOUNTRY列で構成される複数列キーから生成された式である可能性があります。また、リレーショナル・キーを格納するために個別の列それぞれに属性が作成されます。(デフォルト)。

FALSE: 各列に一意のキー属性を作成します。

RENDERINGMODE

リレーショナル・マテリアライズド・ビューとキューブ・マテリアライズド・ビューの間の忠実度の損失を、警告メッセージとするか例外とするかを制御します。「リレーショナル・マテリアライズド・ビューの要件」を参照してください。

LOOSE: 損失はCREATE_MVIEWファンクションおよびDERIVE_FROM_MVIEWファンクションによって生成されるオプションのログに書き込まれます。例外は発生しません。(デフォルト)。

STRICT: 忠実度のすべての損失で例外が発生するため、XMLテンプレートは作成されません。

SEEFILTERS

リレーショナル・マテリアライズド・ビューの定義問合せのWHERE句の条件を保持するか、無視するかを制御します。

TRUE: XMLテンプレート内の有効な条件を表示します。(デフォルト)。

FALSE: すべての条件を無視します。

UNIQUENAMES

最上位ディメンション・オブジェクトの名前を一意にするかどうかを制御します。ディメンション・オブジェクトはリレーショナル・オブジェクトとは異なるネームスペースを持つため、ネームスペース間で競合が発生する可能性があります。

TRUE: キューブで表示されるときにすべてのリレーション名を変更します(デフォルト)。

FALSE: 名前の競合が検出されないかぎり、キューブにリレーション名を複製します。この場合は、一意名が作成されます。

UNKNOWNKEYASDIM

リレーショナル・マテリアライズド・ビューの定義問合せのGROUP BY句内にレベルまたは階層がない単純列の処理を制御します。

TRUE: リレーショナル・ディメンションのない単純列を、レベルまたは階層のないキューブ・ディメンションとして表示します。

FALSE: 列のリレーショナル・ディメンションが見つからない場合に例外を発生させます。(デフォルト)。

VALIDATEXML

生成されたXML文書を検証するかどうかを制御します。

TRUE: VALIDATE_XMLプロシージャを使用してテンプレートを検証します。(デフォルト)。

FALSE: 検証を実行しません。

戻り値

このファンクションで作成されたキューブ・マテリアライズド・ビューの名前。

使用上の注意

「SQL集計管理の使用方法」を参照してください。

例

SQL集計管理サブプログラムのすべての例で、サンプルの販売履歴スキーマが使用されます。このスキーマはCAL_MONTH_SALES_MVおよびFWEEK_PSCAT_SALES_MVの2つのリレーショナル・マテリアライズド・ビューとともにOracle Databaseにインストールされます。

次のスクリプトは、CAL_MONTH_SALES_MVをリレーショナル・マテリアライズド・ビューとして使用してキューブ・マテリアライズド・ビューを作成します。すべてデフォルト・オプションを使用しています。

SET serverout ON format wrapped

DECLARE
salesaw  varchar2(30);

BEGIN
salesaw := dbms_cube.create_mview('SH', 'CAL_MONTH_SALES_MV');
END;
/

次の例では、FWEEK_PSCAT_SALES_MVからキューブ・マテリアライズド・ビューを作成するために、いくつかのパラメータを設定しています。これらのパラメータによってキューブ・マテリアライズド・ビューを変更する方法は、次のとおりです。

- ADDTOPS: 単一の値で構成される最上位レベルを階層に追加します。販売履歴のすべてのディメンションには、すでに最上位レベルがあります。

- PRECOMPUTE: マテリアライズされた集計の割合を35:0から40:10に変更します。

- EXPORTXML: XML文書のテキスト・ファイルを作成します。

- BUILD: データ・リフレッシュを実行します。

DECLARE
salescubemv   varchar2(30);
sam_param     clob := 'ADDTOPS=FALSE,
PRECOMPUTE=40:10,
EXPORTXML=WORK_DIR/sales.xml,
BUILD=IMMEDIATE';

BEGIN
salescubemv := dbms_cube.create_mview('SH', 'FWEEK_PSCAT_SALES_MV',
sam_param);
END;
/

DERIVE_FROM_MVIEWファンクション

このファンクションは、既存のリレーショナル・マテリアライズド・ビューから導出した情報を使用して、マテリアライズド・ビューの機能を持つキューブを定義するXMLテンプレートを生成します。

構文

DBMS_CUBE.DERIVE_FROM_MVIEW (
mvowner        IN  VARCHAR2,
mvname         IN  VARCHAR2,
sam_parameters IN  CLOB  DEFAULT NULL)
RETURN CLOB;

パラメータ

表42-8 DERIVE_FROM_MVIEWファンクションのパラメータ

パラメータ

説明

mvowner

リレーショナル・マテリアライズド・ビューの所有者。

mvname

リレーショナル・マテリアライズド・ビューの名前。制約については、「リレーショナル・マテリアライズド・ビューの要件」を参照してください。

表内の多くのリレーショナル・マテリアライズド・ビューを単一のキューブ・マテリアライズド・ビューに置き換えることができます。キューブ・マテリアライズド・ビューで表示されるディメンション階層のレベルが最下位のマテリアライズド・ビューを選択してください。

sam_parameters

'parameter1=value1, parameter2=value2,...'形式のパラメータのオプションのリスト。「SQL集計管理パラメータ」を参照してください。

戻り値

マテリアライズド・ビューとして有効になっているキューブを含むアナリティック・ワークスペースを定義するXMLテンプレート。

使用上の注意

XMLテンプレートからキューブ・マテリアライズド・ビューを作成する場合は、IMPORT_XMLプロシージャを使用してください。その後、REFRESH_MVIEWプロシージャを使用して、キューブ・マテリアライズド・ビューのデータをリフレッシュします。

「SQL集計管理の使用方法」を参照してください。

例

次の例では、SHスキーマ内のCAL_MONTH_SALES_MVリレーショナル・マテリアライズド・ビューからsales_cube.xmlという名前のXMLテンプレートを生成しています。

DECLARE
salescubexml  clob := null;
sam_param     clob := 'exportXML=WORK_DIR/sales_cube.xml';

BEGIN
salescubexml := dbms_cube.derive_from_mview('SH', 'CAL_MONTH_SALES_MV',
sam_param);
END;
/

DROP_MVIEWプロシージャ

このプロシージャは、データベースからキューブ・マテリアライズド・ビューおよびすべての関連するオブジェクトを削除します。これらのオブジェクトには、ディメンション・マテリアライズド・ビュー、キューブ、キューブ・ディメンション、レベル、階層およびアナリティック・ワークスペースが含まれます。

構文

DBMS_CUBE.DROP_MVIEW (
mvowner        IN  VARCHAR2,
mvname         IN  VARCHAR2,
sam_parameters IN  CLOB  DEFAULT NULL);

パラメータ

表42-9 DROP_MVIEWプロシージャのパラメータ

パラメータ

説明

mvowner

キューブ・マテリアライズド・ビューの所有者。

mvname

キューブ・マテリアライズド・ビューの名前。

sam_parameters

EXPORTXML: dir/filenameとして指定したファイルに、ディメンション・オブジェクトを削除するXMLをエクスポートします。ディレクトリ名およびファイル名では、大/小文字が区別されます。

dir: データベース・ディレクトリの名前。

filename: ファイルの名前。通常、拡張子はXMLファイル名拡張子です。

使用上の注意

このプロシージャは、CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションを使用して作成したキューブ・マテリアライズド・ビューを削除する場合に使用してください。キューブまたはディメンションを変更した場合、DROP_MVIEWではキューブ・マテリアライズド・ビューを削除できない可能性があります。

CREATE_MVIEWおよびDERIVE_FROM_MVIEWファンクションで使用される一部のCUBEMVOPTIONパラメータは、マテリアライズド・ビューを作成しません。アナリティック・ワークスペース、キューブおよびキューブ・ディメンションを削除するには、Analytic Workspace Managerを使用してください。

EXPORTXMLパラメータを使用すると、キューブ・マテリアライズド・ビューを再作成した後に、XML文書を使用してそのキューブ・マテリアライズド・ビューを削除できます。IMPORT_XMLプロシージャを使用してください。

「SQL集計管理の使用方法」を参照してください。

例

現行のスキーマに4つのマテリアライズド・ビューがあります。CB$CAL_MONTH_SALESはSALES表のキューブ・マテリアライズド・ビューです。CB$TIMES_DIM_D1_CAL_ROLLUPはTIMESディメンション表のTIMES_DIMディメンションのキューブ・ディメンション・マテリアライズド・ビューです。他はリレーショナル・マテリアライズド・ビューです。

SELECT mview_name FROM user_mviews;

MVIEW_NAME
------------------------------
CB$CAL_MONTH_SALES
CB$TIMES_DIM_D1_CAL_ROLLUP
CAL_MONTH_SALES_MV
FWEEK_PSCAT_SALES_MV

次のコマンドは、CB$CAL_MONTH_SALESおよびCB$TIMES_DIM_D1_CAL_ROLLUPの両方を削除します。

EXECUTE dbms_cube.drop_mview('SH', 'CB$CAL_MONTH_SALES');

Dropped cube organized materialized view "SH"."CAL_MONTH_SALES"
including container analytic workspace "SH"."CAL_MONTH_SALES_AW"
at 20130213 16:31:40.056.

データ・ディクショナリに対する次の問合せで、マテリアライズド・ビューが削除されたことを確認します。

SELECT mview_name FROM user_mviews;

MVIEW_NAME
------------------------------
CAL_MONTH_SALES_MV
FWEEK_PSCAT_SALES_MV

EXPORT_XMLプロシージャ

このプロシージャは、OLAPメタデータをCLOBに書き込みます。

構文

DBMS_CUBE.EXPORT_XML
(object_ids            IN      VARCHAR2,
out_xml               IN/OUT  CLOB;

DBMS_CUBE.EXPORT_XML
(object_ids            IN      VARCHAR2,
options_xml           IN      CLOB,
out_xml               IN/OUT  CLOB;

DBMS_CUBE.EXPORT_XML
(object_ids            IN      VARCHAR2,
options_dirname       IN      VARCHAR2,
options_filename      IN      VARCHAR2,
out_xml               IN/OUT  CLOB;

パラメータ

表42-10 EXPORT_XMLプロシージャのパラメータ

パラメータ

説明

object_ids

次のいずれかの識別子です。

- GLOBALなど、スキーマの名前。

- GLOBAL.GLOBAL.AWなど、owner.aw_name.AWという形式のアナリティック・ワークスペースの完全修飾名。

- キューブ

- ディメンション

- 指定された作成プロセス

- メジャー・フォルダ

名前をカンマで区切って複数のオブジェクトを指定できます。

注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。

options_dirname

options_filenameを含むデータベース・ディレクトリの名前(大/小文字区別)。

options_filename

エクスポート・オプションのXML文書を含むファイル。

options_xml

エクスポート・オプションのXML文書を含むCLOB変数。この文書を生成するには、CREATE_EXPORT_OPTIONSプロシージャを使用します。

out_xml

object_idsにリストされるオブジェクトのOLAPメタデータのXML文書を格納するCLOB変数。

エクスポート・オプション

エクスポート・オプションのデフォルト設定は多くの場合適切であるため、options_xmlまたはoptions_dirnameおよびoptions_filenameパラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 12cにアップグレードするときは、デフォルト設定を変更するXML文書を指定する必要があります。次の例では、すべてのパラメータをFalseからTrueに変更し、スキーマに対して適切に設定します。

<?xml version="1.0"?>
<Export>
<ExportOptions>
<Option Name="SuppressNamespace" Value="True"/>
<Option Name="SuppressOwner" Value="True"/>
<Option Name="PreserveTableOwners" Value="True"/>
</ExportOptions>
</Export>

このXML文書は、手動で作成するか、またはCREATE_EXPORT_OPTIONSプロシージャを使用して作成できます。

使用上の注意

「10gアナリティック・ワークスペースのアップグレード」を参照してください。

例

同じスキーマへのアップグレードでのEXPORT_XMLの使用例については、「10gアナリティック・ワークスペースのアップグレード」を参照してください。

次のPL/SQLスクリプトは、GLOBAL12というOLAP 12cアナリティック・ワークスペースをGLOBAL_AWスキーマからGLOBALスキーマにコピーします。アップグレードは実行されません。

別のスキーマにアップグレードするには、例を次のように変更します。

- INITIALIZE_CUBE_UPGRADEプロシージャをコールします。

- パラメータ設定SUPPRESS_NAMESPACE=>TRUEを追加してCREATE_EXPORT_OPTIONSプロシージャをコールします。

PL/SQLクライアントは、GLOBALとしてデータベースに接続する必要があります。GLOBALユーザーは、GLOBAL_AW.AW$GLOBALおよびすべてのリレーショナル・データ・ソースでSELECT権限を持つ必要があります。

BEGIN
-- Create a CLOB for the export options
dbms_lob.createtemporary(optionsClob, TRUE);
dbms_cube.create_export_options(out_options_xml=>optionsClob, suppress_owner=>TRUE, preserve_table_owners=>TRUE);

-- Create a CLOB for the XML template
dbms_lob.createtemporary(exportClob, TRUE);

-- Export metadata from an analytic workspace to a CLOB
dbms_cube.export_xml(object_ids=>'GLOBAL_AW.GLOBAL12.AW', options_xml=>optionsClob, out_xml=>exportClob);

-- Import metadata from the CLOB
dbms_cube.import_xml(in_xml=>exportClob);

-- Load and aggregate the data
dbms_cube.build(script=>'GLOBAL.UNITS_CUBE, GLOBAL.PRICE_AND_COST_CUBE');

END;
/

EXPORT_XML_TO_FILEプロシージャ

このプロシージャは、OLAPメタデータをファイルにエクスポートします。このファイルは、IMPORT_XMLプロシージャを使用して、新しいまたは既存のアナリティック・ワークスペースにインポートできます。このようにして、別のスキーマまたはデータベースにアナリティック・ワークスペースのコピーを作成できます。

このプロシージャは、Oracle OLAP 10gアナリティック・ワークスペースに含まれるOLAP標準形式メタデータをOLAP 12c形式にアップグレードするプロセスの一部としても使用できます。

構文

DBMS_CUBE.EXPORT_XML_TO_FILE
(object_ids            IN      VARCHAR2,
output_dirname        IN      VARCHAR2,
output_filename       IN      VARCHAR2;

DBMS_CUBE.EXPORT_XML_TO_FILE
(object_ids            IN      VARCHAR2,
options_dirname       IN      VARCHAR2,
options_filename      IN      VARCHAR2,
output_dirname        IN      VARCHAR2,
output_filename       IN      VARCHAR2;

パラメータ

表42-11 EXPORT_XML_TO_FILEプロシージャのパラメータ

パラメータ

説明

object_ids

次のいずれかの識別子です。

- GLOBALなど、スキーマの名前。

- GLOBAL.GLOBAL.AWなど、owner.aw_name.AWという形式のアナリティック・ワークスペースの完全修飾名。

- キューブ

- ディメンション

- 指定された作成プロセス

- メジャー・フォルダ

名前をカンマで区切って複数のオブジェクトを指定できます。

注意: 個々のオブジェクトをエクスポートする場合は、それを再作成するために必要なすべてのオブジェクトをエクスポートしてください。たとえば、キューブをエクスポートする場合は、キューブのディメンションもエクスポートする必要があります。

options_dirname

options_filenameを含むデータベース・ディレクトリの名前(大/小文字区別)。「エクスポート・オプション」を参照してください。

options_filename

エクスポート・オプションのXML文書を含むファイルの名前。「エクスポート・オプション」を参照してください。

output_dirname

output_filenameが作成されるデータベース・ディレクトリの名前(大/小文字区別)。

output_filename

このプロシージャによって作成されるテンプレート・ファイルの名前。

エクスポート・オプション

エクスポート・オプションのデフォルト設定はほとんどの場合に適切であり、options_dirnameおよびoptions_filenameパラメータを省略できます。ただし、Oracle OLAP 10gメタデータをOLAP 12cにアップグレードするときは、デフォルト設定を変更するXML文書を次のように指定する必要があります。

<?xml version="2.0"?>
<Export>
<ExportOptions>
<Option Name="SuppressNamespace" Value="True"/>
<Option Name="SuppressOwner" Value="True"/>
<Option Name="PreserveTableOwners" Value="True"/>
</ExportOptions>
</Export>

このXML文書は、手動で作成するか、またはCREATE_EXPORT_OPTIONSプロシージャを使用して作成できます。

使用上の注意

「10gアナリティック・ワークスペースのアップグレード」を参照してください。

例

次の例は、デフォルトのエクスポート設定を使用して、global.xmlという名前のXMLファイルをOLAP 12c形式で生成します。メタデータは、すべてのアナリティック・ワークスペースおよびGLOBAL_AWのCWMメタデータから導出されます。出力ファイルは、WORK_DIRデータベース・ディレクトリで生成されます。

execute dbms_cube.export_xml_to_file('GLOBAL_AW', 'WORK_DIR', 'global.xml');

次の例でも、options.xmlに設定されたエクスポート・オプションを使用して、global.xmlという名前のXMLファイルをOLAP 12c形式で生成します。メタデータは、GLOBAL_AWスキーマのGLOBALアナリティック・ワークスペースから導出されます。オプション・ファイルと出力ファイルは、どちらもWORK_DIRデータベース・ディレクトリにあります。

execute dbms_cube.export_xml_to_file('GLOBAL_AW.GLOBAL.AW', 'WORK_DIR', 'options.xml', 'WORK_DIR', 'global.xml');

IMPORT_XMLプロシージャ

このプロシージャは、XMLテンプレートを使用してアナリティック・ワークスペースを作成、変更または削除します。

構文

DBMS_CUBE.IMPORT_XML
(dirname               IN      VARCHAR2,
filename              IN      VARCHAR2 );

DBMS_CUBE.IMPORT_XML
(dirname               IN      VARCHAR2,
filename              IN      VARCHAR2,
out_xml               IN/OUT  CLOB );

DBMS_CUBE.IMPORT_XML
(input_dirname         IN      VARCHAR2,
input_filename        IN      VARCHAR2
options_dirname       IN      VARCHAR2,
options_filename      IN      VARCHAR2,
out_xml               IN/OUT  CLOB );

DBMS_CUBE.IMPORT_XML
(in_xml                IN      CLOB );

DBMS_CUBE.IMPORT_XML
(in_xml                IN      CLOB,
out_xml               IN/OUT  CLOB );

DBMS_CUBE.IMPORT_XML

(in_xml                IN      CLOB,
options_xml           IN      CLOB,
out_xml               IN/OUT  CLOB );

パラメータ

表42-12 IMPORT_XMLプロシージャのパラメータ

パラメータ

説明

dirname

アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。

filename

アナリティック・ワークスペースについて記述しているXML文書を含むファイル。

in_xml

アナリティック・ワークスペースについて記述しているXML文書を含むCLOB。

input_dirname

アナリティック・ワークスペースについて記述しているXML文書を含むデータベース・ディレクトリの名前(大/小文字区別)。

input_filename

アナリティック・ワークスペースについて記述しているXML文書を含むファイル。

options_dirname

インポート・オプションのファイルを含むデータベース・ディレクトリの名前(大/小文字区別)。

options_filename

インポート・オプションのファイル。

options_xml

インポート・オプションについて記述しているXML文書。この文書を生成するには、CREATE_IMPORT_OPTIONSプロシージャを使用します。

out_xml

アナリティック・ワークスペースについて記述しているXML文書、またはエラーについて記述しているXML文書(検証専用)。DBMS_CUBEによってインポート済XMLに行われた変更(デフォルト値の設定、XMLへの小規模な修正など)を含む場合があります。

使用上の注意

XMLで、アナリティック・ワークスペース全体または1つ以上のキューブまたはディメンションの定義、変更または削除を行うことができます。キューブまたはディメンションのみを定義する場合は、既存のアナリティック・ワークスペース内で行う必要があります。

EXPORTXMLパラメータを指定したDROP_MVIEWプロシージャで生成されたXML文書を使用して、IMPORT_XMLによってアナリティック・ワークスペースを削除することもできます。

「10gアナリティック・ワークスペースのアップグレード」を参照してください。

例

この例では、データベース・ディレクトリXML_DIRにあるGLOBAL.XMLという名前のファイルから、XMLテンプレートをロードします。

EXECUTE dbms_cube.import_xml('XML_DIR', 'GLOBAL.XML');

次の例では、OLAP 10gテンプレートをエクスポートし、12cにアップグレードする前にIMPORT_XMLを使用してそれを検証します。

DECLARE

exportOptClob clob;
importOptClob clob;
importClob    clob;
exportClob    clob;

BEGIN

-- Create a CLOB for the export options
dbms_lob.createtemporary(exportOptClob, TRUE);
dbms_cube.create_export_options(out_options_xml=>exportOptClob, suppress_namespace=>TRUE, preserve_table_owners=>TRUE);

-- Create a CLOB for the XML template
dbms_lob.createtemporary(exportClob, TRUE);

-- Create a CLOB for import options
dbms_lob.createtemporary(importOptClob, TRUE);
dbms_cube.create_import_options(out_options_xml=>importOptClob, validate_only=>TRUE);

-- Create a CLOB for the change log
dbms_lob.createtemporary(importClob, TRUE);

-- Enable Oracle Database 12c Release 1 (12.1) clients to access 10g metadata
dbms_cube.initialize_cube_upgrade;

-- Export metadata from an analytic workspace to a CLOB
dbms_cube.export_xml(object_ids=>'GLOBAL_AW', options_xml=>exportOptClob, out_xml=>exportClob);

/* Import metadata from the CLOB. No objects are committed to the database
because the validate_only parameter of CREATE_IMPORT_OPTIONS is set to
TRUE.
*/

dbms_cube.import_xml(in_xml=>exportClob, options_xml=>importOptClob, out_xml=>importClob);

-- Output the metadata changes
dbms_output.put_line('This is the validation log:');
dbms_output.put_line(importClob);

END;
/

importClobのコンテンツにXMLが有効であることが表示されます。そうでない場合、<RootCommitResult>要素にエラー・メッセージが表示されます。

This is the validation log:
<?xml version="1.0" encoding="UTF-16"?>
<RootCommitResult>

</RootCommitResult>

10gから12cのメタデータにアップグレードするコンテキストでのIMPORT_XMLの例については、「カスタム・アップグレード」を参照してください。

INITIALIZE_CUBE_UPGRADEプロシージャ

このプロシージャは、Oracle OLAP 10gで作成されたアナリティック・ワークスペースをOracle OLAP 12cクライアントで使用できるように処理します。現行のスキーマ内のすべてのアナリティック・ワークスペースを処理します。10gアナリティック・ワークスペースが存在する各スキーマに対してこのプロシージャを1回実行します。

この処理手順を実行しない場合、12cクライアントは、同じ名前のディメンションまたはキューブのサブオブジェクトが存在する10gアナリティック・ワークスペースを含むデータベースには接続できません。また、一部のDBMS_CUBEプロシージャおよびファンクション(EXPORT_XMLやEXPORT_XML_TO_FILEなど)は10gメタデータに対しては機能しません。

処理後、OLAP 12cクライアントは、競合するサブオブジェクト用にINITIALIZE_CUBE_UPGRADEによって提供された代替名を使用して接続します。OLAP 10gクライアントは、継続して元の名前を使用します。

INITIALIZE_CUBE_UPGRADEは、OLAP 10gオブジェクトをOLAP 12c形式にアップグレードしません。

「10gアナリティック・ワークスペースのアップグレード」を参照してください。

構文

DBMS_CUBE.INITIALIZE_CUBE_UPGRADE;

使用上の注意

このプロシージャは、CUBE_UPGRADE_INFOという名前の表を作成し、データを移入します。その表がすでに存在している場合は切り捨てられ、切り捨てられた表にデータが再移入されます。

10gネームスペースでは同じディメンションまたはキューブ内に同じ名前のサブオブジェクトが存在できましたが、12cネームスペースではできません。INITIALIZE_CUBE_UPGRADEが、レベル、階層およびディメンション属性などのサブオブジェクトで、名前の競合を検出すると、CUBE_UPGRADE_INFOに行を作成して、個々に新しい一意の名前を付けます。行は、名前の変更が必要ないオブジェクトにも作成される場合があり、これらの行はCONFLICT列の0またはNULL値で区別されます。ディメンションやキューブなど最上位のオブジェクトはリストされません。

OLAP 12cクライアントでOLAP 10gオブジェクトの名前をカスタマイズする場合は、SQL INSERTおよびUPDATEを使用して表を編集できます。

UPGRADE_AW、EXPORT_XMLおよびEXPORT_XML_TO_FILEプロシージャは、元の名前ではなく、表のNEW_NAME列で指定された名前を使用して、CWMまたはOLAP標準形式(AWXML)アナリティック・ワークスペースでオブジェクトを特定します。

次の表に、CUBE_UPGRADE_INFOの列を示します。

列

データ・タイプ

NULL

説明

OWNER

VARCHAR2

NOT NULL

アナリティック・ワークスペースの所有者。

AW

VARCHAR2

NOT NULL

アナリティック・ワークスペースの名前。

AWXML_ID

VARCHAR2

NOT NULL

simple_name.[subtype_name].object_typeの形式で指定した、変更が必要なオブジェクトの完全論理名。たとえば、TIME.DIMENSIONおよびPRODUCT.COLOR.ATTRIBUTEとなります。

NEW_NAME

VARCHAR2

NOT NULL

アップグレード後にオブジェクトがOracle 12cで持つ名前。

OBJECT_CLASS

VARCHAR2

--

計算済のメジャーではDerivedMeasure、その他すべてのオブジェクト・タイプでは空。

CONFLICT

NUMBER

--

CUBE_UPGRADE_INFOに行が追加された理由を示します。

- 0: オブジェクトには名前の競合はありませんが、別の理由で表に表示されています。

- 1: 2つのオブジェクトが同じ名前を持ち、OLAP 12cネームスペースで競合が発生します。オブジェクト・タイプ(レベルや階層など)が名前に追加されます。

例

次のコマンドは、CUBE_UPGRADE_INFO表を作成し、データを移入します。

EXECUTE dbms_cube.initialize_cube_upgrade;

この表は、OLAP 10gアナリティック・ワークスペースにMARKET_SEGMENTという名前の階層とレベルがあることを示しており、この名前は変更されます。表には計算済のメジャーの行もありますが、これらのオブジェクトは名前を変更する必要がなく、CONFLICTの値は0です。

SELECT awxml_id, new_name, conflict FROM cube_upgrade_info;

AWXML_ID                                 NEW_NAME                    CONFLICT
---------------------------------------- ------------------------- ----------
CUSTOMER.MARKET_SEGMENT.HIERARCHY        MARKET_SEGMENT_HIERARCHY           1
CUSTOMER.MARKET_SEGMENT.LEVEL            MARKET_SEGMENT_LEVEL               1
UNITS_CUBE.EXTENDED_COST.MEASURE         EXTENDED_COST                      0
UNITS_CUBE.EXTENDED_MARGIN.MEASURE       EXTENDED_MARGIN                    0
UNITS_CUBE.CHG_SALES_PP.MEASURE          CHG_SALES_PP                       0
UNITS_CUBE.CHG_SALES_PY.MEASURE          CHG_SALES_PY                       0
UNITS_CUBE.PCTCHG_SALES_PP.MEASURE       PCTCHG_SALES_PP                    0
UNITS_CUBE.PCTCHG_SALES_PY.MEASURE       PCTCHG_SALES_PY                    0
UNITS_CUBE.PRODUCT_SHARE.MEASURE         PRODUCT_SHARE                      0
UNITS_CUBE.CHANNEL_SHARE.MEASURE         CHANNEL_SHARE                      0
UNITS_CUBE.MARKET_SHARE.MEASURE          MARKET_SHARE                       0
UNITS_CUBE.CHG_EXTMRGN_PP.MEASURE        CHG_EXTMRGN_PP                     0
UNITS_CUBE.CHG_EXTMRGN_PY.MEASURE        CHG_EXTMRGN_PY                     0
UNITS_CUBE.PCTCHG_EXTMRGN_PP.MEASURE     PCTCHG_EXTMRGN_PP                  0
UNITS_CUBE.PCTCHG_EXTMRGN_PY.MEASURE     PCTCHG_EXTMRGN_PY                  0
UNITS_CUBE.CHG_UNITS_PP.MEASURE          CHG_UNITS_PP                       0
UNITS_CUBE.EXTMRGN_PER_UNIT.MEASURE      EXTMRGN_PER_UNIT                   0
UNITS_CUBE.SALES_YTD.MEASURE             SALES_YTD                          0
UNITS_CUBE.SALES_YTD_PY.MEASURE          SALES_YTD_PY                       0
UNITS_CUBE.PCTCHG_SALES_YTD_PY.MEASURE   PCTCHG_SALES_YTD_PY                0
UNITS_CUBE.SALES_QTD.MEASURE             SALES_QTD                          0
UNITS_CUBE.CHG_UNITS_PY.MEASURE          CHG_UNITS_PY                       0

REFRESH_MVIEWプロシージャ

このプロシージャは、キューブ・マテリアライズド・ビューのデータをリフレッシュします。

構文

DBMS_CUBE.REFRESH_MVIEW (
mvowner              IN  VARCHAR2,
mvname               IN  VARCHAR2,
method               IN  VARCHAR2       DEFAULT NULL,
refresh_after_errors IN  BOOLEAN        DEFAULT FALSE,
parallelism          IN  BINARY_INTEGER DEFAULT 0,
atomic_refresh       IN  BOOLEAN        DEFAULT FALSE,
scheduler_job        IN  VARCHAR2       DEFAULT NULL,
sam_parameters       IN  CLOB           DEFAULT NULL,
nested               IN  BOOLEAN        DEFAULT FALSE );

パラメータ

表42-13 REFRESH_MVIEWプロシージャのパラメータ

パラメータ

説明

mvowner

キューブ・マテリアライズド・ビューの所有者。

mvname

キューブ・マテリアライズド・ビューの名前。

method

完全リフレッシュまたは(部分的な)高速リフレッシュ。高速リフレッシュでは、変更された行のみがキューブに挿入され、キューブ内で影響を受けた部分が再集計されます。

各キューブに順番にメソッドを指定するか、またはすべてのキューブに単一のメソッドを適用できます。指定したキューブの数がメソッドの数を上回る場合は、最後に指定したメソッドが残りのキューブに適用されます。

- C: 完全リフレッシュでは、ロードする前にすべてのディメンション値が消去されます。(デフォルト)。

- F: キューブ・マテリアライズド・ビューの高速リフレッシュ。ソース・テーブルの変更された行のみの増分リフレッシュおよび再集計が実行されます。

- ?: 使用可能な場合は高速リフレッシュ、それ以外の場合は完全リフレッシュ。

- P: キューブ・マテリアライズド・ビュー内の行のうち、ディテール表で変更されたパーティションによって影響を受ける行を再計算します。

- S: 圧縮済のキューブの高速リフレッシュ。高速リフレッシュによって、詳細データが再ロードされ、変更された値のみが再集計されます。

BUILDプロシージャの詳細は、「使用上の注意」を参照してください。

refresh_after_errors

TRUEにすると、エラーを含むキューブまたはディメンションのみがロールバックされ、他のオブジェクトの作成は続行されます。

FALSEにすると、作成中のオブジェクトがすべてロールバックされます。

parallelism

このジョブに割り当てる並列処理の数。

BUILDプロシージャの詳細は、「使用上の注意」を参照してください。

atomic_refresh

TRUEにすると、ユーザーは作成中に中間結果にアクセスできなくなります。現行のセッションでデータの一貫性を保つために、作成開始時にアナリティック・ワークスペースの現行の状態がフリーズされます。このオプションでは、作成終了時にアナリティック・ワークスペースがアンフリーズされ、新規セッションにリフレッシュしたデータへのアクセス権が付与されます。作成中にエラーが発生すると、すべてのオブジェクトがフリーズした状態にロールバックされます。

FALSEにすると、ユーザーは作成中に中間結果にアクセスできます。

scheduler_job

ログ表に表示される、ジョブのテキスト識別子。文字列が一意である必要はありません。

sam_parameters

なし

nested

TRUEに設定すると、指定したキューブ・マテリアライズド・ビューのセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定したマテリアライズド・ビューのセットと、すべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表の観点から完全に更新されます。

すべてのオブジェクトが1つのアナリティック・ワークスペースに存在する必要があります。

使用上の注意

REFRESH_MVIEWはmvnameをキューブ名に変更し、そのキューブ名およびすべてのパラメータをBUILDプロシージャに渡します。これによって、BUILDプロシージャを使用してキューブ・マテリアライズド・ビューをリフレッシュできます。これらのパラメータの詳細は、「BUILDプロシージャ」を参照してください。

例

次の例では、CB$FWEEK_PSCAT_SALESという名前のキューブ・マテリアライズド・ビューのリフレッシュに、デフォルトの設定を使用しています。

SET serverout ON format wrapped

EXECUTE dbms_cube.refresh_mview('SH', 'CB$FWEEK_PSCAT_SALES');

次の例では、可能な場合は高速リフレッシュを使用し、エラーが発生した後もリフレッシュを続行し、2つの並列処理を使用するようにリフレッシュ・メソッドを変更しています。

EXECUTE dbms_cube.refresh_mview('SH', 'CB$FWEEK_PSCAT_SALES', '?', TRUE, 2);

REFRESH_MVIEWは、キューブ・マテリアライズド・ビューを正常にリフレッシュした後、次のようなメッセージを戻します。

Completed refresh of cube mview "SH"."CB$FWEEK_PSCAT_SALES" at 20130212 15:04:46.370.

UPGRADE_AWプロシージャ

このプロシージャは、OLAP 10gアナリティック・ワークスペースに含まれているメタデータのコピーからOracle OLAP 12cアナリティック・ワークスペースを作成します。元のOLAP 10gアナリティック・ワークスペースは影響を受けず、OLAP 12cアナリティック・ワークスペースと同じスキーマに同時に存在できます。

CUBE_UPGRADE_INFO表が存在しない場合、UPGRADE_AWはINITIALIZE_CUBE_UPGRADEを自動的に実行します。存在する場合、UPGRADE_AWはそれを上書きしないため、表に行った変更は保存されます。

「10gアナリティック・ワークスペースのアップグレード」を参照してください。

構文

DBMS_CUBE.UPGRADE_AW
(sourceaw              IN  VARCHAR2,
destaw                IN  VARCHAR2,
upgoptions            IN  CLOB DEFAULT NULL);

パラメータ

表42-14 UPGRADE_AWプロシージャのパラメータ

パラメータ

説明

sourceaw

10gアナリティック・ワークスペースの名前。

destaw

生成された12cアナリティック・ワークスペースの新しい名前。sourceawと同じにはできません。

upgoptions

次のアップグレード・オプションの1つ以上('OPTION=VALUE'という形式の文字列として)。複数のオプションはカンマで区切ります。

- PRESERVE_TABLE_OWNERS:
YESに設定すると、元のソース表マッピングが保存されます。このオプションは、10gアナリティック・ワークスペースとは異なるスキーマにOLAP 12cアナリティック・ワークスペースを作成し、新しいオブジェクトを元のスキーマの表にマップする場合に使用します。(デフォルト)。

NOに設定すると、ソース表マッピングからスキーマ所有者が削除されます。このオプションは、10gアナリティック・ワークスペースとは異なるスキーマにOLAP 12cアナリティック・ワークスペースを作成し、新しいオブジェクトを宛先スキーマの表にマップする場合に使用します。

- RENAME_TABLE: オブジェクトがOLAP 12c形式で作成されるときにそれらに新しい名前を指定する表の名前。これらの変更は、INITIALIZE_CUBE_UPGRADEプロシージャで指定されている変更に加えて行われます。名前変更表の詳細は、「CREATE_IMPORT_OPTIONSプロシージャ」を参照してください。

例

この例では、MY_OBJECT_MAPという名前変更表を使用してGLOBAL10というOLAP 10gアナリティック・ワークスペースをGLOBAL12というOLAP 12cアナリティック・ワークスペースにアップグレードします。

BEGIN

-- Upgrade the analytic workspace
dbms_cube.upgrade_aw(sourceaw =>'GLOBAL10', destaw => 'GLOBAL12', upgoptions => 'RENAME_TABLE=MY_OBJECT_MAP');

-- Load and aggregate the data
dbms_cube.build(script=>'UNITS_CUBE, PRICE_AND_COST_CUBE');

END;
/

VALIDATE_XMLプロシージャ

このプロシージャは、結果をデータベースにコミットすることなく、XMLが有効かどうかをチェックします。アナリティック・ワークスペースは作成されません。

構文

DBMS_CUBE.VALIDATE_XML
(dirname               IN  VARCHAR2,
filename              IN  VARCHAR2 );

DBMS_CUBE.VALIDATE_XML
(in_xml                IN  CLOB );

パラメータ

表42-15 VALIDATE_XMLプロシージャのパラメータ

パラメータ

説明

dirname

データベース・ディレクトリの名前(大/小文字区別)。

filename

XMLテンプレートを含むファイルの名前。

IN_XML

XMLテンプレートを含むCLOBの名前。

使用上の注意

テンプレートは、常に、テンプレートの生成に使用されたものと同じバージョンおよびリリースのOracle Databaseにロードする必要があります。異なるリリースのソフトウェアで生成された場合、XMLが無効になる可能性があります。

例

この例は、スキーマにある問題をレポートします。

EXECUTE dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML');
BEGIN dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML'); END;

*
ERROR at line 1:
ORA-37162: OLAP error
'GLOBAL.PRICE_CUBE.$AW_ORGANIZATION': XOQ-01950: The AWCubeOrganization for
cube "GLOBAL.PRICE_CUBE" contains multiple BuildSpecifications with the same
name.
'GLOBAL.UNITS_CUBE.$AW_ORGANIZATION': XOQ-01950: The AWCubeOrganization for
cube "GLOBAL.UNITS_CUBE" contains multiple BuildSpecifications with the same
name.
XOQ-01400: invalid metadata objects
ORA-06512: at "SYS.DBMS_CUBE", line 411
ORA-06512: at "SYS.DBMS_CUBE", line 441
ORA-06512: at "SYS.DBMS_CUBE", line 501
ORA-06512: at "SYS.DBMS_CUBE", line 520
ORA-06512: at line 1

問題を修正した後は、プロシージャはエラーをレポートしません。

EXECUTE dbms_cube.validate_xml('UPGRADE_DIR', 'MYGLOBAL.XML');

PL/SQL procedure successfully completed.

この例では、XMLテンプレートを一時CLOBにロードして検証します。このスクリプトは、データベース・ディレクトリXML_DIRにあるGLOBAL.XMLという名前のスクリプトです。

DEFINE xml_file = 'GLOBAL.XML';

SET ECHO ON;
SET SERVEROUT ON;

DECLARE
xml_file     BFILE := bfilename('XML_DIR', '&xml_file');
in_xml       CLOB;
out_xml      CLOB := NULL;
dest_offset  INTEGER := 1;
src_offset   INTEGER := 1;
lang_context INTEGER := 0;
warning      INTEGER;
BEGIN
-- Setup the clob from a file
DBMS_LOB.CREATETEMPORARY(in_xml, TRUE);
DBMS_LOB.OPEN(in_xml, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.OPEN(xml_file, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADCLOBFROMFILE(in_xml, xml_file, DBMS_LOB.LOBMAXSIZE,
dest_offset, src_offset, 0, lang_context, warning);

-- Validate the xml
DBMS_CUBE.VALIDATE_XML(in_xml);
END;
/

43 DBMS_CUBE_ADVISE

DBMS_CUBE_ADVISEには、ログ・ベースの高速リフレッシュおよびクエリー・リライトをサポートするキューブ・マテリアライズド・ビューを評価するためのサブプログラムが含まれています。

この章では、次の項目について説明します。

- DBMS_CUBE_ADVISEの使用方法

- DBMS_CUBE_ADVISEサブプログラムの要約

関連項目:
キューブ・マテリアライズド・ビューの詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

DBMS_CUBE_ADVISEの使用方法

- セキュリティ・モデル

セキュリティ・モデル

MV_CUBE_ADVICEファンクションには、ADVISOR権限が必要です。

DBMS_CUBE_ADVISEサブプログラムの要約

表43-1 DBMS_CUBE_ADVISEサブプログラムの要約

サブプログラム

説明

MV_CUBE_ADVICEファンクション

キューブ・マテリアライズド・ビューのメタデータを評価し、制約、SQLディメンション・オブジェクトおよびマテリアライズド・ビュー・ログに関する推奨設定を生成します。これにより、クエリー・リライトおよび高速リフレッシュを広範に行うことができます。

SET_CNS_EXCEPTION_LOGプロシージャ

MV_CUBE_ADVICEで生成された、検証済の制約で使用される例外ログの名前を識別します。

TRACEプロシージャ

MV_CUBE_ADVICEの診断メッセージを表示または非表示にします。

MV_CUBE_ADVICEファンクション

このテーブル・ファンクションは、指定したキューブ・マテリアライズド・ビューのメタデータを評価します。推奨設定を生成し、SQL結果セットとして戻します。これらのSQL文を使用すると、制約、SQLディメンション・オブジェクトおよびマテリアライズド・ビュー・ログを作成でき、これにより、キューブ・マテリアライズド・ビューのクエリー・リライトの変換およびログ・ベースの高速リフレッシュを広範に使用できます。

構文

DBMS_CUBE_ADVISE.MV_CUBE_ADVICE (
owner        IN  VARCHAR2  DEFAULT USER,
mvname       IN  VARCHAR2,
reqtype      IN  VARCHAR2  DEFAULT '0',
validate     IN  NUMBER    DEFAULT 0)
RETURN COAD_ADVICE_T  PIPELINED;

パラメータ

表43-2 MV_CUBE_ADVICEファンクションのパラメータ

パラメータ

説明

owner

キューブ・マテリアライズド・ビューの所有者。

mvname

キューブ(UNITS_CUBEなど)またはキューブ・マテリアライズド・ビュー(CB$UNITS_CUBEなど)の名前。

reqtype

生成するアドバイスのタイプ:

- 0: 適用可能なすべてのアドバイス・タイプ

- 1: 列のNOT NULL制約

- 2: 主キー制約

- 3: 外部キー制約

- 4: リレーショナル・ディメンション・オブジェクト

- 5: 主キーを持つキューブ・マテリアライズド・ビュー・ログ

validate

検証オプション:

- 0: 制約を検証します。

- 1: 制約を検証しません。

戻り値

COAD_ADVICE_Tタイプの表(COAD_ADVICE_RECタイプの行のセットで構成)。列の詳細は、表43-3を参照してください。

表43-3 MV_CUBE_ADVICEの戻り値

列

データ・タイプ

説明

OWNER

VARCHAR2(30)

APIOBJECTで識別されるディメンション・オブジェクトの所有者。

APIOBJECT

VARCHAR2(30)

マテリアライズド・ビュー機能で拡張されたキューブの名前(UNITS_CUBEなど)。

SQLOBJOWN

VARCHAR2(30)

SQLOBJECTで識別されるリレーショナル・オブジェクトの所有者。

SQLOBJECT

VARCHAR2(65)

マスター表(UNITS_FACTなど)またはキューブ・マテリアライズド・ビュー(CB$UNITS_CUBEなど)の名前。

ADVICETYPE

NUMBER(38,0)

推奨のタイプ:

- 1: 外部キー列にNOT NULL制約を作成します。

- 2: マスター表に主キー制約を作成します。

- 3: マスター・ビューに主キー制約を作成します。

- 4: マスター表に外部キー制約を作成します。

- 5: マスター・ビューに外部キー制約を作成します。

- 6: マスター・ディメンション表にリレーショナル・ディメンションを作成します。

- 7: マテリアライズド・ビュー・ログを作成します。

- 8: マテリアライズド・ビューをコンパイルします。

DISPOSITION

CLOB

推奨設定と競合し、SQLTEXTを実行する前に解決する必要のある既存の条件。

SQLTEXT

CLOB

推奨設定を実装するSQL文。

DROPTEXT

CLOB

SQLTEXTを元に戻すSQL文。

既存の条件によって、これらの文でスキーマを以前の状態に戻すことができない場合があります。

使用上の注意

このファンクションは、マテリアライズド・ビュー・アドバイザとしてAnalytic Workspace Managerで使用できます。これにより、推奨設定を含むSQLスクリプトが生成されます。

例に示すように、他の表と同様に戻される行を問い合せることができます。

MV_CUBE_ADVICEでは、コールのたびに一意のオブジェクト名が生成されます。ファンクションを1回実行し、結果を取得してから、これらのSQL文を操作する必要があります。

データベース・オブジェクトを削除するときには注意してください。すでに表にマテリアライズド・ビュー・ログがある場合は、表の名前はDROPTEXT列のSQL文DROP MATERIALIZED VIEW LOGで使用されるものと同じになります。マテリアライズド・ビュー・ログは、特にリモート・データ・レプリケーションで使用されている場合は、誤って削除しないようにしてください。

例

次の問合せでは、MV_CUBE_ADVICEで推奨されるSQL文が表示されます。UNITS_FACTはUNITS_CUBEのマスター表であり、MV_CUBE_ADVICEは、主キー制約を追加するALTER TABLEコマンドを生成します。

また、CB$UNITS_CUBEキューブ・マテリアライズド・ビューをコンパイルするALTER MATERIALIZED VIEWコマンドも生成します。

SQL> SELECT apiobject, sqlobject, sqltext
FROM TABLE(dbms_cube_advise.mv_cube_advice('GLOBAL', 'CB$UNITS_CUBE'));

APIOBJECT    SQLOBJECT       SQLTEXT
------------ --------------- ---------------------------------------------
UNITS_CUBE   UNITS_FACT      alter table "GLOBAL"."UNITS_FACT" add constra
int "COAD_PK000208" PRIMARY KEY ("CHANNEL_ID"
, "ITEM_ID", "SHIP_TO_ID", "MONTH_ID") rely d
isable novalidate

UNITS_CUBE   CB$UNITS_CUBE   alter materialized view "GLOBAL"."CB$UNITS_CU
BE" compile

SET_CNS_EXCEPTION_LOGプロシージャ

このプロシージャは、MV_CUBE_ADVICEで生成された、検証済の制約で使用される例外ログの名前を識別します。

構文

DBMS_CUBE_ADVISE.SET_CNS_EXCEPTION_LOG (
exceptlogtab     IN   VARCHAR2  DEFAULT user.EXCEPTIONS);

パラメータ

表43-4 SET_CNS_EXCEPTION_LOGプロシージャのパラメータ

パラメータ

説明

exceptlogtab

既存の例外ログの名前。

使用上の注意

例外ログを作成するには、SET_CNS_EXCEPTION_LOGを実行する前に、utlexcpt.sqlまたはutlexpt1.sqlスクリプトを使用します。

MV_CUBE_ADVICEのvalidateパラメータを1に設定する必要があります。

例

utlexcpt.sqlスクリプトは、EXCEPTIONSという名前の表を作成し、SET_CNS_EXCEPTION_LOGプロシージャは、この表をMV_CUBE_ADVICEの例外ログとして識別します。ALTER TABLE文には、VALIDATE EXCEPTIONS INTO "GLOBAL"."EXCEPTIONS"句が追加されます。

SQL> @utlexcpt
Table created.

SQL> EXECUTE dbms_cube_advise.set_cns_exception_log;
PL/SQL procedure successfully completed.

SQL> SELECT apiobject, sqlobject, advicetype type, sqltext
FROM TABLE(
dbms_cube_advise.mv_cube_advice('GLOBAL', 'CB$UNITS_CUBE', '2', 1));

APIOBJECT    SQLOBJECT       TYPE SQLTEXT
------------ --------------- ---- ----------------------------------------------
UNITS_CUBE   UNITS_FACT         2 alter table "GLOBAL"."UNITS_FACT" add constrai
nt "COAD_PK000219" PRIMARY KEY ("CHANNEL_ID",
"ITEM_ID", "SHIP_TO_ID", "MONTH_ID") norely en
able validate exceptions into "GLOBAL"."EXCEPT
IONS"

UNITS_CUBE   CB$UNITS_CUBE      8 alter materialized view "GLOBAL"."CB$UNITS_CUB
E" compile

TRACEプロシージャ

このプロシージャは、MV_CUBE_ADVICEファンクションのサーバー出力への診断メッセージを有効および無効にします。

構文

DBMS_CUBE_ADVISE.TRACE (
diaglevel       IN  BINARY_INTEGER DEFAULT 0);

パラメータ

表43-5 TRACEプロシージャのパラメータ

パラメータ

説明

diaglevel

0はトレースを無効にし、1はトレースを有効にします。

例

次の例では、診断メッセージをサーバー出力に送ります。SQL*PlusのSERVEROUTPUT設定により、メッセージが表示されます。

SQL> SET SERVEROUT ON FORMAT WRAPPED
SQL> EXECUTE dbms_cube_advise.trace(1);
DBMS_COAD_DIAG: Changing diagLevel from [0] to [1]

PL/SQL procedure successfully completed.

SQL> SELECT sqlobject, sqltext, droptext
FROM TABLE(
dbms_cube_advise.mv_cube_advice('GLOBAL', 'CB$UNITS_CUBE'))
WHERE apiobject='UNITS_CUBE';

SQLOBJECT       SQLTEXT                                  DROPTEXT
--------------- ---------------------------------------- ----------------------------------------
UNITS_FACT      alter table "GLOBAL"."UNITS_FACT" add co alter table "GLOBAL"."UNITS_FACT" drop c
nstraint "COAD_PK000222" PRIMARY KEY ("C onstraint "COAD_PK000222" cascade
HANNEL_ID", "ITEM_ID", "SHIP_TO_ID", "MO
NTH_ID") rely disable novalidate

CB$UNITS_CUBE   alter materialized view "GLOBAL"."CB$UNI alter materialized view "GLOBAL"."CB$UNI
TS_CUBE" compile                         TS_CUBE" compile

20070706 07:25:27.462780000 DBMS_COAD_DIAG NOTE: Parameter mvOwner  : GLOBAL
20070706 07:25:27.462922000 DBMS_COAD_DIAG NOTE: Parameter mvName   : CB$UNITS_CUBE
20070706 07:25:27.462967000 DBMS_COAD_DIAG NOTE: Parameter factTab  : .
20070706 07:25:27.463011000 DBMS_COAD_DIAG NOTE: Parameter cubeName : UNITS_CUBE
20070706 07:25:27.463053000 DBMS_COAD_DIAG NOTE: Parameter cnsState : rely disable novalidate
20070706 07:25:27.463094000 DBMS_COAD_DIAG NOTE: Parameter NNState  : disable novalidate
20070706 07:25:27.462368000 DBMS_COAD_DIAG NOTE: Begin NN:
20070706 07:25:27.833530000 DBMS_COAD_DIAG NOTE: End   NN:
20070706 07:25:27.833620000 DBMS_COAD_DIAG NOTE: Begin PK:
20070706 07:25:28.853418000 DBMS_COAD_DIAG NOTE: End   PK:
20070706 07:25:28.853550000 DBMS_COAD_DIAG NOTE: Begin FK:
20070706 07:25:28.853282000 DBMS_COAD_DIAG NOTE: End   FK:
20070706 07:25:28.853359000 DBMS_COAD_DIAG NOTE: Begin RD:
20070706 07:25:29.660471000 DBMS_COAD_DIAG NOTE: End   RD:
20070706 07:25:29.661363000 DBMS_COAD_DIAG NOTE: Begin CM:
20070706 07:25:29.665106000 DBMS_COAD_DIAG NOTE: End   CM:

SQL> EXECUTE dbms_cube_advise.trace(0);
DBMS_COAD_DIAG: Changing diagLevel from [1] to [0]

PL/SQL procedure successfully completed.

44 DBMS_CUBE_LOG

DBMS_CUBE_LOGには、キューブおよびキューブ・ディメンションのログを作成および管理するためのサブプログラムが含まれています。

関連項目:
ビジネス・インテリジェンス・アプリケーションおよび分析アプリケーションをサポートするOLAPオプションの使用の詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_CUBE_LOGの使用方法

- DBMS_CUBE_LOGサブプログラムの要約

DBMS_CUBE_LOGの使用方法

DBMS_CUBE_LOGは複数のログを管理します。これらのログを使用すると、長時間実行プロセスの進行状況を追跡し、結果を使用してパフォーマンスの特徴をプロファイルできます。これらのログから、リレーショナル・ソース表で不適切に構造化された階層、ロードに失敗するレコードまたは完了に時間がかかりすぎるデータ更新など、キューブの作成中やメンテナンス中に発生する可能性がある問題を診断して、問題の解決に役立つ情報が得られます。また、キューブに問い合せる際のパフォーマンスの問題の診断にも役立ちます。

Analytic Workspace Managerでは、デフォルトの名前とタイプを使用して、ログが自動的に作成されます。また、Analytic Workspace Managerを閉じるとログが無効になります。同じログをAnalytic Workspace Managerの外部で使用するには、まずログを有効にする必要があります。または、Analytic Workspace Managerの外部で使用するための別のログを作成し、管理することもできます。

この項では、次の項目について説明します。

- ロギング・タイプ

- ロギング・ターゲット

- 冗長性レベル

- セキュリティ・モデル

- キューブ・ログの作成

- キューブ作成ログ

- キューブ・ディメンション・コンパイル・ログ

- キューブ操作ログ

- キューブ拒否レコード・ログ

ロギング・タイプ

複数のログが使用でき、それぞれが特定のタイプのメッセージの格納に特化しています。すべてのログを使用することもでき、特に重要と思われるログのみを使用することもできます。ログとコンテンツについてはこの項の後半で説明します。

- キューブ作成ログ

- キューブ・ディメンション・コンパイル・ログ

- キューブ操作ログ

- キューブ拒否レコード・ログ

DBMS_CUBE_LOGは、各ログ・タイプに2進整数を戻すファンクションを提供します。他のDBMS_CUBE_LOGプロシージャおよびファンクションの引数値の整数のかわりにこれらのファンクションを使用すると、より読みやすいコードを作成できます。次の説明を参照してください。

- TYPE_BUILDファンクション

- TYPE_DIMENSION_COMPILEファンクション

- TYPE_OPERATIONSファンクション

- TYPE_REJECTED_RECORDSファンクション

ロギング・ターゲット

TABLE_CREATEプロシージャは、ログを格納するデータベース表を作成します。ENABLEプロシージャを使用すると、宛先またはロギング・レベルでの変更で追加のターゲットを作成できます。たとえば、キューブ操作ログのターゲットを表とディスク・ファイルの両方に指定できます。使用可能なターゲットは次のとおりです。

- ディスク・ファイル

- LOB

- データベース表

- トレース・ファイル

複数のターゲットを作成する方法の詳細は、「ENABLEプロシージャ」を参照してください。

DBMS_CUBE_LOGは、各ターゲット・タイプに2進整数を戻すファンクションを提供します。他のDBMS_CUBE_LOGプロシージャおよびファンクションの引数値の整数のかわりにこれらのファンクションを使用すると、より読みやすいコードを作成できます。次の説明を参照してください。

- TARGET_FILEファンクション

- TARGET_LOBファンクション

- TARGET_TABLEファンクション

- TARGET_TRACEファンクション

冗長性レベル

ログに記録する情報量を決定できます。ジョブを翌日まで実行しておく場合は、新しい作成の成功を監視するときよりも詳細の数を減らすことができます。冗長性レベルは次から選択できます。各レベルは前のレベルより冗長性が高くなります。

- LOWEST: キューブ・ディメンションおよびキューブの作成に使用された各コマンドのステータス、スレーブ・プロセスの使用およびサマリー・レコードをログに記録します。これは、基本のロギング・レベルです。

- LOW: SQLインポート、集計および更新の記録の開始および終了などOLAPエンジンからのメッセージをログに記録します。

- MEDIUM: Analytic Workspace Managerによって使用されるレベルでメッセージをログに記録します。

- HIGH: コンポジットの長さ、パーティション化の詳細、オブジェクト・サイズおよび集計ワークリストなどのチューニング情報を提供するメッセージをログに記録します。このレベルは、Oracleフィールドサービスによる使用を目的としています。

- HIGHEST: デバッグ・メッセージおよび通常トレース・ファイルに送信されるその他の情報をログに記録します。このレベルは、Oracleサポート・サービスによる使用を目的としています。

DBMS_CUBE_LOGは、各冗長性レベルに2進整数を戻すファンクションを提供します。他のDBMS_CUBE_LOGプロシージャおよびファンクションの引数値の整数のかわりにこれらのファンクションを使用すると、より読みやすいコードを作成できます。次の説明を参照してください。

- LEVEL_LOWESTファンクション

- LEVEL_LOWファンクション

- LEVEL_MEDIUMファンクション

- LEVEL_HIGHファンクション

- LEVEL_HIGHESTファンクション

セキュリティ・モデル

TABLE_CREATEプロシージャを実行するには、CREATE TABLE権限が必要です。

キューブ・ログの作成

データベース表にロギング情報を格納するには、TABLE_CREATEプロシージャを使用して表を作成する必要があります。キューブ作成ログは常に表に格納されます。ENABLEプロシージャは、その他のログのその他のターゲット・タイプを作成します。

キューブ作成ログを作成するには、次のようにします。

- TABLE_CREATEプロシージャを実行します。

次のコマンドは、CUBE_BUILD_LOGというデフォルト名でキューブ作成ログを作成します。

EXECUTE dbms_cube_log.table_create(dbms_cube_log.type_build);

データベース表ターゲットでキューブ・ディメンション・コンパイル・ログ、キューブ操作ログまたはキューブ拒否レコード・ログを作成するには、次の手順を実行します。

1. TABLE_CREATEプロシージャを実行して表を作成します。

2. ENABLEプロシージャを実行してロギングを開始します。

これらのコマンドは、CUBE_OPERATIONS_LOGというデフォルト名とデフォルトの冗長性レベルでキューブ操作表を作成し、有効にします。

EXECUTE dbms_cube_log.table_create(dbms_cube_log.type_operations);
EXECUTE dbms_cube_log.enable(dbms_cube_log.type_operations);

トレース・ファイル、ディスク・ファイルまたはLOBターゲットでキューブ・ディメンション・コンパイル・ログ、キューブ操作ログまたはキューブ拒否レコード・ログを作成するには、次のようにします。

- ENABLEプロシージャを実行します。

このコマンドは、キューブ拒否レコード・ログを有効にし、冗長性をLOWESTレベルに設定し、出力をWORK_DIRデータベース・ディレクトリにあるrejects.logという名前のディスク・ファイルに送ります。

EXECUTE dbms_cube_log.enable(dbms_cube_log.type_rejected_records, -
dbms_cube_log.target_file, dbms_cube_log.level_lowest, -
'WORK_DIR/rejects.log');

キューブ作成ログ

キューブ作成ログからは、作成中の実行内容に関する情報が得られます。このログを使用して、作成により予測どおりの結果が得られたかどうか、得られなかった場合は、その理由を確認できます。

キューブ作成ログの内容は、作成中は継続的に更新されます。作成の進行状況を評価し、完了する時間を推測するために、いつでもログに問い合せることができます。

キューブ作成ログのデフォルト名は、CUBE_BUILD_LOGです。次の表に内容を示します。

注意:
キューブ作成ログを管理するには、TABLE_CREATEおよびVERSIONプロシージャのみを使用します。

列

データ・タイプ

NULL

説明

BUILD_ID

NUMBER

--

作成に対する一意の順序番号。パラレル作成では、スレーブ・プロセスに対して同じ番号が使用されます。

SLAVE_NUMBER

NUMBER

--

パラレル作成時のスレーブ・プロセスのカウンタ: 0(ゼロ)はマスター・プロセス、1は1番目のスレーブ、2は2番目のスレーブのように示されます。

STATUS

VARCHAR2(10)

--

コマンドの現在のステータス: STARTED、COMPLETED、FAILEDまたはWORKING。

COMMAND

VARCHAR2(25)

--

BUILD、LOAD、SOLVEなどの実行されるコマンドの名前。

BUILD_OBJECT

VARCHAR2(500)

--

処理されるキューブまたはキューブ・ディメンションの名前。

BUILD_OBJECT_TYPE

VARCHAR2(10)

--

オブジェクトのタイプ: CUBE、DIMENSIONまたはBUILD。

OUTPUT

CLOB

--

XML文書のように構造化された、コマンドに関する情報。追加の情報がない場合(STARTED行などの場合)はNULLになります。

AW

VARCHAR2(30)

--

作成オブジェクトを含むアナリティック・ワークスペースの名前。

OWNER

VARCHAR2(30)

アナリティック・ワークスペースおよびすべての作成オブジェクトの所有者。

PARTITION

VARCHAR2(10)

--

処理されるパーティションの名前。現在の操作がパーティションに対応していない場合はNULLになります。

SCHEDULER_JOB

VARCHAR2(100)

--

作成を識別する、ユーザー定義の文字列。

TIME

TIMESTAMP(6)

--

表に行が追加される日時。

BUILD_SCRIPT

CLOB

--

キューブ作成スクリプト。COMMANDがBUILDの行にのみ移入されます。

BUILD_TYPE

VARCHAR2(22)

--

作成元: DBMS_CUBE、DBMS_MVIEW、JAVAまたはSLAVE。

COMMAND_DEPTH

NUMBER(2)

--

コマンドのネストの深度。たとえば、COMPILE HIERARCHIESがCOMPILEのコンポーネント・ステップであるとすると、COMPILEが深度1の場合、COMPILE HIERARCHIESは深度2となります。

BUILD_SUB_OBJECT

VARCHAR2(30)

--

処理されるサブオブジェクト(キューブの集計ルールを継承しないメジャーなど)の名前。

REFRESH_METHOD

VARCHAR2(1)

--

現行のコマンドに関連付けられているリフレッシュ・メソッド(C、Fなど)。リフレッシュ・メソッドが重要なのはCLEARステップに対してのみです。

SEQ_NUMBER

NUMBER

--

現在は使用されていません。

COMMAND_NUMBER

NUMBER

--

現行のプロセスでのコマンドの順序番号で、異なるオブジェクトに対する同じコマンドを区別するために使用できます。たとえば、PRODUCTに対するLOADとTIMEに対するLOADです。

IN_BRANCH

NUMBER(1)

--

現在は使用されていません。

COMMAND_STATUS_NUMBER

NUMBER

--

特定のコマンドについてすべての行の順序番号を識別します。たとえば、特定のコマンドは4行で表され、最初の行のステータスはSTARTED、最後の行のステータスはCOMPLETEDとなっている場合があります。この列はソートに使用されます。

キューブ・ディメンション・コンパイル・ログ

キューブの解を求める場合、OLAPではディメンション階層が有効であることを確認するためにチェックします。この検証中に発生したエラーは、キューブ・ディメンション・コンパイル・ログに書き込まれます。チェックは次のような内容です。

- 循環性: 階層は、ディメンション・メンバーの間の親子関係で定義されます。循環性は、ディメンション・メンバーがそれ自体の祖先または子孫に指定されたときに発生します。

- 階層タイプ: 階層はレベルに基づくことも値に基づくこともできます。キューブ・マテリアライズド・ビューのようにレベルに基づく階層のみが有効であるようにキューブを定義することができます。

- レベル・オプション: レベルに基づく階層は、規則的、不規則またはスキップ・レベルが可能です。時間ディメンションのように規則的な階層のみが有効であるようにディメンションを定義することができます。

キューブ・ディメンション・コンパイル・ログのデフォルト名は、CUBE_DIMENSION_COMPILEです。次の表に内容を示します。

列

データ・タイプ

NULL

説明

ID

NUMBER

--

現在の操作の識別子

SEQ_NUMBER

NUMBER

--

キューブ作成ログの順序番号

ERROR#

NUMBER(8)

NOT NULL

レポートされているエラーの番号

ERROR_MESSAGE

VARCHAR2(2000)

--

エラーに関連付けられたエラー・メッセージ

DIMENSION

VARCHAR2(100)

--

コンパイルされているディメンションの名前

DIMENSION_MEMBER

VARCHAR2(100)

--

障害があるディメンション・メンバー

MEMBER_ANCESTOR

VARCHAR2(100)

--

DIMENSION_MEMBERの親

HIERARCHY1

VARCHAR2(100)

--

エラーに関連する最初の階層

HIERARCHY2

VARCHAR2(100)

--

エラーに関連する2番目の階層

ERROR_CONTEXT

CLOB

--

エラーに関する詳細

キューブ操作ログ

キューブ操作ログには、すべてのOLAPエンジン・イベントに関するメッセージおよびデバッグ情報が含まれています。現在の操作を非常に詳細なレベルで追跡できます。SQL_ID列を使用すると、キューブ操作ログをV$SQL、V$SESSIONおよびV$SESSION_LONGOPSなどの動的パフォーマンス・ビューと結合して、I/O待機やCPUなどその他のデータベース操作のコンテキストでキューブ操作を確認できます。

キューブ操作ログのデフォルト名は、CUBE_OPERATIONS_LOGです。次の表に内容を示します。

列

データ・タイプ

NULL

説明

INST_ID

NUMBER

NOT NULL

インスタンスの識別子。

SID

NUMBER

NOT NULL

セッション識別子。

SERIAL#

NUMBER

NOT NULL

セッションのシリアル番号。

USER#

NUMBER

NOT NULL

ユーザーの識別子。

SQL_ID

VARCHAR2(13)

--

実行中のSQL文の識別子。

JOB

NUMBER

--

ジョブの識別子。

ID

NUMBER

--

現在の操作の識別子

PARENT_ID

NUMBER

--

親の操作の識別子。

SEQ_NUMBER

NUMBER

--

キューブ作成ログの順序番号

TIME

TIMESTAMP(6)WITH TIME ZONE

NOT NULL

レコードがキューブ操作ログに追加された時間。

LOG_LEVEL

NUMBER(4)

NOT NULL

DBMS_CUBE_LOG.ENABLEプロシージャに指定されるレコードの冗長性レベル。

DEPTH

NUMBER(4)

--

レコードのネストの深度。たとえば、レベル0は操作およびサブ操作が、他の操作およびサブ操作内にネストされていないことを示しています。

OPERATION

VARCHAR2(15)

NOT NULL

AGGREGATE、ROWSOURCEまたはSQLIMPORTなどの現在の操作。

SUBOPERATION

VARCHAR2(20)

--

LoadingまたはImportなどの現在のサブ操作。

STATUS

VARCHAR2(10)

NOT NULL

START、TRACE、COMPLETEDまたはFailedなどの操作の現在のステータス。

NAME

VARCHAR2(20)

NOT NULL

ROWS LOADED、AVE_ROW_LENおよびPAGEPOOLSIZEなどのレコードの名前。

VALUE

VARCHAR2(4000)

--

NAMEの値

DETAILS

CLOB

--

NAMEに関する詳細。

キューブ拒否レコード・ログ

キューブ拒否レコード・ログには、ローダー・ジョブおよび予測された形式に適合しなかったために拒否されたレコードのサマリーが含まれています。

ソース表の単一の行には、複数のフィールドのエラーが含まれている場合があります。各フィールドがエラーをログに生成し、結果として同じROWID4の複数の行が作成されます。

SOURCE_ROW列に作成されます。

キューブ拒否レコード・ログのデフォルト名は、CUBE_REJECTED_RECORDSです。次の表に内容を示します。

列

データ・タイプ

NULL

説明

ID

NUMBER

--

現在の操作の識別子

SEQ_NUMBER

NUMBER

--

キューブ作成ログの順序番号

ERROR#

NUMBER(8)

NOT NULL

レコードによって起動されるエラー数

ERROR_MESSAGE

VARCHAR2

--

エラーに関連付けられたエラー・メッセージ

RECORD#

NUMBER(38)

--

入力レコード数

SOURCE_ROW

ROWID

--

ソース表の行のROWID。ソースがビューまたは問合せの場合はNULL

DBMS_CUBE_LOGサブプログラムの要約

表44-1 DBMS_CUBE_LOGサブプログラム

サブプログラム

説明

DEFAULT_NAMEファンクション

様々なログ・タイプのデフォルトの表名を戻します。

DISABLEプロシージャ

セッションの継続中ロギングをオフにします。

ENABLEプロシージャ

セッションの継続中ロギングをオンにし、ロギングを追加出力タイプにリダイレクトしてログの冗長性レベルを変更します。

FLUSHプロシージャ

バッファされたすべてのメッセージを強制的にログに書き込みます。

GET_LOGプロシージャ

特定のログのレベルと場所の現在の設定を戻します。

GET_LOG_SPECファンクション

すべてのアクティブなログの説明を取得します。

GET_PARAMETERファンクション

ロギングの様々な要素を制御するオプションの現在の値を戻します。

LEVEL_HIGHファンクション

冗長性レベルHIGHの整数値を戻します。

LEVEL_HIGHESTファンクション

冗長性レベルHIGHESTの整数値を戻します。

LEVEL_LOWファンクション

冗長性レベルLOWの整数値を戻します。

LEVEL_LOWESTファンクション

冗長性レベルLOWESTの整数値を戻します。

LEVEL_MEDIUMファンクション

冗長性レベルMEDIUMの整数値を戻します。

SET_LOG_SPECプロシージャ

すべてのロギングを入力文字列で指定された値に設定します。

SET_PARAMETERプロシージャ

ロギングの様々な要素を制御するオプションを設定します。

TABLE_CREATEプロシージャ

OLAPログのターゲット表を作成します。

TARGET_FILEファンクション

ディスク・ファイル・ターゲットの整数値を戻します。

TARGET_LOBファンクション

LOBターゲットの整数値を戻します。

TARGET_TABLEファンクション

データベース表ターゲットの整数値を戻します。

TARGET_TRACEファンクション

トレース・ファイル・ターゲットの整数値を戻します。

TYPE_BUILDファンクション

キューブ作成ログの整数値を戻します。

TYPE_DIMENSION_COMPILEファンクション

キューブ・ディメンション・コンパイル・ログの整数値を戻します。

TYPE_OPERATIONSファンクション

キューブ操作ログの整数値を戻します。

TYPE_REJECTED_RECORDSファンクション

キューブ拒否レコード・ログの整数値を戻します。

VERSIONファンクション

特定のログ表のバージョン番号または特定のログ・タイプの現在のバージョン番号を戻します。

DEFAULT_NAMEファンクション

このファンクションは、様々なログ・タイプのデフォルトの表名を戻します。

構文

DBMS_CUBE_LOG.DEFAULT_NAME (
LOG_TYPE       IN   BINARY_INTEGER  DEFAULT TYPE_OPERATIONS)
RETURN VARCHAR2;

パラメータ

表44-2 DEFAULT_NAMEファンクションのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

- 4: TYPE_BUILD

詳細は、「ロギング・タイプ」を参照してください。

戻り値

指定されたログ・タイプのデフォルトの表名。

例

この例は、キューブ操作ログのデフォルト名を戻します。

SELECT dbms_cube_log.default_name FROM dual;

DEFAULT_NAME
------------------------------
CUBE_OPERATIONS_LOG

次の例は、キューブ拒否レコード・ログのデフォルト名を戻します。

select dbms_cube_log.default_name(dbms_cube_log.type_rejected_records) -
"Default Name" from dual;

Default Name
-------------------------
CUBE_REJECTED_RECORDS

DISABLEプロシージャ

このプロシージャは、ENABLEプロシージャで再度明示的にロギングがオンにされた場合を除き、セッションの継続中ロギングをオフにします。

構文

DBMS_CUBE_LOG.DISABLE (
LOG_TYPE       IN   BINARY_INTEGER  DEFAULT,
LOG_TARGET     IN   BINARY_INTEGER  DEFAULT);

パラメータ

表44-3 DISABLEプロシージャのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

注意: このプロシージャでキューブ作成ログを無効にすることはできません。

詳細は、「ロギング・タイプ」を参照してください。

log_target

ロギング・レコードの次のいずれかの宛先です。ENABLEプロシージャを使用して、別のターゲットを以前に指定している場合を除き、ログは表に送信されます。

- 1: TARGET_TABLE

- 2: TARGET_TRACE

- 3: TARGET_FILE

- 4: TARGET_LOB

詳細は、「ロギング・ターゲット」を参照してください。

例

このコマンドは、ディメンション・コンパイル・エラー・ログ表を無効にします。

EXECUTE dbms_cube_log.disable(dbms_cube_log.type_dimension_compile);

ENABLEプロシージャ

このプロシージャは、セッションの継続中またはDISABLEプロシージャを使用してオフにされるまで、ロギングをオンにします。

ENABLEプロシージャでも、ロギングを追加出力タイプに送り、ログの詳細の量を変更できます。ログ・タイプは、各ログ・ターゲットに対して有効にできます。たとえば、キューブ操作ログを異なる冗長性レベルでトレース・ファイル、表およびファイルに対して有効にできますが、キューブ操作ログを同時に2つのファイルに対して有効にすることはできません。

このプロシージャはログの形式もチェックして、必要に応じて更新します。

構文

DBMS_CUBE_LOG.ENABLE (
LOG_TYPE       IN     BINARY_INTEGER  DEFAULT NULL,
LOG_TARGET     IN     BINARY_INTEGER  DEFAULT NULL,
LOG_LEVEL      IN     BINARY_INTEGER  DEFAULT NULL);

DBMS_CUBE_LOG.ENABLE (
LOG_TYPE       IN     BINARY_INTEGER  DEFAULT NULL,
LOG_TARGET     IN     BINARY_INTEGER  DEFAULT NULL,
LOG_LEVEL      IN     BINARY_INTEGER  DEFAULT NULL,
LOG_LOCATION   IN     VARCHAR2        DEFAULT NULL);

DBMS_CUBE_LOG.ENABLE (
LOG_TYPE       IN     BINARY_INTEGER  DEFAULT NULL,
LOG_TARGET     IN     BINARY_INTEGER  DEFAULT NULL,
LOG_LEVEL      IN     BINARY_INTEGER  DEFAULT NULL,
LOG_LOCATION   IN/OUT CLOB );

パラメータ

表44-4 ENABLEプロシージャのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

注意: このプロシージャでキューブ作成ログを無効にすることはできません。

詳細は、「ロギング・タイプ」を参照してください。

log_target

ロギング・レコードの次のいずれかの宛先です。ENABLEプロシージャを使用して、別のターゲットを以前に指定している場合を除き、ログは表に送信されます。

- 1: TARGET_TABLE

- 2: TARGET_TRACE

- 3: TARGET_FILE

- 4: TARGET_LOB

詳細は、「ロギング・ターゲット」を参照してください。

log_level

次の冗長性レベルのいずれかです。各レベルでは前のレベルに新しいタイプのメッセージが追加されます。

- 1: LEVEL_LOWEST

- 2: LEVEL_LOW

- 3: LEVEL_MEDIUM

- 4: LEVEL_HIGH

- 5: LEVEL_HIGHEST

詳細は、「冗長性レベル」を参照してください。

log_location

ログの完全なID(log_targetが表の場合、owner.table_nameなど)。

例

次のコマンドはすべてのキューブ・ログを有効にします。

EXECUTE dbms_cube_log.enable;

次のPL/SQLプロシージャはログ・レベルをLEVEL_LOWESTに設定します。

BEGIN
dbms_cube_log.disable(dbms_cube_log.type_rejected_records);
dbms_cube_log.enable(dbms_cube_log.type_rejected_records,
dbms_cube_log.target_table, dbms_cube_log.level_lowest);
END;
/

FLUSHプロシージャ

このプロシージャは、バッファされたすべてのメッセージを強制的にログに書き込みます。バッファはセッションを通じて自動的にフラッシュされますが、ログを表示する前に手動でフラッシュすることですべてのメッセージを確実に表示できます。

構文

DBMS_CUBE_LOG.FLUSH ( );

例

次の例ではすべてのログのバッファをフラッシュします。

EXECUTE dbms_cube_log.flush;

GET_LOGプロシージャ

このプロシージャは、特定のログのレベルと場所の現在の設定を戻します。

構文

DBMS_CUBE_LOG.GET_LOG (
LOG_TYPE       IN   BINARY_INTEGER  DEFAULT TYPE_OPERATIONS,
LOG_TARGET     IN   BINARY_INTEGER  DEFAULT TARGET_TABLE,
LOG_LEVEL      OUT  BINARY_INTEGER,
LOG_LOCATION   OUT  VARCHAR2 );

パラメータ

表44-5 GET_LOGプロシージャのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

詳細は、「ロギング・タイプ」を参照してください。

log_target

ロギング・レコードの次のいずれかの宛先です。ENABLEプロシージャを使用して、別のターゲットを以前に指定している場合を除き、ログは表に送信されます。

- 1: TARGET_TABLE

- 2: TARGET_TRACE

- 3: TARGET_FILE

- 4: TARGET_LOB

詳細は、「ロギング・ターゲット」を参照してください。

log_level

次の冗長性レベルのいずれかです。各レベルでは前のレベルに新しいタイプのメッセージが追加されます。

- 1: LEVEL_LOWEST

- 2: LEVEL_LOW

- 3: LEVEL_MEDIUM

- 4: LEVEL_HIGH

- 5: LEVEL_HIGHEST

詳細は、「冗長性レベル」を参照してください。

log_location

ログの完全なID(log_targetが表の場合、owner.table_nameなど)。

使用上の注意

log_typeがアクティブでない場合は、log_levelおよびlog_locationはNULLです。DBMS_CUBE_LOG.ENABLEを使用して、ログをアクティブにします。

例

このPL/SQLプロシージャを使用すると、キューブ拒否レコード・ログに関する情報が得られます。

SET serverout ON format wrapped

DECLARE
myloglevel  binary_integer;
mylogtarget varchar2(128);

BEGIN
dbms_cube_log.get_log(dbms_cube_log.type_rejected_records,
dbms_cube_log.target_table, myloglevel, mylogtarget);

dbms_output.put_line('Log Level: ' || myloglevel);
dbms_output.put_line('Log Target: ' || mylogtarget);
END;
/

このプロシージャは、次のような結果を生成します。

Log Level: 5

Log Target: GLOBAL.CUBE_REJECTED_RECORDS

GET_LOG_SPECファンクション

このファンクションは、すべてのアクティブなキューブ操作ログ、キューブ拒否レコード・ログおよびキューブ・ディメンション・コンパイル・ログの説明を取得します。

構文

DBMS_CUBE_LOG.GET_LOG_SPEC ( )
RETURN VARCHAR2;

戻り値

すべてのアクティブなログのタイプおよびターゲット。

使用上の注意

このファンクションの出力は、SET_LOG_SPECへの入力に使用できます。

例

次の例は、キューブ操作ログ、キューブ拒否レコード・ログおよびキューブ・ディメンション・コンパイル・ログがアクティブであることを示しています。キューブ操作ログは、セッション・トレース・ファイルに格納され、その他のログは表に格納されています。

SELECT dbms_cube_log.get_log_spec FROM dual;

GET_LOG_SPEC
--------------------------------------------------------------------------------
OPERATIONS(TABLE, TRACE) REJECTED_RECORDS(TABLE[DEBUG])

GET_PARAMETERファンクション

このファンクションは、ロギングの様々な要素を制御するオプションの現在の値を戻します。これらのオプションを設定するには、SET_PARAMETERファンクションを使用します。

構文

DBMS_CUBE_LOG.GET_PARAMETER (
LOG_TYPE       IN   BINARY_INTEGER,
LOG_PARAMETER  IN   BINARY_INTEGER )
RETURN BINARY_INTEGER;

パラメータ

表44-6 GET_PARAMETERファンクションのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

詳細は、「ロギング・タイプ」を参照してください。

log_parameter

次のオプションのいずれかです。

- 1: MAX_ERRORS

- 2: FLUSH_INTERVAL

- 3: LOG_FULL_RECORD

- 4: LOG_EVERY_N

- 5: ALLOW_ERRORS

「SET_PARAMETERプロシージャ」を参照してください。

戻り値

指定されたlog_parameterの値。

例

この例は、ロギングが停止する前にキューブ拒否レコード・ログにあるエラーの現在の最大数を示しています。このパラメータは以前はSET_PARAMETERプロシージャで設定されました。

SELECT dbms_cube_log.get_parameter(dbms_cube_log.type_rejected_records, 1) -
"Maximum Records" FROM dual;

Maximum Records
---------------
100

LEVEL_HIGHファンクション

このファンクションは、冗長性レベルHIGHの整数値を戻します。

構文

DBMS_CUBE_LOG.LEVEL_HIGH ()
RETURN BINARY_INTEGER;

戻り値

4

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_LEVELパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「冗長性レベル」を参照してください。

例

このコマンドは、キューブ操作表の冗長性レベルをHIGHに設定します。

EXECUTE dbms_cube_log.enable(dbms_cube_log.type_operations, -
dbms_cube_log.target_table, dbms_cube_log.level_high);

LEVEL_HIGHESTファンクション

このファンクションは、冗長性レベルHIGHESTの整数値を戻します。

構文

DBMS_CUBE_LOG.LEVEL_HIGHEST ()
RETURN BINARY_INTEGER;

戻り値

5

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_LEVELパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「冗長性レベル」を参照してください。

例

このコマンドは、キューブ操作表の冗長性レベルをHIGHESTに設定します。

EXECUTE dbms_cube_log.enable(dbms_cube_log.type_operations, -
dbms_cube_log.target_table, dbms_cube_log.level_highest);

LEVEL_LOWファンクション

このファンクションは、冗長性レベルLOWの整数値を戻します。

構文

DBMS_CUBE_LOG.LEVEL_LOW ()
RETURN BINARY_INTEGER;

戻り値

2

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_LEVELパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「冗長性レベル」を参照してください。

例

このコマンドは、キューブ操作表の冗長性レベルをLOWに設定します。

EXECUTE dbms_cube_log.enable(dbms_cube_log.type_operations, -
dbms_cube_log.target_table, dbms_cube_log.level_low);

LEVEL_LOWESTファンクション

このファンクションは、冗長性レベルLOWESTの整数値を戻します。このレベルは、キューブ・ディメンションおよびキューブの作成に使用された各コマンドのステータス、スレーブ・プロセスの使用およびサマリー・レコードをログに記録します。

構文

DBMS_CUBE_LOG.LEVEL_LOWEST ()
RETURN BINARY_INTEGER;

戻り値

1

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_LEVELパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「冗長性レベル」を参照してください。

例

このコマンドは、キューブ操作表の冗長性レベルをLOWESTに設定します。

EXECUTE dbms_cube_log.enable(dbms_cube_log.type_operations, -
dbms_cube_log.target_table, dbms_cube_log.level_lowest);

LEVEL_MEDIUMファンクション

このファンクションは、冗長性レベルMEDIUMの整数値を戻します。

構文

DBMS_CUBE_LOG.LEVEL_MEDIUM ()
RETURN BINARY_INTEGER;

戻り値

3

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_LEVELパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「冗長性レベル」を参照してください。

例

このコマンドは、キューブ操作表の冗長性レベルをMEDIUMに設定します。

EXECUTE dbms_cube_log.enable(dbms_cube_log.type_operations, -
dbms_cube_log.target_table, dbms_cube_log.level_medium);

SET_LOG_SPECプロシージャ

このプロシージャは、すべてのロギングを入力文字列で指定された値に設定します。

構文

DBMS_CUBE_LOG.SET_LOG_SPEC (
LOG_SPEC       IN   VARCHAR2 );

パラメータ

表44-7 SET_LOG_SPECプロシージャのパラメータ

パラメータ

説明

log_spec

type(target)ペアで構成される文字列。

Typeは次の値を取ることができます。

- OPERATIONS

- REJECTED_RECORDS

- DIMENSION_COMPILE

Targetは次の値を取ることができます。

- TABLE

- TRACE

- FILE

- LOB

使用上の注意

GET_LOG_SPECファンクションは、SET_LOG_SPECに適切に書式設定された文字列を戻します。

例

このPL/SQLプロシージャは、すべてのログを無効にし、無効化されたことを検証してから、キューブ操作ログとキューブ拒否レコード・ログをアクティブにします。

BEGIN
dbms_cube_log.disable;
dbms_output.put_line('Cube Logs: ' || dbms_cube_log.get_log_spec);

dbms_cube_log.set_log_spec('OPERATIONS(TRACE) REJECTED_RECORDS(TABLE)');
dbms_output.put_line('Cube Logs: ' || dbms_cube_log.get_log_spec);
END;
/

プロシージャからの出力は、DISABLEファンクションがすべてのログを非アクティブ化したこと、およびSET_LOG_SPECファンクションが2つのログをアクティブ化したことを検証します。

Cube Logs:

Cube Logs: OPERATIONS(TRACE) REJECTED_RECORDS(TABLE)

SET_PARAMETERプロシージャ

このプロシージャは、ロギングの様々な要素を制御するオプションを設定します。これらのオプションの現在の値を取得するには、GET_PARAMETERファンクションを使用します。

構文

DBMS_CUBE_LOG.SET_PARAMETER (
LOG_TYPE       IN   BINARY_INTEGER,
LOG_PARAMETER  IN   BINARY_INTEGER,
VALUE          IN   BINARY_INTEGER );

パラメータ

表44-8 SET_PARAMETERプロシージャのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

- 4: TYPE_BUILD

詳細は、「ロギング・タイプ」を参照してください。

log_parameter

次のパラメータのいずれかです。

- 1: MAX_ERRORS
キューブ拒否レコード・ログでの拒否レコード数やディメンション・コンパイル・エラー・ログでのコンパイル・エラー数など、ロギングに終了を通知する前のレコードの最大数。

- 2: FLUSH_INTERVAL
レコードをログに書き込む前にバッファする秒数。このパラメータが0のとき、レコードはバッファされずに直接ログに書き込まれます。

- 3: LOG_FULL_RECORD
拒否レコードのロギングを制御します。このパラメータを次の定数のいずれかに設定します。

0: FULL_RECORD_AUTO: 使用できる行IDがない場合に完全なレコードをログに記録します。

1: FULL_RECORD_ALWAYS: 常に完全なレコードをログに記録します。

2: FULL_RECORD_NEVER: 完全なレコードをログに記録しません。

- 4: LOG_EVERY_N
データ保守中、n行ごとに進捗メッセージを入力します。

- 5: ALLOW_ERRORS: ロギング・エラーを表示します。処理が継続されるように、最初エラーはオフにされます。

value

log_parameterの新しい値。

例

このPL/SQLプロシージャは、2つのパラメータを設定してから、GET_PARAMETERファンクションを使用して設定を表示します。

BEGIN
dbms_cube_log.set_parameter(dbms_cube_log.type_rejected_records, 1, 150);
dbms_cube_log.set_parameter(dbms_cube_log.type_rejected_records, 2, 5);

dbms_output.put_line('Max rejected records: ' ||
dbms_cube_log.get_parameter(dbms_cube_log.type_rejected_records, 1));

dbms_output.put_line('Buffer time: ' ||
dbms_cube_log.get_parameter(dbms_cube_log.type_rejected_records, 2) ||
' seconds');
END;
/

プロシージャは、次の情報を表示します。

Max rejected records: 150

Buffer time: 5 seconds

TABLE_CREATEプロシージャ

このプロシージャは、OLAPログのターゲット表を作成します。このプロシージャを使用するには、CREATE TABLE権限が必要です。

TABLE_CREATEも既存のログ表を現行バージョンにアップグレードして、データを保持します。

構文

DBMS_CUBE_LOG.TABLE_CREATE (
LOG_TYPE       IN   BINARY_INTEGER  DEFAULT,
TBLNAME        IN   VARCHAR2        DEFAULT );

パラメータ

表44-9 TABLE_CREATEプロシージャのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

- 4: TYPE_BUILD

詳細は、「ロギング・タイプ」を参照してください。

tblname

ログの表名。これらはデフォルト名です。

- CUBE_OPERATIONS_LOG

- CUBE_REJECTED_RECORDS

- CUBE_DIMENSION_COMPILE

- CUBE_BUILD_LOG

例

この例は、CUBE_OPERATIONS_LOGという名前のキューブ操作ログを作成します。

EXECUTE dbms_cube_log.table_create;

この例は、CUBE_REJECTED_RECORDSという名前のキューブ拒否レコード・ログを作成します。

EXECUTE dbms_cube_log.table_create(dbms_cube_log.type_rejected_records);

次の例は、MY_BUILD_LOGという名前のキューブ作成ログを作成します。

EXECUTE dbms_cube_log.table_create -
(dbms_cube_log.type_build, 'MY_BUILD_LOG');

TARGET_FILEファンクション

このファンクションは、DBMS_CUBE_LOGサブプログラムにあるファイル・ターゲットの整数値を戻します。

構文

DBMS_CUBE_LOG.TARGET_FILE ()
RETURN BINARY_INTEGER;

戻り値

3

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_LEVELパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・ターゲット」を参照してください。

例

このコマンドは、キューブ操作ログ・ファイルを無効にします。

EXECUTE dbms_cube_log.disable -
(dbms_cube_log.type_operations, dbms_cube_log.target_file);

TARGET_LOBファンクション

このファンクションは、LOBターゲットの整数値を戻します。

構文

DBMS_CUBE_LOG.TARGET_LOB ()
RETURN BINARY_INTEGER;

戻り値

4

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_LEVELパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・ターゲット」を参照してください。

例

このコマンドは、キューブ操作ログLOBを無効にします。

EXECUTE dbms_cube_log.disable -
(dbms_cube_log.type_operations, dbms_cube_log.target_lob);

TARGET_TABLEファンクション

このファンクションは、表ターゲットの整数値を戻します。

構文

DBMS_CUBE_LOG.TARGET_TABLE ()
RETURN BINARY_INTEGER;

戻り値

1

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_TARGETパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・ターゲット」を参照してください。

例

このコマンドは、キューブ操作ログ表を無効にします。

EXECUTE dbms_cube_log.disable -
(dbms_cube_log.type_operations, dbms_cube_log.target_table);

TARGET_TRACEファンクション

このファンクションは、トレース・ファイル・ターゲットの整数値を戻します。

構文

DBMS_CUBE_LOG.TARGET_TRACE ()
RETURN BINARY_INTEGER;

戻り値

2

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_TARGETパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・ターゲット」を参照してください。

例

このコマンドは、キューブ操作ログ・トレース・ファイルを無効にします。

EXECUTE dbms_cube_log.disable -
(dbms_cube_log.type_operations, dbms_cube_log.target_trace);

TYPE_BUILDファンクション

このファンクションは、キューブ作成ログの整数値を戻します。

構文

DBMS_CUBE_LOG.TYPE_BUILD ()
RETURN BINARY_INTEGER;

戻り値

4

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_TYPEパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・タイプ」を参照してください。

例

この問合せは、キューブ作成ログのデフォルト名を戻します。

SELECT dbms_cube_log.default_name(dbms_cube_log.type_build) "Log Name" -
FROM dual;

Log Name
-------------------------
CUBE_BUILD_LOG

TYPE_DIMENSION_COMPILEファンクション

このファンクションは、キューブ・ディメンション・コンパイル・ログの整数値を戻します。

構文

DBMS_CUBE_LOG.TYPE_DIMENSION_COMPILE ()
RETURN BINARY_INTEGER;

戻り値

3

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_TYPEパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・タイプ」を参照してください。

例

この問合せは、キューブ・ディメンション・コンパイル・ログのデフォルト名を戻します。

SELECT dbms_cube_log.default_name(dbms_cube_log.type_dimension_compile) -
"Log Name" FROM dual;

Log Name
-------------------------
CUBE_DIMENSION_COMPILE

TYPE_OPERATIONSファンクション

このファンクションは、キューブ操作ログの整数値を戻します。

構文

DBMS_CUBE_LOG.TYPE_OPERATIONS ()
RETURN BINARY_INTEGER;

戻り値

1

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_TYPEパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・タイプ」を参照してください。

例

この問合せは、キューブ・ディメンション・コンパイル・ログのデフォルト名を戻します。

SELECT dbms_cube_log.default_name(dbms_cube_log.type_operations) "Log Name" -
FROM dual;

Log Name
-------------------------
CUBE_OPERATIONS_LOG

TYPE_REJECTED_RECORDSファンクション

このファンクションは、キューブ拒否レコード・ログの整数値を戻します。

構文

DBMS_CUBE_LOG.TYPE_REJECTED_RECORDS ()
RETURN BINARY_INTEGER;

戻り値

2

使用上の注意

DBMS_CUBE_LOGサブプログラムのLOG_TYPEパラメータに相当する2進整数のかわりにこのファンクションを使用します。詳細は、「ロギング・タイプ」を参照してください。

例

この問合せは、キューブ拒否レコード・ログのデフォルト名を戻します。

SELECT dbms_cube_log.default_name(dbms_cube_log.type_rejected_records) -
"Log Name" FROM dual;

Log Name
-------------------------
CUBE_REJECTED_RECORDS

VERSIONファンクション

このファンクションは、特定のログ表のバージョン番号または特定のログ・タイプの現在のバージョン番号を戻します。

構文

DBMS_CUBE_LOG.VERSION (
LOG_TYPE       IN   BINARY_INTEGER  DEFAULT 1,
TBLNAME        IN   VARCHAR2        DEFAULT NULL)
RETURN BINARY_INTEGER;

パラメータ

表44-10 VERSIONファンクションのパラメータ

パラメータ

説明

log_type

次のログ・タイプのいずれかです。

- 1: TYPE_OPERATIONS

- 2: TYPE_REJECTED_RECORDS

- 3: TYPE_DIMENSION_COMPILE

- 4: TYPE_BUILD

詳細は、「ロギング・タイプ」を参照してください。

tblname

バージョンが戻されるログ表の名前。

戻り値

バージョン番号。

例

この例は、キューブ操作ログの現在のバージョンを戻します。

SELECT dbms_cube_log.version FROM dual;

VERSION
----------
2

この例は、CUBE_REJECTED_RECORDSという名前の既存のキューブ拒否レコード・ログのバージョン番号を戻します。

SELECT dbms_cube_log.version(dbms_cube_log.type_rejected_records, -
'CUBE_REJECTED_RECORDS') version FROM dual;

VERSION
----------
2

45 DBMS_DATA_MINING

DBMS_DATA_MININGパッケージは、データ・マイニング・モデルを作成、評価および問い合せるためのアプリケーション・プログラミング・インタフェースです。

関連項目:

- 『Oracle Data Mining概要』

- Oracle Data Miningユーザーズ・ガイド

- 第46章「DBMS_DATA_MINING_TRANSFORM」

- 第113章「DBMS_PREDICTIVE_ANALYTICS」

この章では、次の項目について説明します。

- DBMS_DATA_MININGの使用方法

- 概要

- セキュリティ・モデル

- マイニング機能

- モデル設定

- データ・タイプ

- DBMS_DATA_MININGサブプログラムの要約

DBMS_DATA_MININGの使用方法

この項では、DBMS_DATA_MININGパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- マイニング機能

- モデル設定

- データ・タイプ

概要

Oracle Data Miningでは、監視ありデータ・マイニングと監視なしデータ・マイニングの両方がサポートされています。監視ありデータ・マイニングでは、履歴データに基づいてターゲット値が予測されます。監視なしデータ・マイニングでは、自然なグループが検出され、ターゲットは使用されません。Oracle Data Miningを使用すると、構造化データおよび非構造化テキストをマイニングできます。

監視ありデータ・マイニングには、次の機能があります。

- 分類

- 回帰

- 特徴選択(属性評価)

監視なしデータ・マイニングには、次の機能があります。

- クラスタリング

- 相関

- 特徴抽出

- 異常検出

マイニング・モデルを作成して適用する手順は、使用するデータ・マイニング機能およびアルゴリズムによって異なります。表45-1に、Oracle Data Miningでサポートされているアルゴリズムを示します。

表45-1 Oracle Data Miningのアルゴリズム

アルゴリズム

略称

ファンクション

Apriori

AP

相関

ディシジョン・ツリー

DT

分類

期待値の最大化

EM

クラスタリング

一般化線形モデル

GLM

分類、回帰

k-Means

KM

クラスタリング

最小記述長

MDL

属性評価)

Naive Bayes

NB

分類

Non-Negative Matrix Factorization

NMF

特徴抽出

直交パーティショニング・クラスタリング

O-Cluster

クラスタリング

特異値分解および主成分分析

SVDおよびPCA

特徴抽出

サポート・ベクター・マシン

SVM

分類、回帰、異常検出

Oracle Data Miningでは、分類、回帰、クラスタリングおよび特徴抽出のマイニング機能に対して2つ以上のアルゴリズムがサポートされています。これらの各マイニング機能には、表45-2に示されているデフォルト・アルゴリズムがあります。

表45-2 Oracle Data Miningのデフォルト・アルゴリズム

マイニング機能

デフォルト・アルゴリズム

分類

Naive Bayes

クラスタリング

k-Means

特徴抽出

Non-Negative Matrix Factorization

特徴選択

最小記述長

回帰

サポート・ベクター・マシン

セキュリティ・モデル

DBMS_DATA_MININGパッケージは、ユーザーSYSによって所有され、データベース・インストールの一環としてインストールされます。このパッケージの実行権限は、PUBLICに付与されます。このパッケージ内のルーチンは、実行者権限(現行のユーザーの権限)を使用して実行されます。

DBMS_DATA_MININGパッケージは、Advanced Analytics OptionのOracle Data Miningコンポーネントに使用されるAPIを公開します。独自のスキーマにマイニング・モデルを作成するユーザーは、CREATE TABLEおよびCREATE VIEWシステム権限に加え、CREATE MINING MODELシステム権限も必要です。他のスキーマにマイニング・モデルを作成するユーザーは、対応する表およびビューの作成権限に加え、CREATE ANY MINING MODELシステム権限も必要です。

ユーザーは、独自のスキーマ内に存在するモデルの管理を完全に制御できます。他のスキーマ内のデータ・マイニング・モデルを管理するために必要な追加のシステム権限には、ALTER ANY MINING MODEL、DROP ANY MINING MODEL、SELECT ANY MINING MODEL、COMMENT ANY MINING MODELおよびAUDIT ANYがあります。

マイニング・モデルに対する個別のオブジェクト権限であるALTER MINING MODELおよびSELET MINING MODELを使用して、モデルに対する権限を異なるユーザーに選択的に付与できます。

関連項目:
Oracle Data Miningのセキュリティ機能の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

マイニング機能

データ・マイニング機能は、データ・マイニングに関する特定の種類の問題を解決するための方法です。マイニング機能は、モデルの作成時に指定する必要があります。(「CREATE_MODELプロシージャ」を参照)

表45-3 マイニング機能

値

説明

ASSOCIATION

相関は、記述マイニング機能の一種です。相関モデルによって、データ・セット内に存在する関係とその発生確率が識別されます。

相関モデルでは、Aprioriアルゴリズムが使用されます。

ATTRIBUTE_IMPORTANCE

属性評価は、予測マイニング機能の一種で、特徴選択とも呼ばれます。属性評価モデルによって、特定の結果を予測する際の、属性の相対的な重要度が識別されます。

属性評価モデルでは、最小記述長が使用されます。

CLASSIFICATION

分類は、予測マイニング機能の一種です。分類モデルでは、履歴データを使用して、質的ターゲットが予測されます。

分類モデルでは、Naive Bayes、ディシジョン・ツリー、ロジスティック回帰またはサポート・ベクター・マシンを使用できます。デフォルトはNaive Bayesです。

分類機能は、異常検出にも使用できます。この場合は、NULLターゲットを含むSVMアルゴリズムが使用されます(1クラスSVM)。

CLUSTERING

クラスタリングは、記述マイニング機能の一種です。クラスタリング・モデルによって、データ・セット内の自然なグループが識別されます。

クラスタリング・モデルでは、k-Means、O-Clusterまたは期待値の最大化を使用できます。デフォルトはk-Meansです。

FEATURE_EXTRACTION

特徴抽出は、記述マイニング機能の一種です。特徴抽出モデルによって、モデルのベースとなる最適なデータ・セットが作成されます。

特徴抽出モデルでは、Non-negative Matrix Factorization、特異値分解または主成分分析が使用できます。デフォルトはNon-Negative Matrix Factorizationです。

REGRESSION

回帰は、予測マイニング機能の一種です。回帰モデルでは、履歴データを使用して、量的ターゲットが予測されます。

回帰モデルでは、サポート・ベクター・マシンまたは線形回帰を使用できます。デフォルトはサポート・ベクター・マシンです。

関連項目:
マイニング機能の詳細は、『Oracle Data Mining概要』を参照してください。

モデル設定

Oracle Data Miningは、設定を使用してアルゴリズムおよびモデルに関するその他の特性を指定します。設定には、一般的な設定と、マイニング機能およびアルゴリズムに固有の設定があります。

すべての設定にはデフォルト値があります。モデルの1つ以上の設定を上書きするには、設定表を作成する必要があります。設定表には、表45-4で示す列名およびデータ・タイプを含める必要があります。

表45-4 モデル設定表に必要な列

列名

データ・タイプ

SETTING_NAME

VARCHAR2(30)

SETTING_VALUE

VARCHAR2(4000)

設定表に指定する情報は、モデルの作成時に使用されます。設定表の名前は、CREATE_MODELプロシージャのオプションの引数です。

データ・ディクショナリ・ビューALL_MINING_MODEL_SETTINGSを問い合せると、モデルで使用される設定を検索できます。このビューでは、アクセス権限を持つマイニング・モデルで使用されるモデル設定が表示されます。デフォルトまたはユーザー指定かに関係なく、ビューにはすべての設定値が含まれます。

関連項目:

- 『Oracle Databaseリファレンス』の「ALL_MINING_MODEL_SETTINGS」

- モデル設定の指定の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

アルゴリズム名

ALGO_NAME設定では、モデルのアルゴリズムが指定されます。表45-5に、ALGO_NAME設定の値を示します。

表45-5 アルゴリズム名

ALGO_NAME値

説明

マイニング機能

ALGO_AI_MDL

最小記述長

属性評価

ALGO_APRIORI_ASSOCIATION_RULES

Apriori

相関ルール

ALGO_DECISION_TREE

ディシジョン・ツリー

分類

ALGO_EXPECTATION_MAXIMIZATION

期待値の最大化

クラスタリング

ALGO_GENERALIZED_LINEAR_MODEL

一般化線形モデル

分類、回帰および特徴選択と特徴抽出

ALGO_KMEANS

拡張k_Means

クラスタリング

ALGO_NAIVE_BAYES

Naive Bayes

分類

ALGO_NONNEGATIVE_MATRIX_FACTOR

Non-Negative Matrix Factorization

特徴抽出

ALGO_O_CLUSTER

O-Cluster

クラスタリング

ALGO_SINGULAR_VALUE_DECOMP

特異値分解

特徴抽出

ALGO_SUPPORT_VECTOR_MACHINES

サポート・ベクター・マシン

分類と回帰

関連項目:
アルゴリズムの詳細は、『Oracle Data Mining概要』を参照してください。

自動データ準備

PREP_AUTO設定は、モデルが自動データ準備(ADP)を使用するかどうかを指定します。デフォルトでは、ADPは無効です。

ADPを有効にすると、モデルでは、経験則を使用し、アルゴリズムの要件に応じて作成データを変換します。変換命令は、モデルに格納され、モデルが適用されるたびに再利用されます。変換命令は、モデルのディテールで表示できます(DBMS_DATA_MINING.GET_MODEL_DETAILS_*ファンクション)。

モデルの作成時にxform_listパラメータに追加の変換を指定することによって、自動データ準備を補うことができます。(「CREATE_MODELプロシージャ」を参照)

ADPを使用せず(デフォルト)、CREATE_MODELへのxform_listパラメータに変換を指定しない(デフォルト)場合、ビルド・データ、テスト・データおよびスコアリング・データに個別に自分の変換を実装する必要があります。各データ・セットに同じ変換を実装する場合は特に注意してください。

ADPを使用せず、CREATE_MODELへのxform_listパラメータに変換を指定する場合は、Oracle Data Miningでは、モデルに変換定義が埋め込まれ、作成データと一致するようにテスト・データおよびスコアリング・データが準備されます。

表45-6に、PREP_AUTO設定の値を示します。

表45-6 PREP_AUTO設定

PREP_AUTOの値

説明

PREP_AUTO_OFF

自動データ準備を無効にします(デフォルト)。

PREP_AUTO_ON

自動データ準備を有効にします。

関連項目:
データ変換の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

マイニング機能の設定

表45-7に示されている設定がマイニング機能に適用されます。

表45-7 マイニング機能の設定

マイニング機能

設定名

設定値

説明

相関

ASSO_MAX_RULE_LENGTH

TO_CHAR( 2<= numeric_expr <=20)

相関ルールの最大ルール長。

デフォルトは4です。

相関

ASSO_MIN_CONFIDENCE

TO_CHAR( 0<= numeric_expr <=1)

相関ルールの最小信頼度。

デフォルトは0.1です。

相関

ASSO_MIN_SUPPORT

TO_CHAR( 0<= numeric_expr <=1)

相関ルールの最小支持度。

デフォルトは0.1です。

分類

CLAS_COST_TABLE_NAME

table_name

(ディシジョン・ツリーのみ)モデル作成のアルゴリズムに使用されるコスト・マトリックスを格納する表の名前。コスト・マトリックスは、分類ミスに関連するコストを指定します。

作成時には、ディシジョン・ツリー・モデルのみがコスト・マトリックスを使用できます。適用時には、すべての分類アルゴリズムがコスト・マトリックスを使用できます。

コスト・マトリックス表は、ユーザーが作成します。列の要件については、「ADD_COST_MATRIXプロシージャ」を参照してください。

コストの詳細は、『Oracle Data Mining概要』を参照してください。

分類

CLAS_PRIORS_TABLE_NAME

table_name

(Naive Bayes)作成データとスコアリング・データの分布の差を埋めるために、事前確率を格納する表の名前。

事前確率表は、ユーザーが作成します。列の要件の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。事前確率の詳細は、『Oracle Data Mining概要』を参照してください。

分類

CLAS_WEIGHTS_TABLE_NAME

table_name

(GLMおよびSVMのみ)SVM分類およびGLMロジスティック回帰モデルの、各ターゲット値に関する重み情報を格納する表の名前。アルゴリズムでは、重みを使用して、より高い重み付けのクラスを優先するようにモデルにバイアスをかけます。

クラスの重み表は、ユーザーが作成します。列の要件の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。クラスの重みの詳細は、『Oracle Data Mining概要』を参照してください。

クラスタリング

CLUS_NUM_CLUSTERS

TO_CHAR( numeric_expr >=1)

クラスタリング・アルゴリズムで生成されるリーフ・クラスタの最大数。このアルゴリズムでは、データによって、より少ない数のクラスタが返される場合があります。

通常、拡張k-Meansでは、個別のデータ・ポイントの数の方が多ければ、CLUS_NUM_CLUSTERSで指定された数に正確に一致する数のクラスタが生成されます。

期待値の最大化(EM)では、データによって、CLUS_NUM_CLUSTERSで指定されているよりも少ない数のクラスタが返される場合があります。EMによって返されるクラスタ数は、アルゴリズム固有の設定で制御しているコンポーネント数を超えることはできません。(表45-10「データ準備と分析用の期待値の最大化設定」を参照)。これらの設定によっては、コンポーネントよりもクラスタの数が少ない場合があります。コンポーネントのクラスタリングが無効な場合、クラスタの数はコンポーネントの数に等しくなります。

EMでは、CLUS_NUM_CLUSTERSのデフォルト値は、システムによって決定されます。k-MeansとO-CLusterでは、デフォルトは10になります。

特徴抽出

FEAT_NUM_FEATURES

TO_CHAR( numeric_expr >=1)

特徴抽出モデルで抽出される特徴の数。

アルゴリズムによって、データからデフォルトが見積もられます。

関連項目:
マイニング機能の詳細は、『Oracle Data Mining概要』を参照してください。

グローバルな設定

表45-8の構成の設定はあらゆるタイプのモデルに適用できますが、現在は特定のアルゴリズムに対してのみ実装されています。

表45-8 グローバルな設定

設定名

設定値

説明

ODMS_APPROXIMATE_COMPUTATION

ODMS_APPR_COMP_ENABLE

ODMS_APPR_COMP_DISABLE

(EM、GLMおよびSVD)パフォーマンスを向上させるために、アルゴリズムで近似計算を使用するかどうかの指定。

EMでは、数多くのコンポーネントを持つ大規模なモデルや、多くの列を含むデータ・セットが近似計算に適しています。近似計算では、このモデルに最大の影響を与える可能性があるパラメータでの学習を制限する、ローカライズされたパラメータの最適化が使用されます。

SVDでは、多くの場合、数多くの列を含むデータ・セットが近似計算に適しています。近似処理の低ランク分解では、適切な計算コストで十分な結果を得られます。SVDのODMS_APPROXIMATE_COMPUTATIONを無効にすると、近似処理はデータの特徴に基づいて行われます。2500個の属性(特徴の最大許容数)を超えるデータ・セットでは、近似分解のみが実行可能です。2500個の属性を超えるデータ・セットで近似計算を無効にすると、例外が発生します。

GLMでは、数多くの行を持つデータ密度の高い(データがまばらではない)データ・セットが近似処理に適しています。

デフォルトは、システムによって決定されます。

ODMS_ITEM_ID_COLUMN_NAME

column_name

(相関ルールのみ)トランザクションに項目を含む列の名前。この設定が指定されていると、アルゴリズムは、2つの列で構成されたネイティブ・トランザクション形式でデータが表されると想定します。

- ケースID: 質的または量的のいずれか

- 項目ID: 質的または量的のいずれか(ODMS_ITEM_ID_COLUMN_NAMEによって指定)

トランザクション・データの典型的な例としては、多くの項目を含む可能性があるバスケットがケースによって表されるマーケット・バスケット・データがあげられます。各項目は個別の行に格納され、1つのケースを表すのに多くの行が必要になる場合があります。ケースID値は各行を一意に識別しません。トランザクション・データはマルチレコード・ケース・データとも呼ばれます。

通常、相関ルールはトランザクション・データとともに使用されますが、単一レコード・ケース・データにも適用できます(他のアルゴリズムと同様)。

単一レコード・ケース・データおよびマルチレコード・ケース・データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

ODMS_ITEM_VALUE_COLUMN_NAME

column_name

(相関ルールのみ)トランザクションの各項目に関連付けられている値を含む列の名前。この設定は、データがネイティブ・トランザクション形式で表されることを示す値がODMS_ITEM_ID_COLUMN_NAMEに指定されている場合にのみ使用されます。

ODMS_ITEM_VALUE_COLUMN_NAMEが指定されている場合、アルゴリズムは、生成データが次の3つの列で構成されていると想定します。

- ケースID: 質的または量的のいずれか

- 項目ID: 質的または量的のいずれか(ODMS_ITEM_ID_COLUMN_NAMEによって指定)

- 項目値: 質的または量的のいずれか(ODMS_ITEM_VALUE_COLUMN_NAMEによって指定)

この項目値列では、(リンゴ3個などの)項目数、(マッキントッシュのリンゴなどの)項目タイプなどの情報を指定できます。

ODMS_MISSING_VALUE_TREATMENT

ODMS_MISSING_VALUE_MEAN_MODE

ODMS_MISSING_VALUE_DELETE_ROW

(GLMのみ)トレーニング・データでの欠損値を処理する方法。この設定は、スコアリング・データに影響を与えません。デフォルト値はODMS_MISSING_VALUE_MEAN_MODEです。これにより、トレーニング・データにおける欠損数値が平均値に、トレーニング・データにおける質的欠損値が最頻値に置換されます。

Oracle Data Miningでは、欠損値は、作成時と適用時に、平均値(量的属性)または最頻値(質的属性)に置き換えられます。ODMS_MISSING_VALUE_TREATMENTをODMS_MISSING_VALUE_DELETE_ROWに設定すると、トレーニング・データでのこの動作を上書きできます。ODMS_MISSING_VALUE_TREATMENTをODMS_MISSING_VALUE_DELETE_ROWに設定すると、欠損値を含むトレーニング・データの行は削除されます。ただし、スコアリング・データにおいてこのような欠損値の処理を行うには、明示的に変換を実行する必要があります。

値ODMS_MISSING_VALUE_DELETE_ROWは、ネストした列を含まない表でのみ有効です。ネストしたデータでこの値を使用すると、例外が発生します。

ODMS_ROW_WEIGHT_COLUMN_NAME

column_name

(GLMのみ)行の重み要素を含むトレーニング・データの列の名前。列のデータ・タイプはNUMBERであることが必要です。

行の重みは、特定の構成が複数回繰り返される試用を設計する場合のように、繰返し行のコンパクトな表現として使用できます。また、行の重みは、モデルの作成中に特定の行を強調するためにも使用できます。たとえば、より新しい行を優先し、古い可能性のあるデータを避けるようにバイアスをかける場合に使用できます。

ODMS_TEXT_POLICY_NAME

CTX_DDL.CREATE_POLICYを使用して作成された、Oracle Textポリシーの名前。

非構造化テキストからの個々のトークンの抽出方法に影響を与えます。

CTX_DDL.CREATE_POLICYの詳細は、『Oracle Textリファレンス』を参照してください。

ODMS_TEXT_MAX_FEATURES

1 <= value <= 100000

CREATE_MODELに渡されたドキュメント・セットで使用可能な、すべてのテキスト属性の個別機能の最大数。デフォルトは3000です。

関連項目:

GLMの詳細は、『Oracle Data Mining概要』を参照してください。

相関ルールの詳細は、『Oracle Data Mining概要』を参照してください。

非構造化テキストのマイニングの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

アルゴリズムの設定: ディシジョン・ツリー

これらの設定は、ディシジョン・ツリー・アルゴリズムの動作を構成します。

表45-9 ディシジョン・ツリーの設定

設定名

設定値

説明

TREE_IMPURITY_METRIC

TREE_IMPURITY_ENTROPY

TREE_IMPURITY_GINI

ディシジョン・ツリーのツリー不純メトリック。

ツリー・アルゴリズムでは、各ノードでのデータの分岐に最適なテスト質問が検索されます。最適な分岐および分岐値は、ノードのエンティティに対するターゲット値の同質性(純度)が最大限に高くなるものです。純度は、メトリックに従って測定します。ディシジョン・ツリーでは、純度メトリックとしてジニ(TREE_IMPURITY_GINI)またはエントロピ(TREE_IMPURITY_ENTROPY)のいずれかを使用できます。デフォルトではジニが使用されます。

TREE_TERM_MAX_DEPTH

TO_CHAR( 2<= numeric_expr <=20)

分岐の条件: ツリーの最大深度(ルート・ノードとリーフ・ノードとの間(リーフ・ノードを含む)の最大ノード数)。

デフォルトは7です。

TREE_TERM_MINPCT_MODE

TO_CHAR( 0<= numeric_expr <=10)

この数値より小さいレコードを子に含めることはできません。この数値は、トレーニング行の割合で表現されます。

デフォルトは0.05で、0.05%を表します。

TREE_TERM_MINPCT_SPLIT

TO_CHAR( 0 <= numeric_expr <=20)

分岐の条件: 親ノードのレコードの最小数で、モデルのトレーニングに使用される総レコード数の割合で表現されます。レコード数がこの値よりも少ない場合、分岐は試行されません。

デフォルトは0.1で、0.1%を表します。

TREE_TERM_MINREC_NODE

TO_CHAR( numeric_expr >=0)

この数値より小さいレコードは、子に含めることができません。

デフォルトは10です。

TREE_TERM_MINREC_SPLIT

TO_CHAR( numeric_expr >=0)

分岐の条件: 値として表現される親ノードのレコードの最小数。レコード数がこの値よりも少ない場合、分岐は試行されません。

デフォルトは20です。

関連項目:
ディシジョン・ツリーの詳細は、『Oracle Data Mining概要』を参照してください。

アルゴリズム設定: 期待値の最大化

次の表に示されている設定が期待値の最大化アルゴリズムの動作を構成します。

- 表45-10「データ準備と分析用の期待値の最大化設定」

- 表45-11「学習用の期待値の最大化設定」

- 表45-12「コンポーネント・クラスタリング用の期待値の最大化設定」

- 表45-13「クラスタ統計用の期待値の最大化設定」

関連項目:
期待値の最大化の詳細は、『Oracle Data Mining概要』を参照してください。

表45-10 データ準備と分析用の期待値の最大化設定

設定名

設定値

説明

EMCS_ATTRIBUTE_FILTER

EMCS_ATTR_FILTER_ENABLE

EMCS_ATTR_FILTER_DISABLE

モデルに相関していない属性を含めるかどうかの指定。EMCS_ATTRIBUTE_FILTERが有効な場合、相関していない属性は含められません。

注意: この設定は、ネストしていない属性にのみ適用されます。

デフォルトは、システムによって決定されます。

EMCS_MAX_NUM_ATTR_2D

TO_CHAR( numeric_expr >=1)

モデルに含める相関属性の最大数。

注意: この設定は、ネストしていない属性(2D)にのみ適用されます。

デフォルトは50です。

EMCS_NUM_DISTRIBUTION

EMCS_NUM_DISTR_BERNOULLI

EMCS_NUM_DISTR_GAUSSIAN

EMCS_NUM_DISTR_SYSTEM

量的属性をモデリングする分布。入力表または入力ビューの全体に適用され、属性ごとの指定は許可されません。

オプションには、ベルヌーイ分布、ガウス分布またはシステム決定の分布が含まれます。ベルヌーイ分布やガウス分布を選択した場合、すべての量的属性が同じタイプの分布を使用してモデリングされます。システム決定の分布の場合は、個々の属性で、データに応じて異なる分布(ベルヌーイ分布またはガウス分布)を使用することができます。

デフォルトはEMCS_NUM_DISTR_SYSTEMです。

EMCS_NUM_EQUIWIDTH_BINS

TO_CHAR( 1 <numeric_expr <=255)

量的列のクラスタ統計を収集するために使用される等幅ビンの数。

デフォルトは11です。

EMCS_NUM_PROJECTIONS

TO_CHAR( numeric_expr >=1)

ネストした各列で使用される予測の数を指定します。指定した数の予測よりも列の個別属性の数が少ない場合、データの予測は行われません。この設定は、すべてのネストしている列に適用されます。

デフォルトは50です。

EMCS_NUM_QUANTILE_BINS

TO_CHAR( 1 <numeric_expr <=255)

複数値のベルヌーイ分布において、量的列のモデリングに使用されるクオンタイル・ビンの数を指定します。

デフォルトは、システムによって決定されます。

EMCS_NUM_TOPN_BINS

TO_CHAR( 1 <numeric_expr <=255)

複数値のベルヌーイ分布において、質的列のモデリングに使用される上位Nビンの数を指定します。

デフォルトは、システムによって決定されます。

表45-11 学習用の期待値の最大化設定

設定名

設定値

説明

EMCS_CONVERGENCE_CRITERION

EMCS_CONV_CRIT_HELDASIDE

EMCS_CONV_CRIT_BIC

EMの収束基準。収束基準は、取り分けておいたデータ・セットやベイズ情報量基準に基づいている場合があります。

デフォルトは、システムによって決定されます。

EMCS_LOGLIKE_IMPROVEMENT

TO_CHAR( 0 < numeric_expr < 1)

収束基準が取り分けておいたデータ・セットに基づいている場合(EMCS_CONVERGENCE_CRITERION = EMCS_CONV_CRIT_HELDASIDE)、この設定では、モデルに新しいコンポーネントを追加するために必要とされる対数尤度ファンクションの値の改善率を指定します。

デフォルト値は0.001です。

EMCS_NUM_COMPONENTS

TO_CHAR( numeric_expr >=1)

モデル内のコンポーネントの最大数。アルゴリズムによってコンポーネントの数(尤度関数の改善度または正則化に基づいた指定された最大数まで)が自動的に決定されます。

コンポーネントの数は、クラスタの数以上である必要があります。

デフォルトは20です。

EMCS_NUM_ITERATIONS

TO_CHAR( numeric_expr >=1)

EMアルゴリズムにおける最大反復数を指定します。

デフォルトは100です。

表45-12 コンポーネント・クラスタリング用の期待値の最大化設定

設定名

設定値

説明

EMCS_CLUSTER_COMPONENTS

EMCS__CLUSTER_COMP_ENABLE

EMCS_CLUSTER_COMP_DISABLE

EMコンポーネントの上位レベルのクラスタへのグループ化を有効または無効にします。無効にすると、コンポーネント自体がクラスタとして扱われます。

コンポーネント・クラスタリングを有効にすると、SQL CLUSTERファンクションを介したモデル・スコアリングによって、より上位のクラスタに対する割当てが実行されます。クラスタリングを無効にすると、CLUSTERファンクションによって、元のコンポーネントに対する割当てが実行されます。

デフォルトはEMCS_CLUSTER_COMP_ENABLEです。

EMCS_CLUSTER_THRESH

TO_CHAR( numeric_expr >=1)

EMコンポーネントのクラスタリングを制御する相違点のしきい値。相違点メジャーがしきい値よりも少ない場合、複数のコンポーネントは1つのクラスタに結合されます。

しきい値が低いと、よりコンパクトな多くのクラスタが作成されます。しきい値が高いと、より広く散らばった少数のクラスタが作成されます。

デフォルトは2です。

EMCS_LINKAGE_FUNCTION

EMCS_LINKAGE_SINGLE

EMCS_LINKAGE_AVERAGE

EMCS_LINKAGE_COMPLETE

凝集クラスタリング・ステップにおけるリンケージ機能の指定を許可します。

EMCS_LINKAGE_SINGLEでは、ブランチ内の最短距離が使用されます。クラスタは、大きくて特異な形状をしている傾向があります。

EMCS_LINKAGE_AVERAGEでは、ブランチ内の平均距離が使用されます。連鎖効果は少なく、クラスタはよりコンパクトなものになります。

EMCS_LINKAGE_COMPLETEでは、ブランチ内の最大距離が使用されます。クラスタは小さく、強固なコンポーネント・オーバーラップを必要とします。

デフォルトはEMCS_LINKAGE_SINGLEです。

表45-13 クラスタ統計用の期待値の最大化設定

設定名

設定値

説明

EMCS_CLUSTER_STATISTICS

EMCS_CLUS_STATS_ENABLE

EMCS_CLUS_STATS_DISABLE

クラスタ(セントロイド、ヒストグラムおよびルール)の記述統計の収集を有効または無効にします。統計を無効にすると、モデルのサイズが縮小され、GET_MODEL_DETAILS_EMは分類(階層)とクラスタ数のみを戻します。

デフォルトはEMCS_CLUS_STATS_ENABLEです。

EMCS_MIN_PCT_ATTR_SUPPORT

TO_CHAR( 0 < numeric_expr < 1)

クラスタ・ルールに属性を含めるときに必要とされる最小限のサポート。このサポートでは、クラスタに割り当てられたデータ行のうち、属性がnull以外の値である必要があるものの割合を示します。

デフォルトは0.1です。

アルゴリズムの設定: 一般化線形モデル

これらの設定は、一般化線形モデルの動作を構成します。

表45-14 GLMの設定

設定名

設定値

説明

GLMS_CONF_LEVEL

TO_CHAR(0< numeric_expr <1)

信頼区間の信頼水準。

デフォルトの信頼水準は0.95です。

GLMS_DIAGNOSTICS_TABLE_NAME

table_name

GLMに関する行レベルの診断情報を含む表の名前。この表は、モデルの作成中に作成されます。指定する表の名前を既存の表の名前にすることはできません。

診断表を使用する場合は、そのモデルのケースIDを指定する必要があります。(CREATE_MODELプロシージャを参照してください。)診断表名を指定し、モデルのケースIDを指定しない場合は、例外が発生します。

GLM診断の詳細は、『Oracle Data Mining概要』を参照してください。

GLMS_FTR_ACCEPTANCE

GLMS_FTR_ACCEPTANCE_STRICT

GLMS_FTR_ACCEPTANCE_RELAXED

特徴許容について、厳格なアプローチと柔軟なアプローチのどちらを取るかを示します。厳格なアプローチでは、誤った特徴の抽出を防げますが、特に少量のデータ・サンプルにおいて真の特徴のいくつかを見落としてしまう可能性があります。柔軟なアプローチでは、真の特徴が見落とされることはないかもしれませんが、誤った特徴も含めてしまう可能性があります。

特徴の選択または生成を有効にすると、アルゴリズムでは、特徴許容の厳格なアプローチまたは柔軟なアプローチがデータに基づいて自動的に選択されます。

GLMS_FTR_GEN_METHOD

GLMS_FTR_GEN_QUADRATIC

GLMS_FTR_GEN_CUBIC

特徴生成が二次式または三次式のどちらであるかを示します。

特徴の生成を有効にすると、アルゴリズムでは、最適な特徴生成方式がデータに基づいて自動的に選択されます。

GLMS_FTR_GENERATION

GLMS_FTR_GENERATION_ENABLE

GLMS_FTR_GENERATION_DISABLE

GLMに対して特徴生成を有効にするかどうかの指定。デフォルトでは、特徴生成は無効です。

注意: 特徴生成は、特徴選択が有効な場合にのみ有効です。

GLMS_FTR_IDENTIFICATION

GLMS_FTR_IDENT_QUICK

GLMS_FTR_IDENT_COMPLETE

GLMがモデルの機能を特定するために内部サンプリングを使用するかどうか。サンプリングを使用すると、GLMは削減された行セットで処理を行うので、モデルの機能の特定が速くなります。GLMがデータ・セットのすべての行を処理すると、機能の特定処理に長時間かかることがあります。

デフォルトでは、GLMは、サンプリングを行うかどうかを選択し、トレーニング・データ(行数と属性を含む)の特性に基づいてサンプル・サイズを特定します。

GLMS_FTR_SEL_CRIT

GLMS_FTR_SEL_AIC

GLMS_FTR_SEL_SBIC

GLMS_FTR_SEL_RIC

GLMS_FTR_SEL_ALPHA_INV

モデルに特徴を追加する際の、特徴選択のペナルティ基準。

特徴選択を有効にすると、アルゴリズムでは、ペナルティ基準がデータに基づいて自動的に選択されます。

GLMS_FTR_SELECTION

GLMS_FTR_SELECTION_ENABLE

GLMS_FTR_SELECTION_DISABLE

GLMに対して特徴選択を有効にするかどうかの指定。

デフォルトでは、特徴選択は無効です。

GLMS_MAX_FEATURES

TO_CHAR(0 < numeric_expr <= 2000)

特徴選択を有効にすると、この設定では、最終モデルで選択可能な特徴の最大数が指定されます。

デフォルトでは、十分なメモリーを確保するために、アルゴリズムによって特徴の数が制限されます。

GLMS_PRUNE_MODEL

GLMS_PRUNE_MODEL_ENABLE

GLMS_PRUNE_MODEL_DISABLE

最終モデルの特徴をプルーニングするかどうかの指定。プルーニングは、線形回帰ではt統計に、ロジスティック回帰ではwald統計に基づいて行われます。すべての特徴が全データに対して統計的な意味付けを持つまで、これらの特徴はループ処理でプルーニングされます。

特徴選択を有効にすると、アルゴリズムでは、プルーニングを実行するかどうかがデータに基づいて自動的に決定されます。

GLMS_REFERENCE_CLASS_NAME

target_value

バイナリ・ロジスティック回帰モデルで参照クラスとして使用されるターゲット値。その他のクラスに対しては確率が生成されます。

デフォルトでは、参照クラスの場合、最も普及率の高い値(ほとんどのケース)がアルゴリズムによって選択されます。

GLMS_RIDGE_REGRESSION

GLMS_RIDGE_REG_ENABLE

GLMS_RIDGE_REG_DISABLE

リッジ回帰を使用するかどうかの指定。リッジは、回帰と分類の両方のマイニング機能に適用されます。

リッジを有効にすると、PREDICTION_BOUNDS SQLファンクションによって予測限界は生成されません。

デフォルトでは、リッジを使用するかどうかはアルゴリズムによって決定されます。

注意: リッジは、特徴選択が指定されていない場合または明示的に無効にされている場合にのみ有効です。リッジ回帰と特徴選択を両方とも明示的に有効にすると、例外が発生します。

GLMS_RIDGE_VALUE

TO_CHAR(numeric_expr > 0)

リッジ・パラメータ値。この設定は、アルゴリズムでリッジ回帰の使用が構成されている場合にのみ使用されます。

リッジ回帰がアルゴリズムによって内部的に有効になっている場合、リッジ・パラメータはアルゴリズムによって決定されます。

GLMS_SELECT_BLOCK

GLMS_SELECT_BLOCK_ENABLE

GLMS_SELECT_BLOCK_DISABLE

質的属性の全グループ値をモデルに一度に追加するか、それとも一度に1つずつ追加するかを示します。質的属性は、バイナリ(展開された)属性の集合として表されます。GLMS_SELECT_BLOCKを有効にすると、これらの値は一度に追加されます。

特徴選択を有効にすると、アルゴリズムでは、展開された質的値を一度に追加するか、それとも一度に1つずつ追加するかが自動的に決定されます。

GLMS_VIF_FOR_RIDGE

GLMS_VIF_RIDGE_ENABLE

GLMS_VIF_RIDGE_DISABLE

(線形回帰のみ)リッジが使用されたときにVariance Inflation Factor(VIF)統計を作成するかどうかの指定。

VIF統計は、リッジ回帰を明示的に有効にした場合(GLMS_RIDGE_REGRESSION = GLMS_RIDGE_REG_ENABLE)にのみ作成されます。リッジを明示的に有効にした後でVIFをリクエストすると、十分なメモリーがある場合は、VIFがアルゴリズムによって作成されます。

デフォルトでは、リッジを有効にするとVIFは生成されません。

関連項目:
GLMの詳細は、『Oracle Data Mining概要』を参照してください。

アルゴリズムの設定: k-Means

これらの設定は、k-Meansアルゴリズムの動作を構成します。

表45-15 k-Meansの設定

設定名

設定値

説明

KMNS_BLOCK_GROWTH

TO_CHAR(1<numeric_expr<=5)

クラスタ・データを保持するために割り当てられるメモリーの増加因数。

デフォルトのブロック増加因数は2です。

KMNS_CONV_TOLERANCE

TO_CHAR(0<numeric_expr<=0.5)

k-Meansの最小収束許容差。最小収束許容値を満たすか、KMNS_ITERATIONSで指定された最大反復数に到達するまで、アルゴリズムは反復します。

収束許容値が減少すると、ソリューションはより正確になりますが、実行時間が長くなることがあります。

デフォルトの収束許容差は、0.01です。

KMNS_DISTANCE

KMNS_COSINE

KMNS_EUCLIDEAN

KMNS_FAST_COSINE

k-Meansの距離関数。

デフォルトの距離関数はユークリッドです。

KMNS_ITERATIONS

TO_CHAR(positive_numeric_expr)

k-Meansの最大反復数。最大反復数に到達するか、KMNS_CONV_TOLERANCEで指定された最小収束許容値を満たすまで、アルゴリズムは反復します。

デフォルトの反復回数は3です。

KMNS_MIN_PCT_ATTR_SUPPORT

TO_CHAR(0<=numeric_expr<=1)

クラスタのルール記述にその属性を含めるために必要な、非NULL値でなければならない属性値の最小パーセント。

データがまばらであったり多くの欠損値を含んでいる場合、最小支持度が高すぎると非常に短いルールまたは空のルールになる可能性があります。

デフォルトの最小支持度は、0.1です。

KMNS_NUM_BINS

TO_CHAR(numeric_expr>0)

k-Meansで生成される属性ヒストグラムでのビンの数。各属性のビンの境界は、トレーニング・データ・セット全体でグローバルに計算されます。ビニングの方法は等幅です。すべての属性でビンの数は同じですが、単一の値を持つ属性では、ビンは1つのみです。

デフォルトのヒストグラム・ビン数は10です。

KMNS_SPLIT_CRITERION

KMNS_SIZE

KMNS_VARIANCE

k-Meansの分割基準。分割基準は、新しいk-Meansクラスタの初期化を制御します。アルゴリズムがバイナリ・ツリーを作成し、同時に新しいクラスタを1つ追加します。

分割基準がサイズに基づいている場合、新しいクラスタは現在最も大きなクラスタのある領域に置かれます。分割基準が分散値に基づいている場合、新しいクラスタは最も拡大されたクラスタの領域に置かれます。

デフォルトの分割基準は分散値です。

関連項目:
k-Meansの詳細は、『Oracle Data Mining概要』を参照してください。

アルゴリズムの設定: Naive Bayes

これらの設定は、Naive Bayesアルゴリズムの動作を構成します。

表45-16 Naive Bayesの設定

設定名

設定値

説明

NABS_PAIRWISE_THRESHOLD

TO_CHAR( 0<= numeric_expr <=1)

NBアルゴリズムでの組しきい値。

デフォルトは0.01です。

NABS_SINGLETON_THRESHOLD

TO_CHAR( 0<= numeric_expr <=1)

NBアルゴリズムでの単一しきい値。

デフォルトは0.01です。

関連項目:
Naive Bayesの詳細は、『Oracle Data Mining概要』を参照してください。

アルゴリズムの設定: Non-Negative Matrix Factorization

これらの設定は、Non-Negative Matrix Factorizationの動作を構成します。

データ・ディクショナリ・ビュー*_MINING_MODEL_SETTINGS(接頭辞ALL、USERまたはDBAを使用)を問い合せると、モデルの設定値を確認できます。*_MINING_MODEL_SETTINGSの詳細は、『Oracle Databaseリファレンス』を参照してください。

表45-17 NMFの設定

設定名

設定値

説明

NMFS_CONV_TOLERANCE

TO_CHAR(0< numeric_expr <=0.5)

NMFアルゴリズムでの収束許容値。

デフォルトは0.05です。

NMFS_NONNEGATIVE_SCORING

NMFS_NONNEG_SCORING_ENABLE

NMFS_NONNEG_SCORING_DISABLE

スコアリング結果で負数を許可するかどうか。NMFS_NONNEG_SCORING_ENABLEに設定すると、負の素性値が0(ゼロ)に置き換えられます。NMFS_NONNEG_SCORING_DISABLEに設定すると、負の素性値が許可されます。

デフォルトはNMFS_NONNEG_SCORING_ENABLEです。

NMFS_NUM_ITERATIONS

TO_CHAR(1 <= numeric_expr <=500)

NMFアルゴリズムの反復回数。

デフォルトは50です。

NMFS_RANDOM_SEED

TO_CHAR(numeric_expr)

NMFアルゴリズムのランダム・シード。

デフォルトは–1です。

関連項目:
NMFの詳細は、『Oracle Data Mining概要』を参照してください。

アルゴリズムの設定: O-Cluster

これらの設定は、O-Clusterアルゴリズムの動作を構成します。

表45-18 O-CLusterの設定

設定名

設定値

説明

OCLT_MAX_BUFFER

TO_CHAR(numeric_expr >0)

O-Clusterのバッファ・サイズ。

デフォルトは50,000です。

OCLT_SENSITIVITY

TO_CHAR(0 <=numeric_expr <=1)

新しいクラスタを分割するために必要な最大密度を指定する割合。この割合は、全体の均一密度と関連しています。

デフォルトは0.5です。

関連項目:
O-Clusterの詳細は、『Oracle Data Mining概要』を参照してください。

アルゴリズム定数と設定: 特異値分解

次の定数は、特異値分解アルゴリズムの動作に影響を与えます。

表45-19 特異値分解定数

定数名

定数値

説明

SVDS_MAX_NUM_FEATURES

2500

SVDによってサポートされている特徴の最大数。

これらの設定は、特異値分解アルゴリズムの動作を構成します。

表45-20 特異値分解設定

設定名

設定値

説明

SVDS_U_MATRIX_OUTPUT

SVDS_U_MATRIX_ENABLE

SVDS_U_MATRIX_DISABLE

SVDによって作成されたUマトリックスを永続化するかどうかの指定。

SVDのUマトリックスには、ビルド・データの行と同数の行があります。大規模なモデルの作成を回避するため、Uマトリックスは、SVDS_U_MATRIX_OUTPUTが有効な場合にのみ永続化されます。

SVDS_U_MATRIX_OUTPUTを有効にした場合、ビルド・データにケースIDを含める必要があります。ケースIDが存在しないときにUマトリックスがリクエストされると、例外が発生します。

デフォルトはSVDS_U_MATRIX_DISABLEです。

SVDS_SCORING_MODE

SVDS_SCORING_SVD

SVDS_SCORING_PCA

モデルでSVDスコアリングとPCAスコアリングのどちらを使用するかの指定。

ビルド・データがSVDでスコアリングされた場合、Uマトリックスと同じ予測になります。ビルド・データがPCAでスコアリングされた場合、UマトリックスとSマトリックスの積が予測になります。

デフォルトはSVDS_SCORING_SVDです。

関連項目:
『Oracle Data Mining概要』

アルゴリズムの設定: サポート・ベクター・マシン

これらの設定は、サポート・ベクター・マシン・アルゴリズムの動作を構成します。

表45-21 SVMの設定

設定名

設定値

説明

SVMS_ACTIVE_LEARNING

SVMS_AL_DISABLE

SVMS_AL_ENABLE

能動学習を有効にするか無効にするかの設定。デフォルトでは、能動学習は有効になっています。

能動学習を有効にすると、SVMアルゴリズムでは能動学習を使用して、サイズが縮小されたモデルが作成されます。能動学習を無効にすると、SVMアルゴリズムでは標準モデルが作成されます。

SVMS_COMPLEXITY_FACTOR

TO_CHAR(numeric_expr >0)

SVMアルゴリズム(分類と回帰の両方)の複雑度の値。

デフォルト値は、アルゴリズムによってデータから概算されます。

SVMS_CONV_TOLERANCE

TO_CHAR(numeric_expr >0)

SVMアルゴリズムでの収束許容値。

デフォルトは0.001です。

SVMS_EPSILON

TO_CHAR(numeric_expr >0)

SVM回帰のイプシロン係数の値。

デフォルト値は、アルゴリズムによってデータから概算されます。

SVMS_KERNEL_CACHE_SIZE

TO_CHAR(numeric_expr >0)

SVMアルゴリズムのカーネル・キャッシュ・サイズの値。ガウス・カーネルにのみ適用されます。

デフォルトは50000000バイトです。

SVMS_KERNEL_FUNCTION

svm_gaussian

svms_linear

サポート・ベクター・マシンのカーネル。デフォルトは、トレーニング・データでの属性の数に基づいて、アルゴリズムによって決定されます。多数の属性がある場合はアルゴリズムでは線形カーネルが使用されますが、そうでない場合は、非線形(ガウス)カーネルが使用されます。

属性の数は、トレーニング・データの列の数とは一致しません。アルゴリズムによって、質的属性が2項の量的属性に展開されます。また、Oracle Data Miningでは、ネストした列の各行が別々の属性として処理されます。SVMでは、カーネル機能の選択時にこれらの要素が考慮されます。

SVMS_OUTLIER_RATE

TO_CHAR(0< numeric_expr <1)

トレーニング・データでの目標となる外れ値率。1クラスSVMモデル(異常検出)に対してのみ有効です。

デフォルトは1です。

SVMS_STD_DEV

TO_CHAR(numeric_expr >0)

SVMアルゴリズムの標準偏差の値。

これは、ガウス・カーネルにのみ適用されます。

デフォルト値は、アルゴリズムによってデータから概算されます。

関連項目:
SVMの詳細は、『Oracle Data Mining概要』を参照してください。

データ・タイプ

DBMS_DATA_MININGパッケージでは、モデル属性に関する情報を格納するためにオブジェクト・データ・タイプが定義されます。これらのタイプの大部分は、テーブル・ファンクションGET_nによって戻され、nは戻す情報のタイプを表します。これらのファンクションは、モデル名を入力に使用し、要求された情報を行のコレクションとして戻します。GETファンクションのリストは、「DBMS_DATA_MININGサブプログラムの要約」を参照してください。

DBMS_DATA_MININGパッケージでは、トランザクション・データをマイニングするためのオブジェクト・データ・タイプも定義されています。これらのタイプはDM_NESTED_nと呼ばれており、ここでnはネストした属性のOracleデータ・タイプを識別します。ネストしたデータのマイニングの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

すべてのテーブル・ファンクションでパイプライン出力が使用され、出力の各行がモデルの記憶域から読み取られながら実体化されるため、表オブジェクトが完全に生成されるまで待機する必要がありません。パイプライン・テーブル・ファンクションの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

表45-22に、データ・マイニングのオブジェクト・データ・タイプを示します。

表45-22 DBMS_DATA_MININGのデータ・タイプの要約

データ・タイプ

説明

DM_CENTROID

クラスタの重心。

DM_CENTROIDS

DM_CENTROIDのコレクション。DM_CLUSTERのメンバー。

DM_CHILD

クラスタの子ノード。

DM_CHILDREN

DM_CHILDのコレクション。DM_CLUSTERのメンバー。

DM_CLUSTER

クラスタ。クラスタには、DM_PREDICATES、DM_CHILDREN、DM_CENTROIDSおよびDM_HISTOGRAMSが含まれます。また、DM_RULEも含まれます。

DM_CLUSTERS

DM_CLUSTERのコレクション。GET_MODEL_DETAILS_KMファンクション、GET_MODEL_DETAILS_OCファンクションおよびGET_MODEL_DETAILS_EMファンクションによって戻されます。

DM_CONDITIONAL

Naive Bayesモデルの属性の条件付き確率。

DM_CONDITIONALS

DM_CONDITIONALのコレクション。GET_MODEL_DETAILS_NBファンクションによって戻されます。

DM_COST_ELEMENT

コスト・マトリックスの実際の値および予測値。

DM_COST_MATRIX

DM_COST_ELEMENTのコレクション。GET_MODEL_COST_MATRIXファンクションによって戻されます。

DM_EM_COMPONENT

期待値最大化モデルのコンポーネント。

DM_EM_COMPONENT_SET

DM_EM_COMPONENTのコレクション。GET_MODEL_DETAILS_EM_COMPファンクションによって戻されます。

DM_EM_PROJECTION

期待値最大化モデルのプロジェクト。

DM_EM_PROJECTION_SET

DM_EM_PROJECTIONのコレクション。GET_MODEL_DETAILS_EM_PROJファンクションによって戻されます。

DM_GLM_COEFF

一般化線形モデルの属性の係数および関連付けられている統計。

DM_GLM_COEFF_SET

DM_GLM_COEFFのコレクション。GET_MODEL_DETAILS_GLMファンクションによって戻されます。

DM_HISTOGRAM_BIN

クラスタに関連付けられたヒストグラム。

DM_HISTOGRAMS

DM_HISTOGRAM_BINのコレクション。DM_CLUSTERのメンバー。

DM_ITEM

相関ルールの項目。

DM_ITEMS

DM_ITEMのコレクション。

DM_ITEMSET

DM_ITEMSのコレクション。

DM_ITEMSETS

DM_ITEMSETのコレクション。GET_FREQUENT_ITEMSETSファンクションによって戻されます。

DM_MODEL_GLOBAL_DETAIL

モデルに関する高水準の統計。

DM_MODEL_GLOBAL_DETAILS

DM_MODEL_GLOBAL_DETAILのコレクション。GET_MODEL_DETAILS_GLOBALファンクションによって戻されます。

DM_NB_DETAIL

Naive Bayesモデルの属性に関する情報。

DM_NB_DETAILS

DM_DB_DETAILのコレクション。GET_MODEL_DETAILS_NBファンクションによって戻されます。

DM_NESTED_BINARY_DOUBLE

BINARY_DOUBLEタイプの量的属性の名前と値。

DM_NESTED_BINARY_DOUBLES

DM_NESTED_BINARY_DOUBLEのコレクション。

DM_NESTED_BINARY_FLOAT

BINARY_FLOATタイプの量的属性の名前と値。

DM_NESTED_BINARY_FLOATS

DM_NESTED_BINARY_FLOATのコレクション。

DM_NESTED_CATEGORICAL

CHAR、VARCHARまたはVARCHAR2タイプの質的属性の名前と値。

DM_NESTED_CATEGORICALS

DM_NESTED_CATEGORICALのコレクション。

DM_NESTED_NUMERICAL

NUMBERまたはFLOATタイプの量的属性の名前と値。

DM_NESTED_NUMERICALS

DM_NESTED_NUMERICALのコレクション。

DM_NMF_ATTRIBUTE

Non-negative Matrix Factorizationモデルの機能の属性。

DM_NMF_ATTRIBUTE_SET

DM_NMF_ATTRIBUTEのコレクション。DM_NMF_FEATUREのメンバー。

DM_NMF_FEATURE

Non-negative Matrix Factorizationモデルの機能。

DM_NMF_FEATURE_SET

DM_NMF_FEATUREのコレクション。GET_MODEL_DETAILS_NMFファンクションによって戻されます。

DM_PREDICATE

ルールの前件と後件。

DM_PREDICATES

DM_PREDICATEのコレクション。DM_RULEおよびDM_CLUSTERのメンバー。述語は、GET_ASSOCIATION_RULESファンクション、GET_MODEL_DETAILS_EMファンクション、GET_MODEL_DETAILS_KMファンクション、およびGET_MODEL_DETAILS_OCファンクションによって戻されます。

DM_RANKED_ATTRIBUTE

属性評価モデルで重要度別にランク付けされた属性。

DM_RANKED_ATTRIBUTES

DM_RANKED_ATTRIBUTEのコレクション。GET_MODEL_DETAILS_AIファンクションによって戻されます。

DM_RULE

条件付きの関係を定義するルール。

このルールには、GET_ASSOCIATION_RULESファンクションによって戻される相関ルールのいずれか、またはGET_MODEL_DETAILS_KMファンクションおよびGET_MODEL_DETAILS_OCファンクションによって戻されるクラスタのコレクションでクラスタに関連付けられたルールを指定できます。

DM_RULES

DM_RULEのコレクション。GET_ASSOCIATION_RULESファンクションによって戻されます。

DM_SVD_MATRIX

特異値分解モデルによって戻されるマトリックス因数分解S、VまたはU。

DM_SVD_MATRIX_SET

DM_SVD_MATRIXのコレクション。GET_MODEL_DETAILS_SVDファンクションによって戻されます。

DM_SVM_ATTRIBUTE

サポート・ベクター・マシン・モデルの属性の名前、値および係数。

DM_SVM_ATTRIBUTE_SET

DM_SVM_ATTRIBUTEのコレクション。GET_MODEL_DETAILS_SVMファンクションによって戻されます。DM_SVM_LINEAR_COEFFのメンバーでもあります。

DM_SVM_LINEAR_COEFF

サポート・ベクター・マシン・モデルの各属性の線形係数。

DM_SVM_LINEAR_COEFF_SET

DM_SVM_LINEAR_COEFFのコレクション。線形カーネルを使用してSVMモデルを作成する場合は、GET_MODEL_DETAILS_SVMファンクションによって戻されます。

DM_TRANSFORM

属性の変換式および逆変換式。

DM_TRANSFORMS

DM_TRANSFORMのコレクション。GET_MODEL_TRANSFORMATIONSファンクションによって戻されます。

TRANSFORM_LIST

モデルのユーザー定義変換のリスト。パラメータとしてCREATE_MODELプロシージャで使用されます。

このコレクション・タイプは、DBMS_DATA_MINING_TRANSFORMパッケージで定義されます。

DBMS_DATA_MININGサブプログラムの要約

表45-23に、DBMS_DATA_MININGパッケージに含まれているサブプログラムの要約を示します。

表45-23 DBMS_DATA_MININGパッケージのサブプログラム

サブプログラム

用途

ADD_COST_MATRIXプロシージャ

分類モデルにコスト・マトリックスを追加します。

ALTER_REVERSE_EXPRESSIONプロシージャ

逆変換式を指定した式に変更します。

APPLYプロシージャ

データ・セットにモデルを適用します(データのスコアリングを行います)。

COMPUTE_CONFUSION_MATRIXプロシージャ

分類モデルのコンフュージョン・マトリックスを計算します。

COMPUTE_LIFTプロシージャ

分類モデルのリフトを計算します。

COMPUTE_ROCプロシージャ

分類モデルの受信者操作特性(ROC)を計算します。

CREATE_MODELプロシージャ

モデルを作成します。

DROP_MODELプロシージャ

モデルを削除します。

EXPORT_MODELプロシージャ

モデルをダンプ・ファイルにエクスポートします。

GET_ASSOCIATION_RULESファンクション

相関モデルからルール集合を戻します。

GET_FREQUENT_ITEMSETSファンクション

相関モデルの高頻度項目セットを戻します。

GET_MODEL_COST_MATRIXファンクション

モデルのコスト・マトリックスを戻します。

GET_MODEL_DETAILS_AIファンクション

属性評価モデルに関するディテールを戻します。

GET_MODEL_DETAILS_EMファンクション

期待値の最大化モデルに関するディテールを戻します。

GET_MODEL_DETAILS_EM_COMPファンクション

期待値の最大化モデルのパラメータに関するディテールを戻します。

GET_MODEL_DETAILS_EM_PROJファンクション

期待値の最大化モデルのプロジェクトに関するディテールを戻します。

GET_MODEL_DETAILS_GLMファンクション

一般化線形モデルに関するディテールを戻します。

GET_MODEL_DETAILS_GLOBALファンクション

モデルに関する高水準の統計を戻します。

GET_MODEL_DETAILS_KMファンクション

k-Meansモデルに関するディテールを戻します。

GET_MODEL_DETAILS_NBファンクション

Naive Bayesモデルに関するディテールを戻します。

GET_MODEL_DETAILS_NMFファンクション

Non-Negative Matrix Factorizationモデルに関するディテールを戻します。

GET_MODEL_DETAILS_OCファンクション

O-Clusterモデルに関するディテールを戻します。

GET_MODEL_DETAILS_SVDファンクション

特異値分解モデルに関するディテールを戻します。

GET_MODEL_DETAILS_SVMファンクション

線形カーネルを使用するサポート・ベクター・マシン・モデルに関するディテールを戻します。

GET_MODEL_DETAILS_XMLファンクション

ディシジョン・ツリー・モデルに関するディテールを戻します。

GET_MODEL_TRANSFORMATIONSファンクション

モデルに埋め込まれた変換を戻します。

GET_TRANSFORM_LISTプロシージャ

2つの異なる変換仕様形式との間を変換します。

IMPORT_MODELプロシージャ

モデルをユーザー・スキーマにインポートします。

RANK_APPLYプロシージャ

分類モデルに対するAPPLYの結果に基づいて、予測結果をランク付けします。

REMOVE_COST_MATRIXプロシージャ

モデルからコスト・マトリックスを削除します。

RENAME_MODELプロシージャ

モデルの名前を変更します。

ADD_COST_MATRIXプロシージャ

このプロシージャは、コスト・マトリックス表を分類モデルに関連付けます。コスト・マトリックスでは、コストまたは利益を特定のモデル結果に割り当てることによって、そのモデルにバイアスをかけます。

コスト・マトリックスはモデルとともに格納され、モデルのスコアリング時に考慮されます。格納されるコスト・マトリックスは、モデルのデフォルトのスコアリング・マトリックスです。

また、スコアリングのためにData Mining SQLファンクションを起動したときに、コスト・マトリックスをインラインに指定できます。インラインのコスト・マトリックスを指定すると、デフォルトのかわりに、格納されたコスト・マトリックスが使用されます(存在する場合)。

モデルのデフォルト・スコアリング・マトリックスを取得するには、GET_MODEL_COST_MATRIXファンクションを使用します。モデルからデフォルト・スコアリング・マトリックスを削除するには、REMOVE_COST_MATRIXプロシージャを使用します。「GET_MODEL_COST_MATRIXファンクション」および「REMOVE_COST_MATRIXプロシージャ」を参照してください。

関連項目:

- コストの詳細は、『Oracle Data Mining概要』の「分類モデルのバイアス」を参照してください。

- インラインのコスト・マトリックスの構文は、『Oracle Database SQL言語リファレンス』を参照してください。

構文

DBMS_DATA_MINING.ADD_COST_MATRIX (
model_name                IN VARCHAR2,
cost_matrix_table_name    IN VARCHAR2,
cost_matrix_schema_name   IN VARCHAR2 DEFAULT NULL);

パラメータ

表45-24 ADD_COST_MATRIXプロシージャのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、ユーザー独自のスキーマが使用されます。

cost_matrix_table_name

コスト・マトリックス表の名前(表45-25を参照)。

cost_matrix_schema_name

コスト・マトリックス表のスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. モデルがスキーマにない場合、ADD_COST_MATRIXでは、ALTER ANY MINING MODELシステム権限またはそのマイニング・モデルに対するALTERオブジェクト権限が必要です。

2. コスト・マトリックス表には、表45-25に示す列が必要です。

表45-25 コスト・マトリックス表に必要な列

列名

データ・タイプ

ACTUAL_TARGET_VALUE

有効なターゲット・データ型

PREDICTED_TARGET_VALUE

有効なターゲット・データ型

COST

NUMBER、FLOAT、BINARY_DOUBLEまたはBINARY_FLOAT

関連項目:
有効なターゲット・データ・タイプについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

3. 実際のターゲット値と予測されるターゲット値のタイプは、モデル・ターゲットのタイプと同じである必要があります。たとえば、モデルのターゲットがBINARY_DOUBLEの場合、実際の値と予測される値はBINARY_DOUBLEである必要があります。実際の値と予測される値がCHARまたはVARCHARの場合、ADD_COST_MATRIXによって、VARCHAR2として内部的に処理されます。
タイプが一致しない場合、または実際の値や予測された値が有効なターゲット値ではない場合、ADD_COST_MATRIXプロシージャでエラーが発生します。

注意:
ターゲットに逆変換が関連付けられている場合は、実際の値や予測された値と、逆変換の適用後のターゲットとの整合性が保持されている必要があります。
詳細は、「逆変換とモデルの透過性」を参照してください。

4. 利益は負のコストとして表示できるため、コスト・マトリックス表のCOST列に負の数値を指定すると、特定の結果に利益を指定できます。

5. すべての分類アルゴリズムで、スコアリングのためにコスト・マトリックスを使用できます。ディシジョン・ツリー・アルゴリズムでは、作成時にコスト・マトリックスを使用することもできます。コスト・マトリックスを使用してディシジョン・ツリー・モデルを作成する場合、モデルの設定表のCLAS_COST_TABLE_NAME設定にコスト・マトリックス表の名前を指定します。表45-7「マイニング機能の設定」を参照してください。
ディシジョン・ツリー・モデルを作成する場合に使用するコスト・マトリックスは、そのモデルに対するデフォルトのスコアリング・マトリックスになります。スコアリング用に異なるコストを指定する場合は、REMOVE_COST_MATRIXプロシージャを使用してコスト・マトリックスを削除し、ADD_COST_MATRIXプロシージャを使用して新規コスト・マトリックスを追加します。

例

この例では、COSTS_NBというコスト・マトリックス表を作成し、NB_SH_CLAS_SAMPLEというNaive Bayesモデルに追加します。このモデルにはバイナリ・ターゲットがあり、1は顧客がプロモーションに応答することを表し、0は顧客が応答しないことを表します。コスト・マトリックスは、応答しない顧客の分類ミスに0.25のコストを割り当て、応答する顧客の分類ミスに0.75のコストを割り当てます。これは、応答しない顧客の分類ミスよりも、応答する顧客の分類ミスの方が3倍コストがかかることを意味します。

CREATE TABLE costs_nb (
actual_target_value           NUMBER,
predicted_target_value        NUMBER,
cost                          NUMBER);
INSERT INTO costs_nb values (0, 0, 0);
INSERT INTO costs_nb values (0, 1, .25);
INSERT INTO costs_nb values (1, 0, .75);
INSERT INTO costs_nb values (1, 1, 0);
COMMIT;

EXEC dbms_data_mining.add_cost_matrix('nb_sh_clas_sample', 'costs_nb');

SELECT cust_gender, COUNT(*) AS cnt, ROUND(AVG(age)) AS avg_age
FROM mining_data_apply_v
WHERE PREDICTION(nb_sh_clas_sample COST MODEL
USING cust_marital_status, education, household_size) = 1
GROUP BY cust_gender
ORDER BY cust_gender;

C        CNT    AVG_AGE
- ---------- ----------
F         72         39
M        555         44

ALTER_REVERSE_EXPRESSIONプロシージャ

このプロシージャは、逆変換式を指定した式に置換します。属性に反転式が含まれない場合、このプロシージャは指定した式から反転式を作成します。

このプロシージャを使用して、クラスタリング、特徴抽出および異常検出の各モデルの出力をカスタマイズすることもできます。

構文

DBMS_DATA_MINING.ALTER_REVERSE_EXPRESSION (
model_name             VARCHAR2,
expression             CLOB,
attribute_name         VARCHAR2 DEFAULT NULL,
attribute_subname      VARCHAR2 DEFAULT NULL);

パラメータ

表45-26 ALTER_REVERSE_EXPRESSIONプロシージャのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

expression

属性に関連した逆変換を置き換える式。

attribute_name

属性の名前。expressionをクラスタ、機能または1クラスSVMの予測に適用する場合は、NULLに設定します。

attribute_subname

attribute_nameがネストされた列の場合はネストされた属性の名前。それ以外の場合はNULL。

使用上の注意

1. Oracle Data Miningでは、モデルの透過性を目的として、モデルに埋め込まれた変換に対して逆変換が提供されます。逆変換は、モデル詳細(GET_MODEL_DETAILS_*ファンクション)に戻される属性、および述語モデルのスコアリング・ターゲットに適用されます。

関連項目:
第46章「DBMS_DATA_MINING_TRANSFORM」の「変換リストについて」

2. コスト・マトリックスを持つモデルのターゲットに対する逆変換を変更する場合は、コスト・マトリックス内の実際の値および予測値と同じタイプの変換式を指定する必要があります。また、指定する逆変換の結果は、コスト・マトリックスに存在する値であることが必要です。

関連項目:
コスト・マトリックスの詳細は、「ADD_COST_MATRIXプロシージャ」および『Oracle Data Mining概要』を参照してください。

3. 属性の逆変換が行われないようにするために、expressionにNULLを指定できます。

4. 逆変換式には、有効なOracleデータ・タイプを戻すPL/SQLファンクションの参照を含めることができます。たとえば、'Low'、'Medium'、および'High'の値を持つblood_pressureという名前の質的属性に対して、次のようなファンクションを定義できます。

CREATE OR REPLACE FUNCTION numx(c char) RETURN NUMBER IS
BEGIN
CASE c WHEN ''Low'' THEN RETURN 1;
WHEN ''Medium'' THEN RETURN 2;
WHEN ''High'' THEN RETURN 3;
ELSE RETURN null;
END CASE;
END numx;

その後、次のようにblood_pressureに対してALTER_REVERSE_EXPRESIONを呼び出すことができます。

EXEC dbms_data_mining.alter_reverse_expression(
'<model_name>', 'NUMX(blood_pressure)', 'blood_pressure');

5. ALTER_REVERSE_EXPRESSIONを使用して、クラスタリング・モデルによって生成されたクラスタと、特徴抽出によって生成された特徴にラベルを付けることができます。
また、ALTER_REVERSE_EXPRESSIONを使用すると、異常検出モデルによって戻された0(ゼロ)および1を置き換えることができます。デフォルトでは、異常検出モデルによって、異常レコードには0のラベルが付けられ、他のすべてのレコードには1のラベルが付けられます。

関連項目:
異常検出の詳細は、『Oracle Data Mining概要』を参照してください。

例

1. この例では、モデルCLASS_MODELのターゲット(affinity_card)が、内部的に1または0のかわりにyesまたはnoで操作されます(ただし、スコアリング時には1および0が戻されます)。ALTER_REVERSE_EXPRESSIONプロシージャによって、ターゲット値がTRUEまたはFALSEとして戻されます。
Oracle Data Miningのサンプル・プログラムには、データ・セットのMINING_DATA_BUILDおよびMINING_DATA_TESTが付属しています。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

DECLARE
v_xlst dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM(v_xlst,
'affinity_card', NULL,
'decode(affinity_card, 1, ''yes'', ''no'')',
'decode(affinity_card, ''yes'', 1, 0)');
dbms_data_mining.CREATE_MODEL(
model_name             => 'CLASS_MODEL',
mining_function        => dbms_data_mining.classification,
data_table_name        => 'mining_data_build',
case_id_column_name    => 'cust_id',
target_column_name     => 'affinity_card',
settings_table_name    => NULL,
data_schema_name       => 'dmuser',
settings_schema_name   => NULL,
xform_list             => v_xlst );
END;
/
SELECT cust_income_level, occupation,
PREDICTION(CLASS_MODEL USING *) predict_response
FROM mining_data_test WHERE age = 60 AND cust_gender IN 'M'
ORDER BY cust_income_level;

CUST_INCOME_LEVEL              OCCUPATION                PREDICT_RESPONSE
------------------------------ --------------------- --------------------
A: Below 30,000                Transp.                                  1
E: 90,000 - 109,999            Transp.                                  1
E: 90,000 - 109,999            Sales                                    1
G: 130,000 - 149,999           Handler                                  0
G: 130,000 - 149,999           Crafts                                   0
H: 150,000 - 169,999           Prof.                                    1
J: 190,000 - 249,999           Prof.                                    1
J: 190,000 - 249,999           Sales                                    1

BEGIN
dbms_data_mining.ALTER_REVERSE_EXPRESSION (
model_name      => 'CLASS_MODEL',
expression      => 'decode(affinity_card, ''yes'', ''TRUE'', ''FALSE'')',
attribute_name  => 'affinity_card');
END;
/
column predict_response on
column predict_response format a20
SELECT cust_income_level, occupation,
PREDICTION(CLASS_MODEL USING *) predict_response
FROM mining_data_test WHERE age = 60 AND cust_gender IN 'M'
ORDER BY cust_income_level;

CUST_INCOME_LEVEL              OCCUPATION            PREDICT_RESPONSE
------------------------------ --------------------- --------------------
A: Below 30,000                Transp.               TRUE
E: 90,000 - 109,999            Transp.               TRUE
E: 90,000 - 109,999            Sales                 TRUE
G: 130,000 - 149,999           Handler               FALSE
G: 130,000 - 149,999           Crafts                FALSE
H: 150,000 - 169,999           Prof.                 TRUE
J: 190,000 - 249,999           Prof.                 TRUE
J: 190,000 - 249,999           Sales                 TRUE

2. この例では、sh_clusモデルから生成されたクラスタにラベルを指定します。このラベルは、「クラスタ」という単語およびクラスタの内部数値識別子で構成されます。

BEGIN
dbms_data_mining.ALTER_REVERSE_EXPRESSION( 'sh_clus', '''Cluster ''||value');
END;
/

SELECT cust_id, cluster_id(sh_clus using *) cluster_id
FROM sh_aprep_num
WHERE cust_id < 100011
ORDER by cust_id;

CUST_ID CLUSTER_ID
------- ------------------------------------------------
100001 Cluster 18
100002 Cluster 14
100003 Cluster 14
100004 Cluster 18
100005 Cluster 19
100006 Cluster 7
100007 Cluster 18
100008 Cluster 14
100009 Cluster 8
100010 Cluster 8

APPLYプロシージャ

このプロシージャは、対象データにマイニング・モデルを適用し、その結果を表に保存します。適用プロセスは、スコアリングとも呼ばれます。

予測マイニング機能の適用プロセスでは、予測結果がターゲット列に生成されます。クラスタリングなどの記述マイニング機能の適用プロセスでは、各ケースにクラスタが確率付きで割り当てられます。

Oracle Data Miningでは、適用操作は、相関モデルおよび属性評価モデルには適用できません。

注意:
データ・マイニング機能を使用すると、SQLで直接スコアリングを実行することもできます。次の項目を参照してください。

- 『Oracle Database SQL言語リファレンス』のデータ・マイニング機能に関する項

- Oracle Data Miningユーザーズ・ガイドの「スコアリングと配置」

構文

DBMS_DATA_MINING.APPLY (
model_name           IN VARCHAR2,
data_table_name      IN VARCHAR2,
case_id_column_name  IN VARCHAR2,
result_table_name    IN VARCHAR2,
data_schema_name     IN VARCHAR2 DEFAULT NULL);

パラメータ

表45-27 APPLYプロシージャのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

data_table_name

スコアリング対象のデータが保存された表またはビューの名前。

case_id_column_name

ケースID列の名前。

result_table_name

適用結果が保存される表の名前。

data_schema_name

スコアリング対象のデータが保存されたスキーマの名前。

使用上の注意

1. APPLYに指定したデータでは、モデルの作成およびテストに使用されるデータと同じ事前処理が実行される必要があります。自動データ準備を使用する場合、アルゴリズムで必要な事前処理は、作成時と適用時の両方で、ユーザーのかわりにモデルによって処理されます。(「自動データ準備」を参照)

2. APPLYでは、ユーザーのスキーマに表を作成して結果を保存します。列はアルゴリズム固有です。
結果表の列は、表45-28から表45-32で説明します。結果表のケースID列名は、ユーザーが指定したケースID列名と同じ値になります。入力のケースID列のタイプは、APPLYの出力でも維持されます。

注意:
ケースID列が、APPLYで作成されるいずれの列の名前とも同じにならないことを確認してください。たとえば、分類モデルを適用した場合、スコアリング・データのケースIDは、PREDICTIONとPROBABILITYのいずれにもならないようにする必要があります(表45-28を参照)。

3. 出力列'PREDICTION'、'CLUSTER_ID'および'FEATURE_ID'のデータ・タイプは、ユーザーがモデルに埋め込んだ反転式によって影響を受けます。ユーザーがスコアリング値のタイプを変更する反転式を指定しない場合は、そのタイプは次の表の説明に従います。詳細は、「ALTER_REVERSE_EXPRESSIONプロシージャ」を参照してください。

分類

分類の結果表には、表45-28に示す列があります。モデルが質的ターゲットの場合、PREDICTION列のデータ・タイプはVARCHAR2になります。ターゲットがバイナリ・タイプの場合、PREDICTION列もターゲットのバイナリ・タイプになります。

表45-28 分類に対するAPPLYの適用結果表

列名

データ・タイプ

ケースID列の名前

ケースIDのタイプ

PREDICTION

ターゲットのタイプ

PROBABILITY

BINARY_DOUBLE

異常検出

異常検出の結果表には、表45-29に示す列があります。

表45-29 異常検出に対するAPPLYの適用結果表

列名

データ・タイプ

ケースID列の名前

ケースIDのタイプ

PREDICTION

NUMBER

PROBABILITY

BINARY_DOUBLE

PREDICTION列の値は、0または1のいずれかです。1の場合、ケースは標準的な例です。0の場合、ケースは外れ値です。

回帰

回帰の結果表には、表45-30に示す列があります。

表45-30 回帰に対するAPPLYの適用結果表

列名

データ・タイプ

ケースID列の名前

ケースIDのタイプ

PREDICTION

ターゲットのタイプ

クラスタリング

クラスタリングは監視なしのマイニング機能であるため、ターゲットは存在しません。APPLY操作の結果は、単にケースに対応するクラスタ識別子と、ケースの確率のみになります。結果表には、表45-31に示す列があります。

表45-31 クラスタリングに対するAPPLYの適用結果表

列名

データ・タイプ

ケースID列の名前

ケースIDのタイプ

CLUSTER_ID

NUMBER

PROBABILITY

BINARY_DOUBLE

特徴抽出

特徴抽出も監視なしのマイニング機能であるため、ターゲットは存在しません。APPLY操作の結果は、単にケースに対応する機能識別子と、ケースの一致率のみになります。結果表には、表45-32に示す列があります。

表45-32 特徴抽出に対するAPPLYの適用結果表

列名

データ・タイプ

ケースID列の名前

ケースIDのタイプ

FEATURE_ID

NUMBER

MATCH_QUALITY

BINARY_DOUBLE

例

この例では、GLM回帰モデルGLMR_SH_REGR_SAMPLEをMINING_DATA_APPLY_Vビューのデータに適用します。適用結果は、REGRESSION_APPLY_RESULT表に出力されます。

SQL> BEGIN
DBMS_DATA_MINING.APPLY (
model_name     => 'glmr_sh_regr_sample',
data_table_name     => 'mining_data_apply_v',
case_id_column_name => 'cust_id',
result_table_name   => 'regression_apply_result');
END;
/

SQL> SELECT * FROM regression_apply_result WHERE cust_id >  101485;

CUST_ID PREDICTION
---------- ----------
101486 22.8048824
101487 25.0261101
101488 48.6146619
101489   51.82595
101490 22.6220714
101491 61.3856816
101492 24.1400748
101493  58.034631
101494 45.7253149
101495 26.9763318
101496 48.1433425
101497 32.0573434
101498 49.8965531
101499  56.270656
101500 21.1153047

COMPUTE_CONFUSION_MATRIXプロシージャ

このプロシージャは、コンフュージョン・マトリックスを計算してユーザーのスキーマにある表に格納し、モデルの精度を戻します。

コンフュージョン・マトリックスは、分類モデルに対するテスト指標値です。一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。コンフュージョン・マトリックスには、各クラスが正しく予測された回数と、各クラスが他のクラスのいずれかになると予測された回数がリストされます。

COMPUTE_CONFUSION_MATRIXは、次の3つの入力ストリームを受け入れます。

- テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。

- ケースID列

- 予測列

- 確率とコストのいずれかが格納されているスコアリング基準列

- テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。

- ケースID列

- 既知のターゲット値が格納されているターゲット列

- (オプション)事前定義された列を持つコスト・マトリックス表。列の要件については、「使用上の注意」を参照してください。

関連項目:

コンフュージョン・マトリックスおよび分類用の他のテスト指標値の詳細は、『Oracle Data Mining概要』を参照してください。

「COMPUTE_LIFTプロシージャ」

「COMPUTE_ROCプロシージャ」

構文

DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX (
accuracy                     OUT NUMBER,
apply_result_table_name      IN  VARCHAR2,
target_table_name            IN  VARCHAR2,
case_id_column_name          IN  VARCHAR2,
target_column_name           IN  VARCHAR2,
confusion_matrix_table_name  IN  VARCHAR2,
score_column_name            IN  VARCHAR2 DEFAULT 'PREDICTION',
score_criterion_column_name  IN  VARCHAR2 DEFAULT 'PROBABILITY',
cost_matrix_table_name       IN  VARCHAR2 DEFAULT NULL,
apply_result_schema_name     IN  VARCHAR2 DEFAULT NULL,
target_schema_name           IN  VARCHAR2 DEFAULT NULL,
cost_matrix_schema_name      IN  VARCHAR2 DEFAULT NULL,
score_criterion_type         IN  VARCHAR2 DEFAULT 'PROBABILITY');

パラメータ

表45-33 COMPUTE_CONFUSION_MATRIXプロシージャのパラメータ

パラメータ

説明

accuracy

予測の全体的な精度(パーセント)が含まれる出力パラメータ。

apply_result_table_name

予測結果が含まれる表。

target_table_name

テスト・データの既知のターゲット値が含まれる表。

case_id_column_name

適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。

target_column_name

ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。

confusion_matrix_table_name

コンフュージョン・マトリックスが含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。

コンフュージョン・マトリックス表の列については、「使用上の注意」を参照してください。

score_column_name

適用結果表の予測結果が格納される列。

デフォルトの列名はPREDICTIONです。この列名は、APPLYプロシージャで作成されるデフォルト名です(「APPLYプロシージャ」を参照)。

score_criterion_column_name

適用結果表のスコアリング基準値が格納される列。予測を決定する確率またはコストが格納されます。

デフォルトでは、スコアリングは確率に基づくため、各ケースに対して最も確率の高いクラスが予測されます。スコアリングがコストに基づく場合は、最もコストの低いクラスが予測されます。

score_criterion_typeパラメータは、スコアリングに確率またはコストのいずれを使用するのかを示します。

デフォルトの列名は'PROBABILITY'です。この列名は、APPLYプロシージャで作成されるデフォルト名です(「APPLYプロシージャ」を参照)。

詳細は、「使用上の注意」を参照してください。

cost_matrix_table_name

(オプション)分類ミスに関連付けられたコストを定義する表。コスト・マトリックス表があり、score_criterion_typeパラメータが'COSTS'に設定されている場合は、スコアリング基準としてこの表のコストが使用されます。

コスト・マトリックス表の列については、「使用上の注意」を参照してください。

apply_result_schema_name

適用結果表のスキーマ。

NULLの場合、ユーザーのスキーマと想定されます。

target_schema_name

既知のターゲットが含まれている表のスキーマ。

NULLの場合、ユーザーのスキーマと想定されます。

cost_matrix_schema_name

コスト・マトリックス表のスキーマ(指定されている場合)。

NULLの場合、ユーザーのスキーマと想定されます。

score_criterion_type

スコアリング基準として確率またはコストのいずれを使用するか。確率またはコストは、score_criterion_column_nameパラメータで識別される列に渡されます。

score_criterion_typeのデフォルト値は'PROBABILITY'です。スコアリング基準としてコストを使用するには、'COST'と指定します。

score_criterion_typeが'COST'に設定されているにもかかわらずコスト・マトリックスがない場合に、モデルにスコアリング・コスト・マトリックスが関連付けられていると、この関連付けられているコストがスコアリングに使用されます。

「使用上の注意」および「例」を参照してください。

使用上の注意

- COMPUTE_CONFUSION_MATRIXに渡す予測情報は、SQLファンクションPREDICTION、DBMS_DATA_MINING.APPLYプロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、コンフュージョン・マトリックスを計算できます。

- COMPUTE_CONFUSION_MATRIXにコスト・マトリックスを渡すかわりに、モデルに関連付けられているスコアリング・コスト・マトリックスを使用できます。スコアリング・コスト・マトリックスは、モデルに埋め込むか、またはモデルの適用時に動的に定義できます。スコアリング・コスト・マトリックスを使用するには、SQLファンクションPREDICTION_COSTを起動して、スコア基準列を移入します。

- COMPUTE_CONFUSION_MATRIXに渡す予測情報は、apply_result_table_nameで指定した表またはビューに格納されます。

CREATE TABLE apply_result_table_name AS (
case_id_column_name            VARCHAR2,
score_column_name              VARCHAR2,
score_criterion_column_name    VARCHAR2);

- コスト・マトリックスには、表45-34に示す列が必要です。

表45-34 コスト・マトリックスの列

列名

データ・タイプ

actual_target_value

作成データのターゲット列のタイプ

predicted_target_value

テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じであることが必要です。

cost

BINARY_DOUBLE

関連項目:

有効なターゲット・データ・タイプについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

コスト・マトリックスの詳細は、『Oracle Data Mining概要』を参照してください。

- COMPUTE_CONFUSION_MATRIXで作成されるコンフュージョン・マトリックスには、表45-35に示す列があります。

表45-35 コンフュージョン・マトリックスの列

列名

データ・タイプ

actual_target_value

作成データのターゲット列のタイプ

predicted_target_value

テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じです。

value

BINARY_DOUBLE

関連項目:
コンフュージョン・マトリックスの詳細は、『Oracle Data Mining概要』を参照してください。

例

ここに示す例では、Naive Bayesモデルnb_sh_clas_sampleが使用されています。このモデルは、Oracle Data Miningのサンプル・プログラムによって作成されます。

確率に基づくコンフュージョン・マトリックスの計算

次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。

CREATE TABLE nb_apply_results AS
SELECT cust_id,
PREDICTION(nb_sh_clas_sample USING *) prediction,
PREDICTION_PROBABILITY(nb_sh_clas_sample USING *) probability
FROM mining_data_test_v;

スコアリング基準として確率を使用する場合は、次のようにコンフュージョン・マトリックスを計算できます。

DECLARE
v_accuracy    NUMBER;
BEGIN
DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX (
accuracy                     => v_accuracy,
apply_result_table_name      => 'nb_apply_results',
target_table_name            => 'mining_data_test_v',
case_id_column_name          => 'cust_id',
target_column_name           => 'affinity_card',
confusion_matrix_table_name  => 'nb_confusion_matrix',
score_column_name            => 'PREDICTION',
score_criterion_column_name  => 'PROBABILITY'
cost_matrix_table_name       =>  null,
apply_result_schema_name     =>  null,
target_schema_name           =>  null,
cost_matrix_schema_name      =>  null,
score_criterion_type         => 'PROBABILITY');
DBMS_OUTPUT.PUT_LINE('**** MODEL ACCURACY ****: ' || ROUND(v_accuracy,4));
END;
/

コンフュージョン・マトリックスとモデルの精度は、次のとおりです。

**** MODEL ACCURACY ****: .7847

SQL>SELECT * from nb_confusion_matrix;
ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE      VALUE
------------------- ---------------------- ----------
1                      0         60
0                      0        891
1                      1        286
0                      1        263

コスト・マトリックス表に基づくコンフュージョン・マトリックスの計算

前述の例のコンフュージョン・マトリックスは、高い偽陽性率を示しています。263のケースで、実際の値が0(ゼロ)であるにもかかわらず、モデルでは1と予測されました。コスト・マトリックスを使用すると、このようなエラーを最小限に抑えることができます。

コスト・マトリックス表nb_cost_matrixから、偽陽性は偽陰性の3倍以上のコストがかかることがわかります。

SQL> SELECT * from nb_cost_matrix;
ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE       COST
------------------- ---------------------- ----------
0                      0          0
0                      1        .75
1                      0        .25
1                      1          0

次の文は、APPLYを使用して予測を生成する方法を示しています。

BEGIN
DBMS_DATA_MINING.APPLY(
model_name          => 'nb_sh_clas_sample',
data_table_name     => 'mining_data_test_v',
case_id_column_name => 'cust_id',
result_table_name   => 'nb_apply_results');
END;
/

この文では、コスト・マトリックス表を使用してコンフュージョン・マトリックスが計算されます。スコア基準列の名前は'PROBABILITY'で、この列名は、APPLYで生成される名前です。

DECLARE
v_accuracy    NUMBER;
BEGIN
DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX (
accuracy                     => v_accuracy,
apply_result_table_name      => 'nb_apply_results',
target_table_name            => 'mining_data_test_v',
case_id_column_name          => 'cust_id',
target_column_name           => 'affinity_card',
confusion_matrix_table_name  => 'nb_confusion_matrix',
score_column_name            => 'PREDICTION',
score_criterion_column_name  => 'PROBABILITY',
cost_matrix_table_name       => 'nb_cost_matrix',
apply_result_schema_name     => null,
target_schema_name           => null,
cost_matrix_schema_name      => null,
score_criterion_type         => 'COST');
DBMS_OUTPUT.PUT_LINE('**** MODEL ACCURACY ****: ' || ROUND(v_accuracy,4));
END;
/

生成されるコンフュージョン・マトリックスは、(263から212に)偽陽性が低下したことを示しています。

**** MODEL ACCURACY ****: .798

SQL> SELECT * FROM nb_confusion_matrix;
ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE      VALUE
------------------- ---------------------- ----------
1                      0         91
0                      0        942
1                      1        255
0                      1        212

埋め込まれたコストに基づくコンフュージョン・マトリックスの計算

ADD_COST_MATRIXプロシージャを使用すると、モデルにコスト・マトリックスを埋め込むことができます。埋め込まれたコストは、確率のかわりにスコアリングに使用できます。次の文は、以前に定義済のコスト・マトリックスをモデルに追加します。

BEGIN    DBMS_DATA_MINING.ADD_COST_MATRIX ('nb_sh_clas_sample', 'nb_cost_matrix');END;/

次の文は、埋め込まれたコストを使用してテスト・データにモデルを適用し、結果を表に格納します。

CREATE TABLE nb_apply_results AS
SELECT cust_id,
PREDICTION(nb_sh_clas_sample COST MODEL USING *) prediction,
PREDICTION_COST(nb_sh_clas_sample COST MODEL USING *) cost
FROM mining_data_test_v;

埋め込まれたコストを使用してコンフュージョン・マトリックスを計算できます。

DECLARE
v_accuracy         NUMBER;
BEGIN
DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX (
accuracy                     => v_accuracy,
apply_result_table_name      => 'nb_apply_results',
target_table_name            => 'mining_data_test_v',
case_id_column_name          => 'cust_id',
target_column_name           => 'affinity_card',
confusion_matrix_table_name  => 'nb_confusion_matrix',
score_column_name            => 'PREDICTION',
score_criterion_column_name  => 'COST',
cost_matrix_table_name       => null,
apply_result_schema_name     => null,
target_schema_name           => null,
cost_matrix_schema_name      => null,
score_criterion_type         => 'COST');
END;
/

結果は次のとおりです。

**** MODEL ACCURACY ****: .798

SQL> SELECT * FROM nb_confusion_matrix;
ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE      VALUE
------------------- ---------------------- ----------
1                      0         91
0                      0        942
1                      1        255
0                      1        212

COMPUTE_LIFTプロシージャ

このプロシージャは、リフトを計算し、ユーザーのスキーマにある表に結果を格納します。

リフトは、バイナリ分類モデルに対するテスト指標値です。リフトを計算するには、ターゲット値のいずれかをポジティブ・クラスに指定する必要があります。COMPUTE_LIFTでは、一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。リフトでは、モデルによるポジティブ・クラスの予測結果が、ランダムに選択した場合と比較してどの程度向上しているかが測定されます。

リフトは、確率(またはコスト)によってランク付けされてクオンタイルに分割されたスコアリング結果に対して計算されます。各クオンタイルには、同じ数のケースのスコアが含まれます。

COMPUTE_LIFTでは、クオンタイルに基づく累積統計情報が計算されます。クオンタイルの数およびポジティブ・クラスはユーザーが指定します。また、COMPUTE_LIFTは、次の3つの入力ストリームを受け入れます。

- テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。

- ケースID列

- 予測列

- 予測に関連付けられた確率とコストのいずれかが格納されているスコアリング基準列

- テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。

- ケースID列

- 既知のターゲット値が格納されているターゲット列

- (オプション)事前定義された列を持つコスト・マトリックス表。列の要件については、「使用上の注意」を参照してください。

関連項目:

リフトおよび分類用のテスト指標値の詳細は、『Oracle Data Mining概要』を参照してください。

「COMPUTE_CONFUSION_MATRIXプロシージャ」

「COMPUTE_ROCプロシージャ」

構文

DBMS_DATA_MINING.COMPUTE_LIFT (
apply_result_table_name      IN VARCHAR2,
target_table_name            IN VARCHAR2,
case_id_column_name          IN VARCHAR2,
target_column_name           IN VARCHAR2,
lift_table_name              IN VARCHAR2,
positive_target_value        IN VARCHAR2,
score_column_name            IN VARCHAR2 DEFAULT 'PREDICTION',
score_criterion_column_name  IN VARCHAR2 DEFAULT 'PROBABILITY',
num_quantiles                IN NUMBER DEFAULT 10,
cost_matrix_table_name       IN VARCHAR2 DEFAULT NULL,
apply_result_schema_name     IN VARCHAR2 DEFAULT NULL,
target_schema_name           IN VARCHAR2 DEFAULT NULL,
cost_matrix_schema_name      IN VARCHAR2 DEFAULT NULL
score_criterion_type         IN VARCHAR2 DEFAULT 'PROBABILITY');

パラメータ

表45-36 COMPUTE_LIFTプロシージャのパラメータ

パラメータ

説明

apply_result_table_name

予測結果が含まれる表。

target_table_name

テスト・データの既知のターゲット値が含まれる表。

case_id_column_name

適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。

target_column_name

ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。

lift_table_name

リフト統計情報が含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。

リフト表の列については、「使用上の注意」を参照してください。

positive_target_value

ポジティブ・クラス。リフトの計算対象となるクラスです。

ターゲット列がNUMBERである場合は、TO_CHAR()演算子を使用して数値を文字列に変換します。

score_column_name

適用結果表の予測結果が格納される列。

デフォルトの列名は'PREDICTION'です。この列名は、APPLYプロシージャで作成されるデフォルト名です(「APPLYプロシージャ」を参照)。

score_criterion_column_name

適用結果表のスコアリング基準値が格納される列。予測を決定する確率またはコストが格納されます。

デフォルトでは、スコアリングは確率に基づくため、各ケースに対して最も確率の高いクラスが予測されます。スコアリングがコストに基づく場合は、最もコストの低いクラスが予測されます。

score_criterion_typeパラメータは、スコアリングに確率またはコストのいずれを使用するのかを示します。

デフォルトの列名は'PROBABILITY'です。この列名は、APPLYプロシージャで作成されるデフォルト名です(「APPLYプロシージャ」を参照)。

詳細は、「使用上の注意」を参照してください。

num_quantiles

リフト計算に使用するクオンタイル数。デフォルトは10です。

cost_matrix_table_name

(オプション)分類ミスに関連付けられたコストを定義する表。コスト・マトリックス表があり、score_criterion_typeパラメータが'COST'に設定されている場合、スコアリング基準としてこの表のコストが使用されます。

コスト・マトリックス表の列については、「使用上の注意」を参照してください。

apply_result_schema_name

適用結果表のスキーマ。

NULLの場合、ユーザーのスキーマと想定されます。

target_schema_name

既知のターゲットが含まれている表のスキーマ。

NULLの場合、ユーザーのスキーマと想定されます。

cost_matrix_schema_name

コスト・マトリックス表のスキーマ(指定されている場合)。

NULLの場合、ユーザーのスキーマと想定されます。

score_criterion_type

スコアリング基準として確率またはコストのいずれを使用するか。確率またはコストは、score_criterion_column_nameパラメータで識別される列に渡されます。

score_criterion_typeのデフォルト値は'PROBABILITY'です。スコアリング基準としてコストを使用するには、'COST'と指定します。

score_criterion_typeが'COST'に設定されているにもかかわらずコスト・マトリックスがない場合に、モデルにスコアリング・コスト・マトリックスが関連付けられていると、この関連付けられているコストがスコアリングに使用されます。

「使用上の注意」および「例」を参照してください。

使用上の注意

- COMPUTE_LIFTに渡す予測情報は、SQLファンクションPREDICTION、DBMS_DATA_MINING.APPLYプロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、リフトを計算できます。

- COMPUTE_LIFTにコスト・マトリックスを渡すかわりに、モデルに関連付けられているスコアリング・コスト・マトリックスを使用できます。スコアリング・コスト・マトリックスは、モデルに埋め込むか、またはモデルの適用時に動的に定義できます。スコアリング・コスト・マトリックスを使用するには、SQLファンクションPREDICTION_COSTを起動して、スコア基準列を移入します。

- COMPUTE_LIFTに渡す予測情報は、apply_results_table_nameで指定した表またはビューに格納されます。

CREATE TABLE apply_result_table_name AS (
case_id_column_name            VARCHAR2,
score_column_name              VARCHAR2,
score_criterion_column_name    VARCHAR2);

- コスト・マトリックスには、表45-37に示す列が必要です。

表45-37 コスト・マトリックスの列

列名

データ・タイプ

actual_target_value

作成データのターゲット列のタイプ

predicted_target_value

テスト・データの予測ターゲットのタイプ。予測されるターゲットのタイプは、予測されるターゲットに関連した逆変換が存在しない限り、実際のターゲットのタイプと同じであることが必要です。

cost

NUMBER

関連項目:
コスト・マトリックスの詳細は、『Oracle Data Mining概要』を参照してください。

- COMPUTE_LIFTで作成される表には、表45-38に示す列があります。

表45-38 リフト表の列

列名

データ・タイプ

quantile_number

NUMBER

probability_threshold

NUMBER

gain_cumulative

NUMBER

quantile_total_count

NUMBER

quantile_target_count

NUMBER

percent_records_cumulative

NUMBER

lift_cumulative

NUMBER

target_density_cumulative

NUMBER

targets_cumulative

NUMBER

non_targets_cumulative

NUMBER

lift_quantile

NUMBER

target_density

NUMBER

関連項目:
リフト表の詳細は、『Oracle Data Mining概要』を参照してください。

- COMPUTE_LIFTにコスト・マトリックスが渡されると、リフト表のprobability_threshold列にコストしきい値が戻されます。

例

ここに示す例では、Naive Bayesモデルnb_sh_clas_sampleが使用されています。このモデルは、Oracle Data Miningのサンプル・プログラムによって作成されます。

この例は、確率に基づくリフトを示しています。コストに基づく計算を示す例については、「COMPUTE_CONFUSION_MATRIXプロシージャ」を参照してください。

次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。

CREATE TABLE nb_apply_results AS
SELECT cust_id, t.prediction, t.probability
FROM mining_data_test_v, TABLE(PREDICTION_SET(nb_sh_clas_sample USING *)) t;

スコアリング基準として確率を使用する場合は、次のようにリフトを計算できます。

BEGIN
DBMS_DATA_MINING.COMPUTE_LIFT (
apply_result_table_name              => 'nb_apply_results',
target_table_name                => 'mining_data_test_v',
case_id_column_name              => 'cust_id',
target_column_name               => 'affinity_card',
lift_table_name                             => 'nb_lift',
positive_target_value                 =>  to_char(1),
score_column_name                => 'PREDICTION',
score_criterion_column_name    => 'PROBABILITY',
num_quantiles                                =>  10,
cost_matrix_table_name                =>  null,
apply_result_schema_name            =>  null,
target_schema_name               =>  null,
cost_matrix_schema_name              =>  null,
score_criterion_type                   =>  'PROBABILITY');
END;
/

この問合せにより、生成されるリフト表の統計情報の一部が表示されます。

SQL>SELECT quantile_number, probability_threshold, gain_cumulative,
quantile_total_count
FROM nb_lift;

QUANTILE_NUMBER PROBABILITY_THRESHOLD GAIN_CUMULATIVE QUANTILE_TOTAL_COUNT
--------------- --------------------- --------------- --------------------
1            .989335775       .15034965                   55
2            .980534911       .26048951                   55
3            .968506098      .374125874                   55
4            .958975196      .493006993                   55
5            .946705997      .587412587                   55
6            .927454174       .66958042                   55
7            .904403627      .748251748                   55
8            .836482525      .839160839                   55
10            .500184953               1                   54

COMPUTE_ROCプロシージャ

このプロシージャは、受信者操作特性(ROC)を計算してユーザーのスキーマにある表に結果を格納し、モデルの精度を戻します。

ROCは、バイナリ分類モデルに対するテスト指標値です。ROCを計算するには、ターゲット値のいずれかをポジティブ・クラスに指定する必要があります。COMPUTE_ROCでは、一連のテスト・データにおいて、モデルによって生成された予測結果が実際のターゲット値と比較されます。

ROCは、確率しきい値における変化の影響を測定します。確率しきい値は、モデルが予測に使用する決定ポイントです。バイナリ分類では、デフォルトの確率しきい値は0.5です。それぞれのケースに対して、確率が50%を超える値が予測されます。

ROCは、X-Y軸上の曲線として描くことができます。X軸を偽陽性率にします。Y軸を真陽性率にします。偽陽性とは、陰性であるものがテスト・データで陽性と予測されることです。真陽性とは、陽性であるものがテスト・データで陽性と予測されることです。

COMPUTE_ROCは、次の2つの入力ストリームを受け入れます。

- テスト・データに対して生成された予測結果。この情報は、次の3つの列で渡されます。

- ケースID列

- 予測列

- 確率が格納されているスコアリング基準列

- テスト・データの既知のターゲット値。この情報は、次の2つの列で渡されます。

- ケースID列

- 既知のターゲット値が格納されているターゲット列

関連項目:

ROCおよび分類用のテスト指標値の詳細は、『Oracle Data Mining概要』を参照してください。

「COMPUTE_CONFUSION_MATRIXプロシージャ」

「COMPUTE_LIFTプロシージャ」

構文

DBMS_DATA_MINING.COMPUTE_ROC (
roc_area_under_curve         OUT NUMBER,
apply_result_table_name      IN  VARCHAR2,
target_table_name            IN  VARCHAR2,
case_id_column_name          IN  VARCHAR2,
target_column_name           IN  VARCHAR2,
roc_table_name               IN  VARCHAR2,
positive_target_value        IN  VARCHAR2,
score_column_name            IN  VARCHAR2 DEFAULT 'PREDICTION',
score_criterion_column_name  IN  VARCHAR2 DEFAULT 'PROBABILITY',
apply_result_schema_name     IN  VARCHAR2 DEFAULT NULL,
target_schema_name           IN  VARCHAR2 DEFAULT NULL);

パラメータ

表45-39 COMPUTE_ROCプロシージャのパラメータ

パラメータ

説明

roc_area_under_the_curve

ROC曲線(AUC)の下部の面積が含まれる出力パラメータ。AUCによって、実際の陽性が陽性として予測される可能性が測定されます。

AUCが大きいほど、ポジティブ・クラスの予測とネガティブ・クラスの予測の間のトレードオフに対応するモデルの柔軟性が高くなります。AUCは、あるターゲット・クラスが別のターゲット・クラスと比較して、特定されるのが稀な場合または特定することがより重要な場合に、特に重要となります。

apply_result_table_name

予測結果が含まれる表。

target_table_name

テスト・データの既知のターゲット値が含まれる表。

case_id_column_name

適用結果表のケースID列。ターゲット表のケースIDと一致する必要があります。

target_column_name

ターゲット表のターゲット列。テスト・データの既知のターゲット値が格納されます。

roc_table_name

ROC出力が含まれる表。この表は、このプロシージャによってユーザーのスキーマ内に作成されます。

ROC表の列については、「使用上の注意」を参照してください。

positive_target_value

ポジティブ・クラス。ROCの計算対象となるクラスです。

ターゲット列がNUMBERである場合は、TO_CHAR()演算子を使用して数値を文字列に変換します。

score_column_name

適用結果表の予測結果が格納される列。

デフォルトの列名は'PREDICTION'です。この列名は、APPLYプロシージャで作成されるデフォルト名です(「APPLYプロシージャ」を参照)。

score_criterion_column_name

適用結果表のスコアリング基準値が格納される列。予測を決定する確率が格納されます。

デフォルトの列名は'PROBABILITY'です。この列名は、APPLYプロシージャで作成されるデフォルト名です(「APPLYプロシージャ」を参照)。

apply_result_schema_name

適用結果表のスキーマ。

NULLの場合、ユーザーのスキーマと想定されます。

target_schema_name

既知のターゲットが含まれている表のスキーマ。

NULLの場合、ユーザーのスキーマと想定されます。

使用上の注意

- COMPUTE_ROCに渡す予測情報は、SQLファンクションPREDICTION、DBMS_DATA_MINING.APPLYプロシージャまたはその他のメカニズムを使用して生成できます。プロシージャは、渡すデータが適切な場合にかぎり、受信者操作特性を計算できます。

- COMPUTE_ROCに渡す予測情報は、apply_results_table_nameで指定した表またはビューに格納されます。

CREATE TABLE apply_result_table_name AS (
case_id_column_name            VARCHAR2,
score_column_name              VARCHAR2,
score_criterion_column_name    VARCHAR2);

- COMPUTE_ROCで作成される表には、表45-40に示す列があります。

表45-40 COMPUTE_ROCの出力

列

データ・タイプ

probability

BINARY_DOUBLE

true_positives

NUMBER

false_negatives

NUMBER

false_positives

NUMBER

true_negatives

NUMBER

true_positive_fraction

NUMBER

false_positive_fraction

NUMBER

関連項目:
COMPUTE_ROCの出力の詳細は、『Oracle Data Mining概要』を参照してください。

- ROCは、通常、最適な確率しきい値を決定するために使用されます。最適な確立しきい値を決定するには、真陽性率と偽陽性率を調べます。真陽性率とは、陽性であるものが、テスト・データで正しく陽性と予測される割合のことです。偽陽性率とは、陰性であるものが、テスト・データで誤って陽性と予測される割合のことです。
確率しきい値を指定すると、次の文では、適用結果表内の陽性の予測が確率順に戻されます。

SELECT case_id_column_name
FROM apply_result_table_name
WHERE probability > probability_threshold
ORDER BY probability DESC;

- 最適な確率しきい値を特定するには、2つの方法があります。どちらの方法を採用するかは、ポジティブ・クラスとネガティブ・クラスを誤って予測した場合の相対コストがわかっているかどうかで決まります。
コストがわかっている場合は、相対コストをROC表に適用して、コストが最小になる確率しきい値を計算します。相対コスト比率が20 (ポジティブ・クラスの誤りコスト÷ネガティブ・クラスの誤りコスト= 20)であるとします。次のような問合せを実行します。

WITH cost AS (
SELECT probability_threshold, 20 * false_negatives + false_positives cost
FROM ROC_table
GROUP BY probability_threshold),
minCost AS (
SELECT min(cost) minCost
FROM cost)
SELECT max(probability_threshold)probability_threshold
FROM cost, minCost
WHERE cost = minCost;

相対コストが明確にわかっていない場合は、ROC表の値を確率しきい値の昇順に並べ替えて表示し、表示されたトレードオフ(誤って分類されたポジティブ・クラスとネガティブ・クラスの比率)のうち、どのトレードオフ値が最適であるのかを判断できます。

SELECT * FROM ROC_table
ORDER BY probability_threshold;

例

ここに示す例では、Naive Bayesモデルnb_sh_clas_sampleが使用されています。このモデルは、Oracle Data Miningのサンプル・プログラムによって作成されます。

次の文は、テスト・データにモデルを適用し、予測結果と確率を表に格納します。

CREATE TABLE nb_apply_results AS
SELECT cust_id, t.prediction, t.probability
FROM mining_data_test_v, TABLE(PREDICTION_SET(nb_sh_clas_sample USING *)) t;

テスト・データの予測値とターゲット値を使用して、次のようにROCを計算できます。

DECLARE
v_area_under_curve NUMBER;
BEGIN
DBMS_DATA_MINING.COMPUTE_ROC (
roc_area_under_curve                  => v_area_under_curve,
apply_result_table_name       => 'nb_apply_results',
target_table_name               => 'mining_data_test_v',
case_id_column_name            => 'cust_id',
target_column_name             => 'affinity_card',
roc_table_name                     => 'nb_roc',
positive_target_value         => '1',
score_column_name               => 'PREDICTION',
score_criterion_column_name   => 'PROBABILITY');
DBMS_OUTPUT.PUT_LINE('**** AREA UNDER ROC CURVE ****: ' ||
ROUND(v_area_under_curve,4));
END;
/

生成されるAUCおよび選択されたROC表の列は、次のように表示されます。

**** AREA UNDER ROC CURVE ****: .8212

SQL> SELECT probability, true_positive_fraction, false_positive_fraction
FROM nb_roc;

PROBABILITY  TRUE_POSITIVE_FRACTION  FALSE_POSITIVE_FRACTION
-----------  ----------------------  -----------------------
.00000                       1                        1
.50018              .826589595               .227902946
.53851              .823699422               .221837088
.54991              .820809249               .217504333
.55628              .815028902               .215771231
.55628              .817919075               .215771231
.57563              .800578035               .214904679
.57563              .812138728               .214904679
.                   .                        .
.                   .                        .
.                   .                        .

CREATE_MODELプロシージャ

このプロシージャは、特定のマイニング機能を持つマイニング・モデルを作成します。

xform_listをCREATE_MODELに渡すと、入力データで実行される変換のリストを指定できます。PREP_AUTO設定を有効にすると、自動変換に加えてその変換が使用されます。PREP_AUTO設定を無効にすると、指定した変換のみがモデルで実装されます。いずれの場合も、変換定義はモデルに埋め込まれ、モデルが適用されるたびに自動的に実行されます。「自動データ準備」を参照してください。

構文

DBMS_DATA_MINING.CREATE_MODEL (
model_name            IN VARCHAR2,
mining_function       IN VARCHAR2,
data_table_name       IN VARCHAR2,
case_id_column_name   IN VARCHAR2,
target_column_name    IN VARCHAR2 DEFAULT NULL,
settings_table_name   IN VARCHAR2 DEFAULT NULL,
data_schema_name      IN VARCHAR2 DEFAULT NULL,
settings_schema_name  IN VARCHAR2 DEFAULT NULL,
xform_list            IN TRANSFORM_LIST DEFAULT NULL);

パラメータ

表45-41 CREATE_MODELプロシージャのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

モデルのネーミングにおける制限については、「使用上の注意」を参照してください。

mining_function

マイニング機能。この値のリストについては、表45-3「マイニング機能」を参照してください。

data_table_name

作成データが含まれる表またはビュー。

case_id_column_name

作成データのケースID列。

target_column_name

監視ありモデルの場合は、作成データのターゲット列。監視なしモデルの場合は、NULL。

settings_table_name

モデルの作成設定が含まれる表。設定表がない(デフォルトの設定のみが使用されている)場合は、NULL。

data_schema_name

作成データに適用されるスキーマ。NULLの場合、ユーザーのスキーマと想定されます。

settings_schema_name

設定表に適用されるスキーマ。NULLの場合、ユーザーのスキーマと想定されます。

xform_list

自動変換に加えて、または自動変換のかわりに使用される変換のリストで、PREP_AUTO設定の値によって異なります。(「自動データ準備」を参照)

xform_listのデータ・タイプはTRANSFORM_LISTです。これは、TRANSFORM_RECタイプのレコードで構成されます。各TRANSFORM_RECで1つの属性の変換情報を指定します。

TYPE
TRANFORM_REC     IS RECORD (
attribute_name       VARCHAR2(4000),
attribute_subname    VARCHAR2(4000),
expression           EXPRESSION_REC,
reverse_expression   EXPRESSION_REC,
attribute_spec       VARCHAR2(4000));

expressionフィールドは、属性を変換するためのSQL式を格納します。reverse_expressionフィールドは、モデルのディテールの変換を逆変換するためのSQL式を格納します。属性がターゲットの場合は、スコアリング結果の変換を逆変換するためのSQL式を格納します。SQL式は、DBMS_DATA_MINING_TRANSFORMパッケージ内の次のルーチンで操作されます。

- SET_EXPRESSIONプロシージャ

- GET_EXPRESSIONファンクション

- SET_TRANSFORMプロシージャ

attribute_specフィールドは、属性の個々の処理を識別します。詳細は、「使用上の注意」を参照してください。

TRANSFORM_RECタイプの詳細は、表46-1、「DBMS_DATA_MINING_TRANSFORMのデータ・タイプ」を参照してください。

使用上の注意

1. xform_list引数のattribute_specフィールドを使用すると、属性を非構造化テキストとして識別したり、属性に対する自動データ準備を無効にすることができます。attribute_specには、次の値を設定できます。

- TEXT: 属性に非構造化テキストが含まれていることを示します。オプションで、TEXT値の後にOracle Textのポリシー名を続けることができます。(テキスト・ポリシーの作成の詳細は、『Oracle Textリファレンス』のCTX_DDL.CREATE_POLICYに関する項を参照。)
Oracle Data Miningでは、VARCHAR2/CHAR、CLOB、BLOBおよびBFILEの各列をテキストとして処理できます。列がVARCHAR2またはCHARのときにTEXTを指定しないと、Oracle Data Miningによってその列が質的データとして処理されます。列がCLOBの場合、Oracle Data Miningによってデフォルトのテキストとして処理されます(TEXTとして指定する必要はない)。列がBLOBまたはBFILEのときにTEXTを指定しないと、CREATE_MODELはエラーを戻します。

ネストした列またはネストした列の属性に対してTEXTを指定すると、CREATE_MODELはエラーを戻します。

- NOPREP: 属性のADPを無効にします。ADPが無効になっている場合、値NOPREPは無視されます。
NOPREPはネストした列に対して指定できますが、ネストした列の属性に対しては指定できません。ADPが有効なときに、ネストした列の属性に対してNOPREPを指定すると、CREATE_MODELはエラーを戻します。

2. データ・ディクショナリ・ビューを問い合せると、モデルに関する情報を取得できます。

ALL/USER/DBA_MINING_MODELS
ALL/USER/DBA_MINING_MODEL_ATTRIBUTES
ALL/USER/DBA_MINING_MODEL_SETTINGS

3. モデルのディテールを問い合せると、モデルの属性に関する情報を取得できます。

dbms_data_mining.get_model_details_algorithm (model_name)

4. モデルのネーミング規則には、大部分のデータベース・スキーマ・オブジェクトのネーミング規則よりも多くの制限があります。モデル名は、次の要件も満たす必要があります。

- 名前の長さは、25文字までにする必要があります。

- 名前は、引用符で囲まれていない識別子である必要があります。引用符で囲まれていない識別子は、英数字、アンダースコア(_)、ドル記号($)および番号記号(#)のみで構成され、最初の文字はアルファベットである必要があります。引用符で囲まれていないリテラルに、ドル記号および番号記号は使用しないことを強くお薦めします。

スキーマ・オブジェクトのネーミング要件の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

例

最初の例では、サポート・ベクター・マシン・アルゴリズムを使用して分類モデルを作成します。

-- Create the settings table
CREATE TABLE svm_model_settings (
setting_name  VARCHAR2(30),
setting_value VARCHAR2(30));

-- Populate the settings table
-- Specify SVM. By default, Naive Bayes is used for classification.
-- Specify ADP. By default, ADP is not used.
BEGIN
INSERT INTO svm_model_settings (setting_name, setting_value) VALUES
(dbms_data_mining.algo_name, dbms_data_mining.algo_support_vector_machines);
INSERT INTO svm_model_settings (setting_name, setting_value) VALUES
(dbms_data_mining.prep_auto,dbms_data_mining.prep_auto_on);
COMMIT;
END;
/
-- Create the model using the specified settings
BEGIN
DBMS_DATA_MINING.CREATE_MODEL(
model_name          => 'svm_model',
mining_function     => dbms_data_mining.classification,
data_table_name     => 'mining_data_build_v',
case_id_column_name => 'cust_id',
target_column_name  => 'affinity_card',
settings_table_name => 'svm_model_settings');
END;
/

モデル設定は、次の問合せで表示できます。

SELECT * FROM user_mining_model_settings
WHERE model_name IN 'SVM_MODEL';

MODEL_NAME     SETTING_NAME            SETTING_VALUE                  SETTING
-------------  ----------------------  -----------------------------  -------
SVM_MODEL      ALGO_NAME               ALGO_SUPPORT_VECTOR_MACHINES  INPUT
SVM_MODEL      SVMS_KERNEL_CACHE_SIZE  50000000                      DEFAULT
SVM_MODEL      SVMS_ACTIVE_LEARNING    SVMS_AL_ENABLE                DEFAULT
SVM_MODEL      SVMS_STD_DEV            3.004524                      DEFAULT
SVM_MODEL      PREP_AUTO               ON                            INPUT
SVM_MODEL      SVMS_COMPLEXITY_FACTOR  1.887389                      DEFAULT
SVM_MODEL      SVMS_KERNEL_FUNCTION    SVMS_GAUSSIAN                 DEFAULT
SVM_MODEL      SVMS_CONV_TOLERANCE     .001                          DEFAULT

次の例では、異常検出モデルを作成します。異常検出では、ターゲットなしでSVM分類が使用されます。この例では、最初の例でSVM分類モデル用に作成した設定表と同じ設定表を使用します。

BEGIN
DBMS_DATA_MINING.CREATE_MODEL(
model_name          => 'anomaly_detect_model',
mining_function     => dbms_data_mining.classification,
data_table_name     => 'mining_data_build_v',
case_id_column_name => 'cust_id',
target_column_name  => null,
settings_table_name => 'svm_model_settings');
END;
/

この問合せは、これらの例で作成されたモデルが、スキーマで唯一のモデルであることを示しています。

SELECT model_name, mining_function, algorithm FROM user_mining_models;

MODEL_NAME              MINING_FUNCTION      ALGORITHM
----------------------  -------------------- ------------------------------
SVM_MODEL               CLASSIFICATION       SUPPORT_VECTOR_MACHINES
ANOMALY_DETECT_MODEL    CLASSIFICATION       SUPPORT_VECTOR_MACHINES

この問合せは、ターゲットがあるのはこのSVM分類モデルのみであることを示しています。

SELECT model_name, attribute_name, attribute_type, target
FROM user_mining_model_attributes
WHERE target = 'YES';

MODEL_NAME          ATTRIBUTE_NAME   ATTRIBUTE_TYPE     TARGET
------------------  ---------------  -----------------  ------
SVM_MODEL           AFFINITY_CARD    CATEGORICAL         YES

DROP_MODELプロシージャ

このプロシージャは、指定したマイニング・モデルを削除します。

構文

DBMS_DATA_MINING.DROP_MODEL (model_name IN VARCHAR2,
force      IN BOOLEAN DEFAULT FALSE);

パラメータ

表45-42 DROP_MODELプロシージャのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のマイニング・モデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

force

無効な場合でも、マイニング・モデルの消去を強制実行。マイニング・モデルは、モデルの作成プロセスが重大なシステム・エラーで中断された場合に無効になることがあります。

使用上の注意

マイニング・モデルを削除するには、そのモデルの所有者であるか、またはDROP ANY MINING MODEL権限が必要です。データ・マイニングの権限の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

例

次のコマンドを使用すると、スキーマに存在するnb_sh_clas_sampleという名前の有効なマイニング・モデルを削除できます。

BEGIN
DBMS_DATA_MINING.DROP_MODEL(model_name => 'nb_sh_clas_sample');
END;
/

EXPORT_MODELプロシージャ

このプロシージャは、指定されたデータ・マイニング・モデルをダンプ・ファイル・セットにエクスポートします。ダンプ・ファイル・セットからモデルをインポートするには、IMPORT_MODELプロシージャを使用します。EXPORT_MODELおよびIMPORT_MODELでは、Oracle Data Pumpテクノロジが使用されています。

Oracle Data Pumpを使用してスキーマ全体またはデータベース全体をエクスポートまたはインポートする場合、そのスキーマまたはデータベースのマイニング・モデルが含められます。ただし、EXPORT_MODELおよびIMPORT_MODELは、個々のモデルのエクスポートとインポートをサポートする唯一のユーティリティです。

関連項目:

Oracle Data Pumpの詳細は、『Oracle Databaseユーティリティ』を参照してください。

マイニング・モデルのエクスポートおよびインポートの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

構文

DBMS_DATA_MINING.EXPORT_MODEL (
filename          IN VARCHAR2,
directory         IN VARCHAR2,
model_filter      IN VARCHAR2 DEFAULT NULL,
filesize          IN VARCHAR2 DEFAULT NULL,
operation         IN VARCHAR2 DEFAULT NULL,
remote_link       IN VARCHAR2 DEFAULT NULL,
jobname           IN VARCHAR2 DEFAULT NULL);

パラメータ

表45-43 EXPORT_MODELプロシージャのパラメータ

パラメータ

説明

filename

モデルのエクスポート先のダンプ・ファイル・セットの名前。この名前は、スキーマ内で一意である必要があります。

ダンプ・ファイル・セットには1つ以上のファイルを保存できます。ダンプ・ファイル・セットのファイルの個数は、エクスポートするモデルのサイズ(メタデータとデータの両方)および指定または推定された最大ファイル・サイズによって決まります。ファイル・サイズは、filesizeパラメータで指定することも、operationパラメータを使用してOracle Data Pumpでファイル・サイズを推定することもできます。エクスポートするモデルのサイズが最大ファイル・サイズより大きい場合は、1つ以上の追加ファイルが作成されます。

エクスポート操作が正常に終了すると、ダンプ・ファイル・セット内にファイルが1つしか存在しない場合でも、ダンプ・ファイル・セットの名前が自動的にfilename01.dmpという形式に拡張されます。追加ファイルがある場合は、filename02.dmp、filename03.dmpのように連続したファイル名が使用されます。

directory

ダンプ・ファイル・セットの作成場所を指定する、事前定義済のディレクトリ・オブジェクトの名前。

エクスポートするユーザーには、このディレクトリ・オブジェクト、およびこのディレクトリ・オブジェクトによって指定されるファイル・システム・ディレクトリに対する読取り/書込み権限が必要です。

ディレクトリ・オブジェクトの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

model_filter

エクスポートするモデルを指定するパラメータ(オプション)。model_filterの値を指定しない場合は、スキーマ内のすべてのモデルがエクスポートされます。また、NULL(デフォルト)または'ALL'を指定しても、すべてのモデルをエクスポートできます。

マイニング機能またはアルゴリズムに基づいて、モデルの名前およびグループ別に個々のモデルをエクスポートできます。たとえば、すべての回帰モデルまたはすべてのNaive Bayesモデルをエクスポートできます。例は、表45-44を参照してください。

filesize

ダンプ・ファイル・セット内のファイルの最大サイズを指定するパラメータ(オプション)。サイズは、バイト単位、キロバイト単位(KB)、メガバイト単位(MB)、ギガバイト単位(GB)で指定可能です。デフォルトのサイズは50MBです。

エクスポートするモデルのサイズがfilesizeより大きい場合は、ダンプ・セット内に1つ以上の追加ファイルが作成されます。詳細は、filenameパラメータの説明を参照してください。

operation

ダンプ・ファイル・セット内のファイルのサイズを推定するかどうかを指定するパラメータ(オプション)。デフォルトでは、ファイルのサイズは推定されず、filesizeパラメータの値によって決まります。

operationには、次のいずれかの値を指定できます。

- 'EXPORT': すべてのモデルまたは指定したモデルをエクスポートします。(デフォルト)。

- 'ESTIMATE': エクスポートするモデルのサイズを推定します。

remote_link

リモート・システムへのデータベース・リンクの名前を指定するオプション・パラメータ。デフォルト値はNULLです。データベース・リンクはローカル・データベースのスキーマ・オブジェクトであり、これを使用すると、リモート・データベース上のオブジェクトにアクセスできます。remote_linkの値を指定することで、リモート・データベース内のモデルをエクスポートできます。リモート・モデルのエクスポートには、EXP_FULL_DATABASEロールが必要です。また、EXP_FULL_DATABASE権限、CREATE DATABASE LINK権限およびその他の権限が必要になることもあります。

jobname

エクスポート・ジョブの名前を指定するパラメータ(オプション)。デフォルトでは、username_exp_nnnnという形式の名前になります(nnnnは数字です)。たとえば、SCOTTスキーマ内のジョブ名は、SCOTT_exp_134のようになります。

ジョブ名を指定する場合は、スキーマ内で一意の名前を指定する必要があります。ジョブ名の最大長は30文字です。

エクスポート・ジョブのログ・ファイルが、jobname.logという名前で、ダンプ・ファイル・セットと同じディレクトリに作成されます。

使用上の注意

model_filterパラメータは、エクスポートするモデルを指定します。名前別にモデルを指定したり、同じマイニング機能またはアルゴリズムを持つモデルをすべて指定できます。USER_MINING_MODELSビューを問い合せると、スキーマ内のモデルを表示できます。

SQL> describe user_mining_models
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
MODEL_NAME                                NOT NULL VARCHAR2(30)
MINING_FUNCTION                                    VARCHAR2(30)
ALGORITHM                                          VARCHAR2(30)
CREATION_DATE                             NOT NULL DATE
BUILD_DURATION                                     NUMBER
MODEL_SIZE                                         NUMBER
COMMENTS                                           VARCHAR2(4000)

表45-44に、モデル・フィルタの例を示します。

表45-44 モデル・フィルタ・パラメータのサンプル値

サンプル値

意味

'mymodel'

mymodelという名前のモデルをエクスポートします。

'name= ''mymodel'''

mymodelという名前のモデルをエクスポートします。

'name IN (''mymodel2'',''mymodel3'')'

mymodel2およびmymodel3という名前のモデルをエクスポートします。

'ALGORITHM_NAME = ''NAIVE_BAYES'''

すべてのNaive Bayesモデルをエクスポートします。アルゴリズム名のリストについては、表45-5を参照してください。

'FUNCTION_NAME =''CLASSIFICATION'''

すべての分類モデルをエクスポートします。マイニング機能のリストについては、表45-3を参照してください。

例

1. 次の文では、DMUSER3スキーマ内のすべてのモデルが、$ORACLE_HOME/rdbms/logディレクトリのmodels_outというダンプ・ファイル・セットにエクスポートされます。このディレクトリは、DATA_PUMP_DIRというディレクトリ・オブジェクトにマップされています。DMUSER3ユーザーには、このディレクトリおよびディレクトリ・オブジェクトへの読取り/書込みアクセス権があります。

SQL>execute dbms_data_mining.export_model ('models_out', 'DATA_PUMP_DIR');

SQL*Plusを終了し、作成されたダンプ・ファイルおよびログ・ファイルを表示できます。

SQL>EXIT
>cd $ORACLE_HOME/rdbms/log
>ls
>DMUSER3_exp_1027.log  models_out01.dmp

2. 次の例は、同じディレクトリ・オブジェクトを使用し、同じユーザーによって実行されます。NMF_SH_SAMPLEというモデルおよびSVMR_SH_REGR_SAMPLEというモデルが、同じディレクトリ内の別々のダンプ・ファイル・セットにエクスポートされます。

SQL>EXECUTE DBMS_DATA_MINING.EXPORT_MODEL ( 'models2_out', 'DATA_PUMP_DIR',
'name in (''NMF_SH_SAMPLE'', ''SVMR_SH_REGR_SAMPLE'')');
SQL>EXIT
>cd $ORACLE_HOME/rdbms/log
>ls
>DMUSER3_exp_1027.log  models_out01.dmp
DMUSER3_exp_924.log  models2_out01.dmp

3. 次の例では、特定のアルゴリズム名とマイニング機能名を指定してモデルをエクスポートする方法を示します。

SQL>EXECUTE DBMS_DATA_MINING.EXPORT_MODEL('algo.dmp','DM_DUMP',
'ALGORITHM_NAME IN (''O_CLUSTER'',''GENERALIZED_LINEAR_MODEL'',
''SUPPORT_VECTOR_MACHINES'',''NAIVE_BAYES'')');

SQL>EXECUTE DBMS_DATA_MINING.EXPORT_MODEL('func.dmp', 'DM_DUMP',
'FUNCTION_NAME IN (CLASSIFICATION,CLUSTERING,FEATURE_EXTRACTION)');

GET_ASSOCIATION_RULESファンクション

このテーブル・ファンクションは、相関モデルによって作成されたルールを戻します。

フィルタ条件を指定して、ルールのサブセットをGET_ASSOCIATION_RULESから戻すことができます。このテーブル・ファンクションのパフォーマンスは、フィルタ条件によって向上させることができます。ルールの数が多い場合は、topnパラメータを指定するとパフォーマンスが最適化されます。

構文

DBMS_DATA_MINING.GET_ASSOCIATION_RULES (
model_name            IN VARCHAR2,
topn                  IN NUMBER                 DEFAULT NULL,
rule_id               IN NUMBER (38)            DEFAULT NULL,
min_confidence        IN NUMBER                 DEFAULT NULL,
min_support           IN NUMBER                 DEFAULT NULL,
max_rule_length       IN NUMBER (38)            DEFAULT NULL,
min_rule_length       IN NUMBER (38)            DEFAULT NULL,
sort_order            IN ORA_MINING_VARCHAR2_NT DEFAULT NULL,
antecedent_items      IN DM_ITEMS               DEFAULT NULL,
consequent_items      IN DM_ITEMS               DEFAULT NULL,
min_lift              IN NUMBER                 DEFAULT NULL)
RETURN DM_RULES PIPELINED;

パラメータ

表45-45 GET_ASSOCIATION_RULESファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

これは、GET_ASSOCIATION_RULESの唯一の必須パラメータです。他のすべてのパラメータは、戻すルールのフィルタをオプションで設定します。

topn

まず信頼度、次に支持度に基づいて降順でルールを並べ、上位n個のルールを戻します。ソート順序を指定すると、そのソートの実行後に上位n個のルールが導出されます。

topnが指定され、ルールの最大長も最小長も指定されていない場合、ソート順序に指定できる列はRULE_CONFIDENCEおよびRULE_SUPPORTのみです。topnが指定され、ルールの最大長または最小長が指定されている場合は、RULE_CONFIDENCE、RULE_SUPPORTおよびNUMBER_OF_ITEMSをソート順序に指定できます。

rule_id

戻すルールの識別子。rule_idの値を指定する場合は、他のフィルタ・パラメータの値は指定しないでください。

min_confidence

この数値以上の信頼度を持つルールを戻します。

min_support

この数値以上の支持値を持つルールを戻します。

max_rule_length

この数値以下の長さを持つルールを戻します。

ルールの長さとは、ルール内の項目数のことです(表45-46の「NUMBER_OF_ITEMS」を参照)。たとえば、ルールA=>B(AならばB)の項目の数は2です。

max_rule_lengthが指定されている場合は、ソート順序にNUMBER_OF_ITEMSを指定できます。

min_rule_length

この数値以上の長さを持つルールを戻します。ルールの長さについては、「max_rule_length」を参照してください。

min_rule_lengthが指定されている場合は、ソート順序にNUMBER_OF_ITEMSを指定できます。

sort_order

戻される1つ以上の列の値に基づいてルールをソートします。列名の後にASC(昇順)またはDESC(降順)を追加して、1つ以上の列名を指定します。(列名については、表45-46、「GET_ASSOCIATION RULESファンクションの戻り値」を参照してください。)

たとえば、結果セットを、まずNUMBER_OF_ITEMS列に基づいて降順でソートし、次にRULE_CONFIDENCE列に基づいて降順でソートする場合は、次のように指定します。

ORA_MINING_VARCHAR2_NT('NUMBER_OF_ITEMS DESC', 'RULE_CONFIDENCE DESC')

topnを指定した場合、結果はソート順序によって変わります。

デフォルトでは、結果は、まず信頼度に基づいて降順でソートされ、次に支持度に基づいて降順でソートされます。

antecedent_items

これらの項目が前件にあるルールを戻します。

consequent_items

この項目が後件にあるルールを戻します。

min_lift

この数値以上のリフトを持つルールを戻します。

戻り値

GET_ASSOCIATION_RULESによって戻されるオブジェクト・タイプが、表45-46で説明されています。各フィールドの説明については、「使用上の注意」を参照してください。

表45-46 GET_ASSOCIATION RULESファンクションの戻り値

戻り値

説明

DM_RULES

DM_RULEタイプの行の集合。この行には、次の列があります。

(rule_id              INTEGER,
antecedent           DM_PREDICATES,
consequent           DM_PREDICATES,
rule_support         NUMBER,
rule_confidence      NUMBER,
rule_lift            NUMBER,
antecedent_support   NUMBER,
consequent_support   NUMBER,
number_of_items      INTEGER )

antecedent列およびconsequent列は、それぞれDM_PREDICATESタイプのネストした表を戻します。その行(DM_PREDICATEタイプ)には、次の列があります。

(attribute_name            VARCHAR2(4000),
attribute_subname         VARCHAR2(4000),
conditional_operator      CHAR(2)/*=,<>,<,>,<=,>=*/,
attribute_num_value       NUMBER,
attribute_str_value       VARCHAR2(4000),
attribute_support         NUMBER,
attribute_confidence      NUMBER)

使用上の注意

1. このテーブル・ファンクションは、DM_RULESタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

2. ORA_MINING_VARCHAR2_NTタイプは、VARCHAR2(4000)の表として定義されます。

3. GET_ASSOCIATION_RULESによって戻される列は、次のとおりです。(DM_RULE列のデータ・タイプについては、表45-46を参照してください。)

DM_RULESの列

説明

rule_id

ルールの一意の識別子

antecedent

ルール内の独立の条件。この条件が存在する場合は、後件に依存条件も存在します。
条件は、述語(DM_PREDICATE)と呼ばれる属性値の組み合わせです。述語は、属性ごとの条件を指定します。条件としては、指定の値に等しい(=)、等しくない(<>)、より大(>)、より小(<)、以上(>=)、または以下(<=)を指定できます。

前件の属性条件ごとに、支持度と信頼度が述語に戻されます。支持度は、前件を満たすトランザクションの数です。信頼度は、トランザクションが前件を満たす確度です。

注意: DM_PREDICATE属性があることは、トランザクションに項目が存在することを示しています。attribute_num_valueまたはattribute_str_valueの実際の値に意味はありません。たとえば、次の述語は、属性値がNULLでもトランザクションにMouse Padが存在していることを示しています。

DM_PREDICATE('PROD_NAME',
'Mouse Pad', '= ', NULL, NULL, NULL, NULL))

consequent

ルール内の依存条件。後件が存在する場合に、この条件が存在します。
後件は、前件と同様に述語(DM_PREDICATE)です。

後件の属性条件ごとに、支持度と信頼度が述語に戻されます。支持度は、後件を満たすトランザクションの数です。信頼度は、トランザクションが後件を満たす確度です。

rule_support

ルールを満たすトランザクションの数。

rule_confidence

トランザクションがルールを満たす確度。

rule_lift

ルールが満たされた場合に、ランダムな可能性を上回る予測の改善の程度。

antecedent_support

トランザクションの合計数に対する、前件を満たすトランザクションの数の割合。

consequent_support

トランザクションの合計数に対する、後件を満たすトランザクションの数の割合。

number_of_items

ルールの前件と後件で参照される属性の合計数。

例

次の例では、相関モデルを作成した後、テーブル・ファンクションGET_ASSOCIATION_RULESを数回コールしています。

-- prepare a settings table to override default settings
CREATE TABLE market_settings AS
SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_DEFAULT_SETTINGS)
WHERE setting_name LIKE 'ASSO_%';
BEGIN
-- update the value of the minimum confidence
UPDATE market_settings
SET setting_value = TO_CHAR(0.081)
WHERE setting_name = DBMS_DATA_MINING.asso_min_confidence;

-- build an AR model
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'market_model',
function => DBMS_DATA_MINING.ASSOCIATION,
data_table_name => 'market_build',
case_id_column_name => 'item_id',
target_column_name => NULL,
settings_table_name => 'market_settings');
END;
/
-- View the (unformatted) rules
SELECT rule_id, antecedent, consequent, rule_support,
rule_confidence
FROM TABLE(DBMS_DATA_MINING.GET_ASSOCIATION_RULES('market_model'));

前述の例では、すべてのルールが表示されます。上位20個のルールのみを表示するには、次の文を使用します。

-- View the top 20 (unformatted) rules
SELECT rule_id, antecedent, consequent, rule_support,
rule_confidence
FROM TABLE(DBMS_DATA_MINING.GET_ASSOCIATION_RULES('market_model', 20));

次の問合せでは、相関モデルAR_SH_SAMPLEが使用されていますが、このモデルは、Oracle Data Miningのサンプル・プログラムから作成されます。(サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照。)

SELECT * FROM TABLE (
DBMS_DATA_MINING.GET_ASSOCIATION_RULES (
'AR_SH_SAMPLE', 10, NULL, 0.5, 0.01, 2, 1,
ORA_MINING_VARCHAR2_NT (
'NUMBER_OF_ITEMS DESC', 'RULE_CONFIDENCE DESC', 'RULE_SUPPORT DESC'),
DM_ITEMS(DM_ITEM('CUSTPRODS', 'Mouse Pad', 1, NULL),
DM_ITEM('CUSTPRODS', 'Standard Mouse', 1, NULL)),
DM_ITEMS(DM_ITEM('CUSTPRODS', 'Extension Cable', 1, NULL))));

この問合せは、次のように3つのルールを戻します。

13  DM_PREDICATES(
DM_PREDICATE('CUSTPRODS', 'Mouse Pad', '= ', 1, NULL, NULL, NULL),
DM_PREDICATE('CUSTPRODS', 'Standard Mouse', '= ', 1, NULL, NULL, NULL))
DM_PREDICATES(
DM_PREDICATE('CUSTPRODS', 'Extension Cable', '= ', 1, NULL, NULL, NULL))
.15532      .84393   2.7075     .18404     .3117   2

11  DM_PREDICATES(
DM_PREDICATE('CUSTPRODS', 'Standard Mouse', '= ', 1, NULL, NULL, NULL))
DM_PREDICATES(
DM_PREDICATE('CUSTPRODS', 'Extension Cable', '= ', 1, NULL, NULL, NULL))
.18085      .56291   1.8059     .32128     .3117   1

9   DM_PREDICATES(
DM_PREDICATE('CUSTPRODS', 'Mouse Pad', '= ', 1, NULL, NULL, NULL))
DM_PREDICATES(
DM_PREDICATE('CUSTPRODS', 'Extension Cable', '= ', 1, NULL, NULL, NULL))
.17766    .55116   1.7682     .32234     .3117   1

GET_FREQUENT_ITEMSETSファンクション

このテーブル・ファンクションは、高頻度項目セットを表す行の集合を相関モデルから戻します。高頻度項目セットの説明は、『Oracle Data Mining概要』を参照してください。

構文

DBMS_DATA_MINING.GET_FREQUENT_ITEMSETS (
model_name          IN VARCHAR2,
topn                IN NUMBER DEFAULT NULL,
max_itemset_length  IN NUMBER DEFAULT NULL)
RETURN DM_ITEMSETS PIPELINED;

パラメータ

表45-47 GET_FREQUENT_ITEMSETSファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

topn

NULL以外の場合は、支持度に基づいて降順でルールを並べ、上位n個の行を戻します。

max_itemset_length

項目セットの最大長。

戻り値

表45-48 GET_FREQUENT_ITEMSETSファンクションの戻り値

戻り値

説明

DM_ITEMSETS

DM_ITEMSETタイプの行の集合。この行には、次の列があります。

(itemsets_id      NUMBER,
items             DM_ITEMS,
support           NUMBER,
number_of_items   NUMBER)

items列は、DM_ITEMSタイプのネストした表を戻します。この行のタイプは、DM_ITEMです。

(attribute_name      VARCHAR2(4000),
attribute_subname    VARCHAR2(4000),
attribute_num_value  NUMBER,
attribute_str_value  VARCHAR2(4000))

使用上の注意

このテーブル・ファンクションは、DM_ITEMSETSタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

例

この例では、相関モデルを作成した後、Oracle SQLからテーブル・ファンクションGET_FREQUENT_ITEMSETSをコールする方法を示します。

-- prepare a settings table to override default settings
CREATE TABLE market_settings AS

SELECT *

FROM TABLE(DBMS_DATA_MINING.GET_DEFAULT_SETTINGS)
WHERE setting_name LIKE 'ASSO_%';
BEGIN
-- update the value of the minimum confidence
UPDATE market_settings
SET setting_value = TO_CHAR(0.081)
WHERE setting_name = DBMS_DATA_MINING.asso_min_confidence;

/* build a AR model */
DBMS_DATA_MINING.CREATE_MODEL(
model_name           => 'market_model',
function             => DBMS_DATA_MINING.ASSOCIATION,
data_table_name      => 'market_build',
case_id_column_name  => 'item_id',
target_column_name   => NULL,
settings_table_name  => 'market_settings');
END;
/

-- View the (unformatted) Itemsets from SQL*Plus
SELECT itemset_id, items, support, number_of_items
FROM TABLE(DBMS_DATA_MINING.GET_FREQUENT_ITEMSETS('market_model'));

前述の例では、すべての項目セットが表示されます。上位20個の項目セットのみを表示するには、次の文を使用します。

-- View the top 20 (unformatted) Itemsets from SQL*Plus
SELECT itemset_id, items, support, number_of_items
FROM TABLE(DBMS_DATA_MINING.GET_FREQUENT_ITEMSETS('market_model', 20));

GET_MODEL_COST_MATRIXファンクション

このファンクションは、指定したモデルに関連付けられたデフォルトのスコアリング・マトリックスの行を戻します。

デフォルトでは、このファンクションは、ADD_COST_MATRIXプロシージャを使用してモデルに追加されたスコアリング・マトリックスを戻します。モデルの作成に使用されるコスト・マトリックスを取得する場合は、matrix_typeにcost_matrix_type_createを指定します。表45-49を参照してください。

「ADD_COST_MATRIXプロシージャ」も参照してください。

構文

DBMS_DATA_MINING.GET_MODEL_COST_MATRIX (
model_name        IN VARCHAR2,
matrix_type       IN VARCHAR2 DEFAULT cost_matrix_type_score)
RETURN DM_COST_MATRIX PIPELINED;

パラメータ

表45-49 GET_MODEL_COST_MATRIXファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

matrix_type

コスト・マトリックスのタイプ。

COST_MATRIX_TYPE_SCORE: スコアリングに使用されるコスト・マトリックス。(デフォルト。)

COST_MATRIX_TYPE_CREATE: モデルの作成に使用されるコスト・マトリックス(ディシジョン・ツリーのみ)。

戻り値

表45-50 GET_MODEL_COST_MATRIXファンクションの戻り値

戻り値

説明

DM_COST_MATRIX

DM_COST_ELEMENTタイプの行の集合。この行には、次の列があります。

actual          VARCHAR2(4000), NUMBER,  predicted       VARCHAR2(4000), cost            NUMBER)

使用上の注意

コスト・マトリックスを使用して作成できるのは、ディシジョン・ツリー・モデルのみです。コスト・マトリックスを使用してディシジョン・ツリー・モデルを作成する場合、モデルの設定表のCLAS_COST_TABLE_NAME設定にコスト・マトリックス表の名前を指定します。表45-7「マイニング機能の設定」を参照してください。

ディシジョン・ツリー・モデルを作成する場合に使用するコスト・マトリックスは、そのモデルに対するデフォルトのスコアリング・マトリックスになります。スコアリング用に異なるコストを指定する場合は、コスト・マトリックス表の値を変更するか、またはREMOVE_COST_MATRIXプロシージャを使用してコスト・マトリックスを削除し、ADD_COST_MATRIXプロシージャを使用して新規コスト・マトリックスを追加できます。

例

この例では、Naive BayesモデルNB_SH_CLAS_SAMPLEに関連付けられたスコアリング・コスト・マトリックスを戻します。

column actual format a10
column predicted format a10
SELECT *
FROM TABLE(dbms_data_mining.get_model_cost_matrix('nb_sh_clas_sample'))
ORDER BY predicted, actual;

ACTUAL     PREDICTED   COST
---------- ---------- -----
0          0            .00
1          0            .75
0          1            .25
1          1            .00

GET_MODEL_DETAILS_AIファンクション

このテーブル・ファンクションは、属性評価モデルのディテールを表す行の集合を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_AI (
model_name         IN VARCHAR2)
RETURN DM_RANKED_ATTRIBUTES PIPELINED;

パラメータ

表45-51 GET_MODEL_DETAILS_AIファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-52 GET_MODEL_DETAILS_AIファンクションの戻り値

戻り値

説明

DM_RANKED_ATTRIBUTES

DM_RANKED_ATTRIBUTEタイプの行の集合。この行には、次の列があります。

(attribute_name          VARCHAR2(4000,
attribute_subname       VARCHAR2(4000),
importance_value        NUMBER,
rank                    NUMBER(38))

例

次の例では、サンプル・プログラムdmaidemo.sqlで作成された属性評価モデルAI_SH_sampleに関するモデルのディテールが戻されます。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

SELECT attribute_name, importance_value, rank
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_AI('AI_SH_sample'))
ORDER BY RANK;

ATTRIBUTE_NAME                           IMPORTANCE_VALUE       RANK
---------------------------------------- ---------------- ----------
HOUSEHOLD_SIZE                                 .151685183          1
CUST_MARITAL_STATUS                            .145294546          2
YRS_RESIDENCE                                   .07838928          3
AGE                                            .075027496          4
Y_BOX_GAMES                                    .063039952          5
EDUCATION                                      .059605314          6
HOME_THEATER_PACKAGE                           .056458722          7
OCCUPATION                                     .054652937          8
CUST_GENDER                                    .035264741          9
BOOKKEEPING_APPLICATION                        .019204751         10
PRINTER_SUPPLIES                                        0         11
OS_DOC_SET_KANJI                               -.00050013         12
FLAT_PANEL_MONITOR                             -.00509564         13
BULK_PACK_DISKETTES                            -.00540822         14
COUNTRY_NAME                                   -.01201116         15
CUST_INCOME_LEVEL                              -.03951311         16

GET_MODEL_DETAILS_EMファンクション

このテーブル・ファンクションは、期待値の最大化モデルによって生成されたクラスタに関する統計を表す行の集合を戻します。

デフォルトでは、EMアルゴリズムによってコンポーネントが上位レベルのクラスタへとグループ化されるため、GET_MODEL_DETAILS_EMは上位レベルのクラスタのみを、その階層とともに戻します。または、EMを構成して、コンポーネントの上位レベルのクラスタへのグループ化を無効にできます。この場合、GET_MODEL_DETAILS_EMは、これらのコンポーネント自体をクラスタとして、階層とともに戻します。表45-10「データ準備と分析用の期待値の最大化設定」を参照してください。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_EM (
model_name         VARCHAR2,
cluster_id         NUMBER    DEFAULT NULL,
attribute          VARCHAR2  DEFAULT NULL,
centroid           NUMBER    DEFAULT 1,
histogram          NUMBER    DEFAULT 1,
rules              NUMBER    DEFAULT 2,
attribute_subname  VARCHAR2  DEFAULT NULL,
topn_attributes    NUMBER    DEFAULT NULL)
RETURN DM_CLUSTERS PIPELINED;

パラメータ

表45-53 GET_MODEL_DETAILS_EMファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

cluster_id

モデル内のクラスタのID。指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。そうでない場合は、すべてのクラスタのディテールが戻されます。

attribute

属性の名前。指定した属性名が有効な場合、その属性のディテールのみが戻されます。そうでない場合は、すべての属性のディテールが戻されます。

centroid

次の値を指定できます。

- 1 : 重心のディテールが戻されます(デフォルト)。

- 0 : 重心のディテールは戻されません。

histogram

次の値を指定できます。

- 1 : ヒストグラムのディテールが戻されます(デフォルト)。

- 0 : ヒストグラムのディテールは戻されません。

rules

次の値を指定できます。

- 2 : ルールのディテールが戻されます(デフォルト)。

- 1 : ルールの要約が戻されます。

- 0 : ルールに関する情報は戻されません。

attribute_subname

ネストした属性の名前。ネストした属性のフルネームの形式は、次のとおりです。

attribute_name.attribute_subname

ここで、attribute_nameは列の名前、attribute_subnameはその列にネストした属性の名前になります。属性がネストしていない場合、attribute_subnameはNULLです。

topn_attributes

セントロイド、ヒストグラムおよびルール・オブジェクトで戻される属性数を制限します。ルール内で最も高い信頼度の値を持つn個の属性のみが戻されます。

ルールに含まれる属性の数がtopnより少ない場合、追加の属性が最大n個までアルファベット順に戻されます。

attributeとtopn_attributesの両方のパラメータを指定した場合、topn_attributesは無視されます。

戻り値

表45-54 GET_MODEL_DETAILS_EMファンクションの戻り値

戻り値

説明

DM_CLUSTERS

DM_CLUSTERタイプの行の集合。この行には、次の列があります。

(id               NUMBER,
cluster_id       VARCHAR2(4000),
record_count     NUMBER,
parent           NUMBER,
tree_level       NUMBER,
dispersion       NUMBER,
split_predicate  DM_PREDICATES,
child            DM_CHILDREN,
centroid         DM_CENTROIDS,
histogram        DM_HISTOGRAMS,
rule             DM_RULES)

注意: 期待値の最大化アルゴリズムでは、dispersionとsplit_predicateを除くすべてのフィールドが使用されます。

DM_CLUSTERのsplit_predicate列は、DM_PREDICATESタイプのネストした表を戻します。各行(DM_PREDICATEタイプ)には、次の列があります。

(attribute_name           VARCHAR2(4000),
attribute_subname        VARCHAR2(4000),
conditional_operator     CHAR(2)
/*=,<>,<,>,<=,>=*/,
attribute_num_value      NUMBER,
attribute_str_value      VARCHAR2(4000),
attribute_support        NUMBER,
attribute_confidence     NUMBER)

DM_CLUSTERのchild列は、DM_CHILDRENタイプのネストした表を戻します。DM_CHILDタイプの行には、NUMBERタイプの列が1つあり、その列にはそれぞれの子の識別子が含まれます。

DM_CLUSTERのcentroid列は、DM_CENTROIDSタイプのネストした表を戻します。その行(DM_CENTROIDタイプ)には、次の列があります。

(attribute_name    VARCHAR2(4000),
attribute_subname  VARCHAR2(4000),
mean               NUMBER,
mode_value         VARCHAR2(4000),
variance           NUMBER)

DM_CLUSTERのhistogram列は、DM_HISTOGRAMSタイプのネストした表を戻します。その行(DM_HISTOGRAM_BINタイプ)には、次の列があります。

(attribute_name    VARCHAR2(4000),
attribute_subname  VARCHAR2(4000),
bin_id             NUMBER,
lower_bound        NUMBER,
upper_bound        NUMBER,
label              VARCHAR2(4000),
count              NUMBER)

DM_CLUSTERのrule列は、DM_RULEタイプの単一行を戻します。その列は次のとおりです。

(rule_id            INTEGER,
antecedent         DM_PREDICATES,
consequent         DM_PREDICATES,
rule_support       NUMBER,
rule_confidence    NUMBER,
rule_lift          NUMBER,
antecedent_support NUMBER,
consequent_support NUMBER,
number_of_items    INTEGER)

antecedent列およびconsequent列は、それぞれDM_PREDICATESタイプのネストした表を戻します。その行(DM_PREDICATEタイプ)には、次の列があります。

(attribute_name           VARCHAR2(4000),
attribute_subname        VARCHAR2(4000),
conditional_operator     CHAR(2)
/*=,<>,<,>,<=,>=*/,
attribute_num_value      NUMBER,
attribute_str_value      VARCHAR2(4000),
attribute_support        NUMBER,
attribute_confidence     NUMBER)

使用上の注意

1. このテーブル・ファンクションは、DM_CLUSTERSタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

2. GET_MODEL_DETAILSファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。

3. クラスタ統計を無効にすると(EMCS_CLUSTER_STATISTICSをEMCS_CLUS_STATS_DISABLEに設定)、GET_MODEL_DETAILS_EMはセントロイド、ヒストグラムまたはルールを戻しません。分類(階層)とクラスタ数のみが戻されます。

4. 述語(DM_PREDICATE)とルール(DM_RULE)の説明については、「GET_ASSOCIATION_RULESファンクション」を参照してください。

GET_MODEL_DETAILS_EM_COMPファンクション

このテーブル・ファンクションは、期待値の最大化モデルのパラメータに関するディテールを表す行の集合を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_EM_COMP (
model_name         VARCHAR2)
RETURN DM_EM_COMPONENT_SET PIPELINED;

パラメータ

表45-55 GET_MODEL_DETAILS_EM_COMPファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-56 GET_MODEL_DETAILS_EM_COMPファンクションの戻り値

戻り値

説明

DM_EM_COMPONENT_SET

DM_EM_COMPONENTタイプの行の集合。この行には、次の列があります。

(info_type             VARCHAR2(30),
component_id          NUMBER,
cluster_id            NUMBER,
attribute_name        VARCHAR2(4000),
covariate_name        VARCHAR2(4000),
attribute_value       VARCHAR2(4000),
value                 NUMBER )

使用上の注意

1. このテーブル・ファンクションは、DM_EM_COMPONENTタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。
GET_MODEL_DETAILS_EM_COMPによって戻された各行の列は次のとおりです。

DM_EM_COMPONENTの列

説明

info_type

行の情報タイプ。次の情報タイプがサポートされています。

- cluster

- prior

- mean

- covariance

- frequency

component_id

コンポーネントの一意の識別子

cluster_id

各コンポーネントの上位レベルのリーフ・クラスタの一意の識別子

attribute_name

元の属性の名前または導出された機能識別子。導出された機能識別子は、ネストした列を持つデータで作成されたモデルで使用されます。導出された機能の定義は、GET_MODEL_DETAILS_EM_PROJファンクションで取得できます。

covariate_name

分散定義または共分散定義で使用される、元の属性の名前または導出された機能識別子。

attribute_value

ビニングされた量的属性の質的値またはビン間隔。

value

次のように、info_typeの値に従って異なる情報がエンコーディングされます。

- cluster: 値フィールドはNULLです

- prior: 値フィールドは直前のコンポーネントを戻します

- mean: 値フィールドは、attribute_nameで指定されている属性の平均を戻します

- covariance: 値フィールドは、attribute_nameおよびcovariate_nameで指定されている属性の共分散を戻します。attribute_nameおよびcovariate_nameの同じ属性を使用して、分散を戻せます。

- frequency: 値フィールドは、attribute_nameおよびattribute_valueで指定されている属性と値の組合せに対応する複数値のベルヌーイ頻度パラメータを戻します。

詳細は、「使用上の注意」の2を参照してください。

2. 次の表に、それぞれのinfo_typeでどのフィールドを使用するかを示します。空白のセルはNULLを表します。

info_type

component_id

cluster_id

attribute_name

covariate_name

attribute_value

value

cluster

X

X

prior

X

X

X

mean

X

X

X

X

covariance

X

X

X

X

X

frequency

X

X

X

X

X

3. GET_MODEL_DETAILSファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。

GET_MODEL_DETAILS_EM_PROJファンクション

このテーブル・ファンクションは、期待値の最大化モデルによって生成された予測に関する統計を表す行の集合を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_EM_PROJ (
model_name         VARCHAR2 )
RETURN DM_EM_PROJECTION_SET PIPELINED;

パラメータ

表45-57 GET_MODEL_DETAILS_EM_PROJファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-58 GET_MODEL_DETAILS_EM_PROJファンクションの戻り値

戻り値

説明

DM_EM_PROJECTION_SET

DM_EM_PROJECTIONタイプの行の集合。この行には、次の列があります。

(feature_name          VARCHAR2(4000),
attribute_name        VARCHAR2(4000),
attribute_subname     VARCHAR2(4000),
attribute_value       VARCHAR2(4000),
coefficient           NUMBER )

詳細は、「使用上の注意」を参照してください。

使用上の注意

1. このテーブル・ファンクションは、DM_EM_PROJECTIONタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。
GET_MODEL_DETAILS_EM_PROJによって戻された各行の列は次のとおりです。

DM_EM_PROJECTIONの列

説明

feature_name

導出された機能の名前。この機能は、GET_MODEL_DETAILS_EMファンクションによって戻されたattribute_nameにマッピングされます。

attribute_name

作成データ内の列の名前

attribute_subname

ネストした列のサブ名

attribute_value

質的値。

coefficient

予測係数。データ表現はまばらなため、ゼロ以外の係数のみが戻されます。

2. GET_MODEL_DETAILSファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。
係数は元の属性ではなく、変換された属性に関連します。係数は、モデルのディテールに直接戻された場合、意味のある情報を表しません。係数が元の属性に関連するようにGET_MODEL_DETAILS_SVMで変換する場合は、reverse_coefパラメータを1に設定します。

GET_MODEL_DETAILS_GLMファンクション

このテーブル・ファンクションは、一般化線形モデルの係数統計を戻します。

線形回帰とロジスティック回帰の両方に対して同じ統計セットが戻されますが、マイニング機能に適用されない統計はNULLとして戻されます。詳細は、「使用上の注意」を参照してください。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_GLM (
model_name             VARCHAR2)
RETURN DM_GLM_COEFF_SET PIPELINED;

パラメータ

表45-59 GET_MODEL_DETAILS_GLMファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-60 GET_MODEL_DETAILS_GLMの戻り値

戻り値

説明

DM_GLM_COEFF_SET

DM_GLM_COEFFタイプの行の集合。この行には、次の列があります。

(class                   VARCHAR2(4000),
attribute_name          VARCHAR2(4000),
attribute_subname       VARCHAR2(4000),
attribute_value         VARCHAR2(4000),
feature_expression      VARCHAR2(4000),
coefficient             NUMBER,
std_error               NUMBER,
test_statistic          NUMBER,
p_value                 NUMBER,
VIF                     NUMBER,
std_coefficient         NUMBER,
lower_coeff_limit       NUMBER,
upper_coeff_limit       NUMBER,
exp_coefficient         BINARY_DOUBLE,
exp_lower_coeff_limit   BINARY_DOUBLE,
exp_upper_coeff_limit   BINARY_DOUBLE)

GET_MODEL_DETAILS_GLMは、属性ごとの統計の行および切片用の追加の1行(属性名のNULL値で識別されます)を戻します。各行のデータ・タイプはDM_GLM_COEFFです。統計については、表45-61で説明します。

表45-61 DM_GLM_COEFFデータ・タイプの説明

列

説明

class

ロジスティック回帰の非参照ターゲット・クラス。このモデルは、このクラスの確率を予測するために作成されます。

その他のクラス(参照クラス)は、モデル設定GLMS_REFERENCE_CLASS_NAMEに指定されます。詳細は、表45-14「GLMの設定」を参照してください。

線形回帰の場合、classはNULLです。

attribute_name

サブ名がない場合は属性名、サブ名がある場合は属性名の最初の部分。attribute_nameの値は、この属性のソースであるケース表の列の名前でもあります。

切片の場合、attribute_nameはNULLです。切片は、SVMモデルのバイアスに相当する用語です。

attribute_subname

ネストした表の属性の名前。ネストした属性のフルネームの形式は、次のとおりです。

attribute_name.attribute_subname

ここで、attribute_nameは、この属性のソースであるケース表のネストした列の名前です。

属性がネストしていない場合、attribute_subnameはNULLです。属性が切片の場合、attribute_nameとattribute_subnameの両方がNULLです。

attribute_value

属性の値(質的属性のみ)。

量的属性の場合、attribute_valueはNULLです。

feature_expression

特徴選択が有効な場合、アルゴリズムによって作成される特徴名です。特徴選択が有効でない場合、この特徴名は、単に完全修飾された属性名になります(属性がネストした列内にあるときはattribute_name.attribute_subnameになる)。

質的属性では、次のような形式の特徴名が作成されます。

fully-qualified_attribute_name.attribute_value

量的属性では、それぞれのコンポーネント属性から平均値を減算して、その結果の積を計算することで、上位の特徴の名前がアルゴリズムによって作成されます。

(attrib1-mean(attrib1))*(attrib2-mean(attrib2))*......

ここで、attrib1とattrib2は、完全修飾された属性名です。

coefficient

線形係数推定値。

std_error

係数推定値の標準誤差。

test_statistic

線形回帰の場合、係数推定値のt値。

ロジスティック回帰の場合、係数推定値のWaldカイ二乗値。

p値

test_statisticの確率。モデルの特定の属性の重要度を分析するのに使用されます。

VIF

分散拡大要因。切片の場合、この値はゼロです。ロジスティック回帰の場合、VIFはNULLです。

std_coefficient

係数の標準化推定値。

lower_coeff_limit

係数の信頼限界値の下限。

upper_coeff_limit

係数の信頼限界値の上限。

exp_coefficient

ロジスティック回帰の指数係数。線形回帰の場合、exp_coefficientはNULLです。

exp_lower_coeff_limit

ロジスティック回帰の場合、係数の信頼限界値の下限に対する指数係数。線形回帰の場合、exp_lower_coeff_limitはNULLです。

exp_upper_coeff_limit

ロジスティック回帰の場合、係数の信頼限界値の指数係数。線形回帰の場合、exp_lower_coeff_limitはNULLです。

使用上の注意

各係数に対して、必ずしもすべての統計が戻されるわけではありません。次の場合、統計はNULLになります。

- マイニング機能に適用されない場合。たとえば、exp_coefficientは線形回帰には適用されません。

- 理論上、計算できない場合。たとえば、リッジ回帰が有効な場合、VIF(有効な場合)以外の統計を含めずに係数の値が戻されます。(リッジ回帰の詳細は、表45-14「GLMの設定」を参照してください。)

- システム・リソースの制限が原因で計算できない場合。

- 値が無限大になる可能性がある場合。

例

次の例では、サンプル・プログラムdmglrdem.sqlで作成されたGLM回帰モデルGLMR_SH_Regr_sampleに関するモデルのディテールの一部が戻されます。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

SQL> SELECT *
FROM (SELECT class, attribute_name, attribute_value, coefficient, std_error
FROM TABLE(dbms_data_mining.get_model_details_glm(
'GLMR_SH_Regr_sample'))
ORDER BY class, attribute_name, attribute_value)
WHERE ROWNUM < 11;

CLASS     ATTRIBUTE_NAME      ATTRIBUTE_VALUE  COEFFICIENT  STD_ERROR
--------- ------------------  ---------------- -----------  ----------
AFFINITY_CARD                         -.60686139   .531250033
BULK_PACK_DISKETTES                   -1.9729645   .924531227
COUNTRY_NAME        Argentina         -1.3340963  1.1942193
COUNTRY_NAME        Australia           -.340504  5.13688361
COUNTRY_NAME        Brazil             5.3855269  1.93197882
COUNTRY_NAME        Canada            4.13393291  2.41283125
COUNTRY_NAME        China              .74409259  3.59923638
COUNTRY_NAME        Denmark           -2.5287879  3.18569293
COUNTRY_NAME        France            -1.0908689  7.18471003
COUNTRY_NAME        Germany           -1.7472166  2.53689456

GET_MODEL_DETAILS_GLOBALファンクション

このテーブル・ファンクションは、モデル全体に関する統計を戻します。グローバルな詳細は、一般化線形モデル、相関ルール、特異値分解および期待値の最大化で使用できます。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_GLOBAL (
model_name     IN  VARCHAR2)
RETURN DM_MODEL_GLOBAL_DETAILS PIPELINED;

パラメータ

表45-62 GET_MODEL_DETAILS_GLOBALファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-63 GET_MODEL_DETAILS_GLOBALファンクションの戻り値

戻り値

説明

DM_MODEL_GLOBAL_DETAILS

DM_MODEL_GLOBAL_DETAILタイプの行のコレクション。この行には、次の列があります。

(global_detail_name   VARCHAR2(30),
global_detail_value   NUMBER)

GLMのグローバルな詳細: 線形回帰

表45-64 線形回帰のグローバルな詳細

GLOBAL_DETAIL_NAME

説明

MODEL_DF

モデルの自由度。

MODEL_SUM_SQUARES

モデルの平方和。

MODEL_MEAN_SQUARE

モデルの平均平方。

F_VALUE

モデルのF値の統計。

MODEL_F_P_VALUE

モデルのF値の確率。

ERROR_DF

誤差の自由度。

ERROR_SUM_SQUARES

誤差の平方和。

ERROR_MEAN_SQUARE

誤差の平均平方。

CORRECTED_TOTAL_DF

修正された総自由度。

CORRECTED_TOT_SS

修正された総平方和。

ROOT_MEAN_SQ

2乗平均平方根誤差。

DEPENDENT_MEAN

依存平均。

COEFF_VAR

変動係数。

R_SQ

R2乗。

ADJUSTED_R_SQUARE

調整済R2乗。

AIC

赤池情報量基準。

SBIC

Schwarzのベイズ情報量基準。

GMSEP

予測の推定平均平方誤差。多変量正規性を想定しています。

HOCKING_SP

HockingのSp統計。

J_P

JP統計(最終予測誤差)。

NUM_PARAMS

パラメータ数(切片を含む係数の数)。

NUM_ROWS

行数。

MODEL_CONVERGED

モデルが収束したかどうか。収束した場合、値は1で、収束しなかった場合は0です。

VALID_COVARIANCE_MATRIX

有効な共分散行列。共分散行列が計算された場合、値は1で、計算されなかった場合は0です。

GLMのグローバルな詳細: ロジスティック回帰

表45-65 ロジスティック回帰のグローバルな詳細

GLOBAL_DETAIL_NAME

説明

AIC_INTERCEPT

切片のみのモデルの適合度に関する赤池の基準。

AIC_MODEL

切片および共変量(予測子)モデルの適合度に関する赤池の基準。

SC_INTERCEPT

切片のみのモデルの適合度に関するSchwarzの基準。

SC_MODEL

切片および共変量(予測子)モデルの適合度に関するSchwarzの基準。

NEG2_LL_INTERCEPT

切片のみのモデルの-2対数尤度。

NEG2_LL_MODEL

モデルの-2対数尤度。

LR_DF

尤度比の自由度。

LR_CHI_SQ

尤度比のカイ二乗値。

LR_CHI_SQ_P_VALUE

尤度比のカイ二乗確率値。

PSEUDO_R_SQ_CS

擬似R二乗(CoxおよびSnell)

PSEUDO_R_SQ_N

擬似R二乗(Nagelkerke)

DEPENDENT_MEAN

依存平均。

PCT_CORRECT

正確な予測の割合。

PCT_INCORRECT

不正確に予測された行の割合。

PCT_TIED

両方のクラスの確率が同じケースの割合。

NUM_PARAMS

パラメータ数(切片を含む係数の数)。

NUM_ROWS

行数。

MODEL_CONVERGED

モデルが収束したかどうか。収束した場合、値は1で、収束しなかった場合は0です。

VALID_COVARIANCE_MATRIX

有効な共分散行列。共分散行列が計算された場合、値は1で、共分散行列が計算されなかった場合は0です。

注意:
リッジ回帰が有効な場合、戻されるグローバルな詳細がより少なくなります。リッジの詳細は、『Oracle Data Mining概要』を参照してください。

相関ルールのグローバルな詳細

単一のグローバルな詳細は、相関モデルによって生成されます。

表45-66 相関ルールのグローバルな詳細

GLOBAL_DETAIL_NAME

説明

RULE_COUNT

モデル内の相関ルールの数。

特異値分解のグローバルな詳細

表45-67 特異値分解のグローバルな詳細

GLOBAL_DETAIL_NAME

説明

NUM_COMPONENTS

モデルで生成される特徴(コンポーネント)の数

SUGGESTED_CUTOFF

モデルの分散値のほとんどが、計算された上位何個の特徴で取得されているかを示す推奨カットオフ。このカットオフ値よりも少ない数の特徴を使用することが、次元削減における有効な方策です。

期待値の最大化のグローバルな詳細

表45-68 期待値の最大化のグローバルな詳細

GLOBAL_DETAIL_NAME

説明

NUM_COMPONENTS

モデルで生成されるコンポーネントの数

NUM_CLUSTERS

モデルで生成されるクラスタの数

LOGLIKELIHOOD

モデルに新しいコンポーネントを追加するために必要とされる、対数尤度ファンクションの値の改善率

例

次の例では、サンプル・プログラムdmglrdem.sqlで作成されたGLM回帰モデルGLMR_SH_Regr_sampleに関するグローバルなモデルのディテールが戻されます。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

SELECT *
FROM TABLE(dbms_data_mining.get_model_details_global(
'GLMR_SH_Regr_sample'))
ORDER BY global_detail_name;
GLOBAL_DETAIL_NAME             GLOBAL_DETAIL_VALUE
------------------------------ -------------------
ADJUSTED_R_SQUARE                       .731412557
AIC                                       5931.814
COEFF_VAR                               18.1711243
CORRECTED_TOTAL_DF                            1499
CORRECTED_TOT_SS                        278740.504
DEPENDENT_MEAN                              38.892
ERROR_DF                                      1433
ERROR_MEAN_SQUARE                       49.9440956
ERROR_SUM_SQUARES                       71569.8891
F_VALUE                                 62.8492452
GMSEP                                    52.280819
HOCKING_SP                              .034877162
J_P                                     52.1749319
MODEL_CONVERGED                                  1
MODEL_DF                                        66
MODEL_F_P_VALUE                                  0
MODEL_MEAN_SQUARE                       3138.94871
MODEL_SUM_SQUARES                       207170.615
NUM_PARAMS                                      67
NUM_ROWS                                      1500
ROOT_MEAN_SQ                            7.06711367
R_SQ                                    .743238288
SBIC                                    6287.79977
VALID_COVARIANCE_MATRIX                          1

GET_MODEL_DETAILS_KMファンクション

このテーブル・ファンクションは、k-Meansクラスタリング・モデルのディテールを表す行の集合を戻します。

モデルに関する特定の情報を要求するようにGET_MODEL_DETAILS_KMの入力を指定すると、問合せのパフォーマンスが向上します。フィルタ・パラメータを指定しない場合、GET_MODEL_DETAILS_KMはモデルに関するすべての情報を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_KM (
model_name          VARCHAR2,
cluster_id          NUMBER    DEFAULT NULL,
attribute           VARCHAR2  DEFAULT NULL,
centroid            NUMBER    DEFAULT 1,
histogram           NUMBER    DEFAULT 1,
rules               NUMBER    DEFAULT 2,
attribute_subname   VARCHAR2  DEFAULT NULL,
topn_attributes     NUMBER    DEFAULT NULL)
RETURN DM_CLUSTERS PIPELINED;

パラメータ

表45-69 GET_MODEL_DETAILS_KMファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

cluster_id

モデル内のクラスタのID。指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。そうでない場合は、すべてのクラスタのディテールが戻されます。

attribute

属性の名前。指定した属性名が有効な場合、その属性のディテールのみが戻されます。そうでない場合は、すべての属性のディテールが戻されます。

centroid

次の値を指定できます。

- 1 : 重心のディテールが戻されます(デフォルト)。

- 0 : 重心のディテールは戻されません。

histogram

次の値を指定できます。

- 1 : ヒストグラムのディテールが戻されます(デフォルト)。

- 0 : ヒストグラムのディテールは戻されません。

rules

次の値を指定できます。

- 2 : ルールのディテールが戻されます(デフォルト)。

- 1 : ルールの要約が戻されます。

- 0 : ルールに関する情報は戻されません。

attribute_subname

ネストした属性の名前。ネストした属性のフルネームの形式は、次のとおりです。

attribute_name.attribute_subname

ここで、attribute_nameは列の名前、attribute_subnameはその列にネストした属性の名前になります。

属性がネストしていない場合、attribute_subnameはNULLです。

topn_attributes

セントロイド、ヒストグラムおよびルール・オブジェクトで戻される属性数を制限します。ルール内で最も高い信頼度の値を持つn個の属性のみが戻されます。

ルールに含まれる属性の数がtopnより少ない場合、追加の属性が最大n個までアルファベット順に戻されます。

attributeとtopn_attributesの両方のパラメータを指定した場合、topn_attributesは無視されます。

戻り値

表45-70 GET_MODEL_DETAILS_KMファンクションの戻り値

戻り値

説明

DM_CLUSTERS

DM_CLUSTERタイプの行の集合。この行には、次の列があります。

(id                   NUMBER,
cluster_id           VARCHAR2(4000),
record_count         NUMBER,
parent               NUMBER,
tree_level           NUMBER,
dispersion           NUMBER,
split_predicate      DM_PREDICATES,
child                DM_CHILDREN,
centroid             DM_CENTROIDS,
histogram            DM_HISTOGRAMS,
rule                 DM_RULE)

DM_CLUSTERのsplit_predicate列は、DM_PREDICATESタイプのネストした表を戻します。各行(DM_PREDICATEタイプ)には、次の列があります。

(attribute_name           VARCHAR2(4000),
attribute_subname        VARCHAR2(4000),
conditional_operator     CHAR(2) /*=,<>,<,>,<=,>=*/,
attribute_num_value      NUMBER,
attribute_str_value      VARCHAR2(4000),
attribute_support        NUMBER,
attribute_confidence     NUMBER)

DM_CLUSTERのchild列は、DM_CHILDRENタイプのネストした表を戻します。DM_CHILDタイプの行には、NUMBERタイプの列が1つあり、その列にはそれぞれの子の識別子が含まれます。

DM_CLUSTERのcentroid列は、DM_CENTROIDSタイプのネストした表を戻します。その行(DM_CENTROIDタイプ)には、次の列があります。

(attribute_name    VARCHAR2(4000),
attribute_subname  VARCHAR2(4000),
mean               NUMBER,
mode_value         VARCHAR2(4000),
variance           NUMBER)

DM_CLUSTERのhistogram列は、DM_HISTOGRAMSタイプのネストした表を戻します。その行(DM_HISTOGRAM_BINタイプ)には、次の列があります。

(attribute_name    VARCHAR2(4000),
attribute_subname  VARCHAR2(4000),
bin_id             NUMBER,
lower_bound        NUMBER,
upper_bound        NUMBER,
label              VARCHAR2(4000),
count              NUMBER)

DM_CLUSTERのrule列は、DM_RULEタイプの単一行を戻します。その列は次のとおりです。

(rule_id            INTEGER,
antecedent         DM_PREDICATES,
consequent         DM_PREDICATES,
rule_support       NUMBER,
rule_confidence    NUMBER,
rule_lift          NUMBER,
antecedent_support NUMBER,
consequent_support NUMBER,
number_of_items    INTEGER)

DM_RULEのantecedent列およびconsequent列は、それぞれDM_PREDICATESタイプのネストした表を戻します。その行(DM_PREDICATEタイプ)には、次の列があります。

(attribute_name           VARCHAR2(4000),
attribute_subname        VARCHAR2(4000),
conditional_operator     CHAR(2)/*=,<>,<,>,<=,>=*/,
attribute_num_value      NUMBER,
attribute_str_value      VARCHAR2(4000),
attribute_support        NUMBER,
attribute_confidence     NUMBER)

使用上の注意

1. このテーブル・ファンクションは、DM_CLUSTERSタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

2. 述語(DM_PREDICATE)とルール(DM_RULE)の説明については、「GET_ASSOCIATION_RULESファンクション」を参照してください。

例

次の例では、サンプル・プログラムdmkmdemo.sqlで作成されたk-Meansクラスタリング・モデルKM_SH_Clus_sampleに関するモデルのディテールが戻されます。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

SELECT T.id           clu_id,
T.record_count rec_cnt,
T.parent       parent,
T.tree_level   tree_level,
T.dispersion   dispersion
FROM (SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_KM(
'KM_SH_Clus_sample'))
ORDER BY id) T
WHERE ROWNUM < 6;

CLU_ID    REC_CNT     PARENT TREE_LEVEL DISPERSION
---------- ---------- ---------- ---------- ----------
1       1500                     1  5.9152211
2        638          1          2 3.98458982
3        862          1          2 5.83732097
4        376          3          3 5.05192137
5        486          3          3 5.42901522

GET_MODEL_DETAILS_NBファンクション

このテーブル・ファンクションは、Naive Bayesモデルのディテールを表す行の集合を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_NB (
model_name      IN       VARCHAR2)
RETURN DM_NB_DETAILS PIPELINED;

パラメータ

表45-71 GET_MODEL_DETAILS_NBファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-72 GET_MODEL_DETAILS_NBファンクションの戻り値

戻り値

説明

DM_NB_DETAILS

DM_NB_DETAILタイプの行の集合。この行には、次の列があります。

(target_attribute_name          VARCHAR2(30),
target_attribute_str_value     VARCHAR2(4000),
target_attribute_num_value     NUMBER,
prior_probability              NUMBER,
conditionals                   DM_CONDITIONALS)

DM_NB_DETAILのconditionals列は、DM_CONDITIONALSタイプのネストした表を戻します。その行(DM_CONDITIONALタイプ)には、次の列があります。

(attribute_name             VARCHAR2(4000),
attribute_subname          VARCHAR2(4000),
attribute_str_value        VARCHAR2(4000),
attribute_num_value        NUMBER,
conditional_probability    NUMBER)

使用上の注意

このテーブル・ファンクションは、DM_NB_DETAILSタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

例

次の問合せは、サンプル・プログラムdmnbdemo.sqlからのものです。モデルNB_SH_Clas_sampleに関するモデルのディテールを戻します。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

この問合せは、トレーニング・データをビンに区分するために使用されたビン境界表からラベルを作成します。属性値をラベルに置き換えます。量的ビンの場合、ラベルは(lower_boundary,upper_boundary]で、質的ビンの場合、ラベルはそのラベルが表す値に一致します。(この質的ラベル表現の方法は、1つの値が1つのビンに対応する場合にのみ有効です。)ターゲットはビンに区分されませんでした。

WITH
bin_label_view AS (
SELECT col, bin, (DECODE(bin,'1','[','(') || lv || ',' || val || ']') label
FROM (SELECT col,
bin,
LAST_VALUE(val) OVER (
PARTITION BY col ORDER BY val
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) lv,
val
FROM nb_sh_sample_num)
UNION ALL
SELECT col, bin, val label
FROM nb_sh_sample_cat
),
model_details AS (
SELECT T.target_attribute_name                                        tname,
NVL(TO_CHAR(T.target_attribute_num_value,T.target_attribute_str_value))
tval,
C.attribute_name                                               pname,
NVL(L.label, NVL(C.attribute_str_value, C.attribute_num_value)) pval,
T.prior_probability                                           priorp,
C.conditional_probability                                      condp
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NB('NB_SH_Clas_sample')) T,
TABLE(T.conditionals) C,
bin_label_view L
WHERE C.attribute_name = L.col (+) AND
(NVL(C.attribute_str_value,C.attribute_num_value) = L.bin(+))
ORDER BY 1,2,3,4,5,6
)
SELECT tname, tval, pname, pval, priorp, condp
FROM model_details
WHERE ROWNUM < 11;

TNAME          TVAL PNAME                     PVAL           PRIORP   CONDP
-------------- ---- ------------------------- ------------- ------- -------
AFFINITY_CARD  0    AGE                       (24,30]         .6500   .1714
AFFINITY_CARD  0    AGE                       (30,35]         .6500   .1509
AFFINITY_CARD  0    AGE                       (35,40]         .6500   .1125
AFFINITY_CARD  0    AGE                       (40,46]         .6500   .1134
AFFINITY_CARD  0    AGE                       (46,53]         .6500   .1071
AFFINITY_CARD  0    AGE                       (53,90]         .6500   .1312
AFFINITY_CARD  0    AGE                       [17,24]         .6500   .2134
AFFINITY_CARD  0    BOOKKEEPING_APPLICATION   0               .6500   .1500
AFFINITY_CARD  0    BOOKKEEPING_APPLICATION   1               .6500   .8500
AFFINITY_CARD  0    BULK_PACK_DISKETTES       0               .6500   .3670

GET_MODEL_DETAILS_NMFファンクション

このテーブル・ファンクションは、Non-Negative Matrix Factorizationモデルのディテールを表す行の集合を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_NMF (
model_name        IN        VARCHAR2)
RETURN DM_NMF_FEATURE_SET PIPELINED;

パラメータ

表45-73 GET_MODEL_DETAILS_NMFファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-74 GET_MODEL_DETAILS_NMFファンクションの戻り値

戻り値

説明

DM_NMF_FEATURE_SET

DM_NMF_FEATUREタイプの行の集合。この行には、次の列があります。

(feature_id          NUMBER,
mapped_feature_id   VARCHAR2(4000),
attribute_set       DM_NMF_ATTRIBUTE_SET)

DM_NMF_FEATUREのattribute_set列は、DM_NMF_ATTRIBUTE_SETタイプのネストした表を戻します。その行(DM_NMF_ATTRIBUTEタイプ)には、次の列があります。

(attribute_name    VARCHAR2(4000),
attribute_subname  VARCHAR2(4000),
attribute_value    VARCHAR2(4000),
coefficient        NUMBER)

使用上の注意

このテーブル・ファンクションは、DM_NMF_FEATURE_SETタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

例

次の例では、サンプル・プログラムdmnmdemo.sqlで作成された特徴抽出モデルNMF_SH_Sampleに関するモデルのディテールが戻されます。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

SELECT * FROM (
SELECT F.feature_id,
A.attribute_name,
A.attribute_value,
A.coefficient
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_NMF('NMF_SH_Sample')) F,
TABLE(F.attribute_set) A
ORDER BY feature_id,attribute_name,attribute_value
) WHERE ROWNUM < 11;

FEATURE_ID ATTRIBUTE_NAME          ATTRIBUTE_VALUE          COEFFICIENT
--------- -----------------------  ---------------- -------------------
1 AFFINITY_CARD                                 .051208078859308
1 AGE                                          .0390513260041573
1 BOOKKEEPING_APPLICATION                      .0512734004239326
1 BULK_PACK_DISKETTES                           .232471260895683
1 COUNTRY_NAME             Argentina          .00766817464479959
1 COUNTRY_NAME             Australia         .000157637881096675
1 COUNTRY_NAME             Brazil              .0031409632415604
1 COUNTRY_NAME             Canada             .00144213099311427
1 COUNTRY_NAME             China             .000102279310968754
1 COUNTRY_NAME             Denmark           .000242424084307513

GET_MODEL_DETAILS_OCファンクション

このテーブル・ファンクションは、O-Clusterクラスタリング・モデルのディテールを表す行の集合を戻します。戻り値の行集合は、モデルの作成時に生成されたクラスタリング・パターンを列挙しています。

モデルに関する特定の情報を要求するようにGET_MODEL_DETAILS_OCの入力を指定すると、問合せのパフォーマンスが向上します。フィルタ・パラメータを指定しない場合、GET_MODEL_DETAILS_OCはモデルに関するすべての情報を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_OC (
model_name         VARCHAR2,
cluster_id         NUMBER    DEFAULT NULL,
attribute          VARCHAR2  DEFAULT NULL,
centroid           NUMBER    DEFAULT 1,
histogram          NUMBER    DEFAULT 1,
rules              NUMBER    DEFAULT 2,
topn_attributes    NUMBER    DEFAULT NULL)
RETURN DM_CLUSTERS PIPELINED;

パラメータ

表45-75 GET_MODEL_DETAILS_OCファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

cluster_id

モデル内のクラスタのID。指定したクラスタIDが有効な場合、そのクラスタのディテールのみが戻されます。そうでない場合は、すべてのクラスタのディテールが戻されます。

attribute

属性の名前。指定した属性名が有効な場合、その属性のディテールのみが戻されます。そうでない場合は、すべての属性のディテールが戻されます。

centroid

次の値を指定できます。

- 1 : 重心のディテールが戻されます(デフォルト)。

- 0 : 重心のディテールは戻されません。

histogram

次の値を指定できます。

- 1 : ヒストグラムのディテールが戻されます(デフォルト)。

- 0 : ヒストグラムのディテールは戻されません。

rules

次の値を指定できます。

- 2 : ルールのディテールが戻されます(デフォルト)。

- 1 : ルールの要約が戻されます。

- 0 : ルールに関する情報は戻されません。

topn_attributes

セントロイド、ヒストグラムおよびルール・オブジェクトで戻される属性数を制限します。ルール内で最も高い信頼度の値を持つn個の属性のみが戻されます。

ルールに含まれる属性の数がtopnより少ない場合、追加の属性が最大n個までアルファベット順に戻されます。

attributeとtopn_attributesの両方のパラメータを指定した場合、topn_attributesは無視されます。

戻り値

表45-76 GET_MODEL_DETAILS_OCファンクションの戻り値

戻り値

説明

DM_CLUSTERS

DM_CLUSTERタイプの行の集合。この行には、次の列があります。

(id               NUMBER,
cluster_id       VARCHAR2(4000),
record_count     NUMBER,
parent           NUMBER,
tree_level       NUMBER,
dispersion       NUMBER,
split_predicate  DM_PREDICATES,
child            DM_CHILDREN,
centroid         DM_CENTROIDS,
histogram        DM_HISTOGRAMS,
rule             DM_RULE)

DM_CLUSTERのsplit_predicate列は、DM_PREDICATESタイプのネストした表を戻します。各行(DM_PREDICATEタイプ)には、次の列があります。

(attribute_name           VARCHAR2(4000),
attribute_subname        VARCHAR2(4000),
conditional_operator     CHAR(2) /*=,<>,<,>,<=,>=*/,
attribute_num_value      NUMBER,
attribute_str_value      VARCHAR2(4000),
attribute_support        NUMBER,
attribute_confidence     NUMBER)

DM_CLUSTERのchild列は、DM_CHILDRENタイプのネストした表を戻します。DM_CHILDタイプの行には、NUMBERタイプの列が1つあり、その列にはそれぞれの子の識別子が含まれます。

DM_CLUSTERのcentroid列は、DM_CENTROIDSタイプのネストした表を戻します。その行(DM_CENTROIDタイプ)には、次の列があります。

(attribute_name    VARCHAR2(4000),
attribute_subname  VARCHAR2(4000),
mean               NUMBER,
mode_value         VARCHAR2(4000),
variance           NUMBER)

DM_CLUSTERのhistogram列は、DM_HISTOGRAMSタイプのネストした表を戻します。その行(DM_HISTOGRAM_BINタイプ)には、次の列があります。

(attribute_name    VARCHAR2(4000),
attribute_subname  VARCHAR2(4000),
bin_id             NUMBER,
lower_bound        NUMBER,
upper_bound        NUMBER,
label              VARCHAR2(4000),
count              NUMBER)

DM_CLUSTERのrule列は、DM_RULEタイプの単一行を戻します。その列は次のとおりです。

(rule_id            INTEGER,
antecedent         DM_PREDICATES,
consequent         DM_PREDICATES,
rule_support       NUMBER,
rule_confidence    NUMBER,
rule_lift          NUMBER,
antecedent_support NUMBER,
consequent_support NUMBER,
number_of_items    INTEGER)

antecedent列およびconsequent列は、それぞれDM_PREDICATESタイプのネストした表を戻します。その行(DM_PREDICATEタイプ)には、次の列があります。

(attribute_name           VARCHAR2(4000),
attribute_subname        VARCHAR2(4000),
conditional_operator     CHAR(2)/*=,<>,<,>,<=,>=*/,
attribute_num_value      NUMBER,
attribute_str_value      VARCHAR2(4000),
attribute_support        NUMBER,
attribute_confidence     NUMBER)

使用上の注意

1. このテーブル・ファンクションは、DM_CLUSTERタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

2. 述語(DM_PREDICATE)とルール(DM_RULE)の説明については、「GET_ASSOCIATION_RULESファンクション」を参照してください。

例

次の例では、サンプル・プログラムdmocdemo.sqlで作成されたクラスタリング・モデルOC_SH_Clus_sampleに関するモデルのディテールが戻されます。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

この例の各クラスタの分割述語は、モデル作成時にクラスタの子にレコードを割り当てるために使用される属性および条件を示します。クラスタ内に移入されたデータをより小さい2つのクラスタに分割する方法に関する重要な情報を提供します。

SELECT clu_id, attribute_name, op, s_value
FROM (SELECT a.id clu_id, sp.attribute_name, sp.conditional_operator op,
sp.attribute_str_value s_value
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_OC(
'OC_SH_Clus_sample')) a,
TABLE(a.split_predicate) sp
ORDER BY a.id, op, s_value)
WHERE ROWNUM < 11;

CLU_ID ATTRIBUTE_NAME       OP S_VALUE
----------- -------------------- ---------------------------------
1 OCCUPATION           IN ?
1 OCCUPATION           IN Armed-F
1 OCCUPATION           IN Cleric.
1 OCCUPATION           IN Crafts
2 OCCUPATION           IN ?
2 OCCUPATION           IN Armed-F
2 OCCUPATION           IN Cleric.
3 OCCUPATION           IN Exec.
3 OCCUPATION           IN Farming
3 OCCUPATION           IN Handler

GET_MODEL_DETAILS_SVDファンクション

このテーブル・ファンクションは、特異値分解モデルに関するディテールを表す行の集合を戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_SVD (
model_name        VARCHAR2,
matrix_type       VARCHAR2 DEFAULT NULL)
RETURN DM_SVD_MATRIX_SET PIPELINED;

パラメータ

表45-77 GET_MODEL_DETAILS_SVDファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

matrix_type

3つのSVDマトリックス・タイプのどれを戻すかを指定します。値は、U、S、VおよびNULLです。matrix_typeがNULL(デフォルト)の場合、すべてのマトリックスが戻されます。

Uマトリックスは、SVDS_U_MATRIX_OUTPUT設定が有効な場合にのみ計算されます。デフォルトでは計算されません。モデルにUマトリックスがないときにmatrix_typeをUに設定すると、空白行の集合が戻されます。表45-20「特異値分解設定」を参照してください。

戻り値

表45-78 GET_MODEL_DETAILS_SVDファンクションの戻り値

戻り値

説明

DM_SVD_MATRIX_SET

DM_SVD_MATRIXタイプの行の集合。この行には、次の列があります。

(matrix_type         CHAR(1),
feature_id          NUMBER,
mapped_feature_id   VARCHAR2(4000),
attribute_name      VARCHAR2(4000),
attribute_subname   VARCHAR2(4000),
case_id             VARCHAR2(4000),
value               NUMBER,
variance            NUMBER,
pct_cum_variance    NUMBER)

詳細は、「使用上の注意」を参照してください。

使用上の注意

1. このテーブル・ファンクションは、DM_SVD_MATRIXタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。
GET_MODEL_DETAILS_SVDによって戻された各行の列は次のとおりです。

DM_SVD_MATRIX_SETの列

説明

matrix_type

マトリックスのタイプ。指定可能な値は、S、VおよびUです。このフィールドはNULLにはなりません。

feature_id

マトリックスが参照する機能。

mapped_feature_id

機能の説明的な名前。

attribute_name

Vマトリックスのコンポーネント・ベースにおける列名。このフィールドは、SマトリックスとUマトリックスではNULLになります。

attribute_subname

Vマトリックスのコンポーネント・ベースにおけるサブ名。ネストした列にのみ適用されます。このフィールドは、SマトリックスとUマトリックスではNULLになります。

case_id

Uマトリックス予測によって記述される作成データ内にある、一意の行識別子。このフィールドは、SマトリックスとVマトリックスではNULLになります。

value

マトリックスの入力値。

variance

コンポーネントに記述された分散値。Sマトリックスの入力値でのみNULLではありません。

pct_cum_variance

コンポーネントに記述された分散の累積率。コンポーネントは、記述した分散値に従って降順でランク付けされます。

2. GET_MODEL_DETAILSでは、離散した値が出力されます。ゼロの値は戻されません。Sマトリックスの対角要素、Vマトリックス・ベースのゼロ以外の係数、およびゼロ以外のUマトリックス予測のみが戻されます。
例外は、データ行によってゼロ以外のUマトリックス予測が生成されなかった場合です。この場合、その行のケースIDが戻されますが、機能識別子とその値はNULLになります。これは、元のデータのレコードが失われないようにするためです。

3. GET_MODEL_DETAILSファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。

GET_MODEL_DETAILS_SVMファンクション

このテーブル・ファンクションは、線形サポート・ベクター・マシン(SVM)モデルのディテールを表す行の集合を戻します。非線形SVMに対して起動された場合は、ORA-40215を戻します。

線形SVMモデルでは、ゼロ以外の係数のみが格納されます。これにより記憶域が削減され、モデルをロードする速度が上がります。その結果、GET_MODEL_DETAILS_SVMで戻される係数のリストに属性がない場合、この属性の係数はゼロとして解釈されます。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_SVM (
model_name        VARCHAR2,
reverse_coef      NUMBER DEFAULT 0)
RETURN DM_SVM_LINEAR_COEFF_SET PIPELINED;

パラメータ

表45-79 GET_MODEL_DETAILS_SVMファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

reverse_coef

GET_MODEL_DETAILS_SVMが、元の属性変換を使用して属性の係数を変換するかどうか。

reverse_coefが0(デフォルト)に設定されている場合、GET_MODEL_DETAILS_SVMは変換を適用せずにモデルから直接係数を戻します。

reverse_coefが1に設定されている場合、GET_MODEL_DETAILS_SVMは自動データ準備を使用して生成された正規化シフトおよびスケールを適用して、係数およびバイアスを変換します。

詳細は、「使用上の注意」の4を参照してください。

戻り値

表45-80 GET_MODEL_DETAILS_SVMファンクションの戻り値

戻り値

説明

DM_SVM_LINEAR_COEFF_SET

DM_SVM_LINEAR_COEFFタイプの行の集合。この行には、次の列があります。

(class            VARCHAR2(4000),
attribute_set    DM_SVM_ATTRIBUTE_SET)

attribute_set列は、DM_SVM_ATTRIBUTE_SETタイプのネストした表を戻します。その行(DM_SVM_ATTRIBUTEタイプ)には、次の列があります。

(attribute_name      VARCHAR2(4000),
attribute_subname   VARCHAR2(4000),
attribute_value     VARCHAR2(4000),
coefficient         NUMBER)

詳細は、「使用上の注意」を参照してください。

使用上の注意

1. このテーブル・ファンクションは、DM_SVM_LINEAR_COEFFタイプの行をパイプライン出力します。Data Miningのデータ・タイプと表ファンクションからのパイプ出力については、「データ・タイプ」を参照してください。

2. DM_SVM_LINEAR_COEFFのclass列には分類ターゲット値が含まれています。SVM回帰モデルの場合、classはNULLです。個々の分類ターゲット値の場合は、係数の集合が戻されます。バイナリ分類モデル、1クラス分類モデルおよび回帰モデルの場合は、係数の単一集合のみが戻されます。

3. DM_SVM_ATTRIBUTE_SETのattribute_value列は、質的属性で使用されます。

4. GET_MODEL_DETAILSファンクションは、作成プロセス中に適用された変換を自動的に元に戻すことによって、モデル透過性を保持します。このため、モデルのディテールに戻される属性は、モデル作成に使用された元の属性(または元の属性の近似値)となります。

係数は元の属性ではなく、変換された属性に関連します。係数は、モデルのディテールに直接戻された場合、意味のある情報を表しません。係数が元の属性に関連するようにGET_MODEL_DETAILS_SVMで変換する場合は、reverse_coefパラメータを1に設定します。

例

次の例では、サンプル・プログラムdmsvcdem.sqlで作成されたSVM分類モデルSVMC_SH_Clas_sampleに関するモデルのディテールが戻されます。サンプル・プログラムについては、Oracle Data Miningユーザーズ・ガイドを参照してください。

WITH
mod_dtls AS (
SELECT *
FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_SVM('SVMC_SH_Clas_sample'))
),
model_details AS (
SELECT D.class, A.attribute_name, A.attribute_value, A.coefficient
FROM mod_dtls D,
TABLE(D.attribute_set) A
ORDER BY D.class, ABS(A.coefficient) DESC
)
SELECT class, attribute_name aname, attribute_value aval, coefficient coeff
FROM model_details
WHERE ROWNUM < 11;

CLASS      ANAME                     AVAL                      COEFF
---------- ------------------------- ------------------------- -----
1                                                              -2.85
1          BOOKKEEPING_APPLICATION                              1.11
1          OCCUPATION                Other                      -.94
1          HOUSEHOLD_SIZE            4-5                         .88
1          CUST_MARITAL_STATUS       Married                     .82
1          YRS_RESIDENCE                                         .76
1          HOUSEHOLD_SIZE            6-8                        -.74
1          OCCUPATION                Exec.                       .71
1          EDUCATION                 11th                       -.71
1          EDUCATION                 Masters                     .63

GET_MODEL_DETAILS_XMLファンクション

このファンクションは、ディシジョン・ツリー・モデルのディテールを示すXMLオブジェクトを戻します。

構文

DBMS_DATA_MINING.GET_MODEL_DETAILS_XML (
model_name      IN       VARCHAR2)
RETURN XMLTYPE;

パラメータ

表45-81 GET_MODEL_DETAILS_XMLファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-82 GET_MODEL_DETAILS_XMLファンクションの戻り値

戻り値

説明

XMLTYPE

ディシジョン・ツリー・モデルのXML定義。詳細は、第285章「XMLTYPE」を参照してください。

XMLは、Data Mining Group Predictive Model Markup Language(PMML)バージョン2.1の仕様に準拠しています。この仕様については、http://www.dmg.orgを参照してください。

使用上の注意

Oracle XMLで表示できない特殊文字は「#」に変換されます。

例

SQL*Plusの次の文は、ディシジョン・ツリー・モデルdt_sh_clas_sampleの詳細を戻します。このモデルは、Oracle Database Examplesにより提供されるデータ・マイニングのサンプル・プログラムであるプログラムdmdtdemo.sqlで作成されます。

注意: XML出力に表示される「&quot」文字は、SQL*Plusの動作の結果です。適切な形式でXMLを表示するには、ファイルに切り取って貼り付け、ファイルをブラウザで開きます。

column dt_details format a320
SELECT
dbms_data_mining.get_model_details_xml('dt_sh_clas_sample')
AS DT_DETAILS
FROM dual;

DT_DETAILS
--------------------------------------------------------------------------------
<PMML version="2.1">
<Header copyright="Copyright (c) 2004, Oracle Corporation. All rights
reserved."/>
<DataDictionary numberOfFields="9">
<DataField name="AFFINITY_CARD" optype="categorical"/>
<DataField name="AGE" optype="continuous"/>
<DataField name="BOOKKEEPING_APPLICATION" optype="continuous"/>
<DataField name="CUST_MARITAL_STATUS" optype="categorical"/>
<DataField name="EDUCATION" optype="categorical"/>
<DataField name="HOUSEHOLD_SIZE" optype="categorical"/>
<DataField name="OCCUPATION" optype="categorical"/>
<DataField name="YRS_RESIDENCE" optype="continuous"/>
<DataField name="Y_BOX_GAMES" optype="continuous"/>
</DataDictionary>
<TreeModel modelName="DT_SH_CLAS_SAMPLE" functionName="classification"
splitCharacteristic="binarySplit">
<Extension name="buildSettings">
<Setting name="TREE_IMPURITY_METRIC" value="TREE_IMPURITY_GINI"/>
<Setting name="TREE_TERM_MAX_DEPTH" value="7"/>
<Setting name="TREE_TERM_MINPCT_NODE" value=".05"/>
<Setting name="TREE_TERM_MINPCT_SPLIT" value=".1"/>
<Setting name="TREE_TERM_MINREC_NODE" value="10"/>
<Setting name="TREE_TERM_MINREC_SPLIT" value="20"/>
<costMatrix>
<costElement>
<actualValue>0</actualValue>
<predictedValue>0</predictedValue>
<cost>0</cost>
</costElement>
<costElement>
<actualValue>0</actualValue>
<predictedValue>1</predictedValue>
<cost>1</cost>
</costElement>
<costElement>
<actualValue>1</actualValue>
<predictedValue>0</predictedValue>
<cost>8</cost>
</costElement>
<costElement>
<actualValue>1</actualValue>
<predictedValue>1</predictedValue>
<cost>0</cost>
</costElement>
</costMatrix>
</Extension>
<MiningSchema>
.
.
.
.
.
.
</Node>
</Node>
</TreeModel>
</PMML>

GET_MODEL_TRANSFORMATIONSファンクション

このファンクションは、指定したモデルに埋め込まれた変換式を戻します。

関連項目:

第46章「DBMS_DATA_MINING_TRANSFORM」の「変換リストについて」

「GET_TRANSFORM_LISTプロシージャ」

「CREATE_MODELプロシージャ」

構文

DBMS_DATA_MINING.GET_MODEL_TRANSFORMATIONS (
model_name     IN VARCHAR2)
RETURN DM_TRANSFORMS PIPELINED;

パラメータ

表45-83 GET_MODEL_TRANSFORMATIONSファンクションのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

戻り値

表45-84 GET_MODEL_TRANSFORMATIONSファンクションの戻り値

戻り値

説明

DM_TRANSFORMS

model_nameに埋め込まれた変換式。

DM_TRANSFORMSタイプはDM_TRANSFORMオブジェクトの表です。各DM_TRANSFORMには次のフィールドがあります。

attribute_name       VARCHAR2(4000)
attribute_subname    VARCHAR2(4000)
expression           CLOB
reverse_expression   CLOB

使用上の注意

自動データ準備(ADP)が有効になっている場合、自動変換とユーザー定義の変換の両方を属性に関連付けることができます。この場合、ユーザー定義の変換は自動変換の前に評価されます。

例

この例では、SH.CUSTOMERSテーブルのいくつかの列をNaive Bayesモデルの作成に使用します。それらの列のいずれかに変換式が指定されています。このモデルではADPは使用されません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_income_level,cust_credit_limit
FROM sh.customers;

describe mining_data
Name                                   Null?    Type
-------------------------------------- -------- --------------------------
CUST_ID                                NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                     NOT NULL NUMBER(4)
CUST_INCOME_LEVEL                               VARCHAR2(30)
CUST_CREDIT_LIMIT                               NUMBER

CREATE TABLE settings_nb(
setting_name  VARCHAR2(30),
setting_value VARCHAR2(30));
BEGIN
INSERT INTO settings_nb (setting_name, setting_value) VALUES
(dbms_data_mining.algo_name, dbms_data_mining.algo_naive_bayes);
INSERT INTO settings_nb (setting_name, setting_value) VALUES
(dbms_data_mining.prep_auto, dbms_data_mining.prep_auto_off);
COMMIT;
END;
/
DECLARE
mining_data_xforms   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM (
xform_list           =>  mining_data_xforms,
attribute_name       => 'cust_year_of_birth',
attribute_subname    =>  null,
expression           => 'cust_year_of_birth + 10',
reverse_expression   => 'cust_year_of_birth - 10');
dbms_data_mining.CREATE_MODEL (
model_name           =>  'new_model',
mining_function      =>   dbms_data_mining.classification,
data_table_name      =>  'mining_data',
case_id_column_name  =>  'cust_id',
target_column_name   =>  'cust_income_level',
settings_table_name  =>  'settings_nb',
data_schema_name     =>   nulL,
settings_schema_name =>   null,
xform_list           =>   mining_data_xforms );
END;
/
SELECT attribute_name, TO_CHAR(expression), TO_CHAR(reverse_expression)
FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('new_model'));

ATTRIBUTE_NAME      TO_CHAR(EXPRESSION)       TO_CHAR(REVERSE_EXPRESSION)
------------------  ------------------------  -----------------------------
CUST_YEAR_OF_BIRTH  cust_year_of_birth + 10   cust_year_of_birth - 10

GET_TRANSFORM_LISTプロシージャ

このプロシージャは、DM_TRANSFORMSと指定された変換式を、モデルの作成時に使用できる変換リスト(TRANSFORM_LIST)に変換します。DM_TRANSFORMSはGET_MODEL_TRANSFORMATIONSファンクションによって戻されます。

DBMS_DATA_MINING_TRANSFORMパッケージのルーチンを使用して変換リストを作成することもできます。

関連項目:

第46章「DBMS_DATA_MINING_TRANSFORM」の「変換リストについて」

「GET_MODEL_TRANSFORMATIONSファンクション」

「CREATE_MODELプロシージャ」

構文

DBMS_DATA_MINING.GET_TRANSFORM_LIST (
xform_list           OUT NOCOPY TRANSFORM_LIST,
model_xforms         IN  DM_TRANSFORMS);

パラメータ

表45-85 GET_TRANSFORM_LISTプロシージャのパラメータ

パラメータ

説明

xform_list

モデルに埋め込むことができる変換の仕様のリスト。CREATE_MODELプロシージャでパラメータとして使用されます。

TRANSFORM_LISTタイプはTRANSFORM_RECオブジェクトのテーブルです。各TRANSFORM_RECには次のフィールドがあります。

attribute_name      VARCHAR2(30)
attribute_subname   VARCHAR2(4000)
expression          EXPRESSION_REC
reverse_expression  EXPRESSION_REC
attribute_spec      VARCHAR2(4000)

TRANSFORM_LISTコレクション・タイプの詳細は、表46-1「DBMS_DATA_MINING_TRANSFORMのデータ・タイプ」を参照してください。

model_xforms

特定のモデルに対してGET_MODEL_TRANSFORMATIONSファンクションで戻される埋め込まれた変換式のリスト。

DM_TRANSFORMSタイプはDM_TRANSFORMオブジェクトの表です。各DM_TRANSFORMには次のフィールドがあります。

attribute_name       VARCHAR2(4000)
attribute_subname    VARCHAR2(4000)
expression           CLOB
reverse_expression   CLOB

例

この例では、SH.CUSTOMERSテーブルのいくつかの列を使用してモデルmod1を調整します。このモデルでは、いずれかの列を自動的にビンに区分するADPが使用されます。

2つ目のモデルmod2では、ADPを使用せずに同じデータを調整しますが、mod1から取得した変換リストは使用します。結果として、mod1とmod2の両方に同じ変換式が埋め込まれます。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_income_level, cust_credit_limit
FROM sh.customers;

describe mining_data
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
CUST_ID                                   NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                        NOT NULL NUMBER(4)
CUST_INCOME_LEVEL                                  VARCHAR2(30)
CUST_CREDIT_LIMIT                                  NUMBER

CREATE TABLE setmod1(setting_name  VARCHAR2(30),setting_value VARCHAR2(30));
BEGIN
INSERT INTO setmod1 VALUES (dbms_data_mining.algo_name, dbms_data_mining.algo_naive_bayes);
INSERT INTO setmod1 VALUES (dbms_data_mining.prep_auto,dbms_data_mining.prep_auto_on);
dbms_data_mining.CREATE_MODEL (
model_name            => 'mod1',
mining_function       => dbms_data_mining.classification,
data_table_name       => 'mining_data',
case_id_column_name   => 'cust_id',
target_column_name    => 'cust_income_level',
settings_table_name   => 'setmod1');
COMMIT;
END;
/
CREATE TABLE setmod2(setting_name  VARCHAR2(30),setting_value VARCHAR2(30));
BEGIN
INSERT INTO setmod2
VALUES (dbms_data_mining.algo_name, dbms_data_mining.algo_naive_bayes);
COMMIT;
END;
/
DECLARE
v_xform_list       dbms_data_mining_transform.TRANSFORM_LIST;
dmxf               DM_TRANSFORMS;
BEGIN
EXECUTE IMMEDIATE
'SELECT dm_transform(attribute_name, attribute_subname,expression, reverse_expression)
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS (''mod1''))'
BULK COLLECT INTO dmxf;
dbms_data_mining.GET_TRANSFORM_LIST (
xform_list             =>  v_xform_list,
model_xforms           =>  dmxf);
dbms_data_mining.CREATE_MODEL(
model_name            => 'mod2',
mining_function       =>  dbms_data_mining.classification,
data_table_name       => 'mining_data',
case_id_column_name   => 'cust_id',
target_column_name    => 'cust_income_level',
settings_table_name   => 'setmod2',
xform_list            =>  v_xform_list);
END;
/

-- Transformation expression embedded in mod1
SELECT TO_CHAR(expression) FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod1'));

TO_CHAR(EXPRESSION)
--------------------------------------------------------------------------------
CASE WHEN "CUST_YEAR_OF_BIRTH"<1915 THEN 0 WHEN "CUST_YEAR_OF_BIRTH"<=1915 THEN 0
WHEN "CUST_YEAR_OF_BIRTH"<=1920.5 THEN 1 WHEN "CUST_YEAR_OF_BIRTH"<=1924.5 THEN 2
.
.
.
.5 THEN 29 WHEN "CUST_YEAR_OF_BIRTH" IS NOT NULL THEN 30 END

-- Transformation expression embedded in mod2
SELECT TO_CHAR(expression) FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod2'));

TO_CHAR(EXPRESSION)
--------------------------------------------------------------------------------
CASE WHEN "CUST_YEAR_OF_BIRTH"<1915 THEN 0 WHEN "CUST_YEAR_OF_BIRTH"<=1915 THEN 0
WHEN "CUST_YEAR_OF_BIRTH"<=1920.5 THEN 1 WHEN "CUST_YEAR_OF_BIRTH"<=1924.5 THEN 2
.
.
.
.5 THEN 29 WHEN "CUST_YEAR_OF_BIRTH" IS NOT NULL THEN 30 END

-- Reverse transformation expression embedded in mod1
SELECT TO_CHAR(reverse_expression)FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod1'));

TO_CHAR(REVERSE_EXPRESSION)
--------------------------------------------------------------------------------
DECODE("CUST_YEAR_OF_BIRTH",0,'( ; 1915), [1915; 1915]',1,'(1915; 1920.5]',2,'(1
920.5; 1924.5]',3,'(1924.5; 1928.5]',4,'(1928.5; 1932.5]',5,'(1932.5; 1936.5]',6
.
.
.
8,'(1987.5; 1988.5]',29,'(1988.5; 1989.5]',30,'(1989.5;  )',NULL,'NULL')

-- Reverse transformation expression embedded in mod2
SELECT TO_CHAR(reverse_expression) FROM TABLE (dbms_data_mining.GET_MODEL_TRANSFORMATIONS('mod2'));

TO_CHAR(REVERSE_EXPRESSION)
--------------------------------------------------------------------------------
DECODE("CUST_YEAR_OF_BIRTH",0,'( ; 1915), [1915; 1915]',1,'(1915; 1920.5]',2,'(1
920.5; 1924.5]',3,'(1924.5; 1928.5]',4,'(1928.5; 1932.5]',5,'(1932.5; 1936.5]',6
.
.
.
8,'(1987.5; 1988.5]',29,'(1988.5; 1989.5]',30,'(1989.5;  )',NULL,'NULL')

IMPORT_MODELプロシージャ

このプロシージャは、1つ以上のデータ・マイニング・モデルをインポートします。このプロシージャはオーバーロードされています。このプロシージャをコールして、ダンプ・ファイル・セットからマイニング・モデルをインポートするか、PMML文書から単一のマイニング・モデルをインポートすることができます。

ダンプ・ファイル・セットからのインポート

EXPORT_MODELプロシージャによって作成されたダンプ・ファイル・セットからマイニング・モデルをインポートできます。IMPORT_MODELおよびEXPORT_MODELでは、ダンプ・ファイル・セットへのエクスポートとダンプ・ファイル・セットからのインポートにOracle Data Pumpテクノロジが使用されています。

Oracle Data Pumpを直接使用してスキーマ全体またはデータベース全体をエクスポートまたはインポートする場合、そのスキーマまたはデータベースのマイニング・モデルが含められます。EXPORT_MODELおよびIMPORT_MODELでは、マイニング・モデルのみがエクスポートおよびインポートされます。

PMMLからのインポート

Predictive Model Markup Language(PMML)で表現されたマイニング・モデルをインポートできます。モデルのタイプは、RegressionModel(線形回帰またはバイナリ・ロジスティック回帰)である必要があります。

PMMLは、Data Mining Group(http://www.dmg.org)によって策定されたXMLベースの規格です。PMMLに準拠しているアプリケーションは、任意のベンダーによって作成されたPMML準拠のモデルをデプロイできます。Oracle Data Miningでは、回帰モデルに対応するPMML 3.1のコア機能がサポートされます。

関連項目:

マイニング・モデルのエクスポートおよびインポートの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

Oracle Data Pumpの詳細は、『Oracle Databaseユーティリティ』を参照してください。

PMMLの詳細は、http://www.dmg.org/faq.htmlを参照してください。

構文

ダンプ・ファイル・セットからのマイニング・モデルのインポート:

DBMS_DATA_MINING.IMPORT_MODEL (
filename          IN  VARCHAR2,
directory         IN  VARCHAR2,
model_filter      IN  VARCHAR2 DEFAULT NULL,
operation         IN  VARCHAR2 DEFAULT NULL,
remote_link       IN  VARCHAR2 DEFAULT NULL,
jobname           IN  VARCHAR2 DEFAULT NULL,
schema_remap      IN  VARCHAR2 DEFAULT NULL,
tablespace_remap  IN  VARCHAR2 DEFAULT NULL);

PMML文書からのマイニング・モデルのインポート:

DBMS_DATA_MINING.IMPORT_MODEL (
model_name        IN  VARCHAR2,
pmmldoc           IN  XMLTYPE
strict_check      IN  BOOLEAN DEFAULT FALSE);

パラメータ

表45-86 IMPORT_MODELプロシージャのパラメータ

パラメータ

説明

filename

モデルのインポート元のダンプ・ファイル・セットの名前。ダンプ・ファイル・セットは、EXPORT_MODELプロシージャまたはOracle Data Pumpのexpdpエクスポート・ユーティリティで作成されている必要があります。

ダンプ・ファイル・セットには1つ以上のファイルを保存できます。(詳細は、「EXPORT_MODELプロシージャ」を参照。)ダンプ・ファイル・セット内に複数のダンプ・ファイルが存在する場合は、ファイルを列挙するかわりに'filename%U'を指定できます。たとえば、ダンプ・ファイル・セット内にarchive01.dmp、archive02.dmp、archive03.dmpという3つのダンプ・ファイルが存在する場合は、'archive%U'と指定してそれらのファイルをインポートできます。

directory

ダンプ・ファイル・セットの場所を指定する、事前定義済のディレクトリ・オブジェクトの名前。エクスポートするユーザーとインポートするユーザーには、このディレクトリ・オブジェクト、およびこのディレクトリ・オブジェクトによって指定されるファイル・システム・ディレクトリに対する読取り/書込みアクセス権が必要です。

注意: ターゲット・データベースにも、このファイル・システム・ディレクトリに対する読取り/書込みアクセス権が必要です。

model_filter

インポートする1つ以上のモデルを指定するパラメータ。model_filterの値を指定しない場合は、ダンプ・ファイル・セット内のすべてのモデルがインポートされます。また、NULL(デフォルト)または'ALL'を指定しても、すべてのモデルをインポートできます。

model_filterの値には、1つ以上のモデル名を指定できます。有効なフィルタは次のとおりです。

'mymodel1'
'name IN (''mymodel2'',''mymodel3'')'

1行目では、IMPORT_MODELによってmymodel1という名前の1つのモデルがインポートされます。2行目では、IMPORT_MODELによって2つのモデル(mymodel2およびmymodel3)がインポートされます。

operation

モデルをインポートするか、モデルを作成するSQL文をインポートするかを指定するパラメータ(オプション)。デフォルトでは、モデルがインポートされます。

operationには、次のいずれかの値を指定できます。

- 'IMPORT': モデルをインポートします(デフォルト)。

- 'SQL_FILE': モデルを作成するSQL DDLをテキスト・ファイルに書き出します。テキスト・ファイルは、job_name.sqlという名前が付けられ、ダンプ・セット・ディレクトリに保存されます。

remote_link

リモート・システムへのデータベース・リンクの名前を指定するオプション・パラメータ。デフォルト値はNULLです。データベース・リンクはローカル・データベースのスキーマ・オブジェクトであり、これを使用すると、リモート・データベース上のオブジェクトにアクセスできます。remote_linkの値を指定することで、リモート・データベースからローカル・データベースへモデルをインポートできます。インポートはファイルなしで実行されます。つまり、ダンプ・ファイルの処理はありません。リモート・モデルのインポートには、IMP_FULL_DATABASEロールが必要です。また、EXP_FULL_DATABASE権限、CREATE DATABASE LINK権限およびその他の権限が必要になることもあります。(例2を参照してください。)

jobname

インポート・ジョブの名前を指定するパラメータ(オプション)。デフォルトでは、username_imp_nnnnという形式の名前になります(nnnnは数字です)。たとえば、SCOTTスキーマ内のジョブ名は、SCOTT_imp_134のようになります。

ジョブ名を指定する場合は、スキーマ内で一意の名前を指定する必要があります。ジョブ名の最大長は30文字です。

インポート・ジョブのログ・ファイルが、jobname.logという名前で、ダンプ・ファイル・セットと同じディレクトリに作成されます。

schema_remap

別のスキーマにインポートするためのパラメータ(オプション)。デフォルトでは、モデルのエクスポートとインポートは同じスキーマ内で行われます。

ダンプ・ファイル・セットが別のスキーマに属している場合は、export_user:import_userの形式でスキーマ・マッピングを指定する必要があります。たとえば、SCOTTによってMARYスキーマにエクスポートされたモデルをインポートする場合は、'SCOTT:MARY'と指定します。

注意: 別のスキーマからモデルをインポートする際に、IMP_FULL_DATABASE権限またはSYSロールが必要な場合があります。

tablespace_remap

別の表領域にインポートするためのパラメータ(オプション)。デフォルトでは、モデルのエクスポートとインポートは同じ表領域内で行われます。

ダンプ・ファイル・セットが別の表領域に属している場合は、export_tablespace:import_tablespaceの形式で表領域マッピングを指定する必要があります。たとえば、表領域TBLSPC01から表領域TBLSPC02にエクスポートされたモデルをインポートする場合は、'TBLSPC01:TBLSPC02'と指定します。

注意: 別の表領域からモデルをインポートする際に、IMP_FULL_DATABASE権限またはSYSロールが必要な場合があります。

model_name

PMMLからのインポートの結果としてデータベースに作成される新規モデルの名前。この名前は、ユーザーのスキーマ内で一意である必要があります。

pmmldoc

インポート対象のモデルを表現したPMML文書。PMML文書には、XMLTYPEオブジェクト・タイプが含まれます。詳細は、第285章「XMLTYPE」を参照してください。

strict_check

PMML文書にコアPMMLの一部ではないセクション(例: 出力またはターゲット)が含まれる場合、エラーが発生するかどうか。Oracle Data Miningでは、コアPMMLのみがサポートされています。コア以外の機能は、スコアリング表現に影響を与える可能性があります。

PMMLがコアPMMLに厳密に準拠していないのにstrict_checkがTRUEに設定される場合、IMPORT_MODELはエラーを戻します。strict_checkがFALSE(デフォルト)の場合、エラーは抑制されます。モデルをインポートしてスコアリングすることができます。

例

1. この例では、dmuser2スキーマ内でモデルのエクスポートとインポートを行っています。次に、同じモデルをdmuser3スキーマにインポートしています。dmuser3ユーザーには、IMP_FULL_DATABASE権限があります。dmuser2ユーザーにはUSER2表領域が割り当てられ、dmuser3にはUSER3表領域が割り当てられます。

SQL> connect dmuser2
Enter password: dmuser2_password
Connected.
SQL> select model_name from user_mining_models;

MODEL_NAME
------------------------------
NMF_SH_SAMPLE
SVMO_SH_CLAS_SAMPLE
SVMR_SH_REGR_SAMPLE

-- export the model called NMF_SH_SAMPLE to a dump file in same schema
SQL>EXECUTE DBMS_DATA_MINING.EXPORT_MODEL (
filename =>'NMF_SH_SAMPLE_out',
directory =>'DATA_PUMP_DIR',
model_filter => 'name = ''NMF_SH_SAMPLE''');

-- import the model back into the same schema
SQL>EXECUTE DBMS_DATA_MINING.IMPORT_MODEL (
filename => 'NMF_SH_SAMPLE_out01.dmp',
directory => 'DATA_PUMP_DIR',
model_filter => 'name = ''NMF_SH_SAMPLE''');

-- connect as different user
-- import same model into that schema
SQL> connect dmuser3
Enter password: dmuser3_password
Connected.
SQL>EXECUTE DBMS_DATA_MINING.IMPORT_MODEL (
filename => 'NMF_SH_SAMPLE_out01.dmp',
directory => 'DATA_PUMP_DIR',
model_filter => 'name = ''NMF_SH_SAMPLE''',
operation =>'IMPORT',
remote_link => NULL,
jobname => 'nmf_imp_job',
schema_remap => 'dmuser2:dmuser3',
tablespace_remap => 'USER2:USER3');

この例では、ユーザーSCOTTが作成したダンプ・ファイルmodel_exp_001.dmpから、ユーザーMARYがすべてのモデルをインポートします。ユーザーMARYにはUSER2表領域が割り当てられており、ユーザーSCOTTには、モデルがダンプ・ファイルmodel_exp_001.dmpにエクスポートされたときに、USERS表領域が割り当てられました。ダンプ・ファイルはディレクトリ・オブジェクトDM_DUMPにマッピングされたファイル・システム・ディレクトリにあります。ユーザーMARYがIMP_FULL_DATABASE権限を持っていない場合は、IMPORT_MODELからエラーが戻されます。

-- import all models
DECLARE
file_name  VARCHAR2(40);
BEGIN
file_name := 'model_exp_001.dmp';
DBMS_DATA_MINING.IMPORT_MODEL(
filename=> 'file_name',
directory=>'DM_DUMP',
schema_remap=>'SCOTT:MARY',
tablespace_remap=>'USERS:USER2');
DBMS_OUTPUT.PUT_LINE(
'DBMS_DATA_MINING.IMPORT_MODEL of all models from SCOTT done!');
END;
/

2. この例は、ユーザーxuserがリモート・データベースからモデルdmuser.r1modをインポートする方法を示しています。リモート・データベースのSQL*Net接続別名はR1DBです。ユーザーxuserにはSYSAUX表領域が割り当てられ、ユーザーdmuserにはTBS_1表領域が割り当てられます。

CONNECT / AS SYSDBA;
GRANT CREATE DATABASE LINK TO xuser;
GRANT imp_full_database TO xuser;
CONNECT xuser/xuserpassword
CREATE DATABASE LINK dmuser_link
CONNECT TO dmuser IDENTIFIED BY dmuserpassword USING 'R1DB';
EXEC dbms_data_mining.import_model (
NULL,
'DMUSER_DIR',
'R1MOD',
remote_link => 'DMUSER_LINK', schema_remap => 'DMUSER:XUSER',
tablespace_remap => 'TBS_1:SYSAUX' );
SELECT name FROM dm_user_models;

NAME
-----------------------------------------------------------------------------
R1MOD

3. この例では、ディレクトリ・オブジェクトPMMLDIRによって参照される場所から、現行ユーザーのスキーマにSamplePMML1.xmlというPMML文書をインポートする方法を示します。インポートされるモデルの名前は、PMMLMODEL1になります。

BEGIN
dbms_data_mining.import_model ('PMMLMODEL1',
XMLType (bfilename ('PMMLDIR', 'SamplePMML1.xml'),
nls_charset_id ('AL32UTF8')
));
END;

RANK_APPLYプロシージャ

このプロシージャは、予測モデルまたは記述モデルをデータに適用した結果(APPLY結果)を上位N番までのフィルタに基づいてランク付けします。分類モデルの場合は、このプロシージャへの入力パラメータとしてコスト・マトリックスを指定すると、予測のコストを反映したランク付けされた結果が得られます。

構文

DBMS_DATA_MINING.RANK_APPLY (
apply_result_table_name        IN VARCHAR2,
case_id_column_name            IN VARCHAR2,
score_column_name              IN VARCHAR2,
score_criterion_column_name    IN VARCHAR2,
ranked_apply_table_name        IN VARCHAR2,
top_N                          IN NUMBER (38) DEFAULT 1,
cost_matrix_table_name         IN VARCHAR2    DEFAULT NULL,
apply_result_schema_name       IN VARCHAR2    DEFAULT NULL,
cost_matrix_schema_name        IN VARCHAR2    DEFAULT NULL);

パラメータ

表45-87 RANK_APPLYプロシージャのパラメータ

パラメータ

説明

apply_result_table_name

テスト・データ・セットに対するAPPLY操作の結果を保存した表またはビューの名前(「使用上の注意」を参照)。

case_id_column_name

ケースID列の名前。これは適用(APPLY)結果の作成時に使用したものと同じである必要があります。

score_column_name

適用結果表の予測列の名前。

score_criterion_column_name

適用結果表の確率列の名前。

ranked_apply_result_tab_name

ランク付けされた適用結果が保存される表の名前。

top_N

上位N番までが、精密なリコール計算のAPPLY結果によって予測されます。

cost_matrix_table_name

コスト・マトリックス表の名前。

apply_result_schema_name

APPLYの適用結果表に適用されるスキーマの名前。

cost_matrix_schema_name

コスト・マトリックス表に適用されるスキーマの名前。

使用上の注意

RANK_APPLYを使用すると、上位N番までのフィルタに基づいてランク付けされた適用結果を作成できます。また、モデルがコスト付きで作成されている場合は、予測のコストを反映した結果が得られます。

CREATE_MODEL、DROP_MODEL、RENAME_MODELなどの他のDDL操作の観点から見ると、RANK_APPLYの動作はAPPLYの動作と似ています。このプロシージャはモデルには依存しませんが、ここで重要となる入力パラメータは、APPLYによって固定スキーマ表に出力される適用結果のみです。

RANK_APPLYの主な使用目的は、本番環境においてモデルをスコアリング・データに適用(APPLY)して、最終的な適用結果を作成することです。APPLYを使用してテスト・データにモデルを適用し、様々なコスト・マトリックス表に対するテスト指標値を計算した後、最適なコスト・マトリックスをRANK_APPLYへの入力として指定できます。

以降の項では、サポートされる個々のアルゴリズムにおいて、適用結果が保存される表のスキーマを示します。case_id列の値は、適用結果のケースID列と同じ値になります。

分類モデル: NBおよびSVM

量的ターゲットの場合、ランク付けされた適用結果は次の定義を持つ表に保存されます。

(case_id       VARCHAR2/NUMBER,
prediction     NUMBER,
probability    NUMBER,
cost           NUMBER,
rank           INTEGER)

質的ターゲットの場合、ランク付けされた適用結果は次の定義を持つ表に保存されます。

(case_id       VARCHAR2/NUMBER,
prediction     VARCHAR2,
probability    NUMBER,
cost           NUMBER,
rank           INTEGER)

k-MeansまたはO-Clusterを使用するクラスタリング

クラスタリングは監視なしのマイニング機能であるため、ターゲットは存在しません。APPLY操作の結果は、単にケースに対応するクラスタ識別子と、ケースの確率のみです。コスト・マトリックスはここでは考慮されません。ランク付けされた適用結果は次の定義を持つ表に保存され、この表には、top-Nによってランク付けされたクラスタ識別子が含まれます。

(case_id       VARCHAR2/NUMBER,
cluster_id     NUMBER,
probability    NUMBER,
rank           INTEGER)

NMFを使用する特徴抽出

特徴抽出も監視なしのマイニング機能であるため、ターゲットは存在しません。APPLY操作の結果は、単にケースに対応する機能識別子と、ケースの一致率のみです。コスト・マトリックスはここでは考慮されません。ランク付けされた適用結果は次の定義を持つ表に保存され、この表には、top-Nによってランク付けされた機能識別子が含まれます。

(case_id        VARCHAR2/NUMBER,
feature_id      NUMBER,
match_quality   NUMBER,
rank            INTEGER)

例

BEGIN
/* build a model with name census_model.
* (See example under CREATE_MODEL)
*/

/* if training data was pre-processed in any manner,
* perform the same pre-processing steps on apply
* data also.
* (See examples in the section on DBMS_DATA_MINING_TRANSFORM)
*/

/* apply the model to data to be scored */
DBMS_DATA_MINING.RANK_APPLY(
apply_result_table_name       => 'census_apply_result',
case_id_column_name           => 'person_id',
score_column_name             => 'prediction',
score_criterion_column_name   => 'probability
ranked_apply_result_tab_name  => 'census_ranked_apply_result',
top_N                         => 3,
cost_matrix_table_name        => 'census_cost_matrix');
END;
/

-- View Ranked Apply Results
SELECT *
FROM census_ranked_apply_result;

REMOVE_COST_MATRIXプロシージャ

分類モデルからデフォルトのスコアリング・マトリックスを削除します。

関連項目:

- 「ADD_COST_MATRIXプロシージャ」

- 「REMOVE_COST_MATRIXプロシージャ」

構文

DBMS_DATA_MINING.REMOVE_COST_MATRIX (
model_name   IN  VARCHAR2);

パラメータ

表45-88 Remove_Cost_Matrixプロシージャのパラメータ

パラメータ

説明

model_name

[schema_name.]model_nameの形式のモデル名。スキーマを指定しない場合は、独自のスキーマが使用されます。

使用上の注意

モデルがスキーマにない場合、REMOVE_COST_MATRIXでは、ALTER ANY MINING MODELシステム権限またはそのマイニング・モデルに対するALTERオブジェクト権限が必要です。

例

Naive BayesモデルNB_SH_CLAS_SAMPLEには、モデルのスコアリングに使用できるコスト・マトリックスが関連付けられています。

SQL>SELECT *
FROM TABLE(dbms_data_mining.get_model_cost_matrix('nb_sh_clas_sample'))
ORDER BY predicted, actual;

ACTUAL     PREDICTED        COST
---------- ---------- ----------
0          0                   0
1          0                 .75
0          1                 .25
1          1                   0

REMOVE_COST_MATRIXを使用すると、コスト・マトリックスを削除できます。

SQL>EXECUTE dbms_data_mining.remove_cost_matrix('nb_sh_clas_sample');

SQL>SELECT *
FROM TABLE(dbms_data_mining.get_model_cost_matrix('nb_sh_clas_sample'))
ORDER BY predicted, actual;

no rows selected

RENAME_MODELプロシージャ

このプロシージャは、model_nameで指定したマイニング・モデルの名前をnew_model_nameとして指定した名前に変更します。new_model_nameという名前のモデルがすでに存在する場合、プロシージャは、オプションでnew_model_nameをversioned_model_nameに変更してから、model_nameをnew_model_nameに変更します。

モデル名は、[schema_name.]model_nameの形式です。スキーマを指定しない場合は、独自のスキーマが使用されます。マイニング・モデルのネーミングにおける制限の詳細は、「CREATE_MODELプロシージャ」の「使用上の注意」を参照してください。

構文

DBMS_DATA_MINING.RENAME_MODEL (
model_name            IN VARCHAR2,
new_model_name        IN VARCHAR2,
versioned_model_name  IN VARCHAR2 DEFAULT NULL);

パラメータ

表45-89 RENAME_MODELプロシージャのパラメータ

パラメータ

説明

model_name

名前を変更するモデル

new_model_name

モデルmodel_nameの新規の名前

versioned_model_name

モデルnew_model_nameがすでに存在する場合の新規の名前

使用上の注意

モデルの適用中にそのモデルの名前を変更しようとした場合、名前は変更されますが、適用操作からは不確定な結果が戻されます。

例

1. 次の例では、census_modelというモデルの名前がcensus_model_2012に変更されます。

BEGIN
DBMS_DATA_MINING.RENAME_MODEL(
model_name      => 'census_model',
new_model_name  => 'census_model_2012');
END;
/

2. 次の例には、ユーザーのスキーマに作業モデルclas_modとテスト・モデルclas_mod_tstの2つの分類モデルがあります。RENAME_MODELプロシージャは、clas_modをclas_mod_oldとして保持し、テスト・モデルを新しい作業モデルにします。

SELECT model_name FROM user_mining_models;
MODEL_NAME
-------------------------------------------------------------------
CLAS_MOD
CLAS_MOD_TST

BEGIN
DBMS_DATA_MINING.RENAME_MODEL(
model_name            => 'clas_mod_tst',
new_model_name        => 'clas_mod',
versioned_model_name  => 'clas_mod_old');
END;
/

SELECT model_name FROM user_mining_models;
MODEL_NAME
-------------------------------------------------------------------
CLAS_MOD
CLAS_MOD_OLD

46 DBMS_DATA_MINING_TRANSFORM

DBMS_DATA_MINING_TRANSFORMでは、データ・マイニングで一般的に使用されている一連の変換が実装されます。

関連項目:

- 第45章「DBMS_DATA_MINING」

- Oracle Data Miningユーザーズ・ガイド

この章では、次の項目について説明します。

- DBMS_DATA_MINING_TRANSFORMの使用方法

- 概要

- 使用上の注意

- セキュリティ・モデル

- タイプ

- 定数

- DBMS_DATA_MINING_TRANSFORMサブプログラムの要約

DBMS_DATA_MINING_TRANSFORMの使用方法

この項では、DBMS_DATA_MINING_TRANSFORMパッケージの使用に関連する項目について説明します。

- 概要

- 使用上の注意

- セキュリティ・モデル

- データ・タイプ

- 定数

概要

変換とは、1つ以上の列のデータを変更するSQL式のことです。

データを使用してマイニング・モデルを作成するには、通常、事前にそれらのデータに一定の変換処理を行う必要があります。多くのデータ・マイニング・アルゴリズムに特定の変換要件が存在します。

スコアリングされるデータは、モデルの作成(トレーニング)に使用されたデータと同じ方法で変換される必要があります。

外部変換または埋込み変換

DBMS_DATA_MINING_TRANSFORMでは、変換を実装するための2つのアプローチが提供されます。指定のモデルに対して、次のいずれかを実行できます。

- 変換式のリストを作成してそのリストをCREATE_MODELプロシージャに渡すことができます。
または

- 変換を実装するビューを作成してそのビューの名前をCREATE_MODELプロシージャに渡すことができます。

変換リストを作成してCREATE_MODELに渡す場合、変換式は、モデルに埋め込まれ、モデルが適用されると常に自動的に実装されます。

ビューを作成する場合、変換式は、モデルの外部に存在します。ユーザーは、モデルを適用するたびに変換を再作成する必要があります。

注意:
埋込み変換によって、モデルの使いやすさが大幅に向上し、モデル管理のプロセスも簡単になります。

自動変換

Oracle Data Miningでは、自動データ準備(ADP)モードがサポートされます。ADPを有効にすると、アルゴリズム固有のほとんどの変換は、自動的に埋め込まれます。他の追加の変換は、埋込み変換リストまたはビューで明示的に指定する必要があります。

ADPを有効にし、変換リストを使用してモデルを作成すると、両方の変換セットが埋め込まれます。モデルは、ADPによって指定された自動変換を実行する前に、変換リストに基づいたユーザー指定の変換を実行します。

変換リスト内で、個々の属性のADPを選択的に無効化できます。

関連項目:

第45章「DBMS_DATA_MINING」の「自動データ準備」

ADPの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

「変換リストについて」

DBMS_DATA_MINING_TRANSFORMでの変換

この項では、DBMS_DATA_MINING_TRANSFORMによってサポートされる変換について要約します。

ビニング

ビニングとは、連続値または離散値をカーディナリティ(基数)の少ない離散値(ビン)に変換することを示します。

- 監視ありビニング(質的および量的)
ビニングは、ディシジョン・ツリー・モデルによって決定されるデータの内在関係に基づきます。

「INSERT_BIN_SUPERプロシージャ」を参照してください。

- 頻度が上位N番までの質的属性のビニング
ビニングは、各カテゴリのケース数に基づきます。

「INSERT_BIN_CAT_FREQプロシージャ」を参照してください。

- 等幅の数値ビニング
ビニングは、等範囲のパーティションに基づきます。

「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

- クオンタイル数値ビニング
ビニングは、SQL NTILE関数を使用して計算されたクオンタイルに基づきます。

「INSERT_BIN_NUM_QTILEプロシージャ」を参照してください。

線形正規化

正規化とは、連続値を特定の範囲(通常0から1の間)に変換するプロセスのことです。正規化では、ある数(shift)を数値から差し引き、その結果を別の数(scale)で割ることによって各数値を変換します。

x_new = (x_old-shift)/scale

- 最小値と最大値による正規化
正規化は、次のshiftおよびscaleを使用した最小値と最大値に基づきます。

shift = min
scale = max-min

「INSERT_NORM_LIN_MINMAXプロシージャ」を参照してください。

- スケールによる正規化
正規化は、次のshiftおよびscaleを使用した最小値と最大値に基づきます。

shift = 0
scale = max{abs(max), abs(min)}

「INSERT_NORM_LIN_SCALEプロシージャ」を参照してください。

- Zスコアによる正規化
正規化は、次のshiftおよびscaleを使用した平均値と標準偏差に基づきます。

shift = mean
scale = standard_deviation

「INSERT_NORM_LIN_ZSCOREプロシージャ」を参照してください。

外れ値処理

外れ値は、それ以外の残りのデータから大きく離れた位置にある数値です。外れ値によって、データ・マイニングの結果を人為的に非対称化することができます。

- ウィンザライズ
外れ値は、外れ値以外の最近値に置き換えられます。

「INSERT_CLIP_WINSOR_TAILプロシージャ」を参照してください。

- トリミング
外れ値は、NULLに設定されます。

「INSERT_CLIP_TRIM_TAILプロシージャ」を参照してください。

欠損値の処理

欠損データは、スパースなデータを示す場合と、複数の値がランダムに欠損していることを示す場合があります。DBMS_DATA_MINING_TRANSFORMでは、欠損値の影響を最小限に抑えるために次の変換がサポートされます。

- 量的欠損値は、その平均値に置き換えられます。
「INSERT_MISS_NUM_MEANプロシージャ」を参照してください。

- 質的欠損値は、その最頻値に置き換えられます。
「INSERT_MISS_CAT_MODEプロシージャ」を参照してください。

注意:
Oracle Data Miningには、欠損データを処理するためのデフォルトのメカニズムもあります。詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

使用上の注意

DBMS_DATA_MINING_TRANSFORMパッケージによって、データ変換を指定するための柔軟なフレームワークが提供されます。モデルに変換を埋め込む場合(推奨される方法)、変換リスト・オブジェクトを作成してそのリストをCREATE_MODELプロシージャに渡します。埋込みなしでデータを変換する場合、ビューを作成します。

変換式は、変換リストに指定されている場合、モデルによって実行されます。変換式は、ビューに指定されている場合、ビューによって実行されます。

変換定義

変換定義は、データを変換するSQL式を生成するために使用します。たとえば、数値列を正規化するための変換定義は、そのデータのshift値とscale値です。

DBMS_DATA_MINING_TRANSFORMパッケージによって、プロシージャをコールして変換定義を計算するか、変換定義を独自に計算することができます(またはこれら両方が可能です)。

変換定義表

DBMS_DATA_MINING_TRANSFORMには、変換定義を計算してそれらを変換定義表に挿入するINSERTプロシージャが含まれます。変換定義表の値を変更することや、それらの値を独自に移入することができます。

XFORMルーチンは、移入された定義表を使用して外部ビューのデータを変換します。STACKルーチンは、移入された定義表を使用して変換リストを作成します。

定義表に基づいて変換を指定するには、次の手順を実行します。

1. CREATEルーチンを使用して変換定義表を作成します。
これらの表には、指定のタイプの変換に対応する変換定義を格納する列が含まれます。たとえば、CREATE_BIN_NUMプロシージャは、データ値を格納する列と、関連するビン識別子を格納する別の列を含んだ定義表を作成します。

2. INSERTルーチンを使用して変換定義を計算し、表に挿入します。
各INSERTルーチンでは、変換定義の計算に特定の方法が使用されます。たとえば、INSERT_BIN_NUM_EQWIDTHプロシージャは、最小値と最大値を識別してビン境界を等間隔に設定することで、ビン境界を計算します。

3. STACKルーチンまたはXFORMルーチンを使用して、次のように定義表の情報に基づいて変換式を生成します。

- STACKルーチンを使用して変換リストに変換式を追加します。変換リストをCREATE_MODELプロシージャに渡します。変換式は、1つの長いSQL問合せに構成され、モデルに埋め込まれます。

- XFORMルーチンを使用してビュー内の変換式を実行します。変換は、モデルの外部に存在するため、新規データにモデルを適用するたびに再作成する必要があります。

定義表を使用しない変換

STACKルーチンは、変換リストに変換式を追加するための唯一の方法ではありません。定義表を使用せずに変換リストを作成することも可能です。

定義表を使用せずに変換を指定するには、次の手順を実行します。

1. 属性を変換するためのSQL式を記述します。

2. 変換を元に戻すためのSQL式を記述します。(「逆変換とモデルの透過性」を参照してください。)

3. 属性のADPを無効にするかどうかを指定します。デフォルトでは、モデルに対してADPを指定した場合、属性に対してADPが有効になります。(「自動データ準備の無効化」を参照してください。)

4. 変換リストに情報を追加するSET_TRANSFORMプロシージャへのコールでSQL式およびADP命令を指定します。

5. 変換する属性ごとに手順1から4を繰り返します。

6. 変換リストをCREATE_MODELプロシージャに渡します。変換式は、1つの長いSQL問合せに構成され、モデルに埋め込まれます。

注意:
SET_TRANSFORMを使用して指定するSQL式は、VARCHAR2に収まる必要があります。それより長い式を指定するには、SET_EXPRESSIONプロシージャを使用します。SET_EXPRESSIONでは、VARCHAR2配列に行を追加して式を作成できます。

変換リストについて

変換リストの要素は、変換レコードです。各変換レコードによって、単一属性の変換を管理するためにモデルで必要とされるすべての情報が提供されます。

各変換レコードには、次のフィールドが含まれます。

- attribute_name: 変換されるデータの列の名前。

- attribute_subname: attribute_nameがネストされた列の場合はネストされた属性の名前。それ以外の場合はNULL。

- expression: 属性を変換するためのSQL式。

- reverse_expression: 変換を元に戻すためのSQL式。

- attribute_spec: モデル作成中に、属性の特別な処理を識別します。詳細は、表46-33「SET_TRANSFORMプロシージャのパラメータ」を参照してください。

関連項目:

- TRANSFORM_LISTおよびTRANSFORM_RECオブジェクト・タイプの詳細は、表46-1を参照してください。

- SET_TRANSFORMプロシージャ

- CREATE_MODELプロシージャ

逆変換とモデルの透過性

アルゴリズムによって、変換された属性が操作され、モデルの調整およびスコアリングが行われます。ただし、変換された属性はエンド・ユーザーには重要でない場合があります。たとえば、属性xがビン1から4に変換された場合、ビン名1、2、3および4がアルゴリズムによって操作されますが、ユーザーはビン1から4に関するモデルのディテールまたは数値1から4の予測を必要としない可能性が高いです。

モデルのディテールおよび予測で元の属性値を戻すために、属性の変換レコードに反転式を指定できます。たとえば、属性yに対して変換式'log(10, y)'を指定する場合、逆変換式'power(10, y)'を指定できます。

逆変換によって、モデルの透過性が有効になります。内部処理がユーザーに対して透過的になります。

注意:
STACKプロシージャでは、正規化の変換が自動的に元に戻されますが、ビニング、クリッピングまたは欠損値の変換を元に戻すメカニズムは提供されません。
DBMS_DATA_MINING.ALTER_REVERSE_EXPRESSIONプロシージャを使用すると、既存のモデルに対して逆変換式の指定または更新を行うことができます。

関連項目:

例46-1「クリッピング変換のスタック」

「ALTER_REVERSE_EXPRESSIONプロシージャ」

モデル・ディテール・ファンクションへのリンクは、「DBMS_DATA_MININGサブプログラムの要約」を参照してください。

自動データ準備の無効化

ADPは、モデル固有の設定(PREP_AUTO)によって制御されます。PREP_AUTO設定は、個々の属性に対して無効化しないかぎり、すべてのモデル属性に影響します。

ADPを有効化してattribute_specをNOPREPに設定すると、その属性に指定した変換のみが評価されます。ADPを有効化してattribute_specをNOPREPに設定しない場合、その属性に指定した変換の後で自動変換が評価されます。

ADPをモデルに対して有効化しない場合、変換レコードのattribute_specフィールドは無視されます。

関連項目:
PREP_AUTO設定の詳細は、「自動データ準備」を参照してください。

変換リストへの変換レコードの追加

変換リストは、変換レコードのスタックです。新しい変換レコードを追加すると、そのレコードはスタックの一番上に追加されます。(詳細は、「スタックについて」を参照してください。)

SET_TRANSFORMを使用して変換リストに変換レコードを追加する場合、変換レコードのすべてのフィールドに値を指定できます。

STACKプロシージャを使用して変換リストに変換レコードを追加する場合、変換式のフィールドのみが移入されます。正規化の変換の場合、逆変換式のフィールドも移入されます。

STACKプロシージャとSET_TRANSFORMの両方を使用して1つの変換リストを作成できます。1回のSTACKプロシージャ・コールで、指定した変換定義表にすべての属性の変換レコードが追加されます。1回のSET_TRANSFORMコールで、単一属性の変換レコードが1つ追加されます。

スタックについて

変換リストは、変換レコードをスタックすることで作成されます。変換リストは、下から上へと評価されます。各変換式は、スタック内でその下位にある変換式の結果に依存します。

STACKプロシージャ

STACKプロシージャは、変換定義表の情報から変換レコードを作成します。たとえば、STACK_BIN_NUMは、量的ビニング用の定義表に指定された各属性の変換レコードを作成します。STACKプロシージャは、変換レコードを次のようにスタックします。

- 属性が定義表に指定されているが、変換リストに指定されていない場合、STACKプロシージャは、変換レコードを作成し、(可能であれば)逆変換を計算し、変換レコードに変換および逆変換を挿入して、変換リストの一番上に変換レコードを追加します。

- 属性が変換リストに指定されているが、定義表に指定されていない場合、STACKプロシージャは何の処理も行いません。

- 属性が定義表および変換リストに指定されている場合、STACKプロシージャは、定義表の変換式を変換レコードの変換式の上位にスタックし、逆変換を更新します。例46-1「クリッピング変換のスタック」および例46-4「ネストした正規化変換のスタック」を参照してください。

例46-1 クリッピング変換のスタック

この例は、STACK_CLIPプロシージャによって変換リストに変換レコードを追加する方法を示しています。クリッピング変換は、スタック後にCOL1およびCOL2で元に戻されないことに注意してください(「逆変換とモデルの透過性」を参照)。

次の説明を参照してください。

- CREATE_CLIPプロシージャ: 定義表の作成

- INSERT_CLIP_TRIM_TAILプロシージャ: 表への定義の挿入

- INSERT_CLIP_WINSOR_TAILプロシージャ: 表への定義の挿入

- 表46-1: 変換リストの構造の説明(TRANSFORM_LISTオブジェクト)

次のように移入されたクリッピング定義表があるとします。

col

att

lcut

lval

rcut

rval

COL1

NULL

-1.5

-1.5

4.5

4.5

COL2

NULL

0

0

1

1

スタック前の変換リストは次のとおりだとします。

-------------------------
transformation record #1:
-------------------------
attribute_name       = COL1
attribute_subname    = null
expression           = log(10, COL1)
reverse_expression   = power(10, COL1)
-------------------------
transformation record #2:
-------------------------
attribute_name       = COL3
attribute_subname    = null
expression           = ln(COL3)
reverse_expression   = exp(COL3)

スタック後の変換リストは次のとおりです。

-------------------------
transformation record #1:
-------------------------
attribute_name       = COL1
attribute_subname    = null
expression           = CASE WHEN log(10, COL1) < -1.5 THEN -1.5
WHEN log(10, COL1) > 4.5  THEN 4.5
ELSE log(10, COL1)
END;
reverse_expression   = power(10, COL1)
-------------------------
transformation record #2:
-------------------------
attribute_name       = COL3
attribute_subname    = null
expression           = ln(COL3)
reverse_expression   = exp(COL3)
-------------------------
transformation record #3:
-------------------------
attribute_name       = COL2
attribute_subname    = null
expression           = CASE WHEN COL2 < 0 THEN 0
WHEN COL2 > 1 THEN 1
ELSE COL2
END;
reverse_expression   = null

ネストしたデータの変換

CREATEルーチンによって、属性を識別するための2つの列(colおよびatt)が含まれる変換定義表が作成されます。列colには、データ表の列名が格納されます。データ列がネストしていない場合、attはNULLであり、属性名はcolになります。データ列がネストしている場合、attにはネストした属性の名前が格納され、属性名はcol.attになります。

INSERTルーチンとXFORMルーチンでは、定義表のatt列は無視されます。ネストしたデータは、INSERTルーチンまたはXFORMルーチンのどちらでもサポートされません。

ネストしたデータがサポートされるのは、STACKプロシージャおよびSET_TRANSFORMのみです。ネストしたデータの変換は、常にモデルに埋め込まれます。

Oracle Data Miningのネストした列には、次のタイプが含まれます。

DM_NESTED_NUMERICALS
DM_NESTED_CATEGORICALS
DM_NESTED_BINARY_DOUBLES
DM_NESTED_BINARY_FLOATS

関連項目:

「定数」

Oracle Data Miningでのネストした属性の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

変換レコードでのネストした属性の指定

変換レコード(TRANSFORM_REC)には、属性を識別するための2つのフィールド(attribute_nameおよびattribute_subname)が含まれます。フィールドattribute_nameには、データ表の列名が格納されます。データ列がネストしていない場合、attribute_subnameはNULLであり、属性名はattribute_nameになります。データ列がネストしている場合、attribute_subnameにはネストした属性の名前が格納され、属性名はattribute_name.attribute_subnameになります。

個々のネストした属性の変換

ネストした列の個々の属性に異なる変換を指定し、その列の残りの属性すべてにデフォルト変換を指定できます。ネストしたデフォルト変換を指定するには、例46-2に示すとおり、attribute_nameフィールドにNULLを指定し、attribute_subnameフィールドにネストした列の名前を指定します。VALUEというキーワードを使用して、変換式でネストした属性の値を表現していることに注意してください。

例46-2 ネストした列の変換

次の文では、COL_N1の2つのネストした属性を変換します。属性ATTR1は正規化を使用して変換され、ATTR2はNULLに設定され、属性の削除変換が行われます(ATTR2はモデルのトレーニングに使用されません)。COL_N1の残りの属性はすべて10で割られます。

DECLARE
stk dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM(
stk,'COL_N1', 'ATTR1', '(VALUE - (-1.5))/20', 'VALUE *20 + (-1.5)');
dbms_data_mining_transform.SET_TRANSFORM(
stk,'COL_N1', 'ATTR2', NULL, NULL);
dbms_data_mining_transform.SET_TRANSFORM(
stk, NULL, 'COL_N1', 'VALUE/10', 'VALUE*10');
END;
/

この文から次のSQLが生成されます。

CAST(MULTISET(SELECT DM_NESTED_NUMERICAL(
"ATTRIBUTE_NAME",
DECODE("ATTRIBUTE_NAME",
'ATTR1', ("VALUE" - (-1.5))/20,
"VALUE"/10))
FROM TABLE("COL_N1")
WHERE "ATTRIBUTE_NAME" IS NOT IN ('ATTR2'))
AS DM_NESTED_NUMERICALS)

変換をCOL_N1.ATTR1およびCOL_N1.ATTR2に指定しない場合、COL_N1のすべての属性にデフォルト変換が使用され、生成されるSQLにDECODEは含まれません。

CAST(MULTISET(SELECT DM_NESTED_NUMERICAL(
"ATTRIBUTE_NAME",
"VALUE"/10)
FROM TABLE("COL_N1"))
AS DM_NESTED_NUMERICALS)

DECODEの引数は256個に制限されているため、個々のネストした属性を任意の数だけ指定できるように複数のDECODE関数がネストされます。

ネストした列の追加

例46-3に示すとおり、ネストした列をデータに追加する変換を指定できます。

例46-3 変換リストへのネストした列の追加

DECLARE
v_xlst dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM(v_xlst,
'YOB_CREDLIM', NULL,
'dm_nested_numericals(
dm_nested_numerical(
''CUST_YEAR_OF_BIRTH'', cust_year_of_birth),
dm_nested_numerical(
''CUST_CREDIT_LIMIT'', cust_credit_limit))',
NULL);
dbms_data_mining_transform.SET_TRANSFORM(
v_xlst, 'CUST_YEAR_OF_BIRTH', NULL, NULL, NULL);
dbms_data_mining_transform.SET_TRANSFORM(
v_xlst, 'CUST_CREDIT_LIMIT', NULL, NULL, NULL);
dbms_data_mining_transform.XFORM_STACK(
v_xlst, 'mining_data', 'mining_data_v');
END;
/

set long 2000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_V';

TEXT
---------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_POSTAL_CODE",dm_nested_numericals(
dm_nested_numerical(
'CUST_YEAR_OF_BIRTH', cust_year_of_birth),
dm_nested_numerical(
'CUST_CREDIT_LIMIT', cust_credit_limit)) "YOB_CREDLIM" FROM mining_data

SELECT * FROM mining_data_v WHERE cust_id = 104500;

CUST_ID CUST_POSTAL_CODE YOB_CREDLIM(ATTRIBUTE_NAME, VALUE)
------- ---------------- ---------------------------------------------------------
104500 68524            DM_NESTED_NUMERICALS(DM_NESTED_NUMERICAL(
'CUST_YEAR_OF_BIRTH', 1962),
DM_NESTED_NUMERICAL('CUST_CREDIT_LIMIT', 15000))

ネストした変換のスタック

例46-4は、STACK_NORM_LINプロシージャによって変換リストにネストした列COL_Nの変換レコードを追加する方法を示しています。

次の説明を参照してください。

- CREATE_NORM_LINプロシージャ: 定義表の作成

- INSERT_NORM_LIN_MINMAXプロシージャ: 表への定義の挿入

- INSERT_NORM_LIN_SCALEプロシージャ: 表への定義の挿入

- INSERT_NORM_LIN_ZSCOREプロシージャ: 表への定義の挿入

- 表46-1: 変換リストの構造の説明

例46-4 ネストした正規化変換のスタック

次のように移入された線形正規化定義表があるとします。

col

att

shift

scale

COL_N

ATT2

0

20

null

COL_N

0

10

スタック前の変換リストは次のとおりだとします。

-------------------------
transformation record #1:
-------------------------
attribute_name       = COL_N
attribute_subname    = ATT1
expression           = log(10, VALUE)
reverse_expression   = power(10, VALUE)
-------------------------
transformation record #2:
-------------------------
attribute_name       = null
attribute_subname    = COL_N
expression           = ln(VALUE)
reverse_expression   = exp(VALUE)

スタック後の変換リストは次のとおりです。

-------------------------
transformation record #1:
-------------------------
attribute_name       = COL_N
attribute_subname    = ATT1
expression           = (log(10, VALUE) - 0)/10
reverse_expression   = power(10, VALUE*10 + 0)
-------------------------
transformation record #2:
-------------------------
attribute_name       = NULL
attribute_subname    = COL_N
expression           = (ln(VALUE)- 0)/10
reverse_expression   = exp(VALUE *10 + 0)
-------------------------
transformation record #3:
-------------------------
attribute_name       = COL_N
attribute_subname    = ATT2
expression           = (ln(VALUE) - 0)/20
reverse_expression   = exp(VALUE * 20 + 0)

セキュリティ・モデル

DBMS_DATA_MINING_TRANSFORMパッケージは、ユーザーSYSによって所有され、データベース・インストールの一環としてインストールされます。このパッケージの実行権限は、PUBLICに付与されます。このパッケージ内のルーチンは、実行者権限(現行のユーザーの権限)を使用して実行されます。

DBMS_DATA_MINING_TRANSFORM.INSERT_*プロシージャには、変換目的で入力データを指定できるdata_table_nameパラメータがあります。data_table_nameの値には、物理表またはビューの名前を指定できます。data_table_nameパラメータには、インライン問合せを指定することもできます。

重要:
インライン問合せは、変換用データの指定に使用できるため、コール側ルーチンで入力文字列に対して必要なSQLインジェクション・チェックを実行することを強くお薦めします。

関連項目:
DBMS_DATA_MINING_TRANSFORM.INSERT_*プロシージャの詳細は、「使用上の注意」を参照してください。

データ・タイプ

Table 46-1では、DBMS_DATA_MINING_TRANSFORMで定義されているデータ・タイプについて説明します。

表46-1 DBMS_DATA_MINING_TRANSFORMのデータ・タイプ

リスト・タイプ

リスト要素

説明

COLUMN_
LIST

VARRAY(1000) OF varchar2(32)

COLUMN_LISTは、列名の引用符で囲まれた識別子および引用符で囲まれていない識別子を格納します。

COLUMN_LISTは、INSERTプロシージャのexclude_listパラメータのデータ・タイプです。例については、「INSERT_AUTOBIN_NUM_EQWIDTHプロシージャ」を参照してください。

VARRAY構造の移入の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

DESCRIBE_
LIST

DBMS_SQL.DESC_TAB2

TYPE desc_tab2 IS TABLE OF desc_rec2
INDEX BY BINARY_INTEGER

TYPE desc_rec2 IS RECORD (
col_type            BINARY_INTEGER := 0,
col_max_len         BINARY_INTEGER := 0,
col_name            VARCHAR2(32767):= '',
col_name_len        BINARY_INTEGER := 0,
col_schema_name     VARCHAR2(32)   := '',
col_schema_name_len BINARY_INTEGER := 0,
col_precision       BINARY_INTEGER := 0,
col_scale           BINARY_INTEGER := 0,
col_charsetid       BINARY_INTEGER := 0,
col_charsetform     BINARY_INTEGER := 0,
col_null_ok         BOOLEAN := TRUE);

DESCRIBE_LISTは、変換リスト適用後のデータ表の列を説明します。DESCRIBE_LISTは、DESCRIBE_STACKプロシージャによって戻されます。

DESC_TAB2タイプおよびDESC_REC2タイプは、DBMS_SQLパッケージで定義されています。「DESC_REC2レコード・タイプ」を参照してください。

DESC_REC2のcol_typeフィールドは、列のデータ・タイプを識別します。データ・タイプは、組込みのデータ・タイプを表現する数値定数として表されます。たとえば、1は可変長の文字列を示します。Oracle組込みのデータ・タイプのコードは、『Oracle Database SQL言語リファレンス』にリストされています。Oracle Data Miningのネストしたタイプのコードは、「定数」を参照してください。

DESC_REC2のcol_nameフィールドは、列名を識別します。このフィールドには、列名、別名または式が移入されます。列名がSELECT式の場合、非常に長くなる可能性があります。式の長さが30バイトを超えると、その式は、別名を指定しないかぎりビューで使用できません。

TRANSFORM_
LIST

TABLE OF transform_rec

TYPE transform_rec IS RECORD (
attribute_name      VARCHAR2(30),
attribute_subname   VARCHAR2(4000),
expression          EXPRESSION_REC,
reverse_expression  EXPRESSION_REC,
attribute_spec      VARCHAR2(4000));

TYPE expression_rec IS RECORD (
lstmt       DBMS_SQL.VARCHAR2A,
lb          BINARY_INTEGER DEFAULT 1,
ub          BINARY_INTEGER DEFAULT 0);

TYPE varchar2a IS TABLE OF VARCHAR2(32767)
INDEX BY BINARY_INTEGER;

TRANSFORM_LISTは、モデルに埋め込むことができる変換のリストです。TRANSFORM_LISTは、CREATE_MODELプロシージャによって引数として使用されます。

TRANSFORM_LISTの各フィールドは、単一属性の変換方法を指定するTRANSFORM_RECです。attribute_nameは列名です。attribute_subnameは、列がネストしている場合はネストした属性の名前で、それ以外の場合は、attribute_subnameはNULLです。

expressionフィールドは、属性を変換するためのSQL式を格納します。反転式の詳細は、「変換リストについて」を参照してください。

attribute_specフィールドは、モデル作成中に属性を特定の方法で処理するために使用できます。詳細は、表46-33「SET_TRANSFORMプロシージャのパラメータ」を参照してください。

TRANSFORM_RECの式のタイプは、EXPRESSION_RECです。lstmtフィールドは、VARCHAR2(32767)の表であるVARCHAR2Aを格納します。VARCHAR2Aデータ・タイプでは、変換式をVARCHAR2Aの複数の行に分割できるため、非常に長い変換式を使用できます。VARCHAR2Aタイプは、DBMS_SQLパッケージで定義されています。「VARCHAR2A表タイプ」を参照してください。

ub (上限)フィールドおよびlb (下限)フィールドは、VARCHAR2A表に存在する行の数を示します。ub < lb (デフォルト)の場合、EXPRESSION_RECは空で、lb=ub=1の場合、1つの行が存在し、lb=1およびub=2の場合は、2つの行が存在する、というように続きます。

定数

表46-2では、DBMS_DATA_MINING_TRANSFORMで定義されている定数について説明します。

表46-2 DBMS_DATA_MINING_TRANSFORMの定数

定数

値

説明

NEST_NUM_COL_TYPE

100001

変換リストの属性が、DM_NESTED_NUMERICALSの列にある行から取得されることを示します。

ネストした量的属性は次のように定義されます。

attribute_name       VARCHAR2(4000)
value                NUMBER

NEST_CAT_COL_TYPE

100002

変換リストの属性が、DM_NESTED_CATEGORICALSの列にある行から取得されることを示します。

ネストした質的属性は次のように定義されます。

attribute_name       VARCHAR2(4000)
value                VARCHAR2(4000)

NEST_BD_COL_TYPE

100003

変換リストの属性が、DM_NESTED_BINARY_DOUBLESの列にある行から取得されることを示します。

ネストしたバイナリdouble属性は次のように定義されます。

attribute_name       VARCHAR2(4000)
value                BINARY_DOUBLE

NEST_BF_COL_TYPE

100004

変換リストの属性が、DM_NESTED_BINARY_FLOATSの列にある行から取得されることを示します。

attribute_name       VARCHAR2(4000)
value                BINARY_FLOAT

関連項目:
Oracle Data Miningでのネストしたデータの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

DBMS_DATA_MINING_TRANSFORMサブプログラムの要約

表46-3 DBMS_DATA_MINING_TRANSFORMパッケージのサブプログラム

サブプログラム

用途

CREATE_BIN_CATプロシージャ

質的ビニングの変換定義表を作成します。

CREATE_BIN_NUMプロシージャ

量的ビニングの変換定義表を作成します。

CREATE_CLIPプロシージャ

クリッピングの変換定義表を作成します。

CREATE_COL_REMプロシージャ

列削除の変換定義表を作成します。

CREATE_MISS_CATプロシージャ

質的欠損値処理の変換定義表を作成します。

CREATE_MISS_NUMプロシージャ

量的欠損値処理の変換定義表を作成します。

CREATE_NORM_LINプロシージャ

線形正規化の変換定義表を作成します。

DESCRIBE_STACKプロシージャ

変換リストを説明します。

GET_EXPRESSIONファンクション

変換式からVARCHAR2チャンクを戻します。

INSERT_AUTOBIN_NUM_EQWIDTHプロシージャ

変換定義表に量的自動等幅ビニング定義を挿入します。

INSERT_BIN_CAT_FREQプロシージャ

変換定義表に質的頻度ベース・ビニング定義を挿入します。

INSERT_BIN_NUM_EQWIDTHプロシージャ

変換定義表に量的等幅ビニング定義を挿入します。

INSERT_BIN_NUM_QTILEプロシージャ

変換定義表に量的クオンタイル・ビニング式を挿入します。

INSERT_BIN_SUPERプロシージャ

量的データおよび質的データの変換定義表に監視ありビニング定義を挿入します。

INSERT_CLIP_TRIM_TAILプロシージャ

変換定義表に量的トリミング定義を挿入します。

INSERT_CLIP_WINSOR_TAILプロシージャ

変換定義表に量的ウィンザライズ定義を挿入します。

INSERT_MISS_CAT_MODEプロシージャ

変換定義表に質的欠損値処理定義を挿入します。

INSERT_MISS_NUM_MEANプロシージャ

変換定義表に量的欠損値処理定義を挿入します。

INSERT_NORM_LIN_MINMAXプロシージャ

変換定義表に最小値と最大値による線形正規化定義を挿入します。

INSERT_NORM_LIN_SCALEプロシージャ

変換定義表にスケールによる線形正規化定義を挿入します。

INSERT_NORM_LIN_ZSCOREプロシージャ

変換定義表にZスコアによる線形正規化定義を挿入します。

SET_EXPRESSIONプロシージャ

式にVARCHAR2チャンクを追加します。

SET_TRANSFORMプロシージャ

変換リストに変換レコードを追加します。

STACK_BIN_CATプロシージャ

変換リストに質的ビニング式を追加します。

STACK_BIN_NUMプロシージャ

変換リストに量的ビニング式を追加します。

STACK_CLIPプロシージャ

変換リストにクリッピング式を追加します。

STACK_COL_REMプロシージャ

変換リストに列削除式を追加します。

STACK_MISS_CATプロシージャ

変換リストに質的欠損値処理式を追加します。

STACK_MISS_NUMプロシージャ

変換リストに量的欠損値処理式を追加します。

STACK_NORM_LINプロシージャ

変換リストに線形正規化式を追加します。

XFORM_BIN_CATプロシージャ

質的ビニング変換を使用してデータ表のビューを作成します。

XFORM_BIN_NUMプロシージャ

量的ビニング変換を使用してデータ表のビューを作成します。

XFORM_CLIPプロシージャ

クリッピング変換を使用してデータ表のビューを作成します。

XFORM_COL_REMプロシージャ

列削除変換を使用してデータ表のビューを作成します。

XFORM_EXPR_NUMプロシージャ

指定された量的変換を使用してデータ表のビューを作成します。

XFORM_EXPR_STRプロシージャ

指定された質的変換を使用してデータ表のビューを作成します。

XFORM_MISS_CATプロシージャ

質的欠損値処理を使用してデータ表のビューを作成します。

XFORM_MISS_NUMプロシージャ

量的欠損値処理を使用してデータ表のビューを作成します。

XFORM_NORM_LINプロシージャ

線形正規化変換を使用してデータ表のビューを作成します。

XFORM_STACKプロシージャ

変換リストのビューを作成します。

CREATE_BIN_CATプロシージャ

このプロシージャは、質的ビニングの変換定義表を作成します。表46-4に、列の説明を示します。

表46-4 質的ビニングの変換定義表の列

名前

データ・タイプ

説明

col

VARCHAR2(30)

質的データの列の名前。

列がネストしていない場合、列名は属性名でもあります。属性名の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

att

VARCHAR2(4000)

colがネストした列の場合、属性のサブ名。

colがネストしている場合、属性名はcol.attです。colがネストしていない場合、attはNULLです。

val

VARCHAR2(4000)

属性の値。

bin

VARCHAR2(4000)

値に対するビン割当て。

構文

DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT (
bin_table_name     IN VARCHAR2,
bin_schema_name    IN VARCHAR2 DEFAULT NULL );

パラメータ

表46-5 CREATE_BIN_CATプロシージャのパラメータ

パラメータ

説明

bin_table_name

作成する変換定義表の名前。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 質的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 変換定義表とネストしたデータの詳細は、「ネストしたデータの変換」を参照してください。

3. 次のプロシージャを使用して、変換定義表にデータを移入できます。

- INSERT_BIN_CAT_FREQプロシージャ: 頻度ベースのビニング

- INSERT_BIN_SUPERプロシージャ: 監視ありビニング

関連項目:

「ビニング」

「使用上の注意」

例

次の文では、現行のスキーマにbin_cat_xtblという表を作成します。この表には、質的属性のビン割当てを移入できる列が含まれます。

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT('bin_cat_xtbl');
END;
/
DESCRIBE bin_cat_xtbl
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
COL                                                VARCHAR2(30)
ATT                                                VARCHAR2(4000)
VAL                                                VARCHAR2(4000)
BIN                                                VARCHAR2(4000)

CREATE_BIN_NUMプロシージャ

このプロシージャは、量的ビニングの変換定義表を作成します。表46-6に、列の説明を示します。

表46-6 量的ビニングの変換定義表の列

名前

データ・タイプ

説明

col

VARCHAR2(30)

量的データの列の名前。

列がネストしていない場合、列名は属性名でもあります。属性名の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

att

VARCHAR2(4000)

colがネストした列の場合、属性のサブ名。

colがネストしている場合、属性名はcol.attです。colがネストしていない場合、attはNULLです。

val

NUMBER

属性の値。

bin

VARCHAR2(4000)

値に対するビン割当て。

構文

DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_NUM (
bin_table_name    IN VARCHAR2,
bin_schema_name   IN VARCHAR2 DEFAULT NULL );

パラメータ

表46-7 CREATE_BIN_NUMプロシージャのパラメータ

パラメータ

説明

bin_table_name

作成する変換定義表の名前。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 変換定義表とネストしたデータの詳細は、「ネストしたデータの変換」を参照してください。

3. 次のプロシージャを使用して、変換定義表にデータを移入できます。

- INSERT_AUTOBIN_NUM_EQWIDTHプロシージャ: 自動等幅ビニング

- INSERT_BIN_NUM_EQWIDTHプロシージャ: ユーザー指定の等幅ビニング

- INSERT_BIN_NUM_QTILEプロシージャ: クオンタイル・ビニング

- INSERT_BIN_SUPERプロシージャ: 監視ありビニング

関連項目:

「ビニング」

「使用上の注意」

例

次の文では、現行のスキーマにbin_num_xtblという表を作成します。この表には、量的属性のビン割当てを移入できる列が含まれます。

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_NUM('bin_num_xtbl');
END;
/

DESCRIBE bin_num_xtbl
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
COL                                                VARCHAR2(30)
ATT                                                VARCHAR2(4000)
VAL                                                NUMBER
BIN                                                VARCHAR2(4000)

CREATE_CLIPプロシージャ

このプロシージャは、外れ値の影響を最小限に抑えるためにクリッピングまたはウィンザライズの変換定義表を作成します。表46-8に、列の説明を示します。

表46-8 クリッピングまたはウィンザライズの変換定義表の列

名前

データ・タイプ

説明

col

VARCHAR2(30)

量的データの列の名前。

列がネストしていない場合、列名は属性名でもあります。属性名の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

att

VARCHAR2(4000)

colがDM_NESTED_NUMERICALSのネストした列の場合、属性のサブ名。colがネストしている場合、属性名はcol.attです。

colがネストしていない場合、attはNULLです。

lcut

NUMBER

属性の最小の標準値。

属性値がxy軸にプロットされている場合、lcutは、この属性の標準値とみなされる値の範囲の左端境界です。

lcutの左側に存在するすべての値は、外れ値です。

lval

NUMBER

lcutの左側の外れ値に割り当てられた値。

rcut

NUMBER

属性の最大の標準値。

属性値がxy軸にプロットされている場合、rcutは、この属性の標準値とみなされる値の範囲の右端境界です。

rcutの右側に存在するすべての値は、外れ値です。

rval

NUMBER

rcutの右側の外れ値に割り当てられた値。

構文

DBMS_DATA_MINING_TRANSFORM.CREATE_CLIP (
clip_table_name    IN VARCHAR2,
clip_schema_name   IN VARCHAR2 DEFAULT NULL );

パラメータ

表46-9 CREATE_CLIPプロシージャのパラメータ

パラメータ

説明

clip_table_name

作成する変換定義表の名前。

clip_schema_name

clip_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 変換定義表とネストしたデータの詳細は、「ネストしたデータの変換」を参照してください。

3. 次のプロシージャを使用して、変換定義表にデータを移入できます。

- INSERT_CLIP_TRIM_TAILプロシージャ: 外れ値をNULLで置換

- INSERT_CLIP_WINSOR_TAILプロシージャ: 外れ値を平均値で置換

関連項目:

「外れ値処理」

「使用上の注意」

例

次の文では、現行のスキーマにclip_xtblという表を作成します。この表には、量的属性のクリッピング命令を移入できる列が含まれます。

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_CLIP('clip_xtbl');
END;
/

DESCRIBE clip_xtbl
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
COL                                                VARCHAR2(30)
ATT                                                VARCHAR2(4000)
LCUT                                               NUMBER
LVAL                                               NUMBER
RCUT                                               NUMBER
RVAL                                               NUMBER

CREATE_COL_REMプロシージャ

このプロシージャは、データ表から列を削除するための変換定義表を作成します。表46-10に、列の説明を示します。

表46-10 列削除の変換定義表の列

名前

データ・タイプ

説明

col

VARCHAR2(30)

データの列の名前。

列がネストしていない場合、列名は属性名でもあります。属性名の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

att

VARCHAR2(4000)

colがネストしている場合(DM_NESTED_NUMERICALSまたはDM_NESTED_CATEGORICALS)、属性のサブ名。colがネストしている場合、属性名はcol.attです。

colがネストしていない場合、attはNULLです。

構文

DBMS_DATA_MINING_TRANSFORM.CREATE_COL_REM (
rem_table_name           VARCHAR2,
rem_schema_name          VARCHAR2 DEFAULT NULL );

パラメータ

表46-11 CREATE_COL_REMプロシージャのパラメータ

パラメータ

説明

rem_table_name

作成する変換定義表の名前。

rem_schema_name

rem_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 変換定義表とネストしたデータの詳細は、「ネストしたデータの変換」を参照してください。

2. 「使用上の注意」を参照してください。

例

次の文では、現行のスキーマにrem_att_xtblという表を作成します。この表には、マイニングされるデータから除外する属性の名前を移入できる列が含まれます。

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_COL_REM ('rem_att_xtbl');
END;
/
DESCRIBE rem_att_xtbl
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
COL                                                VARCHAR2(30)
ATT                                                VARCHAR2(4000)

CREATE_MISS_CATプロシージャ

このプロシージャは、質的欠損値を置換するための変換定義表を作成します。表46-12に、列の説明を示します。

表46-12 質的欠損値処理の変換定義表の列

名前

データ・タイプ

説明

col

VARCHAR2(30)

質的データの列の名前。

列がネストしていない場合、列名は属性名でもあります。属性名の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

att

VARCHAR2(4000)

colがDM_NESTED_CATEGORICALSのネストした列の場合、属性のサブ名。colがネストしている場合、属性名はcol.attです。

colがネストしていない場合、attはNULLです。

val

VARCHAR2(4000)

属性の欠損値の置換値。

構文

DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_CAT (
miss_table_name       IN VARCHAR2,
miss_schema_name      IN VARCHAR2 DEFAULT NULL );

パラメータ

表46-13 CREATE_MISS_CATプロシージャのパラメータ

パラメータ

説明

miss_table_name

作成する変換定義表の名前。

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 質的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 変換定義表とネストしたデータの詳細は、「ネストしたデータの変換」を参照してください。

3. INSERT_MISS_CAT_MODEプロシージャを使用して、変換定義表にデータを移入できます。

関連項目:

「欠損値の処理」

「使用上の注意」

例

次の文では、現行のスキーマにmiss_cat_xtblという表を作成します。この表には、質的属性の欠損データに対する値を移入できる列が含まれます。

BEGIN

DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_CAT('miss_cat_xtbl');
END;
/

DESCRIBE miss_cat_xtbl
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
COL                                                VARCHAR2(30)
ATT                                                VARCHAR2(4000)
VAL                                                VARCHAR2(4000)

CREATE_MISS_NUMプロシージャ

このプロシージャは、量的欠損値を置換するための変換定義表を作成します。表46-14に、列の説明を示します。

表46-14 量的欠損値処理の変換定義表の列

名前

データ・タイプ

説明

col

VARCHAR2(30)

量的データの列の名前。

列がネストしていない場合、列名は属性名でもあります。属性名の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

att

VARCHAR2(4000)

colがDM_NESTED_NUMERICALSのネストした列の場合、属性のサブ名。colがネストしている場合、属性名はcol.attです。

colがネストしていない場合、attはNULLです。

val

NUMBER

属性の欠損値の置換値。

構文

DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_NUM (
miss_table_name       IN VARCHAR2,
miss_schema_name      IN VARCHAR2 DEFAULT NULL );

パラメータ

表46-15 CREATE_MISS_NUMプロシージャのパラメータ

パラメータ

説明

miss_table_name

作成する変換定義表の名前。

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 変換定義表とネストしたデータの詳細は、「ネストしたデータの変換」を参照してください。

3. INSERT_MISS_NUM_MEANプロシージャを使用して、変換定義表にデータを移入できます。

関連項目:

「欠損値の処理」

「使用上の注意」

例

次の文では、現行のスキーマにmiss_num_xtblという表を作成します。この表には、量的属性の欠損データに対する値を移入できる列が含まれます。

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_NUM('miss_num_xtbl');
END;
/

DESCRIBE miss_num_xtbl
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
COL                                                VARCHAR2(30)
ATT                                                VARCHAR2(4000)
VAL                                                NUMBER

CREATE_NORM_LINプロシージャ

このプロシージャは、線形正規化の変換定義表を作成します。表46-16に、列の説明を示します。

表46-16 線形正規化の変換定義表の列

名前

データ・タイプ

説明

col

VARCHAR2(30)

量的データの列の名前。

列がネストしていない場合、列名は属性名でもあります。属性名の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

att

VARCHAR2(4000)

colがDM_NESTED_NUMERICALSのネストした列の場合、属性のサブ名。colがネストしている場合、属性名はcol.attです。

colがネストしていない場合、attはNULLです。

shift

NUMBER

属性値から差し引かれる定数。

scale

NUMBER

差引き後の値を割るための定数。

構文

DBMS_DATA_MINING_TRANSFORM.CREATE_NORM_LIN (
norm_table_name       IN VARCHAR2,
norm_schema_name      IN VARCHAR2 DEFAULT NULL );

パラメータ

表46-17 CREATE_NORM_LINプロシージャのパラメータ

パラメータ

説明

norm_table_name

作成する変換定義表の名前。

norm_schema_name

norm_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 変換定義表とネストしたデータの詳細は、「ネストしたデータの変換」を参照してください。

3. 次のプロシージャを使用して、変換定義表にデータを移入できます。

- INSERT_NORM_LIN_MINMAXプロシージャ: 最小値と最大値による線形正規化の使用

- INSERT_NORM_LIN_SCALEプロシージャ: スケールによる線形正規化の使用

- INSERT_NORM_LIN_ZSCOREプロシージャ: Zスコアによる線形正規化の使用

関連項目:

「線形正規化」

「使用上の注意」

例

次の文では、現行のスキーマにnorm_xtblという表を作成します。この表には、量的属性を正規化するためのshift値とscale値を移入できる列が含まれます。

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_NORM_LIN('norm_xtbl');
END;
/

DESCRIBE norm_xtbl
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
COL                                                VARCHAR2(30)
ATT                                                VARCHAR2(4000)
SHIFT                                              NUMBER
SCALE                                              NUMBER

DESCRIBE_STACKプロシージャ

このプロシージャは、変換リストを適用した後のデータ表の列の情報を表示します。変換リストで指定された列のみが変換されます。データ表の残りの列は、変更なしで出力に含められます。

変換の適用後にデータ表のビューを作成するには、XFORM_STACKプロシージャを使用します。

構文

DBMS_DATA_MINING_TRANSFORM.DESCRIBE_STACK (
xform_list           IN  TRANSFORM_LIST,
data_table_name      IN  VARCHAR2,
describe_list        OUT DESCRIBE_LIST,
data_schema_name     IN  VARCHAR2 DEFAULT NULL);

パラメータ

表46-18 DESCRIBE_STACKプロシージャのパラメータ

パラメータ

説明

xform_list

変換のリスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

describe_list

xform_listに指定された変換が適用された後のデータ表の列の説明。DESCRIBE_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

変換リストおよび埋込み変換の詳細は、「使用上の注意」を参照してください。

例

この例は、変換リストが適用された後のdmuser.cust_infoビューの列名とデータ・タイプ、列名の長さおよび列の最大の長さを示しています。変換はすべてユーザー指定です。SET_TRANSFORMプロシージャによって元の表の列の1つがNULLに設定されるため、DESCRIBE_STACKの結果にはその列は含まれません。

CREATE OR REPLACE VIEW cust_info AS
SELECT a.cust_id, c.country_id, c.cust_year_of_birth,
CAST(COLLECT(DM_Nested_Numerical(
b.prod_name, 1))
AS DM_Nested_Numericals) custprods
FROM sh.sales a, sh.products b, sh.customers c
WHERE a.prod_id = b.prod_id AND
a.cust_id=c.cust_id and
a.cust_id between 100001 AND 105000
GROUP BY a.cust_id, country_id, cust_year_of_birth;

describe cust_info
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
CUST_ID                                   NOT NULL NUMBER
COUNTRY_ID                                NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                        NOT NULL NUMBER(4)
CUSTPRODS                                          SYS.DM_NESTED_NUMERICALS

DECLARE
cust_stack   dbms_data_mining_transform.TRANSFORM_LIST;
cust_cols    dbms_data_mining_transform.DESCRIBE_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'country_id', NULL, 'country_id/10', 'country_id*10');
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'cust_year_of_birth', NULL, NULL, NULL);
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'custprods', 'Mouse Pad', 'value*100', 'value/100');
dbms_data_mining_transform.DESCRIBE_STACK(
xform_list => cust_stack,
data_table_name => 'cust_info',
describe_list => cust_cols);
dbms_output.put_line('====');
for i in 1..cust_cols.COUNT loop
dbms_output.put_line('COLUMN_NAME:     '||cust_cols(i).col_name);
dbms_output.put_line('COLUMN_TYPE:     '||cust_cols(i).col_type);
dbms_output.put_line('COLUMN_NAME_LEN: '||cust_cols(i).col_name_len);
dbms_output.put_line('COLUMN_MAX_LEN:  '||cust_cols(i).col_max_len);
dbms_output.put_line('====');
END loop;
END;
/
====
COLUMN_NAME:     CUST_ID
COLUMN_TYPE:     2
COLUMN_NAME_LEN: 7
COLUMN_MAX_LEN:  22
====
COLUMN_NAME:     COUNTRY_ID
COLUMN_TYPE:     2
COLUMN_NAME_LEN: 10
COLUMN_MAX_LEN:  22
====
COLUMN_NAME:     CUSTPRODS
COLUMN_TYPE:     100001
COLUMN_NAME_LEN: 9
COLUMN_MAX_LEN:  40
====

GET_EXPRESSIONファンクション

このファンクションは、変換式を格納するVARCHAR2配列から行を戻します。この配列は、SET_EXPRESSIONプロシージャへのコールによって作成されます。

この配列を使用すると、長すぎてSET_TRANSFORMプロシージャで使用できないSQL式を指定できます。

構文

DBMS_DATA_MINING_TRANSFORM.GET_EXPRESSION (
expression           IN EXPRESSION_REC,
chunk_num            IN PLS_INTEGER DEFAULT NULL);
RETURN VARCHAR2;

パラメータ

表46-19 GET_EXPRESSIONファンクションのパラメータ

パラメータ

説明

expression

属性の変換式または逆変換式を指定する式レコード(EXPRESSION_REC)。各式レコードには、VARCHAR2配列と、その配列内の上限境界と下限境界を指定する索引フィールドが含まれます。

変換レコード(TRANSFORM_REC)内には、2つのEXPRESSION_RECフィールドがあります。1つのフィールドは変換式用で、もう1つのフィールドは逆変換式用です。

EXPRESSION_RECタイプの詳細は、表46-1を参照してください。

chunk

expressionに追加するVARCHAR2チャンク(行)。

使用上の注意

1. チャンクの番号は1から始まります。範囲外のチャンクの場合、戻り値はNULLになります。チャンク番号がNULLの場合は、式全体が文字列として戻されます。式が大きすぎる場合は、VALUE_ERRORが発生します。

2. 「変換リストについて」を参照してください。

3. 「使用上の注意」を参照してください。

例

SET_EXPRESSIONプロシージャの例を参照してください。

INSERT_AUTOBIN_NUM_EQWIDTHプロシージャ

このプロシージャは、量的ビニングを実行して、変換定義表に変換定義を挿入します。このプロシージャは、最小値と最大値を識別して等間隔のビン境界を計算します。

INSERT_AUTOBIN_NUM_EQWIDTHは、列ごとに個別にビンの数を計算します。各列に同じ数のビンが含まれる等幅ビニングを使用する場合、INSERT_BIN_NUM_EQWIDTHプロシージャを使用します。

INSERT_AUTOBIN_NUM_EQWIDTHは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列をビンに区分します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_AUTOBIN_NUM_EQWIDTH (
bin_table_name        IN VARCHAR2,
data_table_name       IN VARCHAR2,
bin_num               IN PLS_INTEGER DEFAULT 3,
max_bin_num           IN PLS_INTEGER DEFAULT 100,
exclude_list          IN COLUMN_LIST DEFAULT NULL,
round_num             IN PLS_INTEGER DEFAULT 6,
sample_size           IN PLS_INTEGER DEFAULT 50000,
bin_schema_name       IN VARCHAR2 DEFAULT NULL,
data_schema_name      IN VARCHAR2 DEFAULT NULL,
rem_table_name        IN VARCHAR2 DEFAULT NULL,
rem_schema_name       IN VARCHAR2 DEFAULT NULL));

パラメータ

表46-20 INSERT_AUTOBIN_NUM_EQWIDTHプロシージャのパラメータ

パラメータ

説明

bin_table_name

量的ビニングの変換定義表の名前。CREATE_BIN_NUMプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
VAL       NUMBER
BIN       VARCHAR2(4000)

CREATE_BIN_NUMは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_AUTOBIN_NUM_EQWIDTHでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

bin_num

ビンの最小数。bin_numは、0またはNULLの場合は無視されます。

bin_numのデフォルト値は3です。

max_bin_num

ビンの最大数。max_bin_numは、0またはNULLの場合は無視されます。

max_bin_numのデフォルト値は100です。

exclude_list

ビニング・プロセスから除外する数値列のリスト。exclude_listを指定しない場合、データ・ソースのすべての数値列がビンに区分されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

round_num

変換定義表のVAL列の数値を丸める方法を指定します。

round_numが正の値の場合は、保存する最大の有効桁数が指定されます。round_numが負の値の場合は、削除する最小の有効桁数が指定されます。いずれの場合も、結果は、指定した桁数に丸められます。例については、「使用上の注意」を参照してください。

round_numのデフォルト値は6です。

sample_size

データ・サンプルのサイズ。sample_sizeが列のNULL以外の値の合計数未満の場合、ビン数の計算にはSQL COUNT関数のかわりにsample_sizeが使用されます。sample_sizeは、0またはNULLの場合は無視されます。詳細は、「使用上の注意」を参照してください。

sample_sizeのデフォルト値は50,000です。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

rem_table_name

列削除の変換定義表の名前。この表には、「CREATE_COL_REMプロシージャ」で説明されている列が含まれる必要があります。

INSERT_AUTOBIN_NUM_EQWIDTHでは、すべてがNULLの列または一意の値が1つのみ含まれる列は無視されます。rem_table_nameの値を指定する場合、これらの列はマイニング・データから削除されます。rem_table_nameの値を指定しない場合、これらの列は、ビンに区分されないままデータに残されます。

rem_schema_name

rem_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. INSERT_AUTOBIN_NUM_EQWIDTHは、次のようにNULL以外の値の数(COUNT)、最大値(MAX)、最小値(MIN)、標準偏差(STDDEV)および定数C=3.49/0.9に基づいて列のビン数を計算します。

N=floor(power(COUNT,1/3)*(max-min)/(c*dev))

sample_sizeパラメータが指定されている場合は、COUNTのかわりに使用されます。

COUNT、MAX、MIN、STDDEV、FLOORおよびPOWER関数の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

3. INSERT_AUTOBIN_NUM_EQWIDTHは、絶対値を使用してビン数を計算します。パラメータbin_num、max_bin_numおよびsample_sizeの符号は、結果に影響を与えません。

4. ビン数を計算する場合、INSERT_AUTOBIN_NUM_EQWIDTHは、次の基準を次の順序で評価します。

1. ビンの最小数(bin_num)

2. ビンの最大数(max_bin_num)

3. 整数列のビンの最大数(max-min+1の範囲に存在する個別値の数として計算されます)

5. round_numパラメータは、変換定義表の列値の丸めを次のように制御します。

For a value of 308.162:
when round_num =  1       result is 300
when round_num =  2       result is 310
when round_num =  3       result is 308
when round_num =  0       result is 308.162
when round_num = -1       result is 308.16
when round_num = -2       result is 308.2

例

この例で、INSERT_AUTOBIN_NUM_EQWIDTHは、sh.customersのcust_year_of_birth列のビン境界を計算し、変換定義表に変換を挿入します。STACK_BIN_NUMプロシージャは、定義表の内容から変換リストを作成します。CREATE_MODELプロシージャは、nb_modelという新規モデルに変換リストを埋め込みます。

nb_modelに埋め込まれた変換式と逆変換式は、GET_MODEL_TRANSFORMATIONSファンクションによって戻されます。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_postal_code
FROM sh.customers;

DESCRIBE mining_data
Name                          Null?    Type
----------------------------- -------- ----------------------------
CUST_ID                       NOT NULL NUMBER
CUST_YEAR_OF_BIRTH            NOT NULL NUMBER(4)
CUST_POSTAL_CODE              NOT NULL VARCHAR2(10)

BEGIN
dbms_data_mining_transform.CREATE_BIN_NUM(
bin_table_name   => 'bin_tbl');
dbms_data_mining_transform.INSERT_AUTOBIN_NUM_EQWIDTH (
bin_table_name   => 'bin_tbl',
data_table_name  => 'mining_data',
bin_num          => 3,
max_bin_num      => 5,
exclude_list     => dbms_data_mining_transform.COLUMN_LIST('cust_id'));
END;
/

set numwidth 4
column val off
SELECT col, val, bin FROM bin_tbl
ORDER BY val ASC;

COL                        VAL BIN
------------------------- ---- -----
CUST_YEAR_OF_BIRTH        1913
CUST_YEAR_OF_BIRTH        1928 1
CUST_YEAR_OF_BIRTH        1944 2
CUST_YEAR_OF_BIRTH        1959 3
CUST_YEAR_OF_BIRTH        1975 4
CUST_YEAR_OF_BIRTH        1990 5

DECLARE
year_birth_xform   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_BIN_NUM (
bin_table_name           => 'bin_tbl',
xform_list               =>  year_birth_xform);
dbms_data_mining.CREATE_MODEL(
model_name              => 'nb_model',
mining_function         => dbms_data_mining.classification,
data_table_name         => 'mining_data',
case_id_column_name     => 'cust_id',
target_column_name      => 'cust_postal_code',
settings_table_name     => null,
data_schema_name        => null,
settings_schema_name    => null,
xform_list              => year_birth_xform);
END;
/

SELECT attribute_name
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('nb_model'));

ATTRIBUTE_NAME
------------------------
CUST_YEAR_OF_BIRTH

SELECT expression
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('nb_model'));

EXPRESSION
--------------------------------------------------------------------------------
CASE WHEN "CUST_YEAR_OF_BIRTH"<1913 THEN NULL WHEN "CUST_YEAR_OF_BIRTH"<=1928.4
THEN '1' WHEN "CUST_YEAR_OF_BIRTH"<=1943.8 THEN '2' WHEN "CUST_YEAR_OF_BIRTH"
<=1959.2 THEN '3' WHEN "CUST_YEAR_OF_BIRTH"<=1974.6 THEN '4' WHEN
"CUST_YEAR_OF_BIRTH" <=1990 THEN '5' END

SELECT reverse_expression
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('nb_model'));

REVERSE_EXPRESSION
--------------------------------------------------------------------------------
DECODE("CUST_YEAR_OF_BIRTH",'5','(1974.6; 1990]','1','[1913; 1928.4]','2','(1928
.4; 1943.8]','3','(1943.8; 1959.2]','4','(1959.2; 1974.6]',NULL,'( ; 1913), (199
0;  ), NULL')

INSERT_BIN_CAT_FREQプロシージャ

このプロシージャは、質的ビニングを実行して、変換定義表に変換定義を挿入します。このプロシージャは、頻度に基づいてビン境界を計算します。

INSERT_BIN_CAT_FREQは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのCHAR列およびVARCHAR2列をビンに区分します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_CAT_FREQ (
bin_table_name       IN VARCHAR2,
data_table_name      IN VARCHAR2,
bin_num              IN PLS_INTEGER DEFAULT 9,
exclude_list         IN COLUMN_LIST DEFAULT NULL,
default_num          IN PLS_INTEGER DEFAULT 2,
bin_support          IN NUMBER DEFAULT NULL,
bin_schema_name      IN VARCHAR2 DEFAULT NULL,
data_schema_name     IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-21 INSERT_BIN_CAT_FREQプロシージャのパラメータ

パラメータ

説明

bin_table_name

質的ビニングの変換定義表の名前。CREATE_BIN_CATプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
VAL       VARCHAR2(4000)
BIN       VARCHAR2(4000)

CREATE_BIN_CATは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_BIN_CAT_FREQでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

bin_num

頻度ベースのビニングを使用してデータを移入するビンの数。ビンの合計数は、bin_num+1になります。追加のビンは、デフォルトのビンです。頻度ベースのビンに割り当てられないクラスは、デフォルトのビンに割り当てられます。

デフォルトのビニング順序は、最大頻度から最小頻度で、出現頻度が最も高いクラスが1番目のビンに割り当てられ、出現頻度が2番目に高いクラスが2番目のビンに割り当てられます(以降同様です)。ビニング順序を逆にするには、bin_numに負数を指定します。負の符号が指定されると、ビニング順序は最小頻度から最大頻度になります。

列の個別値(クラス)の合計数がbin_num未満の場合、値ごとに個別のビンが作成され、デフォルトのビンは空になります。

bin_numにNULLまたは0を指定すると、ビニングは実行されません。

bin_numのデフォルト値は9です。

exclude_list

ビニング・プロセスから除外するカテゴリ列のリスト。exclude_listを指定しない場合、データ・ソースのすべてのカテゴリ列がビンに区分されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

default_num

デフォルトのビンに割り当てるために必要なクラス出現(同じクラスの行)の数。

デフォルトでは、default_numは、デフォルトのビンに割り当てるために必要な出現の最小数です。たとえば、default_numが3で、特定のクラスが1回のみ出現した場合、そのクラスはデフォルトのビンに割り当てられません。出現要件を最小数から最大数に変更するには、default_numに負数を指定します。たとえば、default_numが-3で、特定のクラスが1回のみ出現した場合、そのクラスはデフォルトのビンに割り当てられますが、4回以上出現したクラスは含まれません。

default_binにNULLまたは0を指定すると、デフォルトのビンに割り当てるための要件はなくなります。

default_numのデフォルト値は2です。

bin_support

頻度ベースのビンに割り当てるために必要なクラス出現(同じクラスの行)の数。bin_supportは、行の合計数の一部として表されます。

デフォルトでは、bin_supportは、頻度ベースのビンに割り当てるために必要な最小パーセントです。たとえば、20行のデータが存在する状態でbin_supportに.2を指定する場合、あるクラスが頻度ベースのビンに割り当てられるためには、そのクラスの出現回数は4回(.2*20)以上である必要があります。bin_supportを最小パーセントから最大パーセントに変更するには、bin_supportに負数を指定します。たとえば、20行のデータが存在する状態でbin_supportに-.2を指定する場合、あるクラスが頻度ベースのビンに割り当てられるためには、そのクラスの出現回数は4回以下である必要があります。

出現回数が正のbin_supportより少ないか、負のbin_supportより多いクラスは、デフォルトのビンに割り当てられます。

bin_supportにNULLまたは0を指定すると、頻度ベースのビニングのサポート要件はなくなります。

bin_supportのデフォルト値はNULLです。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 質的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 複数の値が同じ頻度で発生した場合、INSERT_BIN_CAT_FREQは、ビニングが最大頻度から最小頻度の順序である場合は降順で、ビニングが最小頻度から最大頻度の順序である場合は昇順で、それらの値を割り当てます。

例

1. この例で、INSERT_BIN_CAT_FREQは、sh.customersのcust_postal_code列およびcust_city列のビン境界を計算し、変換定義表に変換を挿入します。STACK_BIN_CATプロシージャは、定義表の内容から変換リストを作成し、CREATE_MODELプロシージャは、nb_modelという新規モデルに変換リストを埋め込みます。

nb_modelに埋め込まれた変換式と逆変換式は、GET_MODEL_TRANSFORMATIONSファンクションによって戻されます。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_postal_code, cust_city
FROM sh.customers;

DESCRIBE mining_data
Name                                  Null?    Type
------------------------------------- -------- -----------------------------
CUST_ID                               NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                    NOT NULL NUMBER(4)
CUST_POSTAL_CODE                      NOT NULL VARCHAR2(10)
CUST_CITY                             NOT NULL VARCHAR2(30)

BEGIN
dbms_data_mining_transform.CREATE_BIN_CAT(
bin_table_name   => 'bin_tbl_1');
dbms_data_mining_transform.INSERT_BIN_CAT_FREQ (
bin_table_name   => 'bin_tbl_1',
data_table_name  => 'mining_data',
bin_num          => 4);
END;
/

column col format a18
column val format a15
column bin format a10
SELECT col, val, bin
FROM bin_tbl_1
ORDER BY col ASC, bin ASC;

COL                VAL             BIN
------------------ --------------- ----------
CUST_CITY          Los Angeles     1
CUST_CITY          Greenwich       2
CUST_CITY          Killarney       3
CUST_CITY          Montara         4
CUST_CITY                          5
CUST_POSTAL_CODE   38082           1
CUST_POSTAL_CODE   63736           2
CUST_POSTAL_CODE   55787           3
CUST_POSTAL_CODE   78558           4
CUST_POSTAL_CODE                   5

DECLARE
city_xform   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_BIN_CAT (
bin_table_name           => 'bin_tbl_1',
xform_list               =>  city_xform);
dbms_data_mining.CREATE_MODEL(
model_name              => 'nb_model',
mining_function         => dbms_data_mining.classification,
data_table_name         => 'mining_data',
case_id_column_name     => 'cust_id',
target_column_name      => 'cust_city',
settings_table_name     => null,
data_schema_name        => null,
settings_schema_name    => null,
xform_list              => city_xform);
END;
/

SELECT attribute_name
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('nb_model'));

ATTRIBUTE_NAME
-----------------------------------------------------------------------------
CUST_CITY
CUST_POSTAL_CODE

SELECT expression
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('nb_model'));

EXPRESSION
-----------------------------------------------------------------------------
DECODE("CUST_CITY",'Greenwich','2','Killarney','3','Los Angeles','1',
'Montara','4',NULL,NULL,'5')
DECODE("CUST_POSTAL_CODE",'38082','1','55787','3','63736','2','78558','4',NULL,NULL,'5')

SELECT reverse_expression
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('nb_model'));

REVERSE_EXPRESSION
-----------------------------------------------------------------------------
DECODE("CUST_CITY",'2','''Greenwich''','3','''Killarney''','1',
'''Los Angeles''','4','''Montara''',NULL,'NULL','5','DEFAULT')
DECODE("CUST_POSTAL_CODE",'1','''38082''','3','''55787''','2','''63736''',
'4','''78558''',NULL,'NULL','5','DEFAULT')

2. 例1のビニング順序は、最大頻度から最小頻度です。次の例は、逆の順序のビニング(最小頻度から最大頻度)を示しています。ビニング順序を逆にするには、bin_numを4ではなく-4に設定します。

BEGIN
dbms_data_mining_transform.CREATE_BIN_CAT(
bin_table_name   => 'bin_tbl_reverse');
dbms_data_mining_transform.INSERT_BIN_CAT_FREQ (
bin_table_name   => 'bin_tbl_reverse',
data_table_name  => 'mining_data',
bin_num          => -4);
END;
/

column col format a20
SELECT col, val, bin
FROM bin_tbl_reverse
ORDER BY col ASC, bin ASC;

COL                  VAL             BIN
-------------------- --------------- ----------
CUST_CITY            Tokyo           1
CUST_CITY            Sliedrecht      2
CUST_CITY            Haarlem         3
CUST_CITY            Diemen          4
CUST_CITY                            5
CUST_POSTAL_CODE     49358           1
CUST_POSTAL_CODE     80563           2
CUST_POSTAL_CODE     74903           3
CUST_POSTAL_CODE     71349           4
CUST_POSTAL_CODE                     5

INSERT_BIN_NUM_EQWIDTHプロシージャ

このプロシージャは、量的ビニングを実行して、変換定義表に変換定義を挿入します。このプロシージャは、最小値と最大値を識別して等間隔のビン境界を計算します。

INSERT_BIN_NUM_EQWIDTHは、指定した数のビン(n)を計算して、各ビンに(max-min)/nの値を割り当てます。ビンの数は、各列で同じです。等幅ビニングを使用するが、列単位でビンの数を計算する場合、INSERT_AUTOBIN_NUM_EQWIDTHプロシージャを使用します。

INSERT_BIN_NUM_EQWIDTHは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列をビンに区分します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM_EQWIDTH (
bin_table_name        IN VARCHAR2,
data_table_name       IN VARCHAR2,
bin_num               IN PLS_INTEGER DEFAULT 10,
exclude_list          IN COLUMN_LIST DEFAULT NULL,
round_num             IN PLS_INTEGER DEFAULT 6,
bin_schema_name       IN VARCHAR2 DEFAULT NULL,
data_schema_name      IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-22 INSERT_BIN_NUM_EQWIDTHプロシージャのパラメータ

パラメータ

説明

bin_table_name

量的ビニングの変換定義表の名前。CREATE_BIN_NUMプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
VAL       NUMBER
BIN       VARCHAR2(4000)

CREATE_BIN_NUMは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_BIN_NUM_EQWIDTHでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

bin_num

ビンの個数。bin_numが0またはNULLの場合、ビニングは実行されません。

デフォルトのビン数は10です。

exclude_list

ビニング・プロセスから除外する数値列のリスト。exclude_listを指定しない場合、データ・ソースのすべての数値列がビンに区分されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

round_num

変換定義表のVAL列の数値を丸める方法を指定します。

round_numが正の値の場合は、保存する最大の有効桁数が指定されます。round_numが負の値の場合は、削除する最小の有効桁数が指定されます。いずれの場合も、結果は、指定した桁数に丸められます。例については、「使用上の注意」を参照してください。

round_numのデフォルト値は6です。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. round_numパラメータは、変換定義表の列値の丸めを次のように制御します。

For a value of 308.162:
when round_num =  1       result is 300
when round_num =  2       result is 310
when round_num =  3       result is 308
when round_num =  0       result is 308.162
when round_num = -1       result is 308.16
when round_num = -2       result is 308.2

3. INSERT_BIN_NUM_EQWIDTHでは、すべてがNULL値の列または一意の値が1つのみ含まれる列は無視されます。

例

この例で、INSERT_BIN_NUM_EQWIDTHは、mining_data_buildのaffinity_card列のビン境界を計算し、変換定義表に変換を挿入します。STACK_BIN_NUMプロシージャは、定義表の内容から変換リストを作成します。CREATE_MODELプロシージャは、glm_modelという新規モデルに変換リストを埋め込みます。

glm_modelに埋め込まれた変換式と逆変換式は、GET_MODEL_TRANSFORMATIONSファンクションによって戻されます。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_income_level, cust_gender, affinity_card
FROM mining_data_build;

DESCRIBE mining_data
Name                      Null?    Type
------------------------- -------- -----------------
CUST_ID                   NOT NULL NUMBER
CUST_INCOME_LEVEL                  VARCHAR2(30)
CUST_GENDER                        VARCHAR2(1)
AFFINITY_CARD                      NUMBER(10)

BEGIN
dbms_data_mining_transform.CREATE_BIN_NUM(
bin_table_name   => 'bin_tbl');
dbms_data_mining_transform.INSERT_BIN_NUM_EQWIDTH (
bin_table_name   => 'bin_tbl',
data_table_name  => 'mining_data',
bin_num          => 4,
exclude_list     => dbms_data_mining_transform.COLUMN_LIST('cust_id'));
END;
/

set numwidth 10
column val off
column col format a20
column bin format a10
SELECT col, val, bin FROM bin_tbl
ORDER BY val ASC;

COL                         VAL  BIN
-------------------- ----------  ----------
AFFINITY_CARD                 0
AFFINITY_CARD               .25  1
AFFINITY_CARD                .5  2
AFFINITY_CARD               .75  3
AFFINITY_CARD                 1  4

CREATE TABLE glmsettings(
setting_name  VARCHAR2(30),
setting_value VARCHAR2(30));

BEGIN
INSERT INTO glmsettings (setting_name, setting_value) VALUES
(dbms_data_mining.algo_name, dbms_data_mining.algo_generalized_linear_model);
COMMIT;
END;
/

DECLARE
xforms   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_BIN_NUM (
bin_table_name           => 'bin_tbl',
xform_list               =>  xforms,
literal_flag             =>  TRUE);
dbms_data_mining.CREATE_MODEL(
model_name              => 'glm_model',
mining_function         => dbms_data_mining.regression,
data_table_name         => 'mining_data',
case_id_column_name     => 'cust_id',
target_column_name      => 'affinity_card',
settings_table_name     => 'glmsettings',
data_schema_name        => null,
settings_schema_name    => null,
xform_list              => xforms);
END;
/

SELECT attribute_name
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('glm_model'));

ATTRIBUTE_NAME
------------------------
AFFINITY_CARD

SELECT expression
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('glm_model'));

EXPRESSION
--------------------------------------------------------------------------------
CASE WHEN "AFFINITY_CARD"<0 THEN NULL WHEN "AFFINITY_CARD"<=.25 THEN 1 WHEN
"AFFINITY_CARD"<=.5 THEN 2 WHEN "AFFINITY_CARD"<=.75 THEN 3 WHEN
"AFFINITY_CARD"<=1 THEN 4 END

SELECT reverse_expression
FROM TABLE(dbms_data_mining.GET_MODEL_TRANSFORMATIONS('glm_model'));

REVERSE_EXPRESSION
--------------------------------------------------------------------------------
DECODE("AFFINITY_CARD",4,'(.75; 1]',1,'[0; .25]',2,'(.25; .5]',3,'(.5; .75]',
NULL,'( ; 0), (1;  ), NULL')

INSERT_BIN_NUM_QTILEプロシージャ

このプロシージャは、量的ビニングを実行して、変換定義表に変換定義を挿入します。このプロシージャは、SQL NTILE関数をコールしてデータを順序付けし、そのデータを指定した数のビン(クオンタイル)に均等に分割します。

INSERT_BIN_NUM_QTILEは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列をビンに区分します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM_QTILE (
bin_table_name       IN VARCHAR2,
data_table_name      IN VARCHAR2,
bin_num              IN PLS_INTEGER DEFAULT 10,
exclude_list         IN COLUMN_LIST DEFAULT NULL,
bin_schema_name      IN VARCHAR2 DEFAULT NULL,
data_schema_name     IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-23 INSERT_BIN_NUM_QTILEプロシージャのパラメータ

パラメータ

説明

bin_table_name

量的ビニングの変換定義表の名前。CREATE_BIN_NUMプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
VAL       NUMBER
BIN       VARCHAR2(4000)

CREATE_BIN_NUMは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_BIN_NUM_QTILEでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

bin_num

ビンの個数。bin_numが0またはNULLの場合、ビニングは実行されません。

デフォルトのビン数は10です。

exclude_list

ビニング・プロセスから除外する数値列のリスト。exclude_listを指定しない場合、データ・ソースのすべての数値列がビンに区分されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. データをクオンタイルに分割した後、NTILE関数は、残りの値を最初から順に各クオンタイルに配分します。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

3. INSERT_BIN_NUM_QTILEでは、すべての値がNULL値である列は無視されます。

例

この例で、INSERT_BIN_NUM_QTILEは、sh.customersのcust_year_of_birth列およびcust_credit_limit列のビン境界を計算し、変換定義表に変換を挿入します。STACK_BIN_NUMプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、STACK_VIEWに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_credit_limit, cust_city
FROM sh.customers;

DESCRIBE mining_data
Name                                    Null?    Type
--------------------------------------- -------- -----------------------------
CUST_ID                                 NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                      NOT NULL NUMBER(4)
CUST_CREDIT_LIMIT                       NUMBER
CUST_CITY                               NOT NULL VARCHAR2(30)

BEGIN
dbms_data_mining_transform.CREATE_BIN_NUM(
bin_table_name   => 'bin_tbl');
dbms_data_mining_transform.INSERT_BIN_NUM_QTILE (
bin_table_name   => 'bin_tbl',
data_table_name  => 'mining_data',
bin_num          => 3,
exclude_list     => dbms_data_mining_transform.COLUMN_LIST('cust_id'));
END;
/

set numwidth 8
column val off
column col format a20
column bin format a10
SELECT col, val, bin
FROM bin_tbl
ORDER BY col ASC, val ASC;

COL                       VAL BIN
-------------------- -------- ----------
CUST_CREDIT_LIMIT        1500
CUST_CREDIT_LIMIT        3000 1
CUST_CREDIT_LIMIT        9000 2
CUST_CREDIT_LIMIT       15000 3
CUST_YEAR_OF_BIRTH       1913
CUST_YEAR_OF_BIRTH       1949 1
CUST_YEAR_OF_BIRTH       1965 2
CUST_YEAR_OF_BIRTH       1990 3

DECLARE
xforms   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_BIN_NUM (
bin_table_name        => 'bin_tbl',
xform_list            =>  xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list            =>  xforms,
data_table_name       => 'mining_data',
xform_view_name       => 'stack_view');
END;
/

set long 3000
SELECT text FROM user_views WHERE view_name in 'STACK_VIEW';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID",CASE WHEN "CUST_YEAR_OF_BIRTH"<1913 THEN NULL WHEN "CUST_YEAR_O
F_BIRTH"<=1949 THEN '1' WHEN "CUST_YEAR_OF_BIRTH"<=1965 THEN '2' WHEN "CUST_YEAR
_OF_BIRTH"<=1990 THEN '3' END "CUST_YEAR_OF_BIRTH",CASE WHEN "CUST_CREDIT_LIMIT"
<1500 THEN NULL WHEN "CUST_CREDIT_LIMIT"<=3000 THEN '1' WHEN "CUST_CREDIT_LIMIT"
<=9000 THEN '2' WHEN "CUST_CREDIT_LIMIT"<=15000 THEN '3' END "CUST_CREDIT_LIMIT"
,"CUST_CITY" FROM mining_data

INSERT_BIN_SUPERプロシージャ

このプロシージャは、量的および質的ビニングを実行して、変換定義表に変換定義を挿入します。このプロシージャは、予測子とターゲットの間の内在関係に基づいてビン境界を計算します。

INSERT_BIN_SUPERは、監視ありビニングと呼ばれるインテリジェントなビニング方法を使用します。このプロシージャは、単一予測子のディシジョン・ツリーを作成して、ツリー内の分岐からビン境界を導出します。

INSERT_BIN_SUPERは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのVARCHAR2列、CHAR列、NUMBER列およびFLOAT列をビンに区分します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_SUPER (
num_table_name        IN VARCHAR2,
cat_table_name        IN VARCHAR2,
data_table_name       IN VARCHAR2,
target_column_name    IN VARCHAR2,
max_bin_num           IN PLS_INTEGER  DEFAULT 1000,
exclude_list          IN COLUMN_LIST  DEFAULT NULL,
num_schema_name       IN VARCHAR2     DEFAULT NULL,
cat_schema_name       IN VARCHAR2     DEFAULT NULL,
data_schema_name      IN VARCHAR2     DEFAULT NULL,
rem_table_name        IN VARCHAR2     DEFAULT NULL,
rem_schema_name       IN VARCHAR2     DEFAULT NULL);

パラメータ

表46-24 INSERT_BIN_SUPERプロシージャのパラメータ

パラメータ

説明

num_table_name

量的ビニングの変換定義表の名前。CREATE_BIN_NUMプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
VAL       VNUMBER
BIN       VARCHAR2(4000)

CREATE_BIN_NUMは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_BIN_SUPERでは使用されません。

cat_table_name

質的ビニングの変換定義表の名前。CREATE_BIN_CATプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
VAL       VARCHAR2(4000)
BIN       VARCHAR2(4000)

CREATE_BIN_CATは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用します。この列は、INSERT_BIN_SUPERでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

target_column_name

ディシジョン・ツリー・モデルのターゲットとして使用する列の名前。

max_bin_num

最大ビン数。デフォルトは1000です。

exclude_list

ビニング・プロセスから除外する列のリスト。exclude_listを指定しない場合、データ・ソースのすべての数値列とカテゴリ列がビンに区分されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

num_schema_name

num_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

cat_schema_name

cat_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

rem_table_name

列削除定義表の名前。この表には、「CREATE_COL_REMプロシージャ」で説明されている列が含まれる必要があります。CREATE_COL_REMを使用して、表を作成できます。詳細は、「使用上の注意」を参照してください。

rem_schema_name

rem_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的および質的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 有意の分割が存在しない列は、ビンに区分されません。ビンに区分されない列をマイニング・データから削除するには、列削除定義表を指定します。列削除定義表を指定しない場合、これらの列は、ビンに区分されないままマイニング・データに残されます。

3. Oracle Data Miningのディシジョン・ツリーの詳細は、『Oracle Data Mining概要』を参照してください。

例

この例で、INSERT_BIN_SUPERは、cust_credit_limitの予測子に対してビン境界を計算し、変換定義表に変換を挿入します。一方の予測子は量的で、他方は質的です。(INSERT_BIN_SUPERによって、cust_postal_code列は有意の予測子ではないと判断されます。)STACKプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、MINING_DATA_STACK_NUMビューおよびMINING_DATA_STACK_CATビューに表示されます。これらのビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_marital_status,
cust_postal_code, cust_credit_limit
FROM sh.customers;

DESCRIBE mining_data
Name                             Null?    Type
-------------------------------- -------- ------------------------------------
CUST_ID                          NOT NULL NUMBER
CUST_YEAR_OF_BIRTH               NOT NULL NUMBER(4)
CUST_MARITAL_STATUS                       VARCHAR2(20)
CUST_POSTAL_CODE                 NOT NULL VARCHAR2(10)
CUST_CREDIT_LIMIT                         NUMBER

BEGIN
dbms_data_mining_transform.CREATE_BIN_NUM(
bin_table_name      => 'bin_num_tbl');
dbms_data_mining_transform.CREATE_BIN_CAT(
bin_table_name      => 'bin_cat_tbl');
dbms_data_mining_transform.CREATE_COL_REM(
rem_table_name      => 'rem_tbl');
END;
/

BEGIN
COMMIT;
dbms_data_mining_transform.INSERT_BIN_SUPER (
num_table_name      => 'bin_num_tbl',
cat_table_name      => 'bin_cat_tbl',
data_table_name     => 'mining_data',
target_column_name  => 'cust_credit_limit',
max_bin_num         =>  4,
exclude_list        =>  dbms_data_mining_transform.COLUMN_LIST('cust_id'),
num_schema_name     => 'dmuser',
cat_schema_name     => 'dmuser',
data_schema_name    => 'dmuser',
rem_table_name      => 'rem_tbl',
rem_schema_name     => 'dmuser');
COMMIT;
END;
/

set numwidth 8
column val off
SELECT col, val, bin FROM bin_num_tbl
ORDER BY bin ASC;

COL                       VAL BIN
-------------------- -------- ----------
CUST_YEAR_OF_BIRTH     1923.5 1
CUST_YEAR_OF_BIRTH     1923.5 1
CUST_YEAR_OF_BIRTH     1945.5 2
CUST_YEAR_OF_BIRTH     1980.5 3
CUST_YEAR_OF_BIRTH            4

column val on
column val format a20
SELECT col, val, bin FROM bin_cat_tbl
ORDER BY bin ASC;

COL                  VAL                  BIN
-------------------- -------------------- ----------
CUST_MARITAL_STATUS  married              1
CUST_MARITAL_STATUS  single               2
CUST_MARITAL_STATUS  Mar-AF               3
CUST_MARITAL_STATUS  Mabsent              3
CUST_MARITAL_STATUS  Divorc.              3
CUST_MARITAL_STATUS  Married              3
CUST_MARITAL_STATUS  Widowed              3
CUST_MARITAL_STATUS  NeverM               3
CUST_MARITAL_STATUS  Separ.               3
CUST_MARITAL_STATUS  divorced             4
CUST_MARITAL_STATUS  widow                4

SELECT col from rem_tbl;

COL
--------------------
CUST_POSTAL_CODE

DECLARE
xforms_num      dbms_data_mining_transform.TRANSFORM_LIST;
xforms_cat      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_BIN_NUM (
bin_table_name    => 'bin_num_tbl',
xform_list        => xforms_num);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms_num,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack_num');
dbms_data_mining_transform.STACK_BIN_CAT (
bin_table_name    => 'bin_cat_tbl',
xform_list        => xforms_cat);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms_cat,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack_cat');
END;
/

set long 3000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK_NUM';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID",CASE WHEN "CUST_YEAR_OF_BIRTH"<1923.5 THEN '1' WHEN "CUST_YEAR_
OF_BIRTH"<=1923.5 THEN '1' WHEN "CUST_YEAR_OF_BIRTH"<=1945.5 THEN '2' WHEN "CUST
_YEAR_OF_BIRTH"<=1980.5 THEN '3' WHEN "CUST_YEAR_OF_BIRTH" IS NOT NULL THEN '4'
END "CUST_YEAR_OF_BIRTH","CUST_MARITAL_STATUS","CUST_POSTAL_CODE","CUST_CREDIT_L
IMIT" FROM mining_data

SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK_CAT';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_YEAR_OF_BIRTH",DECODE("CUST_MARITAL_STATUS",'Divorc.','3'
,'Mabsent','3','Mar-AF','3','Married','3','NeverM','3','Separ.','3','Widowed','3
','divorced','4','married','1','single','2','widow','4') "CUST_MARITAL_STATUS","
CUST_POSTAL_CODE","CUST_CREDIT_LIMIT" FROM mining_data

INSERT_CLIP_TRIM_TAILプロシージャ

このプロシージャは、量的外れ値をNULLに置き換えて、変換定義表に変換定義を挿入します。

INSERT_CLIP_TRIM_TAILは、指定したパーセンテージに基づいてデータの境界を計算します。このプロシージャは、境界の外側に存在する値(テール値)をデータから削除します。テール値を削除せずに置換する場合、INSERT_CLIP_WINSOR_TAILプロシージャを使用します。

INSERT_CLIP_TRIM_TAILは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列をクリッピングします。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_CLIP_TRIM_TAIL (
clip_table_name     IN VARCHAR2,
data_table_name     IN VARCHAR2,
tail_frac           IN NUMBER DEFAULT 0.025,
exclude_list        IN COLUMN_LIST DEFAULT NULL,
clip_schema_name    IN VARCHAR2 DEFAULT NULL,
data_schema_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-25 INSERT_CLIP_TRIM_TAILプロシージャのパラメータ

パラメータ

説明

clip_table_name

量的クリッピングの変換定義表の名前。CREATE_CLIPプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL         VARCHAR2(30)
LCUT        NUMBER
LVAL        NUMBER
RCUT        NUMBER
RVAL        NUMBER

CREATE_CLIPは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_CLIP_TRIM_TAILでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

tail_frac

データの各端で外れ値として指定されるNULL以外の値のパーセント。たとえば、tail_fracが.01の場合、下位1%のデータと上位1%のデータが外れ値として扱われます。

tail_fracが.5以上の場合、クリッピングは実行されません。

tail_fracのデフォルト値は0.025です。

exclude_list

クリッピング・プロセスから除外する数値列のリスト。exclude_listを指定しない場合、データのすべての数値列がクリッピングされます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

clip_schema_name

clip_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. DBMS_DATA_MINING_TRANSFORMパッケージには、INSERT_CLIP_TRIM_TAILおよびINSERT_CLIP_WINSOR_TAILという2つのクリッピング・プロシージャが含まれます。どちらのプロシージャでも、境界は次のように計算されます。

- NULL以外の値の数(n)をカウントして昇順にソートします。

- 外れ値の数(t)をn*tail_fracとして計算します。

- 1+floor(t)の位置にある値として下限境界のlcutを定義します。

- n-floor(t)の位置にある値として上限境界のrcutを定義します。
(SQL FLOOR関数によって、t以下の最大の整数が戻されます。)

- <= lcutまたは=> rcutであるすべての値が、外れ値として指定されます。

INSERT_CLIP_TRIM_TAILは、外れ値をNULLで置き換えて、事実上それらの値をデータから削除します。

INSERT_CLIP_WINSOR_TAILは、下位の外れ値にlcutを、上位の外れ値にrcutを割り当てます。

例

この例で、INSERT_CLIP_TRIM_TAILは、2つの列にあるデータの10%(上位5%と下位5%)をトリミングし、変換定義表に変換を挿入します。STACK_CLIPプロシージャは、定義表の内容から変換リストを作成します。

トリミングを計算するSQL式は、MINING_DATA_STACKビューに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_credit_limit, cust_city
FROM sh.customers;

DESCRIBE mining_data
Name                            Null?    Type
------------------------------- -------- -------------------
CUST_ID                         NOT NULL NUMBER
CUST_YEAR_OF_BIRTH              NOT NULL NUMBER(4)
CUST_CREDIT_LIMIT                        NUMBER
CUST_CITY                       NOT NULL VARCHAR2(30)

BEGIN
dbms_data_mining_transform.CREATE_CLIP(
clip_table_name    => 'clip_tbl');
dbms_data_mining_transform.INSERT_CLIP_TRIM_TAIL(
clip_table_name    => 'clip_tbl',
data_table_name    => 'mining_data',
tail_frac          => 0.05,
exclude_list       => DBMS_DATA_MINING_TRANSFORM.COLUMN_LIST('cust_id'));
END;
/

SELECT col, lcut, lval, rcut, rval
FROM clip_tbl
ORDER BY col ASC;

COL                      LCUT     LVAL     RCUT     RVAL
-------------------- -------- -------- -------- --------
CUST_CREDIT_LIMIT        1500             11000
CUST_YEAR_OF_BIRTH       1934              1982

DECLARE
xforms      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_CLIP (
clip_table_name    => 'clip_tbl',
xform_list         => xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack');
END;
/

set long 3000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID",CASE WHEN "CUST_YEAR_OF_BIRTH" < 1934 THEN NULL WHEN "CUST_YEAR
_OF_BIRTH" > 1982 THEN NULL ELSE "CUST_YEAR_OF_BIRTH" END "CUST_YEAR_OF_BIRTH",C
ASE WHEN "CUST_CREDIT_LIMIT" < 1500 THEN NULL WHEN "CUST_CREDIT_LIMIT" > 11000 T
HEN NULL ELSE "CUST_CREDIT_LIMIT" END "CUST_CREDIT_LIMIT","CUST_CITY" FROM minin
g_data

INSERT_CLIP_WINSOR_TAILプロシージャ

このプロシージャは、量的外れ値を上限値または下限値に置き換えます。変換定義表に変換定義を挿入します。

INSERT_CLIP_WINSOR_TAILは、指定したパーセンテージに基づいてデータの境界を計算します。このプロシージャは、境界の外側に存在する値(テール値)を関連する境界値に置き換えます。テール値をNULLに設定する場合、INSERT_CLIP_TRIM_TAILプロシージャを使用します。

INSERT_CLIP_WINSOR_TAILは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列をクリッピングします。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_CLIP_WINSOR_TAIL (
clip_table_name    IN VARCHAR2,
data_table_name    IN VARCHAR2,
tail_frac          IN NUMBER DEFAULT 0.025,
exclude_list       IN COLUMN_LIST DEFAULT NULL,
clip_schema_name   IN VARCHAR2 DEFAULT NULL,
data_schema_name   IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-26 INSERT_CLIP_WINSOR_TAILプロシージャのパラメータ

パラメータ

説明

clip_table_name

量的クリッピングの変換定義表の名前。CREATE_CLIPプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL         VARCHAR2(30)
LCUT        NUMBER
LVAL        NUMBER
RCUT        NUMBER
RVAL        NUMBER

CREATE_CLIPは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_CLIP_WINSOR_TAILでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

tail_frac

データの各端で外れ値として指定されるNULL以外の値のパーセント。たとえば、tail_fracが.01の場合、下位1%のデータと上位1%のデータが外れ値として扱われます。

tail_fracが.5以上の場合、クリッピングは実行されません。

tail_fracのデフォルト値は0.025です。

exclude_list

クリッピング・プロセスから除外する数値列のリスト。exclude_listを指定しない場合、データのすべての数値列がクリッピングされます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

clip_schema_name

clip_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. DBMS_DATA_MINING_TRANSFORMパッケージには、INSERT_CLIP_WINSOR_TAILおよびINSERT_CLIP_TRIM_TAILという2つのクリッピング・プロシージャが含まれます。どちらのプロシージャでも、境界は次のように計算されます。

- NULL以外の値の数(n)をカウントして昇順にソートします。

- 外れ値の数(t)をn*tail_fracとして計算します。

- 1+floor(t)の位置にある値として下限境界のlcutを定義します。

- n-floor(t)の位置にある値として上限境界のrcutを定義します。
(SQL FLOOR関数によって、t以下の最大の整数が戻されます。)

- <= lcutまたは=> rcutであるすべての値が、外れ値として指定されます。

INSERT_CLIP_WINSOR_TAILは、下位の外れ値にlcutを、上位の外れ値にrcutを割り当てます。

INSERT_CLIP_TRIM_TAILは、外れ値をNULLで置き換えて、事実上それらの値をデータから削除します。

例

この例で、INSERT_CLIP_WINSOR_TAILは、2つの列にあるデータの10%(上位5%と下位5%)をウィンザライズし、変換定義表に変換を挿入します。STACK_CLIPプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、MINING_DATA_STACKビューに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_credit_limit, cust_city
FROM sh.customers;

describe mining_data
Name                                     Null?    Type
---------------------------------------- -------- -------------
CUST_ID                                  NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                       NOT NULL NUMBER(4)
CUST_CREDIT_LIMIT                                 NUMBER
CUST_CITY                                NOT NULL VARCHAR2(30)

BEGIN
dbms_data_mining_transform.CREATE_CLIP(
clip_table_name   => 'clip_tbl');
dbms_data_mining_transform.INSERT_CLIP_WINSOR_TAIL(
clip_table_name   => 'clip_tbl',
data_table_name   => 'mining_data',
tail_frac         => 0.05,
exclude_list      => DBMS_DATA_MINING_TRANSFORM.COLUMN_LIST('cust_id'));
END;
/

SELECT col, lcut, lval, rcut, rval FROM clip_tbl
ORDER BY col ASC;
COL                                LCUT     LVAL     RCUT     RVAL
------------------------------ -------- -------- -------- --------
CUST_CREDIT_LIMIT                  1500     1500    11000    11000
CUST_YEAR_OF_BIRTH                 1934     1934     1982     1982

DECLARE
xforms      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_CLIP (
clip_table_name    => 'clip_tbl',
xform_list        => xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack');
END;
/

set long 3000
SQL> SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID",CASE WHEN "CUST_YEAR_OF_BIRTH" < 1934 THEN 1934 WHEN "CUST_YEAR
_OF_BIRTH" > 1982 THEN 1982 ELSE "CUST_YEAR_OF_BIRTH" END "CUST_YEAR_OF_BIRTH",C
ASE WHEN "CUST_CREDIT_LIMIT" < 1500 THEN 1500 WHEN "CUST_CREDIT_LIMIT" > 11000 T
HEN 11000 ELSE "CUST_CREDIT_LIMIT" END "CUST_CREDIT_LIMIT","CUST_CITY" FROM mini
ng_data

INSERT_MISS_CAT_MODEプロシージャ

このプロシージャは、質的欠損値を、その列で出現頻度が最も高い値(最頻値)に置き換えます。変換定義表に変換定義を挿入します。

INSERT_MISS_CAT_MODEは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのVARCHAR2列およびCHAR列の欠損値を置き換えます。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_CAT_MODE (
miss_table_name    IN VARCHAR2,
data_table_name    IN VARCHAR2,
exclude_list       IN COLUMN_LIST DEFAULT NULL,
miss_schema_name   IN VARCHAR2 DEFAULT NULL,
data_schema_name   IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-27 INSERT_MISS_CAT_MODEプロシージャのパラメータ

パラメータ

説明

miss_table_name

質的欠損値処理の変換定義表の名前。CREATE_MISS_CATプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL         VARCHAR2(30)
VAL         VARCHAR2(4000)

CREATE_MISS_CATは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_MISS_CAT_MODEでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

exclude_list

欠損値処理から除外するカテゴリ列のリスト。exclude_listを指定しない場合、すべてのカテゴリ列が変換されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 質的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 質的欠損値を最頻値以外の値に置き換える場合、変換定義表を編集できます。

関連項目:
Oracle Data Miningでのデフォルト欠損値処理の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

例

この例で、INSERT_MISS_CAT_MODEは、cust_cityの欠損値処理を計算し、変換定義表に変換を挿入します。STACK_MISS_CATプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、MINING_DATA_STACKビューに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_city
FROM sh.customers;

describe mining_data
Name                             Null?    Type
-------------------------------- -------- ----------------
CUST_ID                          NOT NULL NUMBER
CUST_YEAR_OF_BIRTH               NOT NULL NUMBER(4)
CUST_CITY                        NOT NULL VARCHAR2(30)

BEGIN
dbms_data_mining_transform.create_miss_cat(
miss_table_name   => 'missc_tbl');
dbms_data_mining_transform.insert_miss_cat_mode(
miss_table_name   => 'missc_tbl',
data_table_name   => 'mining_data');
END;
/

SELECT stats_mode(cust_city) FROM mining_data;

STATS_MODE(CUST_CITY)
------------------------------
Los Angeles

SELECT col, val
from missc_tbl;

COL                            VAL
------------------------------ ------------------------------
CUST_CITY                      Los Angeles

DECLARE
xforms      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_MISS_CAT (
miss_table_name    => 'missc_tbl',
xform_list        => xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack');
END;
/

set long 3000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_YEAR_OF_BIRTH",NVL("CUST_CITY",'Los Angeles') "CUST_CITY"
FROM mining_data

INSERT_MISS_NUM_MEANプロシージャ

このプロシージャは、量的欠損値を平均値に置き換えて、変換定義表に変換定義を挿入します。

INSERT_MISS_NUM_MEANは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列の欠損値を置き換えます。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_NUM_MEAN (
miss_table_name    IN VARCHAR2,
data_table_name    IN VARCHAR2,
exclude_list       IN COLUMN_LIST DEFAULT NULL,
round_num          IN PLS_INTEGER DEFAULT 6,
miss_schema_name   IN VARCHAR2 DEFAULT NULL,
data_schema_name   IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-28 INSERT_MISS_NUM_MEANプロシージャのパラメータ

パラメータ

説明

miss_table_name

量的欠損値処理の変換定義表の名前。CREATE_MISS_NUMプロシージャを使用して、定義表を作成できます。

次の列はINSERT_MISS_NUM_MEANで必須です。

COL          VARCHAR2(30)
VAL          NUMBER

CREATE_MISS_NUMは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_MISS_NUM_MEANでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

exclude_list

欠損値処理から除外する数値列のリスト。exclude_listを指定しない場合、すべての数値列が変換されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

round_num

平均値に使用するための有効桁数。

デフォルトの桁数は6です。

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. 量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

2. 量的欠損値を平均値以外の値に置き換える場合、変換定義表を編集できます。

関連項目:
Oracle Data Miningでのデフォルト欠損値処理の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

例

この例で、INSERT_MISS_NUM_MEANは、cust_year_of_birthの欠損値処理を計算し、変換定義表に変換を挿入します。STACK_MISS_NUMプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、MINING_DATA_STACKビューに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_city
FROM sh.customers;

DESCRIBE mining_data
Name                                       Null?    Type
------------------------------------------ -------- -------------------
CUST_ID                                    NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                         NOT NULL NUMBER(4)
CUST_CITY                                  NOT NULL VARCHAR2(30)

BEGIN
dbms_data_mining_transform.create_miss_num(
miss_table_name   => 'missn_tbl');
dbms_data_mining_transform.insert_miss_num_mean(
miss_table_name   => 'missn_tbl',
data_table_name   => 'mining_data',
exclude_list      => DBMS_DATA_MINING_TRANSFORM.COLUMN_LIST('cust_id'));
END;
/

set numwidth 4
column val off
SELECT col, val
FROM missn_tbl;

COL                   VAL
-------------------- ----
CUST_YEAR_OF_BIRTH   1957

SELECT avg(cust_year_of_birth) FROM mining_data;

AVG(CUST_YEAR_OF_BIRTH)
-----------------------
1957

DECLARE
xforms      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_MISS_NUM (
miss_table_name    => 'missn_tbl',
xform_list        => xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack');
END;
/

set long 3000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID",NVL("CUST_YEAR_OF_BIRTH",1957.4) "CUST_YEAR_OF_BIRTH","CUST_CIT
Y" FROM mining_data

INSERT_NORM_LIN_MINMAXプロシージャ

このプロシージャは、線形正規化を実行して、変換定義表に変換定義を挿入します。INSERT_NORM_LIN_MINMAXは、データから最小値と最大値を計算し、shiftおよびscaleの値を次のように設定します。

shift = min
scale = max - min

正規化の計算式は次のとおりです。

x_new = (x_old - shift)/scale

INSERT_NORM_LIN_MINMAXは、scaleの値を指定した有効桁数に丸めてから、その値を変換定義表に格納します。

INSERT_NORM_LIN_MINMAXは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列を正規化します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_MINMAX (
norm_table_name     IN VARCHAR2,
data_table_name     IN VARCHAR2,
exclude_list        IN COLUMN_LIST DEFAULT NULL,
round_num           IN PLS_INTEGER DEFAULT 6,
norm_schema_name    IN VARCHAR2 DEFAULT NULL,
data_schema_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-29 INSERT_NORM_LIN_MINMAXプロシージャのパラメータ

パラメータ

説明

norm_table_name

線形正規化の変換定義表の名前。CREATE_NORM_LINプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL          VARCHAR2(30)
SHIFT        NUMBER
SCALE        NUMBER

CREATE_NORM_LINは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_NORM_LIN_MINMAXでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

exclude_list

正規化から除外する数値列のリスト。exclude_listを指定しない場合、すべての数値列が変換されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

round_num

最小値と最大値に使用するための有効桁数。デフォルトの桁数は6です。

norm_schema_name

norm_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

例

この例で、INSERT_NORM_LIN_MINMAXは、cust_year_of_birth列を正規化し、変換定義表に変換を挿入します。STACK_NORM_LINプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、MINING_DATA_STACKビューに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_gender, cust_year_of_birth
FROM sh.customers;

describe mining_data
Name                                 Null?    Type
------------------------------------ -------- ----------------
CUST_ID                              NOT NULL NUMBER
CUST_GENDER                          NOT NULL CHAR(1)
CUST_YEAR_OF_BIRTH                   NOT NULL NUMBER(4)

BEGIN
dbms_data_mining_transform.CREATE_NORM_LIN(
norm_table_name  => 'norm_tbl');
dbms_data_mining_transform.INSERT_NORM_LIN_MINMAX(
norm_table_name  => 'norm_tbl',
data_table_name  => 'mining_data',
exclude_list     => dbms_data_mining_transform.COLUMN_LIST( 'cust_id'),
round_num        => 3);
END;
/

SELECT col, shift, scale FROM norm_tbl;

COL                                 SHIFT      SCALE
------------------------------ ---------- ----------
CUST_YEAR_OF_BIRTH                   1910         77

DECLARE
xforms      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_NORM_LIN (
norm_table_name    => 'norm_tbl',
xform_list        => xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack');
END;
/

set long 3000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_GENDER",("CUST_YEAR_OF_BIRTH"-1910)/77 "CUST_YEAR_OF_BIRT
H" FROM mining_data

INSERT_NORM_LIN_SCALEプロシージャ

このプロシージャは、線形正規化を実行して、変換定義表に変換定義を挿入します。INSERT_NORM_LIN_SCALEは、データから最小値と最大値を計算し、shiftおよびscaleの値を次のように設定します。

shift = 0
scale = max(abs(max), abs(min))

正規化の計算式は次のとおりです。

x_new = (x_old)/scale

INSERT_NORM_LIN_SCALEは、scaleの値を指定した有効桁数に丸めてから、その値を変換定義表に格納します。

INSERT_NORM_LIN_SCALEは、ユーザーが無視する列のリストを指定しないかぎり、データ・ソースのすべてのNUMBER列およびFLOAT列を正規化します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_SCALE (
norm_table_name     IN VARCHAR2,
data_table_name     IN VARCHAR2,
exclude_list        IN COLUMN_LIST DEFAULT NULL,
round_num           IN PLS_INTEGER DEFAULT 6,
norm_schema_name    IN VARCHAR2 DEFAULT NULL,
data_schema_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-30 INSERT_NORM_LIN_SCALEプロシージャのパラメータ

パラメータ

説明

norm_table_name

線形正規化の変換定義表の名前。CREATE_NORM_LINプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
SHIFT     NUMBER
SCALE     NUMBER

CREATE_NORM_LINは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_NORM_LIN_SCALEでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

exclude_list

正規化から除外する数値列のリスト。exclude_listを指定しない場合、すべての数値列が変換されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

round_num

scaleに使用するための有効桁数。デフォルトの桁数は6です。

norm_schema_name

norm_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

例

この例で、INSERT_NORM_LIN_SCALEは、cust_year_of_birth列を正規化し、変換定義表に変換を挿入します。STACK_NORM_LINプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、MINING_DATA_STACKビューに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_gender, cust_year_of_birth
FROM sh.customers;

DESCRIBE mining_data
Name                               Null?    Type
---------------------------------- -------- ------------------
CUST_ID                            NOT NULL NUMBER
CUST_GENDER                        NOT NULL CHAR(1)
CUST_YEAR_OF_BIRTH                 NOT NULL NUMBER(4)

BEGIN
dbms_data_mining_transform.CREATE_NORM_LIN(
norm_table_name  => 'norm_tbl');
dbms_data_mining_transform.INSERT_NORM_LIN_SCALE(
norm_table_name  => 'norm_tbl',
data_table_name  => 'mining_data',
exclude_list     => dbms_data_mining_transform.COLUMN_LIST( 'cust_id'),
round_num        => 3);
END;
/

SELECT col, shift, scale FROM norm_tbl;

COL                  SHIFT SCALE
-------------------- ----- -----
CUST_YEAR_OF_BIRTH       0  1990

DECLARE
xforms      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_NORM_LIN (
norm_table_name    => 'norm_tbl',
xform_list        => xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack');
END;
/

set long 3000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_GENDER",("CUST_YEAR_OF_BIRTH"-0)/1990 "CUST_YEAR_OF_BIRTH
" FROM mining_data

INSERT_NORM_LIN_ZSCOREプロシージャ

このプロシージャは、線形正規化を実行して、変換定義表に変換定義を挿入します。INSERT_NORM_LIN_ZSCOREは、データから平均値と標準偏差を計算し、shiftおよびscaleの値を次のように設定します。

shift = mean
scale = stddev

正規化の計算式は次のとおりです。

x_new = (x_old - shift)/scale

INSERT_NORM_LIN_ZSCOREは、scaleの値を指定した有効桁数に丸めてから、その値を変換定義表に格納します。

INSERT_NORM_LIN_ZSCOREは、ユーザーが無視する列のリストを指定しないかぎり、データのすべてのNUMBER列およびFLOAT列を正規化します。

構文

DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_ZSCORE (
norm_table_name     IN VARCHAR2,
data_table_name     IN VARCHAR2,
exclude_list        IN COLUMN_LIST DEFAULT NULL,
round_num           IN PLS_INTEGER DEFAULT 6,
norm_schema_name    IN VARCHAR2 DEFAULT NULL,
data_schema_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-31 INSERT_NORM_LIN_ZSCOREプロシージャのパラメータ

パラメータ

説明

norm_table_name

線形正規化の変換定義表の名前。CREATE_NORM_LINプロシージャを使用して、定義表を作成できます。次の列は必須です。

COL       VARCHAR2(30)
SHIFT     NUMBER
SCALE     NUMBER

CREATE_NORM_LINは、追加列のATTを作成しますが、この列は、ネストした属性を指定する場合に使用できます。この列は、INSERT_NORM_LIN_ZSCOREでは使用されません。

data_table_name

変換対象のデータが保存される表の名前。

exclude_list

正規化から除外する数値列のリスト。exclude_listを指定しない場合、すべての数値列が変換されます。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

round_num

scaleに使用するための有効桁数。デフォルトの桁数は6です。

norm_schema_name

norm_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

量的データの詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

例

この例で、INSERT_NORM_LIN_ZSCOREは、cust_year_of_birth列を正規化し、変換定義表に変換を挿入します。STACK_NORM_LINプロシージャは、定義表の内容から変換リストを作成します。

変換を計算するSQL式は、MINING_DATA_STACKビューに表示されます。このビューは、表示目的専用であり、変換をモデルに埋め込むためには使用できません。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_gender, cust_year_of_birth
FROM sh.customers;

DESCRIBE mining_data
Name                                Null?    Type
----------------------------------- -------- --------------------
CUST_ID                             NOT NULL NUMBER
CUST_GENDER                         NOT NULL CHAR(1)
CUST_YEAR_OF_BIRTH                  NOT NULL NUMBER(4)

BEGIN
dbms_data_mining_transform.CREATE_NORM_LIN(
norm_table_name  => 'norm_tbl');
dbms_data_mining_transform.INSERT_NORM_LIN_ZSCORE(
norm_table_name  => 'norm_tbl',
data_table_name  => 'mining_data',
exclude_list     => dbms_data_mining_transform.COLUMN_LIST( 'cust_id'),
round_num        => 3);
END;
/

SELECT col, shift, scale FROM norm_tbl;

COL                  SHIFT SCALE
-------------------- ----- -----
CUST_YEAR_OF_BIRTH    1960    15

DECLARE
xforms      dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_NORM_LIN (
norm_table_name    => 'norm_tbl',
xform_list        => xforms);
dbms_data_mining_transform.XFORM_STACK (
xform_list         => xforms,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack');
END;
/

set long 3000
SQL> SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_STACK';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_GENDER",("CUST_YEAR_OF_BIRTH"-1960)/15 "CUST_YEAR_OF_BIRT
H" FROM mining_data

SET_EXPRESSIONプロシージャ

このプロシージャは、SQL式を格納するVARCHAR2配列に行を追加します。この配列を使用すると、長すぎてSET_TRANSFORMプロシージャで使用できない変換式を指定できます。

GET_EXPRESSIONファンクションは、この配列の行を戻します。

SET_EXPRESSIONを使用して変換式を作成する場合、対応する逆変換式を構成し、変換レコードを作成して、その変換レコードを変換リストに追加する必要があります。

構文

DBMS_DATA_MINING_TRANSFORM.SET_EXPRESSION (
expression    IN OUT NOCOPY EXPRESSION_REC,
chunk                       VARCHAR2 DEFAULT NULL);

パラメータ

表46-32 SET_EXPRESSIONプロシージャのパラメータ

パラメータ

説明

expression

属性の変換式または逆変換式を指定する式レコード(EXPRESSION_REC)。各式レコードには、VARCHAR2配列と、その配列内の上限境界と下限境界を指定する索引フィールドが含まれます。

変換レコード(TRANSFORM_REC)内には、2つのEXPRESSION_RECフィールドがあります。1つのフィールドは変換式用で、もう1つのフィールドは逆変換式用です。

EXPRESSION_RECタイプの詳細は、表46-1を参照してください。

chunk

expressionに追加するVARCHAR2チャンク(行)。

注意

1. SET_EXPRESSIONのchunk引数にNULLを渡すことで、前のチャンクを消去できます。chunkのデフォルト値はNULLです。

2. 「変換リストについて」を参照してください。

3. 「使用上の注意」を参照してください。

例

この例では、SET_EXPRESSIONへの2つのコールで変換式を構成し、別の2つのコールで逆変換式を構成します。

注意:
この例は単なる参考用です。この例は、SET_EXPRESSIONによってexpressionにすでに存在するテキストにchunkで指定されたテキストを追加する方法を示しています。SET_EXPRESSIONプロシージャの目的は、SET_TRANSFORMのVARCHAR2引数に指定できない非常に長い変換式を構成することです。
同様に、変換リストはモデルに埋め込むためのものですが、参考用として変換リストv_xlstを外部ビューに表示しています。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_postal_code, cust_credit_limit
FROM sh.customers;

DECLARE
v_expr dbms_data_mining_transform.EXPRESSION_REC;
v_rexp dbms_data_mining_transform.EXPRESSION_REC;
v_xrec dbms_data_mining_transform.TRANSFORM_REC;
v_xlst dbms_data_mining_transform.TRANSFORM_LIST :=
dbms_data_mining_transform.TRANSFORM_LIST(NULL);
BEGIN
dbms_data_mining_transform.SET_EXPRESSION(
EXPRESSION  => v_expr,
CHUNK       => '("CUST_YEAR_OF_BIRTH"-1910)');
dbms_data_mining_transform.SET_EXPRESSION(
EXPRESSION  => v_expr,
CHUNK       => '/77');
dbms_data_mining_transform.SET_EXPRESSION(
EXPRESSION  => v_rexp,
CHUNK       => '"CUST_YEAR_OF_BIRTH"*77');
dbms_data_mining_transform.SET_EXPRESSION(
EXPRESSION  => v_rexp,
CHUNK       => '+1910');

v_xrec := null;
v_xrec.attribute_name := 'CUST_YEAR_OF_BIRTH';
v_xrec.expression := v_expr;
v_xrec.reverse_expression := v_rexp;
v_xlst.TRIM;
v_xlst.extend(1);
v_xlst(1) := v_xrec;

dbms_data_mining_transform.XFORM_STACK (
xform_list           =>  v_xlst,
data_table_name      => 'mining_data',
xform_view_name      => 'v_xlst_view');

dbms_output.put_line('====');
FOR i IN 1..v_xlst.count LOOP
dbms_output.put_line('ATTR: '||v_xlst(i).attribute_name);
dbms_output.put_line('SUBN: '||v_xlst(i).attribute_subname);
FOR j IN v_xlst(i).expression.lb..v_xlst(i).expression.ub LOOP
dbms_output.put_line('EXPR: '||v_xlst(i).expression.lstmt(j));
END LOOP;
FOR j IN v_xlst(i).reverse_expression.lb..
v_xlst(i).reverse_expression.ub LOOP
dbms_output.put_line('REXP: '||v_xlst(i).reverse_expression.lstmt(j));
END LOOP;
dbms_output.put_line('====');
END LOOP;
END;
/
====
ATTR: CUST_YEAR_OF_BIRTH
SUBN:
EXPR: ("CUST_YEAR_OF_BIRTH"-1910)
EXPR: /77
REXP: "CUST_YEAR_OF_BIRTH"*77
REXP: +1910
====

SET_TRANSFORMプロシージャ

このプロシージャは、属性の変換命令を変換リストに追加します。

構文

DBMS_DATA_MINING_TRANSFORM.SET_TRANSFORM (
xform_list               IN OUT NOCOPY TRANSFORM_LIST,
attribute_name           VARCHAR2,
attribute_subname        VARCHAR2,
expression               VARCHAR2,
reverse_expression       VARCHAR2,
attribute_spec           VARCHAR2 DEFAULT NULL);

パラメータ

表46-33 SET_TRANSFORMプロシージャのパラメータ

パラメータ

説明

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

attribute_name

変換する属性の名前。

attribute_subname

attribute_nameがネストされた列の場合はネストされた属性の名前。それ以外の場合はNULL。

expression

属性の変換を指定するSQL式。

reverse_expression

モデルのディテールおよび監視ありモデルのターゲット(属性がターゲットの場合)の変換を読みやすさを考慮して元に戻すSQL式。

attribute_spec

モデル作成中の属性の特別な処理を識別する1つ以上のキーワード。値は次のとおりです。

- NOPREP: ADPが有効な場合、属性の自動変換を阻止します。ADPが無効な場合は、この値の効果はありません。

- TEXT: 属性が非構造化テキスト・データとして処理されるようになります。

- FORCE_IN: モデル作成に属性を強制的に含める。特徴選択が有効(ftr_selection_enable = yes)なGLMモデルにのみ使用できます。特徴選択は、デフォルトで無効になっています。
特徴選択が有効なGLMがモデルで使用されていない場合、この値は効果がありません。

attribute_specの詳細は、Oracle Data Miningユーザーズ・ガイドの「属性の変換方法の指定」を参照してください。

使用上の注意

1. 「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「ネストしたデータの変換」

2. 次の例に示すとおり、NULL変換式および反転式を指定して属性を削除できます。また、STACKインタフェースを使用して列を削除することもできます(CREATE_COL_REMプロシージャおよびSTACK_COL_REMプロシージャ)。

例

この例では、SET_TRANSFORMを使用してデータ・セットcust_infoのcust_stackに変換を追加し、変換されたデータの1つの行を表示します。

SET_TRANSFORMは、country_id列を10で割り、cust_year_of_birth列を削除し、ネストした属性custprods.mouse padに10を掛けます。(cust_infoの定義は、「DESCRIBE_STACKプロシージャ」を参照してください。)

describe cust_info
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
CUST_ID                                   NOT NULL NUMBER
COUNTRY_ID                                NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                        NOT NULL NUMBER(4)
CUSTPRODS                                          SYS.DM_NESTED_NUMERICALS

DECLARE
cust_stack   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'country_id', NULL, 'country_id/10', 'country_id*10');
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'cust_year_of_birth', NULL, NULL, NULL);
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'custprods', 'Mouse Pad', 'value*100', 'value/100');
dbms_data_mining_transform.XFORM_STACK (cust_stack,
'cust_info', 'xform_cust_view');
END;
/

select * from xform_cust_view where cust_id = 100004;

CUST_ID  COUNTRY_ID  CUSTPRODS(ATTRIBUTE_NAME, VALUE)
-------  ----------  ----------------------------------------------
100004         5279  DM_NESTED_NUMERICALS(DM_NESTED_NUMERICAL
('External 8X CD-ROM', 1),
DM_NESTED_NUMERICAL('Keyboard Wrist Rest', 1))

STACK_BIN_CATプロシージャ

このプロシージャは、変換リストに質的ビニング変換を追加します。

構文

DBMS_DATA_MINING_TRANSFORM.STACK_BIN_CAT (
bin_table_name     IN            VARCHAR2,
xform_list         IN OUT NOCOPY TRANSFORM_LIST,
literal_flag       IN            BOOLEAN  DEFAULT FALSE,
bin_schema_name    IN            VARCHAR2 DEFAULT NULL);

パラメータ

表46-34 STACK_BIN_CATプロシージャのパラメータ

パラメータ

説明

bin_table_name

質的ビニングの変換定義表の名前。CREATE_BIN_CATプロシージャを使用して、定義表を作成できます。STACK_BIN_CATをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、質的ビニング用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

表46-4「質的ビニングの変換定義表の列」を参照してください。

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

literal_flag

変換定義表のbin列の値が有効なSQLリテラルであるかどうかを示します。literal_flagがFALSE(デフォルト)の場合、ビン識別子は一重引用符で囲まれてSQLリテラルに変換されます。

ビン識別子が数値データ・タイプを含む必要のある数値である場合、O-Clusterモデルと同様にliteral_flagをTRUEに設定します。

例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例は、質的属性列cust_postal_codeのビニング変換をmining_data_stackというスタックに追加する方法を示しています。

注意:
この例では、XFORM_STACKプロシージャを起動して、スタックによるデータの変換方法を表示します。XFORM_STACKは、変換されたデータの外部ビューを単に生成します。STACKプロシージャの実際の目的は、モデルに埋め込むための変換リストを構成することです。変換は、CREATE_MODELのxform_listパラメータに渡されます。例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

CREATE or REPLACE VIEW mining_data AS
SELECT cust_id, cust_postal_code, cust_credit_limit
FROM sh.customers
WHERE cust_id BETWEEN 100050 AND 100100;
BEGIN
dbms_data_mining_transform.CREATE_BIN_CAT ('bin_cat_tbl');
dbms_data_mining_transform.INSERT_BIN_CAT_FREQ (
bin_table_name   => 'bin_cat_tbl',
data_table_name  => 'mining_data',
bin_num          =>  3);
END;
/
DECLARE
MINING_DATA_STACK   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_BIN_CAT (
bin_table_name       => 'bin_cat_tbl',
xform_list           =>  mining_data_stack);
dbms_data_mining_transform.XFORM_STACK (
xform_list           =>  mining_data_stack,
data_table_name      => 'mining_data',
xform_view_name      => 'mining_data_stack_view');
END;
/
-- Before transformation
column cust_postal_code format a16
SELECT * from mining_data
WHERE cust_id BETWEEN 100050 AND 100053
ORDER BY cust_id;

CUST_ID CUST_POSTAL_CODE CUST_CREDIT_LIMIT
---------- ---------------- -----------------
100050 76486                         1500
100051 73216                         9000
100052 69499                         5000
100053 45704                         7000

-- After transformation
SELECT * FROM mining_data_stack_view
WHERE cust_id BETWEEN 100050 AND 100053
ORDER BY cust_id;

CUST_ID CUST_POSTAL_CODE CUST_CREDIT_LIMIT
---------- ---------------- -----------------
100050 4                             1500
100051 1                             9000
100052 4                             5000
100053 4                             7000

STACK_BIN_NUMプロシージャ

このプロシージャは、変換リストに量的ビニング変換を追加します。

構文

DBMS_DATA_MINING_TRANSFORM.STACK_BIN_NUM (
bin_table_name     IN             VARCHAR2,
xform_list         IN OUT  NOCOPY TRANSFORM_LIST,
literal_flag       IN             BOOLEAN  DEFAULT FALSE,
bin_schema_name    IN             VARCHAR2 DEFAULT NULL);

パラメータ

表46-35 STACK_BIN_NUMプロシージャのパラメータ

パラメータ

説明

bin_table_name

量的ビニングの変換定義表の名前。CREATE_BIN_NUMプロシージャを使用して、定義表を作成できます。STACK_BIN_NUMをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、量的ビニング用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

表46-6「量的ビニングの変換定義表の列」を参照してください。

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

literal_flag

変換定義表のbin列の値が有効なSQLリテラルであるかどうかを示します。literal_flagがFALSE(デフォルト)の場合、ビン識別子は一重引用符で囲まれてSQLリテラルに変換されます。

ビン識別子が数値データ・タイプを含む必要のある数値である場合、O-Clusterモデルと同様にliteral_flagをTRUEに設定します。

例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例は、量的属性列cust_credit_limitのビニング変換をmining_data_stackというスタックに追加する方法を示しています。

注意:
この例では、XFORM_STACKプロシージャを起動して、スタックによるデータの変換方法を表示します。XFORM_STACKは、変換されたデータの外部ビューを単に生成します。STACKプロシージャの実際の目的は、モデルに埋め込むための変換リストを構成することです。変換は、CREATE_MODELのxform_listパラメータに渡されます。例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_postal_code, cust_credit_limit
FROM sh.customers
WHERE cust_id BETWEEN 100050 and 100100;
BEGIN
dbms_data_mining_transform.create_bin_num ('bin_num_tbl');
dbms_data_mining_transform.insert_bin_num_qtile (
bin_table_name    => 'bin_num_tbl',
data_table_name   => 'mining_data',
bin_num                   => 5,
exclude_list      =>  dbms_data_mining_transform.COLUMN_LIST('cust_id'));
END;
/
DECLARE
MINING_DATA_STACK   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_BIN_CAT (
bin_table_name          => 'bin_num_tbl',
xform_list         =>  mining_data_stack);
dbms_data_mining_transform.XFORM_STACK (
xform_list         =>  mining_data_stack,
data_table_name   => 'mining_data',
xform_view_name   => 'mining_data_stack_view');
END;
/
-- Before transformation
SELECT cust_id, cust_postal_code, ROUND(cust_credit_limit) FROM mining_data
WHERE cust_id BETWEEN 100050 AND 100055
ORDER BY cust_id;
CUST_ID   CUST_POSTAL_CODE   ROUND(CUST_CREDIT_LIMIT)
-------   -----------------  -------------------------
100050    76486                                 1500
100051    73216                                 9000
100052    69499                                 5000
100053    45704                                 7000
100055    74673                                11000
100055    74673                                11000

-- After transformation
SELECT cust_id, cust_postal_code, ROUND(cust_credit_limit)
FROM mining_data_stack_view
WHERE cust_id BETWEEN 100050 AND 100055
ORDER BY cust_id;
CUST_ID   CUST_POSTAL_CODE   ROUND(CUST_CREDIT_LIMITT)
-------   ----------------   -------------------------
100050    76486
100051    73216                                   2
100052    69499                                   1
100053    45704
100054    88021                                   3
100055    74673                                   3

STACK_CLIPプロシージャ

このプロシージャは、変換リストにクリッピング変換を追加します。

構文

DBMS_DATA_MINING_TRANSFORM.STACK_CLIP (
clip_table_name     IN            VARCHAR2,
xform_list          IN OUT NOCOPY TRANSFORM_LIST,
clip_schema_name    IN            VARCHAR2 DEFAULT NULL);

パラメータ

表46-36 STACK_CLIPプロシージャのパラメータ

パラメータ

説明

clip_table_name

クリッピングの変換定義表の名前。CREATE_CLIPプロシージャを使用して、定義表を作成できます。STACK_CLIPをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、クリッピング用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

表46-8「クリッピングまたはウィンザライズの変換定義表の列」を参照してください。

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

clip_schema_name

clip_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例は、量的属性列cust_credit_limitのクリッピング変換をmining_data_stackというスタックに追加する方法を示しています。

注意:
この例では、XFORM_STACKプロシージャを起動して、スタックによるデータの変換方法を表示します。XFORM_STACKは、変換されたデータの外部ビューを単に生成します。STACKプロシージャの実際の目的は、モデルに埋め込むための変換リストを構成することです。変換は、CREATE_MODELのxform_listパラメータに渡されます。例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_postal_code, cust_credit_limit
FROM sh.customers
WHERE cust_id BETWEEN 100050 AND 100100;
BEGIN
dbms_data_mining_transform.create_clip ('clip_tbl');
dbms_data_mining_transform.insert_clip_winsor_tail (
clip_table_name   => 'clip_tbl',
data_table_name   => 'mining_data',
tail_frac         => 0.25,
exclude_list      => dbms_data_mining_transform.COLUMN_LIST('cust_id'));
END;
/
DECLARE
MINING_DATA_STACK   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_CLIP (
clip_table_name     => 'clip_tbl',
xform_list          =>  mining_data_stack);
dbms_data_mining_transform.XFORM_STACK (
xform_list        =>  mining_data_stack,
data_table_name   => 'mining_data',
xform_view_name   => 'mining_data_stack_view');
END;
/
-- Before transformation
SELECT cust_id, cust_postal_code, round(cust_credit_limit)
FROM mining_data
WHERE cust_id BETWEEN 100050 AND 100054
ORDER BY cust_id;

CUST_ID   CUST_POSTAL_CODE   ROUND(CUST_CREDIT_LIMIT)
-------   ----------------   ------------------------
100050    76486                                 1500
100051    73216                                 9000
100052    69499                                 5000
100053    45704                                 7000
100054    88021                                11000

-- After transformation
SELECT cust_id, cust_postal_code, round(cust_credit_limit)
FROM mining_data_stack_view
WHERE cust_id BETWEEN 100050 AND 100054
ORDER BY cust_id;

CUST_ID   CUST_POSTAL_CODE   ROUND(CUST_CREDIT_LIMIT)
-------   ----------------   ------------------------
100050    76486                                 5000
100051    73216                                 9000
100052    69499                                 5000
100053    45704                                 7000
100054    88021                                11000

STACK_COL_REMプロシージャ

このプロシージャは、変換リストに列削除変換を追加します。

構文

DBMS_DATA_MINING_TRANSFORM.STACK_COL_REM (
rem_table_name     IN            VARCHAR2,
xform_list         IN OUT NOCOPY TRANSFORM_LIST,
rem_schema_name    IN            VARCHAR2 DEFAULT NULL);

パラメータ

表46-37 STACK_COL_REMプロシージャのパラメータ

パラメータ

説明

rem_table_name

列削除の変換定義表の名前。CREATE_COL_REMプロシージャを使用して、定義表を作成できます。表46-10「列削除の変換定義表の列」を参照してください。

STACK_COL_REMをコールする前に、この表に列名を移入する必要があります。表の移入を行う場合、オプションでINSERT_BIN_SUPERプロシージャおよびINSERT_AUTOBIN_NUM_EQWIDTHプロシージャを使用できます。また、SQL INSERT文も使用できます。

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

rem_schema_name

rem_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例は、列cust_credit_limitをmining_data_stackという変換リストから削除する方法を示しています。

注意:
この例では、XFORM_STACKプロシージャを起動して、スタックによるデータの変換方法を表示します。XFORM_STACKは、変換されたデータの外部ビューを単に生成します。STACKプロシージャの実際の目的は、モデルに埋め込むための変換リストを構成することです。変換は、CREATE_MODELのxform_listパラメータに渡されます。例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, country_id, cust_postal_code, cust_credit_limit
FROM sh.customers;

BEGIN
dbms_data_mining_transform.create_col_rem ('rem_tbl');
END;
/

INSERT into rem_tbl VALUES (upper('cust_postal_code'), null);

DECLARE
MINING_DATA_STACK   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.stack_col_rem (
rem_table_name     => 'rem_tbl',
xform_list         =>  mining_data_stack);
dbms_data_mining_transform.XFORM_STACK (
xform_list         =>  mining_data_stack,
data_table_name    => 'mining_data',
xform_view_name    => 'mining_data_stack_view');
END;
/

SELECT *  FROM mining_data
WHERE cust_id BETWEEN 100050 AND 100051
ORDER BY cust_id;

CUST_ID   COUNTRY_ID   CUST_POSTAL_CODE   CUST_CREDIT_LIMIT
-------   ----------   ----------------   -----------------
100050         52773   76486                          1500
100051         52790   73216                          9000

SELECT *  FROM mining_data_stack_view
WHERE cust_id BETWEEN 100050 AND 100051
ORDER BY cust_id;

CUST_ID   COUNTRY_ID   CUST_CREDIT_LIMIT
-------   ----------   -----------------
100050         52773              1500
100051         52790              9000

STACK_MISS_CATプロシージャ

このプロシージャは、変換リストに質的欠損値変換を追加します。

構文

DBMS_DATA_MINING_TRANSFORM.STACK_MISS_CAT (
miss_table_name     IN       VARCHAR2,
xform_list          IN OUT   NOCOPY TRANSFORM_LIST,
miss_schema_name    IN       VARCHAR2 DEFAULT NULL);

パラメータ

表46-38 STACK_MISS_CATプロシージャのパラメータ

パラメータ

説明

miss_table_name

質的欠損値処理の変換定義表の名前。CREATE_MISS_CATプロシージャを使用して、定義表を作成できます。STACK_MISS_CATをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、INSERT_MISS_CAT_MODEプロシージャを使用するか、独自のSQLを記述することができます。

表46-12「質的欠損値処理の変換定義表の列」を参照してください。

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例は、列cust_marital_statusの欠損値をmining_data_stackという変換リストの最頻値に置き換える方法を示しています。

注意:
この例では、XFORM_STACKプロシージャを起動して、スタックによるデータの変換方法を表示します。XFORM_STACKは、変換されたデータの外部ビューを単に生成します。STACKプロシージャの実際の目的は、モデルに埋め込むための変換リストを構成することです。変換は、CREATE_MODELのxform_listパラメータに渡されます。例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, country_id, cust_marital_status
FROM sh.customers
where cust_id BETWEEN 1 AND 10;

BEGIN
dbms_data_mining_transform.create_miss_cat ('miss_cat_tbl');
dbms_data_mining_transform.insert_miss_cat_mode ('miss_cat_tbl', 'mining_data');
END;
/

DECLARE
MINING_DATA_STACK   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.stack_miss_cat (
miss_table_name   => 'miss_cat_tbl',
xform_list        => mining_data_stack);
dbms_data_mining_transform.XFORM_STACK (
xform_list        =>  mining_data_stack,
data_table_name   => 'mining_data',
xform_view_name   => 'mining_data_stack_view');
END;
/
SELECT * FROM mining_data
ORDER BY cust_id;

CUST_ID   COUNTRY_ID   CUST_MARITAL_STATUS
-------   ----------   --------------------
1      52789
2      52778
3      52770
4      52770
5      52789
6      52769     single
7      52790     single
8      52790     married
9      52770     divorced
10      52790     widow

SELECT * FROM mining_data_stack_view
ORDER By cust_id;

CUST_ID   COUNTRY_ID   CUST_MARITAL_STATUS
-------   -----------  --------------------
1       52789    single
2       52778    single
3       52770    single
4       52770    single
5       52789    single
6       52769    single
7       52790    single
8       52790    married
9       52770    divorced
10       52790    widow

STACK_MISS_NUMプロシージャ

このプロシージャは、変換リストに量的欠損値変換を追加します。

構文

DBMS_DATA_MINING_TRANSFORM.STACK_MISS_NUM (
miss_table_name     IN       VARCHAR2,
xform_list          IN OUT   NOCOPY TRANSFORM_LIST,
miss_schema_name    IN       VARCHAR2 DEFAULT NULL);

パラメータ

表46-39 STACK_MISS_NUMプロシージャのパラメータ

パラメータ

説明

miss_table_name

量的欠損値処理の変換定義表の名前。CREATE_MISS_NUMプロシージャを使用して、定義表を作成できます。STACK_MISS_NUMをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、INSERT_MISS_NUM_MEANプロシージャを使用するか、独自のSQLを記述することができます。

表46-14「量的欠損値処理の変換定義表の列」を参照してください。

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例は、列cust_credit_limitの欠損値をmining_data_stackという変換リストの平均値に置き換える方法を示しています。

注意:
この例では、XFORM_STACKプロシージャを起動して、スタックによるデータの変換方法を表示します。XFORM_STACKは、変換されたデータの外部ビューを単に生成します。STACKプロシージャの実際の目的は、モデルに埋め込むための変換リストを構成することです。変換は、CREATE_MODELのxform_listパラメータに渡されます。例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

describe mining_data
Name                                                  Null?    Type
----------------------------------------------------- -------- -----
CUST_ID                                               NOT NULL NUMBER
CUST_CREDIT_LIMIT                                              NUMBER

BEGIN
dbms_data_mining_transform.create_miss_num ('miss_num_tbl');
dbms_data_mining_transform.insert_miss_num_mean ('miss_num_tbl','mining_data');
END;
/
SELECT * FROM miss_num_tbl;

COL                  ATT      VAL
-------------------- ----- ------
CUST_ID                       5.5
CUST_CREDIT_LIMIT          185.71

DECLARE
MINING_DATA_STACK   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.STACK_MISS_NUM (
miss_table_name   => 'miss_num_tbl',
xform_list        => mining_data_stack);
dbms_data_mining_transform.XFORM_STACK (
xform_list        =>  mining_data_stack,
data_table_name   => 'mining_data',
xform_view_name   => 'mining_data_stack_view');
END;
/
-- Before transformation
SELECT * FROM mining_data
ORDER BY cust_id;
CUST_ID CUST_CREDIT_LIMIT
------- -----------------
1               100
2
3               200
4
5               150
6               400
7               150
8
9               100
10               200

-- After transformation
SELECT * FROM mining_data_stack_view
ORDER BY cust_id;
CUST_ID CUST_CREDIT_LIMIT
------- -----------------
1               100
2            185.71
3               200
4            185.71
5               150
6               400
7               150
8            185.71
9               100
10               200

STACK_NORM_LINプロシージャ

このプロシージャは、変換リストに線形正規化変換を追加します。

構文

DBMS_DATA_MINING_TRANSFORM.STACK_NORM_LIN (
norm_table_name     IN       VARCHAR2,
xform_list          IN OUT   NOCOPY TRANSFORM_LIST,
norm_schema_name    IN       VARCHAR2 DEFAULT NULL);

パラメータ

表46-40 STACK_NORM_LINプロシージャのパラメータ

パラメータ

説明

norm_table_name

線形正規化の変換定義表の名前。CREATE_NORM_LINプロシージャを使用して、定義表を作成できます。STACK_NORM_LINをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、正規化用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

表46-16「線形正規化の変換定義表の列」を参照してください。

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

norm_schema_name

norm_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例は、列cust_credit_limitをmining_data_stackという変換リストで正規化する方法を示しています。

注意:
この例では、XFORM_STACKプロシージャを起動して、スタックによるデータの変換方法を表示します。XFORM_STACKは、変換されたデータの外部ビューを単に生成します。STACKプロシージャの実際の目的は、モデルに埋め込むための変換リストを構成することです。変換は、CREATE_MODELのxform_listパラメータに渡されます。例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, country_id, cust_postal_code, cust_credit_limit
FROM sh.customers;
BEGIN
dbms_data_mining_transform.create_norm_lin ('norm_lin_tbl');
dbms_data_mining_transform.insert_norm_lin_minmax (
norm_table_name   => 'norm_lin_tbl',
data_table_name   => 'mining_data',
exclude_list      =>  dbms_data_mining_transform.COLUMN_LIST('cust_id',
'country_id'));
END;
/
SELECT * FROM norm_lin_tbl;
COL                  ATT    SHIFT  SCALE
-------------------- ----- ------ ------
CUST_CREDIT_LIMIT            1500  13500

DECLARE
MINING_DATA_STACK   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.stack_norm_lin (
norm_table_name   => 'norm_lin_tbl',
xform_list        => mining_data_stack);
dbms_data_mining_transform.XFORM_STACK (
xform_list        =>  mining_data_stack,
data_table_name   => 'mining_data',
xform_view_name   => 'mining_data_stack_view');
END;
/
SELECT * FROM mining_data
WHERE cust_id between 1 and 10
ORDER BY cust_id;
CUST_ID COUNTRY_ID CUST_POSTAL_CODE     CUST_CREDIT_LIMIT
------- ---------- -------------------- -----------------
1      52789 30828                             9000
2      52778 86319                            10000
3      52770 88666                             1500
4      52770 87551                             1500
5      52789 59200                             1500
6      52769 77287                             1500
7      52790 38763                             1500
8      52790 58488                             3000
9      52770 63033                             3000
10      52790 52602                             3000

SELECT * FROM mining_data_stack_view
WHERE cust_id between 1 and 10
ORDER BY cust_id;
CUST_ID COUNTRY_ID CUST_POSTAL_CODE     CUST_CREDIT_LIMIT
------- ---------- -------------------- -----------------
1      52789 30828                           .55556
2      52778 86319                           .62963
3      52770 88666                                0
4      52770 87551                                0
5      52789 59200                                0
6      52769 77287                                0
7      52790 38763                                0
8      52790 58488                           .11111
9      52770 63033                           .11111
10      52790 52602                           .11111

XFORM_BIN_CATプロシージャ

このプロシージャは、定義表で指定された質的ビニング変換を実装するビューを作成します。定義表で指定された列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_CAT (
bin_table_name       IN VARCHAR2,
data_table_name      IN VARCHAR2,
xform_view_name      IN VARCHAR2,
literal_flag         IN BOOLEAN DEFAULT FALSE,
bin_schema_name      IN VARCHAR2 DEFAULT NULL,
data_schema_name     IN VARCHAR2 DEFAULT NULL,
xform_schema_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-41 XFORM_BIN_CATプロシージャのパラメータ

パラメータ

説明

bin_table_name

質的ビニングの変換定義表の名前。CREATE_BIN_CATプロシージャを使用して、定義表を作成できます。XFORM_BIN_CATをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、質的ビニング用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

表46-4「質的ビニングの変換定義表の列」を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、bin_table_nameで指定された変換を含むdata_table_nameの列が表示されます。

literal_flag

変換定義表のbin列の値が有効なSQLリテラルであるかどうかを示します。literal_flagがFALSE(デフォルト)の場合、ビン識別子は一重引用符で囲まれてSQLリテラルに変換されます。

ビン識別子が数値データ・タイプを含む必要のある数値である場合、O-Clusterモデルと同様にliteral_flagをTRUEに設定します。

例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。

例

この例では、cust_postal_code列をビンに区分するビューを作成します。データ・ソースは、sh.customerの3つの列で構成されます。

describe mining_data
Name                                   Null?    Type
-------------------------------------- -------- ------------------------
CUST_ID                                NOT NULL NUMBER
CUST_POSTAL_CODE                       NOT NULL VARCHAR2(10)
CUST_CREDIT_LIMIT                               NUMBER

SELECT * FROM mining_data WHERE cust_id between 104066 and 104069;

CUST_ID CUST_POSTAL_CODE     CUST_CREDIT_LIMIT
--------- -------------------- -----------------
104066 69776                             7000
104067 52602                             9000
104068 55787                            11000
104069 55977                             5000

BEGIN
dbms_data_mining_transform.create_bin_cat(
bin_table_name     => 'bin_cat_tbl');
dbms_data_mining_transform.insert_bin_cat_freq(
bin_table_name     => 'bin_cat_tbl',
data_table_name    => 'mining_data',
bin_num           => 10);
dbms_data_mining_transform.xform_bin_cat(
bin_table_name     => 'bin_cat_tbl',
data_table_name    => 'mining_data',
xform_view_name    => 'bin_cat_view');
END;
/

SELECT * FROM bin_cat_view WHERE cust_id between 104066 and 104069;

CUST_ID CUST_POSTAL_CODE     CUST_CREDIT_LIMIT
---------- -------------------- -----------------
104066 6                                 7000
104067 11                                9000
104068 3                                11000
104069 11                                5000

SELECT text FROM user_views WHERE view_name IN 'BIN_CAT_VIEW';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID",DECODE("CUST_POSTAL_CODE",'38082','1','45704','9','48346','5','
55787','3','63736','2','67843','7','69776','6','72860','10','78558','4','80841',
'8',NULL,NULL,'11') "CUST_POSTAL_CODE","CUST_CREDIT_LIMIT" FROM mining_data

XFORM_BIN_NUMプロシージャ

このプロシージャは、定義表で指定された量的ビニング変換を実装するビューを作成します。定義表で指定された列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_NUM (
bin_table_name     IN VARCHAR2,
data_table_name    IN VARCHAR2,
xform_view_name    IN VARCHAR2,
literal_flag       IN BOOLEAN DEFAULT FALSE,
bin_schema_name    IN VARCHAR2 DEFAULT NULL,
data_schema_name   IN VARCHAR2 DEFAULT NULL,
xform_schema_name  IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-42 XFORM_BIN_NUMプロシージャのパラメータ

パラメータ

説明

bin_table_name

量的ビニングの変換定義表の名前。CREATE_BIN_NUMプロシージャを使用して、定義表を作成できます。XFORM_BIN_NUMをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、量的ビニング用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

「量的ビニングの変換定義表の列」を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、bin_table_nameで指定された変換を含むdata_table_nameの列が表示されます。

literal_flag

変換定義表のbin列の値が有効なSQLリテラルであるかどうかを示します。literal_flagがFALSE(デフォルト)の場合、ビン識別子は一重引用符で囲まれてSQLリテラルに変換されます。

ビン識別子が数値データ・タイプを含む必要のある数値である場合、O-Clusterモデルと同様にliteral_flagをTRUEに設定します。

例については、「INSERT_BIN_NUM_EQWIDTHプロシージャ」を参照してください。

bin_schema_name

bin_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。

例

この例では、cust_credit_limit列をビンに区分するビューを作成します。データ・ソースは、sh.customerの3つの列で構成されます。

describe mining_data
Name                                   Null?    Type
-------------------------------------- -------- ------------------------
CUST_ID                                NOT NULL NUMBER
CUST_POSTAL_CODE                       NOT NULL VARCHAR2(10)
CUST_CREDIT_LIMIT                               NUMBER

column cust_credit_limit off
SELECT * FROM mining_data WHERE cust_id between 104066 and 104069;

CUST_ID CUST_POSTAL_CODE   CUST_CREDIT_LIMIT
---------  ------------------  --------------------
104066 69776                           7000
104067 52602                           9000
104068 55787                          11000
104069 55977                           5000

BEGIN
dbms_data_mining_transform.create_bin_num(
bin_table_name     => 'bin_num_tbl');
dbms_data_mining_transform.insert_autobin_num_eqwidth(
bin_table_name     => 'bin_num_tbl',
data_table_name    => 'mining_data',
bin_num                   => 5,
max_bin_num            => 10,
exclude_list       => dbms_data_mining_transform.COLUMN_LIST('cust_id'));
dbms_data_mining_transform.xform_bin_num(
bin_table_name      => 'bin_num_tbl',
data_table_name     => 'mining_data',
xform_view_name     => 'mining_data_view');
END;
/
describe mining_data_view
Name                                 Null?    Type
------------------------------------ -------- ------------------------
CUST_ID                              NOT NULL NUMBER
CUST_POSTAL_CODE                     NOT NULL VARCHAR2(10)
CUST_CREDIT_LIMIT                             VARCHAR2(2)

col cust_credit_limit on
col cust_credit_limit format a25
SELECT * FROM mining_data_view WHERE cust_id between 104066 and 104069;

CUST_ID CUST_POSTAL_CODE     CUST_CREDIT_LIMIT
---------- -------------------- -------------------------
104066 69776                5
104067 52602                6
104068 55787                8
104069 55977                3

set long 2000
SELECT text FROM user_views WHERE view_name IN 'MINING_DATA_VIEW';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_POSTAL_CODE",CASE WHEN "CUST_CREDIT_LIMIT"<1500 THEN NULL
WHEN "CUST_CREDIT_LIMIT"<=2850 THEN '1' WHEN "CUST_CREDIT_LIMIT"<=4200 THEN '2'
WHEN "CUST_CREDIT_LIMIT"<=5550 THEN '3' WHEN "CUST_CREDIT_LIMIT"<=6900 THEN '4'
WHEN "CUST_CREDIT_LIMIT"<=8250 THEN '5' WHEN "CUST_CREDIT_LIMIT"<=9600 THEN '6'
WHEN "CUST_CREDIT_LIMIT"<=10950 THEN '7' WHEN "CUST_CREDIT_LIMIT"<=12300 THEN '
8' WHEN "CUST_CREDIT_LIMIT"<=13650 THEN '9' WHEN "CUST_CREDIT_LIMIT"<=15000 THEN
'10' END "CUST_CREDIT_LIMIT" FROM mining_data

XFORM_CLIPプロシージャ

このプロシージャは、定義表で指定されたクリッピング変換を実装するビューを作成します。定義表で指定された列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_CLIP (
clip_table_name       IN VARCHAR2,
data_table_name       IN VARCHAR2,
xform_view_name       IN VARCHAR2,
clip_schema_name      IN VARCHAR2 DEFAULT NULL,
data_schema_name      IN VARCHAR2,DEFAULT NULL,
xform_schema_name     IN VARCHAR2,DEFAULT NULL);

パラメータ

表46-43 XFORM_CLIPプロシージャのパラメータ

パラメータ

説明

clip_table_name

クリッピングの変換定義表の名前。CREATE_CLIPプロシージャを使用して、定義表を作成できます。XFORM_CLIPをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、クリッピング用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

表46-8「クリッピングまたはウィンザライズの変換定義表の列」を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、clip_table_nameで指定された変換を含むdata_table_nameの列が表示されます。

clip_schema_name

clip_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

例

この例では、cust_credit_limit列をクリッピングするビューを作成します。データ・ソースは、sh.customerの3つの列で構成されます。

describe mining_data
Name                           Null?    Type
------------------------------ -------- -------------------------
CUST_ID                        NOT NULL NUMBER
CUST_POSTAL_CODE               NOT NULL VARCHAR2(10)
CUST_CREDIT_LIMIT                        NUMBER

BEGIN
dbms_data_mining_transform.create_clip(
clip_table_name    => 'clip_tbl');
dbms_data_mining_transform.insert_clip_trim_tail(
clip_table_name   => 'clip_tbl',
data_table_name   => 'mining_data',
tail_frac         => 0.05,
exclude_list      => dbms_data_mining_transform.COLUMN_LIST('cust_id'));
dbms_data_mining_transform.xform_clip(
clip_table_name     => 'clip_tbl',
data_table_name    => 'mining_data',
xform_view_name    => 'clip_view');
END;
/
describe clip_view
Name                          Null?    Type
----------------------------- -------- --------------------------
CUST_ID                       NOT NULL NUMBER
CUST_POSTAL_CODE              NOT NULL VARCHAR2(10)
CUST_CREDIT_LIMIT                      NUMBER

SELECT MIN(cust_credit_limit), MAX(cust_credit_limit) FROM mining_data;

MIN(CUST_CREDIT_LIMIT) MAX(CUST_CREDIT_LIMIT)
---------------------- ----------------------
1500                  15000

SELECT MIN(cust_credit_limit), MAX(cust_credit_limit) FROM clip_view;

MIN(CUST_CREDIT_LIMIT) MAX(CUST_CREDIT_LIMIT)
---------------------- ----------------------
1500                  11000

set long 2000
SELECT text FROM user_views WHERE view_name IN 'CLIP_VIEW';

TEXT
--------------------------------------------------------------------------------
SELECT "CUST_ID","CUST_POSTAL_CODE",CASE WHEN "CUST_CREDIT_LIMIT" < 1500 THEN NU
LL WHEN "CUST_CREDIT_LIMIT" > 11000 THEN NULL ELSE "CUST_CREDIT_LIMIT" END "CUST
_CREDIT_LIMIT" FROM mining_data

XFORM_COL_REMプロシージャ

このプロシージャは、定義表で指定された列削除変換を実装するビューを作成します。定義表で指定された列のみが削除され、データ表の残りの列はビューに表示されます。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_COL_REM (
rem_table_name     IN       VARCHAR2,
data_table_name    IN       VARCHAR2,
xform_view_name    IN       VARCHAR2,
rem_schema_name    IN       VARCHAR2 DEFAULT NULL,
data_schema_name   IN       VARCHAR2 DEFAULT NULL,
xform_schema_name  IN       VARCHAR2 DEFAULT NULL);

パラメータ

表46-44 XFORM_COL_REMプロシージャのパラメータ

パラメータ

説明

rem_table_name

列削除の変換定義表の名前。CREATE_COL_REMプロシージャを使用して、定義表を作成できます。表46-10「列削除の変換定義表の列」を参照してください。

XFORM_COL_REMをコールする前に、この表に列名を移入する必要があります。表の移入を行う場合、オプションでINSERT_BIN_SUPERプロシージャおよびINSERT_AUTOBIN_NUM_EQWIDTHプロシージャを使用できます。また、SQL INSERT文も使用できます。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、rem_table_nameで指定されていないdata_table_nameの列が表示されます。

rem_schema_name

rem_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。

例

この例では、現行のスキーマのcustomers表に含まれるすべての列から1つの列のみを除いたビューを作成します。

describe customers
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
CUST_ID                                   NOT NULL NUMBER
CUST_MARITAL_STATUS                                VARCHAR2(20)
OCCUPATION                                         VARCHAR2(21)
AGE                                                NUMBER
YRS_RESIDENCE                                      NUMBER

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_COL_REM ('colrem_xtbl');
END;
/
INSERT INTO colrem_xtbl VALUES('CUST_MARITAL_STATUS', null);

BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_COL_REM (
rem_table_name        => 'colrem_xtbl',
data_table_name       => 'customers',
xform_view_name       => 'colrem_view');
END;
/
describe colrem_view

Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
CUST_ID                                   NOT NULL NUMBER
OCCUPATION                                         VARCHAR2(21)
AGE                                                NUMBER
YRS_RESIDENCE                                      NUMBER

XFORM_EXPR_NUMプロシージャ

このプロシージャは、指定された量的変換を実装するビューを作成します。指定した列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_EXPR_NUM (
expr_pattern       IN       VARCHAR2,
data_table_name    IN       VARCHAR2,
xform_view_name    IN       VARCHAR2,
exclude_list       IN       COLUMN_LIST DEFAULT NULL,
include_list       IN       COLUMN_LIST DEFAULT NULL,
col_pattern        IN       VARCHAR2 DEFAULT ':col',
data_schema_name   IN       VARCHAR2 DEFAULT NULL,
xform_schema_name  IN       VARCHAR2 DEFAULT NULL);

パラメータ

表46-45 XFORM_EXPR_NUMプロシージャのパラメータ

パラメータ

説明

expr_pattern

数値変換式。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、expr_patternおよびcol_patternで指定された変換を含むdata_table_nameの列が表示されます。

exclude_list

除外する数値列のリスト。NULLの場合、数値列は除外されません。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

include_list

含める数値列のリスト。NULLの場合、すべての数値列が含まれます。

include_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

col_pattern

列名に置換されるexpr_pattern内の値。col_patternの値は、大文字と小文字が区別されます。

col_patternのデフォルト値は':col'です。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. XFORM_EXPR_NUMプロシージャは、出現するすべての指定された列パターン(col_pattern)を実際の列名に置き換えることによって、指定された式パターン(expr_pattern)から数値変換式を構成します。
XFORM_EXPR_NUMは、SQL REPLACE関数を使用して変換式を構成します。

REPLACE (expr_pattern,col_pattern,'"column_name"') || '"column_name"'

列が一致した場合、変換式で置換が行われます。一致しない場合、列は変換なしで使用されます。

関連項目:
REPLACE関数の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

2. 包含リストと除外リストのパラメータがあるため、XFORM_EXPR_NUMプロシージャとXFORM_EXPR_STRプロシージャでは、大規模なデータ・セット内で変換を行うために個々の列を簡単に指定できます。他のXFORM_*プロシージャでは、除外リストのみがサポートされます。これらのプロシージャでは、変換しないすべての列を列挙する必要があります。

3. 「使用上の注意」を参照してください。

例

この例では、数値列のデータ・タイプを変換するビューを作成します。

describe customers
Name                                Null?    Type
----------------------------------- -------- ------------------------
CUST_ID                             NOT NULL NUMBER
CUST_MARITAL_STATUS                          VARCHAR2(20)
OCCUPATION                                   VARCHAR2(21)
AGE                                          NUMBER
YRS_RESIDENCE                                NUMBER

BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_EXPR_NUM(
expr_pattern         => 'to_char(:col)',
data_table_name      => 'customers',
xform_view_name      => 'cust_nonum_view',
exclude_list         => dbms_data_mining_transform.COLUMN_LIST( 'cust_id'),
include_list         => null,
col_pattern          => ':col');
END;
/
describe cust_nonum_view
Name                                Null?    Type
----------------------------------- -------- ------------------------
CUST_ID                             NOT NULL NUMBER
CUST_MARITAL_STATUS                          VARCHAR2(20)
OCCUPATION                                   VARCHAR2(21)
AGE                                          VARCHAR2(40)
YRS_RESIDENCE                                VARCHAR2(40)

XFORM_EXPR_STRプロシージャ

このプロシージャは、指定された質的変換を実装するビューを作成します。指定した列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_EXPR_STR (
expr_pattern       IN       VARCHAR2,
data_table_name    IN       VARCHAR2,
xform_view_name    IN       VARCHAR2,
exclude_list       IN       COLUMN_LIST DEFAULT NULL,
include_list       IN       COLUMN_LIST DEFAULT NULL,
col_pattern        IN       VARCHAR2 DEFAULT ':col',
data_schema_name   IN       VARCHAR2 DEFAULT NULL,
xform_schema_name  IN       VARCHAR2 DEFAULT NULL);

パラメータ

表46-46 XFORM_EXPR_STRプロシージャのパラメータ

パラメータ

説明

expr_pattern

文字変換式。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、expr_patternおよびcol_patternで指定された変換を含むdata_table_nameの列が表示されます。

exclude_list

除外するカテゴリ列のリスト。NULLの場合、カテゴリ列は除外されません。

exclude_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

include_list

含める文字の列のリスト。NULLの場合、すべての文字の列が含まれます。

include_listの書式は次のとおりです。

dbms_data_mining_transform.COLUMN_LIST('col1','col2',
...'coln')

col_pattern

列名に置換されるexpr_pattern内の値。col_patternの値は、大文字と小文字が区別されます。

col_patternのデフォルト値は':col'です。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

1. XFORM_EXPR_STRプロシージャは、出現するすべての指定された列パターン(col_pattern)を実際の列名に置き換えることによって、指定された式パターン(expr_pattern)から文字変換式を構成します。
XFORM_EXPR_STRは、SQL REPLACE関数を使用して変換式を構成します。

REPLACE (expr_pattern,col_pattern,'"column_name"') || '"column_name"'

列が一致した場合、変換式で置換が行われます。一致しない場合、列は変換なしで使用されます。

関連項目:
REPLACE関数の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

2. 包含リストと除外リストのパラメータがあるため、XFORM_EXPR_STRプロシージャとXFORM_EXPR_NUMプロシージャでは、大規模なデータ・セット内で変換を行うために個々の列を簡単に指定できます。他のXFORM_*プロシージャでは、除外リストのみがサポートされます。これらのプロシージャでは、変換しないすべての列を列挙する必要があります。

3. 「使用上の注意」を参照してください。

例

この例では、文字の列を大文字に変換するビューを作成します。

describe customers
Name                                Null?    Type
----------------------------------- -------- ------------------------
CUST_ID                             NOT NULL NUMBER
CUST_MARITAL_STATUS                          VARCHAR2(20)
OCCUPATION                                   VARCHAR2(21)
AGE                                          NUMBER
YRS_RESIDENCE                                NUMBER

SELECT cust_id,  cust_marital_status, occupation FROM customers
WHERE   cust_id > 102995
ORDER BY cust_id desc;

CUST_ID CUST_MARITAL_STATUS  OCCUPATION
------- -------------------- ---------------------
103000 Divorc.              Cleric.
102999 Married              Cleric.
102998 Married              Exec.
102997 Married              Exec.
102996 NeverM               Other

BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_EXPR_STR(
expr_pattern            => 'upper(:col)',
data_table_name         => 'customers',
xform_view_name         => 'cust_upcase_view');
END;
/
describe cust_upcase_view
Name                          Null?    Type
----------------------------- -------- --------------------
CUST_ID                       NOT NULL NUMBER
CUST_MARITAL_STATUS                    VARCHAR2(20)
OCCUPATION                             VARCHAR2(21)
AGE                                    NUMBER
YRS_RESIDENCE                          NUMBER

SELECT cust_id,  cust_marital_status, occupation FROM cust_upcase_view
WHERE   cust_id > 102995
ORDER BY cust_id desc;

CUST_ID CUST_MARITAL_STATUS  OCCUPATION
------- -------------------- ---------------------
103000 DIVORC.              CLERIC.
102999 MARRIED              CLERIC.
102998 MARRIED              EXEC.
102997 MARRIED              EXEC.
102996 NEVERM               OTHER

XFORM_MISS_CATプロシージャ

このプロシージャは、定義表で指定された質的欠損値処理変換を実装するビューを作成します。定義表で指定された列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_CAT (
miss_table_name       IN VARCHAR2,
data_table_name       IN VARCHAR2,
xform_view_name       IN VARCHAR2,
miss_schema_name      IN VARCHAR2 DEFAULT NULL,
data_schema_name      IN VARCHAR2 DEFAULT NULL,
xform_schema_name     IN VARCHAR2 DEFAULT NULL;

パラメータ

表46-47 XFORM_MISS_CATプロシージャのパラメータ

パラメータ

説明

miss_table_name

質的欠損値処理の変換定義表の名前。CREATE_MISS_CATプロシージャを使用して、定義表を作成できます。XFORM_MISS_CATをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、INSERT_MISS_CAT_MODEプロシージャを使用するか、独自のSQLを記述することができます。

表46-12「質的欠損値処理の変換定義表の列」を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、miss_table_nameで指定された変換を含むdata_table_nameの列が表示されます。

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。

例

この例では、質的欠損値を最頻値に置き換えるビューを作成します。

SELECT * FROM geog;

REG_ID REGION
------ ------------------------------
1 NE
2 SW
3 SE
4 SW
5
6 NE
7 NW
8 NW
9
10
11 SE
12 SE
13 NW
14 SE
15 SE

SELECT STATS_MODE(region) FROM geog;

STATS_MODE(REGION)
------------------------------
SE

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_CAT('misscat_xtbl');
DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_CAT_MODE (
miss_table_name         => 'misscat_xtbl',
data_table_name         => 'geog' );
END;
/

SELECT col, val FROM misscat_xtbl;

COL        VAL
---------- ----------
REGION     SE

BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_CAT (
miss_table_name        => 'misscat_xtbl',
data_table_name        => 'geog',
xform_view_name        => 'geogxf_view');
END;
/

SELECT * FROM geogxf_view;

REG_ID REGION
------ ------------------------------
1 NE
2 SW
3 SE
4 SW
5 SE
6 NE
7 NW
8 NW
9 SE
10 SE
11 SE
12 SE
13 NW
14 SE
15 SE

XFORM_MISS_NUMプロシージャ

このプロシージャは、定義表で指定された量的欠損値処理変換を実装するビューを作成します。定義表で指定された列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_NUM (
miss_table_name       IN VARCHAR2,
data_table_name       IN VARCHAR2,
xform_view_name       IN VARCHAR2,
miss_schema_name      IN VARCHAR2 DEFAULT NULL,
data_schema_name      IN VARCHAR2 DEFAULT NULL,
xform_schema_name     IN VARCHAR2 DEFAULT NULL;

パラメータ

表46-48 XFORM_MISS_NUMプロシージャのパラメータ

パラメータ

説明

miss_table_name

量的欠損値処理の変換定義表の名前。CREATE_MISS_NUMプロシージャを使用して、定義表を作成できます。XFORM_MISS_NUMをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、INSERT_MISS_NUM_MEANプロシージャを使用するか、独自のSQLを記述することができます。

表46-14「量的欠損値処理の変換定義表の列」を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、miss_table_nameで指定された変換を含むdata_table_nameの列が表示されます。

miss_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。

例

この例では、量的欠損値を平均値に置き換えるビューを作成します。

SELECT * FROM items;

ITEM_ID       QTY
---------- ------
aa            200
bb            200
cc            250
dd
ee
ff            100
gg            250
hh            200
ii
jj            200

SELECT AVG(qty) FROM items;

AVG(QTY)
--------
200

BEGIN
DBMS_DATA_MINING_TRANSFORM.CREATE_MISS_NUM('missnum_xtbl');
DBMS_DATA_MINING_TRANSFORM.INSERT_MISS_NUM_MEAN (
miss_table_name          => 'missnum_xtbl',
data_table_name         => 'items' );
END;
/

SELECT col, val FROM missnum_xtbl;

COL           VAL
---------- ------
QTY           200

BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_MISS_NUM (
miss_table_name        => 'missnum_xtbl',
data_table_name        => 'items',
xform_view_name        => 'items_view');
END;
/

SELECT * FROM items_view;

ITEM_ID       QTY
---------- ------
aa            200
bb            200
cc            250
dd            200
ee            200
ff            100
gg            250
hh            200
ii            200
jj            200

XFORM_NORM_LINプロシージャ

このプロシージャは、定義表で指定された線形正規化変換を実装するビューを作成します。定義表で指定された列のみが変換され、データ表の残りの列はビューに表示されますが、変更されません。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_NORM_LIN (
norm_table_name      IN VARCHAR2,
data_table_name      IN VARCHAR2,
xform_view_name      IN VARCHAR2,
norm_schema_name     IN VARCHAR2 DEFAULT NULL,
data_schema_name     IN VARCHAR2 DEFAULT NULL,
xform_schema_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表46-49 XFORM_NORM_LINプロシージャのパラメータ

パラメータ

説明

norm_table_name

線形正規化の変換定義表の名前。CREATE_NORM_LINプロシージャを使用して、定義表を作成できます。XFORM_NORM_LINをコールする前に、この表に変換定義を移入する必要があります。表の移入を行う場合、正規化用のINSERTプロシージャの1つを使用するか、独自のSQLを記述することができます。

表46-12「質的欠損値処理の変換定義表の列」を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューには、miss_table_nameで指定された変換を含むdata_table_nameの列が表示されます。

norm_schema_name

miss_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。

例

この例では、cust_year_of_birth列とcust_credit_limit列を正規化するビューを作成します。データ・ソースは、sh.customerの3つの列で構成されます。

CREATE OR REPLACE VIEW mining_data AS
SELECT cust_id, cust_year_of_birth, cust_credit_limit
FROM sh.customers;

describe mining_data
Name                                   Null?    Type
-------------------------------------- -------- --------------------------
CUST_ID                                NOT NULL NUMBER
CUST_YEAR_OF_BIRTH                     NOT NULL NUMBER(4)
CUST_CREDIT_LIMIT                               NUMBER

SELECT * FROM mining_data WHERE cust_id > 104495
ORDER BY cust_year_of_birth;

CUST_ID CUST_YEAR_OF_BIRTH CUST_CREDIT_LIMIT
-------- ------------------ -----------------
104496               1947              3000
104498               1954             10000
104500               1962             15000
104499               1970              3000
104497               1976              3000

BEGIN
dbms_data_mining_transform.CREATE_NORM_LIN(
norm_table_name            => 'normx_tbl');
dbms_data_mining_transform.INSERT_NORM_LIN_MINMAX(
norm_table_name      => 'normx_tbl',
data_table_name      => 'mining_data',
exclude_list        => dbms_data_mining_transform.COLUMN_LIST( 'cust_id'),
round_num   => 3);
END;
/

SELECT col, shift, scale FROM normx_tbl;

COL                               SHIFT    SCALE
------------------------------ -------- --------
CUST_YEAR_OF_BIRTH                 1910       77
CUST_CREDIT_LIMIT                  1500    13500

BEGIN
DBMS_DATA_MINING_TRANSFORM.XFORM_NORM_LIN (
norm_table_name       => 'normx_tbl',
data_table_name       => 'mining_data',
xform_view_name       => 'norm_view');
END;
/

SELECT * FROM norm_view WHERE cust_id > 104495
ORDER BY cust_year_of_birth;

CUST_ID CUST_YEAR_OF_BIRTH CUST_CREDIT_LIMIT
-------- ------------------ -----------------
104496           .4805195          .1111111
104498           .5714286          .6296296
104500           .6753247                 1
104499           .7792208          .1111111
104497           .8571429          .1111111

set long 2000
SQL> SELECT text FROM user_views WHERE view_name IN 'NORM_VIEW';

TEXT
---------------------------------------------------------------------------
SELECT "CUST_ID",("CUST_YEAR_OF_BIRTH"-1910)/77 "CUST_YEAR_OF_BIRTH",("CUST
_CREDIT_LIMIT"-1500)/13500 "CUST_CREDIT_LIMIT" FROM mining_data

XFORM_STACKプロシージャ

このプロシージャは、スタックによって指定された変換を実装するビューを作成します。スタックで指定された列およびネストした属性のみが変換されます。データ表の残りのすべての列およびネストした属性は、変更なしでビューに表示されます。

変換された列を説明するオブジェクトのリストを作成するには、DESCRIBE_STACKプロシージャを使用します。

関連項目:

「概要」

データ・マイニング属性の詳細は、Oracle Data Miningユーザーズ・ガイドを参照してください。

構文

DBMS_DATA_MINING_TRANSFORM.XFORM_STACK (
xform_list         IN     TRANSFORM_list,
data_table_name    IN     VARCHAR2,
xform_view_name    IN     VARCHAR2,
data_schema_name   IN     VARCHAR2 DEFAULT NULL,
xform_schema_name  IN     VARCHAR2 DEFAULT NULL);

パラメータ

表46-50 XFORM_STACKプロシージャのパラメータ

パラメータ

説明

xform_list

変換リスト。TRANSFORM_LISTオブジェクト・タイプの詳細は、表46-1を参照してください。

data_table_name

変換対象のデータが保存される表の名前。

xform_view_name

作成するビューの名前。このビューによって、xform_listの変換がdata_table_nameに適用されます。

data_schema_name

data_table_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

xform_schema_name

xform_view_nameのスキーマ。スキーマが指定されない場合は、現行のスキーマが使用されます。

使用上の注意

「使用上の注意」を参照してください。特に次の項が重要です。

- 「変換リストについて」

- 「スタックについて」

- 「ネストしたデータの変換」

例

この例では、変換リストをdmuser.cust_infoビューに適用し、データの変換方法を表示します。cust_infoのCREATE文は、「DESCRIBE_STACKプロシージャ」に記載されています。

BEGIN
dbms_data_mining_transform.CREATE_BIN_NUM ('birth_yr_bins');
dbms_data_mining_transform.INSERT_BIN_NUM_QTILE (
bin_table_name   => 'birth_yr_bins',
data_table_name  =>  'cust_info',
bin_num          =>   6,
exclude_list     =>  dbms_data_mining_transform.column_list(
'cust_id','country_id'));
END;
/
SELECT * FROM birth_yr_bins;

COL                  ATT      VAL BIN
-------------------- ----- ------ ----------
CUST_YEAR_OF_BIRTH           1922
CUST_YEAR_OF_BIRTH           1951 1
CUST_YEAR_OF_BIRTH           1959 2
CUST_YEAR_OF_BIRTH           1966 3
CUST_YEAR_OF_BIRTH           1973 4
CUST_YEAR_OF_BIRTH           1979 5
CUST_YEAR_OF_BIRTH           1986 6

DECLARE
cust_stack   dbms_data_mining_transform.TRANSFORM_LIST;
BEGIN
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'country_id', NULL, 'country_id/10', 'country_id*10');
dbms_data_mining_transform.STACK_BIN_NUM ('birth_yr_bins',
cust_stack);
dbms_data_mining_transform.SET_TRANSFORM (cust_stack,
'custprods', 'Mouse Pad', 'value*100', 'value/100');
dbms_data_mining_transform.XFORM_STACK(
xform_list        => cust_stack,
data_table_name   => 'cust_info',
xform_view_name   =>  'cust_xform_view');
END;
/

-- Two rows of data without transformations
SELECT * from cust_info WHERE cust_id BETWEEN 100010 AND 100011;

CUST_ID COUNTRY_ID CUST_YEAR_OF_BIRTH CUSTPRODS(ATTRIBUTE_NAME, VALUE)
------- ---------- ------------------ -----------------------------------------
100010      52790               1975 DM_NESTED_NUMERICALS(
DM_NESTED_NUMERICAL(
'18" Flat Panel Graphics Monitor', 1),
DM_NESTED_NUMERICAL(
'SIMM- 16MB PCMCIAII card', 1))
100011      52775               1972 DM_NESTED_NUMERICALS(
DM_NESTED_NUMERICAL(
'External 8X CD-ROM', 1),
DM_NESTED_NUMERICAL(
'Mouse Pad', 1),
DM_NESTED_NUMERICAL(
'SIMM- 16MB PCMCIAII card', 1),
DM_NESTED_NUMERICAL(
'Keyboard Wrist Rest', 1),
DM_NESTED_NUMERICAL(
'18" Flat Panel Graphics Monitor', 1),
DM_NESTED_NUMERICAL(
'O/S Documentation Set - English', 1))

-- Same two rows of data with transformations
SELECT * FROM cust_xform_view WHERE cust_id BETWEEN 100010 AND 100011;

CUST_ID  COUNTRY_ID  C  CUSTPRODS(ATTRIBUTE_NAME, VALUE)
-------  ----------  -  --------------------------------------------------------
100010       5279   5  DM_NESTED_NUMERICALS(
DM_NESTED_NUMERICAL(
'18" Flat Panel Graphics Monitor', 1),
DM_NESTED_NUMERICAL(
'SIMM- 16MB PCMCIAII card', 1))
100011     5277.5   4  DM_NESTED_NUMERICALS(
DM_NESTED_NUMERICAL(
'External 8X CD-ROM', 1),
DM_NESTED_NUMERICAL(
'Mouse Pad', 100),
DM_NESTED_NUMERICAL(
'SIMM- 16MB PCMCIAII card', 1),
DM_NESTED_NUMERICAL(
'Keyboard Wrist Rest', 1),
DM_NESTED_NUMERICAL(
'18" Flat Panel Graphics Monitor', 1),
DM_NESTED_NUMERICAL(
'O/S Documentation Set - English', 1))

47 DBMS_DATAPUMP

DBMS_DATAPUMPパッケージは、データおよびメタデータの両方を含むデータベースの一部または全体をデータベース間で移動するために使用します。

関連項目:
DBMS_DATAPUMP APIの背後にある概念とその機能、およびデータ・ポンプ・エクスポート・ユーティリティとインポート・ユーティリティに実装する方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

この章では、次の項目について説明します。

- DBMS_DATAPUMPの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ構造

- データ構造: オブジェクト・タイプ

- DBMS_DATAPUMPサブプログラムの要約

DBMS_DATAPUMPの使用方法

この項では、DBMS_DATAPUMPパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

概要

DBMS_DATAPUMPによって提供されるサポートおよび機能は次のとおりです。

- ソース・データベースとターゲット・データベースで、異なるハードウェア、オペレーティング・システム、キャラクタ・セット、タイムゾーンおよびバージョンを利用できます。

- Oracle Database 11g以降のデータベース内に存在するすべてのオブジェクト・タイプとデータ・タイプがサポートされます。

- 中間ファイルを使用しなくても、データおよびメタデータをデータベース間で転送できます。

- データベースのサブセットを、オブジェクト・タイプおよびオブジェクト名に基づいて移動できます。

- スキーマ名、データファイル名、表領域名およびデータを、インポート時に変換できます。

- 元のジョブからデータやメタデータを複製または省略しないで、以前に中断したエクスポート・ジョブおよびインポート・ジョブを再開できます。

- エクスポート・ジョブまたはインポート・ジョブに適用されたリソースを変更できます。

- オラクル社独自の書式のデータをアンロードおよびロードできます。

セキュリティ・モデル

DBMS_DATAPUMPパッケージのセキュリティは、ロールを使用して実装されます。

ロール

DATAPUMP_EXP_FULL_DATABASEロールおよびDATAPUMP_IMP_FULL_DATABASEロールを使用すると、権限のあるユーザーがこのAPIをフルに利用できます。データ・ポンプAPIはこれらのロールを使用して、権限のあるアプリケーション・ロールを、ジョブを構成する各プロセスに割り当てるべきかどうかを決定します。

DATAPUMP_EXP_FULL_DATABASE

DATAPUMP_EXP_FULL_DATABASEロールは、エクスポート操作のみに影響を与えます。これらの操作を行うユーザーは、次のことを実行できます。

- 使用するスキーマの範囲外の操作の実行

- 他のユーザーによって開始されたジョブの監視

- 権限のないユーザーが参照できないオブジェクト(TABLESPACE定義など)のエクスポート

SYSスキーマにDATAPUMP_EXP_FULL_DATABASEロールは割り当てられていませんが、データ・ポンプによって実行されDATAPUMP_EXP_FULL_DATABASEロールを必要とするすべてのセキュリティ・チェックで、SYSスキーマへのアクセス権限も付与されます。

DATAPUMP_IMP_FULL_DATABASE

DATAPUMP_IMP_FULL_DATABASEは、インポート操作およびSQL_FILE操作のみに影響を与えます。これらの操作を行うユーザーは、次のことを実行できます。

- 使用するスキーマの範囲外の操作の実行

- 他のユーザーによって開始されたジョブの監視

- 権限のないユーザーが作成できないオブジェクト(DIRECTORY定義など)のインポート

SYSスキーマにDATAPUMP_IMP_FULL_DATABASEロールは割り当てられていませんが、データ・ポンプによって実行されDATAPUMP_IMP_FULL_DATABASEロールを必要とするすべてのセキュリティ・チェックで、SYSスキーマへのアクセス権限も付与されます。

定数

いくつかのパブリック定数が、DBMS_DATAPUMP.GET_STATUSプロシージャで使用するために定義されています。これらの定数はすべて、DBMS_DATAPUMPパッケージの一部として定義されます。これらの定数を参照するには、DBMS_DATAPUMP.という接頭辞を付け、続けて次に示す記号を付ける必要があります。

マスク・ビット定義

次のマスク・ビット定義では、データの戻り値をDBMS_DATAPUMP.GET_STATUSプロシージャで制御します。

- KU$_STATUS_WIP CONSTANT BINARY_INTEGER := 1;

- KU$_STATUS_JOB_DESC CONSTANT BINARY_INTEGER := 2;

- KU$_STATUS_JOB_STATUS CONSTANT BINARY_INTEGER := 4;

- KU$_STATUS_JOB_ERROR CONSTANT BINARY_INTEGER := 8;

ダンプ・ファイル・タイプ定義

次の定義では、DBMS_DATAPUMP.GET_STATUSプロシージャで戻されるダンプ・ファイルのタイプを指定します。

- KU$_DUMPFILE_TYPE_DISK CONSTANT BINARY_INTEGER := 0;

- KU$_DUMPFILE_TYPE_TEMPLATE CONSTANT BINARY_INTEGER := 3;

データ構造

DBMS_DATAPUMPパッケージは、OBJECTタイプを定義します。この項で説明するタイプは、SYSスキーマ内で定義され、GET_STATUSファンクションで使用されます。これらのタイプの定義方法および使用方法は、一般的な方法と異なる場合があります。この項は注意して読んでください。

GET_STATUSプロシージャで使用するために定義されたタイプのコレクションは、バージョンに固有であり、各タイプの名前にバージョン情報が含まれています。これらのタイプはいったん導入されると、Oracle Databaseの今後のバージョンでも常に提供、サポートされ、変更はありません。ただし、Oracle Databaseの今後のバージョンでこれらのタイプの新しいバージョンが作成され、新規情報や異なる情報が提供される可能性があります。この新バージョンでは、タイプ名に新しいバージョン情報が組み込まれます。

たとえば、Oracle Database 12cリリース1(12.1)にはsys.ku$_Status1210タイプがありますが、Oracle Databaseの次のリリースではsys.ku$_Status1310タイプが定義される可能性があります。どちらのタイプもGET_STATUSプロシージャで使用できます。

GET_STATUSプロシージャで使用されるそれぞれのタイプには、パブリック・シノニムが定義されています。これによってタイプが使いやすくなるうえ、タイプが常駐する実際のタイプ名やスキーマに行われる変更を気にする必要がありません。オラクル社では、可能なかぎりパブリック・シノニムを使用することをお薦めします。

それぞれのタイプには、バージョン固有のシノニムと汎用的なシノニムがあります。たとえば、sys.ku$_Status1210タイプには、バージョン固有のシノニムku$_Status1210が定義されています。

汎用的なシノニムは、常に最新バージョンのタイプを示します。たとえば、Oracle Database 12cリリース1(12.1)では、汎用シノニムku$_Statusはku$_Status1210として定義されます。しかし今後のリリースでは、sys.ku$Status1310に対するシノニムがku$_Status1310となる可能性があります。この場合、汎用シノニムku$_Statusは常に最新の定義を示すため、ku$_Status1210ではなくku$_Status1310を示すことになります。

バージョン固有のシノニムと汎用シノニムのどちらを使用するかにより、作業内容が大幅に異なります。バージョン固有の名前を使用すると、これらのタイプは引き続き存在しサポートされるため、Oracle Databaseの今後のリリースに変更があってもコードが保護されます。ただし、新しい情報にアクセスするには、コードを変更し、各タイプに新しいシノニム名を使用する必要があります。汎用名を使用すると、常にタイプの最新の定義が必要になり、Oracle Databaseのリリースに変更があっても対処できるように備えておく必要があります。

現在使用しているOracle Databaseのバージョンが変更されると、汎用シノニム名を使用してタイプにアクセスするすべてのCコードを再コンパイルする必要があります。

注意:
PL/SQL以外の言語では、タイプの定義がバージョン固有の定義に適合していることを確認する必要があります。

関連項目:
タイプの使用方法の詳細は、「GET_STATUSプロシージャ」を参照してください。

データ構造: オブジェクト・タイプ

DBMS_DATAPUMPパッケージは、次の種類のOBJECTタイプを定義します。

- ワーカー・ステータス・タイプ

- ログ・エントリ・タイプおよびエラー・タイプ

- ジョブ・ステータス・タイプ

- ジョブ記述タイプ

- ステータス・タイプ

ワーカー・ステータス・タイプ

ワーカー・ステータス・タイプは、ジョブ内の個々のワーカー・プロセスで行っている内容について示します。処理中のオブジェクトのスキーマ、オブジェクト名およびオブジェクト・タイプが表示されます。ユーザー・データを処理するワーカーの場合は、パーティション化された表のパーティション名(存在する場合)、パーティション内で処理されるバイト数およびパーティション内で処理される行数も表示されます。メタデータを処理するワーカーの場合は、処理された最後のオブジェクトのステータスが表示されます。アイドル・スレッドのステータスは表示されません。

percent_doneは、処理中の現行のデータ項目について完了した割合を示します。メタデータ・オブジェクトの場合は更新されません。

ワーカー・ステータス・タイプは次のように定義します。

CREATE TYPE sys.ku$_WorkerStatus1010 AS OBJECT
(
worker_number     NUMBER,       -- Worker process identifier
process_name      VARCHAR2(30), -- Worker process name
state             VARCHAR2(30), -- Worker process state
schema            VARCHAR2(30), -- Schema name
name              VARCHAR2(4000),-- Object name
object_type       VARCHAR2(200),-- Object type
partition         VARCHAR2(30), -- Partition name
completed_objects NUMBER,       -- Completed number of objects
total_objects     NUMBER,       -- Total number of objects
completed_rows    NUMBER,       -- Number of rows completed
completed_bytes   NUMBER,       -- Number of bytes completed
percent_done      NUMBER        -- Percent done current object
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatus1010
FOR sys.ku$_WorkerStatus1010;

CREATE TYPE sys.ku$_WorkerStatus1020 AS OBJECT
(
worker_number     NUMBER,       -- Worker process identifier
process_name      VARCHAR2(30), -- Worker process name
state             VARCHAR2(30), -- Worker process state
schema            VARCHAR2(30), -- Schema name
name              VARCHAR2(4000),-- Object name
object_type       VARCHAR2(200),-- Object type
partition         VARCHAR2(30), -- Partition name
completed_objects NUMBER,       -- Completed number of objects
total_objects     NUMBER,       -- Total number of objects
completed_rows    NUMBER,       -- Number of rows completed
completed_bytes   NUMBER,       -- Number of bytes completed
percent_done      NUMBER,       -- Percent done current object
degree            NUMBER        -- Degree of parallelism
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatus1020
FOR sys.ku$_WorkerStatus1020;

CREATE TYPE sys.ku$_WorkerStatus1120 AS OBJECT
(
worker_number     NUMBER,       -- Worker process identifier
process_name      VARCHAR2(30), -- Worker process name
state             VARCHAR2(30), -- Worker process state
schema            VARCHAR2(30), -- Schema name
name              VARCHAR2(4000),-- Object name
object_type       VARCHAR2(200),-- Object type
partition         VARCHAR2(30), -- Partition name
completed_objects NUMBER,       -- Completed number of objects
total_objects     NUMBER,       -- Total number of objects
completed_rows    NUMBER,       -- Number of rows completed
completed_bytes   NUMBER,       -- Number of bytes completed
percent_done      NUMBER,       -- Percent done current object
degree            NUMBER,       -- Degree of parallelism
instance_id       NUMBER        -- Instance ID where running
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatus1120
FOR sys.ku$_WorkerStatus1120;

CREATE TYPE sys.ku$_WorkerStatus1210 AS OBJECT
(
worker_number     NUMBER,       -- Worker process identifier
process_name      VARCHAR2(30), -- Worker process name
state             VARCHAR2(30), -- Worker process state
schema            VARCHAR2(30), -- Schema name
name              VARCHAR2(4000),-- Object name
object_type       VARCHAR2(200),-- Object type
partition         VARCHAR2(30), -- Partition name
completed_objects NUMBER,       -- Completed number of objects
total_objects     NUMBER,       -- Total number of objects
completed_rows    NUMBER,       -- Number of rows completed
completed_bytes   NUMBER,       -- Number of bytes completed
percent_done      NUMBER,       -- Percent done current object
degree            NUMBER,       -- Degree of parallelism
instance_id       NUMBER,       -- Instance ID where running
instance_name     VARCHAR2(60), -- Instance Name where running
host_name         VARCHAR2(64)  -- Host name where running
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatus1210
FOR sys.ku$_WorkerStatus1210;

CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatus FOR ku$_WorkerStatus1210;

CREATE TYPE sys.ku$_WorkerStatusList1010 AS TABLE OF sys.ku$_WorkerStatus1010
CREATE TYPE sys.ku$_WorkerStatusList1020 AS TABLE OF sys.ku$_WorkerStatus1020
CREATE TYPE sys.ku$_WorkerStatusList1120 AS TABLE OF sys.ku$_WorkerStatus1120
CREATE TYPE sys.ku$_WorkerStatusList1210 AS TABLE OF sys.ku$_WorkerStatus1210

CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatusList1010
FOR sys.ku$_WorkerStatusList1010;
CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatusList1020
FOR sys.ku$_WorkerStatusList1020;
CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatusList1120
FOR sys.ku$_WorkerStatusList1120;
CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatusList1210
FOR sys.ku$_WorkerStatusList1210;

CREATE OR REPLACE PUBLIC SYNONYM ku$_WorkerStatusList
FOR ku$_WorkerStatusList1210;

ログ・エントリ・タイプおよびエラー・タイプ

ログ・エントリ・タイプとエラー・タイプでは、連結されたクライアントとログ・ストリームに対して、情報テキストとエラー・テキストを提供します。ku$LogLine.errorNumberタイプは、情報メッセージについてはNULLが設定されますが、エラー・メッセージに対しては値が指定されます。個々のログ・エントリには、複数行のテキスト・メッセージを含めることができます。

ログ・エントリ・タイプとエラー・タイプは、次のように定義します。

CREATE TYPE sys.ku$_LogLine1010 AS OBJECT (
logLineNumber   NUMBER,
errorNumber     NUMBER,
LogText         VARCHAR2(2000))

CREATE OR REPLACE PUBLIC SYNONYM ku$_LogLine1010 FOR sys.ku$_LogLine1010;
CREATE OR REPLACE PUBLIC SYNONYM ku$_LogLine1020 FOR sys.ku$_LogLine1010;
CREATE OR REPLACE PUBLIC SYNONYM ku$_LogLine FOR ku$_LogLine1010;
CREATE TYPE sys.ku$_LogEntry1010 AS TABLE OF sys.ku$_LogLine1010

CREATE OR REPLACE PUBLIC SYNONYM ku$_LogEntry1010 FOR sys.ku$_LogEntry1010;
CREATE OR REPLACE PUBLIC SYNONYM ku$_LogEntry1020 FOR sys.ku$_LogEntry1010;
CREATE OR REPLACE PUBLIC SYNONYM ku$_LogEntry FOR ku$_LogEntry1010;

ジョブ・ステータス・タイプ

ジョブ・ステータス・タイプは、ジョブに関するステータスを戻します。通常、ステータスは実行中のジョブに関するものですが、クライアントが連結したときには、停止したジョブに関するステータスが示される場合もあります。通常は、ステータスは、クライアントが対話モードからステータスを明示的に要求した場合は連結時に示され、クライアントが定期的にステータスを要求している場合はN秒ごとに示されます。

ジョブ・ステータス・タイプは次のように定義します(percent_doneはデータのみに適用されます)。

CREATE TYPE sys.ku$_JobStatus1010 IS OBJECT
(
job_name        VARCHAR2(30),           -- Name of the job
operation       VARCHAR2(30),           -- Current operation
job_mode        VARCHAR2(30),           -- Current mode
bytes_processed NUMBER,                 -- Bytes so far
total_bytes     NUMBER,                 -- Total bytes for job
percent_done    NUMBER,                 -- Percent done
degree          NUMBER,                 -- Of job parallelism
error_count     NUMBER,                 -- #errors so far
state           VARCHAR2(30),           -- Current job state
phase           NUMBER,                 -- Job phase
restart_count   NUMBER,                 -- #Job restarts
worker_status_list ku$_WorkerStatusList1010, -- For (non-idle)
-- job worker processes
files           ku$_DumpFileSet1010     -- Dump file info
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobStatus1010 FOR sys.ku$_JobStatus1010;

CREATE TYPE sys.ku$_JobStatus1020 IS OBJECT
(
job_name        VARCHAR2(30),           -- Name of the job
operation       VARCHAR2(30),           -- Current operation
job_mode        VARCHAR2(30),           -- Current mode
bytes_processed NUMBER,                 -- Bytes so far
total_bytes     NUMBER,                 -- Total bytes for job
percent_done    NUMBER,                 -- Percent done
degree          NUMBER,                 -- Of job parallelism
error_count     NUMBER,                 -- #errors so far
state           VARCHAR2(30),           -- Current job state
phase           NUMBER,                 -- Job phase
restart_count   NUMBER,                 -- #Job restarts
worker_status_list ku$_WorkerStatusList1020, -- For (non-idle)
-- job worker processes
files           ku$_DumpFileSet1010     -- Dump file info
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobStatus1020 FOR sys.ku$_JobStatus1020;

CREATE TYPE sys.ku$_JobStatus1120 IS OBJECT
(
job_name        VARCHAR2(30),           -- Name of the job
operation       VARCHAR2(30),           -- Current operation
job_mode        VARCHAR2(30),           -- Current mode
bytes_processed NUMBER,                 -- Bytes so far
total_bytes     NUMBER,                 -- Total bytes for job
percent_done    NUMBER,                 -- Percent done
degree          NUMBER,                 -- Of job parallelism
error_count     NUMBER,                 -- #errors so far
state           VARCHAR2(30),           -- Current job state
phase           NUMBER,                 -- Job phase
restart_count   NUMBER,                 -- #Job restarts
worker_status_list ku$_WorkerStatusList1120, -- For (non-idle)
-- job worker processes
files           ku$_DumpFileSet1010     -- Dump file info
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobStatus1120 FOR sys.ku$_JobStatus1120;

CREATE TYPE sys.ku$_JobStatus1210 IS OBJECT
(
job_name        VARCHAR2(30),           -- Name of the job
operation       VARCHAR2(30),           -- Current operation
job_mode        VARCHAR2(30),           -- Current mode
bytes_processed NUMBER,                 -- Bytes so far
total_bytes     NUMBER,                 -- Total bytes for job
percent_done    NUMBER,                 -- Percent done
degree          NUMBER,                 -- Of job parallelism
error_count     NUMBER,                 -- #errors so far
state           VARCHAR2(30),           -- Current job state
phase           NUMBER,                 -- Job phase
restart_count   NUMBER,                 -- #Job restarts
worker_status_list ku$_WorkerStatusList1210, -- For (non-idle)
-- job worker processes
files           ku$_DumpFileSet1010     -- Dump file info
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobStatus1210 FOR sys.ku$_JobStatus1210;

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobStatus FOR ku$_JobStatus1210;

ジョブ記述タイプ

ジョブ記述タイプは、パラメータ設定やダンプ・ファイル・セットのメンバーなど、ジョブに関するすべての環境情報を保管します。いくつかの下位タイプも指定する必要があります。

ジョブ記述タイプは次のように定義します。

CREATE TYPE sys.ku$_JobDesc1010 IS OBJECT
(
job_name        VARCHAR2(30),           -- The job name
guid            RAW(16),                -- The job GUID
operation       VARCHAR2(30),           -- Current operation
job_mode        VARCHAR2(30),           -- Current mode
remote_link     VARCHAR2(4000),         -- DB link, if any
owner           VARCHAR2(30),           -- Job owner
instance        VARCHAR2(16),           -- The instance name
db_version      VARCHAR2(30),           -- Version of objects
creator_privs   VARCHAR2(30),           -- Privs of job
start_time      DATE,                   -- This job start time
max_degree      NUMBER,                 -- Max. parallelism
log_file        VARCHAR2(4000),         -- Log file name
sql_file        VARCHAR2(4000),         -- SQL file name
params          ku$_ParamValues1010     -- Parameter list
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobDesc1010 FOR sys.ku$_JobDesc1010;

CREATE TYPE sys.ku$_JobDesc1020 IS OBJECT
(
job_name        VARCHAR2(30),           -- The job name
guid            RAW(16),                -- The job GUID
operation       VARCHAR2(30),           -- Current operation
job_mode        VARCHAR2(30),           -- Current mode
remote_link     VARCHAR2(4000),         -- DB link, if any
owner           VARCHAR2(30),           -- Job owner
platform        VARCHAR2(101),          -- Current job platform
exp_platform    VARCHAR2(101),          -- Export platform
global_name     VARCHAR2(4000),         -- Current global name
exp_global_name VARCHAR2(4000),         -- Export global name
instance        VARCHAR2(16),           -- The instance name
db_version      VARCHAR2(30),           -- Version of objects
exp_db_version  VARCHAR2(30),           -- Export version
scn             NUMBER,                 -- Job SCN
creator_privs   VARCHAR2(30),           -- Privs of job
start_time      DATE,                   -- This job start time
exp_start_time  DATE,                   -- Export start time
term_reason     NUMBER,                 -- Job termination code
max_degree      NUMBER,                 -- Max. parallelism
log_file        VARCHAR2(4000),         -- Log file name
sql_file        VARCHAR2(4000),         -- SQL file name
params          ku$_ParamValues1010     -- Parameter list
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobDesc1020 FOR sys.ku$_JobDesc1020;

CREATE TYPE sys.ku$_JobDesc1210 IS OBJECT
(
job_name        VARCHAR2(30),           -- The job name
guid            RAW(16),                -- The job GUID
operation       VARCHAR2(30),           -- Current operation
job_mode        VARCHAR2(30),           -- Current mode
remote_link     VARCHAR2(4000),         -- DB link, if any
owner           VARCHAR2(30),           -- Job owner
platform        VARCHAR2(101),          -- Current job platform
exp_platform    VARCHAR2(101),          -- Export platform
global_name     VARCHAR2(4000),         -- Current global name
exp_global_name VARCHAR2(4000),         -- Export global name
instance        VARCHAR2(16),           -- The instance name
db_version      VARCHAR2(30),           -- Cur. server software version
exp_db_version  VARCHAR2(30),           -- Export svr. software version
job_version     VARCHAR2(30),           -- Negotiated data version
scn             NUMBER,                 -- Job SCN
creator_privs   VARCHAR2(30),           -- Privs of job
start_time      DATE,                   -- This job start time
exp_start_time  DATE,                   -- Export start time
term_reason     NUMBER,                 -- Job termination code
max_degree      NUMBER,                 -- Max. parallelism
timezone        VARCHAR2(64),           -- Cur. server timezone
exp_timezone    VARCHAR2(64),           -- Exp. server timezone
tstz_version    NUMBER,                 -- Cur. server timezone version
exp_tstz_version NUMBER,                -- Exp. server timezone
endianness      VARCHAR2(16),           -- Cur. platform's endianness
exp_endianness  VARCHAR2(16),           -- Exp. platform's endianness
-- endianness is 'BIG' or 'LITTLE'
charset         VARCHAR2(28),           -- Cur. server charset
exp_charset     VARCHAR2(28),           -- Exp. server charset
ncharset        VARCHAR2(28),           -- Cur. server national charset
exp_ncharset    VARCHAR2(28),           -- Exp. server national charset
log_file        VARCHAR2(4000),         -- Log file name
sql_file        VARCHAR2(4000),         -- SQL file name
params          ku$_ParamValues1010     -- Parameter list
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobDesc1210 FOR sys.ku$_JobDesc1210;

CREATE OR REPLACE PUBLIC SYNONYM ku$_JobDesc FOR ku$_JobDesc1210;

ステータス・タイプ

ステータス・タイプは、定義済の以前のタイプをいくつか集めたもので、GET_STATUSコールに対する戻り値です。マスク属性は、コール元に戻される情報のタイプを示します。クライアントのシャドウ・プロセスによって、ステータス・キューから取得される情報、あるいはマスター表から直接作成されます。

エラーの場合は、ku$_LogEntryが戻され、ログ行が適切な出力順に並べられています。つまり、元のku$_LogEntryオブジェクトが、最も外側のコンテキストから最も内側のコンテキストの順に並べられています。

ステータス・タイプは次のように定義します。

CREATE TYPE sys.ku$_Status1010 IS OBJECT
(
mask            NUMBER,           -- Status types present
wip             ku$_LogEntry1010, -- Work in progress
job_description ku$_JobDesc1010,  -- Complete job description
job_status      ku$_JobStatus1010,-- Detailed job status
error           ku$_LogEntry1010  -- Multi-level context errors
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_Status1010 FOR sys.ku$_Status1010;

CREATE TYPE sys.ku$_Status1020 IS OBJECT
(
mask            NUMBER,           -- Status types present
wip             ku$_LogEntry1010, -- Work in progress
job_description ku$_JobDesc1020,  -- Complete job description
job_status      ku$_JobStatus1020,-- Detailed job status
error           ku$_LogEntry1010  -- Multi-level context errors
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_Status1020 FOR sys.ku$_Status1020;

CREATE TYPE sys.ku$_Status1120 IS OBJECT
(
mask            NUMBER,           -- Status types present
wip             ku$_LogEntry1010, -- Work in progress
job_description ku$_JobDesc1020,  -- Complete job description
job_status      ku$_JobStatus1120,-- Detailed job status
error           ku$_LogEntry1010  -- Multi-level context errors
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_Status1120 FOR sys.ku$_Status1120;

CREATE TYPE sys.ku$_Status1210 IS OBJECT
(
mask            NUMBER,           -- Status types present
wip             ku$_LogEntry1010, -- Work in progress
job_description ku$_JobDesc1210,  -- Complete job description
job_status      ku$_JobStatus1210,-- Detailed job status
error           ku$_LogEntry1010  -- Multi-level context errors
)

CREATE OR REPLACE PUBLIC SYNONYM ku$_Status1210 FOR sys.ku$_Status1210;

CREATE OR REPLACE PUBLIC SYNONYM ku$_Status FOR ku$_Status1210;

DBMS_DATAPUMPサブプログラムの要約

表47-1 DBMS_DATAPUMPパッケージのサブプログラム

サブプログラム

説明

ADD_FILEプロシージャ

エクスポート、インポートまたはSQL_FILEの各操作に使用するダンプ・ファイル・セットにダンプ・ファイルを追加します。このプロシージャに提供されているFILETYPEパラメータを使用して、ダンプ・ファイル以外のタイプのファイルも追加できます。

ATTACHファンクション

定義中、実行中、アイドルまたは停止などの状態にあるデータ・ポンプ・ジョブにアクセスするために使用します。

DATA_FILTERプロシージャ

取得する行に制限を指定します。

DATA_REMAPプロシージャ

データベースからエクスポートされるとき、またはデータベースにインポートされるときにその列データに適用される変換を指定します。

DETACHプロシージャ

ユーザーがこれ以上ハンドルを使用しないことを指定します。

GET_DUMPFILE_INFOプロシージャ

指定したダンプ・ファイルの情報を取り出します。

GET_STATUSプロシージャ

ジョブのステータスを監視するか、ジョブの完了あるいはAPIエラーの詳細を待機します。

LOG_ENTRYプロシージャ

ログ・ファイルにメッセージを挿入します。

METADATA_FILTERプロシージャ

ジョブに含まれる項目を制限するためのフィルタを提供します。

METADATA_REMAPプロシージャ

指定したジョブ内でオブジェクトが処理されるときに、オブジェクトに適用される再マッピングを指定します。

METADATA_TRANSFORMプロシージャ

指定されたジョブ内でオブジェクトが処理されるときに、オブジェクトに適用される変換を指定します。

OPENファンクション

データ・ポンプAPIを使用する新規ジョブを宣言します。戻されるハンドルは、その他すべてのプロシージャをコールするパラメータとして使用されます(ATTACHファンクションを除く)。

SET_PARALLELプロシージャ

ジョブ内の並列度を調整します。

SET_PARAMETERプロシージャ

ジョブ処理オプションを指定します。

START_JOBプロシージャ

ジョブの実行を開始または再開します。

STOP_JOBプロシージャ

ジョブを終了しますが、オプションでジョブの状態を保存します。

WAIT_FOR_JOBプロシージャ

正常に完了するか、またはなんらかの理由で停止するまでジョブを実行します。

ADD_FILEプロシージャ

このプロシージャは、エクスポート、インポートまたはSQL_FILEの各操作に使用されるダンプ・ファイル・セットにファイルを追加します。あるいは、SQL_FILE操作に使用されるログ・ファイルまたは出力ファイルを指定します。

構文

DBMS_DATAPUMP.ADD_FILE (
handle     IN NUMBER,
filename   IN VARCHAR2,
directory  IN VARCHAR2,
filesize   IN VARCHAR2 DEFAULT NULL,
filetype   IN NUMBER DEFAULT DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE,
reusefile  IN NUMBER DEFAULT NULL);

パラメータ

表47-2 ADD_FILEプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

filename

追加されるファイルの名前。filenameは、ディレクトリ・パス情報を持たない単純なファイル名にする必要があります。ダンプ・ファイルの場合、filenameは置換変数(%U)を含めることはでき、これは、指定されたfilenameをテンプレートとして複数のファイルが生成できることを示します。%Uは結果として得られるファイル名の中で展開され、01で始まり、2文字の固定幅で増加する整数になります。たとえばexport%Uというダンプ・ファイル名の場合は、エクスポートの実行に必要なファイル数に応じて、export01、export02、export03という具合にファイルが作成されます。%文字を含むファイル名の場合は、曖昧さを避けるために%を%%として表現する必要があります。ファイル名に含まれるすべての%に対して、その後に%またはUのいずれかを付ける必要があります。

directory

filenameを探すために使用するデータベース内のディレクトリ・オブジェクトの名前。directoryは必ず指定する必要があります。DIRECTORYコマンドライン・パラメータの詳細は、『Oracle Databaseユーティリティ』のデータ・ポンプ・エクスポートの章を参照してください。

filesize

追加されるダンプ・ファイルのサイズ。バイト数、キロバイト数(Kを後に付ける場合)、メガバイト数(Mを後に付ける場合)、ギガバイト数(Gを後に付ける場合)、テラバイト数(Tを後に付ける場合)で指定できます。エクスポート操作では、指定したバイト数のみがファイルに書き込まれます。一杯になった時点でファイルは閉じます。指定したバイト数を書き込む領域がデバイスに不足している場合、エクスポート操作は失敗しますが、また再開できます。サイズを指定しない場合、filesizeはデフォルトで無限サイズに設定されます。インポート操作およびSQL_FILE操作では、filesizeは無視されます。filesizeの最小値は、デフォルトのデータ・ポンプのブロック・サイズ(4KB)の10倍です。filesizeはダンプ・ファイルに対してのみ指定できます。

filetype

追加されるファイルのタイプ。有効な値は次のとおりで、DBMS_DATAPUMP.を前に付ける必要があります。

- KU$_FILE_TYPE_DUMP_FILE(ジョブのダンプ・ファイル)

- KU$_FILE_TYPE_LOG_FILE(ジョブのログ・ファイル)

- KU$_FILE_TYPE_SQL_FILE(SQL_FILEジョブの出力)

reusefile

0(ゼロ)を指定すると、すでにファイルが存在する場合にエラーになります。1を指定すると、既存のファイルは上書きされます。NULLを指定すると、そのファイル・タイプに対するデフォルトのアクションが適用されます(つまり、ダンプ・ファイルは上書きされません)。このパラメータでは、ダンプ・ファイルに対してNULL以外の値を指定する必要があります。reusefileパラメータは、エクスポート・ジョブに限定されています。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_ARGVAL。無効な値が入力パラメータに指定されました。

- INVALID_STATE。ジョブが再定義中であるか、ジョブがインポート・ジョブまたはSQL_FILEジョブの定義中の状態を過ぎている、あるいはジョブがLOGファイルおよびSQLファイルの定義中の状態を過ぎています。

- INVALID_OPERATION。ダンプ・ファイルがネットワーク・インポート操作またはESTIMATE_ONLYエクスポート操作に指定されています。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- データ・ポンプ・ジョブにファイルを追加します。ジョブには3種類のファイルを追加でき、ダンプ・ファイルには移動中のデータが格納され、ログ・ファイルには操作に関連するメッセージが記録され、SQLファイルにはSQL_FILE操作の出力が記録されます。ログ・ファイルおよびSQLファイルは、既存のファイルを上書きします。ダンプ・ファイルが、既存のファイルを上書きすることはありません。そのかわりに、エラーが発生します。

- インポート操作およびSQL_FILE操作では、ジョブの定義フェーズの間にすべてのダンプ・ファイルを指定する必要があります。エクスポート操作では、いつでもダンプ・ファイルを追加できます。たとえば、エクスポート中にファイル領域が少なくなっていることが判明した場合は、このAPIを使用してさらにダンプ・ファイルを追加できます。指定したダンプ・ファイルがすでにエクスポート操作用に存在し、reusefileが1に設定されていない場合は、エラーが戻されます。

- エクスポート操作では、並列度設定を、ダンプ・ファイル・セット内のダンプ・ファイルの数以下にする必要があります。十分な数のダンプ・ファイルが存在しない場合、ジョブはSET_PARALLELプロシージャを使用して指定された値まで並列度を最大化することができません。

- インポート操作でも、並列度設定は、ダンプ・ファイル・セット内のダンプ・ファイルの数以下にする必要があります。十分な数のダンプ・ファイルが存在しない場合、複数の実行スレッドが1つのダンプ・ファイルにアクセスを試みるため、パフォーマンスが最適になりません。

- ファイル名に置換変数(%U)が含まれる場合は、ADD_FILEへの1つのコールで複数のダンプ・ファイルを指定できます。エクスポート操作では、必要に応じて新規ダンプ・ファイルが作成されます。SET_PARALLELの現行値で指定されたすべてのプロセスをアクティブにするのに十分な数のダンプ・ファイルが作成されます。1つのダンプ・ファイルが一杯になると、そのダンプ・ファイルは閉じられ、そのかわりとなる新しいダンプ・ファイルが(新しく生成された名前で)作成されます。置換変数を含む複数のADD_FILEがジョブ内の複数のダンプ・ファイルに指定されている場合は、ラウンド・ロビン法でダンプ・ファイルを生成するために使用されます。たとえば、並列度が6のジョブに対してexpa%U、expb%Uおよびexpc%Uを指定した場合、作成される初期ダンプ・ファイルはexpa01、expb01、expc01、expa02、expb02、expc02のようになります。

- ダンプ・ファイル指定(expa%U、expb%Uおよびexpc%U)が指定されている場合、インポート操作またはSQL_FILE操作は、ダンプ・ファイル(expa01、expb01およびexpc01)を開こうとすると開始されます。マスター表を含むダンプ・ファイルがこのセット内に見つからない場合は、置換変数を増加させてダンプ・ファイルの検索対象が拡大され、新規ファイル名(expa02、expb02、expc02など)が検索されます。データ・ポンプAPIでは、マスター表を含むダンプ・ファイルが見つかるまで検索対象を拡大し続けます。データ・ポンプAPIは、何度繰り返してもダンプ・ファイルが存在しないか、または現行のダンプ・セットの一部ではないと判断した場合、データ・ポンプAPIは、エラーとなったダンプ・ファイル指定について置換変数の増加を停止します。マスター表が見つかった場合は、このマスター表を使用して、ダンプ・ファイル・セット内のすべてのダンプ・ファイルがいつ検出されたかを確認します。

ATTACHファンクション

このファンクションは、以前に作成されたジョブにアクセスします。

構文

DBMS_DATAPUMP.ATTACH(
job_name    IN VARCHAR2 DEFAULT NULL,
job_owner    IN VARCHAR2 DEFAULT NULL)
RETURN NUMBER;

パラメータ

表47-3 ATTACHファンクションのパラメータ

パラメータ

説明

job_name

ジョブの名前。デフォルトは、job_ownerパラメータの中で指定されたユーザーが所有するジョブ名です(このユーザーは定義中、実行中またはアイドルの状態にあるジョブを1つのみ所有すると仮定します)。

job_owner

最初にジョブを開始したユーザー。NULLの場合、値はデフォルトで現行セッションの所有者に設定されます。ジョブ所有者を自分以外に指定するには、DATAPUMP_EXP_FULL_DATABASEロール(エクスポート操作の場合)またはDATAPUMP_IMP_FULL_DATABASEロール(インポート操作およびSQL_FILE操作の場合)のいずれかが必要です。権限のあるユーザーであれば他のユーザーのジョブを監視できますが、他のユーザーのジョブを再開することはできません。

戻り値

ジョブに対する曖昧なハンドル。このハンドルを入力として使用できるプロシージャは、ADD_FILE、DATA_FILTER、DETACH、GET_STATUS、LOG_ENTRY、METADATA_FILTER、METADATA_REMAP、METADATA_TRANSFORM、SET_PARALLEL、SET_PARAMETER,START_JOB、STOP_JOBおよびWAIT_FOR_JOBです。

例外

- INVALID_ARGVAL。無効な値が入力パラメータに指定されました。

- OBJECT_NOT_FOUND。指定したジョブが存在しないか、または他のスキーマが所有するジョブを指定したが、指定を行ったユーザーにDATAPUMP_EXP_FULL_DATABASEまたはDATAPUMP_IMP_FULL_DATABASEロールがありません。

- SUCCESS_WITH_INFO。このファンクションは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- ジョブが停止状態の場合、そのジョブはアイドル状態に置かれます。ATTACHがいったん成功すると、ジョブの進捗の監視や、ジョブの制御ができます。GET_STATUSプロシージャによって戻されたKU$_STATUS_WIPメッセージおよびKU$_STATUS_JOB_ERRORメッセージのストリームは、クライアントが連結した時間の前後に開始される新しい連結ジョブに戻されます。クライアントがジョブに連結する前に処理されたステータス・メッセージおよびエラー・メッセージは繰り返されません。

- ジョブへの2回目の連結は、別のセッションから行う必要があります。

- ATTACHが失敗した場合は、その後のGET_STATUSへのコールでNULLハンドルを使用して、失敗に関する詳細情報を入手します。

DATA_FILTERプロシージャ

このプロシージャは、取得する行に制限を指定します。

構文

DBMS_DATAPUMP.DATA_FILTER (
handle      IN NUMBER,
name        IN VARCHAR2,
value       IN NUMBER,
table_name  IN VARCHAR2 DEFAULT NULL,
schema_name IN VARCHAR2 DEFAULT NULL);

DBMS_DATAPUMP.DATA_FILTER(
handle      IN NUMBER,
name        IN VARCHAR2,
value       IN VARCHAR2,
table_name  IN VARCHAR2 DEFAULT NULL,
schema_name IN VARCHAR2 DEFAULT NULL);

DBMS_DATAPUMP.DATA_FILTER(
handle      IN NUMBER,
name        IN VARCHAR2,
value       IN CLOB,
table_name  IN VARCHAR2 DEFAULT NULL,
schema_name IN VARCHAR2 DEFAULT NULL);

パラメータ

表47-4 DATA_FILTERプロシージャのパラメータ

パラメータ

説明

handle

OPENファンクションから戻されるハンドル。

name

フィルタ名。

value

フィルタ値。

table_name

データ・フィルタが適用される表の名前。表の名前を指定しない場合、フィルタはジョブ内のすべての表に適用されます。

schema_name

フィルタが適用される表を所有するスキーマの名前。スキーマの名前を指定しない場合、フィルタはジョブ内のすべてのスキーマに適用されます。スキーマ名を指定する場合は、表の名前も指定する必要があります。

例外

- INVALID_ARGVAL。このメッセージに関しては、次のような複数の理由があります。

- 不適切なフィルタ名が指定されました。

- TRANSPORTABLEモードのため、データ・フィルタがサポートされません。

- 指定した表が存在しません。

- このフィルタは、指定値schema_nameおよびtable_nameに対してすでに設定されています。

- INVALID_STATE。ジョブが定義中の状態ではないときに、ユーザーがDATA_FILTERをコールしました。

- INCONSISTENT_ARGS。valueパラメータが存在しないか、そのデータ・タイプがフィルタ名と一致しません。あるいはスキーマ名が指定されましたが、表の名前が指定されていません。

- PRIVILEGE_ERROR。スキーマ名が指定されましたが、ユーザーにはDATAPUMP_EXP_FULL_DATABASEロールまたはDATAPUMP_IMP_FULL_DATABASEロールがありませんでした。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- それぞれのデータ・フィルタは、各表につき1回ずつ(たとえば、1つの表に複数のSUBQUERYフィルタは指定できません)あるいは各ジョブにつき1回ずつのみ表示できます。同じ名前を使用する異なるフィルタが、特定の表とジョブ全体の両方に適用された場合、特定の表に指定されたフィルタ・パラメータが優先されます。
INCLUDE_ROWSフィルタの例外を除き、データ・フィルタは、ネストした表が含まれる表やドメイン索引が定義された表ではサポートされません。データ・フィルタは、トランスポータブル表領域モードで実行されるジョブではサポートされません。

表47-5に、選択可能なデータ・フィルタを示します。

表47-5 データ・フィルタ

名前

データ・タイプ

フィルタをサポートする操作

説明

INCLUDE_ROWS

NUMBER

エクスポート、インポート

0(ゼロ)以外に設定すると、このフィルタは、指定された表のユーザー・データがジョブに含まれるように指定します。デフォルトは1です。

PARTITION_EXPR

PARTITION_LIST

TEXT

エクスポート、インポート

エクスポート・ジョブでは、これらのフィルタによって、データベースからアンロードされるパーティションを指定します。インポート・ジョブでは、データベースにロードされる表パーティションを指定します。パーティション名が設定式に準拠する(PARTITION_EXPRの場合)か、またはリストに含まれる(PARTITION_LISTの場合)場合は、その名前がジョブの中に含まれます。式バージョンのフィルタのは柔軟に設定できますが、リスト・バージョンはパーティション名を完全に検証する必要があります。

パーティション名を囲む二重引用符は、パーティション名に特殊文字が含まれる場合のみ必要です。

PARTITION_EXPRは、ネットワーク・リンクを越えるジョブではサポートされません。

デフォルトでは、すべてのパーティションが処理されます。

SAMPLE

NUMBER

エクスポート、インポート

エクスポート・ジョブの場合は、移動するデータ・ブロックをサンプリングする割合を指定します。このフィルタを使用すると、大きい表のサブセットをテスト用に抽出できます。

SUBQUERY

TEXT

エクスポート、インポート

表のSELECT文の最後に追加される副問合せを指定します。副問合せ内にWHERE句を指定した場合、選択される行を制限できます。ORDER BY句を指定すると、エクスポートで行をダンプするように命令されますが、これによって、ヒープ構成表から索引構成表に移行するときのパフォーマンスが向上します。

DATA_REMAPプロシージャ

このプロシージャは、データベースからエクスポートされるとき、またはデータベースにインポートされるときにその列データに適用される変換を指定します。

構文

DBMS_DATAPUMP.DATA_REMAP(
handle          IN NUMBER,
name            IN VARCHAR2,
table_name      IN VARCHAR2,
column          IN VARCHAR2,
remap_function  IN VARCHAR2),
schema          IN VARCHAR2 DEFAULT NULL);

パラメータ

表47-6 DATA_REMAPプロシージャのパラメータ

パラメータ

説明

handle

現行ジョブのハンドル。現行のセッションは、OPENファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

name

再マップの名前。

table_name

再マップ対象の列が含まれる表。

column

再マップ対象の列の名前。

remap_function

名前の値によって意味が異なります。使用可能な名前については、表47-7を参照してください。

schema

再マップ対象の列が含まれるスキーマ。NULLの場合、指定した表が含まれるジョブに移動したすべてのスキーマに再マップが適用されます。

例外

- INVALID_ARGVAL。トランスポータブル・モード(データの変更がサポートされません)か、またはジョブにデータが含まれないように指定されています。無効な再マップ名が指定されました。

- INVALID_OPERATION。データの再マップは、エクスポート操作およびインポート操作でのみサポートされています。

- INVALID_STATE。ジョブの開始後に、DATA_REMAPプロシージャがコールされました(つまり、ジョブは定義中の状態ではありませんでした)。

- NO_SUCH_JOB。ジョブ・ハンドルが有効ではありません。

使用上の注意

- DATA_REMAPプロシージャは、エクスポート操作およびインポート操作のみでサポートされています。これを使用すると、エクスポートまたはインポートするユーザー・データを操作できます。再マップのnameによって、実行される再マップ操作が決定されます。

- エクスポート操作で、ダンプ・ファイルからクレジット・カード番号などの機密データが簡単に特定されないようにデータの再マップを定義し、残りのデータは読み取ることができるようにそのままの状態にしておく場合があります。これを実現するには、再マップによって、一意の各ソース番号を個別に生成された番号に変換する必要があります。ダンプ・ファイル・セットで一貫したマッピングとなるように、クレジット・カード番号が含まれるすべての列に対し、同じファンクションをコールする必要があります。

- インポート操作で、競合する主キーを含む既存の表にデータがマージされるときに、主キーを設定しなおすためにデータの再マップを定義する場合があります。再マップの一貫性を保つために、主キーを定義または参照するすべての列に対して、単一の再マップ・ファンクションを指定する必要があります。

注意:
コールしたファンクションでパッケージ状態の変数が使用される場合、すべての表で一貫した再マップが実行されるように、SET_PARALLELの値が1の状態でジョブを実行し、再起動操作を実行しないようにする必要があります。

表47-7に、データの再マップ・ファンクションを示します。

表47-7 データの再マップ・ファンクションの名前

名前

remap_functionの意味

意味

COLUMN_FUNCTION

文字列の形式:

[schema.]package.function

nameパラメータは、指定した列のデータを変更するためにコールするPL/SQLパッケージのファンクションを参照します。このファンクションは、再マップされた列と同じデータ・タイプを持つ単一のパラメータを使用して、再マップされた列と同じデータ・タイプを持つ値を戻します。スキーマのデフォルトは、エクスポートを実行するユーザーのスキーマであることに注意してください。

DETACHプロシージャ

このプロシージャは、ユーザーがこれ以上ハンドルを使用しないことを指定します。

構文

DBMS_DATAPUMP.DETACH(
handle  IN NUMBER);

パラメータ

表47-8 DETACHプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- このコールを使用して、ハンドルをこれ以上使用しないことを指定します。完了したジョブに関連付けられたリソースは、すべてのユーザーがそのジョブから連結を解除するまで再要求できません。ユーザーのセッションが終了あるいは中断すると、ハンドルからの暗黙的な連結解除が実行されます。ハンドルからの暗黙的な連結解除は、ハンドルによって参照されたジョブに適用されたSTOP_JOBに関連するタイムアウトの終了時にも実行されます。インスタンスが再開すると、以前に割り当てられたすべてのDBMS_DATAPUMPハンドルが解放されます。

GET_DUMPFILE_INFOプロシージャ

このプロシージャは、指定したダンプ・ファイルの情報を取り出します。

構文

DBMS_DATAPUMP.GET_DUMPFILE_INFO(
filename    IN VARCHAR2,
directory   IN VARCHAR2,
info_table  OUT ku$_dumpfile_info,
filetype    OUT NUMBER);

パラメータ

表47-9 GET_DUMPFILE_INFOプロシージャのパラメータ

パラメータ

説明

filename

ディレクトリ・パス情報を持たない単純なファイル名。

directory

ファイルの場所を指定するディレクトリ・オブジェクト。

info_table

ダンプ・ファイルの情報を格納するためのPL/SQL表。

filetype

ファイルのタイプ(データ・ポンプ・ダンプ・ファイル、元のエクスポート・ダンプ・ファイル、外部表のダンプ・ファイルまたは不明)。

例外

GET_DUMPFILE_INFOプロシージャは、データ・ポンプ・ジョブのコンテキストの外部で動作するユーティリティ・ルーチンです。このプロシージャでは、データ・ポンプ・ジョブに関連付けられているプロシージャとは異なる方法で例外が処理されます。完全な例外スタックを直接使用できますが、この場合、GET_STATUSプロシージャをコールして詳細情報を取り出す必要はありません。このプロシージャの例外は、次のとおりです。

- NO_DUMPFILE_INFO。指定したダンプ・ファイル情報を取り出せません。

使用上の注意

GET_DUMPFILE_INFOプロシージャを使用すると、特定のファイルの情報を要求できます。ファイルがいずれのタイプのダンプ・ファイルとしても認識されない場合は、filetypeに0(ゼロ)が戻され、ダンプ・ファイルのinfo_tableは空になります。

filetype値が1の場合は、データ・ポンプ・ダンプ・ファイルを示します。filetype値が2の場合は、元のエクスポート・ダンプ・ファイルを示します。filetype値が3の場合は、外部表のダンプ・ファイルを示します。いずれの場合も、ダンプ・ファイルのinfo_tableには、ダンプ・ファイル・ヘッダーから取り出された情報が格納されます。この表の行は、項目コードと値のペアで構成されていて、項目コードは情報のタイプを示し、値列は、実際のデータ(場合によっては文字列に変換される)を含むVARCHAR2になります。表を定義する方法は、次のとおりです。

CREATE TYPE sys.ku$_dumpfile_item IS OBJECT (
item_code       NUMBER,           -- Identifies header item
value           VARCHAR2(2048)    -- Text string value)/

GRANT EXECUTE ON sys.ku$_dumpfile_item TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_dumpfile_item FOR sys.ku$_dumpfile_item;

CREATE TYPE sys.ku$_dumpfile_info AS TABLE OF sys.ku$_dumpfile_item/

GRANT EXECUTE ON sys.ku$_dumpfile_info TO PUBLIC;
CREATE OR REPLACE PUBLIC SYNONYM ku$_dumpfile_info FOR sys.ku$_dumpfile_info;

項目コードは、必要に応じて詳細情報を提供できるように簡単に拡張できます。表47-10に、現在定義されている項目コードを示します(パッケージ名のDBMS_DATAPUMP.が前に付加されています)。これらの項目コードについて、次のことを念頭に置いてください。

- 特に明記しないかぎり、すべての項目コードはOracle Data Pumpと外部表のダンプ・ファイル(filetype1と3)でのみ戻されます。

- 特に明記しないかぎり、すべての項目コードはOracle Database 10gリリース2(10.2)以降で使用可能です。

表47-10 DBMS_DATAPUMP.GET_DUMPFILE_INFOプロシージャの項目コード

項目コード

説明

KU$_DFHDR_FILE_VERSION

ダンプ・ファイルの内部ファイル・バージョン。

KU$_DFHDR_MASTER_PRESENT

ダンプ・ファイルにデータ・ポンプのマスター表が存在する場合、この項目コードの値は1になります。存在しない場合は、値は0になります。filetype1でのみ戻されます。

KU$_DFHDR_GUID

ダンプ・ファイルを生成したデータ・ポンプ・エクスポート・ジョブまたは外部表のアンロード・ジョブに割り当てられた一意の識別子。複数ファイル・ダンプ・セットの場合、セット内の各ファイルで、この項目コードは同じ値になります。

KU$_DFHDR_FILE_NUMBER

ダンプ・ファイルに割り当てられている数値識別子。複数ファイル・ダンプ・セットの各ダンプ・ファイルには、そのダンプ・セット内でのみ一意である固有の識別子が割り当てられます。

KU$_DFHDR_CHARSET_ID

ダンプ・ファイルの作成時に、ソース・システムで使用していたキャラクタ・セットを表す数値コード。

すべてのfiletypeで戻されます。

KU$_DFHDR_CREATION_DATE

ダンプ・ファイルの作成日時。

KU$_DFHDR_FLAGS

内部フラグ値。

KU$_DFHDR_JOB_NAME

ダンプ・ファイルを作成したエクスポート・ジョブに割り当てられた名前。

filetype1でのみ戻されます。

KU$_DFHDR_PLATFORM

ダンプ・ファイルが作成されたソース・システムのオペレーティング・システム名。

KU$_DFHDR_INSTANCE

ダンプ・ファイルが作成されたソース・システムのインスタンス名。

KU$_DFHDR_LANGUAGE

エクスポート・ダンプ・ファイルが作成されたソース・システムのキャラクタ・セットに対応する言語名。

KU$_DFHDR_BLOCKSIZE

ダンプ・ファイルのバイト単位のブロック・サイズ。

KU$_DFHDR_DIRPATH

ダンプ・ファイルの作成時にダイレクト・パス・モードを使用した場合、この項目コードの値は1になります。使用していない場合は、値は0になります。

filetype2でのみ戻されます。

KU$_DFHDR_METADATA_COMPRESSED

システム・メタデータが圧縮形式でダンプ・ファイルに格納されている場合、この項目コードの値は1になります。圧縮形式で格納されていない場合は、値は0になります。

filetype1でのみ戻されます。

KU$_DFHDR_DB_VERSION

ダンプ・ファイルの作成に使用するデータベース・ジョブ・バージョン。

すべてのfiletypeで戻されます。

KU$_DFHDR_MASTER_PIECE_COUNT

データ・ポンプのマスター表は複数の行断片に分割して、1ファイル当たり1行断片ずつ、セット内の複数のダンプ・ファイルに書き込めます。この項目コードで戻される値は、マスター表の行断片が保存されているダンプ・ファイルの数を示します。この項目コードの値は、項目コードKU$_DFHDR_MASTER_PRESENTで示されているとおり、ダンプ・ファイルにデータ・ポンプのマスター表が存在する場合にのみ意味を持ちます。

filetype1でのみ戻されます。

Oracle Database 11gリリース1(11.1)以降でのみ使用可能です。

KU$_DFHDR_MASTER_PIECE_NUMBER

データ・ポンプのマスター表は複数の行断片に分割して、1ファイル当たり1行断片ずつ、セット内の複数のダンプ・ファイルに書き込めます。この項目コードで戻される値は、ダンプ・ファイル内にマスター表のどの行断片が含まれているかを示します。この項目コードの値は、項目コードKU$_DFHDR_MASTER_PRESENTで示されているとおり、ダンプ・ファイルにデータ・ポンプのマスター表が存在する場合にのみ意味を持ちます。

filetype1でのみ戻されます。

Oracle Database 11gリリース1(11.1)以降でのみ使用可能です。

KU$_DFHDR_DATA_COMPRESSED

表データが圧縮形式でダンプ・ファイルに格納されている場合、この項目コードの値は1になります。圧縮形式で格納されていない場合は、値は0になります。

Oracle Database 11gリリース1(11.1)以降でのみ使用可能です。

KU$_DFHDR_METADATA_ENCRYPTED

システム・メタデータが暗号化形式でダンプ・ファイルに格納されている場合、この項目コードの値は1になります。暗号化形式で格納されていない場合は、値は0になります。

filetype1でのみ戻されます。

Oracle Database 11gリリース1(11.1)以降でのみ使用可能です。

KU$_DFHDR_DATA_ENCRYPTED

表データが暗号化形式でダンプ・ファイルに格納されている場合、この項目コードの値は1になります。暗号化形式で格納されていない場合は、値は0になります。

Oracle Database 11gリリース1(11.1)以降でのみ使用可能です。

KU$_DFHDR_COLUMNS_ENCRYPTED

暗号化された列データが暗号化形式でダンプ・ファイルに格納されている場合、この項目コードの値は1になります。暗号化形式で格納されていない場合は、値は0になります。

filetype1でのみ戻されます。

Oracle Database 11gリリース1(11.1)以降でのみ使用可能です。

KU$_DFHDR_ENCRYPTION_MODE

この暗号化モードは、ダンプ・ファイルに書き込まれるデータを暗号化するためにユーザー指定のパスワードやOracle Encryption Walletが使用されたかどうかを示します。この項目コードの戻り値は、次のとおりです。

- KU$_DFHDR_ENCMODE_NONE
ダンプ・ファイルに暗号化形式で書き込まれたデータはありません。

- KU$_DFHDR_ENCMODE_PASSWORD
指定されたパスワードを使用して、データが暗号化形式でダンプ・ファイルに書き込まれました。

- KU$_DFHDR_ENCMODE_DUAL
指定されたパスワードとOracle Encryption Walletを両方とも使用して、データが暗号化形式でダンプ・ファイルに書き込まれました。

- KU$_DFHDR_ENCMODE_TRANS
Oracle Encryption Walletを使用して、データが透過的に暗号化形式でダンプ・ファイルに書き込まれました。

Oracle Database 11gリリース1(11.1)以降でのみ使用可能です。

KU$_DFHDR_COMPRESSION_ALG

システム・メタデータまたは表データ(あるいはその両方)を、圧縮形式でダンプ・ファイルに書き込むときに使用される圧縮アルゴリズム。この項目コードの戻り値は、次のとおりです。

- KU$_DFHDR_CMPALG_NONE
ダンプ・ファイルに圧縮形式で書き込まれたデータはありません。

- KU$_DFHDR_CMPALG_BASIC
内部アルゴリズムを使用して、データが圧縮形式でダンプ・ファイルに書き込まれました。これは、Oracle Database 10gリリース2(10.2)以降に使用されているデフォルトのアルゴリズムです。

- KU$_DFHDR_CMPALG_LOW
LOWアルゴリズムを使用して、データが圧縮形式でダンプ・ファイルに書き込まれました。

- KU$_DFHDR_CMPALG_MEDIUM
MEDIUMアルゴリズムを使用して、データが圧縮形式でダンプ・ファイルに書き込まれました。

- KU$_DFHDR_CMPALG_HIGH
HIGHアルゴリズムを使用して、データが圧縮形式でダンプ・ファイルに書き込まれました。

Oracle Database 12cリリース1(12.1)以降でのみ使用可能です。

GET_STATUSプロシージャ

このプロシージャは、ジョブのステータスを監視、あるいはジョブの完了を待機します。

構文

DBMS_DATAPUMP.GET_STATUS(
handle    IN NUMBER,
mask      IN BINARY_INTEGER,
timeout   IN NUMBER DEFAULT NULL,
job_state OUT VARCHAR2,
status    OUT ku$_Status);

パラメータ

表47-11 GET_STATUSプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。NULLハンドルを使用すると、OPEN障害およびATTACH障害の後でエラー情報を取得できます。

mask

次の4種類の中でどの情報が戻るかを示すビット・マスク。

- KU$_STATUS_WIP

- KU$_STATUS_JOB_DESC

- KU$_STATUS_JOB_STATUS

- KU$_STATUS_JOB_ERROR

それぞれのステータスに数値が設定されています。値を違う組合せで一緒に追加することにより、複数の種類の情報を要求できます。「データ構造: オブジェクト・タイプ」を参照してください。

timeout

ユーザーに情報を戻すまでに待機する最大秒数。値0(ゼロ)は、即座に戻すことを要求します。値-1は、無限に待機することを要求します。KU$_STATUS_WIPあるいはKU$_STATUS_JOB_ERRORの情報が要求され、タイムアウト期間中に情報が発生した場合は、タイムアウト期間が終了する前に情報が戻されます。

job_state

ジョブの現在の状態。ジョブの状態のみが必要な場合は、ku$_Status構造全体を取得するより、このパラメータを使用するほうがはるかに効率的です。

status

ku$_Statusが戻されます。ku$_Statusマスクは、含まれている情報の種類を示します。KU$_STATUS_WIP情報またはKU$_STATUS_JOB_ERROR情報が要求されたが、タイムアウト期間が終了した場合は、何も戻されない可能性があります。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_VALUE。マスクあるいはタイムアウトに無効な値が含まれています。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

GET_STATUSプロシージャは、進行中のジョブの進捗を監視し、エラー通知を受信するために使用します。maskパラメータを使用して、様々な情報を要求できます。KU$_STATUS_JOB_DESCおよびKU$_STATUS_JOB_STATUSの値は同期情報として分類されますが、これは、これらの情報がマスター表に常駐するためです。KU$_STATUS_WIPおよびKU$_STATUS_JOB_ERRORの値は非同期情報として分類されますが、これはこれらのタイプの情報を表現するメッセージが、いつでもデータ・ポンプ・アーキテクチャ内の各種レイヤーによって生成できるからです。

- 同期情報のみが要求された場合、インタフェースはtimeoutパラメータを無視し、単に要求された情報を戻します。

- 非同期情報が要求された場合、インタフェースはタイムアウトの最大秒数を待機してからクライアントに戻します。要求された非同期情報タイプのメッセージが受信された場合、そのコールはタイムアウトの秒数が尽きる前に完了します。同期情報も要求されていた場合、その情報はプロシージャが戻るたびに戻されます。

- GET_STATUSによって戻されたjob_stateが終了ジョブを示していない場合にも、ジョブは、GET_STATUSへの次のコールの前に終了する可能性があります。この場合、INVALID_HANDLE例外が発生します。また、GET_STATUSへのコール中にこのジョブが終了する可能性もあり、この場合はNO_SUCH_JOB例外が発生します。コール元は、これらの場合に対処する準備をしておく必要があります。

エラー処理

GET_STATUSプロシージャを使用して処理する必要があるエラー・シナリオには次の2種類があります。

- 他のプロシージャ・コールの結果として起こるエラー: たとえばSET_PARAMETERプロシージャによってINCONSISTENT_ARGS例外が発生する可能性があります。クライアントはただちに、mask=8 (エラー)およびtimeout=0を設定してGET_STATUSをコールする必要があります。戻されるku$_Status.errorには、非一貫性をより詳細に説明するku$_LogEntryが含まれます。

- クライアントに対して非同期なイベントの結果として発生するエラー: たとえば、表を作成しようとしたときに表示される「表はすでに存在しています」などがあります。ku$_Status.errorには、エラーに関するコンテキストを追加した処理中の全レイヤーから取得されたすべてのエラー行が、ku$_LogEntryに適切な順序で並べられて保存されます。

ジョブが開始すると、通常、クライアントの主要な処理ループは、KU$_STATUS_WIPメッセージおよびKU$_STATUS_JOB_ERRORメッセージについて無限タイムアウト(-1)のリスニングを設定したGET_STATUSへのコールで構成されます。ステータスが要求された場合は、その要求の中にJOB_STATUS情報も含まれます。

ku$_Statusを解釈するときは、次のガイドラインに従う必要があります。

- ku$_Status.ku$_JobStatus.percent_doneは、ジョブ内で処理されたデータ量のみが対象となります。メタデータは計算で考慮されません。次の式を使用して決定されます。

- エクスポートまたはネットワーク・インポート: (bytes_processed/estimated_bytes) * 100

- インポート: (bytes_processed/total_expected_bytes) * 100

- SQL_FILEあるいは見積りのみのエクスポート: 完了していない場合は0.00、完了している場合は100.00

QUERYデータ・フィルタおよびPARTITION_EXPRデータ・フィルタの効果は、percent_doneの計算には考慮されません。

戻されるステータスは、コール元によって、さらにわかりやすいステータスに変換させることができます。たとえば、完了した割合が0(ゼロ)以外の場合の見積り完了時間は、次の式で求められます。

((SYSDATE - start time) / ku$_Status.ku$_JobStatus.percent_done) * 100

- コール元は、ku$_Status.ku$_JobStatus.percent_doneを使用して、ジョブが完了したかどうかを判断できません。コール元は、job_stateで検出されたジョブの状態のみを参照して、この判断を行うことができます。

LOG_ENTRYプロシージャ

このプロシージャは、ログ・ファイルにメッセージを挿入します。

構文

DBMS_DATAPUMP.LOG_ENTRY(
handle         IN NUMBER,
message        IN VARCHAR2
log_file_only  IN NUMBER DEFAULT 0);

パラメータ

表47-12 LOG_ENTRYプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

message

ログ・ファイルに追加されるテキスト行。

log_file_only

ログ・ファイルのみに書き込まれるように指定されたテキスト。このテキストは、GET_STATUSの進行中の作業(KU$_STATUS_WIP)メッセージには戻されません。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

このメッセージはログ・ファイルに追加されます。log_file_onlyが0(ゼロ、デフォルト値)の場合は、GET_STATUSプロシージャにより、ジョブに連結しているすべてのユーザーに対しても、KU$_STATUS_WIPメッセージとしてブロードキャストされます。

LOG_ENTRYプロシージャを使用すると、アプリケーションでログ・ストリームを調整して、アプリケーションで提供される形式と一致させることができます。たとえば、コマンドライン・インタフェースでは、ユーザーが定義したINCLUDEパラメータおよびEXCLUDEパラメータがサポートされています。これらの値を、基礎となるMETADATA_FILTERプロシージャへのコールとして指定すると、ユーザーを混乱させることになります。そこでかわりに、コマンドライン・インタフェースでは、INCLUDEパラメータおよびEXCLUDEパラメータの設定を説明するテキストをログに入力します。

LOG_ENTRYからログ・ストリームに入力された行には、";;; "という接頭辞が付きます。

METADATA_FILTERプロシージャ

このプロシージャは、ジョブに含まれる項目を制限するためのフィルタを提供します。

構文

DBMS_DATAPUMP.METADATA_FILTER(
handle       IN NUMBER,
name         IN VARCHAR2,
value        IN VARCHAR2,
object_path  IN VARCHAR2 DEFAULT NULL);

DBMS_DATAPUMP.METADATA_FILTER(
handle       IN NUMBER,
name         IN VARCHAR2,
value        IN CLOB,
object_path  IN VARCHAR2 DEFAULT NULL);

パラメータ

表47-13 METADATA_FILTERプロシージャのパラメータ

パラメータ

説明

handle

OPENファンクションから戻されたハンドル。

name

フィルタ名。使用可能なフィルタの説明は、表47-14を参照してください。

value

フィルタ値。

object_path

フィルタが適用されるオブジェクト・パス。デフォルトを使用した場合、フィルタは適用可能なすべてのオブジェクトに適用されます。各モードでサポートされるオブジェクト・パスのリストは、DATABASE_EXPORT_OBJECTS、SCHEMA_EXPORT_OBJECTSおよびTABLE_EXPORT_OBJECTSのカタログ・ビューに示されています。(表モードと表領域モードのオブジェクト・パスは同じため、TABLE_EXPORT_OBJECTSビューはどちらのモードにも適用できる点に注意してください。)

インポート操作では、オブジェクト・パスはインポートに使用されるモードではなく、ダンプ・ファイルの作成に使用されるモードを参照します。

表47-14では、METADATA_FILTERプロシージャで使用可能なフィルタの名前、オブジェクト・タイプ、および意味について説明します。すべてのフィルタのデータ・タイプはテキスト式です。すべての操作ですべてのフィルタがサポートされています。

表47-14 METADATA_FILTERプロシージャによって提供されるフィルタ

名前

オブジェクト・タイプ

意味

NAME_EXPR

NAME_LIST

名前付きオブジェクト

ジョブに含めるオブジェクト名を定義します。オブジェクト・タイプのパラメータを使用して、フィルタの適用を特定のオブジェクト・タイプに制限します。

表モードでは、処理対象の表を指定します。

SCHEMA_EXPR

SCHEMA_LIST

スキーマ・オブジェクト

ジョブの対象は、式に準拠した書式のスキーマ名を持つオブジェクトに制限されます。

表モードでは、1つのSCHEMA_EXPRフィルタのみサポートされます。このパラメータを指定する場合は、スキーマを1つのみ指定する必要があります(例: 'IN (''SCOTT'')')。

スキーマ・モードでは、処理対象のユーザーを指定します。

TABLESPACE_EXPR

TABLESPACE_LIST

TABLE、CLUSTER、INDEX、ROLLBACK_SEGMENT

ジョブの対象は、式に準拠した書式の名前を持つ表領域に保存されたオブジェクトに制限されます。

表領域モードでは、処理対象の表領域を指定します。オブジェクトのパーティションが表領域に保存されている場合は、オブジェクト全体がジョブに追加されます。

トランスポータブル・モードでは、処理対象の表領域を指定します。表に表領域セット内のパーティションが1つある場合、この表領域セットにはすべてのパーティションが存在する必要があります。索引のすべてのパーティションが表領域セットに含まれる場合を除き、索引は表領域セットには含まれません。ドメイン索引のすべてのセカンダリ・オブジェクトが表領域セットに含まれる場合を除き、ドメイン索引は表領域セットには含まれません。

INCLUDE_PATH_EXPR

INCLUDE_PATH_LIST

EXCLUDE_PATH_EXPR

EXCLUDE_PATH_LIST

すべて

ジョブに含めるオブジェクト・パスあるいはジョブから除外するオブジェクト・パスを定義します。これらのフィルタを使用して、データベースまたはダンプ・ファイル・セットから特定のオブジェクト・タイプのみを選択します。条件を満たすパスを持つオブジェクトが、操作に含まれる(INCLUDE_PATH_*)か、または操作から除外(EXCLUDE_PATH_*)されます。これらのフィルタでは、object_pathパラメータはサポートされません。

EXCLUDE_TABLES

TABLE_EXPORT

表がエクスポートされないことを指定します。

VIEWS_AS_TABLES

TABLE_EXPORT

表としてエクスポートされる、次のような形式のカンマ区切りのビュー・リストです。

[schema_name.]view_name[:table_name]

このフィルタは、複数の値を追加するときに、あるいはリストに値を追加するたびに何回でも呼び出せます。リスト内のすべてのビューは、表としてエクスポートされます。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_ARGVAL。この例外は、次のいずれかの状態を示します。

- INCLUDE_PATH_EXPRフィルタまたはEXCLUDE_PATH_EXPRフィルタに対してobject_pathが指定されました。

- 指定されたobject_pathは、現行のモードではサポートされません。

- SCHEMA_EXPRフィルタにより、表モードのジョブに対して複数のスキーマが指定されました。

- INVALID_STATE。ジョブが定義中の状態を過ぎた後で、METADATA_FILTERプロシージャをコールしました。

- INCONSISTENT_ARGS。フィルタの値のデータ・タイプが間違っているか、値がありません。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- メタデータ・フィルタは、データ・ポンプ操作に含めるか、データ・ポンプ操作から除外するオブジェクトの集合を特定します。EXCLUDE_PATH_EXPRフィルタおよびINCLUDE_PATH_EXPRフィルタ以外のフィルタで特定されたオブジェクトに依存するオブジェクトは、特定されたオブジェクトとともに処理されます。たとえば、フィルタにより索引が操作対象に含められる場合、このフィルタによってその索引に対する権限付与も操作対象となります。同様に、フィルタによって表が除外された場合、その表に関する索引、制約、権限付与およびトリガーもフィルタによって除外されます。

- フィルタごとに2つのバージョン(SQL式およびリスト)がサポートされています。SQL式バージョンのフィルタでは、オブジェクトを柔軟に指定できます(たとえば、LIKEを使用するとワイルドカードを使用できます)。式フィルタの名前は、次のとおりです。

- NAME_EXPR

- SCHEMA_EXPR

- TABLESPACE_EXPR

- INCLUDE_PATH_EXPR

- EXCLUDE_PATH_EXPR

リスト・バージョンのフィルタでは、フィルタを最大限に検証できます。フィルタ内のいずれかの要素がソース・データベース内にない場合(エクスポートおよびネットワークベースのジョブの場合)、またはダンプ・ファイルにない場合(ファイルベースのインポートおよびSQLFILEジョブの場合)は、エラーがレポートされます。リスト・フィルタの名前は、次のとおりです。

- NAME_LIST

- SCHEMA_LIST

- TABLESPACE_LIST

- INCLUDE_PATH_LIST

- EXCLUDE_PATH_LIST

- フィルタを使用することにより、ジョブに含まれる項目を制限できます。たとえば、パッケージ仕様部またはパッケージ本体を除いた全体のエクスポートを要求できます。

- 1つのオブジェクト・タイプに複数のフィルタが指定された場合は、暗黙的にこれらのフィルタについてAND処理が行われます(つまり、ジョブに参加するオブジェクトは、そのオブジェクト・タイプに適用されるすべてのフィルタを通過する必要があります)。

- 1つのジョブ内には、同じフィルタ名を複数回指定できます。たとえば、表モードのエクスポートについてNAME_EXPR as '!=''EMP'''とNAME_EXPR as '!=''DEPT'''を指定すると、EMPおよびDEPT以外のすべての表が含まれるファイル・セットが作成されます。

METADATA_REMAPプロシージャ

このプロシージャは、指定したジョブ内でオブジェクトが処理されるときに、オブジェクトに適用される再マッピングを指定します。

構文

DBMS_DATAPUMP.METADATA_REMAP (
handle      IN NUMBER,
name        IN VARCHAR2,
old_value   IN VARCHAR2,
value       IN VARCHAR2,
object_type IN VARCHAR2 DEFAULT NULL);

パラメータ

表47-15 METADATA_REMAPプロシージャのパラメータ

パラメータ

説明

handle

現行ジョブのハンドル。現行のセッションは、OPENファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

name

再マップの名前。使用可能な再マップについては、表47-16を参照してください。

old_value

valueにリセットするダンプ・ファイル・セット内の値を指定します。

value

再マップに使用するパラメータの値。old_valueを変換して得られる新しい値を指定します。

object_type

再マップが適用されるオブジェクト・タイプを指定します。各モードでサポートされるオブジェクト・タイプのリストは、DATABASE_EXPORT_OBJECTS、SCHEMA_EXPORT_OBJECTS、TABLE_EXPORT_OBJECTSおよびTABLESPACE_EXPORT_OBJECTSのカタログ・ビューに示されています。

デフォルトでは、再マップはジョブ内の利用可能なすべてのオブジェクトに適用されます。object_typeパラメータを使用すると、コール元はジョブ内の複数のオブジェクト・タイプにそれぞれ別のパラメータを指定できます。オブジェクト・タイプを明示的に指定する再マップは、すべてのオブジェクト・タイプに適用される再マップよりも優先されます。

表47-16に、METADATA_REMAPプロシージャによって提供される再マップを示します。

表47-16 METADATA_REMAPプロシージャによって提供される再マップ

名前

データ・タイプ

オブジェクト・タイプ

意味

REMAP_SCHEMA

TEXT

スキーマ・オブジェクト

object_typeパラメータに一致し、old_valueスキーマ内に配置されたジョブ内のスキーマ・オブジェクトは、すべてvalueスキーマに移動します。

権限を付与されているユーザーは、スキーマの再マップを無制限に実行できます。

権限を付与されていないユーザーは、スキーマが再マップのターゲット・スキーマの場合にのみそれらのスキーマを再マップできます。

たとえば、SCOTTは、自分のBLAKEのオブジェクトをSCOTTに再マップできますが、SCOTTは、SCOTTのオブジェクトをBLAKEに再マップすることはできません。

REMAP_TABLESPACE

TEXT

TABLE、INDEX、ROLLBACK_SEGMENT、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG、TABLE_SPACE

object_typeパラメータに一致し、old_value表領域内に配置されたジョブ内の記憶域セグメントは、すべてvalue表領域に再配置されます。

REMAP_DATAFILE

TEXT

LIBRARY、TABLESPACE、DIRECTORY

object_typeパラメータに一致し、old_valueデータ・ファイルを参照していたジョブ内のすべてのデータ・ファイル参照は、valueデータ・ファイルを使用するように再定義されます。

REMAP_TABLE

TEXT

TABLE

old_value表の名前に一致したジョブ内の表参照は、すべてvalue表の名前に置き換えられます。old_valueパラメータは、employees.lowなどのパーティションを参照する場合があります。これを使用すると、PARTITION_OPTIONS=DEPARTITIONパラメータで構成された表の名前をユーザーが指定できます。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_ARGVAL。このメッセージは、次のいずれかの状態を示します。

- このジョブのモードには、指定されたobject_typeが含まれていません。

- この再マップは、指定されたold_valueおよびobject_typeについてすでに指定されています。

- INVALID_OPERATION。再マップは、SQL_FILE操作およびインポート操作でのみサポートされています。このジョブの操作はエクスポートであるため、メタデータの再マップはサポートされません。

- INVALID_STATE。ジョブの開始後に、ユーザーがMETADATA_REMAPをコールしました(つまり、ジョブは定義中の状態ではありませんでした)。

- INCONSISTENT_ARGS。valueの値が指定されていないか、再マップに適切なデータ・タイプではありません。

- PRIVILEGE_ERROR。権限を付与されていないユーザーが、別のユーザーのスキーマに対してREMAP_SCHEMAまたはREMAP_DATAFILEを実行しようとしました。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- METADATA_REMAPプロシージャは、インポート操作およびSQL_FILE操作のみでサポートされています。このプロシージャを使用すると、あらかじめ共通定義された再マップを、転送機能の一部としてオブジェクトの定義に適用できます。このプロシージャ内でサポートされない再マップが必要な場合は、先にSQL_FILE操作を実行して、該当するダンプ・ファイル・セットに対応するSQLスクリプトを作成します。DDLを直接編集してから実行することにより、必要な再マッピングを作成できます。

- データ・ポンプAPIの変換とは、DBMS_METADATA.SET_TRANSFORM_PARAMETER APIによって実装される再マップのサブセットです。1つのジョブには複数の再マップを定義できます。ただし、個々の再マップの定義内容は、パラメータごとに一意である必要があります。つまり、競合したり重複する2つの再マップを指定することはできません。

METADATA_TRANSFORMプロシージャ

このプロシージャは、指定されたジョブ内でオブジェクトが処理されるときに、オブジェクトに適用される変換を指定します。

構文

DBMS_DATAPUMP.METADATA_TRANSFORM (
handle      IN NUMBER,
name        IN VARCHAR2,
value       IN VARCHAR2,
object_type IN VARCHAR2 DEFAULT NULL);

DBMS_DATAPUMP.METADATA_TRANSFORM (
handle      IN NUMBER,
name        IN VARCHAR2,
value       IN NUMBER,
object_type IN VARCHAR2 DEFAULT NULL);

パラメータ

表47-17 METADATA_TRANSFORMプロシージャのパラメータ

パラメータ

説明

handle

現行ジョブのハンドル。現行のセッションは、OPENファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

name

変換名。使用可能な変換については、表47-18を参照してください。

value

変換に使用するパラメータの値。

object_type

変換が適用されるオブジェクト・タイプを指定します。各モードでサポートされるオブジェクト・タイプのリストは、DATABASE_EXPORT_OBJECTS、SCHEMA_EXPORT_OBJECTS、TABLE_EXPORT_OBJECTSおよびTABLESPACE_EXPORT_OBJECTSのカタログ・ビューに示されています。

デフォルトでは、変換はジョブ内の利用可能なすべてのオブジェクトに適用されます。object_typeパラメータを使用すると、コール元はジョブ内の複数のオブジェクト・タイプにそれぞれ別の変換パラメータを指定できます。オブジェクト・タイプを明示的に指定する変換は、すべてのオブジェクト・タイプに適用される変換よりも優先されます。

表47-18に、METADATA_TRANSFORMプロシージャによって提供される変換を示します。

表47-18 METADATA_TRANFORMプロシージャによって提供される変換

名前

データ・タイプ

オブジェクト・タイプ

意味

DISABLE_ARCHIVE_LOGGING

NUMBER

TABLE

INDEX

インポート時に、指定されたオブジェクト・タイプのアーカイブ・ログを無効にするかどうかを指定します。

ゼロ(FALSE)の値がデフォルトです。アーカイブ・ログの実行が指定されます。この変換パラメータが指定されていない場合、これがデフォルトの動作になります。

ゼロ以外(TRUE)の値を指定すると、インポート操作中にデータをロードする前に、指定されたオブジェクト・タイプのアーカイブ・ログが無効になります。オブジェクト・タイプが指定されていない場合は、TABLEとINDEXの両方のオブジェクト・タイプに対してアーカイブ・ログが無効になります。データ・ポンプ・インポート時に処理されるその他のオブジェクト・タイプのロギングは行われます。

注意: データベースがFORCE LOGGINGモードの場合、索引および表が作成されると、DISABLE_ARCHIVE_LOGGING変換のためにロギングが無効になりません。

INMEMORY

NUMBER

TABLE

TABLESPACE

MATERIALIZED VIEWS

INMEMORY変換は、インメモリー列ストア(IM列ストア)と関係があります。これは、表全体、表パーティションおよび個々の列を圧縮列形式で格納するSGAのオプションの領域です。

インポートでゼロ以外の値(TRUE)を指定した場合、データ・ポンプでは、これらのオブジェクトのエクスポート時のIM設定を保持するIM句が生成されます。これがデフォルトです。

インポートでゼロの値(FALSE)を指定した場合、データ・ポンプでは、どのオブジェクトに対してもIM句を含めません。

注意: INMEMORY変換は、Oracle Database 12cリリース1(12.1.0.2)以降でのみ使用可能です。

INMEMORY_CLAUSE

TEXT

TABLE

TABLESPACE

MATERIALIZED VIEWS

INMEMORY_CLAUSE変換は、インメモリー列ストア(IM列ストア)と関係があります。これは、表全体、表パーティションおよび個々の列を圧縮列形式で格納するSGAのオプションの領域です。

この変換を指定した場合、データ・ポンプでは、DDLにIM句を含む、インポート対象のすべてのオブジェクトに対して、文字列の内容をIM句として使用します。この変換は、ダンプ・ファイルのオブジェクトのIM句を優先する必要がある場合に有効です。

注意: INMEMORY_CLAUSE変換は、Oracle Database 12cリリース1(12.1.0.2)以降でのみ使用可能です。

LOB_STORAGE

TEXT

TABLE

LOBセグメント用の記憶域タイプを指定します。オプションは次のとおりです。

- SECUREFILE: LOB記憶域がSECUREFILEとして戻されます。

- BASICFILE: LOB記憶域がBASICFILEとして戻されます。

- DEFAULT: LOB STORE AS句で、キーワード(SECUREFILEまたはBASICFILE)が省略されます。

- NO_CHANGE: LOBセグメントがソース・データベースと同様の記憶域環境で作成されます。これがデフォルトです。

この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表のLOB記憶域が変更されます。

OID

NUMBER

TYPE

TABLE

0(ゼロ)の場合は、タイプまたは表の作成時に、エクスポートしたOIDの割当てを禁止します。この場合、新しいOIDが割り当てられます。

オブジェクト表でこの変換を使用すると、この表を指すREF列でブレークが発生します。

デフォルトは1です。

PCTSPACE

NUMBER

TABLE

INDEX

TABLESPACE

エクステント割当ておよびデータファイルのサイズの変更に使用する百分率の乗数を指定します。大きい表領域をテスト用に縮小する場合に使用します。

デフォルトは100です。

SEGMENT_ATTRIBUTES

NUMBER

TABLE、INDEX

0(ゼロ)以外(TRUE)の場合は、記憶域セグメント・パラメータが発行されます。

デフォルトは1です。

SEGMENT_CREATION

NUMBER

TABLE

0(ゼロ)以外(TRUE)の場合、CREATE TABLE文にSQL SEGMENT CREATION句が追加されます。つまり、CREATE TABLE文によって、明示的にSEGMENT CREATION DEFERREDまたはSEGMENT CREATION IMMEDIATEが指定されます。

値がFALSEの場合、CREATE TABLE文からSEGMENT CREATION句が省略されます。ロードされる表に対してデフォルトのセグメント作成属性を使用する場合は、このパラメータをFALSEに設定します。

デフォルトは0(ゼロ)以外(TRUE)です。

STORAGE

NUMBER

TABLE

0 (ゼロ)以外(TRUE)の場合は、STORAGE句が発行されます。(SEGMENT_ATTRIBUTESが0 (ゼロ)の場合は無視されます。)

デフォルトは0(ゼロ)以外(TRUE)です。

TABLE_COMPRESSION_CLAUSE

TEXT

TABLE

表の作成時に使用する表の圧縮句(COMPRESS BASICなど)を指定します。

表の圧縮句を省略する場合は、NONEを指定します。表には、表領域に対するデフォルトの圧縮が適用されます。

この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表の圧縮タイプが変更されます。

表の圧縮オプションと構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_ARGVAL。このメッセージは、次のいずれかの状態を示します。

- トランスポータブル・モードのため、変換はサポートされません。

- このジョブのモードには、指定されたobject_typeが含まれていません。

- この変換は、指定されたvalueおよびobject_typeについてすでに指定されています。

- INVALID_OPERATION。変換は、SQL_FILE操作およびインポート操作でのみサポートされています。このジョブの操作はエクスポートであるため、メタデータの変換はサポートされません。

- INVALID_STATE。ジョブの開始後に、ユーザーがMETADATA_TRANSFORMをコールしました(つまり、ジョブは定義中の状態ではありませんでした)。

- INCONSISTENT_ARGS。valueの値が指定されていないか、変換に適切なデータ・タイプではありません。

- PRIVILEGE_ERROR。権限を付与されていないユーザーが、別のユーザーのスキーマに対してREMAP_SCHEMAまたはREMAP_DATAFILEを実行しようとしました。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- METADATA_TRANSFORMプロシージャは、インポート操作およびSQL_FILE操作のみでサポートされています。このプロシージャを使用すると、あらかじめ共通定義された変換を、転送機能の一部としてオブジェクトの定義に適用できます。このプロシージャ内でサポートされない変換が必要な場合は、先にSQL_FILE操作を実行して、該当するダンプ・ファイル・セットに対応するSQLスクリプトを作成します。DDLを直接編集してから実行することにより、必要な変換を作成できます。

- データ・ポンプAPIの変換とは、DBMS_METADATA.SET_TRANSFORM_PARAMETER APIによって実装される変換のサブセットです。1つのジョブには複数の変換を定義できます。ただし、個々の変換の定義内容は、パラメータごとに一意である必要があります。つまり、競合したり重複する2つの変換を指定することはできません。

OPENファンクション

このファンクションは、データ・ポンプAPIを使用して新規ジョブを設定するために使用します。戻されるハンドルは、他のすべてのプロシージャをコールするパラメータとして使用します(ATTACHファンクションを除く)。

構文

DBMS_DATAPUMP.OPEN (
operation    IN VARCHAR2,
job_mode         IN VARCHAR2,
remote_link  IN VARCHAR2 DEFAULT NULL,
job_name     IN VARCHAR2 DEFAULT NULL,
version      IN VARCHAR2 DEFAULT 'COMPATIBLE')
RETURN NUMBER;

パラメータ

表47-19 OPENファンクションのパラメータ

パラメータ

意味

operation

実行する操作のタイプ。表47-20に、有効な操作のタイプを示します。

job_mode

実行する操作の有効範囲。表47-21に、有効なモードを示します。NULLを指定すると、エラーになります。

remote_link

このパラメータの値がNULL以外の場合、現行ジョブのデータおよびメタデータのソースになるリモート・データベースへのデータベース・リンクの名前が使用されます。

job_name

ジョブの名前。名前は30文字に制限され、30文字を超える場合は、その部分が切り捨てられます。名前には、印刷可能な文字および空白を使用できます。ジョブの名前は、OPENファンクションを実行中のユーザーのスキーマによって暗黙的に修飾され、そのスキーマについて一意である必要があります(つまり、同じ名前を使用する他のデータ・ポンプ・ジョブは存在しません)。

この名前は、API内でジョブを特定するときと、リソース不足でジョブが一時停止した場合にDBA_RESUMABLEビューでジョブを特定する場合など他のデータベース・コンポーネント内でジョブを特定するときに使用します。名前を指定しない場合は、システムによって"SYS_<OPERATION>_<MODE>_%N"という書式の名前が生成されてジョブに与えられます。

デフォルトのジョブ名は、%Nに'01'から順に2桁の整数が代入されて生成されます("SYS_IMPORT_FULL_03"など)。ジョブに指定される名前は、マスター表や、ジョブに関連する他のリソースを命名する場合にも使用されます。

version

抽出されるデータベース・オブジェクトのバージョン。このオプションは、エクスポート、ネットワーク・インポートおよびSQL_FILEの各操作のみで有効です。このバージョンと互換性のないデータベース・オブジェクトまたは属性は抽出されません。このパラメータに指定できる値は次のとおりです。

- COMPATIBLE : (デフォルト)データベース互換性レベルおよび機能の互換性リリース・レベルに対応するメタデータのバージョン(V$COMPATIBILITYビューで表示されます)。データベース互換性は9.2以上に設定する必要があります。

- LATEST: データベース・バージョンに対応するメタデータのバージョン。

- '11.0.0'など特定のデータベース・バージョン。
Oracle Database 11gリリース2 (11.2.0.3)以降からOracle Database 12 cリリース1 (12.1) (マルチテナント・コンテナ・データベース(CDB)またはCDBでないデータベースのいずれか)に、すべての既存のデータベース機能、コンポーネントおよびオプションをエクスポートできるように値に12を指定します。

表47-20に、OPENファンクションで有効な操作タイプを示します。

表47-20 OPENファンクションで有効な操作タイプ

操作

説明

EXPORT

データおよびメタデータをダンプ・ファイル・セットに保存します。または操作に必要なデータの見積りサイズを取得します。

IMPORT

データおよびメタデータをダンプ・ファイル・セットあるいはデータベース・リンクからリストアします。

SQL_FILE

ダンプ・ファイル・セット内あるいはネットワーク・リンクからのメタデータをSQLスクリプトとして表示します。SQLスクリプトの場所は、ADD_FILEプロシージャで指定します。

表47-21に、OPENファンクションで有効なモードを示します。

表47-21 OPENファンクションで有効なモード

モード

説明

FULL

Oracle Databaseの内部スキーマを除く、全データベースまたは全ダンプ・ファイル・セットで動作します。(Oracle Databaseの内部スキーマ内にある一部の表は、インポート時のメタデータの一貫性を保つために、エクスポートとインポートの全動作の対象として登録されている場合があります。)

全データベースのエクスポート時には、TRANSPORTABLEパラメータをALWAYSに設定して、データ・ポンプ・ダンプ・ファイルではなく、トランスポータブル表領域でデータが移動されるようにすることができます。

SCHEMA

選択された一連のスキーマで動作します。デフォルトは現行のユーザーのスキーマです。選択されたスキーマ内のすべてのオブジェクトが処理されます。SCHEMAモードでは、Oracleの内部スキーマ(SYS、XDB、ORDSYS、MDSYS、CTXSYS、ORDPLUGINS、LBACSYSなど)を指定できません。

TABLE

選択された一連の表で動作します。デフォルトは、現行のユーザーのスキーマ内のすべての表です。表およびその表が依存するオブジェクトのみが処理されます。

TABLESPACE

選択された一連の表領域で動作します。デフォルトはありません。指定された表領域内に記憶域を持つ表が、表モードと同じ方法で処理されます。

TRANSPORTABLE

選択された一連の表領域内の表(およびその表が依存するオブジェクト)に関するメタデータで動作し、トランスポータブル表領域のエクスポートおよびインポートを実行します。

戻り値

- ジョブに対する曖昧なハンドル。このハンドルを入力として使用できるプロシージャは、ADD_FILE、CREATE_JOB_VIEW、DATA_FILTER、DETACH、GET_STATUS、LOG_ENTRY、LOG_ERROR、METADATA_FILTER、METADATA_REMAP、METADATA_TRANSFORM、SET_PARALLEL、SET_PARAMETER、START_JOB、STOP_JOBおよびWAIT_FOR_JOBです。

例外

- INVALID_ARGVAL。無効なoperationパラメータまたはmodeパラメータが指定されました。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- JOB_EXISTS。指定したジョブ名の表は、すでに存在しています。

- PRIVILEGE_ERROR。ユーザーには指定したモードを使用する必要な権限またはロールがありません。

- INTERNAL_ERROR。ジョブが不適切なスキーマで作成されたか、マスター表の書式が不適切です。

- SUCCESS_WITH_INFO。このファンクションは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- ジョブが作成されると、コール元のデフォルト表領域内のスキーマのもとで、そのジョブのマスター表が作成されます。ジョブを参照するハンドルが戻され、現行セッションがこのジョブに連結されます。いったん連結されると、明示的または暗黙的に連結が解除されるまで、このハンドルは保持されます。ハンドルは、コール元のセッションでのみ有効です。ATTACHファンクションを使用すると、同じジョブに対して異なるセッションから別のハンドルを連結できます。

- OPENファンクションへのコールが失敗した場合は、GET_STATUSプロシージャがNULLハンドルを使ってコールすると、この失敗に関する詳細を参照できます。

SET_PARALLELプロシージャ

このプロシージャは、ジョブ内の並列度を調整します。

構文

DBMS_DATAPUMP.SET_PARALLEL(
handle      IN NUMBER,
degree      IN NUMBER);

パラメータ

表47-22 SET_PARALLELプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

degree

ジョブに使用可能なワーカー・プロセスの最大数。このパラメータを使用して、ジョブに使用するリソースの量を調整します。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_OPERATION。SET_PARALLELプロシージャは、エクスポート操作およびインポート操作のみで有効です。

- INVALID_ARGVAL。無効な値が入力パラメータに指定されました。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- SET_PARALLELプロシージャは、Oracle DatabaseのEnterprise Editionでのみ使用できます。

- SET_PARALLELプロシージャは、ジョブに連結されたどのセッションでも実行できます。ジョブは、定義中、アイドル、実行中のいずれかの状態でなければなりません。

- 並列度を下げた場合の影響は遅れて現れることがありますが、これは実行中の作業が正しい完了ポイントを見つけてからSET_PARALLELを有効にする必要があるためです。

- 並列度を下げても、ジョブに関連付けられたワーカー・プロセス数は減少しません。任意の指定時間に実行されるワーカー・プロセス数が減少するだけです。

- 並列度を上げた場合の影響は、並列して実行できる作業があればすぐに現れます。

- ユーザーが要求する並列度は、リソース・マネージャの設定に基づいて下げるか、あるいはinit.oraファイルに含まれるPROCESSESまたはSESSIONSの各初期化パラメータによって設定される制限を使用して下げることができます。

- エクスポート・ジョブをn度まで並列化するには、ダンプ・ファイル・セット内にn個のファイルを指定するか、ファイル指定で置換変数を指定する必要があります。この指定を行わない場合、ファイルの待機中に一部のワーカー・プロセスがアイドルになります。

- SQL_FILE操作は常に1度で動作します。トランスポータブル・モードで実行されるジョブは常に1度で動作します。

SET_PARAMETERプロシージャ

このプロシージャは、ジョブ処理オプションの指定に使用します。

構文

DBMS_DATAPUMP.SET_PARAMETER(
handle       IN NUMBER,
name         IN VARCHAR2,
value        IN VARCHAR2);

DBMS_DATAPUMP.SET_PARAMETER (
handle      IN NUMBER,
name        IN VARCHAR2,
value       IN NUMBER);

パラメータ

表47-23 SET_PARAMETERプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

name

パラメータの名前。有効なパラメータの名前は、表47-24を参照してください。

value

指定したパラメータの値。

表47-24に、SET_PARAMETERプロシージャのnameパラメータに有効なオプションを示します。

表47-24 SET_PARAMETERプロシージャのnameパラメータに有効なオプション

パラメータ名

データ・タイプ

サポートされる操作

意味

CLIENT_COMMAND

TEXT

すべて

クライアント・パースペクティブで現行の操作を表した不透明文字列。コマンドライン・プロシージャはこの文字列を使用して、ジョブの開始に使用したオリジナル・コマンドを保存します。

COMPRESSION

TEXT

エクスポート

ダンプ・ファイル・セットのサイズとエクスポート操作およびインポート操作の実行に要する時間は、トレードオフの関係にあります。

DATA_ONLYオプションは、ダンプ・ファイル・セットのユーザー・データのみを圧縮します。

METADATA_ONLYオプションは、ダンプ・ファイル・セットのメタデータのみを圧縮します。

ALLオプションは、ユーザー・データとメタデータの両方を圧縮します。

NONEオプションは、ダンプ・ファイル・セットを未圧縮形式で格納します。

METADATA_ONLYおよびNONEオプションには、10.2以上のジョブ・バージョンが必要です。その他のすべてのオプションには、11.1以上のジョブ・バージョンが必要です。

デフォルトはMETADATA_ONLYです。

COMPRESSION_ALGORITHM

TEXT

エクスポート

ダンプ・ファイル・データを圧縮する際に使用する圧縮アルゴリズムを示します。選択肢は次のようになります。

- BASIC: 圧縮率と処理速度を加味した、よい組合せです。Oracle Data Pumpの以前のバージョンと同じアルゴリズムが使用されます。

- LOW: バックアップ・スループットへの影響を最小限に抑えます。CPUリソースが限定要因となっている環境に適しています。

- MEDIUM: ほとんどの環境に適しています。このオプションはBASICオプションと同様、圧縮率と処理速度を加味したよい組合せですが、BASICとは異なるアルゴリズムが使用されています。

- HIGH: ネットワーク速度が限定要因となっている、速度が遅いネットワークを使用するエクスポートに最適です。

この機能を使用するには、COMPATIBLE初期化パラメータを12.0.0以上に設定する必要があります。

この機能では、Oracle Advanced Compressionオプションを有効にする必要があります。

DATA_ACCESS_METHOD

TEXT

エクスポートおよびインポート

デフォルトのメソッドがなんらかの理由で動作しない場合に、データのアンロードの別のメソッドを指定できます。選択肢はAUTOMATIC、DIRECT_PATHまたはEXTERNAL_TABLEです。できるだけデフォルトのオプション(AUTOMATIC)を使用することをお薦めします(このオプションによって、データ・ポンプは最も効果的なメソッドを自動的に選択できるようになります)。

DATA_OPTIONS

NUMBER

エクスポートおよびインポート

ジョブを処理するための特別なオプションを指定するビット・マスク。指定可能な値は次のとおりです。

- KU$_DATAOPT_SKIP_CONST_ERR

- KU$_DATAOPT_XMLTYPE_CLOB

- KU$_DATAOPT_DISABL_APPEND_HINT

エクスポートでは、KU$_DATAOPT_XMLTYPE_CLOB値がサポートされています。このオプションでは、ダンプ・ファイルの圧縮済XMLType列はXML文書ではなくCLOB形式として格納されます。

注意: Oracle Database 12cリリース1(12.1)から、CLOBとして保存されたXMLTypeは非推奨になっています。

インポートでは、KU$_DATAOPT_SKIP_CONST_ERR値がサポートされています。このオプションを指定した場合、データをユーザー表にインポートしているときに制約違反が発生した場合に、違反の原因となる行が拒否され、ロードが続行されます。このオプションを設定しない場合、制約エラーによってパーティション全体(またはパーティション化されていない表の表)のロードが中断されます。このオプションを設定すると、特に一意の索引または制約を含む既存の表では、パフォーマンスに影響がでる場合があります。

インポートでは、KU$_DATAOPT_DISABL_APPEND_HINT値もサポートされています。このオプションにより、APPENDヒントがデータ・ロードに適用されません。データベースにすでに存在する、ロード対象のデータ・オブジェクトの小さいセットがあり、他のいくつかのアプリケーションが1つ以上のデータ・オブジェクトに同時にアクセスしている場合、APPENDヒントを無効にすると役立ちます。

このパラメータを使用するには、OPENファンクションのversionを11.1以上に設定する必要があります。

デフォルトは0(ゼロ)です。

ENCRYPTION

TEXT

エクスポート

次のように、ダンプ・ファイル・セットで暗号化する対象を指定します。

ALLを指定すると、エクスポート操作ですべてのデータおよびメタデータを暗号化できます。

DATA_ONLYを指定すると、データのみがダンプ・ファイル・セットに暗号化形式で書き込まれます。

ENCRYPTED_COLUMNS_ONLYを指定すると、暗号化された列のみがダンプ・ファイル・セットに暗号化形式で書き込まれます。

METADATA_ONLYを指定すると、メタデータのみがダンプ・ファイル・セットに暗号化形式で書き込まれます。

NONEを指定すると、データはダンプ・ファイル・セットに暗号化形式で書き込まれません。

このパラメータには、11.1以上のジョブ・バージョンが必要です。

デフォルト値は、使用される暗号化関連パラメータの組合せによって異なります。暗号化を有効にするには、ENCRYPTIONまたはENCRYPTION_PASSWORDのいずれか、あるいはその両方を指定する必要があります。ENCRYPTION_PASSWORDのみを指定した場合、ENCRYPTIONのデフォルト値はALLとなります。ENCRYPTIONとENCRYPTION_PASSWORDのいずれも指定しない場合、ENCRYPTIONのデフォルト値はNONEとなります。

ALL、DATA_ONLYまたはMETADATA_ONLYを指定するには、COMPATIBLE初期化パラメータを11.1以上に設定する必要があります。

注意: エクスポート対象のデータに暗号化が必要なSecureFilesが含まれている場合は、ENCRYPTION=ALLを指定してダンプ・ファイル・セット全体を暗号化する必要があります。ダンプ・ファイル・セット全体の暗号化は、データ・ポンプ・エクスポート操作中にSecureFilesの暗号化セキュリティを実現する唯一の方法です。

ENCRYPTION_ALGORITHM

TEXT

エクスポート

暗号化の実行に使用する必要のある暗号化アルゴリズムを指定します。設定可能な値は、AES128、AES192およびAES256です。

ENCRYPTION_ALGORITHMパラメータを使用する場合は、ENCRYPTIONまたはENCRYPTION_PASSWORDも指定する必要があり、指定しない場合は、エラーが戻されます。暗号化アルゴリズムの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

このパラメータには、11.1以上のジョブ・バージョンが必要です。

デフォルトはAES128です。

ENCRYPTION_MODE

TEXT

エクスポート

暗号化および復号化で使用するセキュリティ・タイプを指定します。値は次のとおりです。

PASSWORDでは、暗号化されたダンプ・ファイル・セットの作成時に、パスワードを指定する必要があります。ダンプ・ファイル・セットをインポートするときは同じパスワードを指定する必要があります。PASSWORDモードでは、ENCRYPTION_PASSWORDパラメータを指定する必要もあります。PASSWORDモードは、ダンプ・ファイル・セットを別のデータベースまたはリモートのデータベースにインポートするときに、送信中にセキュリティを確保する必要がある場合に最適です。

TRANSPARENTを指定すると、必要なOracle Encryption Walletが使用可能な場合に、暗号化されたダンプ・ファイル・セットをデータベース管理者(DBA)による介入なしで作成できます。したがって、ENCRYPTION_PASSWORDパラメータは必要なく、実際にTRANSPARENTモードで使用するとエラーが発生します。この暗号化モードは、ダンプ・ファイル・セットをエクスポート元と同じデータベースにインポートする場合に最適です。

DUALでは、Oracle Encryption WalletまたはENCRYPTION_PASSWORDパラメータで指定したパスワードのいずれかを使用して後からインポートすることができる、ダンプ・ファイル・セットが作成されます。DUALモードは、Oracle Encryption Walletを使用してダンプ・ファイル・セットをオンサイトにインポートし、Oracle Encryption Walletを使用できないオフサイトにもインポートが必要な場合に最適です。

ENCRYPTION_MODEパラメータを使用する場合は、ENCRYPTIONまたはENCRYPTION_PASSWORDパラメータのいずれかを使用する必要もあります。そうでない場合は、エラーが戻されます。

DUALまたはTRANSPARENTモードを使用するには、COMPATIBLE初期化パラメータを11.1以上に設定する必要があります。

デフォルト・モードは、使用されるその他の暗号化関連パラメータによって異なります。ENCRYPTIONのみを指定した場合、デフォルト・モードはTRANSPARENTとなります。ENCRYPTION_PASSWORDが指定され、Oracle Encryption Walletがオープン状態の場合、デフォルトはDUALとなります。ENCRYPTION_PASSWORDを指定し、Oracle Encryption Walletがクローズしている場合、デフォルトはPASSWORDとなります。

ENCRYPTION_PASSWORD

TEXT

エクスポートおよびインポート

エクスポート操作では、ENCRYPTION_MODEをPASSWORDまたはDUALのいずれかに設定した場合に、このパラメータが必要になります。これは、暗号化された表領域あるいは暗号化された列のある表のいずれかがデータベースに含まれている場合、トランスポータブル・エクスポートまたはインポート操作(job mode=FULLおよびTRANSPORTABLE=ALWAYS)にも必要です。

ESTIMATE

TEXT

エクスポートおよびインポート

表のサイズの見積りメソッドが、ジョブの開始前に実行されるように指定します。

BLOCKSを指定すると、ユーザー表に割り当てられたブロック数を使用して、ユーザー表の見積りサイズが計算されます。

STATISTICSを指定すると、ユーザー表の見積りサイズが、個々の表に関連付けられた統計を使用して計算されます。統計が表に関連付けられていない場合は、BLOCKSを使用して表のサイズが見積もられます。

ESTIMATEパラメータは、トランスポータブル表領域モードでは使用できません。

デフォルトはBLOCKSです。

ESTIMATE_ONLY

NUMBER

エクスポート

エクスポート・ジョブの見積り部分のみが実行されるように指定します。このオプションは、エクスポートのサイズが不明の場合にダンプ・ファイルのサイズを見積もる場合に役立ちます。

FLASHBACK_SCN

NUMBER

エクスポートおよびネットワーク・インポート

ユーザー・データを読み取るためのトランザクション一貫性ポイントとして機能するシステム変更番号(SCN)。FLASHBACK_SCNまたはFLASHBACK_TIMEのどちらも指定しない場合は、ロジカル・スタンバイ・データベースおよびStreamsのターゲットを除いて、パーティション間にトランザクション一貫性は存在しません。FLASHBACK_SCNは、トランスポータブル・モードではサポートされません。

FLASHBACK_TIME

TEXT

エクスポートおよびネットワーク・インポート

ユーザー・データを読み取るための一貫性ポイントの決定で使用される日付と時間、あるいはTO_TIMESTAMP(...)という書式の文字列。

FLASHBACK_SCNまたはFLASHBACK_TIMEのどちらも指定しない場合は、パーティション間にトランザクション一貫性は存在しません。

FLASHBACK_SCNおよびFLASHBACK_TIMEの両方を、同じジョブに対して指定できません。FLASHBACK_TIMEは、トランスポータブル・モードではサポートされません。

INCLUDE_METADATA

NUMBER

エクスポートおよびインポート

0(ゼロ)以外に設定すると、ユーザー表のデータとともにオブジェクトのメタデータが移動します。

0(ゼロ)に設定すると、オブジェクトのメタデータは移動しません。このパラメータは、エクスポート操作をユーザー・データのアンロードに変換し、インポート操作をユーザー・データのロードに変換します。

INCLUDE_METADATAは、トランスポータブル・モードではサポートされません。

デフォルトは1です。

KEEP_MASTER

NUMBER

エクスポートおよびインポート

正常に完了したデータ・ポンプ・ジョブの最後に、マスター表を削除するか、または保持するかを指定します。ジョブが正常に完了しなかった場合、マスター表は自動的に保持されます。

デフォルトは0です。

LOGTIME

TEXT

エクスポートおよびインポート

エクスポート操作中およびインポート操作中に表示されるメッセージに、タイムスタンプを設定するように指定します。有効なオプションは次のとおりです。

- NONE: ステータス・メッセージまたはログ・ファイル・メッセージにタイムスタンプを表示しません(デフォルト)。

- STATUS: ステータス・メッセージのみでタイムスタンプを表示します。

- LOGFILE: ログ・ファイル・メッセージのみでタイムスタンプを表示します。

- ALL: ステータス・メッセージとログ・ファイル・メッセージの両方ともにタイムスタンプを表示します。

MASTER_ONLY

NUMBER

インポート

マスター表の内容を確認できるように、マスター表のみをインポートしてジョブを停止するかどうかを示します。

デフォルトは0です。

METRICS

NUMBER

エクスポートおよびインポート

ジョブに関する詳細情報をデータ・ポンプ・ログ・ファイルに記録するかどうかを示します。

デフォルトは0です。

PARTITION_OPTIONS

TEXT

インポート

インポート操作中に、パーティション化された表を処理する方法を指定します。オプションは次のとおりです。

NONEは、パーティションがソース・データベースに存在していたのと同様にターゲット・データベースで再生成されることを意味します。

DEPARTITIONは、ジョブに記憶域が含まれる各パーティションまたはサブパーティションが、パーティション化されていない個々の表として再生成されることを意味します。サブパーティション化された中間パーティションは、(そのサブパーティションが表に変換される場合でも)再作成されません。作成される表の名前は、REMAP_TABLEメタデータ変換によってその名前が上書きされないかぎり、元の表の名前およびパーティションの名前からシステムによって生成されます。

MERGEは、パーティション化された各表が、パーティション化されていない表としてターゲット・データベースに再作成されることを意味します。すべてのソース・パーティションからのデータは、単一の記憶域セグメントにマージされます。このオプションは、トランスポータブル・ジョブの場合またはTRANSPORTABLEパラメータをALWAYSにした場合は、サポートされません。

このパラメータには、11.1以上のジョブ・バージョンが必要です。

デフォルトはNONEです。

REUSE_DATAFILES

NUMBER

インポート

インポート・ジョブで、表領域の作成に既存のデータ・ファイルを再利用するかどうかを指定します。

デフォルトは0です。

SKIP_UNUSABLE_INDEXES

NUMBER

インポート

0(ゼロ)以外に設定すると、使用できない索引が含まれる表に行が挿入されます。SKIP_UNUSABLE_INDEXESは、トランスポータブル・モードではサポートされません。

デフォルトは1です。

SOURCE_EDITION

TEXT

エクスポートおよびネットワーク・インポート

エクスポートおよびネットワーク・インポートのためにアンロードするオブジェクトを決定するために使用されるアプリケーション・エディション。

STREAMS_CONFIGURATION

NUMBER

インポート

エクスポート・ダンプ・ファイル内に存在するStreamsメタデータをインポートするかどうかを指定します。

デフォルトは1です。

TABLE_EXISTS_ACTION

TEXT

インポート

既存の表にデータがロードされるときに実行されるアクションを指定します。指定可能なアクションは、TRUNCATE、REPLACE、APPENDおよびSKIPです。

INCLUDE_METADATA=0の場合、TRUNCATEおよびAPPENDのみがサポートされます。

TRUNCATEを指定すると、インポートによって行が挿入される前に、既存の表から行が削除されます。

外部キー制約で参照される表に対してTRUNCATEを指定した場合、TRUNCATEはREPLACEに変更される点に注意してください。

REPLACEを指定すると、既存の表が新しい定義で置き換えられます。新しい表が作成される前に、既存の表が削除されます。

APPENDを指定すると、表の既存の行に新規の行が追加されます。

SKIPを指定すると、既存の表は変更されずそのまま残ります。

TABLE_EXISTS_ACTIONは、トランスポータブル・モードではサポートされません。

インポートにメタデータが含まれる場合のデフォルトは、SKIPです。INCLUDE_METADATAを0(ゼロ)に設定した場合、デフォルトはAPPENDです。

TABLESPACE_DATAFILE

TEXT

インポート

トランスポータブル表領域セット内のデータファイルに対して完全なファイル指定を指定します。TABLESPACE_DATAFILEは、トランスポータブル・モードのインポートでのみ有効です。

TABLESPACE_DATAFILEは複数回指定できますが、指定ごとに異なる値を設定する必要があります。

TARGET_EDITION

TEXT

インポート

インポートおよびネットワーク・インポートのためにオブジェクトをロードする場所を決定するために使用されるアプリケーション・エディション。

TRANSPORTABLE

TEXT

エクスポート(およびネットワーク・インポートまたはフル・モード・インポート)

このオプションは、表モードで実行されるエクスポート操作用です。また、フル・モード・インポートとネットワーク・インポートでも利用されます。トランスポータブル表領域を使用したデータ移動を可能にします。

親スキーマ(表)に関連付けられていない移動済の表領域の表モードの記憶域セグメントは、インポート時に再要求されます。個々のパーティションが表モードのジョブで選択された場合、これらのパーティションで参照される表領域のみが移動します。インポート中、移動したパーティションは、PARTITION_OPTIONS=DEPARTITIONパラメータを使用して表としてのみ再構成できます。

TRANSPORTABLEパラメータを使用すると、下位バージョンのデータベースまたは異なるキャラクタ・セットを使用したデータベースへのダンプ・ファイルの後続のインポートは禁止されます。また、ターゲット・データベースが異なるプラットフォームに存在する場合、データファイルを変換する必要がある場合もあります。

表モードでは、OPENコールでネットワーク・リンクが指定される場合は、TRANSPORTABLEパラメータを使用できません。

このパラメータに指定できる値は次のとおりです。

ALWAYS: データの移動は、常にデータファイルの移動によって行われます。このオプションは、表モードとフル・モードでのみ有効です。

NEVER: ユーザー・データのコピーにデータファイルは使用されません。

このパラメータには、11.1以上のジョブ・バージョンが必要です。

ジョブ・モードがFULLの場合、このパラメータには、12.1以上のジョブ・バージョンが必要です。

デフォルトはNEVERです。

TTS_FULL_CHECK

NUMBER

エクスポート

0(ゼロ)以外に設定すると、トランスポータブル表領域セットがこのセット以外のオブジェクトに対して依存性(具体的にはINポインタ)がなく、セットのほうでもこのオブジェクトに対して依存性がないことが検証されます。トランスポータブル・モードのエクスポートでのみ有効です。

デフォルトは0(ゼロ)です。

USER_METADATA

NUMBER

エクスポートおよびネットワーク・インポート

スキーマ・モードの操作では、0(ゼロ)以外に設定すると、ユーザーのスキーマを作り直すメタデータ(エクスポートされたスキーマへの権限付与など)も操作の一部として指定されます。設定ユーザーは、このパラメータを設定する権限を明示的に与えられている必要があります。

USER_METADATAパラメータは、表モード、表領域モード、トランスポータブル表領域モードでは使用できません。

ユーザーがDATAPUMP_EXP_FULL_DATABASEロールを持っている場合、デフォルトは1です。その他の場合は0(ゼロ)です。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_ARGVAL。この例外は、次のいずれかの原因によるものです。

- 入力パラメータに無効な名前が指定されました。

- valueに不適切なデータ・タイプが使用されています。

- valueが指定されていません。

- 指定したvalueは、指定のパラメータ名では許可されていません。

- フラッシュバック・パラメータが設定されていますが、別のフラッシュバック・パラメータがすでに設定されています。

- 複製定義をサポートしないパラメータが指定されました。

- INVALID_OPERATION。指定された操作は、このコンテキストでは無効です。

- INVALID_STATE。指定されたジョブは、定義中の状態にありません。

- INCONSISTENT_ARGS。指定されたパラメータは現行の操作タイプでサポートされていないか、現行のモードでサポートされていません。

- PRIVILEGE_ERROR。このユーザーには、指定されたパラメータに必要なDATAPUMP_EXP_FULL_DATABASEロールまたはDATAPUMP_IMP_FULL_DATABASEロールがありません。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- SET_PARAMETERプロシージャは、現行のジョブにオプション機能を指定するために使用します。サポートされるオプションのリストについては、表47-24を参照してください。

START_JOBプロシージャ

このプロシージャは、ジョブの実行を開始または再開します。

構文

DBMS_DATAPUMP.START_JOB (
handle       IN NUMBER,
skip_current    IN  NUMBER DEFAULT 0,
abort_step      IN  NUMBER DEFAULT 0,
cluster_ok      IN  NUMBER DEFAULT 1,
service_name    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表47-25 START_JOBプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。

skip_current

0(ゼロ)以外に設定すると、前回ジョブを実行したときに進行中だったアクションは、ジョブの再開時にスキップされます。スキップは、インポート・ジョブのみで有効です。この仕組みにより、致命的なバグを引き起こし、ジョブの不完全終了の原因となるアクションをスキップできます。再開時には複数のアクションをスキップできます。スキップされたアクションは、ログ・ファイルで特定できます。前回ドメイン索引を処理中だった場合は、ドメイン索引のサブコンポーネントのみでエラーが発生した場合でも、再開時にはドメイン索引のすべての部分がスキップされます。

スキップされたアクションに関する説明は、ログ・ファイルに記録されます。skip_currentは、ジョブで最初にSTART_JOBをコールした場合には無視されます。

0(ゼロ)に設定した場合は、再開時に失われるデータやメタデータはありません。

abort_step

値は0にする必要があります。この引数に0以外の値を挿入すると、意図しない結果が発生します。

cluster_ok

0の場合、すべてのワーカーは現在のインスタンスで開始されます。それ以外の場合、ワーカーはジョブで使用できるインスタンスで開始されます。

service_name

指定すると、ジョブを特定のインスタンスまたは特定のリソース・グループに制約するために使用されるサービス名を示します。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID_STATE。この例外の原因は、次のいずれかです。

- エクスポート・ジョブ、ネットワーク以外のインポート・ジョブまたはSQL_FILEジョブに対してファイルがまったく定義されていません。

- SQL_FILEジョブに出力を定義するためのADD_FILEプロシージャがコールされていません。

- トランスポータブル・モードのインポート・ジョブにTABLESPACE_DATAFILEパラメータが定義されていません。

- トランスポータブル・モードまたは表領域モードのエクスポート・ジョブまたはネットワーク・ジョブにTABLESPACE_EXPRメタデータ・フィルタが定義されていません。

- インポート・ジョブまたはSQL_FILEジョブのダンプ・ファイル・セットが不完全であるか、マスター表の指定がありません。

- INVALID_OPERATION。ダンプ・ファイル・セットからマスター表をリストアできません。

- INTERNAL_ERROR。ジョブの開始時に非一貫性が検出されました。詳細は、GET_STATUSプロシージャを使用して参照できます。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- 該当するジョブの開始または再開を要求するためにこのプロシージャがコールされると、ジョブの状態が定義中またはアイドルから実行中に変わります。

- SET_PARALLELプロシージャがSTART_JOBプロシージャの前にコールされていない場合は、ジョブで使用される並列度の初期値は1になります。ジョブの開始前にSET_PARALLELがコールされた場合は、最後のSET_PARALLELコールで指定されたdegreeによってジョブの並列度が決定されます。再開時のジョブの並列度は、別のSET_PARALLELコールが優先されない限り、前回の並列度設定によって決定されます。

- 停止したジョブを再開する場合は、START_JOBプロシージャを実行する前にATTACHファンクションを実行する必要があります。

STOP_JOBプロシージャ

このプロシージャはジョブを終了させますが、オプションでジョブの状態を保存できます。

構文

DBMS_DATAPUMP.STOP_JOB (
handle      IN NUMBER,
immediate   IN NUMBER DEFAULT 0,
keep_master IN NUMBER DEFAULT NULL,
delay       IN NUMBER DEFAULT 60);

パラメータ

表47-26 STOP_JOBプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。このプロシージャが終了すると、ユーザーはハンドルから連結を解除されます。

immediate

0(ゼロ)以外に設定すると、ワーカー・プロセスは即座に中断されます。これによって、ジョブは速く停止しますが、将来ジョブを再開する場合にジョブの一部の再実行が必要になります。

0(ゼロ)に設定すると、ワーカー・プロセスは終了する前に現行の作業項目(メタデータまたは表データ)を完了できます。現行の作業を終了中、ジョブは停止保留中の状態になります。

keep_master

0(ゼロ)以外に設定すると、ジョブの停止時にマスター表が保存されます。0(ゼロ)に設定すると、ジョブの停止時にマスター表が削除されます。マスター表が削除されると、ジョブを再開できなくなります。エクスポート・ジョブの最中にマスター表が削除された場合、作成されたダンプ・ファイルは削除されます。

delay

連結している他のセッションが強制的に連結を解除されるまでに待機する秒数。遅延を利用して、このジョブに連結している他のセッションに対して、停止が実行されたことを通知できます。すべてのクライアントが連結を解除するか遅延が完了するまで、ジョブの稼働状態が保たれます。遅延を指定しない場合、デフォルトの遅延は60秒です。遅延をあまり短く指定すると、クライアントがGET_STATUSプロシージャからジョブの最終メッセージを取得できない可能性があります。

例外

- INVALID_HANDLE。指定されたハンドルは、データ・ポンプ・ジョブに連結していません。

- INVALID STATE。ジョブはすでに停止状態または完了状態にあります。

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUSプロシージャを使用するとさらに詳しい情報が得られます。

- NO_SUCH_JOB。指定されたジョブは存在しません。

使用上の注意

- このプロシージャは、該当ジョブの実行停止を要求するために使用します。

- 実行中状態のジョブを終了するには、正常な方法で完了するために数分かかることがあります。

- 定義中、アイドル、完了中の状態にあるジョブの場合、このプロシージャの機能はDETACHプロシージャの機能と同じになります。

- いったん停止したジョブは、マスター表とダンプ・ファイル・セットが元の状態で残されているかぎり、ATTACHファンクションおよびSTART_JOBプロシージャを使用して再開できます。

- KEEP_MASTERパラメータを指定しない場合で、ジョブが定義中の状態にあるかトランスポータブル・モードの場合、マスター表は削除されます。それ以外の場合、マスター表は保持されます。

WAIT_FOR_JOBプロシージャ

このプロシージャは、正常に完了するか、またはなんらかの理由で停止するまでジョブを実行します。

構文

DBMS_DATAPUMP.WAIT_FOR_JOB (
handle      IN   NUMBER,
job_state   OUT  VARCHAR2);

パラメータ

表47-27 WAIT_FOR_JOBプロシージャのパラメータ

パラメータ

説明

handle

ジョブのハンドル。現行のセッションは、OPENファンクションまたはATTACHファンクションへのコールを使用して、あらかじめこのハンドルに連結しておく必要があります。このプロシージャが終了すると、ユーザーはハンドルから連結を解除されます。

job_state

実行を停止したときのジョブの状態(STOPPEDまたはCOMPLETEDのどちらか)。

例外

- SUCCESS_WITH_INFO。このプロシージャは成功しましたが、GET_STATUS APIを使用するとさらに詳しい情報が得られます。

- INVALID_HANDLE。ジョブ・ハンドルが有効ではありません。

使用上の注意

このプロシージャは、データ・ポンプ・ジョブの完了を待機する簡単なメカニズムです。このジョブは、WAIT_FOR_JOBをコールする前に開始する必要があります。WAIT_FOR_JOBが戻されると、ジョブは実行されなくなります。ジョブが正常に完了すると、最終ステータスはCOMPLETEDになります。ジョブがSTOP_JOB要求または内部エラーのため実行を停止した場合、最終ステータスはSTOPPEDになります。

48 DBMS_DBFS_CONTENT

DBMS_DBFS_CONTENTパッケージは、1つ以上のストア・プロバイダによってサポートされるファイル・システムのような抽象化を構成するインタフェースを提供します。

関連項目:

『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

この章では、次の項目について説明します。

- DBMS_DBFS_CONTENTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例外

- 使用上の注意

- データ構造

- DBMS_DBFS_CONTENTサブプログラムの要約

DBMS_DBFS_CONTENTの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例外

- 使用上の注意

概要

DBMS_DBFS_CONTENTパッケージは、Oracleデータベースをクライアント側のDBFSに接続するインタフェースを提供します。

サーバー側では、DBMS_DBFS_CONTENTパッケージはDBMS_DBFS_CONTENT_SPIパッケージによってサポートされています。このパッケージには、DBFSストアの実際の実装ではなく、DBFSストアの記述が含まれます。

関連項目:

- DBMS_DBFS_CONTENTおよびDBFSアーキテクチャの詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

- DBMS_DBFS_CONTENTパッケージの概念については、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

セキュリティ・モデル

DBMS_DBFS_CONTENTパッケージはAUTHID CURRENT_USER下で実行されます。

定数

DBMS_DBFS_CONTENTパッケージでは、次の表に示す定数が使用されます。

- DBMS_DBFS_CONTENTの定数: パス名

- DBMS_DBFS_CONTENTの定数: コンテンツID

- DBMS_DBFS_CONTENTの定数: プロパティ

- DBMS_DBFS_CONTENTの定数: パス名タイプ

- DBMS_DBFS_CONTENTの定数: ストア機能

- DBMS_DBFS_CONTENTの定数: ロック・タイプ

- DBMS_DBFS_CONTENTの定数: 標準プロパティ

- DBMS_DBFS_CONTENTの定数: オプションのプロパティ

- DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ

- DBMS_DBFS_CONTENTの定数: 操作コード

パス名の定数およびタイプ

次の定数は、パスと項目名の宣言に役立ちます。パスは1024文字に制限され、項目名は256文字に制限されます。

表48-1 DBMS_DBFS_CONTENTの定数 - パス名

定数

タイプ

値

説明

NAME_MAX

PLS_INTEGER

256

クライアントが参照できる絶対パス名の最大長。

NAME_T

VARCHAR2(256)

NAME_MAX

コンポーネント名を表すことができる文字列のポータブル別名。

PATH_MAX

PLS_INTEGER

1024

クライアントが参照できる絶対パス名の個別コンポーネントの最大長。

PATH_T

VARCHAR2(1024)

PATH_MAX

パス名を表すことができる文字列のポータブル別名。

コンテンツID定数

ストアは、ストアにある特定のパス項目を表す一意識別子をユーザーに表示できます。これらの識別子は128文字に制限されます。

表48-2 DBMS_DBFS_CONTENTの定数: コンテンツID

定数

タイプ

値

説明

CONTENT_ID_MAX

PLS_INTEGER

128

ファイル・タイプのコンテンツ項目を識別する、ストア固有のプロバイダによって生成されたコンテンツIDの最大長。

CONTENT_ID_T

RAW(128)

CONTENT_ID_MAX

コンテンツID値を表すことができるRAWバッファのポータブル別名。

パスのプロパティの定数

ストアにあるすべてのパス名はプロパティのセットと関連付けられています。各プロパティは文字列「名前」、文字列「値」(未設定、未定義または特定のストア実装でサポートされていない場合は、NULL)および値「typecode」(「値」文字列で保持される実際の値のタイプに対する数値判別式)で識別されます。

表48-3 DBMS_DBFS_CONTENTの定数: プロパティ

定数

タイプ

値

説明

PROPNAME_MAX

PLS_INTEGER

32

プロパティ名の最大長。

PROPNAME_T

VARCHAR2(32)

PROPNAME_MAX

プロパティ名を表すことができる文字列のポータブル別名。

PROPVAL_MAX

PLS_INTEGER

1024

プロパティの文字列の最大長。

PROPVAL_T

VARCHAR2(1024)

PATH_MAX

プロパティの値を表すことができる文字列のポータブル別名。

パス名タイプの定数

ストアのパス項目には関連付けられた項目タイプがあります。これらのタイプは、項目がストアで表すエントリの種類を表します。

表48-4 DBMS_DBFS_CONTENTの定数: パス名タイプ

定数

タイプ

値

説明

TYPE_FILE

PLS_INTEGER

1

コンテンツを格納する標準のファイル(BLOBとしてアクセスされるバイトの論理的に線形な順序)。

TYPE_DIRECTORY

PLS_INTEGER

2

ファイル・タイプなど、他のパス名タイプのコンテナ。

TYPE_LINK

PLS_INTEGER

3

シンボリック・リンク(つまり、パス名と関連付けられている未解釈文字列)。シンボリック・リンクは、指定したどのストア(または、DBMS_DBFS_CONTENTインタフェースによって管理されるストア全体の集計)の範囲から外れるパス名を表す場合やパス名を表さない場合もあるため、クライアントは注意してシンボリック・リンクを作成する必要があり、ストアはこれらのリンクを内部的に解決するように注意する必要があります。

TYPE_REFERENCE

PLS_INTEGER

4

コンテンツに対して常に有効なパスの別名であるハード・リンク。

ストア機能の定数

DBFSコンテンツAPIでは、様々なストア・プロバイダ(および様々なストア)が機能セット(サポートする機能とサポートしない機能を示すビットマスク)によって自分たちを記述できるようにします。

表48-5 DBMS_DBFS_CONTENTの定数 - ストア機能

定数

タイプ

値

説明

FEATURE_FOLDERS

PLS_INTEGER

1

ストアが階層パス名の一部としてフォルダ(またはディレクトリ)をサポートする場合に設定します。

FEATURE_FOIAT

PLS_INTEGER

2

ストア内の暗黙的なフォルダ操作が自律型トランザクション内部で実行される場合に設定します。通常、自律型トランザクションの使用は、(a)並行性を大幅に犠牲にして得られる、実装の簡略化およびすべての操作に対するクライアント制御トランザクションの範囲(FEATURE_FOIATを設定しない)と(b)並行性を大幅に向上させて得られる、複雑な実装と狭いクライアント制御トランザクション範囲(FEATURE_FOIATを設定)の間での妥協です。

FEATURE_NOWAIT

PLS_INTEGER

4

ストアがパス要素のnowait取得を許可する場合に設定します。デフォルトの動作では、行のロックを待機し、nowait取得が実装されている場合、パス要素が別のトランザクションによってすでにロックされていると、取得操作によってORA-54例外が発生します。

FEATURE_ACLS

PLS_INTEGER

8

ストアがアクセス制御リスト(ACL)およびこれらのACLに基づく内部認証またはチェックをサポートする場合に設定します。ACLは標準のプロパティですが、ストアはACLを格納し取得するだけでいかなる方法での解釈も行わない場合があります。

FEATURE_LINKS

PLS_INTEGER

16

ストアがシンボリック・リンクをサポートする場合で、特定タイプのシンボリック・リンク(具体的には、絶対パス名以外)がストア自身によって内部的に解決できる場合に設定します。

FEATURE_LINK_DEREF

PLS_INTEGER

32

ストアがシンボリック・リンクをサポートする場合で、特定タイプのシンボリック・リンク(具体的には、絶対パス名以外)がストア自身によって内部的に解決できる場合に設定します。

FEATURE_REFERENCES

PLS_INTEGER

64

ストアがハード・リンクをサポートする場合に設定します。

FEATURE_LOCKING

PLS_INTEGER

128

ストアが、ストアの各種アイテムに適用可能なユーザー・レベルのロック(読取り専用、書込み専用、読取り/書込み)をサポートし、それらのロック設定を使用してロックされたアイテムへの各種タイプのアクセスを制御する場合に設定します。ユーザー・レベルのロックは、トランザクション・ロックに対して直交し、特定のトランザクション、セッションまたは接続の範囲を超えて存続しますが、これは、ロックの参照先が不明になった後、ストア自身ではクリーンアップできない可能性があり、クライアント・アプリケーションがガベージ・コレクションを実行する必要があるということです。

FEATURE_LOCK_HIERARCHY

PLS_INTEGER

256

ユーザー・ロックがロックされたパス名の下にあるサブツリー全体へのアクセスを制御することをストアが許可する場合に設定します。

FEATURE_LOCK_CONVERT

PLS_INTEGER

512

ロックがあるモードから別のモードにアップグレードまたはダウングレードすることをストアがサポートする場合に設定します。

FEATURE_VERSIONING

PLS_INTEGER

1024

ストアが少なくとも線形バージョニングおよびバージョン管理をサポートする場合に設定します。バージョンが異なる同じパス名は単調バージョン番号によって識別され、バージョン非修飾パス名が最新バージョンを表します。

FEATURE_VERSION_PATH

PLS_INTEGER

2048

ストアが、バージョンが異なるパス名の階層ネームスペースをサポートする場合に設定します。

FEATURE_SOFT_DELETES

PLS_INTEGER

4096

ストアで、ソフト削除(パス名を削除して通常の操作で非表示にするが、後でパス名をリストアする機能(新規作成操作で上書きされない場合)を保持する)をサポートする場合に設定します。ストアでは、ソフト削除されたパス名のパージ(完全な削除)、およびソフト削除された項目を表示するナビゲーション・モードもサポートされます。

FEATURE_HASHING

PLS_INTEGER

8192

ストアが、パス名のコンテンツのうち特定タイプのセキュア・ハッシュ(通常、TYPE_FILEパス)を自動的に計算し保守する場合に設定します。

FEATURE_HASH_LOOKUP

PLS_INTEGER

16384

ストアが「コンテンツ・ベースのアドレッシング」を許可する場合に設定します。これは、パス名ではなくコンテンツ・ハッシュに基づいてコンテンツ項目を探す機能です。

FEATURE_FILTERING

PLS_INTEGER

32768

クライアントが、指定したストア項目が選択述語を満たすかどうかを示す論理ブール値を戻すフィルタ関数(下記のシグネチャに適合するPL/SQLファンクション)を渡すことをストアが許可する場合に設定します。フィルタリングをサポートするストアは、フィルタリング・ロジックを実装内部に組み込むことによって、さらに効率的に項目リスト、ディレクトリ・ナビゲーションおよび削除を実行できる可能性があります。フィルタリングがサポートされていない場合、クライアントは必要以上の項目を取得でき、効率は下がりますが、自分でフィルタリング・チェックを実行できます。

フィルタ述語は次のシグネチャがある関数です。

function filterFunction(
path        IN   VARCHAR2,
store_name  IN   VARCHAR2,
opcode      IN   INTEGER,
item_type   IN   INTEGER,
properties  IN   DBMS_DBFS_CONTENT_PROPERTIES_T,
content     IN   BLOB)
RETURN  INTEGER;

このシグネチャに準拠する任意のPL/SQLファンクションは、ストア項目のコンテンツおよびプロパティを調べ、項目が現在の操作の選択基準を満たすかどうかを判断できます。0 (ゼロ)以外の戻り値の場合は、DBMS_DBFS_CONTENTインタフェースが現在の操作の一部として項目を処理し、戻り値が0 (ゼロ)またはNULLの場合は、項目が処理からスキップされます。

FEATURE_SEARCHING

PLS_INTEGER

65536

クライアントがコンテンツに基づいてtype_fileパス名を探すテキスト検索フィルタ問合せを渡すことをストアが許可する場合に設定します。検索をサポートするストアは検索を高速化するために索引を使用する場合があり、使用しない場合、クライアントは独自の索引を作成する必要があり、作成しない場合は、現在の検索で対象となる項目を探すために大きい可能性がある項目セットを検索する必要があります。

FEATURE_ASOF

PLS_INTEGER

131072

クライアントが、問合せ操作(変化しないGETPATHプロシージャおよびLISTファンクション)でフラッシュバック・タイムスタンプを使用することをストアが許可する場合に設定します。

FEATURE_PROVIDER_PROPS

PLS_INTEGER

262144

ストアが操作単位のプロパティ(個別の項目に関連付けられているプロパティではなく、現在の操作に関するストアの動作を制御)を許可する場合に設定します。

FEATURE_SNAPSHOTS

PLS_INTEGER

524288

ストアが、コンテンツの名前付き、読取り専用スナップショットの使用を許可する場合に設定します。適切な手段(コンテンツの即時コピーの作成、またはコピー・オン・ライトの使用など)を使用し、スナップショットと親コンテンツ・ビュー間の依存関係を管理することで、スナップショットを実装することはプロバイダが決定します。

FEATURE_CLONES

PLS_INTEGER

1048576

ストアが、コンテンツの名前付き、書込み可能なクローンの使用を許可する場合に設定します。適切な手段(コンテンツの即時コピーの作成、またはコピー・オン・ライトの使用など)を使用し、クローンと親コンテンツ・ビュー間の依存関係を管理することで、クローンを実装することはプロバイダが決定します。

FEATURE_LOCATOR

PLS_INTEGER

2097152

ストアが、LOBロケータによるファイル・コンテンツへの直接アクセスを許可する場合に設定します。ファイル・コンテンツを断片化し別のファイル・コンテンツに再アセンブリしたりその他の変換を実行したりすることで内部的にファイル・コンテンツを操作するストアは、LOBロケータを透過的にクライアントに付与することはできません。これらのストアのファイル・コンテンツは、バッファ・ベースのインタフェースを使用してアクセスする必要があります。

FEATURE_CONTENT_ID

PLS_INTEGER

4194304

ストアが、ファイルに対する「パスなし」でコンテンツIDベースのアクセスを許可する場合に設定します(このモデルにはディレクトリ、リンク、参照の概念がありません)。

FEATURE_LAZY_PATH

PLS_INTEGER

8388608

ストアが、コンテンツIDによっても識別されるファイル・コンテンツ要素へのパス名のレイジー・バインドを許可する場合に設定します。この機能は、FEATURE_CONTENT_IDと組み合せて使用する場合のみ意味があります。

ロック・タイプの定数

ロックをサポートするストアは、LOCK_READ_ONLY、LOCK_WRITE_ONLYおよびLOCK_READ_WRITEという3タイプのロックを実装する必要があります。

表48-6 DBMS_DBFS_CONTENTの定数: ロック・タイプ

定数

タイプ

値

説明

LOCK_READ_ONLY

PLS_INTEGER

1

読取り専用としてロック

LOCK_WRITE_ONLY

PLS_INTEGER

2

書込み専用としてロック

LOCK_READ_WRITE

PLS_INTEGER

3

読取り/書込みとしてロック

標準プロパティの定数

標準プロパティは、ある程度の例外付きで、すべてのストアが(コンテンツ・インタフェースに説明されている方法で)サポートする必要のあるすべてのコンテンツ・パス名と関連付けられている、明確に定義された必須プロパティです。たとえば、読取り専用ストアでは、modification_timeやcreation_timeを実装する必要はありません。

すべての標準プロパティでは、非公式に、STDネームスペースが使用されますが、クライアントとストアでは使用しないでください。

表48-7 DBMS_DBFS_CONTENTの定数: 標準プロパティ

定数

タイプ

値

説明

STD_ACCESS_TIME

VARCHAR2(32)

'std:access_time'

UTCのTYPECODE_TIMESTAMP: パス名のコンテンツの最終アクセス時間。

STD_ACL

VARCHAR2(32)

'std:acl'

TYPECODE_VARCHAR2: パス名と関連付けられたアクセス制御リスト(標準ACL構文)。

STD_CANONICAL_PATH

VARCHAR2(32)

'std:canonical_path'

TYPECODE_VARCHAR2: ある項目の正規のストア固有パス名。

STD_CHANGE_TIME

VARCHAR2(32)

'std:change_time'

UTCのTYPECODE_TIMESTAMP: パス名のメタデータの最終変更時間。

STD_CHILDREN

VARCHAR2(32)

'std:children'

TYPECODE_NUMBER: ディレクトリ/フォルダのパスが持つ子ディレクトリ/フォルダの数(このプロパティは、FEATURE_FOLDERS機能をサポートするプロバイダで使用できる必要があります)。

STD_CONTENT_TYPE

VARCHAR2(32)

'std:content_type'

TYPECODE_NUMBER: パス名(通常type_file)を記述する、クライアントで提供されるMIMEタイプ(標準RFC構文)。コンテンツ・タイプは、ストアにより必ず解析されるとはかぎりません。

STD_CREATION_TIME

VARCHAR2(32)

'std:creation_time'

UTCのTYPECODE_TIMESTAMP: 項目が作成された時間(一度設定すると、この値はパス名の使用期間中変更されません)。

STD_DELETED

VARCHAR2(32)

'std:deleted'

BOOLEANとしてのTYPECODE_NUMBER: パス名がソフト削除され、パージされていない場合に0(ゼロ)以外の値に設定します。

STD_GUID

VARCHAR2(32)

'std:guid'

TYPECODE_NUMBER: パス名に対するストア固有の一意の識別子。クライアントは別のストアでもGUIDが一意であることに依存できませんが、指定した(store-name、store-specific-path name)には、使用期間中安定した一意のGUIDがあります。

STD_LENGTH

VARCHAR2(32)

'std:length'

TYPECODE_NUMBER: TYPE_FILE/TYPE_REFERENCEパスのコンテンツ(BLOB)の長さ、またはTYPE_LINKシンボリック・リンクの参照の長さ。ディレクトリには明確に定義された長さがなく、ストアはこのプロパティをゼロ(0)、NULLまたは任意の値に設定できます。

STD_MODIFICATION_TIME

VARCHAR2(32)

'std:modification_time'

UTCのTYPECODE_TIMESTAMP: パス名と関連付けられたデータの最終変更時間。TYPE_FILE/TYPE_REFERENCEパスのコンテンツの変更、TYPE_LINKパスの参照、TYPE_DIRECTORYパスの直接的な子の追加または削除、これらすべてがデータの変更を構成します。

STD_OWNER

VARCHAR2(32)

'std:owner'

TYPECODE_VARCHAR2: パス名のクライアントが提供する(または暗黙的な)所有者名。所有者名は、ACL、ロックまたは両方をサポートするストアによってアクセス・チェックに(現在の「プリンシパル」とともに)使用されます。

STD_PARENT_GUID

VARCHAR2(32)

'std:parent_guid'

TYPECODE_NUMBER: パス名の親に対するストア固有の一意の識別子。クライアントは別のストアでもGUIDが一意であることに依存できませんが、指定した(store-name、store-specific-path name)には、使用期間中安定した一意のGUIDがあります。

STD_PARENT_GUID(path name) == STD_GUID(parent(path name))

STD_REFERENT

VARCHAR2(32)

'std:referent'

TYPECODE_VARCHAR2: TYPE_LINKパスのシンボリック・リンクのコンテンツ、それ以外の場合はNULL。記述されているとおり、STD_REFERENTは任意の文字列になることができ、必ずしもクライアントでパス名として解釈される必要はありません(このような解釈を行う場合は十分な注意が必要です)。

オプションのプロパティの定数

オプションのプロパティは、すべてのストアが自由に(ただしDBFSコンテンツAPIに説明されている方法にかぎり)サポートできるすべてのコンテンツ・パス名と関連付けられている、明確に定義された(必須ではない)プロパティです。

すべてのオプションのプロパティでは、非公式に、opt:ネームスペースが使用されますが、クライアントとストアでは使用しないでください。

表48-8 DBMS_DBFS_CONTENTの定数: オプションのプロパティ

定数

タイプ

値

説明

OPT_HASH_TYPE

VARCHAR2(32)

'opt:hash_type'

TYPECODE_NUMBER: opt_hash_valueプロパティ内で指定されるハッシュのタイプ。使用可能なオプションは、「DBMS_CRYPTO」を参照してください。

OPT_HASH_VALUE

VARCHAR2(32)

'opt:hash_value'

TYPECODE_NUMBER: パス名のコンテンツを説明するタイプOPT_HASH_TYPEのハッシュ値。

OPT_LOCK_COUNT

VARCHAR2(32)

'opt:lock_count'

TYPECODE_NUMBER: パス名に配置される(互換性のある)ロックの数。異なるプリンシパルがパスに互換性のある(読取り)ロックを配置することが許可される場合、opt_lockerはすべてのロッカーを指定する必要があります(ロックの数が正しく維持できるための繰返しあり)。

OPT_LOCK_DATA

VARCHAR2(32)

'opt:lock_data'

TYPECODE_NUMBER: ユーザー・ロックと関連付けられ、ストアによって解釈されない、クライアントが提供するユーザー・データ。

OPT_LOCKER

VARCHAR2(32)

'opt:locker'

TYPECODE_NUMBER: パス名にユーザー・ロックを適用した、1つ以上の暗黙的なまたはユーザー指定のプリンシパル。

OPT_LOCK_STATUS

VARCHAR2(32)

'opt:lock_status'

TYPECODE_NUMBER: パス名で現在適用されているロックのタイプを説明する、LOCK_READ_ONLY、LOCK_WRITE_ONLY、LOCK_READ_WRITE値のいずれか。

OPT_VERSION

VARCHAR2(32)

'opt:version'

TYPECODE_NUMBER: パス名の線形バージョニングに対する順序番号。

OPT_VERSION_PATH

VARCHAR2(32)

'opt:version_path'

TYPECODE_NUMBER: パス名の階層バージョニングに対するバージョン・パス名。

OPT_CONTENT_ID

VARCHAR2(32)

'opt:content_id'

TYPECODE_NUMBER: ファイル・コンテンツ要素に対する文字列形式のプロバイダによって生成されたストア固有の一意のコンテンツID(ファイル・コンテンツ要素は、オプションでパスと関連付けられていない場合もあります。FEATURE_CONTENT_IDおよびFEATURE_LAZY_PATHを参照)。

プロパティ・アクセス・フラグの定数

プロパティを取得または設定するコンテンツ・インタフェース・メソッドは、プロパティ・アクセス・フラグを組み合せて、単一のインタフェース・コールにある様々なネームスペースからプロパティをフェッチできます。

表48-9 DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ

定数

タイプ

値

説明

PROP_NONE

PLS_INTEGER

0

なし: クライアントがプロパティを必要とせず、他の理由(パス名の存在またはロック可能性の検証、データ・アクセスなど)でコンテンツ・アクセス・メソッドを起動するときに使用します。

PROP_STD

PLS_INTEGER

1

必須: クライアントが標準プロパティを必要とするときに使用します。このフラグが指定された場合、すべての標準プロパティが取得されます。

PROP_OPT

PLS_INTEGER

2

オプション: クライアントがオプションのプロパティを必要とするときに使用します。このフラグが指定された場合、すべてのオプションのプロパティが取得されます。

PROP_USR

PLS_INTEGER

3

ユーザー定義: クライアントがユーザー定義のプロパティを必要とするときに使用します。このフラグが指定された場合、すべてのユーザー定義のプロパティが取得されます。

PROP_ALL

PLS_INTEGER

PROP_STD + PROP_OPT + PROP_USR;

すべて: 標準、オプションおよびユーザー定義のすべてのプロパティの組合せに対する別名。

PROP_DATA

PLS_INTEGER

8

コンテンツ: クライアントがデータ・アクセスのみを必要とし、プロパティを必要としない場合に使用します。

PROP_SPC

PLS_INTEGER

16

固有: クライアントが、各種プロパティ・ネームスペースの異なるサブセットの様々な組合せが必要とされ、フェッチする特定のプロパティの名前が引数としてコンテンツ・インタフェース・メソッド・コールに渡され、これらのプロパティ値のみがフェッチされてクライアントに戻される場合に使用します。これは、アクセス可能なプロパティが多数あり、クライアントがその内の少数のみを必要とする(そして事前にそれら重要なプロパティの名前がわかっている)場合に役立ちます。

PROP_SPCは、様々なGETPATH操作にのみ適用されます。プロパティを指定するその他の操作は、PROP_SPCの指定を無視します。

操作コードの定数

DBFSコンテンツAPIのすべての操作は、抽象的な操作コードとして表されます。

特定のパス名にある指定したプリンシパルによって特定の操作が起動できるかどうかを検証するためにCHECKACCESSファンクションを起動することによって、クライアントは、これらの操作コードを直接また明示的に使用できます。

表48-10 DBMS_DBFS_CONTENTの定数: 操作コード

定数

タイプ

値

説明

OP_CREATE

PLS_INTEGER

1

パス項目を作成します。

OP_CREATEFILE

PLS_INTEGER

OP_CREATE

ファイルを作成します。

OP_CREATELINK

PLS_INTEGER

OP_CREATE

ソフト・リンクを作成します。

OP_CREATEREFERENCE

PLS_INTEGER

OP_CREATE

参照(ハード・リンク)を作成します。

OP_DELETE

PLS_INTEGER

2

ソフト削除、パージおよびリストア操作はすべてOP_DELETEによって表されます。

OP_DELETEFILE

PLS_INTEGER

OP_DELETE

ファイルを削除します。

OP_DELETEDIRECTORY

PLS_INTEGER

OP_DELETE

ディレクトリを削除します。

OP_RESTORE

PLS_INTEGER

OP_DELETE

ソフト削除したパス項目をリストアします。

OP_PURGE

PLS_INTEGER

OP_DELETE

ソフト削除したパス項目をパージします。

OP_READ

PLS_INTEGER

3

パス項目から読み取ります。

OP_GET

PLS_INTEGER

OP_READ

読取り操作または更新操作のためにパス項目を取得します。

OP_WRITE

PLS_INTEGER

4

パス項目を書き込みます。

OP_PUT

PLS_INTEGER

OP_WRITE

パス項目にPUT(書込み)します。

OP_RENAME

PLS_INTEGER

5

パス項目の名前を変更します。

OP_RENAMEFROM

PLS_INTEGER

OP_RENAME

名前の変更元で実行する操作。

OP_RENAMETO

PLS_INTEGER

OP_RENAME

名前の変更先で実行する操作。

OP_SETPATH

PLS_INTEGER

OP_RENAME

パス項目名を設定します。

OP_LIST

PLS_INTEGER

6

パスのリストを実行します。

OP_SEARCH

PLS_INTEGER

7

検索を実行します。

OP_LOCK

PLS_INTEGER

8

パス項目をロックします。

OP_UNLOCK

PLS_INTEGER

9

パス項目をロック解除します。

OP_ACL

PLS_INTEGER

10

STD_ACLプロパティを指定するOP_CREATEまたはOP_PUTの実行中に起動される暗黙的操作。この操作では、プリンシパルがストア項目のACLを設定または変更できるかどうかを確認するためにテストを行います。

OP_STORE

PLS_INTEGER

11

他の操作インタフェースのいずれにも該当しない様々なストア操作のための包括的なカテゴリ。

例外

DBFSコンテンツAPI操作では、次に挙げるトップレベルの例外のいずれかが発生する可能性があります。

表48-11 DBMS_DBFS_CONTENTの例外

例外

コード

説明

PATH_EXISTS

64000

すでに存在する指定したパス名。

INVALID_PARENT

64001

指定したパス名の親が存在しません。

INVALID_PATH

64002

指定したパス名が存在しないか、または無効です。

UNSUPPORTED_OPERATION

64003

ストアにサポートされていない操作が起動されました。

INVALID_ARGUMENTS

64004

操作が無効な引数で起動されました。

INVALID_ACCESS

64005

現在の操作で失敗したアクセス制御チェック。

LOCK_CONFLICT

64006

現在の操作がロック競合チェックに失敗しました。

INVALID_STORE

64007

無効なストア名が指定されました。

INVALID_MOUNT

64008

無効なマウント・ポイントが指定されました。

INVALID_PROVIDER

64009

無効なプロバイダ・パッケージが指定されました。

READONLY_PATH

64010

読取り専用マウントまたはストアで変更中の操作が起動されました。

使用上の注意

- 実装

- パス名

- 他のDBMS_DBFS_CONTENT操作

実装

DBMS_DBFS_CONTENTインタフェースとプロバイダSPIの相互接続は1対多の接続可能なアーキテクチャであるため、インタフェースが動的SQLを使用してプロバイダSPIでメソッドを起動し、ランタイム・エラーの原因になる可能性があります。

DBMS_DBFS_CONTENTインタフェースが特定のプロバイダSPIを接続または接続解除するタイミングを示す明示的なINITまたはFINIメソッドはありません。プロバイダSPIは、任意のSPIエントリポイントで自動初期化が可能である必要があります。

ストア・プロバイダが実行するすべての操作は、自己完結している点で「ステートレス」です。なんらかの理由によりステートを維持する必要がある場合、必要に応じて問合せが可能な補助表などのデータ構造でステート維持する必要があります。

パス名

プロバイダSPIで使用されるすべてのパス名は、ペア形式でストア修飾されており(store_name、pathname)、この形式ではパス名はストアのネームスペースをルートとします。

コンテンツIDベースのアクセスをサポートするストアおよびそのプロバイダ(「DBMS_DBFS_CONTENTの定数: ストア機能」の「FEATURE_CONTENT_ID」を参照)もパス名に基づかないアドレッシングの形式をサポートします。コンテンツ項目は、明示的なストア名およびNULLパス名によって識別され、パラメータとしてまたはOPT_CONTENT_ID(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」を参照)プロパティによって指定されるコンテンツIDによって識別される場合もあります。

コンテンツIDベースのアクセスではサポートされない操作もあり、アプリケーションは利用できる最も簡単な作成または削除機能のみに依存することが必要です。

この表は、他の操作の一覧と、その操作に関する参照先のリンクを示したものです。

他のDBMS_DBFS_CONTENT操作

表48-12: 他のDBMS_DBFS_CONTENT操作

他の操作

参照先

作成

作成操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

削除

削除操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

Get (取出し)およびPut (挿入)

GetおよびPut操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

名前の変更および移動

名前の変更および移動操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ディレクトリ・ナビゲーションおよび検索

ナビゲーションおよび検索操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ロック

ロック操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

アクセスのチェック

アクセスのチェック操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

データ構造

DBMS_DBFS_CONTENTパッケージでは、レコード・タイプおよび表タイプを定義します。

レコード・タイプ

- FEATURE_Tレコード・タイプ

- MOUNT_Tレコード・タイプ

- PATH_ITEM_Tレコード・タイプ

- PROP_ITEM_Tレコード・タイプ

- PROPERTY_Tレコード・タイプ

- STORE_Tレコード・タイプ

表タイプ

- FEATURES_T表タイプ

- MOUNTS_T表タイプ

- PATH_ITEMS_T表タイプ

- PROP_ITEMS_T表タイプ

- PROPERTIES_T表タイプ

- STORES_T表タイプ

使用上の注意

DBMS_DBFS_CONTENT_PROPERTY_TとPROPERTY_Tの間には、おおまかな対応があります。前者は完全プロパティ・タプルを説明するSQLオブジェクト・タイプであり、後者はプロパティ値コンポーネントのみを説明するPL/SQLレコード・タイプです。

同様に、DBMS_DBFS_CONTENT_PROPERTIES_TとPROPERTIES_Tの間にもおおまかな対応があります。前者はSQLネストした表タイプであり、後者はPL/SQLハッシュ表タイプです。

動的SQLコール規則は、SQLタイプの使用を強制しますが、ハッシュ表タイプとしてはPL/SQLコードのほうが実装に都合がよい場合があります。

DBMS_DBFS_CONTENTインタフェースは、DBMS_DBFS_CONTENT_PROPERTIES_TとPROPERTIES_T間で変換する便利なユーティリティ・ファンクションを提供します(propertiesT2HおよびpropertiesH2Tを参照)。

クライアントは、使用可能なストアのリストについてDBMS_DBFS_CONTENTインタフェースに問合せ、指定したパス名へのアクセスをどのストアが処理するかを判断し、ストアの機能セットを決定します。

FEATURE_Tレコード・タイプ

このタイプは、ストアのマウント・ポイントおよびプロパティを説明します。

構文

TYPE feature_t IS RECORD (
feature_name    VARCHAR2(32),
feature_mask    INTEGER,
feature_state   VARCHAR2(3));

フィールド

表48-13 MOUNT_Tのフィールド

フィールド

説明

feature_name

機能の名前。

feature_mask

機能の値でこの機能以外のすべてのビットをマスクするために使用する値。

feature_state

'機能がこのストアでサポートされるかどうかにより、'YES'または'NO'。

MOUNT_Tレコード・タイプ

このタイプは、ストアのマウント・ポイントおよびプロパティを説明します。

構文

TYPE mount_t IS RECORD (
store_name          VARCHAR2(32),
store_id            NUMBER,
provider_name       VARCHAR2(32),
provider_pkg        VARCHAR2(32),
provider_id         NUMBER,
provider_version    VARCHAR2(32),
store_features      INTEGER,
store_guid          NUMBER,
store_mount         NAME_T,
mount_properties    DBMS_DBFS_CONTENT_PROPERTIES_T);

フィールド

表48-14 MOUNT_Tのフィールド

フィールド

説明

store_name

ストアの名前。

store_id

ストアのID。

provider_name

コンテンツ・ストアの名前。

provider_pkg

コンテンツ・ストアのPL/SQLパッケージ名。

provider_id

コンテンツ・ストアの一意の識別子。

provider_version

コンテンツ・ストアのバージョン番号。

respos_features

このコンテンツ・ストアによってサポートされる機能。

store_guid

ストアのこのインスタンスに対する一意のID。

store_mount

ストア・インスタンスがマウントされる場所。

mount_properties

このマウント・ポイントのプロパティ(DBMS_DBFS_CONTENT_PROPERTIES_T表タイプを参照)。

PATH_ITEM_Tレコード・タイプ

PATH_ITEM_Tは、関連付けられているすべての標準およびオプションのプロパティを含む、ストアにある(ストア、マウント)修飾パスを説明するタプルです。

構文

TYPE path_item_t IS RECORD (
store                    NAME_T,
mount                    NAME_T,
pathname                 PATH_T,
pathtype                 VARCHAR2(32),
filedata                 BLOB,
std_access_time          TIMESTAMP,
std_acl                  VARCHAR2(1024),
std_change_time          TIMESTAMP,
std_children             NUMBER,
std_content_type         VARCHAR2(1024),
std_creation_time        TIMESTAMP,
std_deleted              INTEGER,
std_guid                 INTEGER,
std_modification_time    TIMESTAMP,
std_owner                VARCHAR2(32),
std_parent_guid          INTEGER,
std_referent             VARCHAR2(1024),
opt_hash_type            VARCHAR2(32),
opt_hash_value           VARCHAR2(128),
opt_lock_count           INTEGER,
opt_lock_data            VARCHAR2(128),
opt_locker               VARCHAR2(128),
opt_lock_status          INTEGER,
opt_version              INTEGER,
opt_version_path         PATH_T,
opt_content_id           CONTENT_ID_T);

フィールド

表48-15 PATH_ITEM_Tのフィールド

フィールド

説明

store

ストアの名前。

mount

ストアのインスタンスがマウントされる場所。

pathname

項目へのパス名。

pathtype

オブジェクト・パスのタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

filedata

パス項目でデータにアクセスするために使用できるBLOBロケータ。

std_access_time

パス名のコンテンツの最終アクセス時間。

std_acl

アクセス制御リスト(標準ACL構文)。

std_change_time

パス名のメタデータの最終変更時間。

std_children

ディレクトリまたはフォルダのパスが持つ子ディレクトリ/フォルダの数(このプロパティは、feature_folders機能をサポートするプロバイダで使用できる必要があります)。

std_content_type

通常type_fileであるパス名を説明する1つ以上のクライアントが提供するMIMEタイプ(標準RFC構文)。コンテンツ・タイプは必ずしもストアによって解釈されません。

std_creation_time

項目が作成された時刻。一度設定すると、この値はパス名の使用期間中同じままです。

std_deleted

パス名がソフト削除され、パージされていない場合に0(ゼロ)以外の値に設定します(「DBMS_DBFS_CONTENTの定数: ストア機能」を参照)。

std_guid

パス名に対するストア固有の一意の識別子。クライアントは別のストアでもGUIDが一意であることに依存できませんが、指定したstore-name、store-specific-pathnameには、使用期間中安定した一意のGUIDがあります。

std_modification_time

パス名と関連付けられたデータの最終変更時間。type_fileまたはtype_referenceパスのコンテンツの変更、type_linkパスの参照、type_directoryパスの直接的な子の追加または削除、これらすべてがデータの変更を構成します。

std_owner

パス名のクライアントが提供する(または暗黙的な)所有者名。

std_parent_guid

パス名の親に対するストア固有の一意の識別子。クライアントは別のストアでもGUIDが一意であることに依存できませんが、指定したstore-name、store-specific-pathnameには、使用期間中安定した一意のGUIDがあります。

std_parent_guid(pathname) == std_guid(parent(pathname))

std_referent

type_link pathのシンボリック・リンクのコンテンツ、それ以外の場合はNULL。前述のとおり、std_referentは任意の文字列になることができ、必ずしもクライアントでパス名と解釈される必要はありません(このような解釈を行う場合は十分な注意が必要です)。

opt_hash_type

opt_hash_valueプロパティで提供されるハッシュのタイプ(使用可能なオプションについては、「DBMS_CRYPTO」を参照)。

opt_hash_value

パス名のコンテンツを説明するタイプopt_hash_typeのハッシュ値。

opt_lock_count

パス名に配置される、互換性のあるロックの数。異なるプリンシパルがパスに互換性のある(読取り)ロックを配置することが許可される場合、ロックの数が正しく維持できるように、opt_lockerは繰返しがあるすべてのロッカーを指定する必要があります。

opt_lock_data

ユーザー・ロックと関連付けられ、ストアによって解釈されない、クライアントが提供するユーザー・データ。

opt_locker

パス名にユーザー・ロックを適用した、1つ以上の暗黙的なまたはユーザー指定のプリンシパル。

opt_lock_status

パス名で現在適用されているロックのタイプを説明する、lock_read_only、lock_write_only、lock_read_write値のいずれか。

opt_version

パス名の線形バージョニングに対する順序番号。

opt_version_path

パス名の階層バージョニングに対するバージョン・パス名。

opt_content_id

ファイル要素に対する、文字列化されたプロバイダによって生成されたストア固有の一意のコンテンツID(ファイル要素は、オプションでパスと関連付けられていない場合もあります。「DBMS_DBFS_CONTENTの定数: ストア機能」の「FEATURE_CONTENT_ID」および「FEATURE_LAZY_PATH」を参照)。

PROP_ITEM_Tレコード・タイプ

PROP_ITEM_Tは、ストアにある(store、mount)修飾パスを説明するタプルで、すべてのユーザー定義プロパティが関連付けられ、個別の(名前、値、タイプ)タプルに拡張されています。

構文

TYPE prop_item_t IS RECORD (
store               NAME_T,
mount                    NAME_T,
pathname                 PATH_T,
property_name            PROPNAME_T,
property_value           PROPVAL_T,
property_type            INTEGER);

フィールド

表48-16 PROP_ITEM_Tのフィールド

フィールド

説明

store

ストアの名前。

mount

ストアのインスタンスがマウントされる場所。

pathname

項目へのパス名。

property_name

プロパティの名前。

property_value

プロパティの値。

property_type

プロパティの値に対するPL/SQL typecode。

PROPERTY_Tレコード・タイプ

このタイプは、単一の(value、typecode)プロパティ値タプルです。プロパティ名は暗黙的に示されています(「PROPERTIES_T表タイプ」を参照)。

構文

TYPE property_t  IS RECORD (
propvalue    PROPVAL_T,
typecode     INTEGER);

フィールド

表48-17 PROPERTY_Tのフィールド

フィールド

説明

propvalue

プロパティの値。

typecode

typecode

STORE_Tレコード・タイプ

このタイプは、DBMS_DBFS_CONTENTインタフェースに登録され、管理されるストアを説明します。

構文

TYPE store_t IS RECORD (
store_name          VARCHAR2(32),
store_id            NUMBER,
provider_name       VARCHAR2(32),
provider_pkg        VARCHAR2(32),
provider_id         NUMBER,
provider_version    VARCHAR2(32),
store_features      INTEGER,
store_guid          NUMBER);

フィールド

表48-18 STORET_Tのフィールド

フィールド

説明

store_name

ストアの名前。

store_name

ストアのID。

provider_name

コンテンツ・ストアの名前。

provider_pkg

コンテンツ・ストアのPL/SQLパッケージ名。

provider_id

コンテンツ・ストアの一意の識別子。

provider_version

コンテンツ・ストアのバージョン番号。

respos_features

このコンテンツ・ストアによってサポートされる機能。

store_guid

ストアのこのインスタンスに対する一意のID。

FEATURES_T表タイプ

FEATURE_Tレコード・タイプの表タイプ。

構文

TYPE features_t IS TABLE OF feature_t;

MOUNTS_T表タイプ

MOUNT_Tレコード・タイプの表タイプ。

構文

TYPE mounts_t IS TABLE OF mount_t;

PATH_ITEMS_T表タイプ

PATH_ITEM_Tレコード・タイプの表タイプ。

構文

TYPE path_items_t IS TABLE OF path_item_t;

PROP_ITEMS_T表タイプ

PATH_ITEM_Tレコード・タイプの表タイプ。

構文

TYPE prop_items_t IS TABLE OF prop_item_t;

PROPERTIES_T表タイプ

これは、プロパティ・タプルの名前索引付けされたハッシュ表です。索引と値の暗黙的なハッシュ表関連付けによって、クライアントはPROPERTIES_Tに完全なDBMS_DBFS_CONTENT_PROPERTY_Tタプルを作成できます。

構文

TYPE properties_t IS TABLE OF property_t INDEX BY propname_t;

STORES_T表タイプ

このタイプは、DBMS_DBFS_CONTENTインタフェースに登録され、管理されるストアを説明します。

構文

TYPE stores_t IS TABLE OF store_t;

DBMS_DBFS_CONTENTサブプログラムの要約

表48-19 DBMS_DBFS_CONTENTパッケージのサブプログラム

サブプログラム

説明

CHECKACCESSファンクション

指定したパスでユーザー(principal)が指定操作を実行できるかどうかをレポートします。

CHECKSPIファンクションおよびプロシージャ

ユーザー指定のパッケージが、適切なシグネチャですべてのDBMS_DBFS_CONTENT_SPIサブプログラムを実装しているかどうかを確認し、準拠についてレポートします。

CREATEDIRECTORYプロシージャ

ディレクトリを作成します。

CREATEFILEプロシージャ

ファイルを作成します。

CREATELINKプロシージャ

ソース・ファイル・システム要素への新しい参照を作成します。

CREATEREFERENCEプロシージャ

既存のファイル・システム要素への物理的なリンクを作成します。

DECODEFEATURESファンクション

機能ビットが設定された整数値を与えられると、FEATURE_Tレコードとして機能ビットのFEATURES_T表を戻します。

DELETECONTENTプロシージャ

指定したコンテンツIDによって指定されるファイルを削除します。

DELETEDIRECTORYプロシージャ

ディレクトリを削除します。

DELETEFILEプロシージャ

ファイルを削除します。

FEATURENAMEファンクション

機能ビットが与えられると、その機能名のVARCHAR2を戻します。

FLUSHSTATSファンクション

DBMS_DBFS_CONTENT統計をディスクにフラッシュします。

GETDEFAULTACLプロシージャ

デフォルトのコンテキストのACLパラメータを戻します。

GETDEFAULTASOFプロシージャ

デフォルトのコンテキストのasofパラメータを戻します。

GETTDEFAULTCONTEXTプロシージャ

デフォルトのコンテキストを戻します。

GETDEFAULTOWNERプロシージャ

デフォルトのコンテキストのownerパラメータを戻します。

GETDEFAULTPRINCIPALプロシージャ

デフォルトのコンテキストのprincipalパラメータを戻します。

GETFEATURESBYMOUNTファンクション

マウント・ポイントごとにストアの機能を戻します。

GETFEATURESBYNAMEファンクション

ストア名ごとにストアの機能を戻します。

GETFEATURESBYPATHファンクション

パスごとにストアの機能を戻します。

GETPATHBYMOUNTIDファンクション

完全な絶対パス名を戻します。

GETPATHプロシージャ

既存のパス項目(ファイルやディレクトリなど)を戻します。

GETPATHBYSTOREIDファンクション

基礎となるGUIDが元のストアにある場合、ストア修飾されたパス名を戻します。

GETPATHNOWAITプロシージャ

操作が更新のためであることを示しており、実行された場合、プロバイダは行のロックを待機せず例外(ORA-00054)を戻すことができます。

GETSTOREBYMOUNTファンクション

マウント・ポイントによりストアを戻します。

GETSTOREBYNAMEファンクション

名前によりストアを戻します。

GETSTOREBYPATHファンクション

パスによりストアを戻します。

GETSTATSプロシージャ

DBMS_DBFS_CONTENT統計情報収集に関する情報を戻します。

GETTRACEファンクション

DBMS_DBFS_CONTENTトレースがオンになっているかどうかを戻します。

GETVERSIONファンクション

ストアと関連付けられている標準化された形式でDBMS_DBFS_CONTENTインタフェースのバージョンを戻します。

LISTファンクション

指定したフィルタおよびその他の基準に適合する指定したパスでのパス項目を示します。

LISTALLCONTENTファンクション

すべてのマウントのすべてのパス項目を示します。

LISTALLPROPERTIESファンクション

すべてのマウントのすべてのパス項目に対するすべてのプロパティの表を戻します。

LISTMOUNTSファンクション

すべての使用可能なマウント・ポイント、そのバックエンドのデータストアおよびストア機能を示します。

LISTSTORESファンクション

すべての使用可能なストアとその機能を示します。

LOCKPATHプロシージャ

指定した有効なパス名にユーザー・レベルのロックを適用します。

MOUNTSTOREプロシージャ

以前に登録されたストアをマウントし、マウント・ポイントにバインドします。

NORMALIZEPATHファンクション

ストア固有または完全絶対パス名を正規化された形式に変換します。

PROPANYファンクション

様々なタイプのいずれかを取り、PROPERTY_Tを戻すコンストラクタを提供します。

PROPERTIESH2Tファンクション

PROPERTY_TハッシュをDBMS_DBFS_CONTENT_PROPERTIES_T表に変換します。

PROPERTIEST2Hファンクション

DBMS_DBFS_CONTENT_PROPERTIES_T表をPROPERTY_Tハッシュに変換します。

PROPNUMBERファンクション

NUMBERを取りPROPERTY_Tを戻すコンストラクタです。

PROPRAWファンクション

RAWを取りPROPERTY_Tを戻すコンストラクタです。

PROPTIMESTAMPファンクション

TIMESTAMPを取りPROPERTY_Tを戻すコンストラクタです。

PROPVARCHAR2ファンクション

VARCAHR2を取りPROPERTY_Tを戻すコンストラクタです。

PURGEALLプロシージャ

パスおよびオプションのフィルタ条件に一致する、すべてのソフト削除されたエントリをパージします。

PURGEPATHプロシージャ

指定したパス項目の任意のソフト削除したバージョンをパージします。

PUTPATHプロシージャ

新しいパス項目を作成します。

REGISTERSTOREプロシージャ

新しいストアを登録します。

RENAMEPATHプロシージャ

パスの名前変更または移動を行います。

RESTOREALLプロシージャ

パスおよびフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。

RESTOREPATHプロシージャ

指定したパスおよびフィルタ条件に適合するすべてのソフト削除されたパス項目をリストアします。

SETDEFAULTACLプロシージャ

デフォルトのコンテキストのACLパラメータを設定します。

SETDEFAULTASOFプロシージャ

デフォルトのコンテキストの「時点」パラメータを設定します。

SETDEFAULTCONTEXTプロシージャ

デフォルトのコンテキストを設定します。

SETDEFAULTOWNERプロシージャ

デフォルトのコンテキストの「所有者」パラメータを設定します。

SETDEFAULTPRINCIPALプロシージャ

デフォルトのコンテキストの「プリンシパル」パラメータを設定します。

SETPATHプロシージャ

コンテンツIDによって表されるパス項目にパス名を割り当てます。

SETSTATSプロシージャ

統計情報収集を有効化および無効化します。

SETTRACEプロシージャ

DBMS_DBFS_CONTENTトレースをオンまたはオフにします。

SPACEUSAGEプロシージャ

ファイル・システム領域使用統計情報を問い合せます。

TRACEプロシージャ

評価結果を含むCLOBを戻します。

TRACEENABLEDファンクション

SETTRACEプロシージャによって設定される現在のトレースの「重大度」が指定したトレース・レベルと同じ高さであるかどうかを判断します。

UNLOCKPATHプロシージャ

LOCKPATHプロシージャで以前にロックされたパス項目をロック解除します。

UNMOUNTSTOREプロシージャ

登録されたストアをアンマウントします。

UNREGISTERSTOREプロシージャ

ストアの登録を解除します。

CHECKACCESSファンクション

このファンクションは、指定したパスでユーザー(principal)が指定操作を実行できるかどうかをレポートします。これによって、操作の実行を試みることなく操作の妥当性を検証できます。CHECKACCESSが0を戻す場合、この操作を実行するために起動されたサブプログラムはエラーによって失敗します。

構文

DBMS_DBFS_CONTENT.CHECKACCESS (
path           IN     VARCHAR2,
pathtype       IN     INTEGER,
operation      IN     VARCHAR2,
principal      IN     VARCHAR2,
store_name     IN     VARCHAR2  DEFAULT NULL)
RETURN  BOOLEAN;

パラメータ

表48-20 CHECKACCESSプロシージャのパラメータ

パラメータ

説明

path

アクセスのチェックを行うパスの名前。

pathtype

パスが表すオブジェクトのタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

operation

チェックする操作(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」を参照)。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

store_name

ストアの名前。

使用上の注意

ユーザーがこのファンクションを起動するかどうかにかかわらず、アクセス制御をサポートするストアは、内部的にこれらのチェックを実行してセキュリティを保証します。

CHECKSPIファンクションおよびプロシージャ

推定DBMS_DBFS_CONTENT_SPI準拠パッケージという名前を付与されたこのファンクションまたはプロシージャは、パッケージが適切なシグネチャがあるすべてのプロバイダ・サブプログラムを実装し、準拠についてレポートするかどうかをチェックします。

構文

DBMS_DBFS_CONTENT.CHECKSPI (
package_name        IN              VARCHAR2)
RETURN  CLOB;

DBMS_DBFS_CONTENT.CHECKSPI (
schema_name         IN              VARCHAR2,
package_name        IN              VARCHAR2)
return  clob;

DBMS_DBFS_CONTENT.CHECKSPI (
package_name        IN              VARCHAR2,
chk                 IN OUT NOCOPY   CLOB);

DBMS_DBFS_CONTENT.CHECKSPI (
schema_name         in              VARCHAR2,
package_name        in              VARCHAR2,
chk                 in out nocopy   CLOB);

パラメータ

表48-21 CHECKSPIプロシージャのパラメータ

パラメータ

説明

package_name

パッケージの名前。

schema_name

スキーマの名前。

chk

評価結果を含むCLOB。

使用上の注意

- ファンクション形式は、分析の結果とともにセッション継続時間のキャッシュされた一時LOBを戻します。コール元は、必要に応じてこのLOBの使用期間全体を管理する必要があります。

- プロシージャ形式は、分析の結果をchk LOBパラメータに生成しますが、渡された値がNULLの場合は、DBMS_DBFS_CONTENTインタフェース・トレースが有効であれば、結果はフォアグラウンド・トレース・ファイルに書き込まれます。いずれのトレースも有効ではなく、有効なLOBが渡された場合、チェッカは分析の有効な指示を提供しません(重大なエラーが発生した場合に発生する例外を除く)。

- schema_nameがNULLの場合は、標準の名前解決規則(現在のスキーマ、プライベート・シノニム、パブリック・シノニム)を使用して、分析に適切なパッケージを検索します。

CREATEDIRECTORYプロシージャ

このプロシージャは、ディレクトリを作成します。

構文

DBMS_DBFS_CONTENT.CREATEDIRECTORY (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
prop_flags  IN              INTEGER     DEFAULT PROP_STD,
recurse     IN              BOOLEAN     DEFAULT FALSE,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.CREATEDIRECTORY (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
prop_flags  IN              INTEGER     DEFAULT PROP_STD,
recurse     IN              BOOLEAN     DEFAULT FALSE,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-22 CREATEDIRECTORYプロシージャのパラメータ

パラメータ

説明

path

ディレクトリへのパス名。

properties

prop_flagsに応じて設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。PROP_SPCを設定し(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

recurse

0の場合、再帰的に実行せず、それ以外の場合は、指定したディレクトリの上に再帰的にディレクトリを作成します。

store_name

ストアの名前。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

CREATEFILEプロシージャ

このプロシージャは、ファイルを作成します。

構文

DBMS_DBFS_CONTENT.CREATEFILE (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content     IN OUT NOCOPY   BLOB,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD + PROP_DATA),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.CREATEFILE (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
content     IN OUT NOCOPY   BLOB,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD + PROP_DATA),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-23 CREATEFILEプロシージャのパラメータ

パラメータ

説明

path

ファイルへのパス名。

properties

prop_flagsに応じて設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

store_name

ストアの名前。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

CREATELINKプロシージャ

このプロシージャは、新しいリンク要素srcPathを、dstPathの値で作成します。dstPathの値は、このプロシージャで検証または解釈されることはありません。これは、UNIXファイル・システムのシンボリック・リンクと似ています。

構文

DBMS_DBFS_CONTENT.CREATELINK (
srcPath     IN              VARCHAR2,
dstPath     IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
prop_flags  IN              INTEGER     DEFAULT PROP_STD,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.CREATELINK (
srcPath     IN              VARCHAR2,
dstPath     IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
prop_flags  IN              INTEGER     DEFAULT PROP_STD,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-24 CREATELINKプロシージャのパラメータ

パラメータ

説明

srcPath

作成するファイル・システム・エントリ。

dstPath

srcPathと関連付ける値。

properties

prop_flagsに設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

store_name

ストアの名前。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

CREATEREFERENCEプロシージャ

このプロシージャは、すでに存在するファイル・システム要素dstPath (ファイルやディレクトリなど)への物理的なリンクsrcPathを作成します。生成されるエントリは、dstPathパラメータの値と同じメタデータ構造を共有するため、ファイル・システム要素の参照数を増加する点でも類似しています。これは、UNIXファイル・システムのハード・リンクと似ています。

構文

DBMS_DBFS_CONTENT.CREATEREFERENCE (
srcPath     IN              VARCHAR2,
dstPath     IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
prop_flags  IN              INTEGER     DEFAULT PROP_STD,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.CREATEREFERENCE (
srcPath     IN              VARCHAR2,
dstPath     IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
prop_flags  IN              INTEGER     DEFAULT PROP_STD,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-25 CREATEREFERENCEプロシージャのパラメータ

パラメータ

説明

srcPath

作成するファイル・システム・エントリ。

dstPath

srcPathの参照となるパス。

properties

prop_flagsに応じて設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

prop_flags

どのプロパティが設定されるか、戻されるかを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

store_name

ストアの名前。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

DECODEFEATURESファンクション

機能ビットが設定された整数値を与えられると、このファンクションはFEATURE_Tレコードとして機能ビットのFEATURES_T表を戻します。

構文

DBMS_DBFS_CONTENT.DECODEFEATURES (
featureSet          IN      INTEGER)
RETURN FEATURES_T DETERMINISTIC PIPELINED;

パラメータ

表48-26 DECODEFEATURESファンクションのパラメータ

パラメータ

説明

featureSet

機能セット。

戻り値

FEATURES_T表タイプ

DELETECONTENTプロシージャ

このプロシージャは、指定したコンテンツIDによって指定されるファイルを削除します。

構文

DBMS_DBFS_CONTENT.DELETECONTENT (
store_name     IN     VARCHAR2    DEFAULT NULL,
contentID      IN     RAW,
filter         IN     VARCHAR2    DEFAULT NULL,
soft_delete    IN     BOOLEAN     DEFAULT NULL,
principal      IN     VARCHAR2    DEFAULT NULL);

パラメータ

表48-27 DELETECONTENTプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

contentID

削除するファイルの一意の識別子。

filter

存在する場合、適用するフィルタ。

soft_delete

0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の「削除操作に関する説明」を参照)。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

DELETEDIRECTORYプロシージャ

このプロシージャは、ディレクトリを削除します。recurseがゼロ以外の場合、ディレクトリのすべての要素を再帰的に削除します。フィルタがある場合は、ディレクトリのどの要素が削除されるかを決定します。

構文

DBMS_DBFS_CONTENT.DELETEDIRECTORY (
path           IN     VARCHAR2,
filter         IN     VARCHAR2    DEFAULT NULL,
soft_delete    IN     BOOLEAN     DEFAULT NULL,
recurse        IN     BOOLEAN     DEFAULT FALSE,
store_name     IN     VARCHAR2    DEFAULT NULL,
principal      IN     VARCHAR2    DEFAULT NULL);

パラメータ

表48-28 DELETEDIRECTORYプロシージャのパラメータ

パラメータ

説明

path

ディレクトリへのパス名。

filter

存在する場合、適用するフィルタ。

soft_delete

0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の「削除操作に関する説明」を参照)。

recurse

0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルを再帰的に削除します。

store_name

ストアの名前。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

DELETEFILEプロシージャ

このプロシージャは、指定したファイルを削除します。

構文

DBMS_DBFS_CONTENT.DELETEFILE (
path           IN     VARCHAR2,
filter         IN     VARCHAR2    DEFAULT NULL,
soft_delete    IN     BOOLEAN     DEFAULT NULL,
store_name     IN     VARCHAR2    DEFAULT NULL,
principal      IN     VARCHAR2    DEFAULT NULL);

パラメータ

表48-29 DELETEFILEプロシージャのパラメータ

パラメータ

説明

path

ファイルへのパス名。

filter

存在する場合、適用するフィルタ。

soft_delete

0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の「削除操作に関する説明」を参照)。

store_name

ストアの名前。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

FEATURENAMEファンクション

機能ビットを与えられると、このファンクションはその機能名のVARCHAR2を戻します。

構文

DBMS_DBFS_CONTENT.FEATURENAME (
featureBit          IN      INTEGER)
RETURN VARCHAR2 DETERMINISTIC;

パラメータ

表48-30 FEATURENAMEファンクションのパラメータ

パラメータ

説明

featureBit

機能のビット表現(「DBMS_DBFS_CONTENTの定数: ストア機能」を参照)。

戻り値

機能の名前。

FLUSHSTATSファンクション

このプロシージャは、DBMS_DBFS_CONTENT統計をディスクにフラッシュします。

構文

DBMS_DBFS_CONTENT.FLUSHSTATS;

GETDEFAULTACLプロシージャ

このプロシージャは、デフォルトのコンテキストのACLパラメータを戻します。この情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.GETDEFAULTACL (
acl    OUT NOCOPY     VARCHAR2);

パラメータ

表48-31 GETDEFAULTACLプロシージャのパラメータ

パラメータ

説明

acl

現在の操作によって(暗黙的にまたは明示的に)作成されたすべての新しい要素のACL。

GETDEFAULTASOFプロシージャ

このプロシージャは、デフォルトのコンテキストの「時点」パラメータを戻します。この情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.GETDEFAULTASOF (
asof    OUT NOCOPY     TIMESTAMP);

パラメータ

表48-32 GETDEFAULTASOFプロシージャのパラメータ

パラメータ

説明

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

GETTDEFAULTCONTEXTプロシージャ

このプロシージャは、デフォルトのコンテキストを戻します。コンテキストに含まれる情報は、引数によって様々なメソッド・コールに明示的に挿入でき、個別の操作に対してファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.GETTDEFAULTCONTEXT (
principal    OUT NOCOPY     VARCHAR2,
owner        OUT NOCOPY     VARCHAR2,
acl          OUT NOCOPY     VARCHAR2,
asof         OUT NOCOPY     TIMESTAMP);

パラメータ

表48-33 GETTDEFAULTCONTEXTプロシージャのパラメータ

パラメータ

説明

principal

現在の操作を起動するエージェント(プリンシパル)。

owner

現在の操作によって(暗黙的にまたは明示的に)作成された新しい要素の所有者。

acl

現在の操作によって(暗黙的にまたは明示的に)作成されたすべての新しい要素のACL。

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

GETDEFAULTOWNERプロシージャ

このプロシージャは、デフォルトのコンテキストの「所有者」パラメータを戻します。この情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.GETDEFAULTOWNER (
principal    IN     VARCHAR2);

パラメータ

表48-34 GETDEFAULTOWNERプロシージャのパラメータ

パラメータ

説明

owner

現在の操作によって(暗黙的にまたは明示的に)作成された新しい要素の所有者。

GETDEFAULTPRINCIPALプロシージャ

このプロシージャは、デフォルトのコンテキストの「プリンシパル」パラメータを戻します。この含まれた情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.GETDEFAULTPRINCIPAL (
principal    OUT NOCOPY     VARCHAR2);

パラメータ

表48-35 GETDEFAULTPRINCIPALプロシージャのパラメータ

パラメータ

説明

principal

現在の操作を起動するエージェント(プリンシパル)。

GETFEATURESBYMOUNTファンクション

このファンクションは、マウント・ポイントごとにストアの機能を戻します。

構文

DBMS_DBFS_CONTENT.GETFEATURESBYMOUNT (
store_mount       IN      VARCHAR2)
RETURN INTEGER;

パラメータ

表48-36 GETFEATURESBYMOUNTファンクションのパラメータ

パラメータ

説明

store_mount

マウント・ポイント。

戻り値

サポートする機能のビット・マスク(「FEATURES_T表タイプ」を参照)。

GETFEATURESBYNAMEファンクション

このファンクションは、ストア名ごとにストアの機能を戻します。

構文

DBMS_DBFS_CONTENT.GETFEATURESBYNAME (
store_name       IN      VARCHAR2)
RETURN INTEGER;

パラメータ

表48-37 GETFEATURESBYNAMEファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

戻り値

サポートする機能のビット・マスク(「FEATURES_T表タイプ」を参照)。

GETFEATURESBYPATHファンクション

このファンクションは、パスごとにストアの機能を戻します。

構文

DBMS_DBFS_CONTENT.GETFEATURESBYPATH (
path       IN      PATH_T)
RETURN INTEGER;

パラメータ

表48-38 GETFEATURESBYPATHファンクションのパラメータ

パラメータ

説明

path

PATH_T

戻り値

サポートする機能のビット・マスク(「FEATURES_T表タイプ」を参照)。

GETPATHプロシージャ

このプロシージャは、既存のパス項目(ファイルやディレクトリなど)を戻します。これには、データとメタデータ(プロパティ)の両方が含まれます。

クライアントは(prop_flagsを使用して)特定のプロパティが戻されるように要求できます。ファイル・パス名は、prop_flagsでprop_dataビットマスクを使用してBLOBロケータを指定する(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)か、または1つ以上のRAWバッファを渡すことによって、読み取れます。

forUpdateが0の場合、このプロシージャは、ストアにより「時点」スタイルのフラッシュバック問合せを実行するために使用できるctxの一部として、有効なasofタイムスタンプ・パラメータも受け入れます。GETPATHプロシージャの変化形では、これらのモードの操作はサポートされません。

構文

DBMS_DBFS_CONTENT.GETPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content     OUT    NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
asof        IN              TIMESTAMP   DEFAULT NULL,
forUpdate   IN              BOOLEAN     DEFAULT FALSE,
deref       IN              BOOLEAN     DEFAULT FALSE,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.GETPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
content     OUT    NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
asof        IN              TIMESTAMP   DEFAULT NULL,
forUpdate   IN              BOOLEAN     DEFAULT FALSE,
deref       IN              BOOLEAN     DEFAULT FALSE,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.GETPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
amount      IN OUT          NUMBER,
offset      IN              NUMBER,
buffers     OUT    NOCOPY   RAW,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
asof        IN              TIMESTAMP   DEFAULT NULL,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.GETPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
amount      IN OUT          NUMBER,
offset      IN              NUMBER,
buffers     OUT    NOCOPY   RAW,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
asof        IN              TIMESTAMP   DEFAULT NULL,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.GETPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
amount      IN OUT          NUMBER,
offset      IN              NUMBER,
buffers     OUT    NOCOPY   DBMS_DBFS_CONTENT_RAW_T,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
asof        IN              TIMESTAMP   DEFAULT NULL,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.GETPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
amount      IN OUT          NUMBER,
offset      IN              NUMBER,
buffers     OUT    NOCOPY   DBMS_DBFS_CONTENT_RAW_T,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
asof        IN              TIMESTAMP   DEFAULT NULL,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-39 GETPATHプロシージャのパラメータ

パラメータ

説明

path

パス項目へのパス名。

properties

prop_flagsに応じて戻される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

item_type

指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

amount

入力時に読み取られるバイト数。出力時に読み取られるバイト数。

offset

読取りを開始するバイト・オフセット。

buffer

書込み先のバッファ。

buffers

書込み先のバッファ。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

forUpdate

パス項目に対する排他的書込みアクセス権限を示すためにロックを取得する必要があることを指定します。

deref

0(ゼロ)以外に設定すると、指定したパス項目を実際のデータに解決しようとします。ただし、実際のデータが参照であることが条件です。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

GETPATHBYMOUNTIDファンクション

基礎となるGUIDが元のストアにある場合、このファンクションは完全絶対パス名を戻します。

構文

DBMS_DBFS_CONTENT.GETPATHBYMOUNTID (
store_mount         IN      VARCHAR2,
guid                IN      INTEGER)
RETURN VARCHAR2;

パラメータ

表48-40 GETPATHBYMOUNTIDファンクションのパラメータ

パラメータ

説明

store_mount

guidのあるパス項目が存在するマウント・ポイント。

guid

パス項目に対する一意のID。

使用上の注意

GUIDが不明な場合、NULL値が戻されます。クライアントは必要に応じて処理する必要があります。

戻り値

store_mountのGUIDで表されるパス項目のパス

GETPATHBYSTOREIDファンクション

基礎となるGUIDが元のストアにある場合、このファンクションはストア修飾されたパス名を戻します。

構文

DBMS_DBFS_CONTENT.GETPATHBYSTOREID (
store_name          IN      VARCHAR2,
guid                IN      INTEGER)
RETURN VARCHAR2;

パラメータ

表48-41 GETPATHBYSTOREIDファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

guid

目的のパス項目を表す一意のID。

使用上の注意

GUIDが不明な場合、NULL値が戻されます。クライアントは必要に応じて処理する必要があります。

戻り値

GUIDによって表されるストア修飾されたパス名。

GETPATHNOWAITプロシージャ

このプロシージャは、操作が更新のためであることを示しており、実行された場合(「DBMS_DBFS_CONTENTの定数: ストア機能」のFEATURE_NOWAITを参照)、プロバイダは行のロックを待機せず例外(ORA-00054)を戻すことができます。

構文

DBMS_DBFS_CONTENT.GETPATHNOWAIT (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content     OUT    NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
deref       IN              BOOLEAN     DEFAULT FALSE,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.GETPATHNOWAIT (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
content     OUT    NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
deref       IN              BOOLEAN     DEFAULT FALSE,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-42 GETPATHNOWAITプロシージャのパラメータ

パラメータ

説明

path

パス項目へのパス名。

properties

prop_flagsに応じて戻される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

item_type

指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

prop_flags

どのプロパティが戻されるかを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

deref

0(ゼロ)以外に設定すると、指定したパス項目を実際のデータに解決しようとします。ただし、実際のデータが参照であることが条件です。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

GETSTOREBYMOUNTファンクション

このファンクションは、名前によりストアを戻します。

構文

DBMS_DBFS_CONTENT.GETSTOREBYMOUNT (
store_mount       IN      VARCHAR2)
RETURN STORE_T;

パラメータ

表48-43 GETSTOREBYMOUNTファンクションのパラメータ

パラメータ

説明

store_mount

ストア・インスタンスがマウントされる場所。

戻り値

STORE_Tレコード・タイプ

GETSTOREBYNAMEファンクション

このファンクションは、名前によりストアを戻します。

構文

DBMS_DBFS_CONTENT.GETSTOREBYNAME (
store_name       IN      VARCHAR2)
RETURN STORE_T;

パラメータ

表48-44 GETSTOREBYNAMEファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

戻り値

STORE_Tレコード・タイプ

GETSTOREBYPATHファンクション

このファンクションは、パスによりストアを戻します。

構文

DBMS_DBFS_CONTENT.GETSTOREBYPATH (
path       IN      PATH_T)
RETURN STORE_T;

パラメータ

表48-45 GETSTOREBYPATHファンクションのパラメータ

パラメータ

説明

path

PATH_T

戻り値

STORE_Tレコード・タイプ

GETSTATSプロシージャ

このプロシージャは、DBMS_DBFS_CONTENT統計情報収集に関する情報を戻します。

構文

DBMS_DBFS_CONTENT.GETSTATS (
enabled         OUT    BOOLEAN,
flush_time      OUT    INTEGER,
flush_count     OUT    INTEGER);

パラメータ

表48-46 GETSTATSプロシージャのパラメータ

パラメータ

説明

enabled

統計情報収集が有効化かどうかを指定します。

flush_time

統計情報をディスクにフラッシュする頻度をセンチ秒単位で指定します。

flush_count

統計情報のフラッシュとフラッシュの間に許可される操作の数。

GETTRACEファンクション

このファンクションは、DBMS_DBFS_CONTENTトレースがオンになっているかどうかを戻します。

構文

DBMS_DBFS_CONTENT.GETTRACE
RETURN INTEGER.

戻り値

トレースがオフの場合は0を戻し、トレースがオンの場合はゼロ以外を戻します。

GETVERSIONファンクション

このファンクションは、DBMS_DBFS_CONTENTインタフェースの各バージョンを示します。

構文

DBMS_DBFS_CONTENT.GETVERSION (
RETURN VARCHAR2;

戻り値

a.b.cがmajor, minorおよびpatchコンポーネントに対応する、標準のネーミング規則でDBMS_DBFS_CONTENTインタフェースのバージョンを列挙する文字列。

LISTファンクション

このファンクションは、指定したフィルタおよびその他の基準に適合する指定したパスでのパス項目を示します。

構文

DBMS_DBFS_CONTENT.LIST (
path          IN     VARCHAR2,
filter        IN     VARCHAR2    DEFAULT NULL,
recurse       IN     INTEGER     DEFAULT 0,
asof          IN     TIMESTAMP   DEFAULT NULL,
store_name    IN     VARCHAR2    DEFAULT NULL,
principal     IN     VARCHAR2    DEFAULT NULL)
RETURN  DBMS_DBFS_CONTENT_LIST_ITEMS_T PIPELINED;

パラメータ

表48-47 LISTファンクションのパラメータ

パラメータ

説明

path

ディレクトリへのパス名。

filter

存在する場合、適用するフィルタ。

recurse

0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルの内容を再帰的にリストします。

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

store_name

リポジトリの名前

principal

現在の操作を起動するエージェント(プリンシパル)。

戻り値

DBMS_DBFS_CONTENT_LIST_ITEMS_T表タイプ

LISTALLPROPERTIESファンクション

このファンクションは、すべてのマウントのすべてのパス項目に対するすべてのプロパティの表を戻します。

構文

DBMS_DBFS_CONTENT.LISTALLPROPERTIES
RETURN  PROP_ITEMS_T PIPELINED;

戻り値

PROP_ITEMS_T表タイプ

LISTALLCONTENTファンクション

このファンクションは、すべてのマウントのすべてのパス項目を示します。

構文

DBMS_DBFS_CONTENT.LISTALLCONTENT
RETURN  PATH_ITEMS_T PIPELINED;

戻り値

PATH_ITEMS_T表タイプ

LISTMOUNTSファンクション

このファンクションは、すべての使用可能なマウント・ポイント、そのバックエンドのデータストアおよびストア機能を示します。

構文

DBMS_DBFS_CONTENT.LISTMOUNTS
RETURN MOUNTS_T PIPELINED;

戻り値

MOUNTS_T表タイプ

使用上の注意

単一のマウントの結果として単一の行が戻され、戻されたレコードのstore_mountフィールドはNULLに設定されています。

LISTSTORESファンクション

このファンクションは、すべての使用可能なストアとその機能を示します。

構文

DBMS_DBFS_CONTENT.LISTSTORES
RETURN STORES_T PIPELINED;

戻り値

STORES_T表タイプ

使用上の注意

戻されたレコードのstore_mountフィールドはNULLに設定されています(マウント・ポイントがストア自体から分離しているため)。

LOCKPATHプロシージャ

このプロシージャは、ユーザー・レベルのロックを指定した有効なパス名(ストア機能サポートの対象)に適用し、オプションとしてユーザー・データをロックと関連付けます。

構文

DBMS_DBFS_CONTENT.LOCKPATH (
path           IN     VARCHAR2,
lock_type      IN     INTEGER     DEFAULT LOCK_READ_ONLY,
lock_data      IN     VARCHAR2    DEFAULT NULL,
store_name     IN     VARCHAR2    DEFAULT NULL,
principal      IN     VARCHAR2    DEFAULT NULL);

パラメータ

表48-48: LOCKPATHプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

lock_type

いずれかの利用可能なロック・タイプ(「DBMS_DBFS_CONTENTの定数: ロックタイプ」を参照)。

lock_data

ロックと関連付けられるオプションのユーザー・データ

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

MOUNTSTOREプロシージャ

このプロシージャは、以前に登録されたストアをマウントし、マウント・ポイントにバインドします。

構文

DBMS_DBFS_CONTENT.MOUNTSTORE (
store_mount    in      VARCHAR2   DEFAULT NULL,
singleton      in      BOOLEAN    DEFAULT FALSE,
principal      in      VARCHAR2   DEFAULT NULL,
owner          in      VARCHAR2   DEFAULT NULL,
acl            in      VARCHAR2   DEFAULT NULL,
asof           in      TIMESTAMP  DEFAULT NULL,
read_only      in      BOOLEAN    DEFAULT FALSE);

パラメータ

表48-49 MOUNTSTOREプロシージャのパラメータ

パラメータ

説明

store_mount

このストアをマウントするために使用するパス名。

singleton

マウントがシステムで単一のバックエンド・ストアかどうかを指定します。

principal

現在の操作を起動するエージェント(プリンシパル)。

owner

現在の操作によって(暗黙的にまたは明示的に)作成された新しい要素の所有者。

acl

現在の操作によって(暗黙的にまたは明示的に)作成されたすべての新しい要素のACL。

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

read_only

マウントが読取り専用かどうかを指定します。

使用上の注意

関連項目:
登録されたストアのマウント方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

NORMALIZEPATHファンクション

このファンクションは、ストア固有または完全絶対パス名を正規化された形式に変換します。

- パス名が絶対であり、「/」で始まることを検証します。

- 複数の連続した「/」を単一の「/」に折りたたみます。

- 末尾の「/」を削除します。

- ストア固有の正規化されたパス名を、親パス名と末尾コンポーネント名という2つのコンポーネントに分割します。

- 完全な絶対の正規化されたパス名を、ストア名、親パス名、末尾コンポーネント名という3つのコンポーネントに分割します。

構文

DBMS_DBFS_CONTENT.NORMALIZEPATH (
path        IN              VARCHAR2,
parent      OUT NOCOPY      VARCHAR2,
tpath       OUT NOCOPY      VARCHAR2)
RETURN VARCHAR2;

DBMS_DBFS_CONTENT.NORMALIZEPATH (
path        IN              VARCHAR2,
store_name  OUT NOCOPY      VARCHAR2,
parent      OUT NOCOPY      VARCHAR2,
tpath       OUT NOCOPY      VARCHAR2)
RETURN VARCHAR2;

パラメータ

表48-50 NORMALIZEPATHファンクションのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

store_name

ストアの名前。

parent

親のパス名。

tpath

末尾のパス項目の名前。

戻り値

完全に正規化されたストア固有または完全絶対パス名。

PROPANYファンクション

このファンクションは、様々なタイプのいずれかを取り、PROPERTY_Tを戻すコンストラクタを提供します。

構文

DBMS_DBFS_CONTENT.PROPANY (
val      IN      NUMBER)
RETURN PROPERTY_T;

DBMS_DBFS_CONTENT.PROPANY (
val      IN      VARCHAR2)
RETURN PROPERTY_T;

DBMS_DBFS_CONTENT.PROPANY (
val      IN      TIMESTAMP)
RETURN PROPERTY_T;

DBMS_DBFS_CONTENT.PROPANY (
val      IN      RAW)
RETURN PROPERTY_T;

パラメータ

表48-51 PROPANYファンクションのパラメータ

パラメータ

説明

val

値

戻り値

PROPERTY_Tレコード・タイプ

PROPERTIESH2Tファンクション

このファンクションは、PROPERTY_TハッシュをDBMS_DBFS_CONTENT_PROPERTIES_T表に変換します。

構文

DBMS_DBFS_CONTENT.PROPERTIEST2H (
pprops      IN      PROPERTIES_T)
RETURN DBMS_DBFS_CONTENT_PROPERTIES_T;

パラメータ

表48-52 PROPERTIEST2Hファンクションのパラメータ

パラメータ

説明

sprops

PROPERTIES_Tハッシュ。

戻り値

DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ

PROPERTIEST2Hファンクション

このファンクションは、DBMS_DBFS_CONTENT_PROPERTIES_T表をPROPERTY_Tハッシュに変換します。

構文

DBMS_DBFS_CONTENT.PROPERTIEST2H (
sprops      IN      DBMS_DBFS_CONTENT_PROPERTIES_T)
RETURN properties_t;

パラメータ

表48-53 PROPERTIEST2Hファンクションのパラメータ

パラメータ

説明

sprops

DBMS_DBFS_CONTENT_PROPERTIES_T表

戻り値

PROPERTIES_T表タイプ

PROPNUMBERファンクション

このファンクションは、数を取りPROPERTY_Tを戻すコンストラクタです。

構文

DBMS_DBFS_CONTENT.PROPNUMBER (
val      IN      NUMBER)
RETURN PROPERTY_T;

パラメータ

表48-54 PROPNUMBERファンクションのパラメータ

パラメータ

説明

val

値

戻り値

PROPERTY_Tレコード・タイプ

PROPRAWファンクション

このファンクションは、RAWを取りPROPERTY_Tを戻すコンストラクタです。

構文

DBMS_DBFS_CONTENT.PROPRAW (
val      IN      RAW)
RETURN PROPERTY_T;

パラメータ

表48-55 PROPRAWファンクションのパラメータ

パラメータ

説明

val

値

戻り値

PROPERTY_Tレコード・タイプ

PROPTIMESTAMPファンクション

このファンクションは、TIMESTAMPを取りPROPERTY_Tを戻すコンストラクタです。

構文

DBMS_DBFS_CONTENT.PROPTIMESTAMP (
val      IN      TIMESTAMP)
RETURN PROPERTY_T;

パラメータ

表48-56 PROPTIMESTAMPファンクションのパラメータ

パラメータ

説明

val

値

戻り値

PROPERTY_Tレコード・タイプ

PROPVARCHAR2ファンクション

このファンクションは、VARCHAR2を取りPROPERTY_Tを戻すコンストラクタです。

構文

DBMS_DBFS_CONTENT.PROPVARCHAR2 (
val      IN      VARCHAR2)
RETURN PROPERTY_T;

パラメータ

表48-57 PROPNUMBERファンクションのパラメータ

パラメータ

説明

val

値

戻り値

PROPERTY_Tレコード・タイプ

PURGEALLプロシージャ

このプロシージャは、パスおよびオプションのフィルタ条件に一致する、すべてのソフト削除されたエントリをパージします。

構文

DBMS_DBFS_CONTENT.PURGEALL (
path           IN      VARCHAR2,
filter         IN      VARCHAR2    DEFAULT NULL,
store_name     IN      VARCHAR2    DEFAULT NULL,
principal      IN      VARCHAR2    DEFAULT NULL);

パラメータ

表48-58 PURGEALLプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

filter

存在する場合、指定した条件に基づいて適用するフィルタ。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

PURGEPATHプロシージャ

このプロシージャは、指定したパス項目の任意のソフト削除したバージョンをパージします。

構文

DBMS_DBFS_CONTENT.PURGEPATH (
path           IN      VARCHAR2,
filter         IN      VARCHAR2    DEFAULT NULL,
store_name     IN      VARCHAR2    DEFAULT NULL,
principal      IN      VARCHAR2    DEFAULT NULL);

パラメータ

表48-59 PURGEPATHプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

filter

存在する場合、適用するフィルタ。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

PUTPATHプロシージャ

このプロシージャは、新しいパス項目を作成します。

構文

DBMS_DBFS_CONTENT.PUTPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content     IN OUT NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.PUTPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
content     IN OUT NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT +
PROP_DATA),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.PUTPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
amount      IN              NUMBER,
offset      IN              NUMBER,
buffer      IN              RAW,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.PUTPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
amount      IN              NUMBER,
offset      IN              NUMBER,
buffer      IN              RAW,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.PUTPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
written     OUT             NUMBER,
offset      IN              NUMBER,
buffers     IN             DBMS_DBFS_CONTENT_RAW_T,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.PUTPATH (
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
written     OUT             NUMBER,
offset      IN              NUMBER,
buffers     IN              DBMS_DBFS_CONTENT_RAW_T,
prop_flags  IN              INTEGER     DEFAULT (PROP_STD +
PROP_OPT),
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-60 PUTPATHプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

properties

prop_flagsに応じて設定される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

item_type

指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

amount

読み取られるバイト数。

offset

読取りを開始するバイト・オフセット。

buffer

書込み先のバッファ。

buffers

書込み先のバッファ。

prop_flags

どのプロパティが設定されるかを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

REGISTERSTOREプロシージャ

このプロシージャは、ストア・プロバイダ(DBMS_DBFS_CONTENT_SPIパッケージのシグネチャに準拠)を使用するプロバイダによってサポートされる新しいストアを登録します。このメソッドは、主に新しいストアを作成した後にストア・プロバイダによって使用されます。

構文

DBMS_DBFS_CONTENT.REGISTERSTORE (
store_name          IN      VARCHAR2,
provider_name       IN      VARCHAR2,
provider_package    IN      VARCHAR2);

パラメータ

表48-61 REGISTERSTOREプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。一意であることが必要です。

provider_name

プロバイダの名前。

provider_package

ストア・プロバイダ

RENAMEPATHプロシージャ

このプロシージャは、パスの名前変更または移動を行います。この操作は、同じストア内であれば、複数のディレクトリ階層やマウント・ポイント間で実行できます。

注意:
名前の変更および移動操作については、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

構文

DBMS_DBFS_CONTENT.RENAMEPATH (
oldPath     IN              VARCHAR2,
newPath     IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.RENAMEPATH (
oldPath     IN              VARCHAR2,
newPath     IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
store_name  IN              VARCHAR2    DEFAULT NULL,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-62 RENAMEPATHプロシージャのパラメータ

パラメータ

説明

oldPath

名前変更前のパス名。

newPath

名前変更後のパス名。

properties

prop_flagsに応じて設定される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

store_name

ストアの名前。一意であることが必要です。

principal

現在の操作を起動するエージェント(プリンシパル)。

RESTOREALLプロシージャ

このプロシージャは、パスおよびオプションのフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。

構文

DBMS_DBFS_CONTENT.RESTOREALL (
path           IN      VARCHAR2,
filter         IN      VARCHAR2    DEFAULT NULL,
store_name     IN      VARCHAR2    DEFAULT NULL,
principal      IN      VARCHAR2    DEFAULT NULL);

パラメータ

表48-63 RESTOREALLプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

filter

存在する場合、適用するフィルタ。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

RESTOREPATHプロシージャ

このプロシージャは、指定したパスおよびオプションのフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。

構文

DBMS_DBFS_CONTENT.RESTOREPATH (
path           IN      VARCHAR2,
filter         IN      VARCHAR2    DEFAULT NULL,
store_name     IN      VARCHAR2    DEFAULT NULL,
principal      IN      VARCHAR2    DEFAULT NULL);

パラメータ

表48-64 RESTOREPATHプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

filter

存在する場合、適用するフィルタ。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

SETDEFAULTACLプロシージャ

このプロシージャは、デフォルトのコンテキストのACLパラメータを設定します。この情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.SETDEFAULTACL (
acl    IN     VARCHAR2);

パラメータ

表48-65 SETDEFAULTACLプロシージャのパラメータ

パラメータ

説明

acl

現在の操作によって(暗黙的にまたは明示的に)作成されたすべての新しい要素のACL。

使用上の注意

- デフォルトでは、NULL。このパラメータは、NULLに設定することで消去できます。

- このパラメータは、一度設定すると、セッションの期間中デフォルトのままで、デフォルトが明示的に上書きされないすべての操作に継承されます。

SETDEFAULTASOFプロシージャ

このプロシージャは、デフォルトのコンテキストの「時点」パラメータを設定します。この情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.SETDEFAULTASOF (
asof    IN     TIMESTAMP);

パラメータ

表48-66 SETDEFAULTASOFプロシージャのパラメータ

パラメータ

説明

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

使用上の注意

- デフォルトでは、NULL。このパラメータは、NULLに設定することで消去できます。

- このパラメータは、一度設定すると、セッションの期間中デフォルトのままで、デフォルトが明示的に上書きされないすべての操作に継承されます。

SETDEFAULTCONTEXTプロシージャ

このプロシージャは、デフォルトのコンテキストを設定します。コンテキストに含まれる情報は、引数によって様々なメソッド・コールに明示的に挿入でき、個別の操作に対してファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.SETDEFAULTCONTEXT (
principal    IN     VARCHAR2,
owner        IN     VARCHAR2,
acl          IN     VARCHAR2,
asof         IN     TIMESTAMP);

パラメータ

表48-67 SETDEFAULTCONTEXTプロシージャのパラメータ

パラメータ

説明

principal

現在の操作を起動するエージェント(プリンシパル)。

owner

現在の操作によって(暗黙的にまたは明示的に)作成された新しい要素の所有者。

acl

現在の操作によって(暗黙的にまたは明示的に)作成されたすべての新しい要素のACL。

asof

元になる読取り専用操作(またはその読取り専用サブコンポーネント)が実行される「時点」タイムスタンプ。

使用上の注意

- すべてのコンテキスト・パラメータはデフォルトでNULLであり、NULLに設定することで消去できます。

- コンテキスト・パラメータは、一度設定すると、セッションの期間中デフォルトのままで、デフォルトが明示的に上書きされないすべての操作に継承されます。

SETDEFAULTOWNERプロシージャ

このプロシージャは、デフォルトのコンテキストの「所有者」パラメータを設定します。この情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.SETDEFAULTOWNER (
principal    IN     VARCHAR2);

パラメータ

表48-68 SETDEFAULTOWNERプロシージャのパラメータ

パラメータ

説明

owner

現在の操作によって(暗黙的にまたは明示的に)作成された新しい要素の所有者。

使用上の注意

- デフォルトでは、NULL。このパラメータは、NULLに設定することで消去できます。

- このパラメータは、一度設定すると、セッションの期間中デフォルトのままで、デフォルトが明示的に上書きされないすべての操作に継承されます。

SETDEFAULTPRINCIPALプロシージャ

このプロシージャは、デフォルトのコンテキストの「プリンシパル」パラメータを設定します。この含まれた情報は引数によって他のメソッド・コールに明示的に挿入でき、さらに細かいファイングレイン制御が可能です。

構文

DBMS_DBFS_CONTENT.SETDEFAULTPRINCIPAL (
principal    IN     VARCHAR2);

パラメータ

表48-69 SETDEFAULTPRINCIPALプロシージャのパラメータ

パラメータ

説明

principal

現在の操作を起動するエージェント(プリンシパル)。

使用上の注意

- デフォルトでは、NULL。このパラメータは、NULLに設定することで消去できます。

- このパラメータは、一度設定すると、セッションの期間中デフォルトのままで、デフォルトが明示的に上書きされないすべての操作に継承されます。

SETPATHプロシージャ

このプロシージャは、コンテンツIDによって表されるパス項目にパス名を割り当てます。

コンテンツIDベースのアクセスおよびレイジー・パス名バインドをサポートするストアおよびそのプロバイダは、既存のcontentIDを新しい「パス」と関連付けるSETPATHプロシージャもサポートします。

注意:
名前の変更および移動操作については、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

構文

DBMS_DBFS_CONTENT.SETPATH (
store_name  IN              VARCHAR2,
contentID   IN              RAW,
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
principal   IN              VARCHAR2    DEFAULT NULL);

DBMS_DBFS_CONTENT.SETPATH (
store_name  IN              VARCHAR2,
contentID   IN              RAW,
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   PROPERTIES_T,
principal   IN              VARCHAR2    DEFAULT NULL);

パラメータ

表48-70 SETPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

contentID

関連付けるファイルの一意の識別子。

path

パス項目へのパス名。

properties

prop_flagsに応じて設定される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

principal

現在の操作を起動するエージェント(プリンシパル)。

SETSTATSプロシージャ

このプロシージャは、統計情報収集を有効化および無効化します。クライアントは、時間、カウントまたは両方のパラメータにNULL以外の値を設定することによって、オプションとしてフラッシュ設定を制御できます。

構文

DBMS_DBFS_CONTENT.SETSTATS (
enable          IN    BOOLEAN,
flush_time      IN    INTEGER,
flush_count     IN    INTEGER);

パラメータ

表48-71 SETSTATSプロシージャのパラメータ

パラメータ

説明

enable

TRUEの場合、統計情報収集を有効化します。FALSEの場合、統計情報収集を無効化します。

flush_time

統計情報をディスクにフラッシュする頻度をセンチ秒単位で指定します。

flush_count

統計情報のフラッシュとフラッシュの間に許可される操作の数。

使用上の注意

SETSTATSプロシージャは、最大flush_timeセンチ秒または最大flush_count操作(先に制限に達した方)または両方のメモリー内に統計情報をバッファし、制限に達したときにバッファは暗黙的にディスクにフラッシュされます。

SETTRACEプロシージャ

このプロシージャは、DBMS_DBFS_CONTENTトレース重大度を指定したレベルに設定し、0は「オフ」です。

構文

DBMS_DBFS_CONTENT.SETTRACE
trclvl      IN         INTEGER);

パラメータ

表48-72 SETTRACEプロシージャのパラメータ

パラメータ

説明

trclvl

トレースのレベル。値が高いほどトレース量が増加します。

SPACEUSAGEプロシージャ

このプロシージャは、ファイル・システム領域使用統計情報を問い合せます。プロバイダは、ストアに対してこのサブプログラムをサポートする必要があります(特に、ストアが複数の表、索引、LOBなどで構成される場合、領域使用率の決定に最善の試みが求められます)。

構文

DBMS_DBFS_CONTENT.SPACEUSAGE (
path          IN        VARCHAR2,
blksize       OUT       INTEGER,
tbytes        OUT       INTEGER,
fbytes        OUT       INTEGER,
nfile         OUT       INTEGER,
ndir          OUT       INTEGER,
nlink         OUT       INTEGER,
nref          OUT       INTEGER,
store_name    IN        VARCHAR2 DEFAULT NULL);

パラメータ

表48-73 SPACEUSAGEプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

blksize

ストアを保持する自然表領域のブロック・サイズ。異なるブロック・サイズの複数の表領域を使用する場合、任意の有効なブロック・サイズが受け入れられます。

tbytes

ストアを構成するすべてのセグメントに対して計算されたストアの合計サイズ(バイト単位)。

fbytes

ストアを構成するすべてのセグメントに対して計算されたストアの空き領域または未使用領域のサイズ(バイト単位)。

nfile

ストアで現在使用可能なファイル数。

ndir

ストアで現在使用可能なディレクトリ数。

nlink

ストアで現在使用可能なリンク数。

nref

ストアで現在使用可能な参照数。

store_name

ストアの名前。

使用上の注意

- トップレベルのルート・ディレクトリで領域使用量を問い合せると、その下にあるすべての使用可能な異なるストアの領域使用量をまとめた要約が戻されます(同じストアが複数回マウントされている場合、1回のみカウントされます)。

- データベース・オブジェクトは動的に拡張可能であるため、「空き」領域と「使用済」領域の区分を推定することは容易ではありません。

TRACEプロシージャ

このプロシージャは、現在のフォアグラウンド・トレース・ファイルにトレースを出力します。

構文

DBMS_DBFS_CONTENT.TRACE
sev         IN              INTEGER,
msg0        IN              VARCHAR2,
msg1        IN              VARCHAR     DEFAULT '',
msg2        IN              VARCHAR     DEFAULT '',
msg3        IN              VARCHAR     DEFAULT '',
msg4        IN              VARCHAR     DEFAULT '',
msg5        IN              VARCHAR     DEFAULT '',
msg6        IN              VARCHAR     DEFAULT '',
msg7        IN              VARCHAR     DEFAULT '',
msg8        IN              VARCHAR     DEFAULT '',
msg9        IN              VARCHAR     DEFAULT '',
msg10       IN              VARCHAR     DEFAULT '');

パラメータ

表48-74 TRACEプロシージャのパラメータ

パラメータ

説明

sev

トレース・メッセージが出力される重大度。

msg*

出力される1つ以上のメッセージ文字列。複数のメッセージを指定すると、すべてが出力されます。

使用上の注意

- トレース情報は、トレース・レベル引数によって指定された様々なレベルの詳細で、フォアグラウンド・トレース・ファイルに書き込まれます。

- グローバル・トレース・レベルは、「重大度」と「詳細」の2つのコンポーネントで構成されます。これらは、加算的ビットマスクと考えることができます。
「重大度」では、様々なコンポーネントの低いレベルのトレースと比較した場合、トップ・レベルの分離が可能であり、必要に応じてトレース量を増加できます。様々なレベルに関連付けられているセマンティクスはなく、ユーザーは選択する任意の重大度にトレースを設定できますが、経験則としてはトップ・レベルのAPIエントリと終了トレースには「1」、内部操作には「2」、非常に低いレベルのトレースには「3」以上の重大度を使用することをお薦めします。

「詳細」は、タイムスタンプ、ショート・スタックなど、どれだけの追加情報が各トレース・レコードとともにダンプされるかを制御します。

TRACEENABLEDファンクション

このファンクションは、SETTRACEプロシージャによって設定される現在のトレースの「重大度」が指定したトレース・レベルと同じ高さであるかどうかを判断します。

構文

DBMS_DBFS_CONTENT.TRACEENABLED(
sev         IN              INTEGER)
RETURN  INTEGER;

パラメータ

表48-75 TRACEENABLEDプロシージャのパラメータ

パラメータ

説明

sev

トレース・メッセージが出力される重大度。

戻り値

要求された重大度レベルが現在設定されているトレース重大度レベルより低い場合は0を戻し、それ以外の場合は1を戻します。

UNLOCKPATHプロシージャ

このプロシージャは、LOCKPATHプロシージャで以前にロックされたパス項目をロック解除します。

構文

DBMS_DBFS_CONTENT.UNLOCKPATH (
path           IN     VARCHAR2,
store_name     IN     VARCHAR2    DEFAULT NULL,
principal      IN     VARCHAR2    DEFAULT NULL);

パラメータ

表48-76 UNLOCKPATHプロシージャのパラメータ

パラメータ

説明

path

ファイル項目へのパス名。

store_name

ストアの名前。

principal

現在の操作を起動するエージェント(プリンシパル)。

UNMOUNTSTOREプロシージャ

このプロシージャは、名前またはマウント・ポイントにより、登録されたストアをアンマウントします。

構文

DBMS_DBFS_CONTENT.UNMOUNTSTORE (
store_name       IN      VARCHAR2   DEFAULT NULL,
store_mount      IN      VARCHAR2   DEFAULT NULL,
ignore_unknown   IN      BOOLEAN    DEFAULT FALSE);

パラメータ

表48-77 UNMOUNTSTOREプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

store_mount

ストア・インスタンスがマウントされる場所。

ignore_unknown

TRUEの場合、不明なストアを登録解除しようとしても例外は発生しません。

使用上の注意

関連項目:
以前にマウントしたストアのアンマウント方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

UNREGISTERSTOREプロシージャ

このプロシージャは、以前に登録されたストアを登録解除します(関連付けられているすべてのマウント・ポイントを無効にします)。

構文

DBMS_DBFS_CONTENT.UNREGISTERSTORE (
store_name          IN      VARCHAR2,
ignore_unknown      IN      BOOLEAN DEFAULT FALSE);

パラメータ

表48-78 UNREGISTERSTOREプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

ignore_unknown

TRUEの場合、不明なストアを登録解除しようとしても例外は発生しません。

使用上の注意

- 登録解除すると、そのストア(およびそのマウント・ポイント)へのすべてのアクセスが機能することは保証されません。

- ignore_unknown引数がTRUEの場合、不明なストアを登録解除しようとしても例外は発生しません。

49 DBMS_DBFS_CONTENT_SPI

DBMS_DBFS_CONTENT_SPIパッケージは、DBMS_DBFS_CONTENTストア・プロバイダの実装される必要のある仕様です。アプリケーション設計者は、この仕様に準拠するPL/SQLパッケージを作成して、DBMS_DBFS_CONTENTを拡張し、カスタム・ストア・プロバイダを使用できます。

関連項目:

- 『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

この章では、次の項目について説明します。

- DBMS_DBFS_CONTENT_SPIの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_DBFS_CONTENT_SPIサブプログラムの要約

DBMS_DBFS_CONTENT_SPIの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

概要

DBMS_DBFS_CONTENT_SPIパッケージは、DBMS_DBFS_CONTENTインタフェースの実装と個々のストア・プロバイダ間の内部契約、およびプロバイダのコードを含むパッケージを説明します。

PL/SQLでは、パッケージ・シグネチャ間でコンパイル時に宣言タイプの一致を許可しないため、ストア・プロバイダは略式でSPIに準拠する必要があります。つまり、同じメソッド・シグネチャとセマンティクスで、パッケージDBMS_DBFS_CONTENT_SPIで指定されたすべてのメソッドを含むパッケージによってSPIを実装する必要があるということです。

明らかに、これらのプロバイダ・パッケージは他のメソッドを実装して、他のインタフェースを公開できますが、そのようなインタフェースをDBMS_DBFS_CONTENTインタフェース自体で使用することはできません。

プロバイダSPIは単なる契約仕様であるため、DBMS_DBFS_CONTENT_SPIにはパッケージ本体はなく、このパッケージを使用して、実際にメソッドを起動することはできません。

SPIは、DBMS_DBFS_CONTENTインタフェースによって定義される様々な要素(定数、タイプ、例外)を参照します。

また、DBMS_DBFS_CONTENTインタフェースによってエクスポートされたクライアントAPIとDBMS_DBFS_CONTENTインタフェース自体が動作対象として予測するプロバイダ・インタフェース間にはほぼ1対1対応があります。

メソッドのネーミング規則での主な区別は、すべてのパス名参照が常にストア修飾されていることです。つまり、マウント・ポイントの概念と完全絶対パス名は、DBMS_DBFS_CONTENTインタフェースがプロバイダSPIメソッドを起動する前に、このインタフェースによって正規化され、ストア修飾パス名に変換されているということです。

DBMS_DBFS_CONTENTインタフェースとプロバイダSPIの相互接続は1対多の接続可能なアーキテクチャであり、インタフェースが動的SQLを使用してプロバイダSPIでメソッドを起動するため、これはランタイム・エラーの原因になる可能性があります。

セキュリティ・モデル

DBMS_DBFS_CONTENT_SPIパッケージの実装は、AUTHID CURRENT_USERとして作成する必要があります。

使用上の注意

- 実装

- パス名

- 他のDBMS_DBFS_CONTENT操作

実装

DBMS_DBFS_CONTENTインタフェースとプロバイダSPIの相互接続は1対多の接続可能なアーキテクチャであるため、インタフェースが動的SQLを使用してプロバイダSPIでメソッドを起動し、ランタイム・エラーの原因になる可能性があります。

DBMS_DBFS_CONTENTインタフェースが特定のプロバイダSPIを接続または接続解除するタイミングを示す明示的なINITまたはFINIメソッドはありません。プロバイダSPIは、任意のSPIエントリポイントで自動初期化が可能である必要があります。

ストア・プロバイダが実行するすべての操作は、自己完結している点で「ステートレス」です。なんらかの理由によりステートを維持する必要がある場合、必要に応じて問合せが可能な補助表などのデータ構造でステート維持する必要があります。

パス名

プロバイダSPIで使用されるすべてのパス名は、ペア形式でストア修飾されており(store_name、pathname)、この形式ではパス名はストアのネームスペースをルートとします。

コンテンツIDベースのアクセスをサポートするストアおよびそのプロバイダ(「DBMS_DBFS_CONTENTの定数: ストア機能」の「FEATURE_CONTENT_ID」を参照)もパス名に基づかないアドレッシングの形式をサポートします。コンテンツ項目は、明示的なストア名およびNULLパス名によって識別され、パラメータとしてまたはOPT_CONTENT_ID(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」を参照)プロパティによって指定されるコンテンツIDによって識別される場合もあります。

コンテンツIDベースのアクセスではサポートされない操作もあり、アプリケーションは利用できる最も簡単な作成または削除機能のみに依存することが必要です。

他のDBMS_DBFS_CONTENT操作

この表は、他の操作の一覧と、その操作に関する参照先のリンクを示したものです。

表49-1: 他のDBMS_DBFS_CONTENT操作

他の操作

参照先

作成

作成操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

削除

削除操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

Get (取出し)およびPut (挿入)

GetおよびPut操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

名前の変更および移動

名前の変更および移動操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ディレクトリ・ナビゲーションおよび検索

ナビゲーションおよび検索操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ロック

ロック操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

アクセスのチェック

アクセスのチェック操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

DBMS_DBFS_CONTENT_SPIサブプログラムの要約

表49-2 DBMS_DBFS_CONTENT_SPIパッケージのサブプログラム

サブプログラム

説明

CHECKACCESSファンクション

指定したパスでユーザー(principal)が指定操作を実行できるかどうかをレポートします。

CREATEDIRECTORYプロシージャ

ディレクトリを作成します。

CREATEFILEプロシージャ

ファイルを作成します。

CREATELINKプロシージャ

既存のファイル・システム要素への物理的なリンクを作成します。

CREATEREFERENCEプロシージャ

ソース・ファイル・システム要素への新しい参照を作成します。

DELETECONTENTプロシージャ

指定したコンテンツIDによって指定されるファイルを削除します。

DELETEDIRECTORYプロシージャ

ディレクトリを削除します。

DELETEFILEプロシージャ

ファイルを削除します。

GETFEATURESファンクション

ストアの機能を戻します。

GETPATHプロシージャ

既存のパス項目(ファイルやディレクトリなど)を戻します。

GETPATHBYSTOREIDファンクション

基礎となるGUIDが元のストアにある場合、ストア修飾されたパス名を戻します。

GETPATHNOWAITプロシージャ

操作が更新のためであることを示しており、実行された場合、プロバイダは行のロックを待機せず例外(ORA-00054)を戻すことができます。

GETSTOREIDファンクション

ストアのIDを戻します。

GETVERSIONファンクション

ストアに関連付けられたバージョンを戻します。

LISTファンクション

ディレクトリ・パス名の内容をリストします。

LOCKPATHプロシージャ

指定した有効なパス名にユーザー・レベルのロックを適用します。

PURGEALLプロシージャ

パスおよびオプションのフィルタ条件に一致する、すべてのソフト削除されたエントリをパージします。

PURGEPATHプロシージャ

指定したパス項目の任意のソフト削除したバージョンをパージします。

PUTPATHプロシージャ

新しいパス項目を作成します。

RENAMEPATHプロシージャ

パスの名前変更または移動を行います。

RESTOREALLプロシージャ

パスおよびフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。

RESTOREPATHプロシージャ

指定したパスおよびフィルタ条件に適合するすべてのソフト削除されたパス項目をリストアします。

SEARCHファンクション

指定したパスおよびフィルタ条件に適合するパス項目を検索します。

SETPATHプロシージャ

コンテンツIDによって表されるパス項目にパス名を割り当てます。

SPACEUSAGEプロシージャ

ファイル・システム領域使用統計情報を問い合せます。

UNLOCKPATHプロシージャ

LOCKPATHプロシージャで以前にロックされたパス項目をロック解除します。

CHECKACCESSファンクション

このファンクションは、指定したパスでユーザー(principal)が指定操作を実行できるかどうかをレポートします。これによって、操作の実行を試みることなく操作の妥当性を検証できます。CHECKACCESSが0を戻す場合、この操作を実行するために起動されたサブプログラムはエラーによって失敗します。

構文

DBMS_DBFS_CONTENT_SPI.CHECKACCESS (
store_name     IN     VARCHAR2  DEFAULT NULL,
path           IN     VARCHAR2,
pathtype       IN     INTEGER,
operation      IN     VARCHAR2,
principal      IN     VARCHAR2)
RETURN  INTEGER;

パラメータ

表49-3 CHECKACCESSプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

アクセスのチェックを行うパスの名前。

pathtype

パスが表すオブジェクトのタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

operation

チェックする操作(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」を参照)。

principal

アクセス・チェックを行う対象のファイル・システム・ユーザー。

使用上の注意

ユーザーがこのファンクションを起動するかどうかにかかわらず、アクセス制御をサポートするストアは、内部的にこれらのチェックを実行してセキュリティを保証します。

CREATEDIRECTORYプロシージャ

このプロシージャは、ディレクトリを作成します。

構文

DBMS_DBFS_CONTENT_SPI.CREATEDIRECTORY (
store_name  IN              VARCHAR2,
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
prop_flags  IN              INTEGER,
recurse     IN              INTEGER,
ctx         IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-4 CREATEDIRECTORYプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

ディレクトリへのパス名。

properties

prop_flagsに応じて設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。PROP_SPCを設定し(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

recurse

0の場合、再帰的に実行せず、それ以外の場合は、指定したディレクトリの上に再帰的にディレクトリを作成します。

ctx

ディレクトリを作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

CREATEFILEプロシージャ

このプロシージャは、ファイルを作成します。

構文

DBMS_DBFS_CONTENT_SPI.CREATEFILE (
store_name    IN              VARCHAR2,
path          IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content       IN OUT NOCOPY   BLOB,
prop_flags    IN              INTEGER,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-5 CREATEFILEプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

ファイルへのパス名。

properties

prop_flagsに設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

ctx

ファイルを作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

CREATELINKプロシージャ

このプロシージャは、すでに存在するファイル・システム要素(ファイルやディレクトリなど)への物理的なリンクを作成します。生成されるエントリは、srcPathパラメータの値と同じメタデータ構造を共有するため、ファイル・システム要素の参照数を増加する点でも類似しています。これは、UNIXファイル・システムのハード・リンクと似ています。

構文

DBMS_DBFS_CONTENT_SPI.CREATELINK (
store_name    IN              VARCHAR2,
srcPath       IN              VARCHAR2,
dstPath       IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
prop_flags    IN              INTEGER,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-6 CREATELINKプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

srcPath

リンク先のファイル・システム・エントリ。

dstPath

作成する新しいリンク要素のパス。

properties

prop_flagsに応じて設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

ctx

リンクを作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

CREATEREFERENCEプロシージャ

このプロシージャは、ソース・ファイル・システム要素(ファイルやディレクトリなど)への新しい参照を作成します。生成される参照はソース要素を指しますが、ソース要素と直接メタデータを共有しません。これは、UNIXファイル・システムのシンボリック・リンクと似ています。

構文

DBMS_DBFS_CONTENT_SPI.CREATEREFERENCE (
srcPath       IN              VARCHAR2,
dstPath       IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
prop_flags    IN              INTEGER,
store_name    IN              VARCHAR2,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-7 CREATEREFERENCEプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

srcPath

リンク先のファイル・システム・エントリ。

dstPath

作成する新しいリンク要素のパス。

properties

prop_flagsに応じて設定される、戻される、またはその両方の1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

ctx

参照を作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

DELETECONTENTプロシージャ

このプロシージャは、指定したコンテンツIDによって指定されるファイルを削除します。

構文

DBMS_DBFS_CONTENT_SPI.DELETECONTENT (
store_name     IN     VARCHAR2,
contentID      IN     RAW,
filter         IN     VARCHAR2,
soft_delete    IN     INTEGER,
ctx            IN     DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-8 DELETECONTENTプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

contentID

削除するファイルの一意の識別子。

filter

存在する場合、適用するフィルタ。

soft_delete

0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の「削除操作に関する説明」を参照)。

ctx

ファイルを削除するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

DELETEDIRECTORYプロシージャ

このプロシージャは、ディレクトリを削除します。recurseがゼロ以外の場合、ディレクトリのすべての要素を再帰的に削除します。フィルタがある場合は、ディレクトリのどの要素が削除されるかを決定します。

構文

DBMS_DBFS_CONTENT_SPI.DELETEDIRECTORY (
store_name     IN     VARCHAR2,
path           IN     VARCHAR2,
filter         IN     VARCHAR2,
soft_delete    IN     INTEGER,
recurse        IN     INTEGER,
ctx            IN     DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-9 DELETEDIRECTORYプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

ディレクトリへのパス名。

filter

存在する場合、適用するフィルタ。

soft_delete

0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の「削除操作に関する説明」を参照)。

recurse

0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルを再帰的に削除します。

ctx

ディレクトリを削除するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

DELETEFILEプロシージャ

このプロシージャは、指定したファイルを削除します。

構文

DBMS_DBFS_CONTENT_SPI.DELETEFILE (
store_name     IN     VARCHAR2,
path           IN     VARCHAR2,
filter         IN     VARCHAR2,
soft_delete    IN     BOOLEAN,
ctx            IN     DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-10 DELETEFILEプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

ファイルへのパス名。

filter

存在する場合、適用するフィルタ。

soft_delete

0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の「削除操作に関する説明」を参照)。

ctx

ファイルを削除するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

GETFEATURESファンクション

このファンクションは、ストアの機能を戻します。

構文

DBMS_DBFS_CONTENT_SPI.GETFEATURES (
store_name          IN      VARCHAR2)
RETURN  INTEGER;

パラメータ

表49-11 GETFEATURESファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

戻り値

ストア・プロバイダによりサポートされるDBMS_DBFS_CONTENT.FEATURE_*機能。

GETPATHプロシージャ

このプロシージャは、既存のパス項目(ファイルやディレクトリなど)を戻します。これには、データとメタデータ(プロパティ)の両方が含まれます。

クライアントは(prop_flagsを使用して)特定のプロパティが戻されるように要求できます。ファイル・パス名は、prop_flagsでprop_dataビットマスクを使用してBLOBロケータを指定する(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)か、または1つ以上のRAWバッファを渡すことによって、読み取れます。

forUpdateが0の場合、このプロシージャは、ストアにより「時点」スタイルのフラッシュバック問合せを実行するために使用できるctxの一部として、有効な「時点」タイムスタンプ・パラメータも受け入れます。GETPATHプロシージャの変化形では、これらのモードの操作はサポートされません。

構文

DBMS_DBFS_CONTENT_SPI.GETPATH (
store_name  IN              VARCHAR2,
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content     OUT    NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER,
forUpdate   IN              INTEGER,
deref       IN              INTEGER,
ctx         IN              DBMS_DBFS_CONTENT_CONTEXT_T);

DBMS_DBFS_CONTENT_SPI.GETPATH (
store_name  IN              VARCHAR2,
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
amount      IN OUT          NUMBER,
offset      IN              NUMBER,
buffer      OUT    NOCOPY   RAW,
prop_flags  IN              INTEGER,
ctx         IN              DBMS_DBFS_CONTENT_CONTEXT_T);

DBMS_DBFS_CONTENT_SPI.GETPATH (
store_name  IN              VARCHAR2,
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
amount      IN OUT          NUMBER,
offset      IN              NUMBER,
buffers     OUT    NOCOPY   DBMS_DBFS_CONTENT_RAW_T,
prop_flags  IN              INTEGER,
ctx         IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-12 GETPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

パス項目へのパス名。

properties

prop_flagsに応じて戻される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

item_type

指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

amount

入力時に読み取られるバイト数。出力時に読み取られるバイト数。

offset

読取りを開始するバイト・オフセット。

buffer

書込み先のバッファ。

buffers

書込み先のバッファ。

prop_flags

どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

forUpdate

パス項目に対する排他的書込みアクセス権限を示すためにロックを取得する必要があることを指定します。

deref

0(ゼロ)以外に設定すると、指定したパス項目を実際のデータに解決しようとします。ただし、実際のデータが参照(シンボリック・リンク)であることが条件です。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

GETPATHBYSTOREIDファンクション

基礎となるGUIDが元のストアにある場合、このファンクションはストア修飾されたパス名を戻します。

構文

DBMS_DBFS_CONTENT_SPI.GETPATHBYSTOREID (
store_name          IN      VARCHAR2,
guid                IN      INTEGER)
RETURN VARCHAR2;

パラメータ

表49-13 GETPATHBYSTOREIDファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

guid

目的のパス項目を表す一意のID。

戻り値

GUIDによって表されるストア修飾されたパス名。

使用上の注意

STD_GUIDが不明な場合、NULL値が戻されます。クライアントは必要に応じて処理する必要があります。

GETPATHNOWAITプロシージャ

このプロシージャは、操作が更新のためであることを示しており、実行された場合(「DBMS_DBFS_CONTENTの定数: ストア機能」のFEATURE_NOWAITを参照)、プロバイダは行のロックを待機せず例外(ORA-00054)を戻すことができます。

構文

DBMS_DBFS_CONTENT_SPI.GETPATHNOWAIT (
store_name  IN              VARCHAR2,
path        IN              VARCHAR2,
properties  IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content     OUT    NOCOPY   BLOB,
item_type   OUT             INTEGER,
prop_flags  IN              INTEGER,
deref       IN              INTEGER,
ctx         IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-14 GETPATHNOWAITプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

パス項目へのパス名。

properties

prop_flagsに応じて戻される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

item_type

指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

prop_flags

どのプロパティが戻されるかを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

deref

0(ゼロ)以外に設定すると、指定したパス項目を実際のデータに解決しようとします。ただし、実際のデータが参照(シンボリック・リンク)であることが条件です。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

GETSTOREIDファンクション

このファンクションは、ストアのIDを戻します。

構文

DBMS_DBFS_CONTENT_SPI.GETSTOREID (
store_name          IN      VARCHAR2)
RETURN  NUMBER;

パラメータ

表49-15 GETSTOREIDファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

戻り値

ストアのID。

使用上の注意

ストアIDは、登録およびマウント全体で、プロバイダ固有のストアを識別しますが、ストア・コンテンツへの変更とは無関係です。このため、ストア表への変更はストアIDに反映される必要がありますが、同じストア表の再初期化ではストアIDは保持される必要があります。

GETVERSIONファンクション

このファンクションは、ストアに関連付けられたバージョンを戻します。

構文

DBMS_DBFS_CONTENT_SPI.GETVERSION (
store_name          IN      VARCHAR2)
RETURN  VARCHAR2;

パラメータ

表49-16 GETVERSIONファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

戻り値

標準のa.b.cネーミング規則(major、minorおよびpatchコンポーネント用)に基づく「バージョン」(プロバイダ・パッケージまたは個別ストアに固有)。

LISTファンクション

このファンクションは、ディレクトリ・パス名の内容をリストします。

サブプログラムの実行者には、サブディレクトリを再帰的に検索、ソフト削除された項目を表示、指定したタイムスタンプの「時点」でフラッシュバックを使用、リスト述語に基づいてストア内で項目をフィルタリングするオプションがあります。

構文

DBMS_DBFS_CONTENT_SPI.LIST (
store_name    IN     VARCHAR2,
path          IN     VARCHAR2,
filter        IN     VARCHAR2,
recurse       IN     INTEGER,
ctx           IN     DBMS_DBFS_CONTENT_CONTEXT_T)
RETURN  DBMS_DBFS_CONTENT_LIST_ITEMS_T PIPELINED;

パラメータ

表49-17 LISTファンクションのパラメータ

パラメータ

説明

store_name

リポジトリの名前

path

ディレクトリへのパス名。

filter

存在する場合、適用するフィルタ。

recurse

0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルの内容を再帰的にリストします。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

戻り値

再帰的に実行するためのパス、フィルタおよび条件に適合することが判明したパス項目(「DBMS_DBFS_CONTENT_LIST_ITEMS_T表タイプ」を参照)。

使用上の注意

このファンクションはリスト項目のみを戻します。クライアントは、GETPATHプロシージャのいずれかを明示的に使用して、項目と関連付けられているプロパティまたはコンテンツにアクセスする必要があります。

LOCKPATHプロシージャ

このプロシージャは、ユーザー・レベルのロックを指定した有効なパス名(ストア機能サポートの対象)に適用し、オプションとしてユーザー・データをロックと関連付けます。

構文

DBMS_DBFS_CONTENT_SPI.LOCKPATH (
store_name     IN     VARCHAR2,
path           IN     VARCHAR2,
lock_type      IN     INTEGER,
lock_data      IN     VARCHAR2,
ctx            IN     DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-18 LOCKPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

ロックされる項目のパス名。

lock_type

いずれかの利用可能なロック・タイプ(「DBMS_DBFS_CONTENTの定数: ロックタイプ」を参照)。

lock_data

ロックと関連付けられるオプションのユーザー・データ

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

使用上の注意

- ロックおよびロック解除操作を整合性のある方法で実行することは、ストアおよびそのプロバイダの責任です(ユーザー定義のロック・チェックをサポートすることが前提)。

- ロックされた項目のステータスは、様々なオプションのプロパティを使用して利用できます(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」のOPT_LOCK*を参照)。

PURGEALLプロシージャ

このプロシージャは、パスおよびオプションのフィルタ条件に一致する、すべてのソフト削除されたエントリをパージします。

構文

DBMS_DBFS_CONTENT_SPI.PURGEALL (
store_name     IN      VARCHAR2,
path           IN      VARCHAR2,
filter         IN      VARCHAR2,
ctx            IN      DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-19 PURGEALLプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

ファイル項目へのパス名。

filter

存在する場合、指定した条件に基づいて適用するフィルタ。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

PURGEPATHプロシージャ

このプロシージャは、指定したパス項目の任意のソフト削除したバージョンをパージします。

構文

DBMS_DBFS_CONTENT_SPI.PURGEPATH (
path           IN      VARCHAR2,
filter         IN      VARCHAR2,
store_name     IN      VARCHAR2,
ctx            IN      DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-20 PURGEPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

ファイル項目へのパス名。

filter

存在する場合、適用するフィルタ。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

PUTPATHプロシージャ

このプロシージャは、新しいパス項目を作成します。

構文

DBMS_DBFS_CONTENT_SPI.PUTPATH (
store_name    IN              VARCHAR2,
path          IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
content       IN OUT NOCOPY   BLOB,
item_type     OUT             INTEGER,
prop_flags    IN              INTEGER,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

DBMS_DBFS_CONTENT_SPI.PUTPATH (
store_name    IN              VARCHAR2,
path          IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
amount        IN              NUMBER,
offset        IN              NUMBER,
buffer        IN              RAW,
prop_flags    IN              INTEGER,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

DBMS_DBFS_CONTENT_SPI.PUTPATH (
store_name    IN              VARCHAR2,
path          IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
written       OUT             NUMBER,
offset        IN              NUMBER,
buffers       IN              DBMS_DBFS_CONTENT_RAW_T,
prop_flags    IN              INTEGER,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-21 PUTPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

置かれる項目のパス名。

properties

prop_flagsに応じて設定される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

content

ファイルに移入するデータを保持するBLOB(オプション)。

item_type

指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。

amount

読み取られるバイト数。

written

書き込まれたバイト数。

offset

読取りを開始するバイト・オフセット。

buffer

書込み先のバッファ。

buffers

書込み先のバッファ。

prop_flags

どのプロパティが設定されるかを決定します。デフォルトはPROP_STDです。prop_specを設定し、対象となる値を持つプロパティのDBMS_DBFS_CONTENT_PROPERTIES_T表タイプのインスタンスを提供することにより、戻されるプロパティを指定します。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

使用上の注意

- すべてのパス名はメタデータ(プロパティ)の読取りと変更を許可します。コール完了時に、クライアントはprop_flagsを使用して、特定のプロパティにアクセスできます(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)。

- コール完了時に、クライアントはprop_flagsにあるprop_dataビットマスクを使用して、データ・アクセスを継続するために使用できる新しいBLOBロケータを要求できます(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)。

- ファイルは、論理オフセット、バッファ量および適切なサイズのバッファを明示的に指定することにより、BLOBロケータを使用せずに書き込むことができます。

RENAMEPATHプロシージャ

このプロシージャは、パスの名前変更または移動を行います。この操作は、同じストア内であれば、複数のディレクトリ階層やマウント・ポイント間で実行できます。

注意:
名前の変更および移動操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

構文

DBMS_DBFS_CONTENT_SPI.RENAMEPATH (
store_name    IN              VARCHAR2,
oldPath       IN              VARCHAR2,
newPath       IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-22 RENAMEPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。一意であることが必要です。

oldPath

名前変更前のパス名。

newPath

名前変更後のパス名。

properties

prop_flagsに応じて設定される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

RESTOREALLプロシージャ

このプロシージャは、パスおよびオプションのフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。

構文

DBMS_DBFS_CONTENT_SPI.RESTOREALL (
store_name     IN      VARCHAR2,
path           IN      VARCHAR2,
filter         IN      VARCHAR2,
ctx            IN      DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-23 RESTOREALLプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

パス項目へのパス名。

filter

存在する場合、適用するフィルタ。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

RESTOREPATHプロシージャ

このプロシージャは、指定したパスおよびオプションのフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。

構文

DBMS_DBFS_CONTENT_SPI.RESTOREPATH (
store_name     IN      VARCHAR2,
path           IN      VARCHAR2,
filter         IN      VARCHAR2,
ctx            IN      DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-24 RESTOREPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

パス項目へのパス名。

filter

存在する場合、適用するフィルタ。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

SEARCHファンクション

このファンクションは、指定したパスおよびフィルタ条件に適合するパス項目を検索します。

構文

DBMS_DBFS_CONTENT_SPI.SEARCH (
store_name     IN      VARCHAR2,
path           IN      VARCHAR2,
filter         IN      VARCHAR2,
recurse        IN      INTEGER,
ctx            IN      DBMS_DBFS_CONTENT_CONTEXT_T)
RETURN  DBMS_DBFS_CONTENT_LIST_ITEMS_T PIPELINED;

パラメータ

表49-25 LISTファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

パス項目へのパス名。

filter

存在する場合、適用するフィルタ。

recurse

0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルの内容を再帰的に検索します。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

戻り値

指定したパスおよびフィルタ条件に適合するパス項目(「DBMS_DBFS_CONTENT_LIST_ITEMS_T表タイプ」を参照)。

SETPATHプロシージャ

このプロシージャは、コンテンツIDによって表されるパス項目にパス名を割り当てます。

コンテンツIDベースのアクセスおよびレイジー・パス名バインドをサポートするストアおよびそのプロバイダは、既存のcontentIDを新しい「パス」と関連付けるSETPATHプロシージャもサポートします。

注意:
名前の変更および移動操作の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

構文

DBMS_DBFS_CONTENT_SPI.SETPATH (
store_name    IN              VARCHAR2,
contentID     IN              RAW,
path          IN              VARCHAR2,
properties    IN OUT NOCOPY   DBMS_DBFS_CONTENT_PROPERTIES_T,
ctx           IN              DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-26 SETPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

contentID

関連付けるファイルの一意の識別子。

path

パス項目へのパス名。

properties

prop_flagsに応じて設定される、1つ以上のプロパティおよびその値(「DBMS_DBFS_CONTENT_PROPERTIES_T表タイプ」を参照)。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

SPACEUSAGEプロシージャ

このプロシージャは、ファイル・システム領域使用統計情報を問い合せます。プロバイダは、ストアに対してこのサブプログラムをサポートする必要があり、特にストアが複数の表、索引、LOBなどで構成される場合、領域使用率の決定に最善の試みが求められます。

構文

DBMS_DBFS_CONTENT_SPI.SPACEUSAGE (
store_name    IN        VARCHAR2,
blksize       OUT       INTEGER,
tbytes        OUT       INTEGER,
fbytes        OUT       INTEGER,
nfile         OUT       INTEGER,
ndir          OUT       INTEGER,
nlink         OUT       INTEGER,
nref          OUT       INTEGER);

パラメータ

表49-27 SPACEUSAGEファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

blksize

ストアを保持する自然表領域のブロック・サイズ。異なるブロック・サイズの複数の表領域を使用する場合、任意の有効なブロック・サイズが受け入れられます。

tbytes

ストアを構成するすべてのセグメントに対して計算されたストアの合計サイズ(バイト単位)。

fbytes

ストアを構成するすべてのセグメントに対して計算されたストアの空き領域または未使用領域のサイズ(バイト単位)。

nfile

ストアで現在使用可能なファイル数。

ndir

ストアで現在使用可能なディレクトリ数。

nlink

ストアで現在使用可能なリンク数。

nref

ストアで現在使用可能な参照数。

使用上の注意

- トップレベルのルート・ディレクトリで領域使用量を問い合せると、その下にあるすべての使用可能な異なるストアの領域使用量をまとめた要約が戻されます(同じストアが複数回マウントされている場合、1回のみカウントされます)。

- データベース・オブジェクトは動的に拡張可能であるため、「空き」領域と「使用済」領域の区分を推定することは容易ではありません。

UNLOCKPATHプロシージャ

このプロシージャは、LOCKPATHプロシージャで以前にロックされたパス項目をロック解除します。

構文

DBMS_DBFS_CONTENT_SPI.UNLOCKPATH (
store_name     IN     VARCHAR2,
path           IN     VARCHAR2,
ctx            IN     DBMS_DBFS_CONTENT_CONTEXT_T);

パラメータ

表49-28 UNLOCKPATHプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

path

パス項目へのパス名。

ctx

パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。

50 DBMS_DBFS_HS

DBMS_DBFS_HSパッケージにはOracle Database File System Hierarchical Storeが実装されています。このパッケージを使用すると、ユーザーはデータベース表の情報ライフサイクル管理を行う場合に、テープまたはAmazon S3 Webサービスをストレージ層として使用できるようになります。

関連項目:

- 『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

この章では、次の項目について説明します。

- DBMS_DBFS_HSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- DBMS_DBFS_HSサブプログラムの要約

DBMS_DBFS_HSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

概要

DBMS_DBFS_HSパッケージは、データの記憶域としてテープまたはAmazon S3 Webサービスを使用できるようにするDBMS_DBFS_CONTENTパッケージの下にあるサービス・プロバイダです。

テープまたはAmazon S3 Webサービス上のデータはOracle Databaseの一部であり、すべての標準インタフェースを使用してアクセスできますが、データベースを介してのみアクセスが可能です。このパッケージを使用することで、ユーザーは、コンテンツの情報ライフサイクル管理を行う場合に、テープまたはAmazon S3 Webサービスをストレージ層として使用できるようになります。

パッケージは最初にすべてのコンテンツ・ファイルをレベル1キャッシュとして格納します。レベル1キャッシュがいっぱいになると、コンテンツ・ファイルはレベル2キャッシュに移動された後、バルク書込みを使用して、外部ストレージ・デバイスに移動されます。

セキュリティ・モデル

DBMS_DBFS_HSパッケージは、実行者の権限で実行されます。

定数

DBMS_DBFS_HSパッケージでは、次の表に示す定数が使用されます。

- DBMS_DBFS_HSの定数: CREATESTOREプロシージャが使用

- DBMS_DBFS_HSの定数: SETSTOREPROPERTYプロシージャおよびGETSTOREPROPERTYファンクションが使用

- DBMS_DBFS_HSの定数: REGISTERSTORECOMMANDファンクションが使用

- DBMS_DBFS_HSの定数: 失敗/成功/エラー

表50-1 DBMS_DBFS_HSの定数: CREATESTOREプロシージャが使用

定数

タイプ

値

説明

STORETYPE_TAPE

VARCHAR2(50)

'HS_TAPE'

テープをストレージ層として使用します。

STORETYPE_AMAZONS3

VARCHAR2(50)

'HS_S3'

Amazon S3 Webサービスをストレージ層として使用します。

表50-2 DBMS_DBFS_HSの定数: SETSTOREPROPERTYプロシージャおよびGETSTOREPROPERTYファンクションが使用

定数

タイプ

値

説明

PROPNAME_BUCKET

VARCHAR2(50)

'BUCKET'

Hierarchical Storeによってストレージ層として使用されるAWSバケットを指定します。

バケット名には次の制限があります。

1)バケット名に使用できる文字は、小文字、数字、ピリオド(.)およびダッシュ(-)のみです。アンダースコア(_)は無効であることに注意してください。

2)バケット名の先頭は数字または文字であることが必要です。

3)バケット名をIPアドレスのスタイル(192.168.5.4)にすることはできません。

4)バケット名の長さは3から63文字の間です。

5)バケット名の末尾をダッシュにすることはできません。

6)ピリオドの隣にダッシュを使用することはできません。たとえば、my-.bucket.comは無効です。

PROPNAME_CACHESIZE

VARCHAR2(50)

'CACHE_SIZE'

Hierarchical Storeが使用する累積キャッシュ・サイズを指定します。このプロパティはCREATESTOREプロシージャで設定し、RECONFIGCACHEプロシージャで変更できます。値をGETSTOREPROPERTYファンクションで問い合せることはできますが、値をSETSTOREPROPERTYプロシージャで変更することはできません。

PROPNAME_COMPRESSLEVEL

VARCHAR2(50)

'COMPRESSION_LEVEL'

DBFS階層ストアに格納されたファイルの圧縮を有効にするために使用します。ファイルの圧縮に使用する圧縮レベルを指定します。

PROPNAME_ENABLECLEANUPONDELETE

VARCHAR2(50)

'ENABLE_CLEANUP_ON_DELETE'

このプロパティが'TRUE'に設定されている場合、DBMS_DBFS_HSストアにあるDBMS_DBFS_CONTENTインタフェースでユーザーがDELETEFILEプロシージャを起動するたびに、DBMS_DBFS_HSは、ユーザー・ファイルを含む外部ストレージにあるファイルを削除します。ただし、ファイルに他の有効なデータが含まれていないことが条件です。デフォルトでは、プロパティはSTORETYPE_AMAZONS3に対して'TRUE'に、STORETYPE_TAPEに対して'FALSE'に設定されています。

PROPNAME_HTTPPROXY

VARCHAR2(50)

'HTTP_PROXY'

Amazon S3ストレージ・サービスにアクセスするために必要なHTTPプロキシがある場合、そのDNS名を指定します。

PROPNAME_LICENSEID

VARCHAR2(50)

'LICENSE_ID'

ライブラリlibosbws11.soと関連付けられているライセンスIDを指定します。

PROPNAME_LOBCACHE_QUOTA

VARCHAR2(50)

'LOBCACHE_QUOTA'

レベル1キャッシュに割り当てられているcache_sizeの割合を指定します。このパラメータのデフォルト値はNULLで、cache_sizeの0.8(= 80%)がレベル1キャッシュに使用されることを意味します。

このプロパティは、SETSTOREPROPERTYプロシージャで変更することはできませんが、値をGETSTOREPROPERTYファンクションで問い合せることはできます。値はCREATESTOREプロシージャで設定し、RECONFIGCACHEプロシージャで変更できます。

PROPNAME_MEDIAPOOL

VARCHAR2(50)

'MEDIA_POOL'

コンテンツの格納に使用するメディア・プール番号を指定します。

PROPVAL_COMPLVL_NONE

VARCHAR2(50)

'NONE'

圧縮されていないことを示します。

PROPVAL_COMPLVL_LOW

VARCHAR2(50)

'LOW'

圧縮レベルをLOWに設定するために使用します。適切な圧縮率と同時に最適なパフォーマンスを得るには、このレベルを指定します。

PROPVAL_COMPLVL_MEDIUM

VARCHAR2(50)

'MEDIUM'

圧縮レベルをMEDIUMに設定するために使用します。この圧縮レベルでは、LOWより優れた圧縮率が得られますが、圧縮に要する時間が圧縮レベルLOWより長くなります。

PROPVAL_COMPLVL_HIGH

VARCHAR2(50)

'HIGH'

圧縮レベルをHIGHに設定するために使用します。この圧縮レベルでは、最も優れた圧縮率が得られますが、通常圧縮に要する時間が3つの圧縮レベルの中で最も長くなります。

PROPNAME_OPTTARBALLSIZE

VARCHAR2(50)

'OPTIMAL_TARBALL_SIZE'

アーカイブ・ファイルの設定可能な最大サイズとしてoptimal_tarball_sizeを指定します。

複数のコンテンツ・ファイルが1つのアーカイブ・ファイルにまとめられ、このアーカイブ・ファイルがテープまたはAmazon S3に転送されます。これは、ストアのコンテンツ・ファイルそれぞれに対してテープまたはAmazon S3で1つのファイルを作成する操作がきわめて非効率的なためです。

このプロパティは、SETSTOREPROPERTYプロシージャで変更することはできませんが、値をGETSTOREPROPERTYファンクションで問い合せることはできます。値はCREATESTOREプロシージャで設定し、RECONFIGCACHEプロシージャで変更できます。

PROPNAME_READCHUNKSIZE

VARCHAR2(50)

'READ_CHUNK_SIZE'

テープまたはS3からデータを転送するためにSBTプロトコルで使用するサイズを指定します。このチャンクは、アーカイブ・ストアからコンテンツ・ファイルを取得するためのトランザクションごとにメモリーに割り当てられるため、このプロパティの値は低くする必要があります。通常、ほとんどのユーザーの場合はデフォルト・サイズの1MBが適しています。

PROPNAME_S3HOST

VARCHAR2(50)

'S3_HOST'

Amazon S3ストレージ・サービスのHOST名を指定します。s3.amazonaws.comにする必要があります。

PROPNAME_SBT_LIBRARY

VARCHAR2(50)

'SBT_LIBRARY'

Amazon S3と通信するためにRMANによって使用される共有ライブラリのパスを指定します。libosbws11.soという名前が付けられ、rdbms/libディレクトリで使用できます。

PROPNAME_STREAMABLE

VARCHAR2(50)

'STREAMABLE'

このストアでバッファ・ベースのPUTまたはGETを実行する必要があるかどうかを示します。有効な値はTRUEおよびFALSEです。このプロパティのデフォルト値はTRUEです。

PROPNAME_WALLET

VARCHAR2(50)

'WALLET'

このプロパティの値は次のいずれかの形式になります。

LOCATION=file:filename CREDENTIAL_ALIAS=access/secret_alias

PROXY_AUTH_ALIAS=proxyusername/password alias

対象となっているストアに関連付けられているAmazon S3アカウントの資格証明を含むOracle Walletを定義します。

LOCATION: Oracle Walletを含むディレクトリ・パス。形式はfile:directory-pathです。

Windowsでのwallet_pathの形式には、次のような例があります。

file:c:\WINNT\Profiles\username\WALLETS

UNIXまたはLinuxでは、次の例のようになります。

file:/home/username/wallets

パッケージがOracle Databaseサーバーで実行される場合は、データベース・サーバーからWalletにアクセスします。

PASSWORD: Walletのパスワードを定義します。Walletでauto-loginが有効な場合(この設定はOWMユーティリティで変更可能)、このパラメータを指定する必要はありません。デフォルトでは、mkstoreユーティリティでauto-loginを有効にします。

CREDENTIAL_ALIAS: ACCESS_KEYおよびSECRET_KEYの資格証明の別名を定義します。

PROPNAME_WRITECHUNKSIZ

VARCHAR2(50)

'WRITE_CHUNK_SIZE'

テープまたはS3にデータを転送するためにSBTプロトコルで使用するサイズを指定します。

このチャンクは、アーカイブ・ストアにコンテンツ・ファイルをPUTするためのトランザクションごとにメモリーに割り当てられるため、値を低くする必要があります。

通常、ほとんどのユーザーの場合はデフォルト・サイズの1MBが適しています。

表50-3 DBMS_DBFS_HSの定数 - REGISTERSTORECOMMANDファンクションが使用

定数

タイプ

値

説明

BEFORE_PUT

NUMBER

'1'

SECUREFILEをリモート・ストアに書き込む前に、指定された操作を実行する必要があります。

BEFORE_GET

NUMBER

'2'

リモート・デバイスからのSECUREFILEの読取りなどの取得操作を実行する前に、指定された操作を実行する必要があります。

表50-4 DBMS_DBFS_HSの定数: 失敗/成功/エラー

定数

タイプ

値

説明

FAIL

NUMBER

'0'

プロシージャまたはファンクションが正常に実行されませんでした。

SUCCESS

NUMBER

'1'

プロシージャまたはファンクションが正常に完了しました。

ERROR

NUMBER

'2'

プロシージャまたはファンクションによってエラーが戻されました。

使用上の注意

DBMS_DBFS_HSパッケージがOracle Databaseサーバーで実行される場合は、データベース・サーバーからWalletにアクセスします。

DBMS_DBFS_HSサブプログラムの要約

表50-5 DBMS_DBFS_HSパッケージのサブプログラム

サブプログラム

説明

CLEANUPUNUSEDBACKUPFILESプロシージャ

現在使用されているデータがない外部ストレージ・デバイスで作成されたファイルを削除します。

CREATEBUCKETプロシージャ

Hierarchical Storeがデータを移動できるSTORETYPE_AMAZONS3タイプのストアと関連付けられたAWSバケットを作成します。

CREATESTOREプロシージャ

新しい階層ストアを作成します。

DEREGSTORECOMMANDファンクション

RECONFIGCACHEプロシージャを使用して以前にストアと関連付けられているコマンドを削除します。

DROPSTOREプロシージャ

以前に作成した階層ストアを削除します。

FLUSHCACHEプロシージャ

使用済のコンテンツをレベル1キャッシュからフラッシュ(書出し)します。

GETSTOREPROPERTYファンクション

ストアのプロパティの値を取得します。

RECONFIGCACHEプロシージャ

ストアが使用するデータベース・キャッシュのパラメータを再構成します。

REGISTERSTORECOMMANDプロシージャ

ストアに関連付けられた外部ストレージ・デバイスのメディア・マネージャに送信されるHierarchical Storeにストアのコマンドを登録します。

SENDCOMMANDプロシージャ

外部ストレージ・デバイスのメディア・マネージャで実行されるコマンドを送信します。

SETSTOREPROPERTYプロシージャ

ストアのプロパティをデータベースに格納します。

STOREPUSHプロシージャ

ローカルにステージングされたデータをリモート・ストレージにプッシュします。

CLEANUPUNUSEDBACKUPFILESプロシージャ

このプロシージャは、現在使用されているデータがない外部ストレージ・デバイスで作成されたファイルを削除します。

構文

DBMS_DBFS_HS.CLEANUPUNUSEDBACKUPFILES (
store_name     IN     VARCHAR2);

パラメータ

表50-6 CLEANUPUNUSEDBACKUPFILESプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

使用上の注意

- 外部ストレージ・デバイスからファイルを削除するアクションはロールバックできません。

- このメソッドは定期的に実行して外部ストレージ・デバイスの領域をクリアできます。外部ストレージ・デバイスから非同期でコンテンツを削除することは、OLTPのパフォーマンスへの影響が最小限に抑えられるため有効です。DBMS_SCHEDULERパッケージを使用して、定期的なスケジューリングを実行できます。

CREATEBUCKETプロシージャ

このプロシージャは、Hierarchical Storeがデータを移動できるSTORETYPE_AMAZONS3タイプのストアと関連付けられたAWSバケットを作成します。

構文

DBMS_DBFS_HS.CREATEBUCKET  (
store_name    IN     VARCHAR2);

パラメータ

表50-7 CREATEBUCKETプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

使用上の注意

- ストアのPROPNAME_BUCKETプロパティは、このサブプログラムをコールする前に設定する必要があります。

- このプロシージャによりAmazon S3に正常にバケットが作成されると、S3にログインしてバケットのデータ(ディレクトリ、ファイルおよびその他の項目)を削除するなど、帯域外の方法を使用しなければ削除できません。

CREATESTOREプロシージャ

このプロシージャは、起動セッション・ユーザーの所有下にあるスキーマschema_name(デフォルトは現行のスキーマ)のSTORE_TYPE(STORETYPE_TAPEまたはSTORETYPE_AMAZONS3)タイプの新しい階層ストアstore_nameを作成します。

構文

DBMS_DBFS_HS.CREATESTORE  (
store_name              IN     VARCHAR2,
store_type              IN     VARCHAR2,
tbl_name                IN     VARCHAR2,
tbs_name                IN     VARCHAR2,
cache_size              IN     NUMBER,
lob_cache_quota         IN     NUMBER DEFAULT NULL,
optimal_tarball_size    IN     NUMBER DEFAULT NULL,
schema_name             IN     VARCHAR2 DEFAULT NULL);

パラメータ

表50-8 CREATESTOREプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

store_type

STORETYPE_TAPEまたはSTORETYPE_AMAZONS3

tbl_name

ストアエントリの表。

tbs_name

ストアの表領域。

cache_size

指定した表領域にキャッシュ・コンテンツを格納するためにストアが使用する領域容量。

lob_cache_quota

レベル1キャッシュに割り当てられているcache_sizeの割合。このパラメータのデフォルト値はNULLで、cache_sizeの0.8(= 80%)がレベル1キャッシュに使用されることを意味します。

optimal_tarball_size

アーカイブ・ファイルの設定可能な最大サイズ。

複数のコンテンツ・ファイルが1つのアーカイブ・ファイルにまとめられ、このアーカイブ・ファイルがテープまたはAmazon S3に転送されます。これは、ストアのコンテンツ・ファイルそれぞれに対してテープまたはAmazon S3で1つのファイルを作成する操作がきわめて非効率的なためです。

値はデフォルトでテープは10GB、Amazon S3は100MBに設定されます。

schema_name

ストアのスキーマ。

使用上の注意

CREATESTORE()では、ストアの特定のプロパティがデフォルト値に設定されます。ユーザーは、メソッドSETSTOREPROPERTY()およびRECONFIGCACHE()を使用して、プロパティ値を適切に変更したり、ストアのその他のプロパティを設定できます。

- ストア名は、所有者に対して一意である必要があります。同じストア名を別の所有者が所有する別のストアに使用することはできます。

- ストアのコンテンツをデータベースに格納するために表領域を指定すると、後で変更することはできません。

- このサブプログラムはDDL文のように実行され、実行の前後に自動COMMITを実行します。

- DBMS_DBFS_HSを使用するストアは、単一のマウントを使用できません。これは、単一のパラメータはFALSEであり、store_mountパラメータはDBMS_DBFS_CONTENT.MOUNTSTOREプロシージャへのコールでNULL以外の値を持つ必要があるということです。

DEREGSTORECOMMANDファンクション

このプロシージャは、REGISTERSTORECOMMANDプロシージャを使用して以前にストアと関連付けられているコマンドを削除します。

構文

DBMS_DBFS_HS.DEREGSTORECOMMAND (
store_name      IN     VARCHAR2,
message         IN     VARCHAR2);

パラメータ

表50-9 DEREGSTORECOMMANDプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

message

登録解除されるメッセージ。

使用上の注意

このサブプログラムが正常に実行されると、ユーザーによりアクションをロールバックすることはできません。ユーザーが以前の状態をリストアするには、REGISTERSTORECOMMANDプロシージャをコールする必要があります。

DROPSTOREプロシージャ

このプロシージャは、名前で指定され、起動セッション・ユーザーが所有する、以前に作成された階層ストアを削除します。

構文

DBMS_DBFS_HS.DROPSTORE  (
store_name   IN     VARCHAR2,
opt_flags    IN     INTEGER DEFAULT 0);

パラメータ

表50-10 DROPSTOREプロシージャのパラメータ

パラメータ

説明

store_name

起動セッション・ユーザーが所有するストアの名前。

opt_flags

ユーザーはオプションのフラグを指定できます。DISABLE_CLEANUPBACKUPFILESが、オプションのフラグの1つとして指定された場合、CLEANUPUNUSEDBACKUPFILES Procedureへのコールは発行されません。デフォルトでは、このフラグが設定されていないとき、プロシージャは使用されていないすべてのバックアップ・ファイルを暗黙的にクリーンアップします。

使用上の注意

- 実行前後に自動コミットする点で、このプロシージャはDDLのように実行します。

- CLEANUPBACKUPFILESがプロシージャの間無効にされている場合、ユーザーは使用されていないバックアップ・ファイルをクリーンアップするために帯域外の方法を使用する必要があります。削除されたストアに階層ストアを通じてさらにCLEANUPBACKFILESを起動することはできません。

- このサブプログラムは、ストアをDBMS_DBFS_CONTENTパッケージから登録解除します。指定したストアのすべてのファイルは、ストア(テープまたはAmazon S3 Webサービス)から削除されます。データベースでストアのエントリを保持しているデータベース表もこのサブプログラムにより削除されます。

FLUSHCACHEプロシージャ

このプロシージャはレベル1キャッシュ(ロック可能)から使用済コンテンツをレベル2キャッシュにフラッシュ・アウトし、レベル1キャッシュの領域を解放します。

構文

DBMS_DBFS_HS.FLUSHCACHE  (
store_name    IN     VARCHAR2);

パラメータ

表50-11 FLUSHCACHEプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

GETSTOREPROPERTYファンクション

このファンクションは、プロパティの値を取得します。

構文

DBMS_DBFS_HS.GETSTOREPROPERTY  (
store_name      IN     VARCHAR2,
property_name   IN     VARCHAR2,
noexcp          IN     BOOLEAN DEFAULT FALSE) RETURN VARCHAR2;

パラメータ

表50-12 GETSTOREPROPERTYファンクションのパラメータ

パラメータ

説明

store_name

ストアの名前。

property_name

プロパティの名前。

noexcp

FALSEに設定すると、プロパティがデータベースに存在しない場合、例外が発生します。noexcpをTRUEに設定すると、プロパティが存在しない場合、NULLを戻します。

戻り値

プロパティの値。

使用上の注意

指定したストアは、すでに作成されている必要があります。

RECONFIGCACHEプロシージャ

このプロシージャは、ストアが使用しているデータベース・キャッシュのパラメータを再構成します。

構文

DBMS_DBFS_HS.RECONFIGCACHE (
store_name              IN    VARCHAR2,
cache_size              IN    NUMBER DEFAULT NULL,
lobcache_quota          IN    NUMBER DEFAULT NULL,
optimal_tarball_size    IN    NUMBER DEFAULT NULL);

パラメータ

表50-13 RECONFIGCACHEプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

cache_size

Hierarchical Storeが使用する累積キャッシュ・サイズ。

lobcache_quota

レベル1キャッシュに割り当てられているキャッシュ・サイズの割合。

optimal_tarball_size

アーカイブ・ファイルの設定可能な最大サイズ。ストアのコンテンツ・ファイルそれぞれに対してテープまたはAmazon S3で1つのファイルを作成する操作はきわめて非効率的なため、テープまたはAmazon S3に転送するために複数のコンテンツ・ファイルが1つのアーカイブ・ファイルにまとめられます。

使用上の注意

- 指定したストアは、再構成の前にすでに作成されている必要があります。

- Hierarchical Storeはレベル1キャッシュとレベル2キャッシュを使用します。レベル1キャッシュがほとんどのワーキング・セットを包含し、レベル2キャッシュはバックエンド・デバイスにバルク書込みを実行するために使用されます。

- 最後の3つのパラメータのいずれかがNULLの場合、ストア作成時に指定された値が使用されます。CREATESTOREプロシージャに対してコールが発行されたときにパラメータがNULLだった場合、DBMS_DBFS_HSパッケージがデフォルト値を割り当てます。
レベル2キャッシュには最低1 TAR書庫サイズが必要ですが、DBMS_DBFS_HSパッケージは同時実行を促進するために1 TAR書庫分を超えるサイズをレベル2キャッシュにオプティミスティックに割り当てようとします。

累積キャッシュ・サイズとLOBキャッシュ割当ての値が2つのキャッシュへの領域の割当てを決定します。値が指定されない場合、ユーザーにINSUFFICIENT_CACHE例外が表示される場合があります。この場合、作業ストアを持つためにキャッシュ・パラメータを修正することをお薦めします。

- このサブプログラムが正常に実行されると、ユーザーによりアクションをロールバックすることはできません。この場合、ユーザーは新しいまたは変更したパラメータで再度RECONFIGCACHEをコールする必要があります。

REGISTERSTORECOMMANDプロシージャ

このプロシージャは、ストア用のコマンドをHierarchical Storeに登録します。これらのコマンドは、ストアに関連付けられた外部ストレージ・デバイスのメディア・マネージャに送信されます。

構文

DBMS_DBFS_HS.REGISTERSTORECOMMAND (
store_name      IN     VARCHAR2,
message         IN     VARCHAR2,
flags           IN     NUMBER);

パラメータ

表50-14 REGISTERSTORECOMMANDプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

message

外部ストアのメディア・マネージャに送信されるメッセージ。

flags

有効な値は、次のとおりです。

- BEFORE_PUT CONSTANT NUMBER := 1;

- BEFORE_GET CONSTANT NUMBER := 2;

使用上の注意

- これらのコマンドは、コンテンツの次の読取りまたは書込みの前に送信されます。Hierarchical Storeがストレージ・デバイスに(または、ストレージ・デバイスから)データをプッシュ(または、取得)する場合、Hierarchical Storeが(デバイスと通信するために)セッションを開始します。セッション開始後、データの書込み(または取得)を行う前に、関連するデバイスにすべての登録済コマンドを送信します。

- このメソッドが正常に実行されると、ユーザーによりアクションをロールバックすることはできません。以前の状態をリストアするには、ユーザーはDEREGSTORECOMMANDファンクションをコールする必要があります。

SENDCOMMANDプロシージャ

このプロシージャは、外部ストレージ・デバイスのメディア・マネージャで実行されるコマンドを送信します。

構文

DBMS_DBFS_HS.SENDCOMMAND (
store_name    IN       VARCHAR2,
message       IN       VARCHAR2);

パラメータ

表50-15 SENDCOMMANDプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

message

実行されるメッセージ文字列。

SETSTOREPROPERTYプロシージャ

このプロシージャは、ストアのプロパティを名前/値ペアとしてデータベースに格納します。

構文

DBMS_DBFS_HS.SETSTOREPROPERTY  (
store_name      IN     VARCHAR2,
property_name   IN     VARCHAR2,
property_value  IN     VARCHAR2);

パラメータ

表50-16 SETSTOREPROPERTYプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

property_name

テープ・デバイスを使用するストアの場合、ユーザーが設定する必要がある3つのプロパティ、およびデフォルト値を持つ4つのプロパティがあります。STORETYPE_AMAZONS3タイプのストアには、デフォルト値を含むプロパティがあります。両方のタイプのストアに対する様々なオプションは、property_valueで詳細に説明しています。

property_value

テープ・デバイスを使用するストア。

次のプロパティの値は、ユーザーが設定する必要があります。

- PROPNAME_SBTLIBRARY: 外部テープ・デバイスと通信するためにRMANによって使用される共有ライブラリを指します。通常、libobk.soという名前です。

- PROPNAME_MEDIAPOOL: コンテンツを格納するメディア・プール番号。

- PROPNAME_CACHE_SIZE: このストアのキャッシュに使用される領域容量(バイト単位)。

次のプロパティには、ストアの作成時に割り当てられるデフォルト値があり、チューニングすることで十分な効果が得られます。

- PROPNAME_READCHUNKSIZEおよびPROPNAME_WRITECHUNKSIZE: テープとの間でデータを転送する場合にSBTプロトコルで使用されるサイズです。これらのチャンクはトランザクションごとにメモリーに割り当てられるため、値は低くする必要があります。デフォルトのサイズは1MBです。

- PROPNAME_STREAMABLE: DBFS_LINKが読込み操作(たとえば、SELECTまたはDBMS_LOB.READ)を直接ストアから実行できるかどうか、または読み込む前にデータベースにコピーして戻す必要があるかどうかを示します。

- PROPNAME_ENABLECLEANUPONDELETE: 外部ストレージで使用されていないファイルをDBMS_DBFS_HSによって削除するかどうかを示します。このプロパティに有効な値はSTORETYPE_TAPEに対する'FALSE'です。

- PROPNAME_COMPRESSLEVEL: テープに書き込まれるファイルを圧縮する方法を説明します。PROPVAL_COMPLVL_NONE、PROPVAL_COMPLVL_LOW、PROPVAL_COMPLVL_MEDIUMまたはPROPVAL_COMPLVL_HIGHに設定できます。デフォルトでは、PROPVAL_COMPLVL_NONEに設定されています。

(続き)property_value

STORETYPE_AMAZONS3タイプのストア

次のプロパティには割り当てられた値があることが必須であり、デフォルト値が指定されています。

- PROPNAME_SBTLIBRARY: Amazon S3と通信するためにRMANによって使用される共有ライブラリのパスを指定します。libosbws11.soという名前が付けられ、rdbms/libディレクトリで使用できます。

- PROPNAME_S3HOST: Amazon S3ストレージ・サービスのHOST名を定義します。s3.amazonaws.comにする必要があります。

- PROPNAME_BUCKET: Hierarchical Storeによってストレージ層として使用されるAWSバケットを定義します。バケット名には次の制限があります。
--バケット名に使用できる文字は、小文字、数字、ピリオド(.)およびダッシュ(-)のみです。アンダースコア(_)の使用は無効です。

--バケット名の先頭は数字または文字であることが必要です。

--バケット名をIPアドレスのスタイル(「192.168.5.4」)にすることはできません。

--バケット名の長さは3から63文字の間です。

--バケット名の末尾をダッシュにすることはできません。

--ピリオドの隣にダッシュを使用することはできません。たとえば、「my-.bucket.com」は無効です。

- PROPNAME_LICENSEID: ライブラリlibosbws11.soと関連付けられているライセンスIDを指定します。

- PROPNAME_WALLET: 'LOCATION=file:<filename> CREDENTIAL_ALIAS=<access/secret_alias> PROXY_AUTH_ALIAS=<proxyusername/password alias>'の形式になります。
-- LOCATION: Oracle Walletを含むディレクトリ・パス。形式はfile:directory-pathです。形式のバリエーションは、「例」を参照してください。

-- PASSWORD: Walletのパスワードを定義します。Walletでauto-loginが有効な場合(この設定はユーザーの所有ユーティリティで変更可能)、このパラメータを指定する必要はありません。デフォルトでは、mkstoreユーティリティでauto-loginを有効にします。

-- CREDENTIAL_ALIAS: ACCESS_KEYおよびSECRET_KEYの資格証明の別名を定義します。

-- PROXY_AUTH_ALIAS: 該当する場合、プロキシ・サーバーの認証の資格証明を定義します。

property_value(続き)

次のプロパティはオプションです。

- PROPNAME_HTTPPROXY: Amazon S3ストレージ・サービスにアクセスするために必要なHTTPプロキシがある場合、そのDNS名を定義します。

- PROPNAME_STREAMABLE: このストアでバッファ・ベースのPUTまたはGETを実行する必要があるかどうかを示します。このプロパティに有効な値はTRUE(デフォルト)およびFALSEです。

- PROPNAME_ENABLECLEANUPONDELETE: 外部ストレージ・デバイスで使用されていないファイルをDBMS_DBFS_HSによって削除するかどうかを示します。このプロパティのデフォルト値は、STORETYPE_TAPEではFALSEで、STORETYPE_AMAZONS3ではTRUEです。

- PROPNAME_COMPRESSLEVEL: テープに書き込まれるファイルを圧縮する方法を説明します。PROPVAL_COMPLVL_NONE、PROPVAL_COMPLVL_LOW、PROPVAL_COMPLVL_MEDIUMまたはPROPVAL_COMPLVL_HIGHに設定できます。デフォルトでは、PROPVAL_COMPLVL_NONEに設定されています。

使用上の注意

- 指定したストアは、すでに作成されている必要があります。

- このサブプログラムが正常に実行されると、ユーザーによりアクションをロールバックすることはできません。

- このサブプログラムを使用して、同じプロパティを同じ値または異なる値に複数回設定できます。

- PROPNAME_ENABLECLEANUPONDELETE動作については、DBMS_DBFS_HSにより各ストアに対してジョブが作成され、未使用のファイルが外部ストレージから削除されます。デフォルトでは、ジョブはSTORETYPE_AMAZONS3では使用可能、STORETYPE_TAPEでは使用不可に設定されます。ENABLECLEANUPONDELETEプロパティがTRUEに設定されると、ジョブは使用可能、FALSEに設定されると使用不可になります。ジョブが使用可能な場合、デフォルトではジョブは1時間間隔で実行されます。DBMS_SCHEDULERパッケージを使用して、スケジュールを変更できます。ジョブの名前は、prop_name = 'DELJOB_NAME'でUSER_DBFS_HS_FIXED_PROPERTIESを問い合せることで取得できます。

例

形式

Windowsでのwallet_pathの形式には、次のような例があります。

file:c:\WINNT\Profiles\<username>\WALLETS

UNIXまたはLinuxでのwallet_pathの形式には、次のような例があります。

file:/home/username/wallets

STOREPUSHプロシージャ

このプロシージャは、ローカルにステージングされたデータをリモート・ストレージにプッシュします。

構文

DBMS_DBFS_HS.STOREPUSH (
store_name   IN        VARCHAR2,
path         IN        VARCHAR2 DEFAULT NULL);

パラメータ

表50-17 STOREPUSHプロシージャのパラメータ

パラメータ

説明

store_name

コンテンツをクライアントがローカル・キャッシュから外部ストアに書き込むストアの名前。

path

ストア内の非マウント修飾(マウント・ポイントがない)パス。デフォルトでは、値はNULLで、ストアのルート・パスに対応します。

使用上の注意

- Hierarchical Storeは、コンテンツ・ファイルをデータベース表にローカルにキャッシュします。外部ストレージ・デバイスに効率的に書き込むために十分なコンテンツがキャッシュに蓄積された(またはキャッシュが完全にいっぱいになった)場合、Hierarchical Storeはローカル・コンテンツからTAR書庫を作成し、ファイルとして外部デバイスに書き込みます。Hierarchical Storeによって作成されるTAR書庫のサイズは、ストア・プロパティPROPNAME_OPTTARBALLSIZEによって制御されます。

- キャッシュの空き領域容量が、コンテンツ・ファイルのキャッシングにより使用領域がcache_sizeより上にプッシュされるようになると、Hierarchical Storeが内部的にSTOREPUSHをコールします。STOREPUSH プロシージャは、キャッシュにある使用済のまたは変更されたコンテンツ・ファイルからTAR書庫を作成し、外部デバイスに書き出します。他のセッションにロックされているファイルがある場合もあるため、STOREPUSHコールによってすべての使用済コンテンツがローカル・キャッシュから外部ストレージに書き込まれることは保証されません。

- STOREPUSHには、自動的に操作を再開できる機能が組み込まれています。いくつかのTAR書庫を外部デバイスに転送した後に、STOREPUSHコールが(ネットワークの停止などにより)中断された場合、停止の終了後に再起動でき、中断されたポイントからデータの転送を再開します。つまり、停止が終了する前に処理は完了しています。STOREPUSHは、安全に再起動でき、停止が発生しなかったかのように影響されません。

- このメソッドが正常に実行されると、ユーザーによりアクションをロールバックすることはできません。

- デフォルトでは、pathがNULLの場合、ストア内のすべてのファイルがSTOREPUSHの候補です。pathに有効な入力値がある場合は、指定したパスのネームスペース下にあるすべてのファイルがローカル・キャッシュから外部ストアに書き込まれます。指定したパスが既存のファイルである場合、再度リモート・ストアにプッシュされます。

51 DBMS_DBFS_SFS

DBMS_DBFS_SFSパッケージは、DBMS_DBFS_CONTENTパッケージで説明されているコンテンツ・インタフェースにSecureFileベース・ストア(SFS)を操作するためのインタフェースを提供します。

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

この章では、次の項目について説明します。

- DBMS_DBFS_SFSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_DBFS_SFSサブプログラムの要約

DBMS_DBFS_SFSの使用方法

- 概要

- セキュリティ・モデル

- 定数

概要

DBMS_DBFS_SFSパッケージは、DBMS_DBFS_CONTENT_SPIインタフェースを実装し拡張するパッケージのサンプル実装です。RDBMSに格納されているPOSIX準拠ファイル・システムを提供します。

セキュリティ・モデル

DBMS_DBFS_SFSパッケージはAUTHID CURRENT_USERで実行されます。

定数

DBMS_DBFS_SFSパッケージでは、次の表に示す定数が使用されます。

- DBMS_DBFS_SFSの定数: 圧縮レベル

- DBMS_DBFS_SFSの定数: 暗号化パラメータが使用

- DBMS_DBFS_SFSの定数: npartitionsパラメータが使用

- DBMS_DBFS_SFSの定数: partition_keyパラメータが使用

表51-1 DBMS_DBFS_SFSの定数: 圧縮レベル

定数

タイプ

値

説明

COMPRESSION_DEFAULT

VARCHAR2(32)

''

デフォルトのSecureFile圧縮レベルを使用します。

COMPRESSION_LOW

VARCHAR2(32)

'LOW'

圧縮レベル'LOW'を使用します。

COMPRESSION_MEDIUM

VARCHAR2(32)

'MEDIUM'

圧縮レベル'MEDIUM'を使用します。

COMPRESSION_HIGH

VARCHAR2(32)

'HIGH'

圧縮レベル'HIGH'を使用します。

表51-2 DBMS_DBFS_SFSの定数: 暗号化パラメータが使用

定数

タイプ

値

説明

ENCRYPTION_DEFAULT

VARCHAR2(32)

''

デフォルトのSecureFile暗号化アルゴリズムを使用します。

ENCRYPTION_3DES168

VARCHAR2(32)

'3DES168'

暗号化3DES 168ビットを使用します。

ENCRYPTION_AES128

VARCHAR2(32)

'AES128'

暗号化AES 128ビットを使用します。

ENCRYPTION_AES192

VARCHAR2(32)

'AES192'

暗号化AES 192ビットを使用します。

ENCRYPTION_AES256

VARCHAR2(32)

'AES256'

暗号化AES 256ビットを使用します。

表51-3 DBMS_DBFS_SFSの定数: npartitionsパラメータが使用

定数

タイプ

値

説明

DEFAULT_PARTITIONS

INTEGER

16

16パーティションにデフォルトを設定

表51-4 DBMS_DBFS_SFSの定数 - partition_keyパラメータが使用

定数

タイプ

値

説明

PARTITION_BY_ITEM

INTEGER

1

パーティション・キーに項目名のハッシュを使用します。

PARTITION_BY_PATH

INTEGER

2

パーティション・キーにパス名のハッシュを使用します。

PARTITION_BY_GUID

INTEGER

3

パーティション・キーにGUIDのハッシュを使用します。

DBMS_DBFS_SFSサブプログラムの要約

表51-5 DBMS_DBFS_SFSパッケージのサブプログラム

サブプログラム

説明

CREATEFILESYSTEMプロシージャ

ファイル・システム・ストアを作成します。

CREATESTOREプロシージャ

新しいDBFS SFSストアを作成します。

DROPFILESYSTEMプロシージャ

DBFS SFSストアを削除します。

INITFSプロシージャ

POSIXファイル・システム・ストアを初期化します。

CREATEFILESYSTEMプロシージャ

このプロシージャは、ファイル・システム・ストアを作成します。

構文

DBMS_DBFS_SFS.CREATEFILESYSTEM (
store_name         IN     VARCHAR2,
schema_name        IN     VARCHAR2    DEFAULT NULL,
tbl_name           IN     VARCHAR2    DEFAULT NULL,
tbl_tbs            IN     VARCHAR2    DEFAULT NULL,
lob_tbs            IN     VARCHAR2    DEFAULT NULL,
use_bf             IN     BOOLEAN     DEFAULT FALSE,
properties         IN     DBMS_DBFS_CONTENT_PROPERTIES_T DEFAULT NULL,
create_only        IN     BOOLEAN     FALSE,
use_objects        IN     BOOLEAN     DEFAULT FALSE,
with_grants        IN     BOOLEAN     DEFAULT FALSE,
do_dedup           IN     BOOLEAN     DEFAULT FALSE,
do_compress        IN     BOOLEAN     DEFAULT FALSE
compression        IN     VARCHAR2    DEFAULT COMPRESSION_DEFAULT,
do_encrypt         IN     BOOLEAN     DEFAULT FALSE,
encryption         IN     VARCHAR2    DEFAULT ENCRYPTION_DEFAULT,
do_partition       IN     BOOLEAN     DEFAULT FALSE,
npartitions        IN     NUMBER      DEFAULTDEFAULT_PARTITIONS,
partition_key      IN     NUMBER      DEFAULT PARTITION_BY_ITEM,
partition_guidi    IN     BOOLEAN     DEFAULT FALSE,
partition_pathi    IN     BOOLEAN     DEFAULT FALSE,
partition_prop     IN     BOOLEAN     DEFAULT TRUE);

パラメータ

表51-6 CREATEFILESYSTEMプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

schema_name

ストアのスキーマで、デフォルトは現行のスキーマになります。

tbl_name

ストア・エントリの表。指定しない場合、内部的に生成された名前が使用されます。

tbl_tb

ストアの表領域で、デフォルトはスキーマのデフォルト表領域になります。

lob_tbs

LOBセグメントを作成する表領域。デフォルトはユーザーのデフォルト表領域になります。

use_bf

TRUEに設定すると、BasicFile LOBが使用され、それ以外の場合は、SecureFile LOBが使用されます。

properties

ストア・プロパティを構成する(名前、値、typecode)タプルの表。現在、該当するプロパティは定義または使用されていません。

create_only

TRUEに設定すると、ファイル・システムが作成されますが、現行のユーザーに登録されません。

use_objects

TRUEに設定すると、新しいファイル・システムをバックアップするために、オブジェクト・タイプ列(ネストした表を使用)がある単一の元表が作成されます。それ以外の場合は、ファイル・システムのバックアップには(親、子)表のペアが使用されます。両方の場合に、オブジェクト・タイプのネストされた表または子表は、ユーザー定義のプロパティのみに使用されます。

with_grants

TRUEに設定すると、ファイル・システム作成の一環として、DMLおよび問合せアクセス権限がDBFS_ROLEに付与されます。それ以外の場合は、ファイル・システムにアクセスするために明示的な付与(または既存の権限)が必要です。

do_dedup

TRUEに設定すると、元のSecureFile列を複製解除します。

do_compress

TRUEに設定すると、元のSecureFile列を圧縮します。

compression

使用する圧縮アルゴリズム(「DBMS_DBFS_SFSの定数: 圧縮レベル」を参照)

do_encrypt

TRUEに設定すると、元のSecureFile列を暗号化します。

encryption

使用する暗号化アルゴリズム(「DBMS_DBFS_SFSの定数: 暗号化パラメータが使用」を参照)

do_partition

TRUEに設定すると、記憶域に使用される表をパーティション化します。

npartitions

表に作成するパーティションの数(「DBMS_DBFS_SFSの定数: npartitionsパラメータが使用」を参照)

partition_key

表をパーティション化する方法: 項目名、パス名またはGUID(「DBMS_DBFS_SFSの定数: partition_keyパラメータが使用」を参照)。

partition_guidi

TRUEに設定すると、GUIDに索引を作成します。

partition_pathi

TRUEに設定すると、パス名に索引を作成します。

partition_prop

TRUEに設定すると、プロパティ表をパーティション化します。

使用上の注意

実行前後に自動コミットする点で、このプロシージャはDDLのように実行します。

CREATESTOREプロシージャ

このプロシージャは、起動セッション・ユーザーが所有する新しいDBFS SFSストアを作成します。

構文

DBMS_DBFS_SFS.CREATESTORE  (
store_name     IN     VARCHAR2,
tbl_name       IN     VARCHAR2  DEFAULT NULL,
tbs_name       in     VARCHAR2  DEFAULT NULL,
use_bf         in     BOOLEAN   DEFAULT FALSE,
stgopts        in     VARCHAR2 DEFAULT '');

パラメータ

表51-7 CREATESTOREプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

store_type

STORETYPE_TAPEまたはSTORETYPE_AMAZONS3

tbl_name

データベースにキャッシュされたストア・コンテンツのプレースホルダ。

tbs_name

名前を付けられた表領域。

use_bf

TRUEに設定すると、BasicFile LOBが使用され、それ以外の場合は、SecureFile LOBが使用されます。

stgopts

現在は実行できず、将来使用するために予約されています。

DROPFILESYSTEMプロシージャ

このプロシージャは、DBFS SFSストアを削除し、ストアと関連付けられているすべてのディクショナリ情報をパージし、元のファイル・システム表を削除します。

構文

DBMS_DBFS_SFS.DROPFILESYSTEM  (
schema_name    IN      VARCHAR2 DEFAULT NULL,
tbl_name       IN      INTEGER);

DBMS_DBFS_SFS.DROPFILESYSTEM  (
store_name     IN      VARCHAR2);

パラメータ

表51-8 DROPFILESYSTEMプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

tbl_name

表領域の名前。

store_name

ストア・パスの名前。

使用上の注意

- 指定されたストア表が現行のユーザーによって登録されている場合、DBMS_DBFS_CONTENTパッケージおよびPOSIXメタデータ表で説明されているコンテンツ・インタフェースから登録解除されます。

- 登録解除後、表の格納が試行されます。そのときに他のユーザーがこのストア表を使用している場合、この処理は失敗する場合があります。

- ストアの元になる表の削除を試行するユーザーには、実際に削除操作を完了する権限が必要です(表の所有者として、またはスキーマ間操作に対する十分な権限があるユーザーとして)。

- 実行前後に自動コミットする点で、このプロシージャはDDLのように実行します。

INITFSプロシージャ

このプロシージャは、POSIXファイル・システム・ストアを初期化します。POSIXファイル・システム・ストアstore_nameと関連付けられた表は、切り捨てられ、単一の「ルート」ディレクトリ・エントリで再初期化されます。

構文

DBMS_DBFS_SFS.INITFS (
store_name     IN      VARCHAR2);

パラメータ

表51-9 INITFSプロシージャのパラメータ

パラメータ

説明

store_name

ストアの名前。

使用上の注意

実行前後に自動コミットする点で、このプロシージャはDDLのように実行します。

52 DBMS_DB_VERSION

DBMS_DB_VERSIONパッケージでは、Oracleバージョン番号、およびOracleのバージョンに基づいて条件付きコンパイルを簡単に選択する場合に有効なその他の情報を指定します。

関連項目:
条件付きコンパイルについては、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_DB_VERSIONの使用方法

- 概要

- 定数

- 例

DBMS_DB_VERSIONの使用方法

- 概要

- 定数

概要

DBMS_DB_VERSIONパッケージでは、Oracleバージョン番号、およびOracleのバージョンに基づいて条件付きコンパイルを簡単に選択する場合に有効なその他の情報を指定します。

Oracle Database 11g リリース1(11.1)のパッケージを次に示します。

PACKAGE DBMS_DB_VERSION IS
VERSION CONSTANT PLS_INTEGER := 11; -- RDBMS version number
RELEASE CONSTANT PLS_INTEGER := 1;  -- RDBMS release number
ver_le_9_1    CONSTANT BOOLEAN := FALSE;
ver_le_9_2    CONSTANT BOOLEAN := FALSE;
ver_le_9      CONSTANT BOOLEAN := FALSE;
ver_le_10_1   CONSTANT BOOLEAN := FALSE;
ver_le_10_2   CONSTANT BOOLEAN := FALSE;
ver_le_10     CONSTANT BOOLEAN := FALSE;
ver_le_11_1   CONSTANT BOOLEAN := TRUE;
ver_le_11     CONSTANT BOOLEAN := TRUE;
END DBMS_DB_VERSION;

ブール定数は、ネーミング規則に従います。各定数によって、ブール式の名前が指定されます。次に例を示します。

- VER_LE_9_1は、バージョン9以前およびリリース1以前を表します。

- VER_LE_10_2は、バージョン10以前およびリリース2以前を表します。

- VER_LE_10は、バージョン10以前を表します。

これらのブール定数の一般的な使用方法は、次のとおりです。

$IF DBMS_DB_VERSION.VER_LE_10 $THEN
version 10 and earlier code
$ELSIF DBMS_DB_VERSION.VER_LE_11 $THEN
version 11 code
$ELSE
version 12 and later code
$END

このコード構造は、仮定バージョン12のコードへの参照を保護します。また、バージョン10でのプログラムのコンパイル時に、制御パッケージ定数DBMS_DB_VERSION.VER_LE_11が参照されないようにします。同様の動作がバージョン11にも適用されます。条件付きコンパイルでは、DBMS_DB_VERSION.VER_LE_10がTRUEの場合に$ELSIFが評価されないため、このスキームは、バージョン10のデータベースで静的定数VER_LE_11が定義されていない場合でも適用されます。

定数

DBMS_DB_VERSIONパッケージには、異なるリリースのOracle Databaseの定数が含まれます。Oracle Database 11g リリース1(11.1)のDBMS_DB_VERSIONパッケージでは、表52-1に示す定数が使用されます。

表52-1 DBMS_DB_VERSIONの定数

名前

タイプ

値

説明

VERSION

PLS_INTEGER

10

現行のバージョン

RELEASE

PLS_INTEGER

2

現行のリリース

VER_LE_9

BOOLEAN

FALSE

バージョン9以前

VER_LE_9_1

BOOLEAN

FALSE

バージョン9以前およびリリース1以前

VER_LE_9_2

BOOLEAN

FALSE

バージョン9以前およびリリース2以前

VER_LE_10

BOOLEAN

TRUE

バージョン10以前

VER_LE_10_1

BOOLEAN

FALSE

バージョン10以前およびリリース1以前

VER_LE_10_2

BOOLEAN

TRUE

バージョン10以前およびリリース2以前

VER_LE_11

BOOLEAN

FALSE

バージョン11以前

VER_LE_11_1

BOOLEAN

TRUE

バージョン11以前およびリリース1以前

例

次の例では、条件付きコンパイルを使用して新機能を保護します。

CREATE OR REPLACE PROCEDURE whetstone IS

-- Notice that conditional compilation constructs
-- can interrupt a regular PL/SQL statement.
-- You can locate a conditional compilation directive anywhere
-- there is whitespace in the regular statement.

SUBTYPE my_real IS
$IF DBMS_DB_VERSION.VER_LE_9 $THEN NUMBER
$ELSE BINARY_DOUBLE
$END;

t  CONSTANT my_real := $IF DBMS_DB_VERSION.VER_LE_9 $THEN 0.499975
$ELSE 0.499975d
$END;

t2 CONSTANT my_real := $if DBMS_DB_VERSION.VER_LE_9 $THEN 2.0
$ELSE 2.0d
$END;

x  CONSTANT my_real := $IF DBMS_DB_VERSION.VER_LE_9 $THEN 1.0
$ELSE 1.0d
$END;

y  CONSTANT my_real := $IF DBMS_DB_VERSION.VER_LE_9 $THEN 1.0
$ELSE 1.0d
$END;

z  MY_REAL;

PROCEDURE P(x IN my_real, y IN my_real, z OUT NOCOPY my_real) IS
x1 my_real;
y1 my_real;
BEGIN
x1 := x;
y1 := y;
x1 := t * (x1 + y1);
y1 := t * (x1 + y1);
z := (x1 + y1)/t2;
END P;
BEGIN
P(x, y, z);
DBMS_OUTPUT.PUT_LINE ('z = '|| z);
END whetstone;
/

53 DBMS_DEBUG

DBMS_DEBUGは、OracleサーバーにおけるPL/SQLデバッガ・レイヤー、プローブに対するPL/SQLインタフェースです。

このAPIは、主にサーバー側のデバッガを実装することを目的としており、サーバー側のPL/SQLプログラム・ユニットをデバッグする方法を提供します。

注意:
プログラム・ユニットという用語は、各種のPL/SQLプログラム(プロシージャ、ファンクション、パッケージ、パッケージ本体、トリガー、無名ブロック、オブジェクト・タイプまたはオブジェクト・タイプ本体)のことを指します。

この章では、次の項目について説明します。

- DBMS_DEBUGの使用方法

- 概要

- 定数

- 変数

- 例外

- 使用上の注意

- データ構造

- レコード・タイプ

- 表タイプ

- DBMS_DEBUGサブプログラムの要約

DBMS_DEBUGの使用方法

- 概要

- 定数

- 変数

- 例外

- 使用上の注意

概要

サーバー側のコードをデバッグするには、2つのデータベース・セッションが必要です。1つはコードをデバッグ・モードで実行するセッション(ターゲット・セッション)、他の1つはそのターゲット・セッションを監視するセッション(デバッグ・セッション)です。

ターゲット・セッションは、DBMS_DEBUGで初期化コールを行うことでデバッグ可能になります。これにより、そのセッションにマークが付けられるため、PL/SQLインタプリタがデバッグ・モードで実行され、デバッグ・イベントが生成されます。デバッグ・イベントが生成されると、それらはセッションから転送されます。ほとんどの場合、デバッグ・イベントには戻り通知が必要なため、インタプリタは応答があるまで一時停止します。

この間に、デバッグ・セッション自体はDBMS_DEBUGを使用して初期化する必要があり、これによって、監視するターゲット・セッションが識別されます。次に、デバッグ・セッションはDBMS_DEBUGのエントリ・ポイントをコールして、ターゲット・セッションから転送されたイベントを読み込み、ターゲット・セッションと通信します。

次のサブプログラムは、ターゲット・セッション(デバッグ対象のセッション)で実行されます。

- SYNCHRONIZEファンクション

- DEBUG_ONプロシージャ

- DEBUG_OFFプロシージャ

DBMS_DEBUGは、PL/SQLコンパイラへのインタフェースは提供しませんが、コンパイラがオプションで生成するデバッグ情報には依存します。デバッグ情報がないと、パラメータまたは変数の値の検証や変更を実行できません。

定数

ブレーク・ポイントの状態には次の値があります。

- breakpoint_status_unused: ブレーク・ポイントは使用されていません。

ブレーク・ポイントが使用されている場合、状態は次の値のマスクになります。

- breakpoint_status_active: 行ブレーク・ポイント。

- breakpoint_status_disabled: ブレーク・ポイントは現在使用できません。

- breakpoint_status_remote: shadowブレーク・ポイント(リモート・ブレーク・ポイントのローカル表示)

変数

DBMS_DEBUGでは、表53-1に示す変数が使用されます。

表53-1 DBMS_DEBUGの変数

変数

説明

default_timeout

タイムアウトの値(両方のセッションが使用)。タイムアウトの最小許容値は1秒です。この値が0 (ゼロ)に設定された場合は、大きい値(3600)が使用されます。

例外

この値は、デバッグ・セッション(SYNCHRONIZE、CONTINUE、SET_BREAKPOINTなど)でコールされる様々なファンクションによって戻されます。PL/SQL例外がクライアント/サーバーおよびサーバー/サーバーの境界を越えて発生した場合は、すべて例外となり、エラー・コードは戻されません。

値

説明

success

正常終了

GET_VALUEおよびSET_VALUEによって戻されるステータスは次のとおりです。

ステータス

説明

error_bogus_frame

該当するエントリポイントがスタックにありません。

error_no_debug_info

プログラムがデバッグ記号なしにコンパイルされました。

error_no_such_object

該当する変数またはパラメータがありません。

error_unknown_type

デバッグ情報を読み取れません。

error_indexed_table

オブジェクトが表で、索引が提供されていない場合にGET_VALUEで戻されます。

error_illegal_index

該当する要素がコレクション内に存在しません。

error_nullcollection

表がアトミックNULLです。

error_nullvalue

値がNULLです。

SET_VALUEによって戻されるステータスは次のとおりです。

ステータス

説明

error_illegal_value

制約違反。

error_illegal_null

制約違反。

error_value_malformed

指定された値を解読できません。

error_other

その他のエラー。

error_name_incomplete

名前をスカラーに変換できません。

ブレーク・ポイント・ファンクションによって戻されるステータスは次のとおりです。

ステータス

説明

error_no_such_breakpt

該当するブレーク・ポイントがありません。

error_idle_breakpt

未使用のブレーク・ポイントは使用可能または使用禁止にできません。

error_bad_handle

指定されたプログラムにブレーク・ポイントを設定できません(存在していないか、またはセキュリティ違反です)。

一般的なエラー・コード(多数のDBMS_DEBUGサブプログラムが戻す)は次のとおりです。

ステータス

説明

error_unimplemented

機能が実装されていません。

error_deferred

プログラムが実行されていません。操作は延期されました。

error_exception

サーバー上のDBMS_DEBUGまたはプローブ・パッケージで例外が発生しました。

error_communication

タイムアウト以外のエラーが発生しました。

error_timeout

タイムアウトが発生しました。

例外

説明

illegal_init

INITIALIZEの前にDEBUG_ONがコールされました。

次の例外は、プロシージャSELF_CHECKによって発生します。

例外

説明

pipe_creation_failure

パイプを作成できませんでした。

pipe_send_failure

パイプにデータを書き込めませんでした。

pipe_receive_failure

パイプからデータを読み込めませんでした。

pipe_datatype_mismatch

パイプ内のデータ・タイプが正しくありませんでした。

pipe_data_error

データがパイプ内で混同されていました。

使用上の注意

デバッグ情報の生成を確認する方法は2通りあります。セッション・スイッチを使用する方法と、個別に再コンパイルする方法です。

セッション・スイッチを設定するには、次の文を入力します。

ALTER SESSION SET PLSQL_DEBUG = true;

この文によって、コンパイラはセッションの残りの部分に関するデバッグ情報を生成します。既存のPL/SQLは再コンパイルしません。

既存のPL/SQLコードのデバッグ情報を生成するには、次の文のいずれかを使用します(2番目の文はパッケージまたはタイプの本体を再コンパイルします)。

ALTER [PROCEDURE | FUNCTION | PACKAGE | TRIGGER | TYPE] <name> COMPILE DEBUG;
ALTER [PACKAGE | TYPE] <name> COMPILE DEBUG BODY;

図53-1および図53-2に、デバッグ対象のセッションおよびデバッグ・セッションでの操作のフローを示します。

図53-1 対象セッション

図53-2 デバッグ・セッション

図53-3 デバッグ・セッション(続き)

インタプリタの管理

インタプリタは、次の場合に実行を一時停止します。

1. インタプリタの起動時。実行前に、遅延ブレーク・ポイントをインストールできるようにするため。

2. 使用可能なブレーク・ポイントを含んだ行に達したとき。

3. 関連のあるイベントが発生した行に達したとき。関連イベントのセットは、breakflagsパラメータのDBMS_DEBUG.CONTINUEに渡されるフラグで指定します。

セッションの終了

セッション終了のイベントはありません。したがって、ターゲット・セッションが終了していないことを、デバッグ・セッションでチェックして確認する必要があります。ターゲット・セッションが終了した後にDBMS_DEBUG.SYNCHRONIZEをコールすると、タイムアウトするまでデバッグ・セッションがハングアップします。

遅延操作

図では、ターゲット・セッションの前にブレーク・ポイントを設定できることが示されています。これは確かに可能です。この場合、プローブはブレーク・ポイント要求をキャッシュして、最初の同期でターゲット・セッションに送信します。ただし、ブレーク・ポイント要求がこのように遅延した場合は次のようになります。

- SET_BREAKPOINTはブレーク・ポイント番号を設定しません(必要に応じて後でSHOW_BREAKPOINTSから取得できます)。

- SET_BREAKPOINTはブレーク・ポイント要求を検証しません。要求されたソース行が存在しない場合は、同期時にエラーが内部的に発生し、ブレーク・ポイントは設定されません。

診断出力

プローブをデバッグするために、DBMS_DEBUGのコールの一部に対してdiagnosticsパラメータが用意されています。これらのパラメータは、RDBMSトレース・ファイルに診断出力を格納するかどうかを指定します。RDBMSトレース・ファイルに出力できない場合、このパラメータは無効になります。

共通セクションおよびデバッグ・セッション・セクション

- 共通セクション

- ターゲット・セッション

- デバッグ・セッション・セクション

共通セクション

次に示すサブプログラムは、ターゲットまたはデバッグ・セッションのいずれでもコールできます。

- PROBE_VERSIONプロシージャ

- SELF_CHECKプロシージャ

- SET_TIMEOUTファンクション

ターゲット・セッション

次のサブプログラムは、ターゲット・セッションでのみコールできます。

- INITIALIZEファンクション

- DEBUG_ONプロシージャ

- SET_TIMEOUT_BEHAVIOURプロシージャ

- GET_TIMEOUT_BEHAVIOURファンクション

デバッグ・セッション・セクション

次のサブプログラムは、デバッグ・セッションでのみ実行してください。

- ATTACH_SESSIONプロシージャ

- SYNCHRONIZEファンクション

- SHOW_FRAME_SOURCEプロシージャ

- SHOW_SOURCEプロシージャ

- GET_MORE_SOURCEプロシージャ

- PRINT_BACKTRACEプロシージャ

- CONTINUEファンクション

- SET_BREAKPOINTファンクション

- DELETE_BREAKPOINTファンクション

- SET_OER_BREAKPOINTファンクション

- DELETE_OER_BREAKPOINTファンクション

- ENABLE_BREAKPOINTファンクション

- DISABLE_BREAKPOINTファンクション

- SHOW_BREAKPOINTSプロシージャ

- SET_VALUEファンクション

- GET_VALUEファンクション

- TARGET_PROGRAM_RUNNINGプロシージャ

- DETACH_SESSIONプロシージャ

- GET_RUNTIME_INFOファンクション

- PRINT_INSTANTIATIONSプロシージャ

- PINGプロシージャ

- GET_LINE_MAPファンクション

- GET_RUNTIME_INFOファンクション

- GET_INDEXESファンクション

- EXECUTEプロシージャ

OERブレーク・ポイント

PL/SQLプログラム内で宣言される例外は、ユーザー定義の例外として認識されています。さらに、Oracleカーネルから戻されるOracleエラー(OER)があります。この2つのメカニズムを結合するために、PL/SQLはユーザー定義の例外をOERに変換するexception_initプラグマを提供していて、この処理にはPL/SQLハンドラが使用され、PL/SQLエンジンは、OERをOracleカーネルに戻すことができます。現行のリリースでは、OERに関する使用可能な情報はその番号のみです。2つのユーザー定義例外が同じOERにexception_initされると、区別できません。

ネームスペース

サーバー上のプログラム・ユニットは、異なるネームスペースに常駐しています。ブレーク・ポイントの設定時には、希望するネームスペースを指定してください。

1. Namespace_cursorにはカーソル(無名ブロック)が含まれています。

2. Namespace_pgkspec_or_toplevelには次が含まれています。

- パッケージ仕様部

- 他のパッケージ、プロシージャまたはファンクション内にネストされていないプロシージャおよびファンクション

- オブジェクト・タイプ

3. Namespace_pkg_bodyにはパッケージ本体およびタイプ本体が含まれています。

4. Namespace_triggerにはトリガーが含まれています。

Libunitタイプ

この値は、特定のネームスペースのオブジェクトを一意化するために使用されます。これらの定数は、プローブがスタックのバックトレースを提供しているときに、PROGRAM_INFOで使用されます。

- LibunitType_cursor

- LibunitType_procedure

- LibunitType_function

- LibunitType_package

- LibunitType_package_body

- LibunitType_trigger

- LibunitType_Unknown

ブレーク・フラグ

この値は、クライアントに関連のあるイベントをプローブに通知するために、CONTINUEに対するbreakflagsパラメータで使用されます。これらのフラグは結合できます。

値

説明

break_next_line

次のソース行でブレークします(コールをスキップ)。

break_any_call

次のソース行でブレークします(コールを開始)。

break_any_return

現行のエントリポイントから戻された後ブレーク(現行のルーチンからコールされたエントリポイントはすべてスキップ)します。

break_return

次回のエントリポイントが戻し処理の準備ができた時点でブレークします。(現行のエントリポイントからコールされたエントリポイントが含まれます。インタプリタがProc2をコールするProc1を実行している場合、break_returnはProc2の終了時に停止します。)

break_exception

例外が発生したときにブレークします。

break_handler

例外ハンドラが実行されたときにブレークします。

abort_execution

実行を停止し、DBMS_DEBUG.CONTINUEがコールされるとすぐに、'exit'イベントを強制的に実行します。

情報フラグ

このフラグは、info_requestedパラメータとしてSYNCHRONIZE、CONTINUEおよびGET_RUNTIME_INFOに渡されます。

フラグ

説明

info_getStackDepth

スタックの現在の深さを取得します。

info_getBreakpoint

ブレーク・ポイント数を取得します。

info_getLineinfo

プログラム・ユニット情報を取得します。

中断理由

CONTINUEの実行後、プログラムは最後まで実行されるか、または途中の行でブレークします。

理由

説明

reason_none

-

reason_interpreter_starting

インタプリタは起動中です。

reason_breakpoint

ブレーク・ポイントに到達しました。

reason_enter

プロシージャ・エントリ。

reason_return

プロシージャが戻ります。

reason_finish

プロシージャが終了しました。

reason_line

改行に到達しました。

reason_interrupt

割込みが発生しました。

reason_exception

例外が発生しました。

reason_exit

インタプリタは終了処理中です(旧形式)。

reason_knl_exit

カーネルは終了処理中です。

reason_handler

例外ハンドラを起動します。

reason_timeout

タイムアウトが発生しました。

reason_instantiate

インスタンス化ブロック。

reason_abort

インタプリタは異常終了中です。

データ構造

DBMS_DEBUGパッケージでは、レコード・タイプおよび表タイプを定義します。

レコード・タイプ

- BREAKPOINT_INFOレコード・タイプ

- PROGRAM_INFOレコード・タイプ

- RUNTIME_INFOレコード・タイプ

表タイプ

- BACKTRACE_TABLE表タイプ

- BREAKPOINT_TABLE表タイプ

- INDEX_TABLE表タイプ

- VC2_TABLE表タイプ

BREAKPOINT_INFOレコード・タイプ

このタイプは、ブレーク・ポイントに関して、現在の状態や配置されたプログラム・ユニットなどの情報を提供します。

構文

TYPE breakpoint_info IS RECORD (
name        VARCHAR2(30),
owner       VARCHAR2(30),
dblink      VARCHAR2(30),
line#       BINARY_INTEGER,
libunittype BINARY_INTEGER,
status      BINARY_INTEGER);

フィールド

表53-2 BREAKPOINT_INFOフィールド

フィールド

説明

name

プログラム・ユニットの名前。

owner

プログラム・ユニットの所有者。

dblink

データベース・リンク(リモートの場合)。

line#

行番号。

libunittype

ネストされたプロシージャまたはファンクション以外はNULLです。

status

breakpoint_status_*の値については、「定数」を参照してください。

PROGRAM_INFOレコード・タイプ

このタイプはプログラムの位置を指定します。これはプログラム・ユニット内の行番号です。これは、スタックのバックトレース用およびブレーク・ポイントの設定と検査用に使用されます。読取り専用フィールドは、ブレーク・ポイント操作に関してプローブでは現在は無視されています。読取り専用フィールドは、プローブによってスタックのバックトレース用のみに設定されます。

構文

TYPE program_info IS RECORD(
-- The following fields are used when setting a breakpoint
namespace        BINARY_INTEGER,
name             VARCHAR2(30),
owner            VARCHAR2(30),
dblink           VARCHAR2(30),
line#            BINARY_INTEGER,
-- Read-only fields (set by Probe when doing a stack backtrace)
libunittype      BINARY_INTEGER,
entrypointname   VARCHAR2(30));

フィールド

表53-3 PROGRAM_INFOのフィールド

フィールド

説明

namespace

「ネームスペース」を参照してください。

name

プログラム・ユニットの名前。

owner

プログラム・ユニットの所有者。

dblink

データベース・リンク(リモートの場合)。

line#

行番号。

libunittype

読取り専用フィールド。ネストされたプロシージャまたはファンクション以外はNULLです。

entrypointname

読取り専用フィールド。同じネームスペースを共有するオブジェクト(プロシージャやパッケージ仕様部など)を一意化します。

詳細は、「Libunitタイプ」を参照してください。

RUNTIME_INFOレコード・タイプ

このタイプは、実行プログラムに関するコンテキスト情報を提供します。

構文

TYPE runtime_info IS RECORD(
line#            BINARY_INTEGER,
terminated       binary_integer,
breakpoint       binary_integer,
stackdepth       BINARY_INTEGER,
interpreterdepth BINARY_INTEGER,
reason           BINARY_INTEGER,
program          program_info);

フィールド

表53-4 RUNTIME_INFOのフィールド

フィールド

説明

line#

program.line#の複製

terminated

プログラムが終了しているかどうか

breakpoint

ブレーク・ポイント番号

stackdepth

スタック上のフレームの数

interpreterdepth

[予約フィールド]

reason

中断理由

program

ソースの場所

BACKTRACE_TABLE表タイプ

このタイプは、PRINT_BACKTRACEで使用されます。

構文

TYPE backtrace_table IS TABLE OF program_info INDEX BY BINARY_INTEGER;

BREAKPOINT_TABLE表タイプ

このタイプは、SHOW_BREAKPOINTSで使用されます。

構文

TYPE breakpoint_table IS TABLE OF breakpoint_info INDEX BY BINARY_INTEGER;

INDEX_TABLE表タイプ

このタイプは、索引表で使用可能な索引を戻すために、GET_INDEXESで使用されます。

構文

TYPE index_table IS table of BINARY_INTEGER INDEX BY BINARY_INTEGER;

VC2_TABLE表タイプ

このタイプは、SHOW_SOURCEで使用されます。

構文

TYPE vc2_table IS TABLE OF VARCHAR2(90) INDEX BY BINARY_INTEGER;

DBMS_DEBUGサブプログラムの要約

表53-5 DBMS_DEBUGパッケージのサブプログラム

サブプログラム

説明

ATTACH_SESSIONプロシージャ

デバッグ・セッションにターゲット・デバッグIDに関する情報を通知します。

CONTINUEファンクション

ターゲット・プログラムの実行を継続します。

DEBUG_OFFプロシージャ

デバッグ・モードをオフにします。

DEBUG_ONプロシージャ

デバッグ・モードをオンにします。

DELETE_BREAKPOINTファンクション

ブレーク・ポイントを削除します。

DELETE_OER_BREAKPOINTファンクション

OERブレーク・ポイントを削除します。

DETACH_SESSIONプロシージャ

ターゲット・プログラムのデバッグを停止します。

DISABLE_BREAKPOINTファンクション

ブレーク・ポイントを使用禁止にします。

ENABLE_BREAKPOINTファンクション

既存のブレーク・ポイントをアクティブにします。

EXECUTEプロシージャ

ターゲット・セッションでSQLまたはPL/SQLを実行します。

GET_INDEXESファンクション

索引表に対する一連の索引を戻します。

GET_MORE_SOURCEプロシージャ

SHOW_SOURCEの使用時に、バッファ・オーバーフローが起きたときに追加ソースを提供します。

GET_LINE_MAPファンクション

プログラム・ユニット内の行番号に関する情報を戻します。

GET_RUNTIME_INFOファンクション

現行のプログラムに関する情報を戻します。

GET_TIMEOUT_BEHAVIOURファンクション

現行のタイムアウト動作を戻します。

GET_VALUEファンクション

現在実行中のプログラムから値を取得します。

INITIALIZEファンクション

ターゲット・セッションのデバッグIDを設定します。

PINGプロシージャ

ターゲット・セッションがタイムアウトしないようにpingします。

PRINT_BACKTRACEプロシージャ

スタックのバックトレースを印刷します。

PRINT_INSTANTIATIONSプロシージャ

スタックのバックトレースを印刷します。

PROBE_VERSIONプロシージャ

サーバー上のDBMS_DEBUGのバージョン番号を戻します。

SELF_CHECKプロシージャ

内部一貫性チェックを実行します。

SET_BREAKPOINTファンクション

プログラム・ユニットにブレーク・ポイントを設定します。

SET_OER_BREAKPOINTファンクション

OERブレーク・ポイントを設定します。

SET_TIMEOUTファンクション

タイムアウト値を設定します。

SET_TIMEOUT_BEHAVIOURプロシージャ

タイムアウトの発生時に、ターゲット・セッションに行う処理をプローブに指示します。

SET_VALUEファンクション

現在実行中のプログラムに値を設定します。

SHOW_BREAKPOINTSプロシージャ

現行のブレーク・ポイントのリストを戻します。

SHOW_FRAME_SOURCEプロシージャ

フレーム・ソースをフェッチします。

SHOW_SOURCEプロシージャ

プログラム・ソースをフェッチします。

SYNCHRONIZEファンクション

プログラムの実行開始を待機します。

TARGET_PROGRAM_RUNNINGプロシージャ

ターゲット・セッションが現在ストアド・プロシージャを実行中の場合はTRUE、実行していない場合はFALSEを戻します。

ATTACH_SESSIONプロシージャ

このプロシージャは、ターゲット・プログラムに関する情報をデバッグ・セッションに通知します。

構文

DBMS_DEBUG.ATTACH_SESSION (
debug_session_id  IN VARCHAR2,
diagnostics       IN BINARY_INTEGER := 0);

パラメータ

表53-6 ATTACH_SESSIONプロシージャのパラメータ

パラメータ

説明

debug_session_id

ターゲット・セッションのINITIALIZEコールで取得したデバッグID。

diagnostics

0(ゼロ)以外の場合に診断出力を生成します。

CONTINUEファンクション

このファンクションは、指定されたブレーク・フラグ(関連のあるイベントのマスク)をターゲット・プロセスのプローブに渡します。プローブに、ターゲット・プロセスの実行を継続するように通知し、ターゲット・プロセスが実行を終了するか、またはイベントを通知するまで待機します。

info_requestedがNULLでない場合は、GET_RUNTIME_INFOをコールします。

構文

DBMS_DEBUG.CONTINUE (
run_info       IN OUT runtime_info,
breakflags     IN     BINARY_INTEGER,
info_requested IN     BINARY_INTEGER := NULL)
RETURN BINARY_INTEGER;

パラメータ

表53-7 CONTINUEファンクションのパラメータ

パラメータ

説明

run_info

プログラムの状態に関する情報。

breakflags

関連のあるイベントのマスク(「ブレーク・フラグ」を参照)。

info_requested

プログラムが停止したときに、run_infoに戻される必要のある情報(「情報フラグ」を参照)。

戻り値

表53-8 CONTINUEファンクションの戻り値

戻り値

説明

success

error_timeout

プログラムが実行を開始する前にタイムアウトしました。

error_communication

その他の通信エラー。

DEBUG_OFFプロシージャ

注意:

immediateがTRUEの場合、デバッグ・セッションは待機する必要があります。

このプロシージャは、そのセッションでデバッグを実行する必要がなくなったことをターゲット・セッションに通知します。セッションの終了前にこのファンクションをコールする必要はありません。

構文

DBMS_DEBUG.DEBUG_OFF;

使用上の注意

サーバーは、このエントリポイントを特別には処理しません。したがって、このエントリポイントをデバッグしようとします。

DEBUG_ONプロシージャ

このプロシージャは、すべてのPL/SQLがデバッグ・モードで実行されるように、ターゲット・セッションにマークを設定します。この処理は、デバッグの開始前に実行する必要があります。

構文

DBMS_DEBUG.DEBUG_ON (
no_client_side_plsql_engine BOOLEAN := TRUE,
immediate                   BOOLEAN := FALSE);

パラメータ

表53-9 DEBUG_ONプロシージャのパラメータ

パラメータ

説明

no_client_side_plsql_engine

デバッグ・セッションがクライアント側のPL/SQLエンジンから起動されていないかぎり、デフォルト値のままにしてください。

immediate

TRUEの場合、インタプリタは標準モードで処理を継続せずに、コール中にすぐにデバッグ・モードに切り替わります。

DELETE_BREAKPOINTファンクション

このファンクションはブレーク・ポイントを削除します。

構文

DBMS_DEBUG.DELETE_BREAKPOINT (
breakpoint IN BINARY_INTEGER)
RETURN BINARY_INTEGER;

パラメータ

表53-10 DELETE_BREAKPOINTファンクションのパラメータ

パラメータ

説明

breakpoint

以前のSET_BREAKPOINTコールから戻されたブレーク・ポイント番号。

戻り値

表53-11 DELETE_BREAKPOINTファンクションの戻り値

戻り値

説明

success

error_no_such_breakpt

該当するブレーク・ポイントが存在しません。

error_idle_breakpt

未使用のブレーク・ポイントは削除できません。

error_stale_breakpt

ブレーク・ポイントが設定された後にプログラム・ユニットが再定義されました。

DELETE_OER_BREAKPOINTファンクション

このファンクションは、OERブレーク・ポイントを削除します。

構文

DBMS_DEBUG.DELETE_OER_BREAKPOINT (
oer  IN PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表53-12 DELETE_OER_BREAKPOINTファンクションのパラメータ

パラメータ

説明

oer

削除するOER(4バイトの正数)。

DETACH_SESSIONプロシージャ

このプロシージャは、ターゲット・プログラムのデバッグを停止します。このプロシージャはいつでもコール可能ですが、デバッグ・セッションの連結が解除されたことはターゲット・セッションに通知されず、ターゲット・セッションの実行は終了しません。したがって、ターゲット・セッションが独自にハングアップしないように注意してください。

構文

DBMS_DEBUG.DETACH_SESSION;

DISABLE_BREAKPOINTファンクション

このファンクションは、既存のブレーク・ポイントを使用禁止にしますが、削除しないでそのまま残します。

構文

DBMS_DEBUG.DISABLE_BREAKPOINT (
breakpoint IN BINARY_INTEGER)
RETURN BINARY_INTEGER;

パラメータ

表53-13 DISABLE_BREAKPOINTファンクションのパラメータ

パラメータ

説明

breakpoint

以前のSET_BREAKPOINTコールから戻されたブレーク・ポイント番号。

戻り値

表53-14 DISABLE_BREAKPOINTファンクションの戻り値

戻り値

説明

success

error_no_such_breakpt

該当するブレーク・ポイントが存在しません。

error_idle_breakpt

未使用のブレーク・ポイントは使用禁止にできません。

ENABLE_BREAKPOINTファンクション

このファンクションは、使用禁止の逆の処理を実行します。以前に使用禁止にしたブレーク・ポイントを使用可能にします。

構文

DBMS_DEBUG.ENABLE_BREAKPOINT (
breakpoint IN BINARY_INTEGER)
RETURN BINARY_INTEGER;

パラメータ

表53-15 ENABLE_BREAKPOINTファンクションのパラメータ

パラメータ

説明

breakpoint

以前のSET_BREAKPOINTコールから戻されたブレーク・ポイント番号。

戻り値

表53-16 ENABLE_BREAKPOINTファンクションの戻り値

戻り値

説明

success

成功。

error_no_such_breakpt

該当するブレーク・ポイントが存在しません。

error_idle_breakpt

未使用のブレーク・ポイントは使用可能にできません。

EXECUTEプロシージャ

このプロシージャは、ターゲット・セッションでSQLまたはPL/SQLコードを実行します。ターゲット・セッションは、ブレーク・ポイント(またはその他のイベント)で待機中であるとみなされます。デバッグ・セッションでDBMS_DEBUG.EXECUTEがコールされ、ターゲット・セッションにコードの実行を要求します。

構文

DBMS_DEBUG.EXECUTE (
what         IN VARCHAR2,
frame#       IN BINARY_INTEGER,
bind_results IN BINARY_INTEGER,
results      IN OUT NOCOPY dbms_debug_vc2coll,
errm         IN OUT NOCOPY VARCHAR2);

パラメータ

表53-17 EXECUTEプロシージャのパラメータ

パラメータ

説明

what

実行するSQLまたはPL/SQLのソース。

frame#

コードを実行するコンテキスト。現在は-1(グローバル・コンテキスト)のみサポートされています。

bind_results

ターゲット・セッションから値を戻すために、ソースをresultsに結合するかどうかを指定します。

0 = いいえ

1 = はい

results

結果を格納するコレクション(bind_resultsが0(ゼロ)以外の場合)。

errm

エラーが発生した場合はエラー・メッセージ、それ以外の場合はNULLです。

例

例1

この例はSQL文の実行例です。結果は戻されません。

DECLARE
coll sys.dbms_debug_vc2coll; -- results (unused)
errm VARCHAR2(100);
BEGIN
dbms_debug.execute('insert into emp(ename,empno,deptno) ' ||
'values(''LJE'', 1, 1)',
-1, 0, coll, errm);
END;

例2

この例はPL/SQLブロックの実行例で、結果は戻されません。ブロックは自律型トランザクションで、表に挿入された値はデバッグ・セッションで参照できます。

DECLARE
coll sys.dbms_debug_vc2coll;
errm VARCHAR2(100);
BEGIN
dbms_debug.execute(
'DECLARE PRAGMA autonomous_transaction; ' ||
'BEGIN ' ||
'   insert into emp(ename, empno, deptno) ' ||
'   values(''LJE'', 1, 1); ' ||
' COMMIT; ' ||
'END;',
-1, 0, coll, errm);
END;

例3

この例はPL/SQLブロックの実行例で、結果がいくつか戻されます。

DECLARE
coll sys.dbms_debug_vc2coll;
errm VARCHAR2(100);
BEGIN
dbms_debug.execute(
'DECLARE ' ||
'   pp SYS.dbms_debug_vc2coll := SYS.dbms_debug_vc2coll(); ' ||
'   x  PLS_INTEGER; ' ||
'   i  PLS_INTEGER := 1; ' ||
'BEGIN ' ||
'   SELECT COUNT(*) INTO x FROM emp; ' ||
'   pp.EXTEND(x * 6); ' ||
'   FOR c IN (SELECT * FROM emp) LOOP ' ||
'      pp(i) := ''Ename: '' || c.ename; i := i+1; ' ||
'      pp(i) := ''Empno: '' || c.empno; i := i+1; ' ||
'      pp(i) := ''Job:   '' || c.job;   i := i+1; ' ||
'      pp(i) := ''Mgr:   '' || c.mgr;   i := i+1; ' ||
'      pp(i) := ''Sal:   '' || c.sal;   i := i+1; ' ||
'      pp(i) := null;                   i := i+1; ' ||
'   END LOOP; ' ||
'   :1 := pp;' ||
'END;',
-1, 1, coll, errm);
each := coll.FIRST;
WHILE (each IS NOT NULL) LOOP
dosomething(coll(each));
each := coll.NEXT(each);
END LOOP;
END;

GET_INDEXESファンクション

変数またはパラメータの名前を指定すると、索引表の場合はその一連の索引を戻します。索引表以外の場合はエラーが戻されます。

構文

DBMS_DEBUG.GET_INDEXES (
varname   IN  VARCHAR2,
frame#    IN  BINARY_INTEGER,
handle    IN  program_info,
entries   OUT index_table)
RETURN BINARY_INTEGER;

パラメータ

表53-18 GET_INDEXESファンクションのパラメータ

パラメータ

説明

varname

索引情報を取得する変数の名前。

frame#

変数またはパラメータが常駐しているフレームの番号。パッケージ変数の場合はNULLです。

handle

パッケージの説明(オブジェクトがパッケージ変数の場合)。

entries

1ベースの索引表: NULL以外の場合は、entries(1)にその行の1番目の索引、entries(2)に2番目の索引が含まれ、以降同様に索引が含まれます。

戻り値

表53-19 GET_INDEXESファンクションの戻り値

戻り値

説明

error_no_such_object

次のいずれかです。

- パッケージが存在しません。

- パッケージがインスタンス化されていません。

- ユーザーにパッケージをデバッグする権限がありません。

- オブジェクトがパッケージ内に存在しません。

GET_MORE_SOURCEプロシージャ

フォーマット済バッファを生成したSHOW_SOURCEプロシージャの該当バージョンによって提供されたバッファにソースが収まらない場合、このプロシージャが追加ソースを提供します。

構文

DBMS_DEBUG.GET_MORE_SOURCE (
buffer          IN OUT VARCHAR2,
buflen          IN BINARY_INTEGER,
piece#          IN BINARY_INTEGER);

パラメータ

表53-20 GET_MORE_SOURCEプロシージャのパラメータ

パラメータ

説明

buffer

バッファ

buflen

バッファの長さ

piece#

2とSHOW_SOURCEプロシージャの適切なバージョンへのコールからパラメータの各部分に戻された値との間の値

使用上の注意

このプロシージャは、フォーマット済バッファを戻すSHOW_SOURCEの該当バージョンの後にのみコールします。

GET_LINE_MAPファンクション

このファンクションは、ブレーク・ポイントを配置できるソース行をデバッガが決定できるように、プログラムに関する行およびエントリポイントの情報を検索します。

構文

DBMS_DEBUG.GET_LINE_MAP (
program                IN   program_info,
maxline                OUT  BINARY_INTEGER,
number_of_entry_points OUT  BINARY_INTEGER,
linemap                OUT  RAW)
RETURN BINARY_INTEGER;

パラメータ

表53-21 GET_LINE_MAPファンクションのパラメータ

パラメータ

説明

program

トップレベルのプログラム・ユニット(プロシージャ、パッケージ、ファンクション、パッケージ本体など)。Namespace、NameおよびOwnerの各フィールドは初期化する必要がありますが、残りのフィールドは無視されます。

maxline

'program'内で最大のソース・コード行番号。

number_of_entry_points

'program'内のサブプログラムの数。

linemap

'program'の実行可能行を表すビットマップ。行番号Nが実行可能である場合、ビット番号N MOD 8がラインマップ位置N / 8で1に設定されます。戻されるラインマップの長さは、maxlineを8で割ったものか(maxline MOD 8が0(ゼロ)以外の場合は1を加算)、または、ほとんど発生しないケースですが、maxlineが32767 * 8よりも大きい場合は32767のいずれかになります。

戻り値

表53-22 GET_LINE_MAPファンクションの戻り値

戻り値

説明

success

正常な完了。

error_no_debug_info

プログラム・ユニットは存在しますが、デバッグ情報がありません。

error_bad_handle

該当するプログラム・ユニットが存在しません。

GET_RUNTIME_INFOファンクション

このファンクションは、現行のプログラムに関する情報を戻します。これは、SYNCHRONIZEまたはCONTINUEに対するinfo_requestedパラメータが0 (ゼロ)に設定された場合にのみ必要です。

注意:
このファンクションは、現在クライアント側のPL/SQLでのみ使用されます。

構文

DBMS_DEBUG.GET_RUNTIME_INFO (
info_requested  IN  BINARY_INTEGER,
run_info        OUT runtime_info)
RETURN BINARY_INTEGER;

パラメータ

表53-23 GET_RUNTIME_INFOファンクションのパラメータ

パラメータ

説明

info_requested

プログラムが停止したときに、run_infoに戻される必要のある情報(「情報フラグ」を参照)。

run_info

プログラムの状態に関する情報。

GET_TIMEOUT_BEHAVIOURファンクション

このプロシージャは、現行のタイムアウト動作を戻します。このコールは、ターゲット・セッションで行われます。

構文

DBMS_DEBUG.GET_TIMEOUT_BEHAVIOUR
RETURN BINARY_INTEGER;

パラメータ

表53-24 GET_TIMEOUT_BEHAVIOURファンクションのパラメータ

パラメータ

説明

oer

OER(4バイトの正数)

戻り値

表53-25 GET_TIMEOUT_BEHAVIOURファンクションの戻り値

戻り値

説明

success

正常な完了。

情報フラグ

info_getOerInfo CONSTANT PLS_INTEGER:= 32;

使用上の注意

OERブレーク・ポイントでサポートされている機能は、コード・ブレーク・ポイントと比較すると少なくなります。特に、次の点に注意してください。

- ブレーク・ポイント番号は戻されず、かわりにOERの番号が使用されます。したがって、指定したOERに複数のブレーク・ポイントは設定できません(操作できません)。

- OERブレーク・ポイントは使用禁止にできません(ただし、クライアントは、これを削除して自由にシミュレートできます)。

- OERブレーク・ポイントは、delete_oer_breakpointを使用して削除されます。

GET_VALUEファンクション

このファンクションは、現在実行中のプログラムから値を取得します。GET_VALUEファンクションは、2種類オーバーロードされています。

構文

DBMS_DEBUG.GET_VALUE (
variable_name  IN  VARCHAR2,
frame#         IN  BINARY_INTEGER,
scalar_value   OUT VARCHAR2,
format         IN  VARCHAR2 := NULL)
RETURN BINARY_INTEGER;

パラメータ

表53-26 GET_VALUEファンクションのパラメータ

パラメータ

説明

variable_name

変数またはパラメータの名前。

frame#

値が存在するフレーム。0(ゼロ)の場合は現行のプロシージャです。

scalar_value

値

format

使用するオプションの日付書式(指定する必要がある場合)。

戻り値

表53-27 GET_VALUEファンクションの戻り値

戻り値

説明

success

正常な完了。

error_bogus_frame

フレームが存在しません。

error_no_debug_info

エントリポイントにデバッグ情報がありません。

error_no_such_object

variable_nameがframe#に存在しません。

error_unknown_type

デバッグ情報内のタイプ情報が判読不能です。

error_nullvalue

値がNULLです。

error_indexed_table

オブジェクトは表ですが、索引が提供されていません。

次のGET_VALUE構文は、パッケージ変数フェッチ用です。フレーム番号のかわりに、変数を含んだパッケージを説明するハンドルを使用します。

構文

DBMS_DEBUG.GET_VALUE (
variable_name  IN  VARCHAR2,
handle         IN  program_info,
scalar_value   OUT VARCHAR2,
format         IN  VARCHAR2 := NULL)
RETURN BINARY_INTEGER;

パラメータ

表53-28 GET_VALUEファンクションのパラメータ

パラメータ

説明

variable_name

変数またはパラメータの名前。

handle

変数を含んだパッケージの説明。

scalar_value

値

format

使用するオプションの日付書式(指定する必要がある場合)。

戻り値

表53-29 GET_VALUEファンクションの戻り値

戻り値

説明

error_no_such_object

次のいずれかです。

- パッケージが存在しません。

- パッケージがインスタンス化されていません。

- ユーザーにパッケージをデバッグする権限がありません。

- オブジェクトがパッケージ内に存在しません。

error_indexed_table

オブジェクトは表ですが、索引が提供されていません。

例

この例は、スキーマSCOTT内の変数VARを含んだ任意のパッケージPACKの値を取得する方法を示しています。

DECLARE
handle     dbms_debug.program_info;
resultbuf  VARCHAR2(500);
retval     BINARY_INTEGER;
BEGIN
handle.Owner     := 'SCOTT';
handle.Name      := 'PACK';
handle.namespace := dbms_debug.namespace_pkgspec_or_toplevel;
retval           := dbms_debug.get_value('VAR', handle, resultbuf, NULL);
END;

INITIALIZEファンクション

このファンクションは、デバッグ用にターゲット・セッションを初期化します。

構文

DBMS_DEBUG.INITIALIZE (
debug_session_id  IN VARCHAR2       := NULL,
diagnostics       IN BINARY_INTEGER := 0)
RETURN VARCHAR2;

パラメータ

表53-30 INITIALIZEファンクションのパラメータ

パラメータ

説明

debug_session_id

セッションIDの名前。NULLの場合は、一意のIDが生成されます。

diagnostics

診断出力をトレース・ファイルにダンプするかどうかを示します。

0 = (デフォルト)診断出力なし。

1 = 診断出力あり。

戻り値

新たに登録されたデバッグ・セッションID(デバッグID)

使用上の注意

DBMS_DEBUGとJDWPベースのデバッグ・インタフェースは同時に使用できません。このコールは、セッションが現在JDWPベースのデバッグ・インタフェースでデバッグ中の場合はORA-30677エラーが表示されて失敗するか、またはコールが成功したとしても、さらにJDWPベースのインタフェースを使用してこのセッションをデバッグすることはできません。

DBMS_DEBUGへのコールは、コール元または指定されたデバッグ・ロールがDEBUG CONNECT SESSION権限を有する場合のみ成功します。失敗した場合は、ORA-1031エラーが表示されます。他に起こりうる例外として、デバッグ・ロールが指定されてもパスワードが一致しない場合、コール元のユーザーがロールを権限付与されていない場合またはロールがアプリケーション起動型であるのにこのコールがロール起動パッケージ内から発生していない場合などもあります。

CREATE ANY PROCEDURE権限は、デバッガによるルーチンの可視性には影響を与えません。各オブジェクトへの権限DEBUGは、対応するDEBUG ANY PROCEDUREの変数を使用して導入されています。これは、セッションのログイン・ユーザー以外のユーザーが所有するルーチンを確認するために必要です。

デバッグ・ロールの認証およびDEBUG CONNECT SESSION権限のチェックは、このルーチンへのコール元のコンテキストの中で行われます。コール元が定義者権限ルーチンであるか、または定義者権限ルーチンからコールされている場合、定義ユーザー、デバッグ・ロールまたはPUBLICに付与された権限のみがDEBUG CONNECT SESSIONのチェックに使用されます。このコールが定義者権限ルーチン内からのものであると、デバッグ・ロールが指定される場合は、その定義者に付与されたものである必要がありますが、セッション・ログイン・ユーザーに付与されたものである必要はなく、またコールが行われる際のコール・セッションで有効にする必要もありません。

このコールを実行した後で、デバッガによって行われる、個々のプロシージャ上でDEBUG権限を検索するチェックは、セッションのログイン・ユーザー、このコールが行われた瞬間のセッション・レベルで使用可能になったロール(そのロールがコールの定義者権限環境内で使用できない場合でも同様)およびデバッグ・ロールのコンテキストで行われます。

PINGプロシージャ

このプロシージャは、ターゲット・セッションがタイムアウトしないようにpingします。ターゲット・セッションで実行が中断したとき、ブレーク・ポイントなどでこのプロシージャを使用します。

timeout_behaviourがretry_on_timeoutに設定されている場合、このプロシージャは不要です。

構文

DBMS_DEBUG.PING;

例外

ターゲット・プログラムがない場合、またはターゲット・セッションがデバッグ・セッションからの入力を待機していない場合は、no_target_program例外が表示されます。

使用上の注意

ターゲット・セッションのタイムアウト・オプションは、set_timeout_behaviourをコールすることによってターゲット・セッションに登録されます。

- retry_on_timeout: 再試行します。タイムアウトの効果はありません。timeoutに無限に大きい値を設定した場合と同じです。

- continue_on_timeout: 同じイベント・フラグを使用して、実行を継続します。

- nodebug_on_timeout: debug-modeをオフにして(つまり、debug_offをコール)、実行を継続します。debug_onをコールして初期化しなおさないかぎり、これ以降、このターゲット・セッションでイベントは生成されません。

- abort_on_timeout: abort_executionフラグを使用して実行を継続しますが、これにより、プログラムは即時に終了します。セッションはデバッグ・モードのままです。

retry_on_timeout CONSTANT BINARY_INTEGER:= 0;

continue_on_timeout CONSTANT BINARY_INTEGER:= 1;

nodebug_on_timeout CONSTANT BINARY_INTEGER:= 2;

abort_on_timeout CONSTANT BINARY_INTEGER:= 3;

PRINT_BACKTRACEプロシージャ

このプロシージャは、現在の実行スタックのバックトレース・リストを出力します。これは、プログラムが実行中の場合のみコールしてください。

PRINT_BACKTRACEプロシージャは、2種類オーバーロードされています。

構文

DBMS_DEBUG.PRINT_BACKTRACE (
listing IN OUT VARCHAR2);

DBMS_DEBUG.PRINT_BACKTRACE (
backtrace OUT backtrace_table);

パラメータ

表53-31 PRINT_BACKTRACEプロシージャのパラメータ

パラメータ

説明

listing

埋込み改行付きのフォーマット済文字バッファ。

backtrace

バックトレース・エントリ1ベースの索引表。現在実行中のプロシージャは、表の最終エントリです(つまり、フレーム番号は、GET_VALUEが使用しているものと同一です)。エントリ1は、スタック上で最も古いプロシージャです。

PRINT_INSTANTIATIONSプロシージャ

このプロシージャは、現行のセッションでインスタンス化されたパッケージのリストを戻します。

構文

DBMS_DEBUG.PRINT_INSTANTIATIONS (
pkgs   IN OUT NOCOPY backtrace_table,
flags  IN BINARY_INTEGER);

パラメータ

表53-32 PRINT_INSTANTIATIONSプロシージャのパラメータ

パラメータ

説明

pkgs

インスタンス化されたパッケージ

flags

オプションのビットマスク:

- 1 - 仕様部の表示。

- 2 - 本体の表示。

- 4 - ローカル・インスタンス化の表示。

- 8 - リモート・インスタンス化の表示(NYI)。

- 16 - 高速ジョブの実行。デバッグ情報が存在しているか、またはライブラリ・ユニットがシュリンクラップされているかどうかはテストされません。

例外

no_target_program: ターゲット・セッションは現在実行されていません。

使用上の注意

pkgsの戻り値には、各インスタンス化されたパッケージのprogram_infoが含まれます。有効なフィールドは、Namespace、Name、OwnerおよびLibunitTypeです。

また、Line#には次のビットマスクが含まれます。

- 1 - ライブラリ・ユニットにデバッグ情報が含まれています。

- 2 - ライブラリ・ユニットはシュリンクラップされています。

PROBE_VERSIONプロシージャ

このプロシージャは、サーバー上のDBMS_DEBUGのバージョン番号を戻します。

構文

DBMS_DEBUG.PROBE_VERSION (
major out BINARY_INTEGER,
minor out BINARY_INTEGER);

パラメータ

表53-33 PROBE_VERSIONプロシージャのパラメータ

パラメータ

説明

major

バージョン番号。

minor

リリース番号: 機能が追加されるたびに増加します。

SELF_CHECKプロシージャ

このプロシージャは、内部一貫性チェックを実行します。SELF_CHECKは、プローブ・プロセスが通信可能かどうかを確認するために、通信テストも実行します。

SELF_CHECKが正常に終了しなかった場合は、このサーバーにインストールされているDBMS_DEBUGのバージョンが適切ではない可能性があります。解決方法は、正しいバージョンをインストールすることです(pbload.sqlを実行すると、DBMS_DEBUGおよびその他の関連パッケージがロードされます)。

構文

DBMS_DEBUG.SELF_CHECK (
timeout IN binary_integer := 60);

パラメータ

表53-34 SELF_CHECKプロシージャのパラメータ

パラメータ

説明

timeout

通信テストに使用するタイムアウト時間。デフォルトは60秒です。

例外

表53-35 SELF_CHECKプロシージャの例外

例外

説明

OER-6516

プローブのバージョンに一貫性がありません。

pipe_creation_failure

パイプを作成できませんでした。

pipe_send_failure

パイプにデータを書き込めませんでした。

pipe_receive_failure

パイプからデータを読み込めませんでした。

pipe_datatype_mismatch

パイプ内のデータ・タイプが正しくありませんでした。

pipe_data_error

データがパイプ内で混同されていました。

これらはすべて致命的な例外です。プローブの正常な実行を妨げる重大な問題であることを示しています。

SET_BREAKPOINTファンクション

このファンクションは、現行セッションを持続するためのブレーク・ポイントをプログラム・ユニットに設定します。ターゲット・プログラムがブレーク・ポイントに到達すると、実行は一時停止します。

構文

DBMS_DEBUG.SET_BREAKPOINT (
program     IN  program_info,
line#       IN  BINARY_INTEGER,
breakpoint# OUT BINARY_INTEGER,
fuzzy       IN  BINARY_INTEGER := 0,
iterations  IN  BINARY_INTEGER := 0)
RETURN BINARY_INTEGER;

パラメータ

表53-36 SET_BREAKPOINTファンクションのパラメータ

パラメータ

説明

program

ブレーク・ポイントが設定されるプログラム・ユニットに関する情報。(バージョン2.1以上では、ネームスペース、名前、所有者およびdblinkをNULLに設定でき、この場合のブレーク・ポイントは、現在実行中のプログラム・ユニットに設定されます。)

line#

ブレーク・ポイントが設定される行。

breakpoint#

正常に完了すると、ブレーク・ポイントを参照するための一意のブレーク・ポイント番号が含まれます。

fuzzy

指定した行に実行可能コードがない場合にのみ適用されます。

0(ゼロ)の場合は、error_illegal_lineが戻されます。

1の場合は、ブレーク・ポイントを設定する行が指定行から順方向に検索されます。

-1の場合は、ブレーク・ポイントを設定する行が指定行から逆方向に検索されます。

iterations

このブレーク・ポイントを通知するまでの待機回数。

戻り値

注意:
fuzzyおよびiterationsパラメータは、まだ実装されていません。

表53-37 SET_BREAKPOINTファンクションの戻り値

戻り値

説明

success

正常な完了。

error_illegal_line

この行にブレーク・ポイントは設定できません。

error_bad_handle

該当するプログラム・ユニットが存在しません。

SET_OER_BREAKPOINTファンクション

このファンクションは、OERブレーク・ポイントを設定します。

構文

DBMS_DEBUG.SET_OER_BREAKPOINT (
oer  IN PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表53-38 SET_OER_BREAKPOINTファンクションのパラメータ

パラメータ

説明

oer

設定するOER(4バイトの正数)。

戻り値

表53-39 SET_OER_BREAKPOINTファンクションの戻り値

戻り値

説明

success

正常な完了。

error_no_such_breakpt

該当するブレーク・ポイントが存在しません。

SET_TIMEOUTファンクション

このファンクションは、タイムアウト値を設定し、新しいタイムアウト値を戻します。

構文

DBMS_DEBUG.SET_TIMEOUT (
timeout BINARY_INTEGER)
RETURN BINARY_INTEGER;

パラメータ

表53-40 SET_TIMEOUTファンクションのパラメータ

パラメータ

説明

timeout

ターゲットとデバッグ・セッション間の通信に使用されるタイムアウト

SET_TIMEOUT_BEHAVIOURプロシージャ

このプロシージャは、タイムアウト発生時のターゲット・セッションの処理方法をプローブに通知します。このコールは、ターゲット・セッションで行われます。

構文

DBMS_DEBUG.SET_TIMEOUT_BEHAVIOUR (
behaviour IN PLS_INTEGER);

パラメータ

表53-41 SET_TIMEOUT_BEHAVIOURプロシージャのパラメータ

パラメータ

説明

behaviour: 次のいずれかです。

retry_on_timeout

再試行します。タイムアウトの効果はありません。timeoutに無限に大きい値を設定した場合と同じです。

continue_on_timeout

同じイベント・フラグを使用して、実行を継続します。

nodebug_on_timeout

debug-modeをオフにして(つまり、debug_offをコール)、実行を継続します。debug_onをコールして初期化しなおさないかぎり、これ以降、このターゲット・セッションでイベントは生成されません。

abort_on_timeout

abort_executionフラグを使用して実行を継続しますが、これにより、プログラムは即時に終了します。セッションはデバッグ・モードのままです。

例外

unimplemented: 要求された動作が認識されていません。

使用上の注意

デフォルトの動作(このプロシージャがコールされない場合)は、continue_on_timeoutです。これは、デバッガ・クライアントが(次のイベントで)制御を再確立でき、ターゲット・セッションが無期限にハングアップすることはないためです。

SET_VALUEファンクション

このファンクションは、現在実行中のプログラムに値を設定します。SET_VALUEファンクションは、2種類オーバーロードされています。

構文

DBMS_DEBUG.SET_VALUE (
frame#               IN binary_integer,
assignment_statement IN varchar2)
RETURN BINARY_INTEGER;

DBMS_DEBUG.SET_VALUE (
handle               IN program_info,
assignment_statement IN VARCHAR2)
RETURN BINARY_INTEGER;

パラメータ

表53-42 SET_VALUEファンクションのパラメータ

パラメータ

説明

frame#

値を設定するフレーム。0(ゼロ)は現在実行中のフレームを意味します。

handle

変数を含んだパッケージの説明。

assignment_statement

値を設定するために実行する代入文(有効なPL/SQLである必要があります)。たとえば、'x := 3;'のように指定します。

このリリースでは、スカラー値のみサポートされています。代入文の右辺はスカラーである必要があります。

戻り値

表53-43 SET_VALUEファンクションの戻り値

戻り値

説明

success

-

error_illegal_value

指定した値を設定できません。

error_illegal_null

オブジェクト・タイプは'NOT NULL'で指定されているため、NULLは設定できません。

error_value_malformed

値がスカラーではありません。

error_name_incomplete

代入文をスカラーに変換できません。たとえば、'x := 3;'(xがレコードの場合)のように指定します。

error_no_such_object

次のいずれかです。

- パッケージが存在しません。

- パッケージがインスタンス化されていません。

- ユーザーにパッケージをデバッグする権限がありません。

- オブジェクトがパッケージ内に存在しません。

使用上の注意

PL/SQLコンパイラが一時ファイルを使用してパッケージ変数にアクセスし、このような一時ファイルの更新を保証しない場合があります。ほとんど発生しませんが、SET_VALUEを使用したパッケージ変数の変更が反映されない行があります。

例

SCOTT.PACK.varの値を6に設定する方法は次のとおりです。

DECLARE
handle  dbms_debug.program_info;
retval  BINARY_INTEGER;
BEGIN
handle.Owner     := 'SCOTT';
handle.Name      := 'PACK';
handle.namespace := dbms_debug.namespace_pkgspec_or_toplevel;
retval           := dbms_debug.set_value(handle, 'var := 6;');
END;

SHOW_BREAKPOINTSプロシージャ

現行のブレーク・ポイントのリストを戻すプロシージャは、2種類オーバーロードされています。SHOW_BREAKPOINTSプロシージャは、3種類オーバーロードされています。

構文

DBMS_DEBUG.SHOW_BREAKPOINTS (
listing    IN OUT VARCHAR2);

DBMS_DEBUG.SHOW_BREAKPOINTS (
listing    OUT breakpoint_table);

DBMS_DEBUG.SHOW_BREAKPOINTS (
code_breakpoints  OUT breakpoint_table,
oer_breakpoints   OUT oer_table);

パラメータ

表53-44 SHOW_BREAKPOINTSプロシージャのパラメータ

パラメータ

説明

listing

ブレーク・ポイントのフォーマット済バッファ(改行を含む)。

ブレーク・ポイント・エントリの索引表。ブレーク・ポイント番号は、表に対する索引で示されます。ブレーク・ポイント番号は1から始まり、削除されると再使用されます。

code_breakpoints

ブレーク・ポイント番号で索引付けされた、ブレーク・ポイント・エントリの索引表。

oer_breakpoints

OERで索引付けされた、OERブレーク・ポイントの索引表。

SHOW_FRAME_SOURCEプロシージャ

このプロシージャは、ソース・コードを取得します。SHOW_SOURCEプロシージャは、2種類オーバーロードされています。

構文

DBMS_DEBUG.SHOW_FRAME_SOURCE (
first_line  IN            BINARY_INTEGER,
last_line   IN            BINARY_INTEGER,
source      IN OUT NOCOPY vc2_table,
frame_num   IN            BINARY_INTEGER);

パラメータ

表53-45 SHOW_FRAME_SOURCEプロシージャのパラメータ

パラメータ

説明

first_line

フェッチする最初の行の行番号(PL/SQLプログラムは、常に行1から始まり、途中の行が抜けることはありません)。

last_line

フェッチする最後の行の行番号。プログラムの行数を超えると行はフェッチされません。

source

結果の表。行番号で索引が設定されている場合があります。

frame_num

1から開始するフレーム番号。

使用上の注意

- このファンクションは、任意のフレーム位置で匿名ユニットが実行中であることをバックトレースが示し、ブレーク・ポイントを設定するためにソースを確認する必要があるときのみ使用します。

- フレーム番号がスタックの最上部にあり、それが匿名ブロックの場合は、SHOW_SOURCEも使用できます。

- フレーム番号が、ストアドPLSQLパッケージ、ファンクションまたはプロシージャの場合は、「SHOW_SOURCEプロシージャ」の「使用上の注意」に示すようにSQLを使用します。

SHOW_SOURCEプロシージャ

このプロシージャは、ソース・コードを取得します。SHOW_SOURCEプロシージャは、2種類オーバーロードされています。

構文

DBMS_DEBUG.SHOW_SOURCE (
first_line  IN   BINARY_INTEGER,
last_line   IN   BINARY_INTEGER,
source      OUT  vc2_table);

DBMS_DEBUG.SHOW_SOURCE (
first_line   IN     BINARY_INTEGER,
last_line    IN     BINARY_INTEGER,
window       IN     BINARY_INTEGER,
print_arrow  IN     BINARY_INTEGER,
buffer       IN OUT VARCHAR2,
buflen       IN     BINARY_INTEGER,
pieces       OUT    BINARY_INTEGER);

パラメータ

表53-46 SHOW_SOURCEプロシージャのパラメータ

パラメータ

説明

first_line

フェッチする最初の行の行番号(PL/SQLプログラムは、常に行1から始まり、途中の行が抜けることはありません)。

last_line

フェッチする最後の行の行番号。プログラムの行数を超えると行はフェッチされません。

source

結果の表。行番号で索引が設定されている場合があります。

window

行の'ウィンドウ'(現行のソース行の概数)。

print_arrow

0(ゼロ)以外の場合は、カレント行の前に矢印が出力されます。

buffer

ソース・リストを格納するバッファ。

buflen

バッファの長さ。

pieces

指定したバッファにすべてのソースを格納できない可能性がある場合は、0(ゼロ)以外の値が設定されます。

戻り値

ソース行の索引表。ソース行は、first_lineから格納されます。エラーが発生した場合は、空の表が戻されます。

使用上の注意

(実行されているプログラムの)ソース・コードを取得する最適な方法は、SQLを使用することです。次に例を示します。

DECLARE
info DBMS_DEBUG.runtime_info;
BEGIN
-- call DBMS_DEBUG.SYNCHRONIZE, CONTINUE,
-- or GET_RUNTIME_INFO to fill in 'info'
SELECT text INTO <buffer> FROM all_source
WHERE owner = info.Program.Owner
AND name  = info.Program.Name
AND line  = info.Line#;
END;

ただし、このコードは非永続プログラム(無名ブロックやトリガー起動ブロックなど)では機能しません。非永続プログラムの場合は、SHOW_SOURCEをコールしてください。2通りの方法があり、1つはソース行の索引表を戻し、他の1つはパック(およびフォーマット)されたバッファを戻します。

2番目のSHOW_SOURCEのオーバーロードは、フォーマット済バッファに行番号の付いたソースを戻します。索引表を使用するより高速ですが、すべてのソースがフェッチされるとはかぎりません。

ソースがバッファ長(buflen)にすべて格納できなかった場合は、GET_MORE_SOURCEプロシージャを使用して追加のピースを取り出せます(piecesは、取り出す必要のある追加ピースの数を戻します)。

SYNCHRONIZEファンクション

このファンクションは、ターゲット・プログラムがイベントを通知するまで待機します。info_requestedがNULLでない場合は、GET_RUNTIME_INFOをコールします。

構文

DBMS_DEBUG.SYNCHRONIZE (
run_info       OUT  runtime_info,
info_requested IN   BINARY_INTEGER := NULL)
RETURN BINARY_INTEGER;

パラメータ

表53-47 SYNCHRONIZEファンクションのパラメータ

パラメータ

説明

run_info

プログラムに関する情報を書き込むためのデータ構造。デフォルトでは、実行中のプログラムおよび一時停止している行に関する情報が含まれます。

info_requested

デフォルト(info_getStackDepth + info_getLineInfo)以外の情報を要求するためのオプションのビット・フィールド。0(ゼロ)は、情報を要求しないことを意味します(「情報フラグ」を参照)。

戻り値

表53-48 SYNCHRONIZEファンクションの戻り値

戻り値

説明

success

正常な完了。

error_timeout

プログラムが実行を開始する前にタイムアウトしました。

error_communication

その他の通信エラー。

TARGET_PROGRAM_RUNNINGプロシージャ

このプロシージャは、ターゲット・セッションが現在ストアド・プロシージャを実行中の場合はTRUE、実行していない場合はFALSEを戻します。

構文

DBMS_DEBUG.TARGET_PROGRAM_RUNNING
RETURN BOOLEAN;

54 DBMS_DDL

このパッケージは、ストアド・プロシージャから一部のSQLデータ定義言語(DDL)文へのアクセスを提供します。データ定義言語(DDL)文では使用できない特殊な管理操作も提供します。

この章では、次の項目について説明します。

- DBMS_DDLの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

- DBMS_DDLサブプログラムの要約

DBMS_DDLの使用方法

この項では、DBMS_DDLパッケージの使用に関連する項目について説明します。

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

推奨されないサブプログラム

新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 10gのリリースでは、次のサブプログラムの使用は推奨されていません。

- ALTER_COMPILEプロシージャ

セキュリティ・モデル

このパッケージは、パッケージ所有者SYSではなく、コール・ユーザーの権限で実行されます。

使用上の注意

ALTER_COMPILEプロシージャは、現行のトランザクションをコミットし、操作を実行してから再度コミットします。

DBMS_DDLサブプログラムの要約

表54-1 DBMS_DDLパッケージのサブプログラム

サブプログラム

説明

ALTER_COMPILEプロシージャ

PL/SQLオブジェクトをコンパイルします。

ALTER_TABLE_NOT_REFERENCEABLEプロシージャ

オブジェクト表を再編成します。

ALTER_TABLE_REFERENCEABLEプロシージャ

オブジェクト表を再編成します。

CREATE_WRAPPEDプロシージャ

PL/SQLパッケージ仕様部、パッケージ本体、ファンクション、プロシージャ、タイプ仕様部、またはタイプ本体の作成を指定する単一のCREATE OR REPLACE文の入力時に使用し、PL/SQLソース・テキストをわかりにくくしたCREATE OR REPLACE文を生成します。

IS_TRIGGER_FIRE_ONCEファンクション

指定したDMLまたはDDLトリガーが1回起動されるように設定されている場合は、TRUEを戻します。それ以外の場合はFALSEを戻します。

SET_TRIGGER_FIRING_PROPERTYプロシージャ

指定したDMLまたはDDLトリガーの起動プロパティを設定します。

WRAPファンクション

PL/SQLパッケージ仕様部、パッケージ本体、ファンクション、プロシージャ、タイプ仕様部、またはタイプ本体の作成を指定するCREATE OR REPLACE文の入力時に使用し、PL/SQLユニットのテキストをわかりにくくしたCREATE OR REPLACE文を戻します。

ALTER_COMPILEプロシージャ

このプロシージャは、次のSQL文と同じです。

ALTER PROCEDURE|FUNCTION|PACKAGE [<schema>.] <name> COMPILE [BODY]

注意:
このプロシージャは、Oracle Database 10gリリース2(10.2)では非推奨です。このパッケージでは、下位互換性のためにプロシージャが提供されていますが、動的SQL文でこれに相当するDDLを使用することをお薦めします。

構文

DBMS_DDL.ALTER_COMPILE (
type             VARCHAR2,
schema           VARCHAR2,
name             VARCHAR2
reuse_settings   BOOLEAN := FALSE);

パラメータ

表54-2 ALTER_COMPILEプロシージャのパラメータ

パラメータ

説明

type

PROCEDURE、FUNCTION、PACKAGE、PACKAGE BODYまたはTRIGGERのいずれかを設定します。

schema

スキーマ名。

NULLの場合は、現行のスキーマ(大/小文字区別)が使用されます。

name

オブジェクトの名前(大/小文字区別)。

reuse_settings

オブジェクトのセッション設定を再利用するかどうか、または現在のセッション設定を採用するかどうかを指定します。

例外

表54-3 ALTER_COMPILEプロシージャの例外

例外

説明

ORA-20000:

権限が不十分であるか、またはオブジェクトが存在しません。

ORA-20001:

リモート・オブジェクトであるためコンパイルできません。

ORA-20002:

オブジェクト・タイプの値が無効です。PACKAGE、PACKAGE BODY、PROCEDURE、FUNCTIONまたはTRIGGERのいずれかを指定する必要があります。

ALTER_TABLE_NOT_REFERENCEABLEプロシージャ

このプロシージャは任意のオブジェクト表table_schema.table_nameを変更して、スキーマaffected_schemaのデフォルトの参照可能表にならないようにします。これは、次のSQLと同じです。

ALTER TABLE [<table_schema>.]<table_name> NOT REFERENCEABLE FOR <affected_schema>

これは現在サポートされていないか、DDL文として使用できません。

構文

DBMS_DDL.ALTER_TABLE_NOT_REFERENCEABLE (
table_name        IN           VARCHAR2,
table_schema      IN  DEFAULT  NULL,
affected_schema   IN  DEFAULT  NULL);

パラメータ

表54-4 ALTER_TABLE_NOT_REFERENCEABLEプロシージャのパラメータ

パラメータ

説明

table_name

変更する表の名前。シノニムは指定できません。NULL以外の値を設定してください。大/小文字が区別されます。

table_schema

変更する表を所有するスキーマの名前。NULLの場合、現行のスキーマが使用されます。大/小文字が区別されます。

affected_schema

この変更の影響を受けるスキーマの名前。NULLの場合、現行のスキーマが使用されます。大/小文字が区別されます。

使用上の注意

このプロシージャは、影響を受けるスキーマをPUBLICのデフォルトの参照可能表に戻すのみであり、つまり、この特定のスキーマに対して以前に行われたALTER_TABLE_REFERENCEABLEコールを元に戻します。影響を受けるスキーマは、特定のスキーマである必要があります(PUBLICは指定できません)。

このプロシージャを実行するユーザーは表を所有する必要があり(スキーマはユーザーと同じ)、影響を受けるスキーマはユーザーと同じである必要があります。

このプロシージャを実行するユーザーにALTER ANY TABLE、SELECT ANY TABLEおよびDROP ANY TABLEの権限がある場合、ユーザーは表を所有する必要はなく、影響を受けるスキーマは任意の有効なスキーマに設定できます。

ALTER_TABLE_REFERENCEABLEプロシージャ

このプロシージャは任意のオブジェクト表table_schema.table_nameを変更して、任意のスキーマaffected_schemaの参照可能表にします。これは、次のSQLと同じです。

ALTER TABLE [<table_schema>.]<table_name>  REFERENCEABLE FOR <affected_schema>

これは現在サポートされていないか、DDL文として使用できません。

構文

DBMS_DDL.ALTER_TABLE_REFERENCEABLE
table_name       IN  VARCHAR2,
table_schema     IN  DEFAULT  NULL,
affected_schema  IN  DEFAULT  NULL);

パラメータ

表54-5 ALTER_TABLE_REFERENCEABLEプロシージャのパラメータ

パラメータ

説明

table_name

変更する表の名前。シノニムは指定できません。NULL以外の値を設定してください。大/小文字が区別されます。

table_schema

変更する表を所有するスキーマの名前。NULLの場合、現行のスキーマが使用されます。大/小文字が区別されます。

affected_schema

この変更の影響を受けるスキーマの名前。NULLの場合、現行のスキーマが使用されます。大/小文字が区別されます。

使用上の注意

オブジェクト表を作成するときにOID AS句を使用しないかぎり、表は自動的に参照可能になります。OID AS句を使用すると、オブジェクト表を作成し、新しい表を同じタイプの別のオブジェクト表として同じEOIDに割り当てることができます。OID AS句を使用して新しい表を作成した後は、同じEOIDを持つ2つのオブジェクト表が存在しますが、新しい表は参照できず、元の表は参照可能です。元の表に含まれるオブジェクトを指すために使用されるすべての参照は、同じ元の表に含まれる同じオブジェクトを引き続き参照します。

このプロシージャを新しい表で実行すると、新しい表が参照可能表になり、元の表が置き換えられます。そのため、参照は元の表ではなく新しい表のオブジェクトを指すようになります。

CREATE_WRAPPEDプロシージャ

このプロシージャは、PL/SQLパッケージ仕様部、パッケージ本体、ファンクション、プロシージャ、タイプ仕様部、またはタイプ本体の作成を指定する単一のCREATE OR REPLACE文の入力時に使用します。その後、PL/SQLソース・テキストをわかりにくくしたCREATE OR REPLACE文が生成され、実行されます。実際には、このプロシージャには、テキストの折返しおよびPL/SQLユニットの作成の各操作がまとめられています。

関連項目:
WRAPファンクション

このプロシージャには3つのオーバーロードがあります。個々のWRAPファンクションとDBMS_SQL.PARSE(またはEXECUTE IMMEDIATE)コールを組み合せて使用するより、3つのファンクションをそれぞれ使用する方がパフォーマンスが向上します。複数の機能を構文形式ごとに、定義とともに示します。

構文

EXECUTE IMMEDIATE SYS.DBMS_DDL.WRAP(ddl)のショートカット

DBMS_DDL.CREATE_WRAPPED (
ddl     VARCHAR2);

DBMS_SQL.PARSE(cursor, SYS.DBMS_DDL.WRAP (input, lb, ub))のショートカット

DBMS_DDL.CREATE_WRAPPED(
ddl     DBMS_SQL.VARCHAR2A,
lb      PLS_INTEGER,
ub      PLS_INTEGER);

DBMS_SQL.PARSE(cursor, SYS.DBMS_DDL.WRAP (input, lb, ub))のショートカット

DBMS_DDL.CREATE_WRAPPED(
ddl     DBMS_SQL.VARCHAR2S,
lb      PLS_INTEGER,
ub      PLS_INTEGER);

パラメータ

表54-6 CREATE_WRAPPEDプロシージャのパラメータ

パラメータ

説明

ddl

PL/SQLパッケージ仕様部、パッケージ本体、ファンクション、プロシージャ、タイプ仕様部、またはタイプ本体の作成を指定するCREATE OR REPLACE文。

lb

CREATE OR REPLACE文を指定する、文字列表内の索引の下限。

ub

CREATE OR REPLACE文を指定する、文字列表内の索引の上限。

使用上の注意

- CREATE OR REPLACE文は、DBMS_DDL.CREATE_WRAPPEDを起動するユーザーの権限で実行されます。

- これらのインタフェースをコールするPL/SQLコードでは、名前DBMS_DDLがローカル定義のユニットまたはDBMS_DDLパブリック・シノニムの再定義によって取得されないようにするために、完全修飾のパッケージ名SYS.DBMS_DDLを使用する必要があります。

- 起動するたびに、単一のPL/SQLユニットのみを受け入れます。これに対して、PL/SQL wrapユーティリティでは、SQL*Plusファイル全体を受け入れて、ファイル内のPL/SQLユニットをわかりにくくし、その他のすべてのテキストはそのままにします。これらのインタフェースは、PL/SQLの動的SQLインタフェース(EXECUTE IMMEDIATEおよびDBMS_SQL.PARSE)と組み合せて使用するか、またはPL/SQLの動的SQLインタフェースの代用として使用します。これらの動的SQLインタフェースは一度に1つのユニットのみ受け入れるため(また、SQL*Plusの/終了文字は認識されないため)、CREATE_WRAPPEDプロシージャおよびWRAPファンクションの両方で、単一ユニットを入力する必要があります。

例外

ORA-24230: 入力する文がPL/SQLユニットを指定するCREATE OR REPLACE文でない場合、例外DBMS_DDL.MALFORMED_WRAP_INPUTが発生します。

例

DECLARE
ddl VARCHAR2(32767);
BEGIN
ddl := GENERATE_PACKAGE(...);
SYS.DBMS_DDL.CREATE_WRAPPED(ddl); -- Instead of EXECUTE IMMEDIATE ddl
END;

IS_TRIGGER_FIRE_ONCEファンクション

このファンクションは、指定したDMLまたはDDLトリガーが1回起動されるように設定されている場合は、TRUEを戻します。それ以外の場合はFALSEを戻します。

トリガーはユーザー・セッションで1回起動されますが、次の場合には起動されません。

- Streams適用プロセスによる変更

- DBMS_APPLY_ADMパッケージのEXECUTE_ERRORプロシージャまたはEXECUTE_ALL_ERRORSプロシージャを使用して、Streams適用エラーを1つ以上実行したことによる変更

- ロジカル・スタンバイ適用プロセスによる変更

注意:
DMLおよびDDLトリガーは、1回のみ起動されます。他のタイプのトリガーはすべて、何回でも起動されます。

関連項目:
「SET_TRIGGER_FIRING_PROPERTYプロシージャ」

構文

DBMS_DDL.IS_TRIGGER_FIRE_ONCE
trig_owner         IN  VARCHAR2,
trig_name          IN  VARCHAR2)
RETURN BOOLEAN;

パラメータ

表54-7 IS_TRIGGER_FIRE_ONCEファンクションのパラメータ

パラメータ

説明

trig_owner

トリガーのスキーマ。

trig_name

トリガーの名前。

SET_TRIGGER_FIRING_PROPERTYプロシージャ

このプロシージャは、指定したDMLまたはDDLトリガーの起動プロパティを、プロパティがトリガーに設定されているかどうか設定します。次の変更に対するDMLまたはDDLトリガーの起動プロパティを制御するために使用します。

- Streams適用プロセスによって適用された変更

- DBMS_APPLY_ADMパッケージのEXECUTE_ERRORプロシージャまたはEXECUTE_ALL_ERRORSプロシージャを使用して、Streams適用エラーを1つ以上実行したことによる変更

- ロジカル・スタンバイ適用プロセスによって適用された変更

構文

DBMS_DDL.SET_TRIGGER_FIRING_PROPERTY (
trig_owner         IN  VARCHAR2,
trig_name          IN  VARCHAR2,
fire_once          IN  BOOLEAN);

DBMS_DDL.SET_TRIGGER_FIRING_PROPERTY (
trig_owner         IN  VARCHAR2,
trig_name          IN  VARCHAR2,
property           IN INTEGER,
setting            IN BOOLEAN);

パラメータ

表54-8 SET_TRIGGER_FIRING_PROPERTYプロシージャのパラメータ

パラメータ

説明

trig_owner

設定するトリガーのスキーマ。

trig_name

設定するトリガーの名前。

fire_once

- TRUEに設定すると、トリガーは1回起動されるように設定されます。デフォルトでは、DMLおよびDDLトリガーに対するfire_onceはTRUEに設定されます。

- FALSEに設定すると、apply_server_onlyプロパティをTRUEに設定してfire_onceプロパティ設定を上書きしないかぎり、トリガーは何回でも起動されるように設定されます。

property

- トリガーのfire_onceプロパティを設定するDBMS_DDL.fire_once。

- ロジカル・スタンバイ・データベースまたはStreams適用プロセスを保守するSQL適用プロセスのコンテキストでのみ起動するかどうかを示すDBMS_DDL.apply_server_only。

setting

設定しているプロパティの値

使用上の注意

表で作成されたDMLトリガーのfire-onceプロパティは、TRUEに設定されています。この場合、トリガーは、表がユーザー・プロセスによって変更されたときにのみ起動され、ロジカル・スタンバイ・データベース(SQL適用)またはレプリケーション(Streams適用)プロセスを実行するOracleプロセスのいずれかを保守するOracleプロセス内では自動的に無効になるため、SQL適用またはStreams適用プロセスによって表が変更されたときには起動されません。保持されている表がSQL適用プロセスまたはStreams適用プロセスによって変更された場合にユーザーがトリガーを起動する方法は2つありますが、それらは、(a)ユーザー・プロセスのコンテキストまたはSQL適用プロセスやStreams適用プロセスのコンテキストのいずれでもトリガーを起動できるように、トリガーのfire-onceプロパティをFALSEに設定するか、(b)apply-server-onlyプロパティをTRUEに設定して、ユーザー・プロセス・コンテキストではなく、SQL適用プロセスとStreams適用プロセスのコンテキストでのみトリガーが起動されるようにします。

- FIRE_ONCE=TRUE, APPLY_SERVER_ONLY=FALSE
これがDMLトリガーのデフォルトのプロパティ設定です。トリガーは、ユーザー・プロセスで元表が変更された場合にのみ起動されます。

- FIRE_ONCE=TRUEまたはFALSE、APPLY_SERVER_ONLY=TRUE
トリガーは、SQL適用プロセスまたはStreams適用プロセスで元表が変更された場合にのみ起動されます。ユーザー・プロセスが元表が変更された場合は、トリガーは起動されません。したがって、apply-server-onlyプロパティはトリガーのfire-onceプロパティよりも優先されます。

注意:

- エラー・キューからエラー・トランザクションをデキューし、DBMS_APPLY_ADMパッケージを使用せずに実行した場合は、この実行結果に関連して変更が行われると、トリガー起動プロパティに関係なく、トリガーが起動されます。

- DMLおよびDDLトリガーは、1回のみ起動されます。他のタイプのトリガーはすべて、何回でも起動されます。

関連項目:
適用プロセスおよびトリガー起動プロパティの制御方法の詳細は、『Oracle Streams概要および管理』を参照してください。

WRAPファンクション

このファンクションは、PL/SQLパッケージ仕様部、パッケージ本体、ファンクション、プロシージャ、タイプ仕様部、またはタイプ本体の作成を指定する単一のCREATE OR REPLACE文の入力時に使用し、PL/SQLユニットのテキストをわかりにくくしたCREATE OR REPLACE文を戻します。

このファンクションには、3つのオーバーロードがあり、それぞれの方法でDDL文を動的に生成して、それらのDDL文をDBMS_SQLまたはEXECUTE IMMEDIATEに指定できます。複数の機能を構文形式ごとに、定義とともに示します。

関連項目:
CREATE_WRAPPEDプロシージャ

構文

基本機能を実行します。

DBMS_DDL.WRAP(
ddl      VARCHAR2)
RETURN VARCHAR2;

最初の形式と同じ機能を実行しますが、より多くの入力が可能です。このファンクションは、DBMS_SQLパッケージのPARSEプロシージャとともに使用し、引数リストはDBMS_SQL.PARSEの表記規則に従います。

DBMS_DDL.WRAP(
ddl      DBMS_SQL.VARCHAR2S,
lb       PLS_INTEGER,
ub       PLS_INTEGER)
RETURN DBMS_SQL.VARCHAR2S;

2番目の形式と同じ機能を実行しますが、DBMS_SQLパッケージのPARSEプロシージャの様々な形式と互換性があります。

DBMS_DDL.WRAP(
ddl      DBMS_SQL.VARCHAR2A,
lb       PLS_INTEGER,
ub       PLS_INTEGER)
RETURN DBMS_SQL.VARCHAR2A;

パラメータ

表54-9 WRAPファンクションのパラメータ

パラメータ

説明

ddl

PL/SQLパッケージ仕様部、パッケージ本体、ファンクション、プロシージャ、タイプ仕様部、またはタイプ本体の作成を指定するCREATE OR REPLACE文。

lb

CREATE OR REPLACE文を指定する、文字列表内の索引の下限。

ub

CREATE OR REPLACE文を指定する、文字列表内の索引の上限。

戻り値

テキストをわかりにくくしたCREATE OR REPLACE文。2番目と3番目の形式の場合、戻り値は、わかりにくくしたソース・テキストを含むCREATE OR REPLACE文字列を構成するために、連結する必要がある文字列の表になります。

使用上の注意

- これらのインタフェースをコールするPL/SQLコードでは、名前DBMS_DDLがローカル定義のユニットまたはDBMS_DDLパブリック・シノニムの再定義によって取得されないようにするために、完全修飾のパッケージ名SYS.DBMS_DDLを使用する必要があります。

- 起動するたびに、単一のPL/SQLユニットのみを受け入れます。これに対して、PL/SQL wrapユーティリティでは、SQLファイル全体を受け入れて、ファイル内のPL/SQLユニットをわかりにくくし、その他のすべてのテキストはそのままにします。これらのインタフェースは、PL/SQLの動的SQLインタフェース(EXECUTE IMMEDIATEおよびDBMS_SQL.PARSE)と組み合せて使用するか、またはPL/SQLの動的SQLインタフェースの代用として使用します。これらの動的SQLインタフェースは一度に1つのユニットのみ受け入れるため(また、SQL*Plusの/終了文字は認識されないため)、CREATE_WRAPPEDプロシージャおよびWRAPファンクションの両方で、単一ユニットを入力する必要があります。

例外

ORA-24230: 入力する文がPL/SQLユニットを指定するCREATE OR REPLACE文でない場合、例外DBMS_DDL.MALFORMED_WRAP_INPUTが発生します。

例

DECLARE
ddl VARCHAR2(32767);
BEGIN
ddl := GENERATE_PACKAGE(...);
EXECUTE IMMEDIATE SYS.DBMS_DDL.WRAP(ddl); -- Instead of EXECUTE IMMEDIATE ddl
END;

55 DBMS_DEFER

DBMS_DEFERは、レプリケート・トランザクション遅延リモート・プロシージャ・コール機能へのユーザー・インタフェースを提供します。レプリケート・アプリケーションは、このインタフェース内のコールを使用して、後でトランザクションをリモート・ノードで実行するためにプロシージャ・コールをキューに登録します。

通常このプロシージャは、AFTER行トリガーまたはアプリケーションで指定した更新プロシージャからコールされます。

- DBMS_DEFERのドキュメント

DBMS_DEFERのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_DEFER」を参照してください。

56 DBMS_DEFER_QUERY

DBMS_DEFER_QUERYでは、ビューでは参照できない遅延トランザクションのキュー・データを問い合せることができます。

- DBMS_DEFER_QUERYのドキュメント

DBMS_DEFER_QUERYのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_DEFER_QUERY」を参照してください。

57 DBMS_DEFER_SYS

DBMS_DEFER_SYSサブプログラムは、デフォルトのレプリケーション・ノード・リストを管理します。このパッケージは、レプリケート・トランザクション遅延リモート・プロシージャ・コール機能へのシステム管理者用インタフェースです。管理者およびレプリケーション・デーモンは、この機能を使用して、リモート・ノードのキューに入れられたトランザクションを実行でき、さらに管理者は、リモート・コールの宛先のノードを制御できます。

- DBMS_DEFER_SYSのドキュメント

DBMS_DEFER_SYSのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_DEFER_SYS」を参照してください。

58 DBMS_DESCRIBE

DBMS_DESCRIBEパッケージでは、PL/SQLオブジェクトに関する情報を取得できます。オブジェクト名を指定すると、DBMS_DESCRIBEは結果を含む索引表のセットを戻します。名前変換が完全に実行され、目的のオブジェクトに対するセキュリティ・チェックも行われます。

この章では、次の項目について説明します。

- DBMS_DESCRIBEの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- 例外

- 例

- DBMS_DESCRIBEサブプログラムの要約

DBMS_DESCRIBEの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- 例外

- 例

概要

このパッケージは、Oracle Call InterfaceのOCIDescribeAnyコールと同じ機能を提供します。

関連項目:
『Oracle Call Interfaceプログラマーズ・ガイド』

セキュリティ・モデル

このパッケージはPUBLICで使用でき、記述されているスキーマ・オブジェクトに基づいた独自のセキュリティ・チェックが実行されます。

タイプ

DBMS_DESCRIBEパッケージは、2つのタイプのPL/SQL表を宣言しますが、これは、DESCRIBE_PROCEDUREが戻すデータを、そのOUTパラメータに格納するために使用されます。これらのタイプは次のとおりです。

TYPE VARCHAR2_TABLE IS TABLE OF VARCHAR2(30)
INDEX BY BINARY_INTEGER;

TYPE NUMBER_TABLE IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;

例外

DBMS_DESCRIBEでは、20000から20004までの範囲のアプリケーション・エラーが発生する可能性があります。

表58-1 DBMS_DESCRIBEのエラー

エラー

説明

ORA-20000

ORU-10035: パッケージ'X'は記述できません。記述できるのはパッケージ内のプロシージャだけです。

ORA-20001

ORU-10032: パッケージ'Y'内のプロシージャ'X'は存在しません。

ORA-20002

ORU-10033: オブジェクト'X'はリモートですので、記述できません。拡張名は'Y'です。

ORA-20003

ORU-10036: オブジェクト'X'は無効ですので、記述されません。

ORA-20004

'X'の解析を試みる構文のエラー

例

DESCRIBE_PROCEDUREプロシージャは、外部サービス・インタフェースとしても使用できます。

たとえば、OBJECT_NAMEにSCOTT.ACCOUNT_UPDATEを指定するクライアントを想定します。ACCOUNT_UPDATEは次の仕様を持つオーバーロードされたファンクションです。

TABLE account (accnt_no NUMBER, person_id NUMBER,
balance NUMBER(7,2))
TABLE person  (person_id number(4), person_nm varchar2(10))

CREATE OR REPLACE PACKAGE ACCOUNT_PKG is   FUNCTION ACCOUNT_UPDATE (accnt_no    NUMBER,
person      person%rowtype,
amounts     DBMS_DESCRIBE.NUMBER_TABLE,
trans_date  DATE)
return       account.balance%type;

FUNCTION ACCOUNT_UPDATE (accnt_no     NUMBER,
person       person%rowtype,
amounts      DBMS_DESCRIBE.NUMBER_TABLE,
trans_no     NUMBER)
return       account.balance%type;
END;

このプロシージャでは、次のように出力されます。

overload position  argument level  datatype length prec scale rad
-------- --------- -------- ------ -------- ------ ---- ----- ---
1        0               0         2     22    7     2  10
1        1   ACCNT_NO    0         2      0    0     0   0
1        2   PERSON      0       250      0    0     0   0
1        1   PERSON_ID   1         2     22    4     0  10
1        2   PERSON_NM   1         1     10    0     0   0
1        3   AMOUNTS     0       251      0    0     0   0
1        1               1         2     22    0     0   0
1        4   TRANS_DATE  0        12      0    0     0   0
2        0               0         2     22    7     2  10
2        1   ACCNT_NO    0         2     22    0     0   0
2        2   PERSON      0         2     22    4     0  10
2        3   AMOUNTS     0       251     22    4     0  10
2        1               1         2      0    0     0   0
2        4   TRANS_NO    0         2      0    0     0   0

次のPL/SQLプロシージャには、そのパラメータとしてすべてのPL/SQLデータ・タイプがあります。

CREATE OR REPLACE PROCEDURE p1 (
pvc2    IN     VARCHAR2,
pvc     OUT    VARCHAR,
pstr    IN OUT STRING,
plong   IN     LONG,
prowid  IN     ROWID,
pchara  IN     CHARACTER,
pchar   IN     CHAR,
praw    IN     RAW,
plraw   IN     LONG RAW,
pbinint IN     BINARY_INTEGER,
pplsint IN     PLS_INTEGER,
pbool   IN     BOOLEAN,
pnat    IN     NATURAL,
ppos    IN     POSITIVE,
pposn   IN     POSITIVEN,
pnatn   IN     NATURALN,
pnum    IN     NUMBER,
pintgr  IN     INTEGER,
pint    IN     INT,
psmall  IN     SMALLINT,
pdec    IN     DECIMAL,
preal   IN     REAL,
pfloat  IN     FLOAT,
pnumer  IN     NUMERIC,
pdp     IN     DOUBLE PRECISION,
pdate   IN     DATE,
pmls    IN     MLSLABEL) AS

BEGIN
NULL;
END;

このプロシージャを次のパッケージを使用して記述するとします。

CREATE OR REPLACE PACKAGE describe_it AS

PROCEDURE desc_proc (name VARCHAR2);

END describe_it;

CREATE OR REPLACE PACKAGE BODY describe_it AS

PROCEDURE prt_value(val VARCHAR2, isize INTEGER) IS
n INTEGER;
BEGIN
n := isize - LENGTHB(val);
IF n < 0 THEN
n := 0;
END IF;
DBMS_OUTPUT.PUT(val);
FOR i in 1..n LOOP
DBMS_OUTPUT.PUT(' ');
END LOOP;
END prt_value;

PROCEDURE desc_proc (name VARCHAR2) IS

overload     DBMS_DESCRIBE.NUMBER_TABLE;
position     DBMS_DESCRIBE.NUMBER_TABLE;
c_level      DBMS_DESCRIBE.NUMBER_TABLE;
arg_name     DBMS_DESCRIBE.VARCHAR2_TABLE;
dty          DBMS_DESCRIBE.NUMBER_TABLE;
def_val      DBMS_DESCRIBE.NUMBER_TABLE;
p_mode       DBMS_DESCRIBE.NUMBER_TABLE;
length       DBMS_DESCRIBE.NUMBER_TABLE;
precision    DBMS_DESCRIBE.NUMBER_TABLE;
scale        DBMS_DESCRIBE.NUMBER_TABLE;
radix        DBMS_DESCRIBE.NUMBER_TABLE;
spare        DBMS_DESCRIBE.NUMBER_TABLE;
idx          INTEGER := 0;

BEGIN
DBMS_DESCRIBE.DESCRIBE_PROCEDURE(
name,
null,
null,
overload,
position,
c_level,
arg_name,
dty,
def_val,
p_mode,
length,
precision,
scale,
radix,
spare);

DBMS_OUTPUT.PUT_LINE('Position    Name        DTY  Mode');
LOOP
idx := idx + 1;
prt_value(TO_CHAR(position(idx)), 12);
prt_value(arg_name(idx), 12);
prt_value(TO_CHAR(dty(idx)), 5);
prt_value(TO_CHAR(p_mode(idx)), 5);
DBMS_OUTPUT.NEW_LINE;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.NEW_LINE;

END desc_proc;
END describe_it;

この結果、PL/SQLデータ・タイプのすべての数値コードがリストされます。

Position  Name    Datatype_Code  Mode
1         PVC2      1              0
2         PVC       1              1
3         PSTR      1              2
4         PLONG     8              0
5         PROWID    11             0
6         PCHARA    96             0
7         PCHAR     96             0
8         PRAW      23             0
9         PLRAW     24             0
10        PBININT   3              0
11        PPLSINT   3              0
12        PBOOL     252            0
13        PNAT      3              0
14        PPOS      3              0
15        PPOSN     3              0
16        PNATN     3              0
17        PNUM      2              0
18        PINTGR    2              0
19        PINT      2              0
20        PSMALL    2              0
21        PDEC      2              0
22        PREAL     2              0
23        PFLOAT    2              0
24        PNUMER    2              0
25        PDP       2              0
26        PDATE     12             0
27        PMLS      106            0

DBMS_DESCRIBEサブプログラムの要約

表58-2 DBMS_DESCRIBEパッケージのサブプログラム

サブプログラム

説明

DESCRIBE_PROCEDUREプロシージャ

PL/SQLストアド・プロシージャの簡単な説明を表示します。

DESCRIBE_PROCEDUREプロシージャ

プロシージャDESCRIBE_PROCEDUREは、PL/SQLストアド・プロシージャの簡単な説明を表示します。ストアド・プロシージャの名前を使用して、そのプロシージャの各パラメータについての情報を戻します。

構文

DBMS_DESCRIBE.DESCRIBE_PROCEDURE(
object_name                   IN  VARCHAR2,
reserved1                     IN  VARCHAR2,
reserved2                     IN  VARCHAR2,
overload                      OUT NUMBER_TABLE,
position                      OUT NUMBER_TABLE,
level                         OUT NUMBER_TABLE,
argument_name                 OUT VARCHAR2_TABLE,
datatype                      OUT NUMBER_TABLE,
default_value                 OUT NUMBER_TABLE,
in_out                        OUT NUMBER_TABLE,
length                        OUT NUMBER_TABLE,
precision                     OUT NUMBER_TABLE,
scale                         OUT NUMBER_TABLE,
radix                         OUT NUMBER_TABLE,
spare                         OUT NUMBER_TABLE
include_string_constraints    OUT BOOLEAN DEFAULT FALSE);

パラメータ

表58-3 DBMS_DESCRIBE.DESCRIBE_PROCEDUREのパラメータ

パラメータ

説明

object_name

記述するプロシージャの名前。

このパラメータの構文は、SQLの識別子に使用されている規則に従います。名前はシノニムでもかまいません。このパラメータは必須であり、NULLは指定できません。名前の長さは合計で197バイトまでです。OBJECT_NAMEが正しく指定されないと、次の例外のいずれかが発生する場合があります。

ORA-20000: パッケージが指定されました。指定できるのは、ストアド・プロシージャ、ストアド・ファンクション、パッケージ・プロシージャまたはパッケージ・ファンクションのみです。

ORA-20001: 指定したプロシージャまたはファンクションは、所定のパッケージ内に存在しません。

ORA-20002: 指定したオブジェクトはリモート・オブジェクトです。このプロシージャは、現在リモート・オブジェクトを記述できません。

ORA-20003: 指定したオブジェクトは無効であるため記述できません。

ORA-20004: オブジェクトの指定に構文エラーがあります。

reserved1 reserved2

将来使用される予定です。NULLまたは空文字列を設定してください。

overload

プロシージャの署名に割り当てられた一意の番号。

プロシージャがオーバーロードされている場合、このフィールドには、プロシージャのバージョンごとに異なる値が格納されます。

position

パラメータ・リスト内の引数の位置。

位置0(ゼロ)には、ファンクションの戻り値のタイプが戻されます。

level

引数がレコードなどのコンポジット・タイプの場合は、そのデータ・タイプのレベルが戻されます。ODESSPコールの例の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

argument_name

記述するプロシージャに関連付けられた引数の名前。

datatype

記述する引数のOracleデータ・タイプ。データ・タイプおよびその数値タイプのコードは、次のとおりです。

0   placeholder for procedures with no arguments
1   VARCHAR, VARCHAR, STRING
2   NUMBER, INTEGER, SMALLINT, REAL, FLOAT, DECIMAL
3   BINARY_INTEGER, PLS_INTEGER, POSITIVE, NATURAL
8   LONG
11  ROWID
12  DATE
23  RAW
24  LONG RAW
58  OPAQUE TYPE
96  CHAR (ANSI FIXED CHAR), CHARACTER
106 MLSLABEL
121 OBJECT
122 NESTED TABLE
123 VARRAY
178 TIME
179 TIME WITH TIME ZONE
180 TIMESTAMP
181 TIMESTAMP WITH TIME ZONE
231 TIMESTAMP WITH LOCAL TIME ZONE
250 PL/SQL RECORD
251 PL/SQL TABLE
252 PL/SQL BOOLEAN

default_value

記述される引数にデフォルト値がある場合は1、デフォルト値がない場合は0(ゼロ)です。

in_out

パラメータのモードを記述します。値は次のとおりです。

0 IN
1 OUT
2 IN OUT

length

%rowtype仮引数の場合は長さ制約が戻され、そうでない場合は0 (ゼロ)が戻されます。include_string_constraintsパラメータがTRUEに設定されている場合、適切なタイプであれば引数の仮の長さ制約が渡されます。これらは、1、8、23、24、96の文字列タイプです。

precision

記述する引数のデータ・タイプが2(NUMBER)の場合、このパラメータはその数値の精度を表します。

scale

記述する引数のデータ・タイプが2(NUMBER)の場合、このパラメータはその数値の位取りを表します。

radix

記述する引数のデータ・タイプが2(NUMBER)の場合、このパラメータはその数値の基数を表します。

spare

将来使用するために予約されています。

include_string_constraints

デフォルトはFALSEです。パラメータがTRUEに設定されている場合、適切なタイプであれば引数の仮タイプ制約が渡されます。これらは、1、8、23、24、96の文字列タイプです。

戻り値

DESCRIBE_PROCEDUREからの戻り値はすべて、そのOUTパラメータに戻されます。このデータ・タイプは、パラメータの変数値に適応するための、PL/SQLの表です。

59 DBMS_DG

DBMS_DGパッケージを使用すると、アプリケーションでフェイルオーバーの原因となる状況が発生した場合にファスト・スタート・フェイルオーバーを開始するように、アプリケーションからOracle Data Guard Broker環境内のプライマリ・データベースまたはファスト・スタート・フェイルオーバー・ターゲット・データベースに通知できます。

関連項目:
ブローカ構成でのファスト・スタート・フェイルオーバーの実行方法の詳細は、『Oracle Data Guard Broker』を参照してください。

この章では、次の項目について説明します。

- DBMS_DGの使用方法

- セキュリティ・モデル

- DBMS_DGサブプログラムの要約

DBMS_DGの使用方法

Oracle Databaseの外部で実行されているアプリケーションによって検出可能な状況には、Oracle Data Guard Brokerがファスト・スタート・フェイルオーバーを実行する原因となる可能性があるものがあります。原因となる可能性がある状況の範囲はほぼ無制限であるため、ファスト・スタート・フェイルオーバーを実行する原因となっている状況の判別は、アプリケーションによって行われます。

このような状況が発生すると、アプリケーションによってDBMS_DG.INITIATE_FS_FAILOVERプロシージャがコールされ、アプリケーションでファスト・スタート・フェイルオーバーの即時実行が必要であることがプライマリ・データベースまたはファスト・スタート・フェイルオーバー・ターゲット・スタンバイ・データベースのいずれかにアラートとして通知されます。次に、プロシージャのコール元のデータベースからオブザーバに通知され、オブザーバは、スタンバイ・データベースがフェイルオーバーの受入れに有効なファスト・スタート・フェイルオーバー状態(「監視」および「同期」または「遅延内」のいずれか)であるかぎり、ファスト・スタート・フェイルオーバーを即時開始します。構成が有効なファスト・スタート・フェイルオーバー状態でない場合は、INITIATE_FS_FAILOVERサブプログラムによってORAエラー・メッセージが戻され(例外は通知されません)、ファスト・スタート・フェイルオーバーを実行できないことがコール元のアプリケーションに通知されます。

注意:
マルチテナント・コンテナ・データベース(CDB)で操作している場合は、DBMS_DG内のファンクションはルート・レベルでのみ実行されます。個々のプラガブル・データベース(PDB)レベルではなく、ルート・レベルで接続していることを確認してください。

セキュリティ・モデル

DBMS_DGパッケージは実行者の権限で実行され、SYSDBA権限が必要です。

DBMS_DGサブプログラムの要約

表59-1 DBMS_DGパッケージのサブプログラム

サブプログラム

説明

INITIATE_FS_FAILOVERプロシージャ

アプリケーションでフェイルオーバーの原因となる状況が発生した場合にファスト・スタート・フェイルオーバーが必要であることをアプリケーションからプライマリ・データベースまたはファスト・スタート・フェイルオーバー・ターゲット・スタンバイ・データベースのいずれかに通知できます。このプロシージャは、プライマリ・データベースまたはファスト・スタート・フェイルオーバー・スタンバイ・データベースに接続している場合にのみコールできます。

INITIATE_FS_FAILOVERプロシージャ

このプロシージャは、状況文字列の指定に使用します。この文字列と一致する状況がアプリケーションで発生した場合、アプリケーションでファスト・スタート・フェイルオーバーの起動をリクエストできます。

構文

DBMS_DG.INITIATE_FS_FAILOVER (
condstr          IN VARCHAR2)
RETURN BINARY_INTEGER;

パラメータ

表59-2 INITIATE_FS_FAILOVERプロシージャのパラメータ

パラメータ

説明

condstr

ファスト・スタート・フェイルオーバーをリクエストする必要がある条件文字列を指定します。条件文字列引数を指定しなかった場合は、デフォルトの文字列「アプリケーション・フェイルオーバーがリクエストされました。」がブローカ・ログ・ファイルおよびプロシージャのコール元のデータベースのデータベース・アラート・ログに記録されます。

使用上の注意

- このプロシージャは、2進整数を戻します。

- ファスト・スタート・フェイルオーバーが最後に実行された時間および原因を参照するには、V$FS_FAILOVER_STATSビューを問い合せます。

- このプロシージャは、プライマリ・データベースまたはファスト・スタート・フェイルオーバー・スタンバイ・データベースに接続している場合にのみコールできます。

エラー

表59-3 INITIATE_FS_FAILOVERプロシージャのエラー

エラー

説明

ORA-00000: 正常に完了しました。

ファスト・スタート・フェイルオーバーの開始リクエストがオブザーバに転送されました。

ORA-16646: ファスト・スタート・フェイルオーバーは使用不可です

ブローカ構成が存在しないか、またはファスト・スタート・フェイルオーバーが使用可能になっていません。

ORA-16666: その他のスタンバイ・データベースでファスト・スタート・フェイルオーバーを開始できません

DBMS_DG.INITIATE_FS_FAILOVERは、その他のスタンバイ・データベースで起動されました。つまり、プライマリ・データベースまたはファスト・スタート・フェイルオーバー・ターゲット・スタンバイ・データベースでは起動されませんでした。

ORA-16817: ファスト・スタート・フェイルオーバーの構成が同期化されていません

構成が同期化されていない場合に、使用可能な最大のファスト・スタート・フェイルオーバー構成でDBMS_DG.INITIATE_FS_FAILOVERが起動されました。

ORA-16819: ファスト・スタート・フェイルオーバー・オブザーバが起動されていません

DBMS_DG.INITIATE_FS_FAILOVERは起動されましたが、オブザーバは起動されていません。

ORA-16820: ファスト・スタート・フェイルオーバー・オブザーバはこのデータベースを監視しなくなりました

DBMS_DG.INITIATE_FS_FAILOVERが起動されましたが、構成によって、オブザーバが実行されていない可能性があることが検出されました。

ORA-16829: ファスト・スタート・フェイルオーバー構成の遅延

構成がユーザー指定のREDO遅延制限内でない場合に、最大パフォーマンスのファスト・スタート・フェイルオーバー構成でDBMS_DG.INITIATE_FS_FAILOVERが起動されました。

例

この例では、ファスト・スタート・フェイルオーバーが無効のときに、プログラムがファスト・スタート・フェイルオーバーを開始しようとします。この例を使用するには、SYDDBA権限を持つSYSユーザーとして接続します。

set serveroutput on

declare
status integer;

begin
status := dbms_dg.initiate_fs_failover(''Failover Requested'');

dbms_output.put_line(''Fast-Start Failover is disabled: Expected status = ORA-16646'');
dbms_output.put_line(''                  Actual Status = ORA-'' || status);

end;
/
exit;

60 DBMS_DIMENSION

DBMS_DIMENSIONを使用すると、ディメンションの関連を検証でき、さらに、Enterprise Managerのディメンション・ウィザードのかわりにディメンションの定義を表示できます。

関連項目:
DBMS_DIMENSIONパッケージの概念および使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_DIMENSIONの使用方法

- セキュリティ・モデル

- DBMS_DIMENSIONサブプログラムの要約

DBMS_DIMENSIONの使用方法

この項では、DBMS_DIMENSIONパッケージの使用に関連する項目について説明します。

- セキュリティ・モデル

セキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにEXECUTE権限を付与することで制御できます。

ユーザーは、独自のスキーマに含まれるすべてのディメンションを検証または記述できます。別のスキーマに含まれるディメンションを検証または記述するには、そのディメンションに対するオブジェクト権限を付与されているか、CREATE ANY DIMENSION、ALTER ANY DIMENSIONおよびDROP ANY DIMENSIONのうちいずれかのシステム権限を付与されている必要があります。

DBMS_DIMENSIONサブプログラムの要約

表60-1 DBMS_DIMENSIONパッケージのサブプログラム

サブプログラム

説明

DESCRIBE_DIMENSIONプロシージャ

ディメンションの所有者および名前、レベル、階層および属性など、入力ディメンションの定義を出力します。

VALIDATE_DIMENSIONプロシージャ

ディメンションで指定した関連が正しいことを検証します。

DESCRIBE_DIMENSIONプロシージャ

このプロシージャは、ディメンションの名前、レベル、階層および属性など、ディメンションの定義を表示します。DBMS_OUTPUTパッケージを使用して出力を表示します。

構文

DBMS_DIMENSION.DESCRIBE_DIMENSION (
dimension  IN VARCHAR2);

パラメータ

表60-2 DESCRIBE_DIMENSIONプロシージャのパラメータ

パラメータ

説明

dimension

owner.nameの書式で表示されるディメンションの所有者および名前。

VALIDATE_DIMENSIONプロシージャ

ディメンションで指定した関連が有効であることを検証します。無効であることが判明した行のROWIDは、ユーザーのスキーマにあるDIMENSION_EXCEPTIONS表に格納されます。

構文

DBMS_DIMENSION.VALIDATE_DIMENSION (
dimension               IN VARCHAR2,
incremental             IN BOOLEAN := TRUE,
check_nulls             IN BOOLEAN := FALSE,
statement_id            IN VARCHAR2 := NULL );

パラメータ

表60-3 VALIDATE_DIMENSIONプロシージャのパラメータ

パラメータ

説明

dimension

owner.nameの書式で表示されるディメンションの所有者および名前。

incremental

TRUEの場合は、このディメンションの表の新しい行のみをチェックします。FALSEの場合は、すべての行をチェックします。

check_nulls

TRUEの場合は、すべてのレベルの列についてNULLでないかどうか検証されます。

FALSEの場合、チェックは省略されます。NOT NULL制約などの別の方法でNULLでないことが保証されている場合は、FALSEを指定します。

statement_id

クライアントが提供する一意の識別子。出力行を特定プロシージャの起動と関連付けます。

61 DBMS_DNFS

DBMS_DNFSパッケージは、バックアップ・セットに含まれているファイルを使用したデータベースの作成を支援するためのインタフェースを提供します。

関連項目:
『Oracle Database管理者ガイド』

この章では、次の項目について説明します。

- DBMS_DNFSの使用方法

- セキュリティ・モデル

- DBMS_DNFSの使用方法

DBMS_DNFSの使用方法

- セキュリティ・モデル

セキュリティ・モデル

このパッケージは、SYSDBA権限のあるユーザーで実行する必要があります。

DBMS_DNFSサブプログラムの要約

表61-1 DBMS_DNFSパッケージのサブプログラム

サブプログラム

説明

CLONEDB_RENAMEFILEプロシージャ

バックアップ・セットを指していたデータファイルの名前を、クローニングされたデータベース内の実際のファイル名に変更します。

CLONEDB_RENAMEFILEプロシージャ

このプロシージャは、バックアップ・セットを指していたデータファイルの名前を、クローニングされたデータベース内の実際のファイル名に変更するために使用されます。srcfileは、バックアップ・イメージ・コピーまたは読取り専用ストレージ・スナップショット内のデータファイルを示すファイル名です。destfile宛先ファイル・パスは、cloneDBデータファイルが作成されるNFSボリュームを指す必要があります。このプロシージャが正常に実行されると、制御ファイル・レコードは新しいデータファイル名で更新されます。

構文

DBMS_DNFS.CLONEDB_RENAMEFILE (
srcfile        IN         VARCHAR2,
destfile       IN         VARCHAR2);

パラメータ

表61-2 CLONEDB_RENAMEFILEプロシージャのパラメータ

パラメータ

説明

srcfile

制御ファイルのソース・データファイル名

destfile

新しいデータファイル名

62 DBMS_DST

DBMS_DSTパッケージは、夏時間(DST)パッチをTimestamp with Time Zoneデータ・タイプに適用するためのインタフェースを提供しています。

関連項目:

- 『Oracle Databaseグローバリゼーション・サポート・ガイド』

- 『Oracle Databaseリファレンス』

この章では、次の項目について説明します。

- DBMS_DSTの使用方法

- 概要

- セキュリティ・モデル

- ビュー

- DBMS_DSTサブプログラムの要約

DBMS_DSTの使用方法

- 概要

- セキュリティ・モデル

- ビュー

概要

夏時間が有効になるとき、また夏時間が終了するときの移行期間中は、タイム・ゾーン・データのあるタイムスタンプを処理するときにデータ損失などの問題が発生する可能性があります。DBMS_DSTパッケージでは、ルール・セットのコンテキストでこうした移行に対応できます。

セキュリティ・モデル

DBMS_DSTパッケージは実行者権限のパッケージです。

関連項目:
実行者権限または定義者権限の使用方法の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

このパッケージの実行権限は、EXECUTE_CATALOG_ROLEロールに付与されています。通常、このロールは、選択したユーザーにデータ・ディクショナリのパッケージおよびプロシージャに対するEXECUTE権限を許可するために付与されます。

このパッケージを起動するユーザーには、次の権限が必要です。

- CREATE ANY TABLE

- ALTER ANY TABLE

- DROP ANY TABLE

- SELECT ANY TABLE

- LOCK ANY TABLE

- ALTER ANY INDEX

- ALTER ANY TRIGGER

- UPDATE ANY TABLE

- EXECUTE ANY TYPE

ビュー

DBMS_DSTパッケージでは、表62-1「DBMS_DSTで使用されるビュー」に示されるビューが使用されます。詳細は、『Oracle Databaseリファレンス』を参照してください。

表62-1 DBMS_DSTで使用されるビュー

ビュー

説明

DBA_TSTZ_TABLES

データベースのすべての表のうち、TIMESTAMP WITH TIME ZONEデータ・タイプに定義されているかTIMESTAMP WITH TIME ZONEデータ・タイプの属性を含むオブジェクト型に定義されている列を含む表に関する情報を示します。このビューの列は、ALL_TSTZ_TABLESの列と同じです。

USER_TSTZ_TABLES

現在のユーザーが所有している表のうち、TIMESTAMP WITH TIME ZONEデータ・タイプに定義されているかTIMESTAMP WITH TIME ZONEデータ・タイプの属性を含むオブジェクト型に定義されている列を含む表に関する情報を示します。このビューの列は(OWNER列を除き)、ALL_TSTZ_TABLESの列と同じです。

ALL_TSTZ_TABLES

現在のユーザーがアクセス可能な表に関する情報を表示します。表には、TIMESTAMP WITH TIME ZONEデータ・タイプまたはTIMESTAMP WITH TIME ZONEデータ・タイプの属性を含むオブジェクト・タイプで定義される列があります。

DBMS_DSTサブプログラムの要約

表62-2 DBMS_DSTパッケージのサブプログラム

サブプログラム

説明

BEGIN_PREPAREプロシージャ

準備ウィンドウを開始します。

BEGIN_UPGRADEプロシージャ

アップグレード・ウィンドウを開始します。

CREATE_AFFECTED_TABLEプロシージャ

FIND_AFFECTED_TABLESプロシージャの説明に示されているスキーマを持つ表を作成します。

CREATE_ERROR_TABLEプロシージャ

ログ・エラー表を作成します。

CREATE_TRIGGER_TABLEプロシージャ

表のアップグレードを実行する前には無効になっており、アップグレード・プロセスで致命的な障害が発生したため有効化されていない、アクティブなトリガーを記録する場合に使用される表を作成します。

END_PREPAREプロシージャ

準備ウィンドウを終了します。

END_UPGRADEプロシージャ

アップグレード・ウィンドウを終了します。

FIND_AFFECTED_TABLESプロシージャ

タイムゾーンのバージョンが新しいためTSTZデータが影響を受けたすべての表を検索します。

UPGRADE_DATABASEプロシージャ

データベース内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含むすべての表をアップグレードします。

UPGRADE_SCHEMAプロシージャ

スキーマの指定されたリスト内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表をアップグレードします。

UPGRADE_TABLEプロシージャ

TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表の指定されたリストをアップグレードします。

BEGIN_PREPAREプロシージャ

このプロシージャは、準備ウィンドウを開始します。準備ウィンドウが正常に開始されると、データベース・プロパティDST_UPGRADE_STATEはPREPAREに設定され、データベース・プロパティSECONDARY_TT_VERSIONは新しいバージョンのタイムゾーンに設定されます。

準備ウィンドウによって、DBAは、アップグレードの影響を受けるデータを調査し、アップグレードを実行するのに最適な時期を判断できます。準備ウィンドウには、通常のデータベース操作をオーバーラップさせることができます。

構文

DBMS_DST.BEGIN_PREPARE (
new_version                IN  BINARY_INTEGER);

パラメータ

表62-3 BEGIN_PREPAREプロシージャのパラメータ

パラメータ

説明

new_version

データベースがアップグレードされる新しいバージョンのタイムゾーン

BEGIN_UPGRADEプロシージャ

このプロシージャは、アップグレード・ウィンドウを開始します。アップグレード・ウィンドウが正常に開始されると、ディクショナリ表のTSTZデータは新しいバージョンのタイムゾーンを反映するようにアップグレードされ、データベース・プロパティ'DST_UPGRADE_STATE'は'UPGRADE'に設定されます。BEGIN_UPGRADEが正常に実行されたら、ユーザーはデータベースを再起動する必要があります。正常に再起動されたら、データベース・プロパティ'PRIMARY_TT_VERSION'は新しいバージョンのタイムゾーンとなり、'SECONDARY_TT_VERSION'は古いバージョンのタイムゾーンとなります。

このプロシージャはアトミックに動作し、ディクショナリ表およびデータベース・プロパティのすべてがアップグレードされるか、またはいずれもアップグレードされません。OPEN MIGRATEモードのデータベースでコールされる必要があります。

構文

DBMS_DST.BEGIN_UPGRADE (
new_version                IN  BINARY_INTEGER,
error_on_overlap_time      IN  BOOLEAN := FALSE,
error_on_nonexisting_time  IN  BOOLEAN := FALSE);

パラメータ

表62-4 BEGIN_UPGRADEプロシージャのパラメータ

パラメータ

説明

new_version

データベースがアップグレードされる新しいバージョンのタイムゾーン。

error_on_overlap_time

「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。デフォルトはTRUEです。境界のケースの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

error_on_nonexisting_time

「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。

デフォルトはTRUEです。

CREATE_AFFECTED_TABLEプロシージャ

このプロシージャは、FIND_AFFECTED_TABLESプロシージャの説明に示されているスキーマを持つ表を作成します。

構文

DBMS_DST.CREATE_AFFECTED_TABLE (
table_name      IN  VARCHAR2);

パラメータ

表62-5 CREATE_AFFECTED_TABLEプロシージャのパラメータ

パラメータ

説明

table_name

作成する表名。

使用上の注意

このプロシージャはスキーマ修飾なしでtable_nameを取り、現行のユーザー・スキーマ内で表を作成します。

CREATE_ERROR_TABLEプロシージャ

このプロシージャは、次のスキーマを含むログ・エラー表を作成します。

CREATE TABLE dst$error_table(
table_owner     VARCHAR2(30),
table_name      VARCHAR2(30),
column_name     VARCHAR2(4000),
rid             ROWID,
error_number    NUMBER)

構文

DBMS_DST.CREATE_ERROR_TABLE (
table_name      IN  VARCHAR2);

パラメータ

表62-6 CREATE_ERROR_TABLEプロシージャのパラメータ

パラメータ

説明

table_name

作成する表名。

使用上の注意

- このプロシージャはスキーマ修飾なしでtable_nameを取り、現行のユーザー・スキーマ内で表を作成します。

- タイム・ゾーン・データでタイム・ゾーン・ファイルおよびタイムスタンプをアップグレードするとき、エラー番号が見つかります。タイム・ゾーン・データでタイム・ゾーン・ファイルおよびタイムスタンプをアップグレードするときのエラーの処理については、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

CREATE_TRIGGER_TABLEプロシージャ

このプロシージャは、次のスキーマを含む表を作成します。

CREATE TABLE dst_trigger_table (
trigger_owner  VARCHAR2(30),
trigger_name   VARCHAR2(30));

この表は、表のアップグレードを実行する前には無効になっており、アップグレード・プロセスで致命的な障害が発生したため有効化されていない、アクティブなトリガーを記録する場合に使用されます。

構文

DBMS_DST.CREATE_TRIGGER_TABLE (
table_name     IN    VARCHAR2);

パラメータ

表62-7 CREATE_TRIGGER_TABLEプロシージャのパラメータ

パラメータ

説明

table_name

作成する表の名前

使用上の注意

このプロシージャはスキーマ修飾なしでtable_nameを取り、現行のユーザー・スキーマ内で表を作成します。

END_PREPAREプロシージャ

このプロシージャは、準備ウィンドウを終了します。

構文

DBMS_DST.BEGIN_PREPARE;

END_UPGRADEプロシージャ

このプロシージャは、アップグレード・ウィンドウを終了します。アップグレード・ウィンドウは、影響を受けるすべてのユーザー表がアップグレードされると終了されます。それ以外の場合は、OUTパラメータnum_of_failuresによって、変換されていない表の数が示されます。

構文

DBMS_DST.END_UPGRADE (
num_of_failures    OUT  BINARY_INTEGER);

パラメータ

表62-8 END_UPGRADEプロシージャのパラメータ

パラメータ

説明

num_of_failures

途中で失敗した表の数。

FIND_AFFECTED_TABLESプロシージャ

このプロシージャは、タイムゾーンのバージョンが新しいためTSTZデータが影響を受けたすべての表を検索します。このプロシージャは、準備ウィンドウでのみ起動できます。TSTZデータが影響を受けた表は、パラメータaffected_tablesによって示される表に記録されます。セマンティック・エラーは、記録が必要な場合、パラメータlog_errors_tableによって示される表に記録されます。

構文

DBMS_DST.FIND_AFFECTED_TABLES (
affected_tables             IN  VARCHAR2 =: 'sys.dst$affected_tables',
log_errors                  IN  BOOLEAN := FALSE,
log_errors_table            IN  VARCHAR2 =: 'sys.dst$error_table');

パラメータ

表62-9 FIND_AFFECTED_TABLESプロシージャのパラメータ

パラメータ

説明

affected_tables

次のスキーマを持つ表の名前。

CREATE TABLE dst$affected_tables (
table_owner VARCHAR2(30),
table_name VARCHAR2(30),
column_name VARCHAR2(4000),
row_count NUMBER,
error_count NUMBER)

この表はCREATE_AFFECTED_TABLEプロシージャを使用して作成できます。

log_errors

アップグレード中にエラーを記録するかどうかを示すブール・フラグ。FALSEの場合、現行の表の変換を中断した後、log_errors_tableにエラーは記録されません。TRUEの場合、log_errors_tableにエラーが記録されます。

デフォルトはFALSEです。

log_errors_table

次のスキーマを持つ表の名前。

CREATE TABLE dst$error_table (
table_owner VARCHAR2(30),
table_name VARCHAR2(30),
column_name VARCHAR2(4000),
rid ROWID,
error_number NUMBER)

この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。rid列には、問題となる行のROWIDが記録され、error_number列には対応するエラー番号が記録されます。

UPGRADE_DATABASEプロシージャ

このプロシージャは、データベース内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含むすべての表をアップグレードします。このプロシージャは、アップグレード・ウィンドウの開始後にのみ起動できます。各表はアトミック・トランザクションでアップグレードされます。元表およびそのマテリアライズド・ビューのログ表がアトミック・トランザクションでアップグレードされることに注意してください。

構文

DBMS_DST.UPGRADE_DATABASE  (
num_of_failures             OUT BINARY_INTEGER,
upgrade_data                IN  BOOLEAN := TRUE,
parallel                    IN  BOOLEAN := FALSE,
continue_after_errors       IN  BOOLEAN := TRUE,
log_errors                  IN  BOOLEAN := FALSE,
log_errors_table            IN  VARCHAR2 =: 'sys.dst$error_table' ,
error_on_overlap_time       IN  BOOLEAN := FALSE,
error_on_nonexisting_time   IN  BOOLEAN := FALSE,
log_triggers_table          IN  VARCHAR2 := 'sys.dst$trigger_table');

パラメータ

表62-10 UPGRADE_DATABASEプロシージャのパラメータ

パラメータ

説明

num_of_failures

途中で失敗した表の数。

upgrade_data

新しいタイムゾーン・パッチ・ファイルを使用してTSTZデータを変換するか(TRUE)、変換しないでおくか(FALSE)を示すブール・フラグ。デフォルトはTRUEです。

parallel

PDML(パラレルDML)を使用して表を変換するか、シリアルDMLを使用して表を変換するかを示すブール・フラグ。デフォルトはFALSEです。

continue_after_errors

現行の表でアップグレードが失敗した後に続行するかどうかを示すブール・フラグ。

デフォルトはTRUEです。

log_errors

アップグレード中にエラーを記録するかどうかを示すブール・フラグ。FALSEの場合、現行の表の変換を中断した後、log_errors_tableにエラーは記録されません。TRUEの場合、log_errors_tableにエラーが記録されます。

デフォルトはFALSEです。

log_errors_table

次のスキーマを持つ表の名前。

CREATE TABLE dst$error_table (
table_owner VARCHAR2(30),
table_name VARCHAR2(30),
column_name VARCHAR2(4000),
rid ROWID,
error_number NUMBER)

この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。rid列には、問題となる行のROWIDが記録され、error_number列には対応するエラー番号が記録されます。

error_on_overlap_time

「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。

デフォルトはTRUEです。

error_on_nonexisting_time

「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。

デフォルトはTRUEです。

log_triggers_table

アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。

UPGRADE_SCHEMAプロシージャ

このプロシージャは、スキーマの指定されたリスト内で、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表をアップグレードします。このプロシージャは、アップグレード・ウィンドウの開始後にのみ起動できます。各表はアトミック・トランザクションでアップグレードされます。元表およびそのマテリアライズド・ビューのログ表がアトミック・トランザクションでアップグレードされることに注意してください。

構文

DBMS_DST.UPGRADE_SCHEMA (
num_of_failures             OUT BINARY_INTEGER,
schema_list                 IN  VARCHAR2,
upgrade_data                IN  BOOLEAN := TRUE,
parallel                    IN  BOOLEAN := FALSE,
continue_after_errors       IN  BOOLEAN := TRUE,
log_errors                  IN  BOOLEAN := FALSE,
log_errors_table            IN  VARCHAR2 =: 'sys.dst$error_table' ,
error_on_overlap_time       IN  BOOLEAN := FALSE,
error_on_nonexisting_time   IN  BOOLEAN := FALSE,
log_triggers_table          IN  VARCHAR2 := 'sys.dst$trigger_table');

パラメータ

表62-11 UPGRADE_SCHEMAプロシージャのパラメータ

パラメータ

説明

num_of_failures

途中で失敗した表の数。

schema_list

スキーマ名のリスト(カンマで区切られた文字列)。

upgrade_data

新しいタイムゾーン・パッチ・ファイルを使用してTSTZデータを変換するか(TRUE)、変換しないでおくか(FALSE)を示すブール・フラグ。デフォルトはTRUEです。

parallel

PDML(パラレルDML)を使用して表を変換するか、シリアルDMLを使用して表を変換するかを示すブール・フラグ。デフォルトはFALSEです。

continue_after_errors

現行の表でアップグレードが失敗した後に続行するかどうかを示すブール・フラグ。デフォルトはTRUEです。

log_errors

アップグレード中にエラーを記録するかどうかを示すブール・フラグ。FALSEの場合、現行の表の変換を中断した後、log_errors_tableにエラーは記録されません。TRUEの場合、log_errors_tableにエラーが記録されます。

デフォルトはFALSEです。

log_errors_table

次のスキーマを持つ表の名前。

CREATE TABLE dst$error_table (
table_owner VARCHAR2(30),
table_name VARCHAR2(30),
column_name VARCHAR2(4000),
rid ROWID,
error_number NUMBER)

この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。rid列には、問題となる行のROWIDが記録され、error_number列には対応するエラー番号が記録されます。

error_on_overlap_time

「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。

デフォルトはTRUEです。

error_on_nonexisting_time

「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。

デフォルトはTRUEです。

log_triggers_table

アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。

UPGRADE_TABLEプロシージャ

このプロシージャは、TSTZタイプまたはTSTZタイプを含むADTタイプに定義されている1つ以上の列を含む表の指定されたリストをアップグレードします。

構文

DBMS_DST.UPGRADE_TABLE  (
num_of_failures             OUT BINARY_INTEGER,
table_list                  IN  VARCHAR2,
upgrade_data                IN  BOOLEAN := TRUE,
parallel                    IN  BOOLEAN := FALSE,
continue_after_errors       IN  BOOLEAN := TRUE,
log_errors                  IN  BOOLEAN := FALSE,
log_errors_table            IN  VARCHAR2 =: 'sys.dst$error_table' ,
error_on_overlap_time       IN  BOOLEAN := FALSE,
error_on_nonexisting_time   IN  BOOLEAN := FALSE,
log_triggers_table          IN  VARCHAR2 := 'sys.dst$trigger_table',
atomic_upgrade              IN  BOOLEAN := FALSE);

パラメータ

表62-12 UPGRADE_TABLEプロシージャのパラメータ

パラメータ

説明

num_of_failures

途中で失敗した表の数。

table_list

表名のリスト(カンマで区切られた文字列)。

upgrade_data

新しいタイムゾーン・パッチ・ファイルを使用してTSTZデータを変換するか(TRUE)、変換しないでおくか(FALSE)を示すブール・フラグ。

デフォルトはTRUEです。

parallel

PDML(パラレルDML)を使用して表を変換するか、シリアルDMLを使用して表を変換するかを示すブール・フラグ。

デフォルトはFALSEです。

continue_after_errors

現行の表でアップグレードが失敗した後に続行するかどうかを示すブール・フラグ。

デフォルトはTRUEです。

log_errors

アップグレード中にエラーを記録するかどうかを示すブール・フラグ。FALSEの場合、現行の表の変換を中断した後、log_errors_tableにエラーは記録されません。TRUEの場合、log_errors_tableにエラーが記録されます。

デフォルトはFALSEです。

log_errors_table

次のスキーマを持つ表の名前。

CREATE TABLE dst$error_table (
table_owner VARCHAR2(30),
table_name VARCHAR2(30),
column_name VARCHAR2(4000),
rid ROWID,
error_number NUMBER)

この表はCREATE_ERROR_TABLEプロシージャを使用して作成できます。ridパラメータによって、問題となる行のROWIDおよび対応するエラー番号が記録されます。

error_on_overlap_time

「オーバーラップ」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。

デフォルトはTRUEです。

error_on_nonexisting_time

「存在しない」時間セマンティック変換エラーに関するエラーをレポートするかどうかを示すブール・フラグ。

デフォルトはTRUEです。

log_triggers_table

アップグレード前は無効になっており、アップグレード実行時に致命的な障害のため有効化されていないトリガーを記録する表。

atomic_upgrade

リストされた表をアトミックに(単一のトランザクションで)変換するかどうかを示すブール・フラグ。FALSEの場合、各表は独自のトランザクションで変換されます。

デフォルトはFALSEです。

使用上の注意

このプロシージャは、アップグレード・ウィンドウの開始後にのみ起動できます。表のリストは、次の部分的な順序付けを満たしている必要があります。

1. 元表にマテリアライズド・ビューのログ表が含まれている場合、ログ表はリストの次の項目である必要があります。

2. リストにマテリアライズド・ビューのコンテナ表が表示されている場合、マテリアライズド・ビューの「アップグレードされていない」元表およびログ表は、その表のリスト内でコンテナ表の前に表示される必要があります。

元表およびそのマテリアライズド・ビュー・ログ表は、atomic_upgradeをTRUEに指定して、アトミック・トランザクションでアップグレードする必要があります。

63 DBMS_DISTRIBUTED_TRUST_ADMIN

DBMS_DISTRIBUTED_TRUST_ADMINプロシージャは、Trusted Serversリストをメンテナンスします。サーバーが信頼されているかどうかを定義するには、これらのプロシージャを使用します。データベースが信頼されていない場合は、そのデータベースからの現行のユーザーのデータベース・リンクは拒否されます。

この章では、次の項目について説明します。

- DBMS_DISTRIBUTED_TRUST_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 例

- DBMS_DISTRIBUTED_TRUST_ADMINサブプログラムの要約

DBMS_DISTRIBUTED_TRUST_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 例

概要

Oracleは、エンタープライズLDAPディレクトリ・サービスに格納されているドメイン・メンバーシップ・リストとともにローカルのTrusted Serversリストを使用して、別のデータベースが信頼されているかどうかを判断します。LDAPディレクトリ・サービスのエントリは、Oracle Enterprise ManagerのEnterprise Security Manager Toolで管理されます。

Oracleは、次の条件に一致する場合、別のデータベースを信頼できるとみなします。

1. ディレクトリ・サービスのエンタープライズ・ドメインがローカル・データベースと同じである。

2. エンタープライズ・ドメインがディレクトリ・サービスにおいて信頼するとマークされている。

3. ローカルのTrusted Serversリストに信頼しないと表示されていない。現行のユーザーのデータベース・リンクが別のデータベースから受け入れられるのは、関係する両方のデータベースが互いに信頼されている場合のみです。

ディレクトリ・サービスにリストされているかどうかに関係なく、データベース・サーバーをTrusted Serversリストにローカルでリストできます。ただし、同じドメイン内にローカル・データベースとして存在しないデータベースをリストする場合、またはそのドメインが信頼されていない場合、そのエントリは無効になります。

この機能は、Oracle Advanced SecurityオプションのEnterprise User Security機能の一部です。

セキュリティ・モデル

DBMS_DISTRIBUTED_TRUST_ADMINを実行するには、EXECUTE_CATALOG_ROLEロールがDBAに付与されている必要があります。TRUSTED_SERVERSビューを検索するには、SELECT_CATALOG_ROLEロールがDBAに付与されている必要があります。

すべてのサーバーについて、信頼されているかどうかを認識することが重要です。データベースがすべてのデータベースをすでに信頼している場合、またはそのデータベースがすでに信頼されている場合は、ALLOW_SERVERプロシージャで特定のサーバーを信頼しても効果はありません。同様に、そのデータベースがすべてのデータベースをすでに信頼していない場合、またはそのデータベースがすでに信頼されていない場合は、DENY_SERVERプロシージャで特定のサーバーを拒否しても効果はありません。

プロシージャDENY_ALLおよびALLOW_ALLは、それぞれALLOW_SERVERプロシージャまたはDENY_SERVERプロシージャで明示的に許可または拒否されたすべてのエントリ(サーバー名)を削除します。

例

パッケージDBMS_DISTRIBUTED_TRUST_ADMINを使用して信頼リストを変更したことがない場合、デフォルトでは、同じ企業ドメイン内のすべてのデータベースを信頼します(そのドメインがディレクトリ・サービスで信頼されているとしてリストされている場合に限ります)。

SELECT * FROM TRUSTED_SERVERS;
TRUST      NAME
--------- ---------------------
Trusted   All

現在すべてのサーバーが信頼されているため、DENY_SERVERプロシージャを実行し、特定のサーバーを信頼しないことを指定できます。

EXECUTE DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_SERVER
('SALES.US.AMERICAS.ACME_AUTO.COM');
PL/SQL procedure successfully completed.

SELECT * FROM TRUSTED_SERVERS;
TRUST       NAME
--------- -----------------------------------------------
Untrusted SALES.US.AMERICAS.ACME_AUTO.COM

DENY_ALLプロシージャを実行すると、すべてのデータベース・サーバーを信頼しないことを選択できます。

EXECUTE DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_ALL;

PL/SQL procedure successfully completed.

SELECT * FROM TRUSTED_SERVERS;

TRUST       NAME
--------- -----------------------------------------------
Untrusted All

ALLOW_SERVERプロシージャを使用すると、特定のデータベース・サーバーを信頼することを指定できます。

EXECUTE DBMS_DISTRIBUTED_TRUST_ADMIN.ALLOW_SERVER
('SALES.US.AMERICAS.ACME_AUTO.COM');
PL/SQL procedure successfully completed.

SELECT * FROM TRUSTED_SERVERS;
TRUST       NAME
--------- ------------------------------------------------
Trusted   SALES.US.AMERICAS.ACME_AUTO.COM

DBMS_DISTRIBUTED_TRUST_ADMINサブプログラムの要約

表63-1 DBMS_DISTRIBUTED_TRUST_ADMINパッケージのサブプログラム

サブプログラム

説明

ALLOW_ALLプロシージャ

リストを空にし、すべてのサーバーを信頼することを示す行を挿入します。

ALLOW_SERVERプロシージャ

特定のサーバーへのアクセスを可能にします。リストにdeny allが指定されている場合でも有効です。

DENY_ALLプロシージャ

リストを空にし、すべてのサーバーを信頼しないことを示す行を挿入します。

DENY_SERVERプロシージャ

特定のサーバーへのアクセスを拒否します。リストにallow allが指定されている場合でも有効です。

ALLOW_ALLプロシージャ

このプロシージャは、Trusted Serversリストを空にし、エンタープライズ・ディレクトリ・サービスで信頼されているドメインのメンバーであるすべてのサーバー、および同じドメイン内のすべてのサーバーがアクセスを許可されることを指定します。

TRUSTED_SERVERSビューには、「TRUSTED ALL」と表示されます。これは、エンタープライズ・ディレクトリ・サービスで現在信頼されているすべてのサーバーを、データベースが信頼していることを意味します。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.ALLOW_ALL;

使用上の注意

ALLOW_ALLは、エンタープライズ・ディレクトリ・サービスで信頼されているとしてリストされているサーバー、および同じエンタープライズ・ドメイン内のサーバーにのみ適用されます。

ALLOW_SERVERプロシージャ

このプロシージャは、指定したサーバーが信頼されていることを保証します(deny allが指定されている場合でも有効です)。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.ALLOW_SERVER (
server IN VARCHAR2);

パラメータ

表63-2 ALLOW_SERVERプロシージャのパラメータ

パラメータ

説明

server

信頼するサーバーの一意の完全修飾名

使用上の注意

Trusted Serversリストにエントリdeny allが含まれている場合、このプロシージャは、特定のデータベース(例: DBx)を信頼することを示す指定を追加します。

Trusted Serversリストにエントリallow allが含まれており、そのリストにdeny DBxエントリがない場合は、このプロシージャを実行しても何も変更されません。

Trusted Serversリストにエントリallow allが含まれており、そのリストにdeny DBxエントリがある場合は、そのエントリが削除されます。

DENY_ALLプロシージャ

このプロシージャは、Trusted Serversリストを空にし、すべてのサーバーがアクセスを拒否されることを指定します。

TRUSTED_SERVERSビューには、「UNTRUSTED ALL」が表示されます。これは、現在どのサーバーも信頼されていないことを示します。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_ALL;

DENY_SERVERプロシージャ

このプロシージャは、指定したサーバーを信頼しないことを保証します(allow allが指定されている場合でも有効です)。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_SERVER (
server IN VARCHAR2);

パラメータ

表63-3 DENY_SERVERプロシージャのパラメータ

パラメータ

説明

server

信頼しないサーバーの一意の完全修飾名

使用上の注意

Trusted Serversリストにエントリallow allが含まれている場合、このプロシージャは、指定したデータベース(例: DBx)を信頼しないことを示すエントリを追加します。

Trusted Serversリストにエントリdeny allが含まれており、そのリストにallow DBxエントリがない場合は、このプロシージャを実行しても何も変更されません。

Trusted Serversリストにエントリdeny allが含まれており、allow DBxエントリがある場合は、そのエントリが削除されます。

64 DBMS_EDITIONS_UTILITIES

DBMS_EDITIONS_UTILITIESパッケージは、エディション関連の操作用にヘルパー・ファンクションを提供します。

この章では、次の項目について説明します。

- DBMS_EDITIONS_UTILITIESの使用方法

- 概要

- セキュリティ・モデル

- 例外

- DBMS_EDITIONS_UTILITIESサブプログラムの要約

DBMS_EDITIONS_UTILITIESの使用方法

- 概要

- セキュリティ・モデル

- 例外

概要

DBMS_EDITIONS_UTILITIESパッケージは、エディション関連の操作用にヘルパー・ファンクションを提供するインタフェースを実装します。

セキュリティ・モデル

このパッケージは、PUBLICに実行アクセス権限が付与されているSYS所有のパッケージです。このパッケージは、実行者権限(コール元のセキュリティ・プロファイル)で実行されます。

例外

表64-1 DBMS_EDITIONS_UTILITIESエラー・メッセージ

エラー

説明

ORA-38817

権限が不十分です。

ORA-942

表がありません。

DBMS_EDITIONS_UTILITIESサブプログラムの要約

表64-2 DBMS_EDITIONS_UTILITIESパッケージのサブプログラム

サブプログラム

説明

SET_EDITIONING_VIEWS_READ_ONLYプロシージャ

このプロシージャは、スキーマ名と表名が指定されると、すべてのエディションの対応するエディショニング・ビューをREAD ONLYまたはREAD/WRITEに設定します。

SET_NULL_COLUMN_VALUES_TO_EXPRプロシージャ

エディションベースの再定義(EBR)の演習でのみ使用します。

SET_EDITIONING_VIEWS_READ_ONLYプロシージャ

このプロシージャは、スキーマ名と表名が指定されると、すべてのエディションの対応するエディショニング・ビューをREAD ONLYまたはREAD/WRITEに設定します。

構文

DBMS_EDITIONS_UTILITIES.SET_EDITIONING_VIEWS_READ_ONLY (
table_name IN VARCHAR2,
owner      IN VARCHAR2 DEFAULT NULL,
read_only  IN BOOLEAN  DEFAULT TRUE);

パラメータ

表64-3 SET_EDITIONING_VIEWS_READ_ONLYプロシージャのパラメータ

パラメータ

説明

table_name

エディショニング・ビューの元表。

owner

元表のスキーマ。デフォルト(またはNULL)は現行のスキーマです。

read_only

TRUEの場合、ビューを読取り専用に設定し、FALSE (またはNULL)の場合は、ビューをREAD/WRITEに設定します。デフォルトはTRUEです。

使用上の注意

ユーザーには次の権限が必要です。

- 表の所有者であるか、ALTER ANY TABLEシステム権限を持っていること。

- ビューが定義されているすべてのエディションに対するUSEオブジェクト権限。

SET_NULL_COLUMN_VALUES_TO_EXPRプロシージャ

このプロシージャは、置換列のNULL値を式の値に置換します。式の評価コストは、将来の更新や問合せまで先送りされます。このプロシージャは、エディションベースの再定義(EBR)の演習でのみ使用します。

関連項目:

- アップグレード前の表現をアップグレード後の表現に変換する方法については、『Oracle Database開発ガイド』を参照してください。

構文

DBMS_EDITIONS_UTILITIES.SET_NULL_COLUMN_VALUES_TO_EXPR;
table_name    IN  VARCHAR2,
column_name   IN  VARCHAR2,
expression    IN  VARCHAR2);

パラメータ

表64-4 SET_NULL_COLUMN_VALUES_TO_EXPRプロシージャのパラメータ

パラメータ

説明

table_name

スキーマで修飾される可能性のある表の名前。

column_name

更新する列の名前。

expression

同じ表の列、定数およびSQLファンクションから構成される式。

65 DBMS_EPG

DBMS_EPGパッケージは、WebブラウザからHTTPリスナーを介してPL/SQLストアド・プロシージャを起動できる、埋込みのPL/SQLゲートウェイを実装します。

この章では、次の項目について説明します。

- DBMS_EPGの使用方法

- 概要

- セキュリティ・モデル

- 例外

- データ構造

- VARCHAR2_TABLE表タイプ

- サブプログラム・グループ

- 構成サブプログラム

- 認証サブプログラム

- DBMS_EPGサブプログラムの要約

DBMS_EPGの使用方法

- 概要

- セキュリティ・モデル

- 例外

概要

DBMS_EPGパッケージは、PL/SQLユーザーがPL/SQL Webアプリケーションを開発およびデプロイするためのプラットフォームです。埋込みPL/SQLゲートウェイは、Oracle DatabaseのXMLデータベースHTTPサーバー内で実行されるゲートウェイの埋込みバージョンです。これにより、データベース内でmod_plsqlのコア機能が提供されますが、Oracle HTTP Server powered by Apacheは必要ありません。

ブラウザからHTTPを介してPL/SQLアプリケーションにアクセスできるようにするには、データベース・アクセス記述子(DAD)を作成して仮想パスにマップする必要があります。DADは、データベース・アクセスに使用される一連の構成値で、仮想パス・マッピングによって、XML DB HTTPサーバーの仮想パスのもとでのアプリケーションへのアクセスが可能になります。DADは、XML DB HTTPサーバー内ではサーブレットとして表示されます。

セキュリティ・モデル

構成インタフェースを起動するにはXDBADMINロールが必要です。データベース・ユーザーXDBによって起動できます。

認証インタフェースは、すべてのユーザーが起動できます。

例外

次の表に、DBMS_EPGパッケージで発生する例外を示します。

表65-1 DBMS_EPGの例外

例外

エラー・コード

説明

DAD_NOT_FOUND

20000

データベース・アクセス記述子(DAD)%sが見つかりません。DADの名前が正しいこと、およびそれが存在することを確認してください

データ構造

DBMS_EPGパッケージは、TABLEタイプを定義します。

VARCHAR2_TABLE表タイプ

このタイプは、属性名、属性値、仮想パスおよびデータベース・アクセス記述子(DAD)のリストを戻すために、GET_ALL_GLOBAL_ATTRIBUTES、GET_ALL_DAD_ATTRIBUTES、GET_ALL_DAD_MAPPINGSおよびGET_DAD_LISTプロシージャで使用されます。

TYPE VARCHAR2_TABLE IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;

サブプログラム・グループ

DBMS_EPGは、2つのインタフェースで構成されています。

- 構成サブプログラム

- 認証サブプログラム

構成サブプログラム

構成サブプログラム・グループには、埋込みPL/SQLゲートウェイのグローバル設定とデータベース・アクセス記述子(DAD)固有の設定を検証および変更するためのサブプログラム・インタフェースが含まれています。

表65-2 構成サブプログラム・グループ

サブプログラム

説明

CREATE_DADプロシージャ

新規DADを作成します。

DELETE_DAD_ATTRIBUTEプロシージャ

DAD属性を削除します。

DELETE_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性を削除します。

DROP_DADプロシージャ

DADを削除します。

GET_ALL_DAD_ATTRIBUTESプロシージャ

DADのすべての属性を取得します。

GET_ALL_DAD_MAPPINGSプロシージャ

指定したDADがマップされる仮想パスをすべて取得します。

GET_ALL_GLOBAL_ATTRIBUTESプロシージャ

すべてのグローバル属性およびグローバル値を取得します。

GET_DAD_ATTRIBUTEファンクション

DAD属性の値を取得します。

GET_DAD_LISTプロシージャ

埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。

GET_GLOBAL_ATTRIBUTEファンクション

グローバル属性の値を取得します。

MAP_DADプロシージャ

指定した仮想パスにDADをマップします。

SET_DAD_ATTRIBUTEプロシージャ

DADの値を設定します。

SET_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性の値を設定します。

UNMAP_DADプロシージャ

指定した仮想パスからDADをマッピング解除します。

認証サブプログラム

認証サブプログラム・グループには、特定のデータベース・アクセス記述子(DAD)を使用した埋込みPL/SQLゲートウェイによって、データベース・ユーザーの権限の使用を認証および認証解除するためのサブプログラム・インタフェースが含まれています。

表65-3 認証サブプログラム・グループ

サブプログラム

説明

AUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。

DEAUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。

DBMS_EPGサブプログラムの要約

表65-4 DBMS_EPGパッケージのサブプログラム

サブプログラム

説明

AUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。

CREATE_DADプロシージャ

新規DADを作成します。

DEAUTHORIZE_DADプロシージャ

データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。

DELETE_DAD_ATTRIBUTEプロシージャ

DAD属性を削除します。

DELETE_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性を削除します。

DROP_DADプロシージャ

DADを削除します。

GET_ALL_DAD_ATTRIBUTESプロシージャ

DADのすべての属性を取得します。

GET_ALL_DAD_MAPPINGSプロシージャ

指定したDADがマップされる仮想パスをすべて取得します。

GET_ALL_GLOBAL_ATTRIBUTESプロシージャ

すべてのグローバル属性およびグローバル値を取得します。

GET_DAD_ATTRIBUTEファンクション

DAD属性の値を取得します。

GET_DAD_LISTプロシージャ

埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。

GET_GLOBAL_ATTRIBUTEファンクション

グローバル属性の値を取得します。

MAP_DADプロシージャ

指定した仮想パスにDADをマップします。

SET_DAD_ATTRIBUTEプロシージャ

DADの値を設定します。

SET_GLOBAL_ATTRIBUTEプロシージャ

グローバル属性の値を設定します。

UNMAP_DADプロシージャ

指定した仮想パスからDADをマッピング解除します。

AUTHORIZE_DADプロシージャ

このプロシージャは、データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証します。実行者は、常に自身の権限の使用を認証することができます。

関連項目:
このグループの他のサブプログラムについては、「認証サブプログラム」を参照してください。

構文

DBMS_EPG.AUTHORIZE_DAD (
dad_name  IN  VARCHAR2,
path     IN  VARCHAR2 DEFAULT NULL);

パラメータ

表65-5 AUTHORIZE_DADプロシージャのパラメータ

パラメータ

説明

dad_name

作成するDADの名前。

user

権限を認証解除するユーザー。使用した場合は、実行者と想定されます。

使用上の注意

- 他のユーザーの権限の使用を認証するには、ALTER USERシステム権限が必要です。

- DADは存在する必要がありますが、DADのdatabase-username属性を、認証するユーザーに設定する必要はありません。

- 複数のユーザーが同一のDADを認証することができます。使用するユーザーの権限は、DADのdatabase-username設定によって決まります。

例外

DADまたはユーザーが存在しない場合、あるいは実行者が必要なシステム権限を持っていない場合は、エラーが発生します。

例

DBMS_EPG.AUTHORIZE_DAD('HR');

CREATE_DADプロシージャ

このプロシージャは、新規DADを作成します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.CREATE_DAD (
dad_name  IN  VARCHAR2,
path      IN  VARCHAR2 DEFAULT NULL);

パラメータ

表65-6 CREATE_DADプロシージャのパラメータ

パラメータ

説明

dad_name

作成するDADの名前。

path

DADをマップする仮想パス。

DEAUTHORIZE_DADプロシージャ

このプロシージャは、データベース・ユーザーの権限を使用してプロシージャを起動し、ドキュメント表にアクセスするためのDADを認証解除します。実行者は、常に自身の権限の使用を認証解除することができます。

関連項目:
このグループの他のサブプログラムについては、「認証サブプログラム」を参照してください。

構文

DBMS_EPG.DEAUTHORIZE_DAD (
dad_name  IN  VARCHAR2,
path      IN  VARCHAR2 DEFAULT NULL);

パラメータ

表65-7 DEAUTHORIZE_DADプロシージャのパラメータ

パラメータ

説明

dad_name

使用を認証解除するDADの名前。

user

権限を認証解除するユーザー。使用した場合は、実行者と想定されます。

使用上の注意

他のユーザーの権限の使用を認証解除するには、ALTER USERシステム権限が必要です。

例外

DADまたはユーザーが存在しない場合、あるいは実行者が必要なシステム権限を持っていない場合は、エラーが発生します。

例

DBMS_EPG.DEAUTHORIZE_DAD('HR');

DELETE_DAD_ATTRIBUTEプロシージャ

このプロシージャは、DAD属性を削除します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.DELETE_DAD_ATTRIBUTE (
dad_name      IN  VARCHAR2,
attr_name     IN  VARCHAR2);

パラメータ

表65-8 DELETE_DAD_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

dad_name

DAD属性を削除するDADの名前。

attr_name

削除するDAD属性の名前。

例外

DADが存在しない場合は、エラーが発生します。

DELETE_GLOBAL_ATTRIBUTEプロシージャ

このプロシージャは、グローバル属性を削除します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.DELETE_GLOBAL_ATTRIBUTE (
attr_name     IN  VARCHAR2);

パラメータ

表65-9 DELETE_GLOBAL_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

attr_name

削除するグローバル属性。

DROP_DADプロシージャ

このプロシージャは、DADを削除します。DADのすべての仮想パス・マッピングも削除されます。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.DROP_DAD (
dadname  IN  VARCHAR2);

パラメータ

表65-10 DROP_DADプロシージャのパラメータ

パラメータ

説明

dad_name

削除するDAD。

例外

DADが存在しない場合は、エラーが発生します。

GET_ALL_DAD_ATTRIBUTESプロシージャ

このプロシージャは、DADのすべての属性を取得します。名前/値ペア形式の、相関関係にある2つの索引付き表が出力されます。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_ALL_DAD_ATTRIBUTES (
dad_name      IN          VARCHAR2,
attr_names    OUT NOCOPY  VARCHAR2_TABLE,
attr_values   OUT NOCOPY  VARCHAR2_TABLE);

パラメータ

表65-11 GET_ALL_DAD_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

dad_names

DADの名前。

attr_names

属性名。

attr_values

属性値。

例外

DADが存在しない場合は、エラーが発生します。

使用上の注意

DADに属性が設定されていない場合、attr_namesおよびattr_valuesは、空の配列に設定されます。

GET_ALL_DAD_MAPPINGSプロシージャ

このプロシージャは、指定したDADがマップされる仮想パスをすべて取得します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_ALL_DAD_MAPPINGS (
dad_name      IN          VARCHAR2,
paths         OUT NOCOPY  VARCHAR2_TABLE);

パラメータ

表65-12 GET_ALL_DAD_MAPPINGSプロシージャのパラメータ

パラメータ

説明

dad_names

DADの名前。

paths

DADがマッピングされる仮想パス。

例外

DADが存在しない場合は、エラーが発生します。

使用上の注意

DADが仮想パスにマップされていない場合、pathsは、空の配列に設定されます。

GET_ALL_GLOBAL_ATTRIBUTESプロシージャ

このプロシージャは、すべてのグローバル属性およびグローバル値を取得します。名前/値ペア形式の、相関関係にある2つの索引付き表が出力されます。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_ALL_GLOBAL_ATTRIBUTES (
attr_names     OUT   NOCOPY  VARCHAR2_TABLE,
attr_values    OUT   NOCOPY  VARCHAR2_TABLE);

パラメータ

表65-13 GET_ALL_GLOBAL_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

attr_names

グローバル属性の名前。

attr_values

グローバル属性の値。

使用上の注意

ゲートウェイ・インスタンスにグローバル属性が設定されていない場合、attr_namesおよびattr_valuesは、空の配列に設定されます。

GET_DAD_ATTRIBUTEファンクション

このプロシージャは、DAD属性の値を取得します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_DAD_ATTRIBUTE (
dad_name     IN  VARCHAR2,
attr_name    IN  VARCHAR2)
RETURN VARCHAR2;

パラメータ

表65-14 GET_DAD_ATTRIBUTEファンクションのパラメータ

パラメータ

説明

dad_name

属性を削除するDADの名前。

attr_name

削除する属性の名前。

戻り値

DADの属性値を戻します。属性が不明か、または設定されていない場合は、NULLを戻します。

例外

DADが存在しない場合は、エラーが発生します。

GET_DAD_LISTプロシージャ

このプロシージャは、埋込みゲートウェイ・インスタンス用のすべてのDADのリストを取得します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_DAD_LIST (
dad_names     OUT NOCOPY  VARCHAR2_TABLE);

パラメータ

表65-15 GET_DAD_LISTプロシージャのパラメータ

パラメータ

説明

dad_names

すべてのDADのリスト。

使用上の注意

DADが存在しない場合、dad_namesは空の配列に設定されます。

GET_GLOBAL_ATTRIBUTEファンクション

このファンクションは、グローバル属性の値を取得します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.GET_GLOBAL_ATTRIBUTE (
attr_name  IN  VARCHAR2)
RETURN VARCHAR2;

パラメータ

表65-16 GET_GLOBAL_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

attr_name

取得するグローバル属性。

戻り値

グローバル属性の値を戻します。属性が設定されていないか、または有効な属性でない場合は、NULLを戻します。

MAP_DADプロシージャ

このプロシージャは、指定した仮想パスにDADをマップします。仮想パスがすでに存在する場合、元の仮想パス・マッピングは上書きされます。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.MAP_DAD (
dad_name  IN  VARCHAR2,
path      IN  VARCHAR2);

パラメータ

表65-17 MAP_DADプロシージャのパラメータ

パラメータ

説明

dad_name

マップするDADの名前。

path

マップする仮想パス。

例外

DADが存在しない場合は、エラーが発生します。

SET_DAD_ATTRIBUTEプロシージャ

このプロシージャは、DADの値を設定します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.SET_DAD_ATTRIBUTE (
dad_name    IN  VARCHAR2,
attr_name   IN  VARCHAR2,   attr_value  IN  VARCHAR2);

パラメータ

表65-18 SET_DAD_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

dad_name

属性を設定するDADの名前。

attr_name

設定する属性の名前。

attr_value

設定する属性値。

表65-19 mod_plsql DAD属性と埋込みPL/SQLゲートウェイDAD属性間のマッピング

mod_plsql DAD属性

埋込みPL/SQLゲートウェイDAD属性

複数回の出現を許可

有効な値

PlsqlAfterProcedure

after-procedure

いいえ

文字列

PlsqlAlwaysDescribeProcedure

always-describe-procedure

いいえ

On、Offの列挙

PlsqlAuthenticationMode

authentication-mode

いいえ

Basic、SingleSignOn、GlobalOwa、CustomOwa、PerPackageOwaの列挙

PlsqlBeforeProcedure

before-procedure

いいえ

文字列

PlsqlBindBucketLengths

bind-bucket-lengths

はい

符号なしの整数

PlsqlBindBucketWidths

bind-bucket-widths

はい

符号なしの整数

PlsqlCGIEnvironmentList

cgi-environment-list

はい

文字列

PlsqlCompatibilityMode

compatibility-mode

いいえ

符号なしの整数

PlsqlDatabaseUsername

database-username

いいえ

文字列

PlsqlDefaultPage

default-page

いいえ

文字列

PlsqlDocumentPath

document-path

いいえ

文字列

PlsqlDocumentProcedure

document-procedure

いいえ

文字列

PlsqlDocumentTablename

document-table-name

いいえ

文字列

PlsqlErrorStyle

error-style

いいえ

ApacheStyle、ModplsqlStyle、DebugStyleの列挙

PlsqlExclusionList

exclusion-list

はい

文字列

PlsqlFetchBufferSize

fetch-buffer-size

いいえ

符号なしの整数

PlsqlInfoLogging

info-logging

いいえ

InfoDebugの列挙

PlsqlOWADebugEnable

owa-debug-enable

いいえ

On、Offの列挙

PlsqlMaxRequestsPerSession

max-requests-per-session

いいえ

符号なしの整数

PlsqlNLSLanguage

nls-language

いいえ

文字列

PlsqlPathAlias

path-alias

いいえ

文字列

PlsqlPathAliasProcedure

path-alias-procedure

いいえ

文字列

PlsqlRequestValidationFunction

request-validation-function

いいえ

文字列

PlsqlSessionCookieName

session-cookie-name

いいえ

文字列

PlsqlSessionStateManagement

session-state-management

いいえ

StatelessWithResetPackageState、StatelessWithFastRestPackageState、StatelessWithPreservePackageStateの列挙

PlsqlTransferMode

transfer-mode

いいえ

CHAR、RAWの列挙

PlsqlUploadAsLongRaw

upload-as-long-raw

いいえ

文字列

例外

DADが存在しないか、または属性が不明の場合は、エラーが発生します。

使用上の注意

- 以前にattr_name属性が設定されている場合、元の値は新しいattr_value引数によって上書きされます。

- 埋込みゲートウェイでは、属性が設定されていない場合、デフォルト値が想定されます。DAD属性のデフォルト値は、埋込みゲートウェイのほとんどのユーザーにとって十分な値である必要があります。mod_plsqlユーザーは、次のことに注意してください。

- PlsqlDatabasePassword属性は必要ありません。

- 埋込みゲートウェイは外部データベースへのログオンをサポートしていないため、PlsqlDatabaseConnectString属性は必要ありません。

例

DBMS_EPG.SET_DAD_ATTRIBUTE('HR', 'default-page', 'HRApp.home');

SET_GLOBAL_ATTRIBUTEプロシージャ

このプロシージャは、グローバル属性の値を設定します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.SET_GLOBAL_ATTRIBUTE (
attr_name    IN VARCHAR2,
attr_value   IN VARCHAR2);

パラメータ

表65-20 SET_GLOBAL_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

attr_name

設定するグローバル属性。

attr_value

設定する属性値。

表65-21 mod_plsqlグローバル属性と埋込みPL/SQLゲートウェイ・グローバル属性間のマッピング

mod_plsqlグローバル属性

埋込みPL/SQLゲートウェイ・グローバル属性

複数回の出現を許可

有効な値

PlsqlLogLevel

log-level

いいえ

符号なしの整数

PlsqlMaxParameters

max-parameters

いいえ

符号なしの整数

使用上の注意

- 属性名では、大/小文字が区別されます。値は、属性によって、大/小文字が区別される場合とされない場合があります。

- 以前にattr_name属性が設定されている場合、元の値は新しいattr_value引数によって上書きされます。

例外

属性が不明な場合は、エラーが発生します。

例

dbms_epg.set_global_attribute('max-parameters', '100');

UNMAP_DADプロシージャ

このプロシージャは、指定した仮想パスからDADをマッピング解除します。パスがNULLの場合、このプロシージャは、DADのすべての仮想パス・マッピングを削除しますが、DADは保存します。

関連項目:
このグループの他のサブプログラムについては、「構成サブプログラム」を参照してください。

構文

DBMS_EPG.UNMAP_DAD (
dad_name IN VARCHAR2,
path     IN VARCHAR2 DEFAULT NULL);

パラメータ

表65-22 UNMAP_DADプロシージャのパラメータ

パラメータ

説明

dad_name

マッピング解除するDADの名前。

path

マッピング解除する仮想パス。

使用上の注意

DADが存在しない場合は、エラーが発生します。

66 DBMS_ERRLOG

DBMS_ERRLOGパッケージは、エラーの発生時に中断やロールバックではなく、DML操作を続行できるようにエラー・ロギング表を作成するプロシージャを提供します。これによって、時間およびシステム・リソースを節約できます。

関連項目:
DBMS_ERRLOGの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を、error_logging_clause構文については、『Oracle Database SQL言語リファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_ERRLOGの使用方法

- セキュリティ・モデル

- DBMS_ERRLOGサブプログラムの要約

DBMS_ERRLOGの使用方法

この項では、DBMS_ERRLOGパッケージの使用に関連する項目について説明します。

- セキュリティ・モデル

セキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE権限を付与することで制御できます。EXECUTE権限は、パブリックに付与されます。ただし、エラー・ロギング表を作成するには、元表またはビューへのSELECTアクセス権、CREATE TABLE権限および目的の表領域に対する表領域割当て容量が必要です。

DBMS_ERRLOGサブプログラムの要約

表66-1 DBMS_ERRLOGパッケージのサブプログラム

サブプログラム

説明

CREATE_ERROR_LOGプロシージャ

DMLエラー・ロギングで使用するエラー・ロギング表を作成します。

CREATE_ERROR_LOGプロシージャ

このプロシージャは、DMLエラー・ロギング機能の使用に必要なエラー・ロギング表を作成します。

LONG、CLOB、BLOB、BFILEおよびADTデータ・タイプは、この列ではサポートされていません。

構文

DBMS_ERRLOG.CREATE_ERROR_LOG (
dml_table_name            IN VARCHAR2,
err_log_table_name        IN VARCHAR2 := NULL,
err_log_table_owner       IN VARCHAR2 := NULL,
err_log_table_space       IN VARCHAR2 := NULL,
skip_unsupported          IN BOOLEAN := FALSE);

パラメータ

表66-2 CREATE_ERROR_LOGプロシージャのパラメータ

パラメータ

説明

dml_table_name

エラー・ロギング表の元表となるDML表の名前。完全修飾名(emp、scott.emp、"EMP"、"SCOTT"."EMP"など)を指定できます。名前の構成要素が二重引用符で囲まれている場合は、大文字に変換されません。

err_log_table_name

作成するエラー・ロギング表の名前。

デフォルトでは、DML表の名前の最初の25文字に、'ERR$_'という接頭辞が付加されます。次に、例を示します。

dml_table_name: 'EMP', err_log_table_name: 'ERR$_EMP'

dml_table_name: '"Emp2"', err_log_table_name: 'ERR$_Emp2'

err_log_table_owner

エラー・ロギング表の所有者の名前。dml_table_nameに所有者を指定できます。そうしない場合は、現在接続しているユーザーのスキーマが使用されます。

err_log_table_space

エラー・ロギング表が作成される領域。指定しない場合は、DMLエラー・ロギング表を所有しているユーザーのデフォルトの表領域が使用されます。

skip_unsupported

TRUEに設定すると、エラー・ロギングでサポートされていない列のタイプはスキップされエラー・ロギング表に追加されません。

FALSEに設定すると、サポートされていない列のタイプがあった場合、プロシージャは終了します。

デフォルトはFALSEです。

例

まず、デフォルトの名前の生成を使用して、SHスキーマにchannels表のエラー・ロギング表を作成します。

次に、channels表のすべての列を確認します。

SQL> DESC channels
Name                                   Null?       Type
---------------------------            -------     -----
CHANNEL_ID                             NOT NULL    CHAR(1)
CHANNEL_DESC                           NOT NULL    VARCHAR2(20)
CHANNEL_CLASS                                      VARCHAR2(20)

最後に、生成されたエラー・ロギング表のすべての列を確認します。このパッケージによって作成される必須の制御列に注意してください。

SQL> DESC ERR$_CHANNELS
Name                              Null?    Type
-----------------                 ----     ----ORA_ERR_NUMBER$                            NUMBER
ORA_ERR_MESG$                              VARCHAR2(2000)
ORA_ERR_ROWID$                             ROWID
ORA_ERR_OPTYP$                             VARCHAR2(2)
ORA_ERR_TAG$                               VARCHAR2(2000)
CHANNEL_ID                                 VARCHAR2(4000)
CHANNEL_DESC                               VARCHAR2(4000)
CHANNEL_CLASS                              VARCHAR2(4000)

制御列の詳細は、『Oracle Database管理者ガイド』を参照してください。

67 DBMS_FGA

DBMS_FGAパッケージは、ファイングレイン・セキュリティ機能を提供します。

この章では、次の項目について説明します。

- DBMS_FGAの使用方法

- セキュリティ・モデル

- 使用上の注意

- DBMS_FGAサブプログラムの要約

DBMS_FGAの使用方法

- セキュリティ・モデル

- 使用上の注意

セキュリティ・モデル

監査ポリシーを管理するには、AUDIT_ADMINロールとDBMS_FGAパッケージに対するEXECUTE権限が必要です。監査機能はユーザー環境およびアプリケーション・コンテキスト値をすべて獲得できるため、ポリシーを管理できるのは権限を付与されたユーザーに限定されます。ポリシーのイベント・ハンドラ・モジュールは、モジュールの所有者の権限で実行されます。

使用上の注意

このパッケージは、コストベースの最適化にのみ使用できます。ルールベースのオプティマイザでは、行のフィルタの前に監査の監視が発生する可能性があるため、不要な監査レコードが生成される場合があります。ルールベースのオプティマイザおよびコストベースのオプティマイザのどちらの場合でも、UNIFIED_AUDIT_TRAILビューのSQL_TEXT列とSQL_BINDS列を問い合せて、SQLテキストおよび対応して発行されるバインド変数を分析できます。

DBMS_FGAサブプログラムの要約

表67-1 DBMS_FGAパッケージのサブプログラム

サブプログラム

説明

ADD_POLICYプロシージャ

監査条件として提供された述語を使用して、監査方針を作成します。

DISABLE_POLICYプロシージャ

監査方針を無効化します。

DROP_POLICYプロシージャ

監査方針を削除します。

ENABLE_POLICYプロシージャ

監査方針を有効化します。

ADD_POLICYプロシージャ

このプロシージャは、監査条件として提供された述語を使用して、監査方針を作成します。

構文

DBMS_FGA.ADD_POLICY(
object_schema      IN  VARCHAR2 DEFAULT NULL,
object_name        IN  VARCHAR2,
policy_name        IN  VARCHAR2,
audit_condition    IN  VARCHAR2 DEFAULT NULL,
audit_column       IN  VARCHAR2 DEFAULT NULL,
handler_schema     IN  VARCHAR2 DEFAULT NULL,
handler_module     IN  VARCHAR2 DEFAULT NULL,
enable             IN  BOOLEAN DEFAULT TRUE,
statement_types    IN  VARCHAR2 DEFAULT SELECT,
audit_trail        IN  BINARY_INTEGER DEFAULT NULL,
audit_column_opts  IN  BINARY_INTEGER DEFAULT ANY_COLUMNS,
policy_owner       IN  VARCHAR2 DEFAULT NULL);

パラメータ

表67-2 ADD_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

監査するオブジェクトのスキーマ。NULLの場合、現行のログオン・ユーザーのスキーマと想定されます。

object_name

監査するオブジェクトの名前。

policy_name

ポリシーの一意の名前。

audit_condition

監視条件を示す行の条件。NULLも指定できます(TRUEとして機能します)。

audit_column

アクセスのチェックを行う列。OLS非表示列やオブジェクト・タイプ列なども含まれます。デフォルトのNULLの場合、アクセスまたは影響を受ける列があれば監査が行われます。

handler_schema

イベント・ハンドラを含むスキーマ。デフォルトのNULLの場合、現在のスキーマが使用されます。

handler_module

イベント・ハンドラのファンクション名で、必要に応じてパッケージ名を含みます。このファンクションは、問合せの監査条件と一致する最初の行が処理された後でのみ実行されます。例外が発生してプロシージャが異常終了すると、ユーザーのSQL文も異常終了します。

enable

TRUE(デフォルト)の場合、ポリシーを有効化します。

statement_types

このポリシーを適用できるSQL文タイプ(INSERT、UPDATE、DELETEまたはSELECTのみ)。

audit_trail

統合監査にまだ移行していない環境の場合、ファイングレイン監査レコードの宛先(DBまたはXML)。また、FGA_LOG$システム表のLSQLTEXT列およびLSQLBIND列にデータを移入するかどうかを指定します。

audit_column_opts

audit_columnパラメータに指定されたいずれかの列が問合せで参照された場合、またはそれらのすべての列が参照された場合にのみ、文を監査するかどうかを指定します。

policy_owner

ファイングレイン監査ポリシーを所有するユーザー。ただし、この設定はユーザー指定の引数ではありません。Oracle Data Pumpクライアントは、この設定を内部的に使用して、きめ細かな監査ポリシーを適宜再作成します。

使用上の注意

- 表またはビューには、最大256個のファイングレイン監査ポリシーを適用できます。

- object_schemaが指定されていない場合は、現行のログオン・ユーザーのスキーマと想定されます。

- FGAポリシーは、LOB列などの行外の列には適用しないでください。

- 各監査方針は、問合せに対し個別に適用されます。ただし、そのポリシーのaudit_conditionを満たし、戻される行の数に関係なく、ポリシーごとに生成される監査レコードは多くても1つです。つまり、戻される行のうちの何行が表で定義された監査条件を満たしているかに関係なく、それらの各ポリシーに対し、監査レコードは1つだけ生成されます。

- FGAポリシーが定義された表で、ファスト・パス・インサートまたはベクトル化された更新を受け取ると、それらの操作の前にこのヒントは自動的に無効になります。ヒントを無効にすると、ポリシーの条件に従って監査が行われます。(ファスト・パス・インサートの1つの例は、文INSERT-WITH-APPEND-hintです。)

- audit_conditionは、挿入、更新または削除される行の値を使用して評価できるブール式でなければなりません。この式では、ファンクション(USERファンクション、SYS_CONTEXTファンクションなど)も使用できます。
この式では、演算子(AND、ORなど)を使用して条件を組み合せないでください。audit_conditionにはNULLを指定(または指定を省略)できます。これはTRUEとして解釈されますが、次の要素を含めることはできません。

- 副問合せまたは順序。

- SYS_CONTEXTファンクションを使用してアクセスした場合は、USERENVネームスペースの次の属性:

- CURRENT_SQL

- CURRENT_SQL_LENGTH

- CURRENT_BIND

- 疑似列LEVEL、PRIORまたはROWNUMの使用。

指定した列("audit_column")に影響を与える指定したすべての文("statement_types")の監査を実行するために、"1=1"の監査条件を指定する必要はなくなりました。audit_conditionにNULL値を指定することで、処理された行がなくても監査が行われるため、このポリシーが定義された表に対するすべての処理が監査されます。

- audit_conditionは、このポリシーを作成したユーザーの権限を使用して評価されます。

- audit_condition設定の場合、同じ実表でauditable文を実行するため、ファンクションをaudit_condition設定に含めないでください。たとえば、HR.EMPLOYEES表に対してINSERT文を実行するファンクションを作成するとします。ポリシーのaudit_conditionには、このファンクションが含まれていて、これは(statement_typesパラメータにより設定される)INSERT文のポリシーです。このポリシーが使用されると、ファンクションはシステムのメモリーが足りなくなるまで再帰的に実行します。これにより、ORA-1000: 最大オープン・カーソル数を超えました。またはORA-00036: 再帰的SQLレベルの最大値(50)を超えましたのエラーが発生する場合があります。

- DBMS_FGA.ENABLE_POLICY文またはDBMS_FGA.DISABLE_POLICY文を、条件に含まれるポリシーのファンクションから発行しないでください。

- 監査ファンクション(handler_module)は、管理者用のアラート・メカニズムです。このファンクションに必要なインタフェースは、次のとおりです。

PROCEDURE fname ( object_schema VARCHAR2, object_name VARCHAR2, policy_name VARCHAR2 )  AS ...

ここで、fnameはプロシージャの名前、object_schemaは監査対象の表のスキーマの名前、object_nameは監査対象の表の名前、policy_nameは施行するポリシーの名前を表しています。監査ファンクションは、このファンクションの所有者の権限で実行されます。

- 統合監査に移行した場合、監査レコードは統合監査証跡に自動的に書き込まれるため、audit_trailパラメータを省略します。

- クレジット・カード情報などの機密データもクリアテキストで記録できることに注意してください。

- audit_trailパラメータを使用する場合は、このパラメータにファイングレイン監査証跡の書込み場所、および問合せのSQL TextおよびSQL Bind変数情報を(通常、LSQLTEXTおよびLSQLBINDという名前の列内に)含めるかどうかを指定します。

- audit_trailにXMLが含まれている場合、ファイングレイン監査レコードは、SQL内のAUDIT_FILE_DEST文によって指定されたディレクトリに格納されているXML形式のオペレーティング・システム・ファイルに書き込まれます。(デフォルトのAUDIT_FILE_DESTは、UNIX-based systemsでは$ORACLE_BASE/admin/$DB_UNIQUE_NAME/adump、Windows systemsでは$ORACLE_BASE\admin\$DB_UNIQUE_NAME\adumpです。)

- audit_trailにDBが含まれている場合、監査レコードはデータベース内のSYS.FGA_LOG$表に書き込まれます。ただし、読取り専用データベースの場合は、audit_trail設定に関係なく、Oracle Databaseによってファイングレイン監査レコードがXMLファイルに書き込まれます。

- audit_trailにEXTENDEDが含まれている場合、監査証跡には、問合せのSQL TextおよびSQL Bind変数情報が含まれます。

- 次に例を示します。

- audit_trailをDBMS_FGA.DBに設定すると、監査証跡は、データベース内のSYS.FGA_LOG$表に送信され、SQL TextおよびSQL Bindは省略されます。

- audit_trailをDBMS_FGA.DB + DBMS_FGA.EXTENDEDに設定すると、監査証跡は、データベース内のSYS.FGA_LOG$表に送信され、SQL TextおよびSQL Bindが含まれます。

- audit_trailをDBMS_FGA.XMLに設定すると、監査証跡は、オペレーティング・システムに送信されるXMLファイルに書き込まれ、SQL TextおよびSQL Bindは省略されます。

- audit_trailをDBMS_FGA.XML + DBMS_FGA.EXTENDEDに設定すると、監査証跡は、オペレーティング・システムに送信されるXMLファイルに書き込まれ、SQL TextおよびSQL Bindが含まれます。

audit_trailパラメータは、ALL_AUDIT_POLICIESビューに表示されます。

- 次のコマンドを使用すると、オペレーティング・システムの接続先を変更できます。

ALTER SYSTEM SET AUDIT_FILE_DEST =  New Directory DEFERRED

- XML監査ファイルは、多くのプラットフォームでprocess_name_processId.xmlという形式の名前(ora_2111.xmlなど)になります。または、Windowsでは、XML監査ファイルはprocess_name_ThreadId.xmlという形式の名前(または、プロセスがスレッドとして実行されていない場合はprocess_name_ProcessId.xml)になります。

- audit_column_optsパラメータには、次の場合に文を監査するかどうかを指定します。

- audit_columnパラメータに指定されているいずれかの列を問合せで参照する場合(audit_column_opts = DBMS_FGA.ANY_COLUMNS)、または

- 指定されているすべての列が参照された場合(audit_column_opts = DBMS_FGA.ALL_COLUMNS)のみ

デフォルトはDBMS_FGA.ANY_COLUMNSです。

ALL_AUDIT_POLICIESビューにもaudit_column_optsが表示されます。

- audit_column_optsをDBMS_FGA.ALL_COLUMNSに設定すると、audit_column内のすべての列が文内で明示的に参照されている場合にのみSQL文が監査されます。これらの列は、同じSQL文内またはsub-select内で参照する必要があります。
これらのすべての列は、単一表、単一ビューまたは別名を参照する必要があります。

様々な表の別名から複数の列を選択するSQL文は監査されません。

- すべてのXML監査レコードには、AUDIT_TYPE要素およびEXTENDED_TIMESTAMP要素が含まれていて、EXTENDED_TIMESTAMP要素はUTCゾーン(タイムゾーン情報なし)で出力されます。V$XML_AUDIT_TRAILビューを使用して取得された値は、セッション・タイムゾーンに変換されて出力されます。

- SQL_TEXTおよびSQL_BIND要素の値(CLOBタイプの列)は、動的ビューには最初の4000文字のみ表示されます。SQL_TEXTおよびSQL_BIND要素の値は、元のXMLファイルでは4000文字を超えている場合があります。

- SQL*Loaderなどのツールを使用して大量のXML監査ファイルをデータベース表にロードする場合は、V$XML_AUDIT_TRAILを問い合せると高速に処理できます。XML監査ファイルは、AUDIT_TRAIL=OSの場合にOSファイルに記述される同等のファイルより大きくなります。

- エラー処理は、AUDIT_TRAIL=OSの場合と同様です。ディスクへの監査レコードの書込み中にエラーが発生した場合(AUDIT_FILE_DESTによって指定されたディレクトリに空きがない場合など)、監査操作は失敗します。アラート・メッセージがロギングされます。

- ポリシーのイベント・ハンドラ・モジュールは、モジュールの所有者の権限で実行されます。

- 再帰的ファイングレイン監査ハンドラを作成しないでください。たとえば、HR.EMPLOYEES表に対してINSERT文を実行するハンドラを作成するとします。このハンドラに関連付けられるポリシーは、(statement_typesパラメータにより設定される)INSERT文のポリシーです。このポリシーが使用されると、ハンドラはシステムのメモリーが足りなくなるまで再帰的に実行します。これにより、ORA-1000: 最大オープン・カーソル数を超えました。またはORA-00036: 再帰的SQLレベルの最大値(50)を超えましたのエラーが発生する場合があります。ファイングレイン監査ポリシーの作成について、Oracle Databaseセキュリティ・ガイドも参照してください。

- audit_trailパラメータに値(XMLおよびXML+EXTENDED)を設定すると、ファイングレイン監査レコードがXML形式でオペレーティング・システムに書き込まれます。動的ビューV$XML_AUDIT_TRAILでは、DBAがSQL問合せを介して監査レコードをXMLファイルから使用できるようになり、使いやすくなりました。このビューを問い合せると、AUDIT_FILE_DESTディレクトリ内のすべてのXMLファイル(.xml拡張子を持つすべてのファイル)の解析およびリレーショナル表フォーマットでの表示が実行されます。
オペレーティング・システム・ファイルに格納されている監査レコードは、アクセスの際にDBAが所有していないファイル・アクセス権が必要な場合があるため、データベースに格納されている監査レコードよりも安全性が高くなります。また、オペレーティング・システムに格納されている監査レコードは、データベースが一時的にアクセスできなくなった場合でも使用できるため、より高い可用性を提供します。

DBA_COMMON_AUDIT_TRAILビューには、標準監査レコードおよびファイングレイン監査レコードのV$XML_AUDIT_TRAIL動的ビューの内容が含まれています。

V$XML_AUDIT_TRAILビューにデータが移入されるのは、統合監査が無効な場合のみです。統合監査を有効にした場合は、監査証跡レコードのUNIFIED_AUDIT_TRAILデータ・ディクショナリ・ビューを問い合せることができます。

関連項目:
ファイングレイン監査ポリシーに電子メール・アラート・ハンドラを作成する例は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

例

DBMS_FGA.ADD_POLICY (
object_schema      =>  'scott',
object_name        =>  'emp',
policy_name        =>  'mypolicy1',
audit_condition    =>  'sal < 100',
audit_column       =>  'comm,sal',
handler_schema     =>   NULL,
handler_module     =>   NULL,
enable             =>   TRUE,
statement_types    =>  'INSERT, UPDATE',
audit_column_opts  =>   DBMS_FGA.ANY_COLUMNS,
policy_owner       =>  'sec_admin);

DISABLE_POLICYプロシージャ

このプロシージャは、監査方針を無効化します。

構文

DBMS_FGA.DISABLE_POLICY(
object_schema  IN  VARCHAR2,
object_name    IN  VARCHAR2,
policy_name    IN  VARCHAR2);

パラメータ

表67-3 DISABLE_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

監査するオブジェクトのスキーマ。NULLの場合、現行のログオン・ユーザーのスキーマと想定されます。

object_name

監査するオブジェクトの名前。

policy_name

ポリシーの一意の名前。

object_schemaのデフォルト値はNULLです。(NULLの場合、現行のログオン・ユーザーのスキーマと想定されます。)

例

DBMS_FGA.DISABLE_POLICY (
object_schema   =>  'scott',
object_name     =>  'emp',
policy_name     =>  'mypolicy1');

DROP_POLICYプロシージャ

このプロシージャは、監査方針を削除します。

構文

DBMS_FGA.DROP_POLICY(
object_schema  IN  VARCHAR2,
object_name    IN  VARCHAR2,
policy_name    IN  VARCHAR2);

パラメータ

表67-4 DROP_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

監査するオブジェクトのスキーマ。NULLの場合、現行のログオン・ユーザーのスキーマと想定されます。

object_name

監査するオブジェクトの名前。

policy_name

ポリシーの一意の名前。

使用上の注意

DBMS_FGAプロシージャは、現行のDMLトランザクションがある場合、それらがDDLイベント・トリガーの内部にないかぎり、操作前にコミットします。DDLトランザクションでは、DBMS_FGAプロシージャはDDLトランザクションの一部となります。object_schemaのデフォルト値はNULLです。(NULLの場合、現行のログオン・ユーザーのスキーマと想定されます。)

注意:
DBMS_FGA.ADD_POLICYプロシージャのobject_nameパラメータで指定されたオブジェクトを削除した場合、または監査ポリシーを作成したユーザーを削除した場合は、Oracle Databaseでは監査ポリシーが自動的に削除されます。

例

DBMS_FGA.DROP_POLICY (
object_schema   =>  'scott',
object_name     =>  'emp',
policy_name     =>  'mypolicy1');

ENABLE_POLICYプロシージャ

このプロシージャは、監査方針を有効化します。

構文

DBMS_FGA.ENABLE_POLICY(
object_schema  IN  VARCHAR2,
object_name    IN  VARCHAR2,
policy_name    IN  VARCHAR2,
enable         IN  BOOLEAN);

パラメータ

表67-5 ENABLE_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

監査するオブジェクトのスキーマ。NULLの場合、現行のログオン・ユーザーのスキーマと想定されます。

object_name

監査するオブジェクトの名前。

policy_name

ポリシーの一意の名前。

enable

TRUE(デフォルト)の場合、ポリシーを有効化します。

例

DBMS_FGA.ENABLE_POLICY (
object_schema    =>  'scott',
object_name      =>  'emp',
policy_name      =>  'mypolicy1',
enable           =>   TRUE);

68 DBMS_FILE_GROUP

DBMS_FILE_GROUPパッケージは、Oracle Streamsパッケージの1つで、ファイル・グループ、ファイル・グループのバージョンおよびファイルの管理をするための管理インタフェースを提供します。ファイル・グループ・リポジトリは、1つのデータベース内のすべてのファイル・グループのコレクションで、特定のファイル・グループの複数バージョンを含むことができます。このパッケージは、ファイル・グループ・リポジトリの作成および管理に使用できます。

この章では、次の項目について説明します。

- DBMS_FILE_GROUPの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例

- DBMS_FILE_GROUPサブプログラムの要約

DBMS_FILE_GROUPの使用方法

この項では、DBMS_FILE_GROUPパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

- 例

概要

DBMS_FILE_GROUPパッケージに関連する用語は、次のとおりです。

ファイル

ファイルは、ハードディスクに格納されているファイルを参照します。ファイル名、ディレクトリ・オブジェクトおよびファイル・タイプで構成されます。ディレクトリ・オブジェクトは、ファイルが格納されているハードディスク上のディレクトリを参照します。たとえば、ファイルには、次のコンポーネントが含まれている場合があります。

- ファイル名: expdat.dmp

- このファイルを含むディレクトリ・オブジェクト: db_files

- ファイル・タイプ: DBMS_FILE_GROUP.EXPORT_DUMP_FILE

バージョン

バージョンは、関連するファイルのコレクションです。たとえば、バージョンは、一連のデータ・ファイル、およびデータ・ポンプ・トランスポータブル表領域のエクスポートによって生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルで構成される場合があります。1つのバージョンに含めることができるデータ・ポンプ・エクスポート・ダンプ・ファイルは1つのみです。

ファイル・グループ

ファイル・グループは、バージョンのコレクションです。ファイル・グループでは、一連のバージョンを論理的にグループ化できます。たとえば、financial_quartersという名前のファイル・グループで、表領域セットに関連する複数バージョンのファイルを論理的にグループ化して、四半期ごとの財務データを追跡することができます。データを含む表領域を各四半期の終了時にエクスポートし、Q1FY04、Q2FY04などの名前でバージョン化することができます。

関連項目:
『Oracle Streams概要および管理』

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

定数

DBMS_FILE_GROUPパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります。たとえば、DBMS_FILE_GROUP.EXPORT_DUMP_FILEなどです。

表68-1に、パラメータおよび列挙定数の一覧を示します。

表68-1 DBMS_FILE_GROUPパラメータおよび列挙定数

パラメータ

オプション

タイプ

説明

file_type

new_file_type

- DATAFILE

- EXPORT_DUMP_FILE

- DATAPUMP_LOG_FILE

VARCHAR2(30)

DATAFILEは、データベース用のデータファイルです。この定数は、'DATAFILE'のように指定できます。

EXPORT_DUMP_FILEは、データ・ポンプ・エクスポート・ダンプ・ファイルです。この定数は、'DUMPSET'のように指定できます。

DATAPUMP_LOG_FILEは、データ・ポンプ・エクスポート・ログ・ファイルです。この定数は、'DATAPUMPLOG'のように指定できます。

max_versions

retention_days

- INFINITE

NUMBER

INFINITEは、制限を指定しません。max_versionsまたはretention_daysは、無制限に増やすことができます。

privilege

GRANT_SYSTEM_PRIVILEGEプロシージャで指定されるシステム権限は、次のとおりです。

- READ_ANY_FILE_GROUP

- MANAGE_ANY_FILE_GROUP

- MANAGE_FILE_GROUP

GRANT_OBJECT_PRIVILEGEプロシージャで指定されるオブジェクト権限は、次のとおりです。

- READ_ON_FILE_GROUP

- MANAGE_ON_FILE_GROUP

BINARY_INTEGER

READ_ANY_FILE_GROUPは、データ・ディクショナリの任意のスキーマ内の任意のファイルに関する情報を表示する権限を付与します。

MANAGE_ANY_FILE_GROUPは、任意のスキーマで任意のファイル・グループを作成、管理および削除する権限を付与します。

MANAGE_FILE_GROUPは、ユーザーのスキーマでファイル・グループを作成、管理および削除する権限を付与します。

READ_ON_FILE_GROUPは、データ・ディクショナリの特定のファイル・グループに関する情報を表示する権限を付与します。

MANAGE_ON_FILE_GROUPは、ユーザーのスキーマ以外のスキーマで特定のファイル・グループを管理する権限を付与します。

例

『Oracle Streams概要および管理』には、インターネットで書籍や音楽を販売するビジネスの例が記載されています。企業は、inst1.example.comデータベース内の売上データに関する週次レポートを実行し、これらのレポートをコンピュータ・ファイル・システムに2つのHTMLファイルで格納します。book_sales.htmファイルには、書籍の売上レポートが含まれ、music_sales.htmファイルには、音楽商品の売上レポートが含まれます。

企業は、これらの週次レポートを、inst2.example.comリモート・データベースのファイル・グループ・リポジトリに格納します。毎週、2つのレポートがinst1.example.comデータベースで生成され、inst2.example.comデータベースを実行するコンピュータ・システムに転送され、ファイル・グループ・バージョンとしてリポジトリに追加されます。ファイル・グループ・リポジトリには、週ごとのレポートを含むすべてのファイル・グループのバージョンが格納されます。

関連項目:
『Oracle Streams概要および管理』

DBMS_FILE_GROUPサブプログラムの要約

表68-2 DBMS_FILE_GROUPパッケージのサブプログラム

サブプログラム

説明

ADD_FILEプロシージャ

ファイル・グループのバージョンにファイルを追加します。

ALTER_FILEプロシージャ

ファイル・グループのバージョン内のファイルを変更します。

ALTER_FILE_GROUPプロシージャ

ファイル・グループを変更します。

ALTER_VERSIONプロシージャ

ファイル・グループのバージョンを変更します。

CREATE_FILE_GROUPプロシージャ

ファイル・グループを作成します。

CREATE_VERSIONプロシージャ

ファイル・グループのバージョンを作成します。

DROP_FILE_GROUPプロシージャ

ファイル・グループを削除します。

DROP_VERSIONプロシージャ

ファイル・グループのバージョンを削除します。

GRANT_OBJECT_PRIVILEGEプロシージャ

ファイル・グループに対するオブジェクト権限をユーザーに付与します。

GRANT_SYSTEM_PRIVILEGEプロシージャ

ファイル・グループ操作に対するシステム権限をユーザーに付与します。

PURGE_FILE_GROUPプロシージャ

ファイル・グループの保存方針を使用してファイル・グループをパージします。

REMOVE_FILEプロシージャ

ファイル・グループのバージョンからファイルを削除します。

REVOKE_OBJECT_PRIVILEGEプロシージャ

ファイル・グループに対するオブジェクト権限をユーザーから取り消します。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

ファイル・グループ操作に対するシステム権限をユーザーから取り消します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

ADD_FILEプロシージャ

このプロシージャは、ファイル・グループのバージョンにファイルを追加します。

関連項目:
『Oracle Streams概要および管理』のファイル・グループ・リポジトリにこのプロシージャを使用する例

構文

DBMS_FILE_GROUP.ADD_FILE(
file_group_name  IN  VARCHAR2,
file_name        IN  VARCHAR2,
file_type        IN  VARCHAR2  DEFAULT NULL,
file_directory   IN  VARCHAR2  DEFAULT NULL,
version_name     IN  VARCHAR2  DEFAULT NULL,
comments         IN  VARCHAR2  DEFAULT NULL);

パラメータ

表68-3 ADD_FILEプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、バージョンを含むファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

file_name

バージョンに追加するファイルの名前。ファイル名は、バージョン内で一意である必要があります。

file_type

ファイルのタイプ。予約済ファイル・タイプは、次のとおりです。

- ファイルがデータファイルの場合は、次のように入力します。

'DATAFILE'

- ファイルがデータ・ポンプ・エクスポート・ダンプ・ファイルの場合は、次のように入力します。

'DUMPSET'

データ・ポンプ・エクスポート・ダンプ・ファイルがインポートされると、データ・ポンプ・メタデータが移入されます。

- ファイルがデータ・ポンプ・エクスポート・ログ・ファイルの場合は、次のように入力します。

'DATAPUMPLOG'

ファイル・タイプが予約済ファイル・タイプでない場合は、ファイル・タイプをテキストで入力するか、またはファイル・タイプの説明を省略するためにNULLを指定します。

予約済ファイル・タイプの詳細は、「定数」を参照してください。

file_directory

ファイルを含むディレクトリに対応するディレクトリ・オブジェクトの名前。

NULLに設定すると、このプロシージャはバージョンのデフォルトのディレクトリ・オブジェクトを使用します。

NULLに設定すると、バージョンのデフォルトのディレクトリ・オブジェクトが存在しない場合、このプロシージャは、ファイル・グループのデフォルトのディレクトリ・オブジェクトを使用します。

バージョンおよびファイル・グループのいずれのデフォルトのディレクトリ・オブジェクトも存在しない場合にNULLに設定すると、エラーが発生します。

version_name

ファイルが追加されるバージョンの名前。

正の整数がVARCHAR2値として指定されている場合は、その整数がバージョン番号として解釈されます。たとえば、'1'が指定されている場合、ファイルは、ファイル・グループのバージョン1に追加されます。

NULLに設定すると、このプロシージャはファイル・グループの最新バージョンを使用します。

comments

追加するファイルに関するコメント。

使用上の注意

file_typeパラメータに対してDBMS_FILE_GROUP.EXPORT_DUMP_FILEまたは'DUMPSET'のいずれかを指定してこのプロシージャを実行するには、ユーザーが次の要件を満たしている必要があります。

- データ・ポンプ・エクスポート・ダンプ・ファイルをインポートするための適切な権限を持っていること

- データ・ポンプ・エクスポート・ダンプ・ファイルが格納されているディレクトリ・オブジェクトに対する読取り権限を持っていること

関連項目:
データ・ポンプ権限の詳細は、『Oracle Databaseユーティリティ』を参照してください。

ALTER_FILEプロシージャ

このプロシージャは、ファイル・グループのバージョン内のファイルを変更します。

構文

DBMS_FILE_GROUP.ALTER_FILE(
file_group_name     IN  VARCHAR2,
file_name           IN  VARCHAR2,
version_name        IN  VARCHAR2  DEFAULT NULL,
new_file_name       IN  VARCHAR2  DEFAULT NULL,
new_file_directory  IN  VARCHAR2  DEFAULT NULL,
new_file_type       IN  VARCHAR2  DEFAULT NULL,
remove_file_type    IN  VARCHAR2  DEFAULT 'N',
new_comments        IN  VARCHAR2  DEFAULT NULL,
remove_comments     IN  VARCHAR2  DEFAULT 'N');

パラメータ

表68-4 ALTER_FILEプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、バージョンを含むファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

file_name

バージョン内の変更するファイルの名前。

version_name

変更するファイルを含むバージョンの名前。

正の整数がVARCHAR2値として指定されている場合は、その整数がバージョン番号として解釈されます。たとえば、'1'が指定されている場合は、ファイル・グループのバージョン1にあるファイルが変更されます。

NULLに設定すると、このプロシージャはファイル・グループの最新バージョンを使用します。

new_file_name

ファイル名を変更した場合はファイルの新しい名前。ファイル名は、バージョン内で一意である必要があります。

NULLに設定すると、このプロシージャはファイル名を変更しません。

注意: NULL以外の新しいファイル名が指定されている場合、このプロシージャは、データ・ディクショナリ内のファイル名のメタデータは変更しますが、ハードディスク上のファイル名は変更しません。

new_file_directory

ディレクトリ・オブジェクトを変更した場合、ファイルを含むディレクトリに対応するディレクトリ・オブジェクトの新しい名前。

NULLに設定すると、このプロシージャはディレクトリ・オブジェクト名を変更しません。

注意: NULL以外の新しいファイル・ディレクトリが指定されている場合、このプロシージャは、データ・ディクショナリ内のファイル・ディレクトリのメタデータは変更しますが、ハードディスク上のファイル・ディレクトリは変更しません。

new_file_type

ファイルのタイプ。予約済ファイル・タイプは、次のとおりです。

- ファイルがデータファイルの場合は、次のように入力します。

'DATAFILE'

- ファイルがデータ・ポンプ・エクスポート・ダンプ・ファイルの場合は、次のように入力します。

'DUMPSET'

- ファイルがデータ・ポンプ・エクスポート・ログ・ファイルの場合は、次のように入力します。

'DATAPUMPLOG'

ファイル・タイプが予約済ファイル・タイプでない場合は、ファイル・タイプをテキストで入力します。

NULLに設定すると、このプロシージャはファイル・タイプを変更しません。

関連項目: 予約済ファイル・タイプの詳細は、「定数」を参照してください。

remove_file_type

Yに設定すると、このプロシージャはファイル・タイプを削除します。Yに設定して、new_file_typeパラメータがNULL以外の値の場合は、エラーが発生します。

Nに設定すると、このプロシージャはファイル・タイプを削除しません。

new_comments

変更するファイルに関する新しいコメント。NULL以外に設定すると、このプロシージャは既存のコメントを指定されたコメントに置き換えます。

NULLに設定すると、このプロシージャは既存のコメントを変更しません。

remove_comments

Yに設定すると、このプロシージャはファイルに関するコメントを削除します。Yに設定して、new_commentsパラメータがNULL以外の値の場合は、エラーが発生します。

Nに設定すると、このプロシージャは既存のコメントを変更しません。

使用上の注意

ファイル・タイプをDBMS_FILE_GROUP.EXPORT_DUMP_FILEまたは'DUMPSET'に変更すると、ファイルのデータ・ポンプ・メタデータが移入されます。ファイル・タイプをDBMS_FILE_GROUP.EXPORT_DUMP_FILEまたは'DUMPSET'から変更すると、ファイルのデータ・ポンプ・メタデータがパージされます。

new_file_typeパラメータに対してDBMS_FILE_GROUP.EXPORT_DUMP_FILEまたは'DUMPSET'を指定してこのプロシージャを実行するには、ユーザーが次の要件を満たしている必要があります。

- データ・ポンプ・エクスポート・ダンプ・ファイルをインポートするための適切な権限を持っていること

- データ・ポンプ・エクスポート・ダンプ・ファイルが格納されているディレクトリ・オブジェクトに対する読取り権限を持っていること

関連項目:
データ・ポンプ権限の詳細は、『Oracle Databaseユーティリティ』を参照してください。

ALTER_FILE_GROUPプロシージャ

このプロシージャは、ファイル・グループを変更します。

構文

DBMS_FILE_GROUP.ALTER_FILE_GROUP(
file_group_name           IN  VARCHAR2,
keep_files                IN  VARCHAR2  DEFAULT NULL,
min_versions              IN  NUMBER    DEFAULT NULL,
max_versions              IN  NUMBER    DEFAULT NULL,
retention_days            IN  NUMBER    DEFAULT NULL,
new_default_directory     IN  VARCHAR2  DEFAULT NULL,
remove_default_directory  IN  VARCHAR2  DEFAULT 'N',
new_comments              IN  VARCHAR2  DEFAULT NULL,
remove_comments           IN  VARCHAR2  DEFAULT 'N');

パラメータ

表68-5 ALTER_FILE_GROUPプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、変更するファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

keep_files

Yに設定すると、ファイル・グループまたはファイル・グループのバージョンが削除またはパージされた場合でも、ファイル・グループ内のファイルはハードディスク上に保存されます。

Nに設定すると、ファイル・グループまたはファイル・グループのバージョンが削除またはパージされると、ファイル・グループ内のファイルはハードディスクから削除されます。

NULLに設定すると、このパラメータは変更されません。

注意: DROP USER CASCADE文のためにファイル・グループが削除された場合、ファイルがハードディスクから削除されるかどうかは、このパラメータの設定によって決まります。

min_versions

保存するバージョンの最小数。1以上の値を指定する必要があります。

NULLに設定すると、このプロシージャはファイル・グループのmin_versions設定を変更しません。

max_versions

保存するバージョンの最大数。min_versionsに指定された値以上の値を指定する必要があります。バージョン数が、指定したmax_versionsを超えると、最も古いバージョンがパージされます。

バージョン数を無制限にするには、DBMS_FILE_GROUP.INFINITEを指定します。

NULLに設定すると、このプロシージャはファイル・グループのmax_versions設定を変更しません。

retention_days

バージョンを保存する最大日数。0(ゼロ)以上の値を指定する必要があります。あるバージョンの経過時間が指定したretention_daysを超え、バージョンの数が指定したmin_versionsより多い場合、そのバージョンはパージされます。バージョンの経過時間は、現在の時間から作成時間を引いて計算します。

1日の一部は、小数値を使用して指定することができます。たとえば、1日と6時間は、1.25のように指定します。

バージョンを残す日数を無制限にするには、DBMS_FILE_GROUP.INFINITEを指定します。

NULLに設定すると、このプロシージャはファイル・グループのretention_days設定を変更しません。

new_default_directory

ファイルの追加時にディレクトリが指定されておらず、そのバージョンに対してデフォルトのディレクトリ・オブジェクトの指定がされていない場合に、ファイル・グループへのファイルの追加時に使用されるデフォルトのディレクトリ・オブジェクト。

NULLに設定すると、このプロシージャはデフォルトのディレクトリを変更しません。

remove_default_directory

Yに設定すると、このプロシージャはファイル・グループのデフォルトのディレクトリを削除します。Yに設定して、new_default_directoryパラメータがNULL以外の値の場合は、エラーが発生します。

Nに設定すると、このプロシージャはファイル・グループのデフォルトのディレクトリを削除しません。

new_comments

ファイル・グループに関するコメント。NULL以外に設定すると、ファイル・グループに関する既存のコメントが新しいコメントに置き換えられます。

NULLに設定すると、このプロシージャは既存のコメントを変更しません。

remove_comments

Yに設定すると、ファイル・グループに関するコメントは削除されます。Yに設定して、new_commentsパラメータがNULL以外の値の場合は、エラーが発生します。

Nに設定すると、このプロシージャはファイル・グループに関するコメントを変更しません。

使用上の注意

min_versionsを1に設定すると、新しいバージョンの追加時に、ファイル・グループの唯一のバージョンがパージされる場合があります。新しいバージョンの追加が完了しないうちに既存のバージョンがパージされると、使用可能なファイル・グループのバージョンが存在しない時間が発生する可能性があります。そのため、ファイル・グループのバージョンを常に使用可能にしておくには、min_versionsを2以上に設定します。

ALTER_VERSIONプロシージャ

このプロシージャは、ファイル・グループのバージョンを変更します。

構文

DBMS_FILE_GROUP.ALTER_VERSION(
file_group_name           IN  VARCHAR2,
version_name              IN  VARCHAR2  DEFAULT NULL,
new_version_name          IN  VARCHAR2  DEFAULT NULL,
remove_version_name       IN  VARCHAR2  DEFAULT 'N',
new_default_directory     IN  VARCHAR2  DEFAULT NULL,
remove_default_directory  IN  VARCHAR2  DEFAULT 'N',
new_comments              IN  VARCHAR2  DEFAULT NULL,
remove_comments           IN  VARCHAR2  DEFAULT 'N');

パラメータ

表68-6 ALTER_VERSIONプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、バージョンを含むファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

version_name

変更するバージョンの名前。

正の整数がVARCHAR2値として指定されている場合は、その整数がバージョン番号として解釈されます。たとえば、'1'が指定されている場合は、ファイル・グループのバージョン1が変更されます。

'*'が指定されている場合、このプロシージャはすべてのバージョンを変更します。この場合、new_version_nameパラメータはNULLに設定する必要があります。

NULLに設定すると、このプロシージャはファイル・グループの最新バージョンを使用します。

new_version_name

バージョンの新しい名前。スキーマは指定しないでください。

バージョン名に、正の整数およびアスタリスク('*')は指定できません。

NULLに設定すると、このプロシージャはバージョン名を変更しません。

remove_version_name

Yに設定すると、このプロシージャはバージョン名を削除します。バージョン名が削除された場合は、バージョン番号を使用してバージョンを管理します。Yに設定して、new_version_nameパラメータがNULL以外の値の場合は、エラーが発生します。

Nに設定すると、このプロシージャはバージョン名を削除しません。

new_default_directory

ファイルの追加時にディレクトリが指定されていない場合に、バージョンへのファイルの追加時に使用されるデフォルトのディレクトリ・オブジェクト。

NULLに設定すると、このプロシージャはデフォルトのディレクトリを変更しません。

remove_default_directory

Yに設定すると、このプロシージャはデフォルトのディレクトリを削除します。Yに設定して、new_default_directoryパラメータがNULL以外の値の場合は、エラーが発生します。

Nに設定すると、このプロシージャはデフォルトのディレクトリを削除しません。

new_comments

バージョンに関するコメント。NULL以外に設定すると、バージョンに関する既存のコメントが新しいコメントに置き換えられます。

NULLに設定すると、このプロシージャはコメントを変更しません。

remove_comments

Yに設定すると、このプロシージャはバージョンに関するコメントを削除します。Yに設定して、new_commentsパラメータがNULL以外の値の場合は、エラーが発生します。

Nに設定すると、このプロシージャはバージョンに関するコメントを削除しません。

CREATE_FILE_GROUPプロシージャ

このプロシージャは、ファイル・グループを作成します。

関連項目:
『Oracle Streams概要および管理』のファイル・グループ・リポジトリにこのプロシージャを使用する例

構文

DBMS_FILE_GROUP.CREATE_FILE_GROUP(
file_group_name    IN  VARCHAR2,
keep_files         IN  VARCHAR2  DEFAULT 'Y',
min_versions       IN  NUMBER    DEFAULT 2,
max_versions       IN  NUMBER    DEFAULT DBMS_FILE_GROUP.INFINITE,
retention_days     IN  NUMBER    DEFAULT DBMS_FILE_GROUP.INFINITE,
default_directory  IN  VARCHAR2  DEFAULT NULL,
comments           IN  VARCHAR2  DEFAULT NULL);

パラメータ

表68-7 CREATE_FILE_GROUPプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定したファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

keep_files

Yに設定すると、ファイル・グループまたはファイル・グループのバージョンが削除またはパージされた場合でも、ファイル・グループ内のファイルはハードディスク上に保存されます。

Nに設定すると、ファイル・グループまたはファイル・グループのバージョンが削除またはパージされると、ファイル・グループ内のファイルはハードディスクから削除されます。

注意: DROP USER CASCADE文のためにファイル・グループが削除された場合、ファイルがハードディスクから削除されるかどうかは、このパラメータの設定によって決まります。

min_versions

保存するバージョンの最小数。1以上の値を指定する必要があります。

max_versions

保存するバージョンの最大数。min_versionsに指定された値以上の値を指定する必要があります。バージョン数が、指定したmax_versionsを超えると、最も古いバージョンがパージされます。

バージョン数を無制限にするには、DBMS_FILE_GROUP.INFINITEを指定します。

retention_days

バージョンを保存する最大日数。0(ゼロ)以上の値を指定する必要があります。あるバージョンの経過時間が指定したretention_daysを超え、バージョンの数が指定したmin_versionsより多い場合、そのバージョンはパージされます。バージョンの経過時間は、現在の時間から作成時間を引いて計算します。

1日の一部は、小数値を使用して指定することができます。たとえば、1日と6時間は、1.25のように指定します。

バージョンを残す日数を無制限にするには、DBMS_FILE_GROUP.INFINITEを指定します。

default_directory

ファイルの追加時にディレクトリが指定されておらず、そのバージョンに対してデフォルトのディレクトリ・オブジェクトの指定がされていない場合に、ファイル・グループへのファイルの追加時に使用されるデフォルトのディレクトリ・オブジェクト。

comments

作成するファイル・グループに関するコメント。

使用上の注意

min_versionsを1に設定すると、新しいバージョンの追加時に、ファイル・グループの唯一のバージョンがパージされる場合があります。新しいバージョンの追加が完了しないうちに既存のバージョンがパージされると、使用可能なファイル・グループのバージョンが存在しない時間が発生する可能性があります。そのため、ファイル・グループのバージョンを常に使用可能にしておくには、min_versionsを2以上に設定します。

CREATE_VERSIONプロシージャ

このプロシージャは、ファイル・グループのバージョンを作成します。

このプロシージャは、PURGE_FILE_GROUPプロシージャを自動的に実行します。そのため、ファイル・グループの保存方針に基づいてバージョンをパージできます。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンではOUTパラメータversion_outを使用しますが、もう一方のバージョンでは使用しません。

関連項目:

- PURGE_FILE_GROUPプロシージャ

- 『Oracle Streams概要および管理』のファイル・グループ・リポジトリにこのプロシージャを使用する例

構文

DBMS_FILE_GROUP.CREATE_VERSION(
file_group_name    IN  VARCHAR2,
version_name       IN  VARCHAR2 DEFAULT NULL,
default_directory  IN  VARCHAR2 DEFAULT NULL,
comments           IN  VARCHAR2 DEFAULT NULL);

DBMS_FILE_GROUP.CREATE_VERSION(
file_group_name    IN   VARCHAR2,
version_name       IN   VARCHAR2 DEFAULT NULL,
default_directory  IN   VARCHAR2 DEFAULT NULL,
comments           IN   VARCHAR2 DEFAULT NULL,
version_out        OUT  VARCHAR2);

パラメータ

表68-8 CREATE_VERSIONプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、新しいバージョンを追加するファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

version_name

作成するバージョンの名前。スキーマは指定しないでください。

バージョンの作成時にバージョン番号が自動的に生成されるため、バージョン名に正の整数は指定できません。また、バージョン名に、アスタリスク('*')は指定できません。

default_directory

ファイルの追加時にディレクトリが指定されていない場合に、バージョンへのファイルの追加時に使用されるデフォルトのディレクトリ・オブジェクト。

comments

作成するバージョンに関するコメント。

version_out

version_nameパラメータがNULL以外に設定されている場合、このパラメータには、指定したバージョン名が含まれます。

version_nameパラメータがNULLに設定されている場合、このパラメータには、生成されるバージョン番号が含まれます。

DROP_FILE_GROUPプロシージャ

このプロシージャは、ファイル・グループを削除します。

構文

DBMS_FILE_GROUP.DROP_FILE_GROUP(
file_group_name  IN  VARCHAR2,
keep_files       IN  VARCHAR2  DEFAULT NULL);

パラメータ

表68-9 DROP_FILE_GROUPプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、削除するファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

keep_files

Yに設定すると、このプロシージャはファイル・グループ内のファイルをハードディスク上に保存します。

Nに設定すると、このプロシージャはファイル・グループ内のファイルをハードディスクから削除します。

NULLに設定すると、このプロシージャはファイル・グループのデフォルトのファイル保存のプロパティを使用します。

使用上の注意

このプロシージャによってハードディスク上のファイルを削除する場合、このプロシージャを実行するユーザーは、それらのファイルが含まれているディレクトリ・オブジェクトに対する書込み権限を持っている必要があります。

DROP_VERSIONプロシージャ

このプロシージャは、ファイル・グループのバージョンを削除します。

構文

DBMS_FILE_GROUP.DROP_VERSION(
file_group_name  IN  VARCHAR2,
version_name     IN  VARCHAR2 DEFAULT NULL,
keep_files       IN  VARCHAR2 DEFAULT NULL);

パラメータ

表68-10 DROP_VERSIONプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、バージョンを含むファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

version_name

削除するバージョンの名前。

正の整数がVARCHAR2値として指定されている場合は、その整数がバージョン番号として解釈されます。たとえば、'1'が指定されている場合は、ファイル・グループのバージョン1が削除されます。

NULLに設定すると、このプロシージャはファイル・グループの最も古いバージョンを使用します。

'*'に設定すると、このプロシージャはすべてのバージョンを削除します。

keep_files

Yに設定すると、このプロシージャはバージョン内のファイルをハードディスク上に保存します。

Nに設定すると、このプロシージャはバージョン内のファイルをハードディスクから削除します。

NULLに設定すると、このプロシージャはファイル・グループのデフォルトのファイル保存のプロパティを使用します。

使用上の注意

このプロシージャによってハードディスク上のファイルを削除する場合、このプロシージャを実行するユーザーは、それらのファイルが含まれているディレクトリ・オブジェクトに対する書込み権限を持っている必要があります。

GRANT_OBJECT_PRIVILEGEプロシージャ

このプロシージャは、ファイル・グループに対するオブジェクト権限をユーザーに付与します。

構文

DBMS_FILE_GROUP.GRANT_OBJECT_PRIVILEGE(
object_name   IN  VARCHAR2,
privilege     IN  BINARY_INTEGER,
grantee       IN  VARCHAR2,
grant_option  IN  BOOLEAN DEFAULT FALSE);

パラメータ

表68-11 GRANT_OBJECT_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]file_group_nameの形式で指定した、権限を付与するファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

privilege

権限を指定する定数。使用可能な権限については、「定数」を参照してください。

grantee

権限を付与するユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。

grant_option

TRUEに設定すると、指定の権限を付与された指定ユーザーは、この権限を他のユーザーに付与できます。

FALSEに設定すると、指定の権限を付与された指定ユーザーは、この権限を他のユーザーに付与できません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- 権限を付与するオブジェクトの所有者であること。

- 付与する権限と同じ権限および付与オプションがあること。

GRANT_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、ファイル・グループ操作に対するシステム権限をユーザーに付与します。

注意:
「ANY」オブジェクトに関する権限(ALTER_ANY_RULEなど)を付与する際に、O7_DICTIONARY_ACCESSIBILITY初期化パラメータがFALSEに設定されている場合は、SYSスキーマを除くすべてのスキーマで、該当するタイプのオブジェクトへのアクセス権をユーザーに付与してください。デフォルトでは、O7_DICTIONARY_ACCESSIBILITY初期化パラメータは、FALSEに設定されています。
SYSスキーマのオブジェクトに対してアクセス権を付与する場合は、そのオブジェクトに対するオブジェクト権限を明示的に付与できます。また、O7_DICTIONARY_ACCESSIBILITY初期化パラメータをTRUEに設定することもできます。この設定によって、「ANY」オブジェクトに対して付与した権限で、SYSも含めた任意のスキーマにアクセスできます。O7_DICTIONARY_ACCESSIBILITY初期化パラメータの設定には、注意が必要です。

構文

DBMS_FILE_GROUP.GRANT_SYSTEM_PRIVILEGE(
privilege     IN  BINARY_INTEGER,
grantee       IN  VARCHAR2,
grant_option  IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表68-12 GRANT_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

権限を指定する定数。使用可能な権限については、「定数」を参照してください。

grantee

権限を付与するユーザーまたはロールの名前。プロシージャの実行者を指定することはできません。

grant_option

TRUEに設定すると、指定の権限を付与された指定ユーザーは、この権限を他のユーザーに付与できます。

FALSEに設定すると、指定の権限を付与された指定ユーザーは、この権限を他のユーザーに付与できません。

PURGE_FILE_GROUPプロシージャ

このプロシージャは、ファイル・グループの保存方針を使用してファイル・グループをパージします。

ファイル・グループの保存方針は、max_versions、min_versionsおよびretention_daysパラメータの設定によって決まります。ファイル・グループのパージ時には、ファイル・グループの次のバージョンが削除されます。

- バージョンが作成時間に基づいて降順で並べられている場合の、ファイル・グループのmax_versions設定を超えるすべてのバージョン。したがって、古いバージョンが新しいバージョンより先にパージされます。

- バージョンのパージによって、バージョン番号がファイル・グループのmin_versions設定より低いバージョンが削除される場合を除いて、ファイル・グループのretention_days設定より古いすべてのバージョン。

SYS.FGR$AUTOPURGE_JOBという名前のジョブでは、データベース内のすべてのファイル・グループが、ジョブのスケジュールに従って定期的に自動的にパージされます。DBMS_SCHEDULERパッケージを使用すると、このジョブのスケジュールを調整できます。また、PURGE_FILE_GROUPプロシージャを定期的に実行するジョブを作成することもできます。

構文

DBMS_FILE_GROUP.PURGE_FILE_GROUP(
file_group_name  IN  VARCHAR2);

パラメータ

表68-13 PURGE_FILE_GROUPプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定したファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

SYSユーザーがこのプロシージャを実行する場合にNULLに設定すると、このプロシージャはすべてのファイル・グループをパージします。

使用上の注意

このプロシージャによってハードディスク上のファイルを削除する場合、このプロシージャを実行するユーザーは、それらのファイルが含まれているディレクトリ・オブジェクトに対する書込み権限を持っている必要があります。バージョンがパージされ、そのバージョンのファイル・グループのkeep_filesパラメータがNに設定されている場合、ファイルは削除されます。

REMOVE_FILEプロシージャ

このプロシージャは、ファイル・グループのバージョンからファイルを削除します。

構文

DBMS_FILE_GROUP.REMOVE_FILE(
file_group_name  IN  VARCHAR2,
file_name        IN  VARCHAR2,
version_name     IN  VARCHAR2 DEFAULT NULL,
keep_file        IN  VARCHAR2 DEFAULT NULL);

パラメータ

表68-14 REMOVE_FILEプロシージャのパラメータ

パラメータ

説明

file_group_name

[schema_name.]file_group_nameの形式で指定した、バージョンを含むファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

file_name

バージョンから削除するファイルの名前。

version_name

ファイルを削除するバージョンの名前。

正の整数がVARCHAR2値として指定されている場合は、その整数がバージョン番号として解釈されます。たとえば、'1'が指定されている場合、ファイルはファイル・グループのバージョン1から削除されます。

NULLに設定すると、このプロシージャはファイル・グループの最新バージョンを使用します。

'*'に設定すると、このプロシージャはすべてのバージョンからファイルを削除します。

keep_file

Yに設定すると、このプロシージャはファイルをハードディスク上に保存します。

Nに設定すると、このプロシージャはファイルをハードディスクから削除します。

NULLに設定すると、このプロシージャはファイル・グループのデフォルトのファイル保存のプロパティを使用します。

使用上の注意

このプロシージャによってハードディスク上のファイルを削除する場合、このプロシージャを実行するユーザーは、それらのファイルが含まれているディレクトリ・オブジェクトに対する書込み権限を持っている必要があります。

REVOKE_OBJECT_PRIVILEGEプロシージャ

このプロシージャは、ファイル・グループに対するオブジェクト権限をユーザーから取り消します。

構文

DBMS_FILE_GROUP.REVOKE_OBJECT_PRIVILEGE(
object_name  IN  VARCHAR2,
privilege    IN  BINARY_INTEGER,
revokee      IN  VARCHAR2);

パラメータ

表68-15 REVOKE_OBJECT_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

object_name

[schema_name.]file_group_nameの形式で指定した、権限を取り消すファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsales_tbsの場合は、hq_dba.sales_tbsと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

privilege

権限を指定する定数。使用可能な権限については、「定数」を参照してください。

revokee

権限が取り消されるユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、ファイル・グループ操作に対するシステム権限をユーザーから取り消します。

構文

DBMS_FILE_GROUP.REVOKE_SYSTEM_PRIVILEGE(
privilege  IN  BINARY_INTEGER,
revokee    IN  VARCHAR2);

パラメータ

表68-16 REVOKE_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

権限を指定する定数。使用可能な権限については、「定数」を参照してください。

revokee

権限が取り消されるユーザーまたはロールの名前。プロシージャの実行者を指定することはできません。

69 DBMS_FILE_TRANSFER

DBMS_FILE_TRANSFERパッケージは、データベース内のバイナリ・ファイルをコピーし、データベース間でバイナリ・ファイルを転送するプロシージャを提供します。

関連項目:

- ファイル転送の使用方法については、『Oracle Database管理者ガイド』を参照してください。

- ファイル転送のアプリケーションについては、『Oracle Streams概要および管理』を参照してください。

この章では、次の項目について説明します。

- DBMS_FILE_TRANSFERの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_FILE_TRANSFERサブプログラムの要約

DBMS_FILE_TRANSFERの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

概要

DBMS_FILE_TRANSFERパッケージは、データベース内のバイナリ・ファイルをコピーし、データベース間でバイナリ・ファイルを転送するプロシージャを提供します。エンディアンの異なるプラットフォームからファイルを受け取ると、宛先データベースにより各ブロックが変換されます。データファイルは、トランスポータブル操作(RMAN変換なし)の一環として接続先データベースに移動された後でインポートできます。GETおよびPUT操作は両方とも、プラットフォーム間の相違を反映するように宛先のファイル内で変換されます。一方、COPYはローカル操作であるため、変換は不要です。

セキュリティ・モデル

DBMS_FILE_TRANSFERパッケージは、SYS (CONNECT INTERNAL)の下で作成する必要があります。このパッケージが提供する操作は、パッケージ所有者(SYS)ではなく、現行のコール・ユーザーのもとで実行されます。

このインタフェースを使用するには、次のユーザーに次の権限が必要です。

- ローカル・データベースの現在のユーザーには、source_directory_objectパラメータに指定したディレクトリ・オブジェクトに対するREAD権限が必要です。

- 宛先データベースの接続ユーザーには、destination_directory_objectパラメータに指定したディレクトリ・オブジェクトについてのWRITE権限が必要です。

使用上の注意

注意:
DBMS_FILE_TRANSFERでは、オンライン・バックアップがサポートされています。データベースで変更中のファイルをコピーまたは転送する場合は、ファイルの一貫性が失われリカバリが必要になる可能性があるため、注意する必要があります。一貫性を保証するには、データベースの使用中はファイルをオフラインにしてください。
バックアップの実行にDBMS_FILE_TRANSFERを使用する場合は、自己管理バックアップを実行するため、ファイルをホット・バックアップ・モードにする必要があります。

DBMS_FILE_TRANSFERサブプログラムの要約

表69-1 DBMS_FILE_TRANSFERパッケージのサブプログラム

サブプログラム

説明

COPY_FILEプロシージャ

ソース・ディレクトリからファイルを読み取り、宛先ディレクトリにそのコピーを作成します。ソース・ディレクトリと宛先ディレクトリは、両方ともローカル・ファイル・システム内または自動ストレージ管理(ASM)ディスク・グループ内に指定するか、ローカル・ファイル・システムとASMの間に指定して、いずれの方向にもコピーを実行できます。

GET_FILEプロシージャ

リモート・データベースに接続し、リモート・ファイルを読み取り、ローカル・ファイル・システムまたはASMにそのファイルのコピーを作成します。

PUT_FILEプロシージャ

ローカル・ファイルまたはASMを読み取り、リモート・データベースに接続して、リモート・ファイル・システムにそのファイルのコピーを作成します。

COPY_FILEプロシージャ

このプロシージャは、ソース・ディレクトリからファイルを読み取り、宛先ディレクトリにそのコピーを作成します。ソース・ディレクトリと宛先ディレクトリは、両方ともローカル・ファイル・システム内または自動ストレージ管理(ASM)ディスク・グループ内に指定するか、ローカル・ファイル・システムとASMの間に指定して、いずれの方向にもコピーを実行できます。

ローカル・ファイル・システムは、すべてのタイプのファイルのコピー元およびコピー先に指定できます。ただし、ASMディスク・グループは、データベース・ファイル(データファイル、一時ファイル、制御ファイルなど)のみのコピー元およびコピー先となります。

宛先ファイルはプロシージャが正常に終了するまで閉じられません。

構文

DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object       IN  VARCHAR2,
source_file_name              IN  VARCHAR2,
destination_directory_object  IN  VARCHAR2,
destination_file_name         IN  VARCHAR2);

パラメータ

表69-2 COPY_FILEプロシージャのパラメータ

パラメータ

説明

source_directory_object

ソース・ディレクトリを指定するディレクトリ・オブジェクト。このディレクトリ・オブジェクトは、すでに存在している必要があります。(ディレクトリ・オブジェクトは、CREATE DIRECTORYコマンドを使用して作成します)。

source_file_name

コピーするファイルの名前。このファイルは、ソース・ディレクトリ内に存在している必要があります。

destination_directory_object

宛先ディレクトリを指定するディレクトリ・オブジェクト。このディレクトリ・オブジェクトは、すでに存在している必要があります。宛先がASMの場合、このディレクトリ・オブジェクトは、ディスク・グループ名(+diskgroup1など)または別名で作成されたディレクトリを指定する必要があります。ディレクトリを指定する場合は、ディレクトリのフルパス(+diskgroup1/dbs/controlなど)を指定します。

destination_file_name

宛先ディレクトリ内のファイルに割り当てる名前。同じ名前のファイルが宛先ディレクトリに存在しないようにしてください。宛先がASMの場合は、次のようになります。

- ファイルは、データベース名およびファイル・タイプに応じて、完全修飾ASMファイル名を割り当てられ、適切なディレクトリ内に作成されます。

- ファイルに割り当てられるファイル・タイプのタグは、COPY_FILEです。

- destination_file_name引数の値は、指定した宛先ディレクトリ内でファイルの別名になります。

ファイル名の後に、カッコで囲んだASMテンプレート名を追加できます。この場合、ファイルには、テンプレートによって指定された属性が付与されます。

使用上の注意

このプロシージャを正常に実行するには、現在のユーザーに次の権限が必要です。

- source_directory_objectパラメータに指定したディレクトリ・オブジェクトについてのREAD権限

- destination_directory_objectパラメータに指定したディレクトリ・オブジェクトについてのWRITE権限

このプロシージャは二重引用符で囲まれていないディレクトリ・オブジェクト・パラメータを大文字に変換しますが、ファイル名は大文字に変換しません。

さらに、コピーされるファイルは次の要件を満たしている必要があります。

- コピーされるファイルのサイズは512バイトの倍数である必要があります。

- コピーされるファイルのサイズは、2TB以下である必要があります。

ファイルの転送はトランザクション処理ではありません。長いファイルのコピーの進行状況を監視するには、V$SESSION_LONGOPS動的パフォーマンス・ビューに問い合せてください。

関連項目:
ファイル転送の使用方法については、『Oracle Databaseストレージ管理者ガイド』を参照してください。

例

SQL> create directory DGROUP as '+diskgroup1/dbs/backup';

Directory created.

SQL>  BEGIN
2    DBMS_FILE_TRANSFER.COPY_FILE('SOURCEDIR','t_xdbtmp.f', 'DGROUP',
't_xdbtmp.f');
3  END;
4  /

PL/SQL procedure successfully completed.

SQL> EXIT
$ASMCMD
ASMCMD> ls
DISKGROUP1/
ASMCMD> cd diskgroup1/dbs/backup
ASMCMD> ls
t_xdbtmp.f => +DISKGROUP1/ORCL/TEMPFILE/COPY_FILE.267.546546525

GET_FILEプロシージャ

このプロシージャは、リモート・データベースに接続し、リモート・ファイルを読み取り、ローカル・ファイル・システムまたはASMにそのファイルのコピーを作成します。コピーされるファイルはソース・ファイルで、コピーで作成された新しいファイルが宛先ファイルです。宛先ファイルはプロシージャが正常に終了するまで閉じられません。

構文

DBMS_FILE_TRANSFER.GET_FILE
source_directory_object      IN  VARCHAR2,
source_file_name             IN  VARCHAR2,
source_database              IN  VARCHAR2,
destination_directory_object IN  VARCHAR2,
destination_file_name        IN  VARCHAR2);

パラメータ

表69-3 GET_FILEプロシージャのパラメータ

パラメータ

説明

source_directory_object

ソース・サイトにある、ファイルのコピー元のディレクトリ・オブジェクト。このディレクトリ・オブジェクトはソース・サイトに存在している必要があります。

source_file_name

リモート・ファイル・システムにおいてコピーされるファイルの名前。このファイルは、リモート・ファイル・システムのソース・ディレクトリ・オブジェクトに関連付けられたディレクトリに存在している必要があります。

source_database

ファイルが存在するリモート・データベースへのデータベース・リンクの名前。

destination_directory_object

宛先サイトにある、ファイルのコピー先となるディレクトリ・オブジェクト。このディレクトリ・オブジェクトはローカル・ファイル・システムに存在している必要があります。

destination_file_name

ローカル・ファイル・システムにコピーされるファイルの名前。同じ名前のファイルがローカル・ファイル・システムの宛先ディレクトリに存在しないようにしてください。

使用上の注意

このプロシージャを正常に実行するには、次のユーザーに次の権限が必要です。

- ソース・データベースの接続されるユーザーには、source_directory_objectパラメータに指定したディレクトリ・オブジェクトについての読取り権限が必要です。

- ローカル・データベースの現在のユーザーには、destination_directory_objectパラメータに指定したディレクトリ・オブジェクトについての書込み権限が必要です。

このプロシージャは二重引用符で囲まれていないディレクトリ・オブジェクト・パラメータを大文字に変換しますが、ファイル名は大文字に変換しません。

さらに、コピーされるファイルは次の要件を満たしている必要があります。

- コピーされるファイルのサイズは512バイトの倍数である必要があります。

- コピーされるファイルのサイズは、2TB以下である必要があります。

ファイルの転送はトランザクション処理ではありません。長いファイルの転送の進行状況を監視するには、V$SESSION_LONGOPS動的パフォーマンス・ビューに問い合せてください。

例

CREATE OR REPLACE DIRECTORY df AS '+datafile' ;
GRANT WRITE ON DIRECTORY df TO "user";
CREATE DIRECTORY DSK_FILES AS ''^t_work^'';
GRANT WRITE ON DIRECTORY dsk_files TO "user";

-- asumes that dbs2 link has been created and we are connected to the instance.
-- dbs2 could be a loopback or point to another instance.

BEGIN
-- asm file to an os file
-- get an asm file from dbs1.asm/a1 to dbs2.^t_work^/oa5.dat
DBMS_FILE_TRANSFER.GET_FILE ( 'df' , 'a1' , 'dbs1', 'dsk_files' , 'oa5.dat' );

-- os file to an os file
-- get an os file from dbs1.^t_work^/a2.dat to dbs2.^t_work^/a2back.dat
DBMS_FILE_TRANSFER.GET_FILE ( 'dsk_files' , 'a2.dat' , 'dbs1', 'dsk_files' , 'a2back.dat' );

END ;
/

PUT_FILEプロシージャ

このプロシージャは、ローカル・ファイルまたはASMを読み取り、リモート・データベースに接続して、リモート・ファイル・システムにそのファイルのコピーを作成します。コピーされるファイルはソース・ファイルで、コピーで作成された新しいファイルが宛先ファイルです。宛先ファイルはプロシージャが正常に終了するまで閉じられません。

構文

DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object       IN  VARCHAR2,
source_file_name              IN  VARCHAR2,
destination_directory_object  IN  VARCHAR2,
destination_file_name         IN  VARCHAR2,
destination_database          IN  VARCHAR2);

パラメータ

表69-4 PUT_FILEプロシージャのパラメータ

パラメータ

説明

source_directory_object

ローカル・ソース・サイトにある、ファイルのコピー元のディレクトリ・オブジェクト。このディレクトリ・オブジェクトはソース・サイトに存在している必要があります。

source_file_name

ローカル・ファイル・システムからコピーされるファイルの名前。このファイルは、ローカル・ファイル・システムのソース・ディレクトリ・オブジェクトに関連付けられたディレクトリに存在している必要があります。

destination_directory_object

宛先サイトにある、ファイルのコピー先となるディレクトリ・オブジェクト。このディレクトリ・オブジェクトはリモート・ファイル・システムに存在している必要があります。

destination_file_name

リモート・ファイル・システムにおいてコピーされるファイルの名前。同じ名前のファイルがリモート・ファイル・システムの宛先ディレクトリに存在しないようにしてください。

destination_database

ファイルのコピー先となるリモート・データベースへのデータベース・リンクの名前。

使用上の注意

このプロシージャを正常に実行するには、次のユーザーに次の権限が必要です。

- ローカル・データベースの現在のユーザーには、source_directory_objectパラメータに指定したディレクトリ・オブジェクトについての読取り権限が必要です。

- 宛先データベースの接続ユーザーには、destination_directory_objectパラメータに指定したディレクトリ・オブジェクトについての書込み権限が必要です。

このプロシージャは二重引用符で囲まれていないディレクトリ・オブジェクト・パラメータを大文字に変換しますが、ファイル名は大文字に変換しません。

さらに、コピーされるファイルは次の要件を満たしている必要があります。

- コピーされるファイルのサイズは512バイトの倍数である必要があります。

- コピーされるファイルのサイズは、2TB以下である必要があります。

ファイルの転送はトランザクション処理ではありません。長いファイルの転送の進行状況を監視するには、V$SESSION_LONGOPS動的パフォーマンス・ビューに問い合せてください。

例

CREATE OR REPLACE DIRECTORY df AS '+datafile' ;
GRANT WRITE ON DIRECTORY df TO "user";
CREATE OR REPLACE DIRECTORY ft1 AS '+datafile/ft1' ;
GRANT READ,WRITE ON DIRECTORY ft1 TO "user";
CREATE OR REPLACE DIRECTORY ft1_1 AS '+datafile/ft1/ft1_1' ;

CONNECT user;
Enter password: password

-- - put a1.dat to a4.dat (using dbs2 dblink)
-- - level 2 sub dir to parent dir
-- - user has read privs on ft1_1 at dbs1 and write on df in dbs2
BEGIN
DBMS_FILE_TRANSFER.PUT_FILE ( 'ft1_1' , 'a2.dat' , 'df' , 'a4.dat' ,
'dbs2' ) ;
END ;

70 DBMS_FLASHBACK

DBMS_FLASHBACKを使用して、指定した時間または指定したシステム変更番号(SCN)にデータベースのバージョンをフラッシュバックできます。

関連項目:
DBMS_FLASHBACKの詳細は、次のマニュアルを参照してください。

- 『Oracle Database開発ガイド』

- 『Oracle Database SQL言語リファレンス』

この章では、次の項目について説明します。

- DBMS_FLASHBACKの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- 例外

- 使用上の注意

- 例

- DBMS_FLASHBACKサブプログラムの要約

DBMS_FLASHBACKの使用方法

- 概要

- セキュリティ・モデル

- タイプ

- 例外

- 使用上の注意

- 例

概要

DBMS_FLASHBACKは、ユーザーが過去の特定の時点でのデータベースを表示するためのインタフェースを提供し、個々のトランザクションの結果を選択して削除できるトランザクション・バックアウト機能も追加されています。データベースを過去の時点に戻すフラッシュバック・データベースとは異なります。

DBMS_FLASHBACKが有効化された場合、ユーザー・セッションはデータベースのフラッシュバック・バージョンを使用します。また、アプリケーションをデータベースのフラッシュバック・バージョンで実行することができます。

DBMS_FLASHBACKは、次のような場合に使用できます。

- 自己修復: 誤って表から行を削除してしまった場合、その行をリカバリできます。

- 電子メールおよびボイスメールなどのパッケージ・アプリケーション: フラッシュバックを使用して、現行のメッセージ・ボックスに削除したメッセージを再挿入し、削除した電子メールをリストアできます。

- 意思決定支援システム(DSS)およびオンライン分析処理(OLAP)アプリケーション: データ分析またはデータ・モデリングを実行し、季節的需要の推移を見ることができます。

セキュリティ・モデル

このパッケージを使用するには、パッケージに対するEXECUTE権限が必要です。

タイプ

DBMS_FLASHBACKパッケージでは、次のタイプが使用されます。

表70-1 DBMS_FLASHBACK

タイプ

説明

TXNAME_ARRAY

トランザクション名またはトランザクション識別子(XID)を保持するためのVARRAYを作成します。

例外

表70-2 DBMS_FLASHBACKエラー・メッセージ

エラー

説明

ORA-08180

指定された時間が古すぎます。

ORA-08181

無効なシステム変更番号が指定されました。

ORA-08182

ユーザーは、フラッシュバック・モードにおいて、読取り専用またはシリアル化可能トランザクションを開始できません。

ORA-08183

ユーザーは、コミットされていないトランザクションにおいてフラッシュバックを有効化できません。

ORA-08184

ユーザーは、別のフラッシュバック・セッションにおいてフラッシュバックを有効化できません。

ORA-08185

SYSはフラッシュバック・モードを有効化できません。

使用上の注意

接続切断または別の接続の開始によりセッションが終了すると、DBMS_FLASHBACKは自動的に無効化されます。

フラッシュバック・モードでオープンされたPL/SQLカーソルは、フラッシュバック時間またはSCNの時点での行を戻します。データベースにおける異なる同時セッション(接続)では、異なる実時間またはSCNに対してフラッシュバックを実行できます。セッションがフラッシュバック・モードで実行されている間は、DMLおよびDDL処理ならびに分散処理を行うことはできません。オープンしているPL/SQLカーソルは、フラッシュバックを無効にしてDMLを実行するまで使用できます。

自動UNDO管理(AUM)モードでは、保存期間コントロールを使用して、必要なデータベース・バージョンを取得するためにどのくらい過去に戻るかを制御できます。過去24時間のフラッシュバックを実行する必要がある場合は、DBAはundo_retentionパラメータを24時間に設定する必要があります。このように、システムはデータの旧バージョンを再生成するのに十分なロールバック情報を保持しています。

UNDO表領域に対しRETENTION GUARANTEE句を設定すると、期限切れになっていないUNDOが廃棄されないようにできます。システムの領域が小さくなると、期限切れになっていないUNDOは新たに生成されたUNDOで上書きされる可能性があるため、UNDO_RETENTION自体は保証されません。このような状況は、RETENTION GUARANTEEによって防ぐことができます。詳細は、『Oracle Database管理者ガイド』を参照してください。

フラッシュバックが有効化されたセッションでは、SYSDATEは影響を受けません。引き続き、現在の時間が提供されます。

ログイン・トリガーにおいてDBMS_FLASHBACKを使用し、アプリケーション・コードを変更せずにフラッシュバックを有効化できます。

例

高年齢従業員を削除したことにより、その従業員に提出された人員レポートがすべて削除された場合に、フラッシュバックを使用する方法を次に示します。フラッシュバック機能を使用すると、消失した従業員をリカバリし、再挿入できます。

DROP TABLE employee;
DROP TABLE keep_scn;

REM -- Keep_scn is a temporary table to store scns that we are interested in

CREATE TABLE keep_scn (scn number);
SET ECHO ON
CREATE TABLE employee (
employee_no   number(5) PRIMARY KEY,
employee_name varchar2(20),
employee_mgr  number(5)
CONSTRAINT mgr_fkey REFERENCES EMPLOYEE ON DELETE CASCADE,
salary        number,
hiredate      date
);

REM -- Populate the company with employees
INSERT INTO employee VALUES (1, 'John Doe', null, 1000000, '5-jul-81');
INSERT INTO employee VALUES (10, 'Joe Johnson', 1, 500000, '12-aug-84');
INSERT INTO employee VALUES (20, 'Susie Tiger', 10, 250000, '13-dec-90');
INSERT INTO employee VALUES (100, 'Scott Tiger', 20, 200000, '3-feb-86');
INSERT INTO employee VALUES (200, 'Charles Smith', 100, 150000, '22-mar-88');
INSERT INTO employee VALUES (210, 'Jane Johnson', 100, 100000, '11-apr-87');
INSERT INTO employee VALUES (220, 'Nancy Doe', 100, 100000, '18-sep-93');
INSERT INTO employee VALUES (300, 'Gary Smith', 210, 75000, '4-nov-96');
INSERT INTO employee VALUES (310, 'Bob Smith', 210, 65000, '3-may-95');
COMMIT;

REM -- Show the entire org
SELECT lpad(' ', 2*(level-1)) || employee_name Name
FROM employee
CONNECT BY PRIOR employee_no = employee_mgr
START WITH employee_no = 1
ORDER BY LEVEL;

REM -- Sleep for a short time (approximately 10 to 20  seconds) to avoid
REM -- querying close to table creation

EXECUTE DBMS_LOCK.SLEEP(10);

REM -- Store this snapshot for later access through Flashback
DECLARE
I NUMBER;
BEGIN
I := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER;
INSERT INTO keep_scn VALUES (I);
COMMIT;
END;
/

REM -- Scott decides to retire but the transaction is done incorrectly
DELETE FROM EMPLOYEE WHERE employee_name = 'Scott Tiger';
COMMIT;

REM -- notice that all of scott's employees are gone
SELECT lpad(' ', 2*(level-1)) || employee_name Name
FROM EMPLOYEE
CONNECT BY PRIOR employee_no = employee_mgr
START WITH employee_no = 1
ORDER BY LEVEL;

REM -- Flashback to see Scott's organization
DECLARE
restore_scn number;
BEGIN
SELECT  scn INTO restore_scn FROM keep_scn;
DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER (restore_scn);
END;
/

REM -- Show Scott's org.
SELECT lpad(' ', 2*(level-1)) || employee_name Name
FROM employee
CONNECT BY PRIOR employee_no = employee_mgr
START WITH employee_no =
(SELECT employee_no FROM employee WHERE employee_name = 'Scott Tiger')
ORDER BY LEVEL;

REM -- Restore scott's organization.
DECLARE
scotts_emp NUMBER;
scotts_mgr NUMBER;
CURSOR c1 IS
SELECT employee_no, employee_name, employee_mgr, salary, hiredate
FROM employee
CONNECT BY PRIOR employee_no = employee_mgr
START WITH employee_no =
(SELECT employee_no FROM employee WHERE employee_name = 'Scott Tiger');
c1_rec c1 % ROWTYPE;
BEGIN
SELECT employee_no, employee_mgr INTO scotts_emp, scotts_mgr FROM employee
WHERE employee_name = 'Scott Tiger';
/* Open c1 in flashback mode */
OPEN c1;
/* Disable Flashback */
DBMS_FLASHBACK.DISABLE;
LOOP
FETCH c1 INTO c1_rec;
EXIT WHEN c1%NOTFOUND;
/*
Note that all the DML operations inside the loop are performed
with Flashback disabled
*/
IF (c1_rec.employee_mgr = scotts_emp) then
INSERT INTO employee VALUES (c1_rec.employee_no,
c1_rec.employee_name,
scotts_mgr,
c1_rec.salary,
c1_rec.hiredate);
ELSE
IF (c1_rec.employee_no != scotts_emp) THEN
INSERT INTO employee VALUES (c1_rec.employee_no,
c1_rec.employee_name,
c1_rec.employee_mgr,
c1_rec.salary,
c1_rec.hiredate);
END IF;
END IF;
END LOOP;
END;
/

REM -- Show the restored organization.
select lpad(' ', 2*(level-1)) || employee_name Name
FROM employee
CONNECT BY PRIOR employee_no = employee_mgr
START WITH employee_no = 1
ORDER BY LEVEL;

DBMS_FLASHBACKサブプログラムの要約

表70-3 DBMS_FLASHBACKパッケージのサブプログラム

サブプログラム

説明

DISABLEプロシージャ

セッション全体においてフラッシュバック・モードを無効化します。

ENABLE_AT_SYSTEM_CHANGE_NUMBERプロシージャ

セッション全体においてフラッシュバックを使用できるようにします。SCNをOracleの数値タイプとして使用し、セッションのスナップショットを指定した数値に設定します。フラッシュバック・モードでは、すべての問合せにおいて、指定した実時間またはSCNの時点と一致したデータが戻されます。

ENABLE_AT_TIMEプロシージャ

セッション全体においてフラッシュバックを使用できるようにします。スナップショット・タイムは、query_timeで指定された時間に最も近いSCNに設定されます。

GET_SYSTEM_CHANGE_NUMBERファンクション

現在のSCNをOracleの数値タイプとして戻します。SCNを使用して、特定のスナップショットを格納できます。

TRANSACTION_BACKOUTプロシージャ

トランザクションをバックアウトするためのメカニズムを提供します。

DISABLEプロシージャ

このプロシージャは、セッション全体においてフラッシュバック・モードを無効化します。

構文

DBMS_FLASHBACK.DISABLE;

例

次の例では、従業員Joeの2000年8月30日時点での給与を問い合せています。

EXECUTE dbms_flashback.enable_at_time('30-AUG-2000');
SELECT salary FROM emp where name = 'Joe'
EXECUTE dbms_flashback.disable;

ENABLE_AT_SYSTEM_CHANGE_NUMBERプロシージャ

このプロシージャは、SCNを入力パラメータとして使用し、セッションのスナップショットを指定した数値に設定します。フラッシュバック・モードでは、すべての問合せにおいて、指定した実時間またはSCNの時点と一致したデータが戻されます。セッション全体においてフラッシュバックを使用できるようにします。

構文

DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER (
query_scn IN NUMBER);

パラメータ

表70-4 ENABLE_AT_SYSTEM_CHANGE_NUMBERプロシージャのパラメータ

パラメータ

説明

query_scn

システム変更番号(SCN)。トランザクションのコミットごとに増分するデータベースのバージョン・ナンバーです。

ENABLE_AT_TIMEプロシージャ

このプロシージャは、セッション全体においてフラッシュバックを使用できるようにします。スナップショット・タイムは、query_timeで指定された時間に最も近いSCNに設定されます。セッション全体においてフラッシュバックを使用できるようにします。

構文

DBMS_FLASHBACK.ENABLE_AT_TIME (
query_time   IN TIMESTAMP);

パラメータ

表70-5 ENABLE_AT_TIMEプロシージャのパラメータ

パラメータ

説明

query_time

これは、TIMESTAMPタイプの入力パラメータです。タイム・スタンプは次の方法で指定できます。

- TIMESTAMPコンストラクタの使用。

EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(TIMESTAMP '2001-01-09 12:31:00').

グローバリゼーション・サポート(NLS)フォーマットを使用し、文字列を指定します。フォーマットは、グローバリゼーション・サポートの設定により異なります。

- TO_TIMESTAMPファンクションの使用。

EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(TO_TIMESTAMP('12-02-2001 14:35:00', 'DD-MM-YYYY HH24:MI:SS'))

使用する書式を指定します。この例では、2001年2月12日午後2時35分のTO_TIMESTAMPファンクションを示しています。

- 問合せ時間から時間が省略された場合、デフォルトはその日の午前12時となります。

- 問合せ時間にタイム・ゾーンが含まれる場合、タイム・ゾーンの情報は切り捨てられるので注意してください。

GET_SYSTEM_CHANGE_NUMBERファンクション

このファンクションは、現在のSCNをOracleの数値データ・タイプとして戻します。現行の変更番号を取得し、後で使用するために保存できます。これは特定のスナップショットの保存に便利です。

構文

DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER
RETURN NUMBER;

TRANSACTION_BACKOUTプロシージャ

このプロシージャは、一連のトランザクションをバックアウトするためのメカニズムを提供します。ユーザーは、トランザクション名またはトランザクション識別子(XIDS)のいずれかを指定して、これらのプロシージャをコールできます。

このプロシージャは、トランザクションの依存性の分析、DMLの実行およびサブプログラムで実行された操作に対する広範囲なレポートの生成を行います。このプロシージャは、トランザクション・バックアウトの一部として実行されたDMLはコミットしません。ただし、行および表に対する必要なロックを正しい形式で保持するため、他の依存性がシステムに入力されることはありません。変更を永続的なものにするには、明示的にトランザクションをコミットする必要があります。

システム表DBA_FLASHBACK_TRANSACTION_STATEおよびDBA_FLASHBACK_TRANSACTION_REPORTにレポートが生成されます。

構文

DBMS_FLASHBACK.TRANSACTION_BACKOUT
numtxns            NUMBER,
xids               XID_ARRAY,
options            NUMBER default NOCASCADE,
timeHint           TIMESTAMP default MINTIME);

DBMS_FLASHBACK.TRANSACTION_BACKOUT
numtxns            NUMBER,
xids               XID_ARRAY,
options            NUMBER default NOCASCADE,
scnHint            TIMESTAMP default 0   );

DBMS_FLASHBACK.TRANSACTION_BACKOUT
numtxns           NUMBER,
txnnames          TXNAME_ARRAY,
options           NUMBER default NOCASCADE,
timehint          TIMESTAMP MINTIME );

DBMS_FLASHBACK.TRANSACTION_BACKOUT
numtxns           NUMBER,
txnNames         TXNAME_ARRAY,
options          NUMBER default NOCASCADE,
scnHint          NUMBER 0);

パラメータ

表70-6 TRANSACTION_BACKOUTプロシージャのパラメータ

パラメータ

説明

numtxns

入力として渡されたトランザクションの数。

xid

配列の形式でのトランザクション識別子のリスト。

txnnames

配列の形式でのトランザクション名のリスト。

options

次のように、依存しているトランザクションをバックアウトします。

- NOCASCADE: 依存性は期待されていません。依存性が検出された場合は、エラーが発生し、最初の依存トランザクションがレポートに表示されます。

- NOCASCADE_FORCE: ユーザーは、依存トランザクションを考慮せずに、指定したトランザクションを強制的にバックアウトします。RDBMSによって、指定したトランザクションに対して、コミット時と逆の順序でUNDO SQLが実行されます。制約違反がなく、結果に問題がない場合、ユーザーは、変更をコミット(COMMIT)するか、またはロールバック(ROLL BACK)します。

- NONCONFLICT_ONLY: このオプションを使用すると、指定したトランザクションの競合が発生していない行に対する変更をバックアウトできます。トランザクションの依存性は、WAWまたは主キー制約/一意キー制約による行の競合が原因で発生する可能性があります。競合が発生していない行のみのバックアウトをユーザーが選択した場合は、データベースの一貫性に問題が発生することはありませんが、トランザクションの原子性は失われます。これはリカバリ操作であるため、ユーザーはデータを修正できます。

- CASCADE: 指定したトランザクションおよびその依存性を後順(コミット時の逆の順序)で完全に削除します。

timehint

トランザクションの開始に関する時間ヒント。

scnhint

トランザクションの開始に関するSCNヒント。

使用上の注意

注意:
TRANSACTION_BACKOUTを使用する際の制限については、『Oracle Database開発ガイド』のフラッシュバック・トランザクションの使用に関する項を参照してください。

- トランザクション名を使用する場合は、時間ヒントを指定する必要があります。時間ヒントは、指定したすべてのトランザクションがバックアウトを開始する前の時間にする必要があります。

- SCNヒントを指定する場合、その値は、指定した入力セット内で最も古いトランザクションの開始前にする必要があり、それ以外の値では、エラーが発生してプロシージャが終了します。指定せず、トランザクションがUNDO保存内でコミットされた場合は、データベース・システムで開始時刻を特定できます。

71 DBMS_FLASHBACK_ARCHIVE

DBMS_FLASHBACK_ARCHIVEパッケージには、次の様々な作業を実行するためのプロシージャが含まれています。

- フラッシュバック・データ・アーカイブ(FDA)が有効な表の基礎となるFDAからの関連付けの解除および基礎となるFDAとの再関連付け

- アプリケーション表の改ざん防止。

- ユーザー履歴のインポート

注意:
ユーザーが生成した履歴をインポートすると、不正確で信頼性のない結果となる可能性があります。このプロシージャを使用する場合は、事前にOracleサポートに連絡してください。

- セッション・レベルでの有効な時間のサポートの有効化および無効化

関連項目:
詳細は、『Oracle Database開発ガイド』のフラッシュバック・データ・アーカイブ(Oracle Temporal)の使用方法に関する項を参照してください。

この章では、次の項目について説明します。

- DBMS_FLASHBACK_ARCHIVEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_FLASHBACK_ARCHIVEサブプログラムの要約

DBMS_FLASHBACK_ARCHIVEの使用方法

- 概要

- セキュリティ・モデル

- 定数

概要

フラッシュバック・データ・アーカイブ(FDA)は、ユーザーのために作成およびメンテナンスする内部履歴表を厳重に保護します。

読取り専用のセマンティクスによって、DBAを含むユーザーは、フラッシュバック・データ・アーカイブ内部履歴表の更新、削除および挿入が禁止されています。ユーザーがこれらの表に関するDDL文を発行することも禁止されています。この厳密なセキュリティの施行により、規制遵守やコンプライアンスが求められる環境でアプリケーションの要件に適合します。フラッシュバック・データ・アーカイブは、表定義の変更やデータの移動を行う文を含む、一般的なDDL文のほとんどをサポートしています。ただし、一部のDDL文は、フラッシュバック・データ・アーカイブが有効な表でサポートされていません。アプリケーション・ソフトウェアのアップグレードにおいては、ほとんどのアプリケーション・スキーマが変更されるため、追跡された表でのDDL操作の実行は不可欠です。

フラッシュバック・データ・アーカイブでサポートされていないDDL文の使用を必要とするアプリケーション・アップグレードやその他の表メンテナンス・タスク中にスキーマの進化をサポートするために、DBMS_FLASHBACK_ARCHIVEパッケージは簡単に使用できる、次のPL/SQLプロシージャのセットを提供しています。

- フラッシュバック・データ・アーカイブが有効な元表と基礎となるFDAの関連付けを解除する。

- 一時的に関連付けを解除した元表を基礎となるFDAに再関連付けする。

ユーザーが元表とFDAの関連付けを解除した後は、元表またはFDAの履歴表で任意のDDL文を発行することができます。スキーマの変更が完了したら、ユーザーは元表とFDAの再関連付けを行い、フラッシュバック・データ・アーカイブ保護が機能して、自動追跡とアーカイブを再開します。

セキュリティ・モデル

ユーザー生成履歴のインポート、コンテキスト・レベルの設定および表の改ざん防止を実行するために、ユーザーはFLASHBACK_ARCHIVE_ADMINISTER権限を必要とします。表の関連付けが解除されると、ユーザーに必要な権限があれば、DDLおよびDML文を表に対して実行できます。セッション・レベルでの有効な時間の一時フラッシュバックを有効および無効にする場合、それ以外の権限は必要ありません。

注意:
関連付けを解除した表のコンプライアンス履歴は保証されません。表の関連付けを解除する場合は、事前にOracleサポートに連絡してください。

定数

DBMS_FLASHBACK_ARCHIVEパッケージでは、表71-1に示す定数が使用されます。

表71-1 DBMS_FLASHBACK_ARCHIVEの定数

定数

タイプ

値

説明

NODROP

BINARY_INTEGER

1

一時履歴表を削除しない。

NOCOMMIT

BINARY_INTEGER

2

トランザクションをコミットしない。

NODELETE

BINARY_INTEGER

4

履歴表のデータを削除しない。

DBMS_FLASHBACK_ARCHIVEサブプログラムの要約

表71-2 DBMS_FLASHBACK_ARCHIVEパッケージのサブプログラム

サブプログラム

説明

ADD_TABLE_TO_APPLICATIONプロシージャ

アプリケーション名を取得し、そのアプリケーションにセキュリティ表としての表を追加します。

CREATE_TEMP_HISTORY_TABLEプロシージャ

スキーマ内の適切な定義を使用してTEMP_HISTORYという表を作成します。

DISABLE_APPLICATIONプロシージャ

アプリケーション名を取得し、その中の表をセキュリティ表としてマークします。

DISABLE_ASOF_VALID_TIMEプロシージャ

セッション・レベルの有効な時間のフラッシュバックを無効にします。

DISASSOCIATE_FBAプロシージャ

指定した表とフラッシュバック・データ・アーカイブの関連付けを解除します。

DROP_APPLICATIONプロシージャ

アプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。

ENABLE_APPLICATIONプロシージャ

アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを有効にします。

ENABLE_AT_VALID_TIMEプロシージャ

セッション・レベルの有効な時間のフラッシュバックを有効にします。

EXTEND_MAPPINGSプロシージャ

時間マッピングを過去の時間に拡張します。

GET_SYS_CONTEXTファンクション

SET_CONTEXT_LEVELプロシージャによって以前に選択されたコンテキストを取得します。

IMPORT_HISTORYプロシージャ

指定したスキーマ内のTEMP_HISTORYという表から履歴をインポートします。

LOCK_DOWN_APPLICATIONプロシージャ

アプリケーション名を取得し、そのすべてのセキュリティ表を読取り専用にします。SYSTEMというグループはロックできません。

PURGE_CONTEXTプロシージャ

SET_CONTEXT_LEVELプロシージャによって選択された保存対象のコンテキストをパージします。

REASSOCIATE_FBAプロシージャ

指定した表をフラッシュバック・データ・アーカイブと再関連付けします。

REGISTER_APPLICATIONプロシージャ

アプリケーション名およびオプションでフラッシュバック・データ・アーカイブを取得し、データベース強化用にアプリケーションを登録します。

REMOVE_TABLE_FROM_APPLICATIONプロシージャ

アプリケーション名を取得し、その中の表をセキュリティ表ではなくなったものとしてマークします。

SET_CONTEXT_LEVELプロシージャ

ユーザー・コンテキストがどの程度保存されるかを定義します。

ADD_TABLE_TO_APPLICATIONプロシージャ

このプロシージャは、アプリケーション名を取得し、そのアプリケーションにセキュリティ表としての表を追加します。アプリケーションでフラッシュバック・データ・アーカイブが有効な場合、この表でもフラッシュバック・データ・アーカイブが有効です。

構文

DBMS_FLASHBACK_ARCHIVE.ADD_TABLE_TO_APPLICATION (
application_name           IN   VARCHAR2,
table_name                 IN   VARCHAR2,
schema_name                IN   VARCHAR2 := NULL);

パラメータ

表71-3 ADD_TABLE_TO_APPLICATIONプロシージャのパラメータ

パラメータ

説明

application_name

セキュリティ表としての表が追加されたアプリケーションの名前。

table_name

指定されたアプリケーションにセキュリティ表として追加される表の名前。

schema_name

目的の表を格納しているスキーマの名前。スキーマ名が指定されない場合は、現行のスキーマが使用されます。

CREATE_TEMP_HISTORY_TABLEプロシージャ

このプロシージャは、スキーマ内の適切な定義を使用してTEMP_HISTORYという表を作成します。

構文

DBMS_FLASHBACK_ARCHIVE.CREATE_TEMP_HISTORY_TABLE (
owner_name1      IN   VARCHAR2,
table_name1      IN   VARCHAR2);

パラメータ

表71-4 CREATE_TEMP_HISTORY_TABLEプロシージャのパラメータ

パラメータ

説明

owner_name1

フラッシュバック・データ・アーカイブが有効な表のスキーマ。

table_name1

フラッシュバック・データ・アーカイブが有効な表の名前。

DISABLE_APPLICATIONプロシージャ

このプロシージャは、アプリケーション名を取得し、そのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを無効にします。

構文

DBMS_FLASHBACK_ARCHIVE.DISABLE_APPLICATION (
application_name           IN   VARCHAR2);

パラメータ

表71-5 DISABLE_APPLICATIONプロシージャのパラメータ

パラメータ

説明

application_name

フラッシュバック・データ・アーカイブが無効にされるセキュリティ表のアプリケーションの名前。

DISABLE_ASOF_VALID_TIMEプロシージャ

このプロシージャは、セッション・レベルの有効な時間のフラッシュバックを無効にします。

構文

DBMS_FLASHBACK_ARCHIVE.DISABLE_ASOF_VALID_TIME;

DISASSOCIATE_FBAプロシージャ

このプロシージャは、指定した表とフラッシュバック・データ・アーカイブの関連付けを解除します。

構文

DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA (
owner_name     IN    VARCHAR2,
table_name     IN    VARCHAR2);

パラメータ

表71-6 DISASSOCIATE_FBAプロシージャのパラメータ

パラメータ

説明

owner_name

フラッシュバック・データ・アーカイブが有効な元表のスキーマ。

table_name

フラッシュバック・データ・アーカイブが有効な元表の名前。

例外

表71-7 DISASSOCIATE_FBAプロシージャの例外

パラメータ

説明

ORA-55602

ユーザー表がフラッシュバック・データ・アーカイブに対して有効ではありません。

ORA-55634

関連付けを解除するためのロックを表で取得できません。

DROP_APPLICATIONプロシージャ

このプロシージャはアプリケーション名を取得し、このアプリケーションをアプリケーション・リストから削除します。このプロシージャの一部として、セキュリティが有効なすべての表のフラッシュバック・データ・アーカイブが無効にされて、すべての履歴データが失われます。SYSTEMというグループは削除できません。

構文

DBMS_FLASHBACK_ARCHIVE.DROP_APPLICATION (
application_name           IN   VARCHAR2);

パラメータ

表71-8 DROP_APPLICATIONプロシージャのパラメータ

パラメータ

説明

application_name

セキュリティ表としての表が追加されたアプリケーションの名前。

ENABLE_APPLICATIONプロシージャ

このプロシージャは、アプリケーション名を取得し、このアプリケーションのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを有効にします。アプリケーションを有効にすると、FDAが有効な表へのすべての変更が追跡されます。

構文

DBMS_FLASHBACK_ARCHIVE.ENABLE_APPLICATION (
application_name           IN   VARCHAR2);

パラメータ

表71-9 ENABLE_APPLICATIONプロシージャのパラメータ

パラメータ

説明

application_name

アプリケーションの名前。このアプリケーションのすべてのセキュリティ表のフラッシュバック・データ・アーカイブを有効にします。

ENABLE_AT_VALID_TIMEプロシージャ

このプロシージャは、セッション・レベルの有効な時間のフラッシュバックを有効にします。

構文

DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME (
level          IN    VARCHAR2,
query_time     IN    TIMESTAMP DEFAULT SYSTIMESTAMP);

パラメータ

表71-10 ENABLE_AT_VALID_TIMEプロシージャのパラメータ

パラメータ

説明

level

オプション:

- All: 一時データの可視性を表全体に設定します。これは一時表のデフォルトの可視性です。

- CURRENT: 一時データの可視性を、セッション・レベルで有効期間内にある現在有効なデータに対して設定します。

- ASOF: 一時データの可視性を、タイムスタンプで定義された特定の時間に有効なデータに対して設定します。

query_time

レベルがASOFのときにのみ使用されます。このquery_timeの時点で有効なデータのみ表示されます。

EXTEND_MAPPINGSプロシージャ

このプロシージャは、時間マッピングを過去の時間に拡張します。

構文

DBMS_FLASHBACK_ARCHIVE.EXTEND_MAPPINGS;

GET_SYS_CONTEXTファンクション

このファンクションは、SET_CONTEXT_LEVELプロシージャによって以前に選択されたコンテキストを取得します。

構文

DBMS_FLASHBACK_ARCHIVE.GET_SYS_CONTEXT (
xid            IN   RAW,
namespace      IN   VARCHAR2,
parameter      IN   VARCHAR2)
RETURN VARCHAR2;

パラメータ

表71-11 GET_SYS_CONTEXTファンクションのパラメータ

パラメータ

説明

xid

トランザクション識別子は、バージョン問合せによって取得されたトランザクションへの不透明なハンドルです。

namespace

名前空間。

parameter

未定義の場合、サブプログラムはNULLを戻します。

IMPORT_HISTORYプロシージャ

このプロシージャは、CREATE_TEMP_HISTORY_TABLEプロシージャが起動されて、TEMP_HISTORY表にユーザーが生成した履歴データが移入された後にコールされます。

注意:
ユーザーが生成した履歴をインポートすると、不正確で信頼性のない結果となる可能性があります。このプロシージャを使用する場合は、事前にOracleサポートに連絡してください。

構文

DBMS_FLASHBACK_ARCHIVE.IMPORT_HISTORY (
owner_name1         IN   VARCHAR2,
table_name1         IN   VARCHAR2
temp_history_name   IN   VARCHAR2 DEFAULT 'TEMP_HISTORY',
options             IN   BINARY_INTEGER DEFAULT 0);

パラメータ

表71-12 IMPORT_HISTORYプロシージャのパラメータ

パラメータ

説明

owner_name1

フラッシュバック・データ・アーカイブが有効な表のスキーマ。

table_name1

フラッシュバック・データ・アーカイブが有効な表の名前。

temp_history_name

履歴データのインポート元になる、オプションの一時履歴表。

options

一時履歴表の削除、変更のコミット、または消去用に指定する定数(NODROP、NOCOMMITまたはNODELETE)のいずれか(または組合せ)。

使用上の注意

データベース・ファンクションTIMESTAMP_TO_SCNは、一時履歴表にデータを移入するときに、時間をSCNに変換するために使用できます。

LOCK_DOWN_APPLICATIONプロシージャ

このプロシージャはアプリケーション名を取得し、そのすべてのセキュリティ表を読取り専用にします。SYSTEMというグループはロックできません。

構文

DBMS_FLASHBACK_ARCHIVE.LOCK_DOWN_APPLICATION (
application_name           IN   VARCHAR2);

パラメータ

表71-13 LOCK_DOWN_APPLICATIONプロシージャのパラメータ

パラメータ

説明

application_name

セキュリティ表としての表が追加されたアプリケーションの名前。

PURGE_CONTEXTプロシージャ

このプロシージャは、SET_CONTEXT_LEVELプロシージャによって選択された保存対象のコンテキストをパージします。

構文

DBMS_FLASHBACK_ARCHIVE.PURGE_CONTEXT;

REASSOCIATE_FBAプロシージャ

このプロシージャは、指定した表とフラッシュバック・データ・アーカイブを再関連付けします。

構文

DBMS_FLASHBACK_ARCHIVE.REASSOCIATE_FBA (
owner_name      VARCHAR2,
table_name      VARCHAR2);

パラメータ

表71-14 REASSOCIATE_FBAプロシージャのパラメータ

パラメータ

説明

owner_name

フラッシュバック・データ・アーカイブが有効な元表のスキーマ。

table_name

フラッシュバック・データ・アーカイブが有効な元表の名前。

例外

表71-15 REASSOCIATE_FBAプロシージャの例外

パラメータ

説明

ORA-55602

ユーザー表がフラッシュバック・データ・アーカイブに対して有効ではありません。

ORA-55636

表定義の検証に失敗しました。

使用上の注意

- 元表と履歴表の定義が同一でない場合、プロシージャはエラーを通知します。たとえば、列が追加された場合や表が分割された場合は、元表と履歴表のスキーマが同じであることが必要です。

- FDA内部履歴表のスキーマには行バージョンのメタデータ列があります。ユーザーに削除されたメタデータ列がある場合、プロシージャはエラーを通知します。

REGISTER_APPLICATIONプロシージャ

このプロシージャは、アプリケーション名およびオプションでフラッシュバック・データ・アーカイブを取得し、データベース強化用にアプリケーションを登録します。データベース強化が有効な場合、指定されたフラッシュバック・データ・アーカイブを使用して、そのアプリケーションのすべてのセキュリティ表のフラッシュバック・データ・アーカイブが有効になります。フラッシュバック・データ・アーカイブが指定されていない場合、デフォルトのフラッシュバック・データ・アーカイブが使用されます。

関連項目:
データベース強化の詳細は、『Oracle Database開発ガイド』の「フラッシュバック・データ・アーカイブの使用方法」を参照してください。

構文

DBMS_FLASHBACK_ARCHIVE.REGISTER_APPLICATION (
application_name           IN   VARCHAR2,
flashback_archive_name     IN    VARCHAR2 := NULL);

パラメータ

表71-16 REGISTER_APPLICATIONプロシージャのパラメータ

パラメータ

説明

application_name

登録するアプリケーションの名前。アプリケーションSYSTEMはパッケージの作成時にすでに登録されており、データベース強化に必要とされる表のリストが移入されます。

flashback_archive_name

指定されたアプリケーションのセキュリティ表の履歴データが格納されているフラッシュバック・データ・アーカイブの名前。フラッシュバック・データ・アーカイブが指定されていない場合、デフォルトのフラッシュバック・データ・アーカイブが使用されます。

REMOVE_TABLE_FROM_APPLICATIONプロシージャ

このプロシージャはアプリケーション名を取得し、その中の表をセキュリティ表ではなくなったものとしてマークします。アプリケーションのフラッシュバック・データ・アーカイブがすでに有効な場合、この表のフラッシュバック・データ・アーカイブは無効になります。

構文

DBMS_FLASHBACK_ARCHIVE.REMOVE_TABLE_TO_APPLICATION (
application_name           IN   VARCHAR2,
table_name                 IN   VARCHAR2,
schema_name                IN   VARCHAR2 := NULL);

パラメータ

表71-17 REMOVE_TABLE_FROM_APPLICATIONプロシージャのパラメータ

パラメータ

説明

application_name

セキュリティ表のリストから表が削除されるアプリケーションの名前。

table_name

指定したアプリケーションのセキュリティ表ではなくなったことがマークされる表の名前。

schema_name

目的の表を格納しているスキーマの名前。スキーマ名が指定されない場合は、現行のスキーマが使用されます。

SET_CONTEXT_LEVELプロシージャ

このプロシージャは、ユーザー・コンテキストがどの程度保存されるかを定義します。

構文

DBMS_FLASHBACK_ARCHIVE.SET_CONTEXT_LEVEL (
level          VARCHAR2);

パラメータ

表71-18 SET_CONTEXT_LEVELプロシージャのパラメータ

パラメータ

説明

level

ユーザー・コンテキストをどの程度保存する必要があるかを指定できます。

- ALL: SYS_CONTEXT全体。

- TYPICAL: ユーザーID、グローバル・ユーザーIDおよびホスト名。

- NONE: なし。

72 DBMS_GOLDENGATE_AUTH

DBMS_GOLDENGATE_AUTHパッケージでは、GoldenGate管理者への権限付与およびGoldenGate管理者からの権限取消しを行うためのサブプログラムが提供されます。

この章では、次の項目について説明します。

- DBMS_GOLDENGATE_AUTHの使用

- 概要

- セキュリティ・モデル

- DBMS_GOLDENGATE_AUTHサブプログラムの要約

関連項目:
「DBMS_XSTREAM_AUTHパッケージ」の「GRANT_ADMIN_PRIVILEGEプロシージャ」

DBMS_GOLDENGATE_AUTHの使用

この項では、DBMS_GOLDENGATE_AUTHパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージでは、GoldenGate管理者への権限付与およびGoldenGate管理者からの権限取消しを行うためのサブプログラムが提供されます。GoldenGate管理者は、GoldenGateとXStream Outの統合された構成を管理します。

GoldenGate管理者は、マルチテナント・コンテナ・データベース(CDB)で使用できます。CDBは、ユーザーが作成した0以上のプラガブル・データベース(PDB)を含むOracle Databaseです。

関連項目:

- 「DBMS_XSTREAM_AUTHパッケージ」の「GRANT_ADMIN_PRIVILEGEプロシージャ」

- Oracle Database XStreamガイド

- CDBおよびPDBの詳細は、『Oracle Database概要』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、このパッケージを使用するときに、ユーザーの作成、権限の付与および表領域の作成を行うことができる管理ユーザーとして接続します。

DBMS_GOLDENGATE_AUTHサブプログラムの要約

表72-1 DBMS_GOLDENGATE_AUTHパッケージのサブプログラム

サブプログラム

説明

GRANT_ADMIN_PRIVILEGEプロシージャ

ユーザーにGoldenGate管理者になるために必要な権限を直接付与するか、またはこれらの権限を付与するスクリプトを生成します。

REVOKE_ADMIN_PRIVILEGEプロシージャ

ユーザーからGoldenGate管理者の権限を直接取り消すか、これらの権限を取り消すスクリプトを生成します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

GRANT_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、ユーザーにGoldenGate管理者になるために必要な権限を付与します。

関連項目:
「DBMS_XSTREAM_AUTHパッケージ」の「GRANT_ADMIN_PRIVILEGEプロシージャ」

構文

DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee                    IN  VARCHAR2,
privilege_type             IN  VARCHAR2  DEFAULT '*',
grant_select_privileges    IN  BOOLEAN   DEFAULT TRUE,
do_grants                  IN  BOOLEAN   DEFAULT TRUE,
file_name                  IN  VARCHAR2  DEFAULT NULL,
directory_name             IN  VARCHAR2  DEFAULT NULL
grant_optional_privileges  IN  VARCHAR2  DEFAULT NULL,
container                  IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表72-2 GRANT_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

grantee

権限を付与するユーザー。

privilege_type

次のいずれかの値を指定します。

- CAPTURE
CAPTUREを指定すると、ユーザーにOracle GoldenGate統合抽出を管理するために必要な最低限の権限が付与されます。

- APPLY
APPLYを指定すると、ユーザーにOracle GoldenGate統合Replicatを管理するために必要な最低限の権限が付与されます。

- *
*を指定すると、ユーザーにOracle GoldenGate統合抽出およびOracle GoldenGate統合Replicatを管理するために必要な最低限の権限が付与されます。

grant_select_privileges

TRUEを指定すると、SELECT_CATALOG_ROLEを含む一連の権限がユーザーに付与されます。この設定は、GoldenGate管理者のために推奨されます。

FALSEを指定すると、一連の権限がユーザーに付与されません。

SELECT_CATALOG_ROLEにより、ユーザーはデータ・ディクショナリから選択できます。

do_grants

TRUEを指定すると、指定した権限受領者に権限が直接付与され、権限受領者はDBA_GOLDENGATE_PRIVILEGESデータ・ディクショナリ・ビューに追加されます。このデータ・ディクショナリ・ビューにユーザーのエントリがすでにある場合、他のエントリは作成されず、エラーも発生しません。TRUEを指定すると、権限付与文が失敗した場合、エラーが発生します。

FALSEを指定すると、指定した権限受領者に権限は直接付与されず、権限受領者はDBA_GOLDENGATE_PRIVILEGESデータ・ディクショナリ・ビューに追加されません。後で実行するファイルをこのプロシージャで生成する場合は、FALSEを指定します。FALSEを指定し、file_nameパラメータまたはdirectory_nameパラメータがNULLの場合、エラーが発生します。

注意: do_grantsはTRUEに設定することをお薦めします。これは、多くのAPIがDBA_GOLDENGATE_PRIVILEGESビュー内でユーザーの存在を検査し、do_grantsがFALSEに設定されていると、このビューにデータが移入されないためです。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を付与するすべての文が格納されます。指定したファイル名のファイルが、指定したディレクトリ名にすでに存在する場合、既存のファイルに権限付与文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、プロシージャはファイルを生成しません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

grant_optional_privileges

権限受領者に付与するオプションの権限のカンマ区切りリスト。次に示すロールと権限を指定できます。

- XDBADMIN

- DV_XSTREAM_ADMIN

- DV_GOLDENGATE_ADMIN

- EXEMPT_ACCESS_POLICY

- EXEMPT_REDACTION_POLICY

container

CURRENTを指定すると、このプロシージャが起動されるコンテナでのみ、権限受領者に権限が付与されます。CURRENTは、ルートまたはPDBに接続している間に指定できます。

ALLを指定すると、このプロシージャの起動後に作成されたCDBのすべてのコンテナおよびすべてのPDBで、権限受領者に権限が付与されます。ALLを指定するには、共通ユーザーがこのプロシージャをルートから起動する必要があります。

コンテナ名を指定すると、指定したコンテナでのみ権限受領者への権限の付与が行われます。ルートを指定するには、ルートへの接続中にCDB$ROOTを使用します。PDBを指定するには、プロシージャをルートから起動する必要があります。

注意: このパラメータは、CDBのみに適用されます。

使用上の注意

このプロシージャを実行するユーザーは他のユーザーに権限を付与できる管理ユーザーである必要があります。

特に、このプロシージャは指定したユーザーに次の権限を付与します。

- RESTRICTED SESSIONシステム権限。

- 次のパッケージに対するEXECUTE権限。

- DBMS_APPLY_ADM

- DBMS_AQ

- DBMS_AQADM

- DBMS_AQIN

- DBMS_AQELM

- DBMS_CAPTURE_ADM

- DBMS_FLASHBACK

- DBMS_LOCK

- DBMS_PROPAGATION_ADM

- DBMS_RULE_ADM

- DBMS_STREAMS_ADM

- DBMS_STREAMS_ADVISOR_ADM

- DBMS_STREAMS_HANDLER_ADM

- DBMS_STREAMS_MESSAGING

- DBMS_TRANSFORM

- DBMS_XSTREAM_ADM

- キューにメッセージをエンキューし、キューからメッセージをデキューする権限。

- キューを管理する権限。

- ユーザー固有のスキーマおよびその他のスキーマの次のタイプのオブジェクトを作成、変更、実行する権限。

- 評価コンテキスト

- ルール・セット

- ルール

さらに、権限受領者は次の権限を他のユーザーに付与できます。

- SELECT_CATALOG_ROLE

- GoldenGateおよびOracle Streamsに関連するデータ・ディクショナリ・ビューに対するSELECTまたはREAD権限。

- リモートGoldenGate管理者が、権限受領者に接続することによって、データベース・リンクを介して、管理操作を実行できるようにする機能。
この機能は、このパッケージのGRANT_REMOTE_ADMIN_ACCESSプロシージャを実行することによって可能になります。

注意:
このプロシージャは、GoldenGate環境の構成および管理に必要な権限のみを付与します。必要に応じて、追加権限を権限受領者に付与できます。

関連項目:
「DBMS_XSTREAM_AUTHパッケージ」の「GRANT_ADMIN_PRIVILEGEプロシージャ」

REVOKE_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、GoldenGateの管理者権限をユーザーから取り消します。

構文

DBMS_GOLDENGATE_AUTH.REVOKE_ADMIN_PRIVILEGE(
grantee                     IN  VARCHAR2,
privilege_type              IN  VARCHAR2  DEFAULT '*',
revoke_select_privileges    IN  BOOLEAN   DEFAULT FALSE,
do_revokes                  IN  BOOLEAN   DEFAULT TRUE,
file_name                   IN  VARCHAR2  DEFAULT NULL,
directory_name              IN  VARCHAR2  DEFAULT NULL
revoke_optional_privileges  IN  VARCHAR2  DEFAULT NULL,
container                   IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表72-3 REVOKE_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

grantee

権限を取り消すユーザー。

privilege_type

次のいずれかの値を指定します。

- CAPTURE
CAPTUREを指定すると、Oracle GoldenGate統合抽出を管理するために必要な最低限の権限がユーザーから取り消されます。

- APPLY
APPLYを指定すると、Oracle GoldenGate統合Replicatを管理するために必要な最低限の権限がユーザーから取り消されます。

- *
*を指定すると、Oracle GoldenGate統合抽出およびOracle GoldenGate統合Replicatを管理するために必要な最低限の権限がユーザーから取り消されます。

revoke_select_privileges

TRUEを指定すると、SELECT_CATALOG_ROLEがユーザーから取り消されます。

FALSEを指定すると、SELECT_CATALOG_ROLEがユーザーから取り消されません。

SELECT_CATALOG_ROLEにより、ユーザーはデータ・ディクショナリから選択できます。

do_revokes

TRUEを指定すると、指定したユーザーから権限が直接取り消され、DBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーが削除されます。このデータ・ディクショナリ・ビューにユーザーのレコードがない場合、ビューからレコードは削除されず、エラーも発生しません。TRUEを指定すると、権限取消し文が失敗した場合、エラーが発生します。取り消そうとしている権限がユーザーに付与されていない場合、権限取消し文は失敗します。

FALSEを指定すると、指定したユーザーの権限は直接取り消されず、DBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーは削除されません。

後で実行するファイルをこのプロシージャで生成する場合は、FALSEを指定します。FALSEに設定すると、file_nameまたはdirectory_nameパラメータのいずれかがNULLの場合、エラーは発生しません。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を取り消すすべての文が格納されます。指定したファイル名のファイルが指定したディレクトリ名にすでに存在する場合、既存のファイルに権限取消し文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、ファイルは生成されません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

revoke_optional_privileges

DV_XSTREAM_ADMIN権限やDV_GOLDENGATE_ADMIN権限など、権限受領者から取り消すオプション権限のカンマ区切りのリスト。

container

CURRENTを指定すると、このプロシージャが起動されるコンテナでのみ、権限受領者から権限が取り消されます。CURRENTは、ルートまたはPDBに接続している間に指定できます。

ALLを指定すると、CDBのすべてのコンテナで、権限受領者から権限が取り消されます。ALLを指定するには、このプロシージャをルートから起動する必要があります。

コンテナ名を指定すると、指定したコンテナでのみ権限受領者の権限が取り消されます。ルートを指定するには、ルートへの接続中にCDB$ROOTを使用します。PDBを指定するには、プロシージャをルートから起動する必要があります。

注意: このパラメータは、CDBのみに適用されます。

使用上の注意

このプロシージャを実行するユーザーは他のユーザーから権限を取り消せる管理ユーザーである必要があります。特に、このプロシージャは、このパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを実行して付与された権限を取り消します。

関連項目:
「GRANT_ADMIN_PRIVILEGEプロシージャ」

73 DBMS_FREQUENT_ITEMSET

DBMS_FREQUENT_ITEMSETパッケージは頻度の高い項目セットのカウントを可能にします。2つのファンクションは入力カーソル形式の違いを除けば同じものです。

この章では、次の項目について説明します。

- DBMS_FREQUENT_ITEMSETサブプログラムの要約

DBMS_FREQUENT_ITEMSETサブプログラムの要約

表73-1 DBMS_FREQUENT_ITEMSETパッケージのサブプログラム

サブプログラム

説明

FI_HORIZONTALファンクション

'HORIZONTAL'行形式の入力データのカーソル、サポートしきい値、最小項目セット長、最大項目セット長、含める項目、除外する項目を指定して、すべての頻度の高い項目セットをカウントします。

FI_TRANSACTIONALファンクション

'TRANSACTIONAL'行形式の入力データのカーソル、サポートしきい値、最小項目セット長、最大項目セット長、含める項目、除外する項目を指定して、すべての頻度の高い項目セットをカウントします。

FI_HORIZONTALファンクション

この表ファンクションの目的は、'HORIZONTAL'行形式の入力データのカーソル、サポートしきい値、最小項目セット長、最大項目セット長、含める項目、除外する項目を指定して、すべての頻度の高い項目セットをカウントすることです。結果は、項目セット、サポート、長さ、カウントされたトランザクション合計数の形式の行からなる表になります。

'HORIZONTAL'行形式では、各行に単一のトランザクションのすべての項目IDが含まれます。すべての項目が一緒に出力されるため、トランザクションIDは必要ありません。

この表ファンクションの利点は、アプリケーションのデータがすでに水平形式で保持されている場合に、データベースがトランザクション形式の行を水平形式に変換する手順をスキップできることです。

構文

DBMS_FREQUENT_ITEMSET.FI_HORIZONTAL(
tranx_cursor         IN    SYSREFCURSOR,
support_threshold    IN    NUMBER,
itemset_length_min   IN    NUMBER,
itemset_length_max   IN    NUMBER,
including_items      IN    SYS_REFCURSOR DEFAULT NULL,
excluding_items      IN    SYS_REFCURSOR DEFAULT NULL)
RETURN TABLE OF ROW (
itemset [Nested Table of Item Type DERIVED FROM tranx_cursor],
support        NUMBER,
length         NUMBER,
total_tranx    NUMBER);

パラメータ

表73-2 FI_HORIZONTALファンクションのパラメータ

パラメータ

説明

tranx_cursor

ファンクションのコール時にユーザーが指定するカーソル・パラメータ。戻される列数に制限はありません。カーソルの各列が項目を表します。カーソルのすべての列が同じデータ・タイプである必要があります。項目IDは数値タイプまたは文字タイプである必要があります(VARCHAR2(n)など)。

support_threshold

トランザクション合計カウントの分数。項目セットは、[発生したトランザクション数]÷[トランザクション合計数]がこの分数を超える場合に「頻度の高い」と呼ばれます。パラメータはNUMBERである必要があります。

itemset_length_min

対象となる頻度の高い項目セットの最小長。パラメータは1から20までのNUMBERである必要があります。

itemset_length_max

対象となる頻度の高い項目セットの最大長。このパラメータは1から20までのNUMBERで、itemset_length_min以上である必要があります。

including_items

項目のリストをフェッチするカーソル。戻される頻度の高い項目セットには、リストの項目が少なくとも1つ存在する必要があります。デフォルトはNULLです。

excluding_items

項目のリストをフェッチするカーソル。戻される頻度の高い項目セットにはリストの項目が含まれません。デフォルトはNULLです。

戻り値

表73-3 FI_HORIZONTALの戻り値

パラメータ

説明

support

頻度の高い項目セットが発生するトランザクション数。これはNUMBERとして戻されます。

itemset

頻度の高い項目セットとして計算される項目のコレクション。これは、入力カーソルの項目列タイプである項目タイプのネストした表として戻されます。

length

頻度の高い項目セットの項目数。これはNUMBERとして戻されます。

total_tranx

トランザクション合計数。これはNUMBERとして戻されます。

例

表horiz_table_inがあるとします。

horiz_table_in(iid1 VARCHAR2(30), iid2 VARCHAR2(30), iid3 VARCHAR2(30), iid4
VARCHAR2(30), iid5 VARCHAR2(30));

また、horiz_table_inのデータは次のようなものであるとします。

('apple', 'banana', NULL, NULL, NULL)
('apple', 'milk', 'banana', NULL, NULL)
('orange', NULL, NULL, NULL, NULL)

30%のサポートしきい値が指定された頻度の項目の組合せを見つけ、ただし、項目セットに('apple','banana','orange')のうちの少なくとも1つを含むが、('milk')を除外する必要があるとします。次の問合せを使用します。

CREATE TYPE fi_varchar_nt AS TABLE OF VARCHAR2(30);
SELECT CAST(itemset as FI_VARCHAR_NT)itemset, support, length, total_tranx
FROM table(DBMS_FREQUENT_ITEMSET.FI_HORIZONTAL(
CURSOR(SELECT iid1, iid2, iid3, iid4, iid5
FROM horiz_table_in),
0.3,
2,
5,
CURSOR(SELECT * FROM table(FI_VARCHAR_NT
('apple','banana','orange'))),
CURSOR(SELECT * FROM table(FI_VARCHAR_NT('milk')))));

FI_TRANSACTIONALファンクション

このプロシージャは、'TRANSACTIONAL'行形式の入力データのカーソル、サポートしきい値、最小項目セット長、最大項目セット長、含める項目、除外する項目を指定して、すべての頻度の高い項目セットをカウントします。結果は項目セット、サポート、長さ、トランザクション合計数の形式の行からなる表になります。

'TRANSACTIONAL'行形式では、各トランザクションが複数行にわたります。指定したトランザクションのすべての行のトランザクションIDは同じであり、各行の項目IDは異なります。指定したトランザクションIDを共有するすべての項目IDを組み合せると、単一のトランザクションになります。

構文

DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL (
tranx_cursor         IN    SYSREFCURSOR,
support_threshold    IN    NUMBER,
itemset_length_min   IN    NUMBER,
itemset_length_max   IN    NUMBER,
including_items      IN    SYS_REFCURSOR DEFAULT NULL,
excluding_items      IN    SYS_REFCURSOR DEFAULT NULL)
RETURN TABLE OF ROW (
itemset [Nested Table of Item Type DERIVED FROM tranx_cursor],
support        NUMBER,
length         NUMBER,
total_tranx    NUMBER);

パラメータ

表73-4 FI_TRANSACTIONALファンクションのパラメータ

パラメータ

説明

tranx_cursor

ファンクションのコール時にユーザーが指定するカーソル・パラメータ。戻される行に2つの列があり、先頭の列はトランザクションIDで、2番目の列は項目IDです。項目IDは数値タイプまたは文字タイプである必要があります(VARCHAR2(n)など)。

support_threshold

トランザクション合計カウントの分数。項目セットは、[発生したトランザクション数]÷[トランザクション合計数]がこの分数を超える場合に「頻度の高い」と呼ばれます。パラメータはNUMBERである必要があります。

itemset_length_min

対象となる頻度の高い項目セットの最小長。パラメータは1から20までのNUMBERである必要があります。

itemset_length_max

対象となる頻度の高い項目セットの最大長。このパラメータは1から20までのNUMBERで、itemset_length_min以上である必要があります。

including_items

項目のリストをフェッチするカーソル。戻される頻度の高い項目セットには、リストの項目が少なくとも1つ存在する必要があります。デフォルトはNULLです。

excluding_items

項目のリストをフェッチするカーソル。戻される頻度の高い項目セットにはリストの項目が含まれません。デフォルトはNULLです。

戻り値

表73-5 FI_TRANSACTIONALの戻り値

パラメータ

説明

support

頻度の高い項目セットが発生するトランザクション数。これはNUMBERとして戻されます。

itemset

頻度の高い項目セットとして計算される項目のコレクション。これは、入力カーソルの項目列タイプである項目タイプのネストした表として戻されます。

length

頻度の高い項目セットの項目数。これはNUMBERとして戻されます。

total_tranx

トランザクション合計数。これはNUMBERとして戻され、戻されるすべての行で同じになり、集計レポートと類似したものになります。

使用上の注意

アプリケーションは、入力項目タイプのネストした表タイプを事前定義し、表へのロードなど、処理を続ける前に、出力項目セットをこの事前定義されたネストした表タイプに変換する必要があります。

例

入力の表tranx_table_inが次のようなものであるとします。

(1, 'apple')
(1, 'banana')
(2, 'apple')
(2, 'milk')
(2, 'banana')
(3, 'orange')

ユーザーは60%のサポートしきい値を満たし、項目セット長が2以上の項目セット(つまり、(apple, banana))を検索しようとしています。

このファンクションの出力には、次の出力行が含まれます。

itemset=('apple','banana'), support=2, length=2, total_tranx=3

項目タイプがネストした表を作成してから、頻度の高い項目セットのカウントを実行する問合せを送信する必要があります。この例では、項目がVARCHAR2(30)であるため、VARCHAR2(30)のネストした表を作成する必要があります。

CREATE TYPE fi_varchar_nt AS TABLE OF VARCHAR2(30);
SELECT CAST(itemset as FI_VARCHAR_NT) itemset, support, length, total_tranx
FROM table(DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL(
cursor(SELECT tid, iid FROM tranx_table_in),
0.6,
2,
5,
NULL,
NULL));

カウントに特定の項目を含め、特定の項目を除外する方法についての別の例を以下に示します。

SELECT CAST(itemset as FI_VARCHAR_NT)itemset, support, length, total_tranx
FROM table(DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL(
CURSOR(SELECT tid, iid FROM tranx_table_in),
0.6,
2,
5,
CURSOR(SELECT * FROM table(FI_VARCHAR_NT
('apple','banana','orange'))),
CURSOR(SELECT * FROM table(FI_VARCHAR_NT('milk')))));

項目を含めるかまたは除外するパラメータを使用して、アプリケーションで要求されない項目セットを無視することで実行をさらに最適化できます。

また、コレクション・ネスト解除によって、トランザクション出力を使用することもできます。

SELECT
bt.setid, nt.*
FROM
(SELECT cast(Itemset as FI_VARCHAR_NT) itemset, rownum setid
FROM table(
DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL(
CURSOR(SELECT tid, iid FROM tranx_table_in), 0.6, 2, 5,
NULL, NULL))) bt,
table(bt.itemset) nt;

insert文を使用して、頻度の高い項目セットをネストした表にロードする場合は、パフォーマンスの観点から、NESTED_TABLE_FAST_INSERTヒントを使用することをお薦めします。

CREATE TABLE fq_nt (coll FI_VARCHAR_NT) NESTED TABLE coll STORE AS
coll_nest;
INSERT /*+ NESTED_TABLE_FAST_INSERT */  INTO fq_nt
SELECT cast(itemset as FI_VARCHAR_NT)
FROM table(DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL(
cursor(SELECT tid, iid FROM tranx_table_in), 0.6, 2, 5,
NULL, NULL));

PL/SQLカーソル内でパッケージを使用する場合は、表ファンクションの戻り値のタイプを変換する必要があるので注意してください。

CREATE TYPE fi_res AS OBJECT (
itemset      FI_VARCHAR_NT,
support      NUMBER,
length       NUMBER,
total_tranx  NUMBER
);
/
CREATE TYPE fi_coll AS TABLE OF fi_res;
/

DECLARE
cursor freqC is
SELECT Itemset
FROM table(
CAST(DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL(
cursor(SELECT tid, iid FROM tranx_table_in), 0.6, 2, 5,
NULL, NULL) AS fi_coll));
coll_nt  FI_VARCHAR_NT;
num_rows int;
num_itms int;
BEGIN
num_rows := 0;
num_itms := 0;
OPEN freqC;
LOOP
FETCH freqC INTO coll_nt;
EXIT WHEN freqC%NOTFOUND;
num_rows := num_rows + 1;
num_itms := num_itms + coll_nt.count;
END LOOP;
CLOSE freqC;
DBMS_OUTPUT.PUT_LINE('Totally ' || num_rows || ' rows ' || num_itms || '
items were produced.');
END;
/

74 DBMS_HEAT_MAP

DBMS_HEAT_MAPパッケージは、ブロック、エクステント、セグメント、オブジェクトおよび表領域などの様々なレベルのストレージでヒート・マップを外部化するためのインタフェースを提供します。サブプログラムの2番目のセットは、バックグラウンドで実体化されたトップN表領域のヒート・マップを外部化します。

関連項目:

- 『Oracle Database VLDBおよびパーティショニング・ガイド』の「ヒート・マップ」

- 「DBMS_ILM」

- 「DBMS_ILM_ADMIN」

この章では、次の項目について説明します。

- DBMS_HEAT_MAPの使用方法

- 概要

- セキュリティ・モデル

- DBMS_HEAT_MAPサブプログラムの要約

DBMS_HEAT_MAPの使用方法

- 概要

- セキュリティ・モデル

概要

ILM戦略を実装するために、Oracle Databaseのヒート・マップを使用すればデータのアクセスと変更を追跡できます。自動データ最適化(ADO)も使用すれば、データベース内の異なる層のストレージ間で、データの圧縮および移動を自動化できます。

ヒート・マップは、ブロック・レベルの変更回数を追跡し、セグメント・レベルの複数アクセスの統計を追跡します。SYSTEMおよびSYSAUX表領域内のオブジェクトは追跡されません。DBMS_HEAT_MAPは、ブロック、エクステント、セグメント、オブジェクトおよび表領域などの様々なレベルのヒート・マップ統計へのアクセスを提供します。

セキュリティ・モデル

実行権限は、PUBLICに付与されます。このパッケージのプロシージャは、コール元のセキュリティ下で実行されます。ユーザーには、オブジェクトに関するANALYZE権限が必要です。

DBMS_HEAT_MAPサブプログラムの要約

表74-1 DBMS_HEAT_MAPパッケージのサブプログラム

サブプログラム

説明

BLOCK_HEAT_MAPファンクション

表セグメント内のブロックごとの最終変更時間を戻します。

EXTENT_HEAT_MAPファンクション

表セグメントのエクステント・レベルのヒート・マップ統計を戻します。

OBJECT_HEAT_MAPファンクション

オブジェクトに属するすべてのセグメントの最小、最大および平均のアクセス時間を戻します。

SEGMENT_HEAT_MAPプロシージャ

指定のセグメントのヒート・マップ属性を戻します。

TABLESPACE_HEAT_MAPファンクション

表領域内のすべてのセグメントの最小、最大および平均のアクセス時間を戻します。

BLOCK_HEAT_MAPファンクション

この表ファンクションは、表セグメント内のブロックごとの最終変更時間を戻します。データ以外のセグメント・タイプに対しては、何の情報も戻しません。

構文

DBMS_HEAT_MAP.BLOCK_HEAT_MAP (
owner             IN VARCHAR2,
segment_name      IN VARCHAR2,
partition_name    IN VARCHAR2 DEFAULT NULL,
sort_columnid     IN NUMBER DEFAULT NULL,
sort_order        IN VARCHAR2 DEFAULT NULL)
RETURN hm_bls_row PIPELINED;

パラメータ

表74-2 BLOCK_HEAT_MAPファンクションのパラメータ

パラメータ

説明

owner

セグメントの所有者

segment_name

パーティション化されていない表の表名またはパーティション化されている表の(サブ)パーティション。パーティション化された表として表名を指定した場合、戻される行はありません。

partition_name

デフォルトはNULLです。パーティション化された表の場合、パーティションまたはサブパーティションのセグメント名を指定してください。

sort_columnid

出力のソートに使用する列のID。有効な値は1..9です。無効な値は無視されます。

sort_order

デフォルトはNULLです。指定可能な値は、ASCまたはDESCです。

戻り値

表74-3 BLOCK_HEAT_MAPファンクションの戻り値(出力パラメータ)

パラメータ

説明

owner

セグメントの所有者

segment_name

パーティション化されていない表のセグメント名

partition_name

パーティション名またはサブパーティション名

tablespace_name

セグメントが設定されている表領域

file_id

セグメント内のブロックの絶対ファイル番号

relative_fno

セグメント内のブロックの相対ファイル番号

block_id

ブロックのブロック番号

write time

ブロックの最終変更時間

EXTENT_HEAT_MAPファンクション

この表ファンクションは、表セグメントのエクステント・レベルのヒート・マップ統計を戻します。データ以外のセグメント・タイプに対しては、何の情報も戻しません。最小変更時間と最大変更時間を含む、エクステント・レベルの集計が含まれます。

構文

DBMS_HEAT_MAP.EXTENT_HEAT_MAP (
owner             IN VARCHAR2,
segment_name      IN VARCHAR2,
partition_name    IN VARCHAR2 DEFAULT NULL,
RETURN hm_els_row PIPELINED;

パラメータ

表74-4 EXTENT_HEAT_MAPファンクションのパラメータ

パラメータ

説明

owner

セグメントの所有者

segment_name

パーティション化されていない表の表名またはパーティション化されている表の(サブ)パーティション。パーティション化された表として表名を指定した場合、戻される行はありません。

partition_name

デフォルトはNULLです。パーティション化された表の場合、パーティションまたはサブパーティションのセグメント名を指定してください。

戻り値

表74-5 EXTENT_HEAT_MAPファンクションの戻り値(出力パラメータ)

パラメータ

説明

owner

セグメントの所有者

segment_name

パーティション化されていない表のセグメント名

partition_name

パーティション名またはサブパーティション名

tablespace_name

セグメントが設定されている表領域

file_id

セグメント内のブロックの絶対ファイル番号

relative_fno

セグメント内のブロックの相対ファイル番号

block_id

ブロックのブロック番号

blocks

エクステント内のブロック数

bytes

エクステント内のバイト数

min_writetime

ブロックの最終変更時間の最小値

max_writetime

ブロックの最終変更時間の最大値

avg_writetime

ブロックの最終変更時間の平均値

OBJECT_HEAT_MAPファンクション

この表は、オブジェクトに属するすべてのセグメントの最小、最大および平均のアクセス時間を戻します。オブジェクトは表である必要があります。この表ファンクションは、表以外のオブジェクト表でコールするとエラーを発生します。

構文

DBMS_HEAT_MAP.OBJECT_HEAT_MAP (
object_owner      IN VARCHAR2,
object_name       IN VARCHAR2)
RETURN hm_object_table PIPELINED;

パラメータ

表74-6 OBJECT_HEAT_MAPファンクションのパラメータ

パラメータ

説明

object_owner

セグメントが設定されている表領域

object_name

セグメント・ヘッダー相対ファイル番号

戻り値

表74-7 OBJECT_HEAT_MAPファンクションの戻り値(出力パラメータ)

パラメータ

説明

segment_name

トップ・レベルのセグメントの名前

partition_name

パーティションの名前。

tablespace_name

表領域の名前

segment_type

DBA_SEGMENTS.SEGMENT_TYPE内のセグメントのタイプ

segment_size

バイト単位のセグメント・サイズ

min_writetime

セグメントの最も古い書込み時間

max_writetime

セグメントの最新の書込み時間

avg_writetime

セグメントの平均書込み時間

min_readtime

セグメントの最も古い読取り時間

max_readtime

セグメントの最新の読取り時間

avg_writetime

セグメントの平均書込み時間

min_lookuptime

セグメントの最も古い索引参照時間

max_lookuptime

セグメントの最新の索引参照時間

avg_lookuptime

セグメントの平均索引参照時間

min_ftstime

セグメントの最も古い全表スキャン時間

max_ftstime

セグメントの最新の全表スキャン時間

avg_ftstime

セグメントの平均全表スキャン時間

SEGMENT_HEAT_MAPプロシージャ

このプロシージャは、指定のセグメントのヒート・マップ属性を戻します。

構文

DBMS_HEAT_MAP.SEGMENT_HEAT_MAP (
tablespace_id          IN  NUMBER,
header_file            IN  NUMBER,
header_block           IN  NUMBER,
segment_objd           IN  NUMBER,
min_writetime          OUT DATE,
max_writetime          OUT DATE,
avg_writetime          OUT DATE,
min_readtime           OUT DATE,
max_readtime           OUT DATE,
avg_readtime           OUT DATE,
min_lookuptime         OUT DATE,
max_lookuptime         OUT DATE,
avg_lookuptime         OUT DATE,
min_ftstime            OUT DATE,
max_ftstime            OUT DATE,
avg_ftstime            OUT DATE);

パラメータ

表74-8 SEGMENT_HEAT_MAPプロシージャのパラメータ

パラメータ

説明

tablespace_id

セグメントが設定されている表領域

header_file

セグメント・ヘッダー相対ファイル番号

header_block

セグメント・ヘッダー・ブロック番号

segment_objd

セグメントのDATAOBJ

戻り値

表74-9 SEGMENT_HEAT_MAPプロシージャの戻り値(出力パラメータ)

パラメータ

説明

min_writetime

セグメントの最も古い書込み時間

max_writetime

セグメントの最新の書込み時間

avg_writetime

セグメントの平均書込み時間

min_readtime

セグメントの最も古い読取り時間

max_readtime

セグメントの最新の読取り時間

avg_writetime

セグメントの平均書込み時間

min_lookuptime

セグメントの最も古い索引参照時間

max_lookuptime

セグメントの最新の索引参照時間

avg_lookuptime

セグメントの平均索引参照時間

min_ftstime

セグメントの最も古い全表スキャン時間

max_ftstime

セグメントの最新の全表スキャン時間

avg_ftstime

セグメントの平均全表スキャン時間

TABLESPACE_HEAT_MAPファンクション

この表は、表領域内のすべてのセグメントの最小、最大および平均のアクセス時間を戻します。

構文

DBMS_HEAT_MAP.TABLESPACE_HEAT_MAP (
tablespace_name      IN VARCHAR2)
RETURN hm_tablespace_table PIPELINED;

パラメータ

表74-10 TABLESPACE_HEAT_MAPプロシージャのパラメータ

パラメータ

説明

tablespace_name

表領域の名前

戻り値

表74-11 TABLESPACE_HEAT_MAPプロシージャの戻り値(出力パラメータ)

パラメータ

説明

segment_count

表領域内のセグメントの合計数

allocated_bytes

表領域内でセグメントによって使用される領域

min_writetime

セグメントの最も古い書込み時間

max_writetime

セグメントの最新の書込み時間

avg_writetime

セグメントの平均書込み時間

min_readtime

セグメントの最も古い読取り時間

max_readtime

セグメントの最新の読取り時間

avg_writetime

セグメントの平均書込み時間

min_lookuptime

セグメントの最も古い索引参照時間

max_lookuptime

セグメントの最新の索引参照時間

avg_lookuptime

セグメントの平均索引参照時間

min_ftstime

セグメントの最も古い全表スキャン時間

max_ftstime

セグメントの最新の全表スキャン時間

avg_ftstime

セグメントの平均全表スキャン時間

75 DBMS_HM

この章では、ヘルス・チェック管理のための定数およびプロシージャ宣言について説明します。状態モニターは、DBMS_HMパッケージを介してチェック・ストアの実行およびレポートの取得を行う機能を提供します。

関連項目:
状態モニターの詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_HMの使用方法

- セキュリティ・モデル

- DBMS_HMサブプログラムの要約

DBMS_HMの使用方法

- セキュリティ・モデル

セキュリティ・モデル

ユーザーがDBMS_HMパッケージのプロシージャを実行するには、EXECUTE権限が必要です。

DBMS_HMサブプログラムの要約

表75-1 DBMS_HMパッケージのサブプログラム

サブプログラム

説明

GET_RUN_REPORTファンクション

指定したチェッカの実行に関するレポートを戻します。

RUN_CHECKプロシージャ

指定したチェッカを特定の引数を指定して実行します。

GET_RUN_REPORTファンクション

このファンクションは、指定したチェッカの実行に関するレポートを戻します。

構文

DBMS_HM.GET_RUN_REPORT (
run_name      IN  VARCHAR2,
type           IN  VARCHAR2 := 'TEXT',
level          IN  VARCHAR2 := 'BASIC',)
RETURN CLOB;

パラメータ

表75-2 GET_RUN_REPORTファンクションのパラメータ

パラメータ

説明

run_name

チェックの実行名。

type

レポート形式タイプ。設定可能な値は、'HTML'、'XML'および'TEXT'です。デフォルトのレポート・タイプは'TEXT'です。

level

レポートの詳細で、設定可能な値は、'BASIC'および'DETAIL'です。注意: 現在は、'BASIC'レベルのみがサポートされています。

RUN_CHECKプロシージャ

このプロシージャは、指定したチェッカを特定の引数を指定して実行します。ユーザーは、実行名、必要な入力および実行タイムアウトの最大値を指定できます。実行のレポートはデータベースに永続的に保持されます。

構文

DBMS_HM.RUN_CHECK (
check_name     IN  VARCHAR2,
run_name       IN  VARCHAR2 := NULL,
timeout        IN  NUMBER := NULL,
input_params   IN  VARCHAR2 := NULL);

パラメータ

表75-3 RUN_CHECKプロシージャのパラメータ

パラメータ

説明

check_name

起動するチェックの名前。チェックの名前およびそれらのパラメータは、V$HM_CHECKビューおよびV$HM_CHECK_PARAMビューからアクセスできます。ユーザーは、本来内部チェックではないすべてのチェックを実行でき、SELECT name FROM V$HM_CHECK WHERE INTERNAL_CHECK = 'N'を実行すると、ユーザーが手動で実行できるチェックのリストが取得されます。

run_name

外部ユーザーがこのチェックの実行を一意に識別できる名前。NULL値が渡された場合は、HMによって一意な名前が作成され、このチェックの実行に関連付けられます。

timeout

このチェッカを実行できる最大許容時間(秒)。指定した実行時間が経過すると、HMによって実行が中断されます。NULL値が渡された場合は、HMによって実行に対するタイムアウトの制限は設定されません。

input_params

入力文字列。特殊文字;で区切られた名前と値のペアで構成されます。

たとえば、データ・ブロックの整合性チェックの起動には、次のタイプの入力パラメータを使用できます。

'BLC_DF_NUM=1;BLC_BL_NUM=23456'

入力パラメータBLC_DF_NUMおよびBLC_BL_NUMの値は、それぞれ1および23456です。

すべてのチェックには、そのチェックに関連付けられている明確に定義された入力セットがあります。これらの入力パラメータ、そのタイプ、デフォルト値および説明は、V$HM_CHECK_PARAMビューを使用して取得できます。

たとえば、次の問合せを実行すると、データ・ブロックの整合性チェックのパラメータ、それらのデフォルト値および説明のリストが取得されます。

SELECT a.* FROM v$hm_check_param a, v$hm_check b
WHERE a.check_id = b.id
AND b.name = 'Data Block Integrity Check';

76 DBMS_HPROF

DBMS_HPROFパッケージは、PL/SQLアプリケーションの実行をプロファイルするためのインタフェースを提供します。階層的なプロファイラ・データの収集、未処理のプロファイラ出力の分析および情報生成のプロファイリングのためのサービスが提供されます。

関連項目:
PL/SQL階層プロファイラの詳細は、『Oracle Database開発ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_HPROFサブプログラムの要約

DBMS_HPROFサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表76-1 DBMS_HPROFパッケージのサブプログラム

サブプログラム

説明

ANALYZEファンクション

未処理のプロファイラ出力を分析し、データベース表の階層プロファイラ情報を生成します。

START_PROFILINGプロシージャ

ユーザーのセッションで階層プロファイラ・データ収集を開始します。

STOP_PROFILINGプロシージャ

ユーザーのセッションでプロファイラ・データ収集を停止します。

ANALYZEファンクション

このファンクションは、未処理のプロファイラ出力を分析し、データベース表の階層プロファイラ情報を生成します。

構文

DBMS_HPROF.ANALYZE (
location         VARCHAR2,
filename         VARCHAR2,
summary_mode     BOOLEAN     DEFAULT FALSE,
trace            VARCHAR2    DEFAULT NULL,
skip             PLS_INTEGER DEFAULT 0,
collect          PLS_INTEGER DEFAULT NULL,
run_comment      VARCHAR2    DEFAULT NULL)
RETURN NUMBER;

パラメータ

表76-2 ANALYZEファンクションのパラメータ

パラメータ

説明

location

ディレクトリ・オブジェクトの名前。このディレクトリ・オブジェクトにマップされたファイル・システム・ディレクトリから未処理のプロファイラ・データファイルが読み取られます。出力ファイルもこのディレクトリに書き込まれます。

filename

分析する未処理のプロファイラ・データファイルの名前。このファイルは、locationパラメータで指定されたディレクトリに存在する必要があります。

summary_mode

デフォルトでは(つまり、summary_modeがFALSEの場合)、詳細な分析が実行されます。summary_modeがTRUEの場合は、最上位レベルのサマリー情報のみがデータベース表に生成されます。

trace

指定したトレース・エントリをルートとするサブツリーのみが分析されます。デフォルト(traceがNULLの場合)では、すべての実行に対して分析およびレポート生成が行われます。

トレース・エントリは、引用符で囲まれた特別な修飾形式(スキーマ名、モジュール名およびファンクション名を含む)で指定する必要があり、たとえば、'"SCOTT"."PKG"."FOO"'または'"".""."__plsql_vm"'というように指定します。指定した名前で複数のオーバーロードがある場合は、該当するすべてが分析されます。

skip

traceを指定した場合にのみ使用します。指定したトレースをルートとするサブツリーのみが分析されますが、最初のskip回分、traceへのコールが無視されます。skipのデフォルト値は0 (ゼロ)です。

collect

traceを指定した場合にのみ使用します。

collect回数のtraceのコールを分析します(skip+1番目のコールから開始)。デフォルトでは、1回のコールのみが収集されます。

run_comment

この実行に関してユーザーが指定したコメント。

戻り値

今回のアナライザ実行に対する一意の実行識別子。この識別子を使用すると、この実行に対応する結果を階層プロファイラ表から検索できます。

使用上の注意

- rdbms/adminディレクトリにあるdbmshptab.sqlスクリプトを使用して、未処理のプロファイラ・データの分析結果を継続的に格納するための階層プロファイラ・データベース表や他のデータ構造を作成します。

- dbmshptab.sqlを実行すると、以前に作成された階層プロファイラ表はすべて削除されます。

例

次のコマンドでは、階層プロファイラ表がHRスキーマにインストールされます。

connect HR/HR;
@?/rdbms/admin/dbmshptab.sql

START_PROFILINGプロシージャ

このプロシージャは、ユーザーのセッションで階層プロファイラ・データ収集を開始します。

構文

DBMS_HPROF.START_PROFILING (
location    VARCHAR2 DEFAULT NULL,
filename    VARCHAR2 DEFAULT NULL,
max_depth   PLS_INTEGER DEFAULT NULL);

パラメータ

表76-3 START_PROFILINGプロシージャのパラメータ

パラメータ

説明

location

ディレクトリ・オブジェクトの名前。このディレクトリ・オブジェクトにマップされたファイル・システム・ディレクトリに、未処理のプロファイラ出力が生成されます。

filename

未処理のプロファイラ・データの出力ファイル名。ファイルは、locationパラメータで指定されたディレクトリに作成されます。

max_depth

デフォルト(つまり、max_depth値がNULLの場合)では、コールの深さに関係なく、すべてのファンクションのプロファイル情報が収集されます。max_depthにNULL以外の値を指定した場合は、コールの深さが最大でmax_depthのレベルまでのファンクションのデータのみが、プロファイラによって収集されます。

使用上の注意

プロファイラは、max_depthの値よりも深いファンクションを個別に追跡しませんが、これらのファンクションで消費された時間は、max_depthの深さの祖先ファンクションに含まれます。

STOP_PROFILINGプロシージャ

このプロシージャは、ユーザーのセッションでプロファイラ・データ収集を停止します。また、このサブプログラムには、それまでにセッションで収集したデータをフラッシュする副次効果があり、これが実行の終了を示します。

構文

DBMS_HPROF.STOP_PROFILING;

77 DBMS_HS_PARALLEL

DBMS_HS_PARALLEL PL/SQLパッケージを使用すると、異種ターゲットにアクセスする場合に並列処理が可能となります。このパッケージは、大規模な外部表からデータを取り出すときのパフォーマンスを改善するように設計されています。

この章では、次の項目について説明します。

- DBMS_HS_PARALLELの使用方法

- DBMS_HS_PARALLELサブプログラムの要約

DBMS_HS_PARALLELの使用方法

DBMS_HS_PARALLELは、実行者の権限を使用するCURRENT_USERの認証IDでコンパイルされます。つまり、このパッケージのすべてのプロシージャは、コール・ユーザーの権限で実行されます。

DBMS_HS_PARALLELサブプログラムの要約

表77-1 DBMS_HS_PARALLELパッケージのサブプログラム

サブプログラム

説明

CREATE_OR_REPLACE_VIEW

リモート表からデータを並列に取り出すために参照される読取り専用ビューを作成(または置換)します。

CREATE_TABLE_TEMPLATE

リモート表から収集した情報に基づいてCREATE TABLEテンプレートを作成します。この情報を使用すると、最適なOracleのCREATE TABLE句を追加できます。

DROP_VIEW

CREATE_OR_REPLACE_VIEWプロシージャによって作成されたビューおよび内部オブジェクトを削除します。CREATE_OR_REPLACE_VIEWプロシージャによってビューが作成されていない場合は、エラー・メッセージが戻されます。

LOAD_TABLE

リモートの表からローカルのOracle表にデータを並列にロードします。ローカルのOracle表が存在しない場合は、自動的に作成されます。

CREATE_OR_REPLACE_VIEW

このプロシージャは、リモート表からデータを並列に取り出すために参照される読取り専用ビューを作成(または置換)します。

構文

CREATE_OR_REPLACE_VIEW (remote_table, database_link, oracle_view, parallel_degree)

パラメータ

表77-2 CREATE_OR_REPLACE_VIEWパラメータ

パラメータ

値

説明

remote_table

IN VARCHAR2 NOT NULL

リモート・データベース表の名前。[remote_schema_name.]remote_table_nameの形式で指定します。

database_link

IN VARCHAR2 NOT NULL

リモート・データベース・リンクの名前。コールは、異機種間サービスのデータベース・リンクにのみ適用できます。

oracle_view

IN VARCHAR2

Oracleビューの名前。[schema_name.]oracle_view_nameの形式で指定します。デフォルトのスキーマ名は現行のユーザーです。oracle_viewパラメータが指定されない場合は、リモート表の名前がビュー名として使用されます。

parallel_degree

IN NUMBER

操作の並列処理数は、レンジ・パーティション数(該当する場合)またはCPU数に基づいて計算されます。値の範囲は、2から16です。

使用上の注意

- 指定したOracleビューが作成され、その後のこのビューへの参照では、内部のデータベース・オブジェクトが使用され、リモートのOracle以外の表データが並列に取り出されます。Oracleビューがすでに存在する場合は、次のOracleのエラー・メッセージが表示されます。

ORA-00955: name is already used by an existing object

- ビューは、読取り専用ビューとして作成されます。ビューを挿入または更新しようとすると、次のOracleのエラー・メッセージが表示されます。

ORA-01733: virtual column not allowed here

- リモート表またはデータベース・リンクが存在しない場合は、次のいずれかのOracleエラー・メッセージが表示されます。

ORA-00942: table or view does not exist
or
ORA-02019: connection description for remote database not found

- CREATE_OR_REPLACE_VIEWプロシージャを実行するには、CREATE VIEW、CREATE TABLE、CREATE TYPE、CREATE PACKAGEおよびCREATE FUNCTION権限が必要です。

- 次のいずれかのOracleエラー・メッセージが発生した場合、Oracle初期化パラメータ・ファイルのPROCESSESおよびSESSIONSパラメータの値を増やしてください。

ORA-12801: error signaled in parallel query server P003
or
ORA-00018: maximum number of session exceeded

- CREATE_OR_REPLACE_VIEWプロシージャによって、いくつかの内部オブジェクトが作成されるため、DROP_VIEWプロシージャを使用してビューおよび内部オブジェクトを削除します。SQLのDROP VIEW文ではビューのみが削除され、内部オブジェクトは削除されません。

CREATE_TABLE_TEMPLATE

このプロシージャは、リモート表から収集した情報に基づいてCREATE TABLEテンプレートを作成します。この情報を使用すると、最適なOracleのCREATE TABLE句を追加できます。

構文

CREATE_TABLE_TEMPLATE (remote_table, database_link, oracle_table, create_table_template_string)

パラメータ

表77-3 CREATE_TABLE_TEMPLATEのパラメータ

パラメータ

値

説明

remote_table

IN VARCHAR2 NOT NULL

リモート・データベース表の名前。[remote_schema_name.]remote_table_nameの形式で指定します。

database_link

IN VARCHAR2 NOT NULL

リモート・データベース・リンクの名前。コールは、異機種間サービスのデータベース・リンクにのみ適用できます。

oracle_table

IN VARCHAR2

データのロード先となるローカルOracle表の名前。[schema_name.]oracle_table_nameの形式で指定します。デフォルトのスキーマ名は現行のユーザーです。oracle_tableパラメータが指定されない場合は、リモート表の名前がローカルのOracle名として使用されます。

create_table_template_string

OUT VARCHAR2

プロシージャが戻されたときにOracle CREATE TABLE SQLテンプレートを示します。

DROP_VIEW

このプロシージャは、CREATE_OR_REPLACE_VIEWプロシージャによって作成されたビューおよび内部オブジェクトを削除します。CREATE_OR_REPLACE_VIEWプロシージャによってビューが作成されていない場合は、エラー・メッセージが戻されます。

構文

DROP_VIEW (oracle_view)

パラメータ

表77-4 DROP_VIEWパラメータ

パラメータ

値

説明

oracle_view

IN VARCHAR2 NOT NULL

CREATE_OR_REPLACE_VIEWプロシージャによって作成されたOracleビューの名前。CREATE_OR_REPLACE_VIEWプロシージャによってビューが作成されていない場合は、エラーが戻されます。

LOAD_TABLE

このプロシージャは、リモートの表からローカルのOracle表にデータを並列にロードします。ローカルのOracle表が存在しない場合は、自動的に作成されます。

構文

LOAD_TABLE (remote_table, database_link, oracle_table, truncate, parallel_degree, row_count)

パラメータ

表77-5 LOAD_TABLEのパラメータ

パラメータ

値

説明

remote_table

IN VARCHAR2 NOT NULL

リモート・データベース表の名前。[remote_schema_name.]remote_table_nameの形式で指定します。

database_link

IN VARCHAR2 NOT NULL

リモート・データベース・リンクの名前。コールは、異機種間サービスのデータベース・リンクにのみ適用できます。

oracle_table

IN VARCHAR2

データのロード先となるローカルOracle表の名前。[schema_name.]oracle_table_nameの形式で指定します。デフォルトのスキーマ名は現行のユーザーです。oracle_tableパラメータが指定されない場合は、リモート表の名前がローカルのOracle名として使用されます。

truncate

IN BOOLEAN

データのロード前にOracle表を切り捨てるかどうかを決定します。値は、TRUEまたはFALSEです。デフォルト値はTRUEで、この場合は最初にOracle表が切り捨てられます。FALSEに設定すると、データがロードされるまでOracle表は切り捨てられません。

parallel_degree

IN NUMBER

操作の並列処理数は、レンジ・パーティション数(該当する場合)またはCPU数に基づいて計算されます。値の範囲は、2から16です。

row_count

OUT NUMBER

表のロード操作で追加された行数を示します。

使用上の注意

- このプロシージャでは、リモート表のデータがローカルのOracle表へロードされるだけです。キー、索引、制約またはトリガーなどの他の依存関係は作成されません。パフォーマンスが大幅に向上するため、表データをロードした後にこれらの依存関係を作成することをお薦めします。依存関係の作成をデータのロード前にするか後にするかは、リモート表のデータおよび依存関係に関する情報に基づいて決定する必要があります。

- ローカル表が存在しない場合は、LOAD_TABLEプロシージャによって、リモート表と完全に列が一致する単純な(パーティション化されていない)ローカル表が作成され、その後データがローカル表に挿入されます。

- リモート表またはデータベース・リンクが存在しない場合は、エラー・メッセージが戻されます。

- ローカル表がリモート表と互換性がない場合は、エラー・メッセージが戻されます。

- LOAD_TABLEプロシージャを実行するには、CREATE TABLE、CREATE TYPE、CREATE PACKAGEおよびCREATE FUNCTION権限が必要です。

- 次のいずれかのOracleエラー・メッセージが発生した場合、Oracle初期化パラメータ・ファイルのPROCESSESおよびSESSIONSパラメータの値を増やしてください。

ORA-12801: error signaled in parallel query server P003
or
ORA-00018: maximum number of session exceeded

- 並列処理を行うためには、次のいずれかが必要です。

- リモート表がレンジ・パーティション化されている。

- 数値列のヒストグラム情報が利用可能である。

- 数値の索引または主キーが存在する。

- ローカル表を削除するには、DROP TABLE SQL文を使用します。

78 DBMS_HS_PASSTHROUGH

DBMS_HS_PASSTHROUGH PL/SQLパッケージを使用すると、Oracleサーバーによる解釈がなくてもOracle以外のシステムに文を直接送信できます。この機能は、Oracle以外のシステムで使用できる文と同等の文がOracleにない場合に役立ちます。

この章では、次の項目について説明します。

- DBMS_HS_PASSTHROUGHの使用方法

- 概要

- 使用上の注意

- DBMS_HS_PASSTHROUGHサブプログラムの要約

関連項目:
このパッケージの詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。

DBMS_HS_PASSTHROUGHの使用方法

この項では、DBMS_HS_PASSTHROUGHパッケージの使用に関連する項目について説明します。

概要

PL/SQLパッケージDBMS_HS_PASSTHROUGHを使用すると、パススルーSQL文をOracle以外のシステムで直接実行できます。このパッケージで実行される文は、標準のSQL文と同じトランザクションで実行されます。

関連項目:
このパッケージの詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。

使用上の注意

DBMS_HS_PASSTHROUGHパッケージは仮想パッケージです。概念上は、Oracle以外のシステムに常駐します。ただし、実際には、このパッケージのコールは異機種間サービスにより仲介され、1つ以上の異機種間サービス・コールにマップされます。次に、これらの異機種間サービス・コールは、ドライバによりOracle以外のシステムのAPIにマップされます。クライアント・アプリケーションは、Oracle以外のシステムのストアド・プロシージャをコールする場合と同じ方法で、データベース・リンクを介してパッケージ内のプロシージャをコールする必要があります。異機種間サービスにより実行される特殊処理は、ユーザーに対して透過的です。

DBMS_HS_PASSTHROUGHサブプログラムの要約

表78-1 DBMS_HS_PASSTHROUGHパッケージのサブプログラム

サブプログラム

説明

BIND_INOUT_VARIABLEプロシージャ

IN OUTバインド変数をバインドします。

BIND_INOUT_VARIABLE_RAWプロシージャ

データ・タイプRAWのIN OUTバインド変数をバインドします。

BIND_OUT_VARIABLEプロシージャ

OUT変数をPL/SQLプログラム変数にバインドします。

BIND_OUT_VARIABLE_RAWプロシージャ

データ・タイプRAWのOUT変数をPL/SQLプログラム変数にバインドします。

BIND_VARIABLEプロシージャ

位置を基準にしてIN変数をPL/SQLプログラム変数にバインドします。

BIND_VARIABLE_RAWプロシージャ

RAWタイプのIN変数をバインドします。

CLOSE_CURSORプロシージャ

SQL文がOracle以外のシステムで実行された後は、カーソルをクローズして、関連メモリーを解放します。

EXECUTE_IMMEDIATEプロシージャ

バインド変数を使用せずに、(SELECT以外の)SQL文を即時実行します。

EXECUTE_NON_QUERYファンクション

(SELECT以外の)SQL文を実行します。

FETCH_ROWファンクション

問合せから行をフェッチします。

GET_VALUEプロシージャ

SELECT文から列値を取り出すか、またはOUTバインド・パラメータを取り出します。

GET_VALUE_RAWプロシージャ

GET_VALUEと同様ですが、データ・タイプRAWに使用します。

OPEN_CURSORファンクション

Oracle以外のシステムでパススルーSQL文を実行するためのカーソルをオープンします。

PARSEプロシージャ

Oracle以外のシステムでSQL文を解析します。

BIND_INOUT_VARIABLEプロシージャ

このプロシージャは、IN OUTバインド変数をバインドします。

構文

DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE (
c     IN     BINARY_INTEGER NOT NULL,
p     IN     BINARY_INTEGER NOT NULL,
v     IN OUT <dty>,
n     IN     VARCHAR2);

<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。

関連項目:
RAWデータ・タイプのIN OUT変数のバインド方法については、「BIND_INOUT_VARIABLE_RAWプロシージャ」を参照してください。

パラメータ

表78-2 BIND_INOUT_VARIABLEプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数の位置。1から始まります。

v

この値は次の2つの目的で使用されます。

- SQL文が実行される前にINの値を設定します。

- OUT値のサイズを判別します。

n

(オプション)バインド変数名。

たとえば、SELECT * FROM emp WHERE ename=:enameでは、バインド変数:enameの位置は1、名前は:enameです。このパラメータは、Oracle以外のシステムで位置によるバインドではなく名前によるバインドがサポートされている場合に使用できます。この場合も位置を渡す必要があります。

例外

表78-3 BIND_INOUT_VARIABLEプロシージャの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS, RNDS

BIND_INOUT_VARIABLE_RAWプロシージャ

このプロシージャは、データ・タイプRAWのIN OUTバインド変数をバインドします。

構文

DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW (
c      IN     BINARY_INTEGER NOT NULL,
p      IN     BINARY_INTEGER NOT NULL,
v      IN OUT RAW,
n      IN     VARCHAR2);

パラメータ

表78-4 BIND_INOUT_VARIABLE_RAWプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数の位置。1から始まります。

v

この値は次の2つの目的で使用されます。

- SQL文が実行される前にINの値を設定します。

- OUT値のサイズを判別します。

n

(オプション)バインド変数名。

たとえば、SELECT * FROM emp WHERE ename=:enameでは、バインド変数:enameの位置は1、名前は:enameです。このパラメータは、Oracle以外のシステムで位置によるバインドではなく名前によるバインドがサポートされている場合に使用できます。この場合も位置を渡す必要があります。

例外

表78-5 BIND_INOUT_VARIABLE_RAWプロシージャの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS, RNDS

BIND_OUT_VARIABLEプロシージャ

このプロシージャは、OUT変数をPL/SQLプログラム変数にバインドします。

構文

DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE (
c      IN  BINARY_INTEGER NOT NULL,
p      IN  BINARY_INTEGER NULL,
v      OUT <dty>,
n      IN  VARCHAR2);

<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。

関連項目:
RAWデータ・タイプのOUT変数のバインド方法については、「BIND_OUT_VARIABLE_RAWプロシージャ」を参照してください。

パラメータ

表78-6 BIND_OUT_VARIABLEプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数の位置。1から始まります。

v

OUTバインド変数がその値を格納する変数。パッケージは、変数のサイズのみ記憶しています。SQL文が実行された後、GET_VALUEを使用してOUTパラメータの値を取り出せます。取り出される値のサイズが、BIND_OUT_VARIABLEを使用して渡されたパラメータのサイズを超えないようにしてください。

n

(オプション)バインド変数名。

たとえば、SELECT * FROM emp WHERE ename=:enameでは、バインド変数:enameの位置は1、名前は:enameです。このパラメータは、Oracle以外のシステムで位置によるバインドではなく名前によるバインドがサポートされている場合に使用できます。この場合も位置を渡す必要があります。

例外

表78-7 BIND_OUT_VARIABLEプロシージャの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS, RNDS

BIND_OUT_VARIABLE_RAWプロシージャ

このプロシージャは、データ・タイプRAWのOUT変数をPL/SQLプログラム変数にバインドします。

構文

DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW (
c     IN  BINARY_INTEGER NOT NULL,
p     IN  BINARY_INTEGER NOT NULL,
v     OUT RAW,
n     IN  VARCHAR2);

パラメータ

表78-8 BIND_OUT_VARIABLE_RAWプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数の位置。1から始まります。

v

OUTバインド変数がその値を格納する変数。パッケージは、変数のサイズのみ記憶しています。SQL文が実行された後、GET_VALUEを使用してOUTパラメータの値を取り出せます。取り出される値のサイズが、BIND_OUT_VARIABLE_RAWを使用して渡されたパラメータのサイズを超えないようにしてください。

n

(オプション)バインド変数名。

たとえば、SELECT * FROM emp WHERE ename=:enameでは、バインド変数:enameの位置は1、名前は:enameです。このパラメータは、Oracle以外のシステムで位置によるバインドではなく名前によるバインドがサポートされている場合に使用できます。この場合も位置を渡す必要があります。

例外

表78-9 BIND_OUT_VARIABLE_RAWプロシージャの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS, RNDS

BIND_VARIABLEプロシージャ

このプロシージャは、位置を基準にしてIN変数をPL/SQLプログラム変数にバインドします。

構文

DBMS_HS_PASSTHROUGH.BIND_VARIABLE (
c      IN BINARY_INTEGER NOT NULL,
p      IN BINARY_INTEGER NOT NULL,
v      IN <dty>,
n      IN VARCHAR2);

<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。

関連項目:
RAW変数をバインドするには、BIND_VARIABLE_RAWプロシージャを使用してください。

パラメータ

表78-10 BIND_VARIABLEプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数の位置。1から始まります。

v

バインド変数名に渡す必要がある値。

n

(オプション)バインド変数名。

たとえば、SELECT * FROM emp WHERE ename=:enameでは、バインド変数:enameの位置は1、名前は:enameです。このパラメータは、Oracle以外のシステムで位置によるバインドではなく名前によるバインドがサポートされている場合に使用できます。この場合も位置を渡す必要があります。

例外

表78-11 BIND_VARIABLEプロシージャの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined: WNDS, RNDS

BIND_VARIABLE_RAWプロシージャ

このプロシージャは、RAWタイプのIN変数をバインドします。

構文

DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW (
c    IN BINARY_INTEGER NOT NULL,
p    IN BINARY_INTEGER NOT NULL,
v    IN RAW,
n    IN VARCHAR2);

パラメータ

表78-12 BIND_VARIABLE_RAWプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数の位置。1から始まります。

v

バインド変数に渡す必要がある値。

n

(オプション)バインド変数名。

たとえば、SELECT * FROM emp WHERE ename=:enameでは、バインド変数:enameの位置は1、名前は:enameです。このパラメータは、Oracle以外のシステムで位置によるバインドではなく名前によるバインドがサポートされている場合に使用できます。この場合も位置を渡す必要があります。

例外

表78-13 BIND_VARIABLE_RAWプロシージャの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS, RNDS

CLOSE_CURSORプロシージャ

このファンクションは、SQL文がOracle以外のシステムで実行された後に、カーソルをクローズし、関連メモリーを解放します。カーソルがオープンされていない場合、操作は何も行われません。

構文

DBMS_HS_PASSTHROUGH.CLOSE_CURSOR (
c IN BINARY_INTEGER NOT NULL);

パラメータ

表78-14 CLOSE_CURSORプロシージャのパラメータ

パラメータ

説明

c

解放するカーソル

例外

表78-15 CLOSE_CURSORプロシージャの例外

例外

説明

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS, RNDS

EXECUTE_IMMEDIATEプロシージャ

このファンクションは、SQL文を即時実行します。有効なSQLコマンド(SELECTを除く)をすぐに実行できます。文にバインド変数を含めることはできません。文は引数でVARCHAR2として渡されます。SQL文は、内部的には、OPEN_CURSOR、PARSE、EXECUTE_NON_QUERYおよびCLOSE_CURSORのPASSTHROUGH SQLプロトコル・シーケンスを使用して実行されます。

構文

DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE (
s IN VARCHAR2 NOT NULL)
RETURN BINARY_INTEGER;

パラメータ

表78-16 EXECUTE_IMMEDIATEプロシージャのパラメータ

パラメータ

説明

s

即時実行対象の文を含むVARCHAR2変数

戻り値

SQL文の実行によって影響を受ける行数。

例外

表78-17 EXECUTE_IMMEDIATEプロシージャの例外

例外

説明

ORA-28551

SQL文が正しくありません。

ORA-28554

オープンしているカーソルが最大数に達しました。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

EXECUTE_NON_QUERYファンクション

このファンクションはSQL文を実行します。SQL文にSELECT文は使用できません。SQL文を実行する前に、カーソルをオープンし、SQL文を解析する必要があります。

構文

DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY (
c IN BINARY_INTEGER NOT NULL)
RETURN BINARY_INTEGER;

パラメータ

表78-18 EXECUTE_NON_QUERYファンクションのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

戻り値

Oracle以外のシステムでSQL文によって影響を受ける行数。

例外

表78-19 EXECUTE_NON_QUERYファンクションの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

BIND_VARIABLEプロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

FETCH_ROWファンクション

このファンクションは、結果セットから行をフェッチします。結果セットは、SQL SELECT文で定義されます。それ以上フェッチする行がなくなると、例外NO_DATA_FOUNDが発生します。行をフェッチする前に、カーソルをオープンし、SQL文を解析する必要があります。

構文

DBMS_HS_PASSTHROUGH.FETCH_ROW (
c   IN BINARY_INTEGER NOT NULL,
f   IN BOOLEAN)
RETURN BINARY_INTEGER;

パラメータ

表78-20 FETCH_ROWファンクションのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

first

(オプション)SELECT文を再実行します。有効な値は、次のとおりです。

- TRUE: SELECT文を再実行します。

- FALSE: 次の行をフェッチするか、または初めて実行する場合は、実行して行をフェッチします(デフォルト)。

戻り値

フェッチされた行数が戻されます。最終行がすでにフェッチされている場合は、0(ゼロ)が戻されます。

例外

表78-21 FETCH_ROWファンクションの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS

GET_VALUEプロシージャ

このプロシージャには2つの目的があります。

- 行がフェッチされた後に、SELECT文の選択リスト項目を取り出します。

- SQL文が実行された後に、OUTバインド値を取り出します。

構文

DBMS_HS_PASSTHROUGH.GET_VALUE (
c      IN  BINARY_INTEGER NOT NULL,
p    IN  BINARY_INTEGER NOT NULL,
v    OUT <dty>);

<dty>はDATE、NUMBERまたはVARCHAR2のいずれかです。

関連項目:
RAWデータ・タイプの値を取り出す方法については、「GET_VALUE_RAWプロシージャ」を参照してください。

パラメータ

表78-22 GET_VALUEプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数または選択リスト項目の位置。1から始まります。

v

OUTバインド変数または選択リスト項目がその値を格納する変数。

例外

表78-23 GET_VALUEプロシージャの例外

例外

説明

ORA-1403

最終行がフェッチされた後に、GET_VALUEを実行するとNO_DATA_FOUND例外が戻されます(FETCH_ROWによって0(ゼロ)が戻されます)。

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS

GET_VALUE_RAWプロシージャ

このプロシージャはGET_VALUEと同様ですが、データ・タイプRAWに使用します。

構文

DBMS_HS_PASSTHROUGH.GET_VALUE_RAW (
c    IN  BINARY_INTEGER NOT NULL,
p    IN  BINARY_INTEGER NOT NULL,
v    OUT RAW);

パラメータ

表78-24 GET_VALUE_RAWプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。カーソルは、ルーチンOPEN_CURSORを使用してオープンし、PARSEを使用して解析する必要があります。

p

SQL文におけるバインド変数または選択リスト項目の位置。1から始まります。

v

OUTバインド変数または選択リスト項目がその値を格納する変数。

例外

表78-25 GET_VALUE_RAWプロシージャの例外

例外

説明

ORA-1403

最終行がフェッチされた後に、GET_VALUEを実行するとNO_DATA_FOUND例外が戻されます(FETCH_ROWによって0(ゼロ)が戻されます)。

ORA-28550

渡されたカーソルが無効です。

ORA-28552

プロシージャが正しい順序で実行されません。(最初にカーソルをオープンし、SQL文を解析する必要があります)。

ORA-28553

バインド変数の位置が有効範囲外です。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS

OPEN_CURSORファンクション

このファンクションは、Oracle以外のシステムでパススルーSQL文を実行するためのカーソルをオープンします。このファンクションは、すべてのタイプのSQL文に対してコールする必要があります。

後続のコールで使用する必要があるカーソルが戻されます。このコールによってメモリーが割り当てられます。関連付けられたメモリーの割当てを解除するには、プロシージャCLOSE_CURSORをコールします。

構文

DBMS_HS_PASSTHROUGH.OPEN_CURSOR
RETURN BINARY_INTEGER;

戻り値

後続のプロシージャおよびファンクション・コールで使用されるカーソル。

例外

表78-26 OPEN_CURSORファンクションの例外

例外

説明

ORA-28554

カーソルの最大オープン数を超えました。異機種間サービスのOPEN_CURSORS初期化パラメータの値を増やしてください。

プラグマ

Purity level defined : WNDS, RNDS

PARSEプロシージャ

このプロシージャは、Oracle以外のシステムでSQL文を解析します。

構文

DBMS_HS_PASSTHROUGH.PARSE (
c       IN  BINARY_INTEGER NOT NULL,
stmt    IN  VARCHAR2 NOT NULL);

パラメータ

表78-27 PARSEプロシージャのパラメータ

パラメータ

説明

c

パススルーSQL文に関連付けられたカーソル。ファンクションOPEN_CURSORを使用してオープンする必要があります。

stmt

解析する文。

例外

表78-28 PARSEプロシージャの例外

例外

説明

ORA-28550

渡されたカーソルが無効です。

ORA-28551

SQL文が正しくありません。

ORA-28555

NOT NULLのパラメータにNULL値が渡されました。

プラグマ

Purity level defined : WNDS, RNDS

79 DBMS_ILM

DBMS_ILMパッケージでは、自動データ最適化(ADO)ポリシーを使用して情報ライフサイクル管理(ILM)計画を実装するためのインタフェースが提供されます。

関連項目:

- このパッケージを使用した自動データ最適化(ADO)の管理の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

- 「DBMS_ILM_ADMIN」

- DBMS_HEAT_MAP

この章では、次の項目について説明します。

- DBMS_ILMの使用

- 概要

- セキュリティ・モデル

- 定数

- 例外

- DBMS_ILMサブプログラムの要約

DBMS_ILMの使用

- 概要

- セキュリティ・モデル

- 定数

- 例外

概要

ILM戦略を実装するために、Oracle Databaseのヒート・マップを使用すればデータのアクセスと変更を追跡できます。自動データ最適化(ADO)も使用すれば、データベース内の異なる層のストレージ間で、データの圧縮および移動を自動化できます。

DBMS_ILMパッケージでは、即時評価のほか、自動データ最適化(ADO)関連のタスクの実行がサポートされます。このパッケージでは、ADOアクションをスケジューリングする次の2つの方法がサポートされます。

- データベース・ユーザーがオブジェクト・セット上でADOポリシーの即時実行をスケジュールします。

- データベース・ユーザーがオブジェクト・セットでのADOポリシーの評価結果を確認します。次に、ユーザーは、このセットのオブジェクトを追加または削除して、ADOポリシーの評価結果を再確認します。ユーザーは、この手順を繰り返して、ADO実行の対象となるオブジェクト・セットを決定します。さらに、このオブジェクト・セットでは、ユーザーによってADOアクションの即時スケジューリングを実行できます。

次のプロシージャでは2つの使用モードがサポートされます。プロシージャの説明の前に、特定の評価を追跡可能なエンティティとしてのADOタスクの概念とADOポリシーの(評価および実行の)概念について説明します。個々のADOタスクは次のいずれかの状態になります。

- 非アクティブ

- アクティブ

- 完了

セキュリティ・モデル

DBMS_ILMパッケージは、実行者の権限で実行されます。

定数

DBMS_ILMパッケージでは、表79-1「DBMS_ILMの定数」に示す定数が使用されます。

表79-1 DBMS_ILMの定数

定数

値

タイプ

説明

ILM_ALL_POLICIES

'ALL POLICIES'

VARCHAR2(20)

オブジェクトのADOポリシーをすべて選択します。

ILM_EXECUTION_OFFLINE

1

NUMBER

ADOアクションの実行中にオブジェクトをオフラインにできるように指定します。

ILM_EXECUTION_ONLINE

2

NUMBER

ADOアクションの実行中にオブジェクトがオンラインになるように指定します。

SCOPE_DATABASE

1

NUMBER

データベース内のすべてのADOポリシーを選択します。

SCOPE_SCHEMA

2

NUMBER

現在のスキーマ内のすべてのADOポリシーを選択します。

SCHEDULE_IMMEDIATE

1

NUMBER

即時実行するADOタスクをスケジュールします。

ARCHIVE_STATE_ACTIVE

'0'

VARCHAR2(1)

行をアクティブにする表で行アーカイブが有効化されたもののORA_ARCHIVE_STATE列の値を表示します。

ARCHIVE_STATE_ARCHIVED

'1'

VARCHAR2(1)

行を非アクティブにする表で行アーカイブが有効化されたもののORA_ARCHIVE_STATE列の値を表示します。

例外

次の表に、DBMS_ILMパッケージで発生する例外を示します。

表79-2 DBMS_ILMの例外

例外

エラー・コード

説明

INVALID_ARGUMENT_VALUE

38327

引数の値が無効です。

INVALID_ILM_DICTIONARY

38328

ディクショナリ状態に整合性がありません。

INTERNAL_ILM_ERROR

38329

内部エラー。

INSUFFICIENT_PRIVILEGES

38330

権限が不十分です。

DBMS_ILMサブプログラムの要約

表79-3 DBMS_ILMパッケージのサブプログラム

サブプログラム

説明

ADD_TO_ILMプロシージャ

引数で指定されたオブジェクトを特定のADOタスクに追加して、このオブジェクト上のADOポリシーを評価します。

ARCHIVESTATENAMEファンクション

行アーカイブが有効化された表のORA_ARCHIVE_STATE列の値を戻します。

EXECUTE_ILMプロシージャ

ADOタスクを実行します。

EXECUTE_ILM_TASKプロシージャ

以前に評価されたADOタスクを実行します。

PREVIEW_ILMプロシージャ

引数で指定された有効範囲のすべてのADOポリシーを評価します。

REMOVE_FROM_ILMプロシージャ

引数で指定されたオブジェクトを特定のADOタスクから削除します。

STOP_ILMプロシージャ

特定のADOタスクに作成されたADO関連のジョブを停止します。

ADD_TO_ILMプロシージャ

このプロシージャは、引数で指定されたオブジェクトを特定のADOタスクに追加して、このオブジェクト上のADOポリシーを評価します。このプロシージャは、非アクティブ状態のADOタスクでのみ実行できます。このオブジェクト上のADOポリシーの評価結果は、ロールとアクセスに応じた適切なビュー(USER_ILMTASKSまたはDBA_ILMTASKS、USER_ILMEVALUATIONDETAILSまたはDBA_ILMEVALUATIONDETAILS、USER_ILMRESULTSまたはDBA_ILMRESULTS)を使用して確認できます。

構文

DBMS_ILM.ADD_TO_ILM (
task_id           IN    NUMBER,
owner             IN    VARCHAR2,
object_name       IN    VARCHAR2,
subobject_name    IN    VARCHAR2 DEFAULT NULL);

パラメータ

表79-4 ADD_TO_ILMプロシージャのパラメータ

パラメータ

説明

task_id

特定のADOタスクを識別します。

owner

オブジェクトの所有者

object_name

オブジェクト名。

subobject_name

サブオブジェクトの名前(パーティション化された表の場合はパーティション名)。

ARCHIVESTATENAMEファンクション

このファンクションでは、行アーカイブが有効化された表のORA_ARCHIVE_STATE列の値を戻します。

構文

DBMS_ILM.ARCHIVESTATENAME (
value      IN  VARCHAR2)
RETURN VARCHAR2;

パラメータ

表79-5 ARCHIVESTATENAMEファンクションのパラメータ

パラメータ

説明

value

アーカイブ状態名が戻される対象の値。

使用上の注意

0の場合はARCHIVE_STATE_ACTIVEを戻し、それ以外はARCHIVE_STATE_ARCHIVEDを戻します。

関連項目:
『Oracle Database VLDBおよびパーティショニング・ガイド』のインデータベース・アーカイブの使用に関する項を参照してください。

EXECUTE_ILMプロシージャ

このプロシージャは、ADOタスクを実行します。

このプロシージャには、2つのオーバーロードがあります。最初のオーバーロードは、オブジェクトのセットに対してADOタスクを実行し、事前にこれらの評価を実行しません。2番目のオーバーロードは、特定のオブジェクトに対してADOポリシーを実行します。

構文

DBMS_ILM.EXECUTE_ILM (
task_id             OUT    NUMBER,
ilm_scope           IN     NUMBER DEFAULT SCOPE_SCHEMA,
execution_mode      IN     NUMBER DEFAULT ILM_EXECUTION_ONLINE);

DBMS_ILM.EXECUTE_ILM (
owner               IN     VARCHAR2,
object_name         IN     VARCHAR2,
task_id             OUT    NUMBER,
subobject_name      IN     VARCHAR2 DEFAULT NULL,
policy_name         IN     VARCHAR2 DEFAULT ILM_ALL_POLICIES,
execution_mode      IN     NUMBER DEFAULT ILM_EXECUTION_ONLINE);

パラメータ

表79-6 EXECUTE_ILMプロシージャのパラメータ

パラメータ

説明

task_id

特定のADOタスクを識別します。

ilm_scope

ADO実行の対象となるオブジェクト・セットを決定します。デフォルトは、スキーマ内のオブジェクトのみが対象となります。

execution_mode

ADOタスクをオンライン(ILM_EXECUTION_ONLINE)またはオフライン(ILM_EXECUTION_OFFLINE)で実行します。

owner

オブジェクトの所有者

object_name

オブジェクト名。

subobject_name

サブオブジェクトの名前(パーティション化された表の場合はパーティション名)。

policy_name

オブジェクト上で評価されるADOポリシーの名前。オブジェクト上のすべてのADOポリシーを評価する場合は、パッケージ定数のILM_ALL_POLICIESを使用する必要があります。

使用上の注意

- EXECUTE_ILMプロシージャは、ADOを実行するタイミングの制御がさらに必要なユーザーや、次のメンテナンス・ウィンドウまで待つ必要がないユーザーが使用できます。

- このプロシージャの実行方法は、ADOタスクと関連ジョブの作成の前後に自動コミットを行うという点で、DDLと類似しています。

EXECUTE_ILM_TASKプロシージャ

このプロシージャは、以前に評価されたADOタスクを実行し、アクティブ状態に移行させます。

構文

DBMS_ILM.EXECUTE_ILM_TASK (
task_id             IN     NUMBER,
execution_mode      IN     NUMBER DEFAULT ILM_EXECUTION_ONLINE);
execution_schedule  IN     NUMBER DEFAULT SCHEDULE_IMMEDIATE);

パラメータ

表79-7 EXECUTE_ILM_TASKプロシージャのパラメータ

パラメータ

説明

task_id

特定のADOタスクを識別します。

execution_mode

ADOタスクをオンライン(ILM_EXECUTION_ONLINE)またはオフライン(ILM_EXECUTION_OFFLINE)で実行します。

execution_schedule

ADOタスクを実行するタイミングを特定します。現在は、ADOジョブの即時スケジューリングのみが選択可能です。

PREVIEW_ILMプロシージャ

このプロシージャは、ILM_SCOPE引数を使用して指定されたオブジェクト上でADOポリシーを評価します。これは、特定のADOタスクを識別するtask_idとして数値を戻します。これを使用して、ロールとアクセスに応じた適切なビュー(USER_ILMTASKSまたはDBA_ILMTASKS、USER_ILMEVALUATIONDETAILSまたはDBA_ILMEVALUATIONDETAILS、USER_ILMRESULTSまたはDBA_ILMRESULTS)でポリシー評価の結果を確認できます。

PREVIEW_ILMプロシージャではADOタスクが非アクティブ状態のままになります。1度結果をプレビューすると、このタスクにオブジェクトの追加または削除ができます。

構文

DBMS_ILM.PREVIEW_ILM (
task_id           OUT    NUMBER,
ilm_scope          IN     NUMBER DEFAULT SCOPE_SCHEMA);

パラメータ

表79-8 PREVIEW_ILMプロシージャのパラメータ

パラメータ

説明

task_id

特定のADOタスクを識別します。

ilm_scope

実行の有効範囲を識別します。「定数」の説明に従って、SCOPE_DATABASEまたはSCOPE_SCHEMAのいずれかを指定する必要があります。

REMOVE_FROM_ILMプロシージャ

このプロシージャは、引数で指定されたオブジェクトを特定のADOタスクから削除します。このプロシージャは、非アクティブ状態のADOタスクでのみ実行できます。

構文

DBMS_ILM.REMOVE_FROM_ILM (
task_id           IN    NUMBER,
owner             IN    VARCHAR2,
object_name       IN    VARCHAR2,
subobject_name    IN    VARCHAR2 DEFAULT NULL);

パラメータ

表79-9 REMOVE_FROM_ILMプロシージャのパラメータ

パラメータ

説明

task_id

特定のADOタスクを識別します。

owner

オブジェクトの所有者

object_name

オブジェクト名。

subobject_name

サブオブジェクトの名前(パーティション化された表の場合はパーティション名)。

STOP_ILMプロシージャ

このプロシージャは、特定のADOタスクに作成されたADO関連のジョブを停止します。

構文

DBMS_ILM.STOP_ILM (
task_id               IN         NUMBER,
p_drop_running_jobs   IN         BOOLEAN DEFAULT FALSE);

パラメータ

表79-10 STOP_ILMプロシージャのパラメータ

パラメータ

説明

task_id

特定のADOタスクを一意に識別する番号。

p_drop_running_jobs

実行中のジョブが削除されるかどうか。

80 DBMS_ILM_ADMIN

DBMS_ILM_ADMINパッケージでは、自動データ最適化(ADO)ポリシーの実行をカスタマイズするインタフェースが提供されます。パーティショニングと圧縮を組み合せて、ADOポリシーを使用することで、情報ライフサイクル管理(ILM)計画の実装を支援できます。

関連項目:

- このパッケージを使用した自動データ最適化(ADO)の管理の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

- 「DBMS_ILM」

- DBMS_HEAT_MAP

この章では、次の項目について説明します。

- DBMS_ILM_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_ILM_ADMINサブプログラムの概要

DBMS_ILM_ADMINの使用方法

- 概要

- セキュリティ・モデル

- 定数

概要

ILM戦略を実装するために、Oracle Databaseのヒート・マップを使用すればデータのアクセスと変更を追跡できます。自動データ最適化(ADO)も使用すれば、データベース内の異なる層のストレージ間で、データの圧縮および移動を自動化できます。

セキュリティ・モデル

このパッケージは、定義者の権限で実行します。このユーザーにはDBA権限が必要です。

定数

DBMS_ILM_ADMINパッケージでは、表80-1「DBMS_ILM_ADMの定数」で示す定数が使用されます。

表80-1 DBMS_ILM_ADMの定数

定数

値

タイプ

説明

EXECUTION_INTERVAL

1

NUMBER

ADOバックグラウンド評価が実行される頻度を決定します。分単位で指定されます。

PURGE_INTERVAL

2

NUMBER

ADO履歴が保持される時間を制御します。日数で指定されます。

EXECUTION_MODE

4

NUMBER

ADOのオンラインまたはオフラインでの実行を制御します。このパラメータの値は、DBMS_ILM_ADMIN.ILM_EXECUTION_OFFLINE、またはDBMS_ILM_ADMIN.ILM_EXECUTION_ONLINEのどちらかです。

JOBLIMIT

5

NUMBER

常時、ADOジョブ数の上限を制御します。同時ADOジョブの最大数は、JOBLIMIT*(インスタンス数)*(インスタンスごとのCPU数)です。

ENABLED

7

NUMBER

バックグラウンドADOをオフまたはオンにする方法を提供します。

TBS_PERCENT_USED

8

NUMBER

表領域が一杯とみなされるタイミングを決定します。表領域割当て容量の割合として指定されます。

TBS_PERCENT_FREE

9

NUMBER

表領域割当て容量の割合として、目標となる表領域の記憶域をADOアクションを使用して決定します。

DEG_PARALLEL

10

NUMBER

ADOジョブに使用する並列度を決定します。

POLICY_TIME

11

NUMBER

ADOポリシーを日数ではなく秒単位で指定されたものとして扱うかどうかを決定します。可能な値は、ILM_POLICY_IN_SECONDS (ポリシーの時間を秒単位で扱う)、またはILM_POLICY_IN_DAYS (ポリシーの時間を日単位で扱う、デフォルト)です。

HEAT_MAP_SEG_READ

1

NUMBER

セグメント読み取り完了

HEAT_MAP_SEG_WRITE

2

NUMBER

セグメント書き込み完了

HEAT_MAP_SEG_SCAN

4

NUMBER

全表スキャン完了

HEAT_MAP_SEG_LOOKUP

8

NUMBER

索引スキャン完了

表80-2 パラメータ値として使用されるDBMS_ILM_ADMの定数

定数

値

タイプ

説明

ILM_EXECUTION_OFFLINE

1

NUMBER

ADOアクションの実行中にオブジェクトをオフラインにできるように指定します。

ILM_EXECUTION_ONLINE

2

NUMBER

ADOアクションの実行中にオブジェクトがオンラインになるように指定します。

ILM_ENABLED

4

NUMBER

自動ADOポリシーの評価と実行が有効であることを示します。

ILM_DISABLED

2

NUMBER

自動ADOポリシーの評価と実行が無効であることを示します。

ILM_POLICY_IN_DAYS

0

NUMBER

ポリシーが日数で指定されていることを示します。これがデフォルトです。

ILM_POLICY_IN_SECONDS

1

NUMBER

ポリシーが(日数ではなく)分単位で指定されていることを示します。これを使用することで、ポリシーの期間を待たずに迅速にADOポリシーの評価をテストできることがあります。

DBMS_ILM_ADMINサブプログラムの概要

表80-3 DBMS_ILM_ADMINパッケージのサブプログラム

サブプログラム

説明

CLEAR_HEAT_MAP_ALLプロシージャ

ダミー行以外のすべての行を削除します。

CLEAR_HEAT_MAP_TABLEプロシージャ

ヒート・マップ表のすべてまたは一部の統計を消去して、特定のパターンに一致する特定の表またはセグメントの行を削除するか、それらの行をすべて削除します。

CUSTOMIZE_ILMプロシージャ

ILM実行関連のパラメータに値を指定することで、ILMの実行環境をカスタマイズします。

DISABLE_ILMプロシージャ

すべてのバックグラウンドILMスケジューリングをオフにします。

ENABLE_ILMプロシージャ

すべてのバックグラウンドILMスケジューリングをオンにします。

SET_HEAT_MAP_ALLプロシージャ

すべての表のヒート・マップ行を更新または挿入します。

SET_HEAT_MAP_STARTプロシージャ

ヒート・マップ・データの収集開始日を設定します。

SET_HEAT_MAP_TABLEプロシージャ

指定された表またはセグメントに対して表の更新または挿入を行います。

CLEAR_HEAT_MAP_ALLプロシージャ

このプロシージャは、ダミー行を除くHEAT_MAP_STAT$内のすべての行を削除します。

構文

DBMS_ILM_ADMIN.CLEAR_HEAT_MAP_ALL;

CLEAR_HEAT_MAP_TABLEプロシージャ

このプロシージャは、ヒート・マップ表のすべてまたは一部の統計を消去して、特定のパターンに一致する特定の表またはセグメントの行を削除するか、それらの行をすべて削除します。

構文

DBMS_ILM_ADMIN.CLEAR_HEAT_MAP_TABLE  (
owner                   IN  VARCHAR2,
tablename               IN  VARCHAR2,
partition               IN  VARCHAR2 default '',
access_date             IN  DATE DEFAULT NULL,
segment_access_summary  IN  NUMBER DEFAULT NULL);

パラメータ

表80-4 CLEAR_HEAT_MAP_TABLEプロシージャのパラメータ

パラメータ

説明

owner

表の所有者

tablename

表名。

partition

サブオブジェクトの名前(デフォルトはNULL)

access_date

削除されるHEAT_MAP_STAT$内のエントリの日付

segment_access_summary

セグメントに対して実行されたアクセス操作を示す、セグメント・アクセス制限の要約

CUSTOMIZE_ILMプロシージャ

このプロシージャは、ILM実行関連のパラメータに値を指定することで、ILMの実行環境をカスタマイズします。これらの値は、次回のバックグラウンド・スケジューリングで有効になります。

構文

DBMS_ILM_ADMIN.CUSTOMIZE_ILM  (
parameter            IN       NUMBER,
value                IN       NUMBER);

パラメータ

表80-5 CUSTOMIZE_ILMプロシージャのパラメータ

パラメータ

説明

parameter

DBMS_ILM_ADMINパッケージで定義されたパラメータ定数の1つです。

value

パラメータの値です。

DISABLE_ILMプロシージャ

このプロシージャは、すべてのバックグラウンドILMスケジューリングをオフにします。

構文

DBMS_ILM_ADMIN.DISABLE_ILM;

ENABLE_ILMプロシージャ

このプロシージャは、すべてのバックグラウンドILMスケジューリングをオンにします。

構文

DBMS_ILM_ADMIN.ENABLE_ILM;

SET_HEAT_MAP_ALLプロシージャ

このプロシージャは、すべての表のヒート・マップ行を更新または挿入します。

構文

DBMS_ILM_ADMIN.SET_HEAT_MAP_ALL  (
access_date            IN DATE,
segment_access_summary IN NUMBER);

パラメータ

表80-6 SET_HEAT_MAP_ALLプロシージャのパラメータ

パラメータ

説明

access_date

追加されるHEAT_MAP_STAT$内のエントリの日付

segment_access_summary

セグメントに対して実行されたアクセス操作を示す、セグメント・アクセス制限の要約

SET_HEAT_MAP_STARTプロシージャ

このプロシージャは、ヒート・マップ・データの収集開始日を設定します。

構文

DBMS_ILM_ADMIN.SET_HEAT_MAP_START  (
start_date  IN   DATE);

パラメータ

表80-7 SET_HEAT_MAP_STARTプロシージャのパラメータ

パラメータ

説明

start_date

すべての統計を有効にする新しい開始日付を示します。

SET_HEAT_MAP_TABLEプロシージャ

このプロシージャは、指定された表またはセグメントに対して表の更新または挿入を行います。

構文

DBMS_ILM_ADMIN.SET_HEAT_MAP_TABLE  (
owner                  IN VARCHAR2,
tablename              IN VARCHAR2,
partition              IN VARCHAR2 DEFAULT '',
access_date            IN DATE DEFAULT NULL,
segment_access_summary IN NUMBER DEFAULT NULL);

パラメータ

表80-8 SET_HEAT_MAP_TABLEプロシージャのパラメータ

パラメータ

説明

owner

表の所有者

tablename

表名。

partition

サブオブジェクトの名前(デフォルトはNULL)

access_date

追加されるHEAT_MAP_STAT$内のエントリの日付

segment_access_summary

セグメントに対して実行されたアクセス操作を示す、セグメント・アクセス制限の要約

81 DBMS_INMEMORY

DBMS_INMEMORYパッケージでは、インメモリー列ストア機能のためのインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_INMEMORYサブプログラムの概要

DBMS_INMEMORYサブプログラムの概要

表81-1 DBMS_INMEMORYパッケージのサブプログラム

サブプログラム

説明

POPULATEプロシージャ

指定したテーブルの移入の実行

REPOPULATEプロシージャ

指定したテーブルの再移入の実行

POPULATEプロシージャ

このプロシージャは、指定したテーブルへの移入を実行します。

構文

DBMS_INMEMORY.POPULATE (
schema_name      IN    VARCHAR2,
table_name       IN    VARCHAR2,
subobject_name   IN    VARCHAR2 DEFAULT NULL);

パラメータ

表81-2 POPULATEプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

table_name

表の名前。

subobject_name

パーティションまたはサブパーティションを指定できます。

REPOPULATEプロシージャ

このプロシージャは、指定したテーブルへの再移入を実行します。

構文

DBMS_INMEMORY.REPOPULATE (
schema_name      IN    VARCHAR2,
table_name       IN    VARCHAR2,
subobject_name   IN    VARCHAR2 DEFAULT NULL,
force            IN    BOOLEAN DEFAULT FALSE);

パラメータ

表81-3 REPOPULATEプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

table_name

表の名前。

subobject_name

パーティションまたはサブパーティションを指定できます。

force

TRUEの場合、表全体に再移入します。

82 DBMS_IOT

DBMS_IOTパッケージは、索引構成表に対する連鎖行への参照をANALYZEコマンドを使用して格納できる表を作成します。また、DBMS_IOTによって、enable_constraint操作時に、索引構成表の中で制約に違反する行への参照を格納できる例外表も作成できます。

DBMS_IOTは、データベース・インストール時にロードされません。DBMS_IOTをインストールするには、ADMINディレクトリにあるdbmsiotc.sqlを実行します。

この章では、次の項目について説明します。

- DBMS_IOTサブプログラムの要約

注意:
Oracle Databaseリリース8.1でIOTの論理ROWIDが導入されたため、このパッケージに含まれるプロシージャを使用する必要はなくなりましたが、これは下位互換性のためにのみ残されています。ただし、Oracle Databaseリリース8.0を実行するサーバーには必要です。

DBMS_IOTサブプログラムの要約

表82-1 DBMS_IOTパッケージのサブプログラム

サブプログラム

説明

BUILD_CHAIN_ROWS_TABLEプロシージャ

索引構成表に対する連鎖行への参照をANALYZEコマンドを使用して格納できる表を作成します。

BUILD_EXCEPTIONS_TABLEプロシージャ

索引構成表の中で制約に違反する行を格納できる例外表を作成します。

BUILD_CHAIN_ROWS_TABLEプロシージャ

このプロシージャは、索引構成表に対する連鎖行への参照をANALYZEコマンドを使用して格納できる表を作成します。

構文

DBMS_IOT.BUILD_CHAIN_ROWS_TABLE (
owner               IN VARCHAR2,
iot_name            IN VARCHAR2,
chainrow_table_name IN VARCHAR2 default 'IOT_CHAINED_ROWS');

パラメータ

表82-2 BUILD_CHAIN_ROWS_TABLEプロシージャのパラメータ

パラメータ

説明

owner

索引構成表の所有者

iot_name

索引構成表名

chainrow_table_name

連鎖行表の目的名

使用上の注意

各索引構成表について、その主キーに対応する連鎖行表を個々に作成する必要があります。

例

CREATE TABLE l(a char(16),b char(16), c char(16), d char(240),
PRIMARY KEY(a,b,c)) ORGANIZATION INDEX pctthreshold 10 overflow;
EXECUTE DBMS_IOT.BUILD_CHAIN_ROWS_TABLE('SYS','L','LC');

次の列を含んだ連鎖行表が作成されます。

Column Name                    Null?    Type
------------------------------ -------- ----
OWNER_NAME                              VARCHAR2(30)
TABLE_NAME                              VARCHAR2(30)
CLUSTER_NAME                            VARCHAR2(30)
PARTITION_NAME                          VARCHAR2(30)
SUBPARTITION_NAME                       VARCHAR2(30)
HEAD_ROWID                              ROWID
TIMESTAMP                               DATE
A                                       CHAR(16)
B                                       CHAR(16)
C                                       CHAR(16)

BUILD_EXCEPTIONS_TABLEプロシージャ

このプロシージャは、次のSQL文の実行時に、索引構成表の中で制約に違反する行を格納できる例外表を作成します。

- ALTER TABLE ... ENABLE CONSTRAINT ... EXCEPTIONS INTO

- ALTER TABLE ... ADD CONSTRAINT ... EXCEPTIONS INTO

構文

DBMS_IOT.BUILD_EXCEPTIONS_TABLE (
owner                 IN VARCHAR2,
iot_name              IN VARCHAR2,
exceptions_table_name IN VARCHAR2 default 'IOT_EXCEPTIONS');

パラメータ

表82-3 BUILD_EXCEPTIONS_TABLEプロシージャのパラメータ

パラメータ

説明

owner

索引構成表の所有者

iot_name

索引構成表名

exceptions_table_name

例外表の目的名

使用上の注意

各索引構成表について、その主キーに対応する例外表を個々に作成する必要があります。

例

EXECUTE DBMS_IOT.BUILD_EXCEPTIONS_TABLE('SYS','L','LE');

前述の索引構成表に対する例外表の列は、次のようになります。

Column Name                    Null?    Type
------------------------------ -------- ----
ROW_ID                                  VARCHAR2(30)
OWNER                                   VARCHAR2(30)
TABLE_NAME                              VARCHAR2(30)
CONSTRAINT                              VARCHAR2(30)
A                                       CHAR(16)
B                                       CHAR(16)
C                                       CHAR(16)

83 DBMS_JAVA

DBMS_JAVAパッケージは、Javaからデータベース機能を利用するためのPL/SQLインタフェースを提供します。

- DBMS_JAVAのドキュメント

DBMS_JAVAのドキュメント

DBMS_JAVAのコンテキストでのこのパッケージの詳細は、『Oracle Database Java開発者ガイド』のDBMS_JAVAに関する項を参照してください。

84 DBMS_JOB

DBMS_JOBパッケージは、ジョブ・キュー内のジョブをスケジュールおよび管理します。

注意:
DBMS_JOBパッケージは、DBMS_SCHEDULERパッケージによって置き換えられています。特に、システム・ロードを管理するジョブを管理する場合、ユーザーのパッケージの実行権限を取り消して、DBMS_JOBを無効にすることを考慮する必要があります。
詳細は、第140章「DBMS_SCHEDULER」および『Oracle Database管理者ガイド』のDBMS_JOBからDBMS_SCHEDULERへの移行に関する項を参照してください。

この章では、次の項目について説明します。

- DBMS_JOBの使用方法

- セキュリティ・モデル

- 使用上の注意

- DBMS_JOBサブプログラムの要約

DBMS_JOBの使用方法

- セキュリティ・モデル

- 使用上の注意

セキュリティ・モデル

DBMS_JOBを使用するために必要な特定のシステム権限はありません。DBMS_JOBの管理に使用できるシステム権限はありません。ユーザー所有のジョブを除き、ジョブの変更や削除はできません。これは、DBA権限が付与されているユーザーを含むすべてのユーザーにあてはまります。

ユーザーによって所有されているか、またはそれに対する明示的なEXECUTE権限がユーザーに付与されているプロシージャを実行できます。ただし、ロールによってユーザーに実行権限が付与されているプロシージャを実行することはできません。

一度ジョブを起動して実行すると、そのジョブを簡単に停止する方法はありませんので注意してください。

使用上の注意

- Oracle Real Application Clustersの操作

- ジョブの停止

Oracle Real Application Clustersの操作

DBMS_JOBはジョブの複数インスタンスの実行をサポートしています。デフォルトで、ジョブはどのインスタンスでも実行できますが、ジョブを実行するインスタンスは1つに限られます。さらに、ジョブを特定のインスタンスにバインドすることで、強制的にインスタンスをバインドできます。インスタンスのバインドを実装するには、インスタンス親和性パラメータにインスタンス番号を指定します。ただし、Oracle Database 10g リリース1(10.1)では、インスタンスのバインドは実装しないことをお薦めします。サービス親和性の方が適切です。この概念は、DBMS_SCHEDULERパッケージに実装されています。

次のプロシージャを使用して、インスタンス親和性のあるジョブを作成、変更または実行できます。親和性を指定しない場合、すべてのインスタンスでジョブが実行されることになるので注意してください。

DBMS_JOB.SUBMIT

ジョブをジョブ・キューに送るには、次の構文を使用します。

DBMS_JOB.SUBMIT(
job       OUT    BINARY_INTEGER,
what      IN     VARCHAR2,
next_date IN     DATE DEFAULT SYSDATE,
interval  IN     VARCHAR2 DEFAULT 'NULL',
no_parse  IN     BOOLEAN DEFAULT FALSE,
instance  IN     BINARY_INTEGER DEFAULT ANY_INSTANCE,
force     IN     BOOLEAN DEFAULT FALSE);

パラメータinstanceおよびforceを使用して、ジョブおよびインスタンスの親和性を制御します。instanceのデフォルト値は0(ゼロ)で、いずれのインスタンスでもジョブを実行できることを示します。特定のインスタンスでジョブを実行するには、instanceの値を指定します。instanceの値が負数またはNULLの場合は、エラーORA-23319が表示されます。

forceパラメータは、falseにデフォルト設定されます。forceパラメータがTRUEの場合は、ジョブ・インスタンスとして正の整数がすべて受け入れられます。forceがFALSEの場合は、指定したインスタンスが実行されている必要があり、実行されていない場合は、エラー番号ORA-23428が表示されます。

DBMS_JOB.INSTANCE

ジョブを実行するために特定のインスタンスを割り当てるには、次の構文を使用します。

DBMS_JOB.INSTANCE(  JOB IN BINARY_INTEGER,
instance                IN BINARY_INTEGER,
force                   IN BOOLEAN DEFAULT FALSE);

この例のforceパラメータは、falseにデフォルト設定されます。インスタンスの値が0 (ゼロ)の場合は、ジョブ親和性が変更され、forceの値に関係なく使用可能なすべてのインスタンスがジョブを実行できます。INSTANCEの値が整数でFORCEパラメータがFALSEの場合、ジョブ親和性は、指定したインスタンスが実行されている場合のみ変更され、実行されていない場合は、エラーORA-23428が表示されます。

forceパラメータがTRUEの場合は、ジョブ・インスタンスとして正の整数がすべて受け入れられ、ジョブ親和性が変更されます。instanceの値が負数またはNULLの場合は、エラーORA-23319が表示されます。

DBMS_JOB.CHANGE

ジョブに関連付けられたユーザー定義可能なパラメータを変更するには、次の構文を使用します。

DBMS_JOB.CHANGE(  JOB IN BINARY_INTEGER,
what                  IN VARCHAR2 DEFAULT NULL,
next_date             IN DATE DEFAULT NULL,
interval              IN VARCHAR2 DEFAULT NULL,
instance              IN BINARY_INTEGER DEFAULT NULL,
force                 IN BOOLEAN DEFAULT FALSE );

この例では、instanceおよびforceの2つのパラメータが使用されています。instanceのデフォルト値はNULLで、ジョブ親和性を変更しないことを示しています。

forceのデフォルト値はFALSEです。指定したインスタンスが実行されていない場合はエラーORA-23428が、instanceの数値が負数の場合はエラーORA-23319が表示されます。

DBMS_JOB.RUN

DBMS_JOB.RUNのforceパラメータはFALSEにデフォルト設定されます。forceがTRUEの場合は、フォアグラウンド・プロセスでのジョブ実行にインスタンス親和性は無関係です。forceがFALSEの場合は、指定したインスタンスでのみフォアグラウンドでジョブを実行できます。forceがFALSEで、接続されたインスタンスが不適切なインスタンスである場合は、エラーORA-23428が表示されます。

DBMS_JOB.RUN(
job    IN BINARY_INTEGER,
force  IN BOOLEAN DEFAULT FALSE);

ジョブの停止

一度ジョブを起動して実行すると、そのジョブを簡単に停止する方法はありませんので注意してください。

DBMS_JOBサブプログラムの要約

表84-1 DBMS_JOBパッケージのサブプログラム

サブプログラム

説明

BROKENプロシージャ

ジョブの実行を禁止します。

CHANGEプロシージャ

ジョブに関連付けられたユーザー定義可能なパラメータをすべて変更します。

INSTANCEプロシージャ

インスタンスでジョブが実行されるように割り当てます。

INTERVALプロシージャ

指定したジョブの実行間隔を変更します。

NEXT_DATEプロシージャ

指定したジョブの次の実行時間を変更します。

REMOVEプロシージャ

指定したジョブをジョブ・キューから削除します。

RUNプロシージャ

指定したジョブを強制的に実行します。

SUBMITプロシージャ

新規ジョブをジョブ・キューに送ります。

USER_EXPORTプロシージャ

指定されたジョブをエクスポート用に再作成するか、またはインスタンス親和性を指定してエクスポート用に再作成します。

WHATプロシージャ

指定したジョブに関するジョブの記述を変更します。

BROKENプロシージャ

このプロシージャは中断フラグを設定します。中断状態のジョブが実行されることはありません。

構文

DBMS_JOB.BROKEN (
job       IN  BINARY_INTEGER,
broken    IN  BOOLEAN,
next_date IN  DATE DEFAULT SYSDATE);

パラメータ

表84-2 BROKENプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

broken

ジョブを中断または中断なしに設定します。TRUEは中断に設定し、FALSEは中断なしに設定します。

next_date

ジョブを次回実行する日付。

注意:
実行中のジョブに中断を指定すると、ジョブの完了後、ジョブのステータスはNORMALにリセットされます。したがって、このプロシージャは、実行中でないジョブに対してのみ実行してください。

使用上の注意

- コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

- ジョブが16回失敗すると、自動的にそのジョブが中断に設定され、ジョブの実行は試行されなくなります。

CHANGEプロシージャ

このプロシージャは、ユーザーがジョブに設定できるフィールドを変更します。

構文

DBMS_JOB.CHANGE (
job       IN  BINARY_INTEGER,
what      IN  VARCHAR2,
next_date IN  DATE,
interval  IN  VARCHAR2,
instance  IN  BINARY_INTEGER DEFAULT NULL,
force     IN  BOOLEAN DEFAULT FALSE);

パラメータ

表84-3 CHANGEプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

what

実行するPL/SQLプロシージャ。

next_date

ジョブを次回実行する日付。

interval

日付ファンクション。ジョブ実行の直前に評価されます。

instance

ジョブの送信時にそのジョブを実行できるインスタンスを指定します。デフォルトはNULLで、インスタンス親和性が変更されないことを示します。

force

FALSEの場合、(インスタンス番号を変更する対象に)指定したインスタンスが実行している必要があります。そうでない場合は、ルーチンに例外が発生します。

TRUEの場合は、ジョブ・インスタンスとして正の整数がすべて受け入れられます。

使用上の注意

- コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

- パラメータinstanceおよびforceがジョブ・キュー親和性のために追加されています。ジョブ・キュー親和性を使用して、ユーザーは、送信されたジョブを特定のインスタンスで実行するか、またはどのインスタンスでも実行できるようにするかを指示できます。

- パラメータwhat、next_dateまたはintervalがNULLの場合、現在の値は変更されません。

例

BEGIN
DBMS_JOB.CHANGE(14144, null, null, 'sysdate+3');
COMMIT;
END;

INSTANCEプロシージャ

このプロシージャは、ジョブ・インスタンス親和性を変更します。

構文

DBMS_JOB.INSTANCE (
job        IN BINARY_INTEGER,
instance   IN BINARY_INTEGER,
force      IN BOOLEAN DEFAULT FALSE);

パラメータ

表84-4 INSTANCEプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

instance

ジョブの送信時に、ユーザーはジョブを実行できるインスタンスを指定できます。

force

TRUEの場合は、ジョブ・インスタンスとして正の整数がすべて受け入れられます。FALSE(デフォルト)の場合は、指定したインスタンスが実行している必要があり、そうでない場合は、ルーチンに例外が発生します。

使用上の注意

コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

INTERVALプロシージャ

このプロシージャは、ジョブの実行間隔を変更します。

構文

DBMS_JOB.INTERVAL (
job       IN  BINARY_INTEGER,
interval  IN  VARCHAR2);

パラメータ

表84-5 INTERVALプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

interval

日付ファンクション。ジョブの実行直前に評価されます。

使用上の注意

- ジョブが正常に完了すると、next_dateにこの新しい日付が設定されます。intervalは、その日付をselect interval into next_date from dual;という文にはめ込むことによって評価されます。

- intervalパラメータの評価結果は将来の日時に設定する必要があります。有効な間隔の例は次のとおりです。

間隔

説明

'sysdate + 7'

毎週1回実行

'next_day(sysdate,''TUESDAY'')'

毎週火曜日に実行

'null'

1回のみ実行

- intervalの評価結果がNULLで、ジョブが正常に完了した場合、そのジョブはキューから自動的に削除されます。

- コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

NEXT_DATEプロシージャ

このプロシージャは、既存のジョブの次回実行時間を変更します。

構文

DBMS_JOB.NEXT_DATE (
job       IN  BINARY_INTEGER,
next_date IN  DATE);

パラメータ

表84-6 NEXT_DATEプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

next_date

次回のリフレッシュ日付。この日付になるとジョブは自動的に実行されます。ただし、ジョブを実行するバックグラウンド・プロセスが存在することが前提です。

使用上の注意

コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

REMOVEプロシージャ

このプロシージャは、ジョブ・キューから既存のジョブを削除します。実行中のジョブを停止する機能は、現在はありません。

構文

DBMS_JOB.REMOVE (
job       IN  BINARY_INTEGER );

パラメータ

表84-7 REMOVEプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

使用上の注意

コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

例

BEGIN
DBMS_JOB.REMOVE(14144);
COMMIT;
END;

RUNプロシージャ

このプロシージャは、ジョブJOBをすぐに実行します。そのジョブが中断されている場合でも実行します。

ジョブが実行されると、next_dateが再計算されます。データ・ディクショナリ・ビューUSER_JOBS、またはDBA_JOBSを参照してください。

構文

DBMS_JOB.RUN (
job       IN  BINARY_INTEGER,
force     IN  BOOLEAN DEFAULT FALSE);

パラメータ

表84-8 RUNプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

force

TRUEの場合、フォアグラウンド・プロセスでのジョブの実行にインスタンス親和性は無関係です。FALSEの場合は、指定したインスタンスでのみフォアグラウンドでジョブを実行できます。

例

EXECUTE DBMS_JOB.RUN(14144);

注意:

これは、現行セッションのパッケージを再初期化します。

例外

forceがFALSEで、接続インスタンスが正しくない場合は、例外が発生します。

SUBMITプロシージャ

このプロシージャは、新規ジョブを送信します。順序sys.jobseqからジョブを選択します。

構文

DBMS_JOB.SUBMIT (
job       OUT BINARY_INTEGER,
what      IN  VARCHAR2,
next_date IN  DATE DEFAULT SYSDATE,
interval  IN  VARCHAR2 DEFAULT 'null',
no_parse  IN  BOOLEAN DEFAULT FALSE,
instance  IN  BINARY_INTEGER DEFAULT any_instance,
force     IN  BOOLEAN DEFAULT FALSE);

パラメータ

表84-9 SUBMITプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

what

実行するジョブのPL/SQLテキスト。これは有効なPL/SQL文、またはコードのブロックであることが必要です。たとえば、ストアド・プロシージャPを実行するには、文字列P; (セミコロンを含む)をこのルーチンに渡すことができます。whatパラメータで指定したSQLは、次に示すPL/SQLブロック内でラップされます。

DECLARE
job BINARY_INTEGER := :job;
next_date DATE := :mydate;
broken BOOLEAN := FALSE;
BEGIN
WHAT
:mydate := next_date;
IF broken THEN :b := 1; ELSE :b := 0; END IF;
END;

文に; セミコロンを含めたかどうか確認してください。

next_date

ジョブを次回実行する日付。

interval

ジョブを次回実行する時間を計算する日付ファンクション。デフォルトはNULLです。このファンクションは、将来の日時またはNULLに設定される必要があります。

no_parse

フラグ。デフォルトはFALSEです。FALSEに設定すると、ジョブに関連付けられているプロシージャが解析されます。TRUEに設定すると、ジョブに関連付けられているプロシージャがそのジョブの初回実行時に解析されます。

たとえば、ジョブに関連付けられている表を作成する前にそのジョブを送信する場合は、この値をTRUEに設定します。

instance

ジョブの送信時にそのジョブを実行できるインスタンスを指定します。

force

TRUEの場合は、ジョブ・インスタンスとして正の整数がすべて受け入れられます。FALSE(デフォルト)の場合は、指定したインスタンスが実行している必要があり、そうでない場合は、ルーチンに例外が発生します。

使用上の注意

- コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

- パラメータinstanceおよびforceがジョブ・キュー親和性のために追加されています。ジョブ・キュー親和性を使用して、ユーザーは、送信されたジョブを特定のインスタンスで実行するか、またはどのインスタンスでも実行できるようにするかを指示できます。

例

新規ジョブをジョブ・キューに送る例です。このジョブは、プロシージャDBMS_DDL.ANALYZE_OBJECTをコールし、表DQUON.ACCOUNTSに関するオプティマイザの統計情報を生成します。統計情報は、ACCOUNTS表にある行の半分をサンプルとして使用します。このジョブは24時間ごとに実行されます。

VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,
'dbms_ddl.analyze_object(''TABLE'',
''DQUON'', ''ACCOUNTS'',
''ESTIMATE'', NULL, 50);'
SYSDATE, 'SYSDATE + 1');
COMMIT;
END;
/
Statement processed.
print jobno
JOBNO
----------
14144

USER_EXPORTプロシージャ

2種類のオーバーロードされたプロシージャがあります。最初のプロシージャは、指定したジョブを再作成するコールのテキストを生成します。2番目のプロシージャはインスタンス親和性を変更し(8i以上)、互換性を保ちます。

構文

DBMS_JOB.USER_EXPORT (
job    IN     BINARY_INTEGER,
mycall IN OUT VARCHAR2);

DBMS_JOB.USER_EXPORT (
job      IN     BINARY_INTEGER,
mycall   IN OUT VARCHAR2,
myinst   IN OUT VARCHAR2);

パラメータ

表84-10 USER_EXPORTプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

mycall

指定したジョブを再作成するコールのテキスト。

myinst

インスタンス親和性を変更するコールのテキスト。

WHATプロシージャ

このプロシージャは、既存のジョブが実行する内容を変更し、その環境を置き換えます。

構文

DBMS_JOB.WHAT (
job       IN  BINARY_INTEGER,
what      IN  VARCHAR2);

パラメータ

表84-11 WHATプロシージャのパラメータ

パラメータ

説明

job

実行するジョブのシステム割当てID。このIDを調べるには、USER_JOBSビューまたはDBA_JOBSビューのJOB列を問い合わせてください。

what

実行するPL/SQLプロシージャ。

使用上の注意

- コミットされるまで、ジョブはバックグラウンドのジョブ・キューによって処理できるようになりません。

- 次に正しいwhatの値の例(ルーチンが存在していると仮定)を示します。

- 'myproc(''10-JAN-82'', next_date, broken);'

- 'scott.emppackage.give_raise(''JENKINS'', 30000.00);'

- 'dbms_job.remove(job);'

85 DBMS_LDAP

DBMS_LDAPパッケージを使用すると、LDAPサーバーからデータにアクセスできます。

- DBMS_LDAPのドキュメント

DBMS_LDAPのドキュメント

Oracle Internet Directoryのコンテキストでのこのパッケージの詳細は、『Oracle Fusion Middleware Oracle Identity Managementアプリケーション開発者ガイド』のDBMS_LDAPに関する項を参照してください。

86 DBMS_LDAP_UTL

DBMS_LDAP_UTLパッケージには、Oracle拡張機能ユーティリティ・ファンクションが収められています。

- DBMS_LDAP_UTLのドキュメント

DBMS_LDAP_UTLのドキュメント

Oracle Internet Directoryのコンテキストでのこのパッケージの詳細は、『Oracle Internet Directoryアプリケーション開発者ガイド』のDBMS_LDAP_UTLに関する項を参照してください。

87 DBMS_LIBCACHE

このDBMS_LIBCACHEパッケージは、リモート・インスタンスからSQLおよびPL/SQLを抽出し、このSQLを実行せずにローカルでコンパイルして、Oracleインスタンスにライブラリ・キャッシュを作成する1つのサブプログラムから構成されています。インスタンスのキャッシュをコンパイルするのは、アプリケーションがフェイルオーバーまたはスイッチオーバーの前に実行されるのに必要な情報を準備するためです。

この章では、次の項目について説明します。

- DBMS_LIBCACHEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_LIBCACHEサブプログラムの要約

DBMS_LIBCACHEの使用方法

- 概要

- セキュリティ・モデル

概要

共有カーソルのコンパイルは、オープン、解析およびバインド操作で構成され、これに加えて最初の実行時にはタイプ・チェックおよび実行計画ファンクションが実行されます。これらの手順はすべて、SELECT文のDBMS_LIBCACHEパッケージにより事前に実行されます。オープンおよび解析ファンクションは、PL/SQLおよびDMLに対して事前に実行されます。PL/SQLの場合、解析フェーズを実行すると、MCODE以外のすべてのライブラリ・キャッシュ・ヒープのロードに影響を与えます。

セキュリティ・モデル

DBMS_LIBCACHEを実行するには、SQL文の場合と同じオブジェクトに直接アクセスする必要があります。そのためには、リモート・システム上で元のシステムと同じユーザーIDを利用することをお薦めします。

複数のスキーマ・ユーザーが存在する場合は、個々のユーザーに対しDBMS_LIBCACHEをコールしてください。

また、DBMS_LIBCACHEは、一般的なユーザーPARSERを使用してコールすることも可能です。ただし、このユーザーのロールに付与されたアクセス権ではオブジェクトを使用するSQLを解析できません。これは、標準のPL/SQLセキュリティの制限です。

DBMS_LIBCACHEサブプログラムの要約

表87-1 DBMS_LIBCACHEパッケージのサブプログラム

サブプログラム

説明

COMPILE_FROM_REMOTEプロシージャ

ソース・インスタンスからバッチでSQLを抽出し、ターゲット・インスタンスでSQLをコンパイルします。

COMPILE_FROM_REMOTEプロシージャ

このプロシージャは、ソース・インスタンスからバッチでSQLを抽出し、ターゲット・インスタンスでSQLをコンパイルします。

構文

DBMS_LIBCACHE.COMPILE_FROM_REMOTE (
p_db_link                 IN     dbms_libcache$def.db_link%type,
p_username                IN     VARCHAR2 default null,
p_threshold_executions    IN     NATURAL  default 3,
p_threshold_sharable_mem  IN     NATURAL  default 1000,
p_parallel_degree         IN     NATURAL  default 1);

パラメータ

表87-2 COMPILE_FROM_REMOTEプロシージャのパラメータ

パラメータ

説明

p_db_link

ソース名へのデータベース・リンク(必須)。SQL文の抽出に使用されるインスタンスを指すデータベース・リンク。ユーザーはソース・インスタンスでロールSELECT_ON_CATALOGを持つ必要があります。セキュリティ向上のため、接続にパスワード・ファイルまたはLDAP認証を使用できます。データベース・リンクはdbms_libcache$def.ACCESS_METHOD = DB_LINK_METHODを使用するリリースの場合にのみ必須です。

p_instance_name

(将来の使用のために確保)。SQL文の抽出に使用されるインスタンスの名前。インスタンス名はローカル・インスタンスを除き、すべてのインスタンスに対して一意である必要があります。大文字と小文字は区別されません。

p_username

ソース・ユーザー名(デフォルトはすべてのユーザー)。SQL文の抽出に使用されるusernameの名前。usernameはオプションのパラメータで、ユーザーIDがソース・インスタンスのユーザーIDと同じであると確実に解析されるようにするために使用されます。ユーザーが単一のuser_id、たとえばAPPSとして接続するアプリケーションの場合、解析され、共有プールに記録されるuser_idはAPPSです。APPSによって解析されるSQL文のみを選択する場合は、フィールドに文字列'APPS'と入力します。バッチで実行する文を選択する場合も、GLなどのスキーマ所有者を指定してプロシージャの実行を繰り返します。ユーザー名を指定する場合は、有効な名前にしてください。大文字と小文字は区別されません。

p_threshold_executions

実行数の下限で、これに満たないSQL文は解析の対象として選択されません。このパラメータはオプションです。このパラメータを使用すると、アプリケーションにおいて、たとえば4回以上などの実行回数の文を抽出し、コンパイルできます。デフォルト値は1です。これは、無効なSQL文も含め、実行されていないSQL文は抽出されないことを意味します。

p_threshold_sharable_mem

ソース・インスタンスのカーソルによって消費される共有メモリーの下限サイズ。この値に満たないSQL文は、解析の対象として選択されません。このパラメータはオプションです。このパラメータを使用すると、アプリケーションにおいて、たとえば10000バイトより大きい共有メモリーの文を抽出し、コンパイルできます。

p_parallel_degree

解析処理を完了するために実行するパラレル・ジョブ数。これらのタスクは、解析の対象に選択されたSQL文の部分範囲に対するパラレル・ジョブとして起動されます。このパラメータは、現在実装されていないパラレル・コンパイル・ジョブ用に予約されています。

88 DBMS_LOB

DBMS_LOBパッケージは、BLOB、CLOB、NCLOB、BFILEおよび一時LOBを操作するサブプログラムを提供します。DBMS_LOBを使用すると、LOBの特定の部分またはLOB全体に対するアクセスおよび操作ができます。

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

この章では、次の項目について説明します。

- DBMS_LOBの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ・タイプ

- ルールおよび制限

- 使用上の注意

- ルールおよび制限

- 例外

- DBMS_LOBサブプログラムの要約

DBMS_LOBの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ・タイプ

- 使用上の注意

- ルールおよび制限

- 例外

概要

DBMS_LOBでは、BLOB、CLOBおよびNCLOBの読取りおよび変更ができ、BFILEに対しては、読取り専用操作を実行できます。LOB操作の大部分が、このパッケージによって提供されます。

セキュリティ・モデル

このパッケージは、SYSの下に作成する必要があります。このパッケージが提供する操作は、パッケージ所有者SYSではなく、現行のコール・ユーザーのもとで実行されます。

無名PL/SQLブロックからコールされたDBMS_LOBサブプログラムは、カレント・ユーザーの権限を使用して実行されます。ストアド・プロシージャからコールされたDBMS_LOBサブプログラムは、そのストアド・プロシージャの所有者の権限を使用して実行されます。

ユーザーはプロシージャの作成時に、AUTHIDを設定して定義者の権限または実行者の権限のどちらを使用するのかを指示できます。次に例を示します。

CREATE PROCEDURE proc1 AUTHID DEFINER ...

または

CREATE PROCEDURE proc1 AUTHID CURRENT_USER ...

関連項目:
AUTHIDおよび権限の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

DIRECTORY機能を使用すると、BFILEに安全にアクセスできます。この機能の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』および『Oracle Database SQL言語リファレンス』のBFILENAMEファンクションに関する項を参照してください。

一時LOBに関係するセキュリティ・モデルについては、「使用上の注意」を参照してください。

定数

DBMS_LOBパッケージでは、次の表に示す定数が使用されます。

- 表88-1「DBMS_LOBの定数: 基本」

- 表88-2「DBMS_LOBの定数: オプション・タイプ」

- 表88-3「DBMS_LOBの定数: オプション値」

- 表88-4「DBMS_LOBの定数: DBFS状態値のタイプ」

- 表88-5「DBMS_LOBの定数: DBFSキャッシュ・フラグ」

- 表88-6「DBMS_LOBの定数: その他」

表88-1 DBMS_LOBの定数: 基本

定数

タイプ

値

説明

CALL

PLS_INTEGER

12

コール継続時間を含むTEMP LOBを作成します。

FILE_READONLY

BINARY_INTEGER

0

指定したBFILEを読取り専用モードでオープンします。

LOB_READONLY

BINARY_INTEGER

0

指定したLOBを読取り専用モードでオープンします。

LOB_READWRITE

BINARY_INTEGER

1

指定したLOBを読取り/書取りモードでオープンします。

LOBMAXSIZE

INTEGER

18446744073709551615

LOBの最大サイズ(バイト単位)。

SESSION

PLS_INTEGER

10

セッション継続時間を含むTEMP LOBを作成します。

表88-2 DBMS_LOBの定数: オプション・タイプ

定数

定義

値

説明

OPT_COMPRESS

BINARY_INTEGER

1

SECUREFILEの圧縮オプション値を設定/取得します。

OPT_DEDUPLICATE

BINARY_INTEGER

4

SECUREFILEの重複除外オプション値を設定/取得します。

OPT_ENCRYPT

BINARY_INTEGER

2

SECUREFILEの暗号化オプション値を取得します。

表88-3 DBMS_LOBの定数: オプション値

定数

定義

値

説明

COMPRESS_OFF

BINARY_INTEGER

0

SETOPTIONSプロシージャに対しては、圧縮をオフに設定します。GETOPTIONSファンクションに対しては、圧縮はオフになっています。

COMPRESS_ON

BINARY_INTEGER

1

SETOPTIONSプロシージャに対しては、圧縮をオンに設定します。GETOPTIONSファンクションに対しては、圧縮はオンになっています。

DEDUPLICATE_OFF

BINARY_INTEGER

0

SETOPTIONSプロシージャに対しては、重複除外をオフに設定します。GETOPTIONSファンクションに対しては、重複除外はオフになっています。

DEDUPLICATE_ON

BINARY_INTEGER

4

SETOPTIONSプロシージャに対しては、重複除外をオンに設定します。GETOPTIONSファンクションに対しては、重複除外はオンになっています。

ENCRYPT_OFF

BINARY_INTEGER

0

GETOPTIONSファンクションに対しては、暗号化はオフになっています。

ENCRYPT_ON

BINARY_INTEGER

2

GETOPTIONSファンクションに対しては、暗号化はオンになっています。

表88-4 DBMS_LOBの定数: DBFS状態値のタイプ

定数

定義

値

説明

DBFS_LINK_NEVER

PLS_INTEGER

0

LOBはアーカイブされていません。

DBFS_LINK_NO

PLS_INTEGER

2

LOBはアーカイブされていますが、RDBMSに読み込まれています。

DBFS_LINK_YES

PLS_INTEGER

1

LOBは現在アーカイブされています。

表88-5 DBMS_LOBの定数: DBFSキャッシュ・フラグ

定数

定義

値

説明

DBFS_LINK_CACHE

PLS_INTEGER

1

LOBデータをアーカイブに書き込みますが、RDBMS内のデータはキャッシュされたバージョンとして保持します。

DBFS_LINK_NOCACHE

PLS_INTEGER

0

LOBデータをアーカイブに書き込み、RDBMSから削除します。

表88-6 DBMS_LOBの定数: その他

定数

定義

値

説明

CONTENTTYPE_MAX_SIZE

PLS_INTEGER

128

コンテンツ・タイプ文字列に使用できる最大バイト数

DBFS_LINK_PATH_MAX_SIZE

PLS_INTEGER

1024

DBFSパス名の最大長

データ・タイプ

DBMS_LOBパッケージでは、表88-7に示すデータ・タイプが使用されます。

表88-7 DBMS_LOBで使用されるデータ・タイプ

タイプ

説明

BLOB

ソースまたは宛先のバイナリLOB。

RAW

ソースまたは宛先のRAWバッファ(BLOBとともに使用されます)。

CLOB

ソースまたは宛先の文字LOB(NCLOBを含みます)。

VARCHAR2

ソースまたは宛先の文字バッファ(CLOBおよびNCLOBとともに使用されます)。

INTEGER

バッファまたはLOBのサイズ、LOBへのオフセットまたはアクセス量を指定します。

BFILE

データベースの外部に格納されているラージ・バイナリ・オブジェクト。

DBMS_LOBパッケージは特別なタイプを定義しません。

NCLOBは、固定幅および可変幅のマルチバイト各国語キャラクタ・セットを格納するためのCLOBです。

CLOB用のDBMS_LOBサブプログラムの仕様部にある句ANY_CSを使用すると、CLOBタイプでCLOBまたはNCLOBロケータ変数を入力として受け入れることができます。

使用上の注意

すべてのDBMS_LOBサブプログラムは、LOBロケータをベースにして動作します。DBMS_LOBサブプログラムを正常に実行するためには、データベース表領域または外部ファイル・システムにすでに存在しているLOBを示す入力ロケータを用意する必要があります。『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の第1章も参照してください。

データベースでLOBを使用するには、最初にSQLデータ定義言語(DDL)を使用して、LOB列が含まれる表を定義する必要があります。

- 内部LOB

- 外部LOB

- 一時LOB

内部LOB

表にLOB列を定義した後、表に内部LOBを移入するには、SQLデータ操作言語(DML)を使用して、LOB列のロケータを初期化するか、または移入します。

外部LOB

外部LOB(BFILE)がLOBロケータで示されるようにするには、次のことを実行する必要があります。

- 有効な既存の物理ディレクトリを示すDIRECTORYオブジェクトが定義済であること、およびデータベースに対する読取り権限を伴った物理ファイル(追加対象のLOB)が存在していることを確認する必要があります。オペレーティング・システムでパス名の大文字と小文字が区別される場合は、必ず正しい形式でディレクトリを指定してください。

- 追加する外部LOBのDIRECTORYオブジェクトとファイル名をBFILENAMEファンクションに追加して、外部LOBのLOBロケータを作成する必要があります。

これらの作業が終了すると、指定されたLOBロケータを使用して、LOB列が含まれている行を挿入または更新できます。

LOBの定義および作成が終了すると、SELECTを実行してLOBロケータをローカルのPL/SQL LOB変数に割り当て、この変数をDBMS_LOBの入力パラメータとして使用してLOB値にアクセスできます。

これらの作業を行うための別の方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の外部LOB(BFILE)へのアクセスに関する項を参照してください。

一時LOB

データベースでは、一時LOBの定義、作成、削除、アクセスおよび更新がサポートされています。一時LOBデータは、ユーザーの一時表領域に格納されています。一時LOBはデータベースに永続的には格納されません。この目的は、主にLOBデータの変換の実行です。

一時LOBの場合は、OCI、PL/SQLまたはその他のプログラム・インタフェースを使用して作成または操作する必要があります。一時LOBは、BLOB、CLOBまたはNCLOBのいずれにもできます。

一時LOBは空の状態で作成されます。デフォルトでは一時LOBは、それが作成されたセッションの終了時にすべて削除されます。処理が途中で停止したり、データベースがクラッシュした場合、一時LOBは削除され、その領域は解放されます。

一時LOBを論理バケットにまとめてグループ化するインタフェースもあります。一時LOB用のこの論理記憶域は期間で表されます。各一時LOBには、CACHEやNOCACHEなど、別々の記憶特性があります。セッションごとにデフォルトの記憶域があり、ユーザーが特定の期間を指定しない場合、一時LOBはこの記憶域に格納されます。さらに、期間ごとに解放操作を実行して、期間内のすべてのコンテンツを解放できます。

一時LOBに関する、読込み一貫性(CR)、取消し、バックアップ、パラレル処理またはトランザクション管理はサポートされていません。一時LOBには、CRおよびロールバックがサポートされていないため、エラーが発生した場合、ユーザーは一時LOBを解放して、最初から操作をやりなおす必要があります。

CR、取消しおよびバージョンが、一時LOBに対しては生成されないため、同じ一時LOBに複数のロケータを割り当てると、パフォーマンスに影響する可能性があります。具体的には、各ロケータが一時LOBの独自のコピーを所有するためです。

別のロケータが一時LOBを指しているときにユーザーがその内容を変更する場合、一時LOBのコピーが作成されます。すると、変更が実行されたロケータは、一時LOBの新しいコピーをポイントするようになります。変更が行われたロケータと同様、他のロケータもそれ以降同じデータを参照しなくなります。このような状況では、CRスナップショットおよびバージョン・ページによって、ユーザーは独自のバージョンのLOBを簡単に参照できるため、永続LOBではディープ・コピーは生成されません。

必要な場合は、OCIのロケータへのポインタを使用し、ロケータへの複数のポインタが同じ一時LOBロケータを指すように設定することによって、擬似REF構文を取得できます。PL/SQLでは、1つの一時LOBに対して複数のロケータは使用しないでください。一時LOBロケータは、参照によって別のプロシージャに渡される可能性があります。

一時LOBは表スキーマと関連付けられていないため、行内および行外の一時LOBという概念はありません。ユーザーが一時LOBインスタンスを作成すると、エンジンによってLOBデータへのロケータが作成され戻されます。PL/SQLのDBMS_LOBパッケージ、PRO*C/C++、OCIおよびその他のプログラム・インタフェースは、このロケータを介して、永続LOBに対する操作と同様に一時LOBを操作します。

クライアント側の一時LOBはサポートされていません。一時LOBはすべてサーバーに常駐します。

一時LOBは、永続LOBがサポートしているEMPTY_BLOBまたはEMPTY_CLOBファンクションをサポートしません。EMPTY_BLOBファンクションは、LOBの初期化を指定しますが、データの移入は行いません。

一時LOBインスタンスは、適切なFREETEMPORARYまたはOCIDurationEnd文でOCIまたはDBMS_LOBパッケージを使用したときのみ破棄できます。

一時LOBインスタンスは、適切なOCIおよびDBMS_LOB文を使用することによって、標準の永続内部LOBと同様にアクセスおよび変更できます。一時LOBを永続LOBにするには、OCIまたはDBMS_LOBのCOPYコマンドを明示的に使用して、一時LOBを永続LOBにコピーする必要があります。

セキュリティは、LOBロケータを介して提供されます。一時LOBは、その作成ユーザーのみ参照できます。ロケータは、あるユーザーのセッションから別のユーザーのセッションに渡すことはできません。あるセッションから別のセッションにロケータを渡しても、元のセッションの一時LOBにはアクセスできません。一時LOB参照は、各ユーザー固有のセッションに限定されます。別の場所のロケータを使用するユーザーは、同じLOBIDを持つ自分のセッション内でのみLOBにアクセスできます。ユーザーがこれを試行することはお薦めしませんが、試行した場合でも他のユーザーのデータに影響を与えることはありません。

データベースは、V$TEMPORARY_LOBSと呼ばれるv$ビューにセッションごとの一時LOBを記録しますが、このビューには、セッションごとに存在している一時LOB数に関する情報が含まれています。V$ビューは、DBAが使用するためのものです。セッションから、データベースはどのユーザーが一時LOBを所有しているかを判断できます。V$TEMPORARY_LOBSをDBA_SEGMENTSと組み合せて使用することで、DBAは、セッションで一時LOB用に使用されている領域の量を把握できます。これらの表を使用すると、DBAは一時LOBが使用している一時領域の緊急クリーンアップを監視して指示できます。

一時LOBに固有の注意事項は次のとおりです。

1. DBMS_LOBのすべてのファンクションは、入力パラメータのいずれかがNULLの場合、NULLを戻します。LOBロケータがNULLとして入力されると、DBMS_LOBのすべてのプロシージャで例外が発生します。

2. CLOBに基づく操作では、パラメータ(CLOBパラメータやVARCHAR2のバッファとパターンなど)のキャラクタ・セットIDが一致しているかどうかは検証されません。この確認はユーザーが各自で行ってください。

3. データ記憶域リソースは、DBAが異なるテンポラリ表領域を作成して制御します。必要に応じて、DBAはユーザーごとに別々のテンポラリ表領域を定義できます。

関連項目:
NOCOPY構文の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

ルールおよび制限

- 一般的なルールおよび制限

- 外部ファイル(BFILE)に固有のルールと制限

- 最大LOBサイズ

- 最大バッファ・サイズ

一般的なルールおよび制限

- Oracle Databaseでは、LOBタイプの列または属性に対する制約はサポートされていませんが、例外としてLOBの列または属性に対するNOT NULL制約はサポートされています。

- このパッケージにあるサブプログラムの仕様部に適用される規則は次のとおりです。

- BLOBおよびBFILEを操作するサブプログラムのnewlen、offsetおよびamountパラメータは、バイト単位で指定する必要があります。

- CLOBを操作するサブプログラムのnewlen、offsetおよびamountパラメータは、文字単位で指定する必要があります。

マルチバイトのキャラクタ・セットでは、これらのオフセットを正しく解釈できません。結果として、SUBSTRでは、ORA-22998: CLOB or NCLOB in multibyte character set not supportedというエラーが発生します。

- パラメータ値の指定時に次の制限事項に従わなかった場合(またはパラメータ値を指定しなかった場合)は、INVALID_ARGVAL例外が発生します。

1. LOBデータの開始位置からの正の絶対オフセットのみ許可されています。LOBの終了位置からの負のオフセットは許可されていません。

2. amount、offset、newlen、nthなど、サイズおよび位置を表すパラメータには、0(ゼロ)以外の正の値のみ許可されています。SQL文字列ファンクションおよび演算子で確認される負のオフセットおよび範囲は許可されていません。

3. offset、amount、newlen、nthの値は、いずれのDBMS_LOBサブプログラムの場合でも、最大値はlobmaxsize 18446744073709551615(264)です。

4. 固定幅のマルチバイト・キャラクタで構成されるCLOBの場合、これらのパラメータの最大値は(lobmaxsize/character_width_in_bytes)文字です。
たとえば、CLOBが次のような2バイト文字で構成されているとします。

JA16SJISFIXED

この場合のamountの最大値は次のとおりです。

18446744073709551615/2 = 9223372036854775807

- PL/SQL言語仕様では、DBMS_LOBサブプログラムで使用されるRAWおよびVARCHAR2パラメータの上限は32767バイト(文字数ではありません)に規定されています。たとえば、変数を次のように宣言するとします。

charbuf VARCHAR2(3000)

この場合、charbufにはシングルバイト文字の場合は3000文字、2バイトの固定幅文字の場合は1500文字格納できます。これは、CLOBおよびNCLOBに対してDBMS_LOBサブプログラムを使用するときに特に注意してください。

- %CHARSET句は、%CHARSETを使用するパラメータの形式が、参照先であるANY_CSパラメータの形式と一致している必要があることを示します。
たとえば、VARCHAR2バッファ・パラメータを使用するDBMS_LOBサブプログラムでは、VARCHAR2バッファの形式はCLOBパラメータの形式と一致している必要があります。入力LOBパラメータのタイプがNCLOBの場合、バッファにはNCHARデータが含まれている必要があります。これに対して、入力LOBのパラメータのタイプがCLOBの場合、バッファにはCHARデータが含まれる必要があります。

2つのCLOBパラメータを使用するDBMS_LOBサブプログラムの場合は、2つのCLOBパラメータの形式が同じであることが必要です。つまり、両方ともNCLOBであるか、またはCLOBであることが必要です。

- amountにoffsetを加えた値がデータベースで許可されているLOBの最大サイズを超えると、アクセス例外が発生します。
この入力条件のもとでは、READ、COMPARE、INSTRおよびSUBSTRなどの読込みサブプログラムでは、End of Lob/Fileに達するまでデータが読み込まれます。たとえば、BLOBまたはBFILEでのREAD操作で、ユーザーが、サイズが4GBのLOBのoffset値に3GB、amount値に2GBを指定すると、READでは1GB(4GB-3GB)バイトのみが戻されます。

- パラメータにNULLまたは無効な値が入力されると、ファンクションはNULLを戻します。宛先LOBのパラメータにNULL値が指定されると、プロシージャでは例外が発生します。

- パラメータとしてパターンが含まれている操作(COMPARE、INSTRおよびSUBSTRなど)では、patternパラメータまたは副文字列に、正規表現または特殊一致文字(SQLのLIKE演算子の%など)はサポートされていません。

- End Of LOB条件は、READプロシージャでNO_DATA_FOUND例外を使用して示されます。この例外が発生するのは、ユーザーがLOBの終了位置を超えてデータを読み込もうとしたときのみです。最後に読み込んだREADバッファは0(ゼロ)バイトです。

- LOB更新の一貫性を保つために、LOBデータを変更するプロシージャ(ミューテータ)をコールする前に、宛先LOBが含まれている行をロックする必要があります。

- 特に注記がないかぎり、offsetパラメータのデフォルト値は1で、これは、BLOBまたはBFILEデータの最初のバイト、およびCLOBまたはNCLOB値の最初の文字を示します。amountパラメータはデフォルト値が指定されていないため、値を明示的に入力する必要があります。

- LOBを変更する任意のサブプログラム(例: APPEND、COPY、ERASE、TRIMまたはWRITE)をコールする前に、宛先内部LOBが含まれている行をロックする必要があります。これらのサブプログラムでは、LOBを含んだ行のロックは暗黙的には行われません。

外部ファイル(BFILE)に固有のルールと制限

- サブプログラムCOMPARE、INSTR、READ、SUBSTR、FILECLOSE、FILECLOSEALLおよびLOADFROMFILEは、オープン済のBFILEロケータでのみ動作しますが、つまり、これらのサブプログラムのコール前にFILEOPENコールが正常に完了している必要があります。

- ファンクションFILEEXISTS、FILEGETNAMEおよびGETLENGTHに関しては、ファイルのオープン/クローズ状態はあまり重要ではありません。ただし、ファイルが物理的に必ず存在し、ユーザーにDIRECTORYオブジェクトとそのファイルに関する適切な権限があることが必要です。

- DBMS_LOBは、BFILE操作に対する並行性制御メカニズムをサポートしません。

- クローズ処理が正しく行われていない複数のオープン・ファイルがセッションで使用されている場合は、FILECLOSEALLサブプログラムを使用してセッションでオープンされたファイルをすべてクローズし、ファイル操作を最初からやり直すことができます。

- DIRECTORYの作成者である場合、またはシステム権限がある場合、SQLのCREATE OR REPLACE、DROPおよびREVOKE文の使用には特に注意してください。
ユーザーまたは特定のディレクトリ・オブジェクトの権限受領者がセッション内に複数のファイルをオープンしている場合は、前述のコマンドが誤ってファイル操作に影響を与える場合があります。この状況で異常終了した場合は、必ずFILECLOSEALLをコールするプログラムまたは無名ブロックを起動し、ファイルを再オープンしてファイル操作を再開してください。

- ユーザー・セッションの間にオープンされたファイルはすべて、セッション終了時に暗黙的にクローズされます。ただし、BFILEの操作の正常終了および異常終了いずれの場合も、操作終了後にファイルをクローズすることをお薦めします。
プログラムが正常に終了した場合、ファイルを適切にクローズすることによって、セッションで同時にオープンしているファイル数は、必ずSESSION_MAX_OPEN_FILESより少なくなります。

PL/SQLプログラムが異常終了した場合は、そのPL/SQLプログラム内でオープン中のすべてのファイルをクローズする例外ハンドラを使用する必要があります。例外が発生すると、最新の状態のBFILE変数にアクセスできるのは例外ハンドラのみであるため、この処理が必要です。

例外によってプログラム制御がPL/SQLプログラム・ブロック外に転送されると、オープン中のBFILEへの参照はすべて失われます。この結果、オープン・ファイル・カウントが増加し、SESSION_MAX_OPEN_FILES値を超える場合があります。

たとえば、BFILE値の終了位置を超えてREAD操作を行い、NO_DATA_FOUND例外が発生したと想定します。

-- This assumes a directory 'DDD' whose path is already known
DECLARE
fil BFILE:= bfilename('DDD', 'filename.foo');
pos INTEGER;
amt BINARY_INTEGER;
buf RAW(40);
BEGIN
SELECT ad_graphic INTO fil FROM print_media WHERE product_id = 3106;
dbms_lob.open(fil, dbms_lob.lob_readonly);
amt := 40; pos := 1 + dbms_lob.getlength(fil); buf := '';
dbms_lob.read(fil, amt, pos, buf);
dbms_output.put_line('Read F1 past EOF: '||
utl_raw.cast_to_varchar2(buf));
dbms_lob.close(fil);
END;

ORA-01403: no data found
ORA-06512: at "SYS.DBMS_LOB", line 373
ORA-06512: at line 10

例外が発生した後、BFILEロケータの変数ファイルは有効範囲外となり、その変数を使用したファイル操作は実行できなくなります。したがって、解決方法として、次のような例外ハンドラを使用します。

DECLARE
fil BFILE;
pos INTEGER;
amt BINARY_INTEGER;
buf RAW(40);
BEGIN
SELECT ad_graphic INTO fil FROM print_media WHERE product_id = 3106;
dbms_lob.open(fil, dbms_lob.lob_readonly);
amt := 40; pos := 1 + dbms_lob.getlength(fil); buf := '';
dbms_lob.read(fil, amt, pos, buf);
dbms_output.put_line('Read F1 past EOF: '||
utl_raw.cast_to_varchar2(buf));
dbms_lob.close(fil);
exception
WHEN no_data_found
THEN
BEGIN
dbms_output.put_line('End of File reached. Closing file');
dbms_lob.fileclose(fil);
-- or dbms_lob.filecloseall if appropriate
END;
END;
/

Statement processed.
End of File reached. Closing file

通常、DBMS_LOBを使用してPL/SQLブロック内でオープンされたファイルは、ブロックの正常終了または異常終了の前にクローズしてください。

最大LOBサイズ

データベースでサポートされているLOBの最大サイズは、LOB列が存在する表領域のブロック・サイズの2^32-1(4294967295)倍と等しくなります。これによって、最大LOBサイズの範囲は8TBから128TBまでとなります。

最大バッファ・サイズ

最大バッファ・サイズは32767バイトです。

バッファ・サイズをバイトで表現するBLOBでは、バイト数の上限は32767です。

バッファ・サイズを文字で表現するCLOBまたはNCLOBでは、文字数によるバッファの上限は32767バイトです。たとえば、固定幅の2バイト文字を使用する場合、(20000*2 = 40000は32767より大きいため)20000文字はエラーになります。

例外

表88-8 DBMS_LOBの例外

例外

コード

説明

ACCESS_ERROR

22925

LOBに書き込むデータが多すぎます。LOBサイズは最大4GBです。

BUFFERING_ENABLED

22279

LOBバッファを有効にした状態では操作を実行できません。

CONTENTTYPE_TOOLONG

43859

contenttype文字列の長さが、定義されている最大長を超えています。contenttype文字列の長さを変更し、操作を再試行してください。

CONTENTTYPEBUF_WRONG

43862

contenttypeバッファの長さが、定義されている定数より短くなっています。contenttypeバッファの長さを変更し、操作を再試行してください。

INVALID_ARGVAL

21560

引数はNULL以外の有効な値であることが必要ですが、渡された引数値はNULL、無効または範囲外です。

INVALID_DIRECTORY

22287

現行の操作に使用しているディレクトリは、それが初めてアクセスされたか、または前回のアクセス以降にDBAによって変更された場合は無効です。

NO_DATA_FOUND

1403

ループ読取り操作用のENDOFLOBのインジケータ。ハード・エラーではありません。

NOEXIST_DIRECTORY

22285

ファイルに指定されているディレクトリが存在しません。

NOPRIV_DIRECTORY

22286

ユーザーに、そのディレクトリまたはファイルの操作に必要なアクセス権限がありません。

OPEN_TOOMANY

22290

オープン・ファイル数が最大値に達しました。

OPERATION_FAILED

22288

ファイル操作に失敗しました。

QUERY_WRITE

14553

問合せまたはPDMLパラレル実行サーバー内でLOB書込みが実行できません。

SECUREFILE_BADLOB

43856

SECUREFILEのみのコールで、SECUREFILE LOBタイプ以外のLOBが使用されました。

SECUREFILE_BADPARAM

43857

SECUREFILEサブプログラムに無効な引数が渡されました。

SECUREFILE_MARKERASED

43861

FRAGMENT_*操作に付けられたマークが削除されています。

SECUREFILE_OUTOFBOUNDS

43883

LOBの終わりを超えてFRAGMENT_*操作を実行しようとしました。

UNOPENED_FILE

22289

要求された操作の実行に使用するファイルがオープンされていません。

VALUE_ERROR

6502

サブプログラムのパラメータの値が無効のため、PL/SQLエラーが発生しました。

DBMS_LOBサブプログラムの要約

表88-9 DBMS_LOBパッケージのサブプログラム

サブプログラム

説明

APPENDプロシージャ

ソースLOBのコンテンツを宛先LOBに追加します。

CLOSEプロシージャ

オープンしている内部または外部LOBをクローズします。

COMPAREファンクション

2つのLOB全体、または2つのLOBの一部を比較します。

CONVERTTOBLOBプロシージャ

ソースCLOBまたはNCLOBインスタンスから、文字データを読み取り、指定した文字に変換して、変換したデータをバイナリ形式で宛先BLOBインスタンスに書き込み、新しいオフセットを戻します。

CONVERTTOCLOBプロシージャ

ソースBLOBインスタンスを取得し、指定した文字を使用して、ソース・インスタンスのバイナリ・データを文字データに変換し、文字データを宛先CLOBまたはNCLOBインスタンスに書き込み、新しいオフセットを戻します。

COPYプロシージャ

ソースLOBの全体または一部を宛先LOBにコピーします。

COPY_DBFS_LINKプロシージャ

ソースLOBのDBFSリンクを宛先LOBにコピーします。

COPY_FROM_DBFS_LINK

LOBのデータをDBFSストアから取得します。

CREATETEMPORARYプロシージャ

一時BLOBまたはCLOBおよびそれに対応する索引をユーザーのデフォルト一時表領域に作成します。

DBFS_LINK_GENERATE_PATHファンクション

DBFSリンクの作成に使用する一意のファイル・パス名を戻します。

ERASEプロシージャ

LOBの全体または一部を消去します。

FILECLOSEプロシージャ

ファイルをクローズします。

FILECLOSEALLプロシージャ

オープンしているファイルをすべてクローズします。

FILEEXISTSファンクション

ファイルがサーバー上に存在しているかどうかをチェックします。

FILEGETNAMEプロシージャ

ディレクトリ・オブジェクト名およびファイル名を取得します。

FILEISOPENファンクション

入力BFILEロケータを使用してファイルがオープンされたかどうかをチェックします。

FILEOPENプロシージャ

ファイルをオープンします。

FRAGMENT_DELETEプロシージャ

LOBからの長さを指定した場合、指定したオフセット位置にあるデータを削除します。

FRAGMENT_INSERTプロシージャ

指定したデータ(最大32K)を、LOB内の指定したオフセット位置に挿入します。

FRAGMENT_MOVEプロシージャ

指定したオフセット位置から新しく指定したオフセット位置に、バイト単位(BLOB)または文字単位(CLOB/NCLOB)で移動します。

FRAGMENT_REPLACEプロシージャ

指定したオフセット位置にあるデータを指定したデータ(32k以下)で置き換えます。

FREETEMPORARYプロシージャ

デフォルト一時表領域にある一時BLOBまたはCLOBを解放します。

GET_DBFS_LINKファンクション

指定したSecureFileに関連付けられたDBFSリンク・パスを戻します。

GET_DBFS_LINK_STATEプロシージャ

指定したSecureFileの現在のDBFSリンク状態を取得します。

GETCHUNKSIZEファンクション

LOB値を格納するLOBチャンクの使用領域容量を戻します。

GETCONTENTTYPEファンクション

SETCONTENTTYPEプロシージャを使用して以前設定したコンテンツID文字列を戻します。

GETLENGTHファンクション

LOB値の長さを取得します。

GETOPTIONSファンクション

特定のLOBのoption_typeフィールドに対応する設定を取得します。

GET_STORAGE_LIMITファンクション

データベース構成のLOBの記憶域制限を戻します。

INSTRファンクション

LOBにあるパターンのn番目の一致のマッチング位置を戻します。

ISOPENファンクション

LOBが入力ロケータを使用して、すでにオープンされたかどうかをチェックします。

ISSECUREFILEファンクション

渡されるLOBロケータがSecurefiles LOB用の場合にTRUEを戻します。それ以外の場合は、FALSEを戻します。

ISTEMPORARYファンクション

ロケータが一時LOBをポイントしているかどうかをチェックします。

LOADBLOBFROMFILEプロシージャ

BFILEデータを内部BLOBにロードします。

LOADCLOBFROMFILEプロシージャ

BFILEデータを内部CLOBにロードします。

LOADFROMFILEプロシージャ

BFILEデータを内部LOBにロードします。

MOVE_TO_DBFS_LINKプロシージャ

指定したSecureFileデータをDBFSストアに書き込みます。

OPENプロシージャ

指定されたモードでLOB(内部、外部またはテンポラリ)をオープンします。

READプロシージャ

指定されたオフセット以降のLOBデータを読み込みます。

SET_DBFS_LINKプロシージャ

指定したSecureFileを指定したパス名にリンクします。データはパスにコピーされません。

SETCONTENTTYPEプロシージャ

LOB内のデータのコンテンツ・タイプ文字列値を設定します。

SETOPTIONSプロシージャ

LOB単位でCSCE機能を使用可能にして、デフォルトのLOB列設定より優先させます。

SUBSTRファンクション

指定されたオフセット以降のLOB値の一部を戻します。

TRIMプロシージャ

指定された長さまでLOB値を切り捨てます。

WRITEプロシージャ

指定されたオフセットからLOBにデータを書き込みます。

WRITEAPPENDプロシージャ

LOBの終わり以降にバッファを書き込みます。

APPENDプロシージャ

このプロシージャは、ソース内部LOBの内容を宛先LOBに追加します。ソースLOBを完全に追加します

構文

DBMS_LOB.APPEND (
dest_lob IN OUT  NOCOPY BLOB,
src_lob  IN             BLOB);

DBMS_LOB.APPEND (
dest_lob IN OUT  NOCOPY CLOB  CHARACTER SET ANY_CS,
src_lob  IN             CLOB  CHARACTER SET dest_lob%CHARSET);

パラメータ

表88-10 APPENDプロシージャのパラメータ

パラメータ

説明

dest_lob

データを追加する内部LOBのロケータ

src_lob

データを読み取る内部LOBのロケータ

例外

表88-11 APPENDプロシージャの例外

例外

説明

VALUE_ERROR

ソースまたは宛先LOBのいずれかがNULLです。

QUERY_WRITE

問合せまたはPDMLパラレル実行サーバー内でLOB書込みが実行できません。

BUFFERING_ENABLED

いずれかのLOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

- オープン/クローズ・インタフェース内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。
オープン/クローズAPI内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

- アーカイブされているLOBでAPPENDをコールした場合は、最初のバイトが書き込まれる前にLOBが暗黙的に取得されます。

- DBFSリンクであるSecureFiles LOBでAPPENDがコールされると、例外が発生します。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

CLOSEプロシージャ

このプロシージャは、オープンしている内部または外部LOBをクローズします。

構文

DBMS_LOB.CLOSE (
lob_loc    IN OUT NOCOPY BLOB);

DBMS_LOB.CLOSE (
lob_loc    IN OUT NOCOPY CLOB CHARACTER SET ANY_CS);

DBMS_LOB.CLOSE (
file_loc   IN OUT NOCOPY BFILE);

パラメータ

表88-12 CLOSEプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

例外

BFILEが存在していてもオープンしていない場合、エラーは戻されません。エラーは、LOBがオープンしていない場合に戻されます。

使用上の注意

CLOSEでは、内部または外部LOBのいずれの場合もサーバーへのラウンドトリップが必要です。内部LOBの場合、CLOSEはクローズ・コールに依存するその他のコードをトリガーし、外部LOB (BFILE)の場合、CLOSEはサーバー側のオペレーティング・システム・ファイルを実際にクローズします。

オープン/クローズ・インタフェース内のすべてのLOB操作のラップは必須ではありません。ただし、LOBをオープンしている場合は、トランザクションのコミットを実行する前にクローズする必要があり、クローズしない場合は、エラーが発生します。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

トランザクションによってオープンされたすべてのLOBをクローズする前にトランザクションをコミットすると、エラーが発生します。エラーが戻された場合、LOBのオープンは廃棄されますが、トランザクションのコミットは正常に行われます。したがって、そのトランザクションにおけるLOBおよび非LOBデータの変更はすべてコミットされますが、ドメイン索引およびファンクションベースの索引は更新されません。このような場合は、LOB列のファンクション索引およびドメイン索引を再構築する必要があります。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

COMPAREファンクション

このファンクションは、2つのLOB全体、または2つのLOBの一部を比較します。

構文

DBMS_LOB.COMPARE (
lob_1            IN BLOB,
lob_2            IN BLOB,
amount           IN INTEGER := DBMS_LOB.LOBMAXSIZE,
offset_1         IN INTEGER := 1,
offset_2         IN INTEGER := 1)
RETURN INTEGER;

DBMS_LOB.COMPARE (
lob_1            IN CLOB  CHARACTER SET ANY_CS,
lob_2            IN CLOB  CHARACTER SET lob_1%CHARSET,
amount           IN INTEGER := DBMS_LOB.LOBMAXSIZE,
offset_1         IN INTEGER := 1,
offset_2         IN INTEGER := 1)
RETURN INTEGER;

DBMS_LOB.COMPARE (
lob_1            IN BFILE,
lob_2            IN BFILE,
amount           IN INTEGER,
offset_1         IN INTEGER := 1,
offset_2         IN INTEGER := 1)
RETURN INTEGER;

プラグマ

pragma restrict_references(COMPARE, WNDS, WNPS, RNDS, RNPS);

パラメータ

表88-13 COMPAREファンクションのパラメータ

パラメータ

説明

lob_1

最初の比較対象のLOBロケータ。

lob_2

2番目の比較対象のLOBロケータ。

amount

比較するバイト数(BLOBの場合)または文字数(CLOB/NCLOBS)。

offset_1

1番目のLOBの比較開始位置を示すオフセット(起点: 1)。バイト数または文字数で指定します。

offset_2

2番目のLOBの比較開始位置を示すオフセット(起点: 1)。バイト数または文字数で指定します。

戻り値

- INTEGER: 比較が正常に行われた場合は0(ゼロ)、それ以外の場合は0(ゼロ)以外の整数が戻されます。

- amount、offset_1またはoffset_2のいずれかが有効なLOBオフセット値でない場合はNULLが戻されます。有効なオフセットは、1からLOBMAXSIZEの範囲内です。

使用上の注意

- 比較できるのは、同じデータ・タイプのLOB(BLOBタイプのLOBと他のBLOB、CLOBとCLOB、BFILEとBFILE)に限られます。BFILEの場合は、この操作を行う前に、FILEOPEN操作でファイルをあらかじめオープンしておく必要があります。

- offsetおよびamountパラメータによって指定した範囲のデータがすべて完全に一致すると、COMPAREにより0(ゼロ)が戻されます。1番目のCLOBが2番目より小さいと、COMPAREによって-1が戻され、大きいと1が戻されます。

- 固定幅のnバイトのCLOBの場合は、COMPAREに対する入力amountの指定が(DBMS_LOB.LOBMAXSIZE/n)を超えると、(DBMS_LOB.LOBMAXSIZE/n)またはMax(length(clob1), length(clob2))のサイズのうち、小さい方の範囲で文字を比較します。

- アーカイブされているLOBでCOMPAREをコールした場合は、比較が開始される前にLOBが暗黙的に取得されます。

- DBFSリンクであるSecureFiles LOBでCOMPARE()がコールされると、リンクされたLOBは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。

例外

表88-14 BFILE操作に関するCOMPAREファンクションの例外

例外

説明

UNOPENED_FILE

ファイルが入力ロケータを使用してオープンされていません。

NOEXIST_DIRECTORY

ディレクトリが存在しません。

NOPRIV_DIRECTORY

ディレクトリに対する権限がありません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

INVALID_OPERATION

ファイルが存在しないか、またはファイルのアクセス権限がありません。

BUFFERING_ENABLED

いずれかのLOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

CONVERTTOBLOBプロシージャ

このプロシージャは、ソースCLOBまたはNCLOBインスタンスから、文字データを読み取り、指定したキャラクタ・セットに変換して、変換したデータをバイナリ形式で宛先BLOBインスタンスに書き込み、新しいオフセットを戻します。このインタフェースは、ソースや宛先としての持続または一時LOBインスタンスのあらゆる組合せで使用できます。

構文

DBMS_LOB.CONVERTTOBLOB(
dest_lob       IN OUT     NOCOPY  BLOB,
src_clob       IN         CLOB CHARACTER SET ANY_CS,
amount         IN         INTEGER,
dest_offset    IN OUT     INTEGER,
src_offset     IN OUT     INTEGER,
blob_csid      IN         NUMBER,
lang_context   IN OUT     INTEGER,
warning        OUT        INTEGER);

パラメータ

表88-15 CONVERTTOBLOBプロシージャのパラメータ

パラメータ

説明

dest_lob

宛先LOBインスタンスのLOBロケータ。

src_clob

ソースLOBインスタンスのLOBロケータ。

amount

ソースLOBから変換する文字数。

LOB全体をコピーする場合は、定数DBMS_LOB.LOBMAXSIZEを渡します。他の値を渡す場合は、LOBのサイズ以下である必要があります。

dest_offset

(IN)宛先LOBの書込み開始位置を示すオフセット(バイト数で指定します)。LOBの先頭から開始するには1の値を指定します。

(OUT)書込み終了位置の次の位置を示す新しいオフセット。バイト数で指定します。

src_offset

(IN)ソースLOBの読込み開始位置を示すオフセット(文字数で指定します)。

(OUT)ソースLOBの読込み終了位置の次の位置を示すオフセット(文字数で示します)。

blob_csid

変換データの目的とするキャラクタ・セットID。

lang_context

(IN)現行の変換に関する、シフト・ステータスなどの言語コンテキスト。

(OUT)現在の変換が実行されたときの言語コンテキスト。

この情報は、ユーザーがこの情報を使用してソース・データを失ったり、誤って解釈したりすることなく継続して変換できるようにするために戻されます。最初の変換の場合、または特に必要ない場合は、デフォルト値の0(ゼロ)を使用してください。

warning

(OUT)警告メッセージ。このパラメータは、変換時に何らかの異常が発生したことを示します。警告メッセージを確認する必要があります。

現在、発生する可能性があるのは、変換不可能な文字に関する警告のみです。これは、ソースの文字が宛先の文字に正しく変換できない場合に発生します。変換不可能な文字のかわりに、デフォルトの置換文字('?'など)が使用されます。このエラー・メッセージの戻り値は、DBMS_LOBパッケージの定数warn_inconvertible_charとして定義します。

使用上の注意

事前条件

CONVERTTOBLOBプロシージャをコールする前に、次の事前条件を満たしている必要があります。

- ソースと宛先の両方のLOBインスタンスが存在している。

- 宛先LOBが永続LOBの場合、行がロックされている。行をロックするには、SELECT文のFOR UPDATE句を使用して、LOBを選択します。

定数およびデフォルト

すべてのパラメータが必要です。各OUTまたはIN OUTパラメータに変数を渡す必要があります。各INパラメータに変数または値を渡す必要があります。

表88-16に各パラメータの一般的な値の要約を示します。1列目にパラメータ、2列目に一般的な値を示し、最後の列は値を渡した結果を説明しています。値によっては定数が使用されるので注意してください。このような定数は、dbmslob.sqlパッケージ仕様部ファイルに定義されています。

表88-16 DBMS_LOB.CONVERTTOBLOBの一般的な値

パラメータ

値

説明

amount

LOBMAXSIZE(IN)

ファイル全体を変換します。

dest_offset

1(IN)

先頭から開始します。

src_offset

1(IN)

先頭から開始します。

blob_csid

DEFAULT_CSID (IN)

デフォルトのCSID。ソースLOBと同じCSIDを使用します。

lang_context

DEFAULT_LANG_CTX (IN)

デフォルトの言語コンテキスト。

warning

NO_WARNING (OUT)

WARN_INCONVERTIBLE_CHAR (OUT)

警告メッセージはありません。成功しました。

ソースの文字を正しく変換できません。

一般的な注意

- blob_csidパラメータに宛先LOBの目的のキャラクタ・セットを指定する必要があります。blob_csidには0(ゼロ)の値を渡せます。これを行う場合、データベースでは目的のキャラクタ・セットがソースLOBキャラクタ・セットと同じであると想定されます。

- ソースおよび宛先の両方のLOBに対するオフセット、およびソースLOBからコピーする文字数を指定する必要があります。amountおよびsrc_offset値は文字単位、dest_offsetはバイト単位です。LOB全体を変換するには、amountパラメータにLOBMAXSIZEを指定します。

- CONVERTTOBLOBは、データの変換および書込み前に、必要に応じてソースまたは宛先LOBを取得します。

例外

表88-17に、このプロシージャがスローする可能性のある例外を示します。1列目は例外の文字列を示し、2列目は例外の原因となる可能性のあるエラー条件を説明しています。

表88-17 CONVERTTOBLOBプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLまたはINVALIDです。

INVALID_ARGVAL

次のいずれかの条件が発生しました。

- src_offsetまたはdest_offset < 1

- src_offsetまたはdest_offset > LOBMAXSIZE。

- amount < 1

- amount > LOBMAXSIZE

関連項目:
アプリケーション開発でのLOBの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

CONVERTTOCLOBプロシージャ

このプロシージャは、ソースBLOBインスタンスを取得し、指定したキャラクタ・セットを使用して、ソース・インスタンスのバイナリ・データを文字データに変換し、文字データを宛先CLOBまたはNCLOBインスタンスに書き込み、新しいオフセットを戻します。このインタフェースは、ソースや宛先としての持続または一時LOBインスタンスのあらゆる組合せで使用できます。

構文

DBMS_LOB.CONVERTTOCLOB(
dest_lob       IN OUT NOCOPY  CLOB CHARACTER SET ANY_CS,
src_blob       IN             BLOB,
amount         IN             INTEGER,
dest_offset    IN OUT         INTEGER,
src_offset     IN OUT         INTEGER,
blob_csid      IN             NUMBER,
lang_context   IN OUT         INTEGER,
warning        OUT            INTEGER);

パラメータ

表88-18 CONVERTTOCLOBプロシージャのパラメータ

パラメータ

説明

dest_lob

宛先LOBインスタンスのLOBロケータ。

src_blob

ソースLOBインスタンスのLOBロケータ。

amount

ソースLOBから変換するバイト数。

BLOB全体をコピーする場合は、定数DBMS_LOB.LOBMAXSIZEを渡します。他の値を渡す場合は、BLOBのサイズ以下である必要があります。

dest_offset

(IN)宛先LOBの書込み開始位置を示すオフセット(文字数で指定します)。LOBの先頭から開始するには1の値を指定します。

(OUT)書込み終了位置の次の位置を示す新しいオフセット(文字数で指定します)。このオフセットは、常に書込み終了位置の後にある最初の完全な文字をポイントします。

src_offset

(IN)ソースLOBの読込み開始位置を示すオフセット(バイト数で指定します)。

(OUT)ソースLOBの読込み終了位置の次の位置を示すオフセット(バイト数で示します)。

blob_csid

ソース・データのキャラクタ・セットID。

lang_context

(IN)現行の変換に関する、シフト・ステータスなどの言語コンテキスト。

(OUT)現在の変換が実行されたときの言語コンテキスト。

この情報は、ユーザーがこの情報を使用してソース・データを失ったり、誤って解釈したりすることなく継続して変換できるようにするために戻されます。最初の変換の場合、または特に必要ない場合は、デフォルト値の0(ゼロ)を使用してください。

warning

警告メッセージ。このパラメータは、変換時に何らかの異常が発生したことを示します。警告メッセージを確認する必要があります。

現在、発生する可能性があるのは、変換不可能な文字に関する警告のみです。これは、ソースの文字が宛先の文字に正しく変換できない場合に発生します。変換不可能な文字のかわりに、デフォルトの置換文字('?'など)が使用されます。このエラー・メッセージの戻り値は、DBMS_LOBパッケージの定数warn_inconvertible_charとして定義します。

使用上の注意

事前条件

CONVERTTOCLOBプロシージャをコールする前に、次の事前条件を満たしている必要があります。

- ソースと宛先の両方のLOBインスタンスが存在している。

- 宛先LOBが永続LOBの場合、CONVERTTOCLOBプロシージャをコールする前に行がロックされている。行をロックするには、SELECT文のFOR UPDATE句を使用して、LOBを選択します。

定数およびデフォルト

すべてのパラメータが必要です。各OUTまたはIN OUTパラメータに変数を渡す必要があります。各INパラメータに変数または値を渡す必要があります。

表88-19に各パラメータの一般的な値の要約を示します。1列目にパラメータ、2列目に一般的な値を示し、最後の列は値を渡した結果を説明しています。値によっては定数が使用されるので注意してください。このような定数は、dbmslob.sqlパッケージ仕様部ファイルに定義されています。

表88-19 DBMS_LOB.CONVERTTOCLOBの一般的な値

パラメータ

値

説明

amount

LOBMAXSIZE(IN)

ファイル全体を変換します。

dest_offset

1(IN)

先頭から開始します。

src_offset

1(IN)

先頭から開始します。

csid

DEFAULT_CSID (IN)

デフォルトのCSID。宛先のCSIDを使用します。

lang_context

DEFAULT_LANG_CTX (IN)

デフォルトの言語コンテキスト。

warning

NO_WARNING (OUT)

WARN_INCONVERTIBLE_CHAR (OUT)

警告メッセージはありません。成功しました。

ソースの文字を正しく変換できません。

一般的な注意

- blob_csidパラメータにソースLOBの目的のキャラクタ・セットを指定する必要があります。blob_csidには0(ゼロ)の値を渡せます。そうすると、データベースで、目的のキャラクタ・セットが宛先LOBキャラクタ・セットと同じであるとみなされます。

- ソースおよび宛先の両方のLOBに対するオフセット、およびソースLOBからコピーする文字数を指定する必要があります。amountおよびsrc_offset値はバイト単位でdest_offsetは文字単位です。LOB全体を変換するには、amountパラメータにLOBMAXSIZEを指定します。

- CONVERTTOCLOBは、データの変換および書込み前に、必要に応じてソースまたは宛先LOB(あるいはその両方)を取得します。

例外

表88-20 CONVERTTOCLOBプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLまたはINVALIDです。

INVALID_ARGVAL

次のいずれかの条件が発生しました。

- src_offsetまたはdest_offset < 1

- src_offsetまたはdest_offset > LOBMAXSIZE。

- amount < 1

- amount > LOBMAXSIZE

関連項目:
アプリケーション開発でのLOBの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

COPYプロシージャ

このプロシージャは、ソース内部LOBの全体または一部を宛先内部LOBにコピーします。ソースおよび宛先の両方のLOBに対するオフセット、およびコピーするバイト数または文字数を指定できます。

構文

DBMS_LOB.COPY (
dest_lob    IN OUT NOCOPY BLOB,
src_lob     IN            BLOB,
amount      IN            INTEGER,
dest_offset IN            INTEGER := 1,
src_offset  IN            INTEGER := 1);

DBMS_LOB.COPY (
dest_lob    IN OUT NOCOPY CLOB  CHARACTER SET ANY_CS,
src_lob     IN            CLOB  CHARACTER SET dest_lob%CHARSET,
amount      IN            INTEGER,
dest_offset IN            INTEGER := 1,
src_offset  IN            INTEGER := 1);

パラメータ

表88-21 COPYプロシージャのパラメータ

パラメータ

説明

dest_lob

コピー先のLOBロケータ。

src_lob

コピー元のLOBロケータ。

amount

コピーするバイト数(BLOBの場合)または文字数(CLOBの場合)。

dest_offset

宛先LOBのコピー開始位置を示すオフセット(起点: 1)。バイト数または文字数で指定します。

src_offset

ソースLOBのコピー開始位置を示すオフセット(起点: 1)。バイト数または文字数で指定します。

例外

表88-22 COPYプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLまたは無効です。

INVALID_ARGVAL

次のいずれかです。

- src_offsetまたはdest_offset < 1

- src_offsetまたはdest_offset > LOBMAXSIZE

- amount < 1

- amount > LOBMAXSIZE

QUERY_WRITE

問合せまたはPDMLパラレル実行サーバー内でLOB書込みが実行できません。

BUFFERING_ENABLED

いずれかのLOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

- 宛先LOBに指定したオフセットが、現在そのLOBに格納されているデータの終わりを超えている場合は、宛先BLOBまたはCLOBに、0(ゼロ)バイトのFILLERまたは空白がそれぞれ挿入されます。オフセットが宛先LOBの現行の長さより小さい場合、既存のデータは上書きされます。

- ソースLOBのデータ長を超える量を指定してもエラーにはなりません。したがって、ソースLOBのデータを、src_offsetからソースLOBの終了までコピーする大量のコピーを指定できます。

- オープン/クローズ・インタフェース内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

- オープン/クローズAPI内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

- コピー前に、ソースおよび宛先LOBが現在アーカイブされている場合は、それらが取得されます。完全に上書きする場合、宛先LOBは取り出されません。

- ソースLOBがDBFSリンクの場合、データは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。宛先LOBがDBFSリンクの場合は、例外が発生します。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

COPY_DBFS_LINKプロシージャ

このプロシージャは、ソースLOBのDBFSリンクを宛先LOBにコピーします。

構文

DBMS_LOB.COPY_DBFS_LINK (
lob_loc_dst    IN OUT BLOB,
lob_loc_src    IN     BLOB,
flags          IN     PLS_INTEGER DEFAULT DBFS_LINK_NOCACHE);

DBMS_LOB.COPY_DBFS_LINK (
lob_loc_dst    IN OUT CLOB CHARACTER SET ANY_CS,
lob_loc_src    IN     CLOB CHARACTER SET ANY_CS,
flags          IN     PLS_INTEGER DEFAULT DBFS_LINK_NOCACHE);

パラメータ

表88-23 COPY_DBFS_LINKプロシージャのパラメータ

パラメータ

説明

lob_loc_dst

lob_loc_srcと同じ記憶域データを参照するように設定されるLOB。

lob_loc_src

参照のコピー元のLOB。

flags

COPY_DBFS_LINKのオプション:

- DBFS_LINK_NOCACHEは、DBFSリンクのみをコピーするように指定します。

- DBFS_LINK_CACHEは、DBFSリンクをコピーし、lob_loc_dstによって指定されているデータベースLOBにデータを読み込んで、データがキャッシュされるように指定します。

例外

表88-24 COPY_DBFS_LINKプロシージャの例外

例外

説明

SECUREFILE_BADLOB

lob_loc_srcまたはlob_loc_dstは、SECUREFILEではありません。

INVALID_ARGVAL

lob_loc_src LOBはアーカイブされていません。

ORA-01555

ソースLOBがすでに取得されているか、アーカイブされていないか、またはロケータの取得後にLOBが(変更されたかどうかに関係なく)移行されています。

COPY_FROM_DBFS_LINK

このプロシージャは、アーカイブされたSecureFiles LOBデータをDBFS HSMストアから取得し、データベースにコピーします。

構文

DBMS_LOB.COPY_FROM_DBFS_LINK (
lob_loc       IN OUT BLOB);

DBMS_LOB.COPY_FROM_DBFS_LINK (
lob_loc       IN OUT CLOB CHARACTER SET ANY_CS);

パラメータ

表88-25 COPY_FROM_DBFS_LINKプロシージャのパラメータ

パラメータ

説明

lob_loc

アーカイブから取得されるLOB

使用上の注意

COPY_FROM_DBFS_LINKによって基礎となるDBFSファイルは削除されません。

LOBが正常に取得されると、COPY_FROM_DBFS_LINKでは暗黙的に成功が返されます。

例外

表88-26 COPY_FROM_DBFS_LINKプロシージャの例外

例外

説明

SECUREFILE_BADLOB

lob_locはSECUREFILEではありません。

ORA-01555

LOBがすでに取得されており、取得後に変更されているかどうか、ロケータの取得後にLOBが(変更されたかどうかに関係なく)移行されているかどうか。

CREATETEMPORARYプロシージャ

このプロシージャは、一時BLOBまたはCLOBおよびそれに対応する索引をユーザーのデフォルト一時表領域に作成します。

構文

DBMS_LOB.CREATETEMPORARY (
lob_loc IN OUT NOCOPY BLOB,
cache   IN            BOOLEAN,
dur     IN            PLS_INTEGER := DBMS_LOB.SESSION);

DBMS_LOB.CREATETEMPORARY (
lob_loc IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
cache   IN            BOOLEAN,
dur     IN            PLS_INTEGER := 10);

パラメータ

表88-27 CREATETEMPORARYプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

cache

LOBをバッファ・キャッシュに読み込むかどうかを指定します。

dur

2つの事前定義の継続時間(SESSION、またはCALL)のうちの1つ。一時LOBのクリーンアップをセッション終了時、またはコール終了時に行うかどうかを指定します。

durが省略された場合は、セッション継続時間が使用されます。

関連項目:

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

- NOCOPYの詳細および一時LOBをパラメータとして渡す方法の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

DBFS_LINK_GENERATE_PATHファンクション

このサブプログラムは、DBFSリンクの作成に使用する一意のファイル・パス名を戻します。

構文

DBMS_LOB.DBFS_LINK_GENERATE_PATH (
lob_loc       IN BLOB,
storage_dir   IN VARCHAR2)
RETURN VARCHAR2;

DBMS_LOB.DBFS_LINK_GENERATE_PATH (
lob_loc       IN CLOB CHARACTER SET ANY_CS,
storage_dir   IN VARCHAR2)
RETURN VARCHAR2;

プラグマ

PRAGMA RESTRICT_REFERENCES(dbfs_link_generate_path,
WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-28 DBFS_LINK_GENERATE_PATHファンクションのパラメータ

パラメータ

説明

lob_loc

DBFSから取得されるLOB。

storage_dir

ファイルの親ディレクトリとなるDBFSディレクトリ。

例外

表88-29 DBFS_LINK_GENERATE_PATHファンクションの例外

例外

説明

SECUREFILE_WRONGTYPE

lob_locはSECUREFILEではありません。

使用上の注意

アーカイブに使用できるグローバルに一意なファイル・パス名を戻します。これは、このファンクションの各種LOBまたはLOBの各バージョンを対象としたすべてのコールで、グローバルに一意であることが保証されています。同一のLOBおよびバージョンでは、常に同じ名前になります。

ERASEプロシージャ

このプロシージャは、内部LOB全体、または内部LOBの一部を消去します。

構文

DBMS_LOB.ERASE (
lob_loc           IN OUT   NOCOPY   BLOB,
amount            IN OUT   NOCOPY   INTEGER,
offset            IN                INTEGER := 1);

DBMS_LOB.ERASE (
lob_loc           IN OUT   NOCOPY   CLOB CHARACTER SET ANY_CS,
amount            IN OUT   NOCOPY   INTEGER,
offset            IN                INTEGER := 1);

パラメータ

表88-30 ERASEプロシージャのパラメータ

パラメータ

説明

lob_loc

消去するLOBのロケータ。詳細は、「使用上の注意」を参照してください。

amount

消去するバイト数(BLOBまたはBFILESの場合)または文字数(CLOBまたはNCLOBの場合)。

offset

LOBの先頭からの絶対オフセット(起点: 1)。BLOBの場合はバイト数、CLOBの場合は文字数で指定します。

使用上の注意

- LOBの中央部のデータが消去されると、BLOBまたはCLOBには、0(ゼロ)バイトのFILLERまたは空白がそれぞれ書き込まれます。

- 指定した数を消去する前にLOB値の終わりに達した場合、実際に消去されたバイト数または文字数は、amountパラメータで指定した数と異なる場合があります。実際に消去された文字数またはバイト数は、amountパラメータに戻されます。

- ERASEは、アーカイブされているLOBを取得します。ただし、消去がLOB全体に適用される場合を除きます。

- 削除するLOBがDBFSリンクの場合、例外が発生します。

注意:
LOBの長さは、LOBのセクションを消去しても減りません。LOB値の長さを減らす方法は、「TRIMプロシージャ」を参照してください。

例外

表88-31 ERASEプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLです。

INVALID_ARGVAL

次のいずれかです。

- amount < 1またはamount > LOBMAXSIZE

- offset < 1またはoffset > LOBMAXSIZE

QUERY_WRITE

問合せまたはPDMLパラレル実行サーバー内でLOB書込みが実行できません。

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

オープン/クローズ・インタフェース内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

オープン/クローズAPI内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

関連項目:

- 「TRIMプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

FILECLOSEプロシージャ

このプロシージャは、入力ロケータによってすでにオープンされているBFILEをクローズします。

注意:
データベースには、BFILEに対する読取り専用アクセスしかありません。つまり、データベースを介してBFILEに書き込むことはできません。

構文

DBMS_LOB.FILECLOSE (
file_loc IN OUT NOCOPY BFILE);

パラメータ

表88-32 FILECLOSEプロシージャのパラメータ

パラメータ

説明

file_loc

クローズするBFILEのロケータ

例外

表88-33 FILECLOSEプロシージャの例外

例外

説明

VALUE_ERROR

file_locの入力値がNULLです。

UNOPENED_FILE

ファイルが入力ロケータを使用してオープンされていません。

NOEXIST_DIRECTORY

ディレクトリが存在しません。

NOPRIV_DIRECTORY

ディレクトリに対する権限がありません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

INVALID_OPERATION

ファイルが存在しないか、またはファイルのアクセス権限がありません。

関連項目:

- 「FILEOPENプロシージャ」

- 「FILECLOSEALLプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

FILECLOSEALLプロシージャ

このプロシージャは、セッションでオープンされたすべてのBFILEをクローズします。

構文

DBMS_LOB.FILECLOSEALL;

例外

表88-34 FILECLOSEALLプロシージャの例外

例外

説明

UNOPENED_FILE

セッションでオープンされたファイルはありません。

関連項目:

- 「FILEOPENプロシージャ」

- 「FILECLOSEプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

FILEEXISTSファンクション

このファンクションは、指定したBFILEロケータが、サーバーのファイル・システムに実際に存在しているファイルを指しているかどうかを検証します。

構文

DBMS_LOB.FILEEXISTS (
file_loc     IN    BFILE)
RETURN INTEGER;

プラグマ

pragma restrict_references(FILEEXISTS, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-35 FILEEXISTSファンクションのパラメータ

パラメータ

説明

file_loc

BFILEのロケータ。

戻り値

表88-36 FILEEXISTSファンクションの戻り値

戻り値

説明

0

物理ファイルが存在しません。

1

物理ファイルが存在します。

例外

表88-37 FILEEXISTSファンクションの例外

例外

説明

NOEXIST_DIRECTORY

ディレクトリが存在しません。

NOPRIV_DIRECTORY

ディレクトリに対する権限がありません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

関連項目:

- 「FILEISOPENファンクション」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

FILEGETNAMEプロシージャ

このプロシージャは、指定したBFILEロケータのディレクトリ・オブジェクトとファイル名を判別します。ロケータに割り当てられたディレクトリ・オブジェクト名とファイル名を示すのみで、物理ファイルまたはディレクトリが実際に存在しているかどうかは判別しません。

dir_aliasバッファの最大値は30で、パス名全体の最大値は2000です。

構文

DBMS_LOB.FILEGETNAME (
file_loc   IN    BFILE,
dir_alias  OUT   VARCHAR2,
filename   OUT   VARCHAR2);

パラメータ

表88-38 FILEGETNAMEプロシージャのパラメータ

パラメータ

説明

file_loc

BFILEのロケータ。

dir_alias

ディレクトリ・オブジェクト名

filename

BFILE名

例外

表88-39 FILEGETNAMEプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLまたはINVALIDです。

INVALID_ARGVAL

dir_aliasまたはファイル名がNULLです。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

FILEISOPENファンクション

このファンクションは、BFILEが特定のFILEロケータでオープンされたかどうかを検証します。

構文

DBMS_LOB.FILEISOPEN (
file_loc   IN    BFILE)
RETURN INTEGER;

プラグマ

PRAGMA RESTRICT_REFERENCES(fileisopen, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-40 FILEISOPENファンクションのパラメータ

パラメータ

説明

file_loc

BFILEのロケータ。

戻り値

INTEGER: 0 =ファイルはオープンされていません。1 =ファイルはオープンされています。

使用上の注意

入力FILEロケータがFILEOPENプロシージャに渡されていない場合、そのファイルはこのロケータによってオープンされていないとみなされます。ただし、別のロケータがこのファイルをオープンしている可能性はあります。つまり、オープンされているかどうかは特定のロケータと関連付けられています。

例外

表88-41 FILEISOPENファンクションの例外

例外

説明

NOEXIST_DIRECTORY

ディレクトリが存在しません。

NOPRIV_DIRECTORY

ディレクトリに対する権限がありません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

関連項目:

- 「FILEEXISTSファンクション」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

FILEOPENプロシージャ

このプロシージャは、BFILEを読取り専用アクセスでオープンします。データベースを介してBFILEに書き込むことはできません。

構文

DBMS_LOB.FILEOPEN (
file_loc   IN OUT NOCOPY  BFILE,
open_mode  IN             BINARY_INTEGER := file_readonly);

パラメータ

表88-42 FILEOPENプロシージャのパラメータ

パラメータ

説明

file_loc

BFILEのロケータ。

open_mode

ファイル・アクセスは読取り専用です。

例外

表88-43 FILEOPENプロシージャの例外

例外

説明

VALUE_ERROR

file_locまたはopen_modeがNULLです。

INVALID_ARGVAL

open_modeがFILE_READONLYではありません。

OPEN_TOOMANY

セッション内のオープン・ファイル数がsession_max_open_filesを超えています。

NOEXIST_DIRECTORY

file_locに関連付けられたディレクトリが存在しません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

INVALID_OPERATION

ファイルが存在しないか、またはファイルのアクセス権限がありません。

関連項目:

- 「FILECLOSEプロシージャ」

- 「FILECLOSEALLプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

FRAGMENT_DELETEプロシージャ

このプロシージャは、LOBからの長さを指定した場合、指定したオフセット位置にあるデータを削除します。LOB内の指定したオフセット位置の後にあるすべてのデータをリライトする必要はありません。

構文

DBMS_LOB.FRAGMENT_DELETE (
lob_loc     IN OUT NOCOPY BLOB,
amount      IN            INTEGER,
offset      IN            INTEGER);

DBMS_LOB.FRAGMENT_DELETE (
lob_loc     IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
amount      IN            INTEGER,
offset      IN            INTEGER);

パラメータ

表88-44 FRAGMENT_DELETEプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

amount

LOBから削除するバイト数(BLOB)または文字数(CLOB/NCLOB)。

offset

削除を開始するLOB内のオフセット位置を示すバイト数(BLOB)または文字数(CLOB/NCLOB)。

例外

表88-45 FRAGMENT_DELETEプロシージャの例外

例外

説明

INVALID_ARGVAL

パラメータ値が無効でした。

QUERY_WRITE

問合せ時に操作を実行できません。

BUFFERING_ENABLED

LOBバッファを有効にした状態では操作を実行できません。

SECUREFILE_BADLOB

SECUREFILE LOBのみのコールで、SECUREFILE以外のLOBが使用されました。

SECUREFILE_OUTOFBOUNDS

LOBの終わりを超えてFRAGMENT_*操作を実行しようとしました。

FRAGMENT_INSERTプロシージャ

このプロシージャは、指定したデータ(最大32K)を、LOB内の指定したオフセット位置に挿入します。

構文

DBMS_LOB.FRAGMENT_INSERT (
lob_loc     IN OUT NOCOPY BLOB,
amount      IN            INTEGER,
offset      IN            INTEGER,
buffer      IN            RAW);

DBMS_LOB.FRAGMENT_INSERT (
lob_loc     IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
amount      IN            INTEGER,
offset      IN            INTEGER,
buffer      IN            VARCHAR2 CHARACTER SET lob_loc%CHARSET);

パラメータ

表88-46 FRAGMENT_INSERTプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

amount

LOBに挿入するバイト数(BLOB)または文字数(CLOB/NCLOB)。

offset

挿入を開始するLOB内のオフセット位置を示すバイト数(BLOB)または文字数(CLOB/NCLOB)。

buffer

LOBに挿入するデータ。

例外

表88-47 FRAGMENT_INSERTプロシージャの例外

例外

説明

INVALID_ARGVAL

パラメータ値が無効でした。

QUERY_WRITE

問合せ時に操作を実行できません。

BUFFERING_ENABLED

LOBバッファを有効にした状態では操作を実行できません。

SECUREFILE_BADLOB

SECUREFILE LOBのみのコールで、SECUREFILE以外のLOBが使用されました。

SECUREFILE_OUTOFBOUNDS

LOBの終わりを超えてFRAGMENT_*操作を実行しようとしました。

使用上の注意

FRAGMENT_INSERTは、LOBに対する操作を実行する前に、必要に応じてLOBを取得します。

FRAGMENT_MOVEプロシージャ

このプロシージャは、指定したオフセット位置から新しく指定したオフセット位置に、バイト単位(BLOB)または文字単位(CLOB/NCLOB)で移動します。

構文

DBMS_LOB.FRAGMENT_MOVE (
lob_loc       IN OUT NOCOPY BLOB,
amount        IN            INTEGER,
src_offset    IN            INTEGER,
dest_offset   IN            INTEGER);

DBMS_LOB.FRAGMENT_MOVE (
lob_loc       IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
amount        IN            INTEGER,
src_offset    IN            INTEGER,
dest_offset   IN            INTEGER);

パラメータ

表88-48 FRAGMENT_MOVEプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

amount

LOB内の移動するバイト数(BLOB)または文字数(CLOB/NCLOB)。

src_offset

データの挿入を開始するLOB内のオフセット位置を示すバイト数(BLOB)または文字数(CLOB/NCLOB)。

dest_offset

データの削除を開始するLOB内のオフセット位置を示すバイト数(BLOB)または文字数(CLOB/NCLOB)。

例外

表88-49 FRAGMENT_MOVEプロシージャの例外

例外

説明

INVALID_ARGVAL

パラメータ値が無効でした。

QUERY_WRITE

問合せ時に操作を実行できません。

BUFFERING_ENABLED

LOBバッファを有効にした状態では操作を実行できません。

SECUREFILE_BADLOB

SECUREFILE LOBのみのコールで、SECUREFILE以外のLOBが使用されました。

SECUREFILE_OUTOFBOUNDS

LOBの終わりを超えてFRAGMENT_*操作を実行しようとしました。

使用上の注意

- すべてのオフセット位置は事前移動オフセット位置です。

- LOBの終わりを2以上超えてオフセット位置を設定することはできません。

- FRAGMENT_MOVEは、LOBに対する操作を実行する前に、必要に応じてLOBを取得します。

FRAGMENT_REPLACEプロシージャ

このプロシージャは、指定したオフセット位置にあるデータを指定したデータ(32k以下)で置き換えます。

構文

DBMS_LOB.FRAGMENT_REPLACE (
lob_loc     IN OUT NOCOPY BLOB,
old_amount  IN            INTEGER,
new_amount  IN            INTEGER,
offset      IN            INTEGER,
buffer      IN            RAW);

DBMS_LOB.FRAGMENT_REPLACE (
lob_loc     IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,   old_amount  IN           INTEGER,
new_amount  IN           INTEGER,
offset      IN           INTEGER,
buffer      IN           VARCHAR2 CHARACTER SET lob_loc%CHARSET);

パラメータ

表88-50 FRAGMENT_REPLACEファンクションのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

old_amount

LOB内で置き換えるバイト数(BLOB)または文字数(CLOB/NCLOB)。

new_amount

LOBに書き込むバイト数(BLOB)または文字数(CLOB/NCLOB)。

offset

データの挿入を開始するLOB内のオフセット位置を示すバイト数(BLOB)または文字数(CLOB/NCLOB)。

buffer

LOBに挿入するデータ。

例外

表88-51 FRAGMENT_REPLACEプロシージャの例外

例外

説明

INVALID_ARGVAL

パラメータ値が無効でした。

QUERY_WRITE

問合せ時に操作を実行できません。

BUFFERING_ENABLED

LOBバッファを有効にした状態では操作を実行できません。

SECUREFILE_BADLOB

SECUREFILE LOBのみのコールで、SECUREFILE以外のLOBが使用されました。

SECUREFILE_OUTOFBOUNDS

LOBの終わりを超えてFRAGMENT_*操作を実行しようとしました。

使用上の注意

- このプロシージャを起動することは、オフセット位置の既存のバイト数/文字数を削除して、オフセット位置に新しいバイト数/文字数を挿入することと同様です。

- FRAGMENT_REPLACEは、LOBに対する操作を実行する前に、必要に応じてLOBを取得します。

FREETEMPORARYプロシージャ

このプロシージャは、デフォルト一時表領域内の一時BLOBまたはCLOBを解放します。

構文

DBMS_LOB.FREETEMPORARY (
lob_loc  IN OUT  NOCOPY BLOB);

DBMS_LOB.FREETEMPORARY (
lob_loc  IN OUT  NOCOPY CLOB CHARACTER SET ANY_CS);

パラメータ

表88-52 FREETEMPORARYプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

使用上の注意

- 新しい一時LOBの作成時に、同じ継続時間(セッション、コール)で使用されている一時LOBが存在しない場合は、新しい一時LOBセグメントが作成されます。一時LOBを解放すると、その一時LOBによって消費されていた領域が一時セグメントに解放されます。同じ継続時間が指定されているその他の一時LOBが存在しない場合は、一時セグメントも解放されます。

- FREETEMPORARYへのコール後、解放されたLOBロケータには無効のマークが設定されます。

- 無効のLOBロケータが、OCIのOCILobLocatorAssignを使用して、またはPL/SQLの割当て操作によって別のLOBロケータに割り当てられている場合、割当て先も解放され、無効のマークが設定されます。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

GET_DBFS_LINKファンクション

このファンクションは、指定したSecureFile LOBのDBFSパス名を戻します。

構文

DBMS_LOB.GET_DBFS_LINK (
lob_loc             IN     BLOB,
storage_path        OUT VARCHAR2(DBFS_LINK_PATH_MAX_SIZE),
lob_length          OUT NUMBER);

DBMS_LOB.GET_DBFS_LINK (
lob_loc             IN     CLOB CHARACTER SET ANY_CS,
storage_path        OUT VARCHAR2(DBFS_LINK_PATH_MAX_SIZE),
lob_length          OUT NUMBER);

パラメータ

表88-53 GET_DBFS_LINKファンクションのパラメータ

パラメータ

説明

lob_loc

DBFSから取得されるLOB。

storage_path

DBFSに格納されているLOBへのパス。

lob_length

DBFSへの書込み時点でのLOBの長さ。

戻り値

アーカイブID。

例外

表88-54 GET_DBFS_LINKファンクションの例外

例外

説明

SECUREFILE_BADLOB

lob_locはSECUREFILEではありません。

ORA-01555

LOBがすでに取得されており、取得後に変更されている。または、ロケータの取得後にLOBが(変更されたかどうかに関係なく)移行されている。

GET_DBFS_LINK_STATEプロシージャ

このプロシージャは、指定したSecureFileの現在のリンク状態を取得します。

構文

DBMS_LOB.GET_DBFS_LINK_STATE (
lob_loc       IN BLOB,
storage_path  OUT VARCHAR2(DBFS_LINK_PATH_MAX_SIZE),
state         OUT NUMBER,
cached        OUT BOOLEAN);

DBMS_LOB.GET_DBFS_LINK_STATE (
lob_loc       IN CLOB CHARACTER SET ANY_CS,
storage_path  OUT VARCHAR2(DBFS_LINK_PATH_MAX_SIZE),
state         OUT NUMBER,
cached        OUT BOOLEAN);

パラメータ

表88-55 GET_DBFS_LINK_STATEプロシージャのパラメータ

パラメータ

説明

lob_loc

アーカイブから取得されるLOB

storage_path

DBFS HSMストアに格納されているLOBへのパス。

state

DBFS_LINK_NEVER、DBFS_LINK_NOまたはDBFS_LINK_YESのいずれか

cached

LOBがアーカイブされており、アーカイブ時にキャッシュされるように指定されている場合。

例外

表88-56 GET_DBFS_LINK_STATEプロシージャの例外

例外

説明

SECUREFILE_BADLOB

lob_locはSECUREFILEではありません。

使用上の注意

- LOBがアーカイブされていない場合、状態はDBMS_LOB.DBFS_LINK_NEVERに設定されます。LOBがアーカイブされている場合、状態はDBMS_LOB.DBFS_LINK_YESに設定されます。LOBが以前にアーカイブから取得されている場合、状態はDBFS_LINK_NOに設定されます。

- LOBがアーカイブされたにもかかわらず、RDBMSに残されている場合、cachedはTRUEに設定されます。データがリンクの作成後に削除された場合、cachedはFALSEに設定され、状態がDBMS_LOB.DBFS_LINK_NEVERの場合はNULLに設定されます。

GETCONTENTTYPEファンクション

このプロシージャは、SETCONTENTTYPEプロシージャを使用して以前設定したコンテンツ・タイプ文字列を戻します。

構文

DBMS_LOB.GETCONTENTTYPE (
lob_loc  IN BLOB)
RETURN VARCHAR2;

DBMS_LOB.GETCONTENTTYPE (
lob_loc  IN CLOB CHARACTER SET ANY_CS)
RETURN VARCHAR2;

プラグマ

PRAGMA RESTRICT_REFERENCES(getcontenttype, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-57 GETCONTENTTYPEファンクションのパラメータ

パラメータ

説明

lob_loc

コンテンツ・タイプを取得するLOB。

戻り値

戻されたコンテンツ・タイプ。

SecureFiles LOBにcontenttypeが関連付けられていない場合、GETCONTENTTYPE()はNULLを戻します。

例外

表88-58 GETCONTENTTYPEファンクションの例外

例外

説明

SECUREFILE_BADLOB

lob_locはSECUREFILEではありません。

GET_STORAGE_LIMITファンクション

このファンクションは、指定したLOBのLOB記憶域制限を戻します。

構文

DBMS_LOB.GET_STORAGE_LIMIT (
lob_loc  IN CLOB CHARACTER SET ANY_CS)
RETURN INTEGER;

DBMS_LOB.GET_STORAGE_LIMIT (
lob_loc  IN BLOB)
RETURN INTEGER;

プラグマ

PRAGMA RESTRICT_REFERENCES(get_storage_limit, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-59 GET_STORAGE_LIMITファンクションのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

戻り値

このファンクションから戻される値は、指定したLOBロケータの最大許容サイズです。BLOBの場合、戻り値は、LOBが存在する表領域のブロック・サイズによって異なり、表領域のブロック・サイズの(2^32)-1(4294967295)倍として計算されます。CLOB/NCLOBの場合、戻り値は、表領域のブロック・サイズの(2^32)-1(4294967295)倍をCLOB/NCLOBの文字幅で割った値になります。

使用上の注意

関連項目:
LOB記憶域制限の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

GETCHUNKSIZEファンクション

表の作成時に、チャンク・ファクタ(表領域ブロックのバイト単位の倍数)を指定できます。これは、LOB値のアクセスまたは変更時にLOBデータ・レイヤーによって使用されるチャンク・サイズに対応します。チャンクの一部はシステム関連情報の格納に使用され、それ以外の部分にLOB値が格納されます。

このファンクションは、LOB値を格納するLOBチャンクで使用される領域容量を戻します。

構文

DBMS_LOB.GETCHUNKSIZE (
lob_loc IN BLOB)
RETURN INTEGER;

DBMS_LOB.GETCHUNKSIZE (
lob_loc IN CLOB CHARACTER SET ANY_CS)
RETURN INTEGER;

プラグマ

PRAGMA RESTRICT_REFERENCES(getchunksize, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-60 GETCHUNKSIZEファンクションのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

戻り値

戻り値は、使用可能なチャンク・サイズ(バイト単位)です。

使用上の注意

- 基本的なLOBファイルの場合、このチャンク・サイズの倍数を使用して読取り/書込み要求を入力すると、パフォーマンスが向上します。LOBチャンクはバージョン化され、すべての書込みがチャンクを基準に行われると、余分なバージョン分割が行われず、重複もしないため、書込みの場合にはさらに利点があります。同じチャンクに対してWRITEコールを複数回発行するかわりに、1つのチャンク内でWRITEコールを十分な数だけまとめることができます。
これらのパフォーマンスを向上させる方法は、SecureFilesには適用されません。

- チャンク・サイズはLOBタイプ(BLOB、CLOB、NCLOB、Unicodeまたはその他のキャラクタ・セット)とは無関係です。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

例外

表88-61 GETCHUNKSIZEプロシージャの例外

例外

説明

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

GETLENGTHファンクション

このファンクションは、指定されたLOB値の長さを取得します。長さは、バイト数または文字数で戻されます。

BFILEの場合に戻される長さには、EOF(存在している場合)が含まれます。以前に行ったERASEまたはWRITE操作でLOBに挿入された0(ゼロ)バイトまたは空白のFILLERも長さに含まれます。空の内部LOBの長さは0(ゼロ)です。

構文

DBMS_LOB.GETLENGTH (
lob_loc    IN  BLOB)
RETURN INTEGER;

DBMS_LOB.GETLENGTH (
lob_loc    IN  CLOB   CHARACTER SET ANY_CS)
RETURN INTEGER;

DBMS_LOB.GETLENGTH (
file_loc    IN  BFILE)
RETURN INTEGER;

プラグマ

pragma restrict_references(GETLENGTH, WNDS, WNPS, RNDS, RNPS);

パラメータ

表88-62 GETLENGTHファンクションのパラメータ

パラメータ

説明

file_loc

長さが戻されるLOBのファイル・ロケータ

戻り値

LOBの長さが、INTEGERとしてバイト数または文字数で戻されます。入力LOBがNULLの場合または入力lob_locがNULLの場合は、NULLが戻されます。BFILEの場合は、次の場合にエラーが戻されます。

- lob_locに必要なディレクトリ権限とオペレーティング・システム権限がない場合

- オペレーティング・システム読込みエラーのために、lob_locを読み込むことができない場合

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

例外

表88-63 GETLENGHTHプロシージャの例外

例外

説明

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

GETOPTIONSファンクション

このファンクションは、特定のLOBのoption_typeフィールドに対応する圧縮、重複除外および暗号化の設定を取得します。

構文

DBMS_LOB.GETOPTIONS (
lob_loc             IN     BLOB,
option_types        IN     PLS_INTEGER)
RETURN PLS_INTEGER;

DBMS_LOB.GETOPTIONS (
lob_loc             IN     CLOB CHARACTER SET ANY_CS,
option_types        IN     PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表88-64 GETOPTIONSファンクションのパラメータ

パラメータ

説明

lob_loc

検査するLOBのロケータ。詳細は、「使用上の注意」を参照してください。

option_type

「DBMS_LOBの定数: オプション・タイプ」を参照してください。

戻り値

戻り値は、渡されるオプション・タイプ(「DBMS_LOBの定数: オプション・タイプ」を参照)に応じて、COMPRESS_ON、ENCRYPT_ONおよびDEDUPLICATE_ON(「DBMS_LOBの定数: オプション値」を参照)の組合せになります。

例外

表88-65 GETOPTIONSプロシージャの例外

例外

説明

INVALID_ARGVAL

パラメータ値が無効でした。

QUERY_WRITE

問合せ時に操作を実行できません。

BUFFERING_ENABLED

LOBバッファを有効にした状態では操作を実行できません。

SECUREFILE_BADLOB

SECUREFILE LOBのみのコールで、SECUREFILE以外のLOBが使用されました。

使用上の注意

圧縮または複製解除の機能が備えられていないSecureFile列に対して、これらの機能をオンまたはオフにすることはできません。GetOptionsファンクションとSETOPTIONSプロシージャは、個々のSecureFilesに対して動作します。特定のSecureFileの機能をオフにしたり、SetOptionsによってすでにオフにされている機能をオンにすることはできますが、表の作成時にSecureFileに指定されていないオプションをオンにすることはできません。

INSTRファンクション

このファンクションは、指定されたオフセットを開始位置として、LOBにおけるパターンのn番目に一致した位置を戻します。

構文

DBMS_LOB.INSTR (
lob_loc    IN   BLOB,
pattern    IN   RAW,
offset     IN   INTEGER := 1,
nth        IN   INTEGER := 1)
RETURN INTEGER;

DBMS_LOB.INSTR (
lob_loc    IN   CLOB      CHARACTER SET ANY_CS,
pattern    IN   VARCHAR2  CHARACTER SET lob_loc%CHARSET,
offset     IN   INTEGER := 1,
nth        IN   INTEGER := 1)
RETURN INTEGER;

DBMS_LOB.INSTR (
file_loc   IN   BFILE,
pattern    IN   RAW,
offset     IN   INTEGER := 1,
nth        IN   INTEGER := 1)
RETURN INTEGER;

プラグマ

pragma restrict_references(INSTR, WNDS, WNPS, RNDS, RNPS);

パラメータ

表88-66 INSTRファンクションのパラメータ

パラメータ

説明

lob_loc

検査するLOBのロケータ。詳細は、「使用上の注意」を参照してください。

file_loc

検査するLOBのファイル・ロケータ。

pattern

テスト対象のパターン。パターンは、BLOBの場合はRAWバイトのグループ、CLOBの場合は文字列(VARCHAR2)です。パターンの最大サイズは16383バイトです。

offset

パターン・マッチングの開始位置を示す絶対オフセット(起点: 1)。BLOBの場合はバイト数、CLOBの場合は文字数で指定します。

nth

出現番号。1から始まります。

戻り値

表88-67 INSTRファンクションの戻り値

戻り値

説明

INTEGER

一致したパターンの先頭のオフセット。バイト数または文字数で示されます。

パターンが見つからない場合は0 (ゼロ)が戻されます。

NULL

次のいずれかです。

- INパラメータのいずれか1つ以上がNULLまたはINVALIDの場合

-offset < 1またはoffset > LOBMAXSIZE

- nth < 1

-nth > LOBMAXSIZE

使用上の注意

VARCHAR2バッファ(patternパラメータ)の形式は、CLOBパラメータの形式と一致する必要があります。つまり、入力LOBのパラメータのタイプがNCLOBの場合、バッファにはNCHARデータが含まれる必要があります。これに対して、入力LOBのパラメータのタイプがCLOBの場合、バッファにはCHARデータが含まれる必要があります。

BFILEの場合は、この操作を行う前に、FILEOPEN操作でファイルをあらかじめオープンしておく必要があります。

INSTRなど、パターン・マッチング用にRAWまたはVARCHAR2パラメータを受け入れる操作では、パターン・パラメータまたは副文字列において、正規表現または特殊一致文字(例: SQLのLIKE)はサポートされていません。

例外

表88-68 BFILEに関するINSTRファンクションの例外

例外

説明

UNOPENED_FILE

ファイルが入力ロケータを使用してオープンされていません。

NOEXIST_DIRECTORY

ディレクトリが存在しません。

NOPRIV_DIRECTORY

ディレクトリに対する権限がありません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

INVALID_OPERATION

ファイルが存在しないか、またはファイルのアクセス権限がありません。

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

関連項目:

- 「SUBSTRファンクション」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ISOPENファンクション

このファンクションは、LOBが入力ロケータを使用してすでにオープンされているかどうかをチェックします。このサブプログラムは、内部および外部LOB用です。

構文

DBMS_LOB.ISOPEN (
lob_loc IN BLOB)
RETURN INTEGER;

DBMS_LOB.ISOPEN (
lob_loc IN CLOB CHARACTER SET ANY_CS)
RETURN INTEGER;

DBMS_LOB.ISOPEN (
file_loc IN BFILE)
RETURN INTEGER;

プラグマ

PRAGMA RESTRICT_REFERENCES(isopen, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-69 ISOPENファンクションのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

file_loc

ファイル・ロケータ。

戻り値

戻り値は、LOBがオープンしている場合は1、それ以外の場合は0(ゼロ)です。

使用上の注意

BFILESの場合、オープンされているかどうかはロケータと関連付けられています。入力ロケータがOPENに渡されていない場合、そのBFILEはこのロケータによってオープンされていないとみなされます。ただし、別のロケータがBFILEをオープンしている可能性はあります。異なるロケータを使用すると、同じBFILE上で複数のOPENを実行できます。

内部LOBの場合、オープンされているかどうかは、ロケータではなくそのLOBに関連付けられています。ロケータ1がLOBをオープンした場合、ロケータ2もそのLOBはオープンしているとみなします。内部LOBの場合は、LOBが実際にオープンしているかどうかを調べるにはサーバー上の状態をチェックするため、ISOPENでラウンドトリップが必要です。

外部LOB(BFILE)の場合も、サーバーに状態が保持されているため、ISOPENでラウンドトリップが必要です。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ISSECUREFILEファンクション

このファンクションは、渡されるLOBロケータがSecurefile LOB用の場合にTRUEを戻します。そうでなければ、FALSEを戻します。

構文

DBMS_LOB ISSECUREFILE(
lob_loc    IN      BLOB)
RETURN BOOLEAN;

プラグマ

PRAGMA RESTRICT_REFERENCES(issecurefile, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-70 ISSECUREFILEファンクションのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

戻り値

このファンクションは、渡されるLOBロケータがSecurefile LOB用の場合にTRUEを戻します。そうでなければ、FALSEを戻します。

ISTEMPORARYファンクション

このファンクションはLOBインスタンスが一時的であるかどうかを判断します。

構文

DBMS_LOB.ISTEMPORARY (
lob_loc IN BLOB)
RETURN INTEGER;

DBMS_LOB.ISTEMPORARY (
lob_loc IN CLOB CHARACTER SET ANY_CS)
RETURN INTEGER;

プラグマ

PRAGMA RESTRICT_REFERENCES(istemporary, WNDS, RNDS, WNPS, RNPS);

パラメータ

表88-71 ISTEMPORARYプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

戻り値

戻り値は、LOBが一時LOBとして存在している場合は1、LOBが一時LOBではないか、存在していない場合は0(ゼロ)、指定されたロケータがNULLの場合はNULLです。

使用上の注意

FREETEMPORARYを指定して一時LOBを解放した場合、LOBロケータはNULLに設定されません。したがって、ISTEMPORARYは、解放後に明示的にNULLに再設定されていないロケータに対して0(ゼロ)を戻します。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

LOADBLOBFROMFILEプロシージャ

このプロシージャは、BFILEのデータを内部BLOBにロードします。結果はLOADFROMFILEと同じで、新しいオフセットを戻します。

構文

DBMS_LOB.LOADBLOBFROMFILE (
dest_lob    IN OUT NOCOPY BLOB,
src_bfile   IN            BFILE,
amount      IN            INTEGER,
dest_offset IN OUT        INTEGER,
src_offset  IN OUT        INTEGER);

パラメータ

表88-72 LOADBLOBFROMFILEプロシージャのパラメータ

パラメータ

説明

dest_lob

ロード先のBLOBロケータ。

src_bfile

ロード元のBFILEロケータ。

amount

BFILEからロードするバイト数。BFILEの終わりまでロードするDBMS_LOB.LOBMAXSIZEを使用することもできます。

dest_offset

(IN)宛先BLOBの書込み開始位置を示すオフセット(起点: 1) (バイト数で指定します)。(OUT)この書込み終了直後の宛先BLOBの新規オフセット(バイト数で指定します)で、次の書込みの開始位置でもあります。

src_offset

(IN)ソースBFILEの読込み開始位置を示すオフセット(起点: 1)。バイト数で指定します。(OUT)この読込み終了直後のソースBFILEのオフセット。バイト数で示されます。次の読込みの開始位置でもあります。

使用上の注意

- ソースおよび宛先の両方のLOBに対するオフセット、およびソースBFILEからコピーするバイト数を指定できます。amountおよびsrc_offsetは、BFILEを参照するためにバイト単位ですが、dest_offsetはBLOBのためバイト単位です。

- 宛先LOBに指定したオフセットが、現在そのLOBに格納されているデータの終わりを超えている場合は、宛先BLOBに、0(ゼロ)バイトのFILLERまたは空白が挿入されます。オフセットが宛先LOBの現行の長さより小さい場合、既存のデータは上書きされます。

- 入力amountおよびoffsetを加算した値がBFILE内のデータの長さを超えた場合はエラーが発生します(ただし、指定されているamountが、BFILEの終わりに達するまでロードするように指定できるLOBMAXSIZEの場合を除きます)。

- OPEN/CLOSE操作内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

- OPEN/CLOSE内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

- LOADFROMFILEは、ロード前に宛先LOBを取得します。ただし、ロードがLOB全体に適用される場合を除きます。

定数およびデフォルト

パラメータを省略する簡単な方法はありません。IN/OUTパラメータに変数を宣言するか、またはINパラメータにデフォルト値を指定します。使用可能な定数およびデフォルトを次に示します。

表88-73 パラメータのデフォルト値

パラメータ

デフォルト値

説明

amount

DBMS_LOB.LOBMAXSIZE (IN)

ファイル全体をロードします。

dest_offset

1(IN)

先頭から開始します。

src_offset

1(IN)

先頭から開始します。

DBMSLOB.SQLで定義される定数

lobmaxsize                    CONSTANT INTEGER        := DBMS_LOB.LOBMAXSIZE;

例外

表88-74 LOADBLOBFROMFILEプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLまたはINVALIDです。

INVALID_ARGVAL

次のいずれかです。

- src_offsetまたはdest_offset < 1

- src_offsetまたはdest_offset > LOBMAXSIZE。

- amount < 1

- amount > LOBMAXSIZE

BUFFERING_ENABLED

BLOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

LOADCLOBFROMFILEプロシージャ

このプロシージャは、BFILEのデータを必要なキャラクタ・セット変換を行った後、内部CLOB/NCLOBにロードし、新しいオフセットを戻します。

構文

DBMS_LOB.LOADCLOBFROMFILE (
dest_lob       IN OUT NOCOPY   NOCOPY CLOB CHARACTER SET ANY_CS,
src_bfile      IN              BFILE,
amount         IN              INTEGER,
dest_offset    IN OUT          INTEGER,
src_offset     IN OUT          INTEGER,
bfile_csid     IN              NUMBER,
lang_context   IN OUT          INTEGER,
warning        OUT             INTEGER);

パラメータ

表88-75 LOADCLOBFROMFILEプロシージャのパラメータ

パラメータ

説明

dest_lob

ロード先のCLOB/NCLOBロケータ。

src_bfile

ロード元のBFILEロケータ。

amount

BFILEからロードするバイト数。BFILEの終わりまでロードするDBMS_LOB.LOBMAXSIZEを使用することもできます。

dest_offset

(IN)宛先CLOBの書込み開始位置を示すオフセット(起点: 1) (文字数で指定します)。(OUT)このロード終了直後の新規オフセット(文字数で示します)で、次のロード開始位置でもあります。常にロード終了後の最初の完全な文字の開始位置を示します。最後の文字が完全でない場合は、部分文字の先頭までオフセットが戻ります。

src_offset

(IN)ソースBFILEの読込み開始位置を示すオフセット(起点: 1)。バイト数で指定します。(OUT)この読込み終了直後のソースBFILEのオフセット。バイト数で示されます。次の読込みの開始位置でもあります。

bfile_csid

ソース(BFILE)ファイルのキャラクタ・セットID。

lang_context

(IN)現行のロードに関する、シフト・ステータスなどの言語コンテキスト。

(OUT)現在のロードが停止した時点の言語コンテキストで、同じソースから継続してロードする場合に、次のロードで使用されます。この情報はユーザーに戻されるため、ユーザーは、ソース・データを失ったり誤って解釈することなく、継続してこの情報をロードで使用できます。最初のロードの場合、または特に必要ない場合は、デフォルトの0 (ゼロ)を使用してください。言語コンテキストの詳細は、ユーザーには隠されています。コールするときに、その内容を認識している必要はありません。

warning

(OUT)警告メッセージ。これは、ロード時になんらかの異常が発生したことを示します。ユーザーのミスが原因の場合とそれ以外が原因の場合があります。ロードは要求に応じて完了され、警告メッセージをチェックするかどうかはユーザーが判断します。現在、発生する可能性があるのは、変換不可能な文字に関する警告のみです。これは、ソースの文字が宛先の文字に正しく変換できない場合に発生し、その位置にはデフォルトの置換文字(例: '?')が使用されます。メッセージは、定数値DBMS_LOB.WARN_INCONVERTIBLE_CHARに定義されています。

使用上の注意

ソースおよび宛先の両方のLOBに対するオフセット、およびソースBFILEからコピーするバイト数を指定できます。amountおよびsrc_offsetは、BFILEを参照するためにバイト単位ですが、dest_offsetはCLOBのため文字単位です。

宛先LOBに指定したオフセットが、現在そのLOBに格納されているデータの終わりを超えている場合は、宛先CLOBに、0(ゼロ)バイトのFILLERまたは空白が挿入されます。オフセットが宛先LOBの現行の長さより小さい場合、既存のデータは上書きされます。

入力amountおよびoffsetを加算した値がBFILE内のデータの長さを超えた場合はエラーが発生します(ただし、指定されているamountが、BFILEの終わりに達するまでロードするように指定できるLOBMAXSIZEの場合を除きます)。

次の要件に注意してください。

- 宛先のキャラクタ・セットは常に、CLOBの場合はデータベース・キャラクタ・セットおよびNCLOBの場合は各国語キャラクタ・セットと同じです。

- csid=0はデフォルトの動作を示しますが、ソースのcsidのかわりに、CLOBの場合はデータベースcsid、NCLOBの場合は各国語csidを使用します。この場合でも、可変幅の場合は変換が必要です。

- OPEN/CLOSE操作内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。
OPEN/CLOSE内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

ソースBFILEには、Unicodeキャラクタ・セットのデータを含めることができます。Unicode標準では、Unicode文字を一連のバイトにマッピングする複数のコード体系が定義されています。表88-76「サポートされているUnicodeコード体系」に、このサブプログラムでサポートされているUnicodeコード体系を示します。

表88-76 サポートされているUnicodeコード体系

コード体系

Oracle名

bfile_csid値

UTF-8

AL32UTF8

873

UTF-16BE

AL16UTF16

2000

UTF-16LE

AL16UTF16LE

2002

CESU-8

UTF8

871

UTF-EBCDIC

UTFE

872

UTF-16

UTF16

1000

3つすべてのUTF-16コード体系で、Unicode文字は2バイトの符号なし整数としてエンコードされます。整数はビッグ・エンディアンまたはリトル・エンディアンのバイト順で格納できます。UTF-16BEコード体系では、ビッグ・エンディアン・データが定義されます。UTF-16LEコード体系では、リトル・エンディアン・データが定義されます。UTF-16コード体系では、ソースBFILE内の最初の2バイトに、バイト順序を定義するバイト順序マーク(BOM)文字が格納されている必要があります。BOMコードは0xFEFFです。このコードが{0xFE,0xFF}として格納されている場合、データはビッグ・エンディアンと解釈されます。このコードが{0xFF,0xFE}として格納されている場合、データはリトル・エンディアンと解釈されます。

UTF-8およびCESU-8コード体系では、バイト順序マークは{0xEF,0xBB, 0xBF}として格納されます。いずれのUnicodeコード体系でも、ファイルの先頭の対応するBOM順序は、認識されますが、宛先LOBにはロードされません。

定数

使用可能な定数およびデフォルト値を次に示します。

表88-77 パラメータのデフォルト値

パラメータ

デフォルト値

説明

amount

DBMS_LOB.LOBMAXSIZE (IN)

ファイル全体をロードします。

dest_offset

1(IN)

先頭から開始します。

src_offset

1(IN)

先頭から開始します。

csid

0(IN)

デフォルトのcsid。宛先のcsidを使用します。

lang_context

0(IN)

デフォルトの言語コンテキスト。

warning

0(OUT)

警告メッセージはありません。問題ありません。

DBMSLOB.SQLで定義される定数

lobmaxsize                    CONSTANT INTEGER        := 18446744073709551615;
warn_inconvertible_char       CONSTANT INTEGER        := 1;
default_csid                  CONSTANT INTEGER        := 0;
default_lang_ctx              CONSTANT INTEGER        := 0;
no_warning                    CONSTANT INTEGER        := 0;

例外

表88-78 LOADCLOBFROMFILEプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLまたはINVALIDです。

INVALID_ARGVAL

次のいずれかです。

- src_offsetまたはdest_offset < 1

- src_offsetまたはdest_offset > LOBMAXSIZE。

- amount < 1

- amount > LOBMAXSIZE

BUFFERING_ENABLED

CLOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

LOADFROMFILEプロシージャ

このプロシージャは、ソース外部LOB(BFILE)の全体または一部を宛先内部LOBにコピーします。

構文

DBMS_LOB.LOADFROMFILE (
dest_lob    IN OUT NOCOPY BLOB,
src_file    IN            BFILE,
amount      IN            INTEGER,
dest_offset IN            INTEGER  := 1,
src_offset  IN            INTEGER  := 1);

パラメータ

表88-79 LOADFROMFILEプロシージャのパラメータ

パラメータ

説明

dest_lob

ロード先のLOBロケータ。

src_file

ロード元のBFILEロケータ。

amount

BFILEからロードするバイト数。

dest_offset

宛先LOBのロード開始位置を示すオフセット(起点: 1)。バイト数または文字数で指定します。

src_offset

ソースBFILEのロード開始位置を示すオフセット(起点: 1)。バイト数で指定します。

使用上の注意

ソースおよび宛先の両方のLOBに対するオフセット、およびソースBFILEからコピーするバイト数を指定できます。amountおよびsrc_offsetは、BFILEを参照するためにバイト単位ですが、dest_offsetはBLOBの場合はバイト単位、CLOBsの場合は文字単位です。

注意:
入力BFILEは、このプロシージャを使用する前にオープンしている必要があります。バイナリBFILEデータがCLOBにロードされる場合、キャラクタ・セット変換は暗黙的には実行されません。BFILEデータは、データベース内のCLOBと同じキャラクタ・セットであることが必要です。これを検証するためのエラー・チェックは実行されません。

宛先LOBに指定したオフセットが、現在そのLOBに格納されているデータの終わりを超えている場合は、宛先BLOBまたはCLOBに、0(ゼロ)バイトのFILLERまたは空白がそれぞれ挿入されます。オフセットが宛先LOBの現行の長さより小さい場合、既存のデータは上書きされます。

入力amountおよびoffsetを加算した値がBFILE内のデータの長さを超えた場合はエラーが発生します。

注意:
UTF-8のようにキャラクタ・セットの幅が変化する場合、LOB値は固定幅形式のUCS2で格納されます。したがって、DBMS_LOB.LOADFROMFILEを使用している場合、BFILEのデータはUTF-8キャラクタ・セットではなくUCS2キャラクタ・セットにする必要があります。ただし、sql*loaderでは必要なキャラクタ・セット変換が提供されるため、CLOBまたはNCLOBにデータをロードするには、LOADFROMFILEではなくsql*loaderを使用してください。

オープン/クローズ・インタフェース内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

オープン/クローズAPI内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

例外

表88-80 LOADFROMFILEプロシージャの例外

例外

説明

VALUE_ERROR

入力パラメータのいずれかがNULLまたはINVALIDです。

INVALID_ARGVAL

次のいずれかです。

- src_offsetまたはdest_offset < 1

- src_offsetまたはdest_offset > LOBMAXSIZE。

- amount < 1

- amount > LOBMAXSIZE

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

MOVE_TO_DBFS_LINKプロシージャ

このプロシージャは、(データベースからの)指定されたLOBデータをDBFS HSMストアにアーカイブします。

構文

DBMS_LOB.MOVE_TO_DBFS_LINK (
lob_loc       IN OUT BLOB,
storage_path  IN     VARCHAR2(dbfs_link_path_max_size),
flags         IN     BINARY INTEGER DEFAULT DBFS_LINK_NOCACHE);

DBMS_LOB.MOVE_TO_DBFS_LINK (
lob_loc       IN OUT CLOB CHARACTER SET ANY_CS,
storage_path  IN     VARCHAR2(dbfs_link_path_max_size),
flags         IN     BINARY INTEGER DEFAULT DBFS_LINK_NOCACHE);

パラメータ

表88-81 MOVE_TO_DBFS_LINKプロシージャのパラメータ

パラメータ

説明

lob_loc

アーカイブされるLOB。

storage_path

LOBが格納されるパス。

flags

DBFS_LINK_CACHEまたはDBFS_LINK_NOCACHE。DBFS_LINK_CACHEが指定されている場合、LOBデータはDBFSストアに書き込まれると同時に、引き続きRDBMSに格納されます。DBFS_LINK_NOCACHEは、LOBデータがDBFSへの書込み後にRDBMSから削除されるように指定します。

例外

表88-82 MOVE_TO_DBFS_LINKプロシージャの例外

例外

説明

SECUREFILE_BADLOB

lob_locはSECUREFILEではありません。

使用上の注意

- このプロシージャは、LOBがすでにアーカイブされている場合、正常にアーカイブされたときと同様の結果を戻します。その場合、DBFS_LINK_NOCACHEが指定されているか、flagsがデフォルト設定されていると、LOBデータはRDBMSから削除されます。

- 同じLOBで同じフラグを使用してこのプロシージャを複数回コールしても、効果はありません。

- すでにアーカイブされているLOBでこのプロシージャをコールすると、フラグの設定に応じてLOBのキャッシュ(DBFS_LINK_CACHE)または削除(DBFS_LINK_NOCACHE)が実行されます。

OPENプロシージャ

このプロシージャは、指定されたモードで、(内部または外部)LOBをオープンします。有効なモードは読取り専用と読取り/書込みです。

構文

DBMS_LOB.OPEN (
lob_loc   IN OUT NOCOPY BLOB,
open_mode IN            BINARY_INTEGER);

DBMS_LOB.OPEN (
lob_loc   IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
open_mode IN            BINARY_INTEGER);

DBMS_LOB.OPEN (
file_loc  IN OUT NOCOPY BFILE,
open_mode IN            BINARY_INTEGER := file_readonly);

パラメータ

表88-83 OPENプロシージャのパラメータ

パラメータ

説明

lob_loc

LOBロケータ。詳細は、「使用上の注意」を参照してください。

open_mode

オープンするモード。

BLOBおよびCLOBタイプの場合、モードはLOB_READONLYまたはLOB_READWRITEのいずれかに指定できます。

BFILEタイプの場合、モードはFILE_READONLYである必要があります。

使用上の注意

注意:
LOBが読取り専用モードでオープンされた場合は、そのLOBに書込みを行おうとすると、エラーが戻されます。BFILEは、読取り専用モードでのみオープンできます。

OPENでは、内部または外部LOBのいずれの場合もサーバーへのラウンドトリップが必要です。内部LOBの場合、OPENはOPENコールに依存しているその他のコードのトリガーとなります。外部LOB (BFILE)の場合、OPENではサーバー側の実際のオペレーティング・システム・ファイルがオープンされるため、ラウンドトリップが必要です。

オープン/クローズ・インタフェース内のすべてのLOB操作のラップは必須ではありません。ただし、LOBをオープンしている場合は、トランザクションのコミットを実行する前にクローズする必要があり、クローズしない場合は、エラーが発生します。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

トランザクションによってオープンされたすべてのLOBをクローズする前にトランザクションをコミットすると、エラーが発生します。エラーが戻された場合、LOBのオープンは廃棄されますが、トランザクションのコミットは正常に行われます。したがって、そのトランザクションにおけるLOBおよび非LOBデータの変更はすべてコミットされますが、ドメイン索引およびファンクションベースの索引は更新されません。このような場合は、LOB列のファンクション索引およびドメイン索引を再構築する必要があります。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

READプロシージャ

このプロシージャは、LOBの一部を読み込み、LOBの先頭からの絶対オフセットから開始し、指定された量のデータをbufferパラメータに戻します。

実際に読み込まれたバイト数または文字数は、amountパラメータに戻されます。入力offsetがLOBの終わりを超えた位置を指している場合、amountは0(ゼロ)に設定され、NO_DATA_FOUND例外が発生します。

構文

DBMS_LOB.READ (
lob_loc   IN             BLOB,
amount    IN OUT  NOCOPY INTEGER,
offset    IN             INTEGER,
buffer    OUT            RAW);

DBMS_LOB.READ (
lob_loc   IN             CLOB CHARACTER SET ANY_CS,
amount    IN OUT  NOCOPY INTEGER,
offset    IN             INTEGER,
buffer    OUT            VARCHAR2 CHARACTER SET lob_loc%CHARSET);

DBMS_LOB.READ (
file_loc   IN             BFILE,
amount    IN OUT   NOCOPY INTEGER,
offset    IN              INTEGER,
buffer    OUT             RAW);

パラメータ

表88-84 READプロシージャのパラメータ

パラメータ

説明

lob_loc

読み込むLOBのロケータ。詳細は、「使用上の注意」を参照してください。

file_loc

検査するLOBのファイル・ロケータ。

amount

読み込む、または読み込まれたバイト数(BLOBの場合)または文字数(CLOBの場合)。

offset

LOBの先頭からのオフセット(起点: 1)。BLOBの場合はバイト数、CLOBの場合は文字数で指定します。

buffer

読取り操作用の出力バッファ。

例外

表88-85に、すべてのLOBインスタンスに該当する例外を示します。表88-86に、BFILEのみに該当する例外を示します。

表88-85 READプロシージャの例外

例外

説明

VALUE_ERROR

lob_loc、amountまたはoffsetパラメータのいずれかがNULLです。

INVALID_ARGVAL

次のいずれかです。

- amount < 1

- amount > 32767 bytes (or the character equivalent)

- offset < 1

- offset > LOBMAXSIZE

- amount(バイト数または文字数)がbufferの容量を超えています。

NO_DATA_FOUND

LOBの終わりに達し、LOBから読み込むバイトまたは文字がありません。amountの値は0(ゼロ)です。

表88-86 BFILEに関するREADプロシージャの例外

例外

説明

UNOPENED_FILE

ファイルが入力ロケータを使用してオープンされていません。

NOEXIST_DIRECTORY

ディレクトリが存在しません。

NOPRIV_DIRECTORY

ディレクトリに対する権限がありません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

INVALID_OPERATION

ファイルが存在しないか、またはファイルのアクセス権限がありません。

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

- VARCHAR2バッファの形式は、CLOBパラメータの形式と一致する必要があります。つまり、入力LOBのパラメータのタイプがNCLOBの場合、バッファにはNCHARデータが含まれる必要があります。これに対して、入力LOBのパラメータのタイプがCLOBの場合、バッファにはCHARデータが含まれる必要があります。

- クライアントからDBMS_LOB.READをコールすると(SQL*Plus内からのBEGIN/ENDブロックでのコールなど)、戻されるバッファにはクライアントのキャラクタ・セットのデータが含まれます。データベースは、バッファをユーザーに戻す前に、サーバーのキャラクタ・セットからクライアントのキャラクタ・セットにLOB値を変換します。

- READは、読取り前に必要に応じてLOBを取得します。

- LOBがDBFSリンクの場合、データは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。

関連項目:
このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

SET_DBFS_LINKプロシージャ

このファンクションは、指定したSecureFileを指定したパス名にリンクします。データはパスにコピーされません。

構文

DBMS_LOB.SET_DBFS_LINK (
lob_loc        IN OUT BLOB,
archive_id     IN     RAW(1024));

DBMS_LOB.SET_DBFS_LINK(
lob_loc_dst    IN OUT CLOB CHARACTER SET ANY_CS,
archive_id     IN     RAW(1024));

パラメータ

表88-87 SET_DBFS_LINKプロシージャのパラメータ

パラメータ

説明

lob_loc

参照値を格納するLOB。

archive_id

いずれかのGET_DBFS_LINKファンクションをコールすると戻されるアーカイブID。

例外

表88-88 SET_DBFS_LINKプロシージャの例外

例外

説明

SECUREFILE_BADLOB

lob_locはSECUREFILEではありません。

SETCONTENTTYPEプロシージャ

このプロシージャは、LOB内のデータのコンテンツ・タイプ文字列値を設定します。

構文

DBMS_LOB.SETCONTENTTYPE (
lob_loc      IN OUT NOCOPY BLOB,
contenttype  IN            VARCHAR2);

DBMS_LOB.SETCONTENTTYPE (
lob_loc     IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
contenttype IN            VARCHAR2);

パラメータ

表88-89 SETCONTENTTYPEプロシージャのパラメータ

パラメータ

説明

lob_loc

コンテンツ・タイプを割り当てるLOB。

contenttype

割り当てる文字列。

例外

表88-90 SETCONTENTTYPEプロシージャの例外

例外

説明

SECUREFILE_BADLOB

lob_locはSECUREFILEではありません。

使用上の注意

SECUREFILEに関連付けられている既存のコンテンツ・タイプを消去するには、contenttypeを空の文字列に設定してSETCONTENTTYPEを起動します。

SETOPTIONSプロシージャ

このプロシージャは、デフォルトのLOB列の設定を上書きする、圧縮および重複除外をLOBごとに有効化または無効化します。

構文

DBMS_LOB.SETOPTIONS (
lob_loc             IN     BLOB,
option_types        IN     PLS_INTEGER,
options             IN     PLS_INTEGER);

DBMS_LOB.SETOPTIONS (
lob_loc             IN     CLOB CHARACTER SET ANY_CS,
option_types        IN     PLS_INTEGER,
options             IN     PLS_INTEGER);

パラメータ

表88-91 SETOPTIONSプロシージャのパラメータ

パラメータ

説明

lob_loc

検査するLOBのロケータ。詳細は、「使用上の注意」を参照してください。

option_type

「DBMS_LOBの定数: オプション・タイプ」を参照してください。

options

「DBMS_LOBの定数: オプション値」を参照してください。

例外

表88-92 SETOPTIONSプロシージャの例外

例外

説明

SECUREFILE_BADLOB

操作に対してサポートされていないオブジェクト・タイプ。

INVALID_ARGVAL

パラメータ値が無効でした。

QUERY_WRITE

問合せ時に操作を実行できません。

BUFFERING_ENABLED

LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

- DBMS_LOB.SETOPTIONSを使用して、個々のLOBに対する暗号化を使用可能または使用禁止にすることはできません。

- 表の作成時に圧縮または重複除外の機能が設定されていない場合、これらの機能をSecureFile列に対してオンまたはオフにすることはできません。
GETOPTIONSファンクションとSETOPTIONSプロシージャは、個々のSecureFileに対して動作します。特定のSecureFile LOBに対する圧縮または重複除外をオフにしたり、SETOPTIONSによってすでにオフにされている場合はオンにすることができます。

- このコールでは、変更を永続化させる際にサーバーへのラウンドトリップが発生します。

SUBSTRファンクション

このファンクションは、LOBの先頭からの絶対offsetから開始し、LOBのamountバイトまたは文字を戻します。

固定幅のnバイトのCLOBの場合、SUBSTRに対する入力amountの指定が(32767/n)を超えると、SUBSTRでは、(32767/n)の長さの文字バッファまたはCLOBの長さのうち、いずれか小さい方を戻します。可変幅キャラクタ・セットのCLOBの場合、nはCLOBの文字に使用される最大バイト幅です。

構文

DBMS_LOB.SUBSTR (
lob_loc     IN    BLOB,
amount      IN    INTEGER := 32767,
offset      IN    INTEGER := 1)
RETURN RAW;

DBMS_LOB.SUBSTR (
lob_loc     IN    CLOB   CHARACTER SET ANY_CS,
amount      IN    INTEGER := 32767,
offset      IN    INTEGER := 1)
RETURN VARCHAR2 CHARACTER SET lob_loc%CHARSET;

DBMS_LOB.SUBSTR (
file_loc     IN    BFILE,
amount      IN    INTEGER := 32767,
offset      IN    INTEGER := 1)
RETURN RAW;

プラグマ

pragma restrict_references(SUBSTR, WNDS, WNPS, RNDS, RNPS);

パラメータ

表88-93 SUBSTRファンクションのパラメータ

パラメータ

説明

lob_loc

読み込むLOBのロケータ。詳細は、「使用上の注意」を参照してください。

file_loc

検査するLOBのファイル・ロケータ。

amount

読み込むバイト数(BLOBの場合)または文字数(CLOBの場合)。

offset

LOBの先頭からのオフセット(起点: 1)。BLOBの場合はバイト数、CLOBの場合は文字数で指定します。

戻り値

表88-94 SUBSTRファンクションの戻り値

戻り値

説明

RAW

ファンクション・オーバーロード。パラメータにBLOBまたはBFILEを使用します。

VARCHAR2

CLOBのバージョン。

NULL

次のいずれかです。

- 入力パラメータのいずれかがNULLです。

- amount < 1

- amount > 32767

- offset < 1

- offset > LOBMAXSIZE

例外

表88-95 BFILE操作に関するSUBSTRファンクションの例外

例外

説明

UNOPENED_FILE

ファイルが入力ロケータを使用してオープンされていません。

NOEXIST_DIRECTORY

ディレクトリが存在しません。

NOPRIV_DIRECTORY

ディレクトリに対する権限がありません。

INVALID_DIRECTORY

ディレクトリがファイルのオープン後に無効となりました。

INVALID_OPERATION

ファイルが存在しないか、またはファイルのアクセス権限がありません。

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

- VARCHAR2バッファの形式は、CLOBパラメータの形式と一致する必要があります。つまり、入力LOBのパラメータのタイプがNCLOBの場合、バッファにはNCHARデータが含まれる必要があります。これに対して、入力LOBのパラメータのタイプがCLOBの場合、バッファにはCHARデータが含まれる必要があります。

- クライアントからDBMS_LOB.SUBSTRをコールすると(SQL*Plus内からのBEGIN/ENDブロックでのコールなど)、戻されるバッファにはクライアントのキャラクタ・セットのデータが含まれます。データベースは、バッファをユーザーに戻す前に、サーバーのキャラクタ・セットからクライアントのキャラクタ・セットにLOB値を変換します。

- DBMS_LOB.SUBSTRは、LOBに格納されている文字に基づいて8191個以上の文字を戻します。使用可能なバッファを超える文字バイト数が原因ですべての文字が戻されない場合、新しいオフセットでDBMS_LOB.SUBSTRをコールして残りの文字を読み取るか、すべてのデータを抽出するまでサブプログラムのコールをループする必要があります。

- SUBSTRは、読取り前に必要に応じてLOBを取得します。

- LOBがDBFSリンクの場合、データは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。

関連項目:

- 「INSTRファンクション」

- 「READプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

TRIMプロシージャ

このプロシージャは、内部LOBの値をnewlenパラメータで指定された長さに切り捨てます。BLOBの場合はバイト数、CLOBの場合は文字数で長さを指定します。

注意:
TRIMプロシージャは、LOBの長さをnewlenパラメータで指定された値に減らします。

空のLOBに対してTRIMを実行すると、何も処理は行われず、TRIMによってエラーは戻されません。newlenで指定した新しい長さがLOBのサイズよりも大きい場合は、例外が発生します。

構文

DBMS_LOB.TRIM (
lob_loc        IN OUT  NOCOPY BLOB,
newlen         IN             INTEGER);

DBMS_LOB.TRIM (
lob_loc        IN OUT  NOCOPY CLOB CHARACTER SET ANY_CS,
newlen         IN             INTEGER);

パラメータ

表88-96 TRIMプロシージャのパラメータ

パラメータ

説明

lob_loc

長さを切り捨てる内部LOBのロケータ。詳細は、「使用上の注意」を参照してください。

newlen

切り捨て後の新しいLOB値の長さ。BLOBの場合はバイト数、CLOBの場合は文字数で指定します。

例外

表88-97 TRIMプロシージャの例外

例外

説明

VALUE_ERROR

lob_locがNULLです。

INVALID_ARGVAL

次のいずれかです。

- new_len < 0

- new_len > LOBMAXSIZE

QUERY_WRITE

問合せまたはPDMLパラレル実行サーバー内でLOB書込みが実行できません。

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

- オープン/クローズ・インタフェース内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

- オープン/クローズAPI内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

- TRIMは、LOBの長さを変更する前に、必要に応じてLOBを取得します。ただし、指定する新しい長さが0(ゼロ)の場合を除きます。

関連項目:

- 「ERASEプロシージャ」

- 「WRITEAPPENDプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

WRITEプロシージャ

このプロシージャは、LOBの先頭からの絶対オフセットから開始し、指定された量のデータを内部LOBに書き込みます。データは、bufferパラメータから書き込まれます。

WRITEは、オフセット位置以降LOBにすでに存在しているデータを、指定した長さだけ置換(上書き)します。

構文

DBMS_LOB.WRITE (
lob_loc  IN OUT NOCOPY  BLOB,
amount   IN             INTEGER,
offset   IN             INTEGER,
buffer   IN             RAW);

DBMS_LOB.WRITE (
lob_loc  IN OUT  NOCOPY CLOB   CHARACTER SET ANY_CS,
amount   IN             INTEGER,
offset   IN             INTEGER,
buffer   IN             VARCHAR2 CHARACTER SET lob_loc%CHARSET);

パラメータ

表88-98 WRITEプロシージャのパラメータ

パラメータ

説明

lob_loc

書込み先の内部LOBのロケータ。詳細は、「使用上の注意」を参照してください。

amount

書き込むバイト数(BLOBの場合)または文字数(CLOBの場合)。

offset

LOBの先頭からの書込み操作のオフセット(起点: 1)。BLOBの場合はバイト数、CLOBの場合は文字数で指定します。

buffer

書込み用の入力バッファ。

例外

表88-99 WRITEプロシージャの例外

例外

説明

VALUE_ERROR

lob_loc、amountまたはoffsetパラメータのいずれかがNULL、範囲外またはINVALIDです。

INVALID_ARGVAL

次のいずれかです。

- amount < 1

- amount > 32767 bytes (or the character equivalent)

- offset < 1

- offset > LOBMAXSIZE

QUERY_WRITE

問合せまたはPDMLパラレル実行サーバー内でLOB書込みが実行できません。

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

SECUREFILE_OUTOFBOUNDS

FRAGMENT_*が設定されているLOBの終わりを超えて書込み操作を実行しようとしました。

使用上の注意

- 入力amountがバッファのデータより多い場合はエラーが発生します。入力amountがバッファのデータより少ない場合は、バッファからその量のバイト数または文字数のみLOBに書き込まれます。指定したオフセットが現在そのLOBに格納されているデータの終わりを超えている場合は、BLOBまたはCLOBに、0(ゼロ)バイトのFILLERまたは空白がそれぞれ挿入されます。

- VARCHAR2バッファの形式は、CLOBパラメータの形式と一致する必要があります。つまり、入力LOBのパラメータのタイプがNCLOBの場合、バッファにはNCHARデータが含まれる必要があります。これに対して、入力LOBのパラメータのタイプがCLOBの場合、バッファにはCHARデータが含まれる必要があります。

- クライアントからDBMS_LOB.WRITEをコールするとき(SQL*Plus内からのBEGIN/ENDブロックでのコールなど)は、バッファにクライアントのキャラクタ・セットのデータが含まれている必要があります。データベースは、バッファ・データをLOBに書き込む前に、クライアント側のキャラクタ・セットをサーバー側のキャラクタ・セットに変換します。

- オープン/クローズ・インタフェース内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

- オープン/クローズAPI内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

- WRITEは、LOBに書き込む前に、必要に応じてLOBを取得します。ただし、書込みがLOB全体を上書きするように指定されている場合を除きます。

関連項目:

- 「APPENDプロシージャ」

- 「COPYプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

WRITEAPPENDプロシージャ

このプロシージャは、指定された量のデータを内部LOBの後ろに書き込みます。データは、bufferパラメータから書き込まれます。

構文

DBMS_LOB.WRITEAPPEND (
lob_loc IN OUT NOCOPY BLOB,
amount  IN            INTEGER,
buffer  IN            RAW);

DBMS_LOB.WRITEAPPEND (
lob_loc IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
amount  IN            INTEGER,
buffer  IN            VARCHAR2 CHARACTER SET lob_loc%CHARSET);

パラメータ

表88-100 WRITEAPPENDプロシージャのパラメータ

パラメータ

説明

lob_loc

書込み先の内部LOBのロケータ。詳細は、「使用上の注意」を参照してください。

amount

書き込むバイト数(BLOBの場合)または文字数(CLOBの場合)。

buffer

書込み用の入力バッファ。

使用上の注意

入力amountがバッファのデータより多い場合はエラーが発生します。入力amountがバッファのデータより少ない場合は、バッファからその量のバイト数または文字数のみLOBの後ろに書き込まれます。

例外

表88-101 WRITEAPPENDプロシージャの例外

例外

説明

VALUE_ERROR

lob_loc、amountまたはoffsetパラメータのいずれかがNULL、範囲外またはINVALIDです。

INVALID_ARGVAL

次のいずれかです。

- amount < 1

- amount > 32767 bytes (or the character equivalent)

QUERY_WRITE

問合せまたはPDMLパラレル実行サーバー内でLOB書込みが実行できません。

BUFFERING_ENABLED

LOBでバッファが有効になっている場合、LOBバッファを有効にした状態では操作を実行できません。

使用上の注意

- VARCHAR2バッファの形式は、CLOBパラメータの形式と一致する必要があります。つまり、入力LOBのパラメータのタイプがNCLOBの場合、バッファにはNCHARデータが含まれる必要があります。これに対して、入力LOBのパラメータのタイプがCLOBの場合、バッファにはCHARデータが含まれる必要があります。

- クライアントからDBMS_LOB.WRITEAPPENDをコールするとき(SQL*Plus内からのBEGIN/ENDブロックでのコールなど)は、バッファにクライアントのキャラクタ・セットのデータが含まれている必要があります。データベースは、バッファ・データをLOBに書き込む前に、クライアント側のキャラクタ・セットをサーバー側のキャラクタ・セットに変換します。

- オープン/クローズ・インタフェース内のLOB操作のラップは必須ではありません。操作を実行する前にLOBをオープンしなかった場合、LOB列のファンクション索引およびドメイン索引は、コール中に更新されます。ただし、操作を実行する前にLOBをオープンした場合は、トランザクションのコミットを実行する前にクローズする必要があります。内部LOBがクローズされるときに、LOB列のファンクション索引およびドメイン索引が更新されます。

- オープン/クローズAPI内のLOB操作をラップしなかった場合、ファンクション索引およびドメイン索引はLOBへ書き込むたびに更新されます。これにより、パフォーマンスに悪影響を及ぼす可能性があります。したがって、LOBへの書込み操作をOPENまたはCLOSE文の中に囲むことをお薦めします。

- WRITEAPPENDは、LOBに追加する前に、必要に応じてLOBを取得します。

関連項目:

- 「APPENDプロシージャ」

- 「COPYプロシージャ」

- 「WRITEプロシージャ」

- このプロシージャの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

89 DBMS_LOCK

DBMS_LOCKパッケージは、Oracle Lock Managementサービスへのインタフェースを提供します。特定モードのロックを要求したり、同一または別のインスタンスにある別のプロシージャ内で識別できる一意の名前をロックに付けたり、ロック・モードの変更およびロックの解放を行うことができます。

関連項目:
DBMS_LOCKパッケージの情報および使用例の詳細は、『Oracle Database開発ガイド』のユーザー・ロックに関する項を参照してください。

この章では、次の項目について説明します。

- DBMS_LOCKの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ルールおよび制限

- 使用上の注意

- DBMS_LOCKサブプログラムの要約

DBMS_LOCKの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ルールおよび制限

- 使用上の注意

概要

ユーザー・ロックを使用して、次のことができます。

- 端末などのデバイスに排他的アクセスを提供します。

- アプリケーションレベルの読込みロックを施行します。

- ロックの解放時期およびアプリケーション終了後のクリーンアップを検出します。

- アプリケーションを同期化し、順次処理を施行します。

セキュリティ・モデル

使用可能なロックの合計最大数について、オペレーティング・システム固有の制限がある場合があります。これは、ロックの使用時またはこのパッケージを他のユーザーに対して使用可能にするときに考慮する必要があります。特定のユーザーまたはロールに対してのみEXECUTE権限の付与を検討してください。

使用するロック数を制限するカバー・パッケージを作成してから特定のユーザーにEXECUTE権限を付与することをお薦めします。カバー・パッケージの例は、DBMS_LOCK.SQLパッケージ仕様部ファイルに記載されています。カッコ内の略称は、Oracle Enterprise Manager Monitorに表示されるときのロックの略称です。

定数

DBMS_LOCKパッケージでは、表89-1に示す定数が使用されます。

表89-1 DBMS_LOCKの定数

名前

代替名

タイプ

値

OEMでの略称

説明

NL_MODE

NuL1

INTEGER

1

-

-

SS_MODE

半共有

INTEGER

2

ULRS

これを集計オブジェクトで使用して、共有ロックがオブジェクトのサブパーツに対して作動中であることを示すことができます。

SX_MODE

- 半排他

- 行排他モード

INTEGER

3

ULRX

これを集計オブジェクトで使用して、排他ロックがオブジェクトのサブパーツに対して作動中であることを示すことができます。

S_MODE

- 共有

- 行排他モード

- 意図的排他

INTEGER

4

ULRSX

-

SSX_MODE

- 共有半排他

- 行排他モードの共有

INTEGER

5

-

これは、集計オブジェクト全体で共有ロックを使用している一方、一部のサブパーツではさらに排他ロックを使用している可能性があることを示します。

X_MODE

排他

INTEGER

6

ULX

-

いくつかのロック・モードがあります(Nl→「NULl」、SS→「半共有(Sub Shared)」、SX→「半排他(Sub eXclusive)」、S→「共有(Shared)」、SSX→「共有半排他(Shared Sub eXclusive)」、X→「排他(eXclusive)」)。

ルールおよび制限

別のプロセスが保持状態のときに、取得を試みると次のようになります。

表89-2 ロックの互換性

保持モード

NLの取得

SSの取得

SXの取得

Sの取得

SSXの取得

Xの取得

NL

成功

成功

成功

成功

成功

成功

SS

成功

成功

成功

成功

成功

失敗

SX

成功

成功

成功

失敗

失敗

失敗

S

成功

成功

失敗

成功

失敗

失敗

SSX

成功

成功

失敗

失敗

失敗

失敗

X

成功

失敗

失敗

失敗

失敗

失敗

maxwait  constant integer := 32767;

定数maxwaitは、無期限に待機します。

使用上の注意

ユーザー・ロックは接頭辞「UL」で識別されるため、Oracleロックと競合することはありません。これらのロックは、Enterprise Managerのロック・モニター画面または適切な固定ビューを使用して表示できます。ユーザー・ロックは、セッションの終了時に自動的に解除されます。ロック識別子は、0から1073741823の番号です。

確保されているユーザー・ロックは、Oracleロックと同一であるため、デッドロック検出などのOracleロックの機能をすべて備えています。分散トランザクションで使用されるユーザー・ロックがCOMMIT時に解除されることを確認し、解除されない場合は、デッドロックが検出されない可能性があります。

DBMS_LOCKは、セッション当たりのロック数を200から300に制限すると、最も効率的です。プロシージャ間で同一のロックを使用して競合が発生しないように、ロックの使用について標準規則を作成することをお薦めします。たとえば、ロック名の一部に会社名を含める方法があります。

DBMS_LOCKサブプログラムの要約

表89-3 DBMS_LOCKパッケージのサブプログラム

サブプログラム

説明

ALLOCATE_UNIQUEプロシージャ

名前付きロックに一意のロックIDを割り当てます。

CONVERTファンクション

ロックのモードを別のモードに変換します。

RELEASEファンクション

ロックを解放します。

REQUESTファンクション

特定のモードのロックを要求します。

SLEEPプロシージャ

セッションを指定時間だけスリープさせます。

ALLOCATE_UNIQUEプロシージャ

このプロシージャは、一意のロック識別子(1073741824から1999999999の範囲内)を指定のロック名に割り当てます。アプリケーションは、ロック識別子を使用してロックの使用方法を調整できます。これは、アプリケーションでロックの使用方法を調整するには、ロック番号よりロック名に基づいた方が容易になるためです。

構文

DBMS_LOCK.ALLOCATE_UNIQUE (
lockname         IN  VARCHAR2,
lockhandle       OUT VARCHAR2,
expiration_secs  IN  INTEGER   DEFAULT 864000);

パラメータ

表89-4 ALLOCATE_UNIQUEプロシージャのパラメータ

パラメータ

説明

lockname

一意のIDを生成するロックの名前。

ORA$で始まるロック名は使用しないでください。これはオラクル社で提供する製品用に予約されています。

lockhandle

ALLOCATE_UNIQUEが生成したロックIDにハンドルを戻します。

このハンドルは、REQUEST、CONVERTおよびRELEASEへの次のコールで使用できます。

ハンドルは実際のロックIDのかわりに戻され、プログラミング・エラーにより不適切であるが有効なロックIDが作成されないようにします。これにより、このパッケージを使用するアプリケーション間の独立性が高まります。

LOCKHANDLEは、VARCHAR2(128)まで可能です。

ALLOCATE_UNIQUEが同じロック名で戻したロック・ハンドルを使用しているすべてのセッションは、同じロックを参照します。したがって、ロック・ハンドルを別のセッションに渡さないでください。

expiration_specs

指定のロックに最後のALLOCATE_UNIQUEを実行した後、DBMS_LOCK_ALLOCATED表からロックの削除を許可するまで待機する秒数。

デフォルトの待機期間は10日間です。この表からロックを削除しないでください。ALLOCATE_UNIQUEへの次のコールで、期限切れのロックを削除し、領域をリカバリできます。

使用上の注意

ロックを名前で識別する場合は、ALLOCATE_UNIQUEを使用して、名前付きロックに一意のロック識別番号を生成できます。

新規ロック名でALLOCATE_UNIQUEをコールする最初のセッションで、一意のロックIDが生成され、dbms_lock_allocated表に格納されます。次のコール(通常は他のセッションによる)では、前のセッションで生成されたロックIDが戻ります。

ロック名は、指定のロック名でALLOCATE_UNIQUEを最後にコールした後、少なくともexpiration_secs(デフォルトは10日間)の間は、戻されたロックIDに関連付けられています。この期間を経過すると、このロック名のdbms_lock_allocated表にある行は、領域リカバリのために削除される場合があります。ALLOCATE_UNIQUEはコミットを実行します。

注意:

Oracleでは、SQLを使用して指定の名前に関連付けられたロックを判断するため、名前付きユーザー・ロックを使用すると効率が悪くなる場合があります。

例外

ORA-20000, ORU-10003: カタログdbms_lock_allocatedではロック<lockname>を挿入することも検出することもできません。

CONVERTファンクション

このファンクションは、ロックを別のモードに変換します。CONVERTはオーバーロードされたファンクションで、ユーザー定義のロック識別子またはALLOCATE_UNIQUEプロシージャが戻すロック・ハンドルのいずれかを受け入れます。

構文

DBMS_LOCK.CONVERT(
id         IN INTEGER ||
lockhandle IN VARCHAR2,
lockmode   IN INTEGER,
timeout    IN NUMBER DEFAULT MAXWAIT)
RETURN INTEGER;

パラメータ

表89-5 CONVERTファンクションのパラメータ

パラメータ

説明

idまたはlockhandle

変更するロック・モードのユーザー割当てロック識別子(0から1073741823)またはALLOCATE_UNIQUEが戻すロック・ハンドル。

lockmode

指定のロックに割り当てる新規モード。

使用可能なモードおよび関連する整数の識別子は、「定数」を参照してください。

timeout

ロック・モードの変更を待つ秒数。

この時間内にロックを変換できない場合、コールは値1(timeout)を戻します。

戻り値

表89-6 CONVERTファンクションの戻り値

戻り値

説明

0

成功。

1

タイムアウト。

2

デッドロック。

3

パラメータ・エラー。

4

idまたはlockhandleが指定するロックを所有していません。

5

不正なロック・ハンドル。

RELEASEファンクション

このファンクションは、REQUESTファンクションを使用して前に取得したロックを明示的に解放します。ロックは、セッションの終了時に自動的に解放されます。RELEASEはオーバーロードされたファンクションで、ユーザー定義のロック識別子またはALLOCATE_UNIQUEプロシージャが戻すロック・ハンドルのいずれかを受け入れます。

構文

DBMS_LOCK.RELEASE (
id         IN INTEGER)
RETURN INTEGER;

DBMS_LOCK.RELEASE (
lockhandle IN VARCHAR2)
RETURN INTEGER;

パラメータ

表89-7 RELEASEファンクションのパラメータ

パラメータ

説明

idまたはlockhandle

変更するロック・モードのユーザー割当てロック識別子(0から1073741823)またはALLOCATE_UNIQUEが戻すロック・ハンドル。

戻り値

表89-8 RELEASEファンクションの戻り値

戻り値

説明

0

成功。

3

パラメータ・エラー。

4

idまたはlockhandleが指定するロックを所有していません。

5

不正なロック・ハンドル。

REQUESTファンクション

このファンクションは、指定のモードのロックを要求します。REQUESTはオーバーロードされたファンクションで、ユーザー定義のロック識別子またはALLOCATE_UNIQUEプロシージャが戻すロック・ハンドルのいずれかを受け入れます。

構文

DBMS_LOCK.REQUEST(
id                 IN  INTEGER ||
lockhandle         IN  VARCHAR2,
lockmode           IN  INTEGER DEFAULT X_MODE,
timeout            IN  INTEGER DEFAULT MAXWAIT,
release_on_commit  IN  BOOLEAN DEFAULT FALSE)
RETURN INTEGER;

X_MODEやMAXWAITなどの現行のデフォルト値は、DBMS_LOCKパッケージ仕様部で定義されています。

パラメータ

表89-9 REQUESTファンクションのパラメータ

パラメータ

説明

idまたはlockhandle

変更するロック・モードのユーザー割当てロック識別子(0から1073741823)またはALLOCATE_UNIQUEが戻すロック・ハンドル。

lockmode

要求するロックのモード。

使用可能なモードおよび関連する整数の識別子は、「定数」を参照してください。

timeout

ロックの付与を待つ秒数。

この時間内にロックが付与できない場合、コールは値1(timeout)を戻します。

release_on_commit

このパラメータをTRUEに設定すると、ロックをコミットまたはロールバック時に解放します。

そうでない場合は、ロックが明示的に解放されるかセッションが終了するまで、ロックは解放されません。

戻り値

表89-10 REQUESTファンクションの戻り値

戻り値

説明

0

成功。

1

タイムアウト。

2

デッドロック。

3

パラメータ・エラー。

4

idまたはlockhandleで指定されたロックをすでに所有しています。

5

不正なロック・ハンドル。

SLEEPプロシージャ

このプロシージャは、指定時間だけセッションを中断します。

構文

DBMS_LOCK.SLEEP (
seconds  IN NUMBER);

パラメータ

表89-11 SLEEPプロシージャのパラメータ

パラメータ

説明

seconds

セッションを中断する時間(秒)。

入力できる最小増分値は100分の1秒です。たとえば、1.95は有効な時間値です。

90 DBMS_LOGMNR

LogMinerパッケージの1つであるDBMS_LOGMNRパッケージには、LogMinerツールを初期化し、LogMinerセッションを開始および終了するために使用するサブプログラムが格納されています。

関連項目:
LogMinerの詳細は、『Oracle Databaseユーティリティ』を参照してください。

この章では、次の項目について説明します。

- DBMS_LOGMNRの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_LOGMNRサブプログラムの要約

DBMS_LOGMNRの使用方法

この項では、DBMS_LOGMNRパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

概要

Oracle Databaseの一部であるOracle LogMinerを使用すると、SQLインタフェースを介してオンラインおよびアーカイブのREDOログ・ファイルを問い合せることができます。DBMS_LOGMNRパッケージは、LogMinerを開始および停止し、対象となるREDOログ・ファイルを指定するための大部分のツールを提供します。

ユーザー・データまたはデータベース・ディクショナリに対して行われたすべての変更は、データベースのリカバリ操作を実行できるように、Oracle REDOログ・ファイルに記録されます。REDOログ・ファイルに記録されたデータを使用して、次のタスクも実行できます。

- データベースに対する論理的な破損(アプリケーション・レベルでのエラーなど)が発生した時間の検出。

- トランザクション・レベルのファイングレイン・リカバリを実行するために必要なアクションの決定。

- 傾向分析によるチューニングおよび容量計画の実行。

- データベースで実行したすべてのデータ操作言語(DML)文およびデータ定義言語(DDL)文、これらを実行した順序、および実行したユーザーの追跡。

関連項目:
LogMinerディクショナリを抽出し、代替の表領域にLogMiner表を再作成するパッケージ・サブプログラムの詳細は、第91章「DBMS_LOGMNR_D」を参照してください。

セキュリティ・モデル

DBMS_LOGMNRパッケージを使用するには、EXECUTE_CATALOG_ROLEロールが必要です。

定数

DBMS_LOGMNRパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります(DBMS_LOGMNR.NEWなど)。

表90-1に、DBMS_LOGMNRパッケージのADD_LOGFILEオプション・フラグの定数を示します。

表90-1 ADD_LOGFILEオプション・フラグの定数

定数

説明

NEW

DBMS_LOGMNR.END_LOGMNRプロシージャを暗黙的にコールし、現在のLogMinerセッションを終了してから、新しいセッションを作成します。新しいセッションでは、指定されたREDOログ・ファイルから、分析対象の新しいREDOログ・ファイルのリストを開始します。

ADDFILE

指定のREDOログ・ファイルを分析対象のREDOログ・ファイルのリストに追加します。重複するファイルを追加しようとすると、例外(ORA-01289)が発生します。オプション・フラグを指定していない場合は、これがデフォルトです。

表90-2に、DBMS_LOGMNRパッケージのSTART_LOGMNRオプション・フラグの定数を示します。

表90-2 START_LOGMNRオプション・フラグの定数

定数

説明

COMMITTED_DATA_ONLY

このオプションを設定すると、コミットされたトランザクションに対応するDML文が戻されます。コミットされたトランザクションに対応するDML文は、グループ化されます。トランザクションは、コミットされた順序で戻されます。ロールバックまたは処理中のトランザクションは、内部REDOレコード(索引操作、管理などに関連するもの)であるため、除外されます。

このオプションを設定しない場合、すべてのトランザクション(コミット、ロールバック、処理中)の行がREDOログで見つかった順序(SCN値の順序)で戻されます。

SKIP_CORRUPTION

V$LOGMNR_CONTENTSビューでの選択操作で、分析中のREDOログ・ファイルの破損部分をスキップして処理を続行するように指示します。このオプションは、REDOログ・ファイルのブロック(REDOログ・ファイルのヘッダーは除く)が破損している場合にのみ機能します。V$LOGMNR_CONTENTSビューのINFO列をチェックして、LogMinerがスキップした破損ブロックを確認してください。REDOログ・ファイルの破損箇所をスキップすると、OPERATION列に値CORRUPTED_BLOCKSが格納され、STATUS列に値1343が格納されます。

DDL_DICT_TRACKING

使用中のLogMinerディクショナリがフラット・ファイルであるか、REDOログに格納されている場合、LogMinerは、DDLイベントが発生すると内部ディクショナリを更新します。これにより、LogMinerの内部ディクショナリが作成された後に変更されたオブジェクトに対し、SQL_REDOおよびSQL_UNDOの正しい情報が確実に保持されます。LogMinerが接続されるデータベースはオープンしている必要があります。

このオプションは、DICT_FROM_ONLINE_CATALOGオプションと一緒に使用できません。使用しているLogMinerディクショナリがOracle9i以前のフラット・ファイルに抽出されたものである場合も使用できません。

DICT_FROM_ONLINE_CATALOG

フラット・ファイルまたは分析対象のREDOログ・ファイルに含まれたLogMinerディクショナリではなく、現行のオンライン・データベース・ディクショナリを使用するようにLogMinerに指示します。

このオプションは、DDL_DICT_TRACKINGオプションと一緒に指定できません。LogMinerが接続されるデータベースは、REDOログ・ファイルを生成したデータベースと同じである必要があります。

データベースの表定義がREDOログ・ファイルの表定義と一致しない場合、V$LOGMNR_CONTENTSビューのSTATUS列の値が2になっていると考えられます。

DICT_FROM_REDO_LOGS

このオプションを設定すると、LogMinerは指定したREDOログ・ファイルにLogMinerディクショナリが見つかるものと予想します。REDOログ・ファイルは、DBMS_LOGMNR.ADD_LOGFILEプロシージャまたはDBMS_LOGMNR.START_LOGMNRプロシージャでCONTINUOUS_MINEオプションを使用して指定します。

NO_SQL_DELIMITER

このオプションを設定すると、再構築されたSQL文の終わりにSQLデリミタ(セミコロン)が付加されません。これは、カーソルをオープンしてから、再構築された文を実行するアプリケーションに役立ちます。

NO_ROWID_IN_STMT

このオプションを設定すると、再構築されたSQL文にROWID句が含まれません。サプリメンタル・ロギングが有効である場合、REDOログ・ファイルには、変更した行に対して、すでに論理的に一意の識別子が含まれていることがあります。

このオプションを使用する場合、ソース・データベースで、サプリメンタル・ロギングが適切なレベルで有効で、対象となる表に重複した行が存在しないことを確認する必要があります。LogMinerには論理行識別子の一意性に関する保証がありません。

PRINT_PRETTY_SQL

このオプションを設定すると、LogMinerは再構築されたSQL文を読み易いようにフォーマットします。これらの再構築されたSQL文は実行できません。

CONTINUOUS_MINE

対象となるデータを見つけるために、必要に応じて、REDOログ・ファイルを自動的に追加するように、LogMinerに指示します。LogMinerにログの調査を開始する場所を指示するには、調査を開始する最初のログか開始SCNまたは日付のみ指定してください。明示的にREDOログ・ファイルを指定する必要はありません。LogMinerは自動的に(アーカイブおよびオンライン) REDOログ・ファイルを追加し、対象となるデータを調査します。このオプションでは、REDOログ・ファイルを生成している同じデータベース・インスタンスにLogMinerを接続する必要があります。また、データベースがマウントされていて、アーカイブが使用可能である必要があります。

Oracle Database リリース10.1以降は、Oracle Real Application Clusters(Oracle RAC)環境でのCONTINUOUS_MINEオプションの使用がサポートされています。

STRING_LITERALS_IN_STMT

設定する場合、SQL_REDOおよびSQL_UNDOは、数値、日時および時間隔の列のタイプにリテラルを使用します。

複数のオプションを指定するには、オプション間にプラス記号(+)を使用します。次に例を示します。

EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => -
DBMS_LOGMNR.DDL_DICT_TRACKING + DBMS_LOGMNR.DICT_FROM_REDO_LOGS);

ビュー

DBMS_LOGMNRパッケージでは、『Oracle Databaseユーティリティ』のビューでのLogMiner操作情報へのアクセスに関する項でリストされたビューを使用します。

使用上の注意

LogMinerセッションは、DBMS_LOGMNR.ADD_LOGFILEまたはDBMS_LOGMNR.START_LOGMNR(前者はログ・ファイルを明示的に指定する場合、後者は調査を継続する場合)へのコールで開始します。セッションはDBMS_LOGMNR.END_LOGMNRへのコールで終了します。LogMinerセッション内で、分析対象のREDOログ・ファイル、対象となるSCNまたは時間範囲を指定し、V$LOGMNR_CONTENTSビューに対して、SQL SELECT文を発行して、関連するデータを取得できます。

DBMS_LOGMNRサブプログラムの要約

マルチテナント・コンテナ・データベース(CDB)では、一部のサブプログラムはルートからコールする必要があります。それ以外にも、違いがある可能性があります。詳細は、個々のサブプログラムの説明を参照してください。

表90-3 DBMS_LOGMNRパッケージのサブプログラム

サブプログラム

説明

ADD_LOGFILEプロシージャ

REDOログ・ファイルを既存または新規作成したLogMinerの処理対象のREDOログ・ファイルのリストに追加します。これによって、新しいリストの作成時に、LogMinerセッションの開始位置がマークされます。

COLUMN_PRESENTファンクション

このファンクションに対するcolumn_name入力パラメータによって指定された列のUNDOまたはREDO列値が存在するかどうかを判別するには、このファンクションをV$LOGMNR_CONTENTSビューから戻された行に対してコールします。

END_LOGMNRプロシージャ

LogMinerセッションを終了します。

MINE_VALUEファンクション

このファンクションに対するcolumn_name入力パラメータによって指定された列のUNDOまたはREDO列値を検索するには、このファンクションをV$LOGMNR_CONTENTSビューから戻された行に対してコールします。

REMOVE_LOGFILEプロシージャ

LogMinerの処理対象のREDOログ・ファイルのリストからREDOログ・ファイルを削除します。

START_LOGMNRプロシージャ

LogMinerユーティリティを初期化し、LogMinerを起動します(DBMS_LOGMNR.ADD_LOGFILEへのコールによって、セッションがすでに開始していない場合)。

ADD_LOGFILEプロシージャ

このプロシージャは、ファイルを既存または新規作成したLogMinerの処理対象のログ・ファイルのリストに追加します。

CDBでは、ADD_LOGFILEプロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING管理者権限が必要です。

構文

DBMS_LOGMNR.ADD_LOGFILE (
LogFileName     IN VARCHAR2,
options         IN BINARY_INTEGER default ADDFILE );

パラメータ

表90-4 ADD_LOGFILEプロシージャのパラメータ

パラメータ

説明

LogFileName

このセッションで分析対象のREDOログ・ファイルのリストに追加するREDOログ・ファイルの名前を指定します。

options

次のいずれかを実行します。

- 新しいLogMinerセッションと分析対象のREDOログ・ファイルの新しいリストを開始します(DBMS_LOGMNR.NEW)。

- 分析対象のREDOログ・ファイルの既存のリストにファイルを追加します(DBMS_LOGMNR.ADDFILE)。

詳細は、表90-1「ADD_LOGFILEオプション・フラグの定数」を参照してください。

例外

表90-5 ADD_LOGFILEプロシージャの例外

例外

説明

ORA-01284

指定したファイルをオープンできません。

ORA-01287

指定したファイルは別のデータベース・インカネーションのファイルです。

ORA-01289

指定したファイルはすでにリストに追加されています。REDOログ・ファイルは重複して追加できません。

ORA-01290

指定したファイルは現在のリストには存在しないため、そのリストからは削除できません。

ORA-01324

DB_IDが一致しないため、指定したファイルを追加できません。

使用上の注意

- V$LOGMNR_CONTENTSビューに問い合せる前に、(現在のLogMinerセッション内で)DBMS_LOGMNR.START_LOGMNRプロシージャのコールに成功する必要があります。

- CONTINUOUS_MINEオプションを指定しない場合、LogMinerセッションを分析するREDOログ・ファイルのリストで設定する必要があります。ADD_LOGFILEプロシージャを使用して、分析するREDOログ・ファイルのリストを指定してください。

- CONTINUOUS_MINEオプションを使用せずに、複数のREDOログ・ファイルを分析する場合、REDOログ・ファイルごとに個別にADD_LOGFILEプロシージャをコールする必要があります。REDOログ・ファイルを特定の順序で登録する必要はありません。

- アーカイブとオンラインの両方のREDOログ・ファイルを調査できます。

- 最初のREDOログ・ファイルをリストに追加したら、リストに追加した各REDOログ・ファイルを、最初のREDOログ・ファイルと同じデータベースおよびデータベースRESETLOGS SCNに関連付ける必要があります。(データベースRESETLOGS SCNはALTER DATABASE OPEN RESETLOGS文の各実行を一意に識別します。オンラインREDOログのリセット時に、Oracleはデータベースの新しい一意のインカネーションを作成します。)

- 現在のREDOログ・ファイルのリストが関連付けられているデータベースと異なるデータベース(またはデータベースRESETLOGS SCNが異なるデータベース・インカネーション)からのREDOログ・ファイルを分析するには、END_LOGMNRプロシージャを使用して、現在のLogMinerセッションを終了し、ADD_LOGFILEプロシージャを使用して、新しいリストを作成します。

- LogMinerはログ順序番号によってREDOログ・ファイルを照合します。そのため、名前は異なるがログ順序番号が同じ2つのREDOログ・ファイルがあると、ORA-01289例外が戻されます。たとえば、アーカイブREDOログ・ファイルの対応するオンラインREDOログ・ファイルは、アーカイブREDOログ・ファイルと名前は異なりますが、アーカイブREDOログ・ファイルの登録後に、オンラインREDOログ・ファイルをLogMinerに登録しようとすると、ORA-01289例外が返されます。

COLUMN_PRESENTファンクション

このファンクションは、MINE_VALUEファンクションと一緒に使用することになっています。

MINE_VALUEファンクションがNULL値を戻した場合は、次のいずれかの可能性があります。

- 指定した列が、データのREDOまたはUNDO部分に存在していません。

- 指定列は存在しますが、NULL値です。

この2つの場合を区別するには、COLUMN_PRESENTファンクションを使用しますが、データのREDOまたはUNDO部分に列が存在する場合は、1が戻されます。存在していない場合には、0が返されます。

構文

DBMS_LOGMNR.COLUMN_PRESENT (
sql_redo_undo      IN  RAW,
column_name        IN  VARCHAR2 default '') RETURN NUMBER;

パラメータ

表90-6 COLUMN_PRESENTファンクションのパラメータ

パラメータ

説明

sql_redo_undo

データ値を抽出するV$LOGMNR_CONTENTSビューのREDO_VALUE列またはUNDO_VALUE列のいずれかを指定します。詳細は、「使用上の注意」を参照してください。

column_name

このファンクションが情報を戻す対象となる列の完全修飾名(schema.table.column)を指定します。

CDBでは、列名は次のように指定します。

container_name:schema.table.column

戻り値

表90-7に、COLUMN_PRESENTファンクションの戻り値を示します。自己記述型のレコード(最初のパラメータ)が2番目のパラメータで指定した列を含んでいる場合、COLUMN_PRESENTファンクションは1を戻します。これは、DBMS_LOGMNR.MINE_VALUEファンクションによって戻されたNULL値の意味を判断する場合に使用できます。

表90-7 COLUMN_PRESENTファンクションの戻り値

戻り値

説明

0

指定された列がV$LOGMNR_CONTENTSのこの行にありません。

1

列がV$LOGMNR_CONTENTSのこの行にあります。

例外

表90-8 COLUMN_PRESENTファンクションの例外

例外

説明

ORA-01323

現在、LogMinerディクショナリはLogMinerセッションに関連付けられていません。LogMinerセッションのLogMinerディクショナリを指定する必要があります。

ORA-00904

column_nameパラメータに指定された値が、完全修飾列名ではありません。

使用上の注意

- COLUMN_PRESENTファンクションを使用するには、LogMinerが正常に開始されている必要があります。

- COLUMN_PRESENTファンクションは、V$LOGMNR_CONTENTSビューの選択操作のコンテキストで起動する必要があります。

- COLUMN_PRESENTファンクションは、LONG、LOB、ADTまたはCOLLECTIONデータ・タイプをサポートしていません。

- sql_redo_undoパラメータの値は、実行した操作および対象となるデータによって異なります。

- 更新操作を実行して、更新操作前の値を知る必要がある場合は、UNDO_VALUEを指定します。

- 更新操作を実行して、更新操作後の値を知る必要がある場合は、REDO_VALUEを指定します。

- 挿入操作を実行した場合は、一般にREDO_VALUEを指定します(挿入操作前の列の値は常にNULLであるため)。

- 削除操作を実行した場合は、一般にUNDO_VALUEを指定します(削除操作後の列の値は常にNULLであるため)。

END_LOGMNRプロシージャ

このプロシージャは、LogMinerセッションを終了します。このプロシージャは他の方法で実行できないクリーンアップ操作を実行するため、このプロシージャによりLogMinerセッションを適切に終了する必要があります。このプロシージャは、データベース・セッションからログアウトするか、DBMS_LOGMNR.ADD_LOGFILEをコールし、NEWオプションを指定した場合に自動的にコールされます。

構文

DBMS_LOGMNR.END_LOGMNR;

例外

表90-9 END_LOGMNRプロシージャの例外

例外

説明

ORA-01307

LogMinerセッションは現在アクティブではありません。ログ・ファイルを追加していないか、またはEND_LOGMNRプロシージャをコールする前に、START_LOGMNRプロシージャがコールされました。

MINE_VALUEファンクション

このファンクションは、列のデータ値に基づいた問合せを簡単にします。このファンクションでは2つの引数を指定します。最初の引数は、データのREDO(REDO_VALUE)部分を取り出すか、またはUNDO(UNDO_VALUE)部分を取り出すかを指定します。2番目の引数は、取り出す列の完全修飾名を指定する文字列です。MINE_VALUEファンクションは常に、元のデータ・タイプに再変換できる文字列を戻します。

構文

DBMS_LOGMNR.MINE_VALUE (
sql_redo_undo      IN  RAW,
column_name        IN  VARCHAR2 default '') RETURN VARCHAR2;

パラメータ

表90-10 MINE_VALUEファンクションのパラメータ

パラメータ

説明

sql_redo_undo

データ値を抽出するV$LOGMNR_CONTENTSビューのREDO_VALUE列またはUNDO_VALUE列のいずれかを指定します。詳細は、「使用上の注意」を参照してください。

column_name

このファンクションが情報を戻す対象となる列の完全修飾名(schema.table.column)を指定します。

CDBでは、列名は次のように指定します。

container_name:schema.table.column

戻り値

表90-11 MINE_VALUEファンクションの戻り値

戻り値

説明

NULL

列は自己記述型のレコードに含まれていないか、列値がNULLです。この2種類のNULLのいずれであるかを区別するには、DBMS_LOGMNR.COLUMN_PRESENTファンクションを使用します。

NULL以外

列は自己記述型のレコードに含まれています。値は文字列形式で戻されます。

例外

表90-12 MINE_VALUEファンクションの例外

例外

説明

ORA-01323

状態が無効です。現在、LogMinerディクショナリはLogMinerセッションに関連付けられていません。LogMinerセッションのLogMinerディクショナリを指定する必要があります。

ORA-00904

識別子が無効です。column_nameパラメータに指定された値が、完全修飾列名ではありませんでした。

使用上の注意

- MINE_VALUEファンクションを使用するには、LogMinerが正常に開始されている必要があります。

- MINE_VALUEファンクションは、V$LOGMNR_CONTENTSビューの選択操作のコンテキストで起動する必要があります。

- MINE_VALUEファンクションは、LONG、LOB、ADTまたはCOLLECTIONデータ・タイプをサポートしていません。

- sql_redo_undoパラメータの値は、実行した操作および対象となるデータによって異なります。

- 更新操作を実行して、更新操作前の値を知る必要がある場合は、UNDO_VALUEを指定します。

- 更新操作を実行して、更新操作後の値を知る必要がある場合は、REDO_VALUEを指定します。

- 挿入操作を実行した場合は、一般にREDO_VALUEを指定します(挿入操作前の列の値は常にNULLであるため)。

- 削除操作を実行した場合は、一般にUNDO_VALUEを指定します(削除操作後の列の値は常にNULLであるため)。

- DBMS_LOGMNR.MINE_VALUEファンクションを使用して、データベース・キャラクタ・セットにない文字を含むNCHAR値を取得した場合、このような文字はデータベース・キャラクタ・セットの置換文字(逆疑問符など)として戻されます。

REMOVE_LOGFILEプロシージャ

このプロシージャは、LogMinerが処理する既存のREDOログ・ファイルのリストからREDOログ・ファイルを削除します。

CDBでは、REMOVE_LOGFILEプロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING管理者権限が必要です。

構文

DBMS_LOGMNR.REMOVE_LOGFILE (
LogFileName     IN VARCHAR2);

パラメータ

表90-13 REMOVE_LOGFILEプロシージャのパラメータ

パラメータ

説明

LogFileName

このセッションで分析するREDOログ・ファイルのリストから削除するREDOログ・ファイルの名前を指定します。

例外

表90-14 REMOVE_LOGFILEプロシージャの例外

例外

説明

ORA-01290

リストにないログ・ファイルを削除できません。

使用上の注意

- V$LOGMNR_CONTENTSビューに問い合せる前に、(現在のLogMinerセッション内で)DBMS_LOGMNR.START_LOGMNRプロシージャのコールに成功する必要があります。

- このプロシージャを使用して、REDOログ・ファイルに、対象となるデータが含まれていないとわかっている場合、LogMinerが処理するREDOログ・ファイルのリストからREDOログ・ファイルを削除できます。

- このプロシージャを繰り返しコールすることで、複数のREDOログ・ファイルを削除できます。

- REDOログ・ファイルは特定の順序で削除する必要はありません。

- 分析対象のREDOログ・ファイルの新しいリストを開始するには、END_LOGMNRプロシージャを使用して、現在のLogMinerセッションを終了してから、ADD_LOGFILEプロシージャを使用して、新しいリストを作成します。

- リストからすべてのREDOログ・ファイルを削除する場合でも、後続のADD_LOGFILEプロシージャのコールでは、データベースIDと削除するREDOログ・ファイルのRESETLOGS SCNが一致している必要があります。そのため、現在のREDOログ・ファイルのリストが関連付けられているデータベースと異なるデータベース(またはデータベースRESETLOGS SCNが異なるデータベース・インカネーション)からのREDOログ・ファイルを分析するには、END_LOGMNRプロシージャを使用して、現在のLogMinerセッションを終了し、ADD_LOGFILEプロシージャを使用して、新しいリストを作成します。

START_LOGMNRプロシージャ

このプロシージャは、LogMinerが内部スキーマ・オブジェクト識別子を名前に変換するために使用するディクショナリをロードして、LogMinerを始動します。

CDBでは、START_LOGMNRプロシージャはルート・データベースからコールする必要があります。このプロシージャを使用するには、LOGMINING管理者権限が必要です。

構文

DBMS_LOGMNR.START_LOGMNR (
startScn           IN NUMBER default 0,
endScn             IN NUMBER default 0,
startTime          IN DATE default '01-jan-1988',
endTime            IN DATE default '31-dec-2110',
DictFileName       IN VARCHAR2 default '',
Options            IN BINARY_INTEGER default 0 );

パラメータ

表90-15 START_LOGMNRプロシージャのパラメータ

パラメータ

説明

startScn

指定したstartScn以上のSCNを持つREDOレコードのみを戻すようにLogMinerに指示します。指定したstartScn値を含むREDOログ・ファイルがない場合、このプロシージャは失敗します。(各REDOログ・ファイルに含まれるSCN値の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAME、LOW_SCNおよびNEXT_SCN列を問い合せることができます。)

endScn

指定したendScn以下のSCNを持つREDOレコードのみを戻すようにLogMinerに指示します。すべてのREDOログ・ファイルの値を超えるendScn値を指定すると、LogMinerは最も新しい変更を含むREDOログ・ファイルの最大のendScn値を使用します。(各REDOログ・ファイルに含まれるSCN値の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAME、LOW_SCNおよびNEXT_SCN列を問い合せることができます。)

startTime

指定したstartTime以上のタイムスタンプを持つREDOレコードのみを戻すようにLogMinerに指示します。指定したstartTime値を含むREDOログ・ファイルがない場合、このプロシージャは失敗します。(各REDOログ・ファイルの対象となる時間の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAME、LOW_TIMEおよびHIGH_TIME列を問い合せることができます。)

startScnが指定されている場合、このパラメータは無視されます。詳細は、「使用上の注意」を参照してください。

endTime

指定したendTime以下のタイムスタンプを持つREDOレコードのみを戻すようにLogMinerに指示します。すべてのREDOログ・ファイルの値を超えるendTime値を指定すると、LogMinerは最も新しい変更を含むREDOログ・ファイルの最大のendTime値を使用します。(各REDOログ・ファイルの対象となる時間の範囲を判別するには、V$LOGMNR_LOGSビューで各REDOログ・ファイルごとに、FILENAME、LOW_TIMEおよびHIGH_TIME列を問い合せることができます。)

endScnが指定されている場合、このパラメータは無視されます。詳細は、「使用上の注意」を参照してください。

DictFileName

LogMinerディクショナリを格納するフラット・ファイルを指定します。V$LOGMNR_CONTENTSのSQL_REDO列およびSQL_UNDO列の再構築、およびSEG_NAME、SEG_OWNER、SEG_TYPE_NAME、TABLE_NAMEおよびTABLE_SPACEの各列の変換にも使用されます。LogMinerディクショナリ・ファイルの完全修飾パス名は指定する必要があります。(このファイルはDBMS_LOGMNR_D.BUILDプロシージャによってすでに作成されている必要があります。)

DICT_FROM_REDO_LOGSまたはDICT_FROM_ONLINE_CATALOGのいずれも指定していない場合のみ、このパラメータを指定する必要があります。

options

詳細は、表90-2「START_LOGMNRオプション・フラグの定数」を参照してください。

例外

表90-16 START_LOGMNRプロシージャの例外

例外

説明

ORA-01280

内部エラーが発生しました。

ORA-01281

startScnまたはendScnパラメータの値が有効なSCNではないか、endScnがstartScnより小さくなっています。

ORA-01282

startTimeパラメータの値がendTimeパラメータに指定された値より大きいか、startTimeおよびendTimeパラメータで指定された日付範囲と互換性のあるREDOログ・ファイルがありません。

ORA-01283

指定したオプションは無効です。

ORA-01284

DictFileNameパラメータに指定されたLogMinerディクショナリ・ファイルの完全パス長が256文字より長く、ファイルをオープンできません。

ORA-01285

指定したファイルの読取り中にエラーが発生しました。

ORA-01291

ユーザーが要求したSCNまたは時間範囲を満たすために必要なREDOログ・ファイルがありません。

ORA-01292

現行のLogMinerセッションにログ・ファイルが指定されていません。

ORA-01293

指定したLogMinerオプションには、マウントされたデータベースが必要です。

ORA-01294

指定したディクショナリ・ファイルで情報を処理中にエラーが発生しました。破損の可能性があります。

ORA-01295

指定したLogMinerディクショナリが、分析対象のログ・ファイルを生成したデータベースに対応していません。

ORA-01296

指定したLogMinerディクショナリとログ・ファイルでキャラクタ・セットが一致しません。

ORA-01297

LogMinerディクショナリとログ・ファイルでREDOバージョンが一致しません。

ORA-01299

指定したLogMinerディクショナリは別のデータベース・インカネーションに対応しています。

ORA-01300

指定したLogMinerオプションには、書込み可能なデータベースが必要です。

使用上の注意

- LogMinerでは、以前にREDOログ・ファイルまたはフラット・ファイルに抽出されたディクショナリを使用でき、または、LogMinerがソース・システムからデータを調査している場合、LogMinerにオンライン・カタログを使用するように指定できます。LogMinerディクショナリの詳細は、『Oracle Databaseユーティリティ』およびこのマニュアルの第91章「DBMS_LOGMNR_D」を参照してください。

- START_LOGMNRプロシージャを実行すると、次のビューに問い合せできるようになります。

- V$LOGMNR_CONTENTS - REDOログ・ファイルの情報の履歴を含みます。

- V$LOGMNR_DICTIONARY - フラット・ファイルに抽出されたLogMinerディクショナリ・ファイルに関する現在の情報を含みます。

- V$LOGMNR_PARAMETERS - LogMinerセッションに関する情報を含みます。

(LogMinerが調査するファイルのリストにREDOログ・ファイル・リストを追加すると、V$LOGMNR_LOGSビューに問い合せできるようになります。)

- パラメータとオプションはDBMS_LOGMNR.START_LOGMNRのコール間で維持されません。DBMS_LOGMNR.START_LOGMNRをコールするたびに、目的のすべてのパラメータとオプション(SCNおよび時間範囲を含む)を指定する必要があります。

- タイムスタンプを使用すると、REDOログ・ファイルを正確に指定できないので注意してください。

- CONTINUOUS_MINEオプションは、対象となるデータを見つけるために、必要に応じて、REDOログ・ファイルを自動的に追加するように、LogMinerに指示します。LogMinerにログの調査を開始する場所を指示するには、調査を開始する最初のログか開始SCNまたは日付のみ指定してください。CONTINUOUS_MINEオプションを使用する場合は、次のことに注意してください。

- データベース・コントロール・ファイルは、エントリ数が著しく多くなる可能性がある場合でも、限定された数のアーカイブREDOログ・ファイルに関する情報を保持します。V$ARCHIVED_LOGSビューに問い合せて、LogMinerによって見つけられるREDOログ・ファイル・エントリを判別できます。
エントリがデータベース・コントロール・ファイル(およびV$ARCHIVED_LOGSビュー)にリストされていても、様々な理由でLogMinerによってアーカイブREDOログ・ファイルにアクセスできない場合があります。たとえば、アーカイブREDOログ・ファイルが削除された、その場所から移動された(テープへのバックアップ処理などのため)、またはファイルが存在するディレクトリを使用できないなどの場合があります。

- CONTINUOUS_MINEオプションおよび終了時間または将来発生するSCNを指定した場合(または終了時間やSCNを指定しない場合)、V$LOGMNR_CONTENTSビューの問合せは、指定した時間やSCNを超えてREDOログ・ファイルが生成されるまで終了しません。この例では、LogMinerによって、生成されたLogMiner REDOログ・ファイル・リストにアーカイブREDOログ・ファイルが自動的に追加されます。さらに、この例にかぎり、処理されるREDOファイルを50個に維持するため、LogMinerによってリストからREDOログ・ファイルが自動的に削除されます。これによって、LogMinerが自動的にREDOログ・ファイルをリストに追加する際にPGAメモリーを節約します。LogMinerが自動削除を実行しないと、最終的にメモリーが使い果たされてしまう恐れがあります。

- LogMinerではオンラインREDOログを調査できます。ただし、CONTINUOUS_MINEオプションを指定しないと、LogMinerがオンラインREDOログ・ファイルを読み取っている最中にデータベースがオンラインREDOログ・ファイルに書込みを行う可能性があります。LogMinerがオンラインREDOログ・ファイルを読み取っている間にログの切替えが行われると、LogMinerが読み取ろうとしているログがデータベースによって上書きされます。LogMinerが読み取ろうとしているファイルがデータベースによって上書きされた場合に、LogMinerから戻されるデータは予測できません。

- 開始時間および終了時間、またはSCNの範囲に関して次のことに注意してください。

- startTimeパラメータ、startScnパラメータのいずれも指定しない場合、LogMinerは、startScnパラメータが最も古い変更を含むREDOログ・ファイルの最小のSCN値を使用するように設定します。

- 時間とSCN値の両方を指定した場合、LogMinerではSCN値が使用され、時間値は無視されます。

- 開始時間および終了時間、またはSCN値を指定して、それらがLogMiner REDOログ・ファイル・リストに見つかった場合、LogMinerではそれらの値によって指示されたログが調査されます。

- LogMiner REDOログ・ファイル・リストに存在しない開始時間および終了時間、またはSCN値を指定して、CONTINUOUS_MINEオプションを指定せずにDBMS_LOGMNR.START_LOGMNRを指定し、さらに、

- startTimeまたはstartScn値に0を指定した場合、startScnとして、LogMiner REDOログ・ファイル・リストの最小のSCNが使用されます。

- startTimeまたはstartScn値が0(ゼロ)以外の場合、エラーが戻されます。

- endTimeまたはendScn値に0(ゼロ)または0(ゼロ)以外の数を指定した場合、endScnとして、LogMiner REDOログ・ファイル・リストの最大のSCNが使用されます。

- 指定した開始時間および終了時間またはSCN値がLogMiner REDOログ・ファイル・リストに見つからず、CONTINUOUS_MINEオプションを指定したDBMS_LOGMNR.START_LOGMNRを指定して、さらに、

- startTimeまたはstartScn値に0(ゼロ)を指定した場合、エラーが戻されます。

- startTimeまたはstartScn値がデータベースのアーカイブREDOログ・ファイルの値より大きい場合、LogMinerはオンラインREDOログ・ファイルの調査を開始します。LogMinerはV$LOGMNR_CONTENTSビューから複数の行を戻す前に、要求された開始ポイント以降の変更を見つけるまで、オンラインREDOログ・ファイルの処理を続行します。

- endTimeまたはendScnパラメータの値が将来の時間やSCNを示す場合、LogMinerは調査の際にオンラインREDOログ・ファイルも対象にします。V$LOGMNR_CONTENTSビューに問い合せると、データベースが変更されたときに、このビューから複数の行が戻され、LogMinerが、要求された終了ポイントを超える位置での変更と確認するまで停止しません。

- endTimeまたはendScnパラメータの値が0(ゼロ)場合、調査の際にオンラインREDOログ・ファイルも対象にします。V$LOGMNR_CONTENTSビューに問い合せると、データベースが変更されたときに、このビューから複数の行が戻され、CTL+Cを押すかPL/SQLカーソルを終了するまで停止しません。

91 DBMS_LOGMNR_D

LogMinerパッケージの1つであるDBMS_LOGMNR_Dパッケージには、次の2つのサブプログラムが含まれています。

- BUILDプロシージャは、REDOログ・ファイルまたはフラット・ファイルのいずれかにLogMinerデータ・ディクショナリを抽出します。この情報は、将来的にLogMinerツールを使用してREDOログ・ファイルを分析する場合に備えて保存されます。

- SET_TABLESPACEプロシージャは、すべてのLogMiner表を代替の表領域に再作成します。
LogMinerデータ・ディクショナリは、メモリー・データ構造およびデータベース表から構成され、これらは、オブジェクトおよびそれらのバージョンに関する情報を格納して取り出すために使用されます。これは、LogMinerのドキュメント全体でLogMinerディクショナリと呼ばれています。

関連項目:
LogMinerの詳細は、『Oracle Databaseユーティリティ』を参照してください。

この章では、次の項目について説明します。

- DBMS_LOGMNR_Dの使用方法

- 概要

- セキュリティ・モデル

- DBMS_LOGMNR_Dサブプログラムの要約

DBMS_LOGMNR_Dの使用方法

この項では、DBMS_LOGMNR_Dパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

LogMinerには、REDOデータを戻す際にオブジェクトIDをオブジェクト名に変換するためのディクショナリが必要です。LogMinerには、ディクショナリの取得に関して次の3つのオプションがあります。

- オンライン・カタログの使用

- REDOログ・ファイルへのLogMinerディクショナリの抽出

- フラット・ファイルへのLogMinerディクショナリの抽出

REDOログ・ファイルまたはフラット・ファイルのいずれかにLogMinerディクショナリを抽出するには、BUILDプロシージャを使用します。オンライン・カタログをディクショナリのソースとして指定する場合は、LogMinerの起動時にDBMS_LOGMNR.START_LOGMNRパッケージを使用してそのように指定します。

デフォルトのSYSAUX表領域以外の表領域をLogMiner表で使用する場合は、SET_TABLESPACEプロシージャを使用します。

関連項目:
LogMinerセッションの実行に使用するパッケージ・サブプログラムについては、「DBMS_LOGMNR」を参照してください。

セキュリティ・モデル

DBMS_LOGMNR_Dパッケージを使用するには、EXECUTE_CATALOG_ROLEロールが必要です。

DBMS_LOGMNR_Dサブプログラムの要約

マルチテナント・コンテナ・データベース(CDB)では、一部のサブプログラムはルートからコールする必要があります。それ以外にも、違いがある可能性があります。詳細は、個々のサブプログラムの説明を参照してください。

表91-1 DBMS_LOGMNR_Dパッケージのサブプログラム

サブプログラム

説明

BUILDプロシージャ

LogMinerディクショナリをフラット・ファイルまたは1つ以上のREDOログ・ファイルに抽出します。

SET_TABLESPACEプロシージャ

すべてのLogMiner表を代替の表領域に再作成します。

BUILDプロシージャ

このプロシージャは、REDOログ・ファイルまたはフラット・ファイルのいずれかにLogMinerデータ・ディクショナリを抽出します。

CDBでは、BUILDプロシージャはルート・データベースからコールする必要があります。CDB全体のLogMinerデータ・ディクショナリは、REDOログ・ファイルまたはフラット・ファイルのいずれかに抽出されます。

このプロシージャの実行中は、CDBにプラガブル・データベース(PDB)を追加したり、CDBからプラガブル・データベース(PDB)を削除することはできません。

構文

DBMS_LOGMNR_D.BUILD (
dictionary_filename  IN  VARCHAR2,
dictionary_location  IN  VARCHAR2,
options              IN  NUMBER);

パラメータ

表91-2 BUILDプロシージャのパラメータ

パラメータ

説明

dictionary_filename

LogMinerディクショナリ・ファイルの名前を指定します。

dictionary_location

LogMinerディクショナリ・ファイル・ディレクトリのパスを指定します。

options

フラット・ファイル(STORE_IN_FLAT_FILE)またはREDOログ・ファイル(STORE_IN_REDO_LOGS)のいずれかにLogMinerディクショナリを書き込むように指定します。

例外

表91-3 BUILDプロシージャの例外

例外

説明

ora-01302

ディクショナリ作成オプションが欠落しているか、または正しくありません。

このエラーは次の状況で戻されます。

- OPTIONSパラメータの値がサポートされる値(STORE_IN_REDO_LOGS、STORE_IN_FLAT_FILE)のいずれかでないか、または指定されていない場合。

- STORE_IN_REDO_LOGSオプションが指定されておらず、dictionary_filenameパラメータもdictionary_locationパラメータも指定されていない場合。

- STORE_IN_REDO_LOGSオプションが指定されており、dictionary_filenameまたはdictionary_locationパラメータのいずれかが指定されている場合

ora-01308

初期化パラメータUTL_FILE_DIRが設定されていません。

ora-01336

指定されたディクショナリ・ファイルがオープンできません。

このエラーは次の状況で戻されます。

- dictionary_locationに指定された値が存在しない場合。

- UTL_FILE_DIR初期化パラメータにdictionary_locationへのアクセス権限が設定されていない場合。

- ディクショナリ・ファイルが読取り専用の場合。

使用上の注意

- フラット・ファイルにLogMinerディクショナリを抽出するには、ファイル名および場所を指定する必要があります。
REDOログ・ファイルにLogMinerディクショナリを抽出するには、STORE_IN_REDO_LOGSオプションのみを指定します。LogMinerディクショナリのサイズによっては、ディクショナリが複数のREDOログ・ファイルに格納される場合があります。

使用するパラメータの組合せにより次のような動作が発生します。

- いずれのパラメータも指定しない場合、エラーが戻されます。

- オプションを指定せずにファイル名および場所を指定した場合、LogMinerディクショナリはその名前でフラット・ファイルに抽出されます。

- ファイル名および場所を指定し、STORE_IN_FLAT_FILEオプションも指定した場合、LogMinerディクショナリは指定した名前でフラット・ファイルに抽出されます。

- ファイル名および場所を指定せず、STORE_IN_REDO_LOGSオプションを指定した場合、LogMinerディクショナリはREDOログ・ファイルに抽出されます。

- ファイル名および場所を指定してSTORE_IN_REDO_LOGSオプションを指定した場合は、エラーが戻されます。

- ファイル名および場所を指定せず、STORE_IN_FLAT_FILEオプションを指定した場合は、エラーが戻されます。

- 原則的には、LogMinerディクショナリ・ファイルは、すべてのデータベース・ディクショナリに対する変更を行った後、分析するREDOログ・ファイルを作成する前に作成されます。Oracle9i リリース1(9.0.1)では、LogMinerを使用してLogMinerディクショナリをREDOログ・ファイルまたはフラット・ファイルにダンプし、DDL操作を実行し、DDLの変更をLogMinerディクショナリに動的に適用できます。

- 進行中のDDL操作がある場合は、DBMS_LOGMNR_D.BUILDプロシージャを実行しないでください。

- DBMS_LOGMNR_D.BUILDプロシージャを実行する場合は、データベースがオープンされている必要があります。

- フラット・ファイルにLogMinerディクショナリを抽出する場合、プロシージャが現行のデータベースのディクショナリ表に問い合せ、表のコンテンツを含むテキストベースのファイルを作成します。LogMinerディクショナリをフラット・ファイルに抽出するには、次の条件を満たしている必要があります。

- PL/SQLプロシージャで使用するためのディレクトリを指定する必要があります。この処理を行うには、初期化パラメータ・ファイルに初期化パラメータUTL_FILE_DIRを設定します。次に例を示します。

UTL_FILE_DIR = /oracle/dictionary

パラメータを設定した後、このパラメータを有効にするには、データベースをシャットダウンして再起動する必要があります。このパラメータを設定しない場合、プロシージャは失敗します。

- 作成されたディクショナリを実行している間、DDL操作が発生しないようにする必要があります。こうしないと、LogMinerディクショナリ・ファイルにデータベース・ディクショナリの一貫したスナップショットを格納することができません。

DBMS_LOGMNR.START_LOGMNRプロシージャに対するDDL_DICT_TRACKINGオプションは、Oracle9i以前に作成されたフラット・ファイル・ディクショナリではサポートされないので注意してください。Oracle9i以前のフラット・ファイルに抽出されたLogMinerデータベースでDDL_DICT_TRACKINGオプションの使用を試みると、ORA-01330エラー(必須のビルド表のロードで問題が発生しました。)が戻されます。

- LogMinerディクショナリ・ファイルをREDOログ・ファイルに抽出するには、次の条件を満たしている必要があります。

- Oracle9i以降を実行しているシステム上でDBMS_LOGMNR_D.BUILDプロシージャが実行されている。

- 使用可能なREDOログ・ファイルを生成するために、アーカイブログ・モードが有効化されている。

- 初期化パラメータ・ファイルのCOMPATIBLEパラメータに9.2.0以上が設定されている。

- LogMinerが接続しているデータベースがOracle9i 以上である。

さらに、LogMinerが提供するすべての機能を利用できるようにするには、サプリメンタル・ロギング(最低レベル以上)を有効にする必要があります。LogMinerでのサプリメンタル・ロギングの使用方法については、『Oracle Databaseユーティリティ』を参照してください。

例

例1: フラット・ファイルへのLogMinerディクショナリの抽出

次の例では、指定したパス(/oracle/database)にあるdictionary.oraという名前のフラット・ファイルにLogMinerディクショナリ・ファイルを抽出します。

SQL> EXECUTE dbms_logmnr_d.build('dictionary.ora', -
'/oracle/database/', -
options => dbms_logmnr_d.store_in_flat_file);

例2: REDOログ・ファイルへのLogMinerディクショナリの抽出

次の例では、REDOログ・ファイルにLogMiner ディクショナリを抽出します。

SQL> EXECUTE dbms_logmnr_d.build( -
options => dbms_logmnr_d.store_in_redo_logs);

SET_TABLESPACEプロシージャ

デフォルトでは、すべてのLogMiner表は、SYSAUX表領域を使用するように作成されます。ただし、LogMiner表で代替の表領域を使用できるようにすることをお薦めします。このプロシージャを使用して、LogMiner表を代替の表領域に移動します。

CDBでは、ローカル・コンテナ内のLogMinerメタデータのみが、要求された表領域に移動します。

構文

DBMS_LOGMNR_D.SET_TABLESPACE (
new_tablespace        IN VARCHAR2);

パラメータ

表91-4 SET_TABLESPACEパラメータ

パラメータ

説明

new_tablespace

すでに存在している表領域を示す文字列。この表領域を使用するようにすべてのLogMiner表を移動する場合は、このパラメータを指定します。

使用上の注意

- 初期のバージョンのOracle Databaseからアップグレードした場合、SYSTEM表領域にLogMiner表が存在することがあります。初期のバージョンのOracle Databaseにダウングレードしないことが確実である場合は、SET_TABLESPACEプロシージャを使用して、表をSYSAUX表領域に移動することをお薦めします。

- このルーチンのユーザーは、既存の表領域を指定する必要があります。

関連項目:
表領域およびその作成方法については、『Oracle Database概要』および『Oracle Database SQL言語リファレンス』を参照してください。

例: DBMS_LOGMNR_D.SET_TABLESPACEプロシージャの使用方法

次の例では、代替表領域の作成およびDBMS_LOGMNR_D.SET_TABLESPACEプロシージャの実行を示します。

SQL> CREATE TABLESPACE  logmnrts$ datafile '/usr/oracle/dbs/logmnrts.f'
SIZE 25 M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

SQL> EXECUTE dbms_logmnr_d.set_tablespace('logmnrts$');

92 DBMS_LOGSTDBY

DBMS_LOGSTDBYパッケージは、ロジカル・スタンバイ・データベース環境を構成および管理するためのサブプログラムを提供します。

関連項目:
SQL適用およびロジカル・スタンバイ・データベースの詳細は、『Oracle Data Guard概要および管理』を参照してください。

この章では、次の項目について説明します。

- DBMS_LOGSTDBYの使用方法

- 概要

- セキュリティ・モデル

- 定数

- DBMS_LOGSTDBYサブプログラムの要約

DBMS_LOGSTDBYの使用方法

この項では、DBMS_LOGSTDBYパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

概要

DBMS_LOGSTDBYパッケージを使用して、SQL適用(ロジカル・スタンバイ・データベース)環境を管理できます。DBMS_LOGSTDBYパッケージのサブプログラムを使用すると、次の主な目的を実現できます。

- SQL適用で使用される構成パラメータの管理
たとえば、ロジカル・スタンバイ・データベースへのトランザクションの適用方法、使用する共有プールの大きさ、SQL適用での変更の調査および適用に使用するプロセスの数などを制御します。

- 適切なレベルのサプリメンタル・ロギングが有効になっていること、およびLogMinerディクショナリがロジカル・スタンバイ・データベースの作成に対して適切に構築されていることの確認

- ロジカル・スタンバイ・データベース内の選択した表またはスキーマ全体に対する変更の適用をスキップする方法の提供、およびSQL適用で発生する例外の処理方法の指定

- メンテナンスが必要なロジカル・スタンバイ・データベース内の表へのアクセス制御

セキュリティ・モデル

DBMS_LOGSTDBYパッケージを使用するには、DBAロールが必要です。

プロトタイプのロールLOGSTDBY_ADMINISTRATORは、デフォルトではDBMS_LOGSTDBYに対するRESOURCE権限およびEXECUTE権限を伴って作成されます。このロールを使用する場合は、ロールを付与されたユーザーがSQL適用の開始と停止、およびデータベース・ガードの有効化と無効化を制御できるように、このロールに対してALTER DATABASE権限およびALTER SESSION権限を付与することを検討してください。

トランザクションのスキップに関連するプロシージャ(SKIPとUNSKIP、SKIP_ERRORとUNSKIP_ERROR、SKIP_TRANSACTIONとUNSKIP_TRANSACTION)を実行するには、それらのプロシージャのスコープにワイルドカード・スキーマが含まれている場合があるため、それらのすべてでDBA権限が必要です。SKIPプロシージャを指定する場合は、それらのプロシージャが動作するスキーマに対して適切な権限を持つ安全なアカウント(SYSなど)によってそれらのプロシージャが所有されるようにすることをお薦めします。

EDSベースのレプリケーションに関連するプロシージャでは、DBMS_LOGSTDBYパッケージに対するEXECUTE権限が必要です。また、ターゲット・スキーマのシャドウ表を作成(および削除)するために、CREATE TABLEシステム権限とDROP TABLEシステム権限も必要です。マテリアライズド・ビューが使用されている場合は、CREATE MATERIALIZED VIEWシステム権限とDROP ANY MATERIALIZED VIEWシステム権限も必要です。

定数

DBMS_LOGSTDBYパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります(DBMS_LOGSTDBY.SKIP_ACTION_SKIPなど)。

表92-1では、DBMS_LOGSTDBY.SKIPプロシージャ内のproc_nameパラメータの定数について説明します。

表92-1 SKIPオプション・フラグの定数

定数

説明

MAX_EVENTS

DBA_LOGSTDBY_EVENTSビューで記録するイベントの最大数。DBMS_LOGSTDBYのAPPLY_SETプロシージャを参照してください。

SKIP_ACTION_APPLY

DBMS_LOGSTDBY.SKIPに登録されたユーザー定義プロシージャ内で使用されます。SQL適用でDDLまたはPL/SQL文の適用が必要な場合に、DBMS_LOGSTDBY_CONTEXTを使用してSKIP_ACTIONパラメータの値を設定するときはこの定数を使用します。

SKIP_ACTION_ERROR

DBMS_LOGSTDBY.SKIPに登録されたユーザー定義プロシージャ内で使用されます。SQL適用でエラー出力が必要な場合に、DBMS_LOGSTDBY_CONTEXTを使用してSKIP_ACTIONパラメータの値を設定するときはこの定数を使用します。

SKIP_ACTION_REPLACE

DBMS_LOGSTDBY.SKIPに登録されたユーザー定義プロシージャ内で使用されます。SQL適用で置換DDLの適用が必要な場合に、DBMS_LOGSTDBY_CONTEXTを使用してSKIP_ACTIONパラメータの値を設定するときはこの定数を使用します。(この定数は、オラクル社が提供するPL/SQLプロシージャ・コールの処理中に使用する必要はありません。)

SKIP_ACTION_SKIP

DBMS_LOGSTDBY.SKIPに登録されたユーザー定義プロシージャ内で使用されます。関連付けられたDDLまたはオラクル社が提供するPL/SQLプロシージャ・コールの省略がSQL適用で必要な場合に、DBMS_LOGSTDBY_CONTEXTを使用してSKIP_ACTIONパラメータの値を設定するときはこの定数を使用します。

DBMS_LOGSTDBYサブプログラムの要約

マルチテナント・コンテナ・データベース(CDB)では、一部のサブプログラムはルートからコールする必要があります。それ以外にも、違いがある可能性があります。詳細は、個々のサブプログラムの説明を参照してください。

表92-2 DBMS_LOGSTDBYパッケージのサブプログラム

サブプログラム

説明

APPLY_SETプロシージャ

SQL適用を構成およびメンテナンスする様々なパラメータの値を設定します。

APPLY_UNSETプロシージャ

SQL適用を構成およびメンテナンスする様々なパラメータの値をデフォルトに戻します。

BUILDプロシージャ

サプリメンタル・ロギングが正しく有効化されていることを確認し、LogMinerディクショナリを作成します。

EDS_ADD_TABLE

表のEDSベースのレプリケーションを追加します。これは、プライマリ・データベース、スタンバイ・データベースの順に起動される必要があります。

EDS_EVOLVE_AUTOMATIC

EDS表の自動DDL処理を有効または無効にします。

EDS_EVOLVE_MANUAL

EDS表を手動で展開できます(つまり、EDSレプリケーションにおいて、元表に対するDDL操作に基づいた補足アクションを手動で実行できます)。

EDS_REMOVE_TABLE

指定した表のEDSベースのレプリケーションを削除します。シャドウ表やトリガーも削除されます。

INSTANTIATE_TABLEプロシージャ

プライマリ・データベース内の対応する表から、スタンバイ・データベース内に表を作成し、データを移入します。

IS_APPLY_SERVERファンクション

このファンクションは、ロジカル・スタンバイ適用サーバー・プロセスのコンテキストでPL/SQLから実行された場合、TRUEを戻します。このファンクションは、DBMS_DDL.SET_TRIGGER_FIRING_PROPERTYサブプログラムのfire_onceパラメータがFALSEに設定されている(デフォルトはTRUE)トリガーと一緒に使用します。このようなトリガーは、適用プロセスによって関連ターゲットが更新されると実行されます。このファンクションは、トリガー本体内で使用して、トリガーがプライマリまたはスタンバイで異なるアクションを実行する(またはアクションを実行しない)ようにすることができます。

MAP_PRIMARY_SCNファンクション

プライマリ・データベースに関連するSCNをロジカル・スタンバイ・データベースの対応するSCNにマップします。マップされたSCNは本質的に保守的なため、マップされたSCNを使用すると、ロジカル・スタンバイ・データベースをフラッシュバックして、プライマリ・データベースで実行されるフラッシュバック・データベース操作を補足できます。

PREPARE_FOR_NEW_PRIMARYプロシージャ

フェイルオーバーの後で使用され、フェイルオーバー動作に関係しなかったローカルのロジカル・スタンバイ・データベースで新しいプライマリ・データベースより多くのREDOが処理されないようにし、一貫性を保証するために置換する必要があるアーカイブREDOログ・ファイル・セットをレポートします。

PURGE_SESSIONプロシージャ

ロジカル・スタンバイ・データベースに適用済で、SQL適用で不要になったアーカイブREDOログ・ファイルを識別します。

REBUILDプロシージャ

フェイルオーバー操作に伴ってプライマリ・データベースに役割が変更されたデータベースで、フェイルオーバー・プロセス中にその役割の変更を処理できない場合、関連するメタデータ(LogMinerディクショナリを含む)をREDOストリームに記録します。

SET_TABLESPACEプロシージャ

SQL適用で必要なメタデータ表を、ユーザー指定の表領域に移動します。デフォルトでは、メタデータ表は、SYSAUX表領域内に作成されます。

SKIPプロシージャ

ロジカル・スタンバイ・データベースに適用しないデータベース操作を制御するルールを指定します。

SKIP_ERRORプロシージャ

エラー発生時に実行するアクションに関するルールを指定します。

SKIP_TRANSACTIONプロシージャ

ロジカル・スタンバイ・データベースに適用しないトランザクションを指定します。特定のトランザクションを適用しないことによって、ロジカル・スタンバイ・データベースのデータが破損する場合があるため、このプロシージャは注意して使用してください。

UNSKIPプロシージャ

SKIPプロシージャによって指定されたルールを削除します。

UNSKIP_ERRORプロシージャ

SKIP_ERRORプロシージャによって指定されたルールを削除します。

UNSKIP_TRANSACTIONプロシージャ

SKIP_TRANSACTIONプロシージャによって指定されたルールを削除します。

APPLY_SETプロシージャ

このプロシージャを使用して、ロジカル・スタンバイ・データベース環境でSQL適用を構成および管理するパラメータの値を設定します。PRESERVE_COMMIT_ORDERを除くすべてのパラメータは、SQL適用を停止しなくても変更できます。

CDBでは、APPLY_SETプロシージャはルート・データベースからコールする必要があります。

構文

DBMS_LOGSTDBY.APPLY_SET (
inname             IN VARCHAR,
value              IN VARCHAR);

パラメータ

表92-3 APPLY_SETプロシージャのパラメータ

パラメータ

説明

APPLY_SERVERS

変更の適用に使用するAPPLIERプロセスの数を制御します。最大値は1024です(MAX_SERVERSパラメータに、対応できる値が設定されている場合)。

EVENT_LOG_DEST

関連イベントの発生をSQL適用が記録する場所を制御します。値は次のいずれかとなります。

- DEST_ALL: すべてのイベントがDBA_LOGSTDBY_EVENTSビューおよびアラート・ログに記録されます。

- DEST_EVENTS_TABLE: ユーザー・データに関する情報を含むすべてのイベントが、DBA_LOGSTDBY_EVENTSビューにのみ記録されます。これがデフォルト値です。

たとえば、SQL適用がORA-1403エラーを取得すると、そのイベント全体がDBA_LOGSTDBY_EVENTSビューに記録されます。一方、アラート・ログには、SQL適用の停止原因がORA-1403であることのみが記録されます。ユーザー表または問題となる文に関する情報は、アラート・ログに記録されません。ただし、SQL適用エンジンを停止すると、これらの情報がDBA_LOGSTDBY_EVENTSビューとアラート・ログの両方に記録されます。

このパラメータは、RECORD_APPLIED_DDL、RECORD_SKIP_DDL、RECORD_SKIP_ERRORSおよびRECORD_UNSUPPORTED_OPERATIONSパラメータの動作に影響します。たとえば、RECORD_APPLIED_DDLはTRUEに設定されているが、EVENT_LOG_DESTはDEST_EVENTS_TABLEに設定されている場合、適用されるDDL文字列は、DBA_LOGSTDBY_EVENTSビューのみに記録されます。

LOG_AUTO_DEL_RETENTION_TARGET

このパラメータ設定が意味を持つのは、LOG_AUTO_DELETEがTRUEに設定されている場合のみです。このパラメータ値は、ログに含まれるすべてのREDOレコードがロジカル・スタンバイ・データベースに適用された場合に、プライマリ・データベースから受信したリモート・アーカイブ・ログをロジカル・スタンバイ・データベースに保持する期間(分)を制御します。デフォルト値は1440分です。

LOG_AUTO_DELETE

外部アーカイブREDOログ・ファイルがロジカル・スタンバイ・データベースに適用されるとすぐに、そのファイルを自動的に削除します。デフォルトでは、外部アーカイブREDOログ・ファイルは、ロジカル・スタンバイ・データベースで適用されてから24時間(LOG_AUTO_DEL_RETENTION_TARGETパラメータのデフォルト値)が経過するまで削除されません。TRUEに設定すると、アーカイブREDOログ・ファイルの自動削除が有効になります。FALSEに設定すると、自動削除は無効になります。デフォルト値はTRUEです。

MAX_EVENTS_RECORDED

DBA_LOGSTDBY_EVENTSビューで表示可能な最新イベントの数。SQL適用で発生したすべてのイベントを記録するには、数値として定数DBMS_LOGSTDBY.MAX_EVENTSを使用します。デフォルト値は10,000です。

MAX_SERVERS

SQL適用で読取りとREDOの適用に使用するプロセスの数。デフォルト値は9です。最大値は2048です。

MAX_SGA

SQL適用で使用するシステム・グローバル領域(SGA)の共有プールのMB数。デフォルト値は、30MBまたはSHARED_POOL_SIZEに設定された値の4分の1のいずれか小さい方です。最大サイズは4095MBです。

PREPARE_SERVERS

変更の準備に使用するPREPARERプロセスの数を制御します。最大値は1024です(MAX_SERVERSパラメータに、対応できる値が設定されている場合)。

PRESERVE_COMMIT_ORDER

TRUE: トランザクションは、プライマリ・データベースでコミットされた順序と同じ順序でロジカル・スタンバイ・データベースに適用されます。これがデフォルトのパラメータ設定です。

FALSE: オーバーラップしていない行のセットを含むトランザクションが、プライマリ・データベースでコミットされた順序とは違う順序でコミットされる場合があります。

選択したレベルに関係なく、同じ行に対する変更は、常にプライマリ・データベースで検出される順序と同じ順序で適用されます。詳細および推奨は「使用上の注意」を参照してください。

SQL適用の実行中は、このパラメータを変更できません。

RECORD_APPLIED_DDL

ロジカル・スタンバイ・データベースに適用されたDDL文をEVENT_LOG_DESTパラメータで指定された場所に記録するかどうかを制御します。次のいずれかの値を指定します。

TRUE: ロジカル・スタンバイ・データベースに適用されたDDL文が、DBA_LOGSTDBY_EVENTS表およびアラート・ログに記録されることを示します。

FALSE: 適用したDDL文は記録されないことを示します。これがデフォルトのパラメータ設定です。

RECORD_SKIP_DDL

スキップしたDDL文をEVENT_LOG_DESTパラメータで指定された場所に記録するかどうかを制御します。次のいずれかの値を指定します。

TRUE: スキップしたDDL文はDBA_LOGSTDBY_EVENTS表およびアラート・ログに記録されます。これがデフォルトのパラメータ設定です。

FALSE: スキップしたDDL文はDBA_LOGSTDBY_EVENTS表およびアラート・ログに記録されません。

RECORD_SKIP_ERRORS

スキップしたエラー(「SKIP_ERRORプロシージャ」を参照)をEVENT_LOG_DESTパラメータで指定された場所に記録するかどうかを制御します。次のいずれかの値を指定します。

TRUE: スキップしたエラーはDBA_LOGSTDBY_EVENTS表およびアラート・ログに記録されます。これがデフォルトのパラメータ設定です。

FALSE: スキップしたエラーはDBA_LOGSTDBY_EVENTS表およびアラート・ログに記録されません。

RECORD_UNSUPPORTED_OPERATIONS

ロジカル・スタンバイ・データベースでサポートされない、プライマリ・データベースで実行中のトランザクションに関する情報を取得します。このプロシージャは、情報をイベントとしてDBA_LOGSTDBY_EVENTS表に記録します。次のいずれかの値を指定します。

TRUE: 情報が取得され、DBA_LOGSTDBY_EVENTS表にイベントとして記録されます。

FALSE: 情報が取得されません。これがデフォルトです。

SQL適用の実行中にパラメータを変更した場合、この変更は後で有効になります。このような場合、パラメータの変更が有効になった時点で、DBA_LOGSTDBY_EVENTSビューに情報行が挿入されます。

また、Oracle RAC構成でSQL適用を実行している間にパラメータを変更する場合は、SQL適用を実行しているインスタンスに接続する必要があります。

例外

表92-4 APPLY_SETプロシージャの例外

例外

説明

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

ORA-16236

ロジカル・スタンバイ・メタデータ操作は進行中です。

使用上の注意

- パラメータの設定をデフォルトに戻すには、APPLY_UNSETプロシージャを使用します。

- SQL適用のチューニングおよび様々なパラメータの適切な値の設定については、『Oracle Data Guard概要および管理』を参照してください。

例

DBA_LOGSTDBY_EVENTSビューおよびアラート・ログにDDLを記録するには、次の文を発行します。

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('RECORD_APPLIED_DDL', TRUE);

APPLY_UNSETプロシージャ

APPLY_UNSETプロシージャで変更したパラメータの値をデフォルトに戻すには、APPLY_SETプロシージャを使用します。

CDBでは、APPLY_UNSETプロシージャはルート・データベースからコールする必要があります。

構文

DBMS_LOGSTDBY.APPLY_UNSET (
inname          IN VARCHAR);

パラメータ

APPLY_UNSETプロシージャのパラメータ情報は、APPLY_SETプロシージャに関する情報と同じです。パラメータ情報の詳細は、表92-3を参照してください。

例外

表92-5 APPLY_UNSETプロシージャの例外

例外

説明

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

ORA-16236

ロジカル・スタンバイ・メタデータ操作は進行中です。

使用上の注意

- パラメータにデフォルト以外の値を指定するには、APPLY_SETプロシージャを使用します。

例

適用したDDLがDBA_LOGSTDBY_EVENTSビューおよびアラート・ログに記録されるように以前に指定していた場合は、次の文を実行して、適用したDDL文に関するSQL適用の動作をデフォルトに戻すことができます。

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_UNSET('RECORD_APPLIED_DDL');

BUILDプロシージャ

このプロシージャをプライマリ・データベースで使用して、関連するメタデータ(LogMinerディクショナリ)情報をREDOログに記録し、その後、このREDOログはSQL適用で使用されます。このプロシージャによって、必要に応じて、データベース全体でのプライマリ・キーおよび一意キーのサプリメンタル・ロギングが可能になります。

CDBでは、BUILDプロシージャはプライマリのルート・データベースからコールする必要があります。また、このプロシージャの実行中は、CDBにPDBを追加したり、CDBからPDBを削除することはできません。

注意:
Oracle Database 11gリリース2 (11.2)以上を使用して作成されたデータベースでは、サプリメンタル・ロギング情報は、既存のフィジカル・スタンバイ・データベースすべてに自動的に伝播されます。ただし、旧リリースのデータベースの場合、またはデータベースが旧リリースを使用して作成され、その後11.2にアップグレードされた場合は、サプリメンタル・ロギングがプライマリ・データベースでも有効化されている場合にサプリメンタル・ロギングがフィジカル・スタンバイで有効化されていることを確認する必要があります。フィジカル・スタンバイで有効化されていない場合は、スイッチオーバーまたはフェイルオーバーを実行する前に、既存のすべてのフィジカル・スタンバイ・データベースでサプリメンタル・ロギングを有効化する必要があります。これを行うには、各フィジカル・スタンバイで、次のSQLコマンドを発行します。

SQL>  ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

これを行わないと、フィジカル・スタンバイ・データベースの1つに対してスイッチオーバーまたはフェイルオーバーが行われた場合に、同じData Guard構成内のすべてのロジカル・スタンバイが使用できなくなります。すでにスイッチオーバーまたはフェイルオーバーが行われ、サプリメンタル・ロギングが有効でない場合は、すべてのロジカル・スタンバイ・データベースを再作成する必要があります。

構文

DBMS_LOGSTDBY.BUILD;

使用上の注意

- サプリメンタル・ログ情報には、ロジカル・スタンバイ・データベース内の変更行を一意に識別する、REDOログ内の追加情報が含まれています。また、ロジカル・スタンバイ・データベースへの変更を効率的に適用するための情報も含まれています。

- LogMinerディクショナリ情報を使用すると、SQL適用でREDOログ内のデータを解析できます。

- DBMS_LOGSTDBY.BUILDは、作成する各ロジカル・スタンバイ・データベースに対して1回のみ実行する必要があります。各Oracle RACインスタンスに対してDBMS_LOGSTDBY.BUILDを使用する必要はありません。

- DBMS_LOGSTDBY.BUILDは、プロシージャ起動時にアクティブなすべてのトランザクション(分散トランザクションを含む)が完了するまで待機してから戻ります。インダウト・トランザクションの処理方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

例

プライマリ・データベースのREDOストリーム内にLogMinerディクショナリを作成して、ロジカル・スタンバイ・データベースをインスタンス化するための追加情報を記録するには、プライマリ・データベースで次のSQL文を発行します。

SQL> EXECUTE DBMS_LOGSTDBY.BUILD;

EDS_ADD_TABLE

このプロシージャは、表のEDSベースのレプリケーションを追加します。これは、プライマリ・データベース、スタンバイ・データベースの順に起動される必要があります。

構文

DBMS_LOGSTDBY.EDS_ADD_TABLE (
table_owner        IN VARCHAR2,
table_name         IN VARCHAR2,
p_dblink           IN VARCHAR2);

パラメータ

表92-6 EDS_ADD_TABLEプロシージャのパラメータ

パラメータ

説明

table_owner

スタンバイ・データベースに作成または再作成する表の所有者。

table_name

スタンバイ・データベースに作成または再作成する表の名前。

p_dblink

プライマリ・データベースへのデータベース・リンク。

例外

表92-7 EDS_ADD_TABLEプロシージャの例外

例外

説明

ORA-942

表またはビューが存在しません。

ORA-16103

この操作を許可するにはSQL適用を停止する必要があります。

ORA-16130

ログ・ストリームからのサプリメンタル・ログ情報がありません。

ORA-16236

ロジカル・スタンバイ・メタデータ操作は進行中です。

ORA-16276

指定したデータベース・リンクはプライマリ・データベースに対応していません。

ORA-16278

指定した表でマルチオブジェクトのスキップ・ルールが定義されています。

ORA-16279

指定したデータベース・リンクに、操作に必要なロールがありません。

ORA-16302

拡張データ・タイプは指定した表ではサポートされていません。

ORA-16303

指定した表には、このデータベースのEDSがすでに存在します。

ORA-16304

プライマリ・データベースでは最初にプロシージャをコールする必要があります。

ORA-16306

指定した表に主キーがありません。

使用上の注意

- このプロシージャをプライマリでコールすると、ローカル表の定義を使用してシャドウ表が作成されます。その後、元表とシャドウ表が両方ともトリガーされます。

- このプロシージャをスタンバイでコールすると、プライマリへのデータベース・リンク(p_dblink)が必要とされます。これにより、プライマリの表定義を使用して、スタンバイのシャドウ表とそのトリガーを作成できるようになります。スタンバイでシャドウ表とそのトリガーを作成した後は、プライマリへのデータベース・リンクを使用してDBMS_LOGSTDBY.INSTANTIATE_TABLEプロシージャが元表に対してコールされます。プライマリでのコールではp_dblinkパラメータは無視され、デフォルトのNULLに設定されます。

- エラー・チェックが事前に実行されます。一般的には、このプロシージャでサポートされていないデータ・タイプが表で見つかると、エラーが発生します。
表がSQL適用によってすでにサポートされている場合、例外が発生します。表が拡張データ・タイプ・サポート(EDS)の対象であるかどうかを確認するには、プライマリのDBA_LOGSTDBY_EDS_SUPPORTEDビューを問い合せます。

- このプロシージャは、プライマリで実行してからスタンバイで実行する必要があります。そうでないと、エラーが発生します。

- ロジカル・スタンバイでのロール変更では、ロール変更を行う前に、EDSをプライマリとスタンバイの両方に追加する必要があります。プライマリにのみ追加した場合は、EDSをロール変更後に削除する必要があります。EDSコンテキストが無効になるからです。

- ローリング・アップグレードでは、このプロシージャをプライマリでコールするだけで済みます。

- このプロシージャはロジカル・スタンバイにはレプリケートされないため、プライマリ・データベースとスタンバイ・データベースの両方で実行する必要があります。フィジカル・スタンバイにはレプリケートされるため、ローリング・アップグレードでプロシージャを使用する際には、プライマリでのみコールしてください。

- このプロシージャをスタンバイで実行する場合、SQL適用を停止して、データベース・ガードをSTANDBYまたはNONEのいずれかに設定する必要があります。プロシージャの実行が完了すると、表はデータベース・ガードによって保護されます。

例

表OE.CUSTOMERSのEDSを追加するには、プライマリ、スタンバイの順に、次の各コマンドを実行します。

プライマリ・データベースでは、次のコマンドを実行します。

execute dbms_logstdby.eds_add_table('OE','CUSTOMERS');

スタンバイ・データベースでは、次のコマンドを実行します。

alter database stop logical standby apply;
execute dbms_logstdby.eds_add_table('OE','CUSTOMERS','dblink-to-primary');
alter database start logical standby apply immediate;

EDS_EVOLVE_AUTOMATIC

このプロシージャは、EDS表の自動DDL処理を有効または無効にします。

構文

DBMS_LOGSTDBY.EDS_EVOLVE_AUTOMATIC (
options            IN VARCHAR2);

パラメータ

表92-8 EDS_EVOLVE_AUTOMATICパラメータの説明

パラメータ

説明

options

ENABLEを指定して、EDSの自動DDL処理を有効にします。

DISABLEを指定して、EDSの自動DDL処理を無効にします。

例外

表92-9 EDS_EVOLVE_AUTOMATIC例外の説明

例外

説明

ORA-16104

指定されたパラメータは無効です。

ORA-16305

ロジカル・スタンバイではプロシージャがサポートされていません

使用上の注意

- すべてのEDS対応表のDDLを透過的に処理するには、EDS_ADD_TABLEを最初にコールする前に、このプロシージャをプライマリ・データベースで1回コールする必要があります(ENABLEオプションを指定する)。

- EDS固有のDDLトリガーが有効な場合、DDLを実行するたびにこのトリガーが起動されます。これにより、現在EDSが有効な表のうち、DDLによってEDSレプリケーションの実行可能性がなくなったものがないかどうかが調べられます。そのような表が存在する場合、EDS固有のメタデータを修復する補足アクションが取られるまで、影響を受けた元表に対するDMLを禁止する別個のEVOLVINGトリガーがその表で生成されます。

- EDSを保持する表でSQL文ALTER TABLEまたはCREATE UNIQUE INDEXを実行すると、自動展開が有効にされている場合は、展開操作が開始されます。

- このプロシージャはプライマリ・データベースでのみコールすることができ、SQL適用を介してロジカル・スタンバイ・データベースにレプリケートされます。

- このプロシージャをスタンバイで実行する場合、データベース・ガードの設定、適用の実行の有無に関係なく正常に完了します。

例

EDSを保持するすべての表で自動展開を有効にするには、次の文を発行します。

execute dbms_logstdby.eds_evolve_automatic('ENABLE');

自動展開を有効にした後は、eds_evolveコマンドを発行する必要がなくなります。EDS表に対して発行されたDDLコマンドの実行後に自動的に発行されるからです。

EDSを保持するすべての表で自動展開を無効にするには、次の文を発行します。

execute dbms_logstdby.eds_evolve_automatic('DISABLE');

EDS_EVOLVE_MANUAL

このプロシージャでは、EDS表を手動で展開できます(つまり、EDSレプリケーションにおいて、元表に対するDDL操作に基づいた補足アクションを手動で実行できます)。

構文

DBMS_LOGSTDBY.EDS_EVOLVE_MANUAL (
options            IN VARCHAR2,
table_owner        IN VARCHAR2,
table_name         IN VARCHAR2);

パラメータ

表92-10 EDS_EVOLVE_MANUALパラメータの説明

パラメータ

説明

options

有効なオプションは、次のとおりです。

- START: DDLの実行前に展開操作を開始します。

- FINISH: DDLの実行後に展開操作を終了します。

- CANCEL: 開始した展開操作をキャンセルします。

table_owner

スタンバイ・データベースに作成または再作成する表の所有者。

table_name

スタンバイ・データベースに作成または再作成する表の名前。

例外

表92-11 EDS_EVOLVE_MANUAL例外の説明

例外

説明

ORA-16302

拡張データ・タイプは指定した表ではサポートされていません。

ORA-16305

ロジカル・スタンバイではプロシージャがサポートされていません

ORA-16306

指定した表に主キーがありません。

ORA-16307

拡張データ・タイプの操作をサポートするために表が準備されていません。

使用上の注意

- 展開操作を手動で実行するには、EDSを指定してレプリケートされる元表に影響を与える可能性があるDDLの前後で、EDS_EVOLVE_MANUALをコールする必要があります。手動展開の規定の方法は次のとおりです。

1. STARTオプションを指定してEDS_EVOLVE_MANUALをコールします。

2. DDLを実行します。

3. FINISHオプションを指定してEDS_EVOLVE_MANUALをコールします。

この順序に従わないと、データが失われる可能性があります。指定した表について、FINISHオプションを指定したプロシージャ・コールがSTARTオプションを指定したプロシージャ・コールよりも前に実行される場合、エラーが戻されます。STARTオプションを指定したプロシージャのコール時に、展開トリガーによって表に対するDMLがブロックされます。

- このプロシージャは、プライマリ・データベースでのみ起動できます。

- このプロシージャをスタンバイで実行する場合、SQL適用を停止して、データベース・ガードをSTANDBYまたはNONEのいずれかに設定する必要があります。プロシージャの実行が完了すると、表はデータベース・ガードによって保護されます。

例

EDS表を手動で展開するには、プライマリ・データベースで次のコマンドを実行します。

execute dbms_logstdby.eds_evolve_manual('START','OE','CUSTOMERS');
alter table oe.customers some_DDL_construct;
execute dbms_logstdby.eds_evolve_manual('FINISH','OE','CUSTOMERS');

EDS_REMOVE_TABLE

このプロシージャは、指定した表のEDSベースのレプリケーションを削除します。シャドウ表やトリガーも削除されます。

構文

DBMS_LOGSTDBY.EDS_REMOVE_TABLE (
table_owner        IN VARCHAR2,
table_name         IN VARCHAR2,

パラメータ

表92-12 EDS_REMOVE_TABLEパラメータの説明

パラメータ

説明

table_owner

スタンバイ・データベースに作成または再作成する表の所有者。

table_name

スタンバイ・データベースに作成または再作成する表の名前。

例外

表92-13 EDS_REMOVE_TABLE例外の説明

例外

説明

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

使用上の注意

- このプロシージャをスタンバイでコールする場合、ローカルではシャドウ表と両方のトリガーが削除されますが、プライマリでは削除されません。
このプロシージャをプライマリでコールする場合、シャドウ表と両方のトリガーが削除された後、適用エンジンによってプロシージャがスタンバイで再実行されます。つまり、ロジカル・スタンバイでサポートされているシャドウ表とトリガーも削除されます。このアプローチを使用すると、プライマリで1回コールするだけで、表の全構成からEDSを削除できます。

- マルチスタンバイ構成で1つのスタンバイのサポートを削除する場合は、そのスタンバイでこのプロシージャをコールできます。

- このプロシージャは、同じ表に対するユーザーの継続的な書込みが行われている間でも、排他表ロックを解消することでデータの独立性を確保します。つまり、表への行ロックが残っている現行の書込みトランザクションが完了するまで、プロシージャがブロックします。

- このプロシージャをスタンバイで実行する場合、SQL適用を停止して、データベース・ガードをSTANDBYまたはNONEのいずれかに設定する必要があります。プロシージャの実行が完了すると、表はデータベース・ガードによって保護されます。

例

表OE.CUSTOMERSに対するEDSを削除するには、プライマリ・データベースで次のコマンドを実行します。

execute dbms_logstdby.eds_remove_table('OE','CUSTOMERS');

INSTANTIATE_TABLEプロシージャ

このプロシージャは、プライマリ・データベース内の対応する表から、スタンバイ・データベース内に表を作成し、データを移入します。表には、入力パラメータとしてデータベース・リンク(dblink)名が必要です。ロジカル・スタンバイ・データベース内に表がすでに存在する場合、その表は削除され、プライマリ・データベースの表定義に基づいて再作成されます。このプロシージャは、表に関連付けられているデータに対してのみ適用され、関連付けられている索引および制約には適用されません。

INSTANTIATE_TABLEプロシージャを使用すると、次のことを実行できます。

- スタンバイ・データベースへの表の追加

- スタンバイ・データベース内の表の再作成

CDBでは、INSTANTIATE_TABLEプロシージャは、インスタンス化する表が存在するコンテナ内からコールする必要があります。また、プライマリ・データベースで用意されているデータベース・リンクが、プライマリの対応するコンテナをポイントする必要があります。

構文

DBMS_LOGSTDBY.INSTANTIATE_TABLE (
schema_name         IN VARCHAR2,
table_name          IN VARCHAR2,
dblink              IN VARCHAR2);

パラメータ

表92-14 INSTANTIATE_TABLEプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

table_name

スタンバイ・データベースに作成または再作成する表の名前。

dblink

プライマリ・データベース内の表の読込み権限およびロック権限があるデータベース・リンク・アカウントの名前、およびプライマリ・データベースのSELECT_CATALOG_ROLE。

例外

表92-15 INSTANTIATE_TABLEプロシージャの例外

例外

説明

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16236

ロジカル・スタンバイ・メタデータ操作は進行中です。

ORA-16276

指定したデータベース・リンクはプライマリ・データベースに対応していません。

ORA-16277

指定した表はロジカル・スタンバイ・データベースでサポートされていません。

ORA-16278

指定した表でマルチオブジェクトのスキップ・ルールが定義されています。

使用上の注意

- このプロシージャを使用すると、プライマリ・データベースとトランザクション的に一貫性のある状態にスタンバイ・データベースのデータを保つように、表が作成され、データが移入されます。

- この表は、SQL適用によってメンテナンスされる他の表とは同期されず、プライマリからの表のインスタンス化後に発生したREDOがSQL適用によって検出されるまで、SQL適用によるこの表のメンテナンスは開始されません。プライマリ・データベースから表をインスタンス化したSCNは、DBA_LOGSTDBY_EVENTSビューで使用できます。

- 指定した表はロジカル・スタンバイでサポートされている必要があります(つまり、プライマリ・データベースのDBA_LOGSTDBY_UNSUPPORTED_TABLESビューに表示されません)。

- この表を(ワイルドカードを使用しないで)明示的に指定するスキップ・ルールがある場合は、INSTANTIATE_TABLEの処理中にこれらのスキップ・ルールが削除されるため、表は引き続きSQL適用で適切に保持されます。この表を間接的に参照するスキップ・ルール(schema_nameまたはtable_name内にワイルドカードがあり、文タイプがTABLE、DMLまたはSCHEMA_DDLであるスキップ・ルール)がある場合は、INSTANTIATE_TABLEに失敗し、ORA-16278エラーが発生します。INSTANTIATE_TABLEコールを再試行する前に、この表に関連するマルチオブジェクト・スキップ・ルールをすべて削除または変更する必要があります。

例

SQL> EXECUTE DBMS_LOGSTDBY.INSTANTIATE_TABLE (-
SCHEMA_NAME => 'HR', TABLE_NAME => 'EMPLOYEES', -
DBLINK => 'INSTANTIATE_TBL_LINK');

IS_APPLY_SERVERファンクション

このファンクションは、ロジカル・スタンバイ適用サーバー・プロセスのコンテキストでPL/SQLから実行された場合、TRUEを戻します。このファンクションは、DBMS_DDL.SET_TRIGGER_FIRING_PROPERTYサブプログラムのfire_onceパラメータがFALSEに設定されている(デフォルトはTRUE)トリガーと一緒に使用します。このようなトリガーは、適用プロセスによって関連ターゲットが更新されると実行されます。このファンクションは、トリガー本体内で使用して、トリガーがプライマリまたはスタンバイで異なるアクションを実行する(またはアクションを実行しない)ようにすることができます。

関連項目:
DBMS_DDL.SET_TRIGGER_FIRING_PROPERTYサブプログラムの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

構文

DBMS_LOGSTDBY.IS_APPLY_SERVER
RETURN BOOLEAN;

パラメータ

なし

MAP_PRIMARY_SCNファンクション

プライマリ・データベースの指定SCNより5分以上先行している、スタンバイのSCNを戻します。このファンクションを使用すると、プライマリ・データベースでのフラッシュバック・データベース操作またはPoint-in-Timeリカバリ操作の後に、ロジカル・スタンバイ・データベースでフラッシュバック・データベース操作を補足するときに使用する安全なSCNを判別できます。

構文

DBMS_LOGSTDBY.MAP_PRIMARY_SCN(primary_scn NUMBER) RETURN NUMBER;

例外

表92-16 MAP_PRIMARY_SCNファンクションの例外

例外

説明

ORA-20001

プライマリSCNはマップ範囲の前にあります。

ORA-20002

SCNマッピングでは、PRESERVE_COMMIT_ORDERをTRUEにする必要があります。

使用上の注意

このファンクションは、プライマリ・データベースのSCNに対応するロジカル・スタンバイ・データベースの保守的SCNを取得する場合に使用します。このファンクションは、プライマリ・データベースでのフラッシュバック・データベース操作またはPoint-in-Timeリカバリ操作の後に、ロジカル・スタンバイでフラッシュバック・データベース操作を補足する場合に役立ちます。

PREPARE_FOR_NEW_PRIMARYプロシージャ

PREPARE_FOR_NEW_PRIMARYプロシージャは、フェイルオーバーの発生後、ロジカル・スタンバイ・データベースがフェイルオーバーの対象でなかった場合、そのスタンバイ・データベースで起動する必要があります。このようなスタンバイ・データベースでは、新しいプライマリ・データベースで処理されるREDOログ・セットと同じREDOログ・セットを処理する必要があります。このルーチンは、ローカルのロジカル・スタンバイ・データベースで新しいプライマリ・データベースより多くのREDOが処理されないようにし、一貫性を保証するために置換する必要があるアーカイブ・ログ・ファイル・セットをレポートします。一連の置換ログは、アラート・ログにレポートされます。これらのログは、ロジカル・スタンバイにコピーし、ALTER DATABASE REGISTER LOGICAL LOGFILE文を使用して登録する必要があります。

CDBでは、PREPARE_FOR_NEW_PRIMARYプロシージャはルート・データベースからコールする必要があります。

構文

DBMS_LOGSTDBY.PREPARE_FOR_NEW_PRIMARY (
FORMER_STANDBY_TYPE         IN VARCHAR2,
DBLINK                      IN VARCHAR2);

パラメータ

表92-17 PREPARE_FOR_NEW_PRIMARYプロシージャのパラメータ

パラメータ

説明

FORMER_STANDBY_TYPE

フェイルオーバー操作によって新しいプライマリ・データベースとなったスタンバイ・データベースのタイプ。有効な値は、'PHYSICAL'(新しいプライマリ・データベースが、以前はフィジカル・スタンバイ・データベースだった場合)および'LOGICAL'(新しいプライマリ・データベースが、以前はロジカル・スタンバイ・データベースだった場合)です。

DBLINK

新しいプライマリ・データベースへのデータベース・リンクの名前。

例外

表92-18 PREPARE_FOR_NEW_PRIMARYプロシージャの例外

例外

説明

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

ORA-16109

以前のプライマリからのログ・データの適用に失敗しました。

使用上の注意

- このルーチンは、ロジカル・スタンバイ・システムのみを対象としています。新しいプライマリ・データベースが以前はロジカル・スタンバイ・データベースで、LogMinerディクショナリの作成が正常に完了していない場合、このルーチンは失敗します。アラート・ログに表示されるログ・ファイルは、端末ログと呼ばれます。ファイル・パスは、新しいプライマリ・データベースに対する相対パスであり、ローカルに解決できない場合があることに注意してください。端末ログを手動で登録する際は、START LOGICAL STANDBY APPLY(新しいプライマリ・データベースが、以前はフィジカル・スタンバイ・データベースだった場合)またはSTART LOGICAL STANDBY APPLY NEW PRIMARY(新しいプライマリ・データベースが、以前はロジカル・スタンバイ・データベースだった場合)のいずれかをコールして、処理を完了する必要があります。例外が発生した理由の詳細は、アラート・ログを参照してください。

例

SQL> EXECUTE DBMS_LOGSTDBY.PREPARE_FOR_NEW_PRIMARY (  -
FORMER_STANDBY_TYPE => 'LOGICAL',    -
DBLINK => 'dblink_to_newprimary');

PURGE_SESSIONプロシージャ

ロジカル・スタンバイ・データベースに適用済で、SQL適用で不要になったすべてのアーカイブREDOログ・ファイルを識別します。識別後、オペレーティング・システム・コマンドを発行して、一部またはすべての不要なアーカイブREDOログ・ファイルを削除できます。

CDBでは、PURGE_SESSIONプロシージャはルート・データベースからコールする必要があります。

構文

DBMS_LOGSTDBY.PURGE_SESSION;

例外

表92-19 PURGE_SESSIONプロシージャの例外

例外

説明

ORA-01309

セッションが無効です。

使用上の注意

- このプロシージャでは、アーカイブREDOログ・ファイルは削除されません。不要なファイルは、オペレーティング・システム・コマンドを発行して削除する必要があります。

- このプロシージャを実行すると、ロジカル・スタンバイ・データベースに適用されたアーカイブREDOログ・ファイルを表示するDBA_LOGMNR_PURGED_LOGビューが更新されます。

- Oracle Database 10g リリース2(10.2)では、アーカイブREDOログ・ファイルに関連するメタデータ(および実際のアーカイブREDOログ・ファイル)が、LOG_AUTO_DELETEパラメータのデフォルト設定(「DBMS_LOGSTDBY.APPLY_SETプロシージャ」を参照)に基づいて自動的にパージされます。

例

不要なファイルを識別して削除するには、次の手順を実行します。

1. ロジカル・スタンバイ・データベースで、次の文を入力します。

SQL> EXECUTE DBMS_LOGSTDBY.PURGE_SESSION;

2. DBA_LOGMNR_PURGED_LOGビューを問い合せて、削除可能なアーカイブREDOログ・ファイルを表示します。

SQL> SELECT * FROM DBA_LOGMNR_PURGED_LOG;

FILE_NAME
------------------------------------
/boston/arc_dest/arc_1_40_509538672.log
/boston/arc_dest/arc_1_41_509538672.log
/boston/arc_dest/arc_1_42_509538672.log
/boston/arc_dest/arc_1_43_509538672.log
/boston/arc_dest/arc_1_44_509538672.log
/boston/arc_dest/arc_1_45_509538672.log
/boston/arc_dest/arc_1_46_509538672.log
/boston/arc_dest/arc_1_47_509538672.log

3. オペレーティング・システム固有のコマンドを使用して、アーカイブREDOログ・ファイルをファイル・システムから削除します。

REBUILDプロシージャ

このプロシージャは、フェイルオーバー操作に伴ってプライマリ・データベースに役割が変更されたデータベースで、関連するメタデータ(LogMinerディクショナリを含む)を他のロジカル・スタンバイ・データベースで必要なREDOストリームに記録できない場合に使用します。

CDBでは、REBUILDプロシージャはルート・データベースからコールする必要があります。

構文

DBMS_LOGSTDBY.REBUILD;

使用上の注意

- LogMinerディクショナリ情報はREDOログ・ファイルに記録されます。スタンバイREDOログ・ファイル(存在する場合)は、アーカイブされます。

例

SQL> EXECUTE DBMS_LOGSTDBY.REBUILD;

SET_TABLESPACEプロシージャ

SQL適用で必要なメタデータ表を、ユーザー指定の表領域に移動します。デフォルトでは、メタデータ表は、SYSAUX表領域内に作成されます。このプロシージャを起動しているときは、SQL適用を実行できません。

CDBでは、SET_TABLESPACEプロシージャはルート・データベースからコールする必要があります。

構文

DBMS_LOGSTDBY.SET_TABLESPACE(
NEW_TABLESPACE IN VARCHAR2)

パラメータ

表92-20 SET_TABLE SPACEプロシージャのパラメータ

パラメータ

説明

NEW_TABLESPACE

メタデータ表が常駐することになる新しい表領域の名前

例外

表92-21 SET_TABLESPACEプロシージャの例外

例外

説明

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16236

ロジカル・スタンバイ・メタデータ操作は進行中です。

例

LOGSTDBY_TBSという新しい表領域にメタデータ表を移動するには、次の文を発行します。

SQL> EXECUTE DBMS_LOGSTDBY.SET_TABLESPACE (new_tablespace => 'LOGSTDBY_TBS');

SKIPプロシージャ

SKIPプロシージャを使用すると、SQL適用で特定の変更がロジカル・スタンバイ・データベースに適用されないようにする場合に使用するルールを定義できます。たとえば、SKIPプロシージャを使用すると、ロジカル・スタンバイ・データベース内の表のサブセットへの変更をスキップできます。また、ロジカル・スタンバイ・データベースで適用しないDDL文、またはロジカル・スタンバイ・データベースに適用する前に変更の必要があるDDL文の指定もできます。DDL文の変更は、ロジカル・スタンバイ・データベースで別のディレクトリ構造に対応する場合などに行う必要があります。

注意:
コンテナのスキップの詳細は、「コンテナのスキップ」を参照してください。

構文

DBMS_LOGSTDBY.SKIP (
stmt                      IN VARCHAR2,
schema_name               IN VARCHAR2 DEFAULT NULL,
object_name               IN VARCHAR2 DEFAULT NULL,
proc_name                 IN VARCHAR2 DEFAULT NULL,
use_like                  IN BOOLEAN DEFAULT TRUE,
esc                       IN CHAR1 DEFAULT NULL);

パラメータ

表92-22 SKIPプロシージャのパラメータ

パラメータ

説明

stmt

SQL文のセットまたは特定のSQL文を識別するキーワード。(通常はデータベース・オブジェクトで定義される)キーワードを使用すると、指定オブジェクトで動作するすべてのSQL文が識別されるため、構成が簡単になります。表92-23に、キーワードおよびそれに対応するSQL文を示しますが、いずれもこのパラメータの値として有効です。

キーワードPL/SQLは、レプリケーション用にサポートされているオラクル社提供のパッケージを実行する場合に使用します。サポート対象パッケージの詳細は、『Oracle Data Guard概要および管理』を参照してください。

schema_name

stmtパラメータによって識別されるSQL文と関連付けられる1つ以上のスキーマの名前(ワイルドカードの使用可)。必要でない場合は、この値をNULLに設定してください。

object_name

stmtパラメータによって識別されるSQL文と関連付けられる1つ以上のオブジェクトの名前(ワイルドカードの使用可)。必要でない場合は、この値をNULLに設定してください。

proc_name

SQL適用で、特定の文がstmt、schema_nameおよびobject_nameの各パラメータによって定義されたフィルタと一致していると判断されたときにコールされるストアド・プロシージャの名前です。次のフォーマットで指定します。

'schema.package.procedure'

このプロシージャは、SQL適用に対して、文の実行、文のスキップまたは代替文の実行のいずれかを行うように指示する値を戻します。

DDLまたはPL/SQLの場合に呼び出されるプロシージャでは引数が取得されません。ネームスペースLSBY_APPLY_CONTEXTに関連付けられたコンテキストにアクセスすることで、プロシージャ内で必要な様々な情報にアクセスできます。

スキップ・プロシージャのコンテキストでアクセス可能なパラメータの完全なリストは、DBMS_LOGSTBDY_CONTEXTパッケージを参照してください。

DDLの場合に対象となるパラメータは、STATEMENT、STATEMENT_TYPE、SCHEMA、NAME、CURENT_SCHEMA、XIDUSN、XIDSLT、XIDSQNおよびSKIP_ACTIONです。

PL/SQLの場合に対象となるパラメータは、STATEMENT、PACKAGE_SCHMEMA、PACKAGE_NAME、PROCEDURE_NAME、CURRENT_SCHEMA、XIDUSN、XIDSLT、XIDSQN、EXIT_STATUSおよびSKIP_ACTIONです。

注意1: DBMS_LOGSTDBY.SKIP_ACTION_REPLACE定数はPL/SQLではサポートされません。

注意2: プロシージャの終了が処理されると、SQL適用はスキップ・ハンドラをコールします。

注意3: PL/SQLではワイルドカードがサポートされていないため、use_likeパラメータをFALSEに設定する必要があります。

proc_name(続き)

DBMS_RLS.DROP_POLICY上の条件付きスキップ・ルールの例は次のとおりです。

create or replace procedure sec.mgr.skip_drop_policy
is
l_stmt  CLOB;
l_pkgown varchar2(30);
l_pkgnam varchar2(30);
l_procnm varchar2(30);
l_cur_schema varchar2(30);
l_xidusn   number;
l_xidslt   number;
l_xidsqn   number;
l_exit_status number;
l_skip_action number;
Begin
-- read all relevant info
dbms_logstdby_context.get_context(name => 'STATEMENT', value => l_stmt);
dbms_logstdby_context.get_context(name => 'PACKAGE_SCHEMA', value => l_pkgown);
dbms_logstdby_context.get_context(name => 'PACKAGE_NAME', value => l_pkgnam);
dbms_logstdby_context.get_context(name => 'PROCEDURE_NAME', value => l_procnm);
dbms_logstdby_context.get_context(name => 'CURRENT_SCHEMA', value => l_cur_schema);
dbms_logstdby_context.get_context(name => 'XIDUSN', value => l_xidusn);
dbms_logstdby_context.get_context(name => 'XIDSLT', value => l_xidslt);
dbms_logstdby_context.get_context(name => 'XIDSQN', value => l_xidsqn);
dbms_logstdby_context.get_context(name => 'EXIT_STATUS', value => l_ext_status);

if 0 == l_ext_status then
Insert Into sec_mgr.logit Values
('Success: '||l_pkgown||'.'||l_pkgnm||'.'||l_procnm|| ' by '||l_current_user);

If l_current_user != 'TESTSCHEMA' Then
l_skip_action := DBMS_LOGSTDBY.SKIP_ACTION_APPLY;
Else
l_skip_action := DBMS_LOGSTDBY.SKIP_ACTION_SKIP;
End If;
End If;

dbms_logstdby_context.set_context(name=>'SKIP_ACTION',
value => l_skip_action);

End skip_drop_policy;

EXECUTE DBMS_LOGSTDBY.SKIP( -
stmt => 'PL/SQL', -
schema_name => 'SYS', -
object_name => 'DBMS_RLS.DROP_POLICY', -
proc_name => 'SEC_MGR.SKIP_DROP_POLICY' -
use_like=> FALSE);

use_like

パターン・マッチングによって、ロジカル・スタンバイ・データベース上でスキップする表を区別することができます。use_likeパラメータは、2番目の値に指定されたパターンの最初の値を検索して、文字列値の一部を比較し、入力キャラクタ・セットによって定義された文字を使用して、文字列を予想します。このパラメータは、『Oracle Database SQL言語リファレンス』で説明されているパターン・マッチングと同じ規則に従います。

esc

パターン・マッチングに使用できるエスケープ文字(文字"/"など)を識別します。パターン内の文字%または_の前にエスケープ文字があると、Oracleではこの文字を特殊なパターン・マッチング文字としてではなく、パターン内の文字通りに解釈します。パターン・マッチングの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

使用上の注意

- このプロシージャを実行するには、DBA権限が必要です。

- DML文のコンテキストで起動されるストアド・プロシージャは、関連付けできません。たとえば、次の文は、「ORA-16104: ロジカル・スタンバイ・オプションのリクエストが無効です。」エラーを戻します。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP(-
stmt => 'DML', -
schema_name => 'HR', -
object_name => 'EMPLOYEES', -
proc_name => 'DML_HANDLER');

また、ルールの指定時にワイルドカードを使用したか、またはルールを重複して指定したため、1つのイベントが複数のルールに一致する場合は、次のようになります。たとえば、HR.EMPLOYEES表にSCHEMA_DDLイベントのルールおよびHR.EMPLOYEES表にALTER TABLEイベントのルールを指定すると、(プロシージャ名のアルファベット順に従って)一致するプロシージャのいずれか1つのみが起動されます。次のコード例のルールを指定したとします。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP( -
stmt => 'SCHEMA_DDL', -
schema_name => 'HR', -
object_name => 'EMPLOYEES', -
proc_name => 'SCHEMA_DDL_HANDLER');
SQL> EXECUTE DBMS_LOGSTDBY.SKIP( -
stmt => 'ALTER TABLE', -
schema_name => 'HR', -
object_name => 'EMPLOYEES', -
proc_name => 'TABLE_ALTER_HANDLER');

ALTER TABLE文が検出されると、schema_ddl_handlerプロシージャが起動されますが、これは、このプロシージャの名前が、この文に関連するプロシージャのアルファベット順にソートされたリストの最上位にあるためです。ワイルドカードを使用して指定したためにルール・セットで競合が発生した場合も、同様に解決されます。たとえば、次の例のルールでは、ALTER TABLE HR.EMPLOYEES ADD COLUMN RATING NUMBER文が検出されると、empddl_handlerプロシージャが起動されます。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP(-
stmt => 'ALTER TABLE', -
schema_name => 'HR', -
object_name => 'EMP%', -
proc_name => 'EMPDDL_HANDLER');
SQL> EXECUTE DBMS_LOGSTDBY.SKIP( -
stmt => 'ALTER TABLE', -
schema_name => 'HR', -
object_name => 'EMPLOYEES', -
proc_name => 'EMPLOYEE_DDL_HANDLER');

- SKIPプロシージャは、DDL文をスキップする場合は特に注意して使用してください。たとえば、CREATE TABLE文をスキップする場合は、その表を参照する他のDDL文もSKIPプロシージャで指定する必要があります。このように処理しないと、文が失敗し、例外が発生する原因となります。例外が発生すると、SQL適用の実行が停止します。

- SKIPプロシージャをコールする前に、SQL適用を停止する必要があります。これを行うには、ALTER DATABASE STOP LOGICAL STANDBY APPLY文を発行します。必要なフィルタをすべて指定した後、ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE文を発行して、新しいフィルタ設定でSQL適用を開始します。

- SKIPプロシージャの設定を元に戻す(UNDOする)方法は、「UNSKIPプロシージャ」を参照してください。

- USER文では、SCHEMA_NAMEパラメータはユーザーになります。OBJECT_NAMEパラメータには'%'を指定する必要があります。

- PROC_NAMEパラメータを指定する場合は、このプロシージャがDBA_PROCEDURESにすでに存在している必要があり、DEFINER権限で実行する必要があります。このプロシージャをINVOKER権限で宣言すると、「ORA-01031: 権限が不足しています」メッセージが戻されます。

- このプロシージャによってREPLACEMENT文が戻された場合、このREPLACEMENT文は、プロシージャの所有者のSYSTEMおよびOBJECT権限を使用して実行されます。

- SKIPプロシージャのPL/SQLブロックは、自律型トランザクションであると宣言されていないかぎり、トランザクション制御文(COMMIT、ROLLBACK、SAVEPOINT、SET CONSTRAINTなど)を含むことはできません。

スキップ文のオプション

表92-23に、SKIPプロシージャのstmtパラメータに対してサポートされる値を示します。表の左の列は、その右側のSQL文のセットを識別するために使用されるキーワードです。また、sys.audit_actions表に示されたSQL文(表92-23の右列を参照)はすべて、有効な値でもあります。キーワードは通常、データベース・オブジェクトによって定義されることに注意してください。

表92-23 stmtパラメータに対してサポートされる値

キーワード

対応するSQL文

SQL文のこのグループには、キーワードはありません。

GRANT
REVOKE
ANALYZE TABLE
ANALYZE INDEX
ANALYZE CLUSTER

CLUSTER

AUDIT CLUSTER
CREATE CLUSTER
DROP CLUSTER
TRUNCATE CLUSTER

CONTAINER

「コンテナのスキップ」を参照してください。

CONTEXT

CREATE CONTEXT
DROP CONTEXT

DATABASE LINK

CREATE DATABASE LINK
CREATE PUBLIC DATABASE LINK
DROP DATABASE LINK
DROP PUBLIC DATABASE LINK

DIMENSION

ALTER DIMENSION
CREATE DIMENSION
DROP DIMENSION

DIRECTORY [1]

CREATE DIRECTORY
DROP DIRECTORY

DML

表に対するDML文(INSERT、UPDATE、DELETEなど)

INDEX

ALTER INDEX
CREATE INDEX
DROP INDEX

NON_SCHEMA_DDL

特定のスキーマに関係しないすべてのDDL

注意: SCHEMA_NAMEおよびOBJECT_NAMEは、NULLである必要があります。

PL/SQL [2]

オラクル社が提供するパッケージを実行します。

PROCEDURE [3]

ALTER FUNCTION
ALTER PACKAGE
ALTER PACKAGE BODY
ALTER PROCEDURE
CREATE FUNCTION
CREATE LIBRARY
CREATE PACKAGE
CREATE PACKAGE BODY
CREATE PROCEDURE
DROP FUNCTION
DROP LIBRARY
DROP PACKAGE
DROP PACKAGE BODY
DROP PROCEDURE

PROFILE

ALTER PROFILE
CREATE PROFILE
DROP PROFILE

ROLE

ALTER ROLE
CREATE ROLE
DROP ROLE
SET ROLE

ROLLBACK STATEMENT

ALTER ROLLBACK SEGMENT
CREATE ROLLBACK SEGMENT
DROP ROLLBACK SEGMENT

SCHEMA_DDL

スキーマ・オブジェクト(表、索引、列など)を作成、変更または削除するすべてのDDL文

注意: SCHEMA_NAMEおよびOBJECT_NAMEはNULL以外である必要があります。

SEQUENCE

ALTER SEQUENCE
CREATE SEQUENCE
DROP SEQUENCE

SYNONYM

CREATE PUBLIC SYNONYM
CREATE SYNONYM
DROP PUBLIC SYNONYM
DROP SYNONYM

SYSTEM AUDIT

AUDIT SQL_statements
NOAUDIT SQL_statements

TABLE

CREATE TABLE
ALTER TABLE
DROP TABLE
TRUNCATE TABLE

TABLESPACE

CREATE TABLESPACE
DROP TABLESPACE
ALTER TABLESPACE

TRIGGER

ALTER TRIGGER
CREATE TRIGGER
DISABLE ALL TRIGGERS
DISABLE TRIGGER
DROP TRIGGER
ENABLE ALL TRIGGERS
ENABLE TRIGGER

TYPE

ALTER TYPE
ALTER TYPE BODY
CREATE TYPE
CREATE TYPE BODY
DROP TYPE
DROP TYPE BODY

USER

ALTER USER
CREATE USER
DROP USER

VIEW

CREATE VIEW
DROP VIEW

VIEW

CREATE VIEW
DROP VIEW

1 すべてのディレクトリ・オブジェクトはSYSが所有していまが、skipディレクティブでフィルタリングするためにスキーマは「'%'」と指定する必要があります。

2 サポート対象パッケージの詳細は、『Oracle Data Guard概要および管理』を参照してください。

3 Javaスキーマ・オブジェクト(ソース、クラスおよびリソース)は、SQL文をスキップする(処理しない)という目的に関してはプロシージャと同様であるとみなされます。

例外

表92-24 DBMS_LOGSTDBY.SKIPプロシージャの例外

例外

説明

ORA-01031

権限が不足しています。

- プロシージャでINVOKER権限が使用されました。

- プロシージャにDBA権限が必要です。

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

ORA-16203

SKIPプロシージャの戻り値を解釈できません。

SKIPプロシージャで例外が発生したか、または戻り値が明確でないことを示します。DBA_LOGSTDBY_EVENTSビューを調べると、例外が発生したプロシージャを識別できます。

ORA-16236

ロジカル・スタンバイ・メタデータ操作は進行中です。

例

例1   スキーマに対するDMLおよびDDLのすべての変更をスキップ

次の例は、HRスキーマに対するDDL文とDML文の両方をSQL適用でスキップするルールの指定方法を示しています。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP(STMT => 'SCHEMA_DDL', -
schema_name => 'HR', -
object_name => '%', -
proc_name => null);
SQL> EXECUTE DBMS_LOGSTDBY.SKIP(STMT => 'DML', -
schema_name => 'HR', -
object_name => '%', -
proc_name => null);

例2   異なるファイル・システムの編成を処理するプロシージャの作成

たとえば、ファイル・システムの編成がロジカル・スタンバイ・データベースとプライマリ・データベースで異なる場合は、ファイルが指定されたDDL文を透過的に処理するSKIPプロシージャを作成できます。次のプロシージャは、ファイル指定文字列に関する特定のネーミング規則に従っているかぎり、DDL文を処理できます。

1. 表領域DDL文を処理するSKIPプロシージャを作成します。

CREATE OR REPLACE PROCEDURE sys.handle_tbs_ddl
IS
l_old_stmt varchar2(4000);
l_stmt_typ varcahr2(40);
l_schema   varchar2(30);
l_name     varchar2(30);
l_xidusn   number;
l_xidslt   number;
l_xidsqn   number;
l_skip_action number;
l_new_stmt varchar2(4000);

-- read all information
dbms_logstdby_context.get_context(name=>'STATEMENT',value=>l_old_stmt);
dbms_logstdby_context.get_context(name=>'STATEMENT_TYPE',value=>l_stmt_type);
dbms_logstdby_context.get_context(name=>'OWNER',value=>l_schema);
dbms_logstdby_context.get_context(name=>'NAME',value=>l_name);
dbms_logstdby_context.get_context(name=>'XIDUSN',value=>l_xidusn);
dbms_logstdby_context.get_context(name=>'XIDSLT',value=>l_xidslt);
dbms_logstdby_context.get_context(name=>'XIDSQN',value=>l_xidsqn);
dbms_logstdby_context.get_context(name=>'CONTAINER_NAME',value=>l_conname);

--
-- All primary file specification that contains a directory
-- /usr/orcl/primary/dbs
-- should go to /usr/orcl/stdby directory specification

BEGIN
l_new_stmt := replace (l_old_stmt, '/usr/orcl/primary/dbs','/usr/orcl/stdby');
l_skip_action := DBMS_LOGSTDBY.SKIP_ACTION_REPLACE;
EXCEPTION
WHEN OTHERS THEN
l_skip_action := DBMS_LOGSTDBY.SKIP_ACTION_ERROR;
l_new_stmt := NULL;
END;

dbms_logstdby_context.set_context(name=>new_statement, value => l_new_stmt);
dbms_logstdby_context.set_context(name=>'SKIP_ACTION', value => l_skip_action);
END handle_tbs_ddl;

2. SKIPプロシージャをSQL適用に登録します。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP (stmt => 'TABLESPACE', -
proc_name => 'SYS.HANDLE_TBS_DDL');

コンテナのスキップ

コンテナ(PDBまたはルートのいずれか)をスキップするには、CONTAINERキーワードを使用します。コンテナで実行されたすべてのSQL文や、コンテナに対して実行されたアクションがスキップされます。

CDB内で特定のPDBをスキップできます。たとえば、次のコマンドはPDB1というPDBをスキップします。次のように、コマンドをルート・レベルで実行する必要があります。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP(stmt => 'CONTAINER', object_name => 'PDB1');

次の例に示すように、CDBのルートのみをスキップして、そのルートの下のPDBはスキップしないように指定することもできます。次のように、コマンドをルート・レベルで実行する必要があります。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP(stmt => 'CONTAINER', object_name => 'CDB$ROOT');

注意:
コンテナに対するその他のスキップ・ルールを作成するには、コンテナ内でルールを作成します。ルールが適用されるコンテナは、そのルールが作成されたコンテナで自動的に判断されます。

SKIP_ERRORプロシージャ

エラーが発生すると、ロジカル・スタンバイ・データベースは、このプロシージャに含まれている基準を使用して、アクションを決定します。一致するものが見つかったときのデフォルトのアクションは、エラーをスキップして変更の適用を継続することです。ただし、プロシージャが指定された場合、SKIP_ERRORは状況に応じて他のアクションを行うことができます。何もしない(SQL適用は停止します)、エラー・メッセージ・テキストを変更してSQL適用を停止する、または、実際にエラーをスキップすることができます。

構文

DBMS_LOGSTDBY.SKIP_ERROR (
stmt                      IN VARCHAR2,
schema_name               IN VARCHAR2 DEFAULT NULL,
object_name               IN VARCHAR2 DEFAULT NULL,
proc_name                 IN VARCHAR2 DEFAULT NULL,
use_like                  IN BOOLEAN  DEFAULT NULL,
esc                       IN CHAR1    DEFAULT NULL);

パラメータ

表92-25 SKIP_ERRORプロシージャのパラメータ

パラメータ

説明

stmt

SQL文のセットまたは特定のSQL文を識別するキーワード。(通常はデータベース・オブジェクトで定義される)キーワードを使用すると、指定オブジェクトで動作するすべてのSQL文が識別されるため、構成が簡単になります。表92-23に、キーワードおよびそれに対応するSQL文を示しますが、いずれもこのパラメータの値として有効です。

schema_name

stmtパラメータによって識別されるSQL文と関連付けられる1つ以上のスキーマの名前(ワイルドカードの使用可)。必要でない場合は、この値をNULLに設定してください。

object_name

stmtパラメータによって識別されるSQL文と関連付けられる1つ以上のオブジェクトの名前(ワイルドカードの使用可)。必要でない場合は、この値をNULLに設定してください。

proc_name

SQL適用でエラーが発生し、特定の文がstmt、schema_nameおよびobject_nameパラメータによって定義されたフィルタと一致していると判断されたときにコールされるストアド・プロシージャの名前。次のフォーマットで指定します。

'"schema"."package"."procedure"'

このプロシージャは、SQL適用に対して、次のいずれかを行うように指示するエラー・メッセージを戻します。

- サイレントでエラーをスキップし、SQL適用を継続する。

- 作成されるエラー・メッセージをカスタムのメッセージと置換し、SQL適用を停止する。

- 何もせずSQL適用を停止させ元のエラー・メッセージをログに記録させる。

SQL適用に登録されたプロシージャではパラメータがまったく取得されません。LSBY_APPLY_CONTEXTに関連付けられたコンテキストを使用することで、エラーに関連する情報をすべて取得できます。LSBY_APPLY_CONTEXTに関連付けられたすべてのパラメータのリストは、DBMS_LOGSTDBY_CONTEXTパッケージを参照してください。

SKIP_ERRORに登録されたプロシージャで対象となるパラメータは、CONTAINER_NAME、STATEMENT、STATEMENT_TYPE、SCHEMA、NAME、XIDUSN、XIDSLT、XIDSQN、ERRORおよびNEW_ERRORです。

use_like

パターン・マッチングによって、ロジカル・スタンバイ・データベース上でスキップする表を区別することができます。use_likeパラメータは、2番目の値に指定されたパターンの最初の値を検索して、文字列値の一部を比較し、入力キャラクタ・セットによって定義された文字を使用して、文字列を予想します。このパラメータは、『Oracle Database SQL言語リファレンス』で説明されているパターン・マッチングと同じ規則に従います。

esc

パターン・マッチングに使用できるエスケープ文字(文字"%"または"_"など)を識別します。パターン内の文字%または_の前にエスケープ文字があると、Oracleではこの文字を特殊なパターン・マッチング文字としてではなく、パターン内の文字通りに解釈します。パターン・マッチングの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

使用上の注意

- SKIP_ERRORプロシージャに提供されているストアド・プロシージャは、SQL適用で、スタンバイ・データベースへのREDOログの適用を停止する可能性のあるエラーが発生した場合にコールされます。

- このストアド・プロシージャの実行は、DBA_LOGSTDBY_EVENTS表のSTATUS列に書き込まれるエラーに作用します。STATUS_CODE列は変更されません。ストアド・プロシージャの効果がない、つまり適用が停止された場合は、NEW_ERRORがイベント表に書き込まれます。まったく効果がないようにするには、そのプロシージャでNEW_ERRORをERRORに設定します。

- ストアド・プロシージャで停止の回避が必要な場合は、NEW_ERRORをNULLに設定します。

- このプロシージャを実行するには、DBA権限が必要です。

- USER文では、SCHEMA_NAMEパラメータはユーザーになります。OBJECT_NAMEパラメータには'%'を指定する必要があります。

- PROC_NAMEパラメータを指定する場合は、このプロシージャがDBA_PROCEDURESにすでに存在している必要があり、DEFINERS権限で実行する必要があります。このプロシージャをINVOKERS権限で宣言すると、「ORA-01031: 権限が不足しています」メッセージが戻されます。

- SKIP_ERRORプロシージャのPL/SQLブロックは、次に示す構文を使用して自律型トランザクションであると宣言されていないかぎり、トランザクション制御文(COMMIT、ROLLBACK、SAVEPOINT、SET CONSTRAINTなど)を含むことはできません。

PRAGMA AUTONOMOUS_TRANSACTION

例外

表92-26 SKIP_ERRORプロシージャの例外

例外

説明

ORA-01031

権限が不足しています。

- プロシージャでINVOKER権限が使用されました。

- プロシージャにDBA権限が必要です。

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

ORA-16236

ロジカル・スタンバイ・メタデータ操作は進行中です。

例1

次の例は、GRANT DDLコマンドから発生したエラーをSQL適用でスキップするルールの指定方法を示しています。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP_ERROR('GRANT')

例2

SYSまたはHRスキーマで発生したGRANT文のエラーをスキップするには、プロシージャhandle_error_ddlを定義して登録します。次の例では、handle_error_ddlが、SYSスキーマ内の自立型プロシージャであることを想定しています。

1. エラー・ハンドラ・プロシージャを作成します。

CREATE OR REPLACE PROCEDURE sys.handle_error_ddl
is
l_stmt    VARCHAR2(4000);
l_stmt_type VARCHAR2(40);
l_schema    VARCHAR2(30);
l_name      VARCHAR2(30);
l_xidusn      NUMBER;
l_xidslt      NUMBER;
l_xidsqn      NUMBER;
l_error     VARCHAR2(4000);
l_conname    VARCHAR2(30);
l_newerr   VARCHAR2(4000);

BEGIN
dbms_logstdby_context.get_context(name=>'STATEMENT',value=>l_stmt);
dbms_logstdby_context.get_context(name=>'STATEMENT_TYPE',value=>l_stmt_type);
dbms_logstdby_context.get_context(name=>'SCHEMA',value=>l_schema);
dbms_logstdby_context.get_context(name=>'NAME',value=>l_name);
dbms_logstdby_context.get_context(name=>'XIDUSN',value=>l_xidusn);
dbms_logstdby_context.get_context(name=>'XIDSLT',value=>l_xidslt);
dbms_logstdby_context.get_context(name=>'XIDSQN',value=>l_xidsqn);
dbms_logstdby_context.get_context(name=>'ERROR',value=>l_error);
dbms_logstdby_context.get_context(name=>'CONTAINER_NAME',value=>l_conname);

-- default error to what we already have
l_new_error := l_error;

-- Ignore any GRANT errors on SYS or HR schemas

IF INSTR(UPPER(l_stmt), 'GRANT') > 0
THEN
IF l_schema is NULL
OR (l_schema is NOT NULL AND
(UPPER(l_schema) = 'SYS' OR
UPPER(l_schema) = 'HR')
THEN
l_new_error := NULL;
-- record the fact that we just skipped an error on 'SYS' or 'HR' schemas
-- code not shown here
END IF;
END IF;

dbms_logstdby_context.set_context(name => 'NEW_ERROR', value => l_new_error);

END handle_error_ddl;
/

2. エラー・ハンドラをSQL適用に登録します。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP_ERROR ( -
statement => 'NON_SCHEMA_DDL', -
schema_name => NULL, -
object_name => NULL, -
proc_name => 'SYS.HANDLE_ERROR_DDL');

SKIP_TRANSACTIONプロシージャ

このプロシージャは、ロジカル・スタンバイ・データベースへのトランザクションの適用をスキップする(処理しない)方法を提供します。トランザクション識別情報を指定することによって、特定のトランザクションをスキップできます。

構文

DBMS_LOGSTDBY.SKIP_TRANSACTION (
xidusn          IN NUMBER,
xidslt          IN NUMBER,
xidsqn          IN NUMBER);

パラメータ

表92-27 SKIP_TRANSACTIONプロシージャのパラメータ

パラメータ

説明

XIDUSN NUMBER

スキップ対象トランザクションのトランザクションID UNDOセグメント番号。

XIDSLT NUMBER

スキップ対象トランザクションのトランザクションIDスロット番号。

XIDSQN NUMBER

スキップ対象トランザクションのトランザクションID順序番号。

使用上の注意

特定のトランザクション(例: DDLトランザクション)が原因でSQL適用が停止した場合、そのトランザクションIDを指定して、適用を継続できます。このプロシージャは、SQL適用で処理しないトランザクションの数と同じ回数コールできます。

注意:

SKIP_TRANSACTIONは、本質的に危険な操作です。このプロシージャは、問題のトランザクションをV$LOGMNR_CONTENTSビューで検査し、ロジカル・スタンバイ・データベースで補足アクションを行うまで起動しないでください。SKIP_TRANSACTIONは、表へのDML変更をスキップするために起動するプロシージャとして適切ではありません。

DMLの失敗をスキップするには、SKIP('DML','MySchema','MyFailed Table')というように、SKIPプロシージャを使用します。DMLトランザクションにSKIP_TRANSACTIONプロシージャを使用すると、他の表の変更をスキップすることになり、それらを論理的に壊してしまう可能性があります。

- このプロシージャを実行するには、DBA権限が必要です。

- DBA_LOGSTDBY_SKIP_TRANSACTIONビューを使用すると、SQL適用でスキップされる予定のトランザクションが示されます。

- 『Oracle Database SQL言語リファレンス』のALTER DATABASE START LOGICAL STANDBY SKIP FAILED TRANSACTION文に関する項も参照してください。

例外

表92-28 SKIP_TRANSACTIONプロシージャの例外

例外

説明

ORA-01031

DBA権限が必要です。

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

例

XIDUSN、XIDSLT、XIDSQNがそれぞれ1、13、1726であるDDLトランザクションをスキップするには、次の例に示すルールを登録します。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP_TRANSACTION (-
XIDUSN => 1, XIDSLT => 13, XIDSQN => 1726);

UNSKIPプロシージャ

UNSKIPプロシージャは、SKIPプロシージャで指定済のルールを削除するために使用します。指定済のルールを削除するには、UNSKIPプロシージャで指定するパラメータが正確に一致している必要があります。

container_name引数は、CDBでのみ有効です。

構文

DBMS_LOGSTDBY.UNSKIP (
stmt                      IN VARCHAR2,
schema_name               IN VARCHAR2 DEFAULT NULL,
object_name               IN VARCHAR2 DEFUALT NULL,
container_name            IN VARCHAR2 DEFAULT NULL);

パラメータ

UNSKIPプロシージャのパラメータ情報は、SKIPプロシージャで説明した情報と同じです。パラメータ情報の詳細は、表92-22を参照してください。

例外

表92-29 UNSKIPプロシージャの例外

例外

説明

ORA-01031

このプロシージャを実行するには、DBA権限が必要です。

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

使用上の注意

注意:

表に対するDML変更をスキップし、その補足が行われていない場合、UNSKIPプロシージャのコールの後に、INSTANTIATE_TABLEプロシージャをコールして、その表を、SQL適用によってメンテナンスされる表と同期させる必要があります。

- このプロシージャを実行するには、DBA権限が必要です。

- schema_nameパラメータまたはobject_nameパラメータに渡されたワイルドカードは展開されません。ワイルドカード文字は、文字レベルで照合されます。したがって、UNSKIPプロシージャを起動することで削除できる指定済のルールは1つのみであり、指定済のルールを削除するにはUNSKIPプロシージャを個別にコールする必要があります。
たとえば、HR.EMPLOYEE表およびHR.EMPTEMP表へのDML文の適用をスキップする次の2つのルールが指定済であるとします。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP (STMT => 'DML',-
SCHEMA_NAME => 'HR', -
OBJECT_NAME => 'EMPLOYEE', -
PROC_NAME => null);
SQL> EXECUTE DBMS_LOGSTDBY.SKIP (STMT => 'DML',-
SCHEMA_NAME => 'HR', -
OBJECT_NAME => 'EMPTEMP', -
PROC_NAME => null);

次の例では、TABLE_NAMEパラメータにワイルドカードが使用されていますが、これで指定済のルールを削除することはできません。

SQL> EXECUTE DBMS_LOGSTDBY.UNSKIP (STMT => 'DML',-
SCHEMA_NAME => 'HR', -
OBJECT_NAME => 'EMP%');

TABLE_NAMEパラメータのワイルドカード文字は展開されないため、このUNSKIPプロシージャは、実際にはいずれのルールとも一致しません。この場合、ワイルドカード文字は完全一致で使用され、対応するSKIPルールが検索されます。

UNSKIP_ERRORプロシージャ

UNSKIP_ERRORプロシージャは、SKIP_ERRORプロシージャで指定済のルールを削除するために使用します。指定済のルールを削除するには、UNSKIP_ERRORプロシージャで指定するパラメータが正確に一致している必要があります。

container_name引数は、CDBでのみ有効です。

構文

DBMS_LOGSTDBY.UNSKIP_ERROR (
stmt                      IN VARCHAR2,
schema_name               IN VARCHAR2 DEFAULT NULL,
object_name               IN VARCHAR2 DEFAULT NULL,
container_name            IN VARCHAR2 DEFAULT NULL);

パラメータ

UNSKIP_ERRORプロシージャのパラメータ情報は、SKIP_ERRORプロシージャに関する情報と同じです。パラメータ情報の詳細は、表92-25を参照してください。

例外

表92-30 UNSKIP_ERRORプロシージャの例外

例外

説明

ORA-01031

DBA権限が必要です。

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

使用上の注意

- このプロシージャを実行するには、DBA権限が必要です。

- schema_nameパラメータまたはobject_nameパラメータに渡されたワイルドカードは展開されません。そのかわりに、ワイルドカード文字は他の文字として扱われ、完全一致検索が行われます。したがって、UNSKIP_ERRORプロシージャを起動することで削除できる指定済のルールは1つのみであり、指定済のルールを削除するにはUNSKIP_ERRORプロシージャを個別にコールする必要があります。
たとえば、HR.EMPLOYEE表およびHR.EMPTEMP表を処理する次の2つのルールが指定済であるとします。

SQL> EXECUTE DBMS_LOGSTDBY.SKIP_ERROR (STMT => 'DML',-
SCHEMA_NAME => 'HR', -
OBJECT_NAME => 'EMPLOYEE', -
PROC_NAME => 'hr_employee_handler');
SQL> EXECUTE DBMS_LOGSTDBY.SKIP_ERROR (STMT => 'DML',-
SCHEMA_NAME => 'HR', -
OBJECT_NAME => 'EMPTEMP', -
PROC_NAME => 'hr_tempemp_handler');

この場合、次のUNSKIPプロシージャを使用して、指定済のルールを削除することはできません。

SQL> EXECUTE DBMS_LOGSTDBY.UNSKIP_ERROR (STMT => 'DML',-
SCHEMA_NAME => 'HR', -
OBJECT_NAME => 'EMP%');

OBJECT_NAMEパラメータのワイルドカード文字は展開されないため、このUNSKIPプロシージャは、実際にはいずれのルールとも一致しません。

例

SQL適用に登録済のハンドラを削除して、エラー発生時にコールされないようにするには、次の文を発行します。

DBMS_LOGSTDBY.UNSKIP_ERROR ( -
statement => 'NON_SCHEMA_DDL', -
schema_name => NULL, -
object_name => NULL);

UNSKIP_TRANSACTIONプロシージャ

UNSKIP_TRANSACTIONプロシージャは、SKIP_TRANSACTIONプロシージャで指定済のルールを削除するために使用します。指定済のルールを削除するには、UNSKIP_TRANSACTIONプロシージャで指定するパラメータが正確に一致している必要があります。

構文

DBMS_LOGSTDBY.UNSKIP_TRANSACTION (
xidusn_p         IN NUMBER,
xidslt_p         IN NUMBER,
xidsqn_p         IN NUMBER);

パラメータ

表92-31 UNSKIP_TRANSACTIONプロシージャのパラメータ

パラメータ

説明

XIDUSN

スキップ対象トランザクションのトランザクションID UNDOセグメント番号。

XIDSLT

スキップ対象トランザクションのトランザクションIDスロット番号。

XIDSQN

スキップ対象トランザクションのトランザクションID順序番号。

例外

表92-32 UNSKIP_TRANSACTIONプロシージャの例外

例外

説明

ORA-01031

このプロシージャを実行するには、DBA権限が必要です。

ORA-16103

この操作を許可するにはロジカル・スタンバイ適用を停止する必要があります。

ORA-16104

ロジカル・スタンバイ・オプションのリクエストが無効です。

使用上の注意

- このプロシージャを実行するには、DBA権限が必要です。

- DBA_LOGSTDBY_SKIP_TRANSACTIONビューを問い合せると、SQL適用でスキップされる予定のトランザクションが示されます。

例

XIDUSN、XIDSLT、XIDSQNがそれぞれ1、13、1726であるトランザクションの適用をスキップするように指定されていたルールを削除するには、次の文を発行します。

SQL> DBMS_LOGSTDBY.UNSKIP_TRANSACTION (XIDUSN => 1, XIDSLT => 13, XIDSQN => 1726);

93 DBMS_LOGSTDBY_CONTEXT

Oracle Database 12cリリース1(12.1)では、SQL適用プロセスによってLSBY_APPLY_CONTEXTという名前のコンテキスト・ネームスペースにアクセスできます。DBMS_LOGSTDBY_CONTEXTパッケージで提供されるプロシージャを使用することで、LSBY_APPLY_CONTEXTに関連付けられた様々なパラメータを設定および取得できます。これは、DBMS_LOGSTBDY.SKIPプロシージャおよびDBMS_LOGSTDBY.SKIP_ERRORプロシージャを使用してSQL適用に登録するSKIPプロシージャを記述する際に役に立ちます。

関連項目:
SQL適用およびロジカル・スタンバイ・データベースの詳細は、『Oracle Data Guard概要および管理』を参照してください。

この章では、次の項目について説明します。

- DBMS_LOGSTDBY_CONTEXTの使用方法

- 概要

- セキュリティ・モデル

- DBMS_LOGSTDBY_CONTEXTサブプログラムの概要

DBMS_LOGSTDBY_CONTEXTの使用方法

- 概要

- セキュリティ・モデル

概要

SQL適用プロセスは、LSBY_APPLY_CONTEXTという名前のコンテキスト・ネームスペースにアクセスできます。表93-1には、DBMS_LOGSTDBY_CONTEXTパッケージで提供されるプロシージャを使用することで設定および取得が可能なLSBY_APPLY_CONTEXTと関連付けられた事前定義済のパラメータがリストされています。この方法でパラメータの設定および取得ができると、DBMS_LOGSTBDY.SKIPプロシージャおよびDBMS_LOGSTDBY.SKIP_ERRORプロシージャを使用してSQL適用に登録するSKIPプロシージャを記述する際に役に立ちます。

表93-1 ネームスペースLSBY_APPLY_CONTEXTの事前定義済のプロシージャ

パラメータ

説明

STATEMENT

Applyプロセスで処理している文の最初の4000バイト。

STATEMENT_TYPE

各種文タイプのリストは表92-23を参照してください。

PACKAGE_SCHEMA

処理されるPL/SQLパッケージを所有するスキーマ(該当する場合)。

PACKAGE_NAME

処理されるPL/SQLパッケージの名前(該当する場合)。

PROCEDURE_NAME

処理されるPL/SQLプロシージャの名前(該当する場合)。

CURRENT_SCHEMA

DDLまたはPL/SQLプロシージャがプライマリで実行されていた場合に有効な現在のスキーマ。

XIDUSN

プライマリ・データベースでのトランザクションのXIDUSN。

XIDSLT

プライマリ・データベースでのトランザクションのXIDSLT。

XIDSQN

プライマリ・データベースでのトランザクションのXIDSQN。

SCHEMA

SQL適用で処理されるオブジェクトを所有するスキーマ(DML操作またはDDL操作の場合)。

NAME

SQL適用で処理されるオブジェクト名(DML操作またはDDL操作の場合)。

CONTAINER_NAME

ターゲット・オブジェクトまたはPL/SQLプロシージャが常駐するコンテナ(マルチテナント・コンテナ・データベース(CDB)の場合)。

ERROR

SQL適用プロセスで発生した元のエラーのテキスト(該当する場合)。

NEW_ERROR

SQL適用プロセスで発生した新しいエラーのテキスト(該当する場合は、DBMS_LOGSTDBYのSKIP_ERRORプロシージャを参照)。

NEW_STMT

SQL適用での実行が必要な置換文のテキスト(該当する場合は、DBMS_LOGSTDBYのSKIPプロシージャを参照)。

SKIP_ACTION

SQL適用で実行されるスキップ・アクション(DBMS_LOGSTDBYのSKIPプロシージャを参照)。

セキュリティ・モデル

DBMS_LOGSTDBY_CONTEXTパッケージのセキュリティ・モデルはDBMS_LOGSTDBYパッケージのものと同じです。

関連項目:
DBMS_LOGSTDBY

DBMS_LOGSTDBY_CONTEXTサブプログラムの概要

表93-2 DBMS_LOGSTDBY_CONTEXTパッケージのサブプログラム

サブプログラム

説明

CLEAR_ALL_CONTEXTプロシージャ

ネームスペースLSBY_APPLY_CONTEXT内に含まれるすべてのパラメータを消去します。

CLEAR_CONTEXTプロシージャ

特定のパラメータを消去します。

GET_CONTEXTプロシージャ

指定されたパラメータの値を取得します。

SET_CONTEXTプロシージャ

指定された値を持つ名前付きパラメータを設定します。

CLEAR_ALL_CONTEXTプロシージャ

このプロシージャは、ネームスペースLSBY_APPLY_CONTEXT内に含まれるすべてのパラメータを消去します。

構文

DBMS_LOGSTDBY_CONTEXT.CLEAR_ALL_CONTEXT;

パラメータ

なし

CLEAR_CONTEXTプロシージャ

このプロシージャは、特定のパラメータを消去します。

構文

DBMS_LOGSTDBY_CONTEXT.CLEAR_CONTEXT (
name            IN VARCHAR2);

パラメータ

表93-3 CLEAR_CONTEXTプロシージャのパラメータ

パラメータ

説明

name

消去されたパラメータの名前。

GET_CONTEXTプロシージャ

このプロシージャは、指定されたパラメータの値を取得します。

構文

DBMS_LOGSTDBY_CONTEXT.GET_CONTEXT (
name            IN VARCHAR2,
value           OUT VARCHAR2);

パラメータ

表93-4 GET_CONTEXTプロシージャのパラメータ

パラメータ

説明

name

パラメータの名前。

value

パラメータで取得された値。

SET_CONTEXTプロシージャ

このプロシージャは、指定された値を持つ名前付きパラメータを設定します。

構文

DBMS_LOGSTDBY_CONTEXT.SET_CONTEXT (
name            IN VARCHAR2
value           IN VARCHAR2);

パラメータ

表93-5 SET_CONTEXTプロシージャのパラメータ

パラメータ

説明

name

設定するパラメータの名前。

value

設定するパラメータに割り当てられる値。

94 DBMS_METADATA

DBMS_METADATAパッケージには、データベース・ディクショナリからXMLまたは作成DDLとしてメタデータを取り出す機能と、データベースにXMLを送信してオブジェクトを再作成する機能があります。

関連項目:
メタデータAPIの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。

この章では、次の項目について説明します。

- DBMS_METADATAの使用方法

- 概要

- セキュリティ・モデル

- ルールおよび制限

- データ構造: オブジェクト・タイプおよび表タイプ

- サブプログラムのグループ化

- データベースから複数のオブジェクトを取り出すためのサブプログラム

- データベースにXMLを送信するためのサブプログラム

- すべてのDBMS_METADATAサブプログラムの要約

DBMS_METADATAの使用方法

この項では、DBMS_METADATAパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- ルールおよび制限

概要

DBMS_METADATAパッケージには、メタデータを取り出す機能とXMLを送信する機能があります。この機能については次の項で説明します。

- メタデータの取出し

- XMLの送信

メタデータの取出し

メタデータを取り出すときは、次の事項を指定できます。

- 取り出すオブジェクトのタイプ。特定のタイプのオブジェクト(表、索引、プロシージャなど)、または異なるタイプのオブジェクトからなるコレクション(データベースのエクスポートやスキーマのエクスポートなど、特定の論理ユニットを形成するオブジェクトのコレクション)を指定できます。

- 所有者または名前などの選択条件(任意指定)。

- 解析項目(解析され、個別に戻される戻りオブジェクトの属性)。

- XSLT(eXtensible Stylesheet Language Transformation)スクリプトによって実装される、出力時の変換(任意指定)。デフォルトでは、XML形式の出力が取り出されますが、データベース内または外部に保存されたXSLTスタイルシートを通じて出力に適用する変換(SQL DDLなどへの変換)を指定できます。

DBMS_METADATAに備わっている取出しインタフェースは次のとおりです。

- プログラミング用: OPEN、SET_FILTER、SET_COUNT、GET_QUERY、SET_PARSE_ITEM、ADD_TRANSFORM SET_TRANSFORM_PARAM、SET_REMAP_PARAM、FETCH_xxxおよびCLOSEは複数のオブジェクトを取り出します。

- SQL問合せおよびブラウズ用: GET_XML、GET_DDLおよびGET_SXMLは、単一の名前付きオブジェクトのメタデータを戻します。GET_DEPENDENT_XML、GET_DEPENDENT_DDL、GET_GRANTED_XMLおよびGET_GRANTED_DDLインタフェースは、1つ以上の依存オブジェクトまたは権限付与オブジェクトのメタデータを戻します。これらのプロシージャでは、異種オブジェクト・タイプを処理できません。

XMLの送信

XMLを送信するときは、次の事項を指定できます。

- オブジェクトのタイプ

- オブジェクトの属性を変更する(たとえば、オブジェクトの所有者を変更する)変換パラメータ(任意指定)

- 解析項目(送信するオブジェクトの属性のうち、個別に解析して送信する属性)

- 作成されたDDLをそのまま戻すか、なんらかの処理を実行するかの指定

DBMS_METADATAには、XMLを送信するためのプログラム・インタフェースが用意されています。このプログラム・インタフェースを構成するプロシージャは、OPENW、ADD_TRANSFORM、SET_TRANSFORM_PARAM、SET_REMAP_PARAM、SET_PARSE_ITEM、CONVERT、PUTおよびCLOSEです。

セキュリティ・モデル

DBMS_METADATAパッケージでは、SYSとして接続されているユーザーまたはSELECT_CATALOG_ROLEロールを持つユーザーを特権ユーザーとみなします。Oracleメタデータ・モデルのオブジェクト・ビューでは、次のような方法でセキュリティが実現されています。

- 非権限ユーザーは、自分が所有するオブジェクトのメタデータのみを参照できます。

- 非権限ユーザーは、パブリック・シノニム、自分に付与されたシステム権限、自分に付与されたオブジェクト権限または自分が他のユーザーに付与したオブジェクト権限を取り出せます。また、PUBLICに付与された権限を取り出せます。

- 取出し権限が付与されていないオブジェクトをコール元が要求した場合、例外は発生せず、単にオブジェクトが取り出されません。

- 他のユーザーのスキーマ内にあるオブジェクトに対するなんらかの形式のアクセス権限が非権限ユーザーに付与された場合、その非権限ユーザーはメタデータAPIを通じて権限付与情報を参照できますが、オブジェクトの実際のメタデータは取り出せません。

- ストアド・プロシージャ、ストアド・ファンクション、定義者権限パッケージでは、ロール(SELECT_CATALOG_ROLEなど)を使用できません。したがって、これらのPL/SQLプログラムでは、それ自体のスキーマ内にあるオブジェクトのメタデータしかフェッチできません。(実行者が所有するSELECT_CATALOG_ROLEを通じて)別のスキーマ内にあるオブジェクトのメタデータをフェッチするPL/SQLプログラムを作成するには、実行者権限をPL/SQLプログラムに付与する必要があります。

- パスワードを持つすべてのオブジェクトに対して、データベース・リンク(ユーザーやロールなど)を除き、次のルールが適用されます。

- SELECT_CATALOG_ROLEを持つユーザーは、パスワードを除いて、該当するオブジェクトのすべてのメタデータを参照できます。

- SYSユーザー、EXP_FULL_DATABASEロールを持つユーザー、およびオブジェクトを所有するユーザーは、パスワードを含めて、該当するオブジェクトのすべてのメタデータを参照できます。

- データベース・リンクには、パスワードは表示されません。セキュリティ上の理由から、Oracleでは、link$.passwordx列に直接問い合せを行うSYSユーザーに対してパスワード値の可視性を制限しています。パスワードのかわりに、DBMS_METADATAでは、次の無効な構文が戻されます。

IDENTIFIED BY VALUES ':1'

データベース・リンクのパスワードを知っているユーザーは、手動で:1をパスワードに置き換えます。

ルールおよび制限

Oracle Shared Server(OSS)環境では、DBMS_METADATAパッケージによってセッションの移行と接続プーリングが禁止されます。そのため、パッケージを実行しているセッションを管理する共有サーバー・プロセスが、セッションの全期間にわたって実質的にデフォルトの専用サーバーとなります。パッケージを使用するときは、十分な数の共有サーバーを構成するとともに、MAX_SHARED_SERVERS初期化パラメータの値が小さいために共有サーバーの数が人為的に制限されないように注意する必要があります。

データ構造: オブジェクト・タイプおよび表タイプ

DBMS_METADATAパッケージは、SYSスキーマ内で、次のOBJECTタイプおよびTABLEタイプを定義します。

CREATE TYPE sys.ku$_parsed_item AS OBJECT (
item            VARCHAR2(30),
value           VARCHAR2(4000),
object_row      NUMBER )
/

CREATE PUBLIC SYNONYM ku$_parsed_item FOR sys.ku$_parsed_item;

CREATE TYPE sys.ku$_parsed_items IS TABLE OF sys.ku$_parsed_item
/

CREATE PUBLIC SYNONYM ku$_parsed_items FOR sys.ku$_parsed_items;

CREATE TYPE sys.ku$_ddl AS OBJECT (
ddlText        CLOB,
parsedItems sys.ku$_parsed_items )
/

CREATE PUBLIC SYNONYM ku$_ddl FOR sys.ku$_ddl;

CREATE TYPE sys.ku$_ddls IS TABLE OF sys.ku$_ddl
/

CREATE PUBLIC SYNONYM ku$_ddls FOR sys.ku$_ddls;

CREATE TYPE sys.ku$_multi_ddl AS OBJECT (
object_row     NUMBER,
ddls           sys.ku$_ddls )
/

CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddl FOR sys.ku$_multi_ddl;

CREATE TYPE sys.ku$_multi_ddls IS TABLE OF sys.ku$_multi_ddl;
/

CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddls FOR
sys.ku$_multi_ddls;

CREATE TYPE sys.ku$_ErrorLine IS OBJECT (
errorNumber    NUMBER,
errorText      VARCHAR2(2000) )
/

CREATE PUBLIC SYNONYM ku$_ErrorLine FOR sys.ku$_ErrorLine;

CREATE TYPE sys.ku$_ErrorLines IS TABLE OF sys.ku$_ErrorLine
/
CREATE PUBLIC SYNONYM ku$ErrorLines FOR sys.ku$_ErrorLines;

CREATE TYPE sys.ku$_SubmitResult AS OBJECT (
ddl          sys.ku$_ddl,
errorLines   sys.ku$_ErrorLines );
/

CREATE TYPE sys.ku$_SubmitResults IS TABLE OF sys.ku$_SubmitResult
/

CREATE PUBLIC SYNONYM ku$_SubmitResults FOR sys.ku$_SubmitResults;

注意:
COMPATIBLE初期化パラメータを12.0に、MAX_STRING_SIZE初期化パラメータをEXTENDEDに設定すると、VARCHAR2、NVARCHAR2およびRAWの各データ・タイプの最大サイズを32KBに増やせます。12.1より前のバージョンのメタデータでないかぎり、DBMS_METADATAパッケージでは、このサイズの増加がサポートされます。

サブプログラムのグループ化

DBMS_METADATAのサブプログラムの使用目的は、データベースからオブジェクトを取り出すこと、およびデータベースにXMLを送信することです。サブプログラムの中には、これら2つの目的に使用されるものと、一方の目的(取出しまたは送信)のみに使用されるものがあります。

- 表94-1に、データベースから複数のオブジェクトを取り出すために使用されるDBMS_METADATAサブプログラムの要約をアルファベット順に示します。

- 表94-2に、XMLメタデータをデータベースに送信するために使用されるDBMS_METADATAサブプログラムの要約をアルファベット順に示します。

データベースから複数のオブジェクトを取り出すためのサブプログラム

表94-1に、データベースから複数のオブジェクトを取り出すためのサブプログラムを示します。

表94-1 複数のオブジェクトを取り出すためのDBMS_METADATAサブプログラム

サブプログラム

説明

ADD_TRANSFORMファンクション

取り出されるオブジェクトを表すXML文書にFETCH_xxxを通じて適用される変換を指定します。

CLOSEプロシージャ2

OPENにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。

FETCH_xxxファンクションおよびプロシージャ

OPEN、SET_FILTER、SET_COUNT、ADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。

GET_QUERYファンクション

FETCH_xxxによって使用される問合せのテキストを戻します。

GET_xxxファンクション

単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。

OPENファンクション

取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。

SET_COUNTプロシージャ

FETCH_xxxへの1回のコールで取り出されるオブジェクトの最大数を指定します。

SET_FILTERプロシージャ

取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。

SET_PARSE_ITEMプロシージャ

解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。

SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ

transform_handleによって特定されるXSLTスタイルシートにパラメータを指定します。

データベースにXMLを送信するためのサブプログラム

表94-2に、データベースにXMLを送信するためのサブプログラムを示します。

表94-2 XMLを送信するためのDBMS_METADATAサブプログラム

サブプログラム

説明

ADD_TRANSFORMファンクション

XML文書に対する変換を指定します。

CLOSEプロシージャ2

OPENWで開いたコンテキストを閉じます。

CONVERTファンクションおよびプロシージャ

XML文書をDDLに変換します。

OPENWファンクション

書込みコンテキストを開きます。

PUTファンクション

XML文書をデータベースに送信します。

SET_PARSE_ITEMプロシージャ

解析するオブジェクト属性を指定します。

SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ

SET_TRANSFORM_PARAMは、変換に関するパラメータを指定します。

SET_REMAP_PARAMは、変換の再マッピングを指定します。

すべてのDBMS_METADATAサブプログラムの要約

表94-3 DBMS_METADATAパッケージのサブプログラム

サブプログラム

説明

ADD_TRANSFORMファンクション

取り出されるオブジェクトを表すXML文書にFETCH_xxxを通じて適用される変換を指定します。

CLOSEプロシージャ2

OPENにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。

CONVERTファンクションおよびプロシージャ

XML文書をDDLに変換します。

FETCH_xxxファンクションおよびプロシージャ

OPEN、SET_FILTER、SET_COUNT、ADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。

GET_xxxファンクション

単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。

GET_QUERYファンクション

FETCH_xxxによって使用される問合せのテキストを戻します。

OPENファンクション

取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。

OPENWファンクション

書込みコンテキストを開きます。

PUTファンクション

XML文書をデータベースに送信します。

SET_COUNTプロシージャ

FETCH_xxxへの1回のコールで取り出されるオブジェクトの最大数を指定します。

SET_FILTERプロシージャ

取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。

SET_PARSE_ITEMプロシージャ

解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。

SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ

transform_handleによって特定されるXSLTスタイルシートにパラメータを指定します。

ADD_TRANSFORMファンクション

このファンクションは、取出しと送信の両方の目的に使用されます。

- このファンクションをオブジェクトの取出しに使用するときは、取り出されるオブジェクトを表すXML文書にFETCH_xxxを通じて適用される変換を指定します。

- オブジェクトの送信に使用するときは、送信されるオブジェクトを表すXML文書にCONVERTまたはPUTを通じて適用される変換を指定します。複数の変換を追加することが可能です。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

- データベースにXMLを送信するためのサブプログラム

- 変換の出力の変更方法およびカスタマイズ方法の詳細は、「SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ」を参照してください。

構文

DBMS_METADATA.ADD_TRANSFORM (
handle       IN NUMBER,
name         IN VARCHAR2,
encoding     IN VARCHAR2 DEFAULT NULL,
object_type  IN VARCHAR2 DEFAULT NULL)
RETURN NUMBER;

パラメータ

表94-4 ADD_TRANSFORMファンクションのパラメータ

パラメータ

説明

handle

取り出されるオブジェクトに変換を適用するときは、OPENから戻されるハンドル。または、送信されるXMLメタデータに変換を適用するときは、OPENWから戻されるハンドル。

name

変換名。この変換名にピリオド(.)、コロン(:)またはスラッシュ(/)が含まれている場合、ユーザーが提供するXSLTスクリプトのURLとして解釈されます。詳細は、『Oracle XML DB開発者ガイド』を参照してください。

それ以外の場合、このnameパラメータはDBMS_METADATAによって実行される変換を指定します。

使用可能な変換の詳細は、表94-5を参照してください。

encoding

nameパラメータで指定されたスタイルシートがエンコードされるグローバリゼーション・サポート・キャラクタ・セットの名前。このパラメータは、nameがURLである場合のみ有効です。このパラメータがNULLのままで、URLがデータベースの外部を指している場合は、UTF-8エンコーディングが適用されます。このパラメータがNULLのままで、URLがデータベースの内部を指している(つまり、URLが/oradb/で始まっている)場合は、データベース・キャラクタ・セットがエンコーディングに使用されます。

object_type

このパラメータの定義は、オブジェクトを取り出すのか、XMLメタデータを送信するのかに応じて異なります。

1. オブジェクトを取り出すためにADD_TRANFORMを使用する場合、object_typeは次のように定義されます。
変換が適用されるオブジェクト・タイプを指定します。(オブジェクトのパス名ではなくタイプ名を指定することに注意してください。)デフォルトでは、OPENハンドルのオブジェクト・タイプに変換が適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合は、次のような動作になります。

- object_typeが省略されている場合は、異種コレクション内部のすべてのオブジェクト・タイプに変換が適用されます。

- object_typeが指定されている場合は、異種コレクション内部の指定されたオブジェクト・タイプのみに変換が適用されます。
このパラメータを省略すると、1回のコールで異種コレクション内部のすべてのオブジェクトにDDL変換を追加できます。このパラメータを指定すると、異種コレクション内部の指定されたオブジェクト・タイプに対する変換を追加できます。

2. XMLメタデータを送信するためにADD_TRANSFORMを使用する場合、このパラメータには変換が適用されるオブジェクトのタイプを指定します。デフォルトでは、OPENWハンドルのオブジェクト・タイプに変換が適用されます。OPENWハンドルは異種オブジェクト・タイプを指定できないため、ADD_TRANSFORMコールでは、通常このパラメータをNULLのままにしておきます。

表94-5 ADD_TRANSFORMファンクションで使用可能な変換

オブジェクト・タイプ

変換名

入力ドキュメント・タイプ

出力ドキュメント・タイプ

説明

すべて

DDL

XML

DDL

XMLをSQLに変換してオブジェクトを作成

すべて

MODIFY

XML

XML

変換パラメータに従って、XMLドキュメントを変更

サブセット

SXML

XML

SXML

XMLをSXMLに変換

サブセット

MODIFYSXML

SXML

SXML

変換パラメータに従って、SXMLドキュメントを変更

サブセット

SXMLDDL

SXML

DDL

SXMLをDDLに変換

サブセット

ALTERXML

SXML差分ドキュメント

ALTER_XML

SXML差分ドキュメントからALTER_XMLを生成(SXML差分形式の詳細は、DBMS_METADATA_DIFF PL/SQLパッケージを参照してください。)

ALTERXML変換に有効なパラメータは、次のとおりです。

- XPATH: 変更するオブジェクトのXPATH

- NAME: 変更するオブジェクトの名前

- ALTERABLE: オブジェクトが変更可能であることを示します。オブジェクトを変更できない場合、NOT_ALTERABLE要素が挿入されます。この値は理由を示します。

- CLAUSE_TYPE: 句のタイプ(ADD_COLUMNなど)

- COLUMN_ATTRIBUTE: 変更する属性

- CONSTRAINT_TYPE: 制約のタイプ(UNIQUEやPRIMARYなど)

サブセット

ALTERDDL

ALTER_XML

ALTER_DDL

ALTER_XMLをALTER_DDLに変換

戻り値

このファンクションから戻される不透明なハンドルは、SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMへの入力として使用されます。このハンドルはOPENまたはOPENWから戻されるハンドルとは異なり、取り出されるオブジェクトではなく変換を指します。

使用上の注意

- 変換が追加されない場合、デフォルトではXML文書としてオブジェクトが戻されます。戻されるXML文書の変換に使用するXSLTスタイルシートを指定するには、ADD_TRANSFORMをコールします。

- XML文書に対して複数の変換を適用するには、ADD_TRANSFORMを複数回コールします。変換は指定された順序で適用されるため、最初の変換の出力は2番目の変換の入力として使用されます(以降同様)。

- DDL変換の出力はXML文書ではありません。したがって、DDL変換の後に変換を追加しないでください。

- 個々の変換は、特定形式のXML文書を入力として予測します。入力文書が指定されていない場合、メタデータXML形式が想定されます。

- ALTERXML変換を使用する場合、解析項目がALTER_XML文書のPARSE_LIST要素に戻されます。各PARSE_LIST_ITEM要素には、ITEMおよびVALUEが含まれます。次に例を示します。

<PARSE_LIST>
<PARSE_LIST_ITEM>
<ITEM>XPATH</ITEM>
<VALUE>/sxml:TABLE/sxml:RELATIONAL_TABLE/sxml:COL_LIST/sxml:COL_LIST_ITEM[14]</VALUE>
</PARSE_LIST_ITEM>
<PARSE_LIST_ITEM>
<ITEM>NAME</ITEM>
<VALUE>Z1</VALUE>
</PARSE_LIST_ITEM>
<PARSE_LIST_ITEM>
<ITEM>CLAUSE_TYPE</ITEM>
<VALUE>ADD_COLUMN</VALUE>
</PARSE_LIST_ITEM>
<PARSE_LIST_ITEM>
<ITEM>COLUMN_ATTRIBUTE</ITEM>
<VALUE>NOT_NULL</VALUE>
</PARSE_LIST_ITEM>
</PARSE_LIST>

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、ADD_TRANSFORMがコールされました。FETCH_xxxへの最初のコールの後で、現行のOPENコンテキストに対して、それ以上ADD_TRANSFORMをコールできません。

- INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。

- nameがURLでないにもかかわらず、encodingが指定されています。

- handleによって指定されるコレクションにobject_typeが属していません。

CLOSEプロシージャ

このプロシージャは、取出しと送信の両方の目的に使用されます。このプロシージャは、OPEN(またはOPENW)から戻されるハンドルを無効にして、関連する状態をクリーンアップします。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

- データベースにXMLを送信するためのサブプログラム

構文

DBMS_METADATA.CLOSE (
handle  IN NUMBER);

パラメータ

表94-6 CLOSEプロシージャのパラメータ

パラメータ

説明

handle

OPEN(またはOPENW)から戻されたハンドル。

使用上の注意

注意:
次の注意は、オブジェクトの取出しにのみ適用されます。

このプロシージャを使用すると、OPEN(またはOPENW)によって確立されたオブジェクトのストリームを早期終了できます。

- FETCH_xxxへのコールでオブジェクトが存在しないことを示すNULLが戻された場合、CLOSEへのコールが透過的に行われます。その場合に、ハンドルのCLOSEをコールしても、例外は発生しません。(CLOSEへのコールは不要です。)

- 1つの特定オブジェクトのみが戻されるとわかっている場合、FETCH_xxxを一度コールしてハンドルに保持されたリソースを解放した後、CLOSEを明示的にコールしてください。

例外

- INVALID_ARGVAL。handleパラメータに対して指定した値がNULLまたは無効です。

CONVERTファンクションおよびプロシージャ

CONVERTファンクションおよびプロシージャは、入力XML文書を変換します。CONVERTファンクションは、作成DDLを戻します。CONVERTプロシージャは、指定した変換に応じて、XMLまたはDDLのいずれかを戻します。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースにXMLを送信するためのサブプログラム

構文

CONVERTファンクションは、次のとおりです。

DBMS_METADATA.CONVERT (
handle   IN NUMBER,
document IN sys.XMLType)
RETURN sys.ku$_multi_ddls;

DBMS_METADATA.CONVERT (
handle   IN NUMBER,
document IN CLOB)
RETURN sys.ku$_multi_ddls;

CONVERTプロシージャは、次のとおりです。

DBMS_METADATA.CONVERT (
handle   IN NUMBER,
document IN sys.XMLType,
result   IN OUT NOCOPY CLOB);

DBMS_METADATA.CONVERT (
handle   IN NUMBER,
document IN CLOB,
result   IN OUT NOCOPY CLOB);

パラメータ

表94-7 CONVERTサブプログラムのパラメータ

パラメータ

説明

handle

OPENWから戻されたハンドル

document

OPENWハンドルのタイプに適したオブジェクト・メタデータが保存されたXML文書

result

変換された文書

戻り値

指定した変換に応じて、XMLまたはDDLのいずれかを戻します。

使用上の注意

CONVERTは、FETCH_xxxの後半(ファンクションの変数の場合はFETCH_DDL、プロシージャの変数の場合はFETCH_CLOB)と類似しています。相違点は、次の2点です。

- FETCH_xxxがデータベースからXML文書を取得するのに対して、CONVERTはコール元からXML文書を取得すること

- FETCH_DDLがネストした表sys.ku$_ddlsに結果を戻すのに対して、CONVERTはネストした表sys.ku$_multi_ddlsを戻すこと

ADD_TRANSFORMで指定された変換が適用されると、変換結果はコール元に戻されます。ファンクションの変数の場合は、DDL変換を指定する必要があります。解析項目が指定された場合は、parsedItems列に解析項目が戻されます。プロシージャの変数の場合、解析項目は無視されます。

XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENWに指定されているデータベース・バージョンで有効です。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INCONSISTENT_OPERATION。変換が指定されていません。DDL変換が指定されていません(ファンクションの変数の場合のみ)。

- INCOMPATIBLE_DOCUMENT。XML文書のバージョンとソフトウェアの現行バージョン間に互換性がありません。

FETCH_xxxファンクションおよびプロシージャ

これらのファンクションおよびプロシージャは、OPEN、SET_FILTER、SET_COUNT、ADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。変数については、「使用上の注意」を参照してください。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

構文

FETCHファンクションは、次のとおりです。

DBMS_METADATA.FETCH_XML (
handle  IN NUMBER)
RETURN sys.XMLType;

関連項目:
XMLTypeの詳細は、『Oracle XML DB開発者ガイド』を参照してください。

DBMS_METADATA.FETCH_DDL (
handle  IN NUMBER)
RETURN sys.ku$_ddls;

DBMS_METADATA.FETCH_CLOB (
handle       IN NUMBER,
cache_lob    IN BOOLEAN DEFAULT TRUE,
lob_duration IN PLS INTEGER DEFAULT DBMS_LOB.SESSION)
RETURN CLOB;

FETCHプロシージャは次のとおりです。

DBMS_METADATA.FETCH_CLOB (
handle  IN NUMBER,
doc     IN OUT NOCOPY CLOB);

DBMS_METADATA.FETCH_XML_CLOB (
handle  IN NUMBER,
doc     IN OUT NOCOPY CLOB,
parsed_items OUT sys.ku$_parsed_items,
object_type_path OUT VARCHAR2);

パラメータ

表94-8 FETCH_xxxファンクションのパラメータ

パラメータ

説明

handle

OPENから戻されたハンドル。

cache_lob

TRUEの場合、LOBをバッファ・キャッシュに読み込みます。

lob_duration

FETCH_CLOBによって作成された一時LOBの継続時間。DBMS_LOB.SESSION(デフォルト)またはDBMS_LOB.CALL。

doc

オブジェクトのメタデータ。すべてのオブジェクトが戻された場合はNULL。

parsed_items

SET_PARSE_ITEMによって指定された項目が格納されたネストした表。SET_PARSE_ITEMがコールされていない場合は、NULLが戻されます。

object_type_path

異種オブジェクト・タイプを指している場合は、FETCH_XXXへのコールから戻されるオブジェクトのオブジェクト・タイプを表すフルパス名。handleが同種のオブジェクト・タイプを指している場合は、NULLが戻されます。

戻り値

オブジェクトのメタデータ。すべてのオブジェクトが戻された場合はNULL。

使用上の注意

これらのファンクションは、ハンドルを戻したOPEN、およびそれ以降にコールされたSET_FILTER、SET_COUNT、ADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。FETCH_xxxへの各コールは、すべてのオブジェクトが戻されるまで、SET_COUNTによって指定された個数(元のカーソルに保持されたオブジェクトが少ない場合はそれ以下の個数)のオブジェクトを戻します。最後のオブジェクトが戻された後で、FETCH_xxxを再度コールすると、NULLが戻され、OPENによって作成されたストリームが透過的にクローズされます。

FETCH_xxxファンクションは、複数のファンクションとプロシージャからなります。

- FETCH_XMLファンクションは、オブジェクトのXMLメタデータをXMLTypeとして戻します。変換が指定されている場合は、その変換がXML文書を作成することを前提とします。特別に、DDL変換は指定されていないことを前提とします。

- FETCH_DDLファンクションは、オブジェクトを作成するDDLをネストした表sys.ku$_ddlsに戻します。DDL変換が指定されていることを前提とします。ネストした表sys.ku$_ddlsの各行には、ddlText列に単一のDDL文が含まれ、要求があれば、DDL文に対して解析された項目がparsedItems列に戻されます。次の状況では、複数のDDL文が戻される場合があります。

- SET_COUNTをコールして1を超える件数を指定した場合。

- オブジェクトが複数のDDL文に変換された場合。たとえば、DDL変換が適用されたTYPEオブジェクトは、CREATE TYPE文とCREATE TYPE BODY文に変換される可能性があります。また、TABLEオブジェクトは、1つのCREATE TABLE文、および1つ以上のALTER TABLE文に変換される可能性があります。

- FETCH_CLOBファンクションは、変換の有無にかかわらず、CLOBとしてオブジェクトを戻します。デフォルトでは、CLOBは、バッファ・キャッシュに読み込まれ、セッション継続時間が指定されますが、これらのデフォルト値は、cache_lobおよびlob_durationパラメータで上書きできます。

- FETCH_CLOBプロシージャは、IN OUT NOCOPYパラメータの参照によりオブジェクトを戻します。これは、LOBを値で戻すファンクションの変数(非効率的なLOBコピーを行う方法)より高速です。

- FETCH_XML_CLOBプロシージャは、オブジェクトのXMLメタデータをCLOBとしてIN OUT NOCOPYパラメータに戻します。これにより、多くのリソースを消費する可能性のあるLOBコピーが不要になります。解析項目のネストした表と、戻されるオブジェクトのオブジェクト・タイプを表すフルパス名も戻されます。

- FETCH_xxxから戻されるLOBはすべて一時LOBです。これらのLOBは解放する必要があります。IN OUT NOCOPYパラメータとしてLOBを渡す場合は、新しいLOBを作成する必要があります。

- SET_PARSE_ITEMがコールされた場合、FETCH_DDLとFETCH_XML_CLOBは、オブジェクトのメタデータの属性(またはDDL文)をネストした表sys.ku$_parsed_itemsに戻します。FETCH_XML_CLOBプロシージャでは、ネストした表がOUTパラメータの1つになっています。FETCH_DDLファンクションでは、戻されるネストした表sys.ku$_ddlsの1つの列がsys.ku$_parsed_itemsです。ネストした表の各行は、SET_PARSE_ITEMで指定される項目に対応しており、次の列からなります。

- item - SET_PARSE_ITEMのnameパラメータで指定される属性名。

- value - 属性値。属性がDDL文に存在しない場合はNULL。

- object_row - 解析項目が適用されるオブジェクトを示す正の整数。(SET_COUNTで1を超える件数が指定されているために) FETCH_xxxから複数のオブジェクトが戻される場合、object_row=1を指定すると、最初のオブジェクトのすべての項目が解析対象となり、2を指定すると、2番目のオブジェクトのすべての項目が解析対象となります(以降同様)。

- ネストした表sys.ku$_parsed_itemsの各行は、object_rowの値の昇順に並べ替えられますが、それ以外の並べ替え順序は定義されていません。オブジェクトの各行から特定の解析項目を取り出すには、itemの値を条件として表を検索する必要があります。

- 一般的に、要求した解析項目が戻される保証はありません。たとえば、特定のDDL行またはオブジェクト・タイプに解析項目が適用されない場合や、項目値がNULLである場合などが考えられます。

- SET_PARSE_ITEMがコールされなかった場合は、ネストした表の解析項目の値としてNULLが戻されます。

- OPENによって選択されるすべてのオブジェクトに対して、同じ種類のFETCH_xxxがコールされることが前提とされます。つまり、プログラムは、同じOPENハンドルを使用したFETCH_XML、FETCH_DDL、FETCH_CLOBなどへのコールを混合しません。異形をコールした場合の影響は定義されていないため、期待どおりの結果が得られる場合もありますが、なんら保証はありません。

- フェッチされるすべてのオブジェクトは、ディクショナリに対する進行中のDDL操作(およびそれ以降のDML操作)に関して、内部的な一貫性が保証されます。ただし、複数の異なるタイプのオブジェクトが混在している場合や、パフォーマンス上の理由から(ヒープ表と索引構成表に対して別々の問合せを発行する場合など)、複数の問合せが発行される可能性があります。そのため、FETCH_xxxへの各コールでは、異なるカーソルからデータをフェッチする場合があります(これは読取り一貫性が保証されないことを意味します)。

例外

問合せの実行中に発生した例外の大部分は、コール元に伝播されます。また、次の例外が発生する場合があります。

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INCONSISTENT_OPERATION。DDL変換が指定された後でFETCH_XMLがコールされたか、DDL変換が指定されないときにFETCH_DDLがコールされました。

GET_xxxファンクション

次のGET_xxxファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。

- GET_XML

- GET_DDL

- GET_SXML

- GET_DEPENDENT_XML

- GET_DEPENDENT_DDL

- GET_GRANTED_XML

- GET_GRANTED_DDL

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

構文

DBMS_METADATA.GET_XML (
object_type     IN VARCHAR2,
name            IN VARCHAR2,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT NULL)
RETURN CLOB;

DBMS_METADATA.GET_DDL (
object_type     IN VARCHAR2,
name            IN VARCHAR2,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

DBMS_METADATA.GET_SXML (
object_type     IN VARCHAR2,
name            IN VARCHAR2 DEFAULT NULL,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'SXML')
RETURN CLOB;

DBMS_METADATA.GET_DEPENDENT_XML (
object_type        IN VARCHAR2,
base_object_name   IN VARCHAR2,
base_object_schema IN VARCHAR2 DEFAULT NULL,
version            IN VARCHAR2 DEFAULT 'COMPATIBLE',
model              IN VARCHAR2 DEFAULT 'ORACLE',
transform          IN VARCHAR2 DEFAULT NULL,
object_count       IN NUMBER   DEFAULT 10000)
RETURN CLOB;

DBMS_METADATA.GET_DEPENDENT_DDL (
object_type         IN VARCHAR2,
base_object_name    IN VARCHAR2,
base_object_schema  IN VARCHAR2 DEFAULT NULL,
version             IN VARCHAR2 DEFAULT 'COMPATIBLE',
model               IN VARCHAR2 DEFAULT 'ORACLE',
transform           IN VARCHAR2 DEFAULT 'DDL',
object_count        IN NUMBER   DEFAULT 10000)
RETURN CLOB;

DBMS_METADATA.GET_GRANTED_XML (
object_type     IN VARCHAR2,
grantee         IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT NULL,
object_count    IN NUMBER   DEFAULT 10000)
RETURN CLOB;

DBMS_METADATA.GET_GRANTED_DDL (
object_type     IN VARCHAR2,
grantee         IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'DDL',
object_count    IN NUMBER   DEFAULT 10000)
RETURN CLOB;

パラメータ

表94-9 GET_xxxファンクションのパラメータ

パラメータ

説明

object_type

取り出すオブジェクトのタイプ。このパラメータには、OPEN object_typeパラメータと同じ値を指定しますが、異種オブジェクト・タイプは指定できません。オブジェクト・タイプの属性は、ファンクションに適した属性であることが必要です。つまり、GET_xxxファンクションには、名前付きオブジェクトを指定してください。

name

オブジェクト名。NAMEフィルタで内部的に使用されます。(オブジェクト名が30文字を超える場合は、LONGNAMEフィルタで使用されます。)このパラメータがNULLの場合、NAMEフィルタまたはLONGNAMEフィルタは指定されません。フィルタのリストについては、表94-18を参照してください。

schema

オブジェクトのスキーマ。SCHEMAフィルタで内部的に使用されます。デフォルトは現行のユーザーです。

version

抽出されるメタデータのバージョン。このパラメータには、OPENのversionパラメータと同じ値を指定します。

model

使用するオブジェクト・モデル。このパラメータには、OPENのmodelパラメータと同じ値を指定します。

transform

出力時に適用される変換の名前。このパラメータには、ADD_TRANSFORMのnameパラメータと同じ値を指定します。GET_XMLには、DDL以外の値を指定してください。

base_object_name

ベース・オブジェクト名。BASE_OBJECT_NAMEフィルタで内部的に使用されます。

base_object_schema

ベース・オブジェクトのスキーマ。BASE_OBJECT_SCHEMAフィルタで内部的に使用されます。デフォルトは現行のユーザーです。

grantee

権限受領者。GRANTEEフィルタで内部的に使用されます。デフォルトは現行のユーザーです。

object_count

戻すオブジェクトの最大数。「SET_COUNTプロシージャ」を参照してください。

戻り値

指定されたオブジェクトのメタデータをXMLまたはDDLとして戻します。

使用上の注意

- これらのファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。これらは、OPENやSET_FILTERなどに対するコールをカプセル化します。オブジェクトのタイプまたは文書のタイプ(XML、SXMLまたはDDL)に応じて、各ファンクションを使い分けてください。

- GET_xxxは、名前付きオブジェクト(特に、表やビューなどのスキーマ・オブジェクト)をフェッチするときに使用します。

- GET_DEPENDENT_xxxは、依存オブジェクト(監査、オブジェクト権限付与など)をフェッチするときに使用します。

- GET_GRANTED_xxxは、権限付与オブジェクト(システム権限付与、ロール権限付与など)をフェッチするときに使用します。

- オブジェクト・タイプによっては、複数のファンクションを使用できます。たとえばGET_xxxを使用すると、名前に基づいて索引をフェッチでき、GET_DEPENDENT_xxxを使用すると、同じ索引をその索引が定義されている表を指定してフェッチできます。

- GET_xxxは、単一の名前付きオブジェクトのみを戻します。

- GET_DEPENDENT_xxxおよびGET_GRANTED_xxxでは、任意の数の依存オブジェクトまたは権限付与オブジェクトが入力基準と一致する可能性があります。これらのオブジェクトをフェッチするときは、オブジェクト件数を指定できます。(ほとんどの場合は、デフォルト値の10000個で十分です。)

- DDL変換が指定された場合は、セッションレベルの変換パラメータが継承されます。

- これらのファンクションをSQL*Plusから起動する場合は、中断されない完全な出力を生成するために、PAGESIZEを0に設定し、LONGを十分大きい値に設定する必要があります。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- OBJECT_NOT_FOUND。指定したオブジェクトがデータベースにありません。

例

例: SCOTT.EMPのXML表示のフェッチ

中断されない完全な出力を生成するには、次に示すように、PAGESIZEを0に設定し、LONGを十分大きい値に設定してから、問合せを実行します。

SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_XML('TABLE','EMP','SCOTT')
FROM DUAL;

例: ネストした表とオーバーフロー・セグメントをフィルタにかけ、現行のスキーマ内のすべてのComplete表を示すDDLをフェッチする方法

この例では、ネストした表とオーバーフロー・セグメントをフィルタにかけ、現行のスキーマ内のすべてのComplete表を示すDDLをフェッチします。この例では、SET_TRANSFORM_PARAM(現行のセッションを示すハンドル値=DBMS_METADATA.SESSION_TRANSFORM)を使用して、記憶域句がSQL DDLに戻されないように指定しています。その後、この例では、セッション・レベルのパラメータをデフォルトにリセットします。

中断されない完全な出力を生成するには、次に示すように、PAGESIZEを0に設定し、LONGを十分大きい値に設定してから、問合せを実行します。

SET LONG 2000000
SET PAGESIZE 0
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
FROM USER_ALL_TABLES u
WHERE u.nested='NO'
AND (u.iot_type is null or u.iot_type='IOT');
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'DEFAULT');

例: HR.EMPLOYEESのすべてのオブジェクト権限付与を示すDDLのフェッチ

SELECT DBMS_METADATA.GET_DEPENDENT_DDL('OBJECT_GRANT',
'EMPLOYEES','HR') FROM DUAL;

例: SCOTTに付与されたすべてのシステム権限付与を示すDDLのフェッチ

SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','SCOTT')
FROM DUAL;

GET_QUERYファンクション

このファンクションは、FETCH_xxxによって使用される問合せのテキストを戻します。このファンクションは、デバッグの実行時に役立ちます。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

構文

DBMS_METADATA.GET_QUERY (
handle  IN NUMBER)
RETURN VARCHAR2;

パラメータ

表94-10 GET_QUERYファンクションのパラメータ

パラメータ

説明

handle

OPENから戻されたハンドル。異種オブジェクト・タイプを示すハンドルは指定できません。

戻り値

FETCH_xxxによって使用される問合せのテキスト。

例外

- INVALID_ARGVAL。handleパラメータにNULLまたは無効な値が指定されています。

OPENファンクション

このファンクションは、取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。戻り値は、後続のコールで使用されるオブジェクトの不透明なコンテキスト・ハンドルです。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

構文

DBMS_METADATA.OPEN (
object_type  IN VARCHAR2,
version      IN VARCHAR2 DEFAULT 'COMPATIBLE',
model        IN VARCHAR2 DEFAULT 'ORACLE',
network_link IN VARCHAR2 DEFAULT NULL)
RETURN NUMBER;

パラメータ

表94-11 Openファンクションのパラメータ

パラメータ

説明

object_type

取り出すオブジェクトのタイプ。有効なタイプ名およびその意味は、表94-12を参照してください。これらのオブジェクト・タイプは、Oracleモデルのメタデータでサポートされます(この表のmodelを参照)。

表94-12の「属性」列には、複数のオブジェクト・タイプ属性が示されています。

- 表などのスキーマ・オブジェクトはスキーマに属しています。

- 名前付きオブジェクトには一意の名前があります(スキーマ・オブジェクトの場合、名前はスキーマ内で一意です)。

- 索引などの依存オブジェクトは、ベース・スキーマ・オブジェクトに関して定義されます。

- 権限付与オブジェクトは、ユーザーまたはロールに付与される(割り当てられる)ため、名前付きの権限受領者を持っています。

- 異種オブジェクト・タイプは、複数の異なるタイプを持った、相互に関連するオブジェクトからなるコレクションを表します。異種オブジェクト・タイプから戻されるオブジェクト・タイプのリストは、表94-13を参照してください。

オブジェクトの選択基準を指定するときは、これらの属性を考慮する必要があります。詳細は、「SET_FILTERプロシージャ」を参照してください。

version

抽出されるメタデータのバージョン。このバージョンと互換性のないデータベース・オブジェクトまたは属性は抽出されません。このパラメータに指定できる値は次のとおりです。

COMPATIBLE(デフォルト) - データベースの互換性レベルに対応するメタデータのバージョン。

LATEST - データベース・バージョンに対応するメタデータのバージョン。

特定のデータベース・バージョン。9.2.0より前のバージョンは指定できません。

model

APIはメタデータに対し複数のビューをサポートするため、使用するビューを指定します。ORACLEモデルのみがサポートされています。

network_link

メタデータを取り出すデータベースへのデータベース・リンクの名前。NULL(デフォルト)の場合、メタデータはコール元を実行しているデータベースから取り出されます。

表94-12に、DBMS_METADATAパッケージのオブジェクト・タイプの名前、意味、属性および注意点を示します。「属性」列のSはスキーマ・オブジェクト、Nは名前付きオブジェクト、Dは依存オブジェクト、Gは権限付与オブジェクト、Hは異種オブジェクトを表します。

表94-12 DBMS_METADATA: オブジェクト・タイプ

タイプ名

意味

属性

注意

AQ_QUEUE

キュー

SND

表に応じて属性が異なります。

AQ_QUEUE_TABLE

キュー表に対する追加のメタデータ

ND

表に応じて属性が異なります。

AQ_TRANSFORM

変換

SN

なし

ASSOCIATION

関連統計情報

D

なし

AUDIT

SQL文の監査

DG

依存オブジェクト、権限付与オブジェクトとしてモデル化されます。ベース・オブジェクト名は、文監査オプション名(例: ALTER SYSTEM)です。ベース・オブジェクト・スキーマはありません。権限受領者は、その文が監査されるユーザーまたはプロキシです。

AUDIT_OBJ

スキーマ・オブジェクトの監査

D

なし

CLUSTER

クラスタ

SN

なし

COMMENT

コメント

D

なし

CONSTRAINT

制約

SND

次のものは含まれません。

- IOTの主キー制約

- 列のNOT NULL制約

- REF列が含まれている表に対する特定のREF SCOPEおよびWITH ROWID制約

CONTEXT

アプリケーション・コンテキスト

N

なし

DATABASE_EXPORT

データベース内のすべてのメタデータ・オブジェクト

H

全データベースのエクスポートに対応します。

DB_LINK

データベース・リンク

SN

データベース・リンクには所有者がいるため、スキーマ・オブジェクトとしてモデル化されます。パブリック・リンクの場合、所有者はPUBLICです。プライベート・リンクの場合は、作成者が所有者です。

DEFAULT_ROLE

デフォルト・ロール

G

ALTER USERによってユーザーに付与されます。

DIMENSION

ディメンション

SN

なし

DIRECTORY

ディレクトリ

N

なし

FGA_POLICY

ファイングレイン監査条件

D

ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。

FUNCTION

ストアド・ファンクション

SN

なし

INDEX_STATISTICS

索引に関して事前に計算された統計情報

D

ベース・オブジェクトは索引の表です。

INDEX

索引

SND

なし

INDEXTYPE

索引タイプ

SN

なし

JAVA_SOURCE

Javaソース

SN

なし

JOB

ジョブ

S

なし

LIBRARY

外部プロシージャ・ライブラリ

SN

なし

MATERIALIZED_VIEW

マテリアライズド・ビュー

SN

なし

MATERIALIZED_VIEW_LOG

マテリアライズド・ビュー・ログ

D

なし

OBJECT_GRANT

オブジェクト権限付与

DG

なし

OPERATOR

演算子

SN

なし

PACKAGE

ストアド・パッケージ

SN

デフォルトでは、パッケージ仕様部およびパッケージ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。

PACKAGE_SPEC

パッケージ仕様部

SN

なし

PACKAGE_BODY

パッケージ本体

SN

なし

PROCEDURE

ストアド・プロシージャ

SN

なし

PROFILE

プロファイル

N

なし

PROXY

プロキシ認証

G

ALTER USERによってユーザーに付与されます。

REF_CONSTRAINT

参照制約

SND

なし

REFRESH_GROUP

リフレッシュ・グループ

SN

なし

RESOURCE_COST

リソース・コスト情報

なし

RLS_CONTEXT

ファイングレイン・アクセス・コントロールのポリシーを実現するための駆動コンテキスト

D

DBMS_RLS.ADD_POLICY_CONTENTプロシージャに対応します。

RLS_GROUP

ファイングレイン・アクセス・コントロールのポリシー・グループ

D

DBMS_RLS.CREATE_GROUPプロシージャに対応します。

RLS_POLICY

ファイングレイン・アクセス・コントロールのポリシー

D

DBMS_RLS.ADD_GROUPED_POLICYに対応します。ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。

RMGR_CONSUMER_GROUP

リソース・コンシューマ・グループ

SN

データ・ポンプでは、これらのオブジェクト・タイプが使用されません。かわりに、リソース・マネージャ・オブジェクトがプロシージャ・オブジェクトとしてエクスポートされます。

RMGR_INTITIAL_CONSUMER_GROUP

ユーザーに対する初期コンシューマ・グループの割当て

G

なし

RMGR_PLAN

リソース・プラン

SN

なし

RMGR_PLAN_DIRECTIVE

リソース・プラン・ディレクティブ

D

リソース・プランに対する依存性

ROLE

ロール

N

なし

ROLE_GRANT

ロール権限付与

G

なし

ROLLBACK_SEGMENT

ロールバック・セグメント

N

なし

SCHEMA_EXPORT

スキーマ内のすべてのメタデータ・オブジェクト

H

ユーザー・モードのエクスポートに対応します。

SEQUENCE

順序

SN

なし

SYNONYM

シノニム

注意を参照。

プライベート・シノニムはスキーマ・オブジェクトです。パブリック・シノニムはスキーマ・オブジェクトではありませんが、このAPIでのスキーマ名はPUBLICです。シノニム名はシノニム自体であるとみなされます。たとえば、CREATE PUBLIC SYNONYM FOO FOR BARでは、結果として生じるオブジェクトにFOOという名前およびPUBLICというスキーマがあるとみなされます。

SYSTEM_GRANT

システム権限付与

G

なし

TABLE

表

SN

なし

TABLE_DATA

表の行データ、ネストした表、パーティションを記述するメタデータ

SND

パーティションの場合、オブジェクト名はパーティション名です。

ネストした表の場合、オブジェクト名は記憶表の名前です。ベース・オブジェクトは、表データが属する最上位レベルの表です。ネストした表とパーティションの場合、これは(親表または親パーティションではなく)最上位レベルの表です。パーティション化していない表とネストしていない表の場合、ベース・オブジェクトはその表自体です。

TABLE_EXPORT

表のメタデータ、および表のメタデータに関連するオブジェクト

H

表モードのエクスポートに対応します。

TABLE_STATISTICS

表に関して事前に計算された統計情報

D

なし

TABLESPACE

表領域

N

なし

TABLESPACE_QUOTA

表領域割当て制限

G

ALTER USERを使用して付与されます。

TRANSPORTABLE_EXPORT

トランスポータブル表領域内のオブジェクトのメタデータ

H

トランスポータブル表領域のエクスポートに対応します。

TRIGGER

トリガー

SND

なし

TRUSTED_DB_LINK

信頼されているリンク

N

なし

TYPE

ユーザー定義タイプ

SN

デフォルトでは、タイプおよびタイプ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。

TYPE_SPEC

タイプ指定

SN

なし

TYPE_BODY

タイプ本体

SN

なし

USER

ユーザー

N

なし

VIEW

ビュー

SN

なし

XMLSCHEMA

XML Schema

SN

オブジェクト名はそのURLです(30文字を超える可能性があります)。そのスキーマは、登録したユーザーです。

XS_USER

Real Application Security(RAS)ユーザー

N

RASユーザーに対応します。

XS_ROLE

Real Application Security(RAS)ロール

N

RASロールに対応します。

XS_ROLESET

Real Application Security(RAS)ロール・セット

N

RASロール・セットに対応します。

XS_ROLE_GRANT

Real Application Security(RAS)ロール付与

N

RASロール付与に対応します。

XS_SECURITY_CLASS

Real Application Security(RAS)セキュリティ・クラス

SN

RASセキュリティ・クラスに対応します。

XS_DATA_SECURITY

Real Application Security(RAS)データ・セキュリティ・ポリシー

SN

RASデータ・セキュリティ・ポリシーに対応します。

XS_ACL

Real Application Security(RAS)のACL

SN

RASのアクセス制御リスト(ACL)およびそれに関連付けられたアクセス制御エントリ(ACE)に対応します。

XS_ACL_PARAM

Real Application Security(RAS)のACLパラメータ

N

RASのアクセス制御リスト(ACL)パラメータに対応します。

XS_NAMESPACE

Real Application Security(RAS)ネームスペース

N

RASネームスペースに対応します。

表94-13に、異種オブジェクト・タイプから戻されるオブジェクト・タイプのリストを示します。SCHEMA_EXPORTでは、INCLUDE_USERフィルタがTRUEに指定されている場合のみ、特定のオブジェクト・タイプが戻されます。表では、そのようなオブジェクト・タイプをINCLUDE_USERというマークで示しています。

表94-13 異種オブジェクト・タイプから戻されるオブジェクト・タイプ

オブジェクト・タイプ

DATABASE_EXPORT

SCHEMA_EXPORT

TABLE_EXPORT

TRANSPORTABLE_EXPORT

ASSOCIATION

はい

いいえ

いいえ

いいえ

AUDIT

はい

いいえ

いいえ

いいえ

AUDIT_OBJ

はい

はい

はい

はい

CLUSTER

はい

はい

いいえ

はい

COMMENT

はい

はい

はい

はい

CONSTRAINT

はい

はい

はい

はい

CONTEXT

はい

いいえ

いいえ

いいえ

DB_LINK

はい

はい

いいえ

いいえ

DEFAULT_ROLE

はい

INCLUDE_USER

いいえ

いいえ

DIMENSION

はい

はい

いいえ

いいえ

DIRECTORY

はい

いいえ

いいえ

いいえ

FGA_POLICY

はい

いいえ

いいえ

はい

FUNCTION

はい

はい

いいえ

いいえ

INDEX_STATISTICS

はい

はい

はい

はい

INDEX

はい

はい

はい

はい

INDEXTYPE

はい

はい

いいえ

いいえ

JAVA_SOURCE

はい

はい

いいえ

いいえ

JOB

はい

はい

いいえ

いいえ

LIBRARY

はい

はい

いいえ

いいえ

MATERIALIED_VIEW

はい

はい

いいえ

いいえ

MATERIALIZED_VIEW_LOG

はい

はい

いいえ

いいえ

OBJECT_GRANT

はい

はい

はい

はい

OPERATOR

はい

はい

いいえ

いいえ

PACKAGE

はい

はい

いいえ

いいえ

PACKAGE_SPEC

はい

はい

いいえ

いいえ

PACKAGE_BODY

はい

はい

いいえ

いいえ

PASSWORD_HISTORY

はい

INCLUDE_USER

いいえ

いいえ

PASSWORD_VERIFY_FUNCTION

はい

いいえ

いいえ

いいえ

PROCEDURE

はい

はい

いいえ

いいえ

PROFILE

はい

いいえ

いいえ

いいえ

PROXY

はい

いいえ

いいえ

いいえ

REF_CONSTRAINT

はい

はい

はい

はい

REFRESH_GROUP

はい

はい

いいえ

いいえ

RESOURCE_COST

はい

いいえ

いいえ

いいえ

RLS_CONTEXT

はい

いいえ

いいえ

はい

RLS_GROUP

はい

いいえ

いいえ

はい

RLS_POLICY

はい

ポリシーに従って表データが取り出される

ポリシーに従って表データが取り出される

はい

ROLE

はい

いいえ

いいえ

いいえ

ROLE_GRANT

はい

いいえ

いいえ

いいえ

ROLLBACK_SEGMENT

はい

いいえ

いいえ

いいえ

SEQUENCE

はい

はい

いいえ

いいえ

SYNONYM

はい

はい

いいえ

いいえ

SYSTEM_GRANT

はい

INCLUDE_USER

いいえ

いいえ

TABLE

はい

はい

はい

はい

TABLE_DATA

はい

はい

はい

はい

TABLE_STATISTICS

はい

はい

はい

はい

TABLESPACE

はい

いいえ

いいえ

いいえ

TABLESPACE_QUOTA

はい

INCLUDE_USER

いいえ

いいえ

TRIGGER

はい

はい

はい

はい

TRUSTED_DB_LINK

はい

いいえ

いいえ

いいえ

TYPE

はい

はい

いいえ

はい(トランスポータブル・セット内の表によってタイプが使用される場合)

TYPE_SPEC

はい

はい

いいえ

はい(トランスポータブル・セット内の表によってタイプが使用される場合)

TYPE_BODY

はい

はい

いいえ

はい(トランスポータブル・セット内の表によってタイプが使用される場合)

USER

はい

INCLUDE_USER

いいえ

いいえ

VIEW

はい

はい

いいえ

いいえ

XMLSCHEMA

はい

はい

いいえ

いいえ

戻り値

オブジェクトのクラスに対する不透明なハンドル。このハンドルを入力として使用できるプロシージャは、SET_FILTER、SET_COUNT、ADD_TRANSFORM、GET_QUERY、SET_PARSE_ITEM、FETCH_xxxおよびCLOSEです。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INVALID_OBJECT_PARAM。versionパラメータまたはmodelパラメータがobject_typeに対して有効でありません。

OPENWファンクション

このファンクションは、送信するオブジェクトのタイプ、およびオブジェクト・モデルを指定します。戻り値は、不透明なコンテキスト・ハンドルです。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースにXMLを送信するためのサブプログラム

構文

DBMS_METADATA.OPENW
(object_type  IN VARCHAR2,
version       IN VARCHAR2 DEFAULT 'COMPATIBLE',
model         IN VARCHAR2 DEFAULT 'ORACLE')
RETURN NUMBER;

パラメータ

表94-14 OPENWファンクションのパラメータ

パラメータ

説明

object_type

送信するオブジェクトのタイプ。有効なタイプ名および各タイプの意味の一覧は、表94-12を参照してください。異種オブジェクト・タイプは指定できません。

version

CONVERTファンクションによって生成されるDDLのバージョン。このバージョンと互換性のないDDL句は生成されません。このパラメータに指定できる値は次のとおりです。

- COMPATIBLE - これがデフォルトです。データベースの互換性レベルに対応するDDLのバージョン。データベースの互換性は9.2.0以上に設定する必要があります。

- LATEST - データベースのバージョンに対応するDDLのバージョン。

- 特定のデータベース・バージョン。9.2.0より前のバージョンは指定できません。

model

使用するビューを指定します。DBMS_METADATAでは、Oracle固有のビュー(ORACLE)のみがサポートされます。

戻り値

書込みコンテキストに対する不透明なハンドル。このハンドルは、ADD_TRANSFORM、CONVERT、PUTおよびCLOSEプロシージャへの入力として使用されます。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INVALID_OBJECT_PARAM。modelパラメータがobject_typeに対して有効でありません。

PUTファンクション

このファンクションは、オブジェクトを作成するために、オブジェクトのメタデータが保存されたXML文書をデータベースに送信します。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースにXMLを送信するためのサブプログラム

構文

DBMS_METADATA.PUT (
handle     IN             NUMBER,
document   IN             sys.XMLType,
flags      IN             NUMBER,
results    IN OUT NOCOPY  sys.ku$_SubmitResults)
RETURN BOOLEAN;

DBMS_METADATA.PUT (
handle     IN             NUMBER,
document   IN             CLOB,
flags      IN             NUMBER,
results    IN OUT NOCOPY  sys.ku$_SubmitResults)
RETURN BOOLEAN;

パラメータ

表94-15 PUTファンクションのパラメータ

パラメータ

説明

handle

OPENWから戻されたハンドル

document

OPENWハンドルのタイプに適したオブジェクト・メタデータが保存されたXML文書

flags

将来使用するために予約されています。

results

操作の詳しい結果。

戻り値

SQL操作が正常に実行された場合はTRUE、なんらかのエラーが発生した場合はFALSEです。

使用上の注意

PUTファンクションは、CONVERTファンクションと同様に(指定された変換を適用して)XML文書からDDL文を作成した後、個々の結果DDL文をデータベースに送信します。CONVERTと同様に、DDL変換を指定する必要があります。DDL文の内容とDDL文に関連する解析項目は、ネストした表sys.ku$_SubmitResultsに戻されます。この表は、個々のDDL文から発生したエラーと例外を記録したエラー行からなります。

XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENWに指定されているデータベース・バージョンで有効です。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INCONSISTENT_OPERATION。DDL変換が指定されていません。

- INCOMPATIBLE_DOCUMENT。XML文書のバージョンとソフトウェアの現行バージョン間に互換性がありません。

SET_COUNTプロシージャ

このプロシージャは、FETCH_xxxへの1回のコールで取り出されるオブジェクトの最大数を指定します。デフォルトでは、FETCH_xxxへの各コールで戻されるオブジェクトは1つです。SET_COUNTプロシージャを使用すると、このデフォルトを変更できます。FETCH_xxxがクライアントからコールされる場合に、2以上のカウント値を指定すると、サーバーへのラウンド・トリップが減少するため、パフォーマンスが改善されます。

異種オブジェクト・タイプの場合、FETCH_xxxへの1回の操作で取り出されるのは、1つのオブジェクト・タイプのオブジェクトに限られます。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

構文

DBMS_METADATA.SET_COUNT (
handle           IN NUMBER,
value            IN NUMBER,
object_type_path IN VARCHAR2 DEFAULT NULL);

パラメータ

表94-16 SET_COUNTプロシージャのパラメータ

パラメータ

説明

handle

OPENから戻されたハンドル。

value

取り出すオブジェクトの最大数。

object_type_path

カウント値が適用されるオブジェクト・タイプを示すパス名。デフォルトでは、OPENハンドルのオブジェクト・タイプにカウント値が適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合は、次のいずれかの動作になります。

- object_type_pathが省略されている場合は、異種コレクション内部のすべてのオブジェクト・タイプにカウント値が適用されます。

- object_type_pathが指定されている場合は、異種コレクションを形成するオブジェクト・タイプのツリー内部にある特定のノード(またはノードのセット)のみにカウント値が適用されます。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_COUNTがコールされました。FETCH_xxxへの最初のコールの後で、現行のOPENコンテキストに対して、それ以上SET_COUNTをコールできません。

- INCONSISTENT_ARGS。object_typeパラメータとhandle間に互換性がありません。

SET_FILTERプロシージャ

このプロシージャは、取り出すオブジェクトに関する制限事項(オブジェクト名やスキーマなど)を指定します。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

構文

DBMS_METADATA.SET_FILTER (
handle           IN NUMBER,
name             IN VARCHAR2,
value            IN VARCHAR2,
object_type_path IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_FILTER (
handle            IN NUMBER,
name              IN VARCHAR2,
value             IN BOOLEAN DEFAULT TRUE,
object_type_path  IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_FILTER (
handle            IN NUMBER,
name              IN VARCHAR2,
value             IN NUMBER,
object_type_path  IN VARCHAR2 DEFAULT NULL);

パラメータ

表94-17 SET_FILTERプロシージャのパラメータ

パラメータ

説明

handle

OPENから戻されたハンドル。

name

フィルタ名。各フィルタが適用されるobject_type、各フィルタの名前、データ・タイプ(テキストまたはブール)、各フィルタの意味または効果(設定されている場合はデフォルト値を含む)については、表94-18を参照してください。

表94-18の「データ・タイプ」列には、テキスト・フィルタが式フィルタであるかどうかも示しています。式フィルタは、SQL比較の右側、つまり、SQL比較演算子(=、!=、など)および比較対象値の右側にあります。比較対象値には、適切な場所にカッコと引用符を付ける必要があります。PL/SQLとSQL*Plusでは、アポストロフィを表現するときに(1つの二重引用符ではなく) 2つの一重引用符が必要です。たとえば、PL/SQLのNAME_EXPRフィルタでは、比較対象値を次のように記述します。

'IN (''DEPT'',''EMP'')'

フィルタ値が特定のオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せのWHERE条件式が作成されます。前述の例では、オブジェクト名を表す属性とフィルタ値が組み合されて、DEPTおよびEMPという名前のオブジェクトが選択されます。

value

フィルタ値。フィルタ値としてテキスト、ブール値、数値を指定できます。

object_type_path

フィルタが適用されるオブジェクト・タイプを示すパス名。デフォルトでは、OPENハンドルのオブジェクト・タイプにフィルタが適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合にこのパラメータを使用すると、異種コレクションを形成するオブジェクト・タイプのツリー内部にある特定のノード(またはノードのセット)のみにフィルタを適用できます。このパラメータに指定できる値の一覧は、表94-19を参照してください。

表94-18に、SET_FILTERプロシージャで使用可能なフィルタのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表94-18 SET_FILTER: フィルタ

オブジェクト・タイプ

名前

データ・タイプ

意味

名前付きオブジェクト

NAME

TEXT

指定された名前を持つオブジェクトが選択されます。

名前付きオブジェクト

NAME_EXPR

テキスト式

フィルタ値がオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

デフォルトでは、object_typeの名前付きオブジェクトがすべて選択されます。

名前付きオブジェクト

EXCLUDE_NAME_EXPR

テキスト式

フィルタ値がオブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。

デフォルトでは、指定されたオブジェクト・タイプの名前付きオブジェクトがすべて選択されます。

TABLE_EXPORT

EXCLUDE_TABLES

BOOLEAN

TRUEの場合は、表に関連付けられているすべてのパスがフェッチ対象のオブジェクトのセットから除外されます。FALSEの場合は(デフォルト)、表に関連付けられているすべてのパスがフェッチされます。

スキーマ・オブジェクト

SCHEMA

TEXT

このスキーマ内のオブジェクトが選択されます。オブジェクト・タイプがSYNONYMである場合は、PUBLICを指定すると、パブリック・シノニムが選択されます。

スキーマ・オブジェクト

SCHEMA_EXPR

テキスト式

フィルタ値がオブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。

デフォルトの抽出条件は次のようにして決定されます。

- BASE_OBJECT_SCHEMAが指定されている場合は、そのスキーマ内のオブジェクトが選択されます。

- それ以外の場合は、現行スキーマ内のオブジェクトが選択されます。

PACKAGE、TYPE

SPECIFICATION

BOOLEAN

TRUEの場合は、パッケージまたはタイプの仕様部が取り出されます。デフォルトはTRUEです。

PACKAGE、TYPE

BODY

BOOLEAN

TRUEの場合は、パッケージまたはタイプの本体が取り出されます。デフォルトはTRUEです。

TABLE、CLUSTER、INDEX、TABLE_DATA、TABLE_EXPORT、TRANSPORTABLE_EXPORT

TABLESPACE

TEXT

指定された表領域内のオブジェクト(または、指定された表領域内にパーティションがあるオブジェクト)が選択されます。

TABLE、CLUSTER、INDEX、TABLE_DATA、TABLE_EXPORT、TRANSPORTABLE_EXPORT

TABLESPACE_EXPR

テキスト式

フィルタ値がオブジェクトの表領域(パーティション表またはパーティション索引の場合は、そのパーティションの表領域)を表す属性と組み合され、問合せの抽出条件が作成されます。デフォルトでは、すべての表領域内のオブジェクトが選択されます。

TABLE、表に依存するオブジェクト

PRIMARY

BOOLEAN

TRUEの場合は、プライマリ表(obj$内でセカンダリ・オブジェクト・ビットがクリアされている表)が取り出されます。

デフォルトはTRUEです。

TABLE、表に依存するオブジェクト

SECONDARY

BOOLEAN

TRUEの場合は、セカンダリ表(obj$内でセカンダリ・オブジェクト・ビットがセットされている表)が取り出されます。

デフォルトはTRUEです。

依存オブジェクト

BASE_OBJECT_NAME

TEXT

指定された名前のオブジェクトに対して定義または付与されたオブジェクトが選択されます。スキーマに対するトリガーの場合はSCHEMAを指定します。データベースに対するトリガーの場合はDATABASEを指定します。列レベルのコメントを列名で選択することはできないため、ベース・オブジェクト名は、列が含まれている表、ビューまたはマテリアライズド・ビューの名前であることが必要です。

依存オブジェクト

BASE_OBJECT_SCHEMA

TEXT

指定されたスキーマ内のオブジェクトに対して定義または付与されたオブジェクトが選択されます。BASE_OBJECT_NAMEにSCHEMAまたはDATABASE以外の値が指定されている場合、その値が現行スキーマのデフォルトです。

依存オブジェクト

BASE_OBJECT_NAME_EXPR

テキスト式

フィルタ値がベース・オブジェクトの名前を表す属性とが組み合されて、問合せの抽出条件が作成されます。

スキーマおよびデータベースに対するトリガーには使用できません。

依存オブジェクト

EXCLUDE_BASE_OBJECT_NAME_EXPR

テキスト式

フィルタ値がベース・オブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。

スキーマおよびデータベースに対するトリガーには使用できません。

依存オブジェクト

BASE_OBJECT_SCHEMA_EXPR

テキスト式

フィルタ値がベース・オブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。

依存オブジェクト

BASE_OBJECT_TYPE

TEXT

ベース・オブジェクトのオブジェクト・タイプ。

依存オブジェクト

BASE_OBJECT_TYPE_EXPR

テキスト式

フィルタ値がベース・オブジェクトのオブジェクト・タイプを表す属性と組み合されて、問合せの抽出条件が作成されます。

デフォルトでは、オブジェクト・タイプに対してフィルタ処理は適用されません。

依存オブジェクト

BASE_OBJECT_TABLESPACE

TEXT

ベース・オブジェクトの表領域。

依存オブジェクト

BASE_OBJECT_TABLESPACE_EXPR

テキスト式

フィルタ値がベース・オブジェクトの表領域を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、表領域に対してフィルタ処理は適用されません。

INDEX、TRIGGER

SYSTEM_GENERATED

BOOLEAN

TRUEの場合は、システムによる生成も含めた、索引とトリガーが選択されます。FALSEの場合、システムによって生成された索引とトリガーは選択されません。デフォルトはTRUEです。

権限付与オブジェクト

GRANTEE

TEXT

指定されたユーザーまたはロールに付与されたオブジェクトが選択されます。PUBLICに付与されたオブジェクトについては、PUBLICを指定してください。

権限付与オブジェクト

PRIVNAME

TEXT

付与される権限またはロールの名前。TABLESPACE_QUOTAには、UNLIMITEDのみを指定できます。

権限付与オブジェクト

PRIVNAME_EXPR

テキスト式

フィルタ値が権限またはロールの名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、すべての権限とロールが戻されます。

権限付与オブジェクト

GRANTEE_EXPR

テキスト式

フィルタ値が権限受領者の名前を表す属性と組み合されて、問合せの抽出条件が作成されます。

権限付与オブジェクト

EXCLUDE_GRANTEE_EXPR

テキスト式

フィルタ値が権限受領者の名前を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。

OBJECT_GRANT

GRANTOR

TEXT

指定されたユーザーが付与したオブジェクト権限付与が選択されます。

SYNONYM、JAVA_SOURCE、XMLSCHEMA

LONGNAME

TEXT

30文字を超える名前。指定された名前を持つオブジェクトが選択されます。オブジェクト名が30文字以内である場合は、NAMEフィルタを使用してください。

SYNONYM、JAVA_SOURCE、XMLSCHEMA

LONGNAME_EXPR

TEXT

フィルタ値がオブジェクトの長い名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、オブジェクトの長い名前に対してフィルタ処理は適用されません。

すべてのオブジェクト

CUSTOM_FILTER

Text

WHERE条件のテキスト。オブジェクトをフェッチする問合せに対して、この条件が追加されます。デフォルトでは、カスタム・フィルタは使用されません。

その他のフィルタは、多数のユーザーのニーズを満たすことを目的としています。目的に合ったフィルタが定義されていない場合は、CUSTOM_FILTERを使用してください。問合せで使用するビューとUDTの詳細な構造に応じて、カスタム・フィルタが必要になる場合があります。フィルタはバージョンごとに変更される可能性があるため、上位互換性は保証されません。

すべてのオブジェクト

EDITION

TEXT

エディション・フィルタはすべてのオブジェクト・タイプで受け入れられますが、エディションをサポートしているオブジェクトにのみ影響します。このフィルタはローカル・オブジェクトでのみ受け入れられます(つまり、OPENコールにnetwork_linkパラメータは指定されません)。エディション名は、有効なエディション名であることが必要です。エディションが指定されない場合は、アクティブなセッションのエディションが使用されます。

SCHEMA_EXPORT

SCHEMA

Text

選択されるオブジェクトのスキーマ。

SCHEMA_EXPORT

SCHEMA_EXPR

テキスト式

フィルタ値は次のどちらかの方法で処理されます。

フィルタ値がスキーマ名を表す属性と組み合されて、スキーマ・オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

フィルタ値がベース・スキーマ名を表す属性と組み合されて、依存オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

デフォルトでは、現行ユーザーのオブジェクトが選択されます。

SCHEMA_EXPORT

INCLUDE_USER

Boolean

TRUEの場合は、ユーザーの権限に関する情報が格納されたオブジェクトが選択されます。たとえば、USER、PASSWORD_HISTORY、TABLESPACE_QUOTAです。

デフォルトはFALSEです。

TABLE_EXPORT

SCHEMA

Text

指定されたスキーマ内のオブジェクト(表、および表の依存オブジェクト)が選択されます。

TABLE_EXPORT

SCHEMA_EXPR

テキスト式

フィルタ値は次のどちらかの方法で処理されます。

フィルタ値がスキーマ名を表す属性と組み合されて、表をフェッチする問合せのWHERE条件式が作成されます。

フィルタ値がベース・スキーマ名を表す属性と組み合されて、表の依存オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

デフォルトでは、現行ユーザーのオブジェクトが選択されます。

TABLE_EXPORT

NAME

Text

指定された名前を持つ表と、その表の依存オブジェクトが選択されます。

TABLE_EXPORT

NAME_EXPR

テキスト式

フィルタ値が表の名前を表す属性と組み合されて、表および表の依存オブジェクトをフェッチする問合せの条件が作成されます。

デフォルトでは、指定されたスキーマ内のすべての表、およびそれらの表の依存オブジェクトが選択されます。

複数の異なるタイプのオブジェクトからなる異種コレクション

BEGIN_WITH

TEXT

異種コレクションから取り出す最初のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

BEGIN_AFTER

TEXT

異種コレクションから取り出す最初のオブジェクト・タイプの直前にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

END_BEFORE

TEXT

異種コレクションから取り出す最後のオブジェクト・タイプの直後にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

END_WITH

TEXT

異種コレクションから取り出す最後のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

INCLUDE_PATH_EXPR、EXCLUDE_PATH_EXPR

テキスト式

これら2つのフィルタでは、フィルタ値がオブジェクト・タイプのパス名を表す属性と組み合されて、異種コレクションに含まれるオブジェクト・タイプをフェッチする問合せのWHERE条件式が作成されます。この条件を満たすタイプのオブジェクトは、フェッチ対象のオブジェクト・タイプのセットに組み込まれるか(INCLUDE_PATH_EXPR)、フェッチ対象のオブジェクト・タイプのセットから除外されます(EXCLUDE_PATH_EXPR)。フィルタ値として使用するパス名は、必ずしも完全修飾名である必要はありません。これらのフィルタで使用できる有効なパス名は、表94-19を参照してください。

BEGIN_WITH、BEGIN_AFTER、END_BEFORE、END_WITH、INCLUDE_PATH_EXPRおよびEXCLUDE_PATH_EXPRはすべて、異種コレクションに含まれるオブジェクト・タイプのセットを制限するフィルタです。デフォルトでは、異種コレクションに含まれるすべてのタイプのオブジェクトが取り出されます。

使用上の注意

- SET_FILTERをコールするたびに、オブジェクトのセットをフェッチする問合せに対してWHERE条件式が追加されます。複数のWHERE条件式はAND処理されるため、SET_FILTERを複数回コールすると、戻されるオブジェクトのセットの範囲を細かく制限できます。たとえば、SCOTTというスキーマ内のEMPという名前付きオブジェクトを取り出すには、次のように指定します。

SET_FILTER(handle,'SCHEMA','SCOTT');
SET_FILTER(handle,'NAME','EMP');

- 同じテキスト式フィルタを、異なる値で複数回使用できます。すべてのフィルタ条件が問合せに適用されます。たとえば、FelixとOscarの間の名前を持つオブジェクトを取得するには、次のように記述します。

SET_FILTER(handle,'NAME_EXPR','>=''FELIX''');
SET_FILTER(handle,'NAME_EXPR','<=''OSCAR''');

- SET_FILTERを使用すると、取り出されるオブジェクトのスキーマを指定できますが、セキュリティ上の理由からそのスキーマ指定が上書きされる可能性があります。コール元がSYSであるか、またはSELECT_CATALOG_ROLEを付与されている場合、どのようなオブジェクトでも取り出せますが、そうでない場合は、次のオブジェクトのみを取り出せます。

- 現行ユーザーが所有するスキーマ・オブジェクト

- パブリック・シノニム

- 現行ユーザーまたはPUBLICに付与されたシステム権限

- 現行ユーザーが所有者、権限付与者または権限受領者(明示的に受領またはPUBLICとして受領)であるオブジェクトに対する付与

- nameが現行ユーザーであるSCHEMA_EXPORT

- SCHEMAが現行ユーザーであるTABLE_EXPORT

取出しの権限が付与されていないオブジェクトを要求した場合、例外は発生しません。ただし、オブジェクトは存在しないとみなされ、取り出されません。

ストアド・プロシージャ、ストアド・ファンクション、定義者権限パッケージでは、ロール(SELECT_CATALOG_ROLEなど)を使用できません。したがって、これらのPL/SQLプログラムでは、それ自体のスキーマ内にあるオブジェクトのメタデータしかフェッチできません。(実行者が所有するSELECT_CATALOG_ROLEを通じて)別のスキーマ内にあるオブジェクトのメタデータをフェッチするPL/SQLプログラムを作成するには、実行者権限をPL/SQLプログラムに付与する必要があります。

- 異種オブジェクト・タイプの場合、BEGIN_WITHフィルタとBEGIN_AFTERフィルタを使用すると、オブジェクト・タイプの境界からの再取出しを制御できます。これらのフィルタで使用する適切な値を取得するには、FETCH_XML_CLOBプロシージャを使用します。
異種コレクションに対するフィルタでは、コレクション内部の各オブジェクト・タイプに対するフィルタごとにデフォルト値が定義されています。特定のオブジェクト・タイプのデフォルト値を変更するには、目的のオブジェクト・タイプ・パスに対して適切なフィルタを指定します。たとえば、SCHEMA_EXPORTでは、フェッチされるスキーマ(スキーマ内のすべての表を含む)がNAMEフィルタによって指定されますが、TABLEオブジェクト・タイプ・パスに対してNAME_EXPRフィルタを明示的に指定すると、フェッチ対象の表をさらに細かく制限できます。主要な異種オブジェクト・タイプに対して指定できる有効なオブジェクト・タイプ・パス名および個々のパス名の適用範囲については、表94-19を参照してください。(DATABASE_EXPORT_OBJECTS、SCHEMA_EXPORT_OBJECTSおよびTABLE_EXPORT_OBJECTSのカタログ・ビューでも参照できます。)個々のパス名について定義されているフィルタの一覧は、表94-18を参照してください。これらのパス名は、INCLUDE_PATH_EXPRフィルタおよびEXCLUDE_PATH_EXPRフィルタで使用できます。アスタリスク(*)が付いたパス名は、これらのフィルタのみで使用でき、これらのパス名は、SET_FILTER object_type_pathパラメータの値として使用できません。

表94-19 異種オブジェクト・タイプに対して指定できるオブジェクト・タイプ・パス名

異種オブジェクト・タイプ

パス名(*=xxx_PATH_EXPRのみで使用可能)

有効範囲

TABLE_EXPORT

AUDIT_OBJ

選択される表に対するオブジェクト監査。

TABLE_EXPORT

COMMENT

選択される表に関する表コメントと列コメント。

TABLE_EXPORT

CONSTRAINT

選択される表に対する制約(参照制約を含む)。

TABLE_EXPORT

*GRANT

選択される表に対するオブジェクト権限付与。

TABLE_EXPORT

INDEX

選択される表の索引(ドメイン索引を含む)。

TABLE_EXPORT

OBJECT_GRANT

選択される表に対するオブジェクト権限付与。

TABLE_EXPORT

REF_CONSTRAINT

選択される表に対する参照制約(外部キー制約)。

TABLE_EXPORT

STATISTICS

選択される表に関する統計情報。

TABLE_EXPORT

TABLE_DATA

選択される表の行データ。

TABLE_EXPORT

TRIGGER

選択される表に対するトリガー。

SCHEMA_EXPORT

ASSOCIATION

選択されるスキーマ内のオブジェクトに対する統計タイプの結合。

SCHEMA_EXPORT

AUDIT_OBJ

選択されたスキーマ内のすべてのオブジェクトに対する監査。

SCHEMA_EXPORT

CLUSTER

選択されるスキーマ内のクラスタ、およびクラスタの索引。

SCHEMA_EXPORT

COMMENT

選択されるスキーマ内のすべてのオブジェクトに関するコメント。

SCHEMA_EXPORT

CONSTRAINT

選択されるスキーマ内のすべてのオブジェクトに対する制約(参照制約を含む)。

SCHEMA_EXPORT

DB_LINK

選択されるスキーマ内のプライベート・データベース・リンク。

SCHEMA_EXPORT

DEFAULT_ROLE

選択されるスキーマと関連付けられたユーザーに付与されるデフォルト・ロール。

SCHEMA_EXPORT

DIMENSION

選択されるスキーマ内のディメンション。

SCHEMA_EXPORT

FUNCTION

選択されるスキーマ内のファンクション、およびファンクションの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

*GRANT

選択されるスキーマ内のオブジェクトに対する権限付与。

SCHEMA_EXPORT

INDEX

選択されるスキーマ内の表とクラスタの索引(ドメイン索引を含む)。

SCHEMA_EXPORT

INDEXTYPE

選択されるスキーマ内の索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

JAVA_SOURCE

選択されるスキーマ内のJavaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

JOB

選択されるスキーマ内のジョブ。

SCHEMA_EXPORT

LIBRARY

選択されるスキーマ内の外部プロシージャ・ライブラリ。

SCHEMA_EXPORT

MATERIALIZED_VIEW

選択されるスキーマ内のマテリアライズド・ビュー。

SCHEMA_EXPORT

MATERIALIZED_VIEW_LOG

選択されるスキーマ内の表に関するマテリアライズド・ビュー・ログ。

SCHEMA_EXPORT

OBJECT_GRANT

選択されるスキーマ内のオブジェクトに対する権限付与。

SCHEMA_EXPORT

OPERATOR

選択されるスキーマ内の演算子、および演算子の依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

PACKAGE

選択されるスキーマ内のパッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

PACKAGE_BODY

選択されるスキーマ内のパッケージ本体。

SCHEMA_EXPORT

PACKAGE_SPEC

選択されるスキーマ内のパッケージ仕様部。

SCHEMA_EXPORT

PASSWORD_HISTORY

選択されるスキーマと関連付けられたユーザーのパスワード履歴。

SCHEMA_EXPORT

PROCEDURE

選択されるスキーマ内のプロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

REF_CONSTRAINT

選択されるスキーマ内の表に対する参照制約(外部キー制約)。

SCHEMA_EXPORT

REFRESH_GROUP

選択されるスキーマ内のリフレッシュ・グループ。

SCHEMA_EXPORT

SEQUENCE

選択されるスキーマ内の順序、およびそれらの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

STATISTICS

選択されるスキーマ内の表と索引に関する統計情報。

SCHEMA_EXPORT

SYNONYM

選択されるスキーマ内のプライベート・シノニム。

SCHEMA_EXPORT

TABLE

選択されるスキーマ内の表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。

SCHEMA_EXPORT

TABLE_DATA

選択されるスキーマ内の表の行データ。

SCHEMA_EXPORT

TABLESPACE_QUOTA

選択されるスキーマと関連付けられたユーザーに付与される表領域割当て制限。

SCHEMA_EXPORT

TRIGGER

選択されるスキーマ内の表に対するトリガー。

SCHEMA_EXPORT

XS_SECURITY_CLASS

Real Application Security(RAS)セキュリティ・クラス

SCHEMA_EXPORT

XS_DATA_SECURITY

Real Application Security(RAS)データ・セキュリティ・ポリシー

SCHEMA_EXPORT

XS_ACL

Real Application Security(RAS)のアクセス制御リスト(ACL)

SCHEMA_EXPORT

TYPE

選択されるスキーマ内のタイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

TYPE_BODY

選択されるスキーマ内のタイプ本体。

SCHEMA_EXPORT

TYPE_SPEC

選択されるスキーマ内のタイプ仕様部。

SCHEMA_EXPORT

USER

選択されるスキーマと関連付けられたユーザーのユーザー定義。

SCHEMA_EXPORT

VIEW

選択されるスキーマ内のビュー、およびビューの依存オブジェクト(権限付与、制約、コメント、監査)。

DATABASE_EXPORT

ASSOCIATION

データベース内のオブジェクトに対する統計タイプの結合。

DATABASE_EXPORT

AUDIT

SQL文の監査。

DATABASE_EXPORT

AUDIT_OBJ

データベース内のすべてのオブジェクトに対する監査。

DATABASE_EXPORT

CLUSTER

クラスタおよびクラスタ索引。

DATABASE_EXPORT

COMMENT

すべてのオブジェクトに関するコメント。

DATABASE_EXPORT

CONSTRAINT

制約(参照制約を含む)。

DATABASE_EXPORT

CONTEXT

アプリケーション・コンテキスト。

DATABASE_EXPORT

DB_LINK

プライベート・データベース・リンクおよびパブリック・データベース・リンク。

DATABASE_EXPORT

DEFAULT_ROLE

データベース内のユーザーに付与されたデフォルト・ロール。

DATABASE_EXPORT

DIMENSION

データベース内のディメンション。

DATABASE_EXPORT

DIRECTORY

データベース内のディレクトリ・オブジェクト。

DATABASE_EXPORT

FGA_POLICY

ファイングレイン監査方針。

DATABASE_EXPORT

FUNCTION

ファンクション

DATABASE_EXPORT

*GRANT

オブジェクト権限付与およびシステム権限付与。

DATABASE_EXPORT

INDEX

表とクラスタの索引(ドメイン索引を含む)。

DATABASE_EXPORT

INDEXTYPE

索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

JAVA_SOURCE

Javaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

JOB

ジョブ

DATABASE_EXPORT

LIBRARY

外部プロシージャ・ライブラリ。

DATABASE_EXPORT

MATERIALIZED_VIEW

マテリアライズド・ビュー

DATABASE_EXPORT

MATERIALIZED_VIEW_LOG

マテリアライズド・ビュー・ログ。

DATABASE_EXPORT

OBJECT_GRANT

データベース内のすべてのオブジェクト権限付与。

DATABASE_EXPORT

OPERATOR

演算子、および演算子の依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

PACKAGE

パッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

PACKAGE_BODY

パッケージ本体。

DATABASE_EXPORT

PACKAGE_SPEC

パッケージ仕様部。

DATABASE_EXPORT

PASSWORD_HISTORY

データベース・ユーザーのパスワード履歴。

DATABASE_EXPORT

*PASSWORD_VERIFY_FUNCTION

複雑なパスワードの検証機能。

DATABASE_EXPORT

PROCEDURE

プロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

PROFILE

プロファイル。

DATABASE_EXPORT

PROXY

プロキシ認証。

DATABASE_EXPORT

REF_CONSTRAINT

データベース内の表に対する参照制約(外部キー制約)。

DATABASE_EXPORT

REFRESH_GROUP

リフレッシュ・グループ。

DATABASE_EXPORT

*RESOURCE_ COST

リソース・コスト情報。

DATABASE_EXPORT

RLS_CONTEXT

ファイングレイン・アクセス・コントロールの駆動コンテキスト。

DATABASE_EXPORT

RLS_GROUP

ファイングレイン・アクセス・コントロールのポリシー・グループ。

DATABASE_EXPORT

RLS_POLICY

ファイングレイン・アクセス・コントロールのポリシー。

DATABASE_EXPORT

ROLE

ロール

DATABASE_EXPORT

ROLE_GRANT

データベース内のユーザーに対するロール権限付与。

DATABASE_EXPORT

ROLLBACK_SEGMENT

ロールバック・セグメント。

DATABASE_EXPORT

*SCHEMA(名前付きオブジェクト)

データベース・スキーマ - 各スキーマに関連するすべての関連オブジェクトと依存オブジェクトも含まれ、関連オブジェクトや依存オブジェクトには、ユーザー定義とその属性(デフォルト・ロール、ロール権限付与、表領域割当て制限など)、スキーマ内のオブジェクト(表、ビュー、パッケージ、タイプなど)、スキーマ内のオブジェクトの依存オブジェクト(権限付与、監査、索引、制約など)があります。このオブジェクト・タイプ・パス名にNAMEフィルタとNAME_EXPRフィルタを適用すると、フェッチするデータベース・スキーマを指定できます。

DATABASE_EXPORT

SEQUENCE

順序。

DATABASE_EXPORT

STATISTICS

表と索引に関する統計情報。

DATABASE_EXPORT

SYNONYM

パブリック・シノニムとプライベート・シノニム。

DATABASE_EXPORT

SYSTEM_GRANT

システム権限付与。

DATABASE_EXPORT

TABLE

表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。

DATABASE_EXPORT

TABLE_DATA

すべての表の行データ。

DATABASE_EXPORT

TABLESPACE

表領域の定義。

DATABASE_EXPORT

TABLESPACE_QUOTA

データベース内のユーザーに付与された表領域割当て制限。

DATABASE_EXPORT

TRIGGER

データベース、スキーマ、スキーマ・オブジェクトに対するトリガー。

DATABASE_EXPORT

XS_USER

Real Application Security(RAS)ユーザー

DATABASE_EXPORT

XS_ROLE

Real Application Security(RAS)ロール

DATABASE_EXPORT

XS_SECURITY_CLASS

Real Application Security(RAS)セキュリティ・クラス

DATABASE_EXPORT

XS_DATA_SECURITY

Real Application Security(RAS)データ・セキュリティ・ポリシー

DATABASE_EXPORT

XS_ACL

Real Application Security(RAS)のアクセス制御リスト(ACL)

DATABASE_EXPORT

XS_NAMESPACE

Real Application Security(RAS)ネームスペース

DATABASE_EXPORT

TRUSTED_DB_LINK

信頼されているリンク。

DATABASE_EXPORT

TYPE

タイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

TYPE_BODY

タイプ本体。

DATABASE_EXPORT

TYPE_SPEC

タイプ仕様部。

DATABASE_EXPORT

USER

ユーザー定義。

DATABASE_EXPORT

VIEW

ビュー

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_FILTERがコールされました。FETCH_xxxへの最初のコールの後で、それ以上SET_FILTERをコールできません。

- INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。

- OPENコンテキストに関連付けられたオブジェクト・タイプに対して、フィルタ名が有効でありません。

- object_type_pathに対して、フィルタのnameパラメータが無効です。

- handleによって指定されるコレクションにobject_type_pathが属していません。

- フィルタのvalueパラメータのデータ・タイプが不正です。

SET_PARSE_ITEMプロシージャ

このプロシージャは、取出しと送信の両方の目的に使用されます。このプロシージャは、解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

- データベースにXMLを送信するためのサブプログラム

構文

オブジェクトの取出しにSET_PARSE_ITEMを使用するときは、次の構文が適用されます。

DBMS_METADATA.SET_PARSE_ITEM (
handle       IN  NUMBER,
name         IN  VARCHAR2,
object_type  IN  VARCHAR2 DEFAULT NULL);

XMLの送信にSET_PARSE_ITEMを使用するときは、次の構文が適用されます。

DBMS_METADATA.SET_PARSE_ITEM (
handle     IN NUMBER,
name        IN VARCHAR2);

パラメータ

表94-20 SET_PARSE_ITEMプロシージャのパラメータ

パラメータ

説明

handle

OPEN(またはOPENW)から戻されたハンドル。

name

解析して戻されるオブジェクト属性の名前。オブジェクト・タイプ、名前および意味は、表94-21を参照してください。

object_type

解析項目が適用されるオブジェクト・タイプを指定します(オブジェクトのパス名ではなくタイプ名を指定します)。デフォルトでは、OPENハンドルのオブジェクト・タイプに解析項目が適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合は、次のいずれかの動作になります。

- object_typeが省略される場合は、異種コレクション内部のすべてのオブジェクト・タイプに解析項目が適用されます。

- object_typeが指定されている場合は、異種コレクション内部の指定されたオブジェクト・タイプのみに解析項目が適用されます。

オブジェクトの取出しにSET_PARSE_ITEMを使用するときにのみ、このパラメータが適用されます。

表94-21に、SET_PARSE_ITEMプロシージャで使用できる解析項目のオブジェクト・タイプ、名前および意味を示します。

表94-21 SET_PARSE_ITEM: 解析項目

オブジェクト・タイプ

名前

意味

すべてのオブジェクト

VERB

FETCH_XML_CLOBをコールした場合、値は戻されません。

FETCH_DDLをコールした場合は、FETCH_DDLから戻されるネストした表sys.ku$_ddlsの個々の行ごとに、対応するddlText内のVerbが戻されます。ddlTextがSQL DDL文である場合は、SQL verb(例: CREATE、GRANT、AUDITなど)が戻されます。ddlTextがプロシージャ・コール(例: DBMS_AQADM.CREATE_QUEUE_TABLE()など)である場合は、package.procedure-nameが戻されます。

すべてのオブジェクト

OBJECT_TYPE

FETCH_XML_CLOBをコールした場合は、表94-12に示したオブジェクト・タイプ名が戻されます。

FETCH_DDLをコールしたときに、ddlTextがSQL DDL文で、そのverbがCREATEまたはALTERである場合は、DDL文で使用されているオブジェクト・タイプ(例: TABLE、PACKAGE_BODYなど)が戻されます。それ以外の場合は、表94-12に示したオブジェクト・タイプ名が戻されます。

スキーマ・オブジェクト

SCHEMA

オブジェクト・スキーマが戻されます。オブジェクトがスキーマ・オブジェクトでない場合、値は戻されません。

名前付きオブジェクト

NAME

オブジェクト名が戻されます。オブジェクトが名前付きオブジェクトでない場合、値は戻されません。

TABLE、TABLE_DATA、INDEX

TABLESPACE

オブジェクトの表領域名、または、オブジェクトがパーティション表である場合は、デフォルトの表領域が戻されます。TABLE_DATAオブジェクトの場合は、常に、行が格納される表領域が戻されます。

TRIGGER

ENABLE

トリガーが有効にされている場合、ENABLEが戻されます。トリガーが無効にされている場合、DISABLEが戻されます。

OBJECT_GRANT、TABLESPACE_QUOTA

GRANTOR

権限付与者が戻されます。

依存オブジェクト(ドメイン索引、セカンダリ表を含む)

BASE_OBJECT_NAME

ベース・オブジェクトの名前が戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。

依存オブジェクト(ドメイン索引、セカンダリ表を含む)

BASE_OBJECT_SCHEMA

ベース・オブジェクトのスキーマが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。

依存オブジェクト(ドメイン索引、セカンダリ表を含む)

BASE_OBJECT_TYPE

ベース・オブジェクトのオブジェクト・タイプが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。

権限付与オブジェクト

GRANTEE

権限受領者が戻されます。オブジェクトが権限付与オブジェクトでない場合、値は戻されません。

使用上の注意

次の注意は、オブジェクトの取出しにSET_PARSE_ITEMを使用するときにのみ適用されます。

FETCH_xxxのデフォルトでは、オブジェクトのメタデータがXMLまたは作成DDLとして戻されます。SET_PARSE_ITEMをコールすると、オブジェクトの個々の属性も戻すことを要求できます。

SET_PARSE_ITEMを複数回コールして、複数の項目を解析して戻すように要求できます。解析された項目は、ネストした表sys.ku$_parsed_itemsに戻されます。

TABLE_DATAオブジェクトを解析する場合は、次の解析項目の戻り値に注意してください。

オブジェクト・タイプ

名前、スキーマ

BASE_OBJECT_NAME、BASE_OBJECT_SCHEMA

パーティション化していない表

表名、スキーマ

表名、スキーマ

表パーティション

パーティション名、スキーマ

表名、スキーマ

ネストした表

記憶表の名前、スキーマ

(ネストした表の親表ではなく)最上位レベルの表の名前とスキーマ

通常、表は依存オブジェクトとはみなされません。ただし、ドメイン索引のセカンダリ表はドメイン索引に依存しています。そのため、解析項目BASE_OBJECT_NAME、BASE_OBJECT_SCHEMAおよびBASE_OBJECT_TYPEをセカンダリ表(TABLEオブジェクト)に適用すると、ドメイン索引の名前、スキーマおよびタイプが戻されます。

関連項目:

- 「FETCH_xxxファンクションおよびプロシージャ」

- メタデータAPIの使用方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

CONVERTプロシージャとPUTプロシージャのデフォルトでは、単にオブジェクトのXMLメタデータがDDLに変換されます。SET_PARSE_ITEMをコールすると、オブジェクトの個々の属性も戻すことを要求できます。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_PARSE_ITEMがコールされました。FETCH_xxxへの最初のコールの後で、それ以上SET_PARSE_ITEMをコールできません。

- INCONSISTENT_ARGS。属性nameがOPENコンテキストに関連付けられたオブジェクト・タイプに対し有効でありません。

SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ

これらのプロシージャは、取出しと送信の両方の目的に使用されます。SET_TRANSFORM_PARAMとSET_REMAP_PARAMは、transform_handleによって特定されるXSLTスタイルシートに対するパラメータを指定します。これらのプロシージャを使用して、変換の出力の変更またはカスタマイズを行います。

関連項目:
関連するサブプログラムの詳細は、次の項を参照してください。

- データベースから複数のオブジェクトを取り出すためのサブプログラム

- データベースにXMLを送信するためのサブプログラム

構文

DBMS_METADATA.SET_TRANSFORM_PARAM (
transform_handle   IN NUMBER,
name               IN VARCHAR2,
value              IN VARCHAR2,
object_type        IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_TRANSFORM_PARAM (
transform_handle   IN NUMBER,
name               IN VARCHAR2,
value              IN BOOLEAN DEFAULT TRUE,
object_type        IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_TRANSFORM_PARAM (
transform_handle   IN NUMBER,
name               IN VARCHAR2,
value              IN NUMBER,
object_type        IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_REMAP_PARAM (
transform_handle   IN NUMBER,
name               IN VARCHAR2,
old_value          IN VARCHAR2,
new_value          IN VARCHAR2,
object_type        IN VARCHAR2 DEFAULT NULL);

パラメータ

表94-22に、SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャのパラメータを示します。

表94-22 SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMのパラメータ

パラメータ

説明

transform_handle

(1)ADD_TRANSFORMから戻されたハンドル、または(2)セッション全体のDDL変換を指定する列挙定数SESSION_TRANSFORM。

OPENから戻されたハンドルは、有効な変換ハンドルではありません。

SET_REMAP_PARAMの変換ハンドルは、MODIFY変換を指している必要があります。

name

変換パラメータの名前。

SET_TRANSFORM_PARAMプロシージャで各変換に使用可能なパラメータの詳細は、次を参照してください。

表94-23: DDL変換

表94-24: MODIFY変換

表94-26: SXML変換

表94-27: MODIFYSXML変換

表94-28: SXMLDDL変換

SET_REMAP_PARAMプロシージャでMODIFY変換に使用可能なパラメータの詳細は、表94-25を参照してください。

ALTERXML変換に使用可能なパラメータの詳細は、表94-4を参照してください。

value

変換の値。このパラメータは、SET_TRANSFORM_PARAMのみで有効です。

old_value

再マッピングの元の値。このパラメータは、SET_REMAP_PARAMのみで有効です。

new_value

再マッピングの新しい値。このパラメータは、SET_REMAP_PARAMのみで有効です。

object_type

変換または再マッピングのパラメータが適用されるオブジェクト・タイプを指定します。デフォルトでは、変換と同じオブジェクト・タイプにパラメータが適用されます。異種コレクション内部のすべてのオブジェクト・タイプに変換が適用される場合は、次のような動作になります。

- object_typeが省略されている場合は、異種コレクション内部のすべてのオブジェクト・タイプにパラメータが適用されます。

- object_typeが指定されている場合は、そのオブジェクト・タイプのみにパラメータが適用されます。

異種コレクションに変換を追加したコール元でこのパラメータを使用すると、コレクション内部の個々のオブジェクト・タイプに対して、別々の変換パラメータを指定できます。

表94-23に、SET_TRANSFORM_PARAMプロシージャのDDL変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表94-23 SET_TRANSFORM_PARAM: DDL変換の変換パラメータ

オブジェクト・タイプ

名前

データ・タイプ

意味

すべてのオブジェクト

PRETTY

BOOLEAN

TRUEである場合、インデントおよび改行が設定された出力をフォーマットします。デフォルトはTRUEです。

すべてのオブジェクト

SQLTERMINATOR

BOOLEAN

TRUEの場合、各DDL文にSQL終了記号(;または/)を追加します。デフォルトはFALSEです。

TABLE

CONSTRAINTS

BOOLEAN

TRUEの場合、DDLにすべての非参照表制約を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

REF_CONSTRAINTS

BOOLEAN

TRUEの場合、DDLにすべての参照制約(外部キー)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

CONSTRAINTS_AS_ALTER

BOOLEAN

TRUEの場合、別のALTER TABLE文(必要に応じてCREATE INDEX)として表制約を含めます。FALSEの場合、CREATE TABLE文の一部として表制約を指定します。デフォルトはFALSEです。CONSTRAINTSがTRUEである必要があります。

TABLE、TYPE

OID

BOOLEAN

TRUEの場合、DDLにOID句を含めます。FALSEの場合、省略します。デフォルトはFALSEです。

TABLE

SIZE_BYTE_KEYWORD

BOOLEAN

TRUEの場合、バイト・セマンティクスを使用するCHARおよびVARCHAR2列のサイズ仕様の一部として、BYTEキーワードを含めます。FALSEの場合、キーワードを省略します。デフォルトはFALSEです。

TABLE、INDEX

PARTITIONING

BOOLEAN

TRUEの場合、DDLにパーティション句を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

INDEX、CONSTRAINT、ROLLBACK_SEGMENT、CLUSTER、TABLE、TABLESPACE

SEGMENT_ATTRIBUTES

BOOLEAN

TRUEの場合、DDLにセグメント属性句(物理的な属性、記憶域の属性、表領域、ロギング)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

INDEX、CONSTRAINT、ROLLBACK_SEGMENT、CLUSTER、TABLE

STORAGE

BOOLEAN

TRUEの場合、DDLに記憶域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

INDEX、CONSTRAINT、ROLLBACK_SEGMENT、CLUSTER、TABLE

TABLESPACE

BOOLEAN

TRUEの場合、DDLに表領域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

TYPE、PACKAGE

SPECIFICATION

BOOLEAN

TRUEの場合、DDLにタイプまたはパッケージ仕様部を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TYPE、PACKAGE

BODY

BOOLEAN

TRUEの場合、DDLにタイプ本体またはパッケージ本体を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

VIEW

FORCE

BOOLEAN

TRUEの場合、CREATE VIEW文でFORCEキーワードを使用します。FALSEの場合、CREATE VIEW文でFORCEキーワードを使用しないでください。デフォルトはTRUEです。

OUTLINE

INSERT

BOOLEAN

TRUEの場合、アウトラインとそのヒントを作成するOL$ディクショナリ表にINSERT文を含めます。FALSEの場合は、CREATE OUTLINE文を省略します。デフォルトはFALSEです。

注意: このオブジェクト・タイプは非推奨となっています。

すべてのオブジェクト

DEFAULT

BOOLEAN

TRUEに設定されたこのパラメータを使用してSET_TRANSFORM_PARAMをコールすると、変換のパラメータがすべてデフォルトにリセットされます。FALSEに設定した場合は、何も実行されません。デフォルトはありません。

すべてのオブジェクト

INHERIT

BOOLEAN

TRUEの場合、セッションレベルのパラメータを継承します。デフォルトはFALSEです。アプリケーションがADD_TRANSFORMをコールしてDDL変換を追加した場合、デフォルトでは適用する変換パラメータのみがその変換ハンドルの明示的なセットとなります。変換ハンドルがセッション変換ハンドルである場合には、影響はありません。

ROLE

REVOKE_FROM

Text

ロールが取り消されるユーザーの名前。このパラメータがNULL文字列でない場合に、CREATE ROLE文を通じてユーザーにロールが付与されると、DDLでそのCREATE ROLE文の直後にREVOKE文が含まれます。

注意: CREATE ROLE文を発行すると、ユーザーにロールが付与されます。この変換パラメータを使用して、付与したロールを取り消すことができます。

デフォルトはNULL文字列です。

TABLESPACE

REUSE

BOOLEAN

TRUEの場合、表領域内のデータファイルにはREUSEパラメータが含まれ、既存のファイルを再利用することを明示します。FALSEの場合、REUSEパラメータを省略します。

デフォルトはFALSEです。

CLUSTER、INDEX、ROLLBACK_SEGMENT、TABLE、TABLESPACE

PCTSPACE

NUMBER

オブジェクト・タイプの領域割当てを修正する割合を示す数値。この値は、現在の割当てに100を掛けた数値です。たとえば、100は100%を意味します。

オブジェクト・タイプがTABLESPACEの場合は、次のサイズの値に影響します。

- ファイル指定でのSIZEの値

- MINIMUM EXTENT

- EXTENT MANAGEMENT LOCAL UNIFORM SIZE

これ以外のオブジェクト・タイプの場合は、INITIALおよびNEXTに影響します。

TABLE

LOB_STORAGE

Text

LOBセグメント用の記憶域タイプを指定します。オプションは次のとおりです。

- SECUREFILE: LOB記憶域がSECUREFILEとして戻されます。

- BASICFILE: LOB記憶域がBASICFILEとして戻されます。

- DEFAULT: LOB STORE AS句で、キーワード(SECUREFILEまたはBASICFILE)が省略されます。

- NO_CHANGE: LOBセグメントがソース・データベースと同様の記憶域環境で作成されます。これがデフォルトです。

この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表のLOB記憶域が変更されます。

TABLE

TABLE_COMPRESSION_CLAUSE

Text

表の作成時に使用する表の圧縮句(COMPRESS BASICなど)を指定します。

表の圧縮句を省略する場合は、NONEを指定します。表には、表領域に対するデフォルトの圧縮が適用されます。

この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表の圧縮タイプが変更されます。

表の圧縮オプションと構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

表94-24に、SET_TRANSFORM_PARAMプロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表94-24 SET_TRANSFORM_PARAM: MODIFY変換の変換パラメータ

オブジェクト・タイプ

名前

データ・タイプ

意味

すべてのオブジェクト

OBJECT_ROW

NUMBER

オブジェクトのオブジェクト行を示す数値。文書内のオブジェクトのうち、この数値に対応するオブジェクトが出力文書にコピーされます。

このパラメータは加算的です。

デフォルトでは、すべてのオブジェクトが出力文書にコピーされます。

表94-25に、SET_REMAP_PARAMプロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表94-25 SET_REMAP_PARAM: MODIFY変換の変換パラメータ

オブジェクト・タイプ

名前

データ・タイプ

意味

LIBRARY、TABLESPACE、DIRECTORY

REMAP_DATAFILE

Text

文書内にあるオブジェクトのファイル仕様名のうち、old_valueに一致する仕様名をnew_valueに変更します。ファイル仕様は引用符で囲まないでください。

このパラメータは加算的です。

デフォルトでは、ファイル仕様の名前は変更されません。

名前付きオブジェクトおよびすべてのオブジェクトは、名前付きオブジェクトに依存します。

REMAP_NAME

TEXT

文書内にある名前付きオブジェクトのうち、old_valueに一致するオブジェクト名をnew_valueに変更します。

依存オブジェクトのベース・オブジェクト名のうち、old_valueに一致するベース・スキーマ名をnew_valueに変更します。

このパラメータは加算的です。

デフォルトでは、名前は再マッピングされません。

(TABLESPACEオブジェクトの名前を再マッピングするには、REMAP_TABLESPACEを使用します。)

スキーマ・オブジェクト、依存オブジェクト、権限付与オブジェクト、USER

REMAP_SCHEMA

Text

文書内にあるスキーマ・オブジェクトのスキーマ名のうち、old_valueに一致するスキーマ名をnew_valueに変更します。

依存オブジェクトのベース・オブジェクト名のうち、old_valueに一致するベース・スキーマ名をnew_valueに変更します。

権限付与オブジェクトの権限受領者名のうち、old_valueに一致する権限受領者名をnew_valueに変更します。

ユーザーの名前のうち、old_valueに一致するユーザー名をnew_valueに変更します。

このパラメータは加算的です。

デフォルトでは、スキーマは再マッピングされません。

注意: インポートで検出できない一部のスキーマ参照があるため、マッピングは完全ではない場合があります。たとえば、インポートでは、トリガー、型定義、ビュー、プロシージャおよびパッケージの本体に埋め込まれたスキーマ参照は検出されません。

TABLE、CLUSTER、CONSTRAINT、INDEX、ROLLBACK_SEGMENT、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG、TABLESPACE_QUOTA

REMAP_TABLESPACE

Text

文書内にあるオブジェクトの表領域名のうち、old_valueに一致する表領域名をnew_valueに変更します。

このパラメータは加算的です。

デフォルトでは、表領域は再マッピングされません。

表94-26 SET_TRANSFORM_PARAM: SXML変換の変換パラメータ

オブジェクト・タイプ

名前

データ・タイプ

意味

TABLE、TYPE

OID

BOOLEAN

TRUEの場合、SXMLにOID句を含めます。FALSEの場合、省略します。デフォルトはFALSEです。

TABLE、INDEX、CLUSTER、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

STORAGE

BOOLEAN

TRUEの場合、SXMLに記憶域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

TABLE、INDEX、CLUSTER、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

TABLESPACE

BOOLEAN

TRUEの場合、SXMLに表領域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

TABLE

REF_CONSTRAINTS

BOOLEAN

TRUEの場合、SXMLにすべての参照制約(外部キー)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE、INDEX、MATERIALIZED_VIEW

PHYSICAL_PROPERTIES

BOOLEAN

TRUEの場合、SXMLにセグメント属性句(物理的な属性、記憶域の属性、表領域、ロギング)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

INDEX、CONSTRAINT、ROLLBACK_SEGMENT、CLUSTER,TABLE, TABLESPACE

SEGMENT_ATTRIBUTES

BOOLEAN

TRUEの場合、SXMLにセグメント属性句(物理的な属性、記憶域の属性、表領域、ロギング)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE、INDEX

PARTITIONING

BOOLEAN

TRUEの場合、SXMLにパーティション句を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

CONSTRAINTS

BOOLEAN

TRUEの場合、SXMLにすべての非参照表制約を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

表94-27 SET_TRANSFORM_PARAM: MODIFYSXML変換の変換パラメータ

オブジェクト・タイプ

名前

データ・タイプ

意味

TABLE、INDEX、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

STORAGE

BOOLEAN

TRUEの場合、出力SXMLに記憶域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

TABLE、INDEX、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

TABLESPACE

BOOLEAN

TRUEの場合、出力SXMLに表領域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

TABLE

REF_CONSTRAINTS

BOOLEAN

TRUEの場合、出力SXMLにすべての参照制約(外部キー)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE、INDEX、VIEW、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

REMAP_NAME

TEXT

文書内にあるNAME要素のうち、old_valueと一致する要素をnew_valueに変更します。

これは、列名には適用されません。(REMAP_COLUMN_NAMEを参照)。

TABLE、INDEX、VIEW、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

REMAP_SCHEMA

TEXT

文書内にあるSCHEMA要素のうち、old_valueと一致する要素をnew_valueに変更します。

TABLE、INDEX、VIEW、MATERIALIZED_VIEW

REMAP_COLUMN_NAME

TEXT

文書内にある列のうち、名前がold_valueに一致する列をnew_valueに変更します。

TABLE、INDEX、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

SEGMENT_ATTRIBUTES

BOOLEAN

TRUEの場合、出力SXMLにセグメント属性句(物理的な属性、記憶域の属性、表領域、ロギング)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

CONSTRAINTS

BOOLEAN

TRUEの場合、出力SXMLにすべての非参照表制約を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

表94-28 SET_TRANSFORM_PARAM: SXMLDDL変換の変換パラメータ

オブジェクト・タイプ

名前

データ・タイプ

意味

TABLE

OID

BOOLEAN

TRUEの場合、DDLにOIDを含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

TABLE、INDEX、CLUSTER、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

TABLESPACE

BOOLEAN

TRUEの場合、DDLに表領域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます。)デフォルトはTRUEです。

TABLE、INDEX、CLUSTER、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

STORAGE

BOOLEAN

TRUEの場合、DDLに記憶域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESがFALSEである場合には無視されます)。デフォルトはTRUEです。

TABLE

REF_CONSTRAINTS

BOOLEAN

TRUEの場合、DDLにすべての参照制約(外部キー)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

INDEX

PRESERVE_LOCAL

BOOLEAN

PARTITIONINGがFALSEかつPRESERVE_LOCALがTRUEかつ索引がローカル・パーティション索引である場合、DDLにLOCALキーワードを含めます。デフォルトはFALSEです。

TABLE、INDEX、CLUSTER、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG

SEGMENT_ATTRIBUTES

BOOLEAN

TRUEの場合、DDLにセグメント属性句(物理的な属性、記憶域の属性、表領域、ロギング)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLESPACE

REUSE

BOOLEAN

TRUEの場合、表領域内のデータファイルにはREUSEパラメータが含まれ、既存のファイルを再利用することを明示します。FALSEの場合、REUSEパラメータを省略します。

デフォルトはFALSEです。

TABLE、INDEX

PARTITIONING

BOOLEAN

TRUEの場合、DDLにパーティション句を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

CONSTRAINTS

BOOLEAN

TRUEの場合、出力SXMLにすべての非参照表制約を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

例外

- INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_TRANSFORM_PARAMまたはSET_REMAP_PARAMがコールされました。FETCH_xxxへの最初のコールの後で、それ以上SET_TRANSFORM_PARAMまたはSET_REMAP_PARAMをコールできません。

- INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。

- OPENコンテキストに関連付けられたオブジェクト・タイプ、または変換ハンドルに関連付けられた変換に対して、変換パラメータnameが有効でありません。

- 異種コレクション内部のすべてのオブジェクト・タイプに変換が適用されるにもかかわらず、object_typeがコレクションに属していません。

使用上の注意

XSLTを使用すると、パラメータをスタイルシートに渡すことができます。transform_handleによって特定されるスタイルシートに渡されるパラメータの値を指定するには、SET_TRANSFORM_PARAMまたはSET_REMAP_PARAMをコールします。

通常、同じパラメータ名に対してSET_TRANSFORM_PARAMETERを複数回コールすると、各コールによって以前のコールの結果が上書きされます。たとえば、次の一連のコールによって、STORAGE変換パラメータがTRUEに設定されます。

SET_TRANSFORM_PARAM(tr_handle,'STORAGE',false);
SET_TRANSFORM_PARAM(tr_handle,'STORAGE',true);

ただし、一部の変換パラメータは加算的ですが、これは、最後のパラメータ値だけではなく、指定されたすべてのパラメータ値が文書に適用されることを意味します。たとえば、MODIFY変換のOBJECT_ROWパラメータは加算的です。次を指定すると、指定された行はどちらも出力文書にコピーされます。

SET_TRANSFORM_PARAM(tr_handle,'OBJECT_ROW',5);
SET_TRANSFORM_PARAM(tr_handle,'OBJECT_ROW',8);

REMAP_TABLESPACEパラメータも加算的です。次のコールを実行すると、表領域TBS1がTBS2に変更され、表領域TBS3がTBS4に変更されます。

SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS1','TBS2');
SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS3','TBS4');

変換が実行される順序は明確に決まっていません。たとえば、次のようなコールを実行した場合、結果は予測できません。

SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS1','TBS2');
SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS2','TBS3');

注意:
MODIFY変換で指定可能な再マッピング・パラメータの数は、10に制限されます。つまり、REMAP_DATAFILE、REMAP_SCHEMAパラメータなどをそれぞれ最大10個まで指定できます。追加のインスタンスは無視されます。これを解決するには、別のDBMS_METADATA.ADD_TRANSFORMを実行し、追加の再マッピング・パラメータを指定します。

GET_DDL、GET_DEPENDENT_DDLおよびGET_GRANTED_DDLの各ファンクションを使用すると、一般的なブラウザを通じてオブジェクトの作成DDLを抽出できます。ユーザーが変換パラメータを指定できるように、このパッケージでは、DDL変換のハンドルとして列挙定数SESSION_TRANSFORMがセッション・レベルで定義されています。DBMS_METADATA.SESSION_TRANSFORMを変換ハンドルとして使用し、SET_TRANSFORM_PARAMをコールすると、セッション全体の変換パラメータを設定できます。GET_DDL、GET_DEPENDENT_DDLおよびGET_GRANTED_DDLの各ファンクションからDDL変換を起動するときは、セッション全体のパラメータが継承されます。

注意:
列挙定数にはパッケージ名DBMS_METADATA.SESSION_TRANSFORMを接頭辞として付加する必要があります。

95 DBMS_METADATA_DIFF

DBMS_METADATA_DIFFパッケージには、SXML形式の2つのメタデータ・ドキュメントを比較するためのインタフェースが含まれています。

関連項目:
メタデータAPIの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。

この章では、次の項目について説明します。

- DBMS_METADATA_DIFFの使用方法

- 概要

- セキュリティ・モデル

- オブジェクトをフェッチおよび比較するためのAPIの参照

- DBMS_METADATA_DIFFサブプログラムの要約

DBMS_METADATA_DIFFの使用方法

この項では、DBMS_METADATA_DIFFパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

DBMS_METADATA_DIFFパッケージに含まれているインタフェースを使用して、SXML形式の2つのメタデータ・ドキュメントを比較できます。比較の結果はSXML差分ドキュメントに出力されます。このドキュメントは、DBMS_METADATA送信インタフェースおよびCONVERT APIを使用して他の形式に変換できます。

セキュリティ・モデル

DBMS_METADATA_DIFFパッケージのブラウズ・インタフェースは、DBMS_METADATAパッケージを実際に使用して比較対象のメタデータをフェッチします。そのため、DBMS_METADATAで使用するセキュリティ・モデルは、DBMS_METADATA_DIFFにも適用されます。(ただし、DBMS_METADATA_DIFFはすべてのオブジェクト・タイプをサポートするわけではないことに注意してください。)

関連項目:
DBMS_METADATAのセキュリティ・モデルについては、DBMS_METADATAを参照してください。

オブジェクトをフェッチおよび比較するためのAPIの参照

次のファンクションを使用すると、2つのオブジェクトのメタデータを1回のコールで比較できます。

構文

DBMS_METADATA_DIFF.COMPARE_SXML(
object_type   IN VARCHAR2,
name1         IN VARCHAR2,
name2         IN VARCHAR2,
schema1       IN VARCHAR2 DEFAULT NULL,
schema2       IN VARCHAR2 DEFAULT NULL,
network_link1 IN VARCHAR2 DEFAULT NULL,
network_link2 IN VARCHAR2 DEFAULT NULL)
RETURN CLOB;

DBMS_METADATA_DIFF.COMPARE_ALTER(
object_type   IN VARCHAR2,
name1         IN VARCHAR2,
name2         IN VARCHAR2,
schema1       IN VARCHAR2 DEFAULT NULL,
schema2       IN VARCHAR2 DEFAULT NULL,
network_link1 IN VARCHAR2 DEFAULT NULL,
network_link2 IN VARCHAR2 DEFAULT NULL)
RETURN CLOB;

DBMS_METADATA_DIFF.COMPARE_ALTER_XML(
object_type   IN VARCHAR2,
name1         IN VARCHAR2,
name2         IN VARCHAR2,
schema1       IN VARCHAR2 DEFAULT NULL,
schema2       IN VARCHAR2 DEFAULT NULL,
network_link1 IN VARCHAR2 DEFAULT NULL,
network_link2 IN VARCHAR2 DEFAULT NULL)
RETURN CLOB;

パラメータ

表95-1 COMPARE_xxxファンクションのパラメータ

パラメータ

説明

object_type

比較するオブジェクトのタイプ。有効なタイプ名は、CLUSTER、CONTEXT、DB_LINK、FGA_POLICY、INDEX、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG、QUEUE、QUEUE_TABLE、RLS_CONTEXT、RLS_GROUP、RLS_POLICY、ROLE、SEQUENCE、SYNONYM、TABLE、TABLESPACE、TRIGGER、TYPE、TYPE_SPEC、TYPE_BODY、USERおよびVIEWです。

name1

比較する最初のオブジェクトの名前。

name2

比較する2番目のオブジェクトの名前。

schema1

比較する最初のオブジェクトのスキーマ。デフォルトは現行のユーザーです。

schema2

比較する2番目のオブジェクトのスキーマ。デフォルトはschema1の値です。

network_link1

最初のオブジェクトが存在するデータベースへのデータベース・リンクの名前。NULL(デフォルト)の場合、オブジェクトはコール元を実行しているデータベースに存在するとみなされます。

network_link2

2番目のオブジェクトが存在するデータベースへのデータベース・リンクの名前。デフォルトはnetwork_link1の値です。

戻り値

DBMS_METADATA_DIFF.COMPARE_xxxは2つのオブジェクト間の差分を戻します。

例外

- INVALID_ARGVAL
入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

- OBJECT_NOT_FOUND
指定したオブジェクトがデータベースにありません。

使用上の注意

これらのファンクションは、2つのオブジェクトそれぞれのメタデータをフェッチし、比較するためのDBMS_METADATAとDBMS_METADATA_DIFFのファンクションおよびプロシージャ両方へのコールをカプセル化しています。

使用するファンクションは、必要な比較形式によって異なります。

- COMPARE_SXMLは、SXML差分ドキュメントを戻します。

- COMPARE_ALTERは、最初のオブジェクトを2番目のオブジェクトのようにするための一連のALTER文を戻します。

- COMPARE_ALTER_XMLは、ALTER_XMLドキュメントを戻します。

DBMS_METADATA_DIFFサブプログラムの要約

DBMS_METADATA_DIFFサブプログラムの機能は、次のとおりです。

- 比較するオブジェクトのタイプの指定

- 比較するSXMLドキュメントの指定

- 比較したドキュメントの差分の表示

- 比較後のクリーンアップ

表95-2に、DBMS_METADATA_DIFFサブプログラムの要約を示します。

表95-2 DBMS_METADATA_DIFFパッケージのサブプログラム

サブプログラム

説明

OPENCファンクション

比較するオブジェクトのタイプを指定します。

ADD_DOCUMENTプロシージャ

比較するSXMLドキュメントを指定します。

FETCH_CLOBファンクションおよびプロシージャ

ADD_DOCUMENTで指定されている2つのドキュメントの差分を示すCLOBを戻します。

CLOSEプロシージャ

OPENCにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。

OPENCファンクション

このファンクションは、比較するオブジェクトのタイプを指定します。戻り値は、不透明なコンテキスト・ハンドルです。

構文

DBMS_METADATA_DIFF.OPENC (
object_type  IN VARCHAR2)
RETURN NUMBER;

パラメータ

表95-3 OPENCファンクションのパラメータ

パラメータ

説明

object_type

比較するオブジェクトのタイプ。有効なタイプ名は、CLUSTER、CONTEXT、DB_LINK、FGA_POLICY、INDEX、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG、QUEUE、QUEUE_TABLE、RLS_CONTEXT、RLS_GROUP、RLS_POLICY、ROLE、SEQUENCE、SYNONYM、TABLE、TABLESPACE、TRIGGER、TYPE、TYPE_SPEC、TYPE_BODY、USERおよびVIEWです。

戻り値

このファンクションから戻される不透明なハンドルは、ADD_DOCUMENT、FETCH_xxxおよびCLOSEへの入力として使用されます。

例外

- INVALID_ARGVAL
入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

ADD_DOCUMENTプロシージャ

このプロシージャは、比較するSXMLドキュメントを指定します。

構文

DBMS_METADATA_DIFF.ADD_DOCUMENT(
handle IN NUMBER, document IN sys.XMLType);

DBMS_METADATA_DIFF.ADD_DOCUMENT(
handle IN NUMBER, document IN CLOB);

パラメータ

表95-4 CLOSEプロシージャのパラメータ

パラメータ

説明

handle

OPENCから戻されたハンドル。

document

比較するドキュメント。ドキュメントはOPENCに指定されているタイプである必要があります。

使用上の注意

比較インタフェースで比較できるSXMLドキュメントは2つのみのため、プログラムではOPENCハンドルごとにADD_DOCUMENTを正確に2回コールする必要があります。比較結果では、最初のコールで指定されるドキュメントが文書1、2番目のコールで指定されるドキュメントが文書2です。

例外

- INVALID_ARGVAL
入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

FETCH_CLOBファンクションおよびプロシージャ

FETCH_CLOBファンクションおよびプロシージャは、ADD_DOCUMENTで指定されている2つのドキュメントの差分を示すCLOBを戻します。

構文

DBMS_METADATA_DIFF.FETCH_CLOB(
handle IN NUMBER)
RETURN CLOB;

DBMS_METADATA_DIFF.FETCH_CLOB(

handle IN  NUMBER,
doc    IN  OUT NOCOPY CLOB);

DBMS_METADATA_DIFF.FETCH_CLOB(
handle IN  NUMBER,
doc    IN  OUT NOCOPY CLOB
diffs  OUT BOOLEAN);

パラメータ

表95-5 CONVERTサブプログラムのパラメータ

パラメータ

説明

handle

OPENCから戻されたハンドル。

doc

文書1と文書2の差分を含むCLOB。

diffs

ドキュメントが異なる場合はTRUE、同一の場合はFALSEです。

戻り値

文書1と文書2の差分。

例外

- INVALID_ARGVAL
入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

CLOSEプロシージャ

このプロシージャは、OPENCにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。

構文

DBMS_METADATA_DIFF.CLOSE(
handle IN NUMBER);

パラメータ

表95-6 FETCH_xxxファンクションのパラメータ

パラメータ

説明

handle

OPENCから戻されたハンドル。

例外

- INVALID_ARGVAL
入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

96 DBMS_MGD_ID_UTL

DBMS_MGD_ID_UTLパッケージには、次に示す複数のユーティリティ・サブプログラムを構成する様々なファンクションおよびプロシージャが含まれています。

- JavaおよびPL/SQLのロギング・レベルを設定および取得するロギング・ユーティリティ

- プロキシ・サーバーのホストとポートを設定および設定解除するための2つのプロシージャで構成されるプロキシ・ユーティリティ

- メタデータの管理に使用されるファンクションおよびプロシージャで構成されるメタデータ・ユーティリティ

関連項目:
詳細は、『Oracle Database開発ガイド』を参照してください。

この章では、これらのユーティリティ・サブプログラムについてそれぞれ説明します。次の項目が含まれています。

- DBMS_MGD_ID_UTLの使用方法

- セキュリティ・モデル

- 定数

- 例外

- DBMS_MGD_ID_UTLサブプログラムの要約

この章の例では、次のコマンド・セットを実行してから各スクリプトを実行することを想定しています。

SQL> connect / as sysdba;
Connected.
SQL> create user mgduser identified by password;
SQL> grant connect, resource to mgduser;
SQL> connect mgduser
Enter password: mgduserpassword
Connected.
SQL> set serveroutput on;

DBMS_MGD_ID_UTLの使用方法

- セキュリティ・モデル

- 定数

- 例外

セキュリティ・モデル

catmgd.sqlスクリプトを実行して、DBMS_MGD_ID_UTLパッケージおよび識別コード・パッケージ・スキーマ・オブジェクトをMGDSYSスキーマにロードする必要があります。

DBMS_MGD_ID_UTLは、MGDSYS所有のパッケージです。無名PL/SQLブロックからコールされたすべてのDBMS_MGD_ID_UTLサブプログラムは、現行のユーザーの権限を使用して実行されます。

ユーザーには、DBMS_MGD_ID_UTLパッケージとそのサブプログラムを使用するために、接続ロールおよびリソース・ロールが付与されている必要があります。

EXECUTE権限は、MGD_ID、MGD_ID_COMPONENTおよびMGD_ID_COMPONENT_VARRAYの各ADTと、このパッケージDBMS_MGD_ID_UTLについてPUBLICに付与されます。

SELECTまたはREAD権限は、読取り専用ビューMGD_ID_CATEGORYおよびMGD_ID_SCHEME、メタデータ・ビューUSER_MGD_ID_CATEGORYおよびUSER_MGD_ID_SCHEME、表MGD_ID_XML_VALIDATOR、順序MGD$SEQUENCE_CATEGORYについてPUBLICに付与されます。

INSERT、UPDATEおよびDELETE権限は、メタデータ・ビューUSER_MGD_ID_CATEGORYおよびUSER_MGD_ID_SCHEMEについてPUBLICに付与されます。

パブリック・シノニムは、MGD_ID、MGD_ID_COMPONENTおよびMGD_ID_COMPONENT_VARRAYの各ADTと、このパッケージDBMS_MGD_ID_UTLに加え、読取り専用ビューMGD_ID_CATEGORYおよびMGD_ID_SCHEME、メタデータ・ビューUSER_MGD_ID_CATEGORYおよびUSER_MGD_ID_SCHEME、表MGD_ID_XML_VALIDATORについて同じ名前で作成されます。

定数

DBMS_MGD_ID_UTLでは、表96-1に示された定数を使用します。

表96-1 DBMS_MGD_ID_UTLの定数

名前

値

インストールされたカテゴリIDおよび名前

EPC_ENCODING_CATEGORY_ID

1

EPC_ENCODING_CATEGORY_NAME

EPC

ロギング・レベル

LOGGING_LEVEL_OFF

0

LOGGING_LEVEL_SEVERE

1

LOGGING_LEVEL_WARNING

2

LOGGING_LEVEL_INFO

3

LOGGING_LEVEL_FINE

4

LOGGING_LEVEL_FINER

5

LOGGING_LEVEL_FINEST

6

LOGGING_LEVEL_ALL

7

例外

表96-2はDBMS_MGD_ID_UTLの例外を示しています。

表96-2 DBMS_MGD_ID_UTLパッケージで発生する例外

名前

エラー・コード

説明

TDTJavaException

-55200

タグ・データの変換中に、Java例外が発生しました。

TDTCategoryNotFound

-55201

指定したカテゴリは検出されていません。

TDTSchemeNotFound

-55202

タグ・データの変換中に、指定したスキームが検出されていません。

TDTLevelNotFound

-55203

タグ・データの変換中に、指定したレベルが検出されていません。

TDTOptionNotFound

-55204

タグ・データの変換中に、指定したオプションが検出されていません。

TDTFieldValidationException

-55205

タグ・データの変換中に、フィールドの検証操作に失敗しました。

TDTUndefinedField

-55206

タグ・データの変換中に、定義されていないフィールドが検出されました。

TDTRuleEvaluationFailed

-55207

タグ・データの変換中に、ルール評価操作に失敗しました。

TDTTooManyMatchingLevels

-55208

タグ・データの変換中に、検出された一致したレベル数が多すぎます。

DBMS_MGD_ID_UTLサブプログラムの要約

表96-3に、DBMS_MGD_ID_UTLパッケージのユーティリティ・サブプログラムを示します。

特に明記されていないかぎり、DBMS_MGD_ID_UTLパッケージに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別が必要な場合は、値を二重引用符で囲んでください。

表96-3 DBMS_MGD_ID_UTLパッケージのサブプログラム

サブプログラム

説明

ADD_SCHEMEプロシージャ

既存のカテゴリに、タグ・データ変換スキームを追加します。

CREATE_CATEGORYファンクション

新規カテゴリまたは新バージョンのカテゴリを作成します。

EPC_TO_ORACLE_SCHEMEファンクション

EPCglobalタグ・データ変換(TDT)XMLをOracleタグ・データ変換XMLに変換します。

GET_CATEGORY_IDファンクション

カテゴリ名およびカテゴリ・バージョンが指定された場合に、カテゴリIDを戻します。

GET_COMPONENTSファンクション

指定したスキームに対応するセミコロン(';')区切りのすべての関連コンポーネント名を戻します。

GET_ENCODINGSファンクション

指定したスキームに対応するセミコロン(';')区切りのエンコード(フォーマット)のリストを戻します。

GET_JAVA_LOGGING_LEVELファンクション

現在のJavaトレース・ロギング・レベルを表す整数を戻します。

GET_PLSQL_LOGGING_LEVELファンクション

現在のPL/SQLトレース・ロギング・レベルを表す整数を戻します。

GET_SCHEME_NAMESファンクション

指定したカテゴリに対応するセミコロン(';')区切りのスキーム名のリストを戻します。

GET_TDT_XMLファンクション

指定したスキームに対応するOracleタグ・データ変換XMLを戻します。

GET_VALIDATORファンクション

Oracle Databaseタグ・データ変換スキーマを戻します。

REFRESH_CATEGORYファンクション

指定したカテゴリに対応するJavaスタックのメタデータ情報をリフレッシュします。

REMOVE_CATEGORYプロシージャ

category_versionパラメータの値がNULLの場合、すべての関連TDT XMLを含むカテゴリを削除します。

REMOVE_PROXYプロシージャ

プロキシ・サーバーのホストおよびポートの設定を解除します。

REMOVE_SCHEMEプロシージャ

カテゴリからタグ・データ変換スキームを削除します。

SET_JAVA_LOGGING_LEVELプロシージャ

Javaロギング・レベルを設定します。

SET_PLSQL_LOGGING_LEVELプロシージャ

PL/SQLトレース・ロギング・レベルを設定します。

SET_PROXYプロシージャ

インターネット・アクセス用のプロキシ・サーバーのホストおよびポートを設定します。

VALIDATE_SCHEMEファンクション

Oracleタグ・データ変換スキーマに対して、入力タグ・データ変換XMLを検証します。

ADD_SCHEMEプロシージャ

このプロシージャは、既存のカテゴリにタグ・データ変換スキームを追加します。

構文

DBMS_MGD_ID_UTL.ADD_SCHEME (
category_id IN  VARCHAR2,
tdt_xml     IN  CLOB);

パラメータ

表96-4 ADD_SCHEMEプロシージャのパラメータ

パラメータ

説明

category_id

カテゴリID。

tdt_xml

タグ・データ変換XML。

例

この例は、次のいずれかのアクションを実行します。

1. カテゴリを作成します。

2. MGD_SAMPLE_CATEGORYカテゴリにコントラクタ・スキームおよび従業員スキームを追加します。

3. MGD_SAMPLE_CATEGORYスキームを検証します。

4. コントラクタ・スキームおよび従業員スキームのタグ変換をテストします。

5. コントラクタ・スキームを削除します。

6. コントラクタ・スキームのタグ変換のテストを実行すると、削除したコントラクタ・スキームに対して予測される例外が戻されます。

7. 従業員スキームのタグ変換のテストを実行すると、予測される値が戻されます。

8. MGD_SAMPLE_CATEGORYカテゴリを削除します。

--contents of add_scheme2.sql
SET LINESIZE 160
---------------------------------------------------------------------
---CREATE CATEGORY, ADD_SCHEME, REMOVE_SCHEME, REMOVE_CATEGORY-------
---------------------------------------------------------------------
DECLARE
amt          NUMBER;
buf          VARCHAR2(32767);
pos          NUMBER;
tdt_xml      CLOB;
validate_tdtxml VARCHAR2(1042);
category_id  VARCHAR2(256);
BEGIN
-- remove the testing category if already existed
DBMS_MGD_ID_UTL.remove_category('MGD_SAMPLE_CATEGORY', '1.0');
-- Step 1. Create the testing category 'MGD_SAMPLE_CATEGORY', version 1.0.
category_id := DBMS_MGD_ID_UTL.CREATE_CATEGORY('MGD_SAMPLE_CATEGORY', '1.0', 'Oracle',
'http://www.example.com/mgd/sample');
-- Step 2. Add contractor scheme to the category.
DBMS_LOB.CREATETEMPORARY(tdt_xml, true);
DBMS_LOB.OPEN(tdt_xml, DBMS_LOB.LOB_READWRITE);

buf := '<?xml version="1.0" encoding="UTF-8"?>
<TagDataTranslation version="0.04" date="2005-04-18T16:05:00Z"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode">
<scheme name="CONTRACTOR_TAG" optionKey="1" xmlns="">
<level type="URI" prefixMatch="example.contractor.">
<option optionKey="1" pattern="example.contractor.([0-9]*).([0-9]*)"
grammar="''example.contractor.'' contractorID ''.'' divisionID">
<field seq="1" characterSet="[0-9]*" name="contractorID"/>
<field seq="2" characterSet="[0-9]*" name="divisionID"/>
</option>
</level>
<level type="BINARY" prefixMatch="11">
<option optionKey="1" pattern="11([01]{7})([01]{6})"
grammar="''11'' contractorID divisionID ">
<field seq="1" characterSet="[01]*" name="contractorID"/>
<field seq="2" characterSet="[01]*" name="divisionID"/>
</option>
</level>
</scheme>
</TagDataTranslation>';

amt := length(buf);
pos := 1;
DBMS_LOB.WRITE(tdt_xml, amt, pos, buf);
DBMS_LOB.CLOSE(tdt_xml);

DBMS_MGD_ID_UTL.ADD_SCHEME(category_id, tdt_xml);

-- Add the employee scheme to the category.
DBMS_LOB.CREATETEMPORARY(tdt_xml, true);
DBMS_LOB.OPEN(tdt_xml, DBMS_LOB.LOB_READWRITE);

buf := '<?xml version="1.0" encoding="UTF-8"?>
<TagDataTranslation version="0.04" date="2005-04-18T16:05:00Z"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode">
<scheme name="EMPLOYEE_TAG" optionKey="1" xmlns="">
<level type="URI" prefixMatch="example.employee.">
<option optionKey="1" pattern="example.employee.([0-9]*).([0-9]*)"
grammar="''example.employee.'' employeeID ''.'' divisionID">
<field seq="1" characterSet="[0-9]*" name="employeeID"/>
<field seq="2" characterSet="[0-9]*" name="divisionID"/>
</option>
</level>
<level type="BINARY" prefixMatch="01">
<option optionKey="1" pattern="01([01]{7})([01]{6})"
grammar="''01'' employeeID divisionID ">
<field seq="1" characterSet="[01]*" name="employeeID"/>
<field seq="2" characterSet="[01]*" name="divisionID"/>
</option>
</level>
</scheme>
</TagDataTranslation>';

amt := length(buf);
pos := 1;
DBMS_LOB.WRITE(tdt_xml, amt, pos, buf);
DBMS_LOB.CLOSE(tdt_xml);
DBMS_MGD_ID_UTL.ADD_SCHEME(category_id, tdt_xml);

-- Step 3. Validate the scheme.
dbms_output.put_line('Validate the MGD_SAMPLE_CATEGORY Scheme');
validate_tdtxml := DBMS_MGD_ID_UTL.validate_scheme(tdt_xml);
dbms_output.put_line(validate_tdtxml);
dbms_output.put_line('Length of scheme xml is: '||DBMS_LOB.GETLENGTH(tdt_xml));

-- Step 4. Test tag translation of contractor scheme.
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.contractor.123.45',
NULL, 'BINARY'));

dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'111111011101101',
NULL, 'URI'));

-- Test tag translation of employee scheme.
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.employee.123.45',
NULL, 'BINARY'));

dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'011111011101101',
NULL, 'URI'));

DBMS_MGD_ID_UTL.REMOVE_SCHEME(category_id, 'CONTRACTOR_TAG');

-- Step 6. Test tag translation of contractor scheme. Doesn't work any more.
BEGIN
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.contractor.123.45',
NULL, 'BINARY'));

dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'111111011101101',
NULL, 'URI'));
EXCEPTION
WHEN others THEN
dbms_output.put_line('Contractor tag translation failed: '||SQLERRM);
END;

-- Step 7. Test tag translation of employee scheme. Still works.
BEGIN
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'example.employee.123.45',
NULL, 'BINARY'));
dbms_output.put_line(
mgd_id.translate('MGD_SAMPLE_CATEGORY', NULL,
'011111011101101',
NULL, 'URI'));
EXCEPTION
WHEN others THEN
dbms_output.put_line('Employee tag translation failed: '||SQLERRM);
END;

-- Step 8. Remove the testing category, which also removes all the associated schemes
DBMS_MGD_ID_UTL.remove_category('MGD_SAMPLE_CATEGORY', '1.0');
END;
/
SHOW ERRORS;

SQL> @add_scheme3.sql
.
.
.
Validate the MGD_SAMPLE_CATEGORY Scheme
EMPLOYEE_TAG;URI,BINARY;divisionID,employeeID
Length of scheme xml is: 933
111111011101101
example.contractor.123.45
011111011101101
example.employee.123.45
Contractor tag translation failed: ORA-55203: Tag data translation level not found
ORA-06512: at "MGDSYS.DBMS_MGD_ID_UTL", line 54
ORA-06512: at "MGDSYS.MGD_ID", line 242
ORA-29532: Java call terminated by uncaught Java
exception: oracle.mgd.idcode.exceptions.TDTLevelNotFound: Matching level not
found for any configured scheme
011111011101101
example.employee.123.45
.
.
.

CREATE_CATEGORYファンクション

このファンクションは、新規カテゴリまたは新バージョンのカテゴリを作成します。

構文

DBMS_MGD_ID_UTL.CREATE_CATEGORY (
category_name    IN  VARCHAR2,
category_version IN  VARCHAR2,
agency           IN  VARCHAR2,
URI              IN  VARCHAR2)
RETURN VARCHAR2;

パラメータ

表96-5 CREATE_CATEGORYファンクションのパラメータ

パラメータ

説明

category_name

カテゴリの名前。

category_version

カテゴリ・バージョン。

agency

カテゴリを所有する組織。たとえば、EPCglobalはカテゴリEPCを所有します。

URI

カテゴリの追加情報を提供するURI。

使用上の注意

戻り値はカテゴリIDです。

例

MGD_SAMPLE_CATEGORYカテゴリの作成例については、「ADD_SCHEMEプロシージャ」を参照してください。

EPC_TO_ORACLE_SCHEMEファンクション

このファンクションは、EPCglobalタグ・データ変換(TDT)XMLをOracle Databaseタグ・データ変換XMLに変換します。

構文

DBMS_MGD_ID_UTL.EPC_TO_ORACLE_SCHEME (
xml_scheme IN CLOB)
RETURN CLOB;

パラメータ

表96-6 EPC_TO_ORACLE_SCHEMEファンクションのパラメータ

パラメータ

説明

xml_scheme

変換するEPCタグ・スキームの名前。

使用上の注意

戻り値は、Oracle Datanaseタグ・データ変換XMLを含むCLOBの内容です。

例

次の例では、標準EPCglobalタグ・データ変換(TDT)ファイルをOracle Database TDTファイルに変換します。

--Contents of MGD_ID_DOC2.sql
----------------------------
-- EPC_TO_ORACLE_SCHEME   --
----------------------------
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.example.com', '80');

BEGIN
DBMS_JAVA.set_output(1000000);
DBMS_OUTPUT.ENABLE(1000000);
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_SEVERE);
END;
/

DECLARE
epcScheme                 CLOB;
oracleScheme              CLOB;
amt                       NUMBER;
buf                       VARCHAR2(32767);
pos                       NUMBER;
seq                       BINARY_INTEGER;
validate_epcscheme        VARCHAR2(256);
validate_oraclescheme     VARCHAR2(256);
BEGIN

DBMS_LOB.CREATETEMPORARY(epcScheme, true);
DBMS_LOB.OPEN(epcScheme, DBMS_LOB.LOB_READWRITE);

buf := '<?xml version="1.0" encoding="UTF-8"?>
<epcTagDataTranslation version="0.04" date="2005-04-18T16:05:00Z"
epcTDSVersion="1.1r1.27"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:noNamespaceSchemaLocation="EpcTagDataTranslation.xsd">
<scheme name="GID-96" optionKey="1" tagLength="96">
<level type="BINARY" prefixMatch="00110101"
requiredFormattingParameters="taglength">
<option optionKey="1" pattern="00110101([01]{28})([01]{24})([01]{36})"
grammar="''00110101'' generalmanager objectclass serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[01]*" bitLength="28" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[01]*" bitLength="24" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[01]*" bitLength="36" name="serial"/>
</option>
</level>
<level type="TAG_ENCODING" prefixMatch="urn:epc:tag:gid-96"
requiredFormattingParameters="taglength">
<option optionKey="1"
pattern="urn:epc:tag:gid-96:([0-9]*)\.([0-9]*)\.([0-9]*)"
grammar="''urn:epc:tag:gid-96:'' generalmanager ''.'' objectclass ''.'' serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[0-9]*" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[0-9]*" name="serial"/>
</option>
</level>
<level type="PURE_IDENTITY" prefixMatch="urn:epc:id:gid">
<option optionKey="1"
pattern="urn:epc:id:gid:([0-9]*)\.([0-9]*)\.([0-9]*)"
grammar="''urn:epc:id:gid:'' generalmanager ''.'' objectclass ''.'' serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[0-9]*" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[0-9]*" name="serial"/>
</option>
</level>
<level type="LEGACY" prefixMatch="generalmanager=">
<option optionKey="1"
pattern="generalmanager=([0-9]*);objectclass=([0-9]*);serial=([0-9]*)"
grammar="''generalmanager=''generalmanager'';objectclass=''objectclass '';serial='' serial">
<field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/>
<field seq="2" decimalMinimum="0" decimalMaximum="16777215"
characterSet="[0-9]*" name="objectclass"/>
<field seq="3" decimalMinimum="0" decimalMaximum="68719476735"
characterSet="[0-9]*" name="serial"/>
</option>
</level>
</scheme>
</epcTagDataTranslation>';
amt := length(buf);
pos := 1;
DBMS_LOB.WRITE(epcScheme, amt, pos, buf);
DBMS_LOB.CLOSE(epcScheme);
oracleScheme := DBMS_MGD_ID_UTL.epc_to_oracle_scheme(epcScheme);
dbms_output.put_line('Length of oracle scheme xml is: '||DBMS_LOB.GETLENGTH(oracleScheme));
dbms_output.put_line(DBMS_LOB.SUBSTR(oracleScheme, DBMS_LOB.GETLENGTH(oracleScheme), 1));
dbms_output.put_line(' ');
dbms_output.put_line('Validate the Oracle Scheme');
validate_oraclescheme := DBMS_MGD_ID_UTL.validate_scheme(oracleScheme);
dbms_output.put_line('Validation result: '||validate_oraclescheme);
END;
/
SHOW ERRORS;

SQL> @mgd_id_doc2.sql
PL/SQL procedure successfully completed.

Length of oracle scheme xml is: 2475
<?xml version = '1.0' encoding = 'UTF-8'?>
<TagDataTranslation version="0.04"
date="2005-04-18T16:05:00Z" xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode"><scheme name="GID-96" optionKey="1" xmlns=""><level
type="BINARY" prefixMatch="00110101" requiredFormattingParameters=""><option
optionKey="1" pattern="00110101([01]{28})([01]{24})([01]{36})"
grammar="'00110101' generalmanager objectclass serial"><field seq="1"
decimalMinimum="0" decimalMaximum="268435455" characterSet="[01]*"
bitLength="28" name="generalmanager"/><field seq="2" decimalMinimum="0"
decimalMaximum="16777215" characterSet="[01]*" bitLength="24"
name="objectclass"/><field seq="3" decimalMinimum="0"
decimalMaximum="68719476735" characterSet="[01]*" bitLength="36"
name="serial"/></option></level><level type="TAG_ENCODING"
prefixMatch="urn:epc:tag:gid-96" requiredFormattingParameters=""><option
optionKey="1" pattern="urn:epc:tag:gid-96:([0-9]*)\.([0-9]*)\.([0-9]*)"
grammar="'urn:epc:tag:gid-96:' generalmanager '.' objectclass '.' serial"><field
seq="1" decimalMinimum="0" decimalMaximum="268435455" characterSet="[0-9]*"
name="generalmanager"/><field seq="2" decimalMinimum="0"
decimalMaximum="16777215" characterSet="[0-9]*" name="objectclass"/><field
seq="3" decimalMinimum="0" decimalMaximum="68719476735" characterSet="[0-9]*"
name="serial"/></option></level><level type="PURE_IDENTITY"
prefixMatch="urn:epc:id:gid"><option optionKey="1"
pattern="urn:epc:id:gid:([0-9]*)\.([0-9]*)\.([0-9]*)" grammar="'urn:epc:id:gid:'
generalmanager '.' objectclass '.' serial"><field seq="1" decimalMinimum="0"
decimalMaximum="268435455" characterSet="[0-9]*" name="generalmanager"/><field
seq="2" decimalMinimum="0" decimalMaximum="16777215" characterSet="[0-9]*"
name="objectclass"/><field seq="3" decimalMinimum="0"
decimalMaximum="68719476735" characterSet="[0-9]*"
name="serial"/></option></level><level type="LEGACY"
prefixMatch="generalmanager="><option optionKey="1"
pattern="generalmanager=([0-9]*);objectclass=([0-9]*);serial=([0-9]*)"
grammar="'generalmanager='generalmanager';objectclass='objectclass ';serial='
serial"><field seq="1" decimalMinimum="0" decimalMaximum="268435455"
characterSet="[0-9]*" name="generalmanager"/><field seq="2" decimalMinimum="0"
decimalMaximum="16777215" characterSet="[0-9]*" name="objectclass"/><field
seq="3" decimalMinimum="0" decimalMaximum="68719476735" characterSet="[0-9]*"
name="serial"/></option></level></scheme></TagDataTranslation>
Validate the Oracle Scheme
Validation result:
GID-96;LEGACY,TAG_ENCODING,PURE_IDENTITY,BINARY;objectclass,generalmanager,serial,

PL/SQL procedure successfully completed.
.
.
.

GET_CATEGORY_IDファンクション

このファンクションは、指定されたカテゴリ名およびカテゴリ・バージョンのカテゴリIDを戻します。

構文

DBMS_MGD_ID_UTL.GET_CATEGORY_ID (
category name     IN  VARCHAR2,
category_version  IN  VARCHAR2)
RETURN VARCHAR2;

パラメータ

表96-7 GET_CATEGORY_IDファンクションのパラメータ

パラメータ

説明

category_name

カテゴリの名前。

category_version

カテゴリ・バージョン。

使用上の注意

- category_versionの値がNULLの場合、指定されたカテゴリの最新バージョンのIDが戻されます。

- 戻り値は、指定されたカテゴリ名に対応するカテゴリIDです。

例

次の例では、指定されたカテゴリ名およびバージョンのカテゴリIDを戻します。

-- Contents of get_category1.sql file
SELECT DBMS_MGD_ID_UTL.get_category_id('EPC', NULL) FROM DUAL;

SQL> @get_category1.sql
.
.
.
DBMS_MGD_ID_UTL.GET_CATEGORY_ID('EPC',NULL)--------------------------------------------------------------------------------1
.
.
.

GET_COMPONENTSファンクション

このファンクションは、指定したスキームに対応する、セミコロン(;)区切りのすべての関連コンポーネント名を戻します。

構文

DBMS_MGD_ID_UTL.GET_COMPONENTS (
category_id IN VARCHAR2,
scheme_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表96-8 GET_COMPONENTSファンクションのパラメータ

パラメータ

説明

category_id

カテゴリID。

scheme_name

スキームの名前。

使用上の注意

戻り値には、指定したスキームに対応するセミコロン(;)区切りのコンポーネント名が含まれます。

例

次に、コンポーネントを取得する例を示します。

--Contents of get_components.sql
DECLARE
id             mgd_id;
getcomps       VARCHAR2(1000);
getencodings   VARCHAR2(1000);
getschemenames VARCHAR2(1000);
BEGIN
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_OFF);
DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
getcomps := DBMS_MGD_ID_UTL.get_components(1,'SGTIN-64');
dbms_output.put_line('Component names are: ' || getcomps);
getencodings := DBMS_MGD_ID_UTL.get_encodings(1,'SGTIN-64');
dbms_output.put_line('Encodings are: ' || getencodings);
getschemenames := DBMS_MGD_ID_UTL.get_scheme_names(1);
dbms_output.put_line('Scheme names are: ' || getschemenames);
END;
/
SHOW ERRORS;

SQL> @get_components.sql
.
.
.
Component names are:
filter,gtin,companyprefixlength,companyprefix,companyprefixindex,itemref,serial
Encodings are: ONS_HOSTNAME,LEGACY,TAG_ENCODING,PURE_IDENTITY,BINARY
Scheme names are:
GIAI-64,GIAI-96,GID-96,GRAI-64,GRAI-96,SGLN-64,SGLN-96,SGTIN-64,SGTIN-96,SSCC-64
,SSCC-96,USDOD-64,USDOD-96
PL/SQL procedure successfully completed.
.
.
.

GET_ENCODINGSファンクション

このファンクションは、指定したスキームに対応するセミコロン(;)区切りのエンコード(フォーマット)のリストを戻します。

構文

DBMS_MGD_ID_UTL.GET_ENCODINGS (
category_id IN VARCHAR2,
scheme_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表96-9 GET_ENCODINGSファンクションのパラメータ

パラメータ

説明

category_id

カテゴリID。

scheme_name

スキームの名前。

使用上の注意

戻り値には、指定したスキームに対応するセミコロン(;)区切りのエンコーディングが含まれます。

例

例については、「GET_COMPONENTSファンクション」を参照してください。

GET_JAVA_LOGGING_LEVELファンクション

このファンクションは、現在のトレース・ロギング・レベルを表す整数を戻します。

構文

DBMS_MGD_ID_UTL.GET_JAVA_LOGGING_LEVEL
RETURN INTEGER;

使用上の注意

戻り値は、現在のJavaロギング・レベルを示す整数値です。

例

次の例では、Javaロギング・レベルを取得します。

--Contents of getjavalogginglevel.sql
DECLARE
loglevel   NUMBER;
BEGIN
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_OFF);
loglevel := DBMS_MGD_ID_UTL.get_java_logging_level();
dbms_output.put_line('Java logging level = ' ||loglevel);
END;
/
SHOW ERRORS;

SQL> @getjavalogginglevel.sql
.
.
.
Java logging level = 0
PL/SQL procedure successfully completed.
.
.
.

GET_PLSQL_LOGGING_LEVELファンクション

このファンクションは、現在のPL/SQLトレース・ロギング・レベルを表す整数を戻します。

構文

DBMS_MGD_ID_UTL.GET_PLSQL_LOGGING_LEVEL
RETURN INTEGER;

PRAGMA restrict_references(get_plsql_logging_level, WNDS);

使用上の注意

戻り値は、現在のPL/SQLロギング・レベルを示す整数値です。

例

次の例では、PL/SQLロギング・レベルを取得します。

--Contents of getplsqllogginglevel.sql
DECLARE
loglevel   NUMBER;
BEGIN
DBMS_MGD_ID_UTL.set_plsql_logging_level(0);
loglevel := DBMS_MGD_ID_UTL.get_plsql_logging_level();
dbms_output.put_line('PL/SQL logging level = ' ||loglevel);
END;
/
SHOW ERRORS;

SQL> @getplsqllogginglevel.sql
.
.
.
PL/SQL logging level = 0
PL/SQL procedure successfully completed.
.
.
.

GET_SCHEME_NAMESファンクション

このファンクションは、指定したカテゴリに対応するセミコロン(;)区切りのスキーム名のリストを戻します。

構文

DBMS_MGD_ID_UTL.GET_SCHEME_NAMES (
category_id IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表96-10 GET_SCHEME_NAMESファンクションのパラメータ

パラメータ

説明

category_id

カテゴリID。

使用上の注意

戻り値には、指定されたカテゴリIDに対応するスキーム名が含まれます。

例

例については、「GET_COMPONENTSファンクション」を参照してください。

GET_TDT_XMLファンクション

このファンクションは、指定したスキームに対応するOracle Databaseタグ・データ変換XMLを戻します。

構文

DBMS_MGD_ID_UTL.GET_TDT_XML (
category_id  IN VARCHAR2,
scheme_name  IN VARCHAR2)
RETURN CLOB;

パラメータ

表96-11 GET_TDT_XMLファンクションのパラメータ

パラメータ

説明

category_id

カテゴリID。

scheme_name

スキームの名前。

使用上の注意

戻り値には、指定したスキームに対応するOracle Databaseタグ・データ変換XMLが含まれます。

例

次の例では、指定したスキームに対応するOracle Database TDT XMLを取得します。

--Contents of get_tdtxml.sql
DECLARE
gettdtxml      CLOB;

BEGIN
gettdtxml := DBMS_MGD_ID_UTL.get_tdt_xml(1,'SGTIN-64');
dbms_output.put_line('Length of tdt XML is '||DBMS_LOB.GETLENGTH(gettdtxml));
dbms_output.put_line(DBMS_LOB.SUBSTR(gettdtxml, DBMS_LOB.GETLENGTH(gettdtxml), 1));
END;
/
SHOW ERRORS;

SQL> @get_tdtxml.sql
.
.
.
Length of tdt XML is 22884
<?xml version = '1.0' encoding = "UTF-8"?>
<TagDataTranslation version="0.04"
date="2005-04-18T16:05:00Z" xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="oracle.mgd.idcode"><scheme name="SGTIN-64"
optionKey="companyprefixlength" xmlns="">
<level type="BINARY"
prefixMatch="10" requiredFormattingParameters="filter">
<option
optionKey="12" pattern="10([01]{3})([01]{14})([01]{20})([01]{25})" grammar="'10'
filter companyprefixindex itemref serial">
<field seq="1"
decimalMinimum="0" decimalMaximum="7" characterSet="[01]*" bitLength="3"
length="1" padChar="0" padDir="LEFT" name="filter"/>
<field seq="2"
decimalMinimum="0" decimalMaximum="16383" characterSet="[01]*" bitLength="14"
name="companyprefixindex"/>
<field seq="3" decimalMinimum="0"
decimalMaximum="9" characterSet="[01]*" bitLength="20" length="1" padChar="0"
padDir="LEFT" name="itemref"/>
<field seq="4" decimalMinimum="0"
decimalMaximum="33554431" characterSet="[01]*" bitLength="25" name="serial"/>
.
.
.
<field seq="1" decimalMinimum="0" decimalMaximum="9999999" characterSet="[0-9]*"
length="7" padChar="0" padDir="LEFT" name="itemref"/>
<field seq="2" decimalMinimum="0" decimalMaximum="999999" characterSet="[0-9]*" length="6"
padChar="0" padDir="LEFT" name="companyprefix"/>
</option>
</level>

</scheme></TagDataTranslation>
PL/SQL procedure successfully completed.
.
.
.

GET_VALIDATORファンクション

このファンクションは、Oracle Databaseタグ・データ変換スキーマを戻します。

構文

DBMS_MGD_ID_UTL.GET_VALIDATOR
RETURN CLOB;

使用上の注意

戻り値には、Oracle Databaseタグ・データ変換スキーマが含まれます。

例

この例では、Oracle Database TDTスキーマを戻します。

--Contents of get_validator.sql
DECLARE
getvalidator              CLOB;
BEGIN
getvalidator := DBMS_MGD_ID_UTL.get_validator;
dbms_output.put_line('Length of validated oracle scheme xml is '||DBMS_LOB.GETLENGTH(getvalidator));
dbms_output.put_line(DBMS_LOB.SUBSTR(getvalidator, DBMS_LOB.GETLENGTH(getvalidator), 1));
END;
/
SHOW ERRORS;

SQL> @get_validator.sql
.
.
.
Length of validated oracle scheme xml is 5780
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace="oracle.mgd.idcode"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:tdt="oracle.mgd.idcode" elementFormDefault="unqualified"

attributeFormDefault="unqualified" version="1.0">
<xsd:annotation>

<xsd:documentation>
<![CDATA[
<epcglobal:copyright>Copyright ?2004
Epcglobal Inc., All
Rights
Reserved.</epcglobal:copyright>
<epcglobal:disclaimer>EPCglobal Inc., its
members, officers, directors,
employees, or agents shall not be liable for any
injury, loss, damages,
financial or otherwise, arising from, related to, or
caused by the use of this
document. The use of said document shall constitute
your express consent to
the foregoing
exculpation.</epcglobal:disclaimer>
<epcglobal:specification>Tag Data
Translation (TDT) version
1.0</epcglobal:specification>
]]>

</xsd:documentation>
</xsd:annotation>
<xsd:simpleType
name="LevelTypeList">
<xsd:restriction base="xsd:string">

</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TagLengthList"

<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="SchemeNameList">
<xsd:restriction base="xsd:string">

</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType
name="InputFormatList">
<xsd:restriction base="xsd:string">

<xsd:enumeration value="BINARY"/>
<xsd:enumeration value="STRING"/>

</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ModeList">

<xsd:restriction base="xsd:string">
<xsd:enumeration value="EXTRACT"/>

<xsd:enumeration value="FORMAT"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="CompactionMethodList">
<xsd:restriction
base="xsd:string">
<xsd:enumeration value="32-bit"/>
<xsd:enumeration value="16-bit"/>
<xsd:enumeration value="8-bit"/>

<xsd:enumeration value="7-bit"/>      <xsd:enumeration value="6-bit"/>

<xsd:enumeration value="5-bit"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="PadDirectionList">
<xsd:restriction
base="xsd:string">
<xsd:enumeration value="LEFT"/>
<xsd:enumeration
value="RIGHT"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType
name="Field">
<xsd:attribute name="seq" type="xsd:integer" use="required"/>

<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute
name="bitLength" type="xsd:integer"/>
<xsd:attribute name="characterSet"
type="xsd:string" use="required"/>
<xsd:attribute name="compaction"
type="tdt:CompactionMethodList"/>
<xsd:attribute name="compression"
type="xsd:string"/>
<xsd:attribute name="padChar" type="xsd:string"/>

<xsd:attribute name="padDir" type="tdt:PadDirectionList"/>
<xsd:attribute
name="decimalMinimum" type="xsd:long"/>
<xsd:attribute name="decimalMaximum"
type="xsd:long"/>
<xsd:attribute name="length" type="xsd:integer"/>

</xsd:complexType>
<xsd:complexType name="Option">
<xsd:sequence>

<xsd:element name="field" type="tdt:Field" maxOccurs="unbounded"/>

</xsd:sequence>
<xsd:attribute name="optionKey" type="xsd:string"
use="required"/>
<xsd:attribute name="pattern" type="xsd:string"/>

<xsd:attribute name="grammar" type="xsd:string" use="required"/>

</xsd:complexType>
<xsd:complexType name="Rule">
<xsd:attribute
name="type" type="tdt:ModeList" use="required"/>
<xsd:attribute
name="inputFormat" type="tdt:InputFormatList"

use="required"/>
<xsd:attribute name="seq" type="xsd:integer"
use="required"/>
<xsd:attribute name="newFieldName" type="xsd:string"
use="required"/>
<xsd:attribute name="characterSet" type="xsd:string"
use="required"/>
<xsd:attribute name="padChar" type="xsd:string"/>

<xsd:attribute name="padDir" type="tdt:PadDirectionList"/>
<xsd:attribute
name="decimalMinimum" type="xsd:long"/>
<xsd:attribute name="decimalMaximum"
type="xsd:long"/>
<xsd:attribute name="length" type="xsd:string"/>

<xsd:attribute name="function" type="xsd:string" use="required"/>

<xsd:attribute name="tableURI" type="xsd:string"/>
<xsd:attribute
name="tableParams" type="xsd:string"/>
<xsd:attribute name="tableXPath"
type="xsd:string"/>
<xsd:attribute name="tableSQL" type="xsd:string"/>

</xsd:complexType>
<xsd:complexType name="Level">
<xsd:sequence>
<xsd:element name="option" type="tdt:Option" minOccurs="1"

maxOccurs="unbounded"/>
<xsd:element name="rule" type="tdt:Rule"
minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="type" type="tdt:LevelTypeList" use="required"/>
<xsd:attribute name="prefixMatch" type="xsd:string" use="optional"/>
<xsd:attribute name="requiredParsingParameters" type="xsd:string"/>
<xsd:attribute name="requiredFormattingParameters" type="xsd:string"/>

</xsd:complexType>
<xsd:complexType name="Scheme">
<xsd:sequence>
<xsd:element name="level" type="tdt:Level" minOccurs="1" maxOccurs="5"/>

</xsd:sequence>
<xsd:attribute name="name" type="tdt:SchemeNameList"
use="required"/>
<xsd:attribute name="optionKey" type="xsd:string"
use="required"/>
<xsd:attribute name="tagLength" type="tdt:TagLengthList"
use="optional"/>
</xsd:complexType>
<xsd:complexType
name="TagDataTranslation">
<xsd:sequence>
<xsd:element name="scheme"
type="tdt:Scheme" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute
name="version" type="xsd:string" use="required"/>
<xsd:attribute name="date"
type="xsd:dateTime" use="required"/>
</xsd:complexType>
<xsd:element
name="TagDataTranslation" type="tdt:TagDataTranslation"/>
</xsd:schema>

PL/SQL procedure successfully completed.
.
.
.

REFRESH_CATEGORYファンクション

このファンクションは、指定したカテゴリに対応するJavaスタックのメタデータ情報をリフレッシュします。このファンクションは、MGD_IDファンクションを使用する前にコールする必要があります。

構文

DBMS_MGD_ID_UTL.REFRESH_CATEGORY (
category_id  IN VARCHAR2);

パラメータ

表96-12 REFRESH_CATEGORYファンクションのパラメータ

パラメータ

説明

category_id

カテゴリID。

例

次の例では、EPCカテゴリIDのメタデータ情報をリフレッシュします。

--Contents of tostring3.sql
call DBMS_MGD_ID_UTL.set_proxy('www-proxy.example.com', '80');
DECLARE
id          MGD_ID;
BEGIN
DBMS_MGD_ID_UTL.set_java_logging_level(DBMS_MGD_ID_UTL.LOGGING_LEVEL_OFF);
DBMS_MGD_ID_UTL.refresh_category(DBMS_MGD_ID_UTL.get_category_id('EPC', NULL));
dbms_output.put_line('..Testing to_string');
DBMS_OUTPUT.PUT_LINE('test to_string');
id := mgd_id('EPC', NULL, 'urn:epc:id:gid:0037000.30241.1041970', 'scheme=GID-96');
DBMS_OUTPUT.PUT_LINE('mgd_id object as a string');
DBMS_OUTPUT.PUT_LINE(id.to_string);
END;
/
SHOW ERRORS;
call DBMS_MGD_ID_UTL.remove_proxy();

SQL> @tostring3.sql
..Testing to_string
test to_string
mgd_id object as a string
category_id =1;schemes = GID-96;objectclass = 30241;generalmanager =
0037000;scheme = GID-96;1 = 1;serial = 1041970

PL/SQL procedure successfully completed.

REMOVE_CATEGORYプロシージャ

このプロシージャは、関連するすべてのTDT XMLを含むカテゴリを削除します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

指定したカテゴリIDに基づいてカテゴリを削除します。

DBMS_MGD_ID_UTL.REMOVE_CATEGORY (
category_id  IN VARCHAR2);

指定したカテゴリ名およびカテゴリ・バージョンに基づいてカテゴリを削除します。

DBMS_MGD_ID_UTL.REMOVE_CATEGORY (
category_name    IN VARCHAR2,
category_version IN VARCHAR2);

パラメータ

表96-13 REMOVE_CATEGORYプロシージャのパラメータ

パラメータ

説明

category_id

カテゴリID。

category_name

カテゴリの名前。

category_version

カテゴリ・バージョン。

使用上の注意

category_versionの値がNULLの場合、指定したカテゴリのすべてのバージョンが削除されます。

例

カテゴリを削除する例については、「ADD_SCHEMEプロシージャ」を参照してください。

REMOVE_PROXYプロシージャ

このプロシージャは、プロキシ・サーバーのホストおよびポートの設定を解除します。

構文

DBMS_MGD_ID_UTL.REMOVE_PROXY;

例

例については、「REFRESH_CATEGORYファンクション」を参照してください。

REMOVE_SCHEMEプロシージャ

このプロシージャは、カテゴリからタグ・データ変換スキームを削除します。

構文

DBMS_MGD_ID_UTL.REMOVE_SCHEME (
category_id  IN  VARCHAR2,
scheme_name  IN  VARCHAR2);

パラメータ

表96-14 REMOVE_SCHEMEプロシージャのパラメータ

パラメータ

説明

category_id

カテゴリID。

scheme_name

スキームの名前。

例

スキームを削除する例については、「ADD_SCHEMEプロシージャ」を参照してください。

SET_JAVA_LOGGING_LEVELプロシージャ

このプロシージャは、Javaトレース・ロギング・レベルを設定します。

構文

DBMS_MGD_ID_UTL.SET_JAVA_LOGGING_LEVEL (
logginglevel IN  INTEGER);

パラメータ

表96-15 SET_JAVA_LOGGING_LEVELプロシージャのパラメータ

パラメータ

説明

logginglevel

ロギング・レベル。Javaロギング・レベルは、次の値(降順)のいずれかです。

- LOGGING_LEVEL_OFF CONSTANT INTEGER := 0

- LOGGING_LEVEL_SEVERE CONSTANT INTEGER := 1

- LOGGING_LEVEL_WARNING CONSTANT INTEGER := 2

- LOGGING_LEVEL_INFO CONSTANT INTEGER := 3

- LOGGING_LEVEL_FINE CONSTANT INTEGER := 4

- LOGGING_LEVEL_FINER CONSTANT INTEGER := 5

- LOGGING_LEVEL_FINEST CONSTANT INTEGER := 6

- LOGGING_LEVEL_ALL CONSTANT INTEGER := 7

例

例については、「GET_JAVA_LOGGING_LEVELファンクション」を参照してください。

SET_PLSQL_LOGGING_LEVELプロシージャ

このプロシージャは、PL/SQLトレース・ロギング・レベルを設定します。

構文

DBMS_MGD_ID_UTL.SET_PLSQL_LOGGING_LEVEL (
level IN INTEGER);

PRAGMA restrict_references(set_plsql_logging_level, WNDS);

パラメータ

表96-16 SET_PLSQL_LOGGING_LEVELプロシージャのパラメータ

パラメータ

説明

level

ロギング・レベル。PL/SQLロギング・レベルは、次の値(降順)のいずれかです。

- LOGGING_LEVEL_OFFCONSTANT INTEGER := 0

- LOGGING_LEVEL_SEVERECONSTANT INTEGER := 1

- LOGGING_LEVEL_WARNINGCONSTANT INTEGER := 2

- LOGGING_LEVEL_INFOCONSTANT INTEGER := 3

- LOGGING_LEVEL_FINECONSTANT INTEGER := 4

- LOGGING_LEVEL_FINERCONSTANT INTEGER := 5

- LOGGING_LEVEL_FINESTCONSTANT INTEGER := 6

- LOGGING_LEVEL_ALLCONSTANT INTEGER := 7

例

例については、「GET_PLSQL_LOGGING_LEVELファンクション」を参照してください。

SET_PROXYプロシージャ

このプロシージャは、インターネット・アクセス用のプロキシ・サーバーのホストおよびポートを設定します。データベース・サーバーがプロキシ・サーバーを使用してインターネットにアクセスする場合は、このプロシージャをコールする必要があります。一部のルールでは、企業の同一キー索引を取得する場合にObject Naming Service(ONS)表を検索する必要があるため、インターネット・アクセスが必要です。

インターネット・アクセスが必要なルールを含まないスキームのみを使用している場合は、このプロシージャをコールする必要はありません。

構文

DBMS_MGD_ID_UTL.SET_PROXY (
proxt_host   IN  VARCHAR2,
proxy_port   IN  VARCHAR2);

パラメータ

表96-17 SET_PROXYプロシージャのパラメータ

パラメータ

説明

proxy_host

ホスト名。

proxy_port

ホストのポート番号。

例

例については、「REFRESH_CATEGORYファンクション」を参照してください。

VALIDATE_SCHEMEファンクション

このファンクションは、Oracle Databaseタグ・データ変換スキーマに対して、入力タグ・データ変換XMLを検証します。

構文

DBMS_MGD_ID_UTL.VALIDATE_SCHEME (
xml_scheme IN CLOB)
RETURN VARCHAR2;

パラメータ

表96-18 VALIDATE_SCHEMEファンクションのパラメータ

パラメータ

説明

xml_scheme

検証するスキーム。

使用上の注意

戻り値には、指定されたスキームに対応するコンポーネント名が含まれます。

例

例については、「ADD_SCHEMEプロシージャ」または「EPC_TO_ORACLE_SCHEMEファンクション」を参照してください。

97 DBMS_MGWADM

DBMS_MGWADMは、メッセージ・ゲートウェイの管理インタフェースを定義します。パッケージとオブジェクト・タイプの所有者はSYSです。

注意:
catmgw.sqlスクリプトを実行して、メッセージ・ゲートウェイのパッケージおよびタイプをデータベースにロードする必要があります。

関連項目:
データベース・オブジェクトのロード方法およびDBMS_MGWADMの使用方法については、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_MGWADMの使用方法

- セキュリティ・モデル

- 定数

- 推奨されないサブプログラム

- データ構造

- DBMS_MGWADMサブプログラムの要約

DBMS_MGWADMの使用方法

- セキュリティ・モデル

- 推奨されないサブプログラム

- 定数

セキュリティ・モデル

管理者権限を持つユーザーは、DBMS_MGWADMのすべてのプロシージャを実行できます。

推奨されないサブプログラム

新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

次のサブプログラムは、Oracle Database 11gリリース1では改良されたテクノロジで置き換えられているため、推奨されていません。

- ADD_SUBSCRIBERプロシージャ: かわりにCREATE_JOBプロシージャを使用します。

- ALTER_PROPAGATION_SCHEDULEプロシージャ: かわりにALTER_JOBプロシージャを使用します。

- ALTER_SUBSCRIBERプロシージャ: かわりにALTER_JOBプロシージャを使用します。

- DB_CONNECT_INFOプロシージャ: かわりにALTER_AGENTプロシージャを使用します。

- DISABLE_PROPAGATION_SCHEDULEプロシージャ: かわりにDISABLE_JOBプロシージャを使用します。

- ENABLE_PROPAGATION_SCHEDULEプロシージャ: かわりにENABLE_JOBプロシージャを使用します。

- REMOVE_SUBSCRIBERプロシージャ: かわりにREMOVE_JOBプロシージャを使用します。

- RESET_SUBSCRIBERプロシージャ: かわりにRESET_JOBプロシージャを使用します。

- SCHEDULE_PROPAGATIONプロシージャ: かわりにCREATE_JOBプロシージャを使用します。

- UNSCHEDULE_PROPAGATIONプロシージャ: かわりにREMOVE_JOBプロシージャを使用します。

定数

- DBMS_MGWADM定数: クリーンアップ処理

- DBMS_MGWADM定数: 強制値

- DBMS_MGWADM定数: ロギング・レベル

- DBMS_MGWADM定数: 名前付きのプロパティの定数

- DBMS_MGWADM定数: その他の定数

- DBMS_MGWADM定数: 伝播タイプ

- DBMS_MGWADM定数: キュー・ドメイン・タイプ

- DBMS_MGWADM定数: 停止モード

- DBMS_MGWADM定数: WebSphere MQインタフェース・タイプ

- DBMS_MGWADM定数: SET_OPTIONおよびREMOVE_OPTIONプロシージャのtarget_type引数

- DBMS_MGWADM定数: CREATE_AGENTおよびALTER_AGENTプロシージャのconntype引数

表97-1 DBMS_MGWADM定数: クリーンアップ処理

名前

タイプ

説明

CLEAN_STARTUP_STATE

CONSTANT BINARY_INTEGER

メッセージ・ゲートウェイ・エージェントを既知の状態に設定して、起動できるようにします。

CLEAN_LOG_QUEUES

CONSTANT BINARY_INTEGER

構成されたすべてのメッセージ・システム・リンクのログ・キューをメッセージ・ゲートウェイ・エージェントによってクリアします。

RESET_SUB_MISSING_LOG_REC

CONSTANT BINARY_INTEGER

ログ・レコードが存在しないためにエラーになったメッセージ・ゲートウェイ・サブスクライバをメッセージ・ゲートウェイ・エージェントによって復元します。

RESET_SUB_MISSING_MESSAGE

CONSTANT BINARY_INTEGER

永続ソース・メッセージが存在しないためにエラーになったメッセージ・ゲートウェイ・サブスクライバをメッセージ・ゲートウェイ・エージェントによって復元します。

表97-2 DBMS_MGWADM定数: 強制値

名前

タイプ

説明

FORCE

CONSTANT BINARY_INTEGER

強制処理を表します。

NO_FORCE

CONSTANT BINARY_INTEGER

通常の非強制処理を表します。

表97-3 DBMS_MGWADM定数: ロギング・レベル

名前

タイプ

説明

BASIC_LOGGING

CONSTANT BINARY_INTEGER

ログ・ファイルに書き込まれる標準(最小限の)情報

TRACE_DEBUG_LOGGING

CONSTANT BINARY_INTEGER

ログ・ファイルに書き込まれる最大限の情報

TRACE_HIGH_LOGGING

CONSTANT BINARY_INTEGER

ログ・ファイルに書き込まれるログ情報の第3レベルの詳細

TRACE_LITE_LOGGING

CONSTANT BINARY_INTEGER

ログ・ファイルに書き込まれるログ情報の第2レベルの詳細

表97-4 DBMS_MGWADM定数: 名前付きのプロパティの定数

名前

タイプ

説明

MGWPROP_PREFIX

CONSTANT VARCHAR2

予約済のプロパティ名接頭辞の定数(MGWPROP$_)

MGWPROP_REMOVE

CONSTANT VARCHAR2

既存のプロパティを削除するために使用される予約済のプロパティ名の定数(MGWPROP$_REMOVE)。

MGWPROP_REMOVE_ALL

CONSTANT VARCHAR2

すべてのプロパティを削除するために使用される予約済のプロパティ名の定数(MGWPROP$_REMOVE_ALL)。

表97-5 DBMS_MGWADM定数: その他の定数

名前

タイプ

説明

JMS_CONNECTION

CONSTANT BINARY_INTEGER

JMSコネクションを使用して、ドメインに依存しない方法(統一されたメッセージ・モデルがサポートされている方法)で、JMS宛先にアクセスすることを示します。

JMS_QUEUE_CONNECTION

CONSTANT BINARY_INTEGER

JMSキュー・コネクションを使用してJMS宛先にアクセスすることを示します。

JMS_TOPIC_CONNECTION

CONSTANT BINARY_INTEGER

JMSトピック・コネクションを使用してJMS宛先にアクセスすることを示します。

NO_CHANGE

CONSTANT VARCHAR2

既存の値を保持する(変更しない)ことを示します。これは、1つ以上のパラメータを変更し、その他のパラメータは変更しない場合に、特定のAPIに使用されます。

DEFAULT_AGENT

CONSTANT VARCHAR2

デフォルトのメッセージ・ゲートウェイ・エージェントの名前。

表97-6 DBMS_MGWADM定数: 伝播タイプ

名前

タイプ

説明

INBOUND_PROPAGATION

CONSTANT BINARY_INTEGER

Oracle以外からOracle Databaseアドバンスト・キューイングへの伝播用の伝播タイプを表します。伝播ソースは外部(Oracle以外の)メッセージ・システムのキューで、宛先はローカルOracle Databaseアドバンスト・キューイング・キューです。

OUTBOUND_PROPAGATION

CONSTANT BINARY_INTEGER

Oracle Databaseアドバンスト・キューイングからOracle以外への伝播用の伝播タイプを表します。伝播ソースはローカルOracle Databaseアドバンスト・キューイング・キューで、宛先は外部(Oracle以外の)メッセージ・システムのキューです。

表97-7 DBMS_MGWADM定数: キュー・ドメイン・タイプ

名前

タイプ

説明

DOMAIN_QUEUE

CONSTANT BINARY_INTEGER

キューの宛先を表します。JMSキュー(Point-to-Pointモデル)はキューとして分類されます。

DOMAIN_TOPIC

CONSTANT BINARY_INTEGER

トピックの宛先を表します。JMSトピック(パブリッシュ・サブスクライブ・モデル)はトピックとして分類されます。

表97-8 DBMS_MGWADM定数: 停止モード

名前

タイプ

説明

SHUTDOWN_IMMEDIATE

CONSTANT BINARY_INTEGER

即時停止モードを表します。

SHUTDOWN_NORMAL

CONSTANT BINARY_INTEGER

通常の停止モードを表します。

表97-9 DBMS_MGWADM定数: WebSphere MQインタフェース・タイプ

名前

タイプ

説明

MQSERIES_BASE_JAVA_INTERFACE

CONSTANT BINARY_INTEGER

WebSphere MQメッセージ・システム用のBase Javaインタフェースを表します。

表97-10 DBMS_MGWADM定数: SET_OPTIONおよびREMOVE_OPTIONプロシージャのtarget_type引数

名前

タイプ

説明

AGENT_JAVA_PROP

CONSTANT PLS_INTEGER

Java Systemプロパティを設定する場合に使用されるエージェント・オプション用。

MSGLINK_OPTION

CONSTANT PLS_INTEGER

メッセージ・システム・リンク・オプション用。

JOB_OPTION

CONSTANT PLS_INTEGER

伝播ジョブ・オプション用。

表97-11 DBMS_MGWADM定数: CREATE_AGENTおよびALTER_AGENTプロシージャのconntype引数

名前

タイプ

説明

JDBC_OCI

CONSTANT VARCHAR2

JDBC OCIドライバの指定用

JDBC_THIN

CONSTANT VARCHAR2

JDBC Thinドライバの指定用

データ構造

DBMS_MGWADMパッケージは、次のOBJECTタイプを定義します。

オブジェクト・タイプ

- SYS.MGW_MQSERIES_PROPERTIESオブジェクト・タイプ

- SYS.MGW_PROPERTIESオブジェクト・タイプ

- SYS.MGW_PROPERTYオブジェクト・タイプ

- SYS.MGW_TIBRV_PROPERTIESオブジェクト・タイプ

SYS.MGW_MQSERIES_PROPERTIESオブジェクト・タイプ

このタイプは、WebSphere MQメッセージ・システム・リンクの基本プロパティを指定します。

構文

TYPE SYS.MGW_MQSERIES_PROPERTIES IS OBJECT (
queue_manager       VARCHAR2(64),
hostname            VARCHAR2(64),
port                INTEGER,
channel             VARCHAR2(64),
interface_type      INTEGER,
max_connections     INTEGER,
username            VARCHAR2(64),
password            VARCHAR2(64),
inbound_log_queue   VARCHAR2(64),
outbound_log_queue  VARCHAR2(64),

-- Methods
STATIC FUNCTION construct
RETURN SYS.MGW_MQSERIES_PROPERTIES,

STATIC FUNCTION alter_construct
RETURN SYS.MGW_MQSERIES_PROPERTIES );

属性

表97-12 SYS.MGW_MQSERIES_PROPERTIESの属性

属性

説明

queue_manager

WebSphere MQキュー・マネージャの名前。

hostname

WebSphere MQメッセージ・システムが常駐しているホスト。ホスト名がNULLの場合は、WebSphere MQバインド接続が使用されます。ホスト名がNULL以外の場合は、クライアント接続が使用され、ポートとチャネルを指定する必要があります。

port

ポート番号。クライアント接続の場合のみ、つまりhostnameがNULL以外の場合に使用されます。

channel

キュー・マネージャへの接続の確立時に使用されるチャネル。クライアント接続の場合のみ、つまりhostnameがNULL以外の場合に使用されます。

interface_type

使用するメッセージ・インタフェースのタイプ。値は次のとおりです。

- DBMS_MGWADM.MQSERIES_BASE_JAVA_INTERFACE(WebSphere MQ Base Javaインタフェースを使用する場合)

- DBMS_MGWADM.JMS_CONNECTION(リンクを使用し、統一されたドメインに依存しない方法でJMS宛先にアクセスする場合)

- DBMS_MGWADM.JMS_QUEUE_CONNECTION(リンクを使用してJMSキューにアクセスする場合)

- DBMS_MGWADM.JMS_TOPIC_CONNECTION(リンクを使用してJMSトピックにアクセスする場合)

max_connections

WebSphere MQメッセージ・システムへのメッセージ接続の最大数。

username

WebSphere MQメッセージ・システムに対する認証に使用されるユーザー名。

password

WebSphere MQメッセージ・システムに対する認証に使用されるパスワード。

inbound_log_queue

このメッセージ・リンクがインバウンド伝播に使用される場合、つまり、このリンクと関連付けられたキューが伝播ソースとして機能する場合に、伝播リカバリの目的で使用されるWebSphere MQキューの名前。

- MQSERIES_BASE_JAVA_INTERFACEの場合は、WebSphere MQ管理ツールを使用して作成される物理WebSphere MQキューの名前。

- JMS_CONNECTIONインタフェースおよびJMS_QUEUE_CONNECTIONインタフェースの場合は、WebSphere MQ管理ツールを使用して作成される物理WebSphere MQキューの名前。

- JMS_TOPIC_CONNECTIONインタフェースの場合は、WebSphere MQ JMSトピックの名前。このトピックのサブスクライバが使用するWebSphere MQ物理キューは、WebSphere MQ管理ツールを使用して作成する必要があります。デフォルトで使用される物理キューは、SYSTEM.JMS.D.SUBSCRIBER.QUEUEです。

outbound_log_queue

このメッセージ・リンクがアウトバウンド伝播に使用される場合、つまり、このリンクと関連付けられたキューが伝播宛先として機能する場合に、伝播リカバリの目的で使用されるWebSphere MQキューの名前。

- MQSERIES_BASE_JAVA_INTERFACEの場合は、WebSphere MQ管理ツールを使用して作成される物理WebSphere MQキューの名前。

- JMS_CONNECTIONインタフェースおよびJMS_QUEUE_CONNECTIONインタフェースの場合は、WebSphere MQ管理ツールを使用して作成される物理WebSphere MQキューの名前。

- JMS_TOPIC_CONNECTIONインタフェースの場合は、WebSphere MQ JMSトピックの名前。このトピックのサブスクライバが使用するWebSphere MQ物理キューは、WebSphere MQ管理ツールを使用して作成する必要があります。デフォルトで使用される物理キューは、SYSTEM.JMS.D.SUBSCRIBER.QUEUEです。

メソッド

表97-13 SYS.MGW_MQSERIES_PROPERTIESメソッド

メソッド

説明

construct

新規SYS.MGW_MQSERIES_PROPERTIESインスタンスを構成します。すべての属性にNULLが割り当てられます。

alter_construct

既存のメッセージ・リンクのプロパティを変更するために、新規SYS.MGW_MQSERIES_PROPERTIESインスタンスを作成します。VARCHAR2データ・タイプのすべての属性に、DBMS_MGWADM.NO_CHANGE値が割り当てられます。他のデータ・タイプの属性には、NULL値が割り当てられます。

SYS.MGW_PROPERTIESオブジェクト・タイプ

このタイプは、プロパティの配列を指定します。

構文

TYPE SYS.MGW_PROPERTIES AS VARRAY (2000) OF SYS.MGW_PROPERTY;

属性

表97-14 SYS.MGW_PROPERTIESの属性

属性

説明

name

プロパティ名

value

プロパティ値

使用上の注意

特に注記がないかぎり、メッセージ・ゲートウェイは、名前付きのプロパティを次のように使用します。

- MGWPROP$_接頭辞が付いた名前は予約されています。これらは、特別な目的で使用されており、通常のプロパティ名として使用された場合は無効です。

- プロパティ名は、プロパティ・リストに1回のみ記述できるため、リストには特定の名前に対して1つの値のみ指定できます。名前の大文字と小文字は区別されません。

- 通常、プロパティ・リストは順序に依存せず、プロパティ名は任意の順序で表示される場合があります。変更プロパティ・リストは例外です。

- 新しいプロパティ・リストを使用して、既存のプロパティ・リストを変更できます。新規プロパティを使用して既存のプロパティ・リストを変更するには、新規プロパティの追加、既存プロパティの置換、既存プロパティの削除または全プロパティの削除という4通りの方法があります。

変更リストは、最初の要素から最後の要素まで順に処理されます。したがって、変更リストの要素の順序は重要です(特に既存のリストからプロパティを削除するために使用する場合)。

その要素が元のリストにどのように作用するかを判別するために、プロパティ名と値が使用されます。次のルールが適用されます。

- プロパティの追加または変更

MGW_PROPERTY.NAME = property_name
MGW_PROPERTY.VALUE = property_value

指定した名前のプロパティがすでに存在している場合、現行の値は新しい値で置き換えられます。プロパティが存在していない場合は、新規プロパティがリストの最後に追加されます。

- プロパティの削除

MGW_PROPERTY.NAME = 'MGWPROP$_REMOVE'
MGW_PROPERTY.VALUE = name_of_property_to_remove

プロパティ名が元のリストに存在しない場合、処理は何も行われません。

- すべてのプロパティの削除

MGW_PROPERTY.NAME = 'MGWPROP$_REMOVE_ALL'
MGW_PROPERTY.VALUE = not used

関連項目:
DBMS_MGWADMパッケージは、表97-4「DBMS_MGWADM定数: 名前付きのプロパティの定数」に示されている予約済のプロパティ名を表す定数を定義しています。

SYS.MGW_PROPERTYオブジェクト・タイプ

このタイプは、メッセージ・リンク、外部キューおよびサブスクライバのオプションのプロパティを指定するために使用される名前付きのプロパティを指定します。

構文

TYPE SYS.MGW_PROPERTY IS OBJECT(
name  VARCHAR2(500),
value VARCHAR2(4000),

-- Methods
STATIC FUNCTION construct    --- (1)
RETURN SYS.MGW_PROPERTY,

STATIC FUNCTION construct(   --- (2)
p_name   IN VARCHAR2,
p_value  IN VARCHAR2)
RETURN SYS.MGW_PROPERTY );

属性

表97-15 SYS.MGW_PROPERTYの属性

属性

説明

name

プロパティ名

value

プロパティ値

メソッド

表97-16 SYS.MGW_PROPERTYメソッド

メソッド

説明

construct --- (1)

新規MGW_PROPERTYインスタンスを作成します。すべての属性にNULLが割り当てられます。

construct --- (2)

特定のパラメータを使用して初期化される新規MGW_PROPERTYインスタンスを構成します。

SYS.MGW_TIBRV_PROPERTIESオブジェクト・タイプ

このタイプは、TIB/Rendezvousメッセージ・システム・リンクの基本プロパティを指定します。メッセージ・ゲートウェイ・エージェントは、個々のメッセージ・ゲートウェイ・リンクに対して、TibrvRvdTransportタイプのTIB/Rendezvousトランスポートを作成します。

構文

TYPE SYS.MGW_TIBRV_PROPERTIES IS OBJECT(
service   VARCHAR2(128),
daemon    VARCHAR2(128),
network   VARCHAR2(256),
cm_name   VARCHAR2(256),
cm_ledger VARCHAR2(256),

-- Methods
STATIC FUNCTION construct
RETURN SYS.MGW_TIBRV_PROPERTIES,

STATIC FUNCTION alter_construct
RETURN SYS.MGW_TIBRV_PROPERTIES );

属性

表97-17 SYS.MGW_TIBRV_PROPERTIES属性

属性

説明

service

rvdトランスポート用のサービス・パラメータ

daemon

rvdトランスポート用のデーモン・パラメータ

network

rvdトランスポート用のネットワーク・パラメータ

cm_name

CM correspondentの名前。将来使用するために予約されています。

cm_ledger

CM ledgerのファイル名。将来使用するために予約されています。

メソッド

表97-18 SYS.MGW_TIBRV_PROPERTIESメソッド

メソッド

説明

construct

新規SYS.MGW_TIBRV_PROPERTIESインスタンスを構成します。すべての属性にNULL値が割り当てられます。

alter_construct

新規SYS.MGW_TIBRV_PROPERTIESインスタンスを構成します。このファンクションは、既存のメッセージ・リンクのプロパティ変更に使用できます。VARCHAR2データ・タイプのすべての属性に、DBMS_MGWADM.NO_CHANGE値が割り当てられます。他のデータ・タイプの属性には、NULL値が割り当てられます。

DBMS_MGWADMサブプログラムの要約

表97-19 DBMS_MGWADMパッケージのサブプログラム

サブプログラム

説明

ADD_SUBSCRIBERプロシージャ

伝播用のソース・キューから宛先にメッセージをコンシュームするために使用されるサブスクライバを追加します。

ALTER_AGENTプロシージャ

メッセージ・ゲートウェイ・エージェントのパラメータを変更します。

ALTER_JOBプロシージャ

伝播ジョブのプロパティを変更します。

TIB/Rendezvous用のALTER_MSGSYSTEM_LINKプロシージャ

TIB/Rendezvousメッセージ・システム・リンクのプロパティを変更します。

WebSphere MQ用のALTER_MSGSYSTEM_LINKプロシージャ

WebSphere MQメッセージ・システム・リンクのプロパティを変更します。

ALTER_PROPAGATION_SCHEDULEプロシージャ

伝播スケジュールを変更します。

ALTER_SUBSCRIBERプロシージャ

伝播用のソース・キューから宛先にメッセージをコンシュームするために使用されるサブスクライバのパラメータを変更します。

CLEANUP_GATEWAYプロシージャ

メッセージ・ゲートウェイをクリーンアップします。

CREATE_AGENTプロシージャ

伝播ジョブの処理に使用されるメッセージ・ゲートウェイ・エージェントを作成します。

CREATE_JOBプロシージャ

ソースから宛先にメッセージを伝播するために使用されるジョブを作成します。

TIB/Rendezvous用のCREATE_MSGSYSTEM_LINKプロシージャ

TIB/Rendezvousメッセージ・システムへのメッセージ・システム・リンクを作成します。

WebSphere MQ用のCREATE_MSGSYSTEM_LINKプロシージャ

WebSphere MQメッセージ・システムへのメッセージ・システム・リンクを作成します。

DB_CONNECT_INFOプロシージャ

Oracle Databaseに接続するためにメッセージ・ゲートウェイ・エージェントが使用する接続情報を構成します。

DISABLE_JOBプロシージャ

伝播ジョブを使用禁止にします。

DISABLE_PROPAGATION_SCHEDULEプロシージャ

伝播スケジュールを使用禁止にします。

ENABLE_JOBプロシージャ

伝播ジョブを使用可能にします。

ENABLE_PROPAGATION_SCHEDULEプロシージャ

伝播スケジュールを使用可能にします。

REGISTER_FOREIGN_QUEUEプロシージャ

Oracle以外のキュー・エンティティをメッセージ・ゲートウェイに登録します。

REMOVE_AGENTプロシージャ

メッセージ・ゲートウェイ・エージェントを削除します。

REMOVE_JOBプロシージャ

伝播ジョブを削除します。

REMOVE_MSGSYSTEM_LINKプロシージャ

Oracle以外のメッセージ・システムに対するメッセージ・システム・リンクを削除します。

REMOVE_OPTIONプロシージャ

メッセージ・ゲートウェイ構成オプションを削除します。

REMOVE_SUBSCRIBERプロシージャ

伝播用のソース・キューから宛先にメッセージをコンシュームするために使用されるサブスクライバを削除します。

RESET_JOBプロシージャ

伝播ジョブの伝播エラー状態をリセットします。

RESET_SUBSCRIBERプロシージャ

サブスクライバの伝播エラー状態をリセットします。

SCHEDULE_PROPAGATIONプロシージャ

ソースから宛先へのメッセージ伝播をスケジュールします。

SET_LOG_LEVELプロシージャ

メッセージ・ゲートウェイ・エージェントのロギング・レベルを動的に変更します。

SET_OPTIONプロシージャ

メッセージ・ゲートウェイ構成オプションを設定します。

SHUTDOWNプロシージャ

メッセージ・ゲートウェイ・エージェントを停止します。

STARTUPプロシージャ

メッセージ・ゲートウェイ・エージェントを起動します。

UNREGISTER_FOREIGN_QUEUEプロシージャ

Oracle以外のキュー・エンティティをメッセージ・ゲートウェイから削除します。

UNSCHEDULE_PROPAGATIONプロシージャ

伝播スケジュールを削除します。

ADD_SUBSCRIBERプロシージャ

このプロシージャは、伝播用のソース・キューから宛先にメッセージをコンシュームするために使用されるサブスクライバを追加します。

注意:
テクノロジが改良されたため(「CREATE_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.ADD_SUBSCRIBER(
subscriber_id     IN VARCHAR2,
propagation_type  IN BINARY_INTEGER,
queue_name        IN VARCHAR2,
destination       IN VARCHAR2,
rule              IN VARCHAR2 DEFAULT NULL,
transformation    IN VARCHAR2 DEFAULT NULL,
exception_queue   IN VARCHAR2 DEFAULT NULL
options           IN SYS.MGW_PROPERTIES DEFAULT NULL);

パラメータ

表97-20 ADD_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

subscriber_id

このサブスクライバを識別するユーザー定義名を指定します。

propagation_type

メッセージ伝播のタイプを指定します。DBMS_MGWADM.OUTBOUND_PROPAGATIONは、Oracle Databaseアドバンスト・キューイングからOracle以外への伝播用です。DBMS_MGWADM.INBOUND_PROPAGATIONは、Oracle以外からOracle Databaseアドバンスト・キューイングへの伝播用です。

queue_name

このサブスクライバが追加されるソース・キューを指定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

destination

このサブスクライバによってコンシュームされるメッセージの伝播先の宛先キューを指定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

rule

ソース・キューからメッセージをデキューするために、サブスクライバが使用するオプションのサブスクリプション・ルールを指定します。ルールが必要ない場合はNULLを設定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

transformation

メッセージ・ゲートウェイによって定義されるADTとOracle Databaseアドバンスト・キューイング・ペイロードとの間の変換に必要な変換機能を指定します。必要な変換機能のタイプは、propagation_typeに指定された値によって決まります。

NULLの場合、Oracle Databaseアドバンスト・キューイング・ペイロード・タイプはメッセージ・ゲートウェイによってサポートされる必要があります。

exception_queue

例外メッセージ・ロギングの目的で使用されるキューを指定します。このキューは、伝播ソースと同じメッセージ・システム上にあることが必要です。NULLの場合、問題発生時に例外キューは使用されず、伝播は停止します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

ソース・キューと例外キューを同じキューにはできません。

options

オプションのサブスクライバ・プロパティ。オプションのプロパティがない場合は、NULLを設定します。これらは、メッセージ・システムでサポートされている、通常あまり使用されない構成プロパティです。

使用上の注意

関連項目:
メッセージ変換の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のメッセージの変換を使用した任意のペイロード・タイプの処理に関する項を参照してください。

サブスクライバがアクセスするOracle以外のメッセージ・リンクでJMSインタフェースが使用されている場合、メッセージ・ゲートウェイ・エージェントはOracle JMSインタフェースを使用してOracle Databaseアドバンスト・キューイング・キューにアクセスします。または、Oracle Databaseアドバンスト・キューイングのネイティブ・インタフェースが使用されます。メッセージ・ゲートウェイ・エージェントがOracle JMSインタフェースを使用してJMS接続を行うときは、パラメータが別の方法で解釈されます。

Oracle JMSインタフェースが伝播に使用されない場合、変換は現在サポートされていません。その場合は、変換パラメータをNULLに設定してください。

関連項目:
サブスクライバ・オプションの詳細は、次の項目を参照してください。

- 『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のWebSphere MQシステムのプロパティに関する項

- 『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のTIB/Rendezvousシステムのプロパティに関する項

OUTBOUND_PROPAGATIONサブスクライバ

サブスクライバがアウトバウンド伝播に使用するパラメータは次のように解釈されます。

- queue_name - 伝播ソースであるローカルOracle Databaseアドバンスト・キューイング・キューを指定します。このキューは、schema.queueの構文で指定する必要があります。

- destination - メッセージの伝播先の外部キューを指定します。このキューは、registered_queue@message_linkの構文で指定する必要があります。

- rule - Oracle Databaseアドバンスト・キューイングのネイティブ・インタフェースが使用されている場合は、Oracle Databaseアドバンスト・キューイングのオプションのサブスクライバ・ルールを指定し、Oracle JMSインタフェースが使用されている場合は、JMSセレクタを指定します。NULLの場合、ルールまたはセレクタは使用されません。

- transformation - Oracle Databaseアドバンスト・キューイング・ペイロードをメッセージ・ゲートウェイによって定義されるADTに変換するために使用される変換機能を指定します。
メッセージ・ゲートウェイ伝播では、Oracle Databaseアドバンスト・キューイング・ペイロードをメッセージ・ゲートウェイによって定義されるADTに変換するための変換機能を使用して、Oracle Databaseアドバンスト・キューイング・キューからメッセージをデキューします。その後、メッセージは、メッセージ・ゲートウェイのADTに基づいて外部メッセージ・システムにエンキューされます。

- exception_queue - 例外が発生した場合にメッセージを移動するOracle Databaseアドバンスト・キューイングのローカル・キューの名前を指定します。このキューは、schema.queueの構文で指定する必要があります。

Oracle Databaseアドバンスト・キューイングのネイティブ・インタフェースが使用されている場合は、メッセージ・ゲートウェイが実行されているかどうかに関係なく、このプロシージャをコールしたときに、サブスクライバがOracle Databaseアドバンスト・キューイング・キューに追加されます。ローカル・サブスクライバの形式は、sys.aq$_agent('MGW_subscriber_id', NULL, NULL)になります。

Oracle JMSインタフェースが使用されている場合、メッセージ・ゲートウェイ・エージェントは、MGW_subscriber_idという名前のJMS永続サブスクライバを作成します。エージェントが実行されていないときにこのプロシージャをコールすると、次にエージェントが起動された時点で、永続サブスクライバが作成されます。

例外キューについては、次の点に注意してください。

- 例外キューとして使用されるOracle Databaseアドバンスト・キューイング・キューは、ユーザーが作成する必要があります。

- ソース・キューと例外キューのペイロード・タイプは一致している必要があります。

- 例外キューは、キュー・タイプDBMS_AQADM.EXCEPTION_QUEUEではなく、DBMS_AQADM.NORMAL_QUEUEで作成する必要があります。エンキューの制限事項によって、メッセージ・ゲートウェイ伝播は、メッセージ・ゲートウェイ例外キューとしてタイプEXCEPTION_QUEUEのOracle Databaseアドバンスト・キューイング・キューを使用できません。

INBOUND_PROPAGATIONサブスクライバ

サブスクライバがインバウンド伝播に使用するパラメータは次のように解釈されます。

- queue_name - 伝播ソースである外部キューを指定します。このキューは、registered_queue@message_linkの構文で指定する必要があります。

- destination - メッセージの伝播先のOracle Databaseアドバンスト・キューイング・ローカル・キューを指定します。このキューは、schema.queueの構文で指定する必要があります。

- rule － 外部メッセージ・システムに対して有効であるオプションのサブスクライバ・ルールを指定します。ルールが必要ない場合はNULLを設定します。

- transformation － メッセージ・ゲートウェイによって定義されるADTをOracle Databaseアドバンスト・キューイング・ペイロード・タイプに変換するために使用する変換機能を指定します。
メッセージ・ゲートウェイ伝播は、外部メッセージ・システムのキューからメッセージをデキューし、メッセージ本体をメッセージ・ゲートウェイによって定義される既知のADTに変換します。変換機能は、メッセージがOracle Databaseアドバンスト・キューイング・キューにエンキューされるときに、メッセージ・ゲートウェイのADTをOracle Databaseアドバンスト・キューイング・ペイロード・タイプに変換するために使用されます。

- exception_queue - 例外が発生した場合にメッセージを移動する外部キューの名前を指定します。このキューは、registered_queue@message_linkの構文で指定する必要があります。

サブスクライバが必要かどうかは、Oracle以外のメッセージ・システムの要件によって決まります。永続サブスクライバが必要である場合は、メッセージ・ゲートウェイ・エージェントによって永続サブスクライバが作成されます。このプロシージャをコールした時点でエージェントが実行されていない場合は、次にエージェントが起動されたときに、Oracle以外のメッセージ・システム上で永続サブスクライバが作成されます。

例外キューについては、次の点に注意してください。

- 例外キューは、登録済のOracle以外のキューであることが必要です。

- ソース・キューと例外キューは、同じメッセージ・システム・リンクを使用する必要があります。

ALTER_AGENTプロシージャ

このプロシージャは、メッセージ・ゲートウェイ・エージェントのパラメータを構成します。

構文

DBMS_MGWADM.ALTER_AGENT (
max_connections  IN  BINARY_INTEGER DEFAULT NULL,
max_memory       IN  BINARY_INTEGER DEFAULT NULL,
max_threads      IN  BINARY_INTEGER DEFAULT NULL,
service          IN  VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE );

DBMS_MGWADM.ALTER_AGENT (
agent_name      IN   VARCHAR2,
username        IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
password        IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
database        IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
conntype        IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
max_memory      IN   PLS_INTEGER DEFAULT NULL,
max_threads     IN   PLS_INTEGER DEFAULT NULL,
service         IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
initfile        IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
comment         IN   VARCHAR2  DEFAULT DBMS_MGWADM.NO_CHANGE );

パラメータ

表97-21 ALTER_AGENTプロシージャのパラメータ

パラメータ

説明

max_connections

Oracle Databaseに対するメッセージ接続のうち、メッセージ・ゲートウェイ・エージェントが使用するメッセージ接続の最大数。NULLの場合、現行の値は変更されません。

注意: このパラメータは非推奨となっています。

max_memory

メッセージ・ゲートウェイ・エージェントが使用する最大ヒープ・サイズ(MB)。NULLの場合、現行の値は変更されません。

max_threads

メッセージ・ゲートウェイ・エージェントが作成するメッセージ・スレッドの最大数。NULLの場合、現行の値は変更されません。

service

このエージェントが使用するOracle Schedulerジョブ・クラスが親和性を持つデータベース・サービスを指定します。つまり、Oracle RAC環境では、メッセージ・ゲートウェイ・エージェントはこのサービスに割り当てられたデータベース・インスタンスでのみ実行されます。NULLの場合、このエージェントで使用されるジョブ・クラスは、各インスタンスにマッピングされたデフォルト・サービスに属するように変更されます。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

agent_name

メッセージ・ゲートウェイ・エージェントを識別します。DBMS_MGWADM.DEFAULT_AGENTはデフォルトのエージェントを指定します。

username

Oracle Databaseへの接続に使用するユーザー名を指定します。NULLは設定できません。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。ユーザー名を指定した場合は、パスワードも指定する必要があります。

password

Oracle Databaseへの接続に使用するパスワードを指定します。NULLは設定できません。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。ユーザー名を指定した場合は、パスワードも指定する必要があります。

database

Oracle Databaseへの接続に使用するデータベース接続文字列を指定します。NULLは、ローカル接続を使用することを示します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。NULLではなく接続文字列を指定することを強くお薦めします。通常は、tnsnames.ora内のネットワーク・サービス名を指定します。

conntype

Oracle Databaseとの接続タイプ(DBMS_MGWADM.JDBC_OCIまたはDBMS_MGWADM.JDBC_THIN)を指定します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

initfile

エージェントが使用するメッセージ・ゲートウェイの初期化ファイルを指定します。NULLは、デフォルトの初期化ファイルが使用されることを示します。指定する値はファイルのフルパス名である必要があります。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

comment

このエージェントのオプションのコメント。コメントが必要ない場合はNULLを設定します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

注意:
このサブプログラムの以前のバージョンに含まれていたmax_connectionsパラメータは非推奨になり、実行できません。

使用上の注意

- これらの構成パラメータのデフォルト値は、メッセージ・ゲートウェイ・エージェントのインストール時に設定されます。

- max_memoryとmax_threadsパラメータに対する変更は、次回メッセージ・ゲートウェイ・エージェントがアクティブになったときに有効になります。メッセージ・ゲートウェイ・エージェントが現在アクティブの場合、変更を有効にするには、エージェントを停止し、再起動する必要があります。

- serviceパラメータは、Oracle Schedulerのジョブ・クラスの属性を設定する場合に使用します。ジョブ・クラスは、メッセージ・ゲートウェイ・エージェントを起動するSchedulerジョブを作成する場合に使用されます。Oracleの管理者は、データベース・サービスを作成する必要があります。値がNULLの場合、ジョブ・クラスはすべてのインスタンスにマッピングされる内部サービスに属します。

- Oracle RDBMS 11gでは、max_connectionsパラメータの使用は推奨されていません。メッセージ・ゲートウェイ・エージェントで使用されるメッセージ接続数は、max_threadsパラメータの値に基づいています。

- username, passwordおよびdatabaseパラメータは、メッセージ・ゲートウェイ・エージェントがOracle Databaseへの接続に使用する接続情報を指定します。Oracleの管理者はユーザーを作成し、ロールMGW_AGENT_ROLEを付与する必要があります。

ALTER_JOBプロシージャ

このプロシージャは、伝播ジョブのプロパティを変更します。

構文

DBMS_MGWADM.ALTER_JOB (
job_name          IN   VARCHAR2,
rule              IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
transformation    IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
exception_queue   IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
poll_interval     IN   PLS_INTEGER DEFAULT 0,
options           IN   SYS.MGW_PROPERTIES DEFAULT NULL,
comments          IN   VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE );

パラメータ

表97-22 ALTER_JOBプロシージャのパラメータ

パラメータ

説明

job_name

伝播ジョブを識別します。

rule

伝播ソースからメッセージをデキューするために使用するオプションのサブスクリプション・ルールを指定します。このパラメータの構文および解釈は、伝播タイプによって決まります。NULL値は、サブスクリプション・ルールが必要ないことを示します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

transformation

メッセージ・ゲートウェイによって定義されるADTとOracle Streams AQペイロードとの間の変換に必要な変換機能を指定します。必要な変換機能のタイプは、propagation_typeに指定された値によって決まります。

NULL値は、変換機能が必要ないことを示します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

exception_queue

例外メッセージ・ロギングの目的で使用されるキューを指定します。このキューは、伝播ソースと同じメッセージ・システム上にあることが必要です。ジョブと関連付けられた例外キューがない場合、問題発生時に伝播は停止します。このパラメータの構文および解釈は、伝播タイプによって決まります。

NULL値は、例外キューが使用されないことを示します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

poll_interval

ソース・キュー内のメッセージをチェックするときに、メッセージ・ゲートウェイ・エージェントが使用するポーリング間隔を秒単位で指定します。利用可能なメッセージが存在しない場合、このポーリング間隔が経過するまで、エージェントはポーリングを再実行しません。エージェントによってメッセージが検出されると、利用可能なメッセージが存在するかぎり、メッセージの伝播が継続されます。

指定できる値はNULL、0または0より大きい値です。

- 0(デフォルト)を指定した場合、現行の値は変更されません。

- NULLの場合、現行の値はリセットされ、メッセージ・ゲートウェイのデフォルトのポーリング間隔が使用されます。デフォルトのポーリング間隔は5秒間ですが、このデフォルト値はメッセージ・ゲートウェイの初期化ファイルによって上書きできます。

options

オプションのジョブ・プロパティ。NULLの場合、どのオプションも変更されません。NULL以外の場合、このリストで指定されたプロパティは、現行のオプションのプロパティと組み合され、新しいジョブ・オプションのセットが形成されます。

comments

このエージェントのオプションのコメント、または、コメントが不要である場合はNULLを指定します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

使用上の注意

- 伝播ジョブがアクセスするOracle以外のメッセージ・リンクでJMSインタフェースが使用されている場合、メッセージ・ゲートウェイ・エージェントはOracle JMSインタフェースを使用してOracle Streams AQキューにアクセスします。それ以外の場合は、Oracle Streams AQのネイティブ・インタフェースが使用されます。メッセージ・ゲートウェイ・エージェントがOracle JMSインタフェースを使用してJMS接続を行うときは、パラメータが別の方法で解釈されます。

- JMSソースから伝播を行う場合、サブスクライバ・ルールは変更できません。かわりに、伝播ジョブを削除し、新規ルールを使用して再作成する必要があります。JMSにおいて永続サブスクリプション上のメッセージ・セレクタを変更することは、サブスクリプションを削除してから再作成することと同じです。

- Oracle JMSインタフェースが伝播に使用されない場合、変換は現在サポートされていません。したがって、変換パラメータをDBMS_MGWADM.NO_CHANGE(デフォルト値)に設定する必要があります。

- optionsパラメータは、現行のオプションのプロパティを変更するために使用されるプロパティのセットを指定します。各プロパティによって、新規プロパティの追加、既存プロパティの置換、既存プロパティの削除または全プロパティの削除のいずれかの方法で現行のプロパティ・リストが変更されます。

関連項目:

- オプションのパラメータの詳細は、「SYS.MGW_PROPERTYオブジェクト・タイプ」を参照してください。

- アウトバウンド伝播パラメータの解釈については、「OUTBOUND_PROPAGATIONジョブ」を参照してください。

- インバウンド伝播パラメータの解釈については、「INBOUND_PROPAGATIONジョブ」を参照してください。

TIB/Rendezvous用のALTER_MSGSYSTEM_LINKプロシージャ

このプロシージャは、TIB/Rendezvousメッセージ・システム・リンクのプロパティを変更します。

構文

DBMS_MGWADM.ALTER_MSGSYSTEM_LINK (
linkname      IN  VARCHAR2,
properties    IN  SYS.MGW_TIBRV_PROPERTIES,
options       IN  SYS.MGW_PROPERTIES DEFAULT NULL,
comment       IN  VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE );

パラメータ

表97-23 TIB/Rendezvous用のALTER_MSGSYSTEM_LINKプロシージャのパラメータ

パラメータ

説明

linkname

メッセージ・システム・リンク名。

properties

TIB/Rendezvousメッセージ・システム・リンクの基本プロパティ。NULLの場合、どのリンク・プロパティも変更されません。

options

オプションのリンク・プロパティ。NULLの場合、どのオプションも変更されません。NULL以外の場合、このリストで指定されたプロパティは、現行のオプション・プロパティと組み合され、新しいリンク・オプションのセットを構成します。

comment

ユーザーが指定するコメント、または、コメントが不要である場合はNULLを指定します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

使用上の注意

VARCHAR2データ・タイプのメッセージ・リンク・プロパティの既存値を保持するには、その特定のプロパティにDBMS_MGWADM.NO_CHANGEを指定します。別のデータ・タイプのプロパティの既存値を保持するには、そのプロパティにNULLを指定します。

optionsパラメータは、現行のオプションのプロパティを変更するために使用されるプロパティのセットを指定します。各プロパティによって、新規プロパティの追加、既存プロパティの置換、既存プロパティの削除または全プロパティの削除のいずれかの方法で現行のプロパティ・リストが変更されます。

関連項目:
SYS.MGW_PROPERTIESオブジェクト・タイプ

一部のプロパティは変更できませんが、このようなプロパティの変更を試みると、このプロシージャは失敗します。変更可能なプロパティとオプションの中には、動的に変更できるものが少数あり、メッセージ・ゲートウェイでは、そのような新しい値がすぐに使用されます。その他のプロパティやオプションに対する変更を有効にするには、メッセージ・ゲートウェイ・エージェントを停止し、再起動する必要があります。

関連項目:
メッセージ・システムのプロパティおよびオプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のTIB/Rendezvousシステムのプロパティに関する項を参照してください。

WebSphere MQ用のALTER_MSGSYSTEM_LINKプロシージャ

このプロシージャは、WebSphere MQメッセージ・システム・リンクのプロパティを変更します。

構文

DBMS_MGWADM.ALTER_MSGSYSTEM_LINK (
linkname   IN  VARCHAR2,
properties IN  SYS.MGW_MQSERIES_PROPERTIES,
options    IN  SYS.MGW_PROPERTIES DEFAULT NULL,
comment    IN  VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE);

パラメータ

表97-24 WebSphere MQ用のALTER_MSGSYSTEM_LINKプロシージャのパラメータ

パラメータ

説明

linkname

メッセージ・システム・リンク名。

properties

WebSphere MQメッセージ・システム・リンクの基本プロパティ。NULLの場合、リンク・プロパティは変更されません。

options

オプションのリンク・プロパティ。どのオプションも変更しない場合はNULLを設定します。NULL以外の場合、このリストで指定されたプロパティは、現行のオプション・プロパティと組み合され、新しいリンク・オプションのセットを構成します。

comment

オプションの説明、必要ない場合はNULLを設定します。DBMS_MGWADM.NO_CHANGEが指定された場合、現行の値は変更されません。

使用上の注意

VARCHAR2データ・タイプのメッセージ・リンク・プロパティの既存値を保持するには、その特定のプロパティにDBMS_MGWADM.NO_CHANGEを指定します。別のデータ・タイプのプロパティの既存値を保持するには、そのプロパティにNULLを指定します。

optionsパラメータは、現行のオプションのプロパティを変更するために使用されるプロパティのセットを指定します。各プロパティによって、新規プロパティの追加、既存プロパティの置換、既存プロパティの削除または全プロパティの削除のいずれかの方法で現行のプロパティ・リストが変更されます。

関連項目:
SYS.MGW_PROPERTIESオブジェクト・タイプ

一部のプロパティは変更できませんが、このようなプロパティの変更を試みると、このプロシージャは失敗します。変更可能なプロパティとオプションの中には、動的に変更できるものが少数あり、メッセージ・ゲートウェイでは、そのような新しい値がすぐに使用されます。その他のプロパティやオプションに対する変更を有効にするには、メッセージ・ゲートウェイ・エージェントを停止し、再起動する必要があります。

関連項目:
メッセージ・システムのプロパティおよびオプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のWebSphere MQシステムのプロパティに関する項を参照してください。

ALTER_PROPAGATION_SCHEDULEプロシージャ

このプロシージャは、伝播スケジュールを変更します。

注意:
テクノロジが改良されたため(「ALTER_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.ALTER_PROPAGATION_SCHEDULE (
schedule_id  IN VARCHAR2,
duration     IN NUMBER DEFAULT NULL,
next_time    IN VARCHAR2 DEFAULT NULL,
latency      IN NUMBER DEFAULT NULL);

パラメータ

表97-25 ALTER_PROPAGATION_SCHEDULEプロシージャのパラメータ

パラメータ

説明

schedule_id

変更する伝播スケジュールを識別します。

duration

将来使用するために予約されています。

next_time

将来使用するために予約されています。

latency

ソース・キュー内のメッセージをチェックするときに、メッセージ・ゲートウェイ・エージェントが使用するポーリング間隔を秒単位で指定します。ソース・キュー内に利用可能なメッセージが存在しない場合、このポーリング間隔が経過するまで、エージェントはポーリングを再実行しません。エージェントによってメッセージが検出されると、利用可能なメッセージが存在するかぎり、メッセージの伝播が継続されます。

指定できる値はNULL、または0より大きい値です。latencyがNULLの場合、メッセージ・ゲートウェイ・エージェントのデフォルトのポーリング間隔が使用されます。デフォルトのポーリング間隔は5秒間ですが、このデフォルト値はメッセージ・ゲートウェイの初期化ファイルによって上書きできます。

使用上の注意

このプロシージャは、各パラメータの既存値を常に上書きします。特定のパラメータが指定されない場合、既存値はデフォルト値で上書きされます。

ALTER_SUBSCRIBERプロシージャ

このプロシージャは、伝播用のソース・キューから宛先にメッセージをコンシュームするために使用されるサブスクライバのパラメータを変更します。

注意:
テクノロジが改良されたため(「ALTER_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.ALTER_SUBSCRIBER (
subscriber_id    IN VARCHAR2,
rule             IN VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
transformation   IN VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
exception_queue  IN VARCHAR2 DEFAULT DBMS_MGWADM.NO_CHANGE,
options          IN SYS.MGW_PROPERTIES DEFAULT NULL );

パラメータ

表97-26 ALTER_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

subscriber_id

変更するサブスクライバを識別します。

rule

ソース・キューからメッセージをデキューするために、サブスクライバが使用するオプションのサブスクリプション・ルールを指定します。このパラメータの構文および解釈は、サブスクライバの伝播タイプによって決まります。

NULL値は、サブスクリプション・ルールが必要ないことを示します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

transformation

メッセージ・ゲートウェイによって定義されるADTとOracle Databaseアドバンスト・キューイング・ペイロードとの間の変換に必要な変換機能を指定します。必要な変換機能のタイプは、サブスクライバの伝播タイプによって決まります。

NULL値は、変換機能が必要ないことを示します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

exception_queue

例外メッセージ・ロギングに使用されるキューを指定します。このキューは、伝播ソースと同じメッセージ・システム上にあることが必要です。サブスクライバと関連付けられた例外キューがない場合、問題発生時に伝播は停止します。このパラメータの構文および解釈は、サブスクライバの伝播タイプによって決まります。

NULL値は、例外キューが使用されないことを示します。DBMS_MGWADM.NO_CHANGEの場合、現行の値は変更されません。

ソース・キューと例外キューを同じキューにはできません。

options

オプションのサブスクライバ・プロパティ。NULLの場合、どのオプションも変更されません。NULL以外の場合、このリストで指定されたプロパティは、現行のオプションのプロパティと組み合され、新しいサブスクライバ・オプションのセットが形成されます。

使用上の注意

サブスクライバがアクセスするOracle以外のメッセージ・リンクでJMSインタフェースが使用されている場合、メッセージ・ゲートウェイ・エージェントはOracle JMSインタフェースを使用してOracle Databaseアドバンスト・キューイング・キューにアクセスします。または、Oracle Databaseアドバンスト・キューイングのネイティブ・インタフェースが使用されます。メッセージ・ゲートウェイ・エージェントがOracle JMSインタフェースを使用してJMS接続を行うときは、パラメータが別の方法で解釈されます。

JMSソースから伝播を行う場合、サブスクライバ・ルールは変更できません。そのため、既存のサブスクライバを削除して、新しいルールとともにサブスクライバを追加する必要があります。JMSにおいて永続サブスクリプション上のメッセージ・セレクタを変更することは、サブスクリプションを削除してから再作成することと同じです。

Oracle JMSインタフェースが伝播に使用されない場合、変換は現在サポートされていません。したがって、変換パラメータをDBMS_MGWADM.NO_CHANGE(デフォルト値)に設定する必要があります。

optionsパラメータは、現行のオプションのプロパティを変更するために使用されるプロパティのセットを指定します。各プロパティによって、新規プロパティの追加、既存プロパティの置換、既存プロパティの削除または全プロパティの削除のいずれかの方法で現行のプロパティ・リストが変更されます。

関連項目:

- オプションのパラメータの詳細は、「SYS.MGW_PROPERTIESオブジェクト・タイプ」を参照してください。

- WebSphere MQサブスクライバ・オプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のWebSphere MQシステムのプロパティに関する項を参照してください。

- TIB/Rendezvousサブスクライバ・オプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のTIB/Rendezvousシステムのプロパティに関する項を参照してください。

- "アウトバウンド伝播パラメータの解釈については、「OUTBOUND_PROPAGATIONサブスクライバ」を参照してください。

- "インバウンド伝播パラメータの解釈については、「INBOUND_PROPAGATIONサブスクライバ」を参照してください。

CLEANUP_GATEWAYプロシージャ

このプロシージャは、メッセージ・ゲートウェイをクリーンアップします。メッセージ・ゲートウェイになんらかの異常がある状態または予期しない状態のままのときに、必要なクリーンアップまたはリカバリ処理を実行します。MGW_GATEWAYビューには、クリーンアップ処理に関係するメッセージ・ゲートウェイ・ステータスおよび構成情報が表示されます。

構文

DBMS_MGWADM.CLEANUP_GATEWAY(
action       IN   BINARY_INTEGER,
sarg         IN   VARCHAR2 DEFAULT NULL);

DBMS_MGWADM.CLEANUP_GATEWAY(
agent_name   IN   VARCHAR2,   action       IN   BINARY_INTEGER,   sarg         IN   VARCHAR2 DEFAULT NULL );

パラメータ

表97-27 CLEANUP_GATEWAYプロシージャのパラメータ

パラメータ

説明

action

実行するクリーンアップ処理。値は次のとおりです。

- DBMS_MGWADM.CLEAN_STARTUP_STATE(メッセージ・ゲートウェイ起動状態のリカバリの場合)

- DBMS_MGWADM.CLEAN_LOG_QUEUES(ログ・キューのクリーンアップの場合)

- DBMS_MGWADM.RESET_SUB_MISSING_LOG_REC(ログ・レコードが存在しないために発生した伝播ジョブのリカバリの場合)

- DBMS_MGWADM.RESET_SUB_MISSING_MESSAGE(メッセージが存在しないために発生した伝播ジョブのリカバリの場合)

sarg

actionに指定された値に応じて意味が変わるオプションの引数。指定した処理で引数を使用しない場合は、NULLを指定してください。

agent_name

メッセージ・ゲートウェイ・エージェントを識別します。DBMS_MGWADM.DEFAULT_AGENTはデフォルトのエージェントを指定します。

使用上の注意

CLEAN_STARTUP_STATE

sargパラメータは使用されないため、NULLに設定してください。

CLEAN_STARTUP_STATE処理では、メッセージ・ゲートウェイ・エージェントがクラッシュしたか、他のなんらかの異常な状態が発生して、メッセージ・ゲートウェイが再起動不可能になった場合に、メッセージ・ゲートウェイを既知の状態に復元します。このクリーンアップ処理は、メッセージ・ゲートウェイ・エージェントが起動された後で、クラッシュしたと思われるか、長時間応答がない場合にのみ実行してください。

MGW_GATEWAYビューに表示されるAGENT_STATUSの値がNOT_STARTEDまたはSTART_SCHEDULED以外であり、AGENT_PINGの値が長時間UNREACHABLEである場合には、CLEAN_STARTUP_STATE処理が必要になります。

AGENT_STATUSの値がBROKENである場合、問題が解決されてCLEAN_STARTUP_STATE処理を通じてエージェントの状態がリセットされるまでは、エージェントを起動できません。BROKENステータスは、メッセージ・ゲートウェイ・エージェントがすでに実行されている状況がメッセージ・ゲートウェイの起動ジョブによって検出されたことを示します。正常な使用環境では、このような状況は決して発生しません。

この処理では次のタスクが実行されます。

- 外部メッセージ・ゲートウェイ・エージェント・プロセスの起動に使用されるSchedulerジョブを削除します。

- 特定の構成情報を既知の状態に設定します。たとえば、エージェント・ステータスをNOT_STARTEDに設定します。

次のような場合はコマンドの処理に失敗します。

- エージェントのステータスがNOT_STARTEDまたはSTART_SCHEDULEDである場合。

- エージェントのステータスがSTARTINGの場合を除いて、このプロシージャのコール前に停止が試みられなかった場合。

- メッセージ・ゲートウェイ・エージェントに正常に接続できた場合。
エージェントがすでにアクティブである場合、このプロシージャは失敗したと考えられます。数回試行してもエージェントが応答しない場合は、クリーンアップ処理が実行されます。クリーンアップ処理には、少なくとも数秒(最長で1分程度)の時間がかかります。これは、この特定のクリーンアップ処理が適切で必要な状態での予想される動作です。

注意:
CLEAN_STARTUP_STATE処理が正常に実行された後も実行されているメッセージ・ゲートウェイは終了してください。これは、DBMS_MGWADM.STARTUPをコールしてメッセージ・ゲートウェイを起動する前に行う必要があります。通常、このプロセスは、extprocmgwextprocという名前です。

CLEAN_LOG_QUEUES

sargパラメータは使用されないため、NULLに設定してください。

構成されたすべてのメッセージ・システム・リンクのログ・キューをメッセージ・ゲートウェイ・エージェントによってクリアします。このエージェントは、すべての伝播アクティビティを一時的に停止した後、各リンクのログ・キューから不要または不正なログ・レコードをすべて削除します。メッセージ・ゲートウェイ・エージェントが実行されていない場合は、処理に失敗します。

このクリーンアップ処理は、メッセージ・ゲートウェイ・エージェントを起動するたびに自動的に実行されます。

注意:
CLEAN_LOG_QUEUES処理は、エージェントの起動時にのみ実行されます。メッセージ・ゲートウェイ・エージェントの実行中にこのプロシージャをコールしても、そのコールは無視されます。

RESET_SUB_MISSING_LOG_REC

sargには、リセットするメッセージ・ゲートウェイのジョブ名(またはサブスクライバID)を指定します。NULL以外の値を指定してください。

ログ・レコードが存在しないためにエラーになったメッセージ・ゲートウェイ伝播ジョブをメッセージ・ゲートウェイ・エージェントによって復元します。ソースと宛先のログ・レコードが、エージェントによってリセットされます。メッセージ・ゲートウェイ・エージェントが実行されていない場合は、処理に失敗します。

注意:
ソース・キュー内のメッセージがすでに宛先キューに伝播されていた場合は、この処理によって重複したメッセージが作成される可能性があります。

RESET_SUB_MISSING_MESSAGE

sargには、リセットするメッセージ・ゲートウェイのジョブ名(またはサブスクライバID)を指定します。NULL以外の値を指定してください。

永続ソース・メッセージが存在しないためにエラーになったメッセージ・ゲートウェイ伝播ジョブをメッセージ・ゲートウェイ・エージェントによって復元します。エージェントはメッセージを非永続メッセージとして取り扱い、伝播ジョブの処理を続けます。メッセージ・ゲートウェイ・エージェントが実行されていない場合は、処理に失敗します。

CREATE_AGENTプロシージャ

このプロシージャは、伝播ジョブの処理に使用されるメッセージ・ゲートウェイ・エージェントを作成します。

構文

DBMS_MGWADM.CREATE_AGENT (
agent_name     IN   VARCHAR2,
username       IN   VARCHAR2 DEFAULT NULL,
password       IN   VARCHAR2 DEFAULT NULL,
database       IN   VARCHAR2 DEFAULT NULL,
conntype       IN   VARCHAR2 DEFAULT DBMS_MGWADM.JDBC_OCI,
max_memory     IN   PLS_INTEGER DEFAULT 64,
max_threads    IN   PLS_INTEGER DEFAULT 1,
service        IN   VARCHAR2 DEFAULT NULL,
initfile       IN   VARCHAR2 DEFAULT NULL,
comment        IN   VARCHAR2  DEFAULT NULL );

パラメータ

表97-28 CREATE_AGENTプロシージャのパラメータ

パラメータ

説明

agent_name

エージェントの識別に使用される名前。

username

Oracle Databaseへの接続に使用するユーザー名を指定します。

password

Oracle Databaseへの接続に使用するパスワードを指定します。ユーザー名を指定した場合は、パスワードも指定する必要があります。

database

Oracle Databaseへの接続に使用するデータベース接続文字列を指定します。NULLは、ローカル接続を使用することを示します。ユーザー名を指定した場合は、値を指定できます。NULLではなく接続文字列を指定することを強くお薦めします。通常は、tnsnames.ora内のネットワーク・サービス名を指定します。

conntype

Oracle Databaseとの接続タイプ(DBMS_MGWADM.JDBC_OCIまたはDBMS_MGWADM.JDBC_THIN)を指定します。

max_memory

メッセージ・ゲートウェイ・エージェントが使用する最大ヒープ・サイズ(MB)を指定します。

max_threads

メッセージ・ゲートウェイ・エージェントが作成するメッセージ・スレッドの数を指定します。これにより、エージェントが同時に処理できる伝播ジョブの数が決定されます。

service

このエージェントが使用するOracle Schedulerジョブ・クラスが親和性を持つデータベース・サービスを指定します。つまり、Oracle RAC環境では、メッセージ・ゲートウェイ・エージェントはこのサービスに割り当てられたデータベース・インスタンスで実行のみが行われます。NULLの場合、ジョブ・クラスは、各インスタンスにマッピングされるデフォルト・サービスに属します。

initfile

エージェントが使用するメッセージ・ゲートウェイの初期化ファイルを指定します。NULLは、デフォルトの初期化ファイルが使用されることを示します。指定する値はファイルのフルパス名である必要があります。

comment

このエージェントのオプションのコメント。必要ない場合はNULLを設定します。

使用上の注意

- メッセージ・ゲートウェイをインストールすると、デフォルト・エージェントが自動的に構成されます。デフォルト・エージェントの名前はDEFAULT_AGENTです。このプロシージャは追加エージェントを作成する場合に使用できます。

- username, passwordおよびdatabaseパラメータは、メッセージ・ゲートウェイ・エージェントがOracle Databaseへの接続に使用する接続情報を指定します。Oracle管理者はデータベース・ユーザーを作成し、ロールMGW_AGENT_ROLEを付与する必要があります。接続情報は、このプロシージャをコールするときに指定する必要はありませんが、エージェントを起動する前に指定する必要があります。

- serviceパラメータは、Oracle Schedulerのジョブ・クラスを作成する場合に使用します。ジョブ・クラスは、メッセージ・ゲートウェイ・エージェントを起動するSchedulerジョブを作成する場合に使用されます。Oracleの管理者は、データベース・サービスを作成する必要があります。値がNULLの場合、ジョブ・クラスはすべてのインスタンスがマッピングされる内部サービスに属します。

CREATE_JOBプロシージャ

このプロシージャは、ソースから宛先にメッセージを伝播するために使用するジョブを作成します。

構文

DBMS_MGWADM.CREATE_JOB (
job_name           IN   VARCHAR2,
propagation_type   IN   PLS_INTEGER,
source             IN   VARCHAR2,
destination        IN   VARCHAR2,
rule               IN   VARCHAR2 DEFAULT NULL,
transformation     IN   VARCHAR2 DEFAULT NULL,
exception_queue    IN   VARCHAR2 DEFAULT NULL,
poll_interval      IN   PLS_INTEGER DEFAULT NULL,
options            IN   SYS.MGW_PROPERTIES DEFAULT NULL,
enabled            IN   BOOLEAN DEFAULT TRUE,
comments           IN   VARCHAR2 DEFAULT NULL);

パラメータ

表97-29 CREATE_JOBプロシージャのパラメータ

パラメータ

説明

job_name

伝播ジョブを識別するためのユーザー定義名。

propagation_type

メッセージ伝播のタイプを指定します。

- DBMS_MGWADM.OUTBOUND_PROPAGATION(Oracle Streams AQからOracle以外への伝播の場合)

- DBMS_MGWADM.INBOUND_PROPAGATION(Oracle以外からOracle Streams AQへの伝播の場合)

source

メッセージの伝播元であるソース・キューを指定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

destination

メッセージの伝播先である宛先キューを指定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

rule

ソース・キューからメッセージをデキューするために使用するオプションのサブスクリプション・ルールを指定します。ルールが必要ない場合はNULLを設定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

transformation

メッセージ・ゲートウェイによって定義されるADTとOracle Streams AQペイロードとの間の変換に必要な変換機能を指定します。必要な変換機能のタイプは、propagation_typeに指定された値によって決まります。

変換を指定しない場合、Oracle Streams AQペイロード・タイプはメッセージ・ゲートウェイによってサポートされる必要があります。

exception_queue

例外メッセージ・ロギングの目的で使用されるキューを指定します。このキューは、伝播ソースと同じメッセージ・システム上にあることが必要です。NULLの場合、問題発生時に例外キューは使用されず、伝播は停止します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

ソース・キューと例外キューを同じキューにはできません。

poll_interval

ソース・キュー内のメッセージをチェックするときに、メッセージ・ゲートウェイ・エージェントが使用するポーリング間隔を秒単位で指定します。利用可能なメッセージが存在しない場合、このポーリング間隔が経過するまで、エージェントはポーリングを再実行しません。エージェントによってメッセージが検出されると、利用可能なメッセージが存在するかぎり、メッセージの伝播が継続されます。

指定できる値はNULL、または0より大きい値です。NULLの場合、メッセージ・ゲートウェイのデフォルトのポーリング間隔が使用されます。デフォルトのポーリング間隔は5秒間ですが、このデフォルト値はメッセージ・ゲートウェイの初期化ファイルによって上書きできます。

options

オプションのジョブ・プロパティ、オプションのジョブ・プロパティがない場合は、NULLを設定します。これらは、メッセージ・システムでサポートされている、通常あまり使用されない構成プロパティです。

enabled

この伝播ジョブが作成後も有効かどうかを指定します。使用できる値はTRUEまたはFALSEです。

- TRUE(デフォルト)の場合、ジョブは作成後も有効です。

- FALSEの場合、ジョブは作成後に使用不可になります。メッセージを伝播する前に、伝播ジョブを使用可能にし、メッセージ・ゲートウェイ・エージェントを実行する必要があります。

comments

このジョブのオプションのコメントです。必要ない場合はNULLを設定します。

使用上の注意

- ジョブが使用可能で、メッセージが伝播されるようにメッセージ・ゲートウェイ・エージェントが適切に起動されている必要があります。

- 伝播ジョブがアクセスするOracle以外のメッセージ・リンクでJMSインタフェースが使用されている場合、メッセージ・ゲートウェイ・エージェントはOracle JMSインタフェースを使用してOracle Streams AQキューにアクセスします。それ以外の場合は、Oracle Streams AQのネイティブ・インタフェースが使用されます。メッセージ・ゲートウェイ・エージェントがOracle JMSインタフェースを使用してJMS接続を行うときは、パラメータが別の方法で解釈されます。

- Oracle JMSインタフェースが伝播に使用されない場合、変換は現在サポートされていません。その場合は、変換パラメータをNULLに設定してください。

OUTBOUND_PROPAGATIONジョブ

アウトバウンド伝播ジョブの場合、パラメータは次のように解釈されます。

- source - 伝播ソースであるOracle Streams AQローカル・キューを指定します。このキューはschema.queueの構文で指定する必要があります。マルチ・コンシューマ・キューまたはシングル・コンシューマ・キューを指定できます。

- destination - メッセージの伝播先であるOracle以外のキューを指定します。このキューは、registered_queue@message_linkの構文で指定する必要があります。

- rule - Oracle Streams AQのネイティブ・インタフェースが使用されている場合は、Oracle Streams AQのオプションのサブスクライバ・ルールを指定し、Oracle JMSインタフェースが使用されている場合は、JMSセレクタを指定します。NULLの場合、ルールまたはセレクタは使用されません。ネイティブのOracle Streams AQインタフェースを使用し、伝播ソースがシングル・コンシューマ・キューである場合、このパラメータにはNULLを指定する必要があります。

- transformation - Oracle Streams AQペイロードをメッセージ・ゲートウェイによって定義されるADTに変換するために使用される変換機能を指定します。完全な変換名(schema.name)が指定されている場合は、この名前を使用する必要があります。
メッセージ・ゲートウェイ伝播では、Oracle Streams AQペイロードをメッセージ・ゲートウェイによって定義されるADTに変換するための変換機能を使用して、Oracle Streams AQキューからメッセージをデキューします。その後、メッセージは、メッセージ・ゲートウェイのADTに基づいてOracle以外のメッセージ・システムにエンキューされます。

- exception_queue - 例外が発生した場合にメッセージを移動するOracle Streams AQローカル・キューの名前を指定します。構文は、schema.queueである必要があります。
Oracle Streams AQのネイティブ・インタフェースが使用されていて、ソースが複数のコンシューマ・キューである場合は、メッセージ・ゲートウェイ・エージェントが実行されているかどうかに関係なく、このプロシージャをコールしたときに、サブスクライバがOracle Streams AQキューに追加されます。ローカル・サブスクライバの形式は、sys.aq$_agent('MGW_job_name', NULL, NULL)になります。

Oracle JMSインタフェースが使用されている場合、メッセージ・ゲートウェイ・エージェントは、MGW_job_nameという名前のJMS永続サブスクライバを作成します。エージェントが実行されていないときにこのプロシージャをコールすると、次にエージェントが起動された時点で、永続サブスクライバが作成されます。

例外キューには、次の条件があります。

- 例外キューとして使用されるOracle Streams AQキューは、ユーザーが作成する必要があります。

- ソース・キューと例外キューのペイロード・タイプは一致している必要があります。

- 例外キューは、キュー・タイプDBMS_AQADM.NORMAL_QUEUEで作成する必要があります。エンキューの制限事項によって、メッセージ・ゲートウェイは、メッセージ・ゲートウェイ例外キューとしてタイプDBMS_AQADM.EXCEPTION_QUEUEのOracle Streams AQキューを使用できません。

INBOUND_PROPAGATIONジョブ

インバウンド伝播ジョブに使用するパラメータは、次のように解釈されます。

- source - 伝播ソースであるOracle以外のキューを指定します。構文は、registered_queue@message_linkである必要があります。

- destination - メッセージの伝播先のOracle Streams AQローカル・キューを指定します。構文は、schema.queueである必要があります。

- rule － Oracle以外のメッセージ・システムに対して有効であるオプションのサブスクライバ・ルールを指定します。ルールが必要ない場合はNULLを設定します。

- transformation － メッセージ・ゲートウェイによって定義されるADTをOracle Streams AQペイロード・タイプに変換するために使用する変換機能を指定します。完全な変換名(schema.name)が指定されている場合は、この名前を使用する必要があります。
メッセージ・ゲートウェイ伝播は、Oracle以外のメッセージ・システムのキューからメッセージをデキューし、メッセージ本体をメッセージ・ゲートウェイによって定義される既知のADTに変換します。変換機能は、メッセージがOracle Streams AQキューにエンキューされるときに、メッセージ・ゲートウェイのADTをOracle Streams AQペイロード・タイプに変換するために使用されます。

- exception_queue － 例外が発生した場合にメッセージを移動する登録済のOracle以外のキューの名前を指定します。構文は、registered_queue@message_linkである必要があります。
ソース・キューにサブスクライバが必要かどうかは、Oracle以外のメッセージ・システムの要件によって決まります。永続サブスクライバが必要である場合は、メッセージ・ゲートウェイ・エージェントによって永続サブスクライバが作成されます。エージェントが実行されていないときにこのプロシージャをコールすると、次にエージェントが起動された時点で、Oracle以外のメッセージング・システムにサブスクライバが作成されます。

例外キューには、次の条件があります。

- 例外キューは、登録済のOracle以外のキューであることが必要です。

- ソース・キューと例外キューは、同じメッセージ・システム・リンクを使用する必要があります。

TIB/Rendezvous用のCREATE_MSGSYSTEM_LINKプロシージャ

このプロシージャは、TIB/Rendezvousメッセージ・システムへのリンクを作成します。

構文

DBMS_MGWADM.CREATE_MSGSYSTEM_LINK (
linkname     IN  VARCHAR2,
properties   IN  SYS.MGW_TIBRV_PROPERTIES,
options      IN  SYS.MGW_PROPERTIES DEFAULT NULL,
comment      IN  VARCHAR2 DEFAULT NULL );

DBMS_MGWADM.CREATE_MSGSYSTEM_LINK (
linkname     IN  VARCHAR2,
agent_name   IN  VARCHAR2,
properties   IN  SYS.MGW_TIBRV_PROPERTIES,
options      IN  SYS.MGW_PROPERTIES DEFAULT NULL,
comment      IN  VARCHAR2 DEFAULT NULL );

パラメータ

表97-30 TIB/Rendezvous用のCREATE_MSGSYSTEM_LINKプロシージャのパラメータ

パラメータ

説明

linkname

このメッセージ・システム・リンクを識別するためのユーザー定義名。

properties

TIB/Rendezvousメッセージ・システム・リンクの基本プロパティ。

options

オプションのリンク・プロパティ。オプションのプロパティがない場合は、NULLを設定します。これらは、メッセージ・システムでサポートされている、あまり使用されない構成プロパティです。

comment

ユーザーが指定した説明。必要ない場合はNULLを設定します。

agent_name

このリンクに関連付けられたすべての伝播ジョブの処理に使用されるメッセージ・ゲートウェイ・エージェントを指定します。DBMS_MGWADM.DEFAULT_AGENTはデフォルトのエージェントを指定します。

使用上の注意

エージェント名が指定されていない場合、メッセージ・ゲートウェイのデフォルトのエージェントが、このリンクに関連付けられた伝播ジョブを処理します。

関連項目:
メッセージ・システムのプロパティおよびオプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のTIB/Rendezvousシステムのプロパティに関する項を参照してください。

WebSphere MQ用のCREATE_MSGSYSTEM_LINKプロシージャ

このプロシージャは、WebSphere MQメッセージ・システムへのメッセージ・システム・リンクを作成します。

構文

DBMS_MGWADM.CREATE_MSGSYSTEM_LINK(
linkname    IN VARCHAR2,
properties  IN SYS.MGW_MQSERIES_PROPERTIES,
options     IN SYS.MGW_PROPERTIES DEFAULT NULL,
comment     IN VARCHAR2 DEFAULT NULL);

DBMS_MGWADM.CREATE_MSGSYSTEM_LINK(
linkname    IN VARCHAR2,
agent_name  IN  VARCHAR2,
properties  IN SYS.MGW_MQSERIES_PROPERTIES,
options     IN SYS.MGW_PROPERTIES DEFAULT NULL,
comment     IN VARCHAR2 DEFAULT NULL);

パラメータ

表97-31 WebSphere MQ用のCREATE_MSGSYSTEM_LINKプロシージャのパラメータ

パラメータ

説明

linkname

メッセージ・システム・リンクを識別するためのユーザー定義名。

properties

WebSphere MQメッセージ・システム・リンクの基本プロパティ。

options

オプションのリンク・プロパティ。オプションのプロパティがない場合は、NULLを設定します。これらは、メッセージ・システムでサポートされている、あまり使用されない構成プロパティです。

comment

ユーザーが指定した説明。必要ない場合はNULLを設定します。

agent_name

このリンクに関連付けられたすべての伝播ジョブの処理に使用されるメッセージ・ゲートウェイ・エージェントを指定します。DBMS_MGWADM.DEFAULT_AGENTはデフォルトのエージェントを指定します。

使用上の注意

エージェント名が指定されていない場合、メッセージ・ゲートウェイのデフォルトのエージェントが、このリンクに関連付けられた伝播ジョブを処理します。

関連項目:
メッセージ・システムのプロパティおよびオプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のWebSphere MQシステムのプロパティに関する項を参照してください。

DB_CONNECT_INFOプロシージャ

このプロシージャは、Oracle Databaseに接続するためにメッセージ・ゲートウェイのデフォルト・エージェントが使用する接続情報を構成します。

注意:
テクノロジが改良されたため(「ALTER_AGENTプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.DB_CONNECT_INFO (
username      IN VARCHAR2,
password      IN VARCHAR2,
database      IN VARCHAR2 DEFAULT NULL);

パラメータ

表97-32 DB_CONNECT_INFOプロシージャのパラメータ

パラメータ

説明

username

Oracle Databaseへの接続に使用するユーザー名。NULLは設定できません。

password

Oracle Databaseへの接続に使用するパスワード。NULLは設定できません。

database

メッセージ・ゲートウェイ・エージェントが使用するデータベース接続文字列。NULLは、ローカル接続を使用することを示します。

NULL以外の値を設定することを強くお薦めします。通常は、tnsnames.ora内のネットワーク・サービス名を指定します。

使用上の注意

メッセージ・ゲートウェイ・エージェントは、このプロシージャで構成されたユーザーとしてOracle Databaseに接続します。Oracleの管理者は、ユーザーを作成し、そのユーザーにロールMGW_AGENT_ROLEを付与した後、このプロシージャをコールしてメッセージ・ゲートウェイを構成する必要があります。MGW_AGENT_ROLEロールは、データベース内に格納されているメッセージ・ゲートウェイ構成情報をアクセスするために必要な特別な権限をこのユーザーに付与したり、Oracle Databaseアドバンスト・キューイング・キューでメッセージをエンキューまたはデキューしたり、特定のOracle Databaseアドバンスト・キューイング管理タスクを実行するために使用されます。

DISABLE_JOBプロシージャ

このプロシージャは、伝播ジョブを無効にします。

構文

DBMS_MGWADM.DISABLE_JOB (
job_name  IN VARCHAR2);

パラメータ

表97-33 DISABLE_JOBプロシージャのパラメータ

パラメータ

説明

job_name

伝播ジョブを識別します。

DISABLE_PROPAGATION_SCHEDULEプロシージャ

このプロシージャは、伝播スケジュールを無効にします。

注意:
テクノロジが改良されたため(「DISABLE_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.DISABLE_PROPAGATION_SCHEDULE (
schedule_id  IN VARCHAR2);

パラメータ

表97-34 DISABLE_PROPAGATION_SCHEDULEプロシージャのパラメータ

パラメータ

説明

schedule_id

使用禁止にする伝播スケジュールを識別します。

ENABLE_JOBプロシージャ

このプロシージャは、伝播ジョブを使用可能にします。

構文

DBMS_MGWADM.ENABLE_JOB (
job_name  IN VARCHAR2 );

パラメータ

表97-35 ENABLE_JOBプロシージャのパラメータ

パラメータ

説明

job_name

伝播ジョブを識別します。

ENABLE_PROPAGATION_SCHEDULEプロシージャ

このプロシージャは、伝播スケジュールを使用可能にします。

注意:
テクノロジが改良されたため(「ENABLE_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.ENABLE_PROPAGATION_SCHEDULE (
schedule_id  IN VARCHAR2 );

パラメータ

表97-36 ENABLE_PROPAGATION_SCHEDULEプロシージャのパラメータ

パラメータ

説明

schedule_id

使用可能にする伝播スケジュールを識別します。

REGISTER_FOREIGN_QUEUEプロシージャ

このプロシージャは、Oracle以外のキュー・エンティティをメッセージ・ゲートウェイに登録します。

構文

DBMS_MGWADM.REGISTER_FOREIGN_QUEUE(
name            IN VARCHAR2,
linkname        IN VARCHAR2,
provider_queue  IN VARCHAR2 DEFAULT NULL,
domain          IN INTEGER DEFAULT NULL,
options         IN SYS.MGW_PROPERTIES DEFAULT NULL,
comment         IN VARCHAR2 DEFAULT NULL);

パラメータ

表97-37 REGISTER_FOREIGN_QUEUEプロシージャのパラメータ

パラメータ

説明

name

登録されるキュー名。この名前は、メッセージ・ゲートウェイ内で外部キューを識別し、外部メッセージ・システムのキュー名と一致する必要はありません。

linkname

このキューが存在するメッセージ・システムに対するリンク名。

provider_queue

メッセージ・プロバイダ(ネイティブ)のキュー名。NULLの場合は、nameパラメータで指定された値がプロバイダ・キュー名として使用されます。

domain

キューのドメイン・タイプ。NULLは、ドメイン・タイプがメッセージ・システムに基づいて自動的に判断されることを意味します。DBMS_MGWADM.DOMAIN_QUEUEは、キュー(Point-to-Pointモデル)を示します。DBMS_MGWADM.DOMAIN_TOPICは、トピック(パブリッシュ・サブスクライブ・モデル)を示します。

options

オプションのキュー・プロパティ。

comment

ユーザーが指定した説明。NULLを設定することもできます。

使用上の注意

このプロシージャは、Oracle以外のメッセージ・システムに物理的なキューを作成しません。Oracle以外のキューは、そのメッセージ・システムの管理ツールを使用して作成する必要があります。

関連項目:
WebSphere MQメッセージ・システムまたはTIB/Rendezvousメッセージ・システムのキューを登録する場合の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』のオプションの外部キュー構成プロパティに関する項を参照してください。

REMOVE_AGENTプロシージャ

このプロシージャは、メッセージ・ゲートウェイ・エージェントを削除します。

構文

DBMS_MGWADM.REMOVE_AGENT(
agent_name   IN   VARCHAR2 );

パラメータ

表97-38 REMOVE_AGENTプロシージャのパラメータ

パラメータ

説明

agent_name

メッセージ・ゲートウェイ・エージェントを識別します。

使用上の注意

このメッセージ・ゲートウェイ・エージェントを削除する前に、このエージェントに関連付けられたすべてのメッセージ・システム・リンクを削除し、このエージェントを停止する必要があります。メッセージ・ゲートウェイのデフォルト・エージェントを削除することはできません。

REMOVE_JOBプロシージャ

このプロシージャは、伝播ジョブを削除します。

構文

DBMS_MGWADM.REMOVE_JOB(
job_name   IN   VARCHAR2,   force      IN   PLS_INTEGER DEFAULT DBMS_MGWADM.NO_FORCE);

パラメータ

表97-39 REMOVE_JOBプロシージャのパラメータ

パラメータ

説明

job_name

伝播ジョブを識別します。

force

メッセージ・ゲートウェイがこの伝播ジョブに関連するすべてのクリーンアップ処理を実行できない場合でも、このプロシージャを正常終了させるかどうかを指定します。

値: DBMS_MGWADM.NO_FORCE、DBMS_MGWADM.FORCE

- NO_FORCE(デフォルト)は、メッセージ・ゲートウェイがクリーンアップ処理を正常に実行できない場合、ジョブを削除しないことを意味します。

- FORCEは、すべてのクリーンアップ処理を完了できない場合でも、ジョブを削除することを意味します。

使用上の注意

- メッセージ・ゲートウェイ・エージェントは、Oracle DatabaseおよびOracle以外のメッセージ・システムの様々なリソースを使用して伝播アクティビティを実行します。ジョブを削除する場合は、これらのリソースを解放する必要があります。たとえば、ジョブを削除するときに削除する必要があるソース・キューに、メッセージ・ゲートウェイが永続サブスクライバを作成することがあります。したがって、通常このプロシージャは、メッセージ・ゲートウェイ・エージェントが実行中で、このジョブに関連付けられたOracle以外のメッセージ・システムにアクセスできるときにコールしてください。

- アウトバウンド伝播の場合、伝播ソースが複数のコンシューマ・キューであるときは、ローカル・サブスクライバがOracle Streams AQキューから削除されます。

REMOVE_MSGSYSTEM_LINKプロシージャ

このプロシージャは、Oracle以外のメッセージ・システムに対するメッセージ・システム・リンクを削除します。

構文

DBMS_MGWADM.REMOVE_MSGSYSTEM_LINK(
linkname  IN VARCHAR2);

パラメータ

表97-40 REMOVE_MSGSYSTEM_LINKプロシージャのパラメータ

パラメータ

説明

linkname

メッセージ・システム・リンク名。

使用上の注意

メッセージ・システム・リンクを削除するには、このリンクと関連付けられた登録済のすべてのキューを削除する必要があります。削除対象のリンクを参照する登録済の外部キュー(Oracle以外の)がある場合、このプロシージャは失敗します。

REMOVE_OPTIONプロシージャ

このプロシージャは、メッセージ・ゲートウェイ構成オプションを削除します。エージェント・オプション、メッセージ・リンク・オプションまたは伝播ジョブ・オプションを削除する場合に使用できます。

構文

DBMS_MGWADM.REMOVE_OPTION (
target_type   IN   PLS_INTEGER,
target_name   IN   VARCHAR2,
option_name   IN   VARCHAR2);

パラメータ

表97-41 REMOVE_OPTIONプロシージャのパラメータ

パラメータ

説明

target_type

メッセージ・ゲートウェイ・エンティティのターゲット・タイプを指定します。

- DBMS_MGWADM.AGENT_JAVA_PROP(メッセージ・ゲートウェイ・エージェントのJava Systemプロパティを削除する場合)

- DBMS_MGWADM.MSGLINK_OPTION(メッセージ・リンク・オプションを削除する場合)

- DBMS_MGWADM.JOB_OPTION(伝播ジョブ・オプションを削除する場合)

target_name

ターゲットの名前または識別子。このパラメータの値は、target_typeパラメータに指定された値によって決まります。NULL以外の値を指定してください。

option_name

オプション名。NULL以外の値を指定してください。

関連項目:
option_typeパラメータのオプションについては、表97-10「DBMS_MGWADM定数: SET_OPTIONおよびREMOVE_OPTIONプロシージャのtarget_type引数」を参照してください。

使用上の注意

DBMS_MGWADM.AGENT_JAVA_PROPターゲット

このプロシージャは、メッセージ・ゲートウェイ・エージェントの起動時に、Java Systemプロパティを設定するために使用されるエージェント・オプションを削除します。変更を有効にするには、エージェントを再起動する必要があります。

パラメータは、次のように解釈されます。

- target_nameは、メッセージ・ゲートウェイ・エージェントの名前を指定します。デフォルトのエージェントには、DBMS_MGWADM.DEFAULT_AGENTを使用できます。

- option_nameは、Java Systemプロパティを指定します。

- encryptedは、TRUEまたはFALSEに設定できます。

DBMS_MGWADM.MSGLINK_OPTIONターゲット

このプロシージャは、メッセージ・ゲートウェイのメッセージ・システム・リンクの単一オプションを削除します。このプロシージャは、DBMS_MGWADM.ALTER_MSGSYSTEM_LINKをコールし、optionsパラメータを使用してオプションを削除する処理と同等です。

パラメータは、次のように解釈されます。

- target_nameは、メッセージ・システム・リンクの名前を指定します。

- option_nameは、設定するオプションを指定します。

- encryptedはFALSEに設定する必要があります。

DBMS_MGWADM.JOB_OPTIONターゲット

このプロシージャは、メッセージ・ゲートウェイ伝播ジョブの単一オプションを削除します。このプロシージャは、DBMS_MGWADM.ALTER_JOBをコールし、optionsパラメータを使用してオプションを削除する処理と同等です。

パラメータは、次のように解釈されます。

- target_nameは、伝播ジョブの名前を指定します。

- option_nameは、設定するオプションを指定します。

- encryptedはFALSEに設定する必要があります。

REMOVE_SUBSCRIBERプロシージャ

このプロシージャは、伝播用のソース・キューから宛先にメッセージをコンシュームするために使用されるサブスクライバを削除します。

注意:
テクノロジが改良されたため(「REMOVE_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.REMOVE_SUBSCRIBER (
subscriber_id  IN VARCHAR2,
force          IN BINARY_INTEGER DEFAULT DBMS_MGWADM.NO_FORCE );

パラメータ

表97-42 REMOVE_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

subscriber_id

削除するサブスクライバを識別します。

force

メッセージ・ゲートウェイがこのサブスクライバに関連するすべてのクリーンアップ処理を実行できない場合でも、このプロシージャを正常終了させるかどうかを指定します。

値: DBMS_MGWADM.NO_FORCE、DBMS_MGWADM.FORCE

- NO_FORCEは、メッセージ・ゲートウェイがクリーンアップ処理を正常に実行できない場合、サブスクライバを削除しないことを意味します(デフォルト)。

- FORCEは、すべてのクリーンアップ処理を完了できない場合でも、サブスクライバを削除することを意味します。

使用上の注意

- メッセージ・ゲートウェイ・エージェントは、Oracle DatabaseおよびOracle以外のメッセージ・システムの様々なリソースを使用して伝播アクティビティを実行します。これらのリソースは通常、各サブスクライバと関連付けられ、サブスクライバが不要になったときに解放される必要があります。したがって、このプロシージャは、メッセージ・ゲートウェイ・エージェントが実行中で、このサブスクライバに関連付けられたOracle以外のメッセージ・システムにアクセスできるときにのみコールしてください。

- アウトバウンド伝播の場合、ローカル・サブスクライバがOracle Databaseアドバンスト・キューイング・キューから削除されます。

RESET_JOBプロシージャ

このプロシージャは、伝播ジョブの伝播エラー状態をリセットします。

構文

DBMS_MGWADM.RESET_JOB (
job_name   IN   VARCHAR2);

パラメータ

表97-43 RESET_JOBプロシージャのパラメータ

パラメータ

説明

job_name

伝播ジョブを識別します。

使用上の注意

このプロシージャを使用すると、障害状態に設定され、伝播アクティビティが停止された伝播ジョブをリセットすることができます。管理者は問題を解決してから、このプロシージャをコールして、エージェントが伝播ジョブを再試行できるようにする必要があります。MGW_JOBSビューのSTATUSフィールドは、ジョブ・ステータスを示します。

RESET_SUBSCRIBERプロシージャ

このプロシージャは、サブスクライバの伝播エラー状態をリセットします。

注意:
テクノロジが改良されたため(「RESET_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.RESET_SUBSCRIBER (
subscriber_id  IN VARCHAR2 );

パラメータ

表97-44 RESET_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

subscriber_id

サブスクライバを識別します。

SCHEDULE_PROPAGATIONプロシージャ

このプロシージャは、ソースから宛先へのメッセージ伝播をスケジュールします。スケジュールが使用可能で、メッセージが伝播されるようにメッセージ・ゲートウェイが適切に起動されている必要があります。

注意:
テクノロジが改良されたため(「CREATE_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.SCHEDULE_PROPAGATION (
schedule_id       IN VARCHAR2,
propagation_type  IN BINARY_INTEGER,
source            IN VARCHAR2,
destination       IN VARCHAR2,
start_time        IN DATE DEFAULT SYSDATE,
duration          IN NUMBER DEFAULT NULL,
next_time         IN VARCHAR2 DEFAULT NULL,
latency           IN NUMBER DEFAULT NULL);

パラメータ

表97-45 SCHEDULE_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

schedule_id

スケジュールを識別するユーザー定義名を指定します。

propagation_type

メッセージ伝播のタイプを指定します。DBMS_MGWADM.OUTBOUND_PROPAGATIONは、Oracle Databaseアドバンスト・キューイングからOracle以外への伝播用です。DBMS_MGWADM.INBOUND_PROPAGATIONは、Oracle以外からOracle Databaseアドバンスト・キューイングへの伝播用です。

source

メッセージの伝播元であるソース・キューを指定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

destination

メッセージの伝播先である宛先キューを指定します。このパラメータの構文および解釈は、propagation_typeに指定された値によって決まります。

start_time

将来使用するために予約されています。

duration

将来使用するために予約されています。

next_time

将来使用するために予約されています。

latency

ソース・キュー内のメッセージをチェックするときに、メッセージ・ゲートウェイ・エージェントが使用するポーリング間隔を秒単位で指定します。ソース・キュー内に利用可能なメッセージが存在しない場合、このポーリング間隔が経過するまで、エージェントはポーリングを再実行しません。エージェントによってメッセージが検出されると、利用可能なメッセージが存在するかぎり、メッセージの伝播が継続されます。

指定できる値はNULL、または0より大きい値です。latencyがNULLの場合、メッセージ・ゲートウェイ・エージェントのデフォルトのポーリング間隔が使用されます。デフォルトのポーリング間隔は5秒間ですが、このデフォルト値はメッセージ・ゲートウェイの初期化ファイルによって上書きできます。

使用上の注意

アウトバウンド伝播の場合、パラメータは次のように解釈されます。

- source - メッセージの伝播元のOracle Databaseアドバンスト・キューイング・ローカル・キューを指定します。このキューは、schema.queueの構文で指定する必要があります。

- destination - メッセージの伝播先の外部キューを指定します。このキューは、registered_queue@message_linkの構文で指定する必要があります。

インバウンド伝播の場合、パラメータは次のように解釈されます。

- source - メッセージの伝播元である外部キューを指定します。このキューは、registered_queue@message_linkの構文で指定する必要があります。

- destination - メッセージの伝播先のOracle Databaseアドバンスト・キューイング・ローカル・キューを指定します。このキューは、schema.queueの構文で指定する必要があります。

スケジュールは、作成時に使用可能な状態に設定されます。

SET_LOG_LEVELプロシージャ

このプロシージャは、メッセージ・ゲートウェイ・エージェントのロギング・レベルを動的に変更します。メッセージ・ゲートウェイ・エージェントが実行されている必要があります。

構文

DBMS_MGWADM.SET_LOG_LEVEL (
log_level    IN   BINARY_INTEGER);

DBMS_MGWADM.SET_LOG_LEVEL (
agent_name   IN   VARCHAR2,
log_level    IN   BINARY_INTEGER);

パラメータ

表97-46 SET_LOG_LEVELプロシージャのパラメータ

パラメータ

説明

log_level

メッセージ・ゲートウェイ・エージェントが情報をログに記録するときのレベル。DBMS_MGWADM.BASIC_LOGGINGの場合は最小限の情報が生成され、DBMS_MGWADM.TRACE_DEBUG_LOGGINGの場合は最大限の情報が生成されます。

agent_name

メッセージ・ゲートウェイ・エージェントを識別します。DBMS_MGWADM.DEFAULT_AGENTはデフォルトのエージェントを指定します。

関連項目:
log_levelパラメータの詳細は、表97-3「DBMS_MGWADM定数: ロギング・レベル」を参照してください。

SET_OPTIONプロシージャ

このプロシージャは、メッセージ・ゲートウェイ構成オプションを設定します。エージェント・オプション、メッセージ・リンク・オプションまたは伝播ジョブ・オプションを設定する場合に使用できます。

構文

DBMS_MGWADM.SET_OPTION (
target_type   IN   PLS_INTEGER,
target_name   IN   VARCHAR2,
option_name   IN   VARCHAR2,
option_value  IN   VARCHAR2,
encrypted     IN   BOOLEAN DEFAULT FALSE );

パラメータ

表97-47 SET_OPTIONプロシージャのパラメータ

パラメータ

説明

target_type

メッセージ・ゲートウェイ・エンティティのターゲット・タイプを指定します。

- DBMS_MGWADM.AGENT_JAVA_PROP(メッセージ・ゲートウェイ・エージェントのJava Systemプロパティを設定する場合)

- DBMS_MGWADM.MSGLINK_OPTION(メッセージ・リンク・オプションを設定する場合)

- DBMS_MGWADM.JOB_OPTION(伝播ジョブ・オプションを設定する場合)

target_name

ターゲットの名前または識別子。このパラメータの値は、target_typeパラメータに指定された値によって決まります。NULL以外の値を指定してください。

option_name

オプション名。NULL以外の値を指定してください。

option_value

オプション値。

encrypted

値を暗号化して保存するかどうかを指定します。

- 値を暗号化形式で保存する場合は、TRUE

- 値をクリアテキスト形式で保存する場合は、FALSE

関連項目:
option_typeパラメータのオプションについては、表97-10「DBMS_MGWADM定数: SET_OPTIONおよびREMOVE_OPTIONプロシージャのtarget_type引数」を参照してください。

使用上の注意

DBMS_MGWADM.AGENT_JAVA_PROPターゲット

このプロシージャは、メッセージ・ゲートウェイ・エージェントの起動時にJava Systemプロパティを設定するために使用されるエージェント・オプションを格納します。変更を有効にするには、エージェントを再起動する必要があります。

パラメータは、次のように解釈されます。

- target_nameは、メッセージ・ゲートウェイ・エージェントの名前を指定します。デフォルトのエージェントには、DBMS_MGWADM.DEFAULT_AGENTを使用できます。

- option_nameは、Java Systemプロパティを指定します。

- encryptedは、TRUEまたはFALSEに設定できます。

DBMS_MGWADM.MSGLINK_OPTIONターゲット

このプロシージャは、メッセージ・ゲートウェイのメッセージ・システム・リンクの単一オプションを設定または変更します。このプロシージャは、DBMS_MGWADM.ALTER_MSGSYSTEM_LINKをコールし、optionsパラメータを使用してオプションを設定する処理と同等です。

パラメータは、次のように解釈されます。

- target_nameは、メッセージ・システム・リンクの名前を指定します。

- option_nameは、設定するオプションを指定します。

- encryptedはFALSEに設定する必要があります。

DBMS_MGWADM.JOB_OPTIONターゲット

このプロシージャは、メッセージ・ゲートウェイの伝播ジョブの単一オプションを設定または変更します。このプロシージャは、DBMS_MGWADM.ALTER_JOBをコールし、optionsパラメータを使用してオプションを設定する処理と同等です。

パラメータは、次のように解釈されます。

- target_nameは、伝播ジョブの名前を指定します。

- option_nameは、設定するオプションを指定します。

- encryptedはFALSEに設定する必要があります。

SHUTDOWNプロシージャ

このプロシージャは、メッセージ・ゲートウェイ・エージェントを停止します。メッセージ・ゲートウェイが再起動されるまで、伝播アクティビティは実行されません。

構文

DBMS_MGWADM.SHUTDOWN (
sdmode      IN BINARY_INTEGER DEFAULT DBMS_MGWADM.SHUTDOWN_NORMAL);

DBMS_MGWADM.SHUTDOWN (
agent_name  IN VARCHAR2);

パラメータ

表97-48 SHUTDOWNプロシージャのパラメータ

パラメータ

説明

sdmode

停止モード。現在指定できる値は、通常の停止を意味するDBMS_MGWADM.SHUTDOWN_NORMALのみです。メッセージ・ゲートウェイ・エージェントは、現在進行中の伝播作業を完了しようとします。

agent_name

メッセージ・ゲートウェイ・エージェントを識別します。DBMS_MGWADM.DEFAULT_AGENTはデフォルトのエージェントを指定します。

使用上の注意

エージェント名を指定しない場合、メッセージ・ゲートウェイのデフォルト・エージェントは停止します。

STARTUPプロシージャ

このプロシージャは、メッセージ・ゲートウェイ・エージェントを起動します。伝播アクティビティを行う前に、このプロシージャをコールする必要があります。

構文

DBMS_MGWADM.STARTUP(
instance       IN  BINARY_INTEGER DEFAULT 0,
force          IN  BINARY_INTEGER DEFAULT DBMS_MGWADM.NO_FORCE);

DBMS_MGWADM.STARTUP(
agent_name     IN  VARCHAR2);

パラメータ

表97-49 STARTUPプロシージャのパラメータ

パラメータ

説明

instance

メッセージ・ゲートウェイ・エージェントの起動に使用されるジョブ・キューのジョブを実行できるインスタンスを指定します。0(ゼロ)の場合は、どのインスタンスでもジョブを実行できます。

注意: このパラメータは非推奨となっています。

force

DBMS_MGWADM.FORCEの場合は、ジョブ・インスタンスとして正の整数がすべて受け入れられます。DBMS_MGWADM.NO_FORCE(デフォルト)の場合は、指定したインスタンスが実行している必要があり、そうでない場合は、ルーチンに例外が発生します。

注意: このパラメータは非推奨となっています。

agent_name

メッセージ・ゲートウェイ・エージェントを識別します。DBMS_MGWADM.DEFAULT_AGENTはデフォルトのエージェントを指定します。

使用上の注意

- エージェント名を指定しない場合は、デフォルトのメッセージ・ゲートウェイ・エージェントが起動します。

- forceおよびinstanceパラメータは使用されないため、無視されます。instanceアフィニティ・パラメータを使用して、特定のインスタンス上でデフォルト・エージェントを起動した場合、管理者はデータベース・サービスを作成し、DBMS_MGWADM.ALTER_AGENTプロシージャを使用して、このサービスをデフォルト・エージェントに割り当てる必要があります。

- DBMS_MGWADM.CREATE_AGENTまたはDBMS_MGWADM.ALTER_AGENTサブプログラムによってエージェント・ユーザーが構成されるまで、メッセージ・ゲートウェイ・エージェントは起動できません。

UNREGISTER_FOREIGN_QUEUEプロシージャ

このプロシージャは、Oracle以外のキュー・エンティティをメッセージ・ゲートウェイから削除します。

構文

DBMS_MGWADM.UNREGISTER_FOREIGN_QUEUE(
name         IN VARCHAR2,
linkname     IN VARCHAR2);

パラメータ

表97-50 UNREGISTER_FOREIGN_QUEUEプロシージャのパラメータ

パラメータ

説明

name

キュー名

linkname

キューが存在するメッセージ・システムに対するリンク名

使用上の注意

- このプロシージャは、Oracle以外のメッセージ・システムの物理的なキューを削除しません。

- キューの登録を解除するには、このキューを参照しているすべての伝播ジョブ、サブスクライバおよびスケジュールの登録を解除する必要があります。伝播ジョブ、サブスクライバまたは伝播スケジュールがOracle以外のキューを参照している場合、このプロシージャは失敗します。

UNSCHEDULE_PROPAGATIONプロシージャ

このプロシージャは、伝播スケジュールを削除します。

注意:
テクノロジが改良されたため(「REMOVE_JOBプロシージャ」を参照)、このサブプログラムは非推奨となっています(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。

構文

DBMS_MGWADM.UNSCHEDULE_PROPAGATION (
schedule_id   IN VARCHAR2 );

パラメータ

表97-51 UNSCHEDULE_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

schedule_id

削除する伝播スケジュールを識別します。

98 DBMS_MGWMSG

DBMS_MGWMSGは、次のものを提供します。

- 基本的なメッセージ・タイプでメッセージ本体の変換に使用されるオブジェクト・タイプ

- メッセージ・ゲートウェイのメッセージ・タイプを操作するためのメソッド、定数およびサブプログラム

関連項目:
メッセージ・ゲートウェイの管理インタフェースであるDBMS_MGWADMについては、第97章「DBMS_MGWADM」を参照してください。

この章では、次の項目について説明します。

- DBMS_MGWMSGの使用方法

- セキュリティ・モデル

- 定数

- タイプ

- DBMS_MGWMSGサブプログラムの要約

DBMS_MGWMSGの使用方法

- セキュリティ・モデル

- 定数

- タイプ

セキュリティ・モデル

EXECUTE権限は、標準的なタイプのみでなくDBMS_MGWMSGパッケージで定義されるすべてのタイプに対してPUBLICに付与されます。DBMS_MGWMSGのパッケージおよびオブジェクト・タイプの所有者はSYSです。

注意:
catmgw.sqlスクリプトを実行して、メッセージ・ゲートウェイのパッケージおよびオブジェクト・タイプをデータベースにロードする必要があります。データベース・オブジェクトのロード方法およびDBMS_MGWMSGの使用方法の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

定数

表98-1 DBMS_MGWMSG定数: 値のタイプおよびSYS.MGW_NAME_VALUE_Tオブジェクトの値のタイプを表す定数

値

定数

TEXT_VALUE

CONSTANT BINARY_INTEGER := 1

RAW_VALUE

CONSTANT BINARY_INTEGER := 2

BOOLEAN_VALUE

CONSTANT BINARY_INTEGER := 3

BYTE_VALUE

CONSTANT BINARY_INTEGER := 4

SHORT_VALUE

CONSTANT BINARY_INTEGER := 5

INTEGER_VALUE

CONSTANT BINARY_INTEGER := 6

LONG_VALUE

CONSTANT BINARY_INTEGER := 7

FLOAT_VALUE

CONSTANT BINARY_INTEGER := 8

DOUBLE_VALUE

CONSTANT BINARY_INTEGER := 9

DATE_VALUE

CONSTANT BINARY_INTEGER := 10

表98-2 DBMS_MGWMSG定数: ブール値 - ブール値を数値で表す定数

値

定数

BOOLEAN_FALSE

CONSTANT BINARY_INTEGER := 0

BOOLEAN_TRUE

CONSTANT BINARY_INTEGER := 1

表98-3 DBMS_MGWMSG定数: 大文字と小文字の比較

値

定数

CASE_SENSITIVE

CONSTANT BINARY_INTEGER := 0

CASE_INSENSITIVE

CONSTANT BINARY_INTEGER := 1

表98-4 TIB/Rendezvousフィールド・タイプの定数

値

定数

TIBRVMSG_BOOL

CONSTANT INTEGER := 1

TIBRVMSG_F32

CONSTANT INTEGER := 2

TIBRVMSG_F64

CONSTANT INTEGER := 3

TIBRVMSG_I8

CONSTANT INTEGER := 4

TIBRVMSG_I16

CONSTANT INTEGER := 5

TIBRVMSG_I32

CONSTANT INTEGER := 6

TIBRVMSG_I64

CONSTANT INTEGER := 7

TIBRVMSG_IPADDR32

CONSTANT INTEGER := 8

TIBRVMSG_IPPORT16

CONSTANT INTEGER := 9

TIBRVMSG_DATETIME

CONSTANT INTEGER := 10

TIBRVMSG_F32ARRAY

CONSTANT INTEGER := 11

TIBRVMSG_F64ARRAY

CONSTANT INTEGER := 12

TIBRVMSG_I8ARRAY

CONSTANT INTEGER := 13

TIBRVMSG_I16ARRAY

CONSTANT INTEGER := 14

TIBRVMSG_I32ARRAY

CONSTANT INTEGER := 15

TIBRVMSG_I64ARRAY

CONSTANT INTEGER := 16

TIBRVMSG_OPAQUE

CONSTANT INTEGER := 17

TIBRVMSG_STRING

CONSTANT INTEGER := 18

TIBRVMSG_XML

CONSTANT INTEGER := 19

タイプ

- SYS.MGW_NAME_VALUE_Tタイプ

- SYS.MGW_NAME_VALUE_Tにおける値のタイプと属性間のマッピング

- SYS.MGW_NAME_TYPE_ARRAY_Tタイプ

- SYS.MGW_TEXT_VALUE_Tタイプ

- SYS.MGW_RAW_VALUE_Tタイプ

- SYS.MGW_BASIC_MSG_Tタイプ

- SYS.MGW_NUMBER_ARRAY_Tタイプ

- SYS.MGW_TIBRV_FIELD_Tタイプ

- SYS.MGW_TIBRV_MSG_Tタイプ

SYS.MGW_NAME_VALUE_Tタイプ

このタイプは、名前付きの値を指定します。通常、name属性とtype属性、および<>_value属性の1つが、NULL以外の値になります。

構文

TYPE SYS.MGW_NAME_VALUE_T IS OBJECT(
name               VARCHAR2(250),
type               INTEGER,
integer_value      INTEGER,
number_value       NUMBER,
text_value         VARCHAR2(4000),
raw_value          RAW(2000),
date_value         DATE,

-- Methods
STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_BOOLEAN (
name   IN VARCHAR2,
value  IN INTEGER )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_BYTE (
name   IN VARCHAR2,
value  IN INTEGER )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_SHORT (
name   IN VARCHAR2,
value  IN INTEGER )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_INTEGER (
name   IN VARCHAR2,
value  IN INTEGER )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_LONG (
name   IN VARCHAR2,
value  IN NUMBER )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_FLOAT (
name   IN VARCHAR2,
value  IN NUMBER )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_DOUBLE (
name   IN VARCHAR2,
value  IN NUMBER )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_TEXT (
name   IN VARCHAR2,
value  IN VARCHAR2 )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_RAW (
name   IN VARCHAR2,
value  IN RAW )
RETURN SYS.MGW_NAME_VALUE_T,

STATIC FUNCTION CONSTRUCT_DATE (
name   IN VARCHAR2,
value  IN DATE )
RETURN SYS.MGW_NAME_VALUE_T );

属性

表98-5 SYS.MGW_NAME_VALUE_Tの属性

属性

説明

name

値に関連付けられた名前。

type

値のタイプ。詳細は、表98-1のDBMS_MGWMSG.<>_VALUE定数を参照してください。これは、どのJavaデータ・タイプとクラスが値と関連付けられているかを示します。また、どの属性に値が格納されているかも示します。

integer_value

整数値を格納します。

number_value

floatタイプまたはラージ・タイプの整数値を格納します。

text_value

TEXT値を格納します。

raw_value

RAW(バイト)値を格納します。

date_value

日付値を格納します。

SYS.MGW_NAME_VALUE_Tにおける値のタイプと属性間のマッピング

表98-6に、値のタイプと、値の格納に使用される属性との間のマッピングを示します。

表98-6 SYS.MGW_NAME_VALUE_Tにおける値のタイプと属性間のマッピング

タイプ

値の格納に使用される属性

DBMS_MGWMSG.TEXT_VALUE

text_value

DBMS_MGWMSG.RAW_VALUE

raw_value

DBMS_MGWMSG.BOOLEAN_VALUE

integer_value

DBMS_MGWMSG.BYTE_VALUE

integer_value

DBMS_MGWMSG.SHORT_VALUE

integer_value

DBMS_MGWMSG.INTEGER_VALUE

integer_value

DBMS_MGWMSG.LONG_VALUE

number_value

DBMS_MGWMSG.FLOAT_VALUE

number_value

DBMS_MGWMSG.DOUBLE_VALUE

number_value

DBMS_MGWMSG.DATE_VALUE

date_value

CONSTRUCTメソッド

このメソッドは、新規SYS.MGW_NAME_VALUE_Tインスタンスを構成します。すべての属性にNULLが割り当てられます。

構文

STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_NAME_VALUE_T;

CONSTRUCT_TYPEメソッド

これらのメソッドは、新規SYS.MGW_NAME_VALUE_Tインスタンスを構成し、特定のタイプの値でインスタンスを初期化します。各メソッドは、表98-6のマッピングに示されているように、name属性とtype属性、および<>_value属性の1つを設定します。

構文

STATIC FUNCTION CONSTRUCT_<> (
name   IN VARCHAR2,
value  IN datatype )
RETURN SYS.MGW_NAME_VALUE_T;

使用上の注意

construct_booleanメソッドは、値をDBMS_MGWMSG.BOOLEAN_TRUEまたはDBMS_MGWMSG.BOOLEAN_FALSEのいずれかに設定します。

SYS.MGW_NAME_TYPE_ARRAY_Tタイプ

このタイプは、名前/値ペアの配列を指定します。SYS.MGW_NAME_VALUE_ARRAY_Tタイプのオブジェクトには、最大1024個の要素を格納できます。

構文

TYPE SYS.MGW_NAME_VALUE_ARRAY_T
AS VARRAY (1024) OF SYS.MGW_NAME_VALUE_T;

SYS.MGW_TEXT_VALUE_Tタイプ

このタイプは、TEXT値を指定します。大きい値はCLOBで、比較的小さい値(サイズ<= 4000)はVARCHAR2で格納できます。< >_value属性は、その中の1つのみを設定してください。

構文

TYPE SYS.MGW_TEXT_VALUE_T IS OBJECT(
small_value VARCHAR2(4000),
large_value CLOB,

-- Methods
STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_TEXT_VALUE_T);

属性

表98-7 SYS.MGW_TEXT_VALUE_Tの属性

属性

説明

small_value

小さいTEXT値。値< =4000の場合に使用されます。

large_value

大きいTEXT値。small_value属性には値が大きすぎる場合に使用します。

CONSTRUCTメソッド

このメソッドは、新規SYS.MGW_TEXT_VALUE_Tインスタンスを構成します。すべての属性にNULLが割り当てられます。

構文

STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_TEXT_VALUE_T;

SYS.MGW_RAW_VALUE_Tタイプ

このタイプは、RAW値を指定します。大きい値はBLOBで、比較的小さい値(サイズ<= 2000)はRAWで格納できます。< >_value属性は、その中の1つのみを設定してください。

構文

TYPE SYS.MGW_RAW_VALUE_T IS OBJECT(
small_value RAW(2000),
large_value BLOB,

--Methods
STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_RAW_VALUE_T);

属性

表98-8 SYS.MGW_RAW_VALUE_Tの属性

属性

説明

small_value

小さいRAW(バイト)値(<= 2000)

large_value

大きいRAW値。small_value属性には値が大きすぎる場合に使用します。

CONSTRUCTメソッド

このメソッドは、新規SYS.MGW_RAW_VALUE_Tインスタンスを構成します。すべての属性にNULLが割り当てられます。

構文

STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_RAW_VALUE_T;

SYS.MGW_BASIC_MSG_Tタイプ

このタイプは、基本的なTEXTまたはRAWメッセージの標準的なタイプを表します。通常、単一のTEXTまたはRAWの値のみが設定されます。このタイプのオブジェクトでは、TEXTとRAWの両方にNULL以外の値を同時に設定しないでください。

構文

TYPE SYS.MGW_BASIC_MSG_T IS OBJECT(
header     SYS.MGW_NAME_VALUE_ARRAY_T,
text_body  SYS.MGW_TEXT_VALUE_T,
raw_body   SYS.MGW_RAW_VALUE_T,

--Methods
STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_BASIC_MSG_T);

属性

表98-9 SYS.MGW_BASIC_MSG_Tの属性

属性

説明

header

名前/値ペアの配列としてのメッセージ・ヘッダー情報

text_body

TEXTメッセージのメッセージ本体

raw_body

RAW(バイト)メッセージのメッセージ本体

CONSTRUCTメソッド

このメソッドは、新規SYS.MGW_BASIC_MSG_Tインスタンスを構成します。すべての属性にNULLが割り当てられます。

構文

STATIC FUNCTION CONSTRUCT
RETURN SYS.MGW_BASIC_MSG_T;

SYS.MGW_NUMBER_ARRAY_Tタイプ

このタイプは、数値の配列を指定します。

構文

TYPE SYS.MGW_NUMBER_ARRAY_T AS VARRAY(1024) OF NUMBER;

SYS.MGW_TIBRV_FIELD_Tタイプ

このタイプは、TIB/Rendezvousメッセージ・フィールドを表します。通常、このメッセージ・フィールドは、SYS.MGW_TIBRV_MSG_Tインスタンスからフィールド情報を取り出すために、読取り専用モードで使用されます。

構文

TYPE SYS.MGW_TIBRV_FIELD_T IS OBJECT(
field_name       VARCHAR2(256),
field_id         INTEGER,
field_type       INTEGER,
number_value     NUMBER,
number_array_value  SYS.MGW_NUMBER_ARRAY_T,
text_value       VARCHAR2(4000),
raw_value        RAW(2000),
date_value       DATE,
clob_value       CLOB,
blob_value       BLOB);

属性

表98-10 SYS.MGW_TIBRV_FIELD_Tの属性

属性

説明

field_name

フィールド名。フィールドに名前がない場合は、NULLになります。

field_id

フィールド識別子。フィールド識別子がゼロ(0)である場合、そのフィールドはフィールド識別子を持たないとみなされます。それ以外の場合、フィールド識別子は同じメッセージのすべてのフィールド間で一意の非ゼロ値です。

field_type

フィールドの書式化に使用されるデータ・タイプ。この属性の有効な値は、DBMS_MGWMSG.TIBRVMSG_<>定数で定義されています。この属性値が表すデータ・タイプに基づいて、フィールドのデータの格納方式が決定されます。

number_value

数値の格納に使用される属性。

number_array_value

数値配列の格納に使用される属性。

text_value

小さいTEXT値の格納に使用される属性。

raw_value

小さいRAW値の格納に使用される属性。

date_value

日付値の格納に使用される属性。

clob_value

大きいTEXT値の格納に使用される属性。この属性は、テキスト・データがtext_valueに納まらない(つまり、サイズが4000より大きい)場合に使用されます。

blob_value

大きいRAW値の格納に使用される属性。この属性は、RAWデータがraw_valueに納まらない(つまり、サイズが2000より大きい)場合に使用されます。

SYS.MGW_TIBRV_FIELD_Tにおけるフィールドのタイプと属性間のマッピング

表98-11に、SYS.MGW_TIBRV_FIELD_Tにおけるフィールドのタイプと、値の格納に使用される属性との間のマッピングを示します。

表98-11 SYS.MGW_TIBRV_FIELD_Tにおけるフィールドのタイプと属性間のマッピング

フィールド・タイプ(DBMS_MGWMSG定数)

値の格納に使用される属性

TIBRVMSG_BOOL

number_value

TIBRVMSG_F32

number_value

TIBRVMSG_F64

number_value

TIBRVMSG_I8

number_value

TIBRVMSG_I16

number_value

TIBRVMSG_I32

number_value

TIBRVMSG_I64

number_value

TIBRVMSG_IPADDR32

text_value

TIBRVMSG_IPPORT16

number_value

TIBRVMSG_DATETIME

date_value

TIBRVMSG_F32ARRAY

number_array_value

TIBRVMSG_F64ARRAY

number_array_value

TIBRVMSG_I8ARRAY

number_array_value

TIBRVMSG_I16ARRAY

number_array_value

TIBRVMSG_I32ARRAY

number_array_value

TIBRVMSG_I64ARRAY

number_array_value

TIBRVMSG_OPAQUE

raw_valueまたはblob_value

TIBRVMSG_STRING

text_valueまたはclob_value

TIBRVMSG_XML

raw_valueまたはblob_value

SYS.MGW_TIBRV_MSG_Tタイプ

このタイプは、TIB/Rendezvousメッセージを表します。このタイプの属性を直接参照しないでください。かわりにタイプ・メソッドを使用します。

構文

TYPE SYS.MGW_TIBRV_MSG_T IS OBJECT(
send_subject    VARCHAR2(256),
reply_subject   VARCHAR2(256),
cm_time_limit   NUMBER,
cm_sender_name  VARCHAR2(256),
cm_sequence_num NUMBER,
fields          SYS.MGW_TIBRV_IFIELDS_T,
clob_data1      CLOB,
clob_data2      CLOB,
clob_data3      CLOB,
blob_data1      BLOB,
blob_data2      BLOB,
blob_data3      BLOB,

STATIC FUNCTION construct
RETURN SYS.MGW_TIBRV_MSG_T,

MEMBER PROCEDURE add_bool (
name  IN   VARCHAR2,
id    IN   INTEGER,
value IN   INTEGER ),

MEMBER PROCEDURE add_f32 (
name  IN   VARCHAR2,
id    IN   INTEGER,
value IN   FLOAT ),

MEMBER PROCEDURE add_f64 (
name  IN   VARCHAR2,
id    IN   INTEGER,
value IN   DOUBLE ),

MEMBER PROCEDURE add_i8 (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  INTEGER ),

MEMBER PROCEDURE add_i16 (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  INTEGER ),

MEMBER PROCEDURE add_i32 (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  INTEGER ),

MEMBER PROCEDURE add_i64 (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  NUMBER ),

MEMBER PROCEDURE add_ipaddr32 (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  VARCHAR2 ),

MEMBER PROCEDURE add_ipport16 (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  INTEGER ),

MEMBER PROCEDURE add_datetime (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  DATE ),

MEMBER PROCEDURE add_f32array (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  SYS.MGW_NUMBER_ARRAY_T ),

MEMBER PROCEDURE add_f64array (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  SYS.MGW_NUMBER_ARRAY_T ),

MEMBER PROCEDURE add_i8array (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  SYS.MGW_NUMBER_ARRAY_T ),

MEMBER PROCEDURE add_i16array (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  SYS.MGW_NUMBER_ARRAY_T ),

MEMBER PROCEDURE add_i32array (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  SYS.MGW_NUMBER_ARRAY_T ),

MEMBER PROCEDURE add_i64array (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  SYS.MGW_NUMBER_ARRAY_T ),

MEMBER PROCEDURE add_string (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  VARCHAR2 ),

MEMBER PROCEDURE add_string (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  CLOB ),

MEMBER PROCEDURE add_opaque (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  RAW ),

MEMBER PROCEDURE add_opaque (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  BLOB ),

MEMBER PROCEDURE add_xml (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  RAW ),

MEMBER PROCEDURE add_xml (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  BLOB ),

MEMBER PROCEDURE set_send_subject (
value  IN  VARCHAR2 ),

MEMBER PROCEDURE set_reply_subject (
value  IN  VARCHAR2 ),

MEMBER PROCEDURE set_cm_time_limit (
value  IN  NUMBER ),

MEMBER PROCEDURE set_cm_sender_name (
value IN  VARCHAR2 ),

MEMBER PROCEDURE set_cm_sequence_num (
value IN NUMBER ),

MEMBER FUNCTION get_send_subject
RETURN VARCHAR2,

MEMBER FUNCTION get_reply_subject
RETURN VARCHAR2,

MEMBER FUNCTION get_cm_time_limit
RETURN NUMBER,

MEMBER FUNCTION get_cm_sender_name
RETURN VARCHAR2,

MEMBER FUNCTION get_cm_sequence_num
RETURN NUMBER,

MEMBER FUNCTION get_field_count
RETURN INTEGER,

MEMBER FUNCTION get_field (
idx    IN INTEGER )
RETURN SYS.MGW_TIBRV_FIELD_T,

MEMBER FUNCTION get_field_by_name (
name   IN  VARCHAR2 )
RETURN SYS.MGW_TIBRV_FIELD_T,

MEMBER FUNCTION get_field_by_id (
id     IN  INTEGER )
RETURN SYS.MGW_TIBRV_FIELD_T,

MEMBER FUNCTION find_field_name (
name   IN  VARCHAR2,
start_idx IN INTEGER )
RETURN INTEGER,

MEMBER FUNCTION find_field_id (
id     IN INTEGER,
start_idx IN INTEGER )
RETURN INTEGER
);

属性

表98-12 SYS.MGW_TIBRV_MSG_Tタイプの属性

属性

説明

send_subject

送信サブジェクト名

reply_subject

応答サブジェクト名

cm_time_limit

認証メッセージを受け取るまでの時間制限

cm_sender_name

認証メッセージの送信者名

cm_sequence_num

認証メッセージの順序番号

fields

メッセージ・フィールドのコレクション

clob_data1

大きいTEXT値の格納に使用される属性

clob_data2

大きいTEXT値の格納に使用される属性

clob_data3

大きいTEXT値の格納に使用される属性

blob_data1

大きいRAW値の格納に使用される属性

blob_data2

大きいRAW値の格納に使用される属性

blob_data3

大きいRAW値の格納に使用される属性

CONSTRUCTメソッド

新規SYS.MGW_TIBRV_MSG_Tインスタンスを構成します。すべての属性がNULLに設定されます。

構文

STATIC FUNCTION construct
RETURN SYS.MGW_TIBRV_MSG_T;

ADD_<>メソッド

これらのメソッドは、新しいフィールドをメッセージに追加します。

構文

MEMBER PROCEDURE ADD_<> (
name  IN  VARCHAR2,
id    IN  INTEGER,
value IN  datatype );

パラメータ

表98-13 SYS.MGW_TIBRV_MSG_T ADD_<>メソッドのパラメータ

メソッドのパラメータについて説明しています。" title="SYS.MGW_TIBRV_MSG_T ADD_<>メソッドのパラメータ" width="100%">

パラメータ

説明

name

フィールド名

id

フィールド識別子

value

フィールド・データ

表98-14に、個々のADDメソッドで割り当てられるフィールド・タイプ、およびフィールド・データとして有効な値を示します。

表98-14 MGW_TIBRV_MSG_T Addメソッドのフィールド・タイプ

メソッド名

割り当てられるフィールド・タイプ

コメント

add_bool

TIBRVMSG_BOOL

有効な値: 0 (false), 1 (true)

add_f32

TIBRVMSG_F32

N/A

add_f64

TIBRVMSG_F64

N/A

add_i8

TIBRVMSG_I8

有効な範囲: -128...127

add_i16

TIBRVMSG_I16

有効な範囲: -32768...32767

add_i32

TIBRVMSG_I32

有効な範囲: -2147483648... 2147483647

add_i64

TIBRVMSG_I64

N/A

add_ipaddr32

TIBRVMSG_IPADDR32

N/A

add_ipport16

TIBRVMSG_IPPORT16

N/A

add_datetime

TIBRVMSG_DATETIME

N/A

add_f32array

TIBRVMSG_F32ARRAY

N/A

add_f64array

TIBRVMSG_F64ARRAY

N/A

add_i8array

TIBRVMSG_I8ARRAY

有効な範囲: -128...127

add_i16array

TIBRVMSG_I16ARRAY

有効な範囲: -32768...32767

add_i32array

TIBRVMSG_I32ARRAY

有効な範囲: -2147483648... 2147483647

add_i64array

TIBRVMSG_I64ARRAY

N/A

add_opaque

TIBRVMSG_OPAQUE

サイズ < 2000の値はRAWとして格納され、それ以外の値はBLOBに格納されます。

add_string

TIBRVMSG_STRING

サイズ < 4000の値はVARCHAR2として格納され、それ以外の値はCLOBに格納されます。

add_xml

TIBRVMSG_XML

サイズ < 2000の値はRAWとして格納され、それ以外の値はBLOBに格納されます。

SET_<>メソッド

これらのメソッドは、インスタンスの属性を特定の値に設定するアクセッサ・メソッドです。

構文

MEMBER PROCEDURE SET_<> (
value IN datatype );

パラメータ

表98-15 SYS.MGW_TIBRV_MSG_T SET_<>メソッドのパラメータ

メソッドのパラメータについて説明しています。" title="SYS.MGW_TIBRV_MSG_T SET_<>メソッドのパラメータ" width="100%">

パラメータ

説明

value

属性に割り当てる値

GET_<>メソッド

これらのメソッドは、インスタンスの属性値を取り出すアクセッサ・メソッドです。

構文

MEMBER PROCEDURE GET_<>
RETURN datatype;

パラメータ

なし

戻り値

属性値を戻します。

GET_FIELD_COUNTファンクション

メッセージのフィールド数を取得します。

構文

MEMBER PROCEDURE get_field_count
RETURN INTEGER;

パラメータ

なし

戻り値

メッセージのフィールド数を戻します。フィールドが存在しない場合は、ゼロ(0)を戻します。

GET_FIELDファンクション

指定されたフィールド・コレクション索引を持つフィールドに関するフィールド情報を取り出します。このメソッドは、GET_FIELD_COUNTファンクションからゼロ以外の値が戻された場合のみコールでき、idxには、有効なフィールド・コレクション索引(1<=idx<=get_field_count())を指定する必要があります。

構文

MEMBER PROCEDURE get_field (
idx    IN    INTEGER )
RETURN SYS.MGW_TIBRV_FIELD_T;

パラメータ

表98-16 SYS.MGW_TIBRV_MSG_T GET_FIELDファンクションのパラメータ

パラメータ

説明

idx

取り出すフィールドのフィールド・コレクション索引(基数は1)の指定

注意:
基数=1のフィールド・コレクション索引は、ゼロ(0)ではなく1から始まります。

戻り値

フィールド情報を戻します。

GET_FIELD_BY_NAMEファンクション

指定されたフィールド名を持つ最初のフィールドに関するフィールド情報を取り出します。フィールド名の比較では大文字と小文字が区別されます。

構文

MEMBER PROCEDURE get_field_by_name (
name  IN   VARCHAR2 )
RETURN SYS.MGW_TIBRV_FIELD_T;

パラメータ

表98-17 SYS.MGW_TIBRV_MSG_T GET_FIELD_BY_NAMEファンクションのパラメータ

パラメータ

説明

name

検索するフィールド名を指定します。フィールド名を持たない最初のフィールドを取り出すには、NULLを指定します。

戻り値

フィールド情報を戻します。一致するフィールドが存在しない場合は、NULLを戻します。

GET_FIELD_BY_IDファンクション

指定されたフィールド識別子を持つ最初のフィールドに関するフィールド情報を取り出します。

フィールドの中には、一意のIDを持つフィールドとIDを持たないフィールドがあります。フィールド識別子の値がゼロ(0)またはNULLである場合、そのフィールドはフィールド識別子を持たないとみなされます。それ以外の場合、フィールド識別子は同じメッセージのすべてのフィールド間で一意の非ゼロ値です。

構文

MEMBER PROCEDURE get_field_by_id (
id   IN  INTEGER )
RETURN SYS.MGW_TIBRV_FIELD_T;

パラメータ

表98-18 SYS.MGW_TIBRV_MSG_T GET_FIELD_BY_IDファンクションのパラメータ

パラメータ

説明

id

検索するフィールド識別子を指定します。フィールド識別子を持たない最初のフィールドを取り出すには、ゼロ(0)またはNULLを指定します。

戻り値

フィールド情報を戻します。一致するフィールドが存在しない場合は、NULLを戻します。

FIND_FIELD_NAMEファンクション

指定されたフィールド名を持つフィールドを、指定されたフィールド・コレクション索引の位置から検索します。そのフィールドの索引を戻します。フィールド名の比較では大文字と小文字が区別されます。このファンクションは、同じ名前を持つすべてのフィールドを検索するときに便利です。

構文

MEMBER PROCEDURE find_field_name (
name      IN  VARCHAR2,
start_idx IN  INTEGER )
RETURN INTEGER;

パラメータ

表98-19 SYS.MGW_TIBRV_MSG_T FIND_FIELD_NAMEファンクションのパラメータ

パラメータ

説明

name

検索するフィールド名を指定します。フィールド名を持たない最初のフィールドを検索するには、NULLを指定します。

start_idx

検索を開始する位置のフィールド・コレクション索引(基数は1)を指定します。

戻り値

指定された条件に一致するフィールドが見つかった場合は、フィールド索引(>0の整数)を戻します。それ以外の場合は、ゼロ(0)を戻します。

FIND_FIELD_IDファンクション

指定されたフィールド識別子を持つフィールドを、指定されたフィールド・コレクション索引の位置から検索します。そのフィールドの索引を戻します。

構文

MEMBER PROCEDURE find_field_id (
id        IN  INTEGER,
start_idx IN INTEGER )
RETURN    INTEGER;

パラメータ

表98-20 SYS.MGW_TIBRV_MSG_T FIND_FIELD_IDファンクションのパラメータ

パラメータ

説明

id

検索するフィールド識別子を指定します。フィールド識別子を持たないフィールドを検索するには、ゼロ(0)またはNULLを指定します。

start_idx

検索を開始する位置のフィールド・コレクション索引(基数は1)を指定します。

戻り値

指定された条件に一致するフィールドが見つかった場合は、フィールド索引(>0の整数)を戻します。それ以外の場合は、ゼロ(0)を戻します。

DBMS_MGWMSGサブプログラムの要約

表98-21 DBMS_MGWMSGパッケージのサブプログラム

サブプログラム

説明

LCR_TO_XMLファンクション

行LCR(LCR$_ROW_RECORD)またはDDL LCR(LCR$_DDL_RECORD)をカプセル化しているSYS.ANYDATAオブジェクトを、SYS.XMLTYPEオブジェクトに変換します。

NVARRAY_ADDプロシージャ

名前/値の配列の終わりに名前/値の要素を追加します。

NVARRAY_FIND_NAMEファンクション

名前/値配列を検索し、p_nameに指定した名前を持つ要素を探します。

NVARRAY_FIND_NAME_TYPEファンクション

名前/値配列を検索し、指定した名前と値タイプを持つ要素を探します。

NVARRAY_GETファンクション

p_nameに指定した名前の名前/値の要素を名前/値配列から取得します。

NVARRAY_GET_BOOLEANファンクション

p_nameに指定した名前/値配列の要素で、BOOLEAN_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_BYTEファンクション

p_nameに指定した名前/値配列の要素で、BYTE_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_DATEファンクション

p_nameに指定した名前/値配列の要素で、DATE_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_DOUBLEファンクション

p_nameに指定した名前/値配列の要素で、DOUBLE_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_FLOATファンクション

p_nameに指定した名前/値配列の要素で、FLOAT_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_INTEGERファンクション

p_nameに指定した名前/値配列の要素で、INTEGER_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_LONGファンクション

p_nameに指定した名前/値配列の要素で、LONG_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_RAWファンクション

p_nameに指定した名前/値配列の要素で、RAW_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_SHORTファンクション

p_nameに指定した名前/値配列の要素で、SHORT_VALUE値タイプの要素の値を取得します。

NVARRAY_GET_TEXTファンクション

p_nameに指定した名前/値配列の要素で、TEXT_VALUE値タイプの要素の値を取得します。

XML_TO_LCRファンクション

行LCR(LCR$_ROW_RECORD)またはDDL LCR(LCR$_DDL_RECORD)をカプセル化しているSYS.XMLTYPEオブジェクトを、SYS.ANYDATAオブジェクトに変換します。

LCR_TO_XMLファンクション

このファンクションは、行LCR(論理変更レコード、ここではLCR$_ROW_RECORD)またはDDL LCR(LCR$_DDL_RECORD)をカプセル化しているSYS.ANYDATAオブジェクトを、SYS.XMLTYPEオブジェクトに変換します。

関連項目:
XML_TO_LCRファンクション

構文

DBMS_MGWMSG.LCR_TO_XML (
p_anydata IN SYS.ANYDATA )
RETURN SYS.XMLTYPE;

パラメータ

表98-22 LCR_TO_XMLファンクションのパラメータ

パラメータ

説明

p_anydata

変換するANYDATAオブジェクト

戻り値

SYS.XMLTYPEオブジェクトを戻します。

使用上の注意

カプセル化されたタイプp_anydataがLCRでない場合は、例外が発生します。

NVARRAY_ADDプロシージャ

このプロシージャは、名前/値の配列の終わりに名前/値の要素を追加します。

構文

DBMS_MGWMSG.NVARRAY_ADD (
p_array  IN OUT SYS.MGW_NAME_VALUE_ARRAY_T,
p_value  IN     SYS.MGW_NAME_VALUE_T );

パラメータ

表98-23 NVARRAY_ADDプロシージャのパラメータ

パラメータ

説明

p_array

入力時には、変更する名前/値配列インスタンスを指定します。NULLの場合は、新しい配列が作成されます。出力として、変更後の名前/値配列インスタンスが戻されます。

p_value

追加する値。NULLの場合、p_arrayは変更されません。

NVARRAY_FIND_NAMEファンクション

このファンクションは、名前/値配列を検索し、p_nameに指定した名前を持つ要素を探します。

構文

DBMS_MGWMSG.NVARRAY_FIND_NAME (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN BINARY_INTEGER;

パラメータ

表98-24 NVARRAY_FIND_NAMEファンクションのパラメータ

パラメータ

説明

p_array

検索する名前/値配列。

p_name

検索する名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

指定した名前に一致した要素の配列索引(正の整数)を戻します。指定した名前の要素が見つからない場合は、ゼロ(0)を戻します。

NVARRAY_FIND_NAME_TYPEファンクション

このファンクションは、名前/値配列を検索し、指定した名前と値タイプを持つ要素を探します。

構文

DBMS_MGWMSG.NVARRAY_FIND_NAME_TYPE (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_type     IN BINARY_INTEGER
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN BINARY_INTEGER;

パラメータ

表98-25 NVARRAY_FIND_NAME_TYPEファンクションのパラメータ

パラメータ

説明

p_array

検索する名前/値配列。

p_name

検索する名前。

p_type

値のタイプ。詳細は、表98-1に示されている値タイプの定数を参照してください。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

指定した条件に一致した要素の配列索引(正の整数)を戻します。指定した名前の要素が見つからない場合は、ゼロ(0)を戻します。指定した名前の要素が見つかっても、値のタイプが一致しない場合は-1を戻します。

NVARRAY_GETファンクション

このファンクションは、p_nameに指定した名前の名前/値の要素を名前/値配列から取得します。

構文

DBMS_MGWMSG.NVARRAY_GET (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN SYS.MGW_NAME_VALUE_T;

パラメータ

表98-26 NVARRAY_GETファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

指定した名前に一致した要素を戻します。指定した名前の要素が見つからない場合は、NULLを戻します。

NVARRAY_GET_BOOLEANファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、BOOLEAN_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_BOOLEAN (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN INTEGER;

パラメータ

表98-27 NVARRAY_GET_BOOLEANファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_BYTEファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、BYTE_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_BYTE (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN INTEGER;

パラメータ

表98-28 NVARRAY_GET_BYTEファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_DATEファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、DATE_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_DATE (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN DATE;

パラメータ

表98-29 NVARRAY_GET_DATEファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_DOUBLEファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、DOUBLE_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_DOUBLE (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN NUMBER;

パラメータ

表98-30 NVARRAY_GET_DOUBLEファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_FLOATファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、FLOAT_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_FLOAT (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN NUMBER;

パラメータ

表98-31 NVARRAY_GET_FLOATファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_INTEGERファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、INTEGER_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_INTEGER (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN INTEGER;

パラメータ

表98-32 NVARRAY_GET_INTEGERファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_LONGファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、LONG_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_LONG (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN NUMBER;

パラメータ

表98-33 NVARRAY_GET_LONGファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_RAWファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、RAW_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_RAW (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN RAW;

パラメータ

表98-34 NVARRAY_GET_RAWファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_SHORTファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、SHORT_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_SHORT (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN INTEGER;

パラメータ

表98-35 NVARRAY_GET_SHORTファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

NVARRAY_GET_TEXTファンクション

このファンクションは、p_nameに指定した名前/値配列の要素で、TEXT_VALUE値タイプの要素の値を取得します。

構文

DBMS_MGWMSG.NVARRAY_GET_TEXT (
p_array    IN SYS.MGW_NAME_VALUE_ARRAY_T,
p_name     IN VARCHAR2,
p_compare  IN BINARY_INTEGER DEFAULT CASE_SENSITIVE )
RETURN VARCHAR2;

パラメータ

表98-36 NVARRAY_GET_TEXTファンクションのパラメータ

パラメータ

説明

p_array

名前/値配列。

p_name

値の名前。

p_compare

名前の比較方法。値はCASE_SENSITIVEおよびCASE_INSENSITIVEです。

戻り値

条件に一致した値を戻します。指定した名前が見つからないか、タイプが一致しない場合は、NULLを戻します。

XML_TO_LCRファンクション

このファンクションは、行LCR(LCR$_ROW_RECORD)またはDDL LCR(LCR$_DDL_RECORD)をカプセル化しているSYS.XMLTYPEオブジェクトを、SYS.ANYDATAオブジェクトに変換します。

関連項目:
LCR_TO_XMLファンクション

構文

DBMS_MGWMSG.XML_TO_LCR (
p_xmldata IN SYS.XMLTYPE )
RETURN SYS.ANYDATA;

パラメータ

表98-37 XML_TO_LCRファンクションのパラメータ

パラメータ

説明

p_xmldata

LCRを表すXMLTYPEオブジェクト

戻り値

SYS.ANYDATAオブジェクトを戻します。

使用上の注意

p_xmldataをLCRに変換できない場合は、例外が発生します。

99 DBMS_MONITOR

DBMS_MONITORは、PL/SQLを使用して統計情報収集とSQLトレースを制御するためのパッケージです。

この章では、次の項目について説明します。

- DBMS_MONITORサブプログラムの要約

DBMS_MONITORサブプログラムの要約

表99-1 DBMS_MONITORパッケージのサブプログラム

サブプログラム

説明

CLIENT_ID_STAT_DISABLEプロシージャ

指定されたクライアント識別子に対して以前に有効にされた統計情報収集を無効にします。

CLIENT_ID_STAT_ENABLEプロシージャ

指定されたクライアント識別子に対する統計情報収集を有効にします。

CLIENT_ID_TRACE_DISABLEプロシージャ

指定されたクライアント識別子に対して以前に有効にされたトレースをデータベース全体で無効にします。

CLIENT_ID_TRACE_ENABLEプロシージャ

指定されたクライアント識別子に対するトレースをデータベース全体で有効にします。

DATABASE_TRACE_DISABLEプロシージャ

データベース全体または特定のインスタンスに対するSQLトレースを無効にします。

DATABASE_TRACE_ENABLEプロシージャ

データベース全体または特定のインスタンスに対するSQLトレースを有効にします。

SERV_MOD_ACT_STAT_DISABLEプロシージャ

サービス名、MODULEおよびACTIONの指定された組合せに対して有効にされた統計情報収集を無効にします。

SERV_MOD_ACT_STAT_ENABLEプロシージャ

サービス名、MODULEおよびACTIONの指定された組合せに対する統計情報収集を有効にします。

SERV_MOD_ACT_TRACE_DISABLEプロシージャ

サービス名、MODULEおよびACTION名の指定された組合せに対して有効にされたすべてのインスタンスに対するトレースを全体で無効にします。

SERV_MOD_ACT_TRACE_ENABLEプロシージャ

instance_nameが指定されていないかぎり、サービス名、MODULEおよびACTIONの指定された組合せに対するSQLトレースを全体で有効にします。

SESSION_TRACE_DISABLEプロシージャ

指定されたデータベース・セッション識別子(SID)に対して以前に有効にされたトレースをローカル・インスタンス上で無効にします。

SESSION_TRACE_ENABLEプロシージャ

指定されたデータベース・セッション識別子(SID)に対するトレースをローカル・インスタンス上で有効にします。

CLIENT_ID_STAT_DISABLEプロシージャ

このプロシージャは、CLIENT_ID_STAT_ENABLEプロシージャによって有効にされたすべてのインスタンスに対する統計情報収集を無効にして、収集済の統計情報をV$CLIENT_STATSビューから削除します。

構文

DBMS_MONITOR.CLIENT_ID_STAT_DISABLE(
client_id            IN   VARCHAR2);

パラメータ

表99-2 CLIENT_ID_STAT_DISABLEプロシージャのパラメータ

パラメータ

説明

client_id

統計情報収集が無効にされるクライアント識別子

例

指定したクライアント識別子に対する統計情報収集を無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.CLIENT_ID_STAT_DISABLE('janedoe');

CLIENT_ID_STAT_ENABLEプロシージャ

このプロシージャは、指定されたクライアント識別子に対する統計情報収集を有効にします。統計情報の収集はデータベース全体に対して実行され、インスタンスの起動や再起動を行っても中断されません。つまり、同じデータベースのすべてのインスタンス(再起動されたインスタンスを含む)に関する統計情報が収集されます。統計情報は、V$CLIENT_STATSビューを使用して参照できます。

構文

DBMS_MONITOR.CLIENT_ID_STAT_ENABLE(
client_id            IN   VARCHAR2);

パラメータ

表99-3 CLIENT_ID_STAT_ENABLEプロシージャのパラメータ

パラメータ

説明

client_id

統計情報収集が有効にされるクライアント識別子

例

指定したクライアント識別子を持つクライアントに関する統計情報収集を有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.CLIENT_ID_STAT_ENABLE('janedoe');

CLIENT_ID_TRACE_DISABLEプロシージャ

このプロシージャは、CLIENT_ID_TRACE_ENABLEプロシージャによって有効にされたトレースを無効にします。

構文

DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE(
client_id    IN  VARCHAR2);

パラメータ

表99-4 CLIENT_ID_TRACE_DISABLEプロシージャのパラメータ

パラメータ

説明

client_id

SQLトレースが無効にされるクライアント識別子

例

EXECUTE DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE ('janedoe');

CLIENT_ID_TRACE_ENABLEプロシージャ

このプロシージャは、指定されたクライアント識別子に対するトレースをデータベース全体で有効にします。

構文

DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE(
client_id    IN  VARCHAR2,
waits        IN  BOOLEAN DEFAULT TRUE,
binds        IN  BOOLEAN DEFAULT FALSE,
plan_stat    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表99-5 CLIENT_ID_TRACE_ENABLEプロシージャのパラメータ

パラメータ

説明

client_id

SQLトレースが有効にされるデータベース・セッション識別子。

waits

TRUEの場合、待機情報がトレースに存在します。

binds

TRUEの場合、バインド情報がトレースに存在します。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

使用上の注意

- 指定されたクライアント識別子のために複数のOracleシャドウ・プロセスが動作するため、トレース情報は複数のトレース・ファイルに書き込まれます。

- トレースはすべてのインスタンスに対して有効になり、インスタンスの再起動を行っても中断されません。

例

EXECUTE DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE('janedoe', TRUE,
FALSE);

DATABASE_TRACE_DISABLEプロシージャ

このプロシージャは、データベース全体または特定のインスタンスに対するSQLトレースを無効にします。

構文

DBMS_MONITOR.DATABASE_TRACE_DISABLE(
instance_name  IN VARCHAR2 DEFAULT NULL);

パラメータ

表99-6 DATABASE_TRACE_DISABLEプロシージャのパラメータ

パラメータ

説明

instance_name

指定したインスタンスに対するトレースを無効にします。

DATABASE_TRACE_ENABLEプロシージャ

このプロシージャは、データベース全体または特定のインスタンスに対するSQLトレースを有効にします。

構文

DBMS_MONITOR.DATABASE_TRACE_ENABLE(
waits          IN BOOLEAN DEFAULT TRUE,
binds          IN BOOLEAN DEFAULT FALSE,
instance_name  IN VARCHAR2 DEFAULT NULL,
plan_stat      IN VARCHAR2 DEFAULT NULL);

パラメータ

表99-7 DATABASE_TRACE_ENABLEプロシージャのパラメータ

パラメータ

説明

waits

TRUEの場合、待機情報がトレースに存在することになります。

binds

TRUEの場合、バインド情報がトレースに存在することになります。

instance_name

このパラメータにインスタンス名を指定すると、指定されたインスタンスに対するトレースのみが有効にされます。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

SERV_MOD_ACT_STAT_DISABLEプロシージャ

このプロシージャは、統計情報収集を無効にして、収集済の統計情報をV$SERV_MOD_ACT_STATSビューから削除します。統計情報収集の無効化はデータベース全体に適用されます。つまり、同じデータベースのインスタンス(統計情報収集の有効化によってアクティブになったdblinksを含む)に関する統計情報の収集が停止します。

構文

DBMS_MONITOR.SERV_MOD_ACT_STAT_DISABLE(
service_name    IN VARCHAR2,
module_name     IN VARCHAR2,
action_name     IN VARCHAR2 DEFAULT ALL_ACTIONS);

パラメータ

表99-8 SERV_MOD_ACT_STAT_DISABLEプロシージャのパラメータ

パラメータ

説明

service_name

統計情報収集が無効にされるサービスの名前。

module_name

モジュールの名前。サービスに対する追加の修飾子。このパラメータは省略できません。

action_name

アクションの名前。サービス名とモジュール名に対する追加の修飾子。このパラメータを省略するか、ALL_ACTIONS定数に設定すると、指定されたサービス名/モジュール名の組合せに一致するすべてのアクションに対する統計情報収集が有効になります。この場合、統計情報は、モジュール・レベルで収集されます。

使用上の注意

統計情報の収集に関して、モジュールまたはアクションを変更すると、セッションで実行される次のユーザー・コールがこの変更の影響を受けます。たとえば、モジュールがセッション内で'module 1'に設定されており、そのセッションのユーザー・コールで'module 2'にリセットされた場合、このモジュールは、ユーザー・コールの間'module 1'のままとなります。モジュールは、このセッションの次のユーザー・コールで'module 2'に変更されます。

SERV_MOD_ACT_STAT_ENABLEプロシージャ

このプロシージャは、サービス名、MODULEおよびACTIONの指定された組合せに対する統計情報収集を有効にします。このプロシージャをコールすると、同じデータベースのすべてのインスタンス上で、サービス名、MODULE名およびACTION名の階層的な組合せに対する統計情報収集が有効になります。統計情報は、V$SERV_MOD_ACT_STATSビューを使用して参照できます。

構文

DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(
service_name    IN VARCHAR2,
module_name     IN VARCHAR2,
action_name     IN VARCHAR2 DEFAULT ALL_ACTIONS);

パラメータ

表99-9 SERV_MOD_ACT_STAT_ENABLEプロシージャのパラメータ

パラメータ

説明

service_name

統計情報収集が有効にされるサービスの名前。

module_name

モジュールの名前。サービスに対する追加の修飾子。このパラメータは省略できません。

action_name

アクションの名前。サービス名とモジュール名に対する追加の修飾子。このパラメータを省略するか、ALL_ACTIONS定数に設定すると、指定されたサービス名/モジュール名の組合せに一致するすべてのアクションに対する統計情報収集が有効になります。この場合、統計情報は、モジュール・レベルで収集されます。

使用上の注意

モジュール名/アクション名にはNULLと区別できない空文字列を指定できるため、サービス名/モジュール名/アクション名の特定の組合せに対して統計収集を有効にする指定が若干複雑になります。そのため、次のような表記規則を採用しています。

次に示す特別な定数(実際のアクション名としては使用されないような名前)が定義されています。

ALL_ACTIONS constant VARCHAR2 := '###ALL_ACTIONS';

ALL_ACTIONSを使用してアクションを指定すると、特定のモジュール名を持つすべてのアクションに対して統計情報収集が有効になります。一方、NULL(または空文字列)を指定すると、名前が空文字列であるアクションに対して統計情報収集が有効になります。

統計情報の収集に関して、モジュールまたはアクションを変更すると、セッションで実行される次のユーザー・コールがこの変更の影響を受けます。たとえば、モジュールがセッション内で'module 1'に設定されており、そのセッションのユーザー・コールで'module 2'にリセットされた場合、このモジュールは、ユーザー・コールの間'module 1'のままとなります。モジュールは、このセッションの次のユーザー・コールで'module 2'に変更されます。

例

サービス名とMODULEの指定された組合せに対する統計情報収集を有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE( 'APPS1','PAYROLL');

サービス名とMODULEおよびACTIONの指定された組合せに対する統計情報収集を有効にするには、次のコマンドを実行します。

EXECUTE
DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE('APPS1','GLEDGER','DEBIT_ENTRY');

これら2つのコマンドを両方とも実行すると、次のような統計情報が収集されます。

- APPS1サービスに関する統計情報(両方のコマンドでサービス名が指定されているため)

- PAYROLLモジュール内のすべてのアクションに関する統計情報

- GLEDGERモジュール内のDEBIT_ENTRYアクションに関する統計情報

SERV_MOD_ACT_TRACE_DISABLEプロシージャ

このプロシージャは、サービス名、MODULEおよびACTION名の指定された組合せに対して有効にされたすべてのインスタンスに対するトレースを全体で無効にします。

構文

DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE(
service_name    IN  VARCHAR2,
module_name     IN  VARCHAR2,
action_name     IN  VARCHAR2 DEFAULT ALL_ACTIONS,
instance_name   IN  VARCHAR2 DEFAULT NULL);

パラメータ

表99-10 SERV_MOD_ACT_TRACE_DISABLEプロシージャのパラメータ

パラメータ

説明

service_name

トレースが無効にされるサービスの名前。

module_name

モジュールの名前。サービス名に対する追加の修飾子。

action_name

アクションの名前。サービス名とモジュール名に対する追加の修飾子。

instance_name

このパラメータにインスタンス名を指定すると、指定された名前を持つインスタンス(instance_name)に対するトレースに制限されます。

使用上の注意

module_nameパラメータにNULLを指定すると、MODULE属性が設定されないセッションに関する統計情報が収集されなくなります。

例

APPS1という名前のサービスに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1',
DBMS_MONITOR.ALL_MODULES,  DBMS_MONITOR.ALL_ACTIONS,TRUE,
FALSE,NULL);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE('APPS1');

サービスおよびMODULE (すべてのACTION)の指定された組合せに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1','PAYROLL',
DBMS_MONITOR.ALL_ACTIONS,TRUE,FALSE,NULL);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE('APPS1','PAYROLL');

SERV_MOD_ACT_TRACE_ENABLEプロシージャ

このプロシージャでは、instance_nameが指定されていないかぎり、サービス名、MODULEおよびACTIONの指定された組合せに対するSQLトレースを全体で有効にします。

構文

DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(
service_name    IN VARCHAR2,
module_name     IN VARCHAR2 DEFAULT ANY_MODULE,
action_name     IN VARCHAR2 DEFAULT ANY_ACTION,
waits           IN BOOLEAN DEFAULT TRUE,
binds           IN BOOLEAN DEFAULT FALSE,
instance_name   IN VARCHAR2 DEFAULT NULL,
plan_stat       IN VARCHAR2 DEFAULT NULL);

パラメータ

表99-11 SERV_MOD_ACT_TRACE_ENABLEプロシージャのパラメータ

パラメータ

説明

service_name

SQLトレースが有効にされるサービス名。

module_name

SQLトレースが有効にされるMODULEの名前。サービス名に対する追加の修飾子(オプション)。省略すると、特定のサービス内のすべてのモジュールおよびアクションに対してSQLトレースが有効になります。

action_name

SQLトレースが有効にされるACTIONの名前。サービスとMODULE名に対する追加の修飾子(オプション)。省略すると、特定のモジュール内のすべてのアクションに対してSQLトレースが有効になります。

waits

TRUEの場合、待機情報がトレースに存在します。

binds

TRUEの場合、バインド情報がトレースに存在します。

instance_name

このパラメータにインスタンス名を指定すると、指定された名前を持つインスタンス(instance_name)に対するトレースに制限されます。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

使用上の注意

- このプロシージャは、サービス、MODULEおよびACTION名の指定された組合せに対するトレースを有効にします。指定は完全に階層的であり、「サービス名」、「サービス名とMODULE」、「サービス名、MODULE、およびACTION名」を指定する必要があります。修飾子を省略すると、ワイルドカードを使用した場合と同様に動作するため、ACTIONを省略すると、すべてのACTIONを指定した場合と同じになります。ALL_ACTIONS定数も同じ目的に使用できます。

- このトレースは、アプリケーションのMODULEまたは特定のACTIONに対するサービス・レベルが低い場合に効果的です。

- デフォルトでは、データベース全体に対してトレースが実行されます。instance_nameパラメータを使用すると、トレースの対象を名前が付けられている既知のインスタンス(たとえば、低いサービス・レベルを示すことが判明しているインスタンスなど)に限定できます。

- トレース情報は複数のトレース・ファイルに書き込まれるため、trcsessツールを使用してトレース情報を単一のファイルにまとめる必要があります。

- module_nameパラメータにNULLを指定すると、MODULE属性が設定されないセッションに関する統計情報が収集されるようになります。

例

APPS1という名前のサービスに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1',
DBMS_MONITOR.ALL_MODULES,  DBMS_MONITOR.ALL_ACTIONS,TRUE,
FALSE,NULL);

サービスおよびMODULE (すべてのACTION)の指定された組合せに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1','PAYROLL',
DBMS_MONITOR.ALL_ACTIONS,TRUE,FALSE,NULL);

SESSION_TRACE_DISABLEプロシージャ

このプロシージャは、指定されたデータベース・セッションに対するトレースをローカル・インスタンス上で無効にします。

構文

DBMS_MONITOR.SESSION_TRACE_DISABLE(
session_id      IN     BINARY_INTEGER DEFAULT NULL,
serial_num      IN     BINARY_INTEGER DEFAULT NULL);

パラメータ

表99-12 SESSION_TRACE_DISABLEプロシージャのパラメータ

パラメータ

説明

session_id

SQLトレースが無効にされるデータベース・セッション識別子。

serial_num

現行のデータベース・セッションのシリアル番号。

使用上の注意

serial_numがNULLで、session_idが指定されている場合は、セッションのシリアル番号に関係なく、指定されたsession_idを持つセッションがトレースされなくなります。session_idとserial_numが両方ともNULLの場合は、現行ユーザーのセッションはトレースされなくなります。session_idにNULLを指定し、serial_numにNULL以外を指定することはできません。また、NULL値はデフォルトであり、省略できます。

例

指定したクライアントのセッション識別子を持つクライアント・セッションに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(7,4634, TRUE, FALSE);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE(7,4634);;

SESSION_TRACE_ENABLEプロシージャ

このプロシージャは、指定されたデータベース・セッションIDに対するSQLトレースをローカル・インスタンス上で有効にします。

構文

DBMS_MONITOR.SESSION_TRACE_ENABLE(
session_id   IN  BINARY_INTEGER DEFAULT NULL,
serial_num   IN  BINARY_INTEGER DEFAULT NULL,
waits        IN  BOOLEAN DEFAULT TRUE,
binds        IN  BOOLEAN DEFAULT FALSE,
plan_stat    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表99-13 SESSION_TRACE_ENABLEプロシージャのパラメータ

パラメータ

説明

session_id

SQLトレースが有効にされるクライアント識別子。省略する(またはNULLの)場合は、ユーザー自身のセッションが想定されます。

serial_num

現行のデータベース・セッションのシリアル番号。省略する(またはNULLの)場合は、セッションIDのみを使用してセッションが決定されます。

waits

TRUEの場合、待機情報がトレースに存在します。

binds

TRUEの場合、バインド情報がトレースに存在します。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

使用上の注意

このプロシージャは、指定されたデータベース・セッションに対するトレースを有効にし、クライアント/サーバー・アプリケーションでも使用できます。データベース・セッションは複数のインスタンスに及ばないため、トレースはコール元が接続されているインスタンス上のみで有効になります。このトレースはローカル・インスタンス上のみで実行されます。

serial_numがNULLで、session_idが指定されている場合は、セッションのシリアル番号に関係なく、指定されたsession_idを持つセッションがトレースされます。session_idとserial_numが両方ともNULLの場合は、現行ユーザーのセッションがトレースされます。session_idにNULLを指定し、serial_numにNULL以外を指定することはできません。また、NULL値はデフォルトであり、省略できます。

例

指定したクライアントのセッション識別子を持つクライアント・セッションに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(7,4634, TRUE, FALSE);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE(7,4634);

次のいずれかのコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(5);

または

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(5, NULL);

セッションID 5でセッションがトレースされます。同時に、次のいずれかのコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE();

または

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(NULL, NULL);

現行のユーザー・セッションがトレースされます。また、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(NULL, NULL, TRUE, TRUE);

待機情報とバインド情報を収集しながら現行のユーザー・セッションがトレースされます。また、同じトレースを、キーワード構文を使用して次のようにも実行できます。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(binds=>TRUE);

100 DBMS_MVIEW

DBMS_MVIEWを使用すると、リライトの可用性の他、マテリアライズド・ビューおよび潜在的なマテリアライズド・ビューの機能を理解できます。また、同じリフレッシュ・グループおよびパージ・ログの一部ではないマテリアライズド・ビューをリフレッシュできます。

注意:
DBMS_MVIEWはDBMS_SNAPSHOTのシノニムです。

関連項目:

- レプリケーション環境におけるマテリアライズド・ビューの使用方法の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- データ・ウェアハウス環境におけるマテリアライズド・ビューの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_MVIEWの使用方法

- 使用上の注意

- セキュリティ・モデル

- ルールおよび制限

- DBMS_MVIEWサブプログラムの要約

DBMS_MVIEWの使用方法

この項では、DBMS_MVIEWパッケージの使用に関連する項目について説明します。

- 使用上の注意

- セキュリティ・モデル

- ルールおよび制限

使用上の注意

問合せが256文字未満の場合は、SQL*PlusからEXECUTEコマンドを使用してEXPLAIN_REWRITEを起動できます。それ以外の場合は、/rdbms/demo/smxrw.sqlの例に示されているように、PL/SQLのBEGIN..ENDブロックを使用する方法をお薦めします。

セキュリティ・モデル

DBMS_MVIEWパッケージは、マテリアライズド・ビュー関連の複数のサブプログラムで構成され、その各サブプログラムには異なる機能要件と権限要件があります。権限モデルは、一般的に実行者権限に基づきます。パッケージの各サブプログラムを実行すると、最初に実行者の権限がチェックされます。必要な権限がすべて付与されている場合、サブプログラムは実行されます。それ以外の場合、権限不足エラーがスローされます。

ルールおよび制限

EXPLAIN_REWRITEプロシージャには、32627文字を超える問合せを受け入れられません。これらの制限は、マテリアライズド・ビューの定義問合せをEXPLAIN_MVIEWプロシージャに渡すときにも適用されます。

DBMS_MVIEWサブプログラムの要約

表100-1 DBMS_MVIEWパッケージのサブプログラム

サブプログラム

説明

BEGIN_TABLE_REORGANIZATIONプロシージャ

リフレッシュに必要なマテリアライズド・ビュー・データを保存するプロセスを実行します。

END_TABLE_REORGANIZATIONプロシージャ

マスター表のマテリアライズド・ビュー・データが有効であり、マスター表が適切な状態であることを確認します。

ESTIMATE_MVIEW_SIZEプロシージャ

作成するマテリアライズド・ビューのサイズを、バイトと行で見積もります。

EXPLAIN_MVIEWプロシージャ

マテリアライズド・ビューまたは潜在的なマテリアライズド・ビューを使用して実行できる事項を説明します。

EXPLAIN_REWRITEプロシージャ

クエリー・リライトが失敗した理由、または特定のマテリアライズド・ビュー(複数も可)を使用してオプティマイザがクエリー・リライトを実行した理由を説明します。

I_AM_A_REFRESHファンクション

I_AM_REFRESHパッケージの状態の値を戻します。

PMARKERファンクション

ROWIDからパーティション・マーカーを戻します。戻り値は、パーティション・チェンジ・トラッキング(PCT)で使用されます。

PURGE_DIRECT_LOAD_LOGプロシージャ

マテリアライズド・ビューで行が不要になると、ダイレクト・ローダー・ログからその行をパージします(データ・ウェアハウスで使用)。

PURGE_LOGプロシージャ

マテリアライズド・ビュー・ログから行をパージします。

PURGE_MVIEW_FROM_LOGプロシージャ

マテリアライズド・ビュー・ログから行をパージします。

REFRESHプロシージャ

同じリフレッシュ・グループのメンバーではない1つ以上のマテリアライズド・ビューをリフレッシュします。

REFRESH_ALL_MVIEWSプロシージャ

マスター表またはマスター・マテリアライズド・ビューに変更を反映していないマテリアライズド・ビューをすべてリフレッシュします。

REFRESH_DEPENDENTプロシージャ

指定したマスター表またはマスター・マテリアライズド・ビューに依存する表ベースのマテリアライズド・ビュー、またはマスター表またはマスター・マテリアライズド・ビューをリフレッシュします。

REGISTER_MVIEWプロシージャ

個々のマテリアライズド・ビューの管理を可能にします。

UNREGISTER_MVIEWプロシージャ

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで起動された個々のマテリアライズド・ビューを管理できるようにして、マテリアライズド・ビューの登録を解除します。

BEGIN_TABLE_REORGANIZATIONプロシージャ

このプロシージャは、リフレッシュに必要なマテリアライズド・ビュー・データを保存するプロセスを実行します。このプロシージャは、マスター表の再編成前にコールする必要があります。

構文

DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION (
tabowner    IN   VARCHAR2,
tabname     IN   VARCHAR2);

パラメータ

表100-2 BEGIN_TABLE_REORGANIZATIONプロシージャのパラメータ

パラメータ

説明

tabowner

再編成する表の所有者。

tabname

再編成する表の名前。

END_TABLE_REORGANIZATIONプロシージャ

このプロシージャは、マスター表のマテリアライズド・ビュー・データが有効であり、マスター表が適切な状態であることを確認します。このプロシージャは、マスター表の再編成後にコールする必要があります。

構文

DBMS_MVIEW.END_TABLE_REORGANIZATION (
tabowner    IN   VARCHAR2,
tabname     IN   VARCHAR2);

パラメータ

表100-3 END_TABLE_REORGANIZATIONプロシージャのパラメータ

パラメータ

説明

tabowner

再編成する表の所有者。

tabname

再編成する表の名前。

ESTIMATE_MVIEW_SIZEプロシージャ

このプロシージャでは、作成するマテリアライズド・ビューのサイズをバイトおよび行数で見積もります。

構文

DBMS_MVIEW.ESTIMATE_MVIEW_SIZE (
stmt_id       IN  VARCHAR2,
select_clause IN  VARCHAR2,
num_rows      OUT NUMBER,
num_bytes     OUT NUMBER);

パラメータ

表100-4 ESTIMATE_MVIEW_SIZEプロシージャのパラメータ

パラメータ

説明

stmt_id

EXPLAIN PLANで文を識別するために使用する任意の文字列。

select_clause

分析用のSELECT文。

num_rows

推測カーディナリティ。

num_bytes

推測バイト数。

EXPLAIN_MVIEWプロシージャ

このプロシージャは、マテリアライズド・ビューまたは潜在的なマテリアライズド・ビューを使用して実行できる事項を説明します。たとえば、マテリアライズド・ビューが高速リフレッシュ可能であるかどうか、また、特定のマテリアライズド・ビューを使用して実行できるクエリー・リライトのタイプなどを判別します。

このプロシージャの使用方法は簡単です。DBMS_MVIEW.EXPLAIN_MVIEWをコールし、既存のマテリアライズド・ビューにパラメータとしてスキーマとマテリアライズド・ビュー名を渡します。または、潜在的なマテリアライズド・ビューに、SELECT文字列またはCREATE MATERIALIZED VIEW文を指定できます。マテリアライズド・ビューまたは作成前のマテリアライズド・ビューが分析され、結果がデフォルトの表MV_CAPABILITIES_TABLEまたは配列MSG_ARRAYに書き込まれます。

このプロシージャはオーバーロードされています。

- 最初のバージョンは、既存または潜在的なマテリアライズド・ビューを分析するもので、分析結果はMV_CAPABILITIES_TABLEに出力されます。

- 2番目のバージョンは、既存または潜在的なマテリアライズド・ビューを分析するもので、分析結果はVARRAYに出力されます。

構文

DBMS_MVIEW.EXPLAIN_MVIEW (
mv            IN VARCHAR2,
statement_id  IN VARCHAR2:= NULL);

DBMS_MVIEW.EXPLAIN_MVIEW (
mv          IN VARCHAR2,
msg_array   OUT SYS.ExplainMVArrayType);

パラメータ

表100-5 EXPLAIN_MVIEWプロシージャのパラメータ

パラメータ

説明

mv

既存のマテリアライズド・ビューの名前(オプションにより"."(ピリオド)で区切られた所有者の名前で修飾可能)、あるいは潜在的なマテリアライズド・ビューのSELECT文またはCREATE MATERIALIZED VIEW文。

statement_id

クライアントが提供する一意の識別子。出力行を特定のEXPLAIN_MVIEWの起動と関連付けます。

msg_array

出力を受け取るPL/SQL VARRAY。このパラメータを使用して、MV_CAPABILITIES_TABLEではなくEXPLAIN_MVIEWの出力をPL/SQL VARRAYに送ります。

使用上の注意

VARRAYに出力を送る場合を除き、EXPLAIN_MVIEWをコールする前にutlxmv.sqlスクリプトを実行して、現行スキーマ内にMV_CAPABILITIES_TABLEを作成する必要があります。このスクリプトは、ADMINディレクトリにあります。

EXPLAIN_REWRITEプロシージャ

このプロシージャを使用すると、クエリー・リライトに失敗した理由や、リライトした場合は使用されるマテリアライズド・ビューを確認できます。プロシージャから得た結果を使用することで、クエリー・リライトに必要な適切なアクションを可能なかぎり実行できます。EXPLAIN_REWRITE文で指定された問合せが、実際に実行されることはありません。

デモ・ファイルxrwutl.sqlを使用すると、EXPLAIN_REWRITEからの出力をフォーマットできます。

構文

DBMS_MVIEW.EXPLAIN_REWRITEからの出力を取得するには、2つの方法があります。1つは表を使用する方法、もう1つはVARRAYを作成する方法です。出力表を使用するための基本構文は、次のとおりです。

DBMS_MVIEW.EXPLAIN_REWRITE (
query           VARCHAR2,
mv              VARCHAR2(30),
statement_id    VARCHAR2(30));

utlxrw.sqlスクリプトを実行して、REWRITE_TABLEという名前の出力表を作成できます。

queryパラメータはSQL問合せを表すテキスト文字列です。パラメータmvは、schema.mvという形式の完全修飾マテリアライズド・ビュー名です。このパラメータはオプションです。指定されていない場合、EXPLAIN_REWRITEは、目的の問合せのリライトに必要なすべてのマテリアライズド・ビューに関するメッセージを戻します。スキーマが省略され、mvのみが指定されている場合、EXPLAIN_REWRITEは、現行のスキーマのマテリアライズド・ビューを検索します。

EXPLAIN_REWRITEの出力を表ではなくVARRAYに送る場合は、プロシージャを次のようにコールする必要があります。

DBMS_MVIEW.EXPLAIN_REWRITE (
query           [VARCHAR2 | CLOB],
mv               VARCHAR2(30),
output_array     SYS.RewriteArrayType);

問合せが256文字未満の場合は、SQL*PlusからEXECUTEコマンドを使用して簡単にEXPLAIN_REWRITEを起動できます。それ以外の場合は、/rdbms/demo/smxrw*の例に示されているように、PL/SQLのBEGIN... ENDブロックを使用する方法をお薦めします。

また、複数のマテリアライズド・ビューでEXPLAIN_REWRITEを使用することもできますが、この場合、構文は、マテリアライズド・ビューがカンマ区切り文字列で指定される点を除き、単一のマテリアライズド・ビューで使用される場合と同じです。たとえば、マテリアライズド・ビューの特定のセットmv1、mv2およびmv3を問合せquery_txtのリライトに使用できるかどうかを判断し、使用できない場合にその原因を調べるには、次のようにEXPLAIN_REWRITEを使用します。

DBMS_MVIEW.EXPLAIN_REWRITE(query_txt, 'mv1, mv2, mv3')

EXPLAIN_REWRITEプロシージャの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

パラメータ

表100-6 EXPLAIN_REWRITEプロシージャのパラメータ

パラメータ

説明

query

分析するSQLのSELECT文。

mv

既存のマテリアライズド・ビューの完全修飾名(SCHEMA.MVという形式の名前)。複数のマテリアライズド・ビューの場合は、カンマで区切られた名前のリストを指定できます。

statement_id

出力メッセージを区別するためにクライアントが提供する一意の識別子。

msg_array

出力を受け取るPL/SQL VARRAY。このパラメータを使用して、EXPLAIN_REWRITEの出力をPL/SQL VARRAYに送ります。

使用上の注意

出力を表に取得するには、EXPLAIN_REWRITEをコールする前にutlxrw.sqlスクリプトを実行する必要があります。このスクリプトは、現行のスキーマにREWRITE_TABLEという名前の表を作成します。

I_AM_A_REFRESHファンクション

このファンクションは、I_AM_REFRESHパッケージの状態の値を戻します。

構文

DBMS_MVIEW.I_AM_A_REFRESH
RETURN BOOLEAN;

戻り値

戻り値がTRUEの場合は、各レプリケーション・トリガーが最初にこの状態をチェックするため、このセッションではマテリアライズド・ビューのすべてのローカル・レプリケーション・トリガーが完全に使用禁止になります。戻り値がFALSEの場合は、そのトリガーを使用できます。

PMARKERファンクション

このファンクションは、ROWIDからパーティション・マーカーを戻します。パーティション・チェンジ・トラッキング(PCT)に使用されます。

構文

DBMS_MVIEW.PMARKER(
rid IN ROWID)
RETURN NUMBER;

パラメータ

表100-7 PMARKERファンクションのパラメータ

パラメータ

説明

rid

マスター表における行エントリのROWID。

PURGE_DIRECT_LOAD_LOGプロシージャ

このプロシージャは、既知のマテリアライズド・ビューでエントリが不要になると、ダイレクト・ローダー・ログからそのエントリを削除します。このプロシージャは通常、Oracleのデータ・ウェアハウス・テクノロジを使用する環境で使用されます。

関連項目:
詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

構文

DBMS_MVIEW.PURGE_DIRECT_LOAD_LOG();

PURGE_LOGプロシージャ

このプロシージャは、マテリアライズド・ビュー・ログから行をパージします。

構文

DBMS_MVIEW.PURGE_LOG (
master        IN   VARCHAR2,
num           IN   BINARY_INTEGER := 1,
flag          IN   VARCHAR2       := 'NOP');

パラメータ

表100-8 PURGE_LOGプロシージャのパラメータ

パラメータ

説明

master

マスター表またはマスター・マテリアライズド・ビューの名前。

num

マテリアライズド・ビュー・ログから削除する行の中で、リフレッシュ日付が最も古いマテリアライズド・ビューの数。たとえば、次の文は、リフレッシュ日付が最も古い2つのマテリアライズド・ビューをリフレッシュするために必要な行を削除します。

DBMS_MVIEW.PURGE_LOG('master_table', 2);

マテリアライズド・ビュー・ログにあるすべての行を削除するには、次の例のように、削除するマテリアライズド・ビューについて大きい数を指定します。

DBMS_MVIEW.PURGE_LOG('master_table',9999);

この文は、master_tableに基づくマテリアライズド・ビューの数が9999未満の場合、master_tableに対応するマテリアライズド・ビュー・ログを完全にパージします。行がマテリアライズド・ビューからすでにパージされている単純マテリアライズド・ビューは、次回リフレッシュ時に完全にリフレッシュする必要があります。

flag

deleteを指定して、少なくとも1つのマテリアライズド・ビューに対し、マテリアライズド・ビューから行を削除することを保証します。このパラメータは、パラメータnumの設定を上書きできます。たとえば、次の文は、リフレッシュ日付が最も古いマテリアライズド・ビューに従属行を持つマテリアライズド・ビュー・ログから行を削除します。

DBMS_MVIEW.PURGE_LOG('master_table',1,'delete');

PURGE_MVIEW_FROM_LOGプロシージャ

このプロシージャは、マテリアライズド・ビューのリフレッシュに関連したデータ・ディクショナリ表にある行を削除するためにマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでコールされますが、この表は、mview_idまたはmviewowner、mviewnameおよびmviewsiteの組合せで識別される指定マテリアライズド・ビューについて、マスター・サイトでメンテナンスされている表です。指定したマテリアライズド・ビューが、任意のマスター表からリフレッシュされた最も古いマテリアライズド・ビューの場合、またはマスター・マテリアライズド・ビューの場合は、そのマテリアライズド・ビュー・ログもパージされます。このプロシージャは、マテリアライズド・ビューの登録解除は行いません。

構文

DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mview_id       IN   BINARY_INTEGER);

DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner     IN   VARCHAR2,
mviewname      IN   VARCHAR2,
mviewsite      IN   VARCHAR2);

注意:
このプロシージャはオーバーロードされています。mview_idパラメータには、同時に指定できないパラメータが3つあり、それらのパラメータは、mviewowner、mviewnameおよびmviewsiteです。

パラメータ

表100-9 PURGE_MVIEW_FROM_LOGプロシージャのパラメータ

パラメータ

説明

mview_id

ターゲット・マテリアライズド・ビューの識別に基づいてこのプロシージャを実行するには、mview_idパラメータを使用してマテリアライズド・ビューの識別を指定します。マテリアライズド・ビュー・ログ・サイトで、マテリアライズド・ビューIDのリスト表示についてDBA_BASE_TABLE_MVIEWSビューを問い合せます。

登録済マテリアライズド・ビューのリスト(DBA_REGISTERED_MVIEWS)にターゲット・マテリアライズド・ビューがない場合は、マテリアライズド・ビューIDに基づいてこのプロシージャを実行すると便利です。

mviewowner

mview_idを指定しない場合は、mviewownerパラメータを使用してターゲット・マテリアライズド・ビューの所有者を入力します。マテリアライズド・ビュー・ログ・サイトでDBA_REGISTERED_MVIEWSビューを問い合せて、マテリアライズド・ビューの所有者を表示します。

mviewname

mview_idを指定しない場合は、mviewnameパラメータを使用してターゲット・マテリアライズド・ビューの名前を入力します。マテリアライズド・ビュー・ログ・サイトでDBA_REGISTERED_MVIEWSビューを問い合せて、マテリアライズド・ビューの名前を表示します。

mviewsite

mview_idを指定しない場合は、mviewsiteパラメータを使用してターゲット・マテリアライズド・ビューのサイトを入力します。マテリアライズド・ビュー・ログ・サイトでDBA_REGISTERED_MVIEWSビューを問い合せて、マテリアライズド・ビュー・サイトを表示します。

使用上の注意

マテリアライズド・ビュー・ログの1つをパージしている間にエラーが発生した場合、それ以前に正常終了したマテリアライズド・ビュー・ログのパージ処理はロールバックされません。これは、マテリアライズド・ビュー・ログのサイズを最小限にするためです。このプロシージャは、エラーが発生した場合でも、すべてのマテリアライズド・ビュー・ログがパージされるまで再起動できます。

REFRESHプロシージャ

このプロシージャは、マテリアライズド・ビューのリストをリフレッシュします。

構文

DBMS_MVIEW.REFRESH (
{ list                 IN     VARCHAR2,
| tab                  IN     DBMS_UTILITY.UNCL_ARRAY,}
method                 IN     VARCHAR2       := NULL,
rollback_seg           IN     VARCHAR2       := NULL,
push_deferred_rpc      IN     BOOLEAN        := true,
refresh_after_errors   IN     BOOLEAN        := false,
purge_option           IN     BINARY_INTEGER := 1,
parallelism            IN     BINARY_INTEGER := 0,
heap_size              IN     BINARY_INTEGER := 0,
atomic_refresh         IN     BOOLEAN        := true,
nested                 IN     BOOLEAN        := false,
out_of_place           IN     BOOLEAN        := false);

注意:
このプロシージャはオーバーロードされています。listパラメータとtabパラメータは、両方同時には指定できません。

パラメータ

表100-10 REFRESHプロシージャのパラメータ

パラメータ

説明

list | tab

リフレッシュするマテリアライズド・ビューの、カンマ区切りのリストです。(シノニムはサポートされていません。)これらのマテリアライズド・ビューは、異なるスキーマに置くことができ、また異なるマスター表またはマスター・マテリアライズド・ビューを持つことができます。ただし、リストされているすべてのマテリアライズド・ビューが、ローカル・データベースに存在している必要があります。

他の方法として、DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL索引付き表を渡せます。この場合、各要素がマテリアライズド・ビューの名前です。

method

リストされているマテリアライズド・ビューのリフレッシュ方法を示す文字列。fは高速リフレッシュ、?は強制リフレッシュ、Cまたはcは完全リフレッシュ、Aまたはaは常にリフレッシュを示します。AおよびCは同等です。Pまたはpは、マテリアライズド・ビュー内の行のうち、ディテール表内で変更されたパーティションによって影響を受ける行を再計算することによるリフレッシュを示します。

マテリアライズド・ビューに対応するリフレッシュ方法がない場合(つまり、リフレッシュ方法より多くのマテリアライズド・ビューが指定された場合)、そのマテリアライズド・ビューはデフォルトのリフレッシュ方法に従ってリフレッシュされます。たとえば、SQL*Plus内の次のEXECUTE文を実行します。

DBMS_MVIEW.REFRESH
('countries_mv,regions_mv,hr.employees_mv','cf');

この文は、countries_mvマテリアライズド・ビューの完全なリフレッシュ、regions_mvマテリアライズド・ビューの高速リフレッシュおよびhr.employeesマテリアライズド・ビューのデフォルトのリフレッシュを実行します。

rollback_seg

マテリアライズド・ビューのリフレッシュ中に使用する、マテリアライズド・ビュー・サイトのロールバック・セグメント名。

push_deferred_rpc

更新可能なマテリアライズド・ビューでのみ使用します。マテリアライズド・ビューをリフレッシュする前に、マテリアライズド・ビューから関連するマスター表またはマスター・マテリアライズド・ビューに変更を送信する場合、このパラメータをTRUEに設定します。そうでない場合は、変更が一時的に失われたように表示される場合があります。

refresh_after_errors

このパラメータをTRUEに設定すると、マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに未解決の競合が記録されていても、更新可能なマテリアライズド・ビューのリフレッシュは続行します。このパラメータがtrueで、atomic_refreshがfalseの場合、このプロシージャは、マテリアライズド・ビューのリフレッシュに失敗しても他のマテリアライズド・ビューのリフレッシュを続行します。

purge_option

パラレル伝播メカニズムを使用する場合(つまり、パラレル化に1以上を設定)、0はパージなし、1はレイジー・パージ、2はアグレッシブ・パージになります。ほとんどの場合、レイジー・パージが最適な設定です。複数のマスター・レプリケーション・グループが別々のターゲット・サイトに送信され、1つ以上のレプリケーション・グループへの更新や送信がまれな場合は、アグレッシブ・パージに設定してキューを減らします。すべてのレプリケーション・グループへの更新と送信がまれな場合は、このパラメータを0に設定し、キューを減らすためにこのパラメータを2に設定して時々PUSHを実行してください。

parallelism

0(ゼロ)はシリアル伝播を指定します。

n > 1はnのパラレル処理を使用するパラレル伝播を指定します。

1は単一のパラレル処理を使用するパラレル伝播を指定します。

heap_size

パラレル伝播スケジューリングで同時に検査されるトランザクションの最大数。最適なパフォーマンスのためのデフォルト設定はOracleが自動的に計算します。

注意: Oracleサポート・サービスから指示がないかぎり、このパラメータは設定しないでください。

atomic_refresh

このパラメータをTRUEに設定すると、マテリアライズド・ビューのリストは単一のトランザクションでリフレッシュされます。リフレッシュされたすべてのマテリアライズド・ビューは、単一のポイントへ同時に更新されます。マテリアライズド・ビューのいずれかでリフレッシュに失敗すると、すべてのマテリアライズド・ビューが更新されません。

このパラメータがfalseに設定されている場合、個別のトランザクション内で、各マテリアライズド・ビューの非アトミック・リフレッシュが実行されます。

完全リフレッシュの一環として、切捨てが使用されると(アトミック以外のリフレッシュ)、一意索引の再作成が実行されます。INDEX REBUILDによって統計情報が自動的に計算されます。そのため、切り捨てられた表では統計情報が更新されます。

nested

このパラメータをTRUEに設定すると、指定したマテリアライズド・ビューのセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定したマテリアライズド・ビューのセットと、すべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表の観点から完全に更新されます。

out_of_place

trueの場合、アウトオブプレース・リフレッシュが実行されます。デフォルトはfalseです。

このパラメータは、4つのリフレッシュ方法(F、P、C、?)を使用します。このため、たとえばFとout_of_place = trueを指定した場合、アウトオブプレース高速リフレッシュが試行されます。同様に、Pとout_of_place = trueを指定した場合、アウトオブプレースPCTリフレッシュが試行されます。

REFRESH_ALL_MVIEWSプロシージャ

このプロシージャは、次のプロパティを持つすべてのマテリアライズド・ビューをリフレッシュします。

- マテリアライズド・ビューが依存するマスター表またはマスター・マテリアライズド・ビューに対する最も新しい変更が行われてから、マテリアライズド・ビューがリフレッシュされていない場合。

- マテリアライズド・ビューおよびそれが依存しているすべてのマスター表またはマスター・マテリアライズド・ビューがローカルな場合。

- マテリアライズド・ビューがDBA_MVIEWSビューにある場合。

これは、データ・ウェアハウスで使用するためのプロシージャです。

構文

DBMS_MVIEW.REFRESH_ALL_MVIEWS (
number_of_failures     OUT   BINARY_INTEGER,
method                 IN    VARCHAR2         := NULL,
rollback_seg           IN    VARCHAR2         := NULL,
refresh_after_errors   IN    BOOLEAN          := false,
atomic_refresh         IN    BOOLEAN          := true,
out_of_place           IN    BOOLEAN          := false);

パラメータ

表100-11 REFRESH_ALL_MVIEWSプロシージャのパラメータ

パラメータ

説明

number_of_failures

処理中に発生した失敗の件数を戻します。

method

リフレッシュされる各マテリアライズド・ビューに対して実行するリフレッシュのタイプを示す単一のリフレッシュ方法。Fまたはfは高速リフレッシュ、?は強制リフレッシュ、Cまたはcは完全リフレッシュ、Aまたはaは常にリフレッシュを示します。AおよびCは同等です。方法が指定されていない場合、マテリアライズド・ビューはデフォルトのリフレッシュ方法に従ってリフレッシュされます。Pまたはpは、マテリアライズド・ビュー内の行のうち、ディテール表内で変更されたパーティションによって影響を受ける行を再計算することによるリフレッシュを示します。

rollback_seg

マテリアライズド・ビューのリフレッシュ中に使用する、マテリアライズド・ビュー・サイトのロールバック・セグメント名。

refresh_after_errors

このパラメータをTRUEに設定すると、マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに未解決の競合が記録されていても、更新可能なマテリアライズド・ビューのリフレッシュは続行します。このパラメータがtrueで、atomic_refreshがfalseの場合、このプロシージャは、マテリアライズド・ビューのリフレッシュに失敗しても他のマテリアライズド・ビューのリフレッシュを続行します。

atomic_refresh

このパラメータをTRUEに設定すると、リフレッシュされたマテリアライズド・ビューは単一のトランザクションでリフレッシュされます。リフレッシュされたすべてのマテリアライズド・ビューは、単一のポイントへ同時に更新されます。マテリアライズド・ビューのいずれかでリフレッシュに失敗すると、すべてのマテリアライズド・ビューが更新されません。

このパラメータがfalseに設定されている場合、個別のトランザクション内で、各マテリアライズド・ビューの非アトミック・リフレッシュが実行されます。

out_of_place

trueの場合、アウトオブプレース・リフレッシュが実行されます。デフォルトはfalseです。

このパラメータは、4つのリフレッシュ方法(F、P、C、?)を使用します。このため、たとえばFとout_of_place = trueを指定した場合、アウトオブプレース高速リフレッシュが試行されます。同様に、Pとout_of_place = trueを指定した場合、アウトオブプレースPCTリフレッシュが試行されます。

REFRESH_DEPENDENTプロシージャ

このプロシージャは、次のプロパティを持つすべてのマテリアライズド・ビューをリフレッシュします。

- マテリアライズド・ビューが、指定されたマスターのリストにあるマスター表またはマスター・マテリアライズド・ビューに依存している場合。

- マテリアライズド・ビューが依存するマスター表またはマスター・マテリアライズド・ビューに対する最も新しい変更が行われてから、マテリアライズド・ビューがリフレッシュされていない場合。

- マテリアライズド・ビューおよびそれが依存しているすべてのマスター表またはマスター・マテリアライズド・ビューがローカルな場合。

- マテリアライズド・ビューがDBA_MVIEWSビューにある場合。

これは、データ・ウェアハウスで使用するためのプロシージャです。

構文

DBMS_MVIEW.REFRESH_DEPENDENT (
number_of_failures     OUT    BINARY_INTEGER,
{ list                 IN     VARCHAR2,
| tab                  IN     DBMS_UTILITY.UNCL_ARRAY,}
method                 IN     VARCHAR2    := NULL,
rollback_seg           IN     VARCHAR2    := NULL,
refresh_after_errors   IN     BOOLEAN     := false,
atomic_refresh         IN     BOOLEAN     := true,
nested                 IN     BOOLEAN     := false,
out_of_place           IN     BOOLEAN     := false);

注意:
このプロシージャはオーバーロードされています。listパラメータとtabパラメータは、両方同時には指定できません。

パラメータ

表100-12 REFRESH_DEPENDENTプロシージャのパラメータ

パラメータ

説明

number_of_failures

処理中に発生した失敗の件数を戻します。

list | tab

マテリアライズド・ビューが依存できるマスター表またはマスター・マテリアライズド・ビューのカンマで区切られたリスト。(シノニムはサポートされていません。)これらの表およびそれらに依存するマテリアライズド・ビューは、別々のスキーマに配置できます。ただし、すべての表とマテリアライズド・ビューが、ユーザーのローカル・データベースに存在している必要があります。

他の方法として、DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL索引付き表を渡せます。この場合、各要素が表の名前です。

method

依存するマテリアライズド・ビューのリフレッシュ方法を示す文字列。特定の表に依存しているすべてのマテリアライズド・ビューは、その表に関連付けられたリフレッシュ方法に従ってリフレッシュされます。Fまたはfは高速リフレッシュ、?は強制リフレッシュ、Cまたはcは完全リフレッシュ、Aまたはaは常にリフレッシュを示します。AおよびCは同等です。Pまたはpは、マテリアライズド・ビュー内の行のうち、ディテール表内で変更されたパーティションによって影響を受ける行を再計算することによるリフレッシュを示します。

表に対応するリフレッシュ方法がない場合(つまり、リフレッシュ方法より多くの表が指定された場合)、その表に依存するマテリアライズド・ビューはデフォルトのリフレッシュ方法に従ってリフレッシュされます。たとえば、SQL*Plus内の次のEXECUTE文を実行します。

DBMS_MVIEW.REFRESH_DEPENDENT
('employees,deptartments,hr.regions','cf');

employees表に依存するマテリアライズド・ビューの完全リフレッシュ、departments表に依存するマテリアライズド・ビューの高速リフレッシュおよびhr.regions表に依存するマテリアライズド・ビューのデフォルトのリフレッシュを実行します。

rollback_seg

マテリアライズド・ビューのリフレッシュ中に使用する、マテリアライズド・ビュー・サイトのロールバック・セグメント名。

refresh_after_errors

このパラメータをTRUEに設定すると、マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに未解決の競合が記録されていても、更新可能なマテリアライズド・ビューのリフレッシュは続行します。このパラメータがtrueで、atomic_refreshがfalseの場合、このプロシージャは、マテリアライズド・ビューのリフレッシュに失敗しても他のマテリアライズド・ビューのリフレッシュを続行します。

atomic_refresh

このパラメータをTRUEに設定すると、リフレッシュされたマテリアライズド・ビューは単一のトランザクションでリフレッシュされます。リフレッシュされたすべてのマテリアライズド・ビューは、単一のポイントへ同時に更新されます。マテリアライズド・ビューのいずれかでリフレッシュに失敗すると、すべてのマテリアライズド・ビューが更新されません。

このパラメータがfalseに設定されている場合、個別のトランザクション内で、各マテリアライズド・ビューの非アトミック・リフレッシュが実行されます。

nested

このパラメータをTRUEに設定すると、指定した表のセットに対してネストしたリフレッシュ操作が実行されます。ネストしたリフレッシュ操作では、指定した表セット内のすべての依存マテリアライズド・ビューが依存順序に基づいてリフレッシュされ、ネストしたマテリアライズド・ビューが元の実表に対して完全に更新されます。

out_of_place

trueの場合、アウトオブプレース・リフレッシュが実行されます。デフォルトはfalseです。

このパラメータは、4つのリフレッシュ方法(F、P、C、?)を使用します。このため、たとえばFとout_of_place = trueを指定した場合、アウトオブプレース高速リフレッシュが試行されます。同様に、Pとout_of_place = trueを指定した場合、アウトオブプレースPCTリフレッシュが試行されます。

REGISTER_MVIEWプロシージャ

このプロシージャは、個々のマテリアライズド・ビューを管理できるようにします。マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでこのプロシージャを起動して、マテリアライズド・ビューを登録します。

通常、マテリアライズド・ビューは、作成されている間に自動的に登録されます。自動登録に失敗した場合または登録情報が削除された場合にかぎり、このプロシージャを実行してマテリアライズド・ビューを手動で登録してください。

構文

DBMS_MVIEW.REGISTER_MVIEW (
mviewowner  IN   VARCHAR2,
mviewname   IN   VARCHAR2,
mviewsite   IN   VARCHAR2,
mview_id    IN   DATE | BINARY_INTEGER,
flag        IN   BINARY_INTEGER,
qry_txt     IN   VARCHAR2,
rep_type    IN   BINARY_INTEGER := DBMS_MVIEW.REG_UNKNOWN);

パラメータ

表100-13 REGISTER_MVIEWプロシージャのパラメータ

パラメータ

説明

mviewowner

マテリアライズド・ビューの所有者。

mviewname

マテリアライズド・ビューの名前。

mviewsite

Oracle Databaseバージョン8.x以上のマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで登録するマテリアライズド・ビューのマテリアライズド・ビュー・サイトの名前。この名前に二重引用符を含めることはできません。

mview_id

マテリアライズド・ビューの識別番号。Oracle Databaseバージョン8.x以上のマテリアライズド・ビューは、BINARY_INTEGERとして指定します。Oracle Databaseバージョン8.x以上のマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで登録するOracle Databaseバージョン7のマテリアライズド・ビューは、DATEとして指定します。

flag

登録されているマテリアライズド・ビューのプロパティを記述する定数。割当て可能な定数は次のとおりです。

ROWIDマテリアライズド・ビューの場合はDBMS_MVIEW.REG_ROWID_MVIEW。

主キー・マテリアライズド・ビューの場合はDBMS_MVIEW.REG_PRIMARY_KEY_MVIEW。

オブジェクトIDマテリアライズド・ビューの場合はDBMS_MVIEW.REG_OBJECT_ID_MVIEW。

高速リフレッシュが可能なマテリアライズド・ビューの場合はDBMS_MVIEW.REG_FAST_REFRESHABLE_MVIEW。

更新可能なマテリアライズド・ビューの場合はDBMS_MVIEW.REG_UPDATABLE_MVIEW。

マテリアライズド・ビューにはこれらのプロパティのうち複数を設定できます。複数のプロパティを指定するには、プラス記号(+)を使用します。たとえば、主キーのマテリアライズド・ビューに高速リフレッシュを実行できる場合、このパラメータに次のように入力できます。

DBMS_MVIEW.REG_PRIMARY_KEY_MVIEW + DBMS_MVIEW.REG_FAST_REFRESHABLE_MVIEW

ALL_MVIEWSデータ・ディクショナリ・ビューを問い合せると、マテリアライズド・ビューのプロパティを判別できます。

qry_txt

マテリアライズド・ビュー定義問合せの最初の32,000バイト。

rep_type

マテリアライズド・ビューのバージョン。割当て可能な定数は次のとおりです。

マテリアライズド・ビューがOracle Databaseバージョン7のサイトにある場合、DBMS_MVIEW.REG_V7_SNAPSHOT。

- DBMS_MVIEW.REG_V8_SNAPSHOT

マテリアライズド・ビューがOracle Databaseバージョン8.x以上のサイトにある場合、reg_repapi_snapshot。

マテリアライズド・ビューがOracle Databaseバージョン7のサイトまたはOracle Databaseバージョン8.x以上のサイトのどちらにあるか不明な場合、DBMS_MVIEW.REG_UNKNOWN(デフォルト)。

使用上の注意

このプロシージャは、リモート・プロシージャ・コールを使用して、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでリモート・マテリアライズド・ビューにより起動します。REGISTER_MVIEWが同じmviewowner、mviewnameおよびmviewsiteを使用して複数回コールされている場合、mview_id、flagおよびqry_txtに対する最も新しい値が格納されます。問合せがVARCHAR2の最大サイズを超える場合は、最初の32000文字がqry_txtに格納され、残りは切り捨てられます。手動で起動した場合、プロシージャをコールしたユーザーがマテリアライズド・ビューのデータ・ディクショナリ・ビューでmview_idの値を参照する必要があります。

UNREGISTER_MVIEWプロシージャ

このプロシージャは、個々のマテリアライズド・ビューを管理できるようにします。マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでこのプロシージャを起動して、マテリアライズド・ビューの登録を解除します。

構文

DBMS_MVIEW.UNREGISTER_MVIEW (
mviewowner      IN   VARCHAR2,
mviewname       IN   VARCHAR2,
mviewsite       IN   VARCHAR2);

パラメータ

表100-14 UNREGISTER_MVIEWプロシージャのパラメータ

パラメータ

説明

mviewowner

マテリアライズド・ビューの所有者。

mviewname

マテリアライズド・ビューの名前。

mviewsite

マテリアライズド・ビュー・サイトの名前。

101 DBMS_NETWORK_ACL_ADMIN

DBMS_NETWORK_ACL_ADMINパッケージは、ネットワークのアクセス制御リスト(ACL)を管理するためのインタフェースを提供します。

関連項目:
詳細は、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。

この章では、次の項目について説明します。

- DBMS_NETWORK_ACL_ADMINの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- 例外

- 例

- DBMS_NETWORK_ACL_ADMINサブプログラムの要約

DBMS_NETWORK_ACL_ADMINの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- 例外

- 例

概要

NETWORK_ACL_ADMINパッケージは、ネットワークのアクセス制御リスト(ACL)を管理するインタフェースを提供します。ACLを使用することで、UTL_TCP、UTL_HTTP、UTL_SMTPおよびUTL_INADDRなどのPL/SQLネットワーク・ユーティリティ・パッケージを使用した、データベースから外部ネットワークのサービスおよびリソースへのユーザーのアクセスが制御されます。

推奨されないサブプログラム

新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 12cでは、次のサブプログラムの使用は推奨されていません。

- ADD_PRIVILEGEプロシージャ

- ASSIGN_ACLプロシージャ

- ASSIGN_WALLET_ACLプロシージャ

- CHECK_PRIVILEGEファンクション

- CHECK_PRIVILEGE_ACLIDファンクション

- CREATE_ACLプロシージャ

- DELETE_PRIVILEGEプロシージャ

- DROP_ACLプロシージャ

- UNASSIGN_ACLプロシージャ

- UNASSIGN_WALLET_ACLプロシージャ

セキュリティ・モデル

デフォルトでは、DBMS_NETWORK_ACL_ADMINパッケージのEXECUTE権限は、DBAロールとEXECUTE_CATALOG_ROLEに付与されています。

定数

DBMS_NETWORK_ACL_ADMINパッケージでは、表101-1「DBMS_NETWORK_ACL_ADMINの定数」に示す定数が使用されます。

表101-1 DBMS_NETWORK_ACL_ADMINの定数

定数

タイプ

値

説明

IP_ADDR_MASK

VARCHAR2(80)

'([[:digit:]]+\.){3}[[:digit:]]+'

IPアドレス・マスク: xxx.xxx.xxx.xxx

IP_SUBNET_MASK

VARCHAR2(80)

'([[:digit:]]+\.){0,3}\*'

IPサブネット・マスク: xxx.xxx...*

HOSTNAME_MASK

VARCHAR2(80)

'[^\.\:\/\*]+(\.[^\.\:\/\*]+)*'

ホスト名マスク: ???.???.???...???

DOMAIN_MASK

VARCHAR2(80)

''\*(\.[^\.\:\/\*]+)*'

ドメイン・マスク: *.???.???...???

例外

次の表に、DBMS_NETWORK_ACL_ADMINパッケージで発生する例外を示します。

表101-2 DBMS_NETWORK_ACL_ADMINの例外

例外

エラー・コード

説明

ACE_ALREADY_EXISTS

24243

ACEはすでに存在します。

EMPTY_ACL

24246

ACLが空です。

ACL_NOT_FOUND

46114

ACLが見つかりません。

ACL_ALREADY_EXISTS

46212

ACLはすでに存在します。

INVALID_ACL_PATH

46059

ACLのパスが無効です。

INVALID_HOST

24244

ホストが無効です。

INVALID_PRIVILEGE

24245

権限が無効です。

INVALID_WALLET_PATH

29248

ウォレットのパスが無効です。

BAD_ARGUMENT

29261

引数が間違っています。

UNRESOLVED_PRINCIPAL

46238

プリンシパルが未解決です。

PRIVILEGE_NOT_GRANTED

01927

権限が付与されていません。

例

例1

ホストwww.us.example.comに対するconnect権限とresolve権限をSCOTTに付与します。

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'www.us.example.com',
ace  =>  xs$ace_type(privilege_list => xs$name_list('connect', 'resolve'),
principal_name => 'scott',
principal_type => xs_acl.ptype_db));

例2

SCOTTのホストwww.us.example.comに対するresolve権限を取り消します。

dbms_network_acl_admin.remove_host_ace(
host => 'www.us.example.com',
ace  =>  xs$ace_type(privilege_list => xs$name_list('resolve'),
principal_name => 'scott',
principal_type => xs_acl.ptype_db));

例3

ウォレットfile:/example/wallets/hr_walletに対するuse_client_certificates権限とuse_passwords権限をSCOTTに付与します。

dbms_network_acl_admin.append_wallet_ace(
wallet_path => 'file:/example/wallets/hr_wallet',
ace         =>  xs$ace_type(privilege_list => xs$name_list('use_client_certificates', 'use_passwords'),
principal_name => 'scott',
principal_type => xs_acl.ptype_db));

例4

SCOTTからウォレットfile:/example/wallets/hr_walletに対するuse_passwords権限を取り消します。

dbms_network_acl_admin.remove_wallet_ace(
wallet_path => 'file:/example/wallets/hr_wallet',
ace         =>  xs$ace_type(privilege_list => xs$name_list('use_passwords'),
principal_name => 'scott',
principal_type => xs_acl.ptype_db));

例5

DBMS_NETWORK_ACL_UTLILITYパッケージ内のCONTAINS_HOSTは、ドメインにホストが含まれるかどうかを判別します。DBA_HOST_ACEビューと一緒にこれを使用することで、ネットワーク・ホストにアクセスするユーザーとその権限の割当てを確認できます。たとえば、www.us.example.comへのアクセスは次のようになります。

SELECT HOST, LOWER_PORT, UPPER_PORT,
ACE_ORDER, PRINCIPAL, PRINCIPAL_TYPE,
GRANT_TYPE, INVERTED_PRINCIPAL, PRIVILEGE,
START_DATE, END_DATE
FROM (SELECT ACES.*,
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.us.example.com',
HOST) PRECEDENCE
FROM DBA_HOST_ACES ACES)
WHERE PRECEDENCE IS NOT NULL
ORDER BY PRECEDENCE DESC,
LOWER_PORT NULLS LAST,
UPPER_PORT NULLS LAST,
ACE_ORDER;

HOST               LOWER_PORT UPPER_PORT ACE_ORDER PRINCIPAL PRINCIPAL_TYPE   GRANT_TYPE INVERTED_PRINCIPAL PRIVILEGE START_DATE END_DATE
------------------ ---------- ---------- --------- --------- ---------------- ---------- ------------------ ---------- ---------- --------
www.us.example.com         80        80          1 SCOTT     DATABASE USER    GRANT      NO                 HTTP
www.us.example.com         80        80          2 ADAMS     DATABASE USER    GRANT      NO                 HTTP
*                                                1 HQ_DBA    DATABASE USER    GRANT      NO                 CONNECT
*                                                1 HQ_DBA    DATABASE USER    GRANT      NO                 RESOLVE

例6

たとえば、www.us.example.comにアクセスするためのHQ_DBA独自の権限は次のようになります。

SELECT HOST, LOWER_PORT, UPPER_PORT, PRIVILEGE, STATUS
FROM (SELECT ACES.*,
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.us.example.com',
HOST) PRECEDENCE
FROM USER_HOST_ACES ACES)
WHERE PRECEDENCE IS NOT NULL
ORDER BY PRECEDENCE DESC,
LOWER_PORT NULLS LAST,
UPPER_PORT NULLS LAST;

HOST               LOWER_PORT UPPER_PORT PRIVILEGE STATUS
------------------ ---------- ---------- --------- -------
*                                        CONNECT   GRANTED
*                                        RESOLVE   GRANTED

DBMS_NETWORK_ACL_ADMINサブプログラムの要約

表101-3 DBMS_NETWORK_ACL_ADMINパッケージのサブプログラム

サブプログラム

説明

ADD_PRIVILEGEプロシージャ

(非推奨)アクセス制御リスト(ACL)で、ネットワーク・アクセス権を付与または拒否する権限をユーザーに追加します。

APPEND_HOST_ACEプロシージャ

アクセス制御エントリ(ACE)をネットワーク・ホストのアクセス制御リスト(ACL)に追加します。

APPEND_HOST_ACLプロシージャ

アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をネットワーク・ホストのACLに追加します。

APPEND_WALLET_ACEプロシージャ

アクセス制御エントリ(ACE)をウォレットのアクセス制御リスト(ACL)に追加します。

APPEND_WALLET_ACLプロシージャ

アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をウォレットのACLに追加します。

ASSIGN_ACLプロシージャ

(非推奨)アクセス制御リスト(ACL)をホスト・コンピュータ、ドメインまたはIPサブネットと、TCPポート範囲(指定されている場合)に割り当てます。

ASSIGN_WALLET_ACLプロシージャ

(非推奨)アクセス制御リスト(ACL)をウォレットに割り当てます。

CHECK_PRIVILEGEファンクション

(非推奨)アクセス制御リスト(ACL)で、権限がユーザーに付与または拒否されているかどうかを確認します。

CHECK_PRIVILEGE_ACLIDファンクション

(非推奨)アクセス制御リストのオブジェクトIDを指定することによって、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。

CREATE_ACLプロシージャ

(非推奨)初期権限設定を使用してアクセス制御リスト(ACL)を作成します。

DELETE_PRIVILEGEプロシージャ

(非推奨)アクセス制御リスト(ACL)で権限を削除します。

DROP_ACLプロシージャ

(非推奨)アクセス制御リスト(ACL)を削除します。

REMOVE_HOST_ACEプロシージャ

特定のACEに一致するネットワーク・ホストのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

REMOVE_WALLET_ACEプロシージャ

特定のACEに一致するウォレットのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

SET_HOST_ACLプロシージャ

データベースからネットワーク・ホストへのアクセスを制御するために、そのホストのアクセス制御リスト(ACL)を設定します。

SET_WALLET_ACLプロシージャ

データベースからウォレットへのアクセスを制御するために、そのウォレットのアクセス制御リスト(ACL)を設定します。

UNASSIGN_ACLプロシージャ

(非推奨)ネットワーク・ホストに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。

UNASSIGN_WALLET_ACLプロシージャ

(非推奨)ウォレットに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。

ADD_PRIVILEGEプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャとAPPEND_WALLET_ACEプロシージャを使用することをお薦めします。

このプロシージャは、ネットワーク・アクセス権を付与または拒否する権限をユーザーに追加します。アクセス制御エントリ(ACE)が存在しない場合は、これを作成します。

構文

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE (
acl             IN VARCHAR2,
principal       IN VARCHAR2,
is_grant        IN BOOLEAN,
privilege       IN VARCHAR2,
position        IN PLS_INTEGER DEFAULT NULL,
start_date      IN TIMESTAMP WITH TIMESTAMP DEFAULT NULL,
end_date        IN TIMESTAMP WITH TIMESTAMP DEFAULT NULL );

パラメータ

表101-4 ADD_PRIVILEGEファンクションのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

principal

権限が付与または拒否されるプリンシパル(データベース・ユーザーまたはロール)。大/小文字が区別されます。

is_grant

権限が付与されるか拒否されるかのいずれか。

privilege

付与または拒否されるネットワーク権限。

position

ACEの(1ベースの)位置。NULL以外の値を指定すると、新しいACEの特定の位置に権限が追加され、同じis_grant (付与または拒否)を持つプリンシパルに対して別のACEが存在しないようにする必要があります。NULL値を指定すると、プリンシパルとis_grantに一致するACEが存在する場合はそのACEに権限が追加され、一致するACEが存在しない場合はACLの終わりに権限が追加されます。

start_date

アクセス制御エントリ(ACE)の開始日。指定した場合、ACEは指定された日以降にのみ有効になります。権限が既存のACEに追加される場合、start_dateは無視されます。

end_date

アクセス制御エントリ(ACE)の終了日。指定した場合、ACEは指定された日以降に期限切れになります。end_dateはstart_date以降にする必要があります。権限が既存のACEに追加される場合、end_dateは無視されます。

使用上の注意

権限を削除するには、DELETE_PRIVILEGEプロシージャを使用します。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
acl         => 'us-example-com-permissions.xml',
principal   => 'ST_USERS',
is_grant    =>  TRUE,
privilege   => 'connect')
END;

APPEND_HOST_ACEプロシージャ

このプロシージャは、アクセス制御エントリ(ACE)をネットワーク・ホストのアクセス制御リスト(ACL)に追加します。ACLはデータベースから特定のホストへのアクセスを制御し、ACEは特定のプリンシパルに付与または拒否される権限を指定します。

構文

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
host         IN VARCHAR2,
lower_port   IN PLS_INTEGER DEFAULT NULL,
upper_port   IN PLS_INTEGER DEFAULT NULL,
ace          IN XS$ACE_TYPE);

パラメータ

表101-5 APPEND_HOST_ACEファンクションのパラメータ

パラメータ

説明

host

hostには、ホストの名前またはIPアドレスを指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。

lower_port

オプションのTCPポート範囲の下限です。

upper_port

オプションのTCPポート範囲の上限です。NULLの場合は、lower_portの値と想定されます。

ace

ACE

使用上の注意

- ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

- ACEを削除するには、REMOVE_HOST_ACEプロシージャを使用します。

- ホストのACLは、そのドメインのACLより優先されます。www.us.example.comなどの特定のホストでは、優先順位の高い順に次のドメインがリストされます。

- www.us.example.com

- *.us.example.com

- *.example.com

- *.com

- *

- IPアドレスのACLは、そのサブネットのACLより優先されます。192.168.0.100などの特定のIPアドレスでは、優先順位の高い順に次のサブネットがリストされます。

- 192.168.0.100

- 192.168.0.*

- 192.168.*

- 192.*

- *

- resolve権限を持つACEは、ポート範囲が指定されていないホストのACLに対してのみ追加できます。

- connect権限を持つACEが、ポート範囲が指定されたホストのACLと、ポート範囲が指定されていないホストのACLに追加された場合、ポート範囲が指定されたホストのACLが優先されます。

- ホストのTCPポート範囲を指定する場合、そのホストの他の既存のポート範囲とオーバーラップする範囲は指定できません。

- ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

関連項目:
XS$ACE_TYPEオブジェクト・タイプの詳細は、『Oracle Database Real Application Security管理者および開発者ガイド』を参照してください。

APPEND_HOST_ACLプロシージャ

このプロシージャは、アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をネットワーク・ホストのACLに追加します。

構文

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACL (
host         IN VARCHAR2,
lower_port   IN PLS_INTEGER DEFAULT NULL,
upper_port   IN PLS_INTEGER DEFAULT NULL,
acl          IN VARCHAR2);

パラメータ

表101-6 APPEND_HOST_ACLファンクションのパラメータ

パラメータ

説明

host

hostには、ホストの名前またはIPアドレスを指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。

lower_port

オプションのTCPポート範囲の下限です。

upper_port

オプションのTCPポート範囲の上限です。NULLの場合は、lower_portの値と想定されます。

acl

追加元のACL

使用上の注意

- ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

- ACEを削除するには、REMOVE_HOST_ACEプロシージャを使用します。

- ホストのACLは、そのドメインのACLより優先されます。www.us.example.comなどの特定のホストでは、優先順位の高い順に次のドメインがリストされます。

- www.us.example.com

- *.us.example.com

- *.example.com

- *.com

- *

- IPアドレスのACLは、そのサブネットのACLより優先されます。192.168.0.100などの特定のIPアドレスでは、優先順位の高い順に次のサブネットがリストされます。

- 192.168.0.100

- 192.168.0.*

- 192.168.*

- 192.*

- *

- resolve権限を持つACEは、ポート範囲が指定されていないホストのACLに対してのみ追加できます。

- connect権限を持つACEが、ポート範囲が指定されたホストのACLと、ポート範囲が指定されていないホストのACLに追加された場合、ポート範囲が指定されたホストのACLが優先されます。

- ホストのTCPポート範囲を指定する場合、そのホストの他の既存のポート範囲とオーバーラップする範囲は指定できません。ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

APPEND_WALLET_ACEプロシージャ

このプロシージャは、アクセス制御エントリ(ACE)をウォレットのアクセス制御リスト(ACL)に追加します。ACLはデータベースから特定のウォレットへのアクセスを制御し、ACEは特定のプリンシパルに付与または拒否される権限を指定します。

構文

DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE (
wallet_path    IN VARCHAR2,
ace            IN XS$ACE_TYPE);

パラメータ

表101-7 APPEND_WALLET_ACEファンクションのパラメータ

パラメータ

説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

ace

ACE

使用上の注意

- ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

- ACEを削除するには、REMOVE_WALLET_ACEプロシージャを使用します。

- ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

関連項目:
XS$ACE_TYPEオブジェクト・タイプの詳細は、『Oracle Database Real Application Security管理者および開発者ガイド』を参照してください。

APPEND_WALLET_ACLプロシージャ

このプロシージャは、アクセス制御リスト(ACL)のアクセス制御エントリ(ACE)をウォレットのACLに追加します。

構文

DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACL (
wallet_path    IN VARCHAR2,
acl            IN VARCHAR2);

パラメータ

表101-8 APPEND_WALLET_ACLファンクションのパラメータ

パラメータ

説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

ace

追加元のACL

使用上の注意

- ホストACLの対応するACEに重複する権限が含まれている場合、それらはスキップされます。

- ACEを削除するには、REMOVE_WALLET_ACEを使用します。

- ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

ASSIGN_ACLプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャとAPPEND_WALLET_ACEプロシージャを使用することをお薦めします。

このプロシージャは、アクセス制御リスト(ACL)をホスト・コンピュータ、ドメインまたはIPサブネットと、TCPポート範囲(指定されている場合)に割り当てます。

構文

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl         IN VARCHAR2,
host        IN VARCHAR2,
lower_port  IN PLS_INTEGER DEFAULT NULL,
upper_port  IN PLS_INTEGER DEFAULT NULL);

パラメータ

表101-9 ASSIGN_ACLファンクションのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

host

ACLの割当て先のホスト。ホストは、ホスト名またはホストのIPアドレスによって指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。

lower_port

TCPポート範囲の下限(NULLでない場合)。

upper_port

TCPポート範囲の上限。NULLの場合は、lower_portの値と想定されます。

使用上の注意

- ホスト・コンピュータ、ドメインまたはIPサブネットと、TCPポート範囲(指定されている場合)に割り当てることができるACLは1つだけです。新しいアクセス制御リストをネットワーク・ターゲットに割り当てると、同じターゲットに割り当てられている以前のアクセス制御リストの割当てが解除されます。ただし、アクセス制御リストは削除されません。アクセス制御リストを削除するには、DROP_ACLプロシージャを使用します。アクセス制御リストの割当てを削除するには、UNASSIGN_ACLプロシージャを使用します。

- ドメインに割り当てられているACLの優先順位は、サブドメインに割り当てられている他のACLよりも低く、サブドメインに割り当てられているACLの優先順位は、個々のホストに割り当てられているACLよりも低くなります。このため、www.us.example.comなどの特定のホストでは、優先順位の高い順に次のドメインがリストされます。
- www.us.example.com

- *.us.example.com

- *.example.com

- *.com

- *

同様に、サブネットに割り当てられているACLの優先順位は、より小さいサブネットに割り当てられている他のACLよりも低く、より小さいサブネットに割り当てられているACLの優先順位は、個々のIPアドレスに割り当てられているACLよりも低くなります。このため、192.168.0.100などの特定のIPアドレスでは、優先順位の高い順に次のサブネットがリストされます。

- 192.168.0.100

- 192.168.0.*

- 192.168.*

- 192.*

- *

- ポート範囲は、ACLのconnect権限の割当てにのみ適用できます。ACLのresolve権限の割当ては、ポート範囲なしでACLがホストに割り当てられている場合にのみ有効です。
connect権限の割当てでは、ポート範囲なしでホストに割り当てられているACLの優先順位は、ポート範囲を指定して同じホストに割り当てられている他のACLよりも低くなります。

- TCPポート範囲を指定する場合は、lower_portとupper_portの両方がNULLではなく、upper_portがlower_port以上である必要があります。ポート範囲は、同じホストですでに割り当てられている他のポート範囲とオーバーラップしないようにする必要があります。

- 割当てを削除するには、UNASSIGN_ACLプロシージャを使用します。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
acl         => 'us-example-com-permissions.xml',
host        => '*.us.example.com',
lower_port  => 80);
END;

ASSIGN_WALLET_ACLプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャとAPPEND_WALLET_ACEプロシージャを使用することをお薦めします。

このプロシージャは、アクセス制御リスト(ACL)をWalletに割り当てます。

構文

UTL_HTTP.ASSIGN_WALLET_ACL (
acl          IN  VARCHAR2,
wallet_path  IN  VARCHAR2);

パラメータ

表101-10 ASSIGN_WALLET_ACLプロシージャのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

wallet_path

ACLの割当て先のWalletのディレクトリ・パス。このパスは大文字と小文字が区別され、形式はfile:directory-pathです。

使用上の注意

割当てを削除するには、UNASSIGN_WALLET_ACLプロシージャを使用します。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
acl         => 'wallet-acl.xml',
description => 'Wallet ACL',
principal   => 'SCOTT',
is_grant    => TRUE,
privilege   => 'use-client-certificates');

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
acl         => 'wallet-acl.xml',
principal   => 'SCOTT',
is_grant    => TRUE,
privilege   => 'use-passwords');

DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_ACL(
acl         => 'wallet-acl.xml',
wallet_path => 'file:/example/wallets/test_wallet');
END;

CHECK_PRIVILEGEファンクション

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このプロシージャは、下位互換性を維持する目的でのみ、引き続きパッケージで提供されます。

このファンクションは、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。

構文

DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE (
acl             IN VARCHAR2,
user            IN VARCHAR2,
privilege       IN VARCHAR2)
RETURN NUMBER;

パラメータ

表101-11 CHECK_PRIVILEGEファンクションのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

user

チェック対象のユーザー。ユーザーがNULLである場合は、実行者と想定されます。ユーザー名はALL_USERSビューのUSERNAME列と同様、大/小文字が区別されます。

privilege

チェックするネットワーク権限。

戻り値

権限が付与された場合は1、権限が拒否された場合は0、権限が付与されず、かつ拒否されなかった場合には、NULLが戻されます。

例

SELECT DECODE(
DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(
'us-example-com-permissions.xml', 'SCOTT', 'resolve'),
1, 'GRANTED', 0, 'DENIED', NULL) PRIVILEGE
FROM DUAL;

CHECK_PRIVILEGE_ACLIDファンクション

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このプロシージャは、下位互換性を維持する目的でのみ、引き続きパッケージで提供されます。

このファンクションは、アクセス制御リストのオブジェクトIDを指定することによって、ACLで権限がユーザーに付与または拒否されているかどうかを確認します。

構文

DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID (
aclid           IN RAW,
user            IN VARCHAR2 DEFAULT NULL)
privilege       IN VARCHAR2,
RETURN NUMBER;

パラメータ

表101-12 CHECK_PRIVILEGE_ACLIDファンクションのパラメータ

パラメータ

説明

aclid

ACLのオブジェクトID

user

チェック対象のユーザー。ユーザーがNULLである場合は、実行者と想定されます。ユーザー名はALL_USERSビューのUSERNAME列と同様、大/小文字が区別されます。

privilege

チェックするネットワーク権限。

戻り値

権限が付与された場合は1、権限が拒否された場合は0、権限が付与されず、かつ拒否されなかった場合には、NULLが戻されます。

CREATE_ACLプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、APPEND_HOST_ACEプロシージャとAPPEND_WALLET_ACEプロシージャを使用することをお薦めします。

このプロシージャは、初期権限設定を使用してアクセス制御リスト(ACL)を作成します。ACLには、少なくとも1つの権限設定がある必要があります。ACLのアクセス制御は、ネットワーク・ターゲットに割り当てられるまで有効になりません。

構文

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl             IN VARCHAR2,
description     IN VARCHAR2,
principal       IN VARCHAR2,
is_grant        IN BOOLEAN,
privilege       IN VARCHAR2,
start_date      IN TIMESTAMP WITH TIMEZONE DEFAULT NULL,
end_date        IN TIMESTAMP WITH TIMEZONE DEFAULT NULL );

パラメータ

表101-13 CREATE_ACLプロシージャのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

description

ACLの記述属性。

principal

権限が付与または拒否されるプリンシパル(データベース・ユーザーまたはロール)。大/小文字が区別されます。

is_grant

権限が付与されるか拒否されるかのいずれか。

privilege

付与または拒否されるネットワーク権限 - 'connect | resolve'(大/小文字が区別されます)。データベース・ユーザーは、UTL_TCP、UTL_HTTP、UTL_SMTPおよびUTL_MAILユーティリティ・パッケージを使用して外部ネットワーク・ホスト・コンピュータに接続する場合、そのコンピュータに対するconnect権限が必要です。UTL_INADDRパッケージを使用して、与えられたホストIPアドレスからホスト名を解決したり、与えられたホスト名からIPアドレスを解決する場合は、データベース・ユーザーにresolve権限を付与します。

start_date

アクセス制御エントリ(ACE)の開始日。指定した場合、ACEは指定された日以降にのみ有効になります。

end_date

アクセス制御エントリ(ACE)の終了日。指定した場合、ACEは指定された日以降に期限切れになります。end_dateはstart_date以降にする必要があります。

使用上の注意

アクセス制御リストを削除するには、DROP_ACLプロシージャを使用します。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
acl          => 'us-example-com-permissions.xml',
description  => 'Network permissions for *.us.example.com',
principal    => 'SCOTT',
is_grant     => TRUE,
privilege    => 'connect');
END;

DELETE_PRIVILEGEプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、REMOVE_HOST_ACEプロシージャとREMOVE_WALLET_ACEプロシージャを使用することをお薦めします。

このプロシージャは、アクセス制御リストの権限を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.DELETE_PRIVILEGE (
acl           IN VARCHAR2,
principal     IN VARCHAR2,
is_grant      IN BOOLEAN DEFAULT NULL,
privilege     IN VARCHAR2 DEFAULT NULL);

パラメータ

表101-14 DELETE_PRIVILEGEファンクションのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

principal

すべてのACEが削除されるプリンシパル(データベース・ユーザーまたはロール)。

is_grant

権限が付与されるか拒否されるかのいずれか。NULL値を指定すると、付与された権限と拒否された権限の両方が削除されます。

privilege

削除されるネットワーク権限。NULL値を指定すると、すべての権限が削除されます。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.DELETE_PRIVILEGE(
acl         => 'us-example-com-permissions.xml',
principal   => 'ST_USERS')
END;

DROP_ACLプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このプロシージャは、下位互換性を維持する目的でのみ、引き続きパッケージで提供されます。

このプロシージャは、アクセス制御リスト(ACL)を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.DROP_ACL (
acl           IN VARCHAR2);

パラメータ

表101-15 DROP_ACLプロシージャのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.DROP_ACL(
acl => 'us-example-com-permissions.xml');
END;

REMOVE_HOST_ACEプロシージャ

このプロシージャは、特定のACEに一致するネットワーク・ホストのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.REMOVE_HOST_ACE (
host               IN VARCHAR2,
lower_port         IN PLS_INTEGER DEFAULT NULL,
upper_port         IN PLS_INTEGER DEFAULT NULL,
ace                IN XS$ACE_TYPE,
remove_empty_acl   IN BOOLEAN DEFAULT FALSE);

パラメータ

表101-16 REMOVE_HOST_ACEファンクションのパラメータ

パラメータ

説明

host

hostには、ホストの名前またはIPアドレスを指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。

lower_port

オプションのTCPポート範囲の下限です。

upper_port

オプションのTCPポート範囲の上限です。NULLの場合は、lower_portの値と想定されます。

ace

ACE

remove_empty_acl

ACEが削除されてACLが空になったときに、そのACLを削除するかどうか

使用上の注意

ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

REMOVE_WALLET_ACEプロシージャ

このプロシージャは、特定のACEに一致するウォレットのアクセス制御リスト(ACL)に含まれるアクセス制御エントリ(ACE)から権限を削除します。

構文

DBMS_NETWORK_ACL_ADMIN.REMOVE_WALLET_ACE (
wallet_path        IN VARCHAR2,
ace                IN XS$ACE_TYPE,
remove_empty_acl   IN BOOLEAN DEFAULT FALSE);

パラメータ

表101-17 REMOVE_WALLET_ACEファンクションのパラメータ

パラメータ

説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

ace

ACE

remove_empty_acl

ACEが削除されてACLが空になったときに、そのACLを削除するかどうか

使用上の注意

ACLを別のホストやウォレットと共有した場合、ACLが変更される前に、そのコピーが作成されます。

SET_HOST_ACLプロシージャ

このプロシージャは、データベースからネットワーク・ホストへのアクセスを制御するために、そのホストのアクセス制御リスト(ACL)を設定します。

構文

DBMS_NETWORK_ACL_ADMIN.SET_HOST_ACL (
host         IN VARCHAR2,
lower_port   IN PLS_INTEGER DEFAULT NULL,
upper_port   IN PLS_INTEGER DEFAULT NULL,
acl          IN VARCHAR2);

パラメータ

表101-18 SET_HOST_ACLファンクションのパラメータ

パラメータ

説明

host

hostには、ホストの名前またはIPアドレスを指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。

lower_port

オプションのTCPポート範囲の下限です。

upper_port

オプションのTCPポート範囲の上限です。NULLの場合は、lower_portの値と想定されます。

acl

ACL。NULLを指定すると、ホストのACLの設定が解除されます。

使用上の注意

アクセス制御エントリ(ACE)がホストのACLに追加されると、そのホストのACLがオンデマンドで作成および設定されます。ホストのACLは手動で設定しないことをお薦めします。

SET_WALLET_ACLプロシージャ

このプロシージャは、データベースからウォレットへのアクセスを制御するために、そのウォレットのアクセス制御リスト(ACL)を設定します。

構文

DBMS_NETWORK_ACL_ADMIN.SET_WALLET_ACL (
wallet_path    IN VARCHAR2,
acl            IN VARCHAR2);

パラメータ

表101-19 SET_WALLET_ACLファンクションのパラメータ

パラメータ

説明

wallet_path

ウォレットのディレクトリ・パスです。このパスでは大文字と小文字が区別され、形式はfile:directory-pathです。

acl

ACL。NULLを指定すると、ホストのACLの設定が解除されます。

使用上の注意

アクセス制御エントリ(ACE)がウォレットのACLに追加されると、そのウォレットのACLがオンデマンドで作成および設定されます。ウォレットのACLは手動で設定しないことをお薦めします。

UNASSIGN_ACLプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、REMOVE_HOST_ACEプロシージャとREMOVE_WALLET_ACEプロシージャを使用することをお薦めします。

このプロシージャは、ネットワーク・ホストに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。

構文

DBMS_NETWORK_ACL_ADMIN.UNASSIGN_ACL (
acl         IN VARCHAR2 DEFAULT NULL,
host        IN VARCHAR2 DEFAULT NULL,
lower_port  IN PLS_INTEGER DEFAULT NULL,
upper_port  IN PLS_INTEGER DEFAULT NULL);

パラメータ

表101-20 UNASSIGN_ACLファンクションのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。ACLがNULLの場合、ホストに割り当てられているACLの割当てが解除されます。

host

ACLが削除されるホスト。ホストは、ホスト名またはホストのIPアドレスによって指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名は大/小文字が区別されません。hostがNULLの場合、任意のホストからACLの割当てが解除されます。hostとaclの両方がNULLの場合、ホストに割り当てられているACLのすべての割当てが解除されます。

lower_port

TCPポート範囲の下限(NULLでない場合)。

upper_port

TCPポート範囲の上限。NULLの場合は、lower_portの値と想定されます。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.UNASSIGN_ACL(
host        => '*.us.example.com',
lower_port  => 80);
END;

UNASSIGN_WALLET_ACLプロシージャ

注意:
Oracle Database 12cでは、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、REMOVE_HOST_ACEプロシージャとREMOVE_WALLET_ACEプロシージャを使用することをお薦めします。

このプロシージャは、Walletに現在割り当てられているアクセス制御リスト(ACL)の割当てを解除します。

構文

UTL_HTTP.UNASSIGN_WALLET_ACL (
acl          IN  VARCHAR2 DEFAULT NULL,
wallet_path  IN  VARCHAR2 DEFAULT NULL);

パラメータ

表101-21 UNASSIGN_WALLET_ACLプロシージャのパラメータ

パラメータ

説明

acl

ACLの名前。相対パスの起点は/sys/aclsとなります。aclがNULLの場合、Walletに割り当てられているACLの割当てが解除されます。

wallet_path

ACLの割当て先のWalletのディレクトリ・パス。このパスは大文字と小文字が区別され、形式はfile:directory-pathです。aclとwallet_pathの両方がNULLの場合、Walletに割り当てられているACLのすべての割当てが解除されます。

例

BEGIN
DBMS_NETWORK_ACL_ADMIN.UNASSIGN_WALLET_ACL(
acl         => 'wallet-acl.xml',
wallet_path => 'file:/example/wallets/test_wallet');
END;

102 DBMS_NETWORK_ACL_UTILITY

DBMS_NETWORK_ACL_UTILITYパッケージは、ネットワーク・ホストへのTCP接続を制御するアクセス制御リスト(ACL)の割当てを評価するためのユーティリティ・ファンクションを提供します。

関連項目:
詳細は、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。

この章では、次の項目について説明します。

- DBMS_NETWORK_ACL_UTILITYの使用方法

- セキュリティ・モデル

- 例

- DBMS_NETWORK_ACL_UTILITYサブプログラムの要約

DBMS_NETWORK_ACL_UTILITYの使用方法

- セキュリティ・モデル

- 例

セキュリティ・モデル

DBMS_NETWORK_ACL_UTILITYパッケージのEXECUTEは、PUBLICに付与されます。

例

このパッケージ内のCONTAINS_HOSTファンクションは、ドメインまたはサブネットに特定のホストまたはIPアドレスが含まれているかどうかを示します。このファンクションをDBMS_NETWORK_ACL_ADMINパッケージのCHECK_PRIVILEGE_ACLIDファンクションとともに使用して、ネットワーク・ホストにアクセスするユーザーの権限に影響を与える権限の割当てを決定できます。CONTAINS_HOSTファンクションの戻り値は、優先順位に従ってACLの割当て順序を決定するときにも使用できます。

例1

たとえば、SCOTTがwww.hr.example.comに接続する権限の場合は、次のとおりです。

SELECT host, lower_port, upper_port, acl,
DECODE(
DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'SCOTT', 'connect'),
1, 'GRANTED', 0, 'DENIED', NULL) privilege
FROM (SELECT host, acl, aclid, lower_port, upper_port,
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.hr.example.com', host)
precedence
FROM dba_network_acls)
WHERE precedence > 0
ORDER BY precedence DESC, lower_port nulls LAST;

HOST                 LOWER_PORT UPPER_PORT  ACL                 PRIVILEGE
-------------------- ---------- ---------- -------------------- ---------
www.hr.example.com          80         80  /sys/acls/www.xml    GRANTED
www.hr.example.com        3000       3999  /sys/acls/www.xml    GRANTED
www.hr.example.com                         /sys/acls/www.xml    GRANTED
*.hr.example.com                           /sys/acls/all.xml
*.example.com                              /sys/acls/all.xml

例2

たとえば、SCOTTがwww.hr.example.comのドメイン名解決を行う権限の場合は、次のとおりです。

SELECT host, acl,
DECODE(
DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'SCOTT', 'resolve'),
1, 'GRANTED', 0, 'DENIED', null) privilege
FROM (SELECT host, acl, aclid,
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('www.hr.example.com', host)
precedence
FROM dba_network_acls
WHERE lower_port IS NULL AND upper_port IS NULL)
WHERE precedence > 0
ORDER BY precedence DESC;

HOST                   ACL                          PRIVILEGE
---------------------- ---------------------------- ---------
www.hr.example.com     /sys/acls/hr-www.xml         GRANTED
*.hr.example.com       /sys/acls/hr-domain.xml
*.example.com          /sys/acls/corp-domain.xml

resolve権限は、ポート範囲なしで割り当てられたACL内でのみ有効です(lower_portおよびupper_portがNULLの場合)。このため、例ではlower_portおよびupper_port列はこの問合せに含まれていません。

DBMS_NETWORK_ACL_UTILITYサブプログラムの要約

表102-1 DBMS_NETWORK_ACL_UTILITYパッケージのサブプログラム

サブプログラム

説明

CONTAINS_HOSTファンクション

特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。

DOMAIN_LEVELファンクション

特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。

DOMAINSファンクション

このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するために使用されるACLが割り当てられているドメインを戻します。

EQUALS_HOSTファンクション

2つの特定のホスト、ドメインまたはサブネットが等しいかどうかを判別します。

CONTAINS_HOSTファンクション

このファンクションは、特定のホストが特定のホスト、ドメインまたはサブネットと等しいか、これらに含まれているかどうかを判別します。このファンクションによって、同じIPアドレスまたはサブネットの異なる表現が処理されます。たとえば、IPv4にマップされたIPv6アドレスは、そのアドレスが表示するIPv4ネイティブのアドレスと同じであるとみなされます。ホストまたはドメインの評価時にドメイン名解決は実行されません。

構文

DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST (
host      IN    VARCHAR2,
domain    IN    VARCHAR2)
RETURN NUMBER;

パラメータ

表102-2 CONTAINS_HOSTファンクションのパラメータ

パラメータ

説明

host

ネットワーク・ホスト

domain

ネットワーク・ホスト、ドメインまたはサブネット

戻り値

特定のホストが、関連するホスト、ドメインまたはサブネットと等しいか、これらに含まれている場合は、NULL以外の値を戻します。

- domainがホスト名の場合は、そのドメインに1を足したレベルを戻します。

- domainがドメイン名の場合は、そのドメイン・レベルを戻します。

- domainがIPアドレスまたはサブネットの場合は、IPアドレスまたはサブネットの有効アドレス・ビット数を戻します。

- ドメインがワイルドカード「*」の場合は、0を戻します。

戻されたNULL以外の値は、ACL割当てのドメインまたはサブネットの優先順位を示します。値が大きいほど優先順位は高くなります。ホストが特定のホスト、ドメインまたはサブネットと等しいか、またはこれらに含まれている場合は、NULLが戻されます。

例

SELECT host, acl, precedence
FROM (select host, acl,
DBMS_NETWORK_ACL_UTILITY.CONTAINS_HOST('192.0.2.3', host)
precedence
FROM dba_network_acls)
WHERE precedence > 0
ORDER BY precedence DESC;

HOST                   ACL                        PRECEDENCE
---------------------- -------------------------- ----------
192.0.2.3              /sys/acls/hr-www.xml               32
::ffff:192.0.2.0/120   /sys/acls/hr-domain.xml            24
::ffff:192.0.0.0/104   /sys/acls/corp-domain.xml           8

DOMAIN_LEVELファンクション

このファンクションは、特定のホスト名、ドメインまたはサブネットのドメイン・レベルを戻します。

構文

DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL (
host  IN VARCHAR2)
RETURN NUMBER;

パラメータ

表102-3 DOMAIN_LEVELファンクションのパラメータ

パラメータ

説明

host

ネットワーク・ホスト、ドメインまたはサブネット

戻り値

特定のホスト、ドメインまたはサブネットのドメイン・レベル。

使用上の注意

このファンクションは、IPv6のアドレスとサブネット、およびCIDR表記法のサブネットは処理できないことに注意してください。

例

SELECT host, acl, domain_level
FROM (select host, acl,
DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(host) domain_level
FROM dba_network_acls)
order by domain_level desc;

HOST                   ACL                          DOMAIN_LEVEL
---------------------- ---------------------------- ------------
www.hr.example.com     /sys/acls/hr-www.xml                    4
*.hr.example.com       /sys/acls/hr-domain.xml                 3
*.example.com          /sys/acls/corp-domain.xml               2

DOMAINSファンクション

このファンクションは、与えられたホストに対して、そのホストへのアクセス権がユーザーに付与されているかどうかを判別するACLが割り当てられているドメインを戻します。ホストのIPアドレスが指定されている場合は、かわりにサブネットを戻します。

構文

DBMS_NETWORK_ACL_UTILITY.DOMAINS (
host  IN VARCHAR2)
RETURN DOMAIN_TABLE PIPELINED;

パラメータ

表102-4 DOMAINSファンクションのパラメータ

パラメータ

説明

host

ネットワーク・ホスト

戻り値

特定のホストのドメインまたはサブネット。

使用上の注意

このファンクションは、IPv6アドレスを処理できないことに注意してください。また、IPv4アドレスに任意の数の接頭辞ビットのサブネットを生成することもできません。

例

select * from table(dbms_network_acl_utility.domains('www.hr.example.com'));

DOMAINS
--------------------------
www.hr.example.com
*.hr.example.com
*.example.com
*.com
*

EQUALS_HOSTファンクション

このファンクションは、2つの特定のホスト、ドメインまたはサブネットが等しいかどうかを判別します。このファンクションによって、同じIPアドレスまたはサブネットの異なる表現が処理されます。たとえば、IPv4にマップされたIPv6アドレスは、そのアドレスが表示するIPv4ネイティブのアドレスと同じであるとみなされます。2つのホストまたはドメインの比較時にドメイン名解決は実行されません。

構文

DBMS_NETWORK_ACL_UTILITY.EQUALS_HOST (
host1    IN    VARCHAR2,
host2    IN    VARCHAR2)
RETURN NUMBER;

パラメータ

表102-5 EQUALS_HOSTファンクションのパラメータ

パラメータ

説明

host1

比較対象のネットワーク・ホスト、ドメインまたはサブネット

host2

比較対象のネットワーク・ホスト、ドメインまたはサブネット

戻り値

2つのホスト、ドメインまたはサブネットが等しい場合は1を戻します。そうでない場合は0(ゼロ)を戻します。

例

SELECT host, acl
FROM dba_network_acls
WHERE DBMS_NETWORK_ACL_UTILITY.EQUALS_HOST('192.0.2.*', host) = 1;

HOST                   ACL
---------------------- ----------------------------
::ffff:192.0.2.0/120   /sys/acls/hr-domain.xml

103 DBMS_ODCI

DBMS_ODCIパッケージには、Data Cartridgeの使用に関連する単一ユーザー・ファンクションが含まれています。

関連項目:

- 『Oracle Databaseデータ・カートリッジ開発者ガイド』

この章では、次の項目について説明します。

- DBMS_ODCIサブプログラムの要約

DBMS_ODCIサブプログラムの要約

表103-1 DBMS_ODCIパッケージのサブプログラム

サブプログラム

説明

ESTIMATE_CPU_UNITSファンクション

指定の期間(秒)に対応するCPU命令の概数(単位: 千)を戻します。

ESTIMATE_CPU_UNITSファンクション

このファンクションは、指定の期間(秒)に対応するCPU命令の概数(単位: 千)を戻します。この情報を使用すると、拡張可能オプティマイザのユーザー定義ファンクションとCPUコストとを関連付けることができます。

このファンクションは、ユーザー・ファンクションの経過時間を入力として使用し、その経過時間とマシンのプロセッサ速度を乗算してCPU単位を測定したのち、ユーザー・ファンクションに関連付けるCPUの概数を戻します。マルチプロセッサの場合、ESTIMATE_CPU_UNITSではプロセッサ1つ当たりの速度で計算されます。

構文

DBMS_ODCI.ESTIMATE_CPU_UNITS(
elapsed_time     NUMBER)
RETURN NUMBER;

パラメータ

パラメータ

説明

elapsed_time

ファンクション実行にかかる秒単位の経過時間。

使用上の注意

CPUコストをユーザー定義ファンクションと関連付ける際に、ESTIMATE_CPU_UNITSによって返される千単位のCPU単位ではなく、完全な数のCPU単位を使用し、ESTIMATE_CPU_UNITSによって返される数に1,000を掛けます。

104 DBMS_OFFLINE_OG

DBMS_OFFLINE_OGパッケージには、マスター・グループのオフライン・インスタンス化のためのパブリック・インタフェースが含まれています。

この章では、次の項目について説明します。

- DBMS_OFFLINE_OGのドキュメント

DBMS_OFFLINE_OGのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_OFFLINE_OG」を参照してください。

105 DBMS_OUTLN

DBMS_OUTLNパッケージ(OUTLN_PKGと同義)には、ストアド・アウトラインの管理に関連するサブプログラムのための機能インタフェースが含まれています。

関連項目:
DBMS_OUTLNパッケージの使用方法の詳細は、『Oracle Database SQLチューニング・ガイド』のプラン・スタビリティの使用方法に関する項を参照してください。

注意:
ストアド・アウトラインは、SQL計画の管理を優先するために将来のリリースではサポートされなくなります。Oracle Database 11gリリース1 (11.1)では、ストアド・アウトラインは以前のリリースと同様に引き続き機能します。ただし、新規アプリケーションではSQL計画の管理を使用することを強くお薦めします。SQL計画管理によってSQL計画ベースラインが作成され、これによってストアド・アウトラインよりも優れたSQLパフォーマンスおよび安定性が実現されます。既存のストアド・アウトラインがある場合は、DBMS_SPMパッケージのLOAD_PLANS_FROM_CURSOR_CACHEファンクションまたはLOAD_PLANS_FROM_SQLSETファンクションを使用して、SQL計画ベースラインへの移行を検討してください。移行が完了したら、ストアド・アウトラインは無効化または削除する必要があります。

この章では、次の項目について説明します。

- DBMS_OUTLNの使用方法

- 概要

- セキュリティ・モデル

- DBMS_OUTLNサブプログラムの要約

DBMS_OUTLNの使用方法

- 概要

- セキュリティ・モデル

概要

ストアド・アウトラインは、指定したSQL文についての実行計画に関連するストアド・データです。これによって、オプティマイザは、最初にアウトラインとともに生成された計画と同じ実行計画を繰り返して再作成でき、アウトラインに格納されたデータの一部は、プラン・スタビリティを保つために使用するヒントで構成されています。

ストアド・アウトラインは、SQL計画の管理を優先するために将来のリリースではサポートされなくなります。11g R1以降、ストアド・アウトラインは以前のリリースとして機能し続けていますが、新規アプリケーションではSQL計画の管理を使用することを強くお薦めします。SQL計画管理によってSQL計画ベースラインが作成され、これによってストアド・アウトラインよりも優れたSQLパフォーマンスおよび安定性が実現されます。既存のストアド・アウトラインがある場合は、DBMS_SPMパッケージのLOAD_PLANS_FROM_CURSOR_CACHEファンクションまたはLOAD_PLANS_FROM_SQLSETファンクションを使用して、SQL計画ベースラインへの移行を検討してください。移行が完了したら、ストアド・アウトラインは無効化または削除する必要があります。

セキュリティ・モデル

DBMS_OUTLNには、適切なユーザーのみ使用できる管理プロシージャが含まれています。EXECUTE権限は、DBAが明示的に定めないかぎり、一般ユーザー・コミュニティにまで拡張されません。

アウトラインの管理目的に使用可能なPL/SQLファンクションは、そのプロシージャ(またはパッケージ)に対するEXECUTE権限があるユーザーのみが実行できます。

DBMS_OUTLNサブプログラムの要約

表105-1 DBMS_OUTLNパッケージのサブプログラム

サブプログラム

説明

CLEAR_USEDプロシージャ

アウトラインの使用済フラグを消去します。

CREATE_OUTLINEプロシージャ

ハッシュ値および子番号で識別される共有カーソルからアウトラインを生成します。

DROP_BY_CATプロシージャ

指定されたカテゴリに属しているアウトラインを削除します。

DROP_UNUSEDプロシージャ

SQL文のコンパイルで適用されなくなったアウトラインを削除します。

EXACT_TEXT_SIGNATURESプロシージャ

アウトラインの署名を完全なテキスト一致に基づいて計算されたものに更新します。

UPDATE_BY_CATプロシージャ

あるカテゴリにあるアウトラインのカテゴリを、新規のカテゴリに変更します。

UPDATE_SIGNATURESプロシージャ

アウトラインの署名を現行バージョンの署名に更新します。

CLEAR_USEDプロシージャ

このプロシージャは、アウトラインの使用済フラグを消去します。

構文

DBMS_OUTLN.CLEAR_USED (
name    IN    VARCHAR2);

パラメータ

表105-2 CLEAR_USEDプロシージャのパラメータ

パラメータ

説明

name

アウトライン名。

CREATE_OUTLINEプロシージャ

このプロシージャは、ハッシュ値および子番号で識別される共有カーソルからSQL文を再解析することによってアウトラインを生成します。

構文

DBMS_OUTLN.CREATE_OUTLINE (
hash_value    IN NUMBER,
child_number  IN NUMBER,
category      IN VARCHAR2 DEFAULT 'DEFAULT');

パラメータ

表105-3 CREATE_OUTLINEプロシージャのパラメータ

パラメータ

説明

hash_value

対象となる共有カーソルを識別するハッシュ値。

child_number

対象となる共有カーソルの子番号。

category

アウトラインを作成するカテゴリ(オプション)。

DROP_BY_CATプロシージャ

このプロシージャは、特定のカテゴリに属しているアウトラインを削除します。特に指定されないかぎりアウトラインはDEFAULTカテゴリに置かれますが、ユーザーはオプションとして、所有するアウトラインをカテゴリと呼ばれる複数のグループにグループ化できます。

構文

DBMS_OUTLN.DROP_BY_CAT (
cat VARCHAR2);

パラメータ

表105-4 DROP_BY_CATプロシージャのパラメータ

パラメータ

説明

cat

削除するアウトラインのカテゴリ。

使用上の注意

このプロシージャでは、1回のコールでアウトラインのカテゴリがパージされます。

例

この例では、DEFAULTカテゴリ内にあるすべてのアウトラインを削除します。

DBMS_OUTLN.DROP_BY_CAT('DEFAULT');

DROP_UNUSEDプロシージャ

このプロシージャは、SQL文のコンパイルで適用されなくなったアウトラインを削除します。

構文

DBMS_OUTLN.DROP_UNUSED;

使用上の注意

DROP_UNUSEDは、動的SQLの結果として作成された使用できるのが1回かぎりのSQL文のアプリケーションによって生成されたアウトラインに対して使用できます。このプロシージャが使用されたアウトラインは使用されなくなり、重要なディスク領域が解放されます。

EXACT_TEXT_SIGNATURESプロシージャ

このプロシージャは、アウトラインの署名を完全なテキスト一致に基づいて計算されたものに更新します。

構文

DBMS_OUTLN.EXACT_TEXT_SIGNATURES;

使用上の注意

このプロシージャは、アウトラインを8.1.6以前のリリース用にダウングレードする目的にのみ適切です。

UPDATE_BY_CATプロシージャ

このプロシージャは、あるカテゴリにあるすべてのアウトラインのカテゴリを、新規のカテゴリに変更します。

構文

DBMS_OUTLN.UPDATE_BY_CAT (
oldcat    VARCHAR2 default 'DEFAULT',
newcat    VARCHAR2 default 'DEFAULT');

パラメータ

表105-5 UPDATE_BY_CATプロシージャのパラメータ

パラメータ

説明

oldcat

アウトラインの現行カテゴリ。

newcat

アウトラインの新規カテゴリ。

UPDATE_SIGNATURESプロシージャ

このプロシージャは、アウトラインの署名を現行バージョンの署名に更新します。

構文

DBMS_OUTLN.UPDATE_SIGNATURES;

使用上の注意

このプロシージャは、以前のリリースで生成されたアウトラインをインポートした場合に、その署名が現行リリースの計算アルゴリズムに適合することを確認するために実行する必要があります。

106 DBMS_OUTPUT

DBMS_OUTPUTパッケージによって、ストアド・プロシージャ、パッケージおよびトリガーからメッセージを送信できます。このパッケージは、PL/SQLデバッグ情報の表示に特に便利です。

この章では、次の項目について説明します。

- DBMS_OUTPUTの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例外

- ルールおよび制限

- 例

- データ構造

- 表タイプ

- オブジェクト・タイプ

- DBMS_OUTPUTサブプログラムの要約

DBMS_OUTPUTの使用方法

この項では、DBMS_OUTPUTパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例外

- ルールおよび制限

- 例

概要

通常、このパッケージは、デバッグに使用されるか、あるいはメッセージとレポート(プロシージャにSQLコマンドDESCRIBEを適用するなどして生成)をSQL*DBAまたはSQL*Plusに表示するために使用されます。

このパッケージに含まれているPUTプロシージャおよびPUT_LINEプロシージャによって、別のトリガー、プロシージャまたはパッケージで読み込めるバッファに情報を設定できます。別のPL/SQLプロシージャまたは無名ブロックでは、GET_LINEプロシージャおよびGET_LINESプロシージャをコールして、バッファに入れた情報を表示できます。

パッケージを無効にすると、サブプログラムに対するすべてのコールが無視されます。これによって、クライアントが情報を処理できる場合のみにサブプログラムが使用可能になるように、アプリケーションを設計できます。

セキュリティ・モデル

dbmsotpt.sqlスクリプトは、ユーザーSYSとして実行する必要があります。これによって、パブリック・シノニムDBMS_OUTPUTが作成され、このパッケージに対するEXECUTE許可がpublicに付与されます。

使用上の注意

- GET_LINEをコールしない場合、またはSQL*Plusのスクリーンにメッセージを表示しない場合、バッファに入れたメッセージは無視されます。

- SQL*Plusは、SQL文または無名PL/SQLコールを発行した後にGET_LINESをコールします。

- SQL*PlusにSET SERVEROUTPUT ONを入力すると、次のコマンドが実行されます。

DBMS_OUTPUT.ENABLE (buffer_size => NULL);

この場合、出力に制限はありません。

- 通常は、アプリケーション・コードでDISABLEプロシージャまたはENABLEプロシージャを起動しないでください。SQL*Plusなどの外部ツールによって出力を表示するかどうかを制御できなくなる可能性があるためです。

注意:
DBMS_OUTPUTを使用して送信するメッセージは、送信サブプログラムまたはトリガーが完了するまでは実際に送信されません。プロシージャの実行中に出力をフラッシュするメカニズムはありません。

例外

DBMS_OUTPUTサブプログラムでアプリケーション・エラーORA-20000が発生すると、出力プロシージャは次のエラーを戻すことができます。

表106-1 DBMS_OUTPUTのエラー

エラー

説明

ORU-10027:

バッファのオーバーフロー。

ORU-10028:

行の長さのオーバーフロー。

ルールおよび制限

- 最大行サイズは32767バイトです。

- デフォルトのバッファ・サイズは20000バイトです。最小サイズは2000バイトで、最大サイズは無制限です。

例

例1: トリガーを使用した出力

トリガーを使用して、デバッグ処理の結果を出力できます。たとえば、次のコマンドを実行するトリガーをコード化できます。

DBMS_OUTPUT.PUT_LINE('I got here:'||:new.col||' is the new value');

DBMS_OUTPUTパッケージを使用可能にした場合、このPUT_LINEによって生成されたテキストはバッファに入れられ、トリガー文(トリガーを起動させるINSERT、DELETEまたはUPDATEが想定できます)の実行後に、情報行を取り出すことができます。次に例を示します。

BEGIN
DBMS_OUTPUT.GET_LINE(:buffer, :status);
END;

これによって、スクリーンにバッファを表示できます(オプション)。statusが0(ゼロ)以外で戻るまで、GET_LINEへのコールを繰り返します。パフォーマンス向上のためには、行の配列を戻すことができるGET_LINESプロシージャへのコールを使用してください。

例2: ストアド・プロシージャとトリガーのデバッグ

DBMS_OUTPUTパッケージは、一般的に、ストアド・プロシージャおよびトリガーをデバッグするために使用されます。また、「例3: オブジェクトに関する情報の取得」で示すように、このパッケージを使用すると、オブジェクトの情報を取り出し、その出力をフォーマットできます。

このファンクションは、従業員表を問い合せて、指定部門の給与合計を戻します。このファンクションには、次のようにPUT_LINEプロシージャへのコールがいくつか含まれます。

CREATE FUNCTION dept_salary (dnum NUMBER) RETURN NUMBER IS
CURSOR emp_cursor IS
SELECT sal, comm FROM emp WHERE deptno = dnum;
total_wages    NUMBER(11, 2) := 0;
counter        NUMBER(10) := 1;
BEGIN

FOR emp_record IN emp_cursor LOOP
emp_record.comm := NVL(emp_record.comm, 0);
total_wages := total_wages + emp_record.sal
+ emp_record.comm;
DBMS_OUTPUT.PUT_LINE('Loop number = ' || counter ||
'; Wages = '|| TO_CHAR(total_wages));  /* Debug line */
counter := counter + 1; /* Increment debug counter */
END LOOP;
/* Debug line */
DBMS_OUTPUT.PUT_LINE('Total wages = ' ||
TO_CHAR(total_wages));
RETURN total_wages;

END dept_salary;

EMP表には、次の行が含まれているとします。

EMPNO          SAL     COMM     DEPT
-----        ------- -------- -------
1002           1500      500      20
1203           1000               30
1289           1000               10
1347           1000      250      20

ユーザーがSQL*Plusの次の文を実行したとします。

SET SERVEROUTPUT ON
VARIABLE salary NUMBER;
EXECUTE :salary := dept_salary(20);

出力ペインには、次の情報が表示されます。

Loop number = 1; Wages = 2000
Loop number = 2; Wages = 3250
Total wages = 3250

PL/SQL procedure successfully executed.

例3: オブジェクトに関する情報の取得

この例では、ユーザーはすでにEXPLAIN PLANコマンドを使用して、ある文の実行計画に関する情報を取り出し、その情報をPLAN_TABLEに格納してあります。また、ユーザーはこの文に文IDを割り当ててあります。EXPLAIN_OUTプロシージャの例では、表から情報を取り出し、出力をネスト形式でフォーマットして、SQL文を処理するステップの順序を厳密に記述しています。

/****************************************************************/
/* Create EXPLAIN_OUT procedure. User must pass STATEMENT_ID to */
/* to procedure, to uniquely identify statement.                */
/****************************************************************/
CREATE OR REPLACE PROCEDURE explain_out
(statement_id IN VARCHAR2) AS

-- Retrieve information from PLAN_TABLE into cursor EXPLAIN_ROWS.

CURSOR explain_rows IS
SELECT level, id, position, operation, options,
object_name
FROM plan_table
WHERE statement_id = explain_out.statement_id
CONNECT BY PRIOR id = parent_id
AND statement_id = explain_out.statement_id
START WITH id = 0
ORDER BY id;

BEGIN

-- Loop through information retrieved from PLAN_TABLE:

FOR line IN explain_rows LOOP

-- At start of output, include heading with estimated cost.

IF line.id = 0 THEN
DBMS_OUTPUT.PUT_LINE ('Plan for statement '
|| statement_id
|| ', estimated cost = ' || line.position);
END IF;

-- Output formatted information. LEVEL determines indention level.

DBMS_OUTPUT.PUT_LINE (lpad(' ',2*(line.level-1)) ||
line.operation || ' ' || line.options || ' ' ||
line.object_name);
END LOOP;

END;

関連項目:
第251章「UTL_FILE」

データ構造

DBMS_OUTPUTパッケージは、GET_LINESプロシージャで使用するために、2つのコレクション・タイプを宣言します。

表タイプ

CHARARR表タイプ

オブジェクト・タイプ

DBMSOUTPUT_LINESARRAYオブジェクト・タイプ

CHARARR表タイプ

このパッケージ・タイプは、PUTプロシージャおよびPUT_LINEプロシージャを介して送信されたテキストを取得するために、GET_LINESプロシージャで使用されます。

構文

TYPE CHARARR IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;

DBMSOUTPUT_LINESARRAYオブジェクト・タイプ

パッケージの外部で定義されたこのタイプは、PUTプロシージャおよびPUT_LINEプロシージャを介して送信されたテキストを取得するために、GET_LINESプロシージャで使用されます。

構文

TYPE DBMSOUTPUT_LINESARRAY IS
VARRAY(2147483647) OF VARCHAR2(32767);

DBMS_OUTPUTサブプログラムの要約

表106-2 DBMS_OUTPUTパッケージのサブプログラム

サブプログラム

説明

DISABLEプロシージャ

メッセージの出力を使用禁止にします。

ENABLEプロシージャ

メッセージの出力を使用可能にします。

GET_LINEプロシージャ

バッファから1行取り出します。

GET_LINESプロシージャ

バッファから行の配列を1つ取り出します。

NEW_LINEプロシージャ

PUTを使用して作成した行を終了します。

PUTプロシージャ

行の一部をバッファに設定します。

PUT_LINEプロシージャ

行をバッファに設定します。

注意:
NUMBERデータ・タイプを使用するPUTプロシージャは使用されなくなります。現在はサポートされていますが、このリリースに含まれているのは下位互換性を保つという理由にすぎません。

DISABLEプロシージャ

このプロシージャは、PUT、PUT_LINE、NEW_LINE、GET_LINEおよびGET_LINESへのコールを使用禁止にして、残っている情報のバッファをパージします。

ENABLEプロシージャと同様に、SQL*PlusのSERVEROUTPUTオプションを使用する場合は、このプロシージャをコールする必要はありません。

構文

DBMS_OUTPUT.DISABLE;

プラグマ

pragma restrict_references(disable,WNDS,RNDS);

ENABLEプロシージャ

このプロシージャは、PUT、PUT_LINE、NEW_LINE、GET_LINEおよびGET_LINESへのコールを使用可能にします。DBMS_OUTPUTパッケージがアクティブ化されていない場合、これらのプロシージャへのコールは無視されます。

構文

DBMS_OUTPUT.ENABLE (
buffer_size IN INTEGER DEFAULT 20000);

プラグマ

pragma restrict_references(enable,WNDS,RNDS);

パラメータ

表106-3 ENABLEプロシージャのパラメータ

パラメータ

説明

buffer_size

バッファに入れられる情報量の上限(バイト)。buffer_sizeをNULLに設定すると、制限なしと指定されます。

使用上の注意

- SQL*PlusのSET SERVEROUTPUTオプションを使用する場合は、このプロシージャをコールする必要はありません。

- ENABLEへのコールが複数の場合、buffer_sizeは最後に指定した値になります。buffer_size(NOT NULL)を指定する場合、最大サイズは1,000,000で、最小サイズは2,000です。

- 通常は、NULLを選択します。無制限のバッファをサポートしていない、初期のバージョンのデータベースとの下位互換性を保つために、デフォルトは20,000になっています。

GET_LINEプロシージャ

このプロシージャは、バッファに入れられた単一行の情報を取り出します。

構文

DBMS_OUTPUT.GET_LINE (
line    OUT VARCHAR2,
status  OUT INTEGER);

パラメータ

表106-4 GET_LINEプロシージャのパラメータ

パラメータ

説明

line

末尾の改行文字を除くバッファに入れられた単一行の情報が、戻されます。「ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます」のリスクを回避するために、このパラメータをVARCHAR2(32767)として宣言する必要があります。

status

コールが正常に完了すると、ステータス0(ゼロ)が戻ります。バッファにこれ以上行がない場合は、ステータス1が戻ります。

使用上の注意

- 単一行または行の配列をバッファから取り出すことができます。バッファに入れられた単一行の情報を取り出すには、GET_LINEプロシージャをコールします。サーバーへのコール数を減らすには、GET_LINESプロシージャをコールして、バッファから行の配列を取り出します。

- SQL*Plusを使用している場合は、特別のSET SERVEROUTPUT ONコマンドを使用して、この情報を自動的に表示できます。

- GET_LINEまたはGET_LINESをコールしてから、次にPUT、PUT_LINEまたはNEW_LINEをコールする前に取り出されなかった行は、次のメッセージとの混同を避けるために廃棄されます。

GET_LINESプロシージャ

このプロシージャは、バッファから行の配列を取り出します。

構文

DBMS_OUTPUT.GET_LINES (
lines       OUT     CHARARR,
numlines    IN OUT  INTEGER);

DBMS_OUTPUT.GET_LINES (
lines       OUT     DBMSOUTPUT_LINESARRAY,
numlines    IN OUT INTEGER);

パラメータ

表106-5 GET_LINESプロシージャのパラメータ

パラメータ

説明

lines

バッファに入れられた情報の行の配列を戻します。配列内の各行の最大長は32767バイトです。PL/SQL無名ブロックからプロシージャを実行する場合、3GLホスト・プログラムでVARRAYオーバーロード・バージョンを使用することをお薦めします。

numlines

バッファから取り出す行数。

プロシージャは、指定の行数を取り出した後、実際に取り出した行数を戻します。この数が要求した行数より少ない場合は、バッファにそれ以上行がない場合です。

使用上の注意

- 単一行または行の配列をバッファから取り出すことができます。バッファに入れられた単一行の情報を取り出すには、GET_LINEプロシージャをコールします。サーバーへのコール数を減らすには、GET_LINESプロシージャをコールして、バッファから行の配列を取り出します。

- SQL*Plusを使用している場合は、特別のSET SERVEROUTPUT ONコマンドを使用して、この情報を自動的に表示できます。

- GET_LINEまたはGET_LINESをコールしてから、次にPUT、PUT_LINEまたはNEW_LINEをコールする前に取り出されなかった行は、次のメッセージとの混同を避けるために廃棄されます。

NEW_LINEプロシージャ

このプロシージャは、行端マーカーを設定します。GET_LINEプロシージャおよびGET_LINESプロシージャは、改行で区切られた行を戻します。PUT_LINEプロシージャまたはNEW_LINEプロシージャへのすべてのコールによって、GET_LINE(S)で戻される行が生成されます。

構文

DBMS_OUTPUT.NEW_LINE;

PUTプロシージャ

このプロシージャは、行の一部をバッファに設定します。

注意:
NUMBERデータ・タイプを使用するPUTプロシージャは使用されなくなります。現在はサポートされますが、このリリースに含まれているのは下位互換性を保つという理由にすぎません。

構文

DBMS_OUTPUT.PUT (
item IN VARCHAR2);

パラメータ

表106-6 PUTプロシージャのパラメータ

パラメータ

説明

item

バッファに設定する項目。

例外

表106-7 PUTプロシージャの例外

エラー

説明

ORA-20000、ORU-10027:

バッファのオーバーフロー。バッファは<buf_limit>バイトに制限されています。

ORA-20000、ORU-10028:

行の長さのオーバーフロー。各行につき32767バイトに制限されています。

使用上の注意

- PUTを複数回コールすることによって個別に情報行を作成するか、PUT_LINEをコールして情報行全体をバッファに設定することができます。

- PUT_LINEをコールすると、指定した項目には行端マーカーが自動的に付きます。PUTをコールして行を作成する場合は、NEW_LINEをコールして行端マーカーを追加する必要があります。GET_LINEおよびGET_LINESは、改行文字で終了していない行は戻しません。

- 行が行制限を超えた場合は、エラー・メッセージを受信します。

- PUTまたはPUT_LINEで作成した出力はバッファに入れられます。この出力は、それをバッファに入れたPL/SQLプログラム・ユニットがコール元に戻るまで取り出せません。
たとえば、SQL*Plusは、PL/SQLプログラムが完了するまでDBMS_OUTPUTメッセージを表示しません。PL/SQLプログラム内でDBMS_OUTPUTバッファをフラッシュするメカニズムはありません。

SQL> SET SERVEROUTPUT ON
SQL> BEGIN
2  DBMS_OUTPUT.PUT_LINE ('hello');
3  DBMS_LOCK.SLEEP (10);
4  END;

PUT_LINEプロシージャ

このプロシージャは、行をバッファに設定します。

注意:
NUMBERデータ・タイプを使用するPUT_LINEプロシージャは使用されなくなります。現在はサポートされますが、このリリースに含まれているのは下位互換性を保つという理由にすぎません。

構文

DBMS_OUTPUT.PUT_LINE (
item IN VARCHAR2);

パラメータ

表106-8 PUT_LINEプロシージャのパラメータ

パラメータ

説明

item

バッファに設定する項目。

例外

表106-9 PUT_LINEプロシージャの例外

エラー

説明

ORA-20000、ORU-10027:

バッファのオーバーフロー。バッファは<buf_limit>バイトに制限されています。

ORA-20000、ORU-10028:

行の長さのオーバーフロー。各行につき32767バイトに制限されています。

使用上の注意

- PUTを複数回コールすることによって個別に情報行を作成するか、PUT_LINEをコールして情報行全体をバッファに設定することができます。

- PUT_LINEをコールすると、指定した項目には行端マーカーが自動的に付きます。PUTをコールして行を作成する場合は、NEW_LINEをコールして行端マーカーを追加する必要があります。GET_LINEおよびGET_LINESは、改行文字で終了していない行は戻しません。

- 行が行制限を超えた場合は、エラー・メッセージを受信します。

- PUTまたはPUT_LINEで作成した出力はバッファに入れられます。この出力は、それをバッファに入れたPL/SQLプログラム・ユニットがコール元に戻るまで取り出せません。
たとえば、SQL*Plusは、PL/SQLプログラムが完了するまでDBMS_OUTPUTメッセージを表示しません。PL/SQLプログラム内でDBMS_OUTPUTバッファをフラッシュするメカニズムはありません。次に例を示します。

SQL> SET SERVEROUTPUT ON
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE ('hello');
3 DBMS_LOCK.SLEEP (10);
4 END;

107 DBMS_PARALLEL_EXECUTE

DBMS_PARALLEL_EXECUTEパッケージを使用すると、表データをパラレルで増分更新できるようになります。

関連項目:

- 『Oracle Database開発ガイド』

- 『Oracle Databaseリファレンス』

この章では、次の項目について説明します。

- DBMS_PARALLEL_EXECUTEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 例外

- 例

- DBMS_PARALLEL_EXECUTEサブプログラムの要約

DBMS_PARALLEL_EXECUTEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 例外

- 例

概要

このパッケージを使用すると、次の2つの手順で、表データをパラレルで増分更新できます。

1. 表内の一連の行を、より小さいサイズのチャンクにグループ化します。

2. ユーザーが指定した文をこれらのチャンクに対してパラレルで実行し、各チャンクの処理の終了時にコミットします。

このパッケージでは、パラレル実行タスクという概念が導入されています。このタスクによって、PL/SQLブロックのパラレル実行(通常は表データの更新)に関連付けられている様々な手順がグループ分けされます。

すべてのパッケージのサブルーチン(GENERATE_TASK_NAMEファンクションとTASK_STATUSプロシージャを除く)はコミットを実行します。

セキュリティ・モデル

DBMS_PARALLEL_EXECUTEは、PUBLICに付与されているSYS所有のパッケージです。

すべてのユーザーがパラレル実行タスクを作成または実行し、USERビューにアクセスできます。

ADM_PARALLEL_EXECUTE_TASKロールを持つユーザーは、管理ルーチン(ADM_という接頭辞で修飾されているもの)を実行し、DBAビューにアクセスすることができます。

管理ルーチンは別として、すべてのサブプログラムによって現行のユーザーが所有しているタスクが参照されます。

チャンクをパラレル実行するには、CREATE JOBシステム権限が必要です。

CHUNK_BY_SQL、RUN_TASK、RESUME_TASKサブプログラムは問合せを要求し、DBMS_SQLを使用して実行します。DBMS_SQLインタフェースの実行者は、問合せがSQLインジェクションを含んでいないことを確認する必要があります。

定数

DBMS_PARALLEL_EXECUTEパッケージでは、次の表に示す定数が使用されます。

- 表107-1「DBMS_PARALLEL_EXECUTEの定数: チャンク・ステータス値」

- 表107-2「DBMS_PARALLEL_EXECUTEの定数: タスク・ステータス値」

表107-1 DBMS_PARALLEL_EXECUTEの定数: チャンク・ステータス値

定数

タイプ

値

説明

ASSIGNED

NUMBER

1

チャンクが処理の対象として割り当てられています。

PROCESSED

NUMBER

2

チャンクが正常に処理されました。

PROCESSED_WITH_ERROR

NUMBER

3

チャンクは処理されましたが、処理中にエラーが発生しました。

UNASSIGNED

NUMBER

0

チャンクが割り当てられていません。

表107-2 DBMS_PARALLEL_EXECUTEの定数: タスク・ステータス値

定数

タイプ

値

説明

CHUNKED

NUMBER

4

タスクに関連付けられている表はチャンクされていますが、どのチャンクも処理の対象として割り当てられていません。

CHUNKING

NUMBER

2

タスクに割り当てられている表がチャンクされています。

CHUNKING_FAILED

NUMBER

3

チャンクに失敗しました。

CRASHED

NUMBER

8

パラレル実行を使用する場合にのみ該当し、ジョブ・スレーブがクラッシュしたか、またはデータベースがEXECUTE中にクラッシュした場合に発生し、チャンクがASSIGNEDまたはUNASSIGNEDの状態のままになります。

CREATED

NUMBER

1

タスクがCREATE_TASKプロシージャによって作成されています。

FINISHED

NUMBER

6

すべてのチャンクがエラーなく処理されました。

FINISHED_WITH_ERROR

NUMBER

7

すべてのチャンクが処理されましたが、エラーが発生した場合もあります。

PROCESSING

NUMBER

5

一部のチャンクが処理の対象として割り当てられているか、または処理されています。

ビュー

DBMS_PARALLEL_EXECUTEパッケージは、『Oracle Databaseリファレンス』にリストされているビューを使用します。

- DBA_PARALLEL_EXECUTE_CHUNKS

- DBA_PARALLEL_EXECUTE_TASKS

- USER_PARALLEL_EXECUTE_CHUNKS

- USER_PARALLEL_EXECUTE_TASKS

例外

次の表に、DBMS_PARALLEL_EXECUTEで発生する例外を示します。

表107-3 DBMS_PARALLEL_EXECUTEで発生する例外

例外

エラー・コード

説明

CHUNK_NOT_FOUND

29499

指定されたチャンクが存在しません。

DUPLICATE_TASK_NAME

29497

同じタスク名が既存のタスクによって使用されています。

INVALID_STATE_FOR_CHUNK

29492

CREATEDまたはCHUNKING_FAILED状態でない表のチャンクを試行します。

INVALID_STATE_FOR_REDSUME

29495

実行の再開を試行しますが、タスクがFINISHED_WITH_ERRORまたはCRASHED状態ではありません。

INVALID_STATE_FOR_RUN

29494

CHUNKED状態でないタスクの実行を試行します。

INVALID_STATUS

29493

チャンク・ステータスへの無効な値の設定を試行します。

INVALID_TABLE

29491

表が物理表ではないか、またはIOTの場合に、ROWIDごとに表のチャンクを試行します。

MISSING_ROLE

29490

ユーザーには、必要なADM_PARALLEL_EXECUTEロールがありません。

TASK_NOT_FOUND

29498

指定されたtask_nameが存在しません。

例

次の例では、Oracle Databaseサンプル・スキーマについてのマニュアルのHuman Resources (HR)スキーマに関して実行します。JOB SYSTEM権限でHRスキーマを作成することが、要求されます。

ROWIDごとのチャンク

次の例は、このパッケージの最も一般的な使用方法を示しています。RUN_TASKプロシージャをコールした後、エラーをチェックし、エラーを検出した場合は再実行しています。

DECLARE
l_sql_stmt VARCHAR2(1000);
l_try NUMBER;
l_status NUMBER;
BEGIN

-- Create the TASK
DBMS_PARALLEL_EXECUTE.CREATE_TASK ('mytask');

-- Chunk the table by ROWID
DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_ROWID('mytask', 'HR', 'EMPLOYEES', true, 100);

-- Execute the DML in parallel
l_sql_stmt := 'update EMPLOYEES e
SET e.salary = e.salary + 10
WHERE rowid BETWEEN :start_id AND :end_id';
DBMS_PARALLEL_EXECUTE.RUN_TASK('mytask', l_sql_stmt, DBMS_SQL.NATIVE,
parallel_level => 10);

-- If there is an error, RESUME it for at most 2 times.
L_try := 0;
L_status := DBMS_PARALLEL_EXECUTE.TASK_STATUS('mytask');
WHILE(l_try < 2 and L_status != DBMS_PARALLEL_EXECUTE.FINISHED)
LOOP
L_try := l_try + 1;
DBMS_PARALLEL_EXECUTE.RESUME_TASK('mytask');
L_status := DBMS_PARALLEL_EXECUTE.TASK_STATUS('mytask');
END LOOP;

-- Done with processing; drop the task
DBMS_PARALLEL_EXECUTE.DROP_TASK('mytask');

END;
/

ユーザー指定のSQLごとのチャンク

ユーザーはCREATE_CHUNKS_BY_SQLプロシージャを使用して、チャンク・アルゴリズムを指定できます。次の例は、同じmanager_idを持つ行が一緒にまとめられ、1つのチャンクとして処理されることを示しています。

DECLARE
l_chunk_sql VARCHAR2(1000);
l_sql_stmt VARCHAR2(1000);
l_try NUMBER;
l_status NUMBER;
BEGIN

-- Create the TASK
DBMS_PARALLEL_EXECUTE.CREATE_TASK ('mytask');

-- Chunk the table by MANAGER_ID
l_chunk_sql := 'SELECT distinct manager_id, manager_id FROM employees';
DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_SQL('mytask', l_chunk_sql, false);

-- Execute the DML in parallel
--   the WHERE clause contain a condition on manager_id, which is the chunk
--   column. In this case, grouping rows is by manager_id.
l_sql_stmt := 'update EMPLOYEES e
SET e.salary = e.salary + 10
WHERE manager_id between :start_id and :end_id';
DBMS_PARALLEL_EXECUTE.RUN_TASK('mytask', l_sql_stmt, DBMS_SQL.NATIVE,
parallel_level => 10);

-- If there is error, RESUME it for at most 2 times.
L_try := 0;
L_status := DBMS_PARALLEL_EXECUTE.TASK_STATUS('mytask');
WHILE(l_try < 2 and L_status != DBMS_PARALLEL_EXECUTE.FINISHED)
Loop
L_try := l_try + 1;
DBMS_PARALLEL_EXECUTE.RESUME_TASK('mytask');
L_status := DBMS_PARALLEL_EXECUTE.TASK_STATUS('mytask');
END LOOP;

-- Done with processing; drop the task
DBMS_PARALLEL_EXECUTE.DROP_TASK('mytask');

end;
/

ユーザー定義フレームワークでのチャンクの実行

チャンクは、RUN_TASKプロシージャを使用せずに、独自に定義したフレームワークで実行できます。次の例は、GET_ROWID_CHUNKプロシージャ、EXECUTE IMMEDIATE、SET_CHUNK_STATUSプロシージャを使用してチャンクを実行する方法を示しています。

DECLARE
l_sql_stmt varchar2(1000);
l_try number;
l_status number;
l_chunk_id number;
l_start_rowid rowid;
l_end_rowid rowid;
l_any_rows boolean;
CURSOR c1 IS SELECT chunk_id
FROM user_parallel_execute_chunks
WHERE task_name = 'mytask'
AND STATUS IN (DBMS_PARALLEL_EXECUTE.PROCESSED_WITH_ERROR,
DBMS_PARALLEL_EXECUTE.ASSIGNED);
BEGIN

-- Create the Objects, task, and chunk by ROWID
DBMS_PARALLEL_EXECUTE.CREATE_TASK ('mytask');
DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_ROWID('mytask', 'HR', 'EMPLOYEES', true, 100);

l_sql_stmt := 'update EMPLOYEES e
SET e.salary = e.salary + 10
WHERE rowid BETWEEN :start_id AND :end_id';

-- Execute the DML in his own framework
--
-- Process each chunk and commit.
-- After processing one chunk, repeat this process until
-- all the chunks are processed.
--
<<main_processing>>
LOOP
--
-- Get a chunk to process; if there is nothing to process, then exit the
-- loop;
--
DBMS_PARALLEL_EXECUTE.GET_ROWID_CHUNK('mytask',
l_chunk_id,
l_start_rowid,
l_end_rowid,
l_any_rows);
IF (l_any_rows = false) THEN EXIT; END IF;

--
-- The chunk is specified by start_id and end_id.
-- Bind the start_id and end_id and then execute it
--
-- If no error occured, set the chunk status to PROCESSED.
--
-- Catch any exception. If an exception occured, store the error num/msg
-- into the chunk table and then continue to process the next chunk.
--
BEGIN
EXECUTE IMMEDIATE l_sql_stmt using l_start_rowid, l_end_rowid;
DBMS_PARALLEL_EXECUTE.SET_CHUNK_STATUS('mytask',l_chunk_id,
DBMS_PARALLEL_EXECUTE.PROCESSED);
EXCEPTION WHEN OTHERS THEN
DBMS_PARALLEL_EXECUTE.SET_CHUNK_STATUS('mytask', l_chunk_id,
DBMS_PARALLEL_EXECUTE.PROCESSED_WITH_ERROR, SQLCODE, SQLERRM);
END;

--
-- Finished processing one chunk; Commit here
--
COMMIT;
END LOOP;

DBMS_PARALLEL_EXECUTEサブプログラムの要約

表107-4 DBMS_PARALLEL_EXECUTEパッケージのサブプログラム

サブプログラム

説明

ADM_DROP_CHUNKSプロシージャ

指定した所有者が所有している指定のタスクのすべてのチャンクを削除します。

ADM_DROP_TASKプロシージャ

指定したユーザーのタスクとすべての関連したチャンクを削除します。

ADM_TASK_STATUSファンクション

タスク・ステータスを戻します。

ADM_STOP_TASKプロシージャ

指定した所有者のタスクと関連したジョブ・スレーブを停止します。

CREATE_TASKプロシージャ

現行のユーザーのタスクを作成します。

CREATE_CHUNKS_BY_NUMBER_COLプロシージャ

指定した列ごとに、指定したタスクに関連付けられている表をチャンクします。

CREATE_CHUNKS_BY_ROWIDプロシージャ

ROWIDごとに、指定したタスクに関連付けられている表をチャンクします。

CREATE_CHUNKS_BY_SQLプロシージャ

ユーザー指定のSELECT文によって、指定したタスクに関連付けられている表をチャンクします。

DROP_TASKプロシージャ

タスクとすべての関連したチャンクを削除します。

DROP_CHUNKSプロシージャ

タスクのチャンクを削除します。

GENERATE_TASK_NAMEファンクション

タスクの一意の名前を戻します。

GET_NUMBER_COL_CHUNKプロシージャ

割り当てられていないNUMBERチャンクを取得し、ASSIGNEDに変更します。

GET_ROWID_CHUNKプロシージャ

割り当てられていないROWIDチャンクを取得し、ASSIGNEDに変更します。

PURGE_PROCESSED_CHUNKSプロシージャ

ステータスがPROCESSEDまたはPROCESSED_WITH_ERRORのすべての処理済チャンクを削除します。

RESUME_TASKプロシージャ

RUN_TASKプロシージャがエラーで終了した場合に指定したタスクを再試行するか、またはクラッシュが発生した場合にタスクを再開します。

RUN_TASKプロシージャ

指定したSQL文をチャンクに対してパラレル実行します。

SET_CHUNK_STATUSプロシージャ

チャンクのステータスを設定します。

STOP_TASKプロシージャ

タスクと関連したジョブ・スレーブを停止します。

TASK_STATUSプロシージャ

タスク・ステータスを戻します。

ADM_DROP_CHUNKSプロシージャ

このプロシージャは、指定した所有者が所有している指定のタスクのすべてのチャンクを削除します。

構文

DBMS_PARALLEL_EXECUTE.ADM_DROP_CHUNKS (
task_owner      IN  VARCHAR2,
task_name       IN  VARCHAR2);

パラメータ

表107-5 ADM_DROP_CHUNKSプロシージャのパラメータ

パラメータ

説明

task_owner

タスクの所有者。

task_name

タスクの名前。

ADM_DROP_TASKプロシージャ

このプロシージャは、指定したユーザーのタスクとすべての関連したチャンクを削除します。

構文

DBMS_PARALLEL_EXECUTE.ADM_DROP_TASK (
task_owner      IN  VARCHAR2,
task_name       IN  VARCHAR2);

パラメータ

表107-6 ADM_DROP_TASKプロシージャのパラメータ

パラメータ

説明

task_owner

タスクの所有者。

task_name

タスクの名前。

ADM_TASK_STATUSファンクション

このファンクションは、タスク・ステータスを戻します。

構文

DBMS_PARALLEL_EXECUTE.ADM_TASK_STATUS  (
task_owner      IN  VARCHAR2,
task_name       IN  VARCHAR2)
RETURN NUMBER;

パラメータ

表107-7 ADM_TASK_STATUSファンクションのパラメータ

パラメータ

説明

task_owner

タスクの所有者。

task_name

タスクの名前。

ADM_STOP_TASKプロシージャ

このプロシージャは、指定した所有者のタスクと関連したジョブ・スレーブを停止します。

構文

DBMS_PARALLEL_EXECUTE.ADM_STOP_TASK (
task_owner      IN  VARCHAR2,
task_name       IN  VARCHAR2);

パラメータ

表107-8 ADM_STOP_TASKプロシージャのパラメータ

パラメータ

説明

task_owner

タスクの所有者。

task_name

タスクの名前。

CREATE_TASKプロシージャ

このプロシージャは、現行のユーザーのタスクを作成します。task_nameとcurrent_userのペアは一意である必要があります。

構文

DBMS_PARALLEL_EXECUTE.CREATE_TASK (
task_name        IN   VARCHAR2,
comment          IN   VARCHAR2 DEFAULT NULL);

パラメータ

表107-9 CREATE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。task_nameには、関連した長さが128バイト以下の任意の文字列を指定できます。

comment

コメント・フィールド。コメントは4000バイト未満である必要があります。

CREATE_CHUNKS_BY_NUMBER_COLプロシージャ

このプロシージャは、指定した列ごとに、(指定したタスクに関連付けられている)表をチャンクします。指定する列はNUMBER列である必要があります。このプロシージャは、列のMIN値とMAX値を取得し、chunk_sizeに応じてその範囲を均等に分割します。チャンクは次のとおりです。

START_ID                              END_ID
---------------------------           ---------------------------
min_id_val                            min_id_val+1*chunk_size-1
min_id_val+1*chunk_size               min_id_val+2*chunk_size-1
…                                     …
min_id_val+i*chunk_size               max_id_val

構文

DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_NUMBER_COL (
task_name       IN  VARCHAR2,
table_owner     IN  VARCHAR2,
table_name      IN  VARCHAR2,
table_column    IN  VARCHAR2,
chunk_size      IN  NUMBER);

パラメータ

表107-10 CREATE_CHUNKS_BY_NUMBER_COLプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

table_owner

表の所有者。

table_name

表の名前。

table_column

NUMBER列の名前。

chunk_size

各チャンクの範囲。

CREATE_CHUNKS_BY_ROWIDプロシージャ

このプロシージャは、(指定したタスクに関連付けられている)表をROWIDごとにチャンクします。num_rowおよびnum_blockは、各チャンクのサイズの大まかな指針です。チャンクされる表は、ビューおよび表ファンクションを含む物理ROWIDのある物理表である必要があります。索引構成表は使用できません。

構文

DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_ROWID (
task_name       IN  VARCHAR2,
table_owner     IN  VARCHAR2,
table_name      IN  VARCHAR2,
by_row          IN  BOOLEAN,
chunk_size      IN  NUMBER);

パラメータ

表107-11 CREATE_CHUNKS_BY_ROWIDプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

table_owner

表の所有者。

table_name

表の名前。

by_row

chunk_sizeが行数を示す場合はTRUEを指定します。それ以外の場合、chunk_sizeはブロック数を示します。

chunk_size

各コミット・サイクルで処理する行またはブロックの概数。

CREATE_CHUNKS_BY_SQLプロシージャ

このプロシージャは、ユーザー指定のSELECT文によって、(指定したタスクに関連付けられている)表をチャンクします。各チャンクの範囲を戻すSELECT文には、start_idとend_idの2つの列が含まれている必要があります。タスクがROWIDごとにチャンクされる場合、これらの2つの列はROWIDタイプである必要があります。タスクがNUMBER列ごとにチャンクされる場合、これらの2つの列はNUMBERタイプである必要があります。このプロシージャによって、ユーザーは、ユーザー定義のチャンク・アルゴリズムを柔軟にデプロイできるようになります。

構文

DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_SQL (
task_name       IN  VARCHAR2,
sql_statement   IN  CLOB,
by_rowid        IN  BOOLEAN);

パラメータ

表107-12 CREATE_CHUNKS_BY_SQLプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

sql_statment

チャンクの範囲を戻すSQL。

by_rowid

表をROWIDごとにチャンクする場合はTRUEを指定します。

DROP_TASKプロシージャ

このプロシージャは、タスクとすべての関連したチャンクを削除します。

構文

DBMS_PARALLEL_EXECUTE.DROP_TASK (
task_name       IN VARCHAR2);

パラメータ

表107-13 DROP_TASKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

DROP_CHUNKSプロシージャ

このプロシージャは、タスクのチャンクを削除します。

構文

DBMS_PARALLEL_EXECUTE.DROP_CHUNKS (
task_name       IN VARCHAR2);

パラメータ

表107-14 DROP_CHUNKSプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

GENERATE_TASK_NAMEファンクション

このファンクションは、タスクの一意の名前を戻します。名前はprefixNの形式で示され、Nは順序番号です。接頭辞が指定されていない場合にデフォルトで生成される名前はTASK$_1、TASK$_2、TASK$_3などになります。接頭辞として'SCOTT'が指定されている場合の名前は、SCOTT1、SCOTT2などになります。

構文

DBMS_PARALLEL_EXECUTE.GENERATE_TASK_NAME (
prefix      IN      VARCHAR2 DEFAULT 'TASK$_')
RETURN VARCHAR2;

パラメータ

表107-15 GENERATE_TASK_NAMEファンクションのパラメータ

パラメータ

説明

prefix

タスク名の作成時に使用する接頭辞。

GET_NUMBER_COL_CHUNKプロシージャ

このプロシージャは、割り当てられていないNUMBERチャンクを取得し、ASSIGNEDに変更します。割り当てるチャンクがない場合、any_rowsはFALSEに設定されます。それ以外の場合、チャンクのchunk_id、startおよびend_idは、OUTパラメータとして戻されます。DBMS_PARALLEL_EXECUTE_CHUNKS$内のチャンク情報が次のように更新され、STATUSはASSIGNEDとなり、START_TIMESTAMPには現在の時間が記録され、END_TIMESTAMPは消去されます。

関連項目:
ビュー

構文

DBMS_PARALLEL_EXECUTE.GET_NUMBER_COL_CHUNK (
task_name       IN VARCHAR2,
chunk_id        OUT NUMBER,
start_rowid     OUT ROWID,
end_id          OUT ROWID,
any_rows        OUT BOOLEAN);

パラメータ

表107-16 GET_NUMBER_COL_CHUNKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

chunk_id

チャンクのchunk_id。

start_rowid

戻された範囲の開始ROWID。

end_id

戻された範囲の終了ROWID。

any_rows

範囲内に処理対象の行があるかどうかを示します。

使用上の注意

タスクがROWIDごとにチャンクされる場合は、get_rowid_rangeを使用します。タスクがNUMBER列ごとにチャンクされる場合は、get_number_col_rangeを使用します。ユーザーが不適切なファンクション・コールを行った場合、戻されるchunk_idとany_rowsの値は有効ですが、start_idとend_idはNULLとなります。

GET_ROWID_CHUNKプロシージャ

このプロシージャは、割り当てられていないROWIDチャンクを取得し、ASSIGNEDに変更します。割り当てるチャンクがない場合、any_rowsはFALSEに設定されます。それ以外の場合、チャンクのchunk_id、startおよびend_idは、OUTパラメータとして戻されます。DBMS_PARALLEL_EXECUTE_CHUNKS$内のチャンク情報が次のように更新され、STATUSはASSIGNEDとなり、START_TIMESTAMPには現在の時間が記録され、END_TIMESTAMPは消去されます。

関連項目:
ビュー

構文

DBMS_PARALLEL_EXECUTE.GET_ROWID_CHUNK (
task_name       IN VARCHAR2,
chunk_id        OUT NUMBER,
start_rowid     OUT ROWID,
end_id          OUT ROWID,
any_rows        OUT BOOLEAN);

パラメータ

表107-17 GET_ROWID_CHUNKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

chunk_id

チャンクのchunk_id。

start_rowid

戻された範囲の開始ROWID。

end_id

戻された範囲の終了ROWID。

any_rows

処理する行が範囲に含まれる可能性があることを示します。

使用上の注意

タスクがROWIDごとにチャンクされる場合は、get_rowid_rangeを使用します。タスクがNUMBER列ごとにチャンクされる場合は、get_number_col_rangeを使用します。ユーザーが不適切なファンクション・コールを行った場合、戻されるchunk_idとany_rowsの値は有効なままですが、start_idとend_idはNULLとなります。

PURGE_PROCESSED_CHUNKSプロシージャ

このプロシージャは、ステータスがPROCESSEDまたはPROCESSED_WITH_ERRORのすべての処理済チャンクを削除します。

構文

DBMS_PARALLEL_EXECUTE.PURGE_PROCESSED_CHUNKS (
task_name       IN VARCHAR2);

パラメータ

表107-18 PURGE_PROCESSED_CHUNKSプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

RESUME_TASKプロシージャ

このプロシージャは、RUN_TASKプロシージャがエラーで終了した場合は指定されたタスクを再試行し、クラッシュが発生した場合はタスクを再開します。タスクがCRASHEDまたはFINISHED_WITH_ERRORの状態の場合にのみ、このプロシージャを起動できます。クラッシュしたシリアル実行の場合、状態は処理中のままになります。FORCEオプションを使用すると、PROCESSING状態の任意のタスクを再開できます。ただし、クラッシュが発生したかどうかの確認は、各自で行います。このプロシージャによって、処理されていないチャンクの処理が再開されます。また、PROCESSED_WITH_ERRORまたはASSIGNED(クラッシュが原因)状態のチャンクは、コミットしなかったため処理されます。このプロシージャは、RUN_TASKプロシージャと同じ引数を使用します。task_nameを唯一の入力引数として使用するオーバーロードは、前のRUN_TASKプロシージャまたはRESUME_TASKプロシージャのコールで指定された引数を再利用します。

関連項目:
表107-2「DBMS_PARALLEL_EXECUTEの定数: タスク・ステータス値」

構文

DBMS_PARALLEL_EXECUTE.RESUME_TASK (
task_name                     IN  VARCHAR2,
sql_stmt                      IN  CLOB,
language_flag                 IN  NUMBER,
edition                       IN  VARCHAR2  DEFAULT NULL,
apply_crossedition_trigger    IN  VARCHAR2  DEFAULT NULL,
fire_apply_trigger            IN  BOOLEAN   DEFAULT TRUE,
parallel_level                IN  NUMBER    DEFAULT 0,
job_class                     IN  VARCHAR2  DEFAULT 'DEFAULT_JOB_CLASS',
force                         IN  BOOLEAN   DEFAULT FALSE);

DBMS_PARALLEL_EXECUTE.RESUME_TASK (
task_name                     IN  VARCHAR2,
force                         IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表107-19 RESUME_TASKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

sql_stmt

SQL文。:start_idと:end_idのプレースホルダを含んでいる必要があります。

language_flag

OracleでSQL文を処理する方法を決定します。次のオプションが認識されます。

- V6(または0)は、バージョン6の動作を指定します。

- NATIVE(または1)は、プログラムの接続先のデータベースに関する通常の動作を指定します。

- V7(または2)は、Oracle Databaseバージョン7の動作を指定します。

edition

文を実行するエディションを指定します。デフォルトは現行のエディションです。

apply_crossedition_trigger

指定したSQLに適用する転送crosseditionトリガーの未修飾の名前を指定します。この名前は、文が実行されるエディションおよびcurrent_schema設定を使用して解決されます。トリガーは、文を実行するユーザーによって所有されている必要があります。

fire_apply_trigger

指定したapply_crossedition_triggerをそれ自体実行するか、他のトリガーを選択する場合のガイドとしてのみ使用するかを示します。

parallel_level

パラレル・ジョブの数を指定します。シリアル実行する場合はゼロを指定し、デフォルトの並列度を使用する場合はNULLを指定します。

job_class

パラレル実行の場合、ジョブはすべて指定したジョブ・クラスに属します。

force

TRUEに設定すると、ステータスがPROCESSINGの場合、エラーは発生しません。

例

チャンク表に次のチャンク範囲が含まれているとします。

START_ID                              END_ID
---------------------------           ---------------------------
1                                     10
11                                    20
21                                    30

指定したSQL文は、次のとおりです。

UPDATE employees
SET salary = salary + 10
WHERE e.employee_id  BETWEEN :start_id AND :end_id

このプロシージャは、次の文をパラレル実行します。

UPDATE employees
SET salary =.salary + 10  WHERE employee_id BETWEEN 1 and 10;
COMMIT;

UPDATE employees
SET salary =.salary + 10  WHERE employee_id between 11 and 20;
COMMIT;

UPDATE employees
SET salary =.salary + 10  WHERE employee_id between 21 and 30;
COMMIT;

RUN_TASKプロシージャ

このプロシージャは、指定した文(sql_stmt)をチャンクに対してパラレル実行します。各チャンクの処理後に、コミットが行われます。指定する文には、それぞれstart_idおよびend_idと呼ばれる2つのプレースホルダが必要で、これらは処理されるチャンクの範囲を表します。各プレースホルダのタイプは、ROWIDベースのチャンクを使用した場合はROWID、NUMBERベースのチャンクを使用した場合はNUMBERである必要があります。

構文

DBMS_PARALLEL_EXECUTE.RUN_TASK (
task_name                     IN  VARCHAR2,
sql_stmt                      IN  CLOB,
language_flag                 IN  NUMBER,
edition                       IN  VARCHAR2  DEFAULT NULL,
apply_crossedition_trigger    IN  VARCHAR2  DEFAULT NULL,
fire_apply_trigger            IN  BOOLEAN   DEFAULT TRUE,
parallel_level                IN  NUMBER    DEFAULT 0,
job_class                     IN  VARCHAR2  DEFAULT 'DEFAULT_JOB_CLASS');

パラメータ

表107-20 RUN_TASKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

sql_stmt

SQL文。:start_idと:end_idのプレースホルダを含んでいる必要があります。

language_flag

OracleでSQL文を処理する方法を決定します。次のオプションが認識されます。

- V6(または0)は、バージョン6の動作を指定します。

- NATIVE(または1)は、プログラムの接続先のデータベースに関する通常の動作を指定します。

- V7(または2)は、Oracle Databaseバージョン7の動作を指定します。

edition

文を実行するエディションを指定します。デフォルトは現行のエディションです。

apply_crossedition_trigger

指定したSQLに適用する転送crosseditionトリガーの未修飾の名前を指定します。この名前は、文が実行されるエディションおよびcurrent_schema設定を使用して解決されます。トリガーは、文を実行するユーザーによって所有されている必要があります。

fire_apply_trigger

指定したapply_crossedition_triggerをそれ自体実行するか、他のトリガーを選択する場合のガイドとしてのみ使用するかを示します。

parallel_level

パラレル・ジョブの数を指定します。シリアル実行する場合はゼロを指定し、デフォルトの並列度を使用する場合はNULLを指定します。

job_class

パラレル実行の場合、ジョブは指定したジョブ・クラスに属します。

使用上の注意

- SQL文は現行のユーザーとして実行されます。

- このサブプログラムはエラー上で再実行されることがあるため、同等ではないRUN_TASKに文を送信する場合は細心の注意が必要です。

- チャンクはDBMS_SCHEDULERジョブ・スレーブによってパラレル実行できます。したがって、パラレル実行にはCREATE JOBシステム権限が必要です。ジョブ・スレーブは現行のユーザーに基づいて作成されます。ジョブ・スレーブのデフォルト数は、Oracleのパラメータcpu_countおよびparallel_threads_per_cpuの積として計算されます。Real Application Clustersのインストールでは、ジョブ・スレーブの数はクラスタ内の各ノードの個々の設定の合計になります。このプロシージャは、すべてのチャンクが処理されたときにのみ戻されます。パラレル実行の場合、このプロシージャはジョブ・スレーブがすべて完了したときにのみ戻されます。

例

チャンク表に次のチャンク範囲が含まれているとします。

START_ID                              END_ID
---------------------------           ---------------------------
1                                     10
11                                    20
21                                    30

指定したSQL文は、次のとおりです。

UPDATE employees
SET salary = salary + 10
WHERE e.employee_id  BETWEEN :start_id AND :end_id

このプロシージャは、次の文をパラレル実行します。

UPDATE employees
SET salary =.salary + 10  WHERE employee_id BETWEEN 1 and 10;
COMMIT;

UPDATE employees
SET salary =.salary + 10  WHERE employee_id between 11 and 20;
COMMIT;

UPDATE employees
SET salary =.salary + 10  WHERE employee_id between 21 and 30;
COMMIT;

SET_CHUNK_STATUSプロシージャ

このプロシージャは、チャンクのステータスを設定します。チャンクのSTART_TIMESTAMPおよびEND_TIMESTAMPは、新しいステータスに応じて更新されます。

Value of the new Status               Side Effect
---------------------------           ---------------------------
UNASSIGNED                            START_TIMESTAMP and END_TIMESTAMP
will be cleared
ASSIGNED                              START_TIMESTAMP will be the current time
and END_TIMESTAMP will be cleared.
PROCESSED or PROCESSED_WITH_ERROR     The current time will be recorded
in END_TIMESTAMP

関連項目:
ビュー

構文

DBMS_PARALLEL_EXECUTE.SET_CHUNK_STATUS (
task_name       IN VARCHAR2,
chunk_id        OUT NUMBER,
status          IN  NUMBER,
err_num         IN  NUMBER   DEFAULT NULL,
err_msg         IN  VARCHAR2 DEFAULT NULL);

パラメータ

表107-21 SET_CHUNK_STATUSプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

chunk_id

チャンクのchunk_id。

status

チャンクのステータス: UNASSIGNED、ASSIGNED、PROCESSED、PROCESSED_WITH_ERROR

err_num

チャンクの処理中に戻されたエラー・コード

err_msg

チャンクの処理中に戻されたエラー・メッセージ

STOP_TASKプロシージャ

このプロシージャは、タスクと関連したジョブ・スレーブを停止します。

構文

DBMS_PARALLEL_EXECUTE.STOP_TASK (
task_name       IN VARCHAR2);

パラメータ

表107-22 STOP_TASKプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

TASK_STATUSプロシージャ

このプロシージャは、タスク・ステータスを戻します。

構文

DBMS_PARALLEL_EXECUTE.TASK_STATUS (
task_name       IN VARCHAR2);

パラメータ

表107-23 TASK_STATUSプロシージャのパラメータ

パラメータ

説明

task_name

タスクの名前。

108 DBMS_PART

DBMS_PARTパッケージは、パーティション化されたオブジェクトのメンテナンスおよび管理操作を行うためのインタフェースを提供します。

関連項目:

- 関連するビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_PARTの使用

- セキュリティ・モデル

- 使用上の注意

- DBMS_PARTサブプログラムの要約

DBMS_PARTの使用

- セキュリティ・モデル

- 使用上の注意

セキュリティ・モデル

DBMS_PARTは実行者権限のパッケージで、ユーザーの権限で実行されます。

使用上の注意

- DBMS_PARTでは、クリーンアップ・プロセス中に発生するすべてのエラーが無視されます。

- PL/SQL procedure executed successfullyというメッセージの表示には、少なくとも1つのクリーンアップ処理に成功する必要があります。

DBMS_PARTサブプログラムの要約

表108-1 DBMS_PARTパッケージのサブプログラム

サブプログラム

説明

CLEANUP_GIDXプロシージャ

最適化された非同期索引のメンテナンスが発生し、存在しなくなったデータ・セグメントを指すエントリがクリーンアップされたグローバル索引のリストを収集します。

CLEANUP_ONLINE_OPプロシージャ

失敗したオンライン移動操作をクリーンアップします。

CLEANUP_GIDXプロシージャ

非同期グローバル索引のメンテナンスを伴う、パーティションのメンテナンス操作が発生した場合、グローバル索引に、存在しなくなったデータ・セグメントを指すエントリが含まれる可能性があります。このような失効した索引行が原因で、表または索引に対する操作中に(その操作が問合せ、DML、DDLまたは分析のいずれであっても)、正確性に関する問題や破損が発生することはありません。このプロシージャは、このようなグローバル索引を識別してクリーンアップすることによって、記憶域とパフォーマンスの効率を保証します。

構文

DBMS_PART.CLEANUP_GIDX (
schema_name_in    IN   VARCHAR2 DEFAULT NULL,
table_name_in     IN   VARCHAR2 DEFAULT NULL);

パラメータ

表108-2 CLEANUP_GIDXファンクションのパラメータ

パラメータ

説明

schema_name_in

NULL以外を指定すると、特定のスキーマに含まれる表の索引のみが処理されます。

table_name_in

NULL以外を指定すると、特定のスキーマに含まれる特定の表の索引のみが処理されます(table_name_inがNULL以外の場合、schema_name_inにもNULL以外を指定する必要がある)。

CLEANUP_ONLINE_OPプロシージャ

ALTER TABLE ... MOVE PARTITION ... ONLINE処理の実行時には障害の可能性のある箇所が多くあります。このプロシージャでは、バックグラウンド処理(SMON)での実行を待つことなく、そのような失敗したオンライン移動操作を事前にクリーンアップします。

構文

DBMS_PART.CLEANUP_ONLINE_OP (
schema_name       IN   VARCHAR2 DEFAULT NULL,
table_name        IN   VARCHAR2 DEFAULT NULL,
partition_name    IN   VARCHAR2 DEFAULT NULL);

パラメータ

表108-3 CLEANUP_ONLINE_OPファンクションのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

table_name

スキーマの名前。

partition_name

パーティションの名前。

使用上の注意

- schema_name、table_nameおよびpartition_nameが指定されている場合は、これにより、指定されたパーティションの失敗したオンライン移動操作がクリーンアップされます。

- schema_nameおよびtable_nameが指定されている場合は、これにより、指定された表のすべてのパーティションにおける失敗したオンライン移動操作がすべてクリーンアップされます。

- schema_nameのみが指定されている場合は、これにより、スキーマ内ですべての失敗したオンライン移動操作がクリーンアップされます。

- 引数が指定されていない場合は、システム内で失敗したオンライン移動操作がすべてクリーンアップされます。

- その他のケースではすべてORA-20000が発生し、引数として無効な入力はユーザーに通知されます。

109 DBMS_PCLXUTIL

DBMS_PCLXUTILパッケージによって、パーティション単位でローカル索引を作成するためのパーティション内並列性が提供されます。各パーティションには1つの並列実行サーバー・プロセスしか使用されないため、ローカル索引の作成においてパーティション数で並列度が限定されるという制限をDBMS_PCLXUTILによって回避します。

関連項目:
パーティションおよび索引に関しては、いくつかのルールがあります。詳細は、『Oracle Database概要』および『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_PCLXUTILの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- DBMS_PCLXUTILサブプログラムの要約

DBMS_PCLXUTILの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

概要

DBMS_PCLXUTILはDBMS_JOBパッケージを使用して、パーティション表のローカル索引を作成するための高い並列度を提供します。これは、バックグラウンド・プロセスを使用した(DBMS_JOBを使用)非同期のパーティション間並列性と、パラレル実行サーバーを使用したパーティション内並列性の組合せで実現されます。

DBMS_PCLXUTILは、レンジ・パーティション化およびレンジ－ハッシュ・コンポジット・パーティション化の両方で機能します。

DBMS_PCLXUTILパッケージは、次のDBAタスク中に使用できます。

1. ローカル索引の作成
プロシージャBUILD_PART_INDEXは、ローカル索引のディクショナリ情報がすでに存在していることを前提としています。これは、UNUSABLEオプションを持つCREATE INDEX SQLコマンドを発行して行います。

CREATE INDEX <idx_name> on <tab_name>(...) local(...) unusable;

これにより、索引作成で時間がかかるディクショナリ・エントリの作成を、索引自体を作成せずに行うことができます。そして、プロシージャBUILD_PART_INDEXを起動して、指定の並列度でローカル索引の同時作成を行います。

EXECUTE dbms_pclxutil.build_part_index(4,4,<tab_name>,<idx_name>,FALSE);

コンポジット・パーティションについて、プロシージャは、そのコンポジット表のすべてのサブパーティションに対するローカル索引を自動的に作成します。

2. ローカル索引のメンテナンス
目的のパーティションを使用可能または使用禁止にマークし、BUILD_PART_INDEXプロシージャもローカル索引の選択的な再作成を可能にします。force_optパラメータは、これを上書きし、すべてのパーティションに対するローカル索引の作成方法を提供します。

ALTER INDEX <idx_name> local(...) unusable;

目的の(サブ)パーティション(UNUSABLEとマークされています)のみを再作成します。

EXECUTE dbms_pclxutil.build_part_index(4,4,<tab_name>,<idx_name>,FALSE);

force_opt = TRUEを使用して、すべての(サブ)パーティションを再作成します。

EXECUTE dbms_pclxutil.build_part_index(4,4,<tab_name>,<idx_name>,TRUE);

進捗レポートが作成され、プログラムの終了時に出力がスクリーンに表示されます(DBMS_OUTPUTパッケージは、最初にメッセージをバッファに書き込み、そのバッファをプログラムの終了時のみスクリーンにフラッシュするためです)。

セキュリティ・モデル

このユーティリティは、表の所有者としてのみ実行でき、他のユーザーとしては実行できません。

使用上の注意

DBMS_PCLXUTILでは、各パーティションに対してジョブが発行されます。INIT.ORAパラメータのJOB_QUEUE_PROCESSESを正しく設定して同時ジョブの数を制御するのは、ユーザーまたはDBAの責任です。正しい構文についての最小限度のエラー・チェックがあります。ジョブ・キュー・プロセスのトレース・ファイルに、エラーが報告されます。

ルールおよび制限

注意:
レンジ・パーティション化の最小互換モードは8.0で、レンジ－ハッシュ・コンポジット・パーティション化の最小互換モードは8i です。

DBMS_PCLXUTILパッケージはDBMS_JOBパッケージを使用しているため、DBMS_JOBに関する次の制限事項があることに注意してください。

- job_queue_processes初期化パラメータの適切な値を決定する必要があります。BUILD_PART_INDEX()をコールする前にジョブ・プロセスが開始されていない場合、パッケージは正しく機能しません。バックグラウンド・プロセスは、次のinit.oraパラメータで指定されます。

job_queue_processes=n   #the number of background processes = n

- 障害の状態はトレース・ファイルにのみレポートされ(DBMS_JOBの制限事項)、ユーザーへの対話的なフィードバックはできません。このパッケージは、失敗メッセージを出力して未完了のジョブをキューから削除し、j*.trcトレース・ファイルを調べるようにユーザーに要求します。

DBMS_PCLXUTILサブプログラムの要約

表109-1 DBMS_PCLXUTILパッケージのサブプログラム

サブプログラム

説明

BUILD_PART_INDEXプロシージャ

パーティション単位でローカル索引を作成するためのパーティション内並列性を提供します。

BUILD_PART_INDEXプロシージャ

このプロシージャは、パーティション単位でローカル索引を作成するためのパーティション内並列性を提供します。

構文

DBMS_PCLXUTIL.BUILD_PART_INDEX (
jobs_per_batch  IN NUMBER   DEFAULT 1,
procs_per_job   IN NUMBER   DEFAULT 1,
tab_name        IN VARCHAR2 DEFAULT NULL,
idx_name        IN VARCHAR2 DEFAULT NULL,
force_opt       IN BOOLEAN  DEFAULT FALSE);

パラメータ

表109-2 BUILD_PART_INDEXプロシージャのパラメータ

パラメータ

説明

jobs_per_batch

パーティション単位のローカル索引同時作成の数。

procs_per_job

各ローカル索引作成で使用されるパラレル実行サーバーの数(1 <= procs_per_job <= max_slaves)。

tab_name

パーティション表の名前(表が存在しない、またはパーティション化されていない場合は例外が発生します)。

idx_name

ローカル索引に指定する名前(ローカル索引が表tab_nameに作成されていない場合は例外が発生します)。

force_opt

TRUEの場合は、すべてのパーティション索引の再作成を強制します。それ以外の場合は、UNUSABLEにマークされたパーティションのみを再作成します。

使用上の注意

このユーティリティは、表の所有者としてのみ実行でき、他のユーザーとしては実行できません。

例

PROJ001とPROJ002の2つのパーティション、およびローカル索引IDXを持つ表PROJECTが作成されるとします。

プロシージャBUILD_PART_INDEX(2,4,'PROJECT','IDX',TRUE)へのコールによって、次の出力が作成されます。

SQLPLUS> EXECUTE dbms_pclxutil.build_part_index(2,4,'PROJECT','IDX',TRUE);
Statement processed.
INFO: Job #21 created for partition PROJ002 with 4 slaves
INFO: Job #22 created for partition PROJ001 with 4 slaves

110 DBMS_PDB

DBMS_PDBパッケージでは、プラガブル・データベースに関するデータを調査および操作するインタフェースが提供されます。

関連項目:
関連トピックの詳細は、次のドキュメントを参照してください。

- マルチテナント環境内に監査ポリシーを作成する方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- 特定のコンテナに属するすべてのプラガブル・データベースの詳細は、『Oracle Databaseリファレンス』のDBA_PDBSビューに関する項、現在のインスタンスに関連付けられているプラガブル・データベースについては、V$PDBSビューに関する項を参照してください。

- プラガブル・データベースについては、『Oracle Database管理者ガイド』を参照してください。

- プロトコル・ポートとDNSマッピングの構成については、『Oracle XML DB開発者ガイド』を参照してください。

- プラガブル・データベースの作成については、『Oracle Database SQL言語リファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_PDBの使用

- 概要

- セキュリティ・モデル

- DBMS_PDBサブプログラムの要約

DBMS_PDBの使用

- 概要

- セキュリティ・モデル

概要

マルチテナント・コンテナ・データベース(CDB)は、ユーザーが作成した0個以上のプラガブル・データベース(PDB)を含むOracle Databaseです。DBMS_PDBパッケージでは、プラガブル・データベースに関するデータを調査および操作するインタフェースが提供されます。

セキュリティ・モデル

ユーザーがDBMS_PDBパッケージのプロシージャを実行するには、EXECUTE権限が必要です。

DBMS_PDBサブプログラムの要約

表110-1 DBMS_PDBパッケージのサブプログラム

サブプログラム

説明

CHECK_PLUG_COMPATIBILITYファンクション

プラガブル・データベース(PDB)について記述されたXMLファイルを使用して、特定のマルチテナント・コンテナ・データベース(CDB)に接続可能かどうかを判別します。

DESCRIBEプロシージャ

指定したプラガブル・データベース(PDB)が記述されたXMLファイルを生成します。

RECOVERプロシージャ

プラガブル・データベース(PDB)に属するデータファイルを使用することで、プラガブル・データベースについて記述されたXMLファイルを生成します。

CHECK_PLUG_COMPATIBILITYファンクション

このファンクションは、プラガブル・データベース(PDB)について記述されたXMLファイルを使用して、そのPDBを特定のマルチテナント・コンテナ・データベース(CDB)に接続できるかどうかを調べます。

構文

DBMS_PDB.CHECK_PLUG_COMPATIBILITY (
pdb_descr_file    IN   VARCHAR2,
pdb_name          IN   VARCHAR2 DEFAULT NULL)
RETURN BOOLEAN;

パラメータ

表110-2 CHECK_PLUG_COMPATIBILITYプロシージャのパラメータ

パラメータ

説明

pdb_descr_file

PDBの記述を含むXMLファイルのパスです。

pdb_name

特定のCDBに接続された際に、pdb_descr_fileで表されるPDBに指定される名前です。指定されていない場合は、pdb_descr_fileから名前が抽出されます。

戻り値

pdb_descr_fileで説明されるPDBが特定のCDBと互換性がある場合はTRUEで、それ以外の場合はFALSEです。このファンクションがFALSEを戻す場合は、PDB_PLUG_IN_VIOLATIONSデータ・ディクショナリ・ビューを問い合わせて、検出されたエラーに関する情報を見つけてください。

関連項目:
PDB_PLUG_IN_VIOLATIONSビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

DESCRIBEプロシージャ

このプロシージャは、指定したプラガブル・データベース(PDB)が記述されたXMLファイルを生成します。このファイルをCHECK_PLUG_COMPATIBILITYファンクションに渡すと、XMLファイルに記述されたPDBを特定のマルチテナント・コンテナ・データベース(CDB)に接続できるかどうかを特定できます。

構文

DBMS_PDB.DESCRIBE (
pdb_descr_file    IN   VARCHAR2,
pdb_name          IN   VARCHAR2 DEFAULT NULL);

パラメータ

表110-3 DESCRIBEプロシージャのパラメータ

パラメータ

説明

pdb_descr_file

PDBの記述を含むXMLファイルのパスです。

pdb_name

記述するPDBの名前です。リモート・データベースは @dblinkを含めることによって指定します。

使用上の注意

- pdb_nameが省略された場合、セッションの接続先となるPDBが記述されます。

- pdb_nameが省略され、セッションがルートに接続された場合、エラーが戻されます。

RECOVERプロシージャ

このプロシージャは、プラガブル・データベースに属するデータファイルを使用することで、プラガブル・データベースについて説明するXMLファイルを生成します。次に、このXMLファイルを使用することで、CREATE PLUGGABLE DATABASE文を使用してプラガブル・データベースをマルチテナント・コンテナ・データベース(CDB)に接続できます。このプロシージャは、プラガブル・データベースについて説明するXMLファイルが壊れるか、消失した場合に備えることを目的としています。

構文

DBMS_PDB.RECOVER (
pdb_descr_file    IN   VARCHAR2,
pdb_name          IN   VARCHAR2,
filenames         IN   VARCHAR2);

パラメータ

表110-4 RECOVERプロシージャのパラメータ

パラメータ

説明

pdb_descr_file

プラガブル・データベースの説明を含むXMLファイルのパスです。

pdb_name

プラガブル・データベースの名前です。

filenames

データファイル・パスのカンマ区切りリストまたはプラガブル・データベースのデータファイルを含むディレクトリ、あるいはその両方。

111 DBMS_PERF

DBMS_PERFパッケージでは、データベース・パフォーマンスを監視するためのアクティブ・レポートを生成するインタフェースを提供します。

関連項目:
PL/SQLでのSQLインジェクションの回避の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_PERFの使用

- 概要

- セキュリティ・モデル

- DBMS_PERFサブプログラムの概要

DBMS_PERFの使用

- 概要

- セキュリティ・モデル

概要

DBMS_PERFパッケージでは、データベース・パフォーマンス・レポートを生成するためのインタフェースを提供します。すべてのサブプログラムはアクティブ・レポートを戻します。これらのレポートは、システム・レベル、セッション・レベルまたはSQLレベルで生成できます。

セキュリティ・モデル

DBMS_PERFパッケージでは、DBAロールが必要です。

DBMS_PERFサブプログラムの概要

表111-1 DBMS_APPLICATION_INFOパッケージのサブプログラム

サブプログラム

説明

REPORT_PERFHUBファンクション

指定した期間のデータベース・システム全体のコンポジット・アクティブ・パフォーマンス・レポートを生成します。

REPORT_SESSIONファンクション

セッションがinst_id、sidおよびserial_numで識別される特定のデータベース・セッションのパフォーマンス・レポートを生成します。

REPORT_SQLファンクション

sql_idで識別される特定のSQL文のアクティブ・パフォーマンス・レポートを生成します。

REPORT_PERFHUBファンクション

このファンクションは、指定した期間のデータベース・システム全体のコンポジット・アクティブ・パフォーマンス・レポートを生成します。

構文

DBMS_PERF.REPORT_PERFHUB (
is_realtime          IN NUMBER   DEFAULT NULL,
outer_start_time     IN DATE     DEFAULT NULL,
outer_end_time       IN DATE     DEFAULT NULL,
selected_start_time  IN DATE     DEFAULT NULL,
selected_end_time    IN DATE     DEFAULT NULL,
inst_id              IN NUMBER   DEFAULT NULL,
dbid                 IN NUMBER   DEFAULT NULL,
monitor_list_detail  IN NUMBER   DEFAULT NULL,
workload_sql_detail  IN NUMBER   DEFAULT NULL,
addm_task_detail     IN NUMBER   DEFAULT NULL,
report_reference     IN VARCHAR2 DEFAULT NULL,
report_level         IN VARCHAR2 DEFAULT NULL,
type                 IN VARCHAR2 DEFAULT 'ACTIVE',
base_path            IN VARCHAR2 DEFAULT NULL);
RETURN CLOB;

パラメータ

表111-2 REPORT_PERFHUBファンクションのパラメータ

パラメータ

説明

is_realtime

1の場合、リアルタイム・モードです。NULL (デフォルト)または0の場合、履歴モードです。

outer_start_time

時間セレクタで示した範囲外の期間の開始時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0 (履歴)の場合、outer_end_timeより24時間前の時間になります。

- is_realtime=1 (リアルタイム・モード)の場合、outer_end_timeより1時間前の時間になります。

outer_end_time

時間セレクタで示した範囲外の期間の終了時間。NULL (デフォルト)の場合、最新のAWRスナップショットになります。

- is_realtime=0 (履歴)の場合、最新のAWRスナップショットになります。

- is_realtime=1 (リアルタイム・モード)の場合、これが現在時間になります(入力は無視されます)。

selected_start_time

選択した開始時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0の場合、selected_end_timeより1時間前の時間になります。

- is_realtime=1の場合、selected_end_timeより5分前の時間になります。

selected_end_time

選択した終了時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0の場合、最新のAWRスナップショットになります。

- is_realtime=1の場合、現在時間になります。

inst_id

データを取得するためのインスタンスID。

- -1の場合、現在のインスタンスが対象となります。

- 番号を指定した場合、その番号のインスタンスが対象となります。

- NULL (デフォルト)の場合、すべてのインスタンスが対象となります。

dbid

問合せ対象のDBID。

- NULLの場合、現在のDBIDが対象となります。

- is_realtime=1の場合、DBIDはローカルのDBIDである必要があります。

monitor_list_detail

SQL監視リストの上位N個のSQ監視詳細を取得します。

- NULL (デフォルト)の場合、上位10個を取得します。

- 0の場合、監視リストの詳細は取得しません。

workload_sql_detail

ワークロードSQLリストの上位N個の監視詳細を取得します。

- NULL (デフォルト)の場合、上位10個を取得します。

- 0の場合、監視リストの詳細は取得しません。

addm_task_detail

最新のADDMタスクの最大N個のタスクを取得します。

- NULL (デフォルト)の場合、少なくともN個以下の使用可能なデータを取得します。

- 0の場合、ADDMタスク詳細は取得しません。

report_reference

SQL*Plusから使用する場合、NULLを指定する必要があります。

report_level

'typical'を指定すると、パフォーマンス・ハブのすべてのタブを取得します。

type

レポート・タイプ

- 'ACTIVE' (デフォルト)

- 'xml'を指定すると、XMLを戻します。

base_path

フレックスHTMLでは外部ファイルにアクセスする要があるため、HTMLリソースのURLパスを指定します。これはtype='ACTIVE'の場合にのみ有効で、通常は使用しません。デフォルト値を指定すると、OTNから必要なファイルを取得します。

使用上の注意

- 期間を選択すると、パフォーマンス情報がパフォーマンス・サブジェクト・エリアに基づいて収集および表示されます。

- 期間は、リアルタイムまたは履歴のいずれかです。

- リアルタイム・データを選択した場合、データ・ポイントが毎分使用可能であるため、より詳細なデータが表示されます。

- 履歴データを選択した場合は、異なるメトリックごとに分類されたより詳細なデータが表示されますが、データ・ポイントは自動ワークロード・リポジトリ(AWR)の間隔(通常、1時間)に平均化されます。

- is_real-timeが1(リアルタイム・モード)または0(履歴モード)のどちらであるかによって、パフォーマンス・ハブで使用可能なタブが異なります。

REPORT_SESSIONファンクション

このファンクションは、セッションがinst_id、sidおよびserial_numで識別される特定のデータベース・セッションのパフォーマンス・レポートを作成します。これらのパラメータのいずれかが欠落している場合、現在のセッションのレポートが作成されます。

セッション・レベルのパフォーマンス・レポートには、次のタブが含まれています。

- サマリー: このタブには、キー識別子、セッションの属性およびアクティビティ・データのサマリーが含まれています。また、リアルタイムSQL監視によって監視されたセッションで実行されたSQL、PLSQLブロックおよびデータベース操作(DBOP)のリストが含まれています。

- アクティビティ: このタブでは、このセッションの待機クラスによって分類されるアクティビティが示されます。このチャートで使用されるデータはアクティブ・セッション履歴(ASH)から取得されます。

- メトリック: このタブでは、長期間にわたる、選択したセッションの特定のキー・メトリックのチャートが示され、履歴モードでのみ使用可能です。示されるメトリックとして、CPU使用率、PGA使用率、IOスループットおよびIOリクエストがあります。

構文

DBMS_PERF.REPORT_SESSION (
inst_id              IN NUMBER   DEFAULT NULL,
sid                  IN NUMBER   DEFAULT NULL,
serial               IN NUMBER   DEFAULT NULL,
is_realtime          IN NUMBER   DEFAULT NULL,
outer_start_time     IN DATE     DEFAULT NULL,
outer_end_time       IN DATE     DEFAULT NULL,
selected_start_time  IN DATE     DEFAULT NULL,
selected_end_time    IN DATE     DEFAULT NULL,
dbid                 IN NUMBER   DEFAULT NULL,
monitor_list_detail  IN NUMBER   DEFAULT NULL,
report_reference     IN VARCHAR2 DEFAULT NULL,
report_level         IN VARCHAR2 DEFAULT NULL,
type                 IN VARCHAR2 DEFAULT 'ACTIVE',
base_path            IN VARCHAR2 DEFAULT NULL)
RETURN CLOB;

パラメータ

表111-3 REPORT_SESSIONファンクションのパラメータ

パラメータ

説明

inst_id

データを取得するためのインスタンスID。NULL (デフォルト)の場合、現在のセッションのインスタンスが対象となります。

sid

パフォーマンスを取得するためのセッションID。NULLの場合、現在のセッションが使用されます。

serial

セッションのシリアル番号。NULLの場合、セッションが接続されていれば、指定したsidのシリアル番号が使用されます。

is_realtime

1の場合、リアルタイム・モードです。NULL (デフォルト)または0の場合、履歴モードです。

outer_start_time

時間セレクタで示した範囲外の期間の開始時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0 (履歴)の場合、outer_end_timeより24時間前の時間になります。

- is_realtime=1 (リアルタイム・モード)の場合、outer_end_timeより1時間前の時間になります。

outer_end_time

時間セレクタで示した範囲外の期間の終了時間。NULL (デフォルト)の場合、最新のAWRスナップショットになります。

- is_realtime=0 (履歴)の場合、最新のAWRスナップショットになります。

- is_realtime=1 (リアルタイム・モード)の場合、これが現在時間になります(入力は無視されます)。

selected_start_time

選択した開始時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0の場合、selected_end_timeより1時間前の時間になります。

- is_realtime=1の場合、selected_end_timeより5分前の時間になります。

selected_end_time

選択した終了時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0の場合、最新のAWRスナップショットになります。

- is_realtime=1の場合、これが現在時間になります。

dbid

問合せ対象のDBID。

- NULLの場合、現在のDBIDが対象となります。

- is_realtime=1の場合、DBIDはローカルのDBIDである必要があります。

monitor_list_detail

SQL監視リストの上位N個のSQ監視詳細を取得します。

- NULL (デフォルト)の場合、上位10個を取得します。

- 0の場合、監視リストの詳細は取得しません。

report_reference

SQL*Plusから使用する場合、NULLを指定する必要があります。

report_level

'typical'を指定すると、セッション・ハブ(セッション詳細)のすべてのタブを取得します。

type

レポート・タイプ

- 'ACTIVE' (デフォルト)

- 'xml'を指定すると、XMLを戻します。

base_path

フレックスHTMLでは外部ファイルにアクセスする要があるため、HTMLリソースのURLパスを指定します。

REPORT_SQLファンクション

このファンクションでは、sql_idで識別される特定のSQL文のアクティブ・パフォーマンス・レポートを生成します。

SQLレベルのパフォーマンス・レポートには、次のタブが含まれています。

- サマリー: このタブには、SQLテキスト、ユーザー名、これを実行しているセッションおよび関連情報などのキー属性を持つSQL文の概要が含まれています。また、これには「計画」タブも含まれ、メモリーやAWRにあるSQL文の個別の計画ごとに統計情報およびアクティビティが表示されます。

- アクティビティ: このタブでは、このSQL文の待機クラスによって分類されるアクティビティが表示されます。このチャートで使用されるデータはアクティブ・セッション履歴(ASH)から取得されます。

- 実行統計: このタブには、この文の個別の計画ごとの統計情報とアクティビティ、およびその計画がグラフィカルな表形式で表示されます。

- 監視対象SQL: リアルタイムSQL監視によって監視されたSQL文のすべての実行がこのタブにリストされます。

- 計画管理: このタブには、SQL文に対するSQLプロファイルおよびSQL計画ベースラインが存在する場合、これらに関する情報が表示されます。

- 統計の履歴: このタブは履歴モードでのみ使用可能です。これには、異なる実行計画について、長期間にわたって作成された、実行数、I/O回数、処理済の行やその他の情報などの統計情報が含まれています。この情報はAWRから取得されます。

構文

DBMS_PERF.REPORT_SQL (
sql_id               IN varchar2 default null,
is_realtime          IN number   default null,
outer_start_time     IN date     default null,
outer_end_time       IN date     default null,
selected_start_time  IN date     default null,
selected_end_time    IN date     default null,
inst_id              IN number   default null,
dbid                 IN number   default null,
monitor_list_detail  IN number   default null,
report_reference     IN varchar2 default null,
report_level         IN varchar2 default null,    type                 IN varchar2 default 'ACTIVE',
base_path            IN varchar2 default null);
RETURN CLOB;

パラメータ

表111-4 REPORT_SQLファンクションのパラメータ

パラメータ

説明

sql_id

パフォーマンスを取得するためのSQL_ID。NULLの場合、前回実行されたSQL文のSQL詳細。

is_realtime

1の場合、リアルタイム・モードです。NULL (デフォルト)または0の場合、履歴モードです。

outer_start_time

時間セレクタで示した範囲外の期間の開始時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0 (履歴)の場合、outer_end_timeより24時間前の時間になります。

- is_realtime=1 (リアルタイム・モード)の場合、outer_end_timeより1時間前の時間になります。

outer_end_time

時間セレクタで示した範囲外の期間の終了時間。NULL (デフォルト)の場合、最新のAWRスナップショットになります。

- is_realtime=0 (履歴)の場合、最新のAWRスナップショットになります。

- is_realtime=1 (リアルタイム・モード)の場合、これが現在時間になります(入力は無視されます)。

selected_start_time

選択した開始時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0の場合、selected_end_timeより1時間前の時間になります。

- is_realtime=1の場合、selected_end_timeより5分前の時間になります。

selected_end_time

選択した終了時間。NULL (デフォルト)の場合、次のようになります。

- is_realtime=0の場合、最新のAWRスナップショットになります。

- is_realtime=1の場合、これが現在時間になります。

inst_id

データを取得するためのインスタンスID。NULL (デフォルト)の場合、現在のセッションのインスタンスが対象となります。

dbid

問合せ対象のDBID。

- NULLの場合、現在のDBIDが対象となります。

- is_realtime=1の場合、DBIDはローカルのDBIDである必要があります。

monitor_list_detail

SQL監視リストの上位N個のSQ監視詳細を取得します。

- NULL (デフォルト)の場合、上位10個を取得します。

- 0の場合、監視リストの詳細は取得しません。

report_reference

SQL*Plusから使用する場合、NULLを指定する必要があります。

report_level

'typical'を指定すると、パフォーマンス・ハブのすべてのタブを取得します。

type

レポート・タイプ

- 'ACTIVE' (デフォルト)

- 'xml'を指定すると、XMLを戻します。

base_path

フレックスHTMLでは外部ファイルにアクセスする要があるため、HTMLリソースのURLパスを指定します。

112 DBMS_PIPE

DBMS_PIPEパッケージによって、同じインスタンスにある複数のセッションの通信を行います。Oracleパイプは、UNIXで使用するパイプと概念は似ていますが、オペレーティング・システムのパイプ・メカニズムを使用して実装されていません。

この章では、次の項目について説明します。

- DBMS_PIPEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

- DBMS_PIPEサブプログラムの要約

DBMS_PIPEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

概要

パイプ機能には、次のような潜在的な応用例があります。

- 外部サービス・インタフェース: RDBMS外部にあるユーザー記述のサービスと通信できます。これは、共有サーバー・プロセスで効果的に行うことができるため、サービスの複数インスタンスが同時に実行されます。さらに、サービスは非同期で使用できます。サービスのリクエスタは、待機応答をブロックする必要がありません。リクエスタは、(タイムアウトに関係なく)後でチェックできます。このサービスは、Oracleがサポートする任意の3GL言語で記述できます。

- 独立したトランザクション: パイプは、独立したトランザクション(トリガーで検出されたセキュリティ違反のロギングなど)内で操作を実行できる別のセッションと通信できます。

- アラート(トランザクション以外): ポーリングするための待機プロセスを要求せずに、別のプロセスを転送できます。アプリケーションにアラートを通知するAFTER行またはAFTER文トリガーがある場合、アプリケーションは、このアラートをデータが変更された可能性を示すためのアラートとして処理します。アプリケーションはそのデータを読み込み、現行の値を取得します。これはAFTERトリガーなので、アプリケーションは、SELECT FOR UPDATEを行って正しいデータを読み込んだことを確認しようとします。

- デバッグ: トリガーおよびストアド・プロシージャは、デバッグ情報をパイプに送信できます。別のセッションは、パイプからの読込みを続行し、その内容をスクリーンに表示したりファイルに書き込むことができます。

- コンセントレータ: これは、少数のネットワーク接続に対して多数のユーザーがいる場合のユーザーの多重化や、複数のユーザー・トランザクションを1つのDBMSトランザクションに集中化する場合のパフォーマンス改善に役立ちます。

セキュリティ・モデル

セキュリティは、DBMS_PIPEパッケージのGRANT EXECUTEを使用して実現できます。これは、CREATE_PIPEファンクションのprivateパラメータを使用してパイプを作成し、特定の機能、特定のユーザーやロールへのパイプ名を表示するのみのカバー・パッケージを記述することによって行われます。

セキュリティ要件に応じて、パブリック・パイプまたはプライベート・パイプのいずれかを選択できます。

定数

maxwait   constant integer := 86400000; /* 1000 days */

メッセージの送受信を行うための最大待機時間です。

使用上の注意

Oracleパイプを介して送信する情報は、システム・グローバル領域(SGA)にバッファリングされます。パイプ内のすべての情報は、インスタンスがシャットダウンすると失われます。

注意:

パイプはトランザクションから独立しています。トランザクション制御に影響を与える可能性がある場合は、注意してパイプを使用してください。

DBMS_PIPEの操作は、次のトピックに関して行われます。

- パブリック・パイプ

- パイプへの書込みおよび読込み

- プライベート・パイプ

パブリック・パイプ

パブリック・パイプは、暗黙的または明示的に作成できます。暗黙的なパブリック・パイプの場合、パイプは最初の参照時に自動的に作成され、データがなくなると消去されます。パイプ記述子はSGAに格納されるため、空のパイプがキャッシュから削除されるまで、スペースを使用するオーバーヘッドが若干あります。

privateフラグをFALSEに設定し、CREATE_PIPEファンクションをコールして、明示的なパブリック・パイプを作成します。明示的に作成したパイプは、REMOVE_PIPEファンクションをコールして割当て解除する必要があります。

パブリック・パイプのドメインは、明示的または暗黙的にパイプが作成されたスキーマです。

パイプへの書込みおよび読込み

各パブリック・パイプは非同期に動作します。スキーマ・ユーザーがDBMS_PIPEパッケージに対するEXECUTE許可を持ち、パブリック・パイプ名を知っている場合にかぎり、任意の数のスキーマ・ユーザーがパブリック・パイプへの書込みを行うことができます。ただし、バッファに入っている情報を1人のユーザーが読み込むと、その情報はバッファから消去されるため、同じパイプの他のユーザーは読み込むことができません。

送信側セッションでは、PACK_MESSAGEプロシージャに1つ以上コールを行ってメッセージを作成します。このプロシージャは、セッションのローカル・メッセージ・バッファにメッセージを追加します。このバッファ内の情報は、メッセージ送信に使用するパイプ名を指定したSEND_MESSAGEファンクションをコールして送信されます。SEND_MESSAGEをコールすると、ローカル・バッファにスタックされたすべてのメッセージが送信されます。

メッセージを受信するプロセスは、メッセージを受信するパイプ名を指定したRECEIVE_MESSAGEファンクションをコールします。次に、UNPACK_MESSAGEプロシージャをコールして、メッセージ内の各項目にアクセスします。

プライベート・パイプ

CREATE_PIPEファンクションをコールして、プライベート・パイプを明示的に作成します。プライベート・パイプは、一度作成されると、REMOVE_PIPEファンクションをコールして明示的に割当て解除するまで共有メモリーに存続します。プライベート・パイプは、データベース・インスタンスがシャットダウンしたときにも割当て解除されます。

メモリーに暗黙的なパイプが存在し、そのパイプと作成しようとするプライベート・パイプが同じ名前の場合、プライベート・パイプは作成できません。この場合は、CREATE_PIPEからエラーが戻されます。

プライベート・パイプへのアクセスは、次のように限定されます。

- パイプ作成者と同じユーザーIDで実行中のセッション

- パイプ作成者と同じユーザーID権限ドメインで実行中のストアド・サブプログラム

- SYSDBAとして接続したユーザー

これ以外のユーザーがパイプ上のメッセージの送受信やパイプの削除を試みると、即時にエラーが発生します。別のユーザーが同じ名前のパイプを作成しようとしても、エラーが発生します。

パブリック・パイプと同様に、SEND_MESSAGEをコールする前にPACK_MESSAGEへのコールを使用して、最初にメッセージを作成する必要があります。同様に、RECEIVE_MESSAGEをコールしてメッセージを取り出してから、UNPACK_MESSAGEをコールしてメッセージ内の項目にアクセスする必要があります。

例外

DBMS_PIPEパッケージ・サブプログラムは、次のエラーを戻すことができます。

表112-1 DBMS_PIPEエラー

エラー

説明

ORA-23321:

パイプ名はNULLにできません。このエラーは、CREATE_PIPEファンクションまたはパイプ名をパラメータとして使用しているサブプログラムによって戻されます。

ORA-23322:

パイプへのアクセス権限が不十分です。このエラーは、パラメータ・リストにあるプライベート・パイプを参照するサブプログラムによって戻されます。

例

- 例1: デバッグ - PL/SQL

- 例3: システム・コマンドの実行

- 例4: 外部サービス・インタフェース

例1: デバッグ - PL/SQL

この例は、デバッグ情報をパイプに設定するために、PL/SQLプログラムがコールできるプロシージャを示しています。

CREATE OR REPLACE PROCEDURE debug (msg VARCHAR2) AS
status  NUMBER;
BEGIN
DBMS_PIPE.PACK_MESSAGE(LENGTH(msg));
DBMS_PIPE.PACK_MESSAGE(msg);
status := DBMS_PIPE.SEND_MESSAGE('plsql_debug');
IF status != 0 THEN
raise_application_error(-20099, 'Debug error');
END IF;
END debug;

例2: デバッグ - Pro*C

次のPro*Cコードでは、前述の例のPLSQL_DEBUGパイプから受信したメッセージが表示されます。Pro*Cセッションが別のウィンドウで実行されている場合、このセッションは、別のセッションで実行中のPL/SQLプログラムからデバッグ・プロシージャに送信されるメッセージの表示に使用できます。

#include <stdio.h>
#include <string.h>

EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
int     status;
int     msg_length;
char    retval[2000];
EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE SQLCA;

void sql_error();

main()
{

-- Prepare username:
strcpy(username.arr, "SCOTT/TIGER");
username.len = strlen(username.arr);

EXEC SQL WHENEVER SQLERROR DO sql_error();
EXEC SQL CONNECT :username;

printf("connected\n");

-- Start an endless loop to look for and print messages on the pipe:
FOR (;;)
{
EXEC SQL EXECUTE
DECLARE
len INTEGER;
typ INTEGER;
sta INTEGER;
chr VARCHAR2(2000);
BEGIN
chr := '';
sta := dbms_pipe.receive_message('plsql_debug');
IF sta = 0 THEN
DBMS_PIPE.UNPACK_MESSAGE(len);
DBMS_PIPE.UNPACK_MESSAGE(chr);
END IF;
:status := sta;
:retval := chr;
IF len IS NOT NULL THEN
:msg_length := len;
ELSE
:msg_length := 2000;
END IF;
END;
END-EXEC;
IF (status == 0)
printf("\n%.*s\n", msg_length, retval);
ELSE
printf("abnormal status, value is %d\n", status);
}
}

void sql_error()
{
char msg[1024];
int rlen, len;
len = sizeof(msg);
sqlglm(msg, &len, &rlen);
printf("ORACLE ERROR\n");
printf("%.*s\n", rlen, msg);
exit(1);
}

例3: システム・コマンドの実行

この例は、PL/SQLとPro*Cコードによって、PL/SQLストアド・プロシージャ(または無名ブロック)がPL/SQLプロシージャをコールし、コマンドをリスニングしているPro*Cプログラムにパイプを介してそのコマンドを送信する処理を示します。

Pro*Cプログラムはスリープして、名前付きパイプにメッセージが着信するのを待ちます。メッセージが着信すると、Pro*Cプログラムはこれを処理し、system()コールを使用したUNIXコマンドの実行、埋込みSQLを使用したSQLコマンドの実行など、必要なアクションを行います。

DAEMON.SQLは、PL/SQLパッケージ用のソース・コードです。このパッケージには、DBMS_PIPEパッケージを使用してPro*Cデーモンに対してメッセージを送受信するプロシージャが含まれています。完全なハンドシェイクが使用されていることに注意してください。このデーモンは、常にメッセージをパッケージに返信します(STOPコマンドの場合は除きます)。これによって、PL/SQLプロシージャはPro*Cデーモンが動作していることを確認できるため、デーモンのこの機能は重要です。

SQL*PlusまたはEnterprise Managerを使用して、無名PL/SQLブロックからDAEMONパッケージ・プロシージャをコールできます。次に例を示します。

SQLPLUS> variable rv number
SQLPLUS> execute :rv := DAEMON.EXECUTE_SYSTEM('ls -la');

これにより、UNIXシステムでは、Pro*Cデーモンによってコマンドsystem("ls -la")が実行されます。

最初にデーモンを実行する必要があることに留意してください。デーモンは、バックグラウンドで実行したり、デーモンをコールしたSQL*PlusまたはEnterprise Managerセッションの近くにある別のウィンドウで実行できます。

また、DAEMON.SQLは、DBMS_OUTPUTパッケージを使用して結果を表示します。この例を動作させるには、このパッケージに対するEXECUTE権限が必要です。

DAEMON.SQL例。次の例は、PL/SQL DAEMONパッケージのコード例です。

CREATE OR REPLACE PACKAGE daemon AS
FUNCTION execute_sql(command VARCHAR2,
timeout NUMBER DEFAULT 10)
RETURN NUMBER;

FUNCTION execute_system(command VARCHAR2,
timeout NUMBER DEFAULT 10)
RETURN NUMBER;

PROCEDURE stop(timeout NUMBER DEFAULT 10);
END daemon;
/
CREATE OR REPLACE PACKAGE BODY daemon AS

FUNCTION execute_system(command VARCHAR2,
timeout NUMBER DEFAULT 10)
RETURN NUMBER IS

status       NUMBER;
result       VARCHAR2(20);
command_code NUMBER;
pipe_name    VARCHAR2(30);
BEGIN
pipe_name := DBMS_PIPE.UNIQUE_SESSION_NAME;

DBMS_PIPE.PACK_MESSAGE('SYSTEM');
DBMS_PIPE.PACK_MESSAGE(pipe_name);
DBMS_PIPE.PACK_MESSAGE(command);
status := DBMS_PIPE.SEND_MESSAGE('daemon', timeout);
IF status <> 0 THEN
RAISE_APPLICATION_ERROR(-20010,
'Execute_system: Error while sending.  Status = ' ||
status);
END IF;

status := DBMS_PIPE.RECEIVE_MESSAGE(pipe_name, timeout);
IF status <> 0 THEN
RAISE_APPLICATION_ERROR(-20011,
'Execute_system: Error while receiving.
Status = ' || status);
END IF;

DBMS_PIPE.UNPACK_MESSAGE(result);
IF result <> 'done' THEN
RAISE_APPLICATION_ERROR(-20012,
'Execute_system: Done not received.');
END IF;

DBMS_PIPE.UNPACK_MESSAGE(command_code);
DBMS_OUTPUT.PUT_LINE('System command executed.  result = ' ||
command_code);
RETURN command_code;
END execute_system;

FUNCTION execute_sql(command VARCHAR2,
timeout NUMBER DEFAULT 10)
RETURN NUMBER IS

status       NUMBER;
result       VARCHAR2(20);
command_code NUMBER;
pipe_name    VARCHAR2(30);

BEGIN
pipe_name := DBMS_PIPE.UNIQUE_SESSION_NAME;

DBMS_PIPE.PACK_MESSAGE('SQL');
DBMS_PIPE.PACK_MESSAGE(pipe_name);
DBMS_PIPE.PACK_MESSAGE(command);
status := DBMS_PIPE.SEND_MESSAGE('daemon', timeout);
IF status <> 0 THEN
RAISE_APPLICATION_ERROR(-20020,
'Execute_sql: Error while sending.  Status = ' || status);
END IF;

status := DBMS_PIPE.RECEIVE_MESSAGE(pipe_name, timeout);

IF status <> 0 THEN
RAISE_APPLICATION_ERROR(-20021,
'execute_sql: Error while receiving.
Status = ' || status);
END IF;

DBMS_PIPE.UNPACK_MESSAGE(result);
IF result <> 'done' THEN
RAISE_APPLICATION_ERROR(-20022,
'execute_sql: done not received.');
END IF;

DBMS_PIPE.UNPACK_MESSAGE(command_code);
DBMS_OUTPUT.PUT_LINE
('SQL command executed.  sqlcode = ' || command_code);
RETURN command_code;
END execute_sql;

PROCEDURE stop(timeout NUMBER DEFAULT 10) IS
status NUMBER;
BEGIN
DBMS_PIPE.PACK_MESSAGE('STOP');
status := DBMS_PIPE.SEND_MESSAGE('daemon', timeout);
IF status <> 0 THEN
RAISE_APPLICATION_ERROR(-20030,
'stop: error while sending.  status = ' || status);
END IF;
END stop;
END daemon;

DAEMON.PC例。次の例は、Pro*Cデーモンのコード例です。バージョン1.5.x以降のPro*Cプリコンパイラを使用して、このコードをプリコンパイルする必要があります。この例には埋込みPL/SQLコードが含まれているため、USERIDおよびSQLCHECKオプションも指定する必要があります。

注意:
PL/SQLブロックでVARCHAR出力ホスト変数を使用するには、そのブロックの入力前に長さの要素を初期化する必要があります。

proc iname=daemon userid=scott/tiger sqlcheck=semantics

次に、通常の方法で、Cコンパイルしてリンクします。

#include <stdio.h>
#include <string.h>

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;
char *uid = "scott/tiger";
int status;
VARCHAR command[20];
VARCHAR value[2000];
VARCHAR return_name[30];
EXEC SQL END DECLARE SECTION;

void
connect_error()
{
char msg_buffer[512];
int msg_length;
int buffer_size = 512;

EXEC SQL WHENEVER SQLERROR CONTINUE;
sqlglm(msg_buffer, &buffer_size, &msg_length);
printf("Daemon error while connecting:\n");
printf("%.*s\n", msg_length, msg_buffer);
printf("Daemon quitting.\n");
exit(1);
}

void
sql_error()
{
char msg_buffer[512];
int msg_length;
int buffer_size = 512;

EXEC SQL WHENEVER SQLERROR CONTINUE;
sqlglm(msg_buffer, &buffer_size, &msg_length);
printf("Daemon error while executing:\n");
printf("%.*s\n", msg_length, msg_buffer);
printf("Daemon continuing.\n");
}
main()
{
command.len = 20; /*initialize length components*/
value.len = 2000;
return_name.len  = 30;
EXEC SQL WHENEVER SQLERROR DO connect_error();
EXEC SQL CONNECT :uid;
printf("Daemon connected.\n");

EXEC SQL WHENEVER SQLERROR DO sql_error();
printf("Daemon waiting...\n");
while (1) {
EXEC SQL EXECUTE
BEGIN
:status := DBMS_PIPE.RECEIVE_MESSAGE('daemon');
IF :status = 0 THEN
DBMS_PIPE.UNPACK_MESSAGE(:command);
END IF;
END;
END-EXEC;
IF (status == 0)
{
command.arr[command.len] = '\0';
IF (!strcmp((char *) command.arr, "STOP"))
{
printf("Daemon exiting.\n");
break;
}

ELSE IF (!strcmp((char *) command.arr, "SYSTEM"))
{
EXEC SQL EXECUTE
BEGIN
DBMS_PIPE.UNPACK_MESSAGE(:return_name);
DBMS_PIPE.UNPACK_MESSAGE(:value);
END;
END-EXEC;
value.arr[value.len] = '\0';
printf("Will execute system command '%s'\n", value.arr);

status = system(value.arr);
EXEC SQL EXECUTE
BEGIN
DBMS_PIPE.PACK_MESSAGE('done');
DBMS_PIPE.PACK_MESSAGE(:status);
:status := DBMS_PIPE.SEND_MESSAGE(:return_name);
END;
END-EXEC;

IF (status)
{
printf
("Daemon error while responding to system command.");
printf("  status: %d\n", status);
}
}
ELSE IF (!strcmp((char *) command.arr, "SQL")) {
EXEC SQL EXECUTE
BEGIN
DBMS_PIPE.UNPACK_MESSAGE(:return_name);
DBMS_PIPE.UNPACK_MESSAGE(:value);
END;
END-EXEC;
value.arr[value.len] = '\0';
printf("Will execute sql command '%s'\n", value.arr);

EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL EXECUTE IMMEDIATE :value;
status = sqlca.sqlcode;

EXEC SQL WHENEVER SQLERROR DO sql_error();
EXEC SQL EXECUTE
BEGIN
DBMS_PIPE.PACK_MESSAGE('done');
DBMS_PIPE.PACK_MESSAGE(:status);
:status := DBMS_PIPE.SEND_MESSAGE(:return_name);
END;
END-EXEC;

IF (status)
{
printf("Daemon error while responding to sql command.");
printf("  status: %d\n", status);
}
}
ELSE
{
printf
("Daemon error: invalid command '%s' received.\n",
command.arr);
}
}
ELSE
{
printf("Daemon error while waiting for signal.");
printf("  status = %d\n", status);
}
}
EXEC SQL COMMIT WORK RELEASE;
exit(0);

例4: 外部サービス・インタフェース

ユーザー作成の3GLコードを、OCIまたはプリコンパイラ・プログラムに設定します。プログラムは、データベースに接続してPL/SQLコードを実行し、パイプから要求を読み込み、結果を計算してから、PL/SQLコードを実行して、パイプ上の結果をリクエスタに返信します。

次に、株式サービス要求の例を示します。すべてのサービス要求についてパイプに渡す引数の推奨する順序を次に示します。

protocol_version      VARCHAR2        - '1', 10 bytes or less
returnpipe            VARCHAR2        - 30 bytes or less
service               VARCHAR2        - 30 bytes or less
arg1                  VARCHAR2/NUMBER/DATE
...
argn                  VARCHAR2/NUMBER/DATE

結果を戻すための推奨する書式を次に示します。

success               VARCHAR2        - 'SUCCESS' if OK,
otherwise error message
arg1                  VARCHAR2/NUMBER/DATE
...
argn                  VARCHAR2/NUMBER/DATE

OCIまたはPRO*(疑似コードで)を使用して、株価要求サーバーを次のように設定します。

<loop forever>
BEGIN dbms_stock_server.get_request(:stocksymbol); END;
<figure out price based on stocksymbol (probably from some radio
signal), set error if can't find such a stock>
BEGIN dbms_stock_server.return_price(:error, :price); END;

クライアントは次のように設定します。

BEGIN :price := stock_request('YOURCOMPANY'); end;

前述の株価要求サーバーでコールしたストアド・プロシージャdbms_stock_serverは、次のように設定します。

CREATE OR REPLACE PACKAGE dbms_stock_server IS
PROCEDURE get_request(symbol OUT VARCHAR2);
PROCEDURE return_price(errormsg IN VARCHAR2, price IN VARCHAR2);
END;

CREATE OR REPLACE PACKAGE BODY dbms_stock_server IS
returnpipe    VARCHAR2(30);

PROCEDURE returnerror(reason VARCHAR2) IS
s INTEGER;
BEGIN
dbms_pipe.pack_message(reason);
s := dbms_pipe.send_message(returnpipe);
IF s <> 0 THEN
raise_application_error(-20000, 'Error:' || to_char(s) ||
' sending on pipe');
END IF;
END;

PROCEDURE get_request(symbol OUT VARCHAR2) IS
protocol_version VARCHAR2(10);
s                INTEGER;
service          VARCHAR2(30);
BEGIN
s := dbms_pipe.receive_message('stock_service');
IF s <> 0 THEN
raise_application_error(-20000, 'Error:' || to_char(s) ||
'reading pipe');
END IF;
dbms_pipe.unpack_message(protocol_version);
IF protocol_version <> '1' THEN
raise_application_error(-20000, 'Bad protocol: ' ||
protocol_version);
END IF;
dbms_pipe.unpack_message(returnpipe);
dbms_pipe.unpack_message(service);
IF service != 'getprice' THEN
returnerror('Service ' || service || ' not supported');
END IF;
dbms_pipe.unpack_message(symbol);
END;

PROCEDURE return_price(errormsg in VARCHAR2, price in VARCHAR2) IS
s INTEGER;
BEGIN
IF errormsg is NULL THEN
dbms_pipe.pack_message('SUCCESS');
dbms_pipe.pack_message(price);
ELSE
dbms_pipe.pack_message(errormsg);
END IF;
s := dbms_pipe.send_message(returnpipe);
IF s <> 0 THEN
raise_application_error(-20000, 'Error:'||to_char(s)||
' sending on pipe');
END IF;
END;
END;

クライアントがコールするプロシージャは、次のように設定します。

CREATE OR REPLACE FUNCTION stock_request (symbol VARCHAR2)
RETURN VARCHAR2 IS
s        INTEGER;
price    VARCHAR2(20);
errormsg VARCHAR2(512);
BEGIN
dbms_pipe.pack_message('1');  -- protocol version
dbms_pipe.pack_message(dbms_pipe.unique_session_name); -- return pipe
dbms_pipe.pack_message('getprice');
dbms_pipe.pack_message(symbol);
s := dbms_pipe.send_message('stock_service');
IF s <> 0 THEN
raise_application_error(-20000, 'Error:'||to_char(s)||
' sending on pipe');
END IF;
s := dbms_pipe.receive_message(dbms_pipe.unique_session_name);
IF s <> 0 THEN
raise_application_error(-20000, 'Error:'||to_char(s)||
' receiving on pipe');
END IF;
dbms_pipe.unpack_message(errormsg);
IF errormsg <> 'SUCCESS' THEN
raise_application_error(-20000, errormsg);
END IF;
dbms_pipe.unpack_message(price);
RETURN price;
END;

一般的に、株式サービス・アプリケーション・サーバーに対してのみDBMS_STOCK_SERVICEのGRANT EXECUTEを実行し、このサービスを利用できるユーザーに対してのみstock_requestのGRANT EXECUTEを実行します。

関連項目:
第20章「DBMS_ALERT」

DBMS_PIPEサブプログラムの要約

表112-2 DBMS_PIPEパッケージのサブプログラム

サブプログラム

説明

CREATE_PIPEファンクション

パイプを作成します(プライベート・パイプの場合は必須です)。

NEXT_ITEM_TYPEファンクション

バッファにある次の項目のデータ・タイプを戻します。

PACK_MESSAGEプロシージャ

ローカル・バッファにメッセージを作成します。

PURGEプロシージャ

名前付きパイプの内容をパージします。

RECEIVE_MESSAGEファンクション

名前付きパイプからローカル・バッファにメッセージをコピーします。

REMOVE_PIPEファンクション

名前付きパイプを削除します。

RESET_BUFFERプロシージャ

ローカル・バッファの内容をパージします。

SEND_MESSAGEファンクション

メッセージを名前付きパイプに送信します。名前付きパイプが存在しない場合は、パブリック・パイプが暗黙的に作成されます。

UNIQUE_SESSION_NAMEファンクション

一意のセッション名を戻します。

UNPACK_MESSAGEプロシージャ

バッファにある次の項目にアクセスします。

CREATE_PIPEファンクション

このファンクションは、パブリック・パイプまたはプライベート・パイプを明示的に作成します。privateフラグがTRUEの場合、パイプ作成者がそのプライベート・パイプの所有者として割り当てられます。

明示的に作成されたパイプは、REMOVE_PIPEをコールするか、またはインスタンスをシャットダウンすることによってのみ削除できます。

構文

DBMS_PIPE.CREATE_PIPE (
pipename     IN VARCHAR2,
maxpipesize  IN INTEGER DEFAULT 8192,
private      IN BOOLEAN DEFAULT TRUE)
RETURN INTEGER;

プラグマ

pragma restrict_references(create_pipe,WNDS,RNDS);

パラメータ

表112-3 CREATE_PIPEファンクションのパラメータ

パラメータ

説明

pipename

作成するパイプの名前。

SEND_MESSAGEおよびRECEIVE_MESSAGEをコールするときは、この名前を使用する必要があります。この名前は、インスタンス間で一意である必要があります。

注意: ORA$で始まるパイプ名を使用しないでください。これは、オラクル社が提供する製品用に予約されています。パイプ名は128バイト以下で指定し、大/小文字区別がありません。現時点では、名前にグローバリゼーション・サポート文字を含めることはできません。

maxpipesize

パイプの最大サイズ(バイト単位)。

パイプ上のすべてのメッセージの合計サイズは、この数を超えることはできません。この最大値を超えると、そのメッセージはブロックされます。デフォルトのmaxpipesizeは8192バイトです。

パイプのmaxpipesizeはパイプ特性の一部となり、パイプが存続するかぎり有効です。これより大きいパイプ・サイズでSEND_MESSAGEをコールすると、maxpipesizeの値が大きくなります。これより小さいサイズでコールした場合は、より大きい既存の値を使用します。

private

デフォルトのTRUEを使用して、プライベート・パイプを作成します。

パブリック・パイプは、SEND_MESSAGEをコールして、暗黙的に作成できます。

戻り値

表112-4 CREATE_PIPEファンクションの戻り値

戻り値

説明

0

成功。

パイプが存在し、パイプを作成するユーザーにそのパイプの使用が認可されている場合、Oracleは0(ゼロ)を戻して成功であることを示し、パイプ内のデータはそのまま残ります。

SYSDBA/SYSOPERとして接続したユーザーがパイプを再作成した場合、Oracleはステータス0(ゼロ)を戻しますが、そのパイプの所有者は変更されないままです。

ORA-23322

命名競合のために失敗。

同じ名前のパイプが存在し、別のユーザーがそのパイプを作成した場合、OracleではエラーORA-23322を通知して命名競合であることを示しています。

例外

表112-5 CREATE_PIPEファンクションの例外

例外

説明

パイプ名がNULL

アクセス権エラー: 同名のパイプが存在するため使用できません。

NEXT_ITEM_TYPEファンクション

このファンクションは、ローカル・メッセージ・バッファにある次の項目のタイプを判別します。

RECEIVE_MESSAGEをコールして、ローカル・バッファにパイプ情報を設定した後、NEXT_ITEM_TYPEをコールします。

構文

DBMS_PIPE.NEXT_ITEM_TYPE
RETURN INTEGER;

プラグマ

pragma restrict_references(next_item_type,WNDS,RNDS);

戻り値

表112-6 NEXT_ITEM_TYPEファンクションの戻り値

戻り値

説明

0

次の項目がありません。

6

NUMBER

9

VARCHAR2

11

ROWID

12

DATE

23

RAW

PACK_MESSAGEプロシージャ

このプロシージャは、ユーザーのメッセージをローカル・メッセージ・バッファに作成します。メッセージを送信するためには、最初にPACK_MESSAGEを1回以上コールします。次に、SEND_MESSAGEをコールして、ローカル・バッファにあるメッセージを名前付きパイプに送信します。

このプロシージャは、VARCHAR2、NCHAR、NUMBER、DATE、RAWおよびROWIDタイプの項目を受け入れるためにオーバーロードされます。バッファ内の各項目には、データ・バイトの他に、項目のタイプを示すための1バイト、および長さを格納するための2バイトが必要です。メッセージを終了するには、さらに1バイトが必要で、VARCHAR以外のすべてのタイプのオーバーヘッドは4バイトです。

構文

DBMS_PIPE.PACK_MESSAGE (
item  IN  VARCHAR2);

DBMS_PIPE.PACK_MESSAGE (
item  IN  NCHAR);

DBMS_PIPE.PACK_MESSAGE (
item  IN  NUMBER);

DBMS_PIPE.PACK_MESSAGE (
item  IN  DATE);

DBMS_PIPE.PACK_MESSAGE_RAW (
item  IN  RAW);

DBMS_PIPE.PACK_MESSAGE_ROWID (
item  IN  ROWID);

プラグマ

pragma restrict_references(pack_message,WNDS,RNDS);
pragma restrict_references(pack_message_raw,WNDS,RNDS);
pragma restrict_references(pack_message_rowid,WNDS,RNDS);

パラメータ

表112-7 PACK_MESSAGEプロシージャのパラメータ

パラメータ

説明

item

ローカル・メッセージ・バッファにパックする項目。

使用上の注意

Oracle Databaseのバージョン8.xでは、キャラクタ・セットID(2バイト)およびキャラクタ・セット・フォーム(1バイト)が各データ項目に格納されています。そのため、Oracle Databaseのバージョン8.x使用時のオーバーヘッドは7バイトになります。

SEND_MESSAGEをコールしてメッセージを送信するときは、メッセージを送信するパイプの名前を示す必要があります。パイプがすでに存在する場合は、そのパイプにアクセスするための十分な権限が必要です。パイプが存在しない場合は、自動的に作成されます。

例外

メッセージ・バッファ(現在は4096バイト)がオーバーフローした場合は、ORA-06558が発生します。バッファ内の各項目には、実際のデータに加えて、タイプを示すために1バイト、長さを示すために2バイトが必要です。さらに、メッセージを終了するために1バイトが必要です。

PURGEプロシージャ

このプロシージャは、名前付きパイプの内容を空にします。

暗黙的に作成された空のパイプは、LRUアルゴリズムに従って、共有グローバル領域から削除されます。したがって、PURGEをコールすると、暗黙的に作成したパイプに関連するメモリーを空にできます。

構文

DBMS_PIPE.PURGE (
pipename  IN  VARCHAR2);

プラグマ

pragma restrict_references(purge,WNDS,RNDS);

パラメータ

表112-8 PURGEプロシージャのパラメータ

パラメータ

説明

pipename

すべてのメッセージを削除するパイプの名前。

メッセージが廃棄されると、ローカル・バッファがそのメッセージで上書きされる場合があります。パイプ名は128バイト以下で指定し、大/小文字は区別されません。

使用上の注意

PURGEプロシージャはRECEIVE_MESSAGEをコールするため、メッセージがパイプからパージされるとき、ローカル・バッファはそのメッセージで上書きされる場合があります。また、不十分なアクセス権でパイプをパージしようとすると、ORA-23322エラー(不十分な権限)を受け取ります。

例外

パイプを別のユーザーが所有している場合は、アクセス権エラーが発生します。

RECEIVE_MESSAGEファンクション

このファンクションは、メッセージをローカル・メッセージ・バッファにコピーします。

構文

DBMS_PIPE.RECEIVE_MESSAGE (
pipename     IN VARCHAR2,
timeout      IN INTEGER      DEFAULT maxwait)
RETURN INTEGER;

プラグマ

pragma restrict_references(receive_message,WNDS,RNDS);

パラメータ

表112-9 RECEIVE_MESSAGEファンクションのパラメータ

パラメータ

説明

pipename

メッセージを受信するパイプ名。

ORA$で始まる名前は、オラクル社で使用するために予約されています。

timeout

メッセージを待つ時間(秒単位)。

デフォルト値は定数MAXWAITで、86400000(1000日)に定義されています。タイムアウトを0(ゼロ)に指定すると、ブロックされずに読み込むことができます。

戻り値

表112-10 RECEIVE_MESSAGEファンクションの戻り値

戻り値

説明

0

成功。

1

タイムアウト。暗黙的に作成されたパイプが空の場合、そのパイプは削除されます。

2

パイプにあるレコードが、バッファに対して大きすぎます。(これは起りえないことです。)

3

割込みが発生しました。

ORA-23322

パイプから読み込むための十分な権限がユーザーにありません。

使用上の注意

パイプからメッセージを受信するには、最初にRECEIVE_MESSAGEをコールします。メッセージを受信すると、メッセージはパイプから削除されるため、メッセージは1回しか受信できません。暗黙的に作成されたパイプは、最後のレコードがそのパイプから削除された後で削除されます。

RECEIVE_MESSAGEのコール時に指定したパイプがすでに存在しない場合、Oracleはパイプを暗黙的に作成してメッセージの受信を待ちます。メッセージが指定したタイムアウト時間内に着信しなかった場合、そのコールは戻され、パイプは削除されます。

メッセージの受信後、1つ以上のUNPACK_MESSAGEをコールして、メッセージ内の個別の項目にアクセスする必要があります。UNPACK_MESSAGEプロシージャは、DATE、NUMBER、VARCHAR2タイプの項目をアンパックするためにオーバーロードされ、さらに、RAWおよびROWID項目をアンパックするための2つのプロシージャがあります。アンパックするデータのタイプが不明の場合は、NEXT_ITEM_TYPEをコールして、バッファ内にある次の項目のタイプを判別します。

例外

表112-11 RECEIVE_MESSAGEファンクションの例外

例外

説明

パイプ名がNULL

アクセス権エラー。パイプからレコードを削除するための権限が不十分です。パイプは別のユーザーが所有しています。

RESET_BUFFERプロシージャ

このプロシージャは、PACK_MESSAGEおよびUNPACK_MESSAGEの位置設定インジケータを0(ゼロ)にリセットします。

すべてのパイプが1つのバッファを共有しているため、新規パイプを使用する前にバッファをリセットすると効果的です。これにより、初めてメッセージをパイプに送信するとき、バッファ内に残っていた期限切れのメッセージを誤って送信することがなくなります。

構文

DBMS_PIPE.RESET_BUFFER;

プラグマ

pragma restrict_references(reset_buffer,WNDS,RNDS);

REMOVE_PIPEファンクション

このファンクションは、明示的に作成されたパイプを削除します。

SEND_MESSAGEで暗黙的に作成されたパイプは、空になると自動的に削除されます。ただし、CREATE_PIPEで明示的に作成されたパイプは、REMOVE_PIPEをコールするか、またはインスタンスをシャットダウンした場合にのみ削除されます。パイプ内の未使用のレコードは、パイプが削除される前にすべて削除されます。

これは、暗黙的に作成されたパイプでPURGEをコールするのに似ています。

構文

DBMS_PIPE.REMOVE_PIPE (
pipename  IN  VARCHAR2)
RETURN INTEGER;

プラグマ

pragma restrict_references(remove_pipe,WNDS,RNDS);

パラメータ

表112-12 REMOVE_PIPEファンクションのパラメータ

パラメータ

説明

pipename

削除するパイプ名。

戻り値

表112-13 REMOVE_PIPEファンクションの戻り値

戻り値

説明

0

成功。

パイプが存在しない場合、またはパイプがすでに存在し、パイプを削除しようとするユーザーに削除が認可されている場合、Oracleは0(ゼロ)を戻して成功であることを示し、パイプ内に残っているデータが削除されます。

ORA-23322

権限が不十分です。

パイプが存在しても、ユーザーにそのパイプへのアクセス権がない場合、OracleはエラーORA-23322を通知して権限が不十分であることを示します。

例外

表112-14 REMOVE_PIPEファンクションの例外

例外

説明

パイプ名がNULL

アクセス権エラー: パイプを削除する権限が不十分です。パイプは作成されていて、別のユーザーが所有しています。

SEND_MESSAGEファンクション

このファンクションは、メッセージを名前付きパイプに送信します。

PACK_MESSAGEへのコールで入力されたメッセージは、ローカル・メッセージ・バッファに格納されます。CREATE_PIPEを使用するとパイプを明示的に作成でき、それ以外の場合は暗黙的に作成されます。

構文

DBMS_PIPE.SEND_MESSAGE (
pipename     IN VARCHAR2,
timeout      IN INTEGER DEFAULT MAXWAIT,
maxpipesize  IN INTEGER DEFAULT 8192)
RETURN INTEGER;

プラグマ

pragma restrict_references(send_message,WNDS,RNDS);

パラメータ

表112-15 SEND_MESSAGEファンクションのパラメータ

パラメータ

説明

pipename

メッセージを設定するパイプの名前。

明示的なパイプを使用している場合、この名前は、CREATE_PIPEをコールしたときに指定した名前です。

注意: ORA$で始まるパイプ名を使用しないでください。これは、オラクル社が提供する製品用に予約されています。パイプ名は128バイト以下で指定し、大/小文字は区別されません。現時点では、名前にグローバリゼーション・サポート文字を含めることはできません。

timeout

パイプにメッセージを設定する間の待機時間(秒単位)。

デフォルト値は定数MAXWAITで、86400000(1000日)に定義されています。

maxpipesize

パイプの最大サイズ(バイト単位)。

パイプ上のすべてのメッセージの合計サイズは、この数を超えることはできません。この最大値を超えると、そのメッセージはブロックされます。デフォルトは8192バイトです。

パイプのmaxpipesizeはパイプ特性の一部となり、パイプが存続するかぎり有効です。これより大きいパイプ・サイズでSEND_MESSAGEをコールすると、maxpipesizeの値が大きくなります。これより小さいサイズでコールした場合は、より大きい既存の値を使用します。

SEND_MESSAGEプロシージャの一部としてmaxpipesizeを指定すると、別のコールでパイプをオープンする必要がなくなります。明示的にパイプを作成した場合は、オプションのmaxpipesizeパラメータを使用して、作成したパイプのサイズを上書きできます。

戻り値

表112-16 SEND_MESSAGEファンクションの戻り値

戻り値

説明

0

成功。

パイプが存在し、パイプを作成するユーザーにそのパイプの使用が認可されている場合、Oracleは0(ゼロ)を戻して成功であることを示し、パイプ内のデータはそのまま残ります。

SYSDBS/SYSOPERとして接続したユーザーがパイプを再作成した場合、Oracleはステータス0(ゼロ)を戻しますが、そのパイプの所有者は変更されないままです。

1

タイムアウト。

このプロシージャは、パイプでロックが取得できないか、またはパイプがいっぱいで使用できない理由でタイムアウトできます。暗黙的に作成されたパイプが空の場合、そのパイプは削除されます。

3

割込みが発生しました。

暗黙的に作成されたパイプが空の場合、そのパイプは削除されます。

ORA-23322

権限が不十分です。

同じ名前のパイプが存在し、別のユーザーがそのパイプを作成した場合、OracleではエラーORA-23322を通知して命名競合であることを示しています。

例外

表112-17 SEND_MESSAGEファンクションの例外

例外

説明

パイプ名がNULL

アクセス権エラー。パイプに書込みを行うための権限が不十分です。パイプはプライベートで、別のユーザーが所有しています。

UNIQUE_SESSION_NAMEファンクション

このファンクションは、現在データベースに接続しているすべてのセッション間での一意の名前を受け取ります。

同じセッションからこのファンクションを複数回コールしても、常に同じ値が戻されます。このファンクションは、SEND_MESSAGEおよびRECEIVE_MESSAGEのコールにPIPENAMEパラメータを提供するのに役立ちます。

構文

DBMS_PIPE.UNIQUE_SESSION_NAME
RETURN VARCHAR2;

プラグマ

pragma restrict_references(unique_session_name,WNDS,RNDS,WNPS);

戻り値

このファンクションは、一意の名前を戻します。戻される名前は、最大30バイトです。

UNPACK_MESSAGEプロシージャ

このプロシージャは、バッファから項目を取り出します。

RECEIVE_MESSAGEをコールして、ローカル・バッファにパイプ情報を設定した後、UNPACK_MESSAGEをコールします。

注意:
UNPACK_MESSAGEプロシージャは、VARCHAR2、NCHAR、NUMBERまたはDATEタイプの項目を戻すためにオーバーロードされています。さらに、RAWおよびROWID項目をアンパックするための2つのプロシージャがあります。

構文

DBMS_PIPE.UNPACK_MESSAGE (
item  OUT VARCHAR2);

DBMS_PIPE.UNPACK_MESSAGE (
item  OUT NCHAR);

DBMS_PIPE.UNPACK_MESSAGE (
item  OUT NUMBER);

DBMS_PIPE.UNPACK_MESSAGE (
item  OUT DATE);

DBMS_PIPE.UNPACK_MESSAGE_RAW (
item  OUT RAW);

DBMS_PIPE.UNPACK_MESSAGE_ROWID (
item  OUT ROWID);

プラグマ

pragma restrict_references(unpack_message,WNDS,RNDS);
pragma restrict_references(unpack_message_raw,WNDS,RNDS);
pragma restrict_references(unpack_message_rowid,WNDS,RNDS);

パラメータ

表112-18 UNPACK_MESSAGEプロシージャのパラメータ

パラメータ

説明

item

アンパックされた次の項目をローカル・メッセージ・バッファから受け取るための引数。

例外

バッファに次の項目がない場合、または項目が要求されたタイプでない場合は、ORA-06556または06559が生成されます。

113 DBMS_PREDICTIVE_ANALYTICS

データ・マイニングを使用すると、大量のデータに埋もれた有効な情報を見つけ出すことができます。ただし、これを行うために必要なプログラミング・インタフェースおよびデータ・マイニングは、幅広いユーザーが使用するには複雑すぎるため、Oracle Data Miningを使用することで十分な効果を得ることができない場合があります。

DBMS_PREDICTIVE_ANALYTICSパッケージは、データ・マイニングのプロセス全体(データの前処理からモデルの作成、新しいデータのスコアリングに至るまで)を自動化して、これらの複雑さに対処しています。このパッケージは、幅広いユーザー(特にビジネス・アナリスト)がデータ・マイニングを使用できるような便利なツールを提供します。

この章では、次の項目について説明します。

- DBMS_PREDICTIVE_ANALYTICSの使用方法

- 概要

- セキュリティ・モデル

- DBMS_PREDICTIVE_ANALYTICSサブプログラムの要約

DBMS_PREDICTIVE_ANALYTICSの使用方法

この項では、DBMS_PREDICTIVE_ANALYTICSパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

データ・マイニングでは、一般に使用されているプロセス・モデルに従って、次の手順を実行する必要があります。

1. ビジネス上の問題を確認します。

2. データを確認します。

3. マイニングに使用するデータを準備します。

4. 準備したデータを使用してモデルを作成します。

5. モデルを評価します。

6. モデルをデプロイし、使用して新しいデータのスコアリングを行います。

DBMS_PREDICTIVE_ANALYTICSは、このプロセスの手順3から5を自動化します。

予測分析プロシージャは、入力データの分析と準備、および入力データを使用したマイニング・モデルの作成とテストを行い、スコアリングに入力データを使用します。スコアリングの結果はユーザーに戻されます。操作の完了後、モデルおよびサポート・オブジェクトは保持されません。

セキュリティ・モデル

DBMS_PREDICTIVE_ANALYTICSパッケージは、ユーザーSYSによって所有され、データベース・インストールの一環としてインストールされます。このパッケージの実行権限は、PUBLICに付与されます。このパッケージ内のルーチンは、実行者権限(現行のユーザーの権限)を使用して実行されます。

DBMS_PREDICTIVE_ANALYTICSパッケージは、Oracle Data Miningオプションによって利用されるAPIを公開します。このパッケージのプロシージャを起動するユーザーは、CREATE TABLEおよびCREATE VIEWシステム権限に加え、CREATE MINING MODELシステム権限も必要です。

DBMS_PREDICTIVE_ANALYTICSサブプログラムの要約

表113-1 DBMS_PREDICTIVE_ANALYTICSパッケージのサブプログラム

サブプログラム

用途

EXPLAINプロシージャ

ターゲット列の分析時に、重要度の順に属性をランク付けします。

PREDICTプロシージャ

入力データの値に基づいてターゲット列の値を予測します。

PROFILEプロシージャ

同じターゲット値を持つレコードを識別するルールを生成します。

EXPLAINプロシージャ

EXPLAINプロシージャは、ターゲット列の値のバリエーションを説明する場合に重要となる属性を識別します。

入力データには、ターゲット値が判明しているレコード(NULL以外の値)を含める必要があります。これらのレコードはプロシージャによって使用され、属性の重要度を計算するモデルの調整が行われます。

注意:
EXPLAINは、DATEとTIMESTAMPデータ・タイプ、およびOracle Data Miningモデルによってサポートされる、数値、文字およびネストしたデータ・タイプをサポートします。
Oracle Data Miningのデータ要件については、Oracle Data Miningユーザーズ・ガイドを参照してください。

EXPLAINプロシージャは、属性を説明力の順序で表示する結果表を作成します。結果表については、「使用上の注意」を参照してください。

構文

DBMS_PREDICTIVE_ANALYTICS.EXPLAIN (
data_table_name     IN VARCHAR2,
explain_column_name IN VARCHAR2,
result_table_name   IN VARCHAR2,
data_schema_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表113-2 EXPLAINプロシージャのパラメータ

パラメータ

説明

data_table_name

入力データの表またはビューの名前。

explain_column_name

分析する列の名前。

result_table_name

結果を保存する表の名前。

data_schema_name

入力データの表またはビューが存在し、結果表が作成されるスキーマの名前。デフォルトは現在のスキーマです。

使用上の注意

EXPLAINプロシージャは、表113-3で説明する列を使用して結果表を作成します。

表113-3 EXPLAINプロシージャの結果表

列名

データ・タイプ

説明

ATTRIBUTE_NAME

VARCHAR2(30)

入力データの列の名前。分析された列を除くすべての列が結果表に示されます。

EXPLANATORY_VALUE

NUMBER

分析された列の値を確認する場合の列の有効性を示す値。値が高くなると説明力が大きくなります。値の範囲は0から1です。

個々の列の分析値は、入力データ表の他の列とは無関係です。この値は、各列と分析された列との関連性の高さを示します。この値は、入力データ表のレコード数、および各列の値と分析された列の値との関係によって影響を受けます。

説明力の値が0の場合は、各列の値と解析された列の値との間に有効な相関関係がないことを示します。説明力が1の場合は完全な相関関係があることを示しており、このような列は、PREDICTの対象から除外する必要があります。実際には、説明力が1の場合に戻されることはほとんどありません。

RANK

NUMBER

説明力のランキング。explanatory_valueの値が等しい行は、ランクも同じです。同ランクの場合、ランクの値はスキップされません。

例

次の例では、販売履歴のSUPPLEMENTARY_DEMOGRAPHICS表でEXPLAIN操作を実行します。

--Perform EXPLAIN operation
BEGIN
DBMS_PREDICTIVE_ANALYTICS.EXPLAIN(
data_table_name      => 'supplementary_demographics',
explain_column_name  => 'home_theater_package',
result_table_name    => 'demographics_explain_result');
END;
/
--Display results
SELECT * FROM demographics_explain_result;

ATTRIBUTE_NAME                           EXPLANATORY_VALUE       RANK
---------------------------------------- ----------------- ----------
Y_BOX_GAMES                                     .524311073          1
YRS_RESIDENCE                                   .495987246          2
HOUSEHOLD_SIZE                                  .146208506          3
AFFINITY_CARD                                     .0598227          4
EDUCATION                                       .018462703          5
OCCUPATION                                      .009721543          6
FLAT_PANEL_MONITOR                               .00013733          7
PRINTER_SUPPLIES                                         0          8
OS_DOC_SET_KANJI                                         0          8
BULK_PACK_DISKETTES                                      0          8
BOOKKEEPING_APPLICATION                                  0          8
COMMENTS                                                 0          8
CUST_ID                                                  0          8

この結果から、Y_BOX_GAMES、YRS_RESIDENCEおよびHOUSEHOLD_SIZEが、HOME_THEATER_PACKAGEの最適な予測子であることがわかります。

PREDICTプロシージャ

PREDICTプロシージャは、ターゲット列の値を予測します。

入力データには、ターゲット値が判明しているレコード(NULL以外の値)を含める必要があります。これらのレコードはプロシージャによって使用され、予測を作成するモデルの調整およびテストが行われます。

注意:
PREDICTは、DATEデータ・タイプとTIMESTAMPデータ・タイプをサポートするだけでなく、Oracle Data Miningモデルによってサポートされる数値、文字およびネストしたデータ・タイプもサポートします。
Oracle Data Miningのデータ要件については、Oracle Data Miningユーザーズ・ガイドを参照してください。

PREDICTプロシージャは、レコードごとの予測されたターゲット値を含む結果表を作成します。結果表については、「使用上の注意」を参照してください。

構文

DBMS_PREDICTIVE_ANALYTICS.PREDICT (
accuracy                  OUT NUMBER,
data_table_name           IN VARCHAR2,
case_id_column_name       IN VARCHAR2,
target_column_name        IN VARCHAR2,
result_table_name         IN VARCHAR2,
data_schema_name          IN VARCHAR2 DEFAULT NULL);

パラメータ

表113-4 PREDICTプロシージャのパラメータ

パラメータ

説明

accuracy

予測の信頼度を戻す出力パラメータであり、予測値の精度です。質的ターゲットの予測の信頼度は最も一般的なターゲット値で、量的ターゲットの予測の信頼度は平均値になります。

data_table_name

入力データの表またはビューの名前。

case_id_column_name

入力データの各ケース(レコード)を一意に識別する列の名前。

target_column_name

予測する列の名前。

result_table_name

結果を保存する表の名前。

data_schema_name

入力データの表またはビューが存在し、結果表が作成されるスキーマの名前。デフォルトは現在のスキーマです。

使用上の注意

PREDICTプロシージャは、表113-5で説明する列を使用して結果表を作成します。

表113-5 PREDICTプロシージャの結果表

列名

データ・タイプ

説明

ケースID列の名前

VARCHAR2またはNUMBER

入力データのケースID列の名前。

PREDICTION

VARCHAR2またはNUMBER

特定のケースのターゲット列の予測値。

PROBABILITY

NUMBER

分類(質的ターゲット)の場合は、予測の確率です。回帰の問題(量的ターゲット)の場合は、この列にNULLが含まれます。

注意:
ケースID列の名前が、'PREDICTION'または'PROBABILITY'でないことを確認してください。

予測は、入力にターゲット値を含むかどうかにかかわらず、すべてのケースに対して戻されます。

既知のケースの予測値が役立つ場合があります。たとえば、偏差分析を実行して予測値と実績値を比較する場合です。

例

次の例では、PREDICT操作を実行し、最初の10個の予測を表示します。この結果から、各顧客がアフィニティ・カードを持っているかどうかに関する予測の精度が79%であることがわかります。

--Perform PREDICT operation
DECLARE
v_accuracy NUMBER(10,9);
BEGIN
DBMS_PREDICTIVE_ANALYTICS.PREDICT(
accuracy             => v_accuracy,
data_table_name      => 'supplementary_demographics',
case_id_column_name  => 'cust_id',
target_column_name   => 'affinity_card',
result_table_name    => 'pa_demographics_predict_result');
DBMS_OUTPUT.PUT_LINE('Accuracy = ' || v_accuracy);
END;
/

Accuracy = .788696903

--Display results
SELECT * FROM pa_demographics_predict_result WHERE rownum < 10;

CUST_ID PREDICTION PROBABILITY
---------- ---------- -----------
101501          1  .834069848
101502          0  .991269965
101503          0   .99978311
101504          1  .971643388
101505          1  .541754127
101506          0  .803719133
101507          0  .999999303
101508          0  .999999987
101509          0  .999953074

PROFILEプロシージャ

PROFILEプロシージャは、入力データからのケース(レコード)を記述するルールを生成します。たとえば、ターゲット列CHURNの値がYesおよびNoである場合、PROFILEは予想される結果を記述するルール・セットを生成します。各プロファイルには、ルール、レコード数およびスコアの分散が含まれています。

入力データには、ターゲット値が判明しているケース(NULL以外の値)を含める必要があります。これらのケースはプロシージャによって使用され、ルールを計算するモデルが構築されます。

注意:
PROFILEは、ネストしたタイプまたは日付をサポートしていません。
Oracle Data Miningのデータ要件については、Oracle Data Miningユーザーズ・ガイドを参照してください。

PROFILEプロシージャは、ルール(プロファイル)および対応するターゲット値を指定する結果表を作成します。結果表については、「使用上の注意」を参照してください。

構文

DBMS_PREDICTIVE_ANALYTICS.PROFILE (
data_table_name           IN VARCHAR2,
target_column_name        IN VARCHAR2,
result_table_name         IN VARCHAR2,
data_schema_name          IN VARCHAR2 DEFAULT NULL);

パラメータ

表113-6 PROFILEプロシージャのパラメータ

パラメータ

説明

data_table_name

分析対象のデータが保存される表の名前。

target_column_name

ターゲット列の名前。

result_table_name

結果を保存する表の名前。

data_schema_name

入力データの表またはビューが存在し、結果表が作成されるスキーマの名前。デフォルトは現在のスキーマです。

使用上の注意

PROFILEプロシージャは、表113-7で説明する列を使用して結果表を作成します。

表113-7 PROFILEプロシージャの結果表

列名

データ・タイプ

説明

PROFILE_ID

NUMBER

このプロファイル(ルール)に対する一意の識別子。

RECORD_COUNT

NUMBER

プロファイルによって記述されるレコード数。

DESCRIPTION

SYS.XMLTYPE

プロファイルのルール。「プロファイルのルールのXMLスキーマ」を参照してください。

プロファイルのルールのXMLスキーマ

結果表のDESCRIPTION列には、次のXSDに準拠するXMLが含まれています。

<xs:element name="SimpleRule">
<xs:complexType>
<xs:sequence>
<xs:group ref="PREDICATE"/>
<xs:element ref="ScoreDistribution" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="optional"/>
<xs:attribute name="score" type="xs:string" use="required"/>
<xs:attribute name="recordCount" type="NUMBER" use="optional"/>
</xs:complexType>
</xs:element>

例

この例では、アフィニティ・カードを使用する可能性がある顧客を記述するルール(ターゲット値は1)、およびアフィニティ・カードを使用する可能性がない顧客を記述するルール・セット(ターゲット値は0)が生成されます。ルールは、educationおよびoccupationの2つの予測子のみに基づいています。

SET serveroutput ON
SET trimspool ON
SET pages 10000
SET long 10000
SET pagesize 10000
SET linesize 150
CREATE VIEW cust_edu_occ_view AS
SELECT cust_id, education, occupation, affinity_card
FROM sh.supplementary_demographics;
BEGIN
DBMS_PREDICTIVE_ANALYTICS.PROFILE(
DATA_TABLE_NAME    => 'cust_edu_occ_view',
TARGET_COLUMN_NAME => 'affinity_card',
RESULT_TABLE_NAME  => 'profile_result');
END;
/

この例では、結果表profile_resultに8個のルールが生成されます。このルールのうち7個はターゲット値0を示し、1つはターゲット値1を示しています。ルールのscore属性はターゲット値を識別します。

次のSELECT文は、結果表のすべてのルールを戻します。

SELECT a.profile_id, a.record_count, a.description.getstringval()
FROM profile_result a;

次のSELECT文は、ターゲット値0のルールを戻します。

SELECT *
FROM profile_result t
WHERE extractvalue(t.description, '/SimpleRule/@score') = 0;

この例で生成された8個のルールは、次のとおりです。

<SimpleRule id="1" score="0" recordCount="443">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"Armed-F" "Exec." "Prof." "Protec."
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">"< Bach." "Assoc-V" "HS-grad"
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="0" recordCount="297" />
<ScoreDistribution value="1" recordCount="146" />
</SimpleRule>

<SimpleRule id="2" score="0" recordCount="18">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"Armed-F" "Exec." "Prof." "Protec."
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">"10th" "11th" "12th" "1st-4th" "5th-6th" "7th-8th" "9th" "Presch."
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="0" recordCount="18" />
</SimpleRule>

<SimpleRule id="3" score="0" recordCount="458">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"Armed-F" "Exec." "Prof." "Protec."
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">"Assoc-A" "Bach."
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="0" recordCount="248" />
<ScoreDistribution value="1" recordCount="210" />
</SimpleRule>

<SimpleRule id="4" score="1" recordCount="276">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"Armed-F" "Exec." "Prof." "Protec."
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">"Masters" "PhD" "Profsc"
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="1" recordCount="183" />
<ScoreDistribution value="0" recordCount="93" />
</SimpleRule>

<SimpleRule id="5" score="0" recordCount="307">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">"Assoc-A" "Bach." "Masters" "PhD" "Profsc"
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"Crafts" "Sales" "TechSup" "Transp."
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="0" recordCount="184" />
<ScoreDistribution value="1" recordCount="123" />
</SimpleRule>

<SimpleRule id="6" score="0" recordCount="243">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">"Assoc-A" "Bach." "Masters" "PhD" "Profsc"
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"?" "Cleric." "Farming" "Handler" "House-s" "Machine" "Other"
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="0" recordCount="197" />
<ScoreDistribution value="1" recordCount="46" />
</SimpleRule>

<SimpleRule id="7" score="0" recordCount="2158">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">
"10th" "11th" "12th" "1st-4th" "5th-6th" "7th-8th" "9th" "< Bach." "Assoc-V" "HS-grad"
"Presch."
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"?" "Cleric." "Crafts" "Farming" "Machine" "Sales" "TechSup" " Transp."
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="0" recordCount="1819"/>
<ScoreDistribution value="1" recordCount="339"/>
</SimpleRule>

<SimpleRule id="8" score="0" recordCount="597">
<CompoundPredicate booleanOperator="and">
<SimpleSetPredicate field="EDUCATION" booleanOperator="isIn">
<Array type="string">
"10th" "11th" "12th" "1st-4th"  "5th-6th" "7th-8th" "9th" "< Bach." "Assoc-V" "HS-grad"
"Presch."
</Array>
</SimpleSetPredicate>
<SimpleSetPredicate field="OCCUPATION" booleanOperator="isIn">
<Array type="string">"Handler" "House-s" "Other"
</Array>
</SimpleSetPredicate>
</CompoundPredicate>
<ScoreDistribution value="0" recordCount="572"/>
<ScoreDistribution value="1" recordCount="25"/>
</SimpleRule>

114 DBMS_PREPROCESSOR

DBMS_PREPROCESSORパッケージは、後処理された形式でPL/SQLユニットのソース・テキストの出力または取出しを行うためのインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_PREPROCESSORの使用方法

- 概要

- 使用上の注意

- データ構造

- 表タイプ

- DBMS_PREPROCESSORサブプログラムの要約

DBMS_PREPROCESSORの使用方法

- 概要

- 使用上の注意

概要

次の3つのスタイルのサブプログラムがあります。

1. スキーマ名、ユニット・タイプ名およびユニット名を使用するサブプログラム

2. 任意のPL/SQLコンパイル・ユニットのソース・テキストを含むVARCHAR2の文字列を使用するサブプログラム

3. 任意のPL/SQLコンパイル・ユニットのセグメント化されたソース・テキストを含むVARCHAR2の索引付き表を使用するサブプログラム

1つ目のスタイルのサブプログラムは、保存されたPL/SQLユニットの後処理済ソース・テキストの出力または取出しのために使用されます。ユーザーは、このユニットの元のソース・テキストを表示するための権限が必要です。また、ユーザーは、ユニットが定義されているスキーマ、ユニット・タイプおよびユニット名を指定する必要もあります。スキーマがNULLの場合は、現行のユーザー・スキーマが使用されます。保存されたユニットのステータスがVALIDで、ユーザーが必要な権限を持っている場合、後処理済のソース・テキストは、最後にコンパイルされたユニットのソース・テキストと同じであることが保証されます。2つ目または3つ目のスタイルのサブプログラムは、現行のユーザー・スキーマで後処理済のソース・テキストを生成するために使用されます。ソース・テキストは、2つ目のスタイルでは単一のVARCHAR2の文字列として、3つ目のスタイルではVARCHAR2の索引付き表として渡されます。ソース・テキストには、任意のPL/SQLコンパイル・ユニットを指定できます。通常は、無名ブロックのソース・テキストを渡して、現行のユーザー・スキーマに後処理済のソース・テキストを生成するために使用されます。3つ目のスタイルは、ソース・テキストがVARCHAR2の長さの制限を超える場合に有効です。

使用上の注意

- 1つ目のスタイルのサブプログラムの場合、保存されたPL/SQLユニットのステータスはVALIDである必要はありません。また、VARCHAR2の文字列またはVARCHAR2の索引付き表として渡されたソース・テキストは、コンパイル時にエラーが発生する可能性があります。後処理済のソース・テキストの生成時にエラーが見つかった場合、後処理済のソース・テキストの最後にエラー・メッセージ・テキストも表示されます。エラーが原因で前処理が中断される場合もあります。この場合、後処理済のソース・テキストが不完全な状態で表示され、関連するエラー・メッセージによって前処理中にエラーが発生したことを確認できます。

- 2つ目または3つ目のスタイルのサブプログラムの場合、ソース・テキストに任意のPL/SQLコンパイル・ユニットを指定できます。ただし、有効なPL/SQLコンパイル・ユニットのソース・テキストに、CREATE OR REPLACEなどの一般に使用されている接頭辞を含めることはできません。通常は、ALL_SOURCEビューから取得する場合と同様の方法で、入力ソースの構文を準備する必要があります。次のリストに、PL/SQLコンパイル・ユニットに有効な初期構文の例を示します。

anonymous block   (BEGIN | DECLARE) ...
package           PACKAGE <name> ...
package body      PACKAGE BODY <name> ...
procedure         PROCEDURE <name> ...
function          FUNCTION <name> ...
type              TYPE <name> ...
type body         TYPE BODY <name> ...
trigger           (BEGIN | DECLARE) ...

ソース・テキストが有効な名前付きPL/SQLユニットを示す場合、後処理済のソース・テキストの生成後にそのユニットは作成されません。

- ラップされたPL/SQLユニットのテキストがALL_SOURCEビューから取得された場合、通常、キーワードWRAPPEDはユニット名の直後に指定されます。次に例を示します。

PROCEDURE "some proc" WRAPPED
a000000
b2
...

このようなソース・テキストがGET_POST_PROCESSED_SOURCEファンクションまたはPRINT_POST_PROCESSED_SOURCEプロシージャのいずれかを示す場合は、例外DBMS_PREPROCESSOR.WRAPPED_INPUTが発生します。

データ構造

DBMS_PREPROCESSORパッケージは、TABLEタイプを定義します。

表タイプ

SOURCE_LINES_T表タイプ

SOURCE_LINES_T表タイプ

この表タイプは、後処理済のソース・テキストの行を格納します。処理前および処理後の両方で、PL/SQLソース・テキストを保持するために使用されます。テキストの容量が32Kを超える場合に、特に有効です。

構文

TYPE source_lines_t IS
TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;

DBMS_PREPROCESSORサブプログラムの要約

表114-1 DBMS_PREPROCESSORパッケージのサブプログラム

サブプログラム

説明

GET_POST_PROCESSED_SOURCEファンクション

後処理済のソース・テキストを戻します。

PRINT_POST_PROCESSED_SOURCEプロシージャ

後処理済のソース・テキストを出力します。

GET_POST_PROCESSED_SOURCEファンクション

このオーバーロードされたファンクションは、後処理済のソース・テキストを戻します。複数の機能を構文形式ごとに、定義とともに示します。

構文

保存されたPL/SQLユニットの後処理済のソース・テキストを戻します。

DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE (
object_type    IN VARCHAR2,
schema_name    IN VARCHAR2,
object_name    IN VARCHAR2)
RETURN source_lines_t;

コンパイル・ユニットの後処理済のソース・テキストを戻します。

DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE (
source        IN VARCHAR2)
RETURN source_lines_t;

コンパイル・ユニットのソース・テキストを含むINDEX-BY表の後処理済のソース・テキストを戻します。

DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE (
source        IN source_lines_t)
RETURN source_lines_t;

パラメータ

表114-2 GET_POST_PROCESSED_SOURCEファンクションのパラメータ

パラメータ

説明

object_type

PACKAGE、PACKAGE BODY、PROCEDURE、FUNCTION、TYPE、TYPE、BODYまたはTRIGGERのいずれかである必要があります。大/小文字が区別されます。

schema_name

スキーマ名。引用された識別子を使用しないかぎり、大/小文字は区別されません。NULLの場合は、現行のスキーマが使用されます。

object_name

オブジェクトの名前。object_typeでは、大/小文字は常に区別されません。引用された識別子を使用しないかぎり、大/小文字は区別されません。

source

コンパイル・ユニットのソース・テキスト。

source_lines_t

コンパイル・ユニットのソース・テキストを含むINDEX-BY表。ソース・テキストは、すべてのNULLではないINDEX-BY表の要素を昇順の索引順序で連結したものです。

戻り値

このファンクションは、索引1から開始する後処理済のソース・テキストの行を含むINDEX-BY表を戻します。

使用上の注意

- 改行文字は削除されません。

- 後処理済のソース・テキストの各行は、INDEX-BY表の行にマップされます。

- 後処理済のソースでは、未選択のテキストはブランク行となります。

例外

表114-3 GET_POST_PROCESSED_SOURCEファンクションの例外

例外

説明

ORA-24234

権限が不十分であるか、またはオブジェクトが存在しません。

ORA-24235

オブジェクト・タイプの値が正しくありません。PACKAGE、PACKAGE BODY、PROCEDURE、FUNCTION、TYPE、TYPE、BODYまたはTRIGGERのいずれかである必要があります。

ORA-24236

ソース・テキストが空です。

ORA-00931

識別子がありません。object_nameをNULLにしないでください。

ORA-06502

数値または値のエラーが発生しました。

- 文字列バッファが小さすぎます。

- 行が長すぎます(32767バイトを超えている)。

PRINT_POST_PROCESSED_SOURCEプロシージャ

このオーバーロードされたプロシージャは、DBMS_OUTPUT.PUT_LINEをコールして後処理済のソース・テキストを表示できます。複数の機能を構文形式ごとに、定義とともに示します。

構文

保存されたPL/SQLユニットの後処理済のソース・テキストを出力します。

DBMS_PREPROCESSOR.PRINT_POST_PROCESSED_SOURCE (
object_type    IN VARCHAR2,
schema_name    IN VARCHAR2,
object_name    IN VARCHAR2);

コンパイル・ユニットの後処理済のソース・テキストを出力します。

DBMS_PREPROCESSOR.PRINT_POST_PROCESSED_SOURCE (
source        IN VARCHAR2);

コンパイル・ユニットのソース・テキストを含むINDEX-BY表の後処理済のソース・テキストを出力します。

DBMS_PREPROCESSOR.PRINT_POST_PROCESSED_SOURCE (
source        IN source_lines_t);

パラメータ

表114-4 PRINT_POST_PROCESSED_SOURCEプロシージャのパラメータ

パラメータ

説明

object_type

PACKAGE、PACKAGE BODY、PROCEDURE、FUNCTION、TYPE、TYPE、BODYまたはTRIGGERのいずれかである必要があります。大/小文字が区別されます。

schema_name

スキーマ名。引用された識別子を使用しないかぎり、大/小文字は区別されません。NULLの場合は、現行のスキーマが使用されます。

object_name

オブジェクトの名前。object_typeでは、大/小文字は常に区別されません。引用された識別子を使用しないかぎり、大/小文字は区別されません。

source

コンパイル・ユニットのソース・テキスト。

source_lines_t

コンパイル・ユニットのソース・テキストを含むINDEX-BY表。ソース・テキストは、すべてのNULLではないINDEX-BY表の要素を昇順の索引順序で連結したものです。

例外

表114-5 PRINT_POST_PROCESSED_SOURCEプロシージャの例外

例外

説明

ORA-24234

権限が不十分であるか、またはオブジェクトが存在しません。

ORA-24235

オブジェクト・タイプの値が正しくありません。PACKAGE、PACKAGE BODY、PROCEDURE、FUNCTION、TYPE、TYPE、BODYまたはTRIGGERのいずれかである必要があります。

ORA-24236

ソース・テキストが空です。

ORA-00931

識別子がありません。object_nameをNULLにしないでください。

ORA-06502

数値または値のエラーが発生しました。

- 文字列バッファが小さすぎます。

- 行が長すぎます(32767バイトを超えている)。

使用上の注意

索引付き表には、空白が含まれる場合があります。NULL要素は、連結時に無視されます。

115 DBMS_PRIVILEGE_CAPTURE

DBMS_PRIVILEGE_CAPTUREパッケージは、データベース権限分析へのインタフェースを提供します。

関連項目:
付与された権限の使用状況を分析する方法については、『Oracle Database Vault管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_PRIVILEGE_CAPTUREの使用

- 概要

- セキュリティ・モデル

- 定数

- 例

- DBMS_PRIVILEGE_CAPTUREサブプログラムの要約

DBMS_PRIVILEGE_CAPTUREの使用

- 概要

- セキュリティ・モデル

- 定数

- 例

概要

データベース権限分析では、システムの使用方法とユーザーに付与されたオブジェクト権限を記録するポリシーを作成できます。さらに、ユーザーが使用している権限と使用していない権限を判別できます。ここでは、使用されていないすべての権限を取り消すことで、ユーザーに付与された余分な権限の数を減らすことができます。

特定のタスクを実行するためにユーザーの所有が必要な権限を分析することによって、権限分析ポリシーによるユーザーの最小権限モデルが実現できるようになります。

セキュリティ・モデル

デフォルトでは、権限分析管理者ロールCAPTURE_ADMINに、DBMS_PRIVILEGE_CAPTUREパッケージのEXECUTE権限が付与されます。

データベースのインストール中、CAPTURE_ADMINロールがDBAロールWITH ADMIN OPTIONに付与されます。

定数

DBMS_PRIVILEGE_CAPTUREパッケージでは、次の表に示す定数が使用されます。

表115-1 DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTUREの「タイプ」パラメータの値

定数

値

タイプ

説明

G_DATABASE

1

NUMBER

SYSユーザーが使用する権限を除いたすべての権限の使用状況を分析します。

G_ROLE

2

NUMBER

指定されたロールの権限の使用状況を分析します。

G_CONTEXT

3

NUMBER

conditionパラメータがtrueに評価された場合の権限の使用状況を分析します。

G_ROLE_AND_CONTEXT

4

NUMBER

conditionパラメータがtrueに評価された場合に、指定されたロールの権限の使用状況を分析します。

例

次の例では、DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTUREプロシージャを使用して、データベース分析、ロール分析およびコンテキスト固有の分析などの様々な種類の権限分析を作成する例が示されています。この例では、コンテキスト固有の分析で異なる条件を組み合せる例も示されています。

--Create a database privilege analysis policy
BEGIN
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(
name         => 'all_priv_analysis_pol',
description  => 'database-wide policy to analyze all privileges',
type         => DBMS_PRIVILEGE_CAPTURE.G_DATABASE);
END;

--Create a privilege analysis policy to analyze privileges from the role PUBLIC
BEGIN
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(
name         => 'pub_analysis_pol',
description  => 'Policy to record privilege use by PUBLIC',
type         => DBMS_PRIVILEGE_CAPTURE.G_ROLE,
roles        => role_name_list('PUBLIC'));
END;

-- Create a policy to analyze privileges from the application module, "Account
-- Payable"
BEGIN
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(
name         => 'acc_pay_analysis_pol',
type         => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT,
condition    => 'SYS_CONTEXT(''USERENV'', ''MODULE'') = ''Account Payable''');
END;

-- Create a policy that records privileges for session user APPS when running the
-- application module "Account Payable"
BEGIN
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(
name         => 'acc_pay_analysis_pol',
type         => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT,
condition    => 'SYS_CONTEXT(''USERENV'', ''MODULE'') = ''Account Payable'' AND
SYS_CONTEXT(''USERENV'', ''SESSION_USER'') = ''APPS''');
END;

DBMS_PRIVILEGE_CAPTUREサブプログラムの要約

表115-2 DBMS_PRIVILEGE_CAPTUREパッケージのサブプログラム

サブプログラム

説明

CREATE_CAPTUREプロシージャ

権限の使用状況を分析するための条件を指定するポリシーを作成します。

DISABLE_CAPTUREプロシージャ

指定された権限分析ポリシーに対する権限の使用状況の記録を停止します。

DROP_CAPTUREプロシージャ

権限分析ポリシーを記録されたデータとともに削除します。

ENABLE_CAPTUREプロシージャ

指定された権限分析ポリシーに対して権限分析の記録を開始します。

GENERATE_RESULTプロシージャ

権限分析のデータ・ディクショナリ・ビューにデータを移入します。

CREATE_CAPTUREプロシージャ

このプロシージャは、権限の使用状況を分析するための条件を指定するポリシーを作成します。また、オプションで、権限の使用状況の分析対象となるロールと、その分析に使用する条件も指定します。

構文

DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE (
name            IN  VARCHAR2,
description     IN  VARCHAR2 DEFAULT NULL,
type            IN  NUMBER DEFAULT G_DATABASE,
roles           IN  ROLE_NAME_LIST DEFAULT ROLE_NAME_LIST(),
condition       IN  VARCHAR2 DEFAULT NULL);

パラメータ

表115-3 CREATE_CAPTUREプロシージャのパラメータ

パラメータ

説明

name

権限分析ポリシーの名前です。最大30文字の文字列です。

description

ポリシーの説明(最大1024文字)です。

type

権限分析ポリシーのタイプです。有効な値は、次のとおりです。

- G_DATABASE: SYSユーザーが使用する権限を除く、データベース内のすべての権限の使用状況を取得します。

- G_ROLE: 指定したロールまたはロールのリストに権限が含まれる場合、その権限の使用状況を取得します。

- G_CONTEXT: conditionパラメータに指定されたコンテキストがtrueと評価された場合、権限の使用状況を取得します。

- G_ROLE_AND_CONTEXT: 指定したロールのリストに権限が含まれ、conditionパラメータに指定された条件がtrueの場合、その権限の使用状況を取得します。

roles

権限が分析対象であるロール。typeがG_ROLEまたはG_ROLE_AND_CONTEXTである場合に必要です。

condition

最大4000文字を含むPL/SQLブール式。typeがG_CONTEXTまたはG_ROLE_AND_CONTEXTである場合に必要です。ブール式に含めることができるのはSYS_CONTEXTのみであり、他のファンクションを含めることはできません。

使用上の注意

- CREATE_CAPTUREプロシージャにロールベースの分析を使用するときは、指定されたロールに権限が間接的に付与された場合でも権限の使用状況が分析されます。
たとえば、ロールR2にロールR1が含まれ、R1に権限P1が含まれるとします。権限ポリシーにロールR2のみが含まれる場合でも、P1権限のすべての使用状況が分析されます。これは、P1が間接的にロールR2の一部になっているためです。

- conditionパラメータを使用する場合、PL/SQL式には次の構文を使用します。

condition::= predicate | (predicate1) AND (predicate2)
| (predicate1) OR (predicate2)

内容は次のとおりです。

predicate::= sys_context(namespace, attribute) relop constant_value |
sys_context(namespace, attribute) between constant_value and
constant_value | sys_context(namespace, attribute) in {constant_value
(,constant_value)* }

内容は次のとおりです。

relop::= = | < | <= | > | >= | <>

- 権限分析ポリシーでは、SYSユーザー権限の使用状況は分析できません。

DISABLE_CAPTUREプロシージャ

このプロシージャは、指定された権限分析ポリシーに対する権限の使用状況の記録を停止します。ポリシーが無効化されている場合は、ポリシーの条件を満たす権限の使用状況が記録されなくなります。

構文

DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE (
name        IN VARCHAR2);

パラメータ

表115-4 DISABLE_CAPTUREプロシージャのパラメータ

パラメータ

説明

name

無効にする権限分析ポリシーの名前です。

使用上の注意

権限分析ポリシーが最初に作成されるときは、そのポリシーはデフォルトで無効になっています。

DROP_CAPTUREプロシージャ

このプロシージャは、権限分析ポリシーを記録されたデータとともに削除します。ポリシーが削除されている場合は、以前に記録された権限の使用状況のデータでそのポリシーに関連付けられたものがすべて削除されます。

構文

DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE (
name      IN VARCHAR2);

パラメータ

表115-5 DROP_CAPTUREプロシージャのパラメータ

パラメータ

説明

name

削除する権限分析ポリシーの名前です。

使用上の注意

権限分析ポリシーを削除する前に、そのポリシーを無効にする必要があります。有効なポリシーは削除できません。

ENABLE_CAPTUREプロシージャ

このプロシージャは、指定された権限分析ポリシーに対して権限分析の記録を開始します。ポリシーが有効化されると、ポリシーの条件を満たすすべての権限の使用状況が記録されます。

構文

DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (
name      IN VARCHAR2);

パラメータ

表115-6 ENABLE_CAPTUREプロシージャのパラメータ

パラメータ

説明

name

有効にする権限分析ポリシーの名前。

使用上の注意

次の使用上の注意が適用されます。

- 権限分析ポリシーが最初に作成されるときは、そのポリシーはデフォルトで無効になっています。権限分析ポリシーを有効にするには、ENABLE_CAPTUREを実行する必要があります。

- 一度に有効にできる権限分析ポリシーは1つのみです。ただし、G_DATABASEタイプにおけるデータベース全体の権限分析は、G_DATABASE以外のもう1つの権限分析とともに有効化できます。

GENERATE_RESULTプロシージャ

このプロシージャは、権限分析のデータ・ディクショナリ・ビューにデータを移入します。

関連項目:
権限分析ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

構文

DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (
name      IN VARCHAR2);

パラメータ

表115-7 GENERATE_RESULTプロシージャのパラメータ

パラメータ

説明

name

ビューにデータを移入する権限分析ポリシーの名前。

使用上の注意

権限分析ポリシーの権限分析ビューにデータを移入する前に、そのポリシーを無効にする必要があります。有効な権限分析ポリシーに対しては、このサブプログラムを起動できません。

116 DBMS_PROFILER

DBMS_PROFILERパッケージは、既存のPL/SQLアプリケーションをプロファイルし、パフォーマンス上のボトルネックを識別するためのインタフェースを提供します。またPL/SQLプロファイラ・データを収集し、永続的に保存できます。

この章では、次の項目について説明します。

- DBMS_PROFILERの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例外

- DBMS_PROFILERサブプログラムの要約

DBMS_PROFILERの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例外

概要

このパッケージにより、収集したプロファイラ(パフォーマンス)データを使用して、パフォーマンスの向上やPL/SQLアプリケーションのコード・カバレッジの決定に役立てることができます。アプリケーション開発者は、コード・カバレッジ・データを使用して、増分テストに集中できます。

このインタフェースを使用すると、セッションで実行される指定したすべてのライブラリ・ユニットのプロファイル情報を生成できます。プロファイラは、PL/SQL仮想マシン・レベルで情報を収集します。その情報には、各行の合計実行回数、その行の実行に要した合計時間、およびその行の特定の実行に要した最小時間と最大時間が含まれています。

注意:
データが収集されたPL/SQLユニットに関する、コード・カバレッジ値を推論することが可能です。

プロファイル情報は、データベース表に格納されています。これによってデータの問合せが可能となり、ユーザーは、カスタマイズ可能なレポート(サマリー・レポート、最新行、コード・カバレッジ・データなど)を作成できます。そして、データの分析が可能です。

PROFTAB.SQLスクリプトは、表116-1、表116-2および表116-3にリストした列、データ・タイプおよび定義を持つ表を作成します。

表116-1 表PLSQL_PROFILER_RUNSの列

列

データ・タイプ

定義

runid

NUMBER PRIMARY KEY

plsql_profiler_runnumberで作成される一意の実行識別子。

related_run

NUMBER

(クライアントとサーバーの相関関係に)関連する実行の実行ID。

run_owner

VARCHAR2(32)

実行を開始したユーザー。

run_date

DATE

実行の開始時間。

run_comment

VARCHAR2(2047)

この実行に関してユーザーが指定したコメント。

run_total_time

NUMBER

この実行の経過時間(ナノ秒)。

run_system_info

VARCHAR2(2047)

未使用。

run_comment1

VARCHAR2(2047)

追加のコメント。

spare1

VARCHAR2(256)

未使用。

表116-2 表PLSQL_PROFILER_UNITSの列

列

データ・タイプ

定義

runid

NUMBER

主キー。plsql_profiler_runsを参照。

unit_number

NUMBER

主キー。内部的に生成されたライブラリ・ユニット番号。

unit_type

VARCHAR2(32)

ライブラリ・ユニットのタイプ。

unit_owner

VARCHAR2(32)

ライブラリ・ユニットの所有者名。

unit_name

VARCHAR2(32)

ライブラリ・ユニットにおけるライブラリ・ユニット名のタイムスタンプ。

unit_timestamp

DATE

複数実行間にユニットで発生した変更を検出するため、将来使用される予定。

total_time

NUMBER

このユニットで経過した合計時間(ナノ秒)。プロファイラはこのフィールドを設定しませんが、分析ツールで利用するために用意されています。

spare1

NUMBER

未使用。

spare2

NUMBER

未使用。

表116-3 表PLSQL_PROFILER_DATAの列

列

データ・タイプ

定義

runid

NUMBER

主キー。一意の(生成された)実行識別子。

unit_number

NUMBER

主キー。内部的に生成されたライブラリ・ユニット番号。

line#

NUMBER

主キー。ユニット内のNULL以外の行番号。

total_occur

NUMBER

行が実行された回数。

total_time

NUMBER

行の実行に要した合計時間(ナノ秒)。

min_time

NUMBER

この行の最小実行時間(ナノ秒)。

max_time

NUMBER

この行の最大実行時間(ナノ秒)。

spare1

NUMBER

未使用。

spare2

NUMBER

未使用。

spare3

NUMBER

未使用。

spare4

NUMBER

未使用。

Oracle Databaseのバージョン8.xには、PL/SQLデモ用スクリプトに、文脈依存のレポート・ライター(profrep.sql)のサンプルが準備されています。

Oracle Database 10gより前のバージョンでは、DBMS_PROFILERパッケージはデータベースの作成時に自動的にロードされず、パッケージの作成にはオラクル社が提供するPROFLOAD.SQLスクリプトが使用されていたことに注意してください。10g以降では、データベースの作成時にDBMS_PROFILERパッケージが自動的にロードされ、PROFLOAD.SQLは不要になりました。

セキュリティ・モデル

プロファイラは、ユーザーにCREATE権限があるユニットのデータのみ収集し、EXECUTE ONLYアクセスが付与されているユニットは、このパッケージを使用してプロファイルすることはできません。通常、ユーザーがユニットをデバッグできる場合、同じユーザーがこのユニットをプロファイルできます。ただし、ユニットはDEBUGでコンパイルされているかどうかに関係なく、プロファイルできます。プロファイル対象のモジュールを、DEBUGでコンパイルすることをお薦めします(これによって、データベース内のユニットに関する追加情報が提供されます)。

注意:
DBMS_PROFILERは、NATIVEモードでコンパイルされたプログラム・ユニットを、ユーザーにはCREATE権限がないかのように処理します。つまり、ユーザーが出力を取得することはありません。

使用上の注意

- 一般的な実行

- 2通りの例外生成方法

一般的な実行

アプリケーションのパフォーマンス向上は、反復プロセスです。この反復プロセスには、次の手順が伴います。

1. プロファイラ・データの収集を行う1つ以上のベンチマーク・テストを使用して、アプリケーションを実行します。

2. プロファイラ・データを分析し、パフォーマンス上の問題を識別します。

3. 問題を解決します。

PL/SQLプロファイラでは、実行という概念を使用してこのプロセスをサポートします。実行には、プロファイラ・データの収集を行うベンチマーク・テストを介した、アプリケーションの実行が含まれます。実行の開始および終了は、START_PROFILERファンクションおよびSTOP_PROFILERファンクションをコールして制御できます。

データを収集するには、ユーザーはまずプロファイラ・ユーザーのスキーマ内でデータベース表を作成する必要があります。PROFTAB.SQLスクリプトは、プロファイラ・データを継続的に格納するための表や他のデータ構造を作成します。

PROFTAB.SQLを実行すると現行の表が削除されるので、注意してください。PROFTAB.SQLスクリプトは、RDBMS/ADMINディレクトリにあります。PL/SQLユニットの初回実行など、一部のPL/SQL操作には、実行中のPL/SQLユニットにバイト・コードをロードするカタログ表へのI/Oが含まれる場合があります。また、パッケージ・プロシージャまたはファンクションの初回コール時は、パッケージ初期化コードの実行に時間がかかる場合があります。

このオーバーヘッドの時間調節を避けるために、プロファイル・データの収集前に、データベースのウォーム・ アップを行います。ウォーム・アップを行うには、プロファイラ・データを収集せずにアプリケーションを1回実行します。

プロファイルは、システムの全ユーザーについて行うことができ、たとえば、あるパッケージの全ユーザーを(使用中か否かに関係なく)プロファイルできます。このような場合にSYSADMINは、変更したPROFTAB.SQLスクリプトを使用して次の内容を実行します。

- プロファイラ表および順序を作成します。

- これらの表および順序のSELECT/INSERT/UPDATE権限をすべてのユーザーに付与します。

- 表および順序のパブリック・シノニムを定義します。

注意:
表の実際のフィールドは変更しないでください。

一般的な実行には、次の処理が含まれます。

- 実行でプロファイラ・データ収集を開始します。

- プロファイラ・データおよびコード・カバレッジ・データが必要なPL/SQLコードを実行します。

- プロファイラ・データ収集を停止します。その実行に対して収集したデータは、データベース表に書き込まれます。

注意:
収集したプロファイラ・データは、ユーザーの切断時に自動的に格納されません。セッションの終了時にデータを格納するには、FLUSH_DATAファンクションまたはSTOP_PROFILERファンクションの明示的なコールを発行する必要があります。データ収集を停止すると、収集されたデータが格納されます。

アプリケーションの実行時、プロファイラ・データは、実行期間中存続するメモリー・データ構造に収集されます。実行の途中でFLUSH_DATAファンクションをコールすると、増分データを取得し、割り当てられたプロファイラ・データ構造のメモリーを解放できます。収集されたデータをフラッシュすると、その内容が前に作成したデータベース表に格納されます。

関連項目:
「FLUSH_DATAファンクションおよびプロシージャ」

出力内容の解釈

表plsql_profiler_dataに含まれる行は、コードが生成済のソース・ユニットの各行に対応しています。行番号の値でソースの行を示します。その行が存在し、total_occur値が0より大きい値である場合、その行に関連付けられたコードが実行されています。その行が存在し、total_occur値が0である場合、その行に関連付けられたコードは実行されていません。表に行が存在しない場合、その行のコードは生成されていません。したがって、レポートには記載されません。

1つの文のソースが1行に存在する場合、その文に対して生成されるコードはその行番号に関連付けられます。(単純な宣言などの場合や、最適化を行う場合、コードは不要になります)。カバレッジ情報を取得するには、ユニットはPLSQL_OPTIMIZE_LEVEL=1でコンパイルする必要があります。

1つの文が複数行にわたる場合、その文に対して生成されるコードは、範囲内にある行に関連付けられます。ただし、範囲内にあるすべての行がそれに関連付けられたコードを持つとはかぎりません。このような場合、行番号は連続していません。特に、複数行のSQL関連の文が1つの行に存在することがあります(通常は先頭)。これは、PL/SQLが、カーソルによって処理されたテキストをSQLエンジンに渡すためです。したがって、PL/SQLに関するかぎり、SQL文全体は分割できない1つの操作です。

複数の文が同じ行にある場合、プロファイラは各文の実行を結び付けます。行に制御フローが埋め込まれている場合、混乱が生じることがあります。たとえば、'then ...'と'else ...'が同じ行にある場合、'then'が'else'のどちらが実行されたのか判断できません。

一般的に、プロファイラおよびカバレッジ・レポートでは、1つの文が1つの行に存在する場合、解釈がより迅速に行われます。

2通りの例外生成方法

このパッケージの各ルーチンには、エラーのレポート方法が2通りあります。

- 成功または失敗をステータス値として戻すファンクション。例外を呼び出すことはありません。

- 成功した場合は正常に戻り、失敗した場合は例外を呼び出すプロシージャ。

いずれの場合も、ファンクションおよびプロシージャのパラメータは同じです。エラーのレポート方法のみ異なります。エラーがある場合、ファンクションが戻すエラー・コードと、プロシージャが呼び出す例外は対応しています。

次の項では、ファンクションのフォームに関する詳細を示しますが、プロシージャについても同じです。

例外

表116-4 DBMS_PROFILERの例外

例外

説明

version_mismatch

error_versionに相当します。

profiler_error

"error_param"または"error_io"のいずれかに相当します。

ファンクションからの戻り値が0の場合は正常終了を示し、ゼロ以外の戻り値はエラー状態を示します。発生する可能性のあるエラーは、次のとおりです。

- サブプログラムは不正なパラメータでコールされました。

error_param constant binary_integer := 1;

- データ・フラッシュ操作に失敗しました。プロファイラ表が作成済でアクセス可能か、および十分な領域があるかどうかをチェックしてください。

error_io    constant binary_integer := 2;

- パッケージとデータベースの実装に不一致があります。不適切なバージョンのDBMS_PROFILERパッケージがインストールされ、このバージョンのプロファイラ・パッケージがそのデータベース・バージョンで動作できない場合に、このエラーが戻されます。リカバリするための唯一の方法は、適切なバージョンのパッケージをインストールすることです。

error_version constant binary_integer := -1;

DBMS_PROFILERサブプログラムの要約

表116-5 DBMS_PROFILERパッケージのサブプログラム

サブプログラム

説明

FLUSH_DATAファンクションおよびプロシージャ

ユーザーのセッションで収集されたプロファイラ・データをフラッシュします。

GET_VERSIONプロシージャ

このAPIのバージョンを取得します。

INTERNAL_VERSION_CHECKファンクション

このバージョンのDBMS_PROFILERパッケージが、データベース内の実装で動作可能であることを検証します。

PAUSE_PROFILERファンクションおよびプロシージャ

プロファイラ・データ収集を一時停止します。

RESUME_PROFILERファンクションおよびプロシージャ

プロファイラ・データ収集を再開します。

START_PROFILERファンクションおよびプロシージャ

ユーザーのセッションでプロファイラ・データ収集を開始します。

STOP_PROFILERファンクションおよびプロシージャ

ユーザーのセッションでプロファイラ・データ収集を停止します。

FLUSH_DATAファンクションおよびプロシージャ

このファンクションは、ユーザーのセッションで収集されたプロファイラ・データをフラッシュします。データは、以前から存在しているデータベース表にフラッシュされます。

注意:
PROFTAB.SQLスクリプトを使用して、プロファイラ・データを継続的に格納するための表や他のデータ構造を作成します。

構文

DBMS_PROFILER.FLUSH_DATA
RETURN BINARY_INTEGER;

DBMS_PROFILER.FLUSH_DATA;

GET_VERSIONプロシージャ

このプロシージャは、このAPIのバージョンを取得します。

構文

DBMS_PROFILER.GET_VERSION (
major  OUT BINARY_INTEGER,
minor  OUT BINARY_INTEGER);

パラメータ

表116-6 GET_VERSIONプロシージャのパラメータ

パラメータ

説明

major

DBMS_PROFILERのバージョン番号。

minor

DBMS_PROFILERのリリース番号。

INTERNAL_VERSION_CHECKファンクション

このファンクションは、このバージョンのDBMS_PROFILERパッケージが、データベース内の実装で動作可能であることを検証します。

構文

DBMS_PROFILER.INTERNAL_VERSION_CHECK
RETURN BINARY_INTEGER;

PAUSE_PROFILERファンクションおよびプロシージャ

このファンクションは、プロファイラ・データ収集を一時停止します。

構文

DBMS_PROFILER.PAUSE_PROFILER
RETURN BINARY_INTEGER;

DBMS_PROFILER.PAUSE_PROFILER;

RESUME_PROFILERファンクションおよびプロシージャ

This function resumes profiler data collection.

構文

DBMS_PROFILER.RESUME_PROFILER
RETURN BINARY_INTEGER;

DBMS_PROFILER.RESUME_PROFILER;

START_PROFILERファンクションおよびプロシージャ

このファンクションは、ユーザーのセッションでプロファイラ・データ収集を開始します。

START_PROFILERファンクションの2つのフォームがオーバーロードされており、1つは実行を開始した実行番号およびコール結果を戻します。もう1つは実行番号を戻しません。最初のフォームは、プロファイラを制御するGUIベースのツールで使用することを目的としています。

構文

DBMS_PROFILER.START_PROFILER(
run_comment   IN VARCHAR2 := sysdate,
run_comment1  IN VARCHAR2 :='',
run_number    OUT BINARY_INTEGER)
RETURN BINARY_INTEGER;

DBMS_PROFILER.START_PROFILER(
run_comment IN VARCHAR2 := sysdate,
run_comment1 IN VARCHAR2 :='')
RETURN BINARY_INTEGER;

DBMS_PROFILER.START_PROFILER(
run_comment   IN VARCHAR2 := sysdate,
run_comment1  IN VARCHAR2 :='',
run_number    OUT BINARY_INTEGER);

DBMS_PROFILER.START_PROFILER(
run_comment IN VARCHAR2 := sysdate,
run_comment1 IN VARCHAR2 :='');

パラメータ

表116-7 START_PROFILERファンクションのパラメータ

パラメータ

説明

run_comment

実行するプロファイラごとに、コメントを指定できます。たとえば、コメントによって、データ収集で使用したベンチマーク・テストの名前およびバージョンを提供できます。

run_number

実行番号を格納します。ユーザーは実行データを格納しておき、後で再コールできます。

run_comment1

実行に関するわかりやすいコメントを記述できます。

STOP_PROFILERファンクションおよびプロシージャ

このファンクションは、ユーザーのセッションでプロファイラ・データ収集を停止します。

このファンクションには、セッションでそれまでに収集したデータをフラッシュする副次効果があり、これが実行の終了を示します。

構文

DBMS_PROFILER.STOP_PROFILER
RETURN BINARY_INTEGER;

DBMS_PROFILER.STOP_PROFILER;

117 DBMS_PROPAGATION_ADM

Streamsパッケージのセットの1つであるDBMS_PROPAGATION_ADMパッケージは、ソース・キューから宛先キューへの伝播を構成するための管理インタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_PROPAGATION_ADMの使用方法

- 概要

- セキュリティ・モデル

- DBMS_PROPAGATION_ADMサブプログラムの要約

DBMS_PROPAGATION_ADMの使用方法

この項では、DBMS_CAPTURE_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージは、伝播を開始、停止および構成するインタフェースを提供します。

関連項目:
このパッケージおよび伝播の詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

DBMS_PROPAGATION_ADMパッケージを使用してOracle Streams構成を管理する場合、ユーザーには、Oracle Streams管理者の権限を付与する必要があります。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streams概要および管理』を参照してください。

DBMS_PROPAGATION_ADMサブプログラムの要約

表117-1 DBMS_PROPAGATION_ADMパッケージのサブプログラム

サブプログラム

説明

ALTER_PROPAGATIONプロシージャ

伝播のルール・セットを追加、変更または削除します。

CREATE_PROPAGATIONプロシージャ

伝播を作成し、その伝播のソース・キュー、宛先キューおよびルール・セットを指定します。

DROP_PROPAGATIONプロシージャ

伝播を削除します。

START_PROPAGATIONプロシージャ

伝播を開始します。

STOP_PROPAGATIONプロシージャ

伝播を停止します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

ALTER_PROPAGATIONプロシージャ

このプロシージャは、伝播のルール・セットを追加、変更または削除します。

関連項目:
ルールとルール・セットの詳細は、『Oracle Streams概要および管理』および第139章「DBMS_RULE_ADM」を参照してください。

構文

DBMS_PROPAGATION_ADM.ALTER_PROPAGATION(
propagation_name          IN  VARCHAR2,
rule_set_name             IN  VARCHAR2  DEFAULT NULL,
remove_rule_set           IN  BOOLEAN   DEFAULT FALSE,
negative_rule_set_name    IN  VARCHAR2  DEFAULT NULL,
remove_negative_rule_set  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表117-2 ALTER_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

propagation_name

変更する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

rule_set_name

伝播に使用するポジティブ・ルール・セット名。ポジティブ・ルール・セットには、伝播でメッセージを伝播するように指示するルールが含まれます。

ポジティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるprop_rulesという名前のポジティブ・ルール・セットを指定するには、hr.prop_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_rule_setパラメータをFALSEに設定すると、既存のすべてのポジティブ・ルール・セットが保持されます。NULLを指定し、remove_rule_setパラメータをTRUEに設定すると、既存のすべてのポジティブ・ルール・セットが削除されます。

remove_rule_set

TRUEに設定すると、指定した伝播に対するポジティブ・ルール・セットが削除されます。伝播のポジティブ・ルール・セットを削除し、ネガティブ・ルール・セットが伝播に存在しない場合は、すべてのメッセージが伝播によって伝播されます。

伝播のポジティブ・ルール・セットを削除し、ネガティブ・ルール・セットが伝播に存在する場合は、そのネガティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

FALSEに設定すると、指定した伝播に対するポジティブ・ルール・セットが保持されます。

rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

negative_rule_set_name

伝播に使用するネガティブ・ルール・セット名。ネガティブ・ルール・セットには、伝播でメッセージを廃棄するように指示するルールが含まれます。

ネガティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるneg_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、remove_negative_rule_setパラメータをFALSEに設定すると、既存のすべてのネガティブ・ルール・セットが保持されます。NULLを指定し、remove_negative_rule_setパラメータをTRUEに設定すると、既存のすべてのネガティブ・ルール・セットが削除されます。

ポジティブ・ルール・セットとネガティブ・ルール・セットの両方を伝播に指定した場合は、常にネガティブ・ルール・セットが先に評価されます。

remove_negative_rule_set

TRUEに設定すると、指定した伝播に対するネガティブ・ルール・セットが削除されます。伝播のネガティブ・ルール・セットを削除し、ポジティブ・ルール・セットが伝播に存在しない場合は、すべてのメッセージが伝播によって伝播されます。

伝播のネガティブ・ルール・セットを削除し、ポジティブ・ルール・セットが伝播に存在する場合は、そのポジティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

FALSEに設定すると、指定した伝播に対するネガティブ・ルール・セットが保持されます。

negative_rule_set_nameパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

CREATE_PROPAGATIONプロシージャ

このプロシージャは伝播を作成し、その伝播のソース・キュー、宛先キューおよび任意のルール・セットを指定します。伝播によって、ローカル・ソース・キューのメッセージが宛先キューに伝播されます。宛先キューは、ソース・キューと同じデータベース内にある場合と、ない場合があります。

構文

DBMS_PROPAGATION_ADM.CREATE_PROPAGATION(
propagation_name           IN  VARCHAR2,
source_queue               IN  VARCHAR2,
destination_queue          IN  VARCHAR2,
destination_dblink         IN  VARCHAR2  DEFAULT NULL,
rule_set_name              IN  VARCHAR2  DEFAULT NULL,
negative_rule_set_name     IN  VARCHAR2  DEFAULT NULL,
queue_to_queue             IN  BOOLEAN   DEFAULT NULL,
original_propagation_name  IN  VARCHAR2  DEFAULT NULL,
auto_merge_threshold       IN  NUMBER    DEFAULT NULL);

パラメータ

表117-3 CREATE_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

propagation_name

作成する伝播の名前。NULLを設定することはできません。所有者を指定しないでください。

注意: propagation_nameの設定は、伝播の作成後は変更できません。

source_queue

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにソース・キューが含まれている必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue

宛先キューの名前。[schema_name.]queue_nameの形式で指定します。

たとえば、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_dblink

伝播で使用するデータベース・リンクの名前。データベース・リンクとは、ソース・キューが含まれているデータベースから宛先キューが含まれているデータベースへのリンクです。

NULLを指定する場合は、ソース・キューおよび宛先キューが同一のデータベース内にある必要があります。

注意: 接続修飾子は使用できません。

rule_set_name

伝播に使用するポジティブ・ルール・セット名。ポジティブ・ルール・セットには、伝播でメッセージを伝播するように指示するルールが含まれます。

ポジティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるprop_rulesという名前のポジティブ・ルール・セットを指定するには、hr.prop_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、ネガティブ・ルール・セットが伝播に存在しない場合は、そのキュー内のすべてのメッセージが伝播によって伝播されます。

NULLを指定し、ネガティブ・ルール・セットが伝播に存在する場合は、そのネガティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

negative_rule_set_name

伝播に使用するネガティブ・ルール・セット名。ネガティブ・ルール・セットには、伝播でメッセージを廃棄するように指示するルールが含まれます。

ネガティブ・ルール・セットを伝播に使用する場合は、既存のルール・セットを[schema_name.]rule_set_nameの形式で指定する必要があります。たとえば、hrスキーマに含まれるneg_rulesという名前のネガティブ・ルール・セットを指定するには、hr.neg_rulesと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定したルール・セットが存在しない場合は、エラーが戻されます。ルール・セットを作成し、そのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

NULLを指定し、ポジティブ・ルール・セットが伝播に存在しない場合は、そのキュー内のすべてのメッセージが伝播によって伝播されます。

NULLを指定し、ポジティブ・ルール・セットが伝播に存在する場合は、そのポジティブ・ルール・セットによって廃棄されなかった該当キュー内のメッセージすべてが、伝播によって伝播されます。

ポジティブ・ルール・セットとネガティブ・ルール・セットの両方を伝播に指定した場合は、常にネガティブ・ルール・セットが先に評価されます。

queue_to_queue

TRUEまたはNULLに設定すると、キューからキューへの伝播が実行されます。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEに設定すると、キューからデータベース・リンクへの伝播が実行されます。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

original_propagation_name

作成中の伝播が、DBMS_STREAMS_ADMパッケージのSPLIT_STREAMSプロシージャによって開始される分割操作およびマージ操作の一部である場合は、元の伝播名を指定します。分割操作は、新しい名前で元の伝播のクローンを作成します。クローンが作成された伝播が、DBMS_STREAMS_ADMパッケージのMERGE_STREAMSプロシージャを使用して元のストリームにコピーされる場合は、元の伝播の名前が重要になります。

作成中の伝播が分割操作およびマージ操作の一部ではない場合は、NULLを指定します。

関連項目: SPLIT_STREAMSプロシージャおよびMERGE_STREAMSプロシージャ

auto_merge_theshold

次の両方の条件を満たす場合は、正数を指定します。

- 作成中の伝播が、DBMS_STREAMS_ADMパッケージのSPLIT_STREAMSプロシージャによって開始される分割操作およびマージ操作の一部である場合

- ストリームが自動的に元のストリームにマージされる場合

次のいずれかの条件を満たす場合は、NULLを指定します。

- 作成中の伝播が分割操作およびマージ操作の一部ではない場合

- 作成中の伝播が分割操作およびマージ操作の一部であるが、分割されたストリームが自動的に元のストリームにマージされない場合

関連項目: SPLIT_STREAMSプロシージャおよびMERGE_STREAMSプロシージャ

使用上の注意

このプロシージャによって伝播が開始され、伝播ジョブが作成される場合もあります。このプロシージャによって伝播ジョブが作成される場合は、これによって伝播ジョブのデフォルトのスケジュールが確立されます。各伝播ジョブはOracle Schedulerジョブです。Oracle Schedulerを使用して、伝播ジョブのスケジュールを調整できます。

ソース・キューを所有するユーザーが、メッセージを伝播するユーザーです。このユーザーには、メッセージを伝播するための権限が必要です。

関連項目:

- 第139章「DBMS_RULE_ADM」

- 伝播、メッセージの伝播に必要な権限、伝播ジョブ、および伝播スケジュールの詳細は、『Oracle Streams概要および管理』を参照してください。

DROP_PROPAGATIONプロシージャ

このプロシージャは、伝播を削除し、ソース・キューで宛先キューへのすべてのメッセージを削除します。また、このプロシージャによって、ソース・キューから宛先キューへの伝播スケジュールも削除されます。

構文

DBMS_PROPAGATION_ADM.DROP_PROPAGATION(
propagation_name       IN  VARCHAR2,
drop_unused_rule_sets  IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表117-4 DROP_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

propagation_name

削除する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

drop_unused_rule_sets

TRUEを指定すると、指定された伝播に使用されるポジティブ・ルール・セットおよびネガティブ・ルール・セットのうち、取得プロセス、伝播、適用プロセスおよびメッセージ・クライアントなどの、他のOracle Streamsクライアントで使用されていないものが削除されます。このプロシージャによってルール・セットが削除される場合は、そのルール・セット内のルールのうち、別のルール・セット内に存在しないルールも同時に削除されます。

FALSEに設定すると、指定した伝播で使用されるルール・セットは削除されず、ルール・セットにルールが保持されます。

使用上の注意

このプロシージャを使用して伝播を削除すると、DBMS_STREAMS_ADMパッケージを使用して伝播に対して作成されたルールに関する情報が、Oracle Streamsルールのデータ・ディクショナリ・ビューから削除されます。そのルールが削除対象の伝播のすべてのルール・セットに存在しない場合でも、こうしたルールに関する情報は削除されます。

関連項目:
Oracle Streamsデータ・ディクショナリ・ビューの詳細は、『Oracle Streams概要および管理』を参照してください。

Oracle Streamsルールのデータ・ディクショナリ・ビューは次のとおりです。

- ALL_STREAMS_GLOBAL_RULES

- DBA_STREAMS_GLOBAL_RULES

- ALL_STREAMS_MESSAGE_RULES

- DBA_STREAMS_MESSAGE_RULES

- ALL_STREAMS_SCHEMA_RULES

- DBA_STREAMS_SCHEMA_RULES

- ALL_STREAMS_TABLE_RULES

- DBA_STREAMS_TABLE_RULES

注意:
伝播を削除すると、その伝播で使用されるが、他の伝播では使用されない伝播ジョブも自動的に削除されます。

START_PROPAGATIONプロシージャ

このプロシージャは、伝播を開始します。

構文

DBMS_PROPAGATION_ADM.START_PROPAGATION(
propagation_name  IN  VARCHAR2);

パラメータ

表117-5 START_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

propagation_name

開始する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

使用上の注意

伝播ステータスは永続的に記録されます。したがって、ステータスがENABLEDの場合、伝播はデータベース・インスタンスの起動時に開始されます。

STOP_PROPAGATIONプロシージャ

このプロシージャは、伝播を停止します。

構文

DBMS_PROPAGATION_ADM.STOP_PROPAGATION(
propagation_name  IN  VARCHAR2,
force             IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表117-6 STOP_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

propagation_name

停止する伝播の名前。既存の伝播名を指定する必要があります。所有者を指定しないでください。

force

TRUEに設定すると、伝播が停止され、伝播の統計情報が消去されます。

FALSEに設定すると、伝播の統計情報が消去されずに伝播が停止されます。

使用上の注意

伝播ステータスは永続的に記録されます。したがって、ステータスがDISABLEDまたはABORTEDの場合、伝播はデータベース・インスタンスの起動時に開始されません。

118 DBMS_QOPATCH

DBMS_QOPATCHパッケージでは、インストールしたデータベース・パッチを確認するためのインタフェースが提供されます。

この章では、次の項目について説明します。

- DBMS_QOPATCHの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- 例外

- DBMS_QOPATCHサブプログラムの要約

DBMS_QOPATCHの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- エラー・メッセージ

概要

DBMS_QOPATCHパッケージでは、インストールしたデータベース・パッチを確認するためのPLSQL/SQLインタフェースが提供されます。このインタフェースでは、OPATCH LSINVENTORY -XMLコマンドの一部として使用可能なすべてのパッチ情報が提供されます。このパッケージは、パッチとメタ情報を提供するために、OUIパッチ・インベントリにリアルタイムでアクセスします。

セキュリティ・モデル

DBMS_QOPATCHパッケージはSYSスキーマの一部として作成され、SYSはこれらのサブプログラムを実行できる唯一のユーザーです。

使用上の注意

- このパッケージは、データベースがOPENの場合のみ動作します。

- Oracle Real Application Clusters(RAC)環境では、サブプログラムで他のRACノードからデータのフェッチが必要な場合に、他のノードにジョブを作成することでデータを取得します。この場合に、他のRACノードからデータをフェッチするには、JOB_QUEUE_PROCESSESがパッケージに対して>0である必要があります。

- ジョブの実行に遅延が生じた場合は、パッケージによってORA-20008エラーが返されます。

エラー・メッセージ

次の表に、DBMS_QOPATCHパッケージで発生する例外を示します。

表118-1 DBMS_QOPATCHエラー・メッセージ

エラー・コード

説明

ORA-20001

最新のXMLインベントリが表にロードされていません。

ORA-20002

ディクショナリの作成に失敗しました。

ORA-20003

ノード上でのジョブの構成に失敗しました。

ORA-20004

ノードが非アクティブのためジョブの構成に失敗しました。

ORA-20005

指定のノードとインスタンス名を使用してジョブが構成されていません。

ORA-20006

構成されたRACのアクティブなインスタンスとOpatchジョブの数が同じではありません。

ORA-20007

ノードまたはインスタンスが非アクティブのためジョブの構成に失敗しました。

ORA-20008

タイムアウト - ジョブの実行時間が120秒を超えています。

ORA-20009

ジョブの実行に失敗しました。

ORA-20010

ノードが非アクティブでジョブが実行できません。

ORA-20011

ジョブ名がNULLでインベントリがロードできません。

ORA-20012

JOB_QUEUE_PROCESSESが0に設定されていてインベントリがロードできません。

ORA-20013

DBMS_QOPATCHは、主に、インストールされていない領域で動作しました。

ORA-20014

データベースがオープンしていません。

ORA-20015

データベースが読取り専用でオープンしました。

DBMS_QOPATCHサブプログラムの概要

表118-2 DBMS_QOPATCHパッケージのサブプログラム

サブプログラム

説明

GET_OPATCH_BUGSファンクション

パッチ番号が指定されている場合にXML形式でパッチのバグ・リストを作成します。パッチが指定されていない場合は、すべてのパッチにインストール済のすべてのバグがXML形式でリストされます。

GET_OPATCH_COUNTファンクション

インストール済のパッチの合計数をXML形式で作成します。

GET_OPATCH_DATAファンクション

パッチの最上位レベルのパッチ情報(パッチID、パッチの作成時間など)をXML要素で作成します。

GET_OPATCH_FILESファンクション

特定のパッチ番号で変更されたファイルのリストをXML形式で作成します。

GET_OPATCH_INSTALL_INFOファンクション

パッチやインベントリの場所など、ORACLE_HOMEの詳細を含むXML要素を戻します。

GET_OPATCH_LISTファンクション

XMLインベントリからXML要素としてインストール済のパッチのリストを作成します。

GET_OPATCH_LSINVENTORY

Opatchインベントリ全体をXMLインスタンス文書として戻します。

GET_OPATCH_OLAYSファンクション

特定のパッチのオーバーレイ・パッチをXML要素として作成します。

GET_OPATCH_PREQSファンクション

特定のパッチの前提条件パッチをXML要素として作成します。

GET_OPATCH_XSLT

Opatch XMLインベントリ表示のスタイルシートを戻します。

GET_PENDING_ACTIVITYファンクション

バイナリ・インベントリを問い合せることで、単一インスタンス上で適用されたSQLパッチに関連する情報を戻します。

GET_SQLPATCH_STATUSプロシージャ

完全なパッチ・レベルの情報を作成するために、SQLパッチ・レジストリから問い合せることでSQLパッチの状態を表示します。

IS_PATCH_INSTALLEDファンクション

XMLインベントリを問い合せることで、インストール済のパッチの情報(パッチID、適用日、SQLパッチ情報など)をXMLノードとして作成します。

PATCH_CONFLICT_DETECTIONファンクション

既存のパッチと競合する場合は、特定のファイルの競合するパッチを戻します。

SET_CURRENT_OPINSTプロシージャ

ノード名とインスタンスを設定して、Oracle Real Application Clusters(RAC)環境でその固有のインベントリの詳細を取得します。

GET_OPATCH_BUGSファンクション

このファンクションでは、パッチ番号が指定されている場合にパッチ内のバグ・リストを提供します。パッチ番号が指定されていない場合は、指定されたXML形式ですべてのバグがリストされます。

構文

DBMS_QOPATCH.GET_OPATCH_BUGS (
patchnum IN VARCHAR2 DEFAULT NULL);
RETURN XMLTYPE;

パラメータ

表118-3 GET_OPATCH_BUGSファンクションのパラメータ

パラメータ

説明

patchnum

パッチ番号

GET_OPATCH_COUNTファンクション

このファンクションは、インストール済のパッチの合計数をXML形式で作成します。

構文

DBMS_QOPATCH.GET_OPATCH_COUNT (
patchnum IN VARCHAR2);
RETURN XMLTYPE;

パラメータ

表118-4 GET_OPATCH_COUNTファンクションのパラメータ

パラメータ

説明

patchnum

パッチ番号

GET_OPATCH_DATAファンクション

このファンクションは、パッチの最上位レベルのパッチ情報(パッチID、パッチの作成時間など)をXML要素で作成します。

構文

DBMS_QOPATCH.GET_OPATCH_DATA (
patchnum IN VARCHAR2);
RETURN XMLTYPE;

パラメータ

表118-5 GET_OPATCH_DATAファンクションのパラメータ

パラメータ

説明

patchnum

パッチ番号

GET_OPATCH_FILESファンクション

このファンクションは、特定のパッチ番号で変更されたファイルのリストをXML形式で作成します。

構文

DBMS_QOPATCH.GET_OPATCH_FILES (
patchnum IN VARCHAR2);
RETURN XMLTYPE;

パラメータ

表118-6 GET_OPATCH_FILESファンクションのパラメータ

パラメータ

説明

patchnum

パッチ番号

GET_OPATCH_INSTALL_INFOファンクション

このファンクションは、パッチやインベントリの場所など、ORACLE_HOMEの詳細を含むXML要素を戻します。

構文

DBMS_QOPATCH.GET_OPATCH_INSTALL_INFO
RETURNS XMLTYPE;

GET_OPATCH_LISTファンクション

このファンクションは、XMLインベントリからXML要素としてインストール済のパッチのリストを作成します。

構文

DBMS_QOPATCH.GET_OPATCH_LIST
RETURN XMLTYPE;

GET_OPATCH_LSINVENTORY

このファンクションは、Opatchインベントリ全体をXMLインスタンス文書として戻します。

構文

DBMS_QOPATCH.GET_OPATCH_LSINVENTORY
RETURN XMLTYPE;

GET_OPATCH_OLAYSファンクション

このファンクションは、特定のパッチのオーバーレイ・パッチをXML要素として作成します。

構文

DBMS_QOPATCH.GET_OPATCH_OLAYS (
patchnum IN VARCHAR2);
RETURN XMLTYPE;

パラメータ

表118-7 GET_OPATCH_OLAYSファンクションのパラメータ

パラメータ

説明

patchnum

パッチ番号

GET_OPATCH_PREQSファンクション

このファンクションは、特定のパッチの前提条件パッチをXML要素として作成します。

構文

DBMS_QOPATCH.GET_OPATCH_PREQS (
patchnum IN VARCHAR2);
RETURN XMLTYPE;

パラメータ

表118-8 GET_OPATCH_PREQSファンクションのパラメータ

パラメータ

説明

patchnum

パッチ番号

GET_OPATCH_XSLT

このファンクションは、Opatch XMLインベントリ表示のスタイルシートを戻します。このサブプログラムの戻り値のタイプを使用することでXMLTRANSFORMの実行が可能となり、その変換された結果の表示はOpatchテキストの出力と同じになります。

構文

DBMS_QOPATCH.GET_OPATCH_XSLT
RETURN XMLTYPE;

GET_PENDING_ACTIVITYファンクション

このファンクションでは、バイナリ・インベントリを問い合せることで、単一インスタンス上で適用されたSQLパッチに関連する情報が戻されます。これがOracle Real Application Clusters(RAC)システムである場合は、SQLパッチが適用されないノード名がリストされます。

構文

DBMS_QOPATCH.GET_PENDING_ACTIVITY
RETURN XMLTYPE;

GET_SQLPATCH_STATUSプロシージャ

このファンクションは、完全なパッチ・レベルの情報を作成するために、SQLパッチ・レジストリから問い合せることでSQLパッチの状態を表示します。パッチ番号が指定されている場合は、特定のSQLパッチに固有の情報が表示され、指定されていない場合はすべてのSQLパッチの情報が表示されます。

構文

DBMS_QOPATCH.GET_SQLPATCH_STATUS (
patchnum IN VARCHAR2 DEFAULT NULL);

パラメータ

表118-9 GET_SQLPATCH_STATUSプロシージャのパラメータ

パラメータ

説明

patchnum

パッチ番号

IS_PATCH_INSTALLEDファンクション

このファンクションは、XMLインベントリを問い合せることで、インストール済のパッチの情報(パッチID、適用日、SQLパッチ情報など)をXMLノードとして作成します。

構文

DBMS_QOPATCH.IS_PATCH_INSTALLED (
patchnum IN VARCHAR2);
RETURN XMLTYPE;

パラメータ

表118-10 IS_PATCH_INSTALLEDファンクションのパラメータ

パラメータ

説明

patchnum

パッチ番号

PATCH_CONFLICT_DETECTIONファンクション

このファンクションは、既存のパッチと競合した場合に、特定のファイルの競合するパッチを戻します。

構文

DBMS_QOPATCH.PATCH_CONFLICT_DETECTION (
fileName  IN VARCHAR2);
RETURN XMLTYPE;

パラメータ

表118-11 PATCH_CONFLICT_DETECTIONファンクションのパラメータ

パラメータ

説明

fileName

ファイル名。

SET_CURRENT_OPINSTプロシージャ

このプロシージャは、ノード名とインスタンスを設定して、Oracle Real Application Clusters(RAC)環境でその固有のインベントリの詳細を取得します。

構文

DBMS_QOPATCH.SET_CURRENT_OPINST (
node_name    IN VARCHAR2 DEFAULT NULL,
inst_name    IN VARCHAR2 DEFAULT NULL);

パラメータ

表118-12 PATCH_CONFLICT_DETECTIONファンクションのパラメータ

パラメータ

説明

node_name

ノードの名前です。

inst_name

インスタンスの名前です。

119 DBMS_RANDOM

DBMS_RANDOMパッケージは、組込み式の乱数ジェネレータを提供します。DBMS_RANDOMは暗号化に使用するものではありません。

この章では、次の項目について説明します。

- DBMS_RANDOMの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

- DBMS_RANDOMサブプログラムの要約

DBMS_RANDOMの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

推奨されないサブプログラム

注意:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 11gでは、次のサブプログラムの使用は推奨されていません。

- INITIALIZEプロシージャ

- RANDOMファンクション

- TERMINATEプロシージャ

セキュリティ・モデル

このパッケージは、SYSとしてインストールする必要があります。デフォルトでは、このパッケージは、現行のユーザー名、秒数まで示した現在の時間および現行セッションで初期化されます。このパッケージを実行する必要があるユーザーには、明示的にEXECUTE権限を付与し、PUBLIC EXECUTE権限に依存しないことをお薦めします。

使用上の注意

- DBMS_RANDOM.RANDOMは、[-2^^31, 2^^31)の整数を生成します。

- DBMS_RANDOM.VALUEは[0,1)の数を生成し、精度は38桁です。

DBMS_RANDOMは明示的に初期化できますが、乱数ジェネレータをコールする前に初期化する必要はありません。明示的な初期化が行われない場合は、日付、ユーザーIDおよびプロセスIDで自動的に初期化されます。

このパッケージを、同じシードを使用して2回シードしてから同じ方法でアクセスした場合、2回とも同じ結果が生成されます。

テストなどのように、すべての実行で乱数の順序が同じになる必要のある場合があります。その場合は、DBMS_RANDOM.SEEDのオーバーロードの1つをコールして、ジェネレータを定数値でシードします。各実行時の出力を変える場合は、単にシードのコールを省略して、システムによって適切なシードが選択されるようにします。

DBMS_RANDOMサブプログラムの要約

表119-1 DBMS_RANDOMパッケージのサブプログラム

サブプログラム

説明

INITIALIZEプロシージャ

シード値を使用して、パッケージを初期化します。

NORMALファンクション

正規分布の乱数を戻します。

RANDOMファンクション

乱数を生成します。

SEEDプロシージャ

シードをリセットします。

STRINGファンクション

ランダム文字列を取得します。

TERMINATEプロシージャ

パッケージを終了します。

VALUEファンクション

0以上1未満で小数点以下38桁(精度38桁)の乱数を取得します。このファンクションがオーバーロードされると、ランダムなOracleの数値xを取得します。このxはlow以上high未満です。

INITIALIZEプロシージャ

このプロシージャはジェネレータを初期化します。

注意:
リリース11gR1では、このプロシージャの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。

構文

DBMS_RANDOM.INITIALIZE (
val  IN  BINARY_INTEGER);

プラグマ

PRAGMA restrict_references (initialize, WNDS);

パラメータ

表119-2 INITIALIZEプロシージャのパラメータ

パラメータ

説明

val

乱数の生成に使用するシード番号。

使用上の注意

このプロシージャはSEEDプロシージャのコールのみを行うもので、今後サポートされません。

NORMALファンクション

このファンクションは、標準正規分布の乱数を戻します。

構文

DBMS_RANDOM.NORMAL
RETURN NUMBER;

プラグマ

PRAGMA restrict_references (normal, WNDS);

戻り値

表119-3 NORMALファンクションのパラメータ

パラメータ

説明

number

乱数を戻します。

RANDOMファンクション

このプロシージャは乱数を生成します。

注意:
リリース11gR1では、このファンクションの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。

構文

DBMS_RANDOM.RANDOM
RETURN binary_integer;

プラグマ

PRAGMA restrict_references (random, WNDS);

戻り値

表119-4 RANDOMファンクションのパラメータ

パラメータ

説明

binary_integer

-2の31乗以上2の31乗未満の整数の乱数を戻します。

SEEDプロシージャ

このプロシージャは、シードをリセットします。

構文

DBMS_RANDOM.SEED (
val  IN  BINARY_INTEGER);

DBMS_RANDOM.SEED (
val  IN  VARCHAR2);

プラグマ

PRAGMA restrict_references (seed, WNDS);

パラメータ

表119-5 SEEDプロシージャのパラメータ

パラメータ

説明

val

乱数の生成に使用するシード番号または文字列。

使用上の注意

シードには2000までの長さの文字列を使用できます。

STRINGファンクション

このファンクションは、ランダム文字列を取得します。

構文

DBMS_RANDOM.STRING
opt  IN  CHAR,
len  IN  NUMBER)
RETURN VARCHAR2;

プラグマ

PRAGMA restrict_references (string, WNDS);

パラメータ

表119-6 STRINGプロシージャのパラメータ

パラメータ

説明

opt

戻される文字列の表示方法を指定します。

- 'u'、'U' - 大文字のアルファベット文字で文字列を戻します。

- 'l'、'L' - 小文字のアルファベット文字で文字列を戻します。

- 'a'、'A' - 大/小文字が混在したアルファベット文字で文字列を戻します。

- 'x'、'X' - 大文字のアルファベット文字と数字で文字列を戻します。

- 'p'、'P' - 印刷可能な任意の文字で文字列を戻します。

これ以外の場合、戻される文字列は大文字のアルファベット文字になります。

len

戻される文字列の長さ。

戻り値

表119-7 STRINGファンクションの戻り値

パラメータ

説明

VARCHAR2

VARCHAR2を戻します。

TERMINATEプロシージャ

パッケージを終了するときは、TERMINATEプロシージャをコールします。

注意:
リリース11gR1では、このプロシージャの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。

構文

DBMS_RANDOM.TERMINATE;

VALUEファンクション

基本のファンクションによって、0以上1未満で、小数点以下が38桁(精度38桁)の乱数が取得されます。あるいは、ランダムなOracleの数値xを取得できます(このxはlow以上high未満です)。

構文

DBMS_RANDOM.VALUE
RETURN NUMBER;

DBMS_RANDOM.VALUE(
low  IN  NUMBER,
high IN  NUMBER)
RETURN NUMBER;

パラメータ

表119-8 VALUEファンクションのパラメータ

パラメータ

説明

low

乱数を生成する範囲の最小値(この値を含む)。生成される数値はlowと等しい場合があります。

high

乱数を生成する範囲の最大値(この値を含まない)。生成される数値はhighよりも小さくなります。

戻り値

表119-9 VALUEファンクションの戻り値

パラメータ

説明

NUMBER

Oracleの数値を戻します。

120 DBMS_RECTIFIER_DIFF

DBMS_RECTIFIER_DIFFパッケージには、2つのレプリケート・サイト間のデータの不整合を検出して解決するためのインタフェースが含まれています。

- DBMS_RECTIFIER_DIFFのドキュメント

DBMS_RECTIFIER_DIFFのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_RECTIFIER_DIFF」を参照してください。

121 DBMS_REDACT

DBMS_REDACTパッケージは、権限の低いユーザーやアプリケーションによって発行された問合せから戻されるデータをマスク(リダクション)できる、Oracle Data Redactionへのインタフェースを提供します。

関連項目:

- 機密データを保護するためのData Redactionの使用の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_REDACTの使用

- 概要

- セキュリティ・モデル

- 定数

- プロシージャの使用

- DBMS_REDACTサブプログラムの要約

DBMS_REDACTの使用

- 概要

- セキュリティ・モデル

- 定数

- プロシージャの使用

概要

Data Redactionを使用すると、アプリケーションのマスキング・ポリシーを定義できます。Oracle Data Redactionでは、ユーザーのSELECT問合せから戻されるデータをマスク(リダクション)するための機能が提供されます。マスキングはリアルタイムで発生します。データ・リダクション・ポリシーは、問合せ元のユーザーのSYS_CONTEXTの値に応じて、そのユーザーに適用されます。このリダクション・プロセスでは、問合せ対象のデータが静的または不変である必要はなく、データ・セット全体をオフラインで同時にリダクションする必要もありません。Oracle Databaseでは、エントリ列のデータではなく、ユーザーの問合せで指定された行のデータのみがリダクションされます。リダクションは、データが問合せ元のユーザーまたはアプリケーションに戻される直前に発生します。

セキュリティ・モデル

問合せ元のユーザーにEXEMPT REDACTION POLICYシステム権限が付与されている場合、リダクションは実行されません。問合せ元のユーザーにEXEMPT REDACTION POLICYシステム権限が付与されていない場合、現行ユーザーの環境内で、ポリシーの式が評価されます。ポリシーの式がTRUEと評価された場合はリダクションが実行され、そうでない場合は実行されません。

DBMS_REDACTパッケージのサブプログラムを実行するには、そのパッケージのEXECUTE権限が必要です。インタフェースに含まれるプロシージャは、現在のユーザーの権限で実行されます。

定数

DBMS_REDACTパッケージでは、次の表に示す定数が使用されます。

表121-1 DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値

定数

値

タイプ

説明

NONE

0

BINARY_INTEGER

リダクションなし。

FULL

1

BINARY_INTEGER

固定値へのリダクション。

PARTIAL

2

BINARY_INTEGER

部分的なリダクション。列データの一部をリダクションします。

RANDOM

4

BINARY_INTEGER

ランダム・リダクション。各問合せの結果は、異なるランダムな値になります。

REGEXP

5

BINARY_INTEGER

正規表現ベースのリダクション。

表121-2 DBMS_REDACT.ALTER_POLICYのactionパラメータの値

定数

値

タイプ

説明

ADD_COLUMN

1

BINARY_INTEGER

リダクション・ポリシーに列を追加します。

DROP_COLUMN

2

BINARY_INTEGER

リダクション・ポリシーから列を削除します。

MODIFY_EXPRESSION

3

BINARY_INTEGER

リダクション・ポリシーの式を変更します(この式はBOOLEAN値に評価されます。TRUEの場合はリダクションが適用され、そうでない場合は適用されません)。

MODIFY_COLUMN

4

BINARY_INTEGER

リダクション・ポリシーに含まれる列を変更することによって、リダクションのfunction_typeまたはfunction_parametersを変更します。

SET_POLICY_DESCRIPTION

5

BINARY_INTEGER

リダクション・ポリシーの説明を設定します。

SET_COLUMN_DESCRIPTION

6

BINARY_INTEGER

列に対して実行されるリダクションの説明を設定します。

プロシージャの使用

次の表に、リダクションする列のデータ・タイプに基づく、リダクション・ファンクションのタイプとそのパラメータの関係を示します。様々な書式文字列の例を提供することによって、文字列データ・タイプ(この場合は社会保障番号(SSN))やDATEデータ・タイプに対していくつかの一般的なリダクションを実行する方法を示します。また、数値データ・タイプに対するリダクションの様々な例も提供します。

表121-3 データ・リダクション・ファンクションのタイプ

function_type

function_parameters

例

DBMS_REDACT.NONE

DBMS_REDACT.FULL

DBMS_REDACT.PARTIAL(文字型用)

次の5つのフィールドを含むカンマ区切りリスト(フィールドを区切るカンマの後にはスペースを入れません)。

- REDACT_PARTIAL_INPUT_FORMAT

- REDACT_PARTIAL_OUTPUT_FORMAT

- REDACT_PARTIAL_MASKCHAR

- REDACT_PARTIAL_MASKFROM

- REDACT_PARTIAL_MASKTO

表121-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。

'VVVFVVFVVVV,VVV-VV-VVVV,X,1,5'。123-45-6789のようなSSN文字列の最初の5桁をマスクし、ダッシュを戻して書式設定し、XXX-XX-6789のような文字列にします。

'VVVFVVFVVVV,VVV VV VVVV,X,1,5'。123-45-6789のようなSSN文字列の最初の5桁をマスクし、スペースを追加して書式設定し、XXX XX 6789のような文字列にします。

REDACT_PARTIAL_INPUT_FORMAT - 入力形式: 値をリダクションする可能性がある場合はV、書式文字を無視する場合はFを指定します。

REDACT_PARTIAL_INPUT_FORMATのフィールド値VVVFVVFVVVVは、123-45-6789のようなSSN文字列に一致します。

REDACT_PARTIAL_OUTPUT_FORMAT - 出力形式: リダクションの出力にはVを指定します。その他の文字はすべて書式文字として処理され、文字どおりに出力されます。

REDACT_PARTIAL_OUTPUT_FORMATのフィールド値VVV-VV-VVVVを使用すると、SSN文字列をXXX-XX-6789にリダクションできます(XはREDACT_PARTIAL_MASKCHARフィールドから取得します)。

REDACT_PARTIAL_MASKCHAR - 入力のリダクションに使用する文字。

値X。SSN文字列をXXX-XX-6789にリダクションします。

REDACT_PARTIAL_MASKFROM - REDACT_PARTIAL_INPUT_FORMAT内のどのVからリダクションを開始するかを指定します(次の項目REDACT_PARTIAL_MASKTOの説明を参照)。

値1。REDACT_PARTIAL_INPUT_FORMATの値VVVFVVFVVVVの最初のVから始まるSSN文字列をXXX-XX-6789のような文字列にリダクションします。

REDACT_PARTIAL_MASKTO - REDACT_PARTIAL_INPUT_FORMAT内のどのVでリダクションを終了するかを指定します。

値5。REDACT_PARTIAL_INPUT_FORMATの値VVVFVVFVVVVの5番目のVまでのSSN文字列をXXX-XX-6789のような文字列にリダクションします。リダクションという点から、書式文字'-' (REDACT_PARTIAL_INPUT_FORMAT内の最初のFに対応します)がどのように無視されるかに注目してください。これが6ではなく5を値に使用する理由です。

REDACT_PARTIAL_MASKFROMおよびREDACT_PARTIAL_MASKTOフィールドの値は、REDACT_PARTIAL_INPUT_FORMATフィールドに含まれる文字Vの数(左端のVから目的の位置まで)として指定されます。これにより、REDACT_PARTIAL_MASKFROMとREDACT_PARTIAL_MASKTOは、データの特定の書式に依存しなくなります。たとえば、SSNをマスクして最後の4桁のみを表示する一般的な使用例において、123456789のようなデータ(REDACT_PARTIAL_INPUT_FORMATがVVVVVVVVV)と123-45-6789のようなデータ(REDACT_PARTIAL_INPUT_FORMATがVVVFVVFVVVV)は、どちらもREDACT_PARTIAL_MASKFROMに1、REDACT_PARTIAL_MASKTOに5を使用することが考えられます。

DBMS_REDACT.PARTIAL(数値型用)

次の3つのフィールドを含むカンマ区切りリスト(フィールドを区切るカンマの後にはスペースを入れません)。

- REDACT_PARTIAL_MASKCHAR

- REDACT_PARTIAL_MASKFROM

- REDACT_PARTIAL_MASKTO

表121-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。

'9,1,5'はSSN番号123456789の最初の5桁を999996789にリダクションし、'0,1,2'は数値1.23を0.03にリダクションします。

REDACT_PARTIAL_MASKCHAR - 入力のリダクションに使用する文字(0から9)。

REDACT_PARTIAL_MASKFROM - リダクションの開始位置(1以上)。小数点は、存在しても位置には含まれません。

REDACT_PARTIAL_MASKTO - リダクションの終了位置。

DBMS_REDACT.PARTIAL (日時データ・タイプの場合)

次の5つのフィールドを含むリスト(フィールド間にスペースが入らないように連結されます)。

- REDACT_PARTIAL_DATE_MONTH

- REDACT_PARTIAL_DATE_DAY

- REDACT_PARTIAL_DATE_YEAR

- REDACT_PARTIAL_DATE_HOUR

- REDACT_PARTIAL_DATE_MINUTE

- REDACT_PARTIAL_DATE_SECOND

表121-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。

'm12DYHMS'。01-May-01 01:01:01を01-Dec-01 01:01:01に変更します。

REDACT_PARTIAL_DATE_MONTH: 'M' (月をマスクしない)または'm#' (可能な場合は月を特定の月にマスクする)。# (数字によって指定する月)は1から12。

REDACT_PARTIAL_DATE_DAY: 'D'(日をマスクしない)または'd#'(可能な場合は日を#にマスクする)。#は1から31。

REDACT_PARTIAL_DATE_YEAR: 'Y'(年をマスクしない)または'y#'(可能な場合は年を#にマスクする)。#は1から9999。

REDACT_PARTIAL_DATE_HOUR: 'H'(時間をマスクしない)または'h#'(可能な場合は時間を#にマスクする)。#は0から23。

REDACT_PARTIAL_DATE_MINUTE: 'M'(分をマスクしない)または'm#'(可能な場合は分を#にマスクする)。#は0から59。

REDACT_PARTIAL_DATE_SECOND: 'S'(秒をマスクしない)または's#'(可能な場合は秒を#にマスクする)。#は0から59。

DBMS_REDACT.RANDOM

表121-4 書式記述子と構成要素のフィールド名およびデリミタ

データ・タイプ

部分リダクション用の書式記述子

文字

REDACT_PARTIAL_INPUT_FORMAT || ',' || REDACT_PARTIAL_OUTPUT_FORMAT || ',' || REDACT_PARTIAL_MASKCHAR || ',' || REDACT_PARTIAL_MASKFROM || ',' || REDACT_PARTIAL_MASKTO

NUMBER

REDACT_PARTIAL_MASKCHAR || ',' || REDACT_PARTIAL_MASKFROM || ',' || REDACT_PARTIAL_MASKTO

日時

REDACT_PARTIAL_DATE_MONTH || REDACT_PARTIAL_DATE_DAY || REDACT_PARTIAL_DATE_YEAR || REDACT_PARTIAL_DATE_HOUR || REDACT_PARTIAL_DATE_MINUTE || REDACT_PARTIAL_DATE_SECOND

DBMS_REDACTサブプログラムの要約

表121-5 DBMS_REDACTパッケージのサブプログラム

サブプログラム

説明

ADD_POLICYプロシージャ

表またはビューのデータ・リダクション・ポリシーを定義します。

ALTER_POLICYプロシージャ

表またはビューのデータ・リダクション・ポリシーを変更します。

DISABLE_POLICYプロシージャ

データ・リダクション・ポリシーを無効にします。

DROP_POLICYプロシージャ

データ・リダクション・ポリシーを削除します。

ENABLE_POLICYプロシージャ

データ・リダクション・ポリシーを有効にします。

UPDATE_FULL_REDACTION_VALUESプロシージャ

完全リダクションのデータ・リダクション・ポリシーでデフォルトで表示される値を変更します。

ADD_POLICYプロシージャ

このプロシージャは、表またはビューのデータ・リダクション・ポリシーを定義します。

構文

DBMS_REDACT.ADD_POLICY (
object_schema                IN    VARCHAR2 := NULL,
object_name                  IN    VARCHAR2,
policy_name                  IN    VARCHAR2,
column_name                  IN    VARCHAR2 := NULL,
function_type                IN    BINARY_INTEGER := DBMS_REDACT.FULL,
function_parameters          IN    VARCHAR2 := NULL,
expression                   IN    VARCHAR2,
enable                       IN    BOOLEAN := TRUE,
regexp_pattern               IN    VARCHAR2 := NULL,
regexp_replace_string        IN    VARCHAR2 := NULL,
regexp_position              IN    BINARY_INTEGER := 1,
regexp_occurrence            IN    BINARY_INTEGER := 0,
regexp_match_parameter       IN    VARCHAR2 := NULL,
policy_description           IN    VARCHAR2 := NULL,
column_description           IN    VARCHAR2 := NULL);

パラメータ

表121-6 ADD_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表を所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが追加される表またはビューの名前です。

policy_name

ポリシー名。

column_name

(オプション)リダクション・ポリシーを適用する列の名前。複数の列をリダクションする必要がある場合は、ALTER_POLICYプロシージャを使用して列を追加します。

function_type

使用するリダクション・ファンクションのタイプ。有効な値は、次のとおりです。

- DBMS_REDACT.NONE

- DBMS_REDACT.FULL(デフォルト)

- DBMS_REDACT.PARTIAL

- DBMS_REDACT.RANDOM

- DBMS_REDACT.REGEXP

function_typeがDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_*パラメータを使用してデータ・リダクション・ポリシーを定義する必要があります。

これらの値の意味の概要とその使用方法の一部の例は、表121-1「DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値」を参照してください。

function_parameters

リダクション・ファンクションのパラメータ。指定できる値は、提供されたfunction_typeの値によって異なります。

function_typeがDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_*パラメータを使用してデータ・リダクション・ポリシーを定義する必要があります。

- DBMS_REDACT.NONE: 全体として省略可能で、デフォルトはNULLです。

- DBMS_REDACT.FULL: 全体として省略可能で、デフォルトはNULLです。

- 部分文字マスキングのマスキング・パラメータ。文字データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。

- 入力形式: 値をマスクする可能性がある場合は'V'、書式文字を無視する場合は'F'を指定します。

- 出力形式: マスキングの出力には'V'を指定します。その他の文字は書式文字として処理されます。

- マスク文字: 実際の値を置き換えるために使用する文字です。たとえば、'*'や'x'があります。

- 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(文字)位置を指定します。文字列は位置1から始まります。書式文字は位置に含まれません。

- 終了桁の位置: マスキングの終了(文字)位置を指定します。たとえば'VVVFVVFVVVV,VVV-VV-VVVV,X,1,5'は、SSN文字列123-45-6789の最初の5桁をマスクし、ダッシュを戻してSSNのように書式設定し、XXX-XX-6789にします。

数値データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。

- マスク文字: 実際の値を置き換えるために使用する、'0'から'9'の文字です。

- 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(桁)位置を指定します。文字列は位置1から始まります。小数点は位置に含まれません。

- 終了桁の位置: マスキングの終了(桁)位置を指定します。たとえば'9,1,5'は、社会保障番号123456789の最初の5桁をマスクし、999996789にします。

日時データ・タイプの場合、この書式は、次の一連のフィールドを含む、間にスペースやカンマがない文字列になります。各フィールドは1つ以上の文字から構成され、フィールドの長さは、マスキングが必要であるかどうかによって異なります。1文字のフィールドは、日時値のその構成要素のリダクションは発生しないことを指定するために使用されます。それよりも長いフィールドは、日時値のその構成要素をリダクションした後の値として使用する、特定の時間または日付を示します。

- 月: 'M' (月をマスクしない)または'm#' (可能な場合は月を特定の月にマスクする)。# (数字によって指定する月)は1から12。

- 日: 'D'(日をマスクしない)または'd#'(可能な場合は日を#にマスクする)。#は1から31。

- 年: 'Y'(年をマスクしない)または'y#'(可能な場合は年を#にマスクする)。#は1から9999。

- 時間: 'H'(時間をマスクしない)または'h#'(可能な場合は時間を#にマスクする)。#は0から23。

- 分: 'M'(分をマスクしない)または'm#'(可能な場合は分を#にマスクする)。#は0から59。

- 秒: 'S'(秒をマスクしない)または's#'(可能な場合は秒を#にマスクする)。#は0から59。

たとえば、'm12dyhs'では、02-May-13 12:30:23から01-Dec-01 01:01:01に変更されます。

部分文字と番号マスキング・ショートカットの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

expression

表またはビューのブール式で、SYS_CONTEXTファンクションまたは1=1のいずれかを使用します。リダクションは、ポリシー式がTRUEと評価された場合にのみ実行されます。

enable

データ・リダクション・ポリシーを作成時に有効にするかどうかを決定するブール値。

デフォルト値のTRUEは、ポリシーが作成時に自動的に有効になることを意味します。enableパラメータをFALSEに設定した場合、ポリシーが有効になるのは、その後DBMS_REDACT.ENABLE_POLICYプロシージャをコールしてそのポリシーを有効にした場合のみです。

regexp_pattern

最大512バイトの正規表現パターン。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。function_typeがDBMS_REDACT.REGEXPの場合、function_parametersパラメータは指定しないでください。

正規表現パターンの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

regexp_replace_string

この置換文字列(最大4000文字)には、最大500個の部分正規表現への後方参照を\nという書式で指定できます。nは、1から9の数値です。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_position

1から始まる整数。検索の開始位置を指定します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_occurrence

- 一致するすべての文字を置き換えるには、0を使用します。

- n番目に一致する文字を置き換えるには、正の整数nを使用します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_match_parameter

デフォルトの一致動作を変更します。'i'、'c'、'n'、'm'、'x'を組み合せた値を指定できます。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

正規表現一致パラメータの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

policy_description

リダクション・ポリシーの説明です。

column_description

リダクションされた列の説明です。

例外

- ORA-28060: この列には、すでにデータ・リダクション・ポリシーが存在します。

- ORA-28061: このオブジェクトには、データ・リダクション・ポリシーを定義できません。

- ORA-28062: ポリシー式が長すぎます。

- ORA-28063: ポリシー式が空です。

- ORA-28064: リダクション・ファンクションのタイプが無効です。

- ORA-28066: 列columnは無効です。

- ORA-28069 - このオブジェクトには、すでにデータ・リダクション・ポリシーが存在します。

- ORA-28073 - 列column_nameにサポートされていないデータ型があります。

- ORA-28074 - マスキング・パラメータのfield field_nameが無効です。
このフィールドには、次のいずれかを指定できます。

- REDACT_PARTIAL_INPUT_FORMAT

- REDACT_PARTIAL_OUTPUT_FORMAT

- REDACT_PARTIAL_MASKCHAR

- REDACT_PARTIAL_MASKFROM

- REDACT_PARTIAL_MASKTO

- REDACT_PARTIAL_DATE_MONTH

- REDACT_PARTIAL_DATE_DAY

- REDACT_PARTIAL_DATE_YEAR

- REDACT_PARTIAL_DATE_HOUR

- REDACT_PARTIAL_DATE_MINUTE

- REDACT_PARTIAL_DATE_SECOND

フィールド・コンテンツおよびフィールド順序の例は、表121-3および表121-4を参照してください。

- ORA-28075 - ポリシー式にサポートされていない機能が含まれています。

- ORA-28076 - SYS_SESSION_ROLESに属性が指定されていません。

- ORA-28077 - 指定された属性(attribute)が最大長を超えています。

- ORA-28078 - 正規表現パラメータがないか無効です。

- ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、function_parameters、column_description、policy_nameおよびpolicy_descriptionです)。

- ORA-28085 - リダクションの入力と出力の長さが一致しません。

使用上の注意

ファンクション・タイプとファンクション・パラメータ、およびそれに関連する例については、「プロシージャの使用」を参照してください。

例

部分リダクション・ポリシー:

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema        => 'hr',
object_name          => 'employees',
column_name          => 'employee_id',
policy_name          => 'mask_emp_id_nums',
function_type        => DBMS_REDACT.PARTIAL,
function_parameters  => '7,1,5',
expression           => '1=1');
END;

完全リダクション・ポリシー:

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema        => 'hr',
object_name          => 'employees',
column_name          => 'employee_id',
policy_name          => 'mask_emp_ids',
function_type        => DBMS_REDACT.FULL,
expression           => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''CLERK'')
= ''FALSE''');
END;

ALTER_POLICYプロシージャ

このプロシージャは、次の1つ以上の方法で、表またはビューの既存のデータ・リダクション・ポリシーを変更します。

- ポリシーの式の変更。

- 指定した列のリダクション・タイプの変更。

- 指定した列のリダクション・ファンクションのパラメータの変更。

- リダクション・ポリシーへの列の追加(リダクション・タイプと任意のパラメータを指定する必要がある)。

- リダクション・ポリシーからの列の削除。

構文

DBMS_REDACT.ALTER_POLICY (
object_schema                IN    VARCHAR2 := NULL,
object_name                  IN    VARCHAR2,
policy_name                  IN    VARCHAR2,
action                       IN    BINARY_INTEGER := DBMS_REDACT.ADD_COLUMN,
column_name                  IN    VARCHAR2 := NULL,
function_type                IN    BINARY_INTEGER := DBMS_REDACT.FULL,
function_parameters          IN    VARCHAR2 := NULL,
expression                   IN    VARCHAR2,
regexp_pattern               IN    VARCHAR2 := NULL,
regexp_replace_string        IN    VARCHAR2 := NULL,
regexp_position              IN    BINARY_INTEGER := 1,
regexp_occurrence            IN    BINARY_INTEGER := 0,
regexp_match_parameter       IN    VARCHAR2 := NULL,
policy_description           IN    VARCHAR2 := NULL,
column_description           IN    VARCHAR2 := NULL);

パラメータ

表121-7 ALTER_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表を所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが変更される表またはビューの名前です。

policy_name

30バイトに制限されているポリシーの名前です。

action

実行するアクション。詳細は、表121-2「DBMS_REDACT.ALTER_POLICYのactionパラメータの値」を参照してください。

column_name

(オプション)リダクション・ポリシーを適用する列の名前。

function_type

使用するリダクション・ファンクションのタイプ。有効な値は、次のとおりです。

- DBMS_REDACT.NONE

- DBMS_REDACT.FULL(デフォルト)

- DBMS_REDACT.PARTIAL

- DBMS_REDACT.RANDOM

- DBMS_REDACT.REGEXP

function_typeがDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_pattern、regexp_replace_string、regexp_position、regexp_occurrenceおよびregexp_match_parameterを使用してデータ・リダクション・ポリシーを定義する必要があります。

これらの値の意味の概要とその使用方法の一部の例は、表121-1「DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値」を参照してください。

function_parameters

リダクション・ファンクションのパラメータ。指定できる値は、提供されたfunction_typeの値によって異なります。

function_typeがDBMS_REDACT.REGEXPの場合は、function_parametersパラメータを完全に省略し、regexp_pattern、regexp_replace_string、regexp_position、regexp_occurrenceおよびregexp_match_parameterを使用してデータ・リダクション・ポリシーを定義する必要があります。

- function_typeがDBMS_REDACT.NONEの場合は、function_parametersパラメータを完全に省略でき、その場合デフォルトのNULLになります。

- function_typeがDBMS_REDACT.FULLの場合は、function_parametersパラメータを完全に省略でき、その場合デフォルトのNULLになります。

- function_typeがDBMS_REDACT.PARTIALの場合は、function_parametersパラメータは部分マスクのマスキング・パラメータを表します。

- 入力形式: 値をマスクする可能性がある場合は'V'、書式文字を無視する場合は'F'を指定します。

- 出力形式: マスキングの出力には'V'を指定します。その他の文字は書式文字として処理されます。

- マスク文字: 実際の値を置き換えるために使用する文字です。たとえば、'*'や'x'があります。

- 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(文字)位置を指定します。文字列は位置1から始まります。書式文字は位置に含まれません。

- 終了桁の位置: マスキングの終了(文字)位置を指定します。たとえば'VVVFVVFVVVV,VVV-VV-VVVV,X,1,5'は、SSN文字列123-45-6789の最初の5桁をマスクし、ダッシュを戻してSSNのように書式設定し、XXX-XX-6789にします。

数値データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。

- マスク文字: 実際の値を置き換えるために使用する、'0'から'9'の文字です。

- 開始桁の位置: 実際の値をマスキング文字に置き換える処理の開始(桁)位置を指定します。文字列は位置1から始まります。小数点は位置に含まれません。

- 終了桁の位置: マスキングの終了(桁)位置を指定します。たとえば'9,1,5'は、社会保障番号123456789の最初の5桁をマスクし、999996789にします。

日時データ・タイプの場合、この書式は、次の一連のフィールドを含む、間にスペースやカンマがない文字列になります。各フィールドは1つ以上の文字から構成され、フィールドの長さは、マスキングが必要であるかどうかによって異なります。1文字のフィールドは、日時値のその構成要素のリダクションは発生しないことを指定するために使用されます。それよりも長いフィールドは、日時値のその構成要素をリダクションした後の値として使用する、特定の時間または日付を示します。

- 月: 'M' (月をマスクしない)または'm#' (可能な場合は月を特定の月にマスクする)。# (数字によって指定する月)は1から12。

- 日: 'D'(日をマスクしない)または'd#'(可能な場合は日を#にマスクする)。#は1から31。

- 年: 'Y'(年をマスクしない)または'y#'(可能な場合は年を#にマスクする)。#は1から9999。

- 時間: 'H'(時間をマスクしない)または'h#'(可能な場合は時間を#にマスクする)。#は0から23。

- 分: 'M'(分をマスクしない)または'm#'(可能な場合は分を#にマスクする)。#は0から59。

- 秒: 'S'(秒をマスクしない)または's#'(可能な場合は秒を#にマスクする)。#は0から59。

たとえば、'm12DYHMS'では、01-May-01 01:01:01から01-Dec-01 01:01:01に変更されます。

部分文字と番号マスキング・ショートカットの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

expression

表またはビューのブール式で、SYS_CONTEXTファンクションまたは1=1のいずれかを使用します。リダクションは、ポリシー式がTRUEと評価された場合にのみ実行されます。

regexp_pattern

最大512バイトの正規表現パターン。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。function_typeがDBMS_REDACT.REGEXPの場合、function_parametersパラメータは指定しないでください。

正規表現パターンの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

regexp_replace_string

この置換文字列(最大4000文字)には、最大500個の部分正規表現への後方参照を\nという書式で指定できます。nは、1から9の数値です。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_position

1から始まる整数。検索の開始位置を指定します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_occurrence

- 一致するすべての文字を置き換えるには、0を使用します。

- n番目に一致する文字を置き換えるには、正の整数nを使用します。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

regexp_match_parameter

デフォルトの一致動作を変更します。'i'、'c'、'n'、'm'、'x'を組み合せた値を指定できます。

function_typeパラメータがDBMS_REDACT.REGEXPの場合のみ使用します。

正規表現一致パラメータの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。

policy_description

リダクション・ポリシーの説明です。

column_description

リダクションされた列の説明です。

例外

- ORA-28062: ポリシー式が長すぎます。

- ORA-28063: ポリシー式が空です。

- ORA-28064: リダクション・ファンクションのタイプが無効です。

- ORA-28066: 列columnは無効です。

- ORA-28067: 列名がないか無効です

- ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

- ORA-28070: 列"column"には、データ・リダクション・ポリシーがありません。

- ORA-28071: アクションが無効です。

- ORA-28072: 指定されたポリシー名が正しくありません。

- ORA-28073 - 列column_nameにサポートされていないデータ型があります。

- ORA-28074 - マスキング・パラメータのfield_nameが無効です。
このフィールドには、次のいずれかを指定できます。

- REDACT_PARTIAL_INPUT_FORMAT

- REDACT_PARTIAL_OUTPUT_FORMAT

- REDACT_PARTIAL_MASKCHAR

- REDACT_PARTIAL_MASKFROM

- REDACT_PARTIAL_MASKTO

- REDACT_PARTIAL_DATE_MONTH

- REDACT_PARTIAL_DATE_DAY

- REDACT_PARTIAL_DATE_YEAR

- REDACT_PARTIAL_DATE_HOUR

- REDACT_PARTIAL_DATE_MINUTE

- REDACT_PARTIAL_DATE_SECOND

フィールド・コンテンツおよびフィールド順序の例は、表121-3および表121-4を参照してください。

- ORA-28075: ポリシー式にサポートされていない機能が含まれています。

- ORA-28076: SYS_SESSION_ROLESに属性が指定されていません。

- ORA-28077: 指定された属性(attribute)が最大長を超えています。

- ORA-28078: 正規表現パラメータがないか無効です。

- ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、function_parameters、column_description、policy_nameおよびpolicy_descriptionです)。

- ORA-28085 - リダクションの入力と出力の長さが一致しません。

使用上の注意

ファンクション・タイプとファンクション・パラメータ、およびそれに関連する例については、「プロシージャの使用」を参照してください。

例

BEGIN
DBMS_REDACT.ALTER_POLICY(
object_schema          => 'hr',
object_name            => 'employees',
policy_name            => 'mask_emp_id_nums',
action                 => DBMS_REDACT.ADD_COLUMN);
END;

DISABLE_POLICYプロシージャ

このプロシージャは、データ・リダクション・ポリシーを無効にします。

構文

DBMS_REDACT.DISABLE_POLICY (
object_schema                IN    VARCHAR2 := NULL,
object_name                  IN    VARCHAR2,
policy_name                  IN    VARCHAR2);

パラメータ

表121-8 DISABLE_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表またはビューを所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが無効化される表またはビューの名前です。

policy_name

無効にするポリシーの名前。

例外

- ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

- ORA-28072: 指定されたポリシー名が正しくありません。

- ORA-28080: ポリシーはすでに無効化されています。

例

BEGIN
DBMS_REDACT.DISABLE_POLICY (
object_schema    => 'hr',
object_name      => 'employees',
policy_name      => 'mask_emp_ids');
END;

DROP_POLICYプロシージャ

このプロシージャは、表またはビューからマスキング・ポリシーを削除することによって、データ・リダクション・ポリシーを削除します。

構文

DBMS_REDACT.DROP_POLICY (
object_schema                IN    VARCHAR2 := NULL,
object_name                  IN    VARCHAR2,
policy_name                  IN    VARCHAR2);

パラメータ

表121-9 DROP_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表またはビューを所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが削除される表またはビューの名前です。

policy_name

削除するポリシーの名前。

例外

- ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

- ORA-28072: 指定されたポリシー名が正しくありません。

例

BEGIN
DBMS_REDACT.DROP_POLICY (
object_schema    =>  'hr',
object_name      =>  'employees',
policy_name      =>  'mask_emp_ids');
END;

ENABLE_POLICYプロシージャ

このプロシージャは、データ・リダクション・ポリシーを再度有効にします。

構文

DBMS_REDACT.ENABLE_POLICY (
object_schema                IN    VARCHAR2 := NULL,
object_name                  IN    VARCHAR2,
policy_name                  IN    VARCHAR2);

パラメータ

表121-10 ENABLE_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表またはビューを所有するスキーマ。NULLの場合は現行ユーザーになります。

object_name

データ・リダクション・ポリシーが有効化される表またはビューの名前です。

policy_name

有効にするポリシーの名前。

例外

- ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。

- ORA-28071: アクションが無効です。

- ORA-28072: 指定されたポリシー名が正しくありません。

- ORA-28079: ポリシーはすでに有効化されています。

例

BEGIN
DBMS_REDACT.ENABLE_POLICY (
object_schema    =>  'hr',
object_name      =>  'employees',
policy_name      =>  'mask_emp_ids');
END;

UPDATE_FULL_REDACTION_VALUESプロシージャ

このプロシージャは、完全リダクションのデータ・リダクション・ポリシーでデフォルトで表示される値を変更します。

構文

DBMS_REDACT.UPDATE_FULL_REDACTION_VALUES (
number_val       IN NUMBER                    :=  NULL,
binfloat_val     IN BINARY_FLOAT              :=  NULL,
bindouble_val    IN BINARY_DOUBLE             :=  NULL,
char_val         IN CHAR                      :=  NULL,
varchar_val      IN VARCHAR2                  :=  NULL,
nchar_val        IN NCHAR                     :=  NULL,
nvarchar_val     IN NVARCHAR2                 :=  NULL,
date_val         IN DATE                      :=  NULL,
ts_val           IN TIMESTAMP                 :=  NULL,
tswtz_val        IN TIMESTAMP WITH TIME ZONE  :=  NULL,
blob_val         IN BLOB                      :=  NULL,
clob_val         IN CLOB                      :=  NULL,
nclob_val        IN NCLOB                     NULL);

パラメータ

表121-11 UPDATE_FULL_REDACTION_VALUESプロシージャのパラメータ

パラメータ

説明

number_val

NUMBERデータ・タイプの列のデフォルト値を変更します。

binfloat_val

BINARY_FLOATデータ・タイプの列のデフォルト値を変更します。

bindouble_val

BINARY_DOUBLEデータ・タイプの列のデフォルト値を変更します。

char_val

CHARデータ・タイプの列のデフォルト値を変更します。

varchar_val

VARCHAR2データ・タイプの列のデフォルト値を変更します。

nchar_val

NCHARデータ・タイプの列のデフォルト値を変更します。

nvarchar_val

NVARCHAR2データ・タイプの列のデフォルト値を変更します。

date

DATEデータ・タイプの列のデフォルト値を変更します。

ts_val

TIMESTAMPデータ・タイプの列のデフォルト値を変更します。

tswtz_val

TIMESTAMP WITH TIME ZONEデータ・タイプの列のデフォルト値を変更します。

blob_val

BLOBデータ・タイプの列のデフォルト値を変更します。

clob_val

CLOBデータ・タイプの列のデフォルト値を変更します。

nclob_val

NCLOBデータ・タイプの列のデフォルト値を変更します。

例外

ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、char_val、nchar_val、varchar_valおよびnvarchar_valです)。

122 DBMS_REDEFINITION

DBMS_REDEFINITIONパッケージは、オンラインで表の再定義を行うためのインタフェースを提供します。

関連項目:
オンラインで表を再定義する方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_REDEFINITIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- DBMS_REDEFINITIONサブプログラムの要約

DBMS_REDEFINITIONの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

概要

オンラインで再定義を行うには、段階的に維持可能なローカル・マテリアライズド・ビューを使用します。これらのログは、マスター表に対する変更を追跡し、リフレッシュ同期時にマテリアライズド・ビューで使用されます。

セキュリティ・モデル

DBMS_REDEFINTIONパッケージ内のサブプログラムは、実行者権限(現行のユーザーの権限)を使用して実行されます。次の2つのモードがあります。

- USERモードでは、CREATE TABLEおよびCREATE MVIEW権限を持つユーザーが自身のスキーマ内にある表を再定義できます。

- FULLモードでは、ANY権限を持つユーザーが任意のスキーマ内にある表を再定義できます。

定数

DBMS_REDEFINITIONパッケージでは、表122-1「DBMS_REDEFINITIONの定数」で示す定数が使用されます。

表122-1 DBMS_REDEFINITIONの定数

定数

タイプ

値

説明

CONS_CONSTRAINT

PLS_INTEGER

3

依存オブジェクト・タイプが制約であることを指定するために使用します。

CONS_INDEX

PLS_INTEGER

2

依存オブジェクト・タイプが索引であることを指定するために使用します。

CONS_MVLOG

PLS_INTEGER

10

マテリアライズド・ビュー・ログを、表の依存オブジェクトとしてREGISTER_DEPENDENT_OBJECTプロシージャおよびUNREGISTER_DEPENDENT_OBJECTプロシージャを使用して登録(または登録解除)する場合に使用します。

CONS_ORIG_PARAMS

PLS_INTEGER

1

索引は元の記憶域パラメータでクローニングする必要があることを指定するために使用します。

CONS_TRIGGER

PLS_INTEGER

4

依存オブジェクト・タイプがトリガーであることを指定するために使用します。

CONS_USE_PK

BINARY_INTEGER

1

再定義は主キーまたは擬似主キー(すべてのコンポーネント列にNULLでない制約がある一意キー)を使用して行う必要があることを示すために使用します。

CONS_USE_ROWID

BINARY_INTEGER

2

再定義はROWIDを使用して行う必要があることを示すために使用します。

CONS_VPD_AUTO

BINARY_INTEGER

2

VPDポリシーを自動的にコピーすることを示すために使用します。

CONS_VPD_MANUAL

BINARY_INTEGER

4

VPDポリシーを手動でコピーすることを示すために使用します。

CONS_VPD_NONE

BINARY_INTEGER

1

元の表にVPDポリシーが含まれていないことを示すために使用します。

使用上の注意

- CONS_USE_PKおよびCONS_USE_ROWIDは、START_REDEF_TABLEプロシージャおよびCAN_REDEF_TABLEプロシージャの両方におけるoptions_flagパラメータへの入力として使用する定数です。CONS_USE_ROWIDは再定義がROWIDを使用して行われる必要があることを示し、CONS_USE_PKは再定義が主キーまたは擬似主キー(すべてのコンポーネント列にNOT NULL制約がある一意キー)を使用して行われる必要があることを示すために使用します。

- CONS_INDEX、CONS_MVLOG、CONS_TRIGGERおよびCONS_CONSTRAINTは、REGISTER_DEPENDENT_OBJECTプロシージャおよびUNREGISTER_DEPENDENT_OBJECTプロシージャで登録(または登録解除)される依存オブジェクトのタイプ(パラメータdep_type)を指定するために使用します。
CONS_INDEX==>依存オブジェクトをINDEXタイプに指定

CONS_TRIGGER==>依存オブジェクトをTRIGGERタイプに指定

CONS_CONSTRAINT==>依存オブジェクトをCONSTRAINTタイプに指定

CONS_MVLOG ==>依存オブジェクトをMATERIALIZED VIEW LOGタイプに指定

- CONS_ORIG_PARAMSは、COPY_TABLE_DEPENDENTSプロシージャでのcopy_indexesパラメータの入力として使用します。このパラメータを使用すると、元の表の索引が、元の索引と同じ記憶域パラメータを使用して仮表にコピーされます。

ルールおよび制限

このパッケージの実装に適用する様々なルールおよび制限については、『Oracle Database管理者ガイド』を参照してください。

DBMS_REDEFINITIONサブプログラムの要約

表122-2 DBMS_REDEFINITIONパッケージのサブプログラム

サブプログラム

説明

ABORT_REDEF_TABLEプロシージャ

再定義プロセスで発生したエラーをクリーンアップし、再構成プロセスで作成されたすべての一時オブジェクトを削除します。

CAN_REDEF_TABLEプロシージャ

指定された表がオンラインで再定義可能かどうかを判断します。

COPY_TABLE_DEPENDENTSプロシージャ

元の表の依存オブジェクトを仮表にコピーします。

FINISH_REDEF_TABLEプロシージャ

再定義プロセスを完了します。

REDEF_TABLEプロシージャ

いくつかの再定義ステップが統合された単一のプッシュボタン・インタフェースを提供します。

REGISTER_DEPENDENT_OBJECTプロシージャ

再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビューのログ)および仮表の対応する依存オブジェクトを登録します。

START_REDEF_TABLEプロシージャ

再定義プロセスを開始します。

SYNC_INTERIM_TABLEプロシージャ

仮表と元の表との同期を保ちます。

UNREGISTER_DEPENDENT_OBJECTプロシージャ

再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビュー・ログ)および仮表の対応する依存オブジェクトの登録を解除します。

ABORT_REDEF_TABLEプロシージャ

このプロシージャは、再定義プロセスで発生したエラーをクリーンアップします。START_REDEF_TABLEプロシージャのコール後で、FINISH_REDEF_TABLEプロシージャのコール前であれば、このプロシージャを使用して任意の時点で再定義プロセスを終了することもできます。このプロセスによって、マテリアライズド・ビュー・ログなどの再定義プロセスで作成された一時オブジェクトが削除されます。

構文

DBMS_REDEFINITION.ABORT_REDEF_TABLE (
uname                   IN  VARCHAR2,
orig_table              IN  VARCHAR2,
int_table               IN  VARCHAR2,
part_name               IN  VARCHAR2 := NULL);

パラメータ

表122-3 ABORT_REDEF_TABLEプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

orig_table

再定義する表の名前。

int_table

仮表の名前。カンマで区切られた仮表名のリストを指定できます。

part_name

再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。NULLを指定すると、テーブル全体が再定義されます。カンマで区切られた、再定義するパーティション名のリストを指定できます。

CAN_REDEF_TABLEプロシージャ

このプロシージャは、指定された表がオンラインで再定義可能かどうかを判断します。これはオンラインでの再定義プロセスの最初のステップです。その表がオンラインでの再定義の候補ではない場合は、エラー・メッセージが表示されます。

構文

DBMS_REDEFINITION.CAN_REDEF_TABLE (
uname         IN  VARCHAR2,
tname        IN  VARCHAR2,
options_flag  IN  PLS_INTEGER := 1,
part_name     IN  VARCHAR2 := NULL);

パラメータ

表122-4 CAN_REDEF_TABLEプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

tname

再構成する表の名前。

options_flag

使用する再定義方法のタイプ。

- dbms_redefinition.cons_use_pkの場合、再定義は主キーまたは擬似主キー(すべてのコンポーネント列にNOT NULL制約がある一意キー)を使用して行われます。デフォルトの再定義方法は主キーを使用します。

- dbms_redefinition.cons_use_rowidの場合、再定義はROWIDを使用して行われます。

part_name

再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。NULLを指定すると、テーブル全体が再定義されます。

例外

その表がオンラインでの再定義の候補ではない場合は、エラー・メッセージが表示されます。

COPY_TABLE_DEPENDENTSプロシージャ

このプロシージャは、再定義中の表の依存オブジェクトを仮表にクローニングし、その依存オブジェクトを登録します。すでに登録されている依存オブジェクトのクローニングは行われません。

このサブプログラムは、再定義対象の表から仮表(再定義後の表を表す)に権限付与、トリガー、制約および権限などの依存オブジェクトをクローニングするために使用します。

構文

DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(
uname                    IN  VARCHAR2,
orig_table               IN  VARCHAR2,
int_table                IN  VARCHAR2,
copy_indexes             IN  PLS_INTEGER := 1,
copy_triggers            IN  BOOLEAN     := TRUE,
copy_constraints         IN  BOOLEAN     := TRUE,
copy_privileges          IN  BOOLEAN     := TRUE,
ignore_errors            IN  BOOLEAN     := FALSE,
num_errors               OUT PLS_INTEGER,
copy_statistics          IN  BOOLEAN     := FALSE,
copy_mvlog               IN  BOOLEAN     := FALSE);

パラメータ

表122-5 COPY_TABLE_DEPENDENTSプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

orig_table

再定義する表の名前。

int_table

仮表の名前。

copy_indexes

索引をコピーするかどうかを示すフラグ。

- 0: 索引をコピーしません。

- dbms_redefinition.cons_orig_params: ソース索引の物理パラメータを使用して索引をコピーします。

copy_triggers

TRUEはトリガーをクローニングすることを、FALSEは何もしないことを示します。

copy_constraints

TRUEは制約をクローニングすることを、FALSEは何もしないことを示します。互換性設定が10.2以上の場合、CHECKおよびNOT NULL制約をクローニングします。

copy_privileges

TRUEは権限をクローニングすることを、FALSEは何もしないことを示します。

ignore_errors

TRUEは、特定の依存オブジェクトのクローニング中にエラーが発生した場合に、そのオブジェクトをスキップして他の依存オブジェクトのクローニングを続行することを示します。FALSEは、エラーの発生時点でクローニング・プロセスを停止することを示します。

num_errors

依存オブジェクトのクローニング中に発生したエラーの数。

copy_statistics

TRUEは統計をコピーすることを、FALSEは何もしないことを示します。

copy_mvlog

TRUEはマテリアライズド・ビュー・ログをコピーすることを、FALSEは何もしないことを示します。

使用上の注意

- オブジェクトのクローニング中にエラーが発生しないように、列num_errorsをチェックしてから処理を行う必要があります。

- エラーが発生した場合は、エラーの原因を修正し、COPY_TABLE_DEPENDENTSプロシージャを再度コールして、依存オブジェクトをクローニングします。また、依存オブジェクトを手動でクローニングした後、REGISTER_DEPENDENT_OBJECTプロシージャを使用して、クローニングした依存オブジェクトを手動で登録することもできます。

- 仮表にクローニングされた参照制約はすべて無効に作成され(再定義後に自動的に有効になります)、仮表のすべてのトリガーは再定義が完了するまで実行されません。再定義が完了すると、クローニングされたオブジェクトには、それぞれクローン元のオブジェクトと同じ再定義前の名前が再び付けられます。

- これはユーザーの責任となります(クローニングされた依存オブジェクトは再定義の影響を受けません)。すべてのトリガーがクローニングされ、これはユーザーの責任となります(クローニングされたトリガーは再定義の影響を受けません)。

FINISH_REDEF_TABLEプロシージャ

このプロシージャは、再定義プロセスを完了します。このステップの前に、新しい索引、トリガー、権限および制約を仮表に作成できます。仮表に含まれる参照制約は無効にする必要があります。このステップが完了すると、仮表の属性とデータを使用して元の表が再定義されます。このプロシージャの実行時は、元の表が一時的にロックされます。

構文

DBMS_REDEFINITION.FINISH_REDEF_TABLE (
uname                   IN   VARCHAR2,
orig_table              IN   VARCHAR2,
int_table               IN   VARCHAR2,
part_name               IN   VARCHAR2 := NULL,
dml_lock_timeout        IN   PLS_INTEGER := NULL,
continue_after_errors   IN   BOOLEAN := FALSE);

パラメータ

表122-6 FINISH_REDEF_TABLEプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

orig_table

再定義する表の名前。

int_table

仮表の名前。カンマで区切られた仮表名のリストを指定できます。

part_name

再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。NULLを指定すると、テーブル全体が再定義されます。カンマで区切られた、再定義するパーティション名のリストを指定できます。

dml_lock_timeout

必要なロックを獲得するために待機する秒数を指定します(この秒数が経過するとプロシージャは失敗する)。設定可能なタイムアウトの値の範囲は、0から1,000,000です。デフォルトはNULL(待機モード)です。

continue_after_errors

複数のパーティションを再定義する場合、次のパーティションに対する操作を続けて実行できます(バッチ化されたパーティション再定義にのみ適用される)。

例

SH.SALESに必要なロックを最大600秒待機します。

EXECUTE DBMS_REDEFINITION.FINISH_REDEF_TABLE (
'SH', 'SALES', 'INT_SALES', 600);

REDEF_TABLEプロシージャ

このプロシージャでは、CAN_REDEF_TABLEプロシージャ、START_REDEF_TABLEプロシージャ、COPY_TABLE_DEPENDENTSプロシージャおよびFINISH_REDEF_TABLEプロシージャなど、いくつかの再定義手順を統合する単一のインタフェースが提供されます。このプロシージャでは、表領域(表、パーティション、サブパーティション、索引、LOB列が対象)、圧縮タイプ(表、パーティション、サブパーティション、索引、LOB列が対象)およびLOB列のSTORE_AS句など、データ記憶域のプロパティを変更できます。

構文

DBMS_REDEFINITION.REDEF_TABLE (
uname                       IN  VARCHAR2,
tname                       IN  VARCHAR2,
table_compression_type      IN  VARCHAR2 := NULL,
table_part_tablespace       IN  VARCHAR2 := NULL,
index_key_compression_type  IN  VARCHAR2 := NULL,
index_tablespace            IN  VARCHAR2 := NULL,
lob_compression_type        IN  VARCHAR2 := NULL,
lob_tablespace              IN  VARCHAR2 := NULL,
lob_store_as                IN  VARCHAR2 := NULL);

パラメータ

表122-7 REDEF_TABLEプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

tname

再定義する表の名前。

table_compression_type

表圧縮句のテキスト文字列。NULLは変更がないことを示します。

table_part_tablespace

表またはパーティション全体の表領域名。NULLは変更がないことを示します。

index_key_compression_type

表のすべての索引に使用する圧縮句のテキスト文字列。NULLは変更がないことを示します。

index_tablespace

表のすべての索引に使用する表領域名。NULLは変更がないことを示します。

lob_compression_type

表全体のすべてのLOBに使用する圧縮句のテキスト文字列。NULLは変更がないことを示します。

lob_tablespace

表のすべてのLOBに使用する表領域名。NULLは変更がないことを示します。

lob_storage_as

LOBストアは、'SECUREFILE'または'BASICFILE'として指定されます。NULLは変更がないことを示します。

例

BEGIN
DBMS_REDEFINITION.REDEF_TABLE(
uname                        => 'TABOWNER2',
tname                        => 'EMP2',
table_compression_type       => 'ROW STORE COMPRESS ADVANCED',
table_part_tablespace        => 'NEWTBS',
index_key_compression_type   => 'COMPRESS 1',
index_tablespace             => 'NEWIDXTBS',
lob_compression_type         => 'COMPRESS HIGH',
lob_tablespace               => 'SLOBTBS',
lob_store_as                 => 'SECUREFILE');
END;

関連項目:
「REDEF_TABLEプロシージャを使用したオンライン再定義の実行」については、『Oracle Database管理者ガイド』を参照してください。

REGISTER_DEPENDENT_OBJECTプロシージャ

このプロシージャは、再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビューのログ)および仮表の対応する依存オブジェクトを登録します。

このプロシージャを使用すると、各表で異なる属性の同じオブジェクトを持つことができます。たとえば、索引の場合、記憶域および表領域の属性は異なる可能性がありますが、索引付けされた列は同じままです。

構文

DBMS_REDEFINITION.REGISTER_DEPENDENT_OBJECT(
uname                  IN    VARCHAR2,
orig_table             IN    VARCHAR2,
int_table              IN    VARCHAR2,
dep_type               IN    PLS_INTEGER,
dep_owner              IN    VARCHAR2,
dep_orig_name          IN    VARCHAR2,
dep_int_name           IN    VARCHAR2);

パラメータ

表122-8 REGISTER_DEPENDENT_OBJECTプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

orig_table

再定義する表の名前。

int_table

仮表の名前。

dep_type

依存オブジェクトのタイプ(「定数」および「使用上の注意」を参照)

dep_owner

依存オブジェクトの所有者。

dep_orig_name

元の依存オブジェクトの名前。

dep_int_name

仮の依存オブジェクトの名前。

使用上の注意

- すでに登録されているオブジェクトを登録しようとするとエラーになります。

- エントリがすでに存在する依存オブジェクトを登録した場合、そのオブジェクトはDBA_REDEFINITION_ERRORSから自動的に削除されます。

START_REDEF_TABLEプロシージャ

このプロシージャをコールする前に、再定義後の表に必要な属性を指定して(再定義する表と同じスキーマで)空の仮表を手動で作成してから、このプロシージャをコールして再定義を開始する必要があります。

構文

DBMS_REDEFINITION.START_REDEF_TABLE (
uname                   IN  VARCHAR2,
orig_table              IN  VARCHAR2,
int_table               IN  VARCHAR2,
col_mapping             IN  VARCHAR2 := NULL,
options_flag            IN  BINARY_INTEGER := 1,
orderby_cols            IN  VARCHAR2 := NULL,
part_name               IN  VARCHAR2 := NULL,
continue_after_errors   IN  BOOLEAN := FALSE
copy_vpd_opt            IN  BINARY_INTEGER := CONS_VPD_NONE);

パラメータ

表122-9 START_REDEF_TABLEプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

orig_table

再定義する表の名前。

int_table

仮表の名前。カンマで区切られた仮表名のリストを指定できます。

col_mapping

元の表の列から仮表の列にマッピングする情報。(これは問合せのSELECT句の列リストと同じです)。NULLの場合は、元の表の列がすべて選択され、再定義後の名前は変更されません。

options_flag

使用する再定義方法のタイプ。

- dbms_redefinition.cons_use_pkの場合、再定義は主キーまたは擬似主キー(すべてのコンポーネント列にNOT NULL制約がある一意キー)を使用して行われます。デフォルトの再定義方法は主キーを使用します。

- dbms_redefinition.cons_use_rowidの場合、再定義はROWIDを使用して行われます。

orderby_cols

このオプション・パラメータは、仮表の初期インスタンス化時に行を順序付けるために使用する列のリストを、オプション・キーワードの昇順/降順とともに受け入れます(順序付けは初期インスタンス化についてのみ実行され、その後の同期化では行われません)。

part_name

再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。NULLを指定すると、テーブル全体が再定義されます。カンマで区切られた、再定義するパーティション名のリストを指定できます。

continue_after_errors

複数のパーティションを再定義する場合、次のパーティションに対する操作を続けて実行できます(バッチ化されたパーティション再定義にのみ適用される)。

copy_vpd_opt

オンライン再定義におけるVPDポリシーの処理方法を指定します。

例

int_salestable1、int_salestable2およびint_salestable3の仮表をそれぞれ使用して、表'STEVE.salestable'に含まれる3つのパーティション(sal03q1、sal03q2およびsal03q3)の再定義を開始します。操作がsal03q1で失敗した場合でも、sal03q3まで操作は続行されます。

DBMS_REDEFINITION.START_REDEF_TABLE(
uname                 => 'STEVE',
orig_table            => 'salestable',
int_table             => 'int_salestable1, int_salestable2, int_salestable3',
col_mapping           => NULL,
options_flag          => DBMS_REDEFINITION.CONS_USE_ROWID,
part_name             => 'sal03q1,sal03q2,sal03q3',
continue_after_errors => TRUE);

VPDポリシーを自動的にコピーすることを指定します。

EXECUTE DBMS_REDEFINITION.START_REDEF_TABLE (
uname                  => 'SCOTT',
orig_table             => 'T',
int_table              => 'INT_T',
copy_vpd_opt           => DBMS_REDEFINITION.CONS_VPD_AUTO);

SYNC_INTERIM_TABLEプロシージャ

このプロシージャは、仮表と元の表との同期を保ちます。

構文

DBMS_REDEFINITION.SYNC_INTERIM_TABLE (
uname                   IN  VARCHAR2,
orig_table              IN  VARCHAR2,
int_table               IN  VARCHAR2,
part_name               IN  VARCHAR2 := NULL,
continue_after_errors   IN  BOOLEAN := FALSE);

パラメータ

表122-10 SYNC_INTERIM_TABLEプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

orig_table

再定義する表の名前。

int_table

仮表の名前。カンマで区切られた仮表名のリストを指定できます。

part_name

再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。NULLを指定すると、テーブル全体が再定義されます。カンマで区切られた、再定義するパーティション名のリストを指定できます。

continue_after_errors

複数のパーティションを再定義する場合、次のパーティションに対する操作を続けて実行できます(バッチ化されたパーティション再定義にのみ適用される)。

使用上の注意

- このステップは、オンライン再定義を完了する前に、FINISH_REDEF_TABLEプロシージャで処理する必要のある同期化の量を最小化するのに役立ちます。

- このプロシージャは、仮表で長時間実行される操作(CREATE INDEXなど)と操作の間でコールして元の表のデータと仮表を同期化し、こうした操作の処理を高速化します。

UNREGISTER_DEPENDENT_OBJECTプロシージャ

このプロシージャは、再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビューのログ)および仮表の対応する依存オブジェクトの登録を解除します。

構文

DBMS_REDEFINITION.UNREGISTER_DEPENDENT_OBJECT(
uname             IN VARCHAR2,
orig_table        IN VARCHAR2,
int_table         IN VARCHAR2,
dep_type          IN PLS_INTEGER,
dep_owner         IN VARCHAR2,
dep_orig_name     IN VARCHAR2,
dep_int_name      IN  VARCHAR2);

パラメータ

表122-11 UNREGISTER_DEPENDENT_OBJECTプロシージャのパラメータ

パラメータ

説明

uname

表のスキーマ名。

orig_table

再定義する表の名前。

int_table

仮表の名前。

dep_type

依存オブジェクトのタイプ。

dep_owner

依存オブジェクトの所有者。

dep_orig_name

元の依存オブジェクトの名前。

dep_int_name

仮の依存オブジェクトの名前。

123 DBMS_REFRESH

DBMS_REFRESHパッケージによって、トランザクションの一貫性を維持できる時点にまとめてリフレッシュできるマテリアライズド・ビューのグループを作成できます。

- DBMS_REFRESHのドキュメント

DBMS_REFRESHのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_REFRESH」を参照してください。

124 DBMS_REPAIR

DBMS_REPAIRパッケージには、データ破損修復プロシージャが含まれており、表および索引にある破損ブロックを検出して修復できます。可能な場合は破損をつき止め、再構築中または修復中にオブジェクトの使用を続行できます。

関連項目:
DBMS_REPAIRパッケージの使用方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_REPAIRの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

- DBMS_REPAIRサブプログラムの要約

DBMS_REPAIRの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

概要

注意:
DBMS_REPAIRパッケージは、データベース管理者による使用のみを対象としています。アプリケーション開発者による使用は対象としていません。

セキュリティ・モデル

このパッケージの所有者はSYSです。他のユーザーに実行権限は付与されていません。

定数

DBMS_REPAIRパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります。たとえば、DBMS_REPAIR.TABLE_OBJECTと記述します。

表124-1に、パラメータおよび列挙定数の一覧を示します。

表124-1 DBMS_REPAIRパラメータおよび列挙定数

パラメータ

オプション

タイプ

説明

object_type

- TABLE_OBJECT

- INDEX_OBJECT

- CLUSTER_OBJECT

BINARY_INTEGER

-

action

- CREATE_ACTION

- DROP_ACTION

- PURGE_ACTION

BINARY_INTEGER

-

table_type

- REPAIR_TABLE

- ORPHAN_TABLE

BINARY_INTEGER

-

flags

- SKIP_FLAG

- NOSKIP_FLAG

BINARY_INTEGER

-

object_id

- ALL_INDEX_ID := 0

BINARY_INTEGER

修飾するすべてのオブジェクトをクリーンアップします。

wait_for_lock

- LOCK_WAIT := 1

- LOCK_NOWAIT := 0

BINARY_INTEGER

基礎となる表の((サブ)パーティション)オブジェクトで、DMLロックを取得するかどうかを指定します。

注意:
デフォルトのtable_nameは、table_typeがREPAIR_TABLEのときはREPAIR_TABLEで、table_typeがORPHAN_TABLEのときはORPHAN_KEY_TABLEです。

使用上の注意

ORPHAN_KEYS_TABLEを作成するプロシージャは、REPAIR_TABLEの作成に使用するプロシージャに類似しています。

CONNECT / AS SYSDBA;
EXEC DBMS_REPAIR.ADMIN_TABLES('ORPHAN_KEYS_TABLE', DBMS_REPAIR.ORPHAN_TABLE,
DBMS_REPAIR.CREATE_ACTION);
EXEC DBMS_REPAIR.ADMIN_TABLES('REPAIR_TABLE', DBMS_REPAIR.REPAIR_TABLE,
DBMS_REPAIR.CREATE_ACTION);
DESCRIBE ORPHAN_KEYS_TABLE;
DESCRIBE REPAIR_TABLE;
SELECT * FROM ORPHAN_KEYS_TABLE;
SELECT * FROM REPAIR_TABLE;

DBAは、修復表および孤立したキー表を1回作成します。その後CHECK_OBJECTプロシージャを実行すると、検出されたエラーのタイプを示す適切な表に行が追加されます。

修復表および孤立したキー表の名前はユーザーが選択できますが、修復表の名前は接頭辞REPAIR_で、孤立したキー表は接頭辞ORPHAN_で始める必要があるという制限があります。また、次のコードも有効です。

CONNECT / AS SYSDBA;
EXEC DBMS_REPAIR.ADMIN_TABLES('ORPHAN_FOOBAR', DBMS_REPAIR.ORPHAN_TABLE,
DBMS_REPAIR.CREATE_ACTION);
EXEC DBMS_REPAIR.ADMIN_TABLES('REPAIR_ABCD', DBMS_REPAIR.REPAIR_TABLE,
DBMS_REPAIR.CREATE_ACTION);
DESCRIBE ORPHAN_FOOBAR;
DESCRIBE REPAIR_ABCD;
SELECT * FROM ORPHAN_FOOBAR;
SELECT * FROM REPAIR_ABCD;

CHECK_OBJECTプロシージャを起動する場合(特にADMIN_TABLESプロシージャまたはCREATE_ACTIONでデフォルト値が使用されない場合)、作成された修復表および孤立したキー表の名前を正しく指定する必要があります。

ADMIN_TABLESプロシージャの他のアクションを使用して、REPAIR_TABLEおよびORPHAN_KEYS_TABLEをパージ(削除)できます。

例外

表124-2 DBMS_REPAIRの例外

例外

説明

処置

942

指定した表が存在していないと、DROP_ACTION時にDBMS_REPAIR.ADMIN_TABLESによって戻されます。

-

955

指定した表がすでに存在していると、DBMS_REPAIR.CREATE_ACTIONによって戻されます。

-

24120

指定したDBMS_REPAIRプロシージャに無効なパラメータが渡されました。

有効なパラメータ値を指定するか、またはパラメータのデフォルトを使用してください。

24122

ブロック範囲の指定に誤りがあります。

BLOCK_STARTパラメータおよびBLOCK_ENDパラメータに正しい値を指定してください。

24123

指定した機能を使用しようとしましたが、その機能はまだ実装されていません。

この機能は使用しないでください。

24124

ACTIONパラメータに無効な値が指定されました。

ACTIONパラメータにはCREATE_ACTION、PURGE_ACTIONまたはDROP_ACTIONのいずれかを指定してください。

24125

DBMS_REPAIR.CHECK_OBJECTの実行後に削除または切り捨てられたオブジェクトの破損ブロックを修正しようとしました。

DBMS_REPAIR.ADMIN_TABLESで修復表をパージし、DBMS_REPAIR.CHECK_OBJECTを実行して、修正対象の破損ブロックがあるかどうかを確認してください。

24127

CREATE_ACTION以外のACTIONでTABLESPACEパラメータが指定されました。

CREATE_ACTION以外のアクションの実行時には、TABLESPACEは指定しないでください。

24128

パーティション化されていないオブジェクトに対して、パーティション名が指定されました。

パーティション名は、オブジェクトがパーティション化されているときのみ指定してください。

24129

接頭辞を指定しないで、table_nameパラメータを渡そうとしました。

有効なtable_nameパラメータを渡してください。

24130

存在しない修復表または孤立した表を指定しようとしました。

table_nameパラメータに有効な値を指定してください。

24131

誤った定義内容の修復表または孤立した表を指定しようとしました。

正しく作成された表を参照する表名を指定してください。

24132

30文字を超える表名を指定しようとしました。

table_nameパラメータに有効な値を指定してください。

例

/* Fix the bitmap status for all the blocks in table mytab in schema sys */

EXECUTE DBMS_REPAIR.SEGMENT_FIX_STATUS('SYS', 'MYTAB');

/* Mark block number 45, filenumber 1 for table mytab in sys schema as FULL.*/

EXECUTE DBMS_REPAIR.SEGMENT_FIX_STATUS('SYS', 'MYTAB', TABLE_OBJECT,1, 45, 1);

DBMS_REPAIRサブプログラムの要約

表124-3 DBMS_REPAIRパッケージのサブプログラム

サブプログラム

説明

ADMIN_TABLESプロシージャ

DBMS_REPAIRパッケージの修復表および孤立したキー表に対して、作成、パージおよび削除処理を実行する管理ファンクションを提供します。

CHECK_OBJECTプロシージャ

表または索引の破損を検出し、レポートします。

DUMP_ORPHAN_KEYSプロシージャ

破損データ・ブロック内の行を指す索引エントリをレポートします。

FIX_CORRUPT_BLOCKSプロシージャ

CHECK_OBJECTによって破損が検出されたブロックにソフトウェア破損のマークを付けます。

ONLINE_INDEX_CLEANファンクション

失敗または中断したオンラインでの索引の作成または再作成を手動でクリーンアップします。

REBUILD_FREELISTSプロシージャ

オブジェクトの空きリストを再作成します。

SEGMENT_FIX_STATUSプロシージャ

ビットマップ・エントリの破損状態を修正します。

SKIP_CORRUPT_BLOCKSプロシージャ

表および索引のスキャン時に破損マークのあるブロックを無視するか、または破損マークのあるブロックが検出された場合にORA-1578をレポートするかを設定します。

ADMIN_TABLESプロシージャ

このプロシージャは、DBMS_REPAIRパッケージの修復表および孤立したキー表に対して管理ファンクションを提供します。

構文

DBMS_REPAIR.ADMIN_TABLES (
table_name  IN   VARCHAR2,
table_type  IN   BINARY_INTEGER,
action      IN   BINARY_INTEGER,
tablespace  IN   VARCHAR2  DEFAULT NULL);

パラメータ

表124-4 ADMIN_TABLESプロシージャのパラメータ

パラメータ

説明

table_name

処理する表の名前。指定したtable_typeに基づいて、ORPHAN_KEY_TABLEまたはREPAIR_TABLEをデフォルト設定します。指定する場合は、表名に接頭辞ORPHAN_またはREPAIR_を付ける必要があります。

table_type

表のタイプ。ORPHAN_TABLEまたはREPAIR_TABLEのいずれかです。

詳細は、「定数」を参照してください。

action

実行する管理アクションを示します。

CREATE_ACTION、PURGE_ACTIONまたはDROP_ACTIONのいずれかである必要があります。CREATE_ACTIONの指定時に、表がすでに存在しているとエラーが戻されます。PURGE_ACTIONを指定すると、存在しないオブジェクトに関連付けられている表内の行はすべて削除されます。DROP_ACTIONの指定時に、表が存在していないとエラーが戻されます。

CREATE_ACTIONを指定すると、DBA_<table_name>という名前の関連ビューが作成され、DROP_ACTIONを指定すると削除されます。このビューは、存在しないオブジェクトに関連付けられている行を排除するように定義されています。

SYSスキーマ内に作成されます。

詳細は、「定数」を参照してください。

tablespace

表の作成時に使用する表領域を示します。

デフォルトでは、SYSのデフォルト表領域が使用されます。アクションがCREATE_ACTION以外のときに表領域を指定すると、エラーが戻されます。

CHECK_OBJECTプロシージャ

このプロシージャは、指定したオブジェクトをチェックし、破損および修復指示に関する情報を修復表に移入します。

妥当性チェックでは、オブジェクト内のすべてのブロックがチェックされます。

構文

DBMS_REPAIR.CHECK_OBJECT (
schema_name       IN  VARCHAR2,
object_name       IN  VARCHAR2,
partition_name    IN  VARCHAR2       DEFAULT NULL,
object_type       IN  BINARY_INTEGER DEFAULT TABLE_OBJECT,
repair_table_name IN  VARCHAR2       DEFAULT 'REPAIR_TABLE',
flags             IN  BINARY_INTEGER DEFAULT NULL,
relative_fno      IN  BINARY_INTEGER DEFAULT NULL,
block_start       IN  BINARY_INTEGER DEFAULT NULL,
block_end         IN  BINARY_INTEGER DEFAULT NULL,
corrupt_count     OUT BINARY_INTEGER);

パラメータ

表124-5 CHECK_OBJECTプロシージャのパラメータ

パラメータ

説明

schema_name

チェックするオブジェクトのスキーマ名。

object_name

チェックする表または索引の名前。

partition_name

チェックするパーティションまたはサブパーティションの名前。

パーティション・オブジェクトで、partition_nameを指定しない場合は、すべてのパーティションおよびサブパーティションがチェックされます。パーティション・オブジェクトで、指定したパーティションにサブパーティションが含まれている場合は、すべてのサブパーティションがチェックされます。

object_type

処理するオブジェクトのタイプ。TABLE_OBJECT(デフォルト)またはINDEX_OBJECTのいずれかです。

詳細は、「定数」を参照してください。

repair_table_name

情報を移入する修復表の名前。

この表は、SYSスキーマに存在している必要があります。修復表を作成するには、ADMIN_TABLESプロシージャを使用します。デフォルト名は、REPAIR_TABLEです。

flags

将来使用するために予約されています。

relative_fno

相対ファイル番号。ブロック範囲の指定時に使用します。

block_start

ブロック範囲を指定する場合に、最初に処理するブロックを指定します。オブジェクトが単一表、パーティションまたはサブパーティションの場合のみ指定できます。

block_end

ブロック範囲を指定する場合に、最後に処理するブロックを指定します。オブジェクトが単一表、パーティションまたはサブパーティションの場合のみ指定できます。block_startまたはblock_endのいずれか一方のみ指定した場合、他方の値は、ファイル内の第1ブロックまたは最終ブロックにそれぞれデフォルト設定されます。

corrupt_count

レポートされた破損数。

使用上の注意

オブジェクトの一部をチェック対象とする場合は、オプションで、DBA範囲、パーティション名またはサブパーティション名を指定することもできます。

DUMP_ORPHAN_KEYSプロシージャ

このプロシージャは、破損データ・ブロック内の行を指す索引エントリをレポートします。検出された該当索引エントリごとに、指定した孤立した表に行が挿入されます。

修復表が指定されている場合は、ソフトウェア破損のマークがあるすべてのデータ・ブロックの他に、元表に関連付けられている破損ブロックが処理されます。修復表が指定されていない場合は、破損マークのあるブロックのみ処理されます。

この情報は、表内で失われた行を再構築する場合や診断の目的に使用されます。

構文

DBMS_REPAIR.DUMP_ORPHAN_KEYS (
schema_name       IN  VARCHAR2,
object_name       IN  VARCHAR2,
partition_name    IN  VARCHAR2       DEFAULT NULL,
object_type       IN  BINARY_INTEGER DEFAULT INDEX_OBJECT,
repair_table_name IN  VARCHAR2       DEFAULT 'REPAIR_TABLE',
orphan_table_name IN  VARCHAR2       DEFAULT 'ORPHAN_KEYS_TABLE',
flags             IN  BINARY_INTEGER DEFAULT NULL,
key_count         OUT BINARY_INTEGER);

パラメータ

表124-6 DUMP_ORPHAN_KEYSプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマ名。

object_name

オブジェクト名。

partition_name

処理するパーティションまたはサブパーティションの名前。

パーティション・オブジェクトで、partition_nameが指定されていない場合は、すべてのパーティションおよびサブパーティションが処理されます。パーティション・オブジェクトで、指定したパーティションにサブパーティションが含まれている場合は、すべてのサブパーティションが処理されます。

object_type

処理するオブジェクトのタイプ。デフォルトはINDEX_OBJECTです。

詳細は、「定数」を参照してください。

repair_table_name

元表の破損ブロックに関する情報を含んだ修復表の名前。

指定した表は、SYSスキーマに存在している必要があります。表を作成するには、ADMIN_TABLESプロシージャを使用します。

orphan_table_name

破損データ・ブロック内の行を参照する各索引エントリに関する情報を移入する孤立したキー表の名前。

指定した表は、SYSスキーマに存在している必要があります。表を作成するには、ADMIN_TABLESプロシージャを使用します。

flags

将来使用するために予約されています。

key_count

処理された索引エントリ数。

FIX_CORRUPT_BLOCKSプロシージャ

このプロシージャは、CHECK_OBJECTプロシージャによって事前に生成された修復表の情報に基づいて、指定したオブジェクト内の破損ブロックを修正します。

ブロックに変更を加える前に、そのブロックがまだ破損状態であることを確認するチェックが行われます。破損ブロックは、そのブロックにソフトウェア破損のマークを付けることによって修復されます。修復が有効になると、修復表内の関連行が修正タイムスタンプで更新されます。

構文

DBMS_REPAIR.FIX_CORRUPT_BLOCKS (
schema_name       IN  VARCHAR2,
object_name       IN  VARCHAR2,
partition_name    IN  VARCHAR2       DEFAULT NULL,
object_type       IN  BINARY_INTEGER DEFAULT TABLE_OBJECT,
repair_table_name IN  VARCHAR2       DEFAULT 'REPAIR_TABLE',
flags             IN  BINARY_INTEGER DEFAULT NULL,
fix_count         OUT BINARY_INTEGER);

パラメータ

表124-7 FIX_CORRUPT_BLOCKSプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマ名。

object_name

修正対象の破損ブロックがあるオブジェクトの名前。

partition_name

処理するパーティションまたはサブパーティションの名前。

パーティション・オブジェクトで、partition_nameが指定されていない場合は、すべてのパーティションおよびサブパーティションが処理されます。パーティション・オブジェクトで、指定したパーティションにサブパーティションが含まれている場合は、すべてのサブパーティションが処理されます。

object_type

処理するオブジェクトのタイプ。TABLE_OBJECT(デフォルト)またはINDEX_OBJECTのいずれかです。

詳細は、「定数」を参照してください。

repair_table_name

修復指示を含んだ修復表の名前。

SYSスキーマに存在している必要があります。

flags

将来使用するために予約されています。

fix_count

修正されたブロック数。

ONLINE_INDEX_CLEANファンクション

このファンクションは、失敗または中断したオンラインでの索引の作成または再作成を手動でクリーンアップします。また、このアクションは、ユーザーが開始したクリーンアップに関係なく、SMONによって定期的に実行されます。

このファンクションは、指定したすべての索引がクリーンアップされるとTRUEを戻し、クリーンアップできない索引が1つ以上あるとFALSEを戻します。

構文

DBMS_REPAIR.ONLINE_INDEX_CLEAN (
object_id      IN BINARY_INTEGER DEFAULT ALL_INDEX_ID,
wait_for_lock  IN BINARY_INTEGER DEFAULT LOCK_WAIT)
RETURN BOOLEAN;

パラメータ

表124-8 ONLINE_INDEX_CLEANファンクションのパラメータ

パラメータ

説明

object_id

クリーンアップする索引のオブジェクトID。デフォルトでは、修飾するすべてのオブジェクトをクリーンアップします。

wait_for_lock

このパラメータは、基礎となる表の((サブ)パーティション)オブジェクトで、DMLロックを取得するかどうかを指定します。デフォルトでは、内部の再試行制限回数まで再試行した後、ロックの取得を中止します。LOCK_NOWAITを指定した場合、ロックの取得は再試行されません。

REBUILD_FREELISTSプロシージャ

このプロシージャは、指定したオブジェクトの空きリストを再作成します。すべての空きブロックは、マスター空きリストに格納されます。その他の空きリストはすべて0(ゼロ)になります。

オブジェクトに複数の空きリスト・グループがある場合、空きブロックは、ラウンドロビン方式で異なるグループに割り当てられ、すべての空きリスト間に配分されます。

構文

DBMS_REPAIR.REBUILD_FREELISTS (
schema_name    IN VARCHAR2,
object_name    IN  VARCHAR2,
partition_name IN VARCHAR2 DEFAULT NULL,
object_type    IN BINARY_INTEGER DEFAULT TABLE_OBJECT);

パラメータ

表124-9 REBUILD_FREELISTSプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマ名。

object_name

空きリストを再作成するオブジェクトの名前。

partition_name

空きリストを再作成するパーティションまたはサブパーティションの名前。

パーティション・オブジェクトで、partition_nameが指定されていない場合は、すべてのパーティションおよびサブパーティションが処理されます。パーティション・オブジェクトで、指定したパーティションにサブパーティションが含まれている場合は、すべてのサブパーティションが処理されます。

object_type

処理するオブジェクトのタイプ。TABLE_OBJECT(デフォルト)またはINDEX_OBJECTのいずれかです。

詳細は、「定数」を参照してください。

SEGMENT_FIX_STATUSプロシージャ

このプロシージャで、ビットマップ・エントリの破損状態を修正します。このプロシージャでは、状態が対応ブロックの現行の内容に基づいて再計算されるか、特定の値に設定されます。

構文

DBMS_REPAIR.SEGMENT_FIX_STATUS (
segment_owner   IN VARCHAR2,
segment_name    IN VARCHAR2,
segment_type    IN BINARY_INTEGER DEFAULT TABLE_OBJECT,
file_number     IN BINARY_INTEGER DEFAULT NULL,
block_number    IN BINARY_INTEGER DEFAULT NULL,
status_value    IN BINARY_INTEGER DEFAULT NULL,
partition_name  IN VARCHAR2 DEFAULT NULL,);

パラメータ

表124-10 SEGMENT_FIX_STATUSプロシージャのパラメータ

パラメータ

説明

schema_owner

セグメントのスキーマ名。

segment_name

セグメント名。

partition_name

オプション。個々のパーティション名。NULLは非パーティション化オブジェクトを示します。デフォルトはNULLです。

segment_type

セグメントのオプション・タイプ(TABLE_OBJECTやINDEX_OBJECTなど)。デフォルトはNULLです。

file_number

(オプション)ステータスを固定する必要のあるデータ・ブロックの、相対表領域ファイル番号。省略した場合、セグメント内の全ブロックで、状態が正しいかどうかチェックされ修正が行われます。

block_number

(オプション)ステータスを固定する必要のあるデータ・ブロックの、相対ファイル・ブロック番号。省略した場合、セグメント内の全ブロックで、状態が正しいかどうかチェックされ修正が行われます。

status_value

(オプション)file_numberおよびblock_numberで示したブロック・ステータスが設定される値。省略すると、ブロックの現在の状態に基づいてステータスが設定されます。ほとんどの場合がこれに該当しますが、計算アルゴリズムにバグがある場合は手動で値を設定します。ステータス値は次のとおりです。

- 1 = ブロックがいっぱいです。

- 2 = ブロックに0から25%の空きがあります。

- 3 = ブロックに25から50%の空きがあります。

- 4 = ブロックに50から75%の空きがあります。

- 5 = ブロックに75から100%の空きがあります。

ビットマップ・ブロック、セグメント・ヘッダーおよびエクステント・マップ・ブロックのステータスは変更できません。固定ハッシュ領域のブロックのステータスは変更できません。索引ブロックのステータスは「1 = ブロックがいっぱいです」および「3 = ブロックに空きがあります」の2つのみです。

SKIP_CORRUPT_BLOCKSプロシージャ

このプロシージャは、指定したオブジェクトの索引および表のスキャン時に、破損ブロックのスキップを使用可能または使用禁止にします。

オブジェクトが表のときは、スキップが表およびその索引に適用されます。オブジェクトがクラスタのときは、クラスタ内のすべての表およびその各索引に適用されます。

注意:
元表に対してDBMS_REPAIR.SKIP_CORRUPT_BLOCKSを設定した後、破損している索引で索引レンジ・スキャンを実行すると、破損ブランチ・ブロックおよび破損ルート・ブロックはスキップされません。ルート以外の破損しているリーフ・ブロックのみがスキップされます。

構文

DBMS_REPAIR.SKIP_CORRUPT_BLOCKS (
schema_name  IN VARCHAR2,
object_name  IN VARCHAR2,
object_type  IN BINARY_INTEGER DEFAULT TABLE_OBJECT,
flags        IN BINARY_INTEGER DEFAULT SKIP_FLAG);

パラメータ

表124-11 SKIP_CORRUPT_BLOCKSプロシージャのパラメータ

パラメータ

説明

schema_name

処理するオブジェクトのスキーマ名。

object_name

オブジェクト名。

object_type

処理するオブジェクトのタイプ。TABLE_OBJECT(デフォルト)またはCLUSTER_OBJECTのいずれかです。

詳細は、「定数」を参照してください。

flags

SKIP_FLAGを指定すると、索引および表のスキャン時に、そのオブジェクトのソフトウェア破損ブロックのスキップがオンになります。NOSKIP_FLAGを指定すると、ソフトウェア破損ブロックが検出されたときに、ORA-1578エラーが戻されます。

詳細は、「定数」を参照してください。

125 DBMS_REPCAT

DBMS_REPCATパッケージは、レプリケーション・カタログとレプリケーション環境を管理および更新するためのルーチンを提供します。

- DBMS_REPCATのドキュメント

DBMS_REPCATのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_REPCAT」を参照してください。

126 DBMS_REPCAT_ADMIN

DBMS_REPCAT_ADMINパッケージによって、対称型レプリケーション機能に必要な権限を付与したユーザーを作成できます。

- DBMS_REPCAT_ADMINのドキュメント

DBMS_REPCAT_ADMINのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_REPCAT_ADMIN」を参照してください。

127 DBMS_REPCAT_INSTANTIATE

DBMS_REPCAT_INSTANTIATEパッケージは、デプロイメント・テンプレートをインスタンス化します。

- DBMS_REPCAT_INSTANTIATEのドキュメント

DBMS_REPCAT_INSTANTIATEのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_REPCAT_INSTANTIATE」を参照してください。

128 DBMS_REPCAT_RGT

DBMS_REPCAT_RGTパッケージは、リフレッシュ・グループ・テンプレートのメンテナンスおよび定義を制御します。

- DBMS_REPCAT_RGTのドキュメント

DBMS_REPCAT_RGTのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_REPCAT_RGT」を参照してください。

129 DBMS_REPUTIL

DBMS_REPUTILパッケージには、表のレプリケーションで使用するシャドウ表、トリガーおよびパッケージを生成するサブプログラムの他に、スタンドアロン・プロシージャ起動およびパッケージ・プロシージャ起動のレプリケーションに使用するラッパーを生成するサブプログラムが含まれています。このパッケージは、生成コードでのみ参照されます。

- DBMS_REPUTILのドキュメント

DBMS_REPUTILのドキュメント

レプリケーションのコンテキストでのこのパッケージの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』の「DBMS_REPUTIL」を参照してください。

130 DBMS_RESCONFIG

DBMS_RESCONFIGパッケージは、リソース構成リストを操作して、リソースのリスナー情報を取得するインタフェースを提供します。

関連項目:
リソース構成の詳細は、『Oracle XML DB開発者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_RESCONFIGの使用方法

- 概要

- DBMS_RESCONFIGサブプログラムの要約

DBMS_RESCONFIGの使用方法

- 概要

概要

DBMS_RESCONFIGパッケージには、個々のリソースのリソース構成リストおよびリポジトリを管理するためのファンクションおよびプロシージャが含まれています。

DBMS_RESCONFIGサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表130-1 DBMS_RESCONFIGパッケージのサブプログラム

サブプログラム

説明

ADDREPOSITORYRESCONFIGプロシージャ

リポジトリの構成リストの特定の場所に、絶対パスで指定されたリソース構成を挿入します。

ADDRESCONFIGプロシージャ

ターゲット・リソースの構成リストの特定の場所に、絶対パスで指定されたリソース構成を挿入します。

APPENDRESCONFIGプロシージャ

rcpathで指定されたリソース構成がターゲット・リソースの構成リストに含まれていない場合は、このリソース構成を追加します。

DELETEREPOSITORYRESCONFIGプロシージャ

リポジトリの構成リストの特定の場所にある構成を削除します。

DELETERESCONFIGプロシージャ

ターゲット・リソースの構成リストの特定の場所にある構成を削除します。I

GETLISTENERSファンクション

特定のリソースに適用できるリスナーのリストを戻します。

GETREPOSITORYRESCONFIGファンクション

リポジトリの構成リストの特定の場所にリソース構成を戻します。

GETREPOSITORYRESCONFIGPATHSファンクション

リポジトリに対して定義されたリソース構成パスのリストを戻します。

GETRESCONFIGファンクション

ターゲット・リソースの構成リストの特定の場所にリソース構成を戻します。

GETRESCONFIGPATHSファンクション

ターゲット・リソースの構成リストで定義されたリソース構成パスのリストを戻します。

PATCHREPOSITORYRESCONFIGLISTプロシージャ

無効な参照をリポジトリ・リソース構成リストから削除し、リポジトリを使用可能にします。

ADDREPOSITORYRESCONFIGプロシージャ

このプロシージャは、リポジトリの構成リストの特定の場所に、絶対パスで指定されたリソース構成を挿入します。現在その位置にある要素(ある場合)および後続の要素を、右に移動します。

構文

DBMS_RESCONFIG.ADDREPOSITORYRESCONFIG(
rcpath     IN   VARCHAR2,
pos        IN   PLS_INTEGER := NULL);

パラメータ

表130-2 ADDREPOSITORYRESCONFIGファンクションのパラメータ

パラメータ

説明

rcpath

挿入されるリソース構成の絶対パス。rcpathがターゲットの構成リストにすでに存在している場合は、例外が発生します。

pos

新しい構成が挿入される索引。このパラメータが指定されていない場合は、リストの最後に新しい構成が追加されます。索引が範囲外(posが0(ゼロ)より小さいか、posがターゲット・リソースの構成リストのサイズよりも大きい)の場合は、例外が発生します。

使用上の注意

- rcpathで参照されるドキュメントがXDBResConfig.xsdスキーマに基づいていない場合は、例外が発生します。

- ユーザーには、挿入されるリソース構成に対するXDBADMINロールおよびREAD権限が必要です。このロールおよび権限がない場合は、エラーが戻されます。

ADDRESCONFIGプロシージャ

このプロシージャは、ターゲット・リソースの構成リストの特定の場所に、絶対パスで指定されたリソース構成を挿入します。現在その位置にある要素(ある場合)および後続の要素を、右に移動します。

構文

DBMS_RESCONFIG.ADDRESCONFIG(
respath    IN   VARCHAR2,
rcpath     IN   VARCHAR2,
pos        IN   PLS_INTEGER := NULL);

パラメータ

表130-3 ADDRESCONFIGファンクションのパラメータ

パラメータ

説明

respath

ターゲット・リソースの絶対パス。

rcpath

挿入されるリソース構成の絶対パス。rcpathがターゲットの構成リストにすでに存在している場合は、例外が発生します。

pos

新しい構成が挿入される索引。このパラメータが指定されていない場合は、リストの最後に新しい構成が追加されます。索引が範囲外(posが0(ゼロ)より小さいか、posがターゲット・リソースの構成リストのサイズよりも大きい)の場合は、例外が発生します。

使用上の注意

- rcpathで参照されるドキュメントがXDBResConfig.xsdスキーマに基づいていない場合は、例外が発生します。

- ユーザーには、ターゲット・リソースに対するWRITE-CONFIG権限、および挿入されるリソース構成に対する読取り権限が必要です。この権限がない場合は、エラーが戻されます。

APPENDRESCONFIGプロシージャ

このプロシージャは、rcpathで指定されたリソース構成がターゲット・リソースの構成リストに含まれていない場合に、このリソース構成を追加します。

構文

DBMS_RESCONFIG.ADDRESCONFIG(
respath       IN   VARCHAR2,
rcpath        IN   VARCHAR2,
appendOption  IN   PLS_INTEGER);

パラメータ

表130-4 ADDRESCONFIGファンクションのパラメータ

パラメータ

説明

respath

ターゲット・リソースの絶対パス。

rcpath

ターゲットの構成リストの最後に追加されるリソース構成の絶対パス。rcpathがリストにすでに存在している場合は、何も追加されません。

appendOption

APPEND_RESOURCEまたはAPPEND_RECURSIVE。APPEND_RESOURCEを指定すると、ターゲット・リソースのみが影響を受けます。APPEND_RECURSIVEを指定すると、ターゲット・リソースおよびそのすべての子が影響を受けます。

使用上の注意

- rcpathで参照されるドキュメントがXDBResConfig.xsdスキーマに基づいていない場合は、例外が発生します。

- ユーザーには、影響を受けるすべてのリソースに対するWRITE-CONFIG権限、および挿入されるリソース構成に対する読取り権限が必要です。この権限がない場合は、エラーが戻されます。

DELETEREPOSITORYRESCONFIGプロシージャ

このプロシージャは、リポジトリの構成リストの特定の場所にある構成を削除します。後続の要素を左に移動します。

構文

DBMS_RESCONFIG.DELETEREPOSITORYRESCONFIG(
pos           IN   PLS_INTEGER);

パラメータ

表130-5 DELETEREPOSITORYRESCONFIGファンクションのパラメータ

パラメータ

説明

pos

削除される構成の索引。索引が範囲外(posが0(ゼロ)より小さいか、posがターゲット・リソースの構成リストのサイズよりも大きい)の場合は、例外が発生します。

使用上の注意

- ユーザーには、この操作を行うためのXDBADMINロールが必要です。

- この文は、DDL文と同様に処理されます。つまり、この文の前後で暗黙的にコミットされます。

DELETERESCONFIGプロシージャ

このプロシージャは、ターゲット・リソースの構成リストの特定の場所にある構成を削除します。後続の要素を左に移動します。ユーザーは、再帰的な削除に対するオーバーロードを使用できます。

構文

DBMS_RESCONFIG.DELETERESCONFIG(
respath       IN   VARCHAR2,
pos           IN   PLS_INTEGER);

DBMS_RESCONFIG.DELETERESCONFIG(
respath        IN  VARCHAR2,
rcpath         IN  VARCHAR2,
deleteOption   IN  PLS_INTEGER);

パラメータ

表130-6 DELETERESCONFIGプロシージャのパラメータ

パラメータ

説明

respath

ターゲット・リソースの絶対パス。

pos

削除される構成の索引。索引が範囲外(posが0(ゼロ)より小さいか、posがターゲット・リソースの構成リストのサイズよりも大きい)の場合は、例外が発生します。

rcpath

リストに存在する場合に削除されるリソース構成の絶対パス。

deleteOption

DELETE_RESOURCEまたはDELETE_RECURSIVE。DELETE_RESOURCEを指定すると、ターゲット・リソースの構成リストのみが影響を受けます。DELETE_RECURSIVEを指定すると、ターゲット・リソースおよびそのすべての子の構成リストが影響を受けます。

使用上の注意

ユーザーには、この操作を行うためにターゲット・リソースに対するWRITE-CONFIG権限が必要です。

GETLISTENERSファンクション

このファンクションは、特定のリソースに適用できるリスナーのリストを戻します。

このファンクションによって戻される値は、XDBResconfig.xsdスキーマの、<event-listeners>要素を含むXML文書です。この文書には、リポジトリ・レベルのリスナーなど、ターゲット・リソースに適用できるすべてのリスナーが含まれています。ユーザーは、戻されるXML文書から、EXTRACT演算子を使用して固有のイベントに対して定義されたリスナーを取得できます。

構文

DBMS_RESCONFIG.GETLISTENERS(
path    IN   VARCHAR2)
RETURN XMLTYPE;

パラメータ

表130-7 GETLISTENERSファンクションのパラメータ

パラメータ

説明

path

ターゲット・リソースの絶対パス。

使用上の注意

ユーザーには、リポジトリおよびターゲット・リソースによって参照されるすべてのリソース構成に対するアクセス権限が必要です。この権限がない場合は、エラーが戻されます。

GETREPOSITORYRESCONFIGファンクション

このファンクションは、リポジトリの構成リストの指定された場所にリソース構成を戻します。

構文

DBMS_RESCONFIG.GETREPOSITORYRESCONFIG(
pos    IN   PLS_INTEGER)
RETURN XMLTYPE;

パラメータ

表130-8 GETREPOSITORYRESCONFIGファンクションのパラメータ

パラメータ

説明

pos

戻される要素の索引。索引が範囲外(posが0(ゼロ)より小さいか、posがリポジトリの構成リストのサイズ以上)の場合は、例外が発生します。

使用上の注意

ユーザーには、要求されたリソース構成に対する読取り権限が必要です。この権限がない場合は、エラーが戻されます。

GETREPOSITORYRESCONFIGPATHSファンクション

このファンクションは、リポジトリに対して定義されたリソース構成パスのリストを戻します。

構文

DBMS_RESCONFIG.GETREPOSITORYRESCONFIGPATHS
RETURN XDB$STRING_LIST_T;

使用上の注意

ユーザーは、参照されているすべてのリソース構成にアクセスできる必要があります。アクセスできない場合は、エラーが戻されます。

GETRESCONFIGファンクション

このファンクションは、ターゲット・リソースの構成リストの特定の場所にリソース構成を戻します。

構文

DBMS_RESCONFIG.GETRESCONFIG(
respath IN VARCHAR2,
pos IN PLS_INTEGER)
RETURN XMLTYPE;

パラメータ

表130-9 GETRESCONFIGファンクションのパラメータ

パラメータ

説明

respath

ターゲット・リソースの絶対パス。

pos

戻される要素の索引。索引が範囲外(posが0(ゼロ)より小さいか、posがターゲット・リソースの構成リストのサイズよりも大きい)の場合は、例外が発生します。

使用上の注意

ユーザーには、要求されたリソース構成に対する読取り権限が必要です。この権限がない場合は、エラーが戻されます。

GETRESCONFIGPATHSファンクション

このファンクションは、ターゲット・リソースの構成リストで定義されたリソース構成パスのリストを戻します。

構文

DBMS_RESCONFIG.GETRESCONFIGPATHS(
respath IN VARCHAR2)
RETURN XDB$STRING_LIST_T;

パラメータ

表130-10 GETRESCONFIGPATHSファンクションのパラメータ

パラメータ

説明

respath

ターゲット・リソースの絶対パス。

使用上の注意

ユーザーは、参照されているすべてのリソース構成にアクセスできる必要があります。アクセスできない場合は、エラーが戻されます。

PATCHREPOSITORYRESCONFIGLISTプロシージャ

通常の状況であれば、リポジトリ・リソース構成リストの一部である場合、リソース構成リソースの削除は実行できません。なんらかの理由で、リポジトリ・リソース構成リストの一部である、リソース構成リソースの削除に成功した場合、リポジトリ操作の結果は「参照先がない参照」エラーになります。このプロシージャは、無効な参照をリポジトリ・リソース構成リストから削除し、リポジトリを使用可能にします。このプロシージャは、SYSとして実行する必要があります。

構文

DBMS_RESCONFIG.PATCHREPOSITORYRESCONFIGLIST;

131 DBMS_RESOURCE_MANAGER

DBMS_RESOURCE_MANAGERパッケージは、計画、コンシューマ・グループおよびプラン・ディレクティブをメンテナンスします。また、プラン・スキーマへの変更をグループ化するセマンティクスも提供します。

関連項目:
データベース・リソース・マネージャの使用方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_RESOURCE_MANAGERの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- DBMS_RESOURCE_MANAGERサブプログラムの要約

DBMS_RESOURCE_MANAGERの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

推奨されないサブプログラム

注意:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 11gでは、次のサブプログラムの使用は推奨されていません。

- SET_INITIAL_CONSUMER_GROUPプロシージャ

セキュリティ・モデル

実行者には、このプロシージャを実行するためのADMINISTER_RESOURCE_MANAGERシステム権限が必要です。この権限の付与および取消しを行うプロシージャは、DBMS_RESOURCE_MANAGER_PRIVSパッケージに含まれています(第132章「DBMS_RESOURCE_MANAGER_PRIVS」を参照)。

定数

DBMS_RESOURCE_MANAGERパッケージでは、表131-1「DBMS_RESOURCE_MANAGERの定数」で示す定数が使用されます。

表131-1 DBMS_RESOURCE_MANAGERの定数

定数

タイプ

値

説明

CLIENT_ID

VARCHAR2(30)

CLIENT_ID

セッションのクライアント識別子。

CLIENT_MACHINE

VARCHAR2(30)

CLIENT_MACHINE

クライアントが接続元にするコンピュータの名前。

CLIENT_OS_USER

VARCHAR2(30)

CLIENT_OS_USER

ログインしたクライアントのオペレーティング・システムのユーザー名。

CLIENT_PROGRAM

VARCHAR2(30)

CLIENT_PROGRAM

サーバーにログインするために使用したクライアント・プログラムの名前。

MODULE_NAME

VARCHAR2(30)

MODULE_NAME

DBMS_APPLICATION_INFOパッケージのSET_MODULEプロシージャまたは同等のOCI属性設定で設定された現在実行しているアプリケーションのモジュール名。

MODULE_NAME_ACTION

VARCHAR2(30)

MODULE_NAME_ACTION

現在のモジュールとDBMS_APPLICATION_INFOパッケージの次のプロシージャまたは同等のOCI属性設定で設定された現在実行しているアクションの組合せ。

- SET_MODULEプロシージャ

- SET_ACTIONプロシージャ

属性は、モジュール名、その後に続くピリオド(.)、その後に続くアクション名(module_name.action_name)で指定されます。

ORACLE_FUNCTION

VARCHAR2(30)

ORACLE_FUNCTION

セッションが現在実行中のファンクション。有効なファンクションは、BACKUP、COPYおよびDATALOADです。BACKUPは、RMANを使用して、バックアップ操作を実行しているセッションに設定されます。COPYは、RMANを使用して、イメージ・コピーを実行しているセッションに設定されます。DATALOADは、Oracle Data Pumpを使用して、データをロードしているセッションに設定されます。

ORACLE_USER

VARCHAR2(30)

ORACLE_USER

Oracle Databaseのユーザー名。

SERVICE_MODULE

VARCHAR2(30)

SERVICE_MODULE

service_name.module_nameの形式のサービス名とモジュール名の組合せ。

SERVICE_MODULE_ACTION

VARCHAR2(30)

SERVICE_MODULE_ACTION

service_name.module_name.action_nameの形式のサービス名、モジュール名およびアクション名の組合せ。

SERVICE_NAME

VARCHAR2(30)

SERVICE_NAME

クライアントが接続の確立に使用するサービス名。

DBMS_RESOURCE_MANAGERサブプログラムの要約

表131-2 DBMS_RESOURCE_MANAGERパッケージのサブプログラム

サブプログラム

説明

BEGIN_SQL_BLOCKプロシージャ

リソース・マネージャによってグループとして扱われる必要のあるSQL文のブロックの開始を示します。

CALIBRATE_IOプロシージャ

ストレージのI/O機能を較正します。

CLEAR_PENDING_AREAプロシージャ

リソース・マネージャに対する作業領域を消去します。

CREATE_CATEGORYプロシージャ

新規リソース・コンシューマ・グループ・カテゴリを作成します。

CREATE_CDB_PLANプロシージャ

リソース・コンシューマ・グループを定義するエントリを作成します。

CREATE_CDB_PLAN_DIRECTIVEプロシージャ

統合リソース・プランのプラン・ディレクティブを作成します。

CREATE_CONSUMER_GROUPプロシージャ

リソース・コンシューマ・グループを定義するエントリを作成します。

CREATE_PENDING_AREAプロシージャ

リソース・マネージャ・オブジェクトへの変更を行うための作業領域を作成します。

CREATE_PLANプロシージャ

リソース・プランを定義するエントリを作成します。

CREATE_PLAN_DIRECTIVEプロシージャ

リソース・プラン・ディレクティブを作成します。

CREATE_SIMPLE_PLANプロシージャ

最大8つのコンシューマ・グループが含まれた単一レベルのリソース・プランを1ステップで作成します。

DELETE_CATEGORYプロシージャ

既存のリソース・コンシューマ・グループ・カテゴリを削除します。

DELETE_CDB_PLANプロシージャ

統合リソース・プランを削除します。

DELETE_CDB_PLAN_DIRECTIVEプロシージャ

統合リソース・プランのプラン・ディレクティブを削除します。

DELETE_CONSUMER_GROUPプロシージャ

リソース・コンシューマ・グループを定義するエントリを削除します。

DELETE_PLANプロシージャ

指定の計画およびそれが参照するすべてのプラン・ディレクティブを削除します。

DELETE_PLAN_CASCADEプロシージャ

指定の計画およびそのすべての子(プラン・ディレクティブ、サブプラン、コンシューマ・グループ)を削除します。

DELETE_PLAN_DIRECTIVEプロシージャ

リソース・プラン・ディレクティブを削除します。

END_SQL_BLOCKプロシージャ

リソース・マネージャによってグループとして扱われる必要のあるSQL文のブロックの終了を示します。

SET_CONSUMER_GROUP_MAPPINGプロシージャ

ログイン属性およびランタイム属性のマッピングに使用するエントリを追加、削除または変更します。

SET_CONSUMER_GROUP_MAPPING_PRIプロシージャ

セッション属性マッピングの優先順位リストを作成します。

SET_INITIAL_CONSUMER_GROUPプロシージャ

ユーザーに対して、初期リソース・コンシューマ・グループを割り当てます。(注意: 推奨されないサブプログラム)

SUBMIT_PENDING_AREAプロシージャ

リソース・マネージャに対する保留中の変更を実行します。

SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャ

指定のセッションのリソース・コンシューマ・グループを変更します。

SWITCH_CONSUMER_GROUP_FOR_USERプロシージャ

指定のユーザー名で、すべてのセッションのリソース・コンシューマ・グループを変更します。

SWITCH_PLANプロシージャ

現行のリソース・マネージャ・プランを設定します。

UPDATE_CATEGORYプロシージャ

既存のリソース・コンシューマ・グループ・カテゴリを更新します。

UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャ

自動化メンテナンス・タスクに関して、プラン・ディレクティブを更新します。

UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャ

統合計画のデフォルト値を更新します。

UPDATE_CDB_PLANプロシージャ

統合リソース・プランを更新します。

UPDATE_CDB_PLAN_DIRECTIVEプロシージャ

統合リソース・プランを更新します。

UPDATE_CONSUMER_GROUPプロシージャ

リソース・コンシューマ・グループを定義するエントリを更新します。

UPDATE_PLANプロシージャ

リソース・プランを定義するエントリを更新します。

UPDATE_PLAN_DIRECTIVEプロシージャ

リソース・プラン・ディレクティブを更新します。

VALIDATE_PENDING_AREAプロシージャ

リソース・マネージャに対する保留中の変更を検証します。

BEGIN_SQL_BLOCKプロシージャ

このプロシージャは、パラレル・ステートメント・キューイングで使用され、リソース・マネージャによってグループとして扱われる必要のあるSQL文のブロックの開始を示します。

構文

DBMS_RESOURCE_MANAGER.BEGIN_SQL_BLOCK;

使用上の注意

詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』のパラレル・ステートメント・キューイングに関する項およびリソース・マネージャによるパラレル・ステートメント・キューイングの管理に関する項を参照してください。

CALIBRATE_IOプロシージャ

このプロシージャは、ストレージのI/O機能を較正します。較正ステータスはV$IO_CALIBRATION_STATUSビューから利用可能であり、較正が正常に実行された場合、結果はDBA_RSRC_IO_CALIBRATE表に配置されます。

構文

DBMS_RESOURCE_MANAGER.CALIBRATE_IO (
num_physical_disks      IN  PLS_INTEGER DEFAULT 1,
max_latency             IN  PLS_INTEGER DEFAULT 20,
max_iops                OUT PLS_INTEGER,
max_mbps                OUT PLS_INTEGER,
actual_latency          OUT PLS_INTEGER);

パラメータ

表131-3 CALIBRATE_IOプロシージャのパラメータ

パラメータ

説明

num_physical_disks

データベース記憶域にある物理ディスクの概数。このパラメータは、較正を実行するときの初期I/Oにかかる負荷を指定するために使用されます。

max_latency

データベース・ブロック・サイズのIOリクエストの最大許容待機時間(ミリ秒)。

max_iops

維持できるI/Oリクエストの最大数(秒)。I/Oリクエストは、ランダムに分散されるデータベース・ブロック・サイズの読取りです。

max_mbps

維持できるI/Oスループットの最大数(MB/秒単位)。I/Oリクエストは、ランダムに分散される1MBの読取りです。

actual_latency

max_iops値でのデータベース・ブロック・サイズのI/Oリクエストの平均待機時間(ミリ秒)。

使用上の注意

- このプロシージャは、SYSDBA権限を持つユーザーのみが実行できます。また、権限を持つユーザーは、timed_statisticsをオンにし、asynch_ioがデータファイルに対して有効になっていることを確認する必要もあります。この設定は、filesystemio_optionsをASYNCHまたはSETALLのいずれかに設定することによって行うことができます。また、次のSQL文を使用して、asynch_ioステータスを問い合せることもできます。

col name format a50
SELECT name, asynch_io FROM v$datafile f,v$iostat_file i
WHERE f.file#        = i.file_no
AND   filetype_name  = 'Data File'
/

- 一度に実行できる較正は1つのみです。別の較正を同時に開始すると失敗します。

- Oracle Real Application Clusters(Oracle RAC)データベースでは、ワークロードはすべてのインスタンスから同時に生成されます。

- マルチテナント・コンテナ・データベース(CDB)では、ルート・コンテナからのみ較正を実行できます。

- 較正により、データベースのパフォーマンスは著しく低下します。較正は、データベースのパフォーマンスが大きく低下することをユーザーが許容できる場合にのみ実行することを強くお薦めします。

- 最適な較正結果を得るには、他のデータベース・ワークロードを実行しないようにする必要があります。

関連項目:
較正の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

例

I/O較正プロシージャの使用例

SET SERVEROUTPUT ON
DECLARE
lat  INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
-- DBMS_RESOURCE_MANAGER.CALIBRATE_IO (<DISKS>, <MAX_LATENCY>, iops, mbps, lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat);

DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);
DBMS_OUTPUT.PUT_LINE ('latency  = ' || lat);
DBMS_OUTPUT.PUT_LINE ('max_mbps = ' || mbps);
end;
/

I/O較正結果の表示

SQL> desc V$IO_CALIBRATION_STATUS
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
STATUS                                             VARCHAR2(13)
CALIBRATION_TIME                                   TIMESTAMP(3)

SQL> desc gv$io_calibration_status
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
INST_ID                                            NUMBER
STATUS                                             VARCHAR2(13)
CALIBRATION_TIME                                   TIMESTAMP(3)

Column explanation:
-------------------
STATUS:
IN PROGRESS   : Calibration in Progress (Results from previous calibration
run displayed, if available)
READY         : Results ready and available from earlier run
NOT AVAILABLE : Calibration results not available.

CALIBRATION_TIME: End time of the last calibration run

I/O較正結果を格納するDBA表

SQL> desc DBA_RSRC_IO_CALIBRATE
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
START_TIME                                         TIMESTAMP(6)
END_TIME                                           TIMESTAMP(6)
MAX_IOPS                                           NUMBER
MAX_MBPS                                           NUMBER
MAX_PMBPS                                          NUMBER
LATENCY                                            NUMBER
NUM_PHYSICAL_DISKS                                 NUMBER

comment on table DBA_RSRC_IO_CALIBRATE is
'Results of the most recent I/O calibration'
/
comment on column DBA_RSRC_IO_CALIBRATE.START_TIME is
'start time of the most recent I/O calibration'
/
comment on column DBA_RSRC_IO_CALIBRATE.END_TIME is
'end time of the most recent I/O calibration'
/
comment on column DBA_RSRC_IO_CALIBRATE.MAX_IOPS is
'maximum number of data-block read requests that can be sustained per second'
/
comment on column DBA_RSRC_IO_CALIBRATE.MAX_MBPS is
'maximum megabytes per second of maximum-sized read requests that can be
sustained'
/
comment on column DBA_RSRC_IO_CALIBRATE.MAX_PMBPS is
'maximum megabytes per second of large I/O requests that
can be sustained by a single process'
/
comment on column DBA_RSRC_IO_CALIBRATE.LATENCY is
'latency for data-block read requests'
/
comment on column DBA_RSRC_IO_CALIBRATE.NUM_PHYSICAL_DISKS is
'number of physical disks in the storage subsystem (as specified by user)'
/

CLEAR_PENDING_AREAプロシージャ

このプロシージャは、リソース・マネージャに対する保留中の変更内容を消去します。

構文

DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;

CREATE_CATEGORYプロシージャ

このプロシージャは、新しいコンシューマ・グループ・カテゴリを作成します。この属性の主な目的は、Exadata I/Oリソース・マネージャ・カテゴリ・プランをサポートすることです。ビューDBA_RSRC_CATEGORIESは、現在定義されているカテゴリを定義します。ADMINISTRATIVE、INTERACTIVE、BATCH、MAINTENANCEおよびOTHERの各カテゴリを利用できます。

構文

DBMS_RESOURCE_MANAGER.CREATE_CATEGORY (
category    IN    VARCHAR2,
comment     IN    VARCHAR2 DEFAULT NULL));

パラメータ

表131-4 CREATE_CATEGORYプロシージャのパラメータ

パラメータ

説明

category

コンシューマ・グループ・カテゴリの名前。

comment

ユーザー・コメント。

CREATE_CDB_PLANプロシージャ

このプロシージャは、統合リソース・プランを作成します。

構文

DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN (
plan                    IN    VARCHAR2(32),
comment                 IN    VARCHAR2(2000) DEFAULT NULL);

パラメータ

表131-5 CREATE_CDB_PLANプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

comment

ユーザー・コメント。

使用上の注意

このプロシージャは、ルート・コンテナからのみ実行できます。

CREATE_CDB_PLAN_DIRECTIVEプロシージャ

このプロシージャは、統合リソース・プランのプラン・ディレクティブを作成します。プラン・ディレクティブは、リソース割当てポリシーを指定します。

構文

DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE (
plan                    IN    VARCHAR2,
pluggable_database      IN    VARCHAR2,
comment                 IN    VARCHAR2 (2000) DEFAULT '',
shares                  IN    NUMBER          DEFAULT NULL,
utilization_limit       IN    NUMBER          DEFAULT NULL,
parallel_server_limit   IN    NUMBER          DEFAULT NULL);

パラメータ

表131-6 CREATE_CDB_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

pluggable_database

プラガブル・データベースの名前。

comment

ユーザー・コメント。

shares

プラガブル・データベースのリソース割当ての共有を指定します。各PDBに共有を指定することで、CPU Resource Managerを有効化します。また、パラレル・ステートメント・キューイングにはsharesパラメータを使用します。共有が指定されていない場合は、デフォルト・ディレクティブから、UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャで指定されたデフォルトが取得されます。

utilization_limit

プラガブル・データベースで使用できるCPUの最大割合を指定します。

parallel_server_limit

プラガブル・データベースで使用できるparallel_servers_targetパラレル・サーバーの最大割合を指定します。

使用上の注意

- shares、utilization_limitおよびparallel_server_limitのデフォルト値はNULLです。ユーザーがNULLを指定するか、値を指定しなかった場合、デフォルト値が使用されます。

- このプロシージャは、ルート・コンテナからのみ実行できます。

CREATE_CONSUMER_GROUPプロシージャ

このプロシージャは、リソース・コンシューマ・グループを定義するエントリを作成します。

構文

DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP (
consumer_group  IN VARCHAR2,
comment         IN VARCHAR2,
cpu_mth         IN VARCHAR2 DEFAULT NULL,
mgmt_mth        IN VARCHAR2 DEFAULT 'ROUND-ROBIN',
category        IN VARCHAR2 DEFAULT 'OTHER');

パラメータ

表131-7 CREATE_CONSUMER_GROUPプロシージャのパラメータ

パラメータ

説明

consumer_group

コンシューマ・グループの名前。

comment

ユーザー・コメント。

cpu_mth

CPUリソース割当て方法の名前(非推奨)。

mgmt_mth

CPUリソース割当て方法の名前。

category

コンシューマ・グループのカテゴリを説明します。この属性の主な目的は、Exadata I/Oリソース・マネージャ・カテゴリ・プランをサポートすることです。ビューDBA_RSRC_CATEGORIESは、現在定義されているカテゴリを定義します。カテゴリは、CREATE_CATEGORYプロシージャ、UPDATE_CATEGORYプロシージャおよびDELETE_CATEGORYプロシージャを使用して、変更できます。

CREATE_PENDING_AREAプロシージャ

このプロシージャは、リソース・マネージャ・オブジェクトに変更を加えます。

プラン・スキーマへのすべての変更は、ペンディング・エリア内で行う必要があります。ペンディング・エリアは、プラン・スキーマを変更するためのスクラッチ領域とみなすことができます。管理者は、このペンディング・エリアを作成し、必要に応じて変更を加え、場合によってその変更を検証し、その実行が完了したときのみ、その変更内容がアクティブになります。

構文

DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA;

使用上の注意

ペンディング・エリアがアクティブな間は、変更された現行のプラン・スキーマを適切なユーザー・ビューから選択して、いつでも表示できます。

現行の変更を中止する場合は、いつでもペンディング・エリアを消去できます。また、VALIDATEプロシージャをコールして、変更が有効になっているかどうかを確認できます。変更は、エントリ・グループの一貫性を維持するための指定の順序で実行する必要はありません。これらのチェックは、ペンディング・エリアが実行されるときにも暗黙的に行われます。

注意:
Oracleでは、孤立したコンシューマ・グループ(つまり、そのコンシューマ・グループを参照するプラン・ディレクティブがないコンシューマ・グループ)が可能です。これは、現在は使用しないが将来使用するコンシューマ・グループを管理者があらかじめ作成できるようにするためです。

次のルールを厳守してください。これらのルールは、VALIDATEまたはSUBMITプロシージャが実行されるたびにチェックされます。

- プラン・スキーマにループがないこと。

- プラン・ディレクティブが参照するすべての計画およびコンシューマ・グループがあること。

- すべての計画に、計画またはコンシューマ・グループのいずれかを参照するプラン・ディレクティブがあること。

- リソース割当て方法がEMPHASISの場合は、指定レベルでのパーセントの合計が100を超えないこと。

- アクティブなインスタンスでトップレベルの計画として現在使用されている計画を削除しないこと。

- プラン・ディレクティブのパラメータparallel_degree_limit_p1は、コンシューマ・グループ(つまり、サブプランではなく)を参照するプラン・ディレクティブでのみ表示されます。

- 指定の計画でのプラン・ディレクティブが28を超えないこと(つまり、計画は29以上の子を持つことはできません)。

- アクティブなプラン・スキーマ内のコンシューマ・グループが28を超えないこと。

- 計画とコンシューマ・グループは同じネームスペースを使用するため、コンシューマ・グループと同じ名前の計画がないこと。

- アクティブなプラン・スキーマ内にOTHER_GROUPSに対するプラン・ディレクティブがあること。これにより、現在アクティブな計画がカバーしていないセッションにOTHER_GROUPSディレクティブが指定したリソースが割り当てられます。

VALIDATEまたはSUBMITプロシージャによるチェック時に、前述のルールのいずれかに違反していると、それを通知するエラー・メッセージが戻されます。変更して1つ以上の問題を修正し、VALIDATEまたはSUBMITプロシージャを再発行できます。

CREATE_PLANプロシージャ

このプロシージャは、リソース・プランを定義するエントリを作成します。

構文

DBMS_RESOURCE_MANAGER.CREATE_PLAN (
plan                       IN   VARCHAR2,
comment                    IN   VARCHAR2 DEFAULT NULL,
cpu_mth                    IN   VARCHAR2 DEFAULT NULL, -- deprecated
active_sess_pool_mth       IN   VARCHAR2 DEFAULT 'ACTIVE_SESS_POOL_ABSOLUTE',
parallel_degree_limit_mth  IN   VARCHAR2 DEFAULT
'PARALLEL_DEGREE_LIMIT_ABSOLUTE',
queueing_mth               IN   VARCHAR2 DEFAULT 'FIFO_TIMEOUT',
mgmt_mth                   IN   VARCHAR2 DEFAULT 'EMPHASIS',
sub_plan                   IN   BOOLEAN DEFAULT FALSE,
max_iops                   IN   NUMBER DEFAULT NULL,
max_mbps                   IN   NUMBER DEFAULT NULL);

パラメータ

表131-8 CREATE_PLANプロシージャのパラメータ

パラメータ

説明

plan

リソース・プランの名前。

comment

ユーザー・コメント。

cpu_mth

CPUリソース割当て方法(非推奨)。

active_sess_pool_mth

アクティブ・セッション・プールのリソース割当て方法。アクティブなセッションの数を制限します。他のセッションはすべて非アクティブになり、アクティブ化されるまでキューで待機します。デフォルトのACTIVE_SESS_POOL_ABSOLUTEは、選択できる唯一の方法です。

parallel_degree_limit_mth

任意の操作の並列度に制限を指定するためのリソース割当て方法。デフォルトのPARALLEL_DEGREE_LIMIT_ABSOLUTEは、選択できる唯一の方法です。

queueing_mth

キューイングのリソース割当て方法。キュー内で実行待ちになっている非アクティブなセッションを実行する順序を制御します。デフォルトのFIFO_TIMEOUTは、選択できる唯一の方法です。

mgmt_mth

コンシューマ・グループやサブ・プランがそれぞれ使用するリソース量(CPUやI/Oなど)を指定するためのリソース割当て方法。

- EMPHASIS: コンシューマ・グループ間でのI/Oリソースの分散方法を指定する際にパーセントを使用する、マルチレベル・プランに向いています。

- RATIO: I/Oリソースの分散方法を指定する際に比率を使用する、単一レベルの計画に向いています。

sub_plan

TRUEの場合、この計画はサブプランとしての使用のみを目的としていることを示します。サブプランは、OTHER_GROUPSディレクティブを持つ必要はありません。デフォルトはFALSEです。

max_iops

機能しません

max_mbps

機能しません

使用上の注意

デフォルトのリソース割当て方法を使用する場合は、計画の作成または更新時に方法を指定する必要はありません。

CREATE_PLAN_DIRECTIVEプロシージャ

このプロシージャは、リソース・プラン・ディレクティブを作成します。

注意:
パラメータmax_utilization_limitとparallel_target_percentageはOracle Database 11gリリース1(11.1.0.1)で非推奨になっており、utilization_limitとparallel_server_limitに置き換えられます。

構文

DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
plan                      IN VARCHAR2,
group_or_subplan          IN VARCHAR2,
comment                   IN VARCHAR2 DEFAULT NULL,
cpu_p1                    IN NUMBER   DEFAULT NULL, -- deprecated
cpu_p2                    IN NUMBER   DEFAULT NULL, -- deprecated
cpu_p3                    IN NUMBER   DEFAULT NULL, -- deprecated
cpu_p4                    IN NUMBER   DEFAULT NULL, -- deprecated
cpu_p5                    IN NUMBER   DEFAULT NULL, -- deprecated
cpu_p6                    IN NUMBER   DEFAULT NULL, -- deprecated
cpu_p7                    IN NUMBER   DEFAULT NULL, -- deprecated
cpu_p8                    IN NUMBER   DEFAULT NULL, -- deprecated
active_sess_pool_p1       IN NUMBER   DEFAULT NULL,
queueing_p1               IN NUMBER   DEFAULT NULL,
parallel_degree_limit_p1  IN NUMBER   DEFAULT NULL,
switch_group              IN VARCHAR2 DEFAULT NULL,
switch_time               IN NUMBER   DEFAULT NULL,
switch_estimate           IN BOOLEAN  DEFAULT FALSE,
max_est_exec_time         IN NUMBER   DEFAULT NULL,
undo_pool                 IN NUMBER   DEFAULT NULL,
max_idle_time                IN NUMBER   DEFAULT NULL,
max_idle_blocker_time        IN NUMBER   DEFAULT NULL,
switch_time_in_call          IN NUMBER   DEFAULT NULL, -- deprecated
mgmt_p1                      IN NUMBER   DEFAULT NULL,
mgmt_p2                      IN NUMBER   DEFAULT NULL,
mgmt_p3                      IN NUMBER   DEFAULT NULL,
mgmt_p4                      IN NUMBER   DEFAULT NULL,
mgmt_p5                      IN NUMBER   DEFAULT NULL,
mgmt_p6                      IN NUMBER   DEFAULT NULL,
mgmt_p7                      IN NUMBER   DEFAULT NULL,
mgmt_p8                      IN NUMBER   DEFAULT NULL,
switch_io_megabytes          IN NUMBER   DEFAULT NULL,
switch_io_reqs               IN NUMBER   DEFAULT NULL,
switch_for_call              IN BOOLEAN  DEFAULT NULL,
max_utilization_limit        IN NUMBER   DEFAULT NULL,  -- deprecated
parallel_target_percentage   IN NUMBER   DEFAULT NULL,  -- deprecated
parallel_queue_timeout       IN NUMBER   DEFAULT NULL,
parallel_server_limit        IN NUMBER   DEFAULT NULL,
utilization_limit            IN NUMBER   DEFAULT NULL,
switch_io_logical            IN NUMBER   DEFAULT NULL,
switch_elapsed_time          IN NUMBER   DEFAULT NULL,
shares                       IN NUMBER   DEFAULT NULL,
parallel_stmt_critical       IN VARCHAR2 DEFAULT NULL);

パラメータ

表131-9 CREATE_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

リソース・プランの名前。

group_or_subplan

コンシューマ・グループの名前またはサブプランの名前。

comment

プラン・ディレクティブについてのコメント。

cpu_p1

--非推奨: かわりにmgmt_p1を使用。

cpu_p2

--非推奨: かわりにmgmt_p2を使用。

cpu_p3

--非推奨: かわりにmgmt_p3を使用。

cpu_p4

--非推奨: かわりにmgmt_p4を使用。

cpu_p5

--非推奨: かわりにmgmt_p5を使用。

cpu_p6

--非推奨: かわりにmgmt_p6を使用。

cpu_p7

--非推奨: かわりにmgmt_p7を使用。

cpu_p8

--非推奨: かわりにmgmt_p8を使用。

active_sess_pool_p1

現行でアクティブ・コールを含むことができるセッションの最大数を指定します。

queueing_p1

非アクティブ・セッション・キューにあるコール(実行待ち状態)がタイムアウトする時間(秒)を指定します。デフォルトのNULLは、無制限を意味します。

parallel_degree_limit_p1

任意の操作の並列度を制限します。デフォルトのNULLは、無制限を意味します。値が0の場合は、すべての操作がシリアルになります。

switch_group

切替え条件に達した場合に、切り替えるコンシューマ・グループを指定します。グループ名がCANCEL_SQLの場合は、切替え条件に達したときに現行のコールが取り消されます。グループ名がKILL_SESSIONの場合は、切替え条件に達したときにセッションが終了します。グループ名がLOG_ONLYの場合は、SQL監視でこのイベントを記録する以外のアクションは発生しません。デフォルトはNULLです。

switch_time

アクションを実行するまでのCPUでセッションを実行可能な時間(経過時間ではない)を指定します。デフォルトのNULLは、無制限を意味します。他のスイッチ・ディレクティブと同様、switch_for_callがTRUEの場合、論理IOの数はコールの開始時点から累積されます。そうでない場合、論理IOの数は、セッションが継続している間累積されます。

switch_estimate

TRUEの場合は、実行前に、見積り実行時間が操作のコンシューマ・グループに自動的に切り換えられるようにOracleに指示します。デフォルトはFALSEです。

max_est_exec_time

セッションに許可する実行時間(CPU秒)の最大値を指定します。操作時間がMAX_EST_EXEC_TIMEより長いとオプティマイザが判断した場合、その操作は開始されず、ORA-07455が発行されます。オプティマイザが判断しない場合は、このディレクティブの効果はありません。デフォルトのNULLは、無制限を意味します。

undo_pool

このコンシューマ・グループによってコミットされないトランザクションに対応するUNDOレコードのサイズをKB単位で制限します。

max_idle_time

セッションのアイドル時間の最大値を示します。デフォルトのNULLは、無制限を意味します。

max_idle_blocker_time

別のセッションのリソース取得をブロックしながら、セッションのアイドル状態を維持できる時間(秒)の最大値。

switch_time_in_call

非推奨。このパラメータを指定すると、switch_timeがswitch_time_in_call (秒)に設定され、switch_for_callがTRUEに設定されます。switch_timeおよびswitch_for_callを使用することをお薦めします。

mgmt_p1

レベル1のリソース割当て値(cpu_p1のかわり)。

- EMPHASIS: リソースのパーセントを第1レベルに指定します。

- RATIO: リソース使用率の重みを指定します。

mgmt_p2

レベル2のリソース割当て値(cpu_p2のかわり)。

- EMPHASIS: リソースのパーセントを第2レベルに指定します。

- RATIO: なし

mgmt_p3

レベル3のリソース割当て値(cpu_p3のかわり)。

- EMPHASIS: リソースのパーセントを第3レベルに指定します。

- RATIO: なし

mgmt_p4

レベル4のリソース割当て値(cpu_p4のかわり)。

- EMPHASIS: リソースのパーセントを第4レベルに指定します。

- RATIO: なし

mgmt_p5

レベル5のリソース割当て値(cpu_p5のかわり)。

- EMPHASIS: リソースのパーセントを第5レベルに指定します。

- RATIO: なし

mgmt_p6

レベル6のリソース割当て値(cpu_p6のかわり)。

- EMPHASIS: リソースのパーセントを第6レベルに指定します。

- RATIO: なし

mgmt_p7

レベル7のリソース割当て値(cpu_p7のかわり)。

- EMPHASIS: リソースのパーセントを第7レベルに指定します。

- RATIO: なし

mgmt_p8

レベル8のリソース割当て値(cpu_p8のかわり)。

- EMPHASIS: リソースのパーセントを第8レベルに指定します。

- RATIO: なし

switch_io_megabytes

アクションの実行前にセッションが発行できるI/Oの量(MB)を指定します。デフォルトのNULLは、無制限を意味します。他のスイッチ・ディレクティブと同様、switch_for_callがTRUEの場合、論理IOの数はコールの開始時点から累積されます。そうでない場合、論理IOの数は、セッションが継続している間累積されます。

switch_io_reqs

アクションの実行前にセッションが発行できるI/Oリクエストの数を指定します。デフォルトのNULLは、無制限を意味します。他のスイッチ・ディレクティブと同様、switch_for_callがTRUEの場合、論理IOの数はコールの開始時点から累積されます。そうでない場合、論理IOの数は、セッションが継続している間累積されます。

switch_for_call

switch_time、switch_io_megabytes、switch_io_reqs、switch_io_logicalまたはswitch_elapsed_timeの各パラメータが原因となってアクションが実行される場合に、最初のコールが終了した時点で、コンシューマ・グループが元のコンシューマ・グループにリストアされるように指定します。デフォルト値のFALSEは、最初のコールの終了時に元のコンシューマ・グループがリストアされないことを意味します。

max_utilization_limit

-- 非推奨: かわりにutilization_limitを使用。

parallel_target_percentage

-- 非推奨: かわりにparallel_sever_limitを使用。

parallel_queue_timeout

問合せを、エラー(ORA-07454)によって削除および終了するまでにコンシューマ・グループのパラレル・ステートメント・キューに残しておく時間(秒)を指定します。

parallel_sever_limit

パラレル・サーバーの制限。これを設定すると、utilization_limitによって設定されたパラレル・サーバーの制限が上書きされます。

utilization_limit

リソース制限。現在は、Exadataとパラレル・サーバーに対するCPUとI/Oが含まれます。CPUの場合は、これにより、コンシューマ・グループのCPUの使用を制限します。Exadata I/Oの場合は、これにより、コンシューマ・グループのディスク使用を制限します。パラレル・サーバーの場合は、これにより、parallel_servers_targetの割合として使用されるパラレル・サーバーを制限します。

switch_io_logical

switch_groupによって指定されたアクションをトリガーする論理IOの数。他のスイッチ・ディレクティブと同様、switch_for_callがTRUEの場合、論理IOの数はコールの開始時点から累積されます。そうでない場合、論理IOの数は、セッションが継続している間累積されます。

switch_elapsed_time

switch_groupによって指定されたアクションがトリガーされるまでの経過時間。他のスイッチ・ディレクティブと同様、switch_for_callがTRUEの場合、経過時間はコールの開始時点から累積されます。そうでない場合、経過時間は、セッションが継続している間累積されます。

shares

コンシューマ・グループのリソース割当ての共有を指定します。各コンシューマ・グループに共有を指定することで、CPU Resource Managerを有効化します。また、パラレル・ステートメント・キューイングにはsharesパラメータを使用します。CPU Resource Managerを有効化する場合のデフォルト値は1です。

parallel_stmt_critical

BYPASS_QUEUEに設定されている場合は、このコンシューマ・グループのパラレル文はキューされません。デフォルトはNULLで、これはパラレル文のキューが可能なことを示しています。

使用上の注意

- すべてのパラメータは、NULLにデフォルト設定されます。

- max_idle_timeおよびmax_idle_blocker_timeに指定された制限値については、PMONが1分に1回確認します。いずれかの制限を超過したセッションが見つかると、そのセッションは強制終了され、すべての状態がクリーン・アップされます。

- 中間層サーバーでセッション・プーリングの実装が行われている3層アプリケーションでは、ほとんどの場合にパラメータswitch_for_callが有効です。switch_for_callを使用することで、あるクライアントのリソース使用率によって、同じセッションで偶発的に実行されたそれ以降のクライアントに影響を与えることがなくなります。

CREATE_SIMPLE_PLANプロシージャ

このプロシージャでは、最大8つのコンシューマ・グループが含まれた単一レベルのリソース・プランを1ステップで作成します。リソース・プランの作成前にペンディング・エリアを手動で作成したり、CREATE_CONSUMER_GROUPプロシージャおよびCREATE_RESOURCE_PLAN_DIRECTIVESプロシージャを個別に使用する必要がありません。

構文

DBMS_RESOURCE_MANAGER.CREATE_SIMPLE_PLAN (
simple_plan      IN  VARCHAR2  DEFAULT NULL,
consumer_group1  IN  VARCHAR2  DEFAULT NULL,
group1_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
consumer_group2  IN  VARCHAR2  DEFAULT NULL,
group2_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
consumer_group3  IN  VARCHAR2  DEFAULT NULL,
group3_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
consumer_group4  IN  VARCHAR2  DEFAULT NULL,
group4_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
consumer_group5  IN  VARCHAR2  DEFAULT NULL,
group5_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
consumer_group6  IN  VARCHAR2  DEFAULT NULL,
group6_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
consumer_group7  IN  VARCHAR2  DEFAULT NULL,
group7_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
consumer_group8  IN  VARCHAR2  DEFAULT NULL,
group8_cpu       IN  NUMBER    DEFAULT NULL,   -- deprecated
group1_percent   IN  NUMBER    DEFAULT NULL,
group2_percent   IN  NUMBER    DEFAULT NULL,
group3_percent   IN  NUMBER    DEFAULT NULL,
group4_percent   IN  NUMBER    DEFAULT NULL,
group5_percent   IN  NUMBER    DEFAULT NULL,
group6_percent   IN  NUMBER    DEFAULT NULL,
group7_percent   IN  NUMBER    DEFAULT NULL,
group8_percent   IN  NUMBER    DEFAULT NULL);

パラメータ

表131-10 CREATE_SIMPLE_PLANプロシージャのパラメータ

パラメータ

説明

simple_plan

リソース・プランの名前。

consumer_group1

コンシューマ・グループの名前。

group1_cpu

グループのパーセント(非推奨)。

consumer_group2

コンシューマ・グループの名前。

group2_cpu

グループのパーセント(非推奨)。

consumer_group3

コンシューマ・グループの名前。

group3_cpu

グループのパーセント(非推奨)。

consumer_group4

コンシューマ・グループの名前。

group4_cpu

グループのパーセント(非推奨)。

consumer_group5

コンシューマ・グループの名前。

group5_cpu

グループのパーセント(非推奨)。

consumer_group6

コンシューマ・グループの名前。

group6_cpu

グループのパーセント(非推奨)。

consumer_group7

コンシューマ・グループの名前。

group7_cpu

グループのパーセント(非推奨)。

consumer_group8

OTHER_GROUPS - コンシューマ・グループにマップされていないすべてのセッション。

group8_cpu

グループのパーセント(非推奨)。

group1_percent

このコンシューマ・グループに割り当てられたリソースのパーセント。

group2_percent

このコンシューマ・グループに割り当てられたリソースのパーセント。

group3_percent

このコンシューマ・グループに割り当てられたリソースのパーセント。

group4_percent

このコンシューマ・グループに割り当てられたリソースのパーセント。

group5_percent

このコンシューマ・グループに割り当てられたリソースのパーセント。

group6_percent

このコンシューマ・グループに割り当てられたリソースのパーセント。

group7_percent

このコンシューマ・グループに割り当てられたリソースのパーセント。

group8_percent

他のグループに割り当てられるリソースの割合。

DELETE_CATEGORYプロシージャ

このプロシージャは、既存のリソース・コンシューマ・グループ・カテゴリを削除します。

構文

DBMS_RESOURCE_MANAGER.DELETE_CATEGORY (
category        IN    VARCHAR2,
new_comment     IN    VARCHAR2  DEFAULT NULL);

パラメータ

表131-11 DELETE_CATEGORYプロシージャのパラメータ

パラメータ

説明

category

コンシューマ・グループ・カテゴリの名前。

DELETE_CDB_PLANプロシージャ

このプロシージャは、統合リソース・プランを削除します。

構文

DBMS_RESOURCE_MANAGER.DELETE_CDB_PLAN (
plan                    IN    VARCHAR2(32)   DEFAULT NULL);

パラメータ

表131-12 DELETE_CDB_PLANプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

使用上の注意

このプロシージャは、ルート・コンテナからのみ実行できます。

DELETE_CDB_PLAN_DIRECTIVEプロシージャ

このプロシージャは、統合リソース・プランのプラン・ディレクティブを削除します。プラン・ディレクティブを削除すると、プラガブル・データベースにはデフォルトのリソース割当てが使用されます。

構文

DBMS_RESOURCE_MANAGER.DELETE_CDB_PLAN_DIRECTIVE (
plan                    IN    VARCHAR2(32)   DEFAULT NULL,
puggable_database       IN    VARCHAR2(32)   DEFAULT NULL);

パラメータ

表131-13 DELETE_CDB_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

pluggable_database

プラン・ディレクティブを削除するプラガブル・データベースの名前。

使用上の注意

このプロシージャは、ルート・コンテナからのみ実行できます。

DELETE_CONSUMER_GROUPプロシージャ

このプロシージャは、リソース・コンシューマ・グループを定義するエントリを削除します。

構文

DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
consumer_group IN VARCHAR2);

パラメータ

表131-14 DELETE_CONSUMER_GROUPプロシージャのパラメータ

パラメータ

説明

consumer_group

削除されるコンシューマ・グループの名前。

DELETE_PLANプロシージャ

このプロシージャは、指定の計画およびそれが参照するすべてのプラン・ディレクティブを削除します。

構文

DBMS_RESOURCE_MANAGER.DELETE_PLAN (
plan IN VARCHAR2);

パラメータ

表131-15 DELETE_PLANプロシージャのパラメータ

パラメータ

説明

plan

削除するリソース・プランの名前。

DELETE_PLAN_CASCADEプロシージャ

このプロシージャは、指定の計画およびそのすべての子(プラン・ディレクティブ、サブプラン、コンシューマ・グループ)を削除します。必須オブジェクトおよび必須ディレクティブは削除されません。

構文

DBMS_RESOURCE_MANAGER.DELETE_PLAN_CASCADE (
plan IN VARCHAR2);

パラメータ

表131-16 DELETE_PLAN_CASCADEプロシージャのパラメータ

パラメータ

説明

plan

計画の名前。

使用上の注意

DELETE_PLAN_CASCADEプロシージャでエラーが発生した場合は、操作がロールバックされるため、何も削除されません。

DELETE_PLAN_DIRECTIVEプロシージャ

このプロシージャは、リソース・プラン・ディレクティブを削除します。

構文

DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE (
plan              IN VARCHAR2,
group_or_subplan  IN VARCHAR2);

パラメータ

表131-17 DELETE_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

リソース・プランの名前。

group_or_subplan

グループまたはサブプランの名前。

END_SQL_BLOCKプロシージャ

このプロシージャは、パラレル・ステートメント・キューイングで使用され、リソース・マネージャによってグループとして扱われる必要のあるSQL文のブロックの終了を示します。

構文

DBMS_RESOURCE_MANAGER.END_SQL_BLOCK;

使用上の注意

詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』のパラレル・ステートメント・キューイングに関する項およびリソース・マネージャによるパラレル・ステートメント・キューイングの管理に関する項を参照してください。

SET_CONSUMER_GROUP_MAPPINGプロシージャ

このプロシージャは、セッションのログイン属性およびランタイム属性に基づいて、セッションをコンシューマ・グループにマップするエントリを追加、削除または変更します。

構文

DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute        IN VARCHAR2,
value            IN VARCHAR2,
consumer_group   IN VARCHAR2 DEFAULT NULL);

パラメータ

表131-18 SET_CONSUMER_GROUP_MAPPINGプロシージャのパラメータ

パラメータ

説明

attribute

追加または変更するマッピング属性。リストされている定数の1つを指定します。

value

一致させる属性値。これには、絶対マッピングと正規表現の両方が含まれます。

consumer_group

マップされたコンシューマ・グループの名前。マッピングを削除する場合はNULLを指定します。

使用上の注意

- 指定された属性および値に対するマッピングが存在しない場合は、指定されたコンシューマ・グループへのマッピングが作成されます。指定された属性および値に対するマッピングがすでに存在する場合、マッピング先のコンシューマ・グループは、指定された属性および値を持つコンシューマ・グループに更新されます。consumer_group引数がNULLの場合は、指定された属性および値からのマッピングがすべて削除されます。

- このサブプログラムでは、valueパラメータ用の単純な正規表現がサポートされています。SQLの'LIKE'演算子と同じセマンティクスを実装します。具体的には、複数文字のワイルドカードとして'%'、単一文字のワイルドカードとして'_'が使用されます。'\'文字を使用して、ワイルドカードをエスケープできます。属性が次のいずれかの場合にのみ、ワイルドカードを使用できることに注意してください。

- CLIENT_OS_USER

- CLIENT_PROGRAM

- CLIENT_MACHINE

- MODULE_NAME

- MODULE_NAME_ACTION

- SERVICE_MODULE

- SERVICE_MODULE_ACTION

- DBMS_RESOURCE_MANAGER.CLIENT_PROGRAMのコンシューマ・グループ・マッピング比較を実行する際に、指定されたCLIENT_PROGRAM値との比較前に@記号とそれ以降の文字がV$SESSION.PROGRAMから除去されます。

SET_CONSUMER_GROUP_MAPPING_PRIプロシージャ

1つのセッションが持つ複数の属性を使用して、セッションをコンシューマ・グループにマップできます。このプロシージャでは、属性のマッピングにおける優先順位を指定します。

構文

DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING_PRI(
explicit               IN NUMBER,
oracle_user            IN NUMBER,
service_name           IN NUMBER,
client_os_user         IN NUMBER,
client_program         IN NUMBER,
client_machine         IN NUMBER,
module_name            IN NUMBER,
module_name_action     IN NUMBER,
service_module         IN NUMBER,
service_module_action  IN NUMBER,
client_id              IN NUMBER DEFAULT 11);

パラメータ

表131-19 SET_CONSUMER_GROUP_MAPPING_PRIプロシージャのパラメータ

パラメータ

説明

explicit

明示的マッピングの優先順位。

oracle_user

Oracleユーザー名のマッピングの優先順位。

service_name

クライアント・サービス名のマッピングの優先順位。

client_os_user

クライアント・オペレーティング・システムのユーザー名のマッピングの優先順位。

client_program

クライアント・プログラムのマッピングの優先順位。

client_machine

クライアント・マシンのマッピングの優先順位。

module_name

アプリケーション・モジュール名のマッピングの優先順位。

module_name_action

アプリケーション・モジュール名およびアプリケーション・アクションのマッピングの優先順位。

service_module

サービス名およびアプリケーション・モジュール名のマッピングの優先順位。

module_name_action

サービス名、アプリケーション・モジュール名およびアプリケーション・アクションのマッピングの優先順位。

client_id

クライアント識別子。

使用上の注意

- このプロシージャには、引数として擬似属性explicitを含める必要があります。これは、1に設定する必要があります。これは、明示的なコンシューマ・グループの切替えに最も高い優先度が指定されていることを示します。次のパッケージ・プロシージャを使用して、コンシューマ・グループを明示的に切り替えます。

- DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUP

- DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS

- DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER

- 優先順位を指定する値は、それぞれ1から11の一意の整数にしてください。優先順位1から11を使用する場合、優先順位が最も高いのは1、最も低いのは10です。

SET_INITIAL_CONSUMER_GROUPプロシージャ

注意:
11g リリース1では、このプロシージャの使用は推奨されていません。このパッケージでこのプロシージャを使用することはできますが、初期コンシューマ・グループは、セッションとコンシューマ間のグループのマッピング・ルールによって設定されます。

ユーザーの初期コンシューマ・グループは、そのユーザーが作成したセッションが最初に所属しているコンシューマ・グループです。このプロシージャは、ユーザーに対して、初期のリソース・コンシューマ・グループを設定します。

構文

DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP (
user             IN   VARCHAR2,
consumer_group   IN   VARCHAR2);

パラメータ

表131-20 SET_INITIAL_CONSUMER_GROUPプロシージャのパラメータ

パラメータ

説明

user

ユーザーの名前。

consumer_group

ユーザーの初期コンシューマ・グループ。

使用上の注意

- このプロシージャを実行するためには、ADMINISTER_RESOURCE_MANAGERまたはALTER USERシステム権限が必要です。ユーザーの初期コンシューマ・グループが設定される前に、ユーザーまたはPUBLICに対して、コンシューマ・グループへの切替え権限が直接付与されている必要があります。初期コンシューマ・グループに対する切替え権限は、そのユーザーに付与されているロールから与えることはできません。

注意:
この方法は、ALTER USER DEFAULT ROLEに対する方法に類似しています。

- ユーザーの初期コンシューマ・グループが設定されていない場合は、自動的にDEFAULT_CONSUMER_GROUPがコンシューマ・グループになります。

- DEFAULT_CONSUMER_GROUPはPUBLICに付与された切替え権限を持つため、すべてのユーザーはこのコンシューマ・グループに対する切替え権限を自動的に付与されます。コンシューマ・グループを削除するとき、削除するグループを初期コンシューマ・グループとしていたすべてのユーザーは、DEFAULT_CONSUMER_GROUPを初期コンシューマ・グループとします。削除するコンシューマ・グループに所属している現行のアクティブなセッションは、すべてDEFAULT_CONSUMER_GROUPに切り替えられます。

SUBMIT_PENDING_AREAプロシージャ

このプロシージャは、リソース・マネージャに対する保留中の変更を発行します。変更を検証してコミットした後(この変更が有効な場合)、ペンディング・エリアを消去します。

注意:
SUBMIT_PENDING_AREAへのコールは、VALIDATE_PENDING_AREAが成功していても失敗する場合があります。これは、VALIDATE_PENDING_AREAをコールした後に、削除中の計画がインスタンスによってSUBMIT_PENDING_AREAをコールするまでにロードされてしまうことが原因です。

構文

DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;

SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャ

このプロシージャは、指定のセッションのリソース・コンシューマ・グループを変更します。また、上位ユーザー・セッションに関連するすべての(パラレル実行)サーバーのコンシューマ・グループも変更します。

構文

DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS (
session_id      IN NUMBER,
session_serial  IN NUMBER,
consumer_group  IN VARCHAR2);

パラメータ

表131-21 SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャのパラメータ

パラメータ

説明

session_id

ビューV$SESSIONでのSID列。

session_serial

ビューV$SESSIONでのSERIAL#列。

consumer_group

切替え先となるコンシューマ・グループの名前。

SWITCH_CONSUMER_GROUP_FOR_USERプロシージャ

このプロシージャは、指定のユーザーIDで、すべてのセッションのリソース・コンシューマ・グループを変更します。また、上位ユーザー・セッションに関連するすべてのパラレル実行サーバーのコンシューマ・グループも変更します。

構文

DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER (
user            IN VARCHAR2,
consumer_group  IN VARCHAR2);

パラメータ

表131-22 SWITCH_CONSUMER_GROUP_FOR_USERプロシージャのパラメータ

パラメータ

説明

user

ユーザーの名前。

consumer_group

切替え先となるコンシューマ・グループの名前。

使用上の注意

- SWITCH_CONSUMER_GROUP_FOR_SESSプロシージャおよびSWITCH_CONSUMER_GROUP_FOR_USERプロシージャは、特定のセッションまたはユーザーのCPUリソース割当てを増減します。これにより、UNIXのniceコマンドと類似した機能性が提供されます。

- これらのプロシージャは、新規に指定されたコンシューマ・グループにセッションを即時に移動します。

SWITCH_PLANプロシージャ

このプロシージャは、現行のリソース・マネージャ・プランを設定します。

構文

DBMS_RESOURCE_MANAGER.SWITCH_PLAN(
plan_name                     IN   VARCHAR2,
sid                           IN   VARCHAR2 DEFAULT '*',
allow_scheduler_plan_switches IN   BOOLEAN DEFAULT TRUE);

パラメータ

表131-23 SWITCH_PLANプロシージャのパラメータ

パラメータ

説明

plan_name

切替え先となる計画の名前。plan_nameに空の文字列('')を渡すと、リソース・マネージャは無効になります。

sid

sidパラメータを使用できるのは、Oracle Real Application Clusters環境のみです。このパラメータにより、計画を特定のインスタンスに対して変更できます。計画を変更するインスタンスのsidを指定します。また、すべてのインスタンスに対して計画を変更する場合は、'*'を指定してください。

allow_scheduler_plan_switches

FALSEに設定すると、ウィンドウ境界でのジョブ・スケジューラによる計画の自動切替えが無効になります。計画の自動切替えを再度有効にするには、管理者がallow_scheduler_plan_switchesをTRUEに設定して、switch_planを再度コールする必要があります。デフォルトでは、ジョブ・スケジューラによる計画の自動切替えは有効になっています。

UPDATE_CATEGORYプロシージャ

このプロシージャは、既存のリソース・コンシューマ・グループ・カテゴリを更新します。

構文

DBMS_RESOURCE_MANAGER.UPDATE_CATEGORY (
category        IN    VARCHAR2,
new_comment     IN    VARCHAR2  DEFAULT NULL);

パラメータ

表131-24 UPDATE_CATEGORYプロシージャのパラメータ

パラメータ

説明

category

コンシューマ・グループ・カテゴリの名前。

new_comment

ユーザー・コメント。

UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャ

このプロシージャは、ルート・コンテナ内の自動化メンテナンス・タスクに関してプラン・ディレクティブを更新します。デフォルトでは、すべてのメンテナンス・タスクがPDB自体で直接に発生します。

構文

DBMS_RESOURCE_MANAGER.UPDATE_CDB_AUTOTASK_DIRECTIVE (
plan                        IN    VARCHAR2,
new_comment                 IN    VARCHAR2       DEFAULT NULL,
new_shares                  IN    NUMBER         DEFAULT NULL,
new_utilization_limit       IN    NUMBER         DEFAULT NULL,
new_parallel_server_limit   IN    NUMBER         DEFAULT NULL);

パラメータ

表131-25 UPDATE_CDB_AUTOTASK_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

new_comment

新しいユーザー・コメント。

new_shares

ルート・コンテナの自動化メンテナンス・タスクに新しいリソース割当ての共有を指定します。

new_utilization_limit

ルート・コンテナ内の自動化メンテナンス・タスクで使用可能なCPUの最大割合を新規に指定します。

new_parallel_server_limit

ルート・コンテナ内の自動化メンテナンス・タスクで使用可能なparallel_servers_targetパラレル・サーバーの最大割合を新規に指定します。

使用上の注意

- 自動化メンテナンス・タスクのデフォルト値は、次のとおりです。

- shares: -1

- utilization_limit: 90

- parallel_server_limit: 100

- shares = -1は、自動化メンテナンス・タスクにシステムの20%が割り当てられることを意味します。ユーザーがsharesを指定した場合、他のCDBプラン・ディレクティブ・ファンクションのプロパティと同じように動作します。ユーザーがsharesを変更しない場合、または後で-1に戻した場合、自動化タスクにシステムの20%が割り当てられます。

- このプロシージャは、ルート・コンテナからのみ実行できます。

UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャ

このプロシージャは、統合リソース・プランのプラン・ディレクティブを更新します。

構文

DBMS_RESOURCE_MANAGER.UPDATE_CDB_DEFAULT_DIRECTIVE (
plan                        IN    VARCHAR2    DEFAULT NULL,
new_comment                 IN    VARCHAR2    DEFAULT NULL,
new_shares                  IN    NUMBER      DEFAULT NULL,
new_utilization_limit       IN    NUMBER      DEFAULT NULL,
new_parallel_server_limit   IN    NUMBER      DEFAULT NULL);

パラメータ

表131-26 UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

new_commnent

新しいユーザー・コメント。

new_shares

プラガブル・データベースのリソース割当ての共有を指定します。各PDBに共有を指定することで、CPU Resource Managerを有効化します。また、パラレル・ステートメント・キューイングにはnew_sharesパラメータを使用します。

new_utilization_limit

プラガブル・データベースで使用できるCPUの最大割合を指定します。

new_parallel_server_limit

プラガブル・データベースで使用できるparallel_servers_targetパラレル・サーバーの最大割合を指定します。

使用上の注意

- デフォルト値は、次のとおりです。

- new_shares: 1

- utilization_limit: 100

- parallel_server_limit: 100

- デフォルト値がNULLであることに注意してください。これは、UPDATE_CDB_PLAN_DIRECTIVEプロシージャの場合と同じ意味になります。ユーザーが値を指定しなかった場合、その値は変更されません。

- このプロシージャは、ルート・コンテナからのみ実行できます。

UPDATE_CDB_PLANプロシージャ

このプロシージャは、統合リソース・プランを更新します。

構文

DBMS_RESOURCE_MANAGER.UPDATE_CDB_PLAN (
plan                        IN    VARCHAR2(32),
new_comment                 IN    VARCHAR2(2000)   DEFAULT NULL);

パラメータ

表131-27 UPDATE_CDB_PLANプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

new_comment

ユーザー・コメント。

使用上の注意

このプロシージャは、ルート・コンテナからのみ実行できます。

UPDATE_CDB_PLAN_DIRECTIVEプロシージャ

このプロシージャは、統合リソース・プランのプラン・ディレクティブを更新します。

構文

DBMS_RESOURCE_MANAGER.UPDATE_CDB_PLAN_DIRECTIVE (
plan                        IN    VARCHAR2 (30),
puggable_database           IN    VARCHAR2 (30)
new_comment                 IN    VARCHAR2 (200)       DEFAULT NULL,
new_shares                  IN    NUMBER         DEFAULT NULL,
new_utilization_limit       IN    NUMBER         DEFAULT NULL,
new_parallel_server_limit   IN    NUMBER         DEFAULT NULL);

パラメータ

表131-28 UPDATE_CDB_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

統合計画の名前。

pluggable_database

プラガブル・データベースの名前。

new_comment

新しいユーザー・コメント。

new_shares

プラガブル・データベースのリソース割当ての共有を指定します。各PDBに共有を指定することで、CPU Resource Managerを有効化します。また、パラレル・ステートメント・キューイングにはsharesパラメータを使用します。共有が指定されていない場合は、デフォルト・ディレクティブから、UPDATE_CDB_DEFAULT_DIRECTIVEプロシージャで指定されたデフォルトが取得されます。

new_utilization_limit

プラガブル・データベースで使用できるCPUの最大割合を新規に指定します。

new_parallel_server_limit

プラガブル・データベースで使用できるparallel_servers_targetパラレル・サーバーの新しい最大割合を指定します。

使用上の注意

- new_*パラメータのデフォルト値はNULLです。これは、既存の値が変更されないことを意味します。ユーザーがこのファンクションをコールするときにいずれかの引数を指定しなかった場合、値は変更されません。

- このプロシージャは、ルート・コンテナからのみ実行できます。

UPDATE_CONSUMER_GROUPプロシージャ

このプロシージャは、リソース・コンシューマ・グループを定義するエントリを更新します。

構文

DBMS_RESOURCE_MANAGER.UPDATE_CONSUMER_GROUP (
consumer_group  IN VARCHAR2,
new_comment     IN VARCHAR2 DEFAULT NULL,
new_cpu_mth     IN VARCHAR2 DEFAULT NULL,
new_mgmt_mth    IN VARCHAR2 DEFAULT NULL,
new_category    IN VARCHAR2 DEFAULT NULL);

パラメータ

表131-29 UPDATE_CONSUMER_GROUPプロシージャのパラメータ

パラメータ

説明

consumer_group

コンシューマ・グループの名前。

new_comment

新しいユーザー・コメント。

new_cpu_mth

CPUリソース割当てに対する新規の方法名(非推奨)。

new_mgmt_mth

CPUリソース割当てに対する新規の方法名。

new_category

新規コンシューマ・グループ・カテゴリ。

使用上の注意

UPDATE_CONSUMER_GROUPに対するパラメータを指定しない場合、これらのパラメータは、データ・ディクショナリ内で変更されないまま残ります。

UPDATE_PLANプロシージャ

このプロシージャは、リソース・プランを定義するエントリを更新します。

構文

DBMS_RESOURCE_MANAGER.UPDATE_PLAN (
plan                               IN VARCHAR2,
new_comment                        IN VARCHAR2 DEFAULT NULL,
new_cpu_mth                        IN VARCHAR2 DEFAULT NULL, -- deprecated
new_active_sess_pool_mth           IN VARCHAR2 DEFAULT NULL,
new_parallel_degree_limit_mth      IN VARCHAR2 DEFAULT NULL,
new_queueing_mth                   IN VARCHAR2 DEFAULT NULL,
new_mgmt_mth                       IN VARCHAR2 DEFAULT NULL,
new_sub_plan                       IN BOOLEAN DEFAULT FALSE);

パラメータ

表131-30 UPDATE_PLANプロシージャのパラメータ

パラメータ

説明

plan

リソース・プランの名前。

new_comment

新しいユーザー・コメント。

new_cpu_mth

CPUリソース割当てに対する新規の割当て方法名(非推奨)。

new_active_sess_pool_mth

アクティブな最大セッションに対する新規の方法名。

new_parallel_degree_limit_mth

並列度に対する新規の方法名。

new_queueing_mth

アクティブなセッションのプール機能で使用するキューイング・ポリシーのタイプを指定します。

new_mgmt_mth

コンシューマ・グループやサブ・プランがそれぞれ使用するリソース量(CPUやI/Oなど)を指定するためのリソース割当て方法。

- EMPHASIS: コンシューマ・グループ間でのI/Oリソースの分散方法を指定する際にパーセントを使用する、マルチレベル・プランに向いています。

- RATIO: I/Oリソースの分散方法を指定する際に比率を使用する、単一レベルの計画に向いています。

new_sub_plan

計画がサブプランとしての使用のみを目的としているかどうかに関する新規設定。

使用上の注意

- UPDATE_PLANプロシージャに対するパラメータを指定しない場合、これらのパラメータは、データ・ディクショナリ内に変更されないまま残ります。

- デフォルトのリソース割当て方法を使用する場合は、計画の作成または更新時に方法を指定する必要はありません。

UPDATE_PLAN_DIRECTIVEプロシージャ

このプロシージャは、リソース・プラン・ディレクティブを更新します。

注意:
パラメータnew_max_utilization_limitとnew_parallel_target_percentageは、Oracle Database 11gリリース1(12.1.0.1)で非推奨になっており、new_utilization_limitとnew_parallel_server_limitに置き換えられます。

構文

DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE (
plan                             IN VARCHAR2,
group_or_subplan                 IN VARCHAR2,
new_comment                      IN VARCHAR2 DEFAULT NULL,
new_cpu_p1                       IN NUMBER   DEFAULT NULL, -- deprecated
new_cpu_p2                       IN NUMBER   DEFAULT NULL, -- deprecated
new_cpu_p3                       IN NUMBER   DEFAULT NULL, -- deprecated
new_cpu_p4                       IN NUMBER   DEFAULT NULL, -- deprecated
new_cpu_p5                       IN NUMBER   DEFAULT NULL, -- deprecated
new_cpu_p6                       IN NUMBER   DEFAULT NULL, -- deprecated
new_cpu_p7                       IN NUMBER   DEFAULT NULL, -- deprecated
new_cpu_p8                       IN NUMBER   DEFAULT NULL, -- deprecated
new_active_sess_pool_p1          IN NUMBER   DEFAULT NULL,
new_queueing_p1                  IN NUMBER   DEFAULT NULL,
new_parallel_degree_limit_p1     IN NUMBER   DEFAULT NULL,
new_switch_group                 IN VARCHAR2 DEFAULT NULL,
new_switch_time                  IN NUMBER   DEFAULT NULL,
new_switch_estimate              IN BOOLEAN  DEFAULT FALSE,
new_max_est_exec_time            IN NUMBER   DEFAULT NULL,
new_undo_pool                    IN NUMBER   DEFAULT NULL,
new_max_idle_time                IN NUMBER   DEFAULT NULL,
new_max_idle_blocker_time        IN NUMBER   DEFAULT NULL,
switch_time_in_call              IN NUMBER   DEFAULT NULL, -- deprecated
new_mgmt_p1                      IN NUMBER   DEFAULT NULL,
new_mgmt_p2                      IN NUMBER   DEFAULT NULL,
new_mgmt_p3                      IN NUMBER   DEFAULT NULL,
new_mgmt_p4                      IN NUMBER   DEFAULT NULL,
new_mgmt_p5                      IN NUMBER   DEFAULT NULL,
new_mgmt_p6                      IN NUMBER   DEFAULT NULL,
new_mgmt_p7                      IN NUMBER   DEFAULT NULL,
new_mgmt_p8                      IN NUMBER   DEFAULT NULL,
new_switch_io_megabytes          IN NUMBER   DEFAULT NULL,
new_switch_io_reqs               IN NUMBER   DEFAULT NULL,
new_switch_for_call              IN BOOLEAN  DEFAULT NULL,
new_max_utilization_limit        IN NUMBER   DEFAULT NULL,
new_parallel_target_percentage   IN NUMBER   DEFAULT NULL,
new parallel_queue_timeout       IN NUMBER   DEFAULT NULL,
new_parallel_server_limit        IN NUMBER   DEFAULT NULL,
new_utilization_limit            IN NUMBER   DEFAULT NULL,
new_switch_io_logical            IN NUMBER   DEFAULT NULL,
new_switch_elapsed_time          IN NUMBER   DEFAULT NULL,
new_shares                       IN NUMBER   DEFAULT NULL,
new_parallel_stmt_critical       IN VARCHAR2 DEFAULT NULL);

パラメータ

表131-31 UPDATE_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

plan

リソース・プランの名前。

group_or_subplan

コンシューマ・グループの名前またはサブプランの名前。

new_comment

プラン・ディレクティブについてのコメント。

new_cpu_p1

非推奨 - かわりにnew_mgmt_p1を使用。

new_cpu_p2

非推奨 - かわりにnew_mgmt_p2を使用。

new_cpu_p3

非推奨 - かわりにnew_mgmt_p3を使用。

new_cpu_p4

非推奨 - かわりにnew_mgmt_p4を使用。

new_cpu_p5

非推奨 - かわりにnew_mgmt_p5を使用。

new_cpu_p6

非推奨 - かわりにnew_mgmt_p6を使用。

new_cpu_p7

非推奨 - かわりにnew_mgmt_p7を使用。

new_cpu_p8

非推奨 - かわりにnew_mgmt_p8を使用。

new_active_sess_pool_p1

コンシューマ・グループに対するアクティブな同時セッションの最大数を指定します。デフォルトのNULLは、無制限を意味します。

new_queueing_p1

非アクティブ・セッション・キューにあるジョブ(実行待ち状態のジョブ)がタイムアウトする時間(秒)を指定します。デフォルトのNULLは、無制限を意味します。

new_parallel_degree_limit_p1

任意の操作の並列度を制限します。デフォルトのNULLは、無制限を意味します。

new_switch_group

他の切替え基準に達した場合に、現行セッションの切替え先となるコンシューマ・グループを指定します。デフォルトはNULLです。グループ名が'CANCEL_SQL'の場合は、他の切替え基準に達したときに現行のコールが取り消されます。グループ名が'KILL_SESSION'の場合は、他の切替え基準に達したときにセッションが終了します。

new_switch_time

アクションの実行前にセッションを実行できる時間(CPU秒)を指定します。デフォルトのNULLは、無制限を意味します。

new_switch_estimate

TRUEの場合は、実行前に、見積り実行時間が操作のコンシューマ・グループに自動的に切り換えられるようにOracleに指示します。デフォルトはFALSEです。

new_max_est_exec_time

セッションに許可する実行時間(CPU秒)の最大値を指定します。操作時間がMAX_EST_EXEC_TIMEより長いとオプティマイザが判断した場合、その操作は開始されず、ORA-07455が発行されます。オプティマイザが判断しない場合は、このディレクティブの効果はありません。デフォルトのNULLは、無制限を意味します。

new_undo_pool

このコンシューマ・グループによってコミットされないトランザクションに対応するUNDOレコードのサイズをKB単位で制限します。

new_max_idle_time

セッションのアイドル時間の最大値を示します。デフォルトのNULLは、無制限を意味します。

new_max_idle_blocker_time

別のセッションのリソース取得をブロックしながら、セッションのアイドル状態を維持できる時間(秒)の最大値。

new_switch_time_in_call

非推奨。このパラメータを指定すると、new_switch_timeはnew_switch_time_in_callに設定され、new_switch_for_callはTRUEに設定されます。

new_mgmt_p1

レベル1のリソース割当て値(new_cpu_p1のかわり)。

- EMPHASIS: リソースのパーセントを第1レベルに指定します。

- RATIO: リソース使用率の重みを指定します。

new_mgmt_p2

レベル2のリソース割当て値(new_cpu_p2のかわり)。

- EMPHASIS: リソースのパーセントを第2レベルに指定します。

- RATIO: なし

new_mgmt_p3

レベル3のリソース割当て値(new_cpu_p3のかわり)。

- EMPHASIS: リソースのパーセントを第3レベルに指定します。

- RATIO: なし

new_mgmt_p4

レベル4のリソース割当て値(new_cpu_p4のかわり)。

- EMPHASIS: リソースのパーセントを第4レベルに指定します。

- RATIO: なし

new_mgmt_p5

レベル5のリソース割当て値(new_cpu_p5のかわり)。

- EMPHASIS: リソースのパーセントを第5レベルに指定します。

- RATIO: なし

new_mgmt_p6

レベル6のリソース割当て値(new_cpu_p6のかわり)。

- EMPHASIS: リソースのパーセントを第6レベルに指定します。

- RATIO: なし

new_mgmt_p7

レベル7のリソース割当て値(new_cpu_p7のかわり)。

- EMPHASIS: リソースのパーセントを第7レベルに指定します。

- RATIO: なし

new_mgmt_p8

レベル8のリソース割当て値(new_cpu_p8のかわり)。

- EMPHASIS: リソースのパーセントを第8レベルに指定します。

- RATIO: なし

new_switch_io_megabytes

アクションの実行前にセッションが発行できるI/Oの量(MB)を指定します。デフォルトのNULLは、無制限を意味します。

new_switch_io_reqs

アクションの実行前にセッションが発行できるI/Oリクエストの数を指定します。デフォルトのNULLは、無制限を意味します。

new_switch_for_call

new_switch_time、new_switch_io_megabytesまたはnew_switch_io_reqsパラメータのためにアクションが実行される場合、最初のコールの終了時に、コンシューマ・グループが元のコンシューマ・グループにリストアされるように指定します。デフォルト値のFALSEは、最初のコールの終了時に元のコンシューマ・グループがリストアされないことを意味します。

new_max_utilization_limit

非推奨 - かわりにnew_utilization_limitを使用。

new_parallel_target_percentage

非推奨 - かわりにnew_parallel_server_limitを使用。

new_parallel_queue_timeout

問合せを、エラー(ORA-07454)によって削除および終了するまでにコンシューマ・グループのパラレル・ステートメント・キューに残しておく時間(秒)を指定します。

new_parallel_server_limit

パラレル・サーバーの制限。これを設定すると、utilization_limitによって設定されたパラレル・サーバーの制限が上書きされます。

new_utilization_limit

リソース制限。CPUの場合は、これにより、コンシューマ・グループのCPUの使用を制限します。パラレル・サーバーの場合は、これにより、parallel_servers_targetの割合として使用されるパラレル・サーバーを制限します。

new_switch_elapsed_time

switch_groupによって指定されたアクションがトリガーされるまでの経過時間。他のスイッチ・ディレクティブと同様、new_switch_for_callがTRUEの場合、経過時間はコールの開始時点から累積されます。そうでない場合、経過時間は、セッションが継続している間累積されます。

new_shares

プラガブル・データベースのリソース割当ての共有を指定します。各PDBに共有を指定することで、CPU Resource Managerを有効化します。また、パラレル・ステートメント・キューイングにはsharesパラメータを使用します。CPU Resource Managerを有効化する場合のデフォルト値は1です。

new_parallel_stmt_critical

BYPASS_QUEUEに設定されている場合は、このコンシューマ・グループのパラレル文はキューされません。デフォルトはNULLで、これはパラレル文のキューが可能なことを示しています。

使用上の注意

- UPDATE_PLAN_DIRECTIVEに対してパラメータを指定しない場合、これらのパラメータは、データ・ディクショナリ内で変更されないまま残ります。

- new_max_idle_timeおよびnew_max_idle_blocker_timeに指定された制限値については、PMONが1分に1回確認します。いずれかの制限を超過したセッションが見つかると、そのセッションは強制終了され、すべての状態がクリーン・アップされます。

- 中間層サーバーによるセッション・プーリングの実装が行われている場合の3層アプリケーションでは、ほとんどの場合、パラメータnew_switch_time_in_callは有用です。new_switch_time_in_callをオンに設定した場合のクライアントのリソース使用率は、今後別のクライアントのコンシューマ・グループが偶然同じセッションで実行されても影響しません。

- リソース・プラン・ディレクティブの任意の数値パラメータを消去する(0またはNULLにする)には、UPDATE_PLAN_DIRECTIVEプロシージャを使用して、値を-1に設定します。

VALIDATE_PENDING_AREAプロシージャ

このプロシージャは、リソース・マネージャに対する保留中の変更内容を検証します。

構文

DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;

132 DBMS_RESOURCE_MANAGER_PRIVS

DBMS_RESOURCE_MANAGER_PRIVSパッケージは、リソース・マネージャに関連付けられている権限をメンテナンスします。

関連項目:
データベース・リソース・マネージャの使用方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_RESOURCE_MANAGER_PRIVSサブプログラムの要約

DBMS_RESOURCE_MANAGER_PRIVSサブプログラムの要約

表132-1 DBMS_RESOURCE_MANAGER_PRIVSパッケージのサブプログラム

サブプログラム

説明

GRANT_SWITCH_CONSUMER_GROUPプロシージャ

リソース・コンシューマ・グループに切替え権限を付与します。

GRANT_SYSTEM_PRIVILEGEプロシージャ

システム権限を付与します。

REVOKE_SWITCH_CONSUMER_GROUPプロシージャ

リソース・コンシューマ・グループから切替え権限を取り消します。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

システム権限を取り消します。

GRANT_SWITCH_CONSUMER_GROUPプロシージャ

このプロシージャは、リソース・コンシューマ・グループに切替え権限を付与します。

構文

DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP (
grantee_name   IN VARCHAR2,
consumer_group IN VARCHAR2,
grant_option   IN BOOLEAN);

パラメータ

表132-2 GRANT_SWITCH_CONSUMER_GROUPプロシージャのパラメータ

パラメータ

説明

grantee_name

権限を付与されるユーザーまたはロールの名前。

consumer_group

コンシューマ・グループの名前。

grant_option

権限を付与されたユーザーが他のユーザーにアクセス権を付与できる場合はTRUE、そうでない場合はFALSE。

使用上の注意

ユーザーに対して特定のコンシューマ・グループに切替え許可を付与すると、そのユーザーは、即時に現行のコンシューマ・グループを新規のコンシューマ・グループに切り替えることができます。

ロールに対して特定のコンシューマ・グループに切替え許可を付与すると、そのロールを付与され、そのロールを使用可能にしたユーザーは、即時に現行のコンシューマ・グループを新規のコンシューマ・グループに切り替えることができます。

PUBLICに対して特定のコンシューマ・グループに切替え許可を付与すると、すべてのユーザーがそのコンシューマ・グループに切り替えることができます。

grant_optionパラメータがTRUEの場合、コンシューマ・グループに対する切替え権限が付与されたユーザーは、そのコンシューマ・グループに対する切替え権限を他のユーザーにも付与できます。

ユーザーの初期のコンシューマ・グループを設定するには、そのグループに対する切替え権限をユーザーに付与する必要があります。

関連項目:
第131章「DBMS_RESOURCE_MANAGER」

例

BEGIN
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP (
'scott', 'mail_maintenance_group', true);
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.set_consumer_group_mapping(
dbms_resource_manager.oracle_user, 'scott','mail_maintenance_group');
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

GRANT_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、ユーザーまたはロールにシステム権限を付与します。

構文

DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE (
grantee_name    IN VARCHAR2,
privilege_name  IN VARCHAR2 DEFAULT 'ADMINISTER_RESOURCE_MANAGER',
admin_option    IN BOOLEAN);

パラメータ

表132-3 GRANT_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

grantee_name

権限を付与されるユーザーまたはロールの名前。

privilege_name

付与される権限の名前。

admin_option

admin_optionオプションの付いた権限付与の場合はTRUE、そうでない場合はFALSE。

使用上の注意

Oracleでは現在、リソース・マネージャに対するシステム権限はADMINISTER_RESOURCE_MANAGERのみ提供しています。データベース管理者には、ADMINオプションを伴うこのシステム権限があります。その権限の付与と取消しは、ユーザーまたはロールに対して行うことができます。ADMINオプションを伴うシステム権限を付与されたユーザーは、この権限を他のユーザーにも付与できます。

例

次のコールは、scottというユーザーに対してADMINオプションを付けずにこの権限を付与します。

BEGIN
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE (
grantee_name => 'scott',
privilege_name => 'ADMINISTER_RESOURCE_MANAGER',
admin_option => FALSE);
END;
/

REVOKE_SWITCH_CONSUMER_GROUPプロシージャ

このプロシージャは、リソース・コンシューマ・グループから切替え権限を取り消します。

構文

DBMS_RESOURCE_MANAGER_PRIVS.REVOKE_SWITCH_CONSUMER_GROUP (
revokee_name   IN VARCHAR2,
consumer_group IN VARCHAR2);

パラメータ

表132-4 REVOKE_SWITCH_CONSUMER_GROUPプロシージャのパラメータ

パラメータ

説明

revokee_name

アクセス権を取り消すユーザーまたはロールの名前。

consumer_group

コンシューマ・グループの名前。

使用上の注意

特定のコンシューマ・グループに対する切替え権限をユーザーから取り消した後で、そのユーザーがそのコンシューマ・グループに切り替えようとしても失敗します。

ユーザーから初期のコンシューマ・グループを取り消した場合、そのユーザーは、ログイン時に自動的にDEFAULT_CONSUMER_GROUPコンシューマ・グループに所属します。

コンシューマ・グループに対する切替え権限をロールから取り消すと、そのロールを介してのみコンシューマ・グループに対する切替え権限を持っていたユーザーは、そのコンシューマ・グループに切り替えることができなくなります。

コンシューマ・グループに対する切替え権限をPUBLICから取り消すと、それまでPUBLICを介してのみコンシューマ・グループを使用できたユーザーは、そのコンシューマ・グループに切り替えることができなくなります。

例

次の例は、mail_maintenance_groupに切替え権限をscottから取り消します。

BEGIN
DBMS_RESOURCE_MANAGER_PRIVS.REVOKE_SWITCH_CONSUMER_GROUP (
'scott', 'mail_maintenance_group');
END;
/

REVOKE_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、ユーザーまたはロールからシステム権限を取り消します。

構文

DBMS_RESOURCE_MANAGER_PRIVS.REVOKE_SYSTEM_PRIVILEGE (
revokee_name   IN VARCHAR2,
privilege_name IN VARCHAR2 DEFAULT 'ADMINISTER_RESOURCE_MANAGER');

パラメータ

表132-5 REVOKE_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

revokee_name

権限を取り消すユーザーまたはロールの名前。

privilege_name

取り消す権限の名前。

例

次のコールは、ユーザー名scottからADMINISTER_RESOURCE_MANAGERを取り消します。

BEGIN
DBMS_RESOURCE_MANAGER_PRIVS.REVOKE_SYSTEM_PRIVILEGE ('scott');
END;
/

133 DBMS_RESULT_CACHE

DBMS_RESULT_CACHEパッケージは、SQLの結果キャッシュおよびPL/SQLファンクションの結果キャッシュによって使用される共有プールの一部をDBAが管理するためのインタフェースを提供します。これらのキャッシュは同じインフラストラクチャを使用します。このため、たとえば、DBMS_RESULT_CACHE.BYPASSでは、両方のキャッシュに対してバイパスまたは使用が設定され、DBMS_RESULT_CACHE.FLUSHでは、SQL文の問合せおよびPL/SQLファンクションの両方について、キャッシュされた結果がすべてフラッシュされます。

関連項目:

- クロスセッションのPL/SQLファンクションの結果キャッシュを使用する方法に関する詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

- 結果キャッシュの概念の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_RESULT_CACHEの使用方法

- セキュリティ・モデル

- 定数

- DBMS_RESULT_CACHEサブプログラムの要約

DBMS_RESULT_CACHEの使用方法

- セキュリティ・モデル

- 定数

セキュリティ・モデル

このパッケージに対するEXECUTE権限は、データベース管理者のみに付与される必要があります。

定数

表133-1 DBMS_RESULT_CACHEの定数

定数

定義

STATUS_BYPS

CONSTANT VARCHAR(10) := 'BYPASS';

STATUS_CORR

CONSTANT VARCHAR(10) := 'CORRUPT';

STATUS_DISA

CONSTANT VARCHAR(10) := 'DISABLED';

STATUS_ENAB

CONSTANT VARCHAR(10) := 'ENABLED';

STATUS_SYNC

CONSTANT VARCHAR(10) := 'SYNC';

DBMS_RESULT_CACHEサブプログラムの要約

表133-2 DBMS_RESULT_CACHEパッケージのサブプログラム

サブプログラム

説明

BYPASSプロシージャ

結果キャッシュのバイパス・モードを設定します。

FLUSHファンクションおよびプロシージャ

結果キャッシュからすべてのオブジェクトを削除しようとします。引数に応じて、メモリーを保持または解放し、統計を保持または消去します。

INVALIDATEファンクションおよびプロシージャ

指定した依存オブジェクトに依存するすべての結果セットのオブジェクトを無効化します。

INVALIDATE_OBJECTファンクションおよびプロシージャ

指定した結果セットのオブジェクトを無効化します。

MEMORY_REPORTプロシージャ

結果キャッシュのメモリー使用量のレポートを作成します。

STATUSファンクション

結果キャッシュのステータスをチェックします。

BYPASSプロシージャ

このプロシージャは、結果キャッシュのバイパス・モードを設定します。

- バイパス・モードをオンにすると、キャッシュされた結果は使用されなくなり、新しい結果はキャッシュに保存されません。

- バイパス・モードをオフにすると、キャッシュは通常の操作を再開します。

構文

DBMS_RESULT_CACHE.BYPASS (
bypass_mode    IN   BOOLEAN,
session        IN   BOOLEAN);

パラメータ

表133-3 BYPASSプロシージャのパラメータ

パラメータ

説明

bypass_mode

- TRUE =>結果キャッシュの使用がバイパスされます。

- FALSE =>結果キャッシュの使用がオンになります。

session

- TRUE =>現在のセッションに適用されます。

- FALSE (デフォルト) =>すべてのセッションに適用されます。

使用上の注意

この操作は、データベース・インスタンス固有です。

例

この操作は、実行中のシステムでPL/SQLコードにホット・パッチを適用する必要がある場合に使用できます。結果がキャッシュされたファンクションが直接または推移的に依存しているPL/SQLモジュールにコード・パッチが適用された場合、結果キャッシュのファンクションに関連付けられているキャッシュされた結果は自動的にはフラッシュされません(インスタンスが再開またはバウンスしない場合)。フラッシュは手動で行う必要があります。

パッチ・プロセスを正常に行うには、次の手順を実行します。

1. 結果キャッシュをバイパス・モードに設定し、既存の結果をフラッシュします。

BEGIN
DBMS_RESULT_CACHE.BYPASS(TRUE);
DBMS_RESULT_CACHE.FLUSH;
END;
/

Oracle Real Application Clusters環境では、インスタンスごとにこのステップを実行する必要があります。

2. PL/SQLコード・パッチを適用します。

3. キャッシュのバイパス・モードを無効にして、結果キャッシュの使用を再開します。

BEGIN
DBMS_RESULT_CACHE.BYPASS(FALSE);
END;
/

Oracle Real Application Clusters環境では、インスタンスごとにこのステップを実行する必要があります。

FLUSHファンクションおよびプロシージャ

このファンクションおよびプロシージャは、結果キャッシュからすべてのオブジェクトを削除しようとします。引数に応じて、メモリーを保持または解放し、統計を保持または消去します。

構文

DBMS_RESULT_CACHE.FLUSH (
retainMem  IN  BOOLEAN DEFAULT FALSE,
retainSta  IN  BOOLEAN DEFAULT FALSE)
RETURN BOOLEAN;

DBMS_RESULT_CACHE.FLUSH (
retainMem  IN  BOOLEAN DEFAULT FALSE,
retainSta  IN  BOOLEAN DEFAULT FALSE);

パラメータ

表133-4 FLUSHファンクションおよびプロシージャのパラメータ

パラメータ

説明

retainMem

- TRUE =>キャッシュの空きメモリーを保持します。

- FALSE(デフォルト)=>システムに対して空きメモリーを解放します。

retainSta

- TRUE =>既存のキャッシュ統計を保持します。

- FALSE(デフォルト)=>既存のキャッシュ統計を消去します。

戻り値

すべてのオブジェクトの削除が成功した場合はTRUE。

INVALIDATEファンクションおよびプロシージャ

このファンクションおよびプロシージャは、指定した依存オブジェクトに依存するすべての結果セットのオブジェクトを無効化します。

構文

DBMS_RESULT_CACHE.INVALIDATE (
owner        IN  VARCHAR2,
name         IN  VARCHAR2)
RETURN NUMBER;

DBMS_RESULT_CACHE.INVALIDATE (
owner       IN  VARCHAR2,
name        IN  VARCHAR2);

DBMS_RESULT_CACHE.INVALIDATE (
object_id    IN BINARY_INTEGER)
RETURN NUMBER;

DBMS_RESULT_CACHE.INVALIDATE (
object_id    IN BINARY_INTEGER);

パラメータ

表133-5 INVALIDATEファンクションおよびプロシージャのパラメータ

パラメータ

説明

owner

スキーマ名。

name

オブジェクト名。

object_id

ディクショナリのオブジェクト番号。

戻り値

無効化されているオブジェクトの名前。

INVALIDATE_OBJECTファンクションおよびプロシージャ

このファンクションおよびプロシージャは、指定した結果セットのオブジェクトを無効化します。

構文

DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
id          IN  BINARY_INTEGER)
RETURN NUMBER;

DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
id          IN  BINARY_INTEGER);

DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
cache_id     IN  VARCHAR2)
RETURN NUMBER;

DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
cache_id   IN  VARCHAR2);

パラメータ

表133-6 INVALIDATE_OBJECTファンクションおよびプロシージャのパラメータ

パラメータ

説明

id

結果キャッシュ内のキャッシュ・オブジェクトのアドレス。

cache_id

キャッシュID。

戻り値

無効化されているオブジェクトの名前。

MEMORY_REPORTプロシージャ

このプロシージャは、結果キャッシュのメモリー使用量のレポートを作成します。

構文

DBMS_RESULT_CACHE.MEMORY_REPORT (
detailed   IN   BOOLEAN DEFAULT FALSE);

パラメータ

表133-7 MEMORY_REPORTプロシージャのパラメータ

パラメータ

説明

detailed

- TRUE =>より詳細なレポートを作成します。

- FALSE(デフォルト)=>標準的なレポートを作成します。

使用上の注意

SQL*Plusからこのプロシージャを起動するには、SERVEROUTPUTがオンになっている必要があります。

STATUSファンクション

このファンクションは、結果キャッシュのステータスをチェックします。

構文

DBMS_RESULT_CACHE.STATUS
RETURN VARCHAR2;

戻り値

次のいずれかの値です。

- STATUS_DISA: キャッシュは利用できません。

- STATUS_ENAB: キャッシュは利用できません。

- STATUS_BYPS: キャッシュは一時的に利用できませんでした。

- STATUS_SYNC: キャッシュは利用できますが、Oracle RACノードと同期化されます。

134 DBMS_RESUMABLE

DBMS_RESUMABLEパッケージを使用すると、長時間にわたる実行後に領域を使い果たしたり、領域制限に達するような大規模な操作を一時停止し、問題を修正した後で文の実行を再開できます。これにより、領域関連のエラーの発生を心配せずに、アプリケーションを作成できます。

この章では、次の項目について説明します。

- DBMS_RESUMABLEの使用方法

- 使用上の注意

- DBMS_RESUMABLEサブプログラムの要約

DBMS_RESUMABLEの使用方法

- 使用上の注意

使用上の注意

文を中断した場合は、その中断をアラート・ログに記録する必要があります。文が中断されたときに実行するプロシージャも登録する必要があります。ビューを使用すると、文の進行状況を監視したり、その文が現在実行中なのか、または中断されている状態なのか表示できます。

文が中断されると、自動的にトランザクションも中断されます。したがって、文の中断時および再開時はすべてのトランザクション・リソースが保持されます。エラー条件が解消されると、中断されていた文は自動的に実行を再開します。再開領域割当ては、実行時に複数回中断および再開できます。

再開領域割当てには、中断タイムアウト時間が関連付けられます。タイムアウト時間(デフォルトでは2時間)中断している再開領域割当ては、起動して例外をユーザーに戻します。DBMS_RESUMABLE.ABORT()プロシージャを使用して、中断した文に強制的に例外を発生させることもできます。

DBMS_RESUMABLEサブプログラムの要約

表134-1 DBMS_RESUMABLEパッケージのサブプログラム

サブプログラム

説明

ABORTプロシージャ

中断した再開領域割当てを終了します。

GET_SESSION_TIMEOUTファンクション

session_idのセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

GET_TIMEOUTファンクション

現行のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

SET_SESSION_TIMEOUTプロシージャ

session_idのセッションにおける再開領域割当てのタイムアウトを設定します。

SET_TIMEOUTプロシージャ

現行のセッションにおける再開領域割当てのタイムアウトを設定します。

SPACE_ERROR_INFOファンクション

エラー・スタックでの領域関連のエラーを検索します。領域関連のエラーが見つからなかった場合は、FALSEを戻します。

ABORTプロシージャ

このプロシージャでは、中断した再開領域割当てを終了します。パラメータsession_idは、文が実行されるセッションIDを示します。パラレルDML/DDLの場合は、session_idは、パラレルDML/DDLに参加するセッションIDを示します。この操作は成功が保証されています。このプロシージャのコールは、AFTER SUSPENDトリガーの内部からでも外部からでもコールできます。

構文

DBMS_RESUMABLE.ABORT (
session_id  IN NUMBER);

パラメータ

表134-2 ABORTプロシージャのパラメータ

パラメータ

説明

session_id

再開領域割当てのセッション識別子。

使用上の注意

ABORTプロシージャをコールするには、session_idのセッションの所有者、ALTER SYSTEM権限の所持者またはDBAである必要があります。

GET_SESSION_TIMEOUTファンクション

このファンクションは、session_idのセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

構文

DBMS_RESUMABLE.GET_SESSION_TIMEOUT (
session_id  IN NUMBER)
RETURN NUMBER;

パラメータ

表134-3 GET_SESSION_TIMEOUTファンクションのパラメータ

パラメータ

説明

session_id

再開領域割当てのセッション識別子。

戻り値

表134-4 GET_SESSION_TIMEOUTファンクションの戻り値

戻り値

説明

NUMBER

session_idのセッションにおける再開領域割当ての現行のタイムアウト値。戻されるタイムアウトは秒で示されます。

使用上の注意

session_idが存在しない場合、GET_SESSION_TIMEOUTファンクションは-1を戻します。

GET_TIMEOUTファンクション

このファンクションは、現行のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

構文

DBMS_RESUMABLE.GET_TIMEOUT
RETURN NUMBER;

戻り値

表134-5 GET_TIMEOUTファンクションの戻り値

戻り値

説明

NUMBER

現行のセッションにおける再開領域割当ての現行のタイムアウト値。戻される値は秒で示されます。

使用上の注意

現行のセッションを再開できない場合、GET_TIMEOUTファンクションは-1を戻します。

SET_SESSION_TIMEOUTプロシージャ

このプロシージャは、session_idのセッションにおける再開領域割当てのタイムアウトを設定します。新しいタイムアウト設定は、セッションに即時適用されます。session_idが存在しない場合、操作は実行されません。

構文

DBMS_RESUMABLE.SET_SESSION_TIMEOUT (
session_id  IN NUMBER,
timeout     IN NUMBER);

パラメータ

表134-6 SET_SESSION_TIMEOUTプロシージャのパラメータ

パラメータ

説明

session_id

再開領域割当てのセッション識別子。

timeout

再開領域割当てのタイムアウト。

SET_TIMEOUTプロシージャ

このプロシージャは、現行のセッションにおける再開領域割当てのタイムアウトを設定します。新しいタイムアウト設定はセッションに即時適用されます。

構文

DBMS_RESUMABLE.SET_TIMEOUT (
timeout  IN NUMBER);

パラメータ

表134-7 SET_TIMEOUTプロシージャのパラメータ

パラメータ

説明

timeout

再開領域割当てのタイムアウト。

SPACE_ERROR_INFOファンクション

このファンクションは、エラー・スタックで領域関連のエラーを検索します。領域関連のエラーが見つからなかった場合は、FALSEが戻されます。見つかった場合はTRUEが戻され、領域エラーの原因となった特定のオブジェクトの情報が戻されます。

構文

DBMS_RESUMABLE.SPACE_ERROR_INFO
error_type        OUT VARCHAR2,
object_type       OUT VARCHAR2,
object_owner      OUT VARCHAR2,
table_space_name  OUT VARCHAR2,
object_name       OUT VARCHAR2,
sub_object_name   OUT VARCHAR2)
RETURN BOOLEAN;

パラメータ

表134-8 SPACE_ERROR_INFOファンクションのパラメータ

パラメータ

説明

error_type

領域エラーのタイプ。次のいずれかになります。

- NO MORE SPACE

- MAX EXTENTS REACHED

- SPACE QUOTA EXCEEDED

object_type

オブジェクト・タイプ。次のいずれかになります。

- TABLE

- INDEX

- CLUSTER

- TABLE SPACE

- ROLLBACK SEGMENT

- UNDO SEGMENT

- LOB SEGMENT

- TEMP SEGMENT

- INDEX PARTITION

- TABLE PARTITION

- LOB PARTITION

- TABLE SUBPARTITION

- INDEX SUBPARTITION

- LOB SUBPARTITION

当てはまらない場合は、タイプをNULLに設定することもできます。

object_owner

オブジェクトの所有者。特定できない場合はNULLになります。

table_space_name

オブジェクトが常駐する表領域。特定できない場合はNULLになります。

object_name

ロールバック・セグメント、一時セグメント、表、索引またはクラスタの名前。

sub_object_name

LOB、TABLEまたはINDEXのパーティション名またはサブパーティション名。特定できない場合は、NULLとなります。

135 DBMS_RLS

DBMS_RLSパッケージには、ファイングレイン・アクセス・コントロールの管理インタフェースが含まれ、これを使用してVirtual Private Database (VPD)を実装します。DBMS_RLSは、Enterprise Editionでのみ使用できます。

関連項目:
DBMS_RLSの使用方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_RLSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- ルールおよび制限

- DBMS_RLSサブプログラムの要約

DBMS_RLSの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- ルールおよび制限

概要

ファイングレイン・アクセス・コントロールをサポートする機能は、動的な述語に基づいています。セキュリティ・ルールはビューに埋め込まれていませんが、元表またはビューがDML文で参照される、文の解析時に取得されます。

表、ビューまたはシノニムに対する動的な述語はPL/SQLファンクションが生成し、PL/SQLインタフェースを介してセキュリティ・ポリシーに関連付けられます。次に例を示します。

DBMS_RLS.ADD_POLICY (
'hr', 'employees', 'emp_policy', 'hr', 'emp_sec', 'select', 'user_ctx', 'time');

HRスキーマの下にあるEMPLOYEES表が問合せまたは副問合せ(SELECT)で参照されるたびに、サーバーは、EMP_SECファンクション(HRスキーマの下にある)をコールします。このファンクションは、EMP_POLICYポリシーについて、現行のユーザーに固有の述語を戻します。ポリシー・ファンクションは、ファンクション・コール時に使用可能なセッション環境変数に基づいて述語を生成できます。これらの変数は通常、アプリケーション・コンテキストのフォームで表示されます。ポリシーでは、セキュリティ関連の列と、INDEX、SELECT、INSERT、UPDATE、DELETEなどの文を自由に組み合せて指定できます。

次に、サーバーは、テキストがある一時ビューを作成します。

SELECT * FROM hr.employees WHERE P1

ここで、P1(SAL > 10000や副問合せなど)は、EMP_SECファンクションから戻された述語です。サーバーは、EMPLOYEES表をビューとして処理し、ビューのテキストをデータ・ディクショナリからではなく一時ビューから取得すること以外は、通常のビューと同様にビューの展開を行います。

述語に副問合せがある場合は、ポリシー・ファンクションの所有者(定義者)を使用して副問合せ内のオブジェクトを解決し、そのオブジェクトのセキュリティをチェックします。つまり、ポリシー保護されたオブジェクトへのアクセス権限を持つユーザーには、ポリシーについての知識は不要です。このユーザーには、基礎となるセキュリティ・ポリシーに対するオブジェクト権限の付与は不要です。さらに、サーバーはファンクション定義者の権限でコールを行うため、このユーザーにはポリシー・ファンクションでのEXECUTE権限は不要です。

注意:
一時ビューは、単一表または述語のみを持つビュー(つまり、JOIN、ORDER BY、GROUP BYなどがない)から導出されるため、親オブジェクトの更新可能性を保持できます。

DBMS_RLSは、セキュリティ・ポリシーを削除するか使用可能にするためのインタフェースも提供します。たとえば、EMP_POLICYを削除したり、使用可能にしたりする場合は、次のPL/SQL文を使用します。

DBMS_RLS.DROP_POLICY('hr', 'employees', 'emp_policy');
DBMS_RLS.ENABLE_POLICY('hr', 'employees', 'emp_policy', TRUE);

セキュリティ・モデル

一時ビューが副問合せを使用して作成されると、セキュリティ・チェックが実行されます。ポリシー・ファンクションを持ち、動的な述語を生成するスキーマは、セキュリティ・チェックおよびオブジェクト検索を行う一時ビューの定義者です。

定数

DBMS_RLSパッケージでは、次に示す定数が使用されます。

表135-1 DBMS_RLSの定数

定数

タイプ

値

説明

ADD_ATTRIBUTE_ASSOCIATION

BINARY_INTEGER

1

DBMS_RLS.ALTER_POLICYおよびDBMS_RLS_ALTER_GROUPED_POLICYとともに使用し、指定したネームスペースと属性をポリシーまたはグループ化されたポリシーに追加します。

REMOVE_ATTRIBUTE_ASSOCIATION

BINARY_INTEGER

2

DBMS_RLS.ALTER_POLICYおよびDBMS_RLS.ALTER_GROUPED_POLICYとともに使用し、指定したネームスペースと属性をポリシーまたはグループ化されたポリシーから削除します。

使用上の注意

DBMS_RLSプロシージャは、現行のDMLトランザクションがある場合は、操作前にコミットします。ただし、プロシージャがDDLイベント・トリガーの内部にある場合、プロシージャは最初にコミットを実行しません。DDLトランザクションでは、DBMS_RLSプロシージャはDDLトランザクションの一部となります。

たとえば、ユーザーはCREATE TABLEのトリガーを作成できます。トリガー内部で、ALTER TABLEを介して列を追加でき、DBMS_RLSを介してポリシーを追加できます。これらすべての操作は、それぞれがDDL文であっても、CREATE TABLEと同じトランザクション内にあります。CREATE TABLEは、トリガーが正常終了した場合のみ成功します。

現行のカーソルおよび対応する述語のビューはV$VPD_POLICIESから利用できます。

シノニムが参照できるのは、ビューまたは表のみです。

ルールおよび制限

VPDでは、長い識別子の使用がサポートされています。オブジェクト(表名、ポリシー名およびサブプログラム名)とビューに適用される、object_schema、object_name、policy_nameなどの引数の最大長は、128バイトです。

DBMS_RLSサブプログラムの要約

表135-2 DBMS_RLSパッケージのサブプログラム

サブプログラム

説明

ADD_GROUPED_POLICYプロシージャ

ポリシー・グループに関連付けられたポリシーを追加します。

ADD_POLICYプロシージャ

ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムに追加します。

ADD_POLICY_CONTEXTプロシージャ

アクティブなアプリケーションのコンテキストを追加します。

ALTER_POLICYプロシージャ

アプリケーション・コンテキスト属性をVPDポリシーに関連付けます。

ALTER_GROUPED_POLICYプロシージャ

アプリケーション・コンテキスト関連の変更を追加します。

CREATE_POLICY_GROUPプロシージャ

ポリシー・グループを作成します。

DELETE_POLICY_GROUPプロシージャ

ポリシー・グループを削除します。

DISABLE_GROUPED_POLICYプロシージャ

行レベルのグループ・セキュリティ・ポリシーを使用禁止にします。

DROP_GROUPED_POLICYプロシージャ

ポリシー・グループに関連付けられたポリシーを削除します。

DROP_POLICYプロシージャ

ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムから削除します。

DROP_POLICY_CONTEXTプロシージャ

駆動コンテキストが1つ少なくなるように、オブジェクトから駆動コンテキストを削除します。

ENABLE_GROUPED_POLICYプロシージャ

行レベルのグループ・セキュリティ・ポリシーを使用可能または使用禁止にします。

ENABLE_POLICYプロシージャ

ファイングレイン・アクセス・コントロールのポリシーを使用可能または使用禁止にします。

REFRESH_GROUPED_POLICYプロシージャ

リフレッシュ・ポリシーに関連付けられたSQL文を再解析します。

REFRESH_POLICYプロシージャ

ポリシーに関連付けられているすべてのキャッシュ済の文を再解析します。

ADD_GROUPED_POLICYプロシージャ

このプロシージャは、ポリシー・グループに関連付けられたポリシーを追加します。

構文

DBMS_RLS.ADD_GROUPED_POLICY(
object_schema            IN  VARCHAR2        DEFAULT NULL,
object_name              IN  VARCHAR2,
policy_group             IN  VARCHAR2        DEFAULT 'SYS_DEFAULT',
policy_name              IN  VARCHAR2,
function_schema          IN  VARCHAR2        DEFAULT NULL,
policy_function          IN  VARCHAR2,
statement_types          IN  VARCHAR2        DEFAULT NULL,
update_check             IN  BOOLEAN         DEFAULT FALSE,
enable                   IN  BOOLEAN         DEFAULT TRUE,
static_policy            IN  BOOLEAN         DEFAULT FALSE,
policy_type              IN  BINARY_INTEGER  DEFAULT NULL,
long_predicate           IN  BOOLEAN         DEFAULT FALSE,
sec_relevant_cols        IN  VARCHAR2,
sec_relevant_cols_opt    IN  BINARY_INTEGER  DEFAULT NULL,
namespace                IN  VARCHAR2        DEFAULT NULL,
attribute                IN  VARCHAR2        DEFAULT NULL);

パラメータ

表135-3 ADD_GROUPED_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。デフォルトはNULLで、現行のユーザー・スキーマがobject_schemaとして使用されていることを意味します。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。

policy_name

ポリシーの名前。同一の表またはビューで一意である必要があります。

function_schema

ポリシー・ファンクションを所有するスキーマ。デフォルトはNULLで、現行のユーザー・スキーマがfunction_schemaとして使用されていることを意味します。

policy_function

ポリシーの述語を生成するファンクションの名前。ファンクションがパッケージ内で定義されている場合、パッケージ名は必ず存在する必要があります。

statement_types

ポリシーを適用する文タイプ。INDEX、SELECT、INSERT、UPDATEまたはDELETEを任意に組み合せることができます。デフォルトでは、これらの中からINDEX以外のすべてのタイプが適用されます。

update_check

INSERT文およびUPDATE文の場合にかぎり、update_checkをTRUEに設定すると、サーバーでポリシーがINSERT後またはUPDATE後の値に対してチェックされます。

チェックは、ポリシー定義に含まれているセキュリティ関連の列にのみ適用されます。つまり、ポリシーで定義されているセキュリティ関連の列がINSERTまたはUPDATE文で追加または更新された場合にのみ、INSERT操作またはUPDATE操作が失敗します。

enable

ポリシーの追加時に、そのポリシーを使用可能にするかどうかを示します。デフォルトはTRUEです。

static_policy

デフォルトはFALSEです。TRUEに設定されている場合は、オブジェクトにアクセスするすべてのユーザー(ただし、SYSまたはEXEMPT ACCESS POLICY権限を持つ特権ユーザーを除く)に対して、静的ポリシーのポリシー・ファンクションが同一の述語文字列を生成するものとサーバーはみなします。

policy_type

デフォルト値のNULLは、policy_typeがstatic_policyの値によって決定されることを意味します。使用可能なポリシー・タイプは、表135-5のとおりです。この中から指定したポリシー・タイプは、static_policyの値よりも優先されます。

long_predicate

デフォルト値のFALSEは、ポリシー・ファンクションから最大4000バイト長の述語が戻されることを意味します。TRUEは、述語のテキスト文字列の長さが最大32KBになることを意味します、このパラメータを使用できる前から存在するポリシーには、32K制限が維持されます。

sec_relevant_cols

列レベルのVirtual Private Database (VPD)を使用可能にします(このVPDによって、機密情報を保持している列が問合せで参照されたときにセキュリティ・ポリシーが実行されます)。表およびビューに適用されますが、シノニムには適用されません。ポリシーで保護されたオブジェクトについて、カンマ区切りまたはスペース区切りの有効な列名のリストを指定します。このポリシーが実行されるのは、ユーザーのSQL文またはその基礎となるビュー定義の中で、指定した列が参照されたとき(あるいは抽象データ・タイプの列の場合は、その属性が参照されたとき)のみです。デフォルトは、オブジェクトのユーザー定義列のすべてです。

namespace

アプリケーション・コンテキスト・ネームスペースを決定する名前。

attribute

アプリケーション・コンテキスト属性名を決定する属性。

使用上の注意

- このプロシージャでは、指定した表、ビューまたはシノニムにポリシーが追加され、指定したポリシー・グループにそのポリシーが関連付けられます。

- ポリシー・グループは、CREATE_POLICY_GROUPプロシージャを使用して作成する必要があります。

- ポリシー名は、指定したオブジェクトのポリシー・グループ内で一意である必要があります。

- デフォルトのポリシー・グループ(SYS_DEFAULT)のポリシーは、アクティブなポリシー・グループに関係なく常に実行されます。ただし、ファイングレイン・アクセス・コントロールのポリシーは、EXEMPT ACCESS POLICYシステム権限を持つユーザーには適用されません。

- object_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

- function_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

ADD_POLICYプロシージャ

このプロシージャは、ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムに追加します。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。

関連項目:
使用上の注意

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.ADD_POLICY (
object_schema            IN  VARCHAR2       DEFAULT NULL,
object_name              IN  VARCHAR2,
policy_name              IN  VARCHAR2,
function_schema          IN  VARCHAR2       DEFAULT NULL,
policy_function          IN  VARCHAR2,
statement_types          IN  VARCHAR2       DEFAULT NULL,
update_check             IN  BOOLEAN        DEFAULT FALSE,
enable                   IN  BOOLEAN        DEFAULT TRUE,
static_policy            IN  BOOLEAN        DEFAULT FALSE,
policy_type              IN  BINARY_INTEGER DEFAULT NULL,
long_predicate           IN  BOOLEAN        DEFAULT FALSE,
sec_relevant_cols        IN  VARCHAR2       DEFAULT NULL,
sec_relevant_cols_opt    IN  BINARY_INTEGER DEFAULT NULL,
namespace                IN  VARCHAR2       DEFAULT NULL,
attribute                IN  VARCHAR2       DEFAULT NULL);

パラメータ

表135-4 ADD_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。object_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_name

追加するポリシーの名前。同じ表またはビューでは固有の名前である必要があります。

function_schema

ポリシー・ファンクションのスキーマ(NULLの場合は現行のデフォルト・スキーマ)。function_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

policy_function

ポリシーの述語を生成するファンクションの名前。ファンクションがパッケージ内で定義されている場合、パッケージ名は必ず存在する必要があります。

statement_types

ポリシーを適用する文タイプ。INDEX、SELECT、INSERT、UPDATEまたはDELETEを任意に組み合せることができます。デフォルトでは、これらの中からINDEX以外のすべてのタイプが適用されます。

update_check

文タイプINSERTまたはUPDATEに対するオプションの引数。デフォルトはFALSEです。update_checkをTRUEに設定すると、サーバーは、挿入または更新後の値に対してもポリシーをチェックします。

チェックは、ポリシー定義に含まれているセキュリティ関連の列にのみ適用されます。つまり、ポリシーで定義されているセキュリティ関連の列がINSERTまたはUPDATE文で追加または更新された場合にのみ、INSERT操作またはUPDATE操作が失敗します。

enable

ポリシーの追加時に、そのポリシーを使用可能にするかどうかを示します。デフォルトはTRUEです。

static_policy

デフォルトはFALSEです。TRUEに設定されている場合、サーバーは、静的ポリシーのポリシー・ファンクションによって、オブジェクトにアクセスするすべてのユーザー(ただし、SYSまたはEXEMPT ACCESS POLICY権限を持つ特権ユーザーを除く)に対して同一の述語文字列が生成されるとみなします。

policy_type

デフォルト値のNULLは、policy_typeがstatic_policyの値によって決定されることを意味します。使用可能なポリシー・タイプは、表135-5のとおりです。この中から指定したポリシー・タイプは、static_policyの値よりも優先されます。

long_predicate

デフォルト値のFALSEは、ポリシー・ファンクションから最大4000バイト長の述語が戻されることを意味します。TRUEは、述語のテキスト文字列の長さが最大32KBになることを意味します、このパラメータを使用できる前から存在するポリシーには、32K制限が維持されます。

sec_relevant_cols

列レベルのVirtual Private Database (VPD)を使用可能にします(このVPDによって、機密情報を保持している列が問合せで参照されたときにセキュリティ・ポリシーが実行されます)。表およびビューに適用されますが、シノニムには適用されません。ポリシーで保護されたオブジェクトについて、カンマ区切りまたはスペース区切りの有効な列名のリストを指定します。このポリシーが実行されるのは、ユーザーのSQL文またはその基礎となるビュー定義の中で、指定した列が参照されたとき(あるいは抽象データ・タイプの列の場合は、その属性が参照されたとき)のみです。デフォルトは、オブジェクトのユーザー定義列のすべてです。

sec_relevant_cols_opt

sec_relevant_colsとともに使用して、列レベルのVPDでフィルタ処理をした問合せ(SELECTのみ)に関して、機密情報の列がNULLになっているすべての行を表示します。デフォルトではNULLに設定され、sec_relevant_colsで定義したフィルタが有効になります。dbms_rls.ALL_ROWSに設定するとすべての行が表示されますが、機密情報の列の値があると、列の値がsec_relevant_colsでフィルタ処理されるため、NULLが表示されます。このオプションに関する制限および追加情報は、使用上の注意に関する説明を参照してください。

namespace

アプリケーション・コンテキスト・ネームスペースを決定する名前。

attribute

アプリケーション・コンテキスト属性名を決定する属性。

表135-5 DBMS_RLS.ADD_POLICYのポリシー・タイプ

ポリシー・タイプ

説明

STATIC

ランタイム環境にかかわらず、述語は同じになります。静的ポリシーの関数は一度だけ実行されてSGAにキャッシュされます。同じオブジェクトにアクセスする文の場合、ポリシー関数が再度実行されることはありません。ただし同じカーソルの実行ごとに、SYS_CONTEXTまたはSYSDATEなどの属性に基づいて述語がデータを別々にフィルタリングする場合があるため、同じ述語であっても別の行セットが生成される場合があります。1つのオブジェクトのみに適用されます。

SHARED_STATIC

同じポリシー・タイプの同一のポリシー・ファンクションにより生成されたキャッシュ済の述語が、最初にサーバーによって検索される点を除き、STATICと同じです。複数のオブジェクトで共有されます。

CONTEXT_SENSITIVE

最後にカーソルが使用されてからコンテキストが変更されていることが検出された場合、サーバーは文の実行時にポリシー・ファンクションを再評価します。複数のクライアントが1つのデータベース・セッションを共有するセッション・プーリングの場合、クライアント切り替え時に中間層でコンテキストをリセットする必要があります。サーバーは、このポリシー・タイプの関数により戻された値をキャッシュしません。サーバーは文の解析時にポリシー関数を実行します。1つのオブジェクトのみに適用されます。

SHARED_CONTEXT_SENSITIVE

同じデータベース・セッション内で、同じポリシー・タイプの同一のポリシー・ファンクションによって生成されたキャッシュ済の述語がサーバーにより最初に検索される点を除いて、CONTEXT_SENSITIVEと同じです。セッション・メモリー内に述語が存在する場合、ポリシー関数は再実行されず、セッションのプライベート・アプリケーション・コンテキストが変更されるまで、キャッシュされている値が有効になります。複数のオブジェクトで共有されます。

DYNAMIC

デフォルトのポリシー・タイプ。サーバーでは、どのようなシステム環境やセッション環境においても常になんらかの影響が述語にはあることを想定しているため、文の解析や実行のたびに必ずポリシー・ファンクションを再実行します。1つのオブジェクトのみに適用されます。

使用上の注意

- SYSは、セキュリティ・ポリシーの制約を受けません。

- object_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

- function_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

- ポリシー・ファンクションは、サーバーがコールします。次の例は、ファンクションのインタフェースを示します。

FUNCTION policy_function (object_schema IN VARCHAR2, object_name VARCHAR2)
RETURN VARCHAR2
--- object_schema is the schema owning the table or view.
--- object_name is the name of table, view, or synonym to which the policy applies.

- ポリシー・ファンクションには、WNDS(データベースへの書込み禁止状態)の純正レベルが必要です。

関連項目:
RESTRICT_REFERENCESプラグマの詳細は、『Oracle Database開発ガイド』を参照してください。

- 同じオブジェクトにある複数のVPDポリシーから生成された述語は、全述語の論理積(AND条件)の結合効果があります。

- セキュリティ・チェックおよびオブジェクト検索は、動的な述語の副問合せで、オブジェクトのポリシー・ファンクションの所有者に対して実行されます。

- ファンクションが長さ0(ゼロ)の述語を戻す場合は、ポリシーについて現行のユーザーに適用する制限はないと解釈されます。

- 述語で表の別名が必要な場合(たとえば、親オブジェクトが表タイプの場合)は、表またはビューの名前自体を別名として使用する必要があります。サーバーは次のような一時ビューを構成します。

"select c1, c2, ... from tab tab where <predicate>"

- 実行時にファンクションの妥当性チェックを行う目的は、インストールを容易にするため、およびインポート/エクスポート中に起こるその他の依存する問題を軽減するためです。

- 列レベルのVPD列マスクの動作(sec_relevant_cols_opt => dbms_rls.ALL_ROWSで指定)は、行のサブセットのみを戻す他のすべてのVPDポリシーとは根本的に異なります。列マスクの動作では、ユーザーの問合せで指定されたすべての行を戻しますが、機密情報の列の値はNULLと表示されます。このオプションには次の制約があります。

- SELECT文にのみ適用されます。

- 通常のVPD述語とは異なり、このポリシー・ファンクションで生成するマスク条件は、単純なブール式にする必要があります。

- アプリケーションで計算処理を実行し、また、計算結果にNULL値を想定しない場合は、列レベルのVPDのデフォルト動作を使用する必要があります。これはsec_relevant_colsパラメータで指定します。

- このオプションとともにUPDATE AS SELECTを使用すると、表示を許可されている列の値のみが更新されます。

- このオプションを使用すると表示されない行があります。次に例を示します。

SELECT * FROM employees
WHERE salary = 10

列マスクのオプションが設定されているため、salary列からNULL値が戻された場合、この問合せでは行が戻らない可能性があります。

- シノニムにVPDポリシーを追加すると、そのシノニムのすべての依存オブジェクト(シノニムを参照するポリシー・ファンクションを含む)がINVALIDとマークされます。

- 1つのオブジェクトに作成できるポリシーの最大数は255です。

例

2つの例の最初のものとして、次によってhr.employee表に適用されるポリシーが作成されます。これは列レベルのVPDポリシーで、SELECT文またはINDEX文が表のsalary、birthdateまたはSSN列を明示的に参照するか、ビューを使用して暗黙的に参照した場合にのみ実行されます。また、CONTEXT_SENSITIVEポリシーでもあるため、サーバーは、解析時にポリシー・ファンクションhr.hrfunを起動します。namespaceおよびattributeアプリケーション・コンテキスト・パラメータは、アプリケーション・コンテキスト値が変更された場合にのみ、ポリシー評価を制限します。実行中にファンクションが起動されるのは、いずれかのセッションのプライベート・コンテキストが文カーソルの最終使用時とは変わっている場合のみです。long_predicateパラメータはコールから除外されるため、ポリシー・ファンクションによって生成された述語が4000バイト(デフォルトの長さ制限)を超えないようにしてください。

BEGIN
DBMS_RLS.ADD_POLICY(
object_schema      => 'hr',
object_name        => 'employee',
policy_name        => 'hr_policy',
function_schema    => 'hr',
policy_function    => 'hrfun',
statement_types    => 'select,index',
policy_type        => DBMS_RLS.CONTEXT_SENSITIVE,
sec_relevant_cols  => 'salary,birthdate,ssn',
namespace          => 'empno_ctx',
attribute          => 'emp_id');
END;

2番目の例では、次のコマンドによってホスティング用の同じオブジェクトに適用される別のポリシーが作成されるため、ユーザーは各自のサブスクライバIDに基づくデータのみにアクセスできます。これはSHARED_STATICポリシー・タイプとして定義されるため、サーバーはまずSGAキャッシュ内で述語の検索を試みます。検索できなかった場合、サーバーはポリシー・ファンクションsubfunの起動のみを行います。

BEGIN
DBMS_RLS.ADD_POLICY(
object_schema      => 'hr',
object_name        => 'employee',
policy_name        => 'hosting_policy',
function_schema    => 'hr',
policy_function    => 'subfun',
policy_type        => dbms_rls.SHARED_STATIC);
END;

ADD_POLICY_CONTEXTプロシージャ

このプロシージャは、アクティブなアプリケーションのコンテキストを追加します。

構文

DBMS_RLS.ADD_POLICY_CONTEXT (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
namespace       IN VARCHAR2,
attribute       IN VARCHAR2);

パラメータ

表135-6 ADD_POLICY_CONTEXTプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

namespace

アプリケーション・コンテキスト・ネームスペースを決定する名前。

attribute

アプリケーション・コンテキスト属性名を決定する属性。

使用上の注意

次の点に注意してください。

- このプロシージャでは、ポリシーを実施するアプリケーション・コンテキストが示されます。このコンテキストは、実行するアプリケーションを決定します。

- object_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

- 駆動コンテキストはセッションにもグローバルにもできます。

- 実行時、サーバーはこのコンテキストの値からアクティブなポリシー・グループの名前を取り出します。

- ファイングレイン・アクセス・コントロールのポリシーを持つ各オブジェクトには、それぞれ少なくとも1つの駆動コンテキストを定義する必要があります。定義しない場合は、そのオブジェクトのすべてのポリシーが実行されます。

- 複数のコンテキストを同一のオブジェクトに追加すると、複数のポリシー・グループのポリシーが施行されます。

- 駆動コンテキストがNULLの場合は、すべてのポリシー・グループのポリシーが使用されます。

- ポリシーを所有するポリシー・グループが駆動コンテキストである場合、そのポリシー・グループ内の使用可能なすべてのポリシーが、SYS_DEFAULTポリシー・グループの全ポリシーとともに適用されます。

- ポリシーをaccess_control_groupグループのhr.employees表に追加するには、次のコマンドを発行します。

DBMS_RLS.ADD_GROUPED_POLICY('hr','employees','access_control_group','policy1','SYS', 'HR.ACCESS');

ALTER_POLICYプロシージャ

このプロシージャは、アプリケーション・コンテキスト属性をVPDポリシーに関連付けます。

構文

DBMS_RLS.ALTER_POLICY (
object_schema    IN VARCHAR2 DEFAULT NULL,
object_name      IN VARCHAR2,
policy_name      IN VARCHAR2,
alter_option     IN NUMBER,
namespace        IN VARCHAR2 DEFAULT NULL,
attribute        IN VARCHAR2 DEFAULT NULL);

パラメータ

表135-7 ALTER_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。デフォルトはNULLで、現行のユーザー・スキーマがobject_schemaとして使用されていることを意味します。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_name

ポリシーの名前。同一の表またはビューで一意です。

alter_option

アプリケーション・コンテキストをVPDポリシーに追加するか、またはVPDポリシーからアプリケーション・コンテキストを削除するかを指定するために使用されます。

namespace

アプリケーション・コンテキスト・ネームスペースを決定する名前。

attribute

アプリケーション・コンテキスト属性名を決定する属性。

使用上の注意

次の点に注意してください。

- このプロシージャは、アプリケーション・コンテキスト・ネームスペースとアプリケーション・コンテキスト属性を、状況依存ポリシーまたは共有の状況依存ポリシーにのみ関連付けます。DYNAMIC、STATICまたはSHARED_STATICポリシーでアプリケーション・コンテキスト・ネームスペースとアプリケーション・コンテキスト属性を指定すると、エラーが発生します。namespaceを指定した場合、プロシージャ・コールでattributeも指定する必要があります。

- 共有の状況依存VPDポリシーを変更するALTER_POLICYをコールすると、同一のVPDポリシー・ファンクションを持つすべての共有の状況依存VPDポリシーが影響を受けます。

- 駆動コンテキストはセッションにもグローバルにもできます。

- 実行時、サーバーはこのコンテキストの値からアクティブなポリシー・グループの名前を取り出します。

- ファイングレイン・アクセス・コントロールのポリシーを持つ各オブジェクトには、それぞれ少なくとも1つの駆動コンテキストを定義する必要があります。定義しない場合は、そのオブジェクトのすべてのポリシーが実行されます。

- 複数のコンテキストを同一のオブジェクトに追加すると、複数のポリシー・グループのポリシーが施行されます。

- 駆動コンテキストがNULLの場合は、すべてのポリシー・グループのポリシーが使用されます。

- ポリシーを所有するポリシー・グループが駆動コンテキストである場合、そのポリシー・グループ内の使用可能なすべてのポリシーが、SYS_DEFAULTポリシー・グループの全ポリシーとともに適用されます。

- ポリシーをaccess_control_groupグループのhr.employees表に追加するには、次のコマンドを発行します。

DBMS_RLS.ADD_GROUPED_POLICY(
'hr','employees','access_control_group','policy1','SYS', 'HR.ACCESS');

ALTER_GROUPED_POLICYプロシージャ

このプロシージャは、アプリケーション・コンテキスト関連の変更を追加します。

構文

DBMS_RLS.ALTER_GROUPED_POLICY (
object_schema    IN VARCHAR2 DEFAULT NULL,
object_name      IN VARCHAR2,
policy_group     IN VARCHAR2 DEFAULT SYS_DEFAULT,
policy_name      IN VARCHAR2,
alter_option     IN NUMBER,
namespace        IN VARCHAR2 DEFAULT NULL,
attribute        IN VARCHAR2 DEFAULT NULL);

パラメータ

表135-8 ALTER_GROUPED_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。デフォルトはNULLで、現行のユーザー・スキーマがobject_schemaとして使用されていることを意味します。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。同一の表またはビューで一意である必要があります。

policy_name

ポリシーの名前。同一の表またはビューで一意です。

alter_option

アプリケーション・コンテキストをVPDポリシーに追加するか、またはVPDポリシーからアプリケーション・コンテキストを削除するかを指定するために使用されます。

namespace

アプリケーション・コンテキスト・ネームスペースを決定する名前。

attribute

アプリケーション・コンテキスト属性名を決定する属性。

使用上の注意

次の点に注意してください。

- このプロシージャは、アプリケーション・コンテキスト・ネームスペースとアプリケーション・コンテキスト属性を、状況依存ポリシーまたは共有の状況依存ポリシーにのみ関連付けます。DYNAMIC、STATICまたはSHARED_STATICポリシーでアプリケーション・コンテキスト・ネームスペースとアプリケーション・コンテキスト属性を指定すると、エラーが発生します。namespaceを指定した場合、プロシージャ・コールでattributeも指定する必要があります。

- 共有の状況依存VPDポリシーを変更するALTER_GROUPED_POLICYをコールすると、同一のVPDポリシー・ファンクションを持つすべての共有の状況依存VPDポリシーが影響を受けます。

- 駆動コンテキストはセッションにもグローバルにもできます。

- 実行時、サーバーはこのコンテキストの値からアクティブなポリシー・グループの名前を取り出します。

- ファイングレイン・アクセス・コントロールのポリシーを持つ各オブジェクトには、それぞれ少なくとも1つの駆動コンテキストを定義する必要があります。定義しない場合は、そのオブジェクトのすべてのポリシーが実行されます。

- 複数のコンテキストを同一のオブジェクトに追加すると、複数のポリシー・グループのポリシーが施行されます。

- 駆動コンテキストがNULLの場合は、すべてのポリシー・グループのポリシーが使用されます。

- ポリシーを所有するポリシー・グループが駆動コンテキストである場合、そのポリシー・グループ内の使用可能なすべてのポリシーが、SYS_DEFAULTポリシー・グループの全ポリシーとともに適用されます。

- ポリシーをaccess_control_groupグループのhr.employees表に追加するには、次のコマンドを発行します。

DBMS_RLS.ADD_GROUPED_POLICY (
'hr','employees','access_control_group','policy1','SYS', 'HR.ACCESS');

CREATE_POLICY_GROUPプロシージャ

このプロシージャはポリシー・グループを作成します。

構文

DBMS_RLS.CREATE_POLICY_GROUP (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
policy_group    IN VARCHAR2);

パラメータ

表135-9 CREATE_POLICY_GROUPプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。

使用上の注意

グループは、各表または各ビューで一意である必要があります。

DELETE_POLICY_GROUPプロシージャ

このプロシージャはポリシー・グループを削除します。

構文

DBMS_RLS.DELETE_POLICY_GROUP (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
policy_group    IN VARCHAR2);

パラメータ

表135-10 DELETE_POLICY_GROUPプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを追加する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。

使用上の注意

次の点に注意してください。

- このプロシージャでは、指定した表、ビューまたはシノニムのポリシー・グループが削除されます。

- ポリシー・グループ内にポリシーを残さないでください。

DISABLE_GROUPED_POLICYプロシージャ

このプロシージャは、行レベルのグループ・セキュリティ・ポリシーを使用禁止にします。

構文

DBMS_RLS.DISABLE_GROUPED_POLICY (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
group_name      IN VARCHAR2,
policy_name     IN VARCHAR2);

パラメータ

表135-11 ENABLE_GROUPED_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを関連付ける表、ビューまたはシノニムの名前。

group_name

ポリシー・グループの名前。

policy_name

使用可能または使用禁止にするポリシーの名前。

使用上の注意

- トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。

- コミットは、操作の最後に実行されます。

- このプロシージャを実行するか、enableパラメータをFALSEに設定したENABLE_GROUPED_POLICYプロシージャを実行すると、ポリシーが使用禁止になります。

DROP_GROUPED_POLICYプロシージャ

ポリシー・グループに対応付けられたポリシーを削除します。

構文

DBMS_RLS.DROP_GROUPED_POLICY (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
policy_group    IN VARCHAR2 'SYS_DEFAULT',
policy_name     IN VARCHAR2);

パラメータ

表135-12 DROP_GROUPED_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。

object_name

ポリシーを削除する表、ビューまたはシノニムの名前。

policy_group

ポリシーが属するポリシー・グループの名前。

policy_name

ポリシー名

DROP_POLICYプロシージャ

このプロシージャは、ファイングレイン・アクセス・コントロールのポリシーを表、ビューまたはシノニムから削除します。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。

関連項目:
使用上の注意

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.DROP_POLICY (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
policy_name     IN VARCHAR2);

パラメータ

表135-13 DROP_GROUPED_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。object_schemaが指定されていない場合、またはNULLが指定された場合は、現在のユーザーのスキーマと想定されます。

object_name

ポリシーを削除する表、ビューまたはシノニムの名前。

policy_name

表、ビューまたはシノニムから削除するポリシーの名前。

使用上の注意

- シノニムからVPDポリシーを削除すると、そのシノニムのすべての依存オブジェクト(シノニムを参照するポリシー・ファンクションを含む)がINVALIDとマークされます。

DROP_POLICY_CONTEXTプロシージャ

このプロシージャは、駆動コンテキストが1つ少なくなるように、オブジェクトから駆動コンテキストを削除します。

構文

DBMS_RLS.DROP_POLICY_CONTEXT (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
namespace       IN VARCHAR2,
attribute       IN VARCHAR2);

パラメータ

表135-14 DROP_POLICY_CONTEXTプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。object_schemaが指定されていない場合、またはNULLが指定された場合は、現在のユーザーのスキーマと想定されます。

object_name

ポリシーを削除する表、ビューまたはシノニムの名前。

namespace

駆動コンテキストのネームスペース

attribute

駆動コンテキストの属性

ENABLE_GROUPED_POLICYプロシージャ

このプロシージャは、行レベルのグループ・セキュリティ・ポリシーを使用可能または使用禁止にします。

構文

DBMS_RLS.ENABLE_GROUPED_POLICY (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2,
group_name      IN VARCHAR2,
policy_name     IN VARCHAR2,
enable          IN BOOLEAN TRUE);

パラメータ

表135-15 ENABLE_GROUPED_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。object_schemaが指定されていない場合、またはNULLが指定された場合は、現在のユーザーのスキーマと想定されます。

object_name

ポリシーを関連付ける表、ビューまたはシノニムの名前。

group_name

ポリシー・グループの名前。

policy_name

使用可能または使用禁止にするポリシーの名前。

enable

TRUEに設定するとポリシーが使用可能になり、FALSEに設定すると使用禁止になります。

使用上の注意

- トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。

- コミットは、操作の最後に実行されます。

- ポリシーは、その作成時に使用可能になっています。

ENABLE_POLICYプロシージャ

このプロシージャは、ファイングレイン・アクセス・コントロールのポリシーを使用可能または使用禁止にします。ポリシーは、その作成時に使用可能になっています。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。

関連項目:
使用上の注意

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.ENABLE_POLICY (
object_schema IN VARCHAR2 NULL,
object_name   IN VARCHAR2,
policy_name   IN VARCHAR2,
enable        IN BOOLEAN TRUE);

パラメータ

表135-16 ENABLE_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。object_schemaが指定されていない場合、またはNULLが指定された場合は、現在のユーザーのスキーマと想定されます。

object_name

ポリシーを関連付ける表、ビューまたはシノニムの名前。

policy_name

使用可能または使用禁止にするポリシーの名前。

enable

ポリシーを使用可能にする場合はTRUE、使用禁止にする場合はFALSE。

REFRESH_GROUPED_POLICYプロシージャ

このプロシージャは、リフレッシュ・ポリシーに関連付けられたSQL文を再解析します。

構文

DBMS_RLS.REFRESH_GROUPED_POLICY (
object_schema   IN VARCHAR2 NULL,
object_name     IN VARCHAR2 NULL,
group_name      IN VARCHAR2 NULL,
policy_name     IN VARCHAR2 NULL);

パラメータ

表135-17 REFRESH_GROUPED_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。object_schemaが指定されていない場合、またはNULLが指定された場合は、現在のユーザーのスキーマと想定されます。

object_name

ポリシーを関連付ける表、ビューまたはシノニムの名前。

group_name

ポリシー・グループの名前。

policy_name

ポリシー名

使用上の注意

- このプロシージャは、ポリシーに関連付けられたすべてのキャッシュ済の文を再解析します。これにより、ポリシーへの最新の変更内容がプロシージャの実行直後に有効になります。

- トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。

- コミットは、操作の最後に実行されます。

- 使用禁止になっているポリシーをリフレッシュしようとすると、プロシージャはエラーを戻します。

- このプロシージャは、状況依存VPDポリシーと共有のVPDポリシーのキャッシュされた結果を削除します。

REFRESH_POLICYプロシージャ

このプロシージャは、ポリシーに関連付けられたすべてのキャッシュ済の文を再解析します。これにより、ポリシーへの最新の変更内容がプロシージャの実行直後に有効になります。

トランザクションがある場合、その現行のトランザクションはプロシージャによって操作の実行前にコミットを実行します。ただし、トランザクションがDDLイベント・トリガー内にある場合は、最初にコミットを実行しません。

関連項目:
使用上の注意

コミットは、操作の最後にも実行されます。

構文

DBMS_RLS.REFRESH_POLICY (
object_schema IN VARCHAR2 NULL,
object_name   IN VARCHAR2 NULL,
policy_name   IN VARCHAR2 NULL);

パラメータ

表135-18 REFRESH_POLICYプロシージャのパラメータ

パラメータ

説明

object_schema

表、ビューまたはシノニムを含んでいるスキーマ。object_schemaが指定されていない場合、またはNULLが指定された場合は、現在のユーザーのスキーマと想定されます。

object_name

ポリシーが関連付けられている表、ビューまたはシノニムの名前。

policy_name

リフレッシュするポリシーの名前。

使用上の注意

- 使用禁止になっているポリシーをリフレッシュしようとすると、プロシージャはエラーを戻します。

- このプロシージャは、状況依存VPDポリシーと共有のVPDポリシーのキャッシュされた結果を削除します。

136 DBMS_ROLLING

DBMS_ROLLING PL/SQLパッケージを使用して、Active Data Guardを使用したローリング・アップグレード機能を実装します。この機能によって、Data Guard構成でOracle Databaseソフトウェアをアップグレードするプロセスがローリング形式で効率化されます。Active Data Guardを使用したローリング・アップグレード機能は、Oracle Active Data Guardオプション用のライセンスが必要で、Oracle Database 12cの最初のパッチセットで開始されるデータベース・バージョンのアップグレードに使用できます。

さらに、この機能は、他のデータベース・メンテナンス・タスクでもすぐに使用できます。メンテナンスが実行されるデータベースは、Oracle Database 12cリリース1(12.1)以上で実行される必要があります。このメンテナンス・タスクには次が含まれます。

- パーティション化されていない表へのパーティショニングの追加

- BasicFiles LOBからSecureFiles LOBへの変更

- CLOBとして格納されるXMLTypeからバイナリXMLとして格納されるXMLtypeへの変更

- 表をOLTP圧縮したものに変更

関連項目:

- DBMS_ROLLINGを使用したローリング・アップグレードの実行については、『Oracle Data Guard概要および管理』を参照してください。

この章では、次の項目について説明します。

- DBMS_ROLLINGの使用

- 概要

- セキュリティ・モデル

- DBMS_ROLLINGサブプログラムの要約

DBMS_ROLLINGの使用

- 概要

- セキュリティ・モデル

概要

DBMS_ROLLING PL/SQLパッケージは、Oracle Databaseソフトウェアのローリング・アップグレードなど、Data Guardの構成全体にローリング形式で任意の変更を加えるために使用できるプロシージャを提供します。このドキュメントではローリング・アップグレード操作を中心に取り上げていますが、この内容は、ローリングによるすべての変更のデプロイに適用できます。

現行のプライマリ・データベースですべてのプロシージャが実行されます。これにより、リモート・データベース間でローリング・アップグレードに関する様々な操作を実行する際に、移行の混乱が生じる可能性を排除します。必要な場合は、すべてのプロシージャを再度コールして、エラーや中断が発生した後のローリング・アップグレードを再開できます。(このアップグレード・スクリプトもスタンバイでの実行が必要です。)

このパッケージは、ユーザーがローリング・アップグレードを破棄する必要がある場合に、Data Guardの構成をアップグレード前の元の状態に戻すことができるプロシージャも提供します。

ローリング・アップグレードの実際の実行手順は3つに減少しました(Oracle Databaseソフトウェア自体のアップグレードと新しいOracle Databaseソフトウェアのディスク上の設定が除外されました)。Data Guardの構成のサイズによって手順の数が変化することはありません。

DBMS_ROLLINGパッケージでは、概念上、Data Guardの構成を先頭グループと後続グループの2つに分けます。まず、先頭グループのデータベースに対してアップグレード操作(またはデプロイするその他の変更)が実行されます。後続グループのデータベースにおけるOracle Databaseソフトウェア(またはデプロイしているその他すべての変更)のアップグレードは、スイッチオーバー操作後にのみ実行されます。それらはアップグレード対象にならないため、先頭グループのデータベースに加えられた変更の影響を評価する時間を確保できます。

各グループにはマスター・データベースがあります。DBMS_ROLLING.INIT_PLANプロシージャで指定される将来のプライマリ・データベースは、先頭グループ・マスター(LGM)と呼ばれる先頭グループのマスターです。一方、元のプライマリ・データベースは、後続グループ・マスター(TGM)と呼ばれる後続グループのマスターです。LGMとTGMを保護するようにデータベースを構成できます。LGMを保護するように指定されたスタンバイは、先頭グループ・スタンバイ(LGS)として参照されます。TGMを保護するように指定されたスタンバイは、後続グループ・スタンバイ(TGS)として参照されます。これらの用語は、このドキュメントを通じて使用されます。

セキュリティ・モデル

DBMS_ROLLINGパッケージを使用できるのは、DBAロールを付与されたユーザーです。

DBMS_ROLLINGサブプログラムの要約

表136-1 DBMS_ROLLINGパッケージのサブプログラム

サブプログラム

説明

INIT_PLANプロシージャ

システムによって生成されたデフォルト値を使用して、ローリング操作計画を初期化します。

DESTROY_PLANプロシージャ

既存のローリング操作計画とそのパラメータ、およびローリング操作に関連付けられたすべてのリソースを破棄します。

BUILD_PLANプロシージャ

計画のパラメータを検証し、ローリング操作計画を作成または変更します。

SET_PARAMETERプロシージャ

ローリング操作のパラメータを変更します。

START_PLANプロシージャ

ローリング操作を開始します。

SWITCHOVERプロシージャ

現在のプライマリ・データベースと一時的なロジカル・スタンバイ・データベースとの間でスイッチオーバーを実行します。

FINISH_PLANプロシージャ

ローリング操作を終了します。

ROLLBACK_PLANプロシージャ

ローリング操作を完全にロールバックします。

INIT_PLANプロシージャ

このプロシージャは、システムによって生成されたデフォルト値を使用して、ローリング操作計画を初期化します。

構文

DBMS_ROLLING.INIT_PLAN (
future_primary   IN VARCHAR2);

パラメータ

表136-2 INIT_PLANプロシージャのパラメータ

パラメータ

説明

future_primary

将来のプライマリ(先頭グループ・マスター(LGM)としても知られている)のDB_UNIQUE_NAME。

例外

- ORA-45400: 現在のデータベースでは操作は許可されていません

- ORA-45401: アップグレード計画はすでにアクティブです

- ORA-45402: LOG_ARCHIVE_CONFIGにはDG_CONFIG属性が含まれている必要があります

- ORA-45403: データベース%sはDG_CONFIGDG_CONFIGに指定されている必要があります

- ORA-45411: 操作には追加の引数が必要です

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- パラメータをカスタマイズするには、計画を準備する必要があります。

DESTROY_PLANプロシージャ

このプロシージャは、既存のアップグレード計画とそのパラメータ、およびローリング操作に関連付けられたすべてのリソースを破棄します。

構文

DBMS_ROLLING.DESTROY_PLAN ();

パラメータ

このプロシージャのパラメータはありません。

例外

- ORA-45422: 操作には既存の計画が必要です

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- ローリング操作が完了したら、このプロシージャをコールし、ローリング操作に関連付けられたすべての状態を完全にパージできます。

BUILD_PLANプロシージャ

このプロシージャは、計画のパラメータを検証し、ローリング操作計画を作成または変更します。ローリング操作を実行するには、正しく作成された計画が必要です。START_PLANプロシージャをコールしてローリング操作を開始するには、このプロシージャから正常に結果が戻される必要があります。計画の作成後にパラメータを変更すると、既存の計画を変更するために、BUILD_PLANプロシージャのコールが必要になる場合があります。DBA_ROLLING_EVENTSビューでは、SET_PARAMETERプロシージャをコールすると、計画を再構築する必要があるかどうかが示されます。計画を再構築しないと、ローリング操作を再開しようとしたときに、ORA-45416エラーが発生します。

構文

DBMS_ROLLING.BUILD_PLAN ();

パラメータ

このプロシージャのパラメータはありません。

例外

- ORA-45400: 現在のデータベースでは操作は許可されていません

- ORA-45403:データベース%sはDG_CONFIGに指定されている必要があります

- ORA-45414: リモート・データベースに接続できませんでした

- ORA-45419: DB_UNIQUE_NAMEパラメータを指定する必要があります

- ORA-45433: サポートされていないデータベースでフェイルオーバーが検出されました

- ORA-45434: 同じタイプのフェイルオーバーが複数検出されました

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- このプロシージャは、計画のパラメータとして指定されたデータベースに接続します。これらのインスタンスは、マウントされているかオープンしている必要があり、さらにネットワーク経由でアクセスできる必要があります。

SET_PARAMETERプロシージャ

このプロシージャは、ローリング操作のパラメータを変更します。

構文

DBMS_ROLLING.SET_PARAMETER (
scope    IN VARCHAR2 DEFAULT NULL,
name     IN NUMBER,
value    IN VARCHAR2);

パラメータ

表136-3 SET_PARAMETERプロシージャのパラメータ

パラメータ

説明

scope

パラメータの有効範囲。グローバル・パラメータの場合はNULL、ローカル・パラメータの場合は特定のデータベースのDB_UNIQUE_NAMEを指定します。

name

特定のパラメータのDBMS_ROLLING定数。

value

パラメータの新しい値を指定するか、NULLを指定してデフォルト値に戻します。

例外

- ORA-45400: 現在のデータベースでは操作は許可されていません

- ORA-45408: パラメータ名が不明です

- ORA-45409: パラメータ値が無効か範囲外です

- ORA-45410: パラメータを変更できません

- ORA-45411: 操作には追加の引数が必要です

- ORA-45412: パラメータの有効範囲引数が不明です

- ORA-45413: パラメータにデフォルト値がありません

- ORA-45414: リモート・データベースに接続できませんでした

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- パラメータ値を変更すると、既存の計画を変更するために、DBMS_ROLLING.BUILD_PLANプロシージャのコールが必要になる場合があります。ユーザーは、パラメータの設定後にDBA_ROLLING_EVENTSビューをチェックして、再構築が必要かどうかを判断します。

- 表136-4に、使用可能なパラメータとその説明を示します。表に記載されているパラメータ名と値は、すべてVARCHAR2型です。

- DBA_ROLLING_PARAMETERSビューのMINVALおよびMAXVAL列は、パラメータの値の有効範囲を示します。DBMS_ROLLING.INIT_PLANプロシージャが正常にコールされるまで、このビューにはパラメータが含まれません。

表136-4 DBMS_ROLLING.SET_PARAMETERプロシージャの有効な値

パラメータ名

グローバルかどうか

説明

デフォルト

ACTIVE_SESSIONS_TIMEOUT

はい

ローリング・アップグレードを停止するまでにACTIVE_SESSIONS_WAITを実行する最長時間(秒)。このパラメータは、ACTIVE_SESSIONS_WAITが1に設定されている場合にのみ有効です。

3600

ACTIVE_SESSIONS_WAIT

はい

スイッチオーバー操作がアクティブなセッションの完了を待機するかどうかを指定します。1に設定されている場合、SWITCHOVERプロシージャはアクティブなセッションの完了を待機します。0に設定されている場合、SWITCHOVERプロシージャはスイッチオーバーを処理するためにアクティブなセッションを終了します。

0

BACKUP_CONTROLFILE

はい

ローリング・アップグレード中に作成されるバックアップ制御ファイルのファイル名。

rolling_change_backup.f

DICTIONARY_LOAD_TIMEOUT

はい

ローリング・アップグレードを停止するまでにDICTIONARY_LOAD_WAITを実行する最長時間(秒)。このパラメータは、DICTIONARY_LOAD_WAITが1に設定されている場合にのみ有効です。

3600

DICTIONARY_LOAD_WAIT

はい

一時的なロジカル・スタンバイのインスタンス化で、REDOにデータ・ディクショナリのスナップショットのロード完了の待機を含めるかどうか。1に設定した場合、START_PLANプロシージャでは、完全にロードするまでディクショナリを戻しません。0に設定した場合、START_PLANプロシージャで、ディクショナリのロードが開始されたことの確認のみが行われます。

0

DICTIONARY_PLS_WAIT_INIT

はい

データ・ディクショナリをREDOに書き込むためにPL/SQLアクティビティを停止する試行と試行の間で待機する時間(秒)。

300

DICTIONARY_PLS_WAIT_TIMEOUT

はい

データ・ディクショナリをREDOに書き込むためにPL/SQLアクティビティの停止を試行する最長時間(秒)。

3600

EVENT_RECORDS

はい

DBA_ROLLING_EVENTSで許可するレコードの最大数。

10000

FAILOVER

はい

フェイルオーバー・イベントが発生した場合、自動的にアップグレード計画の調整を試行します。このパラメータは、その次のBUILD_PLANへのコールの終了時に、値を0に設定します。

0

GRP_PREFIX

DBMS_ROLLINGに含まれるプロシージャを実行すると、多くの保証付きリストア・ポイント(GRP)が、Data Guard構成内の様々なデータベースで作成されます。そのようなGRPの名前には、同一の接頭辞が含まれます。このパラメータを使用すると、デフォルトの接頭辞をオーバーライドできます。

DBMSRU

IGNORE_BUILD_WARNINGS

はい

BUILD_PLANプロシージャの実行中、例外を発生する警告を無視します。

1

IGNORE_LAST_ERROR

はい

次のローリング操作の開始時に、前回発生したエラーを無視します。このパラメータは、ローリング・アップグレードを再開するプロシージャのコール時に、値を0に設定します。

0

LAD_ENABLED_TIMEOUT

はい

有効になったログのアーカイブ先がVALID状態になるまでの最長待機時間(秒)。

600

LOG_LEVEL

はい

DBS_ROLLING PL/SQLパッケージのロギング・レベル。値INFOを指定すると、エラーおよび関連する致命的でない警告のロギングを行います。値FULLを指定すると、すべてのイベントのロギングを行います。

INFO

MEMBER

いいえ

指定したデータベースがメンバーであるアップグレード・グループ。

値LEADINGは、スタンバイが先頭アップグレード・グループのメンバーであることを示します。つまり、これは先頭グループ・マスター(LGM)のスタンバイです。LGMは一時的なロジカル・スタンバイに変換されるデータベースです。これはスイッチオーバー後、新しいプライマリ・データベースになります。

値TRAILINGは、スタンバイが後続アップグレード・グループのメンバーであることを示します。つまり、これは後続グループ・マスター(TGM)のスタンバイです。TGMは、オリジナルのプライマリ・データベースになります。

LEADING

READY_LGM_LAG_TIME

はい

READY_LGM_LAG_WAITパラメータに関連付けられている適用ラグ時間(秒)。

600

READY_LGM_LAG_TIMEOUT

はい

ローリング・アップグレードを停止するまでにREADY_LGM_LAG_WAITを実行する最長時間(秒)。このパラメータは、READY_LGM_LAG_WAITが1に設定されている場合にのみ有効です。

60

READY_LGM_LAG_WAIT

はい

START_PLANプロシージャで、ユーザー制御を戻す前に、先頭グループ・マスターの適用ラグがREADY_LGM_LAG_TIME秒を下回るまで待機するかどうか。1に設定されている場合、待機が実行されます。0に設定されている場合、待機は実行されません。

0

SWITCH_LGM_LAG_TIME

はい

SWITCH_LGM_LAG_WAITパラメータに関連付けられている適用ラグ時間(秒)。

600

SWITCH_LGM_LAG_TIMEOUT

はい

ローリング・アップグレードを停止するまでにSWITCH_LGM_LAG_WAITを実行する最長時間(秒)。このパラメータは、SWITCH_LGM_LAG_WAITが1に設定されている場合にのみ有効です。

60

SWITCH_LGM_LAG_WAIT

はい

SWITCHOVERプロシージャで、スイッチオーバーを開始する前に、先頭グループ・マスターの適用ラグがSWITCH_LGM_LAG_TIME秒を下回るまで待機するかどうか。1に設定されている場合、待機が実行されます。0に設定されている場合、待機は実行されません。

1

SWITCH_LGS_LAG_TIME

はい

SWITCH_LGS_LAG_WAITパラメータに関連付けられている適用ラグ時間(秒)。

60

SWITCH_LGS_LAG_TIMEOUT

はい

ローリング・アップグレードを停止するまでにSWITCH_LGS_LAG_WAITを実行する最長時間(秒)。このパラメータは、SWITCH_LGS_LAG_WAITが1に設定されている場合にのみ有効です。

60

SWITCH_LGS_LAG_WAIT

はい

SWITCHOVERプロシージャで、スイッチオーバーを開始する前に、先頭グループ・スタンバイの適用ラグがSWITCH_LGS_LAG_TIME秒を下回るまで待機するかどうか。1に設定されている場合、待機が実行されます。0に設定されている場合、待機は実行されません。

0

UPDATED_LGS_TIMEOUT

はい

ローリング・アップグレードを停止するまでにUPDATED_LGS_WAITを実行する最長時間(秒)。このパラメータは、UPDATED_LGS_WAITが1に設定されている場合にのみ有効です。

10800

UPDATED_LGS_WAIT

はい

SWITCHOVERプロシージャで、スイッチオーバーを開始する前に、先頭グループ・スタンバイがアップグレードの再実行のリカバリをすべて完了するまで待機するかどうか。1に設定されている場合、待機が実行されます。0に設定されている場合、待機は実行されません。

1

UPDATED_TGS_TIMEOUT

はい

ローリング・アップグレードを停止するまでにUPDATED_TGS_WAITを実行する最長時間(秒)。このパラメータは、UPDATED_TGS_WAITが1に設定されている場合にのみ有効です。

10800

UPDATED_TGS_WAIT

はい

FINISH_PLANプロシージャで、ユーザーに制御を戻す前に、後続グループ・スタンバイがアップグレードの再実行のリカバリをすべて完了するまで待機するかどうか。1に設定されている場合、待機が実行されます。0に設定されている場合、待機は実行されません。

1

START_PLANプロシージャ

このプロシージャは、ローリング操作を開始します。正常にローリング操作を開始するには、プライマリ・データベースでこのプロシージャを実行する必要があります。START_PLANプロシージャが完了すると、LGM(INIT_PLANプロシージャ内のfuture_primaryパラメータで識別される)は、完全構成された一時ロジカル・スタンバイ・データベースに変換されます。

構文

DBMS_ROLLING.START_PLAN ();

パラメータ

このプロシージャのパラメータはありません。

例外

- ORA-45400: 現在のデータベースでは操作は許可されていません

- ORA-45414: リモート・データベースに接続できませんでした

- ORA-45415: 指示の実行に失敗しました

- ORA-45416: 計画が再作成されるまで操作を開始できません

- ORA-45417: 現在のフェーズが%sではなかったため、操作は許可されませんでした

- ORA-45422: 操作には既存の計画が必要です

- ORA-45426: 管理対象のリカバリ・プロセスは実行されていません

- ORA-45427: ロジカル・スタンバイREDO Applyプロセスは実行されていません

- ORA-45428: データベースは予期されるデータベース・ロールではありません

- ORA-45435: 管理対象のリカバリ・プロセスが実行されていました

- ORA-45436: ロジカル・スタンバイREDO Applyプロセスが実行されていました

- ORA-45438: データベースがマウント・モードではありません

- ORA-45439: データベースが読取り/書込みモードでオープンしていません

- ORA-45486: データベース更新の進行状況に一貫性がありません

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- ローリング操作計画が、BUILD_PLANプロシージャを使用して生成済である必要があります。

SWITCHOVERプロシージャ

このプロシージャでは、現在のプライマリ・データベース(TGMとも呼ばれる)と一時ロジカル・スタンバイ・データベース(LGMとも呼ばれる)の間でスイッチオーバーが実行されます。このプロシージャが正常終了すると、LGMがData Guard構成のプライマリ・ロールを担当します。

構文

DBMS_ROLLING.SWITCHOVER ();

パラメータ

このプロシージャのパラメータはありません。

例外

- ORA-45400: 現在のデータベースでは操作は許可されていません

- ORA-45414: リモート・データベースに接続できませんでした

- ORA-45415: 指示の実行に失敗しました

- ORA-45416: 計画が再作成されるまで操作を開始できません

- ORA-45417: 現在のフェーズが%sではなかったため、操作は許可されませんでした

- ORA-45422: 操作には既存の計画が必要です

- ORA-45426: 管理対象のリカバリ・プロセスは実行されていません

- ORA-45427: ロジカル・スタンバイREDO Applyプロセスは実行されていません

- ORA-45428: データベースは予期されるデータベース・ロールではありません

- ORA-45435: 管理対象のリカバリ・プロセスが実行されていました

- ORA-45436: ロジカル・スタンバイREDO Applyプロセスが実行されていました

- ORA-45438: データベースがマウント・モードではありません

- ORA-45439: データベースが読取り/書込みモードでオープンしていません

- ORA-45486: データベース更新の進行状況に一貫性がありません

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- このプロシージャをコールできるのは、一時的なロジカル・スタンバイを手動でアップグレードし、それを上位バージョンのOracle Databaseでオープンした後のみです。

FINISH_PLANプロシージャ

このプロシージャは、ローリング操作を終了します。フィジカル・スタンバイとしては前回のプライマリ(TGMとも呼ばれる)が構成され、残りのフィジカル・スタンバイは、将来のプライマリによるアップグレードの再実行をリカバリするために構成されます。

構文

DBMS_ROLLING.FINISH_PLAN ();

パラメータ

このプロシージャのパラメータはありません。

例外

- ORA-45400: 現在のデータベースでは操作は許可されていません

- ORA-45414: リモート・データベースに接続できませんでした

- ORA-45415: 指示の実行に失敗しました

- ORA-45416: 計画が再作成されるまで操作を開始できません

- ORA-45417: 現在のフェーズが%sではなかったため、操作は許可されませんでした

- ORA-45422: 操作には既存の計画が必要です

- ORA-45426: 管理対象のリカバリ・プロセスは実行されていません

- ORA-45427: ロジカル・スタンバイREDO Applyプロセスは実行されていません

- ORA-45428: データベースは予期されるデータベース・ロールではありません

- ORA-45435: 管理対象のリカバリ・プロセスが実行されていました

- ORA-45436: ロジカル・スタンバイREDO Applyプロセスが実行されていました

- ORA-45438: データベースがマウント・モードではありません

- ORA-45439: データベースが読取り/書込みモードでオープンしていません

- ORA-45486: データベース更新の進行状況に一貫性がありません

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- このプロシージャをコールできるのは、上位バージョンのOracle Databaseで以前のプライマリと残りのフィジカル・スタンバイを再マウントした後のみです。

ROLLBACK_PLANプロシージャ

このプロシージャは、構成全体のローリング操作をロールバックします。完了すると、先頭グループに含まれるすべてのデータベースが、元のプライマリ・データベースのフィジカル・スタンバイになります。このプロシージャをコールできるのは、START_PLANプロシージャが起動した後で構成のスイッチオーバー操作が発生していない場合のみです。

構文

DBMS_ROLLING.ROLLBACK_PLAN;

パラメータ

このプロシージャのパラメータはありません。

例外

- ORA-45400: 現在のデータベースでは操作は許可されていません

- ORA-45414: リモート・データベースに接続できませんでした

- ORA-45415: 指示の実行に失敗しました

- ORA-45441: ロールバックの対象となるデータベースがありません

- ORA-45442: ロールの変更後はロールバックは実行できません

- ORA-65040: プラガブル・データベース内からの操作は許可されていません

使用上の注意

- 一時的なロジカル・スタンバイのアップグレードがすでに実行されている場合、下位バージョンのOracle Databaseでメディア・リカバリを手動で再開する必要があります。

137 DBMS_ROWID

DBMS_ROWIDパッケージによって、ユーザーはROWIDを作成し、PL/SQLプログラムとSQL文からROWIDに関する情報を取得できます。64文字ベースの外部ROWIDを解析するためのコードを記述しないで、データ・ブロック番号、オブジェクト番号および他のROWIDコンポーネントを検索できます。DBMS_ROWIDは、Oracle Databaseのバージョン7からバージョン8.Xにアップグレードするためのパッケージです。

注意:
DBMS_ROWIDは、ユニバーサルROWID(UROWID)とともには使用しません。

この章では、次の項目について説明します。

- DBMS_ROWIDの使用方法

- セキュリティ・モデル

- タイプ

- 例外

- 使用上の注意

- 例

- DBMS_ROWIDサブプログラムの要約

DBMS_ROWIDの使用方法

- セキュリティ・モデル

- タイプ

- 例外

- 使用上の注意

- 例

セキュリティ・モデル

このパッケージは、パッケージ所有者SYSではなく、コール・ユーザーの権限で実行されます。

タイプ

- 拡張タイプと制限タイプ

- 検証タイプ

- オブジェクト・タイプ

- 変換タイプ

拡張タイプと制限タイプ

次のタイプがあります。

- RESTRICTED: 制限付きROWID

- EXTENDED: 拡張ROWID

次に例を示します。

rowid_type_restricted constant integer := 0;
rowid_type_extended   constant integer := 1;

注意:
拡張ROWIDは、Oracle Databaseのバージョン8.Xi以上でのみ使用されます。

検証タイプ

表137-1 検証タイプ

結果

説明

VALID

有効ROWID

INVALID

無効ROWID

次に例を示します。

rowid_is_valid   constant integer := 0;
rowid_is_invalid constant integer := 1;

オブジェクト・タイプ

表137-2 オブジェクト・タイプ

結果

説明

UNDEFINED

(制限付きROWIDに対する)オブジェクト番号が定義されていません。

次に例を示します。

rowid_object_undefined constant integer := 0;

変換タイプ

表137-3 変換タイプ

結果

説明

INTERNAL

ROWIDタイプの列から、またはその列への変換。

EXTERNAL

文字列フォーマットから、または文字列フォーマットへの変換。

次に例を示します。

rowid_convert_internal constant integer := 0;
rowid_convert_external constant integer := 1;

例外

表137-4 例外

例外

説明

ROWID_INVALID

無効なROWID形式。

ROWID_BAD_BLOCK

ブロックがファイルの最後を超えています。

次に例を示します。

ROWID_INVALID exception;
pragma exception_init(ROWID_INVALID, -1410);

ROWID_BAD_BLOCK exception;
pragma exception_init(ROWID_BAD_BLOCK, -28516);

使用上の注意

- このパッケージにあるファンクションの一部は、ROWIDなどの単一のパラメータを必要とします。このパラメータは、1つの文字またはPL/SQL ROWIDで、その内容は必要に応じて制限または拡張されます。

- DBMS_ROWIDのファンクションとプロシージャはPL/SQLコードからコールでき、そのファンクションはSQL文で使用することもできます。

注意:
ROWID_INFOは、プロシージャです。これは、PL/SQLコードでのみ使用できます。

- DBMS_ROWIDパッケージのファンクションは、他の組込みSQLファンクションと同じように使用でき、すなわち式を使用できる場合は必ず使用できます。次の例では、EMP表にある単一行のブロック番号のみを戻すために、ROWID_BLOCK_NUMBERファンクションが使用されています。

SELECT DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)
FROM emp
WHERE ename = 'KING';

- 「ORA: 452,0, サブプログラム'%s'が対応付けられたpragma restrict_referencesに違反しています」のエラーが発生した場合は、次の理由が考えられます。

- 現行のプロシージャまたはファンクションに問題があるため

- プラグマなしでプロシージャまたはファンクションをコールしたか、または制限が不十分なプラグマでプロシージャまたはファンクションをコールしたため

- パッケージの初期化コードに関連したパッケージ・プロシージャまたはファンクションをコールしたか、またはデフォルト値を設定するパッケージ・プロシージャまたはファンクションをコールしたため

例

次の例では、EMP表にある行のROWIDを戻し、DBMS_ROWIDパッケージのROWID_OBJECTファンクションを使用して、そのROWIDからデータ・オブジェクト番号を抽出して表示します。

DECLARE
object_no   INTEGER;
row_id      ROWID;
...
BEGIN
SELECT ROWID INTO row_id FROM emp
WHERE empno = 7499;
object_no := DBMS_ROWID.ROWID_OBJECT(row_id);
DBMS_OUTPUT.PUT_LINE('The obj. # is '|| object_no);
...

DBMS_ROWIDサブプログラムの要約

表137-5 DBMS_ROWIDパッケージのサブプログラム

サブプログラム

説明

ROWID_BLOCK_NUMBERファンクション

ROWIDのブロック番号を戻します。

ROWID_CREATEファンクション

ROWIDをテスト用に限って作成します。

ROWID_INFOプロシージャ

ROWIDのタイプとコンポーネントを戻します。

ROWID_OBJECTファンクション

拡張ROWIDのオブジェクト番号を戻します。

ROWID_RELATIVE_FNOファンクション

ROWIDのファイル番号を戻します。

ROWID_ROW_NUMBERファンクション

行番号を戻します。

ROWID_TO_ABSOLUTE_FNOファンクション

特定の表にある行について、ROWIDに関連する絶対ファイル番号を戻します。

ROWID_TO_EXTENDEDファンクション

ROWIDを制限付き形式から拡張形式に変換します。

ROWID_TO_RESTRICTEDファンクション

拡張ROWIDを制限付き形式に変換します。

ROWID_TYPEファンクション

ROWIDのタイプを戻します。0は制限タイプ、1は拡張タイプです。

ROWID_VERIFYファンクション

ROWID_TO_EXTENDEDファンクションがROWIDを適切に拡張できるかどうかをチェックします。

ROWID_BLOCK_NUMBERファンクション

このファンクションは、入力されたROWIDのデータベース・ブロック番号を戻します。

構文

DBMS_ROWID.ROWID_BLOCK_NUMBER (
row_id      IN   ROWID,
ts_type_in  IN   VARCHAR2 DEFAULT 'SMALLFILE')
RETURN NUMBER;

プラグマ

pragma RESTRICT_REFERENCES(rowid_block_number,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-6 ROWID_BLOCK_NUMBERファンクションのパラメータ

パラメータ

説明

row_id

解釈するROWID。

ts_type_in

行が属する表領域のタイプ(bigfile/smallfile)。

例

次のSQL文の例では、ROWIDからブロック番号を選択し、別の表に挿入します。

INSERT INTO T2 (SELECT dbms_rowid.rowid_block_number(ROWID, 'BIGFILE')
FROM some_table
WHERE key_value = 42);

ROWID_CREATEファンクション

このファンクションによって、コンポーネント部分をパラメータとしてROWIDを作成します。

Oracleサーバーでは、データベース内のデータを指す有効なROWIDを作成することしかできないため、このファンクションは、ROWID操作のテストに役立ちます。

構文

DBMS_ROWID.ROWID_CREATE (
rowid_type    IN NUMBER,
object_number IN NUMBER,
relative_fno  IN NUMBER,
block_number  IN NUMBER,
row_number    IN NUMBER)
RETURN ROWID;

プラグマ

pragma RESTRICT_REFERENCES(rowid_create,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-7 ROWID_CREATEファンクションのパラメータ

パラメータ

説明

rowid_type

タイプ(制限付きまたは拡張)。

制限付きROWIDについては、rowid_typeパラメータを0(ゼロ)に設定します。拡張ROWIDを作成するには、1を設定します。

rowid_typeを0(ゼロ)に指定すると、指定されたobject_numberパラメータは無視され、ROWID_CREATEファンクションは制限付きROWIDを戻します。

object_number

データ・オブジェクト番号(制限付きの場合はrowid_object_undefined)。

relative_fno

相対ファイル番号。

block_number

このファイル内のブロック番号。

row_number

このブロック内の行番号を戻します。

例

ダミーの拡張ROWIDを作成します。

my_rowid := DBMS_ROWID.ROWID_CREATE(1, 9999, 12, 1000, 13);

rowid_objectファンクションが戻す値を検索します。

obj_number := DBMS_ROWID.ROWID_OBJECT(my_rowid);

変数obj_numberには、9999が入っています。

ROWID_INFOプロシージャ

このプロシージャは、ROWIDのタイプ(制限付きまたは拡張)を含めた情報と、ROWIDのコンポーネントを戻します。これはプロシージャで、SQL文では使用できません。

構文

DBMS_ROWID.ROWID_INFO (
rowid_in         IN   ROWID,
rowid_type       OUT  NUMBER,
object_number    OUT  NUMBER,
relative_fno     OUT  NUMBER,
block_number     OUT  NUMBER,
row_number       OUT  NUMBER);

プラグマ

pragma RESTRICT_REFERENCES(rowid_info,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-8 ROWID_INFOプロシージャのパラメータ

パラメータ

説明

rowid_in

解釈するROWID。ROWIDが制限付き(0)か、または拡張(1)ROWIDかを判別します。

rowid_type

タイプ(制限付きまたは拡張)を戻します。

object_number

データ・オブジェクト番号(制限付きの場合はrowid_object_undefined)を戻します。

relative_fno

相対ファイル番号を戻します。

block_number

このファイル内のブロック番号を戻します。

row_number

このブロック内の行番号を戻します。

関連項目:
「ROWID_TYPEファンクション」

例

この例では、ROWID_CREATEで作成したROWIDの値を読み込んで戻します。

DBMS_ROWID.ROWID_INFO (
my_rowid, rid_type, obj_num, file_num, block_num, row_num, 'BIGFILE');

ROWID_OBJECTファンクション

このファンクションは、拡張ROWIDのデータ・オブジェクト番号を戻します。入力されたROWIDが制限付きROWIDの場合は、0(ゼロ)を戻します。

構文

DBMS_ROWID.ROWID_OBJECT (
rowid_id IN ROWID)
RETURN NUMBER;

プラグマ

pragma RESTRICT_REFERENCES(rowid_object,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-9 ROWID_OBJECTファンクションのパラメータ

パラメータ

説明

row_id

解釈するROWID。

注意:
制限付きROWIDについては、ROWID_OBJECT_UNDEFINEDの定数が戻されます。

例

SELECT dbms_rowid.rowid_object(ROWID)
FROM emp
WHERE empno = 7499;

ROWID_RELATIVE_FNOファンクション

このファンクションは、INパラメータで指定されたROWIDの相対ファイル番号を戻します。(ファイル番号は表領域に対して相対的です。)

構文

DBMS_ROWID.ROWID_RELATIVE_FNO (
rowid_id      IN   ROWID,
ts_type_in    IN   VARCHAR2 DEFAULT 'SMALLFILE')
RETURN NUMBER;

プラグマ

pragma RESTRICT_REFERENCES(rowid_relative_fno,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-10 ROWID_RELATIVE_FNOファンクションのパラメータ

パラメータ

説明

row_id

解釈するROWID。

ts_type_in

行が属する表領域のタイプ(bigfile/smallfile)。

例

次の例のPL/SQLコードは、相対ファイル番号を戻します。

DECLARE
file_number    INTEGER;
rowid_val      ROWID;
BEGIN
SELECT ROWID INTO rowid_val
FROM dept
WHERE loc = 'Boston';
file_number :=
dbms_rowid.rowid_relative_fno(rowid_val, 'SMALLFILE');
...

ROWID_ROW_NUMBERファンクション

このファンクションは、ROWID INパラメータから行番号を抽出します。

構文

DBMS_ROWID.ROWID_ROW_NUMBER (
row_id IN ROWID)
RETURN NUMBER;

プラグマ

PRAGMA RESTRICT_REFERENCES(rowid_row_number,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-11 ROWID_ROW_NUMBERファンクションのパラメータ

パラメータ

説明

row_id

解釈するROWID。

例

行番号を選択します。

SELECT dbms_rowid.rowid_row_number(ROWID)
FROM emp
WHERE ename = 'ALLEN';

ROWID_TO_ABSOLUTE_FNOファンクション

このファンクションは、指定のスキーマと表にある行について、ファイル番号が絶対番号であるROWIDから、絶対ファイル番号を抽出します。スキーマ名とスキーマ・オブジェクト名(表名など)がこのファンクションのINパラメータとして提供されます。

構文

DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO (
row_id      IN ROWID,
schema_name IN VARCHAR2,
object_name IN VARCHAR2)
RETURN NUMBER;

プラグマ

pragma RESTRICT_REFERENCES(rowid_to_absolute_fno,WNDS,WNPS,RNPS);

パラメータ

表137-12 ROWID_TO_ABSOLUTE_FNOファンクションのパラメータ

パラメータ

説明

row_id

解釈するROWID。

schema_name

表が含まれるスキーマの名前。

object_name

表名。

例

DECLARE
abs_fno        INTEGER;
rowid_val      CHAR(18);
object_name    VARCHAR2(20) := 'EMP';
BEGIN
SELECT ROWID INTO rowid_val
FROM emp
WHERE empno = 9999;
abs_fno := dbms_rowid.rowid_to_absolute_fno(
rowid_val, 'SCOTT', object_name);

注意:
パーティション・オブジェクトの名前には、パーティション名やサブパーティション名ではなく、表名を指定する必要があります。

ROWID_TO_EXTENDEDファンクション

このファンクションは、ユーザーが指定するスキーマや表にある行をアドレス指定している制限付き形式のROWIDを、拡張ROWID形式に変換します。このファンクションは、今後、このパッケージから削除されて別の場所に移動する可能性があります。

構文

DBMS_ROWID.ROWID_TO_EXTENDED (
old_rowid       IN ROWID,
schema_name     IN VARCHAR2,
object_name     IN VARCHAR2,
conversion_type IN INTEGER)
RETURN ROWID;

プラグマ

pragma RESTRICT_REFERENCES(rowid_to_extended,WNDS,WNPS,RNPS);

パラメータ

表137-13 ROWID_TO_EXTENDEDファンクションのパラメータ

パラメータ

説明

old_rowid

変換するROWID。

schema_name

表が含まれるスキーマの名前(オプション)。

object_name

表名(オプション)。

conversion_type

次の定数が定義されます。

ROWID_CONVERT_INTERNAL (:=0)

ROWID_CONVERT_EXTERNAL (:=1)

戻り値

ROWID_TO_EXTENDEDは、拡張文字列形式でROWIDを戻します。入力されたROWIDがNULLの場合、ファンクションはNULLを戻します。ゼロ値(00000000.0000.0000)のROWIDが提供されると、ゼロ値の制限付きROWIDが戻されます。

例

SCOTTスキーマにRIDSと呼ばれる表があり、その表には、ROWID(制限付き)を保持する列ROWID_COLと、SCOTTスキーマのその他の表を指す列TABLE_COLが含まれていると仮定します。次の文を使用して、ROWIDを拡張形式に変換できます。

UPDATE SCOTT.RIDS
SET rowid_col =
dbms_rowid.rowid_to_extended (
rowid_col, 'SCOTT", TABLE_COL, 0);

使用上の注意

- スキーマ名とオブジェクト名がINパラメータとして提供されると、このファンクションは、指定の表におけるSELECT認可レベルを検証し、表のデータ・オブジェクト番号を使用して、提供された制限付きROWIDを拡張ROWIDに変換します。ROWID_TO_EXTENDEDは値を戻しますが、このファンクションがコールされたとき、または拡張ROWIDが実際に使用されたときに、変換されたROWIDが表内の有効な行を実際に参照していることは保証しません。

- スキーマ名とオブジェクト名が提供されない場合(NULLとして渡された場合)、このファンクションは、提供された制限付きROWIDが指定しているページをフェッチしようとします。ROWIDに格納されているファイル番号は、絶対ファイル番号として処理されます。このため、そのファイルが削除されていたり、その番号が移行前にも使用されている場合は問題が生じます。フェッチされたページが有効な表に属している場合、この表のデータ・オブジェクト番号は拡張ROWID値への変換時に使用されます。これは非常に効率が悪いため、ターゲット表が不明な場合に最終手段としてのみ行うことをお薦めします。ユーザーは、変換された値の使用時にも、正しい表名を覚えている必要があります。

- 拡張ROWID値が提供された場合、入力した拡張ROWIDのデータ・オブジェクト番号は、表名パラメータから計算されたデータ・オブジェクト番号と照合して検証されます。2つの番号が一致しない場合は、INVALID_ROWID例外が発生します。一致する場合は、入力したROWIDが戻されます。

- ROWID_TO_EXTENDEDはパーティション表では使用できません。

関連項目:
指定のROWIDを拡張形式に変換できるかどうかの判別方法については、「ROWID_VERIFYファンクション」を参照してください。

ROWID_TO_RESTRICTEDファンクション

このファンクションは、拡張ROWIDを制限付きROWID形式に変換します。

構文

DBMS_ROWID.ROWID_TO_RESTRICTED (
old_rowid       IN ROWID,
conversion_type IN INTEGER)
RETURN ROWID;

プラグマ

pragma RESTRICT_REFERENCES(rowid_to_restricted,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-14 ROWID_TO_RESTRICTEDファンクションのパラメータ

パラメータ

説明

old_rowid

変換するROWID。

conversion_type

次の定数が定義されます。

ROWID_CONVERT_INTERNAL (:=0)

ROWID_CONVERT_EXTERNAL (:=1)

ROWID_TYPEファンクション

このファンクションは、ROWIDが制限付きROWIDの場合は0(ゼロ)、拡張の場合は1を戻します。

構文

DBMS_ROWID.ROWID_TYPE (
rowid_id IN ROWID)
RETURN NUMBER;

プラグマ

pragma RESTRICT_REFERENCES(rowid_type,WNDS,RNDS,WNPS,RNPS);

パラメータ

表137-15 ROWID_TYPEファンクションのパラメータ

パラメータ

説明

row_id

解釈するROWID。

例

IF DBMS_ROWID.ROWID_TYPE(my_rowid) = 1 THEN
my_obj_num := DBMS_ROWID.ROWID_OBJECT(my_rowid);

ROWID_VERIFYファンクション

このファンクションは、ROWIDを検証します。入力した制限付きROWIDが、入力スキーマ名と表名を指定して、拡張形式に変換できる場合は、0を戻し、変換できない場合は1を戻します。

注意:
次の例に示すように、このファンクションをSQL文のWHERE句で使用できます。

構文

DBMS_ROWID.ROWID_VERIFY (
rowid_in        IN ROWID,
schema_name     IN VARCHAR2,
object_name     IN VARCHAR2,
conversion_type IN INTEGER
RETURN NUMBER;

プラグマ

pragma RESTRICT_REFERENCES(rowid_verify,WNDS,WNPS,RNPS);

パラメータ

表137-16 ROWID_VERIFYファンクションのパラメータ

パラメータ

説明

rowid_in

検証するROWID。

schema_name

表が含まれるスキーマの名前。

object_name

表名。

conversion_type

次の定数が定義されます。

ROWID_CONVERT_INTERNAL (:=0)

ROWID_CONVERT_EXTERNAL (:=1)

例

ROWID_TO_EXTENDEDファンクションの例にあるスキーマを考慮しながら、次の文を使用すると、無効なROWIDを変換前に検索できます。これにより、無効を事前に修正できます。

SELECT ROWID, rowid_col
FROM SCOTT.RIDS
WHERE dbms_rowid.rowid_verify(rowid_col, NULL, NULL, 0) =1;

関連項目:
第260章「UTL_RAW」、第262章「UTL_REF」

138 DBMS_RULE

DBMS_RULEパッケージには、指定されたイベントに対してルール・セットの評価を可能にするサブプログラムが含まれています。

この章では、次の項目について説明します。

- DBMS_RULEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_RULEサブプログラムの要約

DBMS_RULEの使用方法

この項では、DBMS_RULEパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージには、指定されたイベントに対してルール・セットの評価を可能にするサブプログラムが含まれています。

関連項目:

- DBMS_RULEパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

- このパッケージおよびルールの詳細は、第139章「DBMS_RULE_ADM」および『Oracle Streams概要および管理』を参照してください。

セキュリティ・モデル

PUBLICには、このパッケージのEXECUTE権限が付与されます。

関連項目:
ユーザー・グループPUBLICの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

DBMS_RULEサブプログラムの要約

表138-1 DBMS_RULEパッケージのサブプログラム

サブプログラム

説明

CLOSE_ITERATORプロシージャ

オープンしているイテレータをクローズします。

EVALUATEプロシージャ

指定した評価コンテキストを使用している指定ルール・セット内のルールを評価します。

EVALUATE_EXPRESSIONプロシージャ

セッションのログイン・ユーザーとして式を評価します。

GET_NEXT_HITファンクション

TRUEに評価された次のルールをTRUEルールのイテレータから戻します。または、MAYBEに評価された次のルールをMAYBEルールのイテレータから戻します。TRUEに評価されたルールおよびMAYBEに評価されたルールが両方ともない場合は、NULLを戻します。

IS_FASTプロシージャ

式を迅速に評価できる場合、TRUEを戻します。式を迅速に評価できるのは、エンジンで内部SQLを実行する必要がなく、PL/SQLが参照されたときでもPL/SQLレイヤーに移動する必要がない場合です。

CLOSE_ITERATORプロシージャ

このプロシージャは、オープンしているイテレータをクローズします。

構文

DBMS_RULE.CLOSE_ITERATOR(
iterator  IN  BINARY_INTEGER);

パラメータ

表138-2 CLOSE_ITERATORプロシージャのパラメータ

パラメータ

説明

iterator

クローズされるイテレータ。

使用上の注意

このプロシージャには、同じセッションでこのプロシージャより前のDBMS_RULE.EVALUATEコールで戻された、オープン状態のイテレータが必要です。ただし、このプロシージャを実行するユーザーには、評価されるルール・セットに対する権限は必要ありません。

イテレータをクローズすると、そのイテレータに関連するメモリーなどのリソースが解放されます。そのため、不要になったイテレータはクローズすることをお薦めします。

関連項目:
EVALUATEプロシージャ

EVALUATEプロシージャ

このプロシージャは、指定したイベントに対して指定された評価コンテキストを使用する指定ルール・セット内のルールを評価します。

このプロシージャはオーバーロードされています。true_rulesパラメータおよびmaybe_rulesパラメータは、true_rules_iteratorパラメータおよびmaybe_rules_iteratorパラメータと相互に排他的です。また、true_rulesパラメータとmaybe_rulesパラメータを持つプロシージャにはstop_on_first_hitパラメータがありますが、それ以外のプロシージャにはありません。

構文

DBMS_RULE.EVALUATE(
rule_set_name          IN     VARCHAR2,
evaluation_context     IN     VARCHAR2,
event_context          IN     SYS.RE$NV_LIST               DEFAULT NULL,
table_values           IN     SYS.RE$TABLE_VALUE_LIST      DEFAULT NULL,
column_values          IN     SYS.RE$COLUMN_VALUE_LIST     DEFAULT NULL,
variable_values        IN     SYS.RE$VARIABLE_VALUE_LIST   DEFAULT NULL,
attribute_values       IN     SYS.RE$ATTRIBUTE_VALUE_LIST  DEFAULT NULL,
result_cache           IN     BOOLEAN                      DEFAULT FALSE,
stop_on_first_hit      IN     BOOLEAN                      DEFAULT FALSE,
simple_rules_only      IN     BOOLEAN                      DEFAULT FALSE,
true_rules             OUT    SYS.RE$RULE_HIT_LIST,
maybe_rules            OUT    SYS.RE$RULE_HIT_LIST);

DBMS_RULE.EVALUATE(
rule_set_name          IN     VARCHAR2,
evaluation_context     IN     VARCHAR2,
event_context          IN     SYS.RE$NV_LIST               DEFAULT NULL,
table_values           IN     SYS.RE$TABLE_VALUE_LIST      DEFAULT NULL,
column_values          IN     SYS.RE$COLUMN_VALUE_LIST     DEFAULT NULL,
variable_values        IN     SYS.RE$VARIABLE_VALUE_LIST   DEFAULT NULL,
attribute_values       IN     SYS.RE$ATTRIBUTE_VALUE_LIST  DEFAULT NULL,
simple_rules_only      IN     BOOLEAN                      DEFAULT FALSE,
true_rules_iterator    OUT    BINARY_INTEGER,
maybe_rules_iterator   OUT    BINARY_INTEGER);

パラメータ

表138-3 EVALUATEプロシージャのパラメータ

パラメータ

説明

rule_set_name

[schema_name.]rule_set_nameの形式で指定するルール・セット名。たとえばhrスキーマのhr_rulesという名前のルール・セットにあるルールのすべてを評価するには、このパラメータにhr.hr_rulesを入力します。スキーマが指定されていない場合は、現在のユーザーのスキーマが使用されます。

evaluation_context

[schema_name.]evaluation_context_nameの形式で指定する、評価コンテキスト名。スキーマが指定されていない場合は、現在のユーザー名が使用されます。

評価されるのは、指定した評価コンテキストを使用しているルールのみです。

event_context

評価の原因となるイベントを識別する名前/値ペアのリスト。

table_values

評価コンテキストの作成時に指定された表の別名を使用した、表の行のデータ。表の別名は、リスト内で一意になるようにしてください。

column_values

表の行の部分データが含まれます。値がtable_valuesですでに指定されている表には、列値を指定しないでください。

variable_values

変数のデータを含むリスト。

明示的な変数値を認識する唯一の方法は、その値をこのリストに指定することです。

暗黙的な変数値がリストに指定されていない場合は、暗黙的な変数の値を取得するためのファンクションが起動されます。暗黙的な変数値がリストに指定されている場合は、この値が使用され、ファンクションは起動されません。

attribute_values

変数の部分データが含まれます。値がvariable_valuesですでに指定されている変数には、属性値を指定しないでください。

stop_on_first_hit

TRUEの場合、ルール・エンジンは、TRUEルールを検出次第、評価を停止します。

TRUEを指定して、TRUEルールがない場合、ルール・エンジンは、指定データの多くをTRUEに評価できるルールが見つかり次第、評価を停止します。

FALSEの場合、ルール・エンジンは、TRUEルールの検出後も、ルールの評価を続行します。

simple_rules_only

TRUEの場合は、迅速に評価できる単純な(SQLを使用しない)ルールのみが、評価の対象となります。

FALSEの場合は、すべてのルールが評価されます。

true_rules

EVALUATEプロシージャの出力をRE$RULE_HIT_LISTタイプの配列で受け取ります。

TRUEに評価されるルールがない場合、true_rulesは空です。

少なくとも1つのルールがTRUEに評価され、stop_on_first_hitがTRUEの場合、true_rulesには、TRUEに評価された1つのルールが含まれます。

stop_on_first_hitがFALSEの場合、true_rulesには、TRUEに評価されたすべてのルールが含まれます。

maybe_rules

すべてのルールが、追加データの必要もなく、完全に評価できる場合、maybe_rulesは空です。

stop_on_first_hitがTRUEの状態で、指定データの多くをTRUEに評価できるルールが少なくとも1つあり、TRUEに評価されるルールがない場合、maybe_rulesには、TRUEに評価できるルールが1つ含まれます。

stop_on_first_hitがFALSEの場合、maybe_rulesには、指定データの多くをTRUEに評価できるすべてのルールが含まれます。

true_rules_iterator

TRUEのルールにアクセスするイテレータが含まれます。

maybe_rules_iterator

追加データやSQL発行をTRUEにできるルールにアクセスするイテレータが含まれます。

result_cache

TRUEの場合、結果キャッシュが作成されます。EVALUATEプロシージャがtrue_rules_iteratorまたはmaybe_rules_iteratorを指定してコールされた場合、result_cacheは有効になりません。

使用上の注意

注意:
指定したルールとは異なる評価コンテキストを使用しているルール・セット内のルールは、評価の対象になりません。

ルール・セット内のルールは、table_values、column_values、variable_valuesおよびattribute_valuesに指定されているデータを使用して評価されます。これらの値は、指定した評価コンテキストの表および変数を参照する必要があります。そうでない場合は、エラーが発生します。

コール元は、stop_on_first_hitを使用して、最初のTRUEルールまたは最初のMAYBEルール(TRUEルールがない場合)の検出直後に評価を停止するかどうかを指定できます。

また、コール元は、simple_rules_onlyを使用して、迅速に評価できる単純な(SQLを使用しない)ルールのみを評価対象とするかどうかも指定できます。この指定で、評価は迅速化されますが、SQLなしでは評価できないルールは、MAYBEルールとして戻されます。

部分評価はサポートされています。EVALUATEプロシージャは、一部の表、列、変数または属性に関するデータによってのみコールできます。この場合、ルール内の1つ以上の単純な式の値に基づいてもTRUEまたはFALSEの判断ができないかぎり、データ不足が原因で評価できないルールはMAYBEルールとして戻されます。たとえば、変数「x」の属性「a.b」に1の値を指定すると、表「tab」の値を指定しなくても、次のルール条件のルールがTRUEで戻ります。

(:x.a.b = 1) or (tab.c > 10)

評価の結果には、次の2種類があります。

- TRUEルールで、指定したデータに基づいてTRUEに評価されたルールのリストです。このルールが戻されるのは、TRUEに評価されるすべてのルールを戻すOUTパラメータtrue_rules、またはTRUEに評価されるルールを1回に1つずつ戻すOUTパラメータtrue_rules_iteratorのいずれかです。

- MAYBEルール。次の理由の1つのために評価できなかったルールのリストです。

- ルールが使用不可のデータを参照しているため。たとえば、変数の属性"x.a.b"は指定されているが、変数「x」、属性「a」または属性「a.b」には値が指定されていない場合がこれに該当します。

- ルールが、(SQLなしで)迅速に評価できるほど単純ではなく、simple_rules_onlyがTRUEに指定されているため。または、部分データを使用できるため。

MAYBEルールが戻されるのは、MAYBEに評価されるすべてのルールを戻すOUTパラメータmaybe_rules、またはMAYBEに評価されるルールを1回に1つずつ戻すOUTパラメータmaybe_rules_iteratorのいずれかです。

コール元は、イベントに対してプロシージャがTRUEおよびMAYBEに評価されるすべてのルールを戻すか、TRUEおよびMAYBEに評価されるルールのイテレータを戻すかを指定できます。TRUEルールのイテレータの場合、クライアントはTRUEに評価される各ルールを1回に1つずつフェッチでき、MAYBEルールのイテレータの場合、クライアントはMAYBEに評価される各ルールを1回に1つずつフェッチできます。

イテレータを使用する場合は、DBMS_RULEパッケージのGET_NEXT_HITファンクションを使用して、TRUEまたはMAYBEに評価される次のルールをイテレータから取得します。イテレータが不要になった場合は、そのイテレータが使用していたメモリーなどのリソースを解放するため、イテレータをクローズすることをお薦めします。次の方法で、イテレータをクローズできます。

- DBMS_RULEパッケージのCLOSE_ITERATORプロシージャを、イテレータを指定して実行します。

- TRUEまたはMAYBEに評価されるルールがすでに存在しないため、イテレータはNULLを戻します。

- イテレータを実行しているセッションが終了します。

DBMS_RULE.EVALUATEプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- ルール・セットに対するEXECUTE_ON_RULE_SET権限があること。

- EXECUTE_ANY_RULE_SETシステム権限があること。

- ルール・セットの所有者であること。

注意:
ルール・エンジンはアクションを開始しません。戻されたルールとともにアクション・コンテキストが戻る場合がありますが、ルール・エンジンのクライアントは、必要なアクションを開始する必要があります。

関連項目:

- DBMS_RULEパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

- GET_NEXT_HITファンクション

- CLOSE_ITERATORプロシージャ

EVALUATE_EXPRESSIONプロシージャ

このプロシージャを使用すると、セッションのログイン・ユーザーとして式を評価できます。

同じ表別名と変数タイプを使用して同一の式を再実行した場合、同じコンパイルされたコンテキストが再利用されます。コンパイルするキャッシュのサイズが固定されている場合、期限切れになる可能性があります。

構文

DBMS_RULE.EVALUATE_EXPRESSION(
rule_expression         IN         VARCHAR2,
table_aliases           IN         SYS.RE$TABLE_ALIAS_LIST:= NULL,
variable_types          IN         SYS.RE$VARIABLE_TYPE_LIST:= NULL,
table_values            IN         SYS.RE$TABLE_VALUE_LIST:= NULL,
column_values           IN         SYS.RE$COLUMN_VALUE_LIST:=NULL,
variable_values         IN         SYS.RE$VARIABLE_VALUE_LIST:=NULL,
attribute_values        IN         SYS.RE$ATTRIBUTE_VALUE_LIST:=NULL,
cache                   IN         BOOLEAN DEFAULT FALSE,
result_val              OUT        BOOLEAN);

パラメータ

表138-4 EVALUATE_EXPRESSIONプロシージャのパラメータ

パラメータ

説明

rule_expression

式の文字列が含まれます。

table_alias

式の文字列で参照される表の別名が含まれます。

variable_types

式で使用される変数のタイプ定義が含まれます。

table_values

式の評価に使用される表の行のROWIDが含まれます。

column_values

式で参照される列の値が含まれます。

variable_values

式で参照される変数の値が含まれます。

attribute_values

式で参照される属性の値が含まれます。

cache

TRUEの場合、結果キャッシュが作成されます。

result_val

評価の結果。

GET_NEXT_HITファンクション

このファンクションは、TRUEに評価された次のルールをTRUEルールのイテレータから戻し、またはMAYBEに評価された次のルールをMAYBEルールのイテレータから戻します。TRUEまたはMAYBEに評価されるルールがすでに存在しない場合、ファンクションはNULLを戻します。

構文

DBMS_RULE.GET_NEXT_HIT(
iterator  IN  BINARY_INTEGER)
RETURN SYS.RE$RULE_HIT;

パラメータ

表138-5 GET_NEXT_HITファンクションのパラメータ

パラメータ

説明

iterator

TRUEまたはMAYBEに評価されたルールが取得されるイテレータ。

使用上の注意

このプロシージャには、同じセッションでこのプロシージャより前のDBMS_RULE.EVALUATEコールで戻された、オープン状態のイテレータが必要です。ただし、このプロシージャを実行するユーザーには、評価されるルール・セットに対する権限は必要ありません。

イテレータは、NULLを戻すと自動的にクローズします。オープンしているイテレータが不要になった場合は、DBMS_RULEパッケージのCLOSE_ITERATORプロシージャを使用してクローズしてください。

注意:
イテレータを戻したDBMS_RULE.EVALUATEプロシージャをコールした後で、評価されるルール・セットが変更された場合、このファンクションを使用するとエラーになります。ルール・セットの変更には、ルール・セットへのルールの追加、ルール・セット内の既存ルールの変更、ルール・セットからのルールの削除、ルール・セットの削除などがあります。

関連項目:

- DBMS_RULEパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

- EVALUATEプロシージャ

- CLOSE_ITERATORプロシージャ

IS_FASTプロシージャ

このプロシージャは、ルールの式または独立した式について、高速と評価できる場合はTRUEを戻します。式を高速と評価できるのは、エンジンで内部SQLを実行する必要がなく、PL/SQLが参照されたときでもPL/SQLレイヤーに移動する必要がない場合です。

構文

DBMS_RULE.IS_FAST(
expression            IN       VARCHAR2,
table_aliases         IN       SYS.RE$TABLE_ALIAS_LIST:= NULL,
variable_types        IN       SYS.RE$VARIABLE_TYPE_LIST:= NULL,
result_val            OUT      BOOLEAN);

パラメータ

表138-6 IS_FASTプロシージャのパラメータ

パラメータ

説明

expression

チェックする式。

table_aliases

前述の式の文字列で参照される表の別名。

variable_types

式で使用される変数のタイプ定義。

result_val

式が高速と評価できる場合

139 DBMS_RULE_ADM

DBMS_RULE_ADMパッケージは、ルール、ルール・セットおよびルール評価コンテキストを作成および管理するためのサブプログラムを提供します。

この章では、次の項目について説明します。

- DBMS_RULE_ADMの使用方法

- 概要

- セキュリティ・モデル

- DBMS_RULE_ADMサブプログラムの要約

DBMS_RULE_ADMの使用方法

この項では、DBMS_RULE_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージは、ルール、ルール・セットおよびルール評価コンテキストを作成および管理するためのサブプログラムを提供します。

関連項目:

- DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

- このパッケージおよびルールの詳細は、第138章「DBMS_RULE」および『Oracle Streams概要および管理』を参照してください。

セキュリティ・モデル

PUBLICには、このパッケージのEXECUTE権限が付与されます。

関連項目:
ユーザー・グループPUBLICの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

DBMS_RULE_ADMサブプログラムの要約

表139-1 DBMS_RULE_ADMパッケージのサブプログラム

サブプログラム

説明

ADD_RULEプロシージャ

指定のルールを指定のルール・セットに追加します。

ALTER_EVALUATION_CONTEXTプロシージャ

ルール評価コンテキストを変更します。

ALTER_RULEプロシージャ

指定したルールの1つ以上の要素を変更します。

CREATE_EVALUATION_CONTEXTプロシージャ

ルール評価コンテキストを作成します。

CREATE_RULEプロシージャ

ルールを指定の名前で作成します。

CREATE_RULE_SETプロシージャ

ルール・セットを指定の名前で作成します。

DROP_EVALUATION_CONTEXTプロシージャ

指定した名前のルール評価コンテキストを削除します。

DROP_RULEプロシージャ

指定した名前のルールを削除します。

DROP_RULE_SETプロシージャ

指定した名前のルール・セットを削除します。

GRANT_OBJECT_PRIVILEGEプロシージャ

指定オブジェクトに関する指定オブジェクト権限を指定のユーザーまたはロールに付与します。

GRANT_SYSTEM_PRIVILEGEプロシージャ

指定のシステム権限を指定のユーザーまたはロールに付与します。

REMOVE_RULEプロシージャ

指定のルールを指定のルール・セットから削除します。

REVOKE_OBJECT_PRIVILEGEプロシージャ

指定オブジェクトに関する指定オブジェクト権限を指定のユーザーまたはロールから取り消します。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

指定のシステム権限を指定のユーザーまたはロールから取り消します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

ADD_RULEプロシージャ

このプロシージャは、指定のルールを指定のルール・セットに追加します。

構文

DBMS_RULE_ADM.ADD_RULE(
rule_name           IN  VARCHAR2,
rule_set_name       IN  VARCHAR2,
evaluation_context  IN  VARCHAR2   DEFAULT NULL,
rule_comment        IN  VARCHAR2   DEFAULT NULL);

パラメータ

表139-2 ADD_RULEプロシージャのパラメータ

パラメータ

説明

rule_name

ルール・セットに追加するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマにall_aという名前のルールを追加するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

rule_set_name

ルール・セットに追加するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットにルールを追加するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_context

[schema_name.]evaluation_context_nameの形式で指定する、評価コンテキスト名。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

評価コンテキストを指定するのは、ルール自体に評価コンテキストがなく、ルール・セットの評価コンテキストをルールに使用しない場合のみです。

rule_comment

ルールの説明(オプション)。ルールをルール・セットに追加する理由などを指定できます。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- ルール・セットに対するALTER_ON_RULE_SET権限があること。

- ALTER_ANY_RULE_SETシステム権限があること。

- ルール・セットの所有者であること。

また、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。

- ルールに対するEXECUTE_ON_RULE権限があること。

- EXECUTE_ANY_RULEシステム権限があること。

- ルールの所有者であること。

このプロシージャの実行時に、ルールに評価コンテキストがなく、評価コンテキストが未指定の場合、そのルールで使用されるのは、ルール・セットに関連付けられている評価コンテキストです。このような場合は、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、ルール所有者に必要な権限が付与されている必要があります。

評価コンテキストが指定されている場合、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。

- 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

- EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

- 評価コンテキストの所有者であること。

さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。

ALTER_EVALUATION_CONTEXTプロシージャ

このプロシージャは、ルール評価コンテキストを変更します。ルール評価コンテキストは、ルール条件の中で参照できる外部データを定義します。外部データは、変数または表データの場合があります。

構文

DBMS_RULE_ADM.ALTER_EVALUATION_CONTEXT(
evaluation_context_name      IN  VARCHAR2,
table_aliases                IN  SYS.RE$TABLE_ALIAS_LIST    DEFAULT NULL,
remove_table_aliases         IN  BOOLEAN                    DEFAULT FALSE,
variable_types               IN  SYS.RE$VARIABLE_TYPE_LIST  DEFAULT NULL,
remove_variable_types        IN  BOOLEAN                    DEFAULT FALSE,
evaluation_function          IN  VARCHAR2                   DEFAULT NULL,
remove_evaluation_function   IN  BOOLEAN                    DEFAULT FALSE,
evaluation_context_comment   IN  VARCHAR2                   DEFAULT NULL,
remove_eval_context_comment  IN  BOOLEAN                    DEFAULT FALSE);

パラメータ

表139-3 ALTER_EVALUATION_CONTEXTプロシージャのパラメータ

パラメータ

説明

evaluation_context_name

変更する評価コンテキストの名前。[schema_name.]evaluation_context_nameの形式で指定します。

たとえば、hrスキーマのdept_eval_contextという名前の評価コンテキストを変更するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_aliases

remove_table_aliasesがFALSEの場合にNULLに設定すると、既存の表の別名が保持されます。remove_table_aliasesがTRUEの場合にNULLに設定すると、既存の表の別名が削除されます。

NULL以外に設定すると、評価コンテキスト用の既存の表の別名が、指定した表の別名に置き換えられます。

表の別名によって、評価コンテキストに表を指定します。表の別名は、ルール条件の表を参照するために使用されます。

remove_table_aliases

table_aliasesがNULLの場合にTRUEに設定すると、評価コンテキスト用の既存の表の別名が削除されます。table_aliasesがNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、表の別名は削除されません。

variable_types

remove_variable_typesがFALSEの場合にNULLに設定すると、変数タイプが保持されます。remove_variable_typesがTRUEの場合にNULLに設定すると、既存の変数タイプが削除されます。

NULL以外に設定すると、評価コンテキスト用の既存の変数タイプが、指定した変数タイプに置き換えられます。

remove_variable_types

variable_typesがNULLの場合にTRUEに設定すると、評価コンテキスト用の既存の変数タイプが削除されます。variable_typesがNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、変数タイプは削除されません。

evaluation_function

remove_evaluation_functionがFALSEの場合にNULLに設定すると、既存の評価ファンクションが保持されます。remove_evaluation_functionがTRUEの場合にNULLに設定すると、既存の評価ファンクションが削除されます。

NULL以外に設定すると、評価コンテキスト用の既存の評価ファンクションが、指定した評価ファンクションに置き換えられます。

評価ファンクションは、評価コンテキストを使用しているルールを評価するためにコールされるオプションのファンクションです。DBMS_RULE.EVALUATEプロシージャと同じ形式が必要です。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

評価ファンクションの詳細は、CREATE_EVALUATION_CONTEXTプロシージャを参照してください。

remove_evaluation_function

evaluation_functionがNULLの場合にTRUEに設定すると、評価コンテキスト用の既存の評価ファンクションが削除されます。evaluation_functionがNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、評価ファンクションは削除されません。

evaluation_context_comment

remove_eval_context_commentがFALSEの場合にNULLに設定すると、既存の評価コンテキスト・コメントが保持されます。remove_evaluation_functionがTRUEの場合にNULLに設定すると、既存の評価コンテキスト・コメントが削除されます。

NULL以外に設定すると、評価コンテキスト用の既存のコメントが、指定したコメントに置き換えられます。

評価コンテキスト・コメントは、ルール評価コンテキストに関する説明(オプション)です。

remove_eval_context_comment

evaluation_context_commentがNULLの場合にTRUEに設定すると、評価コンテキスト用の既存のコメントが削除されます。evaluation_context_commentがNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、評価コンテキスト・コメントは削除されません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- 変更する評価コンテキストの所有者であること。

- 別のユーザーが所有する評価コンテキストに対するALL_ON_EVALUATION_CONTEXTまたはALTER_ON_EVALUATION_CONTEXTオブジェクト権限があること。

- ALTER_ANY_EVALUATION_CONTEXTシステム権限があること。

関連項目:
DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

ALTER_RULEプロシージャ

このプロシージャは、指定したルールの1つ以上の要素を変更します。

構文

DBMS_RULE_ADM.ALTER_RULE(
rule_name                  IN  VARCHAR2,
condition                  IN  VARCHAR2        DEFAULT NULL,
evaluation_context         IN  VARCHAR2        DEFAULT NULL,
remove_evaluation_context  IN  BOOLEAN         DEFAULT FALSE,
action_context             IN  SYS.RE$NV_LIST  DEFAULT NULL,
remove_action_context      IN  BOOLEAN         DEFAULT FALSE,
rule_comment               IN  VARCHAR2        DEFAULT NULL,
remove_rule_comment        IN  BOOLEAN         DEFAULT FALSE);

パラメータ

表139-4 ALTER_RULEプロシージャのパラメータ

パラメータ

説明

rule_name

変更するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマのall_aという名前のルールを変更するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

condition

ルールに関連付ける条件。

NULL以外に設定すると、既存のルール条件が、指定した条件に置き換えられます。

evaluation_context

[schema_name.]evaluation_context_nameの形式で指定する、評価コンテキスト名。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULL以外に設定すると、既存のルールの評価コンテキストが、指定した評価コンテキストに置き換えられます。

remove_evaluation_context

TRUEに設定すると、ルールの評価コンテキストがNULLに設定され、ルールから評価コンテキストが事実上削除されます。

FALSEに設定すると、指定したルールの評価コンテキストが保持されます。

evaluation_contextパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

action_context

NULL以外に設定すると、ルールに関連付けられているアクション・コンテキストが変更されます。ルールのアクション・コンテキストは、ルールの評価時に、ルール・エンジンのクライアントが解析するルールに関連付けられている情報です。

remove_action_context

TRUEに設定すると、ルールのアクション・コンテキストがNULLに設定され、ルールからアクション・コンテキストが事実上削除されます。

FALSEに設定すると、指定したルールのアクション・コンテキストが保持されます。

action_contextパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

rule_comment

NULL以外に設定すると、ルールの既存のコメントが、指定したコメントに置き換えられます。

remove_rule_comment

TRUEに設定すると、ルールのコメントがNULLに設定され、ルールからコメントが事実上削除されます。

FALSEに設定すると、指定したルールのコメントが保持されます。

rule_commentパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- ルールに対するALTER_ON_RULE権限があること。

- ALTER_ANY_RULEシステム権限があること。

- 変更するルールの所有者であること。

評価コンテキストが指定されている場合、ルール所有者は、次の要件を最低1つ満たす必要があります。

- 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

- EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

- 評価コンテキストの所有者であること。

さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。

関連項目:
DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

CREATE_EVALUATION_CONTEXTプロシージャ

このプロシージャは、ルール評価コンテキストを作成します。ルール評価コンテキストは、ルール条件の中で参照できる外部データを定義します。外部データは、変数または表データの場合があります。

構文

DBMS_RULE_ADM.CREATE_EVALUATION_CONTEXT(
evaluation_context_name      IN  VARCHAR2,
table_aliases                IN  SYS.RE$TABLE_ALIAS_LIST    DEFAULT NULL,
variable_types               IN  SYS.RE$VARIABLE_TYPE_LIST  DEFAULT NULL,
evaluation_function          IN  VARCHAR2                   DEFAULT NULL,
evaluation_context_comment   IN  VARCHAR2                   DEFAULT NULL);

パラメータ

表139-5 CREATE_EVALUATION_CONTEXTプロシージャのパラメータ

パラメータ

説明

evaluation_context_name

作成する評価コンテキストの名前。[schema_name.]evaluation_context_nameの形式で指定します。

たとえば、hrスキーマにdept_eval_contextという名前の評価コンテキストを作成するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_aliases

評価コンテキストに表を指定する表の別名。表の別名は、ルール条件の表を参照するために使用されます。

variable_types

評価コンテキストに使用する変数のリスト。

evaluation_function

評価コンテキストを使用しているルールを評価するためにコールされる、オプションのファンクション。DBMS_RULE.EVALUATEプロシージャと同じ形式が必要です。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

評価ファンクションの詳細は、「使用上の注意」を参照してください。

evaluation_context_comment

ルール評価コンテキストに関する説明(オプション)。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- 作成する評価コンテキストの所有者であり、CREATE_EVALUATION_CONTEXT_OBJシステム権限があること。

- CREATE_ANY_EVALUATION_CONTEXTシステム権限があること。

関連項目:
DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

評価ファンクションには、次の署名が必要です。

FUNCTION evaluation_function_name(
rule_set_name       IN   VARCHAR2,
evaluation_context  IN   VARCHAR2,
event_context       IN   SYS.RE$NV_LIST               DEFAULT NULL,
table_values        IN   SYS.RE$TABLE_VALUE_LIST      DEFAULT NULL,
column_values       IN   SYS.RE$COLUMN_VALUE_LIST     DEFAULT NULL,
variable_values     IN   SYS.RE$VARIABLE_VALUE_LIST   DEFAULT NULL,
attribute_values    IN   SYS.RE$ATTRIBUTE_VALUE_LIST  DEFAULT NULL,
stop_on_first_hit   IN   BOOLEAN                      DEFAULT FALSE,
simple_rules_only   IN   BOOLEAN                      DEFAULT FALSE,
true_rules          OUT  SYS.RE$RULE_HIT_LIST,
maybe_rules         OUT  SYS.RE$RULE_HIT_LIST);
RETURN BINARY_INTEGER;

注意:
各パラメータは必須で、指定のデータ・タイプであることが必要です。ただし、パラメータの名前は変更できます。

ファンクションの戻り値は、次のいずれか1つです。

- DBMS_RULE_ADM.EVALUATION_SUCCESS: ユーザーが指定した評価ファンクションによって、ルール・セットの評価が正常に完了しました。ルール・エンジンは、評価ファンクションで取得した評価結果を、DBMS_RULE.EVALUATEプロシージャを使用するルール・エンジン・クライアントに戻します。

- DBMS_RULE_ADM.EVALUATION_CONTINUE: ルール・エンジンは、ルール・セットには評価ファンクションがないものと評価しました。評価ファンクションは使用されず、評価ファンクションによって戻される結果はすべて無視されます。

- DBMS_RULE_ADM.EVALUATION_FAILURE: ユーザーが指定した評価ファンクションは失敗しました。ルール・セットの評価は停止し、エラーになります。

CREATE_RULEプロシージャ

このプロシージャは、ルールを作成します。

構文

DBMS_RULE_ADM.CREATE_RULE(
rule_name           IN  VARCHAR2,
condition           IN  VARCHAR2,
evaluation_context  IN  VARCHAR2        DEFAULT NULL,
action_context      IN  SYS.RE$NV_LIST  DEFAULT NULL,
rule_comment        IN  VARCHAR2        DEFAULT NULL);

パラメータ

表139-6 CREATE_RULEプロシージャのパラメータ

パラメータ

説明

rule_name

作成するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマにall_aという名前のルールを作成するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

condition

ルールに関連付ける条件。条件はTRUEまたはFALSEに評価され、SELECT文のWHERE句で使用可能な条件であれば使用できます。たとえば次は、有効なルール条件です。

department_id = 30

ルール条件のテキストの大文字と小文字が正しく使用されていることを確認してください。

注意: 条件に「WHERE」という語句は指定しないでください。

evaluation_context

ルールに関連付けられ、[schema_name.]evaluation_context_nameの形式で指定する、オプションの評価コンテキスト名。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_contextが未指定の場合は、ルール・セットの評価コンテキストがルールに継承されます。

action_context

ルールに関連付けるアクション・コンテキスト。ルールのアクション・コンテキストは、ルールの評価時に、ルール・エンジンのクライアントが解析するルールに関連付けられている情報です。

rule_comment

ルールに関する説明(オプション)。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- 作成するルールの所有者であり、CREATE_RULE_OBJシステム権限があること。

- CREATE_ANY_RULEシステム権限があること。

評価コンテキストが指定されている場合、ルール所有者は、次の要件を最低1つ満たす必要があります。

- 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

- EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

- 評価コンテキストの所有者であること。

さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。

関連項目:
DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、第283章「ルール・タイプ」を参照してください。

CREATE_RULE_SETプロシージャ

このプロシージャは、ルール・セットを作成します。

構文

DBMS_RULE_ADM.CREATE_RULE_SET(
rule_set_name       IN  VARCHAR2,
evaluation_context  IN  VARCHAR2  DEFAULT NULL,
rule_set_comment    IN  VARCHAR2  DEFAULT NULL);

パラメータ

表139-7 CREATE_RULE_SETプロシージャのパラメータ

パラメータ

説明

rule_set_name

作成するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマにapply_rulesという名前のルール・セットを作成するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_context

オプションの評価コンテキスト名で、[schema_name.]evaluation_context_nameの形式で指定し、この評価コンテキスト名は、評価コンテキストが明示的に関連付けられていないルール・セットのすべてのルールに適用されます。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

rule_set_comment

ルール・セットに関する説明(オプション)。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- 作成するルール・セットの所有者であり、CREATE_RULE_SET_OBJシステム権限があること。

- CREATE_ANY_RULE_SETシステム権限があること。

評価コンテキストが指定されている場合、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。

- 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

- EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

- 評価コンテキストの所有者であること。

DROP_EVALUATION_CONTEXTプロシージャ

このプロシージャは、ルール評価コンテキストを削除します。

構文

DBMS_RULE_ADM.DROP_EVALUATION_CONTEXT(
evaluation_context_name  IN  VARCHAR2,
force                    IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表139-8 DROP_EVALUATION_CONTEXTプロシージャのパラメータ

パラメータ

説明

evaluation_context_name

削除する評価コンテキストの名前。[schema_name.]evaluation_context_nameの形式で指定します。

たとえば、hrスキーマのdept_eval_contextという名前の評価コンテキストを削除するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

force

TRUEに設定すると、ルール評価コンテキストを使用するすべてのルールおよびルール・セットからルール評価コンテキストが削除されます。

ルール評価コンテキストを使用するルールまたはルール・セットがない場合にFALSEに設定すると、ルール評価コンテキストが削除されます。

ルール評価コンテキストを使用するルールまたはルール・セットが1つ以上ある場合にFALSEに設定すると、例外が発生します。

注意: forceをTRUEに設定すると、評価コンテキストが設定されていないルールまたはルール・セットが存在することになります。ルールまたはルール・セットに評価コンテキストが未指定で、ADD_RULEプロシージャによる評価コンテキストの指定がない場合、ルールの評価はできません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- 評価コンテキストの所有者であること。

- DROP_ANY_EVALUATION_CONTEXTシステム権限があること。

DROP_RULEプロシージャ

このプロシージャは、ルールを削除します。

構文

DBMS_RULE_ADM.DROP_RULE(
rule_name  IN  VARCHAR2,
force      IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表139-9 DROP_RULEプロシージャのパラメータ

パラメータ

説明

rule_name

削除するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマのall_aという名前のルールを削除するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

force

TRUEに設定すると、このルールが含まれているすべてのルール・セットからルールが削除されます。

このルールが含まれているルール・セットがない場合にFALSEに設定すると、ルールが削除されます。

このルールを含むルール・セットが1つ以上ある場合にFALSEに設定すると、例外が発生します。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- ルールの所有者であること。

- DROP_ANY_RULEシステム権限があること。

注意:

- データベースからルールを削除せずに、ルール・セットからルールを削除するには、REMOVE_RULEプロシージャを使用します。

- ルールに関連付けられているルール評価コンテキストは、このプロシージャを実行しても削除されません。

DROP_RULE_SETプロシージャ

このプロシージャは、ルール・セットを削除します。

構文

DBMS_RULE_ADM.DROP_RULE_SET(
rule_set_name  IN  VARCHAR2,
delete_rules   IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表139-10 DROP_RULE_SETプロシージャのパラメータ

パラメータ

説明

rule_set_name

削除するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットを削除するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

delete_rules

TRUEに設定すると、ルール・セット内にあるすべてのルールが削除されます。ルール・セット内のルールが別のルール・セットのルールでもある場合、そのルールは削除されません。

FALSEに設定すると、ルール・セット内にあるルールは削除されません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- DROP_ANY_RULE_SETシステム権限があること。

- ルール・セットの所有者であること。

注意:
ルール・セットに関連付けられているルール評価コンテキストは、このプロシージャを実行しても削除されません。

GRANT_OBJECT_PRIVILEGEプロシージャ

このプロシージャは、指定オブジェクトに関する指定のオブジェクト権限を、指定のユーザーまたはロールに付与します。オブジェクトを所有しているユーザーには、そのオブジェクトに関するすべての権限および付与オプションが自動的に付与されます。

構文

DBMS_RULE_ADM.GRANT_OBJECT_PRIVILEGE(
privilege     IN  BINARY_INTEGER,
object_name   IN  VARCHAR2,
grantee       IN  VARCHAR2,
grant_option  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表139-11 GRANT_OBJECT_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

オブジェクトの権限受領者に付与するオブジェクト権限の名前。使用可能なオブジェクト権限は、「使用上の注意」を参照してください。

object_name

権限受領者に権限を付与するオブジェクトの名前で、[schema_name.]object_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットに権限を付与するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。オブジェクトは、既存のルール、ルール・セットまたは評価コンテキストであることが必要です。

grantee

権限を付与するユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。

grant_option

TRUEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、この権限を他のユーザーに付与できます。

FALSEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、この権限を他のユーザーに付与できません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- 権限を付与するオブジェクトの所有者であること。

- 付与する権限と同じ権限および付与オプションがあること。

さらに、オブジェクトがルール・セットの場合は、ルール・セット内のすべてのルールに対するEXECUTE権限および付与オプションがあるか、またはルール・セット内のルールを所有していることが必要です。

表139-12に、オブジェクト権限を示します。

表139-12 評価コンテキスト、ルールおよびルール・セットに関するオブジェクト権限

権限

説明

SYS.DBMS_RULE_ADM.ALL_ON_EVALUATION_CONTEXT

他のユーザーのスキーマにある特定の評価コンテキストを変更および実行する権限。

SYS.DBMS_RULE_ADM.ALL_ON_RULE

他のユーザーのスキーマにある特定のルールを変更および実行する権限。

SYS.DBMS_RULE_ADM.ALL_ON_RULE_SET

他のユーザーのスキーマにある特定のルール・セットを変更および実行する権限。

SYS.DBMS_RULE_ADM.ALTER_ON_EVALUATION_CONTEXT

他のユーザーのスキーマにある特定の評価コンテキストを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ON_RULE

他のユーザーのスキーマにある特定のルールを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ON_RULE_SET

他のユーザーのスキーマにある特定のルール・セットを変更する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ON_EVALUATION_CONTEXT

他のユーザーのスキーマにある特定の評価コンテキストを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ON_RULE

他のユーザーのスキーマにある特定のルールを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ON_RULE_SET

他のユーザーのスキーマにある特定のルール・セットを実行する権限。

例

たとえば、strmadminスキーマのhr_dmlという名前のルールを変更する権限をHRユーザーに付与するには、次のように入力します。

BEGIN
DBMS_RULE_ADM.GRANT_OBJECT_PRIVILEGE(
privilege    => SYS.DBMS_RULE_ADM.ALTER_ON_RULE,
object_name  => 'strmadmin.hr_dml',
grantee      => 'hr',
grant_option => FALSE);
END;
/

GRANT_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、指定のシステム権限を指定のユーザーまたはロールに付与します。

構文

DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE(
privilege     IN  BINARY_INTEGER,
grantee       IN  VARCHAR2,
grant_option  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表139-13 GRANT_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

権限受領者に付与するシステム権限の名前。

grantee

権限を付与するユーザーまたはロールの名前。

grant_option

TRUEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、システム権限を他のユーザーに付与できます。

FALSEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、システム権限を他のユーザーに付与できません。

使用上の注意

表139-14に、システム権限を示します。

表139-14 評価コンテキスト、ルールおよびルール・セットに関するシステム権限

権限

説明

SYS.DBMS_RULE_ADM.ALTER_ANY_EVALUATION_CONTEXT

任意のユーザーが所有する評価コンテキストを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ANY_RULE

任意のユーザーが所有するルールを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ANY_RULE_SET

任意のユーザーが所有するルール・セットを変更する権限。

SYS.DBMS_RULE_ADM.CREATE_ANY_EVALUATION_CONTEXT

新規評価コンテキストを任意のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_EVALUATION_CONTEXT_OBJ

新規評価コンテキストを権限受領者のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_ANY_RULE

新規ルールを任意のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_RULE_OBJ

新規ルールを権限受領者のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_ANY_RULE_SET

新規ルール・セットを任意のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_RULE_SET_OBJ

新規ルール・セットを権限受領者のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.DROP_ANY_EVALUATION_CONTEXT

任意のスキーマの評価コンテキストを削除する権限。

SYS.DBMS_RULE_ADM.DROP_ANY_RULE

任意のスキーマのルールを削除する権限。

SYS.DBMS_RULE_ADM.DROP_ANY_RULE_SET

任意のスキーマのルール・セットを削除する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ANY_EVALUATION_CONTEXT

任意のユーザーが所有する評価コンテキストを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ANY_RULE

任意のユーザーが所有するルールを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ANY_RULE_SET

任意のユーザーが所有するルール・セットを実行する権限。

たとえば、ルール・セットを任意のスキーマに作成する権限をstrmadminユーザーに付与するには、次のように入力します。

BEGIN
DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE(
privilege    => SYS.DBMS_RULE_ADM.CREATE_ANY_RULE_SET,
grantee      => 'strmadmin',
grant_option => FALSE);
END;
/

注意:
「ANY」オブジェクトに関する権限(ALTER_ANY_RULEなど)を付与する際に、O7_DICTIONARY_ACCESSIBILITY初期化パラメータがFALSEに設定されている場合は、SYSスキーマを除くすべてのスキーマで、該当するタイプのオブジェクトへのアクセス権をユーザーに付与してください。デフォルトでは、O7_DICTIONARY_ACCESSIBILITY初期化パラメータは、FALSEに設定されています。
SYSスキーマのオブジェクトに対してアクセス権を付与する場合は、そのオブジェクトに対するオブジェクト権限を明示的に付与できます。また、O7_DICTIONARY_ACCESSIBILITY初期化パラメータをTRUEに設定することもできます。この設定によって、「ANY」オブジェクトに対して付与した権限で、SYSも含めた任意のスキーマにアクセスできます。

REMOVE_RULEプロシージャ

このプロシージャは、指定のルールを指定のルール・セットから削除します。

構文

DBMS_RULE_ADM.REMOVE_RULE(
rule_name                IN  VARCHAR2,
rule_set_name            IN  VARCHAR2,
evaluation_context       IN  VARCHAR2  DEFAULT NULL,
all_evaluation_contexts  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表139-15 REMOVE_RULEプロシージャのパラメータ

パラメータ

説明

rule_name

ルール・セットから削除するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマのall_aという名前のルールを削除するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

rule_set_name

ルールを削除するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットからルールを削除するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_context_name

削除するルールに関連する評価コンテキストの名前で、[schema_name.]evaluation_context_nameの形式で指定します。たとえば、hrスキーマのdept_eval_contextという名前の評価コンテキストを指定するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

削除するルールに、ADD_RULEプロシージャを使用してルールをルール・セットに追加するときに指定した評価コンテキストがある場合は、それと同じ評価コンテキストを指定します。異なる評価コンテキストで同じルールを複数回追加した場合は、削除する評価コンテキストでルールを指定します。ルールに関連付けられていない評価コンテキストを指定すると、エラーが発生します。

ルールをルール・セットに追加するときに評価コンテキストを指定しなかった場合は、NULLを指定します。1つ以上の評価コンテキストがルールに関連付けられている場合にNULLに設定すると、エラーが発生します。

all_evaluation_contexts

TRUEに設定すると、ルールおよびそのルールに関連付けられているすべての評価コンテキストがルール・セットから削除されます。

FALSEに設定すると、指定した評価コンテキストを持つルールのみが削除されます。

このパラメータが関連するのは、同じルールを異なる評価コンテキストを持つルール・セットに複数回追加した場合のみです。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

- ルール・セットに対するALTER_ON_RULE_SET権限があること。

- ALTER_ANY_RULE_SETシステム権限があること。

- ルール・セットの所有者であること。

注意:
これは、データベースからルールを削除するプロシージャではありません。データベースからルールを削除するには、DROP_RULEプロシージャを使用します。

REVOKE_OBJECT_PRIVILEGEプロシージャ

このプロシージャは、指定オブジェクトに関する指定のオブジェクト権限を、指定のユーザーまたはロールから取り消します。

構文

DBMS_RULE_ADM.REVOKE_OBJECT_PRIVILEGE(
privilege    IN  BINARY_INTEGER,
object_name  IN  VARCHAR2,
revokee      IN  VARCHAR2);

パラメータ

表139-16 REVOKE_OBJECT_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

権限受領者から取り消すオブジェクトに関するオブジェクト権限の名前。オブジェクト権限のリストは、GRANT_OBJECT_PRIVILEGEプロシージャを参照してください。

object_name

権限受領者から権限を取り消すオブジェクトの名前で、[schema_name.]object_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットに関するオブジェクトの権限を取り消すには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。オブジェクトは、既存のルール、ルール・セットまたは評価コンテキストであることが必要です。

revokee

権限が取り消されるユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、指定のシステム権限を指定のユーザーまたはロールから取り消します。

構文

DBMS_RULE_ADM.REVOKE_SYSTEM_PRIVILEGE(
privilege  IN  BINARY_INTEGER,
revokee    IN  VARCHAR2);

パラメータ

表139-17 REVOKE_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

privilege

権限受領者から取り消すシステム権限の名前。システム権限のリストは、GRANT_SYSTEM_PRIVILEGEプロシージャを参照してください。

revokee

権限が取り消されるユーザーまたはロールの名前。

140 DBMS_SCHEDULER

DBMS_SCHEDULERパッケージは、任意のPL/SQLプログラムからコールできるスケジューリング用のファンクションおよびプロシージャのコレクションを提供します。

関連項目:
DBMS_SCHEDULERの使用方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_SCHEDULERの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

- ルールおよび制限

- 使用上の注意

- データ構造

- DBMS_SCHEDULERサブプログラムの要約

DBMS_SCHEDULERの使用方法

この項では、次の項目について説明します。

- 推奨されないサブプログラム

- セキュリティ・モデル

- ルールおよび制限

- 使用上の注意

推奨されないサブプログラム

新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 12cリリース1(12.1)では、次のサブプログラムの使用は推奨されていません。

- CREATE_CREDENTIALプロシージャ

- DROP_CREDENTIALプロシージャ

セキュリティ・モデル

DBMS_SCHEDULERパッケージでは、ロールを通じてジョブやチェーンなどのSchedulerオブジェクトに対して付与される権限は無視されます。オブジェクト権限は、ユーザーに直接付与する必要があります。

ルールおよび制限

DBMS_SCHEDULERパッケージの使用時には、次のルールが適用されます。

- SYSスキーマのオブジェクトに対しては、SYSのみがアクションを実行できます。

- 一部のプロシージャでは、オブジェクト名のカンマ区切りリストを使用できます。オブジェクト名のリストを提供する場合、Schedulerは、エラーを戻した最初のオブジェクトの位置でリストの実行を停止します。そのため、Schedulerは、リストの残りのオブジェクトに必要とされるタスクを実行しません。
たとえば、DBMS_SCHEDULER.STOP_JOB ('job1, job2, job3, sys.jobclass1, sys.jobclass2, sys.jobclass3');という文があるとします。

job3を停止できない場合、その後に続くジョブのjobclass1、jobclass2およびjobclass3も停止できません。job3に先行するジョブのjob1およびjob2は、停止します。

- 存在しないオブジェクト上でアクションを実行すると、オブジェクトが存在しないことを示すPL/SQLの例外を返します。

使用上の注意

Schedulerでは、高度なカレンダ構文を使用して、「毎週木曜日と金曜日の午後4時」、「毎月第2水曜日」などの繰返しスケジュールを定義できます。このカレンダ構文は、多くのパッケージ・サブプログラムのrepeat_interval引数のカレンダ式で使用されます。カレンダ式を評価すると、一連の個別タイムスタンプが戻されます。

カレンダ構文の例は、『Oracle Database管理者ガイド』を参照してください。

カレンダ構文

この項の先頭は、カレンダ構文です。この後に、構文の様々な部分の説明が続きます。

カレンダ構文では、*は0またはそれ以上を意味します。

repeat_interval = regular_schedule | combined_schedule

regular_schedule = frequency_clause
[";" interval_clause] [";" bymonth_clause] [";" byweekno_clause]
[";" byyearday_clause] [";" bydate_clause] [";" bymonthday_clause]
[";" byday_clause] [";" byhour_clause] [";" byminute_clause]
[";" bysecond_clause] [";" bysetpos_clause] [";" include_clause]
[";" exclude_clause] [";" intersect_clause][";" periods_clause]
[";" byperiod_clause]

frequency_clause = "FREQ" "=" ( predefined_frequency | user_defined_frequency )
predefined_frequency = "YEARLY" | "MONTHLY" | "WEEKLY" | "DAILY" |
"HOURLY" | "MINUTELY" | "SECONDLY"
user_defined_frequency = named_schedule

interval_clause = "INTERVAL" "=" intervalnum
intervalnum = 1 through 99
bymonth_clause = "BYMONTH" "=" monthlist
monthlist = month ( "," month)*
month = numeric_month | char_month
numeric_month = 1 | 2 | 3 ...  12
char_month = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
"JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
byweekno_clause = "BYWEEKNO" "=" weeknumber_list
weeknumber_list = weeknumber ( "," weeknumber)*
weeknumber = [minus] weekno
weekno = 1 through 53
byyearday_clause = "BYYEARDAY" "=" yearday_list
yearday_list = yearday ( "," yearday)*
yearday = [minus] yeardaynum
yeardaynum = 1 through 366
bydate_clause = "BYDATE" "=" date_list
date_list = date ( "," date)*
date = [YYYY]MMDD [ offset | span ]
bymonthday_clause = "BYMONTHDAY" "=" monthday_list
monthday_list = monthday ( "," monthday)*
monthday = [minus] monthdaynum
monthdaynum = 1 through 31
byday_clause = "BYDAY" "=" byday_list
byday_list = byday ( "," byday)*
byday = [weekdaynum] day
weekdaynum = [minus] daynum
daynum = 1 through 53 /* if frequency is yearly */
daynum = 1 through 5  /* if frequency is monthly */
day = "MON" | "TUE" | "WED" | "THU" | "FRI" | "SAT" | "SUN"
BYTIME clause:  BYTIME=[hour_minute_second_list|minute_second_list]
hour_minute_second_list: hh24mmss, .., hh24mmss
minute_second_list: mmss, .. mmss
byhour_clause = "BYHOUR" "=" hour_list
hour_list = hour ( "," hour)*
hour = 0 through 23
byminute_clause = "BYMINUTE" "=" minute_list
minute_list = minute ( "," minute)*
minute = 0 through 59
bysecond_clause = "BYSECOND" "=" second_list
second_list = second ( "," second)*
second = 0 through 59
bysetpos_clause = "BYSETPOS" "=" setpos_list
setpos_list = setpos ("," setpos)*
setpos = [minus] setpos_num
setpos_num = 1 through 9999

include_clause = "INCLUDE" "=" schedule_list
exclude_clause = "EXCLUDE" "=" schedule_list
intersect_clause = "INTERSECT" "=" schedule_list
schedule_list = schedule_clause ("," schedule_clause)*
schedule_clause = named_schedule [ offset ]
named_schedule = [schema "."] schedule
periods_clause = "PERIODS" "=" periodnum
byperiod_clause = "BYPERIOD" "=" period_list
period_list = periodnum ("," periodnum)*
periodnum = 1 through 100

offset = ("+" | "-") ["OFFSET:"] duration_val
span = ("+" | "-" | "^") "SPAN:" duration_val
duration_val = dur-weeks | dur_days
dur_weeks = numofweeks "W"
dur_days = numofdays "D"
numofweeks = 1 through 53
numofdays = 1 through 376
minus = "-"

combined_schedule = schedule_list

表140-1 repeat_intervalの値

名前

説明

FREQ

繰返しのタイプを指定します。これは必ず指定する必要があります。頻度の値には、事前定義済のYEARLY、MONTHLY、WEEKLY、DAILY、HOURLY、MINUTELYおよびSECONDLYを設定できます。また、既存のスケジュールを指定して、ユーザー定義の頻度として使用することもできます。

INTERVAL

繰返しの実行頻度を正の整数で指定します。デフォルトは1で、秒単位では毎秒、日単位では毎日を意味します。最大値は99です。

BYMONTH

ジョブを実行する月を指定します。数字(1月の場合は1、3月の場合は3など)を入力するか、または3文字の略語(2月の場合はFEB、7月の場合はJULなど)を入力できます。

BYWEEKNO

ある年における週を番号で指定します。ISO-8601に準拠して、1週間は月曜から日曜までとし、1年の最初の週を第1週とします(この大部分がその年のグレゴリオ暦年の範囲内です)。第1週は、次の2つの変数、すなわち、グレゴリオ年の最初の木曜日が含まれる週および1月4日が含まれる週に相当します。

ISO-8601準拠の週番号は、1から52または53の整数になります。週1の一部は前の暦年に含まれる場合があり、週52の一部は翌暦年に含まれる場合があります。またその年に週53がある場合、その週の一部は必ず翌暦年に含まれます。

たとえば1998年の場合、ISO準拠の週1は1997年12月29日(月曜日)から始まり、ISO準拠の最後の週(週53)は1999年1月3日(日曜日)に終わりました。このため、1997年12月29日はISO週1998-1で、1999年1月1日はISO週1998-53になります。

byweeknoはYEARLYに対してのみ有効です。

無効な指定の例は、"FREQ=YEARLY; BYWEEKNO=1; BYMONTH=12"および"FREQ=YEARLY;BYWEEKNO=53;BYMONTH=1"です。

BYYEARDAY

ある年における日付を、番号で指定します。有効な値は1から366です。たとえば、69は3月10日(1月は31、2月は28、3月は10)です。69はうるう年以外では3月10日、うるう年の場合は3月9日になります。うるう年かどうかにかかわらず、-2は常に12月30日になります。

BYDATE

日付のリストを指定します(それぞれの日付を、[YYYY]MMDDの形式で指定します)。連続する日付のリストはSPAN修飾子を使用して生成でき、またOFFSET修飾子によって日付を調整できます。単純なBYDATE句の例を、次に示します。

BYDATE=0115,0315,0615,0915,1215,20060115

次に示すSPANの例は、1月10日から5日間を示すBYDATE=0110,0111,0112,0113,0114と同じです。

BYDATE=0110+SPAN:5D

SPANキーワードの前にあるプラス記号は、範囲が指定日から開始されることを示します。マイナス記号の場合は、範囲が指定日で終了することを示し、"^"記号の場合は、指定日が中日となるn日間(週間)の範囲を示します。nが偶数の場合は、1つ大きい奇数に調整されます。

OFFSETは、n日間(週間)を加算または減算して指定日を調整します。BYDATE=0205-OFFSET:2Wは、BYDATE=0205-14D (OFFSET: キーワードはオプション)と同じで、これはBYDATE=0122とも同じです。

BYMONTHDAY

月における日付を、番号で指定します。有効な値は1から31です。たとえば、10は選択した月の10日を意味します。マイナス記号(-)を使用して、最後の日から逆に数えることができ、したがってたとえばBYMONTHDAY=-1はその月の最後の日を意味し、BYMONTHDAY=-2はその月の最後から2番目の日を示します。

BYDAY

この句では、月曜から日曜までの曜日をMON、TUEなどの書式で指定します。数字を使用して、その年の26番目の金曜日を指定したり(頻度にYEARLYを使用している場合)、その月の4番目の木曜日を指定できます(頻度にMONTHLYを使用している場合)。マイナス記号を使用すると、その月の最後から2番目の金曜日を指定できます。たとえば-1 FRIは、その月の最後の金曜日です。

BYHOUR

ジョブを実行する時間を指定します。有効な値は0から23です。たとえば、10は午前10時を示します。

BYMINUTE

ジョブを起動する分を指定します。有効な値は0から59です。たとえば、45は選択した時間(時)の45分過ぎを示します。

BYSECOND

ジョブを実行する秒を指定します。有効な値は0から59です。たとえば、30は選択した分の30秒過ぎを示します。

BYSETPOS

カレンダ式全体を評価して生じたタイムスタンプのリスト内の位置によって、1つ以上の項目を選択します。この句は、月の最後の平日にジョブを実行するなどの要件がある場合に役立ちます。他のBY句を指定してではなく、その月のすべての就業日のリストを評価するカレンダ式を記述した後、そのリストの最後の項目のみを選択するBYSETPOS句を追加して、これを表現できます。就業日が月曜日から金曜日であるとすると、構文は次のようになります。

FREQ=MONTHLY; BYDAY=MON,TUE,WED,THU,FRI; BYSETPOS=-1

有効な値は1から9999です。負の数値の場合はリストの末尾からアイテムが選択され(-1が最後のアイテム、-2が最後から2番目のアイテムとなります)、正の数値の場合はリストの先頭からアイテムが選択されます。BYSETPOS句は、常に最後に評価されます。BYSETPOSは、頻度がMONTHLYおよびYEARLYの場合にのみサポートされます。

BYSETPOS句がタイムスタンプのリストに適用されるのは、頻度期間ごとに1回です。たとえば、頻度がMONTHLYと定義されている場合は、月のすべての有効なタイムスタンプが確認され、そのリストが順序付けられた後、BYSETPOS句が適用されます。その後、次の月に対して同じ手順が繰り返されます。開始日が2004年6月10日であるとすると、前述の例の評価結果は、6月30日、7月30日、8月31日、9月30日、10月29日などのようになります。

INCLUDE

1つ以上の名前付きスケジュールをカレンダ式に含めます。つまり、含める各名前付きスケジュールで定義されているタイムスタンプ・セットが、カレンダ式の評価結果に追加されます。含めるスケジュールとカレンダ式の両方で同じタイムスタンプが生成される場合、そのタイムスタンプは、タイムスタンプの結果セットに1回のみ含められます。名前付きスケジュールは、CREATE_SCHEDULEプロシージャで定義済である必要があります。

この句は1日単位でのみ使用できます。したがって、BYHOUR、BYMINおよびBYSECONDとともに使用できません。

EXCLUDE

1つ以上の名前付きスケジュールをカレンダ式から除外します。つまり、除外する各名前付きスケジュールで定義されているタイムスタンプ・セットが、カレンダ式の評価結果から削除されます。名前付きスケジュールは、CREATE_SCHEDULEプロシージャで定義済である必要があります。

この句は1日単位でのみ使用できます。したがって、BYHOUR、BYMINおよびBYSECONDとともに使用できません。

INTERSECT

カレンダ式の結果と、1つ以上の名前付きスケジュールで定義されているタイムスタンプ・セットの共通部分を指定します。タイムスタンプの結果セットには、カレンダ式と、いずれかの名前付きスケジュールの両方に表示されるタイムスタンプのみが含まれます。

たとえば、名前付きスケジュールlast_satは、毎月の最終土曜日を示し、2005年の場合、月末が土曜日でもある月は4月と12月のみであることを示すとします。また、名前付きスケジュールend_qtrは、次のように、2005年の各四半期の最終日を示すとします。

3/31/2005, 6/30/2005, 9/30/2005, 12/31/2005

次のカレンダ式の結果は、次の日付になります。

3/31/2005, 4/30/2005, 6/30/2005, 9/30/2005, 12/31/2005

FREQ=MONTHLY; BYMONTHDAY=-1; INTERSECT=last_sat,end_qtr

この例では、FREQ=MONTHLY; BYMONTHDAY=-1の項は各月の末日を示します。

この句は1日単位でのみ使用できます。したがって、BYHOUR、BYMINおよびBYSECONDとともに使用できません。

PERIODS

ユーザー定義の頻度の1サイクルを構成する、期間の数を指定します。これは、ユーザー定義の頻度を定義するスケジュールのrepeat_interval式で使用されます。メイン・スケジュールのrepeat_interval式にBYPERIOD句が含まれている場合は、必須です。次の例では、会計年度の四半期が定義されます。

FREQ=YEARLY;BYDATE=0301,0601,0901,1201;PERIODS=4

BYPERIOD

ユーザー定義の頻度から期間を選択します。たとえば、前述の例の会計年度の四半期を定義するユーザー定義の頻度スケジュールをメイン・スケジュールで指定した場合、そのメイン・スケジュールにBYPERIOD=2,4という句が含まれていると、会計年度の第2四半期および第4四半期が選択されます。

スケジュールの組合せ スケジュールの組合せには、次の2つの方法があります。

- 組み合せたスケジュール式(個々のスケジュールのリスト)を使用する方法
たとえば、会社のすべての休業日のスケジュールを作成するには、個々のスケジュールのリストを指定します(このリスト内のスケジュールごとに1つの休業日が定義されます)。Schedulerは、各スケジュールを個々に評価し、各スケジュールから戻されたタイムスタンプの論理和を戻します。

- include、excludeおよびintersect句を使用して、メイン・スケジュールに他のスケジュールを埋め込む方法
この方法の場合、埋め込まれたスケジュールは、メイン・スケジュールから特定の属性を継承します。

- INCLUDE句によって生成されたタイムスタンプは、メイン・スケジュールでスキップされる期間内の場合は無視されます。これは、freq=monthlyに対するINTERVAL句、BYPERIOD句またはBYMONTH句によって、メイン・スケジュールで期間がスキップされるような場合です。

- INCLUDE句によって追加される日は、メイン・スケジュールの実行パターン(毎時、毎分、毎秒)に従います。

- INCLUDE句が存在する場合、日付固有のデフォルト値は開始日から取得できません(ただし時間固有のデフォルト値は取得可能です)。(この項の後半の「開始日および反復間隔」を参照。)たとえばrepeat_intervalがFREQ=MONTHLY;INCLUDE=HOLIDAYの場合は、開始日から取得されるデフォルトの月/日ではなく、休日にのみ実行されます。

次に例を示します。

BEGIN
dbms_scheduler.create_schedule('embed_sched', repeat_interval =>
'FREQ=YEARLY;BYDATE=0130,0220,0725');
dbms_scheduler.create_schedule('main_sched', repeat_interval =>
'FREQ=MONTHLY;INTERVAL=2;BYMONTHDAY=15;BYHOUR=9,17;INCLUDE=embed_sched');
END;
/

この例では、1/30、2/20および7/25という日付がメイン・スケジュールに追加されます。ただしSchedulerには、INTERVAL句でスキップされる月の日付は含まれません。メイン・スケジュールの開始日が2005年1月1日の場合、2月20日は追加されません。埋め込まれたスケジュールは、追加された日付に、メイン・スケジュールの実行パターンに従います(すなわちジョブは、1月30日と7月25日の午前9時と午後5時に実行されます)。埋め込まれたスケジュール自体に開始日がない場合は、メイン・スケジュールの開始日が継承されます。

ユーザー定義の頻度 DAILY、WEEKLY、MONTHLYなどのあらかじめ定義されている頻度を使用するのではなく、各期間の開始日を戻すスケジュールを自分で作成すると、ユーザー独自の頻度を作成できます。たとえば、次のrepeat_interval式は、会計年度の各四半期の始まりを定義するfiscal_yearというスケジュールで使用します。

FREQ=YEARLY;BYDATE=0301,0601,0901,1201;PERIODS=4

各四半期の最後の水曜日を戻すには、fiscal_yearスケジュールをユーザー定義の頻度として使用するスケジュール(メイン・スケジュール)を作成します。

FREQ=fiscal_year;BYDAY=-1WED

ユーザー定義の頻度の期間の長さが同じである必要はありません。メイン・スケジュールのBYSETPOS句と番号付きの就業日は、各期間の長さに基づいて再計算されます。特定の期間内の日付を選択するには、メイン・スケジュールでBYPERIOD句を使用する必要があります。これを可能にするには、ユーザー定義の頻度として使用するスケジュールにPERIODS句が含まれ、開始日が適切に設定されている必要があります。このスケジュールから戻される最初の日は、期間1の開始ポイントとして使用されます。

別の例として、月曜日から金曜日が就業日という条件で、会計年度の第2四半期と第4四半期の最後の就業日を求める場合を考えます。この場合のメイン・スケジュールのrepeat_interval句は、次のようになります。

FREQ=fiscal_year;BYDAY=MON,TUE,WED,THU,FRI;BYPERIOD=2,4;BYSETPOS=-1

開始日および反復間隔 Schedulerによってジョブまたはスケジュールの開始日から日時が取得され、デフォルト値としてrepeat_intervalに埋め込まれます。たとえば、指定された頻度が毎年で、反復間隔にBYMONTHまたはBYMONTHDAY句が含まれていない場合、ジョブが実行される月と日は開始日から取得されます。同様に、頻度が毎月で、反復間隔にBYMONTHDAY句が含まれていない場合、毎月ジョブが実行される日は開始日から取得されます。BYHOUR、BYMINUTEおよびBYSECONDのデフォルト値が存在する場合は、それらの値が開始日から取得され、これらの句が指定されていない場合に使用されます。INCLUDE、EXCLUDEまたはINTERSECT句が存在する場合、日付に関連するデフォルト値は開始日から取得されませんが、時間に関連するデフォルト値は取得されます。次にいくつかの例を示します。

start_date:      4/15/05 9:00:00
repeat_interval: freq=yearly

内部的に次に拡張されます。

freq=yearly;bymonth=4;bymonthday=15;byhour=9;byminute=0;bysecond=0

前述のスケジュールは、2005年4月5日の9:00:00、2006年4月5日の9:00:00、2007年4月5日の9:00:00などのように実行されます。

次の例では、スケジュールS1のrepeat_intervalがFREQ=YEARLY;BYDATE=0701に設定されているとします。

start_date:      01/20/05 9:00:00
repeat_interval: freq=yearly;include=S1

内部的に次に拡張されます。

freq=yearly;byhour=9;byminute=0;bysecond=0;include=S1

INCLUDE句が存在するため、日付に関連する情報は開始日から取得されません。ただし、時間に関連する情報は取得されるため、前述のスケジュールは、2005年7月1日の9:00:00、2006年7月1日の9:00:00、2008年7月1日の9:00:00などのように実行されます。

一般的な規則 カレンダ式を使用する場合、次の規則を考慮する必要があります。

- (組み合せたスケジュールではなく)通常のスケジュールの場合、カレンダ文字列は、freq句で始まる必要があります。その他のすべての句はオプション指定で、どの順序でも挿入できます。

- すべての句をセミコロンで区切ります。それぞれの句は、include句、exclude句およびintersect句を除き、1回のみ使用できます。

- 構文要素間には空白を入れることができます。文字列は大/小文字が区別されません。

- 特定のBY句の値リストを順番に並べる必要はありません。

- 次の日付を決定するために必要なBY句が存在しない場合、この情報は開始日から取得されます。たとえば、開始日が2003年2月15日の"FREQ=YEARLY"は"FREQ=YEARLY;BYMONTH=FEB; BYMONTHDAY=15"になり、これは、毎年2月15日を示します。
開始日が01/21/2003の"FREQ=YEARLY;BYMONTH=JAN,JUL"は"FREQ=YEARLY;BYMONTH=JAN,JUL;BYMONTHDAY=21"になります。これは、毎年1月21日および7月21日を示します。

- byweekno句は、頻度がYEARLYの場合のみ使用できます。他の頻度には使用できません。これが存在する場合、その週の番号のすべての日付が戻されます。その週内の特定の日に限定する場合は、BYDAY句を追加する必要があります。たとえば、開始日01/01/2003の"FREQ=YEARLY;BYWEEKNO=2"の場合、次の日付が戻されます。

01/06/2003, 01/07/2003, 01/08/2003, 01/09/2003, 01/10/2003, 01/11/2003, 01/12/2003, 01/05/2004, 01/06/2004, 01/07/2004, .... and so on.

byweekno句を使用した場合、当年以外の年の日付が戻される場合があることに注意してください。たとえば、2004年およびカレンダ文字列の戻り日付が、2004年の指定週番号として"FREQ=YEARLY;BYWEEKNO=1,53"である場合、次の日付が戻されます。

12/29/03, 12/30/03, 12/31/03, 01/01/04, 01/02/04, 01/03/04, 01/04/04, 12/27/04, 12/28/04, 12/29/04, 12/30/04, 12/31/04, 01/01/05, 01/02/05

- 一定の値範囲を持たないBY句の場合、数値の前に「-」を入れると逆にカウントできます。たとえばBYMONTHDAY=31と指定した場合、1か月は必ずしも31日でないため、毎月の最後の日付を取得できるわけではありません。かわりにBYMONTHDAY=-1と指定すると、月の最後の日付を取得できます。
この機能は、サイズが固定されているBY句についてはサポートされません。すなわち、BYMONTH、BYHOUR、BYMINUTEおよびBYSECONDではサポートされません。

- BYDAY句の基本値は曜日です。頻度がYEARLYまたはMONTHLYの場合、各曜日の前に正または負の数を指定できます。YEARLY, BYDAY=40MONの場合、その年の40番目の月曜日を示します。MONTHLY, BYDAY=-2SATの場合、その月の最後から2番目の土曜日を示します。
他の頻度では、曜日の前に正または負の数を入れるやり方はサポートされていないことに注意してください。また、頻度がYEARLYの場合は数の範囲は-53から-1、1から53ですが、MONTHLYの場合は-5から-1、1から5に限定されることにも注意してください。

曜日の前に番号が示されていない場合は、指定した頻度でその曜日が繰り返し取得されます。

- 週の最初の曜日は月曜日になります。

- 繰返しの頻度が1日より短いジョブは、夏時間調整があった場合でも、その頻度に正確に従います。たとえば、3時間ごとに繰り返すようにスケジュールされているジョブがあり、時計が午前1時から午前2時に進められ、最後のジョブ実行時刻は午前0時であったとします。この場合、次のスケジュールされた時間は午前4時になります。したがって、後続のジョブの実行間隔は3時間に保たれます。時計が遅らされた場合も同じく適用されます。この動作は、頻度が1日以上の繰返しジョブには適用されません。たとえば、繰返しジョブが毎日午前0時に実行されることになっている場合に、時計を進めるか、または遅らせても、このジョブは午前0時に実行されます。このような毎日実行するジョブ(または実行頻度が1日より長いジョブ)の実行時間が時計を進めたウィンドウに偶然含まれた場合は、そのウィンドウの終了時刻にジョブが実行されます。

- カレンダ構文ではタイムゾーンを指定できません。かわりに、Schedulerはstart_date引数からタイムゾーンを取得します。ジョブが夏時間調整を行う必要のある場合は、start_dateのタイムゾーンでリージョン名を指定する必要があります。start_dateのタイムゾーンをニューヨークの'US/Eastern'として指定すると、その夏時間調整が常に自動的に適用されます。かわりにstart_dateのタイムゾーンが'-5:00'などの絶対オフセットに設定されていると、夏時間調整は適用されず、半年間ジョブの実行が1時間遅くなります。

- start_dateがNULLの場合、Schedulerは次のように反復間隔のタイムゾーンを決定します。

1. セッション・タイムゾーンがリージョン名かどうかをチェックします。セッション・タイムゾーンは、次のいずれかで設定できます。

- ALTER SESSION文の発行。例:

SQL> ALTER SESSION SET time_zone = 'Asia/Shanghai';

- ORA_SDTZ環境変数の設定。

2. セッション・タイムゾーンがリージョン名ではなく絶対オフセットの場合、SchedulerはDEFAULT_TIMEZONE Scheduler属性の値を使用します。詳細は、「SET_SCHEDULER_ATTRIBUTEプロシージャ」を参照してください。

3. DEFAULT_TIMEZONE属性がNULLの場合、Schedulerでは、ジョブまたはウィンドウが使用可能であれば、systimestampのタイムゾーンを使用します。

BYSETPOS句の規則 BYSETPOS句の規則は次のとおりです。

- BYSETPOS句は、最後に評価される句です。これは、他のすべてのBY句、INCLUDE、EXCLUDEおよびINTERSECT句が評価された後で、処理されます。

- INTERVAL句では、BYSETPOS句が適用される期間のサイズは変更されません。たとえば、頻度が毎月に設定され、間隔が3に設定されている場合、BYSETPOSが適用されるタイムスタンプのリストは、四半期ではなく月から生成されます。INTERVAL句の影響は、月がスキップされることのみです。ただし、このような場合でも、四半期の最終日の1日前の就業日を次のようにして選択できます。

FREQ=MONTHLY;INTERVAL=3;BYDAY=MON,TUE,WED,THU,FRI;BYSETPOS=-2

これは、開始日を正しい月に設定していることを前提としています。この例では、月の最後の就業日の1日前の就業日が戻され、同じ処理が四半期に1度繰り返されます。

- 一貫した結果を取得するために、BYSETPOSが適用されるセットは、評価が行われるタイミングとは無関係に、頻度期間の最初から決定されています。Schedulerで次の内容が評価される場合を考えます。

FREQ=MONTHLY;BYDAY=MON,TUE,FRI;BYSETPOS=1,3

2004年1月1日または2004年1月15日のいずれの日に評価された場合でも、この式の評価結果は2004年1月2日金曜日および2004年1月6日火曜日になります。式が2004年1月15日に評価された場合は、検出されたタイムスタンプが過去のものであるため、1月に一致するものはないと判断され、次の月である2月で一致するものが検索される点のみが異なります。

BYDATE句の規則 BYDATE句の規則は次のとおりです。

- BYDATE句の日付に年の構成要素(オプション)がない場合、ジョブは毎年それらの日に実行されます。

- 指定日のジョブの実行時間は、カレンダ式のBY句から導出されます。たとえば、repeat_intervalが次のように定義されているとします。

freq=daily;byhour=8,13,18;byminute=0;bysecond=0;bydate=0502,0922

この場合、5月2日および9月22日の実行時間は、午前8時0分、午後1時0分および午後6時0分です。

EXCLUDE句の規則 時間構成要素が含まれていない除外日の期間は24時間です。除外日に含まれるすべてのタイムスタンプが削除されます。次の例で、jan_fifteenは、1月15日の1日にのみ解決される名前付きスケジュールです。

freq=monthly;bymonthday=15,30;byhour=8,13,18;byminute=0;bysecond=0;
exclude=jan_fifteenth

この場合、1月15日の3つすべてのジョブ・インスタンスが削除されます。

OFFSETの規則 個々の名前付きスケジュールの日付は、その日付に正のオフセットを加えて調整できます。たとえば、JOB1の実行ごとに正確にその15日後にJOB2を実行するには、JOB1のスケジュールに+OFFSET:15Dを次のように追加します。

BEGIN
dbms_scheduler.create_schedule('job2_schedule', repeat_interval =>
'job1_schedule+OFFSET:15D');
END;
/

名前付きスケジュールへの負のオフセットの追加はサポートされていません。

例140-1 すべての組合せ

この例では、ユーザー定義の頻度、範囲、オフセット、およびBYSETPOS句とINCLUDE句の使用方法を示します。(オフセット句のOFFSET:キーワードはオプションです。)

小売業界の多くの企業では、同じ会計年度を採用しています。この会計年度は、2月1日に最も近い日曜日に始まり、次の四半期は正確に13週間後に始まります。小売業界の会計年度スケジュールは、次のように定義できます。

begin
dbms_scheduler.create_schedule('year_start', repeat_interval=>
'FREQ=YEARLY;BYDATE=0201^SPAN:1W;BYDAY=SUN');
dbms_scheduler.create_schedule('retail_fiscal_year',
to_timestamp_tz('15-JAN-2005 12:00:00','DD-MON-YYYY HH24:MI:SS'),
'year_start,year_start+13w,year_start+26w,year_start+39w;periods=4');
end;
/

次のスケジュールを使用すると、小売業界の第2四半期と第4四半期の5日目にジョブを実行できます。これは、既存のholidayスケジュールに含まれている日のみでなく、土曜日および日曜日も休日であることを前提としています。

begin
dbms_scheduler.create_schedule('fifth_day_off', repeat_interval=>
'FREQ=retail_fiscal_year;BYDAY=SAT,SUN;INCLUDE=holiday;
BYPERIOD=2,4;BYSETPOS=5');
end;
/

データ構造

DBMS_SCHEDULERパッケージは、OBJECTタイプおよびTABLEタイプを定義します。

オブジェクト・タイプ

- JOBARGオブジェクト・タイプ

- JOB_DEFINITIONオブジェクト・タイプ

- JOBATTRオブジェクト・タイプ

- SCHEDULER$_STEP_TYPEオブジェクト・タイプ

- SCHEDULER$_EVENT_INFOオブジェクト・タイプ

- SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプ

- SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプ

表タイプ

- JOBARG_ARRAY表タイプ

- JOB_DEFINITION_ARRAY表タイプ

- JOBATTR_ARRAY表タイプ

- SCHEDULER$_STEP_TYPE_LIST表タイプ

JOBARGオブジェクト・タイプ

このタイプは、JOBおよびJOBATTRオブジェクト・タイプで使用されます。一連のジョブ引数のうちの、1つのジョブ引数を表します。

構文

TYPE jobarg IS OBJECT (
arg_position         NUMBER,
arg_text_value       VARCHAR2(4000),
arg_anydata_value    ANYDATA,
arg_operation        VARCHAR2(5));

属性

表140-2 JOBARGオブジェクト・タイプの属性

属性

説明

arg_position

引数の位置。

arg_text_value

データ・タイプがVARCHAR2の場合の引数の値。

arg_anydata_value

データ・タイプがAnyDataの場合の引数の値。

arg_operation

操作のタイプ:

- SET

- RESET

JOBARGコンストラクタ・ファンクション

このコンストラクタ・ファンクションは、ジョブ引数を構成します。様々なタイプの値を含むジョブ引数を構成するために、オーバーロードされています。

構文

テキスト値でジョブ引数を構成する場合

constructor function jobarg (
arg_position        IN POSITIVEN,
arg_value           IN VARCHAR2)
RETURN SELF AS RESULT;

AnyData値でジョブ引数を構成する場合

constructor function jobarg (
arg_position        IN POSITIVEN,
arg_value           IN ANYDATA)
RETURN SELF AS RESULT;

NULL値でジョブ引数を構成する場合

constructor function jobarg (
arg_position        IN POSITIVEN,
arg_reset           IN BOOLEAN DEFAULT FALSE)
RETURN SELF AS RESULT;

パラメータ

表140-3 JOBARGコンストラクタ・ファンクションのパラメータ

パラメータ

説明

arg_position

引数の位置。

arg_value

引数の値。

arg_reset

arg_resetをTRUEに設定すると、その位置にある引数がリセットされます。

arg_resetをFALSE(デフォルト)に設定すると、引数がNULL値で作成されます。

JOBARG_ARRAY表タイプ

構文

TYPE jobarg_array IS TABLE OF jobarg;

JOB_DEFINITIONオブジェクト・タイプ

このタイプは、CREATE_JOBSプロシージャで使用され、一連のジョブのうちの1つのジョブを表します。

構文

TYPE job_definition IS OBJECT (
job_name                       VARCHAR2(100),
job_class                      VARCHAR2(32),
job_style                      VARCHAR2(11),
program_name                   VARCHAR2(100),
job_action                     VARCHAR2(4000),
job_type                       VARCHAR2(20),
schedule_name                  VARCHAR2(65),
repeat_interval                VARCHAR2(4000),
schedule_limit                 INTERVAL DAY TO SECOND,
start_date                     TIMESTAMP WITH TIME ZONE,
end_date                       TIMESTAMP WITH TIME ZONE,
event_condition                VARCHAR2(4000),
queue_spec                     VARCHAR2(100),
number_of_arguments            NUMBER,
arguments                      SYS.JOBARG_ARRAY,
job_priority                   NUMBER,
job_weight                     NUMBER,
max_run_duration               INTERVAL DAY TO SECOND,
max_runs                       NUMBER,
max_failures                   NUMBER,
logging_level                  NUMBER,
restartable                    VARCHAR2(5),
stop_on_window_close           VARCHAR2(5),
raise_events                   NUMBER,
comments                       VARCHAR2(240),
auto_drop                      VARCHAR2(5),
enabled                        VARCHAR2(5),
follow_default_timezone        VARCHAR2(5),
parallel_instances             VARCHAR2(5),
aq_job                         VARCHAR2(5),
instance_id                    NUMBER,
credential_name                VARCHAR2(65),
destination                    VARCHAR2(4000),
database_role                  VARCHAR2(20),
allow_runs_in_restricted_mode  VARCHAR2(5);
restart_on_recovery            BOOLEAN;
restart_on_failure             BOOLEAN;)

オブジェクト属性

表140-4は、JOB_DEFINITIONオブジェクト・タイプの属性の概要を示しています。これらの属性の詳細は、「CREATE_JOBプロシージャ」および「SET_ATTRIBUTEプロシージャ」を参照してください。

表140-4 JOB_DEFINITIONオブジェクト・タイプ

属性

説明

job_name

ジョブの名前。

job_class

ジョブ・クラスの名前。

job_style

ジョブのスタイル:

- REGULAR

- LIGHTWEIGHT

program_name

ジョブにより実行されるプログラムの名前。

job_action

ジョブのインライン・アクション。これは、無名PL/SQLブロックのコードまたはストアド・プロシージャの名前(外部実行可能またはチェーン)です。

job_type

ジョブ・アクションのタイプ('PLSQL_BLOCK'、'STORED_PROCEDURE'、'EXECUTABLE'、'CHAIN'、'EXTERNAL_SCRIPT'、'SQL_SCRIPT'および'BACKUP_SCRIPT')。

schedule_name

ジョブの実行時刻を指定するスケジュールの名前。

repeat_interval

時間ベースのインライン・スケジュール。

schedule_limit

ジョブの実行が取り消される前の、スケジュール・ジョブと実際のジョブの最大遅延時間。

start_date

ジョブの開始日時。

end_date

ジョブの終了日時。

event_condition

イベント・ベースのジョブのイベント条件。

queue_spec

File Watcher名またはイベント・ベースのジョブのキューの仕様。

number_of_arguments

ジョブ引数の数。

arguments

ジョブ引数の配列。

job priority

ジョブの優先順位。

job_weight

*** Oracle Database 11gリリース2では非推奨となっています。この属性の値をデフォルトの1から変更しないでください。

パラレル実行のジョブの重み。

max_run_duration

ジョブの最大実行時間。

max_runs

ジョブが完了とマークされるまでの最大実行数。

max_failures

ジョブが中断とマークされるまでに許容される最大失敗数。

logging_level

ジョブのロギング・レベル。

restartable

ジョブが再開可能である(TRUE)か、再開不可能である(FALSE)かを示します。

stop_on_window_close

ジョブが実行されているウィンドウが終了した場合にジョブを停止する(TRUE)か、停止しない(FALSE)かを示します。「SET_ATTRIBUTEプロシージャ」で説明されているstop_on_window_closeジョブ属性と同じです。

raise_events

イベントを発生させる状態変更。

comments

ジョブに関するコメント。

auto_drop

TRUE(デフォルト)は、ジョブの完了後にジョブが削除されることを示します。

enabled

ジョブの作成直後にジョブを有効にする(TRUE)か、有効にしない(FALSE)かを示します。

follow_default_timezone

TRUEの場合で、ジョブstart_dateがNULLのときは、default_timezone Scheduler属性を変更すると、このジョブが新しいタイムゾーンで実行されるように、Schedulerによってジョブの次の実行日時が再計算されます。

parallel_instances

イベント・ベースのジョブ専用。

TRUEの場合は、指定したイベントが発生すると、そのイベントを処理する新しい軽量ジョブがSchedulerによって作成されます。したがって、同じイベント・ベースのジョブの複数のインスタンスをパラレルで実行できます。

FALSEの場合、イベントを処理するジョブの実行中にそのイベントが発生すると、イベントは廃棄されます。

aq_job

内部使用専用。

instance_id

ジョブを実行する必要があるインスタンスのインスタンスID。

credential_name

単一の宛先に使用する資格証明または宛先グループに対するデフォルトの資格証明。

destination

単一の外部接続先またはデータベース接続先の名前、あるいは外部接続先タイプまたはデータベース接続先のグループ名。

database_role

Oracle Data Guard環境では、ジョブが実行されるデータベース・ロール('PRIMARY'または'LOGICAL STANDBY')。

allow_runs_in_restricted_mode

TRUEの場合、このモード中にジョブの所有者がログインを許可されれば、データベースが制限モードのときに、ジョブの実行が許可されます。

restart_on_recovery

ジョブに対してTRUEに設定し、そのジョブがデータベースのシャットダウンによって停止した場合、ジョブはデータベースのリカバリ時に再開されます。

FALSEに設定されており、ジョブがデータベースのシャットダウンによって停止した場合は、データベースのリカバリ時にそのジョブに停止のマークが付けられます。

restart_on_failure

ジョブに対してTRUEに設定し、そのジョブがアプリケーション・エラーのために失敗した場合、ジョブは通常のScheduler再試行メカニズムを使用して再試行されます(1秒後、10秒後、100秒後など最高6回まで)。6回の再試行がすべて失敗した場合(約30時間後)、ジョブはFAILEDとマークされます。

FALSEに設定されると(デフォルト)、失敗したジョブはただちにFAILEDとマークされます。

JOB_DEFINITIONコンストラクタ・ファンクション

このコンストラクタ・ファンクションは、job_definitionオブジェクトを構成します。

構文

constructor function job_definition (
job_name                IN     VARCHAR2,
job_style               IN     VARCHAR2 DEFAULT 'REGULAR',
program_name            IN     VARCHAR2 DEFAULT NULL,
job_action              IN     VARCHAR2 DEFAULT NULL,
job_type                IN     VARCHAR2 DEFAULT NULL,
schedule_name           IN     VARCHAR2 DEFAULT NULL,
repeat_interval         IN     VARCHAR2 DEFAULT NULL,
event_condition         IN     VARCHAR2 DEFAULT NULL,
queue_spec              IN     VARCHAR2 DEFAULT NULL,
start_date              IN     TIMESTAMP WITH TIME ZONE DEFAULT NULL,
end_date                IN     TIMESTAMP WITH TIME ZONE DEFAULT NULL,
number_of_arguments     IN     NATURAL DEFAULT NULL,
arguments               IN     SYS.JOBARG_ARRAY DEFAULT NULL,
job_class               IN     VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
schedule_limit          IN     INTERVAL DAY TO SECOND DEFAULT NULL,
job_priority            IN     NATURAL DEFAULT NULL,
job_weight              IN     NATURAL DEFAULT NULL,
max_run_duration        IN     INTERVAL DAY TO SECOND DEFAULT NULL,
max_runs                IN     NATURAL DEFAULT NULL,
max_failures            IN     NATURAL DEFAULT NULL,
logging_level           IN     NATURALN DEFAULT 64,
restartable             IN     BOOLEAN DEFAULT FALSE,
stop_on_window_close    IN     BOOLEAN DEFAULT FALSE,
raise_events            IN     NATURAL DEFAULT NULL,
comments                IN     VARCHAR2 DEFAULT NULL,
auto_drop               IN     BOOLEAN DEFAULT TRUE,
enabled                 IN     BOOLEAN DEFAULT FALSE,
follow_default_timezone IN     BOOLEAN DEFAULT FALSE,
parallel_instances      IN     BOOLEAN DEFAULT FALSE,
aq_job                  IN     BOOLEAN DEFAULT FALSE,
instance_id             IN     NATURAL DEFAULT NULL,
credential_name         IN     VARCHAR2 DEFAULT NULL,
destination             IN     VARCHAR2 DEFAULT NULL,
database_role           IN     VARCHAR2 DEFAULT NULL,
allow_runs_in_restricted_mode IN BOOLEAN DEFAULT FALSE)
RETURN SELF AS RESULT;

JOB_DEFINITION_ARRAY表タイプ

構文

TYPE job_definition_array IS TABLE OF job_definition;

JOBATTRオブジェクト・タイプ

このタイプは、SET_JOB_ATTRIBUTESプロシージャで使用され、一連のジョブ属性のうちの1つのジョブ属性を表します。

構文

TYPE jobattr IS OBJECT (
job_name             VARCHAR2(100),
attr_name            VARCHAR2(30),
char_value           VARCHAR2(4000),
char_value2          VARCHAR2(4000),
args_value           JOBARG_ARRAY,
num_value            NUMBER,
timestamp_value      TIMESTAMP(6) WITH TIME ZONE,
interval_value       INTERVAL DAY(2) TO SECOND(6));

属性

表140-5 JOBATTRオブジェクト・タイプの属性

属性

説明

job_name

ジョブの名前。

attr_name

属性の名前。

char_value

データ・タイプがVARCHAR2の場合の引数の値。

char_value2

2つ目のVARCHAR2属性値。

args_value

データ・タイプがJOBARG配列の場合の引数の値。

num_value

データ・タイプがNUMBERの場合の引数の値。

timestamp_value

データ・タイプがTIMESTAMP WITH TIME ZONEの場合の引数の値。

interval_value

データ・タイプがINTERVAL DAY TO SECONDの場合の引数の値。

JOBATTRコンストラクタ・ファンクション

このコンストラクタ・ファンクションは、ジョブ属性を構成します。これは、VARCHAR2、NUMBER、TIMESTAMP WITH TIME ZONE、INTERVAL DAY TO SECONDタイプおよびJOBARGタイプの配列の属性値を作成するためにオーバーロードされています。

構文

constructor function jobattr (
job_name            IN VARCHAR2,
attr_name           IN VARCHAR2,
attr_value          IN VARCHAR2,
attr_value2         IN VARCHAR2 DEFAULT NULL)
RETURN SELF AS RESULT;

constructor function jobattr (
job_name            IN VARCHAR2,
attr_name           IN VARCHAR2,
attr_value          IN [NUMBER, BOOLEAN,
TIMESTAMP WITH TIME ZONE,
INTERVAL DAY TO SECOND, JOBARG_ARRAY])
RETURN SELF AS RESULT;

constructor function jobattr (
job_name            IN VARCHAR2,
attr_name           IN VARCHAR2)
RETURN SELF AS RESULT;

パラメータ

表140-6 JOBATTRコンストラクタ・ファンクションのパラメータ

パラメータ

説明

job_name

ジョブの名前。

attr_name

引数の名前。

attr_value

引数の値。

attr_value2

ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。 attr_value2引数は、この2つ目の値(オプション)に使用します。

JOBATTR_ARRAY表タイプ

構文

TYPE jobattr_array IS TABLE OF jobattr;

SCHEDULER$_STEP_TYPEオブジェクト・タイプ

このタイプは、チェーン・ステップのリストを初期状態のままで戻すためにRUN_CHAINで使用されます。

構文

TYPE scheduler$_step_type IS OBJECT (
step_name  VARCHAR2(32),
step_type  VARCHAR2(32));

属性

表140-7 SCHEDULER$_STEP_TYPEオブジェクト・タイプの属性

属性

説明

step_name

ステップの名前。

step_type

ステップの状態。

SCHEDULER$_STEP_TYPE_LIST表タイプ

構文

TYPE scheduler$_step_type_list IS TABLE OF scheduler$_step_type;

SCHEDULER$_EVENT_INFOオブジェクト・タイプ

これは、Schedulerによって発生するジョブの状態イベントをアプリケーションがコンシュームする、Schedulerのイベント・キューSYS.SCHEDULER$_EVENT_QUEUEのデータ・タイプです。これは、SYS所有の保護キューです。

構文

TYPE SCHEDULER$_EVENT_INFO IS OBJECT (
event_type         VARCHAR2(4000),
object_owner       VARCHAR2(4000),
object_name        VARCHAR2(4000),
event_timestamp    TIMESTAMP WITH TIME ZONE,
error_code         NUMBER,
error_msg          VARCHAR2(4000),
event_status       NUMBER,
log_id             NUMBER,
run_count          NUMBER,
failure_count      NUMBER,
retry_count        NUMBER,
spare1             NUMBER,
spare2             NUMBER,
spare3             VARCHAR2(4000),
spare4             VARCHAR2(4000),
spare5             TIMESTAMP WITH TIME ZONE,
spare6             TIMESTAMP WITH TIME ZONE,
spare7             RAW(2000),
spare8             RAW(2000));

属性

表140-8 SCHEDULER_EVENT_INFOオブジェクト・タイプの属性

属性

説明

event_type

"JOB_STARTED"、"JOB_SUCCEEDED"、"JOB_FAILED"、"JOB_BROKEN"、"JOB_COMPLETED"、"JOB_STOPPED"、"JOB_SCH_LIM_REACHED"、"JOB_DISABLED"、"JOB_CHAIN_STALLED"、"JOB_OVER_MAX_DUR"のいずれか。

これらのイベント・タイプについては、表140-78「Schedulerで発生するイベントのタイプ」を参照してください。

object_owner

イベントを発生させたジョブの所有者。

object_name

イベントを発生させたジョブの名前。

event_timestamp

イベントが発生した時刻。

error_code

ジョブの実行中にエラーがスローされたときのみ適用されます。トップ・レベルのエラー・コードが含まれます。

error_msg

ジョブの実行中にエラーがスローされたときのみ適用されます。エラー・スタック全体が含まれます。

event_status

イベント・タイプにさらに修飾を追加します。event_typeが"JOB_STARTED"の場合、ステータス1は通常の開始であることを示し、ステータス2は再試行であることを示しています。

event_typeが"JOB_FAILED"の場合、ステータス4はジョブの実行中にスローされたエラーのため失敗したことを示し、ステータス8はなんらかの種類の異常終了であることを示しています。

event_typeが"JOB_STOPPED"の場合、ステータス16は通常の停止であることを示し、ステータス32はFORCEオプションがTRUEに設定された停止であることを示しています。

log_id

追加情報が得られるスケジューラ・ジョブ・ログのIDを示します。イベントに対応するログ・エントリは常には必要ないことに注意してください。この場合、log_idはNULLです。

run_count

イベントが発生したときのジョブの実行数。

failure_count

イベントが発生したときのジョブの失敗数。

retry_count

イベントが発生したときのジョブの再試行数。

spare1 – spare8

現在は使用されていません。

SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプ

これは、ファイル到着イベント・メッセージのデータ・タイプです。イベント・ベースのジョブのパラメータ(またはイベント・ベースのジョブが参照するプログラムのパラメータ)としてイベント・メッセージにアクセスします。メッセージには、ローカルまたはリモート・システムに到着するファイルを検索し処理するために必要な情報が含まれています。

構文

TYPE scheduler_filewatcher_result IS OBJECT (
destination         VARCHAR2(4000),
directory_path      VARCHAR2(4000),
actual_file_name    VARCHAR2(4000),
file_size           NUMBER,
file_timestamp      TIMESTAMP WITH TIME ZONE,
ts_ms_from_epoch    NUMBER,
matching_requests   SYS.SCHEDULER_FILEWATCHER_REQ_LIST);

属性

表140-9 SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプの属性

属性

説明

destination

ファイルが見つかった宛先。ホスト名またはIPアドレスとして表されます。

directory_path

ファイルが見つかったディレクトリの絶対パス。

actual_file_name

見つかったファイルの実際の名前。File Watcherで指定したファイル名にワイルドカードが含まれていなかった場合、File Watcherで指定した名前と同じです。

file_size

見つかったファイルのサイズ(バイト単位)。

file_timestamp

File Watcherがファイルを見つけたとみなしたときに、最小ファイル・サイズおよび安定した状態の期間属性に基づいて、ファイルに割り当てられるタイムスタンプ。

ts_ms_from_epoch

内部使用専用。

matching_requests

一致要求のリスト。これは、SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプのTABLEです。各一致要求は、destination属性、directory_path属性およびfile_name属性が到着したファイルと一致したFile Watcherに対応します。「SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプ」を参照してください。

SCHEDULER_FILEWATCHER_REQUESTオブジェクト・タイプ

このタイプは、SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプのmatching_requests属性で戻されます。この属性は、File Watcherの属性と類似しています。

構文

TYPE scheduler_filewatcher_request IS OBJECT (
owner                 VARCHAR2(4000),
name                  VARCHAR2(4000),
requested_path_name   VARCHAR2(4000),
requested_file_name   VARCHAR2(4000),
credential_owner      VARCHAR2(4000),
credential_name       VARCHAR2(4000),
min_file_size         NUMBER,
steady_state_dur      NUMBER);

属性

表140-10 SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプの属性

属性

説明

owner

一致したFile Watcherの所有者。

name

一致したFile Watcherの名前。

requested_path_name

一致したFile Watcherのdirectory_path属性の値。

requested_file_name

一致したFile Watcherのfile_name属性の値。

credential_owner

一致したFile Watcherにより参照される資格証明の所有者。

credential_name

一致したFile Watcherにより参照される資格証明の名前。

min_file_size

一致したFile Watcherのmin_file_size属性の値。

steady_state_dur

一致したFile Watcherのsteady_state_duration属性の値。

DBMS_SCHEDULERサブプログラムの要約

表140-11 DBMS_SCHEDULERパッケージのサブプログラム

サブプログラム

説明

ADD_EVENT_QUEUE_SUBSCRIBERプロシージャ

ユーザーをサブスクライバとしてSchedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEに追加します。

ADD_GROUP_MEMBERプロシージャ

既存のグループに1つ以上のメンバーを追加します。

ADD_JOB_EMAIL_NOTIFICATIONプロシージャ

受信者リストおよびジョブの状態イベントのリストに電子メール通知を追加します。

ALTER_CHAINプロシージャ

チェーンの指定ステップを変更します。

ALTER_RUNNING_CHAINプロシージャ

実行中のチェーンの指定ステップを変更します。

CLOSE_WINDOWプロシージャ

オープンしているウィンドウをただちにクローズします。

COPY_JOBプロシージャ

既存のジョブをコピーします。

CREATE_CHAINプロシージャ

チェーン(様々な目的を実現するために組み合された一連の名前付きプログラム)を作成します。

CREATE_CREDENTIALプロシージャ

資格証明を作成します。

CREATE_DATABASE_DESTINATIONプロシージャ

リモート・データベース・ジョブと使用するデータベース接続先を作成します。

CREATE_EVENT_SCHEDULEプロシージャ

イベント・スケジュール(イベントの検出に基づいてジョブを開始するスケジュール)を作成します。

CREATE_FILE_WATCHERプロシージャ

File Watcherを作成します。File Watcherは、システムに到着すると、Schedulerがジョブを開始する原因となるファイルの場所、名前およびその他のプロパティを定義するSchedulerオブジェクトです。

CREATE_GROUPプロシージャ

グループを作成します。

CREATE_JOBプロシージャ

1つのジョブを作成します。

CREATE_JOB_CLASSプロシージャ

ジョブ・クラス(リソースの割当ておよび優先順位付けのためにジョブをグループ化する方法を提供するもの)を作成します。

CREATE_JOBSプロシージャ

複数のジョブを作成します。

CREATE_PROGRAMプロシージャ

プログラムを作成します。

CREATE_SCHEDULEプロシージャ

スケジュールを作成します。

CREATE_WINDOWプロシージャ

ウィンドウ(様々なリソース・プランを様々なタイミングで自動的にアクティブにする方法を提供するもの)を作成します。

DEFINE_ANYDATA_ARGUMENTプロシージャ

値が複合タイプで、AnyDataオブジェクト内でカプセル化して渡す必要のあるプログラム引数を定義します。

DEFINE_CHAIN_EVENT_STEPプロシージャ

チェーン・ステップを追加または置換し、イベント・スケジュールまたはインライン・イベントに関連付けます。「DEFINE_CHAIN_STEP」も参照してください。

DEFINE_CHAIN_RULEプロシージャ

既存のチェーンにルールを追加します。

DEFINE_CHAIN_STEPプロシージャ

チェーン・ステップを定義します(プログラムまたは別の(ネストした)チェーンを指定できます)。DEFINE_CHAIN_EVENT_STEPも参照してください。

DEFINE_METADATA_ARGUMENTプロシージャ

プログラムの特別なメタデータ引数を定義します。この引数を通じて特定のメタデータを取得できます。

DEFINE_PROGRAM_ARGUMENTプロシージャ

値を文字列リテラルとしてプログラムに渡すことのできるプログラム引数を定義します。

DISABLEプロシージャ

プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcher、グループまたは非互換性を使用禁止にします。

DROP_AGENT_DESTINATIONプロシージャ

1つ以上の外部接続先を削除します。外部接続先を削除する優先的な方法(データベースでのSchedulerエージェントの登録解除)が失敗した場合にのみ使用します。

DROP_CHAINプロシージャ

既存のチェーンを削除します。

DROP_CHAIN_RULEプロシージャ

既存のチェーンからルールを削除します。

DROP_CHAIN_STEPプロシージャ

チェーン・ステップを削除します。

DROP_CREDENTIALプロシージャ

資格証明を削除します。

DROP_DATABASE_DESTINATIONプロシージャ

1つ以上のデータベース接続先を削除します。

DROP_FILE_WATCHERプロシージャ

1つ以上のFile Watcherを削除します。

DROP_GROUPプロシージャ

1つ以上のグループを削除します。

DROP_JOBプロシージャ

ジョブ・クラスの1つのジョブまたはすべてのジョブを削除します。

DROP_JOB_CLASSプロシージャ

ジョブ・クラスを削除します。

DROP_PROGRAMプロシージャ

プログラムを削除します。

DROP_PROGRAM_ARGUMENTプロシージャ

プログラム引数を削除します。

DROP_SCHEDULEプロシージャ

スケジュールを削除します。

DROP_WINDOWプロシージャ

ウィンドウを削除します。

ENABLEプロシージャ

プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcherまたはグループを使用可能にします。

END_DETACHED_JOB_RUNプロシージャ

連結解除された実行中のジョブを終了します。

EVALUATE_CALENDAR_STRINGプロシージャ

カレンダ文字列を評価し、ジョブやウィンドウの次の実行日を表示します。

EVALUATE_RUNNING_CHAINプロシージャ

実行中のチェーンのルールを強制的に再評価し、条件が満たされている場合はルールを適用します。

GENERATE_JOB_NAMEファンクション

ジョブに一意の名前を生成します。これにより、接頭辞を追加してジョブを識別できます(たとえば、Sallyのジョブの名前はsally1、sally2のようになります)。

GET_AGENT_INFOファンクション

選択された属性に応じて、実行中のジョブ数などのエージェント固有のジョブ情報を戻します。

GET_AGENT_VERSIONファンクション

データベースに登録されており、現在実行中のSchedulerエージェントのバージョン文字列を戻します。

GET_ATTRIBUTEプロシージャ

オブジェクトの属性値を取得します。

GET_FILEプロシージャ

ホストからファイルを取得します。

GET_SCHEDULER_ATTRIBUTEプロシージャ

Scheduler属性の値を取得します。

OPEN_WINDOWプロシージャ

ウィンドウをただちにオープンします。このプロシージャの継続時間中、このウィンドウはすぐにオープンします。

PURGE_LOGプロシージャ

ジョブおよびウィンドウのログから特定の行をパージします。

PUT_FILEプロシージャ

1つ以上のホストにファイルを保存します。

REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャ

Schedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEからユーザーをサブスクライブ解除します。

REMOVE_GROUP_MEMBERプロシージャ

グループから1つ以上のメンバーを削除します。

REMOVE_JOB_EMAIL_NOTIFICATIONプロシージャ

ジョブの電子メール通知を削除します。

RESET_JOB_ARGUMENT_VALUEプロシージャ

関連するプログラムで定義された引数に割り当てられた現在の値をリセットします。

RUN_CHAINプロシージャ

1回のみ実行するジョブを作成して、チェーンをただちに実行します。

RUN_JOBプロシージャ

ジョブをただちに実行します。

SET_AGENT_REGISTRATION_PASSプロシージャ

データベースのエージェント登録パスワードを設定します

SET_ATTRIBUTEプロシージャ

ジョブ、スケジュールなどのSchedulerオブジェクトの属性を変更します。

SET_ATTRIBUTE_NULLプロシージャ

オブジェクトの属性をNULLに変更します。

SET_JOB_ANYDATA_VALUEプロシージャ

AnyDataオブジェクト内でカプセル化したジョブ引数の値を設定します。

SET_JOB_ARGUMENT_VALUEプロシージャ

ジョブ引数の値を設定します。

SET_JOB_ATTRIBUTESプロシージャ

ジョブ属性の値を設定します。

SET_RESOURCE_CONSTRAINTプロシージャ

ジョブによって使用されるリソースを指定します。

SET_SCHEDULER_ATTRIBUTEプロシージャ

Scheduler属性の値を設定します。

STOP_JOBプロシージャ

現在実行中のジョブ、またはジョブ・クラスのすべてのジョブを停止します。

ADD_EVENT_QUEUE_SUBSCRIBERプロシージャ

このプロシージャは、ユーザーをサブスクライバとしてSchedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEに追加し、指定したエージェントを使用してこのキューからデキューする権限をそのユーザーに付与します。

構文

DBMS_SCHEDULER.ADD_EVENT_QUEUE_SUBSCRIBER (
subscriber_name         IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-12 ADD_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

subscriber_name

Schedulerイベント・キューのサブスクライブに使用するOracle Streams Advanced Queuing(AQ)エージェントの名前。NULLに設定すると、エージェントが作成され、コール・ユーザーのユーザー名が割り当てられます。

使用上の注意

サブスクリプションは、ルールに基づきます。このルールによって、ユーザーは自分が所有するジョブで発生したイベントのみを検知することが許可され、他のすべてのメッセージはフィルタ処理で除外されます。同じ名前のAQエージェントがすでに存在する場合は、エラーが発生します。

ADD_GROUP_MEMBERプロシージャ

このプロシージャは、1つ以上のメンバーを既存のグループに追加します。

構文

DBMS_SCHEDULER.ADD_GROUP_MEMBER (
group_name              IN VARCHAR2,
member                  IN VARCHAR2);

パラメータ

表140-13 ADD_GROUP_MEMBERプロシージャのパラメータ

パラメータ

説明

group_name

グループの名前。

member

グループに追加するメンバーのカンマ区切りリスト。メンバーはグループ・タイプと一致する必要があります。同じタイプのグループがメンバーになることができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。

いずれかのメンバーが存在しない場合は、エラーが戻されます。すでにグループに存在するメンバーはスキップされ、エラーは発生しません。

キーワードLOCALは、データベース接続先グループまたは外部接続先グループのメンバーとして含めることができます。このキーワードの詳細は、「CREATE_GROUPプロシージャ」を参照してください。

使用上の注意

次のユーザーはグループにメンバーを追加できます。

- グループ所有者。

- グループでALTERオブジェクト権限を付与されたユーザー。

- CREATE ANY JOBシステム権限があるユーザー。

タイプWINDOWのグループにメンバーを追加するには、MANAGE SCHEDULER権限が必要です。

関連項目:
「CREATE_GROUPプロシージャ」

ADD_JOB_EMAIL_NOTIFICATIONプロシージャ

このプロシージャは、ジョブの電子メール通知を追加します。指定したジョブの状態イベントが発生した場合は、指定した受信者のリストに必ず電子メールが送信されます。

構文

DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
job_name             IN VARCHAR2,
recipients           IN VARCHAR2,
sender               IN VARCHAR2 DEFAULT NULL,
subject              IN VARCHAR2 DEFAULT DBMS_SCHEDULER.DEFAULT_NOTIFICATION_SUBJECT,
body                 IN VARCHAR2 DEFAULT DBMS_SCHEDULER.DEFAULT_NOTIFICATION_BODY,
events               IN VARCHAR2 DEFAULT 'JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED,
JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR',
filter_condition     IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-14 ADD_JOB_EMAIL_NOTIFICATIONプロシージャのパラメータ

パラメータ

説明

job_name

電子メール通知を追加するジョブの名前。NULL以外にしてください。

recipients

通知を送信する電子メール・アドレスのカンマ区切りリスト。リストされているすべてのイベントに対する電子メール通知は、すべての受信者に送信されます。NULL以外にしてください。

sender

電子メール・ヘッダーで送信者のアドレス(送信者: アドレス)に使用する電子メール・アドレス。NULLまたは省略した場合、Scheduler属性email_senderで指定した電子メール・アドレスが使用されます。Scheduler属性の詳細は、『Oracle Database管理者ガイド』を参照してください。

subject

電子メール・ヘッダーに使用する件名。表140-15は、このパラメータに含められる変数を説明しています。Schedulerは、通知を送信する前にこれらの変数に値を割り当てます。subjectが省略された場合は、デフォルトの件名が使用されます。デフォルトの件名は次のテキストで、'%'文字で囲まれたテキストが変数を表します。

'Oracle Scheduler Job Notification - %job_owner%.%job_name%.%job_subname% %event_type%'

body

電子メール・メッセージの本文。表140-15は、このパラメータに含められる変数を説明しています。Schedulerは、通知を送信する前にこれらの変数に値を割り当てます。bodyが省略された場合は、デフォルトの本文が使用されます。デフォルトの本文は次のテキストで、'%'文字で囲まれたテキストが変数を表します。

'Job: %job_owner%.%job_name%.%job_subname%
Event: %event_type%
Date: %event_timestamp%
Log id: %log_id%
Job class: %job_class_name%
Run count: %run_count%
Failure count: %failure_count%
Retry count: %retry_count%
Error code: %error_code%
Error message: %error_message%'

events

電子メール通知を送信するジョブの状態イベントのカンマ区切りリスト。NULL以外にしてください。リストされているイベントが発生した場合、通知はすべての受信者に送信されます。表140-78に、このパラメータの有効なイベントを示します。eventsが省略された場合は、次のデフォルトのイベントに対して通知が送信されます。

JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED,JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR

filter_condition

電子メール通知を送信するイベントをフィルタするために使用されます。NULLの場合、指定したイベントが発生すると毎回電子メール通知が送信されます。filter_conditionは、:eventバインド変数を参照できるブールSQL WHERE句である必要があります。このバインド変数は、発生したイベントを表すタイプSCHEDULER$_EVENT_INFOのオブジェクトに自動的にバインドされます。

たとえば、イベントのエラー番号が600または700の場合にのみ電子メール通知を送信するには、次のfilter_conditionを使用します。

:event.error_code=600 or :event.error_code=700

「SCHEDULER$_EVENT_INFOオブジェクト・タイプ」を参照してください。

表140-15は、件名と本文の引数で使用できる変数を示しています。

表140-15 SUBJECTおよびBODYパラメータで使用する変数

変数

コメント

%job_owner%

ジョブが作成されたスキーマ。

%job_name%

電子メール通知を追加するジョブの名前。

%job_subname%

parallel_instances属性セットがあるイベント・ベースのジョブおよびチェーン・ステップのために存在します。

%event_type%

値は表140-78のとおりです。

%event_timestamp%

イベントが発生した時刻。

%log_id%

ビュー*_SCHEDULER_JOB_LOGおよびビュー*_SCHEDULER_JOB_RUN_DETAILSのLOG_ID列を参照します。

%error_code%

エラー・コードの番号。

%error_message%

エラー・メッセージのテキスト。

%run_count%

イベントが発生したときのジョブの実行数。

%failure_count%

イベントが発生したときのジョブの失敗数。

%retry_count%

イベントが発生したときのジョブの再試行数。

使用上の注意

特定のジョブに設定する様々な通知セットそれぞれに対してADD_JOB_EMAIL_NOTIFICATIONを一度コールできます。たとえば、JOB_FAILED、JOB_BROKEN、JOB_SCH_LIM_REACHEDおよびJOB_CHAIN_STALLEDイベントの通知をプリンシパルDBAおよびすべての上位DBAに送信し、JOB_OVER_MAX_DURイベントの通知をプリンシパルDBAにのみ送信することができます。

このプロシージャは、Scheduler属性email_serverが有効なSMTPサーバーに設定されている場合のみ成功します。詳細は、『Oracle Database管理者ガイド』を参照してください。

このプロシージャをコールするには、ジョブ所有者になるか、CREATE ANY JOBシステム権限を持つか、ジョブでALTERオブジェクト権限を持つ必要があります。

ALTER_CHAINプロシージャ

このプロシージャは、チェーンの指定ステップの属性を変更します。これは、現在実行中のチェーン・ジョブと、同じチェーン・ジョブのまたはそのチェーンを指定する他のチェーン・ジョブの将来的な実行の両方において、将来的に実行されるすべての指定ステップに影響します。

構文

1つ以上のステップのブール属性の値を変更する場合:

DBMS_SCHEDULER.ALTER_CHAIN (
chain_name              IN VARCHAR2,
step_name               IN VARCHAR2,
attribute               IN VARCHAR2,
value                   IN BOOLEAN);

1つ以上のステップの文字属性の値を変更する場合:

DBMS_SCHEDULER.ALTER_CHAIN (
chain_name              IN VARCHAR2,
step_name               IN VARCHAR2,
attribute               IN VARCHAR2,
char_value              IN VARCHAR2);

パラメータ

表140-16 ALTER_CHAINプロシージャのパラメータ

パラメータ

説明

chain_name

変更するチェーンの名前。

step_name

変更するステップまたはステップのカンマ区切りリストの名前。NULLは指定できません。

attribute

変更するステップの属性。次のいずれかを指定する必要があります。

- 'PAUSE'
ステップに対してTRUEに設定すると、ステップの実行が終了したときにその状態はPAUSEDになります(completed属性はFALSEのままです)。

一時停止したチェーン・ステップのPAUSE属性を、(ALTER_RUNNING_CHAINを使用して)FALSEに再設定すると、ステップの状態は完了状態(SUCCEEDED、FAILEDまたはSTOPPED)になり、completed属性がTRUEに設定されます。

PAUSEに設定すると、実行済のステップには影響しません。これによって、特定ステップの実行後に、チェーンの実行を一時停止できます。

- 'PAUSED_BEFORE'
ステップに対してTRUEが設定されており、そのステップを開始するルール条件のいずれかに当てはまる場合、状態はPAUSEDに変更され、ステップは実行されません。

開始前に一時停止したチェーン・ステップで(ALTER_RUNNING_CHAINを使用して)PAUSE_BEFOREがFALSEにリセットされた場合、ステップを開始するルール条件のいずれかに当てはまると、ステップの実行が開始されます。

PAUSE_BEFOREに設定すると、実行中または実行済のステップには影響しません。これによって、特定ステップの実行前に、チェーンの実行を一時停止できます。

- 'SKIP'
ステップに対してTRUEに設定すると、ステップ条件が満たされた場合、ステップは実行されず、即時成功した場合と同様に処理されます。SKIPをTRUEに設定しても、そのステップが、実行中のステップ、遅延後に実行されるようにスケジュールされているステップ、またはすでに実行済のステップの場合は影響を受けません。PAUSEが設定されているステップのSKIPをTRUEに設定すると、ステップ条件が満たされた場合、そのステップの状態は即時PAUSEDになります。

- 'RESTART_ON_FAILURE'
ステップに対してTRUEに設定し、そのステップがアプリケーション・エラーのために失敗した場合、ステップは通常のScheduler再試行メカニズムを使用して再試行されます(1秒後、10秒後、100秒後など最高6回まで)。6回の再試行がすべて失敗した場合(約30時間後)、チェーン・ステップはFAILEDとマークされます。

FALSEに設定されると(デフォルト)、失敗したチェーン・ステップはただちにFAILEDとマークされます。

- 'RESTART_ON_RECOVERY'
ステップに対してTRUEに設定し、そのステップがデータベースのシャットダウンよって停止した場合、ステップはデータベースのリカバリ時に再開されます。

FALSEに設定されており、ステップがデータベースのシャットダウンよって停止した場合は、データベースのリカバリ時にそのステップに停止のマークが付けられ、チェーンは続行されます。

- 'DESTINATION_NAME'
既存のデータベース接続先または外部接続先の名前。外部接続先名は、ビューALL_SCHEDULER_EXTERNAL_DESTSで表示でき、データベース接続先名はビュー*_SCHEDULER_DB_DESTSで表示できます。この属性に接続先グループは指定できません。このパラメータはデフォルトではNULLです。

- 'CREDENTIAL_NAME':
このステップを実行するときに使用する資格証明。デフォルトではNULLです。

value

属性に設定する値(ブール属性の場合)。

char_value

属性に設定する値(文字属性の場合)。

使用上の注意

チェーンを変更するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTERオブジェクト権限を持っているか、またはCREATE ANY JOBシステム権限を持っている必要があります)。

ALTER_RUNNING_CHAINプロシージャ

このプロシージャは、チェーンの指定ステップの属性を変更します。指定された実行中のチェーン・ジョブのチェーンのインスタンスのステップにのみ影響します。

構文

DBMS_SCHEDULER.ALTER_RUNNING_CHAIN (
job_name                IN VARCHAR2,
step_name               IN VARCHAR2,
attribute               IN VARCHAR2,
value                   IN {BOOLEAN|VARCHAR2});

パラメータ

表140-17 ALTER_RUNNING_CHAINプロシージャのパラメータ

パラメータ

説明

job_name

チェーンを実行しているジョブの名前。

step_name

変更するステップまたはステップのカンマ区切りリストの名前。属性がPAUSEまたはSKIPの場合にこれをNULLに設定すると、実行中のチェーンのすべてのステップが変更されます。

attribute

変更するステップの属性。有効な値は、次のとおりです。

- 'PAUSE'
ステップのPAUSE属性をTRUEに設定すると、ステップの実行後にその状態はPAUSEDになります(completed属性はFALSEのままです)。

一時停止したチェーン・ステップのPAUSE属性を、(ALTER_RUNNING_CHAINを使用して)FALSEに再設定すると、ステップの状態は完了(SUCCEEDED、FAILEDまたはSTOPPED)になり、completed属性がTRUEに設定されます。PAUSEに設定すると、実行済のステップには影響しません。これによって、特定ステップの実行後に、チェーンの実行を一時停止できます。step_nameをNULLに設定した場合は、この実行中のチェーンのすべてのステップのPAUSEがTRUEに設定されます。

- 'PAUSE_BEFORE'
まだ実行されていないステップに対してTRUEが設定されており、そのステップを開始するルール条件のいずれかに当てはまる場合、状態はPAUSEDに変更され、ステップは実行されません。

開始前に一時停止したチェーン・ステップでPAUSE_BEFOREがFALSEにリセットされた場合、ステップを開始するルール条件のいずれかに当てはまると、ステップの実行が開始されます。

PAUSE_BEFOREに設定すると、実行中または実行済のステップには影響しません。これによって、特定ステップの実行前に、チェーンの実行を一時停止できます。

step_nameをNULLに設定した場合は、この実行中のチェーンのすべてのステップのPAUSE_BEFOREが指定値に設定されます。

attribute CONTINUED

- 'SKIP'
ステップのSKIP属性をTRUEに設定すると、ステップ条件が満たされた場合、ステップは実行されず、即時成功した場合と同様に処理されます。SKIPをTRUEに設定しても、そのステップが、実行中のステップ、遅延後に実行されるようにスケジュールされているステップ、またはすでに実行済のステップの場合は影響を受けません。

step_nameをNULLに設定した場合は、この実行中のチェーンのすべてのステップのSKIPがTRUEに設定されます。PAUSEが設定されているステップのSKIPをTRUEに設定すると、ステップ条件が満たされた場合、そのステップの状態は即時PAUSEDになります。

- 'RESTART_ON_FAILURE'
ステップに対してTRUEに設定し、そのステップがアプリケーション・エラーのために失敗した場合、ステップは通常のScheduler再試行メカニズムを使用して再試行されます(1秒後、10秒後、100秒後など最高6回まで)。6回の再試行がすべて失敗した場合(約30時間後)、チェーン・ステップはFAILEDとマークされます。

FALSEに設定されると(デフォルト)、失敗したチェーン・ステップはただちにFAILEDとマークされます。

- 'RESTART_ON_RECOVERY'
ステップのRESTART_ON_RECOVERY属性をTRUEに設定すると、ステップは、データベースのシャットダウンよって停止した場合、データベースのリカバリ時に再開されます。

FALSEに設定されており、ステップがデータベースのシャットダウンよって停止した場合は、データベースのリカバリ時にそのステップに停止のマークが付けられ、チェーンは続行されます。

- 'STATE'
ステップの状態を変更します。状態は、ステップを実行中でない場合にのみ変更できます。状態は、次のいずれかにのみ変更できます。

'NOT_STARTED', 'SUCCEEDED', 'FAILED error_code'

状態をFAILEDに変更する場合は、エラー・コード(正の整数)を指定する必要があります。

value

属性に設定する値。有効な値は、TRUE、FALSE、'NOT_STARTED'、'SUCCEEDED'または'FAILED error_code'です。

使用上の注意

実行中のチェーンを変更するには、実行中のジョブに対するALTER権限を持っている必要があります(ジョブの所有者であるか、ジョブに対するALTER権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

CLOSE_WINDOWプロシージャ

このプロシージャは、オープンしているウィンドウをただちにクローズします。ウィンドウはクローズすると無効になります。Schedulerでは、ウィンドウがクローズすると、リソース・プランをウィンドウ外で有効なリソース・プランに切り替えるか、オーバーラップ・ウィンドウの場合はリソース・プランを別のウィンドウに切り替えます。

構文

DBMS_SCHEDULER.CLOSE_WINDOW (
window_name             IN VARCHAR2);

パラメータ

表140-18 CLOSE_WINDOWプロシージャのパラメータ

パラメータ

説明

window_name

ウィンドウの名前。

使用上の注意

存在しないウィンドウ、またはオープンしていないウィンドウをクローズしようとすると、エラーが発生します。

ジョブの属性stop_on_window_closeがTRUEに設定されていない場合は、ジョブを実行しているウィンドウをクローズしても、その実行中のジョブは停止されません。ただし、リソース・プランが変更されると、ジョブに割り当てられたリソースも変更される可能性があります。

実行中のジョブのスケジュールとしてタイプWINDOWのグループが設定されている場合、そのジョブを実行しているウィンドウをクローズしても、同じウィンドウ・グループ内の別のウィンドウがアクティブ化されると、このジョブは停止されません。これは、ジョブの属性stop_on_window_closeがTRUEに設定されている場合でも当てはまります。

ウィンドウをクローズするには、MANAGE SCHEDULER権限が必要です。

COPY_JOBプロシージャ

このプロシージャは、既存のジョブのすべての属性を新しいジョブにコピーします。既存のジョブのステータスは変更されませんが、新しいジョブは使用禁止で作成されます。

構文

DBMS_SCHEDULER.COPY_JOB (
old_job                IN VARCHAR2,
new_job                IN VARCHAR2);

パラメータ

表140-19 COPY_JOBプロシージャのパラメータ

パラメータ

説明

old_job

既存のジョブの名前。

new_job

新しいジョブの名前。

使用上の注意

ジョブをコピーするには、新しいジョブのスキーマ内にジョブを作成する権限(ユーザー自身のスキーマに作成する場合はCREATE JOBシステム権限、それ以外の場合はCREATE ANY JOBシステム権限)を持っている必要があります。古いジョブがユーザー自身のスキーマにない場合は、そのジョブに対するALTER権限か、またはCREATE ANY JOBシステム権限も持っている必要があります。

CREATE_CHAINプロシージャ

このプロシージャは、新しいチェーンを作成します。チェーンの名前は、myschema.mynameなどのようにスキーマ名で修飾することもできます。

チェーンは、常に使用禁止の状態で作成されるため、使用する前にENABLEプロシージャで使用可能にする必要があります。

構文

DBMS_SCHEDULER.CREATE_CHAIN (
chain_name              IN VARCHAR2,
rule_set_name           IN VARCHAR2 DEFAULT NULL,
evaluation_interval     IN INTERVAL DAY TO SECOND DEFAULT NULL,
comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-20 CREATE_CHAINプロシージャのパラメータ

パラメータ

説明

chain_name

新しいチェーンに割り当てる名前(オプションで、スキーマによって修飾することもできます)。この名前は、SQLネームスペース内で一意である必要があるため、名前およびスキーマが同じ表またはその他のオブジェクトは存在できません。

rule_set_name

通常、ルール・セットは渡す必要がありません。ルール・セットおよび関連する空の評価コンテキストは、Schedulerによって自動的に作成されます。その後、ユーザーは、DEFINE_CHAIN_RULEを使用してルールを追加したり、DROP_CHAIN_RULEを使用してルールを削除できます。

十分な知識を持つユーザーは、チェーン依存性を表すルール・セットを作成し、ここで渡すことができます。これによって、より柔軟にルールを定義できます。たとえば、条件によって外部変数を参照したり、評価コンテキストによって表を公開することができます。ルール・セットを渡す場合は、それがチェーン・ルール・セットの形式であることを確認する必要があります。(たとえば、すべてのステップは、評価コンテキストに変数として示されている必要があります)。ルール・セットを渡さない場合、ルール・セットはSCHED_RULESET${N}の形式で作成され、評価コンテキストはSCHED_EVCTX${N}の形式で作成されます。

ルールおよびルール・セットの詳細は、『Oracle Streams概要および管理』を参照してください。

evaluation_interval

これがNULLの場合、ジョブの開始時およびステップの完了時にのみ、実行中のチェーンのルールが再評価されます。NULL以外の値では、指定された間隔で定期的にもルールの評価が行われます。評価ではCPUが集中的に使用される場合があるため、念のためにこれを使用可能な最高値に設定するか、または可能な場合はNULLのままにしておく必要があります。evaluation_intervalは、1分より小さい値または1日より大きい値にはできません。

comments

チェーンの目的を説明するコメント(オプション)。

使用上の注意

自分のスキーマ内にチェーンを作成する場合は、CREATE JOBシステム権限が必要です。別のスキーマ内にチェーンを作成する場合は、CREATE ANY JOBシステム権限が必要です。rule_set_nameを指定しない場合、ルール・セットと評価コンテキストは、チェーンが作成されるスキーマに作成されるため、ユーザーは、これらのオブジェクトの作成に必要な権限を持っている必要があります。詳細は、DBMS_RULE_ADM.CREATE_RULE_SETおよびDBMS_RULE_ADM.CREATE_EVALUATION_CONTEXTプロシージャに関する説明を参照してください。

CREATE_CREDENTIALプロシージャ

注意:
Oracle Database 12cリリース1(12.1)では、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、かわりにDBMS_CREDENTIALパッケージで提供される拡張機能、具体的にはCREATE_CREDENTIALプロシージャを使用することをお薦めします。

このプロシージャは、ユーザー名/パスワードのペアを作成して保存します。資格証明は、ローカルまたはリモートのホスト・オペレーティング・システムあるいはリモートOracle Databaseで認証できるようにジョブに割り当てられます。

構文

DBMS_SCHEDULER.CREATE_CREDENTIAL (
credential_name         IN VARCHAR2,
username                IN VARCHAR2,
password                IN VARCHAR2,
database_role           IN VARCHAR2 DEFAULT NULL,
windows_domain          IN VARCHAR2 DEFAULT NULL,
comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-21 CREATE_CREDENTIALプロシージャのパラメータ

パラメータ

説明

credential_name

資格証明に割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。これは、NULLには設定できません。二重引用符で囲まれていない場合は、大文字に変換されます。

username

ホスト・オペレーティング・システムまたはリモートOracle Databaseにログインするためのユーザー名。これはNULLには設定できず、大/小文字が区別されます。二重引用符または空白を含むことはできません。最大長は64です。

password

ユーザー名のパスワード。これはNULLには設定できず、大文字と小文字が区別されます。このパスワードは難読化された状態で格納され、Schedulerのディクショナリ・ビューには表示されません。最大長は128です。

database_role

database_role属性の値は、リモート・データベース・ジョブを実行するために、リモート・データベースへのログインに対するシステム権限として使用されます。

有効な値はSYSDBAおよびSYSOPERです。

windows_domain

Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。このドメインは、自動的に大文字に変換されます。最大長は64です。

comments

資格証明の説明に使用可能なテキスト文字列。Schedulerではこのパラメータは使用されません。最大長は240です。

使用上の注意

資格証明は特定のスキーマに存在し、CREATE JOBシステム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマに資格証明を作成するには、CREATE ANY JOB権限が必要です。

CREATE_DATABASE_DESTINATIONプロシージャ

このプロシージャは、データベース接続先を作成します。データベース接続先は、リモート・データベース・ジョブが実行されるOracle Databaseを表します。

リモート・データベースが存在するホストには、このプロシージャがコールされたデータベースに登録された実行中のSchedulerエージェントが必要です。

構文

DBMS_SCHEDULER.CREATE_DATABASE_DESTINATION (
destination_name        IN VARCHAR2,
agent                   IN VARCHAR2,
tns_name                IN VARCHAR2,
comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-22 CREATE_DATABASE_DESTINATIONプロシージャのパラメータ

パラメータ

説明

destination_name

データベース接続先に割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。NULL以外にしてください。二重引用符で囲まれていない場合は、大文字に変換されます。

agent

Schedulerエージェントが接続する外部接続先の名前。エージェント名と同じです。

この外部接続先は、すでに存在している必要があります。エージェントを表す外部接続先は、エージェントがインスタンスに登録されるときに自動的にデータベース・インスタンスで作成されます。

エージェントの名前はエージェント設定ファイルで指定されます。指定されない場合、存在するホストの名前の最初の部分(最初のピリオドの前)がデフォルトで設定されます。

tns_name

接続先のOracle Databaseインスタンスに解決される、Oracle Net接続識別子。正確な構文はOracle Net構成に依存します。接続識別子は、完全なOracle Net接続記述子(ネットワーク・アドレスまたはデータベース・サービス名)あるいは接続記述子の別名であるネット・サービス名になります。別名は、ローカル・コンピュータのtnsnames.oraファイルで解決される必要があります。tns_nameの最大サイズは2000文字です。

tns_nameがNULLの場合、エージェントはホストにあるデフォルトのOracle Databaseに接続します。デフォルトのデータベースは、エージェント・ホーム・ディレクトリにあるエージェント構成ファイル(schagent.conf)のORACLE_HOMEパラメータおよびORACLE_SIDパラメータに値を割り当てることにより指定します。

接続識別子の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

comments

データベース接続先を説明するテキスト文字列。Schedulerではこの引数は使用されません。

使用上の注意

データベース接続先は特定のスキーマに存在し、CREATE JOBシステム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマにデータベース接続先を作成するには、CREATE ANY JOB権限が必要です。

CREATE_EVENT_SCHEDULEプロシージャ

このプロシージャは、イベント・スケジュールを作成します(イベント・スケジュールは、特定のイベントが発生した際にジョブを開始するために使用します)。

構文

DBMS_SCHEDULER.CREATE_EVENT_SCHEDULE (
schedule_name           IN VARCHAR2,
start_date              IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
event_condition         IN VARCHAR2 DEFAULT NULL,
queue_spec              IN VARCHAR2,
end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-23 CREATE_EVENT_SCHEDULEのパラメータ

パラメータ

説明

schedule_name

スケジュールに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、スケジュールはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。

start_date

この属性は、スケジュールが有効になる日時を指定します。このスケジュールのコンテキストでは、この日時より前に発生したイベントは無視されます。

event_condition

イベント・ソースのキュー表の列に基づく条件式です。この式は、アドバンスト・キューイング・ルールの構文に従っている必要があります。したがって、メッセージ・ペイロードがオブジェクト・タイプで、式のオブジェクト属性の前にtab.user_dataを付加した場合は、ユーザー・データ・プロパティを式に含めることができます。ルールの詳細は、「DBMS_AQADM.ADD_SUBSCRIBERプロシージャ」を参照してください。

queue_spec

この引数は、File Watcher名または特定のジョブを開始するイベントがエンキューされるキュー(ソース・キュー)を指定します。ソース・キューが保護キューの場合、queue_spec引数は、queue_name, agent nameという形式の値ペアを含む文字列です。保護キューでない場合は、キュー名のみ指定する必要があります。指定したキュー名が完全修飾名でない場合、キューは、ジョブの所有者のスキーマ内にあるとみなされます。保護キューの場合、指定するエージェント名は、キューに現在サブスクライブされている有効なエージェントの名前である必要があります。

end_date

指定日時の後で、ジョブの実行およびウィンドウのオープンを停止する日時です。

end_dateの指定されていないイベント・スケジュールは、無期限に有効です。

end_dateは、start_dateより後の日付である必要があります。それ以外の場合、スケジュールを作成する際にエラーが発生します。

comments

スケジュールのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。

使用上の注意

ユーザーは、各自のスキーマでスケジュールを作成するにはCREATE JOB権限を、またはschema.schedule_nameを指定することによって他者のスキーマでスケジュールを作成するにはCREATE ANY JOB権限を持っている必要があります。スケジュールが作成されると、他のユーザーもそのスケジュールを使用できます。スケジュールは、PUBLICへのアクセス権を伴って作成されます。このため、スケジュールへのアクセス権限を明示的に付与する必要はありません。

関連項目:
「CREATE_FILE_WATCHERプロシージャ」

CREATE_FILE_WATCHERプロシージャ

このプロシージャでFile Watcherを作成します(これはSchedulerオブジェクトで、システムへの到着時にSchedulerにジョブを開始させるファイルの場所、名前およびその他のプロパティを定義します)。File Watcherを作成した後、イベント・ベースのジョブまたはイベント・スケジュールで参照します。

構文

DBMS_SCHEDULER.CREATE_FILE_WATCHER (
file_watcher_name            IN VARCHAR2,
directory_path               IN VARCHAR2,
file_name                    IN VARCHAR2,
credential_name              IN VARCHAR2,
destination                  IN VARCHAR2  DEFAULT NULL,
min_file_size                IN PLS_INTEGER DEFAULT 0,
steady_state_duration        IN INTERVAL DAY TO SECOND DEFAULT NULL,
comments                     IN VARCHAR2 DEFAULT NULL,
enabled                      IN BOOLEAN DEFAULT TRUE);

パラメータ

表140-24 CREATE_FILE_WATCHERのパラメータ

パラメータ

説明

file_watcher_name

File Watcherに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、File Watcherはスキーマの表と同じ名前を持つことができません。オプションで、スキーマ名を接頭辞として付加できます。NULL以外にしてください。

directory_path

ファイルの到着が指定されているディレクトリ。パスの先頭にある単一のワイルドカード'?'は、Oracleホームのパスを示します。たとえば、'?/rdbms/log'は、Oracleホーム・ディレクトリのrdbms/logサブディレクトリを示します。

file_name

検索するファイル名。2つのワイルドカードがファイル名の任意の場所で許可され、'?'は任意の1文字を示し、'*'はゼロ以上の文字を示します。この属性にNULLは指定できません。

credential_name

有効な資格証明オブジェクトの名前。

File Watcherでは、ホスト・オペレーティング・システムに対する認証を行い監視対象ファイルにアクセスするために、資格証明が使用されます。File Watcherの所有者は、資格証明でEXECUTE権限を持つ必要があります。NULL以外にしてください。

destination

外部接続先の名前。リモートSchedulerエージェントをデータベースに登録して、外部接続先を作成します。有効な外部接続先名については、ビューALL_SCHEDULER_EXTERNAL_DESTSを参照してください。このパラメータがNULLの場合、File Watcherはローカル・ホストに作成されます。

min_file_size

File Watcherがファイルを見つけたとみなす前にファイルが達する必要がある最小サイズ(バイト単位)。デフォルトは0(ゼロ)です。

steady_state_duration

File Watcherがファイルを見つけたとみなす前にファイルが変化せずに留まっている必要がある最小間隔。1時間を超えることはできません。NULLに設定すると、内部の値が使用されます。最小値は10秒です。File Watcherジョブの操作を効率化するために、すべてのFile Watcherで類似したsteady_state_durationの値を使用することをお薦めします。また、File Watcherスケジュールの反復間隔は、steady_state_durationの値以上である必要があります。

comments

オプションのコメント。

enabled

TRUE(デフォルト)の場合、File Watcherは有効です。

使用上の注意

スキーマにFile Watcherを作成するには、CREATE JOBシステム権限が必要です。自分のスキーマと異なるスキーマ(許可されないSYSスキーマ以外)にFile Watcherを作成するには、CREATE ANY JOBシステム権限が必要です。

CREATE_GROUPプロシージャ

このプロシージャは、グループを作成します。グループにはメンバーが含まれ、メンバーはグループ作成時または後で指定できます。グループには、ウィンドウ・グループ、データベース接続先グループ、外部接続先グループの3つのタイプがあります。

他のDBMS_SCHEDULERパッケージのプロシージャでグループ名を使用して、オブジェクトのリストを指定できます。たとえば、リモート・データベース・ジョブに複数の接続先を指定するには、ジョブのDESTINATION_NAMEパラメータにグループ名を入力します。

構文

DBMS_SCHEDULER.CREATE_GROUP (
group_name           IN VARCHAR2,
group_type           IN VARCHAR2,
member               IN VARCHAR2 DEFAULT NULL,
comments             IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-25 CREATE_GROUPプロシージャのパラメータ

パラメータ

説明

group_name

グループに割り当てる名前。オプションで、スキーマ名を接頭辞として付加できます。これはNULLにはできません。二重引用符で囲まれていない場合は、大文字に変換されます。

group_type

グループにあるメンバーのタイプ。すべてのメンバーは同じタイプである必要があります。有効なタイプは、次のとおりです。

- 'DB_DEST'
(データベース接続先)メンバーは、リモート・データベース・ジョブを実行するためのデータベース接続先です。

- 'EXTERNAL_DEST
(外部接続先)メンバーは、リモート外部ジョブを実行するための外部接続先です。

- 'WINDOW'
メンバーはSchedulerウィンドウです。このタイプのグループを作成するには、MANAGE SCHEDULER権限が必要です。

データベース接続先および外部接続先グループのメンバーは次の形式になります。

[[schema.]credential@][schema.]destination

各項目の意味は、次のとおりです。

- credentialは、既存の資格証明の名前です。

- destinationは、既存のデータベース接続先または外部接続先の名前です。

接続先メンバーの資格証明部分はオプションです。省略すると、この接続先メンバーを使用するジョブはデフォルトの資格証明を使用します。

ウィンドウ・グループのメンバーはウィンドウの名前です。すべてのSchedulerウィンドウはSYSスキーマに存在するため、ウィンドウのスキーマ名は指定しません。

member

グループ・メンバーのカンマ区切りリスト(オプション)。デフォルトはNULLです。NULLの場合、ADD_GROUP_MEMBERプロシージャを使用してメンバーを追加します。ADD_GROUP_MEMBERを使用して、後でメンバーを追加することもできます。

キーワードLOCALは、データベース接続先グループまたは外部接続先グループでメンバーとして使用することができます。

- データベース接続先グループでは、LOCALはジョブが作成されるソース・データベースを表します。資格証明を前に付けることはできません。

- 外部接続先グループでは、LOCALはソース・データベースが存在するホストを表します。オプションで、資格証明名を前に付けることができます。資格証明が入力されない場合、接続先としてこのグループを使用するジョブにはデフォルトの資格証明が必要です。

comments

グループを説明するテキスト文字列。Schedulerではこの引数は使用されません。

使用上の注意

グループは特定のスキーマに存在し、CREATE JOBシステム権限を持つユーザーが作成できます。自身のスキーマ以外のスキーマにグループを作成するには、CREATE ANY JOB権限が必要です。グループ名は、すべてのSchedulerオブジェクト内で一意である必要があります。

ジョブまたはスケジュールを作成するときに他のユーザーがグループを参照できるように、グループに対するSELECTまたはREAD権限を付与することができます。他のユーザーがグループを変更できるようにするには、グループに対するALTER権限を付与することができます。

各グループメンバーは、グループ内で一意である必要があります。接続先グループでは、資格証明/接続先名のペアがグループ内で一意である必要があります。いずれのグループ・メンバーも存在しない場合は、エラーが発生します。接続先グループでは、メンバーの資格証明と接続先の両方の部分が存在する必要があります。

同じタイプの別のグループは、グループ・メンバーになることができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。

グループは使用可能で作成されますが、使用禁止にできます。

例

次のPL/SQLブロックはproduction_dest1という名前のグループを作成します。このグループのメンバーは、本番データベースのコレクションに使用するデータベース接続先です。

BEGIN
DBMS_SCHEDULER.CREATE_GROUP(
GROUP_NAME    => 'production_dest1',
GROUP_TYPE    => 'DB_DEST',
MEMBER        => 'LOCAL, oracle_cred@prodhost1, prodhost2',
COMMENTS      => 'All sector1 production machines');
END;

CREATE_JOBプロシージャ

このプロシージャは、1つのジョブ(通常または軽量)を作成します。ジョブの作成時にenabled属性をTRUEに設定して使用可能にすると、Schedulerによりスケジュールに従って自動的にジョブは実行されます。ジョブの作成時に使用禁止に設定すると、SET_ATTRIBUTEプロシージャを使用してジョブを使用可能にするまでジョブは実行されません。

このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、構文宣言とともに示します。

構文

既存のプログラムまたはスケジュールを使用せずに、1回のコールでジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
job_name             IN VARCHAR2,
job_type             IN VARCHAR2,
job_action           IN VARCHAR2,
number_of_arguments  IN PLS_INTEGER              DEFAULT 0,
start_date           IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
repeat_interval      IN VARCHAR2                 DEFAULT NULL,
end_date             IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
job_class            IN VARCHAR2                 DEFAULT 'DEFAULT_JOB_CLASS',
enabled              IN BOOLEAN                  DEFAULT FALSE,
auto_drop            IN BOOLEAN                  DEFAULT TRUE,
comments             IN VARCHAR2                 DEFAULT NULL,
credential_name      IN VARCHAR2                 DEFAULT NULL,
destination_name     IN VARCHAR2                 DEFAULT NULL);

指定のスケジュール・オブジェクトおよび指定のプログラム・オブジェクトを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
job_name                IN VARCHAR2,
program_name            IN VARCHAR2,
schedule_name           IN VARCHAR2,
job_class               IN VARCHAR2              DEFAULT 'DEFAULT_JOB_CLASS',
enabled                 IN BOOLEAN               DEFAULT FALSE,
auto_drop               IN BOOLEAN               DEFAULT TRUE,
comments                IN VARCHAR2              DEFAULT NULL,
job_style               IN VARCHAR2              DEFAULT 'REGULAR',
credential_name         IN VARCHAR2              DEFAULT NULL,
destination_name        IN VARCHAR2              DEFAULT NULL);

指定のプログラム・オブジェクトおよびインライン・スケジュールを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
job_name             IN VARCHAR2,
program_name         IN VARCHAR2,
start_date           IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
repeat_interval      IN VARCHAR2                 DEFAULT NULL,
end_date             IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
job_class            IN VARCHAR2                 DEFAULT 'DEFAULT_JOB_CLASS',
enabled              IN BOOLEAN                  DEFAULT FALSE,
auto_drop            IN BOOLEAN                  DEFAULT TRUE,
comments             IN VARCHAR2                 DEFAULT NULL,
job_style            IN VARCHAR2                 DEFAULT 'REGULAR',
credential_name      IN VARCHAR2                 DEFAULT NULL,
destination_name     IN VARCHAR2                 DEFAULT NULL);

指定のスケジュール・オブジェクトおよびインライン・プログラムを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
job_name                IN VARCHAR2,
schedule_name           IN VARCHAR2,
job_type                IN VARCHAR2,
job_action              IN VARCHAR2,
number_of_arguments     IN PLS_INTEGER       DEFAULT 0,
job_class               IN VARCHAR2          DEFAULT 'DEFAULT_JOB_CLASS',
enabled                 IN BOOLEAN           DEFAULT FALSE,
auto_drop               IN BOOLEAN           DEFAULT TRUE,
comments                IN VARCHAR2          DEFAULT NULL,
credential_name         IN VARCHAR2          DEFAULT NULL,
destination_name        IN VARCHAR2          DEFAULT NULL);

インライン・プログラムおよびイベントを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
job_name                IN VARCHAR2,
job_type                IN VARCHAR2,
job_action              IN VARCHAR2,
number_of_arguments     IN PLS_INTEGER       DEFAULT 0,
start_date              IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
event_condition         IN VARCHAR2          DEFAULT NULL,
queue_spec              IN VARCHAR2,
end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
job_class               IN VARCHAR2          DEFAULT 'DEFAULT_JOB_CLASS',
enabled                 IN BOOLEAN           DEFAULT FALSE,
auto_drop               IN BOOLEAN           DEFAULT TRUE,
comments                IN VARCHAR2          DEFAULT NULL,
credential_name         IN VARCHAR2          DEFAULT NULL,
destination_name        IN VARCHAR2          DEFAULT NULL);

指定のプログラム・オブジェクトおよびイベントを使用してジョブを作成する場合:

DBMS_SCHEDULER.CREATE_JOB (
job_name                IN VARCHAR2,
program_name            IN VARCHAR2,
start_date              IN TIMESTAMP WITH TIME ZONE,
event_condition         IN VARCHAR2,
queue_spec              IN VARCHAR2,
end_date                IN TIMESTAMP WITH TIME ZONE,
job_class               IN VARCHAR2          DEFAULT 'DEFAULT_JOB_CLASS',
enabled                 IN BOOLEAN           DEFAULT FALSE,
auto_drop               IN BOOLEAN           DEFAULT TRUE,
comments                IN VARCHAR2          DEFAULT NULL,
job_style               IN VARCHAR2          DEFAULT 'REGULAR',
credential_name         IN VARCHAR2          DEFAULT NULL,
destination_name        IN VARCHAR2          DEFAULT NULL);

パラメータ

表140-26 CREATE_JOBプロシージャのパラメータ

パラメータ

説明

job_name

ジョブに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、ジョブはスキーマの表と同じ名前を持つことができません。作成するジョブを別のスキーマに配置する場合は、そのスキーマ名でジョブを修飾する必要があります。

job_nameを指定しない場合、エラーが発生します。Schedulerによって名前を生成する場合は、GENERATE_JOB_NAMEプロシージャを使用して名前を生成してから、この生成された名前をCREATE_JOBプロシージャで使用できます。GENERATE_JOB_NAMEプロシージャは順序番号を生成し、この番号がジョブ名になります。順序番号には、接頭辞として文字列を付けることができます。これにより、順序番号の付いた文字列がジョブ名になります。詳細は、「GENERATE_JOB_NAMEファンクション」を参照してください。

job_type

この属性は、作成するジョブのタイプを指定します。これを指定しない場合、エラーが発生します。関連情報については、次の行のjob_actionを参照してください。

サポートされる値は、次のとおりです。

- 'PLSQL_BLOCK'
ジョブが無名PL/SQLブロックであることを示します。ジョブまたはプログラムのタイプがPLSQL_BLOCKの場合、そのジョブまたはプログラムの引数はサポートされません。この場合、引数は0である必要があります。

- 'STORED_PROCEDURE'
ジョブが、PL/SQLプロシージャ、Javaストアド・プロシージャまたは外部Cサブプログラムであることを示します。プロシージャのみがサポートされ、戻り値を持つファンクションはサポートされません。

- 'EXECUTABLE'
ジョブが、外部実行可能ファイルを使用してデータベースの外部で実行されることを示します。外部ジョブとは、オペレーティング・システムのコマンドラインから実行可能なものすべてのことです。Anydata引数は、EXECUTABLEタイプのジョブまたはプログラムではサポートされていません。ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。

- 'CHAIN'
ジョブがチェーンであることを示します。チェーンでは引数がサポートされていないため、number_of_argumentsは0にする必要があります。

- 'EXTERNAL_SCRIPT'
ジョブが、そのジョブを実行するコンピュータのコマンド・シェルを使用する外部スクリプトであることを示します。これは、Windowsの場合はcmd.exe、UNIXベースのシステムの場合はshシェルになります。ただし、スクリプトの最初の行で接頭辞#!を使用して異なるインタプリタが指定されている場合は除きます。

- 'SQL_SCRIPT'
ジョブがSQL*Plusスクリプトであることを示します。

ジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指している必要があります。SQL*Plusスクリプトは、SQL*Plus実行可能ファイルで実行します。ジョブは、データベース資格証明を含む接続資格証明を指している場合があります。その場合、SQL*Plusスクリプトを実行する前に、この資格証明を使用してデータベースに接続します。

接続資格証明の使用を選択した場合、set_attributeを使用してConnect_Credential_Name属性を指定する必要があります。接続資格証明がない場合、明示的なSQL*Plus接続文で有効なデータベースのユーザーIDおよびパスワードを指定する必要があります。

ジョブ所有者は、CREATE EXTERNAL JOBシステム権限を持っている必要があります。

- 'BACKUP_SCRIPT'
ジョブがRMANバックアップ・スクリプトであることを示します。

スクリプトは、ターゲット・コマンドを実行する前に、パスワードまたはOS認証を使用するCONNECT文を実行します。ジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指します。RMANセッションは、このオペレーティング・システム・ユーザーが実行します。

Schedulerは、現在のOracleホームのRMAN実行可能ファイルを使用してスクリプトを実行し、そのファイルがない場合はエラーをスローします。

ジョブ所有者は、CREATE EXTERNAL JOBシステム権限を持っている必要があります。

job_action

この属性は、ジョブのアクションを指定します。インライン・プログラムにjob_actionを指定しないと、ジョブの作成時にエラーが発生します。

次のアクションを指定できます。

- PL/SQLブロックの場合:
アクションはPL/SQLコードを実行します。これらのブロックはセミコロンで終わる必要があります。たとえば、my_proc();、BEGIN my_proc(); END;またはDECLARE arg pls_integer := 10; BEGIN my_proc2(arg); END;です。

Schedulerは独自のブロックでjob_actionをラップし、DECLARE ... BEGIN job_action END;を実行用にPL/SQLに渡します。これは一部の内部Scheduler変数を宣言するために行われます。PL/SQLコードには、event_messageを除く任意のSchedulerメタデータ属性を含めることができます。属性名は、他のPL/SQL識別子と同様に使用し、Schedulerによって値が割り当てられます。

使用可能なメタデータ属性の詳細は、表140-37を参照してください。

- ストアド・プロシージャの場合:
このアクションはストアド・プロシージャの名前です。ジョブとは別のスキーマにプロシージャが存在する場合は、そのスキーマを指定する必要があります。大/小文字の区別が必要な場合は、スキーマ名およびストア・プロシージャ名を二重引用符で囲みます。たとえば、job_action_action=>'"Schema"."Procedure"'のように指定します。

ジョブまたはプログラムのタイプがSTORED_PROCEDUREの場合、INOUT引数またはOUT引数を持つPL/SQLプロシージャは、job_actionとしてサポートされません。

- 実行可能ファイルの場合:
アクションは、フルパス名が含まれ、すべてのコマンドライン引数が除外されている外部実行可能ファイルの名前です。アクションが1つの疑問符('?')で始まっている場合、この疑問符は、ローカル・ジョブのOracleホーム・ディレクトリのパスまたはリモート・ジョブのSchedulerエージェント・ホームのパスに置き換えられます。アクションにアット・マーク('@')が含まれており、ジョブがローカルの場合、アット・マークは現行のOracleインスタンスのSIDに置き換えられます。

注意: シェル・スクリプトの構文はサポートされていません。実行可能ファイルの名前とパスからなる構文のみがサポートされています。

- チェーンの場合:
このアクションはSchedulerチェーン・オブジェクトの名前です。チェーンがジョブとは別のスキーマ内に存在する場合は、そのスキーマを指定する必要があります。

- 外部スクリプトの場合:
job_actionは、オペレーティング・システム・スクリプトまたはインライン・オペレーティング・システム・スクリプトへのパスである必要があります。job_actionがスクリプトへのパスである場合、ジョブを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。job_actionには、SQL*PlusまたはRMAN実行可能ファイルへのコールが直接含まれている場合があります。ジョブを実行するすべてのコンピュータのデフォルトの場所にそれらの実行可能ファイルが格納されている場合、ファイルのフルパスを指定する必要はありません。

ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。ジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指している必要があります。

- SQLスクリプトの場合:
job_actionは、SQL*PlusスクリプトまたはインラインSQL*Plusスクリプトへのパスである必要があります。job_actionがスクリプトへのパスである場合、ジョブを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。

ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。引数に名前が付いている場合、それらの引数はSQL*Plusセッションの名前付き変数にもバインドされます。

- バックアップ・スクリプトの場合:
job_actionは、RMANスクリプトまたはインラインRMANスクリプトへのパスである必要があります。program_actionがスクリプトへのパスである場合、プログラムを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。

ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。

number_of_arguments

この属性は、ジョブに予測される引数の数を指定します。範囲は0から255で、デフォルトは0です。

program_name

このジョブに関連付けるプログラムの名前です。プログラムがEXECUTABLEタイプの場合、ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。

start_date

ジョブの開始がスケジュールされている最初の日時を指定します。start_dateおよびrepeat_intervalをNULLのままにした場合、ジョブは使用可能になるとただちに実行されるようにスケジュールされます。

カレンダ式を使用して反復間隔を指定する繰返しジョブの場合は、start_dateは参照日として使用されます。ジョブが実行される最初の日時は、現在の日時以降で最初にカレンダ式に一致した日時になります。

Schedulerでは、ジョブが正確な時間に実行されることを保証しません。これは、システムがオーバーロードしてリソースが使用できない場合があるためです。

event_condition

イベント・ソースのキュー表の列に基づく条件式です。この式は、アドバンスト・キューイング・ルールの構文に従っている必要があります。したがって、メッセージ・ペイロードがオブジェクト・タイプで、式のオブジェクト属性の前にtab.user_dataを付加した場合は、ユーザー・データ・プロパティを式に含めることができます。ルールの詳細は、「DBMS_AQADM.ADD_SUBSCRIBERプロシージャ」を参照してください。

queue_spec

この引数には、次の値のいずれかが指定されます。

- 特定のジョブを開始するイベントがエンキューされるソース・キュー。保護されている場合、queue_spec引数は、queue_name, agent nameという形式の値ペアです。保護されていない場合は、キュー名のみ指定する必要があります。指定したキュー名が完全修飾名でない場合、キューは、ジョブの所有者のスキーマ内にあるとみなされます。保護キューの場合、指定するエージェント名は、キューに現在サブスクライブされている有効なエージェントの名前である必要があります。

- File Watcher名。このオプションの詳細は、『Oracle Database管理者ガイド』を参照してください。

repeat_interval

ジョブを繰り返す間隔を指定します。反復間隔は、カレンダ式またはPL/SQL式を使用して指定できます。

指定した式を評価して、ジョブの次回実行時を決定します。repeat_intervalを指定しない場合、ジョブは、指定した開始日に1回のみ実行されます。詳細は、「カレンダ構文」を参照してください。

schedule_name

このジョブに関連付けるスケジュール、ウィンドウまたはウィンドウ・グループの名前です。

job_class

このジョブに関連付けるクラス。

end_date

この属性は、ジョブの期限が切れる日時(これ以降にジョブは実行されなくなります)を指定します。end_dateよりも後でauto_dropがTRUEの場合、このジョブは削除されます。auto_dropがFALSEの場合、ジョブは使用禁止になり、ジョブのSTATEがCOMPLETEDに設定されます。

end_dateに値が指定されていない場合、ジョブは無期限で繰り返されます。ただし、max_runsまたはmax_failuresが設定されている場合は、いずれかの値に達するとジョブは停止します。

end_dateの値は、start_dateの値よりも大きい必要があります。等しいか小さい場合、ジョブが使用可能になったときにエラーが発生します。

comments

ジョブのコメントを指定します。デフォルトでは、この属性はNULLです。

job_style

作成されるジョブのスタイル。この引数は、次の値のいずれかを取ることができます。

- 'REGULAR': 通常のジョブが作成されます。これがデフォルトです。

- 'LIGHTWEIGHT': 軽量ジョブが作成されます。この値は、ジョブがプログラム・オブジェクトを参照する場合にのみ指定できます。軽量ジョブは、多数の短時間のジョブを頻繁に実行する場合に使用します。特定の条件下では、軽量ジョブを使用してもパフォーマンスがあまり向上しない場合があります。

credential_name

ジョブと使用するデフォルトの資格証明。リモート・データベース・ジョブ、リモート外部ジョブ、ローカル外部ジョブ、スクリプト・ジョブおよびファイル到着イベントを処理するイベント・ベースのジョブにのみ適用されます。資格証明が存在している必要があります。

ローカル・データベース・ジョブでは、NULLに設定してください。

ローカル外部ジョブのみでは、この属性がNULL(デフォルト)になっている場合、優先(デフォルトの)資格証明が選択されます。ローカルの外部ジョブの優先資格証明の詳細は、『Oracle Database管理者ガイド』を参照してください。

「CREATE_CREDENTIALプロシージャ」も参照してください。

destination_name

ジョブのデータベース接続先または外部接続先。リモート・データベース・ジョブおよびリモート外部ジョブのみに使用します。ローカル・データベースで実行されているジョブまたはローカル外部ジョブ(実行可能)では、NULLに設定してください。

この属性は、単一の接続先名またはタイプ'EXTERNAL_DEST'または'DB_DEST'のグループの名前にできます。単一の接続先またはグループは、すでに存在している必要があります。

この属性には、次の事項が適用されます。

- データベース接続先の場合、CREATE_DATABASE_DESTINATIONプロシージャで作成されている必要があります。

- 外部接続先の場合、リモートSchedulerエージェントをローカル・データベースに登録して、暗黙的に作成されている必要があります。

- グループの場合、グループの各メンバーが存在し、グループで指定されたすべての接続先でジョブが実行される必要があります。「CREATE_GROUPプロシージャ」を参照してください。

destination_nameは、次の場合に接続先グループを参照できません。

- ジョブ・タイプが'CHAIN'の場合。

- ジョブのスタイルが'LIGHTWEIGHT'の場合。

CREATE_JOBのcredential_name引数がNULLである場合、各接続先には次の形式で資格証明を前に付ける必要があります。

credential.destination

資格証明はすでに存在している必要があります。credential_name引数が指定されている場合、資格証明が前に付いていないすべての接続先でデフォルトの資格証明として機能します。

既存の接続先については、ビュー*_SCHEDULER_DB_DESTSおよびALL_SCHEDULER_EXTERNAL DESTSを問い合せ、既存のグループおよびそのメンバーについては、*_SCHEDULER_GROUP_MEMBERSを問い合せることができます。

*** destinationジョブ属性はOracle Database 11gR2で非推奨になり、destination_nameと置き換わります。

enabled

ジョブを使用可能で作成するかどうかを指定します。TRUEまたはFALSEを設定できます。デフォルトではFALSEに設定されるため、ジョブは使用禁止で作成されます。使用禁止ジョブとは、ジョブに関するメタデータが取得され、ジョブがデータベース・オブジェクトとして存在することを意味します。ただし、Schedulerはこのジョブを無視し、ジョブ・コーディネータは処理対象としてジョブを取得しません。ジョブ・コーディネータがジョブを処理できるようにするには、ジョブが使用可能である必要があります。この引数をTRUEに設定するか、またはENABLEプロシージャを使用すると、ジョブを使用可能にできます。

auto_drop

このフラグをTRUEに設定すると、ジョブは、完了するかまたは自動的に使用禁止になると自動的に削除されます。ジョブは、次の場合、完了したとみなされます。

- ジョブの終了日(またはジョブの終了予定日)を過ぎた場合。

- max_runs回実行された場合。max_runsはSET_ATTRIBUTEで設定されている必要があります。

- 繰返しジョブではなく、1回実行された場合。

ジョブは、max_failures回失敗すると、使用禁止になります。max_failuresもSET_ATTRIBUTEで設定します。

このフラグをFALSEに設定すると、ジョブは削除されず、ジョブのメタデータはDROP_JOBプロシージャで明示的に削除されるまで保持されます。

デフォルトでは、ジョブはauto_dropで作成され、TRUEに設定されます。

使用上の注意

ジョブは、デフォルトでは使用禁止の状態で作成されます。ジョブをアクティブにしてスケジュール可能にするには、明示的に使用可能にする必要があります。ジョブを使用可能にする前に、すべてのプログラム引数(存在する場合)を定義してください(これは、プログラム・オブジェクトにデフォルト値を定義するか、またはジョブに値を指定して行います)。

JOB_QUEUE_PROCESSES初期化パラメータは、ジョブの実行に対して作成できる処理の最大数を指定します。Oracle Database 11gリリース2以降、JOB_QUEUE_PROCESSESはDBMS_SCHEDULERジョブに適用されます。このパラメータを0に設定すると、DBMS_SCHEDULERジョブが無効になります。

ユーザー各自のスキーマでジョブを作成するには、CREATE JOB権限を持っている必要があります。CREATE ANY JOB権限を持っているユーザーは、すべてのスキーマでジョブを作成できます。作成するジョブを別のスキーマに配置する場合は、そのスキーマ名でジョブ名を修飾する必要があります。EXECUTABLEタイプのジョブの場合(またはEXECUTABLEタイプのプログラムを指定するジョブの場合)、ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。

ジョブを特定のクラスまたはプログラムに関連付けるには、そのクラスまたはプログラムのEXECUTE権限が必要です。

ジョブの属性には、CREATE_JOBで設定できないものもあります。一部の属性は、ジョブの作成後に設定する必要があります。たとえば、ジョブ引数は、SET_JOB_ARGUMENT_VALUEプロシージャまたはSET_JOB_ANYDATA_VALUEプロシージャで設定する必要があります。job_priority、max_runsなどの他のジョブ属性は、SET_ATTRIBUTEプロシージャで設定します。

複数のジョブを効率的に作成するには、CREATE_JOBSプロシージャを使用します。

注意:
Schedulerは、ジョブのイベント条件に一致するイベントが発生するたびに、イベント・ベースのジョブを実行します。ただし、ジョブがすでに実行されている間に発生したイベントは無視され、イベントはコンシュームされますが別のジョブの実行がトリガーされることはありません。

CREATE_JOB_CLASSプロシージャ

このプロシージャは、ジョブ・クラスを作成します。ジョブ・クラスはSYSスキーマ内に作成されます。

構文

DBMS_SCHEDULER.CREATE_JOB_CLASS (
job_class_name            IN VARCHAR2,
resource_consumer_group   IN VARCHAR2 DEFAULT NULL,
service                   IN VARCHAR2 DEFAULT NULL,
logging_level             IN PLS_INTEGER
DEFAULT DBMS_SCHEDULER.LOGGING_RUNS,
log_history               IN PLS_INTEGER DEFAULT NULL,
comments                  IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-27 CREATE_JOB_CLASSプロシージャのパラメータ

パラメータ

説明

job_class_name

ジョブ・クラスに割り当てる名前。ジョブ・クラスは、SYSスキーマ内にのみ作成できます。

この属性はジョブ・クラスの名前を指定し、ジョブ・クラスを一意に識別します。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、ジョブ・クラスはスキーマの表と同じ名前を持つことができません。

resource_consumer_group

この属性は、このクラスに関連付けるリソース・コンシューマ・グループを指定します。リソース・コンシューマ・グループは、処理のニーズに基づいてグループ化された同期または非同期セッションのセットです。ジョブ・クラスとリソース・コンシューマ・グループは、多対1の関係になります。ジョブ・クラスに関連付けられたリソース・コンシューマ・グループは、ジョブ・クラスに割り当てられるリソースを決定します。

リソース・コンシューマ・グループが削除されると、関連付けられているジョブ・クラスは、デフォルトのリソース・コンシューマ・グループに関連付けられます。

リソース・コンシューマ・グループが指定されていない場合、ジョブ・クラスはデフォルトのリソース・コンシューマ・グループに関連付けられます。

ジョブ・クラスの作成時に指定のリソース・コンシューマ・グループが存在しない場合、エラーが発生します。

service

このクラス内のジョブが親和性を持つデータベース・サービスを指定します。つまりOracle RAC環境では、このクラスのジョブは、特定のサービスに割り当てられたデータベース・インスタンスでのみ実行されます。

サービスは、リソース・コンシューマ・グループにマップできるため、サービスを指定することで、ジョブに割り当てるリソースを制御することもできます。詳細については、「DBMS_RESOURCE_MANAGER」の「SET_CONSUMER_GROUP_MAPPING」を参照してください。サービスがリソース・コンシューマ・グループにマップされている場合にresource_consumer_group属性とservice属性の両方が指定されると、resource_consumer_group属性の方が優先されます。

サービスを指定しない場合、ジョブ・クラスはデフォルト・サービスに属し、これはこのジョブ・クラスにサービス・アフィニティがなく、クラスタ内のデータベース・インスタンスのいずれかがジョブを実行する場合があることを意味します。ジョブ・クラスが属するサービスが削除された場合、ジョブ・クラスはデフォルトのサービスに属します。

ジョブ・クラスの作成時に指定したサービスが存在しない場合、エラーが発生します。

logging_level

この属性は、ログ情報量を指定します。次のオプションから選択可能です。

- DBMS_SCHEDULER.LOGGING_OFF
このクラスのどのジョブに対してもログは実行されません。

- DBMS_SCHEDULER.LOGGING_RUNS
Schedulerは、このクラスの各ジョブのすべての実行について、詳細情報をジョブ・ログに書き込みます。これがデフォルトです。

- DBMS_SCHEDULER.LOGGING_FAILED_RUNS
Schedulerは、クラス内の失敗したジョブに対してのみログを実行します。

- DBMS_SCHEDULER.LOGGING_FULL
Schedulerは、ジョブの全実行記録に加えて、このクラスのすべてのジョブで実行されたすべての操作を記録します。ジョブが作成、使用可能化、使用禁止化、変更(SET_ATTRIBUTEを使用)、停止されるたびに、ログにエントリが記録されます。

log_history

この属性は、このクラスのジョブに対するジョブ・ログ・エントリが保持される日数を制御します。これによって、ジョブ・ログが無制限に大きくなることを避けることができます。

有効値の範囲は、0から1000000です。0に設定すると、履歴は保持されません。NULL(デフォルト)の場合、Scheduler属性のlog_history(SET_SCHEDULER_ATTRIBUTEで設定可能)によって、保持する日数が設定されます。

comments

ジョブ・クラスのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。

使用上の注意

あるジョブ・クラスに属するジョブを作成するには、ジョブの所有者がそのジョブ・クラスのEXECUTE権限を持っている必要があります。このため、ジョブ・クラスを作成したら、そのジョブ・クラスに関するEXECUTE権限を発行して、ユーザーがそのクラスに属するジョブを作成できるようにする必要があります。ロールに対してもEXECUTE権限を付与できます。

ジョブ・クラスを作成するには、MANAGE SCHEDULERシステム権限が必要です。

CREATE_JOBSプロシージャ

このプロシージャは、複数のジョブ(通常および軽量)を作成し、1回のコールでそれぞれの引数に値を設定します。

構文

DBMS_SCHEDULER.CREATE_JOBS (
jobdef_array      IN SYS.JOB_DEFINITION_ARRAY,
commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表140-28 CREATE_JOBSプロシージャのパラメータ

パラメータ

説明

jobdef_array

ジョブ定義の配列。JOB_DEFINITION_ARRAYおよびJOB_DEFINITIONデータ・タイプについては、「データ構造」を参照してください。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

- STOP_ON_FIRST_ERRORは、最初にエラーが発生した時点で戻されます。以前に正常に作成されたジョブはディスクにコミットされます。これがデフォルトです。

- TRANSACTIONALは、最初にエラーが発生した時点で戻され、このエラーが発生する前に実行されたすべての操作がロールバックされます。

- ABSORB_ERRORSは、エラーを吸収してリスト内の残りのジョブの作成を試行します。正常に作成されたすべてのジョブをコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。

使用上の注意

このプロシージャは、1つのトランザクションのコンテキストで多くのジョブを作成します。目的のパフォーマンスを実現するには、作成するジョブを十分なサイズのバッチにグループ化する必要があります。小さい配列サイズを指定してCREATE_JOBSをコールしても、CREATE_JOBをジョブごとに1回コールする場合の速度とあまり変わりません。

このプロシージャを使用して、複数の接続先ジョブを作成することはできません。つまり、job_definitionオブジェクトのdestination属性は、接続先グループを参照できません。

例

『Oracle Database管理者ガイド』を参照してください。

CREATE_PROGRAMプロシージャ

このプロシージャは、プログラムを作成します。

構文

DBMS_SCHEDULER.CREATE_PROGRAM (
program_name             IN VARCHAR2,
program_type             IN VARCHAR2,
program_action           IN VARCHAR2,
number_of_arguments      IN PLS_INTEGER DEFAULT 0,
enabled                  IN BOOLEAN DEFAULT FALSE,
comments                 IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-29 CREATE_PROGRAMプロシージャのパラメータ

パラメータ

説明

program_name

プログラムに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、プログラムはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。

program_type

この属性は、作成するプログラムのタイプを指定します。これを指定しない場合、エラーが発生します。program_typeでは、次の値がサポートされています。

- 'PLSQL_BLOCK'
プログラムがPL/SQLブロックであることを示します。ジョブまたはプログラムのタイプがPLSQL_BLOCKの場合、そのジョブまたはプログラムの引数はサポートされません。この場合、引数は0である必要があります。

- 'STORED_PROCEDURE'
プログラムが、PL/SQLプロシージャ、Javaストアド・プロシージャまたは外部Cサブプログラムであることを示します。プロシージャのみがサポートされ、戻り値を持つファンクションはサポートされません。INOUT引数またはOUT引数を持つPL/SQLプロシージャは、サポートされません。

- 'EXECUTABLE'
ジョブが、外部実行可能ファイルを使用してデータベースの外部で実行されることを示します。外部プログラムとは、オペレーティング・システムのコマンドラインから実行可能なものすべてのことです。AnyData引数は、タイプEXECUTABLEのジョブまたはプログラムではサポートされていません。

- 'EXTERNAL_SCRIPT'
ジョブが、そのジョブを実行するコンピュータのコマンド・シェルを使用する外部スクリプトであることを示します。これは、Windowsの場合はcmd.exe、UNIXベースのシステムの場合はshシェルになります。ただし、スクリプトの最初の行で接頭辞#!を使用して異なるインタプリタが指定されている場合は除きます。

- 'SQL_SCRIPT'
プログラムがSQL*Plusスクリプトであることを示します。

このプログラムを使用するジョブは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指している必要があります。SQL*Plusスクリプトは、SQL*Plus実行可能ファイルで実行します。このプログラムを使用するジョブは、データベース資格証明を含む接続資格証明を指している場合があります。その場合、SQL*Plusスクリプトを実行する前に、この資格証明を使用してデータベースに接続します。

接続資格証明の使用を選択した場合、set_attributeを使用してConnect_Credential_Name属性を指定する必要があります。接続資格証明がない場合、明示的なSQL*Plus接続文で有効なデータベースのユーザーIDおよびパスワードを指定する必要があります。

- 'BACKUP_SCRIPT'

プログラムがRMANバックアップ・スクリプトであることを示します。

スクリプトは、ターゲット・コマンドを実行する前に、パスワードまたはOS認証を使用するCONNECT文を実行します。Schedulerは、現在のOracleホームのRMAN実行可能ファイルを使用してスクリプトを実行し、そのファイルがない場合はエラーをスローします。

program_action

この属性は、プログラムのアクションを指定します。program_actionを指定しない場合、エラーが発生します。

次のアクションを指定できます。

- PL/SQLブロックでは、アクションはPL/SQLコードを実行します。これらのブロックはセミコロンで終わる必要があります。
たとえば、my_proc();、BEGIN my_proc(); END;またはDECLARE arg pls_integer := 10; BEGIN my_proc2(arg); END;です。

Schedulerは独自のブロックでjob_actionをラップし、DECLARE ... BEGIN job_action END;を実行用にPL/SQLに渡します。これは一部の内部Scheduler変数を宣言するために行われます。PL/SQLコードには、event_messageを除く任意のSchedulerメタデータ属性を含めることができます。属性名は、他のPL/SQL識別子と同様に使用し、Schedulerによって値が割り当てられます。使用可能なメタデータ属性の詳細は、表140-37を参照してください。

無名ブロックの場合は、変数名のjob_name、job_owner、job_start、window_start、window_endを使用して、特別なSchedulerのメタデータにアクセスできます。これらの詳細は、「DEFINE_METADATA_ARGUMENTプロシージャ」を参照してください。

- ストアド・プロシージャの場合は、このアクションはストアド・プロシージャの名前です。ジョブ以外のスキーマにプロシージャが存在する場合は、そのスキーマを指定する必要があります。
大/小文字の区別が必要な場合は、スキーマ名およびストア・プロシージャ名を二重引用符で囲みます。たとえば、program_action=>'"Schema"."Procedure"'のように指定します。

- 実行可能ファイルの場合、アクションは、フルパス名が含まれ、すべてのコマンドライン引数が除外されている外部実行可能ファイルの名前です。アクションが1つの疑問符('?')で始まっている場合、この疑問符は、ローカル・ジョブのOracleホーム・ディレクトリのパスまたはリモート・ジョブのSchedulerエージェント・ホームのパスに置き換えられます。アクションにアット・マーク('@')が含まれており、ジョブがローカルの場合、アット・マークは現行のOracleインスタンスのSIDに置き換えられます。

- 外部スクリプトの場合、このアクションは、オペレーティング・システム・スクリプトまたはインライン・オペレーティング・システム・スクリプトへのパスである必要があります。program_actionがスクリプトへのパスである場合、プログラムを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。program_actionには、SQL*PlusまたはRMAN実行可能ファイルへの直接コールが含まれる場合があります。ジョブを実行するすべてのコンピュータのデフォルトの場所にそれらの実行可能ファイルが格納されている場合、ファイルのフルパスを指定する必要はありません。
ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。プログラムは、有効なオペレーティング・システムのユーザー名とパスワードを含む資格証明を指します。

- SQLスクリプトの場合、このアクションは、SQL*PlusスクリプトまたはインラインSQL*Plusスクリプトへのパスである必要があります。program_actionがスクリプトへのパスである場合、プログラムを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。
ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。引数に名前が付いている場合、それらの引数はSQL*Plusセッションの名前付き変数にもバインドされます。

- バックアップ・スクリプトの場合、このアクションは、RMANスクリプトまたはインラインRMANスクリプトへのパスである必要があります。program_actionがスクリプトへのパスである場合、プログラムを実行するすべてのコンピュータにそのスクリプトが配置されている必要があります。
ジョブには、文字列である引数または文字列に変換できる引数のみを指定できます。これらの引数は、スクリプトがコールされたときに、位置を基準にして渡されます。

number_of_arguments

この属性は、プログラムが使用する引数の数を指定します。このパラメータを指定しない場合、デフォルトは0です。プログラムは最大255個の引数を使用できます。

program_typeがPLSQL_BLOCKの場合、このパラメータは無視されます。

enabled

このフラグは、プログラムを使用可能の状態で作成するかどうかを指定します。このフラグをTRUEに設定した場合、妥当性チェックが実行され、すべてのチェックに成功すると、プログラムはENABLEDの状態で作成されます。デフォルトでは、このフラグはFALSEに設定されており、使用可能では作成されません。ENABLEプロシージャをコールして、プログラムを使用する前に使用可能にすることもできます。

comments

プログラムのコメントです。デフォルトでは、この属性はNULLです。

使用上の注意

ユーザー各自のスキーマでプログラムを作成するには、CREATE JOB権限を持っている必要があります。CREATE ANY JOB権限を持っているユーザーは、すべてのスキーマでプログラムを作成できます。デフォルトでは、プログラムは使用禁止の状態で作成されます(使用可能なパラメータがTRUEに設定されている場合は、この限りではありません)。これは、使用可能になるまでは、ジョブによって実行されることはありません。

他のユーザーがこのプログラムを使用するには、EXECUTE権限が必要であるため、プログラムを作成したら、EXECUTE権限を付与する必要があります。

関連項目:
「DEFINE_PROGRAM_ARGUMENTプロシージャ」

CREATE_SCHEDULEプロシージャ

このプロシージャは、スケジュールを作成します。

構文

DBMS_SCHEDULER.CREATE_SCHEDULE (
schedule_name          IN VARCHAR2,
start_date             IN TIMESTAMP WITH TIMEZONE DEFAULT NULL,
repeat_interval        IN VARCHAR2,
end_date               IN TIMESTAMP WITH TIMEZONE DEFAULT NULL,
comments               IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-30 CREATE_SCHEDULEプロシージャのパラメータ

パラメータ

説明

schedule_name

スケジュールに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。たとえば、スケジュールはスキーマの表と同じ名前を持つことができません。名前を指定しない場合、エラーが発生します。

start_date

この属性は、スケジュールが有効になる最初の日時を指定します。繰返しスケジュールの場合、start_dateの値は参照日です。この場合、スケジュールが開始するのはstart_dateではなく、指定した反復間隔によって決まります。スケジュールの最初のインスタンスの決定には、start_dateが使用されます。

以前にstart_dateを指定し、repeat_intervalに値を指定していない場合、スケジュールは無効です。繰返しジョブまたは繰返しウィンドウでは、この属性に値が指定されていない場合、repeat_intervalからstart_dateを取り出すことができます。

start_dateがNULLの場合は、ジョブまたはウィンドウが使用可能になった日付が使用されます。start_dateおよびrepeat_intervalの両方をNULLにすることはできません。

repeat_interval

この属性は、スケジュールを繰り返す間隔を指定します。これは、カレンダ構文を使用して表されます。詳細は、「カレンダ構文」を参照してください。PL/SQL式は、指定されたスケジュールの反復間隔には使用できません。

end_date

指定日時の後で、ジョブの実行およびウィンドウのオープンを停止する日時です。

end_dateの指定されていない非繰返しスケジュールは、無期限に有効です。

end_dateは、start_dateより後の日付である必要があります。当日か前の日付の場合、スケジュールを作成する際にエラーが発生します。

comments

スケジュールのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。

使用上の注意

このプロシージャでは、各自のスキーマでスケジュールを作成するにはCREATE JOB権限が、またはschema.schedule_nameを指定することによって他者のスキーマでスケジュールを作成するにはCREATE ANY JOB権限が必要です。スケジュールが作成されると、他のユーザーもそのスケジュールを使用できます。スケジュールは、PUBLICへのアクセス権を伴って作成されます。このため、スケジュールへのアクセス権限を明示的に付与する必要はありません。

CREATE_WINDOWプロシージャ

このプロシージャは、繰返しの時間枠(ウィンドウ)を作成してリソース・プランに関連付けます。このウィンドウを使用すると、ジョブをスケジュールし、関連付けられたリソース・プランの下でそのジョブを実行することができます。ウィンドウはSYSスキーマ内に作成されます。

このプロシージャはオーバーロードされています。

構文

指定のスケジュール・オブジェクトを使用してウィンドウを作成する場合:

DBMS_SCHEDULER.CREATE_WINDOW (
window_name             IN VARCHAR2,
resource_plan           IN VARCHAR2,
schedule_name           IN VARCHAR2,
duration                IN INTERVAL DAY TO SECOND,
window_priority         IN VARCHAR2 DEFAULT 'LOW',
comments                IN VARCHAR2 DEFAULT NULL);

インライン・スケジュールを使用してウィンドウを作成する場合:

DBMS_SCHEDULER.CREATE_WINDOW (
window_name             IN VARCHAR2,
resource_plan           IN VARCHAR2,
start_date              IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
repeat_interval         IN VARCHAR2,
end_date                IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
duration                IN INTERVAL DAY TO SECOND,
window_priority         IN VARCHAR2 DEFAULT 'LOW',
comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-31 CREATE_WINDOWプロシージャのパラメータ

パラメータ

説明

window_name

ウィンドウに割り当てる名前。この名前はSQLネームスペースにおいて一意である必要があります。すべてのウィンドウはSYSスキーマ内にあるため、接頭辞'SYS'は必須ではありません。

resource_plan

この属性は、ウィンドウをオープンすると自動的にアクティブになるリソース・プランを指定します。ウィンドウがクローズすると、システムによって、適切なリソース・プランに切り替えられます(このリソース・プランは、ほとんどの場合、ウィンドウがオープンする前に有効だった計画ですが、別のウィンドウの計画にすることもできます)。

1つのウィンドウに関連付けられるのは、1つのリソース・プランのみです。NULLまたは空文字列("")が可能です。これがNULLの場合、ウィンドウのオープン時に有効だったリソース・プランが、ウィンドウの継続時間中もそのまま有効になります。これが空文字列の場合、ウィンドウの継続時間中、リソース・マネージャは無効になります。

ウィンドウが開いているときにリソース・プランが削除されても、このウィンドウの継続時間中のリソース割当てには影響しません。

start_date

この属性は、ウィンドウのオープンがスケジュールされている最初の日時を指定します。start_dateで指定された値が過去の日付か、または指定されていない場合は、ウィンドウは作成されるとすぐにオープンされます。

カレンダ式を使用して反復間隔を指定する繰返しウィンドウの場合、start_dateの値は参照日になります。ウィンドウを最初にオープンする日付は、指定した反復間隔およびstart_dateの値によって決まります。

duration

ウィンドウをオープンのままにする時間長を指定します。たとえば'interval '5' hour'は5時間です。この属性にデフォルト値はありません。このため、ウィンドウの作成時にこの値を指定しないと、エラーが発生します。継続時間には日から秒までの時間隔タイプがあり、範囲は1分から99日です。

schedule_name

ウィンドウに関連付けるスケジュールの名前を指定します。

repeat_interval

この属性は、ウィンドウを繰り返す間隔を指定します。これは、Schedulerのカレンダ構文を使用して表されます。詳細は、「カレンダ構文」を参照してください。

PL/SQL式を使用して、ウィンドウの反復間隔を指定することはできません。

指定した式は、ウィンドウの次回のオープンを決定するために評価されます。repeat_intervalを指定しない場合、ウィンドウは指定した開始日に1回だけオープンされます。

end_date

ウィンドウがクローズする日時を指定します。end_dateの値に達すると、ウィンドウは使用禁止になります。*_SCHEDULER_WINDOWSビューで、ウィンドウの使用可能フラグがFALSEに設定されます。

end_dateに値を指定しない非繰返しウィンドウの場合は、ウィンドウの継続時間中に1回だけオープンされます。繰返しウィンドウの場合は、end_dateを指定しないと、ウィンドウは無期限に繰り返されます。

end_dateは、start_dateより後の日付である必要があります。それ以外の場合、ウィンドウを作成する際にエラーが発生します。

window_priority

2つのウィンドウがオーバーラップした場合のみ使用されます。一度に1つのウィンドウしか有効にできないため、ウィンドウの優先順位によってオープンするウィンドウが決定されます。使用可能な値は、'HIGH'と'LOW'の2つです。優先順位の高いウィンドウは、低いウィンドウに優先するため、優先順位の低いウィンドウが高いウィンドウとオーバーラップした場合、優先順位の低いウィンドウはオープンされません。デフォルトでは、ウィンドウは優先順位が'LOW'で作成されます。

comments

ウィンドウのコメントを指定します(オプション)。デフォルトでは、この属性はNULLです。

使用上の注意

ウィンドウを作成するには、MANAGE SCHEDULER権限が必要です。

Schedulerウィンドウは、スケジュールに基づいてリソース・プランを自動的に切り替えるために使用される重要なメカニズムです。ALTER SYSTEM SET RESOURCE_MANAGER_PLAN文またはDBMS_RESOURCE_MANAGER.SWITCH_PLANパッケージ・プロシージャを使用すると、リソース・プランを手動でアクティブにすることもできます。また、これらの手動による方法のいずれを使用しても、Schedulerウィンドウによるリソース・プランの切替えを使用禁止にできます。詳細は、『Oracle Database管理者ガイド』および「SWITCH_PLANプロシージャ」を参照してください。

DEFINE_ANYDATA_ARGUMENTプロシージャ

このプロシージャは、値が複合タイプで、ANYDATAオブジェクト内でカプセル化する必要のあるプログラム引数の名前またはデフォルト値を定義します。このプログラムを参照するジョブによって、デフォルト値を上書きできます。

構文

DBMS_SCHEDULER.DEFINE_ANYDATA_ARGUMENT (
program_name            IN VARCHAR2,
argument_position       IN PLS_INTEGER,
argument_name           IN VARCHAR2 DEFAULT NULL,
argument_type           IN VARCHAR2,
default_value           IN SYS.ANYDATA,
out_argument            IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-32 DEFINE_ANYDATA_ARGUMENTプロシージャのパラメータ

パラメータ

説明

program_name

変更するプログラムの名前。この名前のプログラムが存在する必要があります。

argument_position

実行可能ファイルに渡される際の引数の位置。引数の位置として指定できる値は、1から、そのプログラムに指定されたnumber_of_argumentsの値までです。その位置に定義された引数を置き換える場合があるため、この値は一意に指定する必要があります。

argument_name

引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。名前を割り当てた場合は、その名前をSET_JOB_ANYDATA_VALUEプロシージャを含む他のパッケージ・プロシージャでも使用できます。

argument_type

定義する引数のデータ・タイプ。この属性は、Schedulerによって検証または使用されません。これは、引数に割り当てる値を決定する際に、プログラムのユーザーによってのみ使用されます。

default_value

AnyDataオブジェクト内でカプセル化された引数に割り当てられるデフォルト値。これはオプションです。

out_argument

このパラメータは、将来の使用に備えて確保されています。これは、FALSEに設定する必要があります。

使用上の注意

1からnumber_of_arguments値までのすべてのプログラム引数は、プログラムが使用可能になる前に定義しておく必要があります。このプロシージャの引数のデフォルト値が定義されていない場合は、ジョブで値を定義する必要があります。

プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を定義できます。

関連項目:

- 「DEFINE_PROGRAM_ARGUMENTプロシージャ」

- 「SET_JOB_ANYDATA_VALUEプロシージャ」

DEFINE_CHAIN_EVENT_STEPプロシージャ

このプロシージャは、チェーン・ステップを追加または置換し、イベント・スケジュールまたはインライン・イベントに関連付けます。このステップは、実行中のチェーン内で開始されると、指定されたイベントが発生するまで完了しません。チェーンを使用可能にして使用するには、チェーン内のすべてのステップを定義しておく必要があります。ステップを定義する際は、そのステップに名前を付け、ステップの実行時の動作を指定します。同じ名前のステップがすでに存在する場合は、古いステップが新しいステップに置き換えられます。

構文

DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP (
chain_name              IN VARCHAR2,
step_name               IN VARCHAR2,
event_schedule_name     IN VARCHAR2,
timeout                 IN INTERVAL DAY TO SECOND DEFAULT NULL);

DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP (
chain_name              IN VARCHAR2,
step_name               IN VARCHAR2,
event_condition         IN VARCHAR2,
queue_spec              IN VARCHAR2,
timeout                 IN INTERVAL DAY TO SECOND DEFAULT NULL);

パラメータ

表140-33 DEFINE_CHAIN_EVENT_STEPプロシージャのパラメータ

パラメータ

説明

chain_name

ステップが含まれているチェーンの名前。

step_name

ステップの名前。

event_schedule_name

ステップが待機するイベント・スケジュールの名前。

timeout

このパラメータは将来使用するために予約されています。

event_condition

「CREATE_EVENT_SCHEDULEプロシージャ」を参照してください。

queue_spec

「CREATE_EVENT_SCHEDULEプロシージャ」を参照してください。

使用上の注意

チェーン・ステップを定義するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTERオブジェクト権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

チェーン・ステップのベースをFile Watcherにすることもできます。これを行うには、File Watcher名を直接queue_specパラメータに入力するか、event_schedule_nameパラメータでFile Watcherスケジュールを使用します。

関連項目:
「DEFINE_CHAIN_STEPプロシージャ」

DEFINE_CHAIN_RULEプロシージャ

このプロシージャは、新しいルール(条件とアクションの組合せ)を既存のチェーンに追加します。この条件は、SQLまたはSchedulerチェーン条件構文を使用して表現され、アクションを実行するための前提条件を示します。このアクションは、条件が満たされると実行されます。

実際のルール・オブジェクトは、チェーンが存在するスキーマにルールを格納するために作成されます。ルール名が指定されている場合は、その名前がルール・オブジェクトに付けられます。チェーンのスキーマ内の既存のルール名が指定された場合、既存のルールが変更されます。(チェーンのスキーマ以外のスキーマは指定できません)。ルール名が指定されていない場合は、SCHED_RULE${N}の形式のルール名が生成されます。

構文

DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
chain_name              IN VARCHAR2,
condition               IN VARCHAR2,
action                  IN VARCHAR2,
rule_name               IN VARCHAR2 DEFAULT NULL,
comments                IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-34 DEFINE_CHAIN_RULEプロシージャのパラメータ

パラメータ

説明

chain_name

変更するチェーンの名前。

condition

アクションを実行するには、ブール式の評価結果がTRUEになる必要があります。チェーンを開始するには、評価結果がTRUEになるルールがすべてのチェーンに含まれている必要があります。このために、Schedulerチェーン条件構文を使用する場合は'TRUE'、SQL構文を使用する場合は'1=1'を条件として含むルールを使用できます。

- Schedulerチェーン条件構文
詳細は、「Schedulerチェーン条件構文」を参照してください。

- SQLのWHERE句構文
条件をSQLで表現する場合は、SELECT文のWHERE句構文を使用する必要があります。

バインド変数としてチェーン・ステップ名を使用すると、チェーン・ステップ属性を参照できます。

バインド変数構文は、:step_name.attributeです。(step_nameは、入力されたオブジェクトを参照します。)使用可能な属性は、completed、state、start_date、end_date、error_codeおよびdurationです。

state属性に指定可能な値には、'NOT_STARTED'、'SCHEDULED'、'RUNNING'、'PAUSED'、'STALLED'、'SUCCEEDED'、'FAILED'および'STOPPED'が含まれます。ステップの状態が'SUCCEEDED'、'FAILED'または'STOPPED'の場合、そのcompleted属性は'TRUE'に設定され、それ以外の場合にはcompletedが'FALSE'に設定されます。

action

ルールの評価結果がTRUEの場合に実行されるアクション。アクションは、1つ以上のキーワードと、オプションの値および遅延句で構成されている必要があります。

指定可能なアクションは、次のとおりです。

- [AFTER delay_interval] START step_1[,step_2 ...]

- STOP step_1[,step_2 ...]

- END [{end_value|step_name.error_code}]

STARTアクションの最初に、アクションを実行するまで待機する遅延間隔を遅延句で指定できます。delay_intervalは、HH:MM:SSの書式の日時間隔です。

ENDアクションはエラー・コードでチェーンを終了し、これは、指定したend_valueか、step_nameの完了時のエラー・コードのいずれかと同じです。デフォルトのエラー・コードは0で、チェーンが正常に実行されたことを示します。

rule_name

作成するルールの名前。rule_nameが指定されていない場合は、SCHED_RULE$_{N}の形式のルール名が生成されます。

comments

ルールの説明コメント(オプション)。これは、作成されるルール・オブジェクトに格納されます。

Schedulerチェーン条件構文

Schedulerチェーン条件構文を使用すると、現行のチェーン内のステップの状態およびエラー・コードを使用して条件を簡単に作成できます。

チェーン条件構文

次に、Schedulerチェーン条件構文に使用可能な構成要素(すべてブール式)を示します。

TRUE
FALSE
stepname [NOT] SUCCEEDED
stepname [NOT] FAILED
stepname [NOT] STOPPED
stepname [NOT] COMPLETED
stepname ERROR_CODE IN (integer, integer, integer ...)
stepname ERROR_CODE NOT IN (integer, integer, integer ...)
stepname ERROR_CODE = integer
stepname ERROR_CODE != integer
stepname ERROR_CODE <> integer
stepname ERROR_CODE > integer
stepname ERROR_CODE >= integer
stepname ERROR_CODE < integer
stepname ERROR_CODE <= integer

複雑な条件を作成する場合は、これらのブール演算子を使用できます。

expression AND expression
expression OR expression
NOT (expression)

integerは、正または負のいずれも指定できます。順序付けを明確にしたり、適用する場合は、カッコを使用できます。NOT演算子には、カッコを使用する必要があります。

ステップの一部として実行されるPL/SQLコードでは、RAISE_APPLICATION_ERROR文を使用して、ステップのERROR_CODE値を設定できます。

使用上の注意

チェーン・ルールを定義するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

チェーンを開始するルールおよび終了するルールを、それぞれ1つ以上定義する必要があります。詳細は、『Oracle Database管理者ガイド』のチェーンへのルールの追加に関する項を参照してください。

例

次に、ルール条件およびルール・アクションの使用例を示します。

Schedulerチェーン条件構文を使用したルール条件

'step1 completed'
-- satisfied when step step1 has completed. (step1 completed is also TRUE when any
-- of the following are TRUE: step1 succeeded, step1 failed, step1 stopped.)

'step1 succeeded and step2 succeeded'
-- satisfied when steps step1 and step2 have both succeeded

'step1 error_code > 100'
-- satisfied when step step1 has failed with an error_code greater than 100

'step1 error_code IN (1, 3, 5, 7)'
-- satisfied when step step1 has failed with an error_code of 1, 3, 5, or 7

SQL構文を使用したルール条件

':step1.completed = ''TRUE'' AND :step1.end_date >SYSDATE-1/24'
--satisfied when step step1 completed less than an hour ago

':step1.duration > interval ''5'' minute'
-- satisfied when step step1 has completed and took longer than 5 minutes to complete

ルール・アクション

'AFTER 01:00:00 START step1, step2'
--After an hour start steps step1 and step2

'STOP step1'
--Stop step step1

END step4.error_code'
--End the chain with the error code that step step4 finished with. If step4 has not completed, the chain will be ended unsuccessfully with error code 27435.

'END' or 'END 0'
--End the chain successfully (with error_code 0)

'END 100'
--End the chain unsuccessfully with error code 100.

DEFINE_CHAIN_STEPプロシージャ

このプロシージャは、チェーン・ステップを追加または置換し、プログラムまたはネストしたチェーンに関連付けます。チェーン・ステップが開始されると、指定されたプログラムまたはチェーンが実行されます。chain_name引数で指定した名前のステップがすでに存在している場合は、古いステップが新しいステップに置き換えられます。

チェーンの所有者は、ステップに関連付けられているプログラムまたはチェーンに対するEXECUTE権限を持っている必要があります。ステップでは、1つのみのプログラムまたはチェーンを実行できます。

このプロシージャでは、すべてのステップ属性を設定することはできません。credential_nameやdestination_nameなど、追加のチェーン・ステップ属性を設定するには、ALTER_CHAINプロシージャを使用します。

構文

DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
chain_name              IN VARCHAR2,
step_name               IN VARCHAR2,
program_name            IN VARCHAR2);

パラメータ

表140-35 DEFINE_CHAIN_STEPプロシージャのパラメータ

パラメータ

説明

chain_name

変更するチェーンの名前。

step_name

定義するステップの名前。同じ名前のステップがすでに存在する場合は、古いステップが新しいステップに置き換えられます。

program_name

このステップで実行するプログラムまたはチェーンの名前。チェーンの所有者は、このプログラムまたはチェーンに対するEXECUTE権限を持っている必要があります。

使用上の注意

チェーン・ステップを定義するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

関連項目:

- 「ALTER_CHAINプロシージャ」

- 「DEFINE_CHAIN_EVENT_STEPプロシージャ」

DEFINE_METADATA_ARGUMENTプロシージャ

このプロシージャは、プログラムの特別なメタデータ引数を定義します。Schedulerでは、この引数によってSchedulerのメタデータをストアド・プロシージャなどの実行可能ファイルに渡すことができます。この引数を使用してジョブに値を設定することはできません。

構文

DBMS_SCHEDULER.DEFINE_METADATA_ARGUMENT (
program_name            IN VARCHAR2,
metadata_attribute      IN VARCHAR2,
argument_position       IN PLS_INTEGER,
argument_name           IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-36 DEFINE_METADATA_ARGUMENTプロシージャのパラメータ

パラメータ

説明

program_name

変更するプログラムの名前。

metadata_attribute

渡すメタデータ。有効なメタデータ属性は、'job_name'、'job_subname'、'job_owner'、'job_start'、'window_start'、'window_end'および'event_message'です。

これらの属性の詳細は、表140-37を参照してください。

argument_position

実行可能ファイルに渡される際の引数の位置。この位置は、プログラムに指定されたnumber_of_argumentsを超えることはできません。これは、その位置に定義された引数を置き換えるため、一意である必要があります。

argument_name

引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。名前を割り当てる場合は、その名前を他のパッケージ・プロシージャでも使用できます。

表140-37 メタデータ属性

メタデータ属性

データ・タイプ

説明

job_name

VARCHAR2

現在実行中のジョブの名前。

job_subname

VARCHAR2

現在実行中のジョブのサブ名。チェーン・ステップを実行中のジョブは、名前+サブ名の形式で一意に識別されます。ジョブがチェーンの一部でない場合は、NULLを指定します。

job_owner

VARCHAR2

現在実行中のジョブの所有者。

job_scheduled_start

TIMESTAMP WITH TIME ZONE

現在実行中のジョブのスケジュール上の開始時間。

job_start

TIMESTAMP WITH TIME ZONE

現在実行中のジョブの開始時間。

window_start

TIMESTAMP WITH TIME ZONE

ジョブがウィンドウによって開始された場合は、そのウィンドウがオープンした時間。

window_end

TIMESTAMP WITH TIME ZONE

ジョブがウィンドウによって開始された場合は、そのウィンドウのクローズがスケジュールされている時間。

event_message

(「説明」を参照)

イベント・ベースのジョブの場合は、ジョブを開始したイベントのメッセージ・コンテンツ。この属性のデータ・タイプは、イベントで使用されるキューによって異なります。キュー表のUSER_DATA列のタイプと同じタイプになります。ファイル到着イベントの場合、event_messageはSYS.SCHEDULER_FILEWATCHER_RESULTのタイプとなります。「SCHEDULER_FILEWATCHER_RESULTオブジェクト・タイプ」を参照してください。

使用上の注意

プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を定義できます。

event_messageを除くすべてのメタデータ属性は、ジョブのjob_action属性またはプログラムのprogram_action属性に入力するPL/SQLブロックで使用できます。属性名は、他のPL/SQL識別子と同様に使用し、Schedulerによって値が割り当てられます。

DEFINE_PROGRAM_ARGUMENTプロシージャ

このプロシージャは、プログラム引数の名前またはデフォルト値を定義します。プログラム引数のデフォルト値が定義されていない場合は、そのプログラムを参照するジョブで引数の値を指定する必要があります。(ジョブで、デフォルト値を上書きすることもできます。)

このプロシージャはオーバーロードされています。

構文

プログラム引数をデフォルト値を使用せずに定義する場合:

PROCEDURE define_program_argument(
program_name            IN VARCHAR2,
argument_position       IN PLS_INTEGER,
argument_name           IN VARCHAR2 DEFAULT NULL,
argument_type           IN VARCHAR2,
out_argument            IN BOOLEAN DEFAULT FALSE);

プログラム引数をデフォルト値で定義する場合:

PROCEDURE define_program_argument(
program_name            IN VARCHAR2,
argument_position       IN PLS_INTEGER,
argument_name           IN VARCHAR2 DEFAULT NULL,
argument_type           IN VARCHAR2,
default_value           IN VARCHAR2,
out_argument            IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-38 DEFINE_PROGRAM_ARGUMENTプロシージャのパラメータ

パラメータ

説明

program_name

変更するプログラムの名前。この名前のプログラムが存在する必要があります。

argument_position

実行可能ファイルに渡される際の引数の位置。引数の位置として指定できる値は、1から、そのプログラムに指定されたnumber_of_argumentsの値までです。その位置に定義された引数を置き換えるため、この値は一意に指定する必要があります。

argument_name

引数に割り当てる名前。これはオプションですが、指定する場合は、プログラムで一意である必要があります。名前を割り当てる場合は、その名前をSET_JOB_ARGUMENT_VALUEプロシージャを含む他のパッケージ・プロシージャで使用できます。

argument_type

定義する引数のデータ・タイプ。この属性は、Schedulerによって検証または使用されません。引数に割り当てる値を決定する際に、プログラムのユーザーによってargument_typeが使用されます。任意の有効なSQLデータ・タイプを使用できます。

default_value

ジョブによって何も指定されていない場合に、引数に割り当てられるデフォルト値。

out_argument

このパラメータは、将来の使用に備えて確保されています。これは、FALSEに設定する必要があります。

使用上の注意

1からnumber_of_arguments値までのすべてのプログラム引数は、プログラムが使用可能になる前に定義しておく必要があります。このプロシージャの引数のデフォルト値が定義されていない場合は、ジョブで値を定義する必要があります。

プログラム引数を定義するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を定義できます。

DEFINE_PROGRAM_ARGUMENTでは、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。

関連項目:

- 「DEFINE_ANYDATA_ARGUMENTプロシージャ」

- 「SET_JOB_ARGUMENT_VALUEプロシージャ」

DISABLEプロシージャ

このプロシージャは、プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcherまたはグループを使用禁止にします。オブジェクトが使用禁止である場合、enabled属性はFALSEに設定されています。

構文

DBMS_SCHEDULER.DISABLE (
name              IN VARCHAR2,
force             IN BOOLEAN DEFAULT FALSE,
commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表140-39 DISABLEプロシージャのパラメータ

パラメータ

説明

name

使用禁止にするオブジェクトの名前。カンマ区切りリストを使用できます。

ジョブ・クラス名を指定すると、そのジョブ・クラスのすべてのジョブが使用禁止になります。ジョブ・クラスは使用禁止になりません。

グループ名を指定すると、グループが使用禁止になりますが、グループ・メンバーの使用可能な状態に影響はありません。

force

TRUEの場合、オブジェクトは他のオブジェクトによって依存されている場合でも使用禁止になります。詳細は、「使用上の注意」を参照してください。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

- STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻され、このエラーが発生する前に正常に実行された使用禁止化操作はディスクにコミットされます。
これがデフォルトです。

- TRANSACTIONAL: このプロシージャは最初にエラーが発生した時点で戻され、このエラーが発生する前に実行されたすべての操作がロールバックされます。
このタイプは、ジョブまたは一連のジョブを使用禁止にする場合にのみサポートされます。また、forceをTRUEに設定した場合、このタイプはサポートされません。

- ABSORB_ERRORS: このプロシージャは、エラーを吸収して残りのジョブの使用禁止化を試行し、正常に実行されたすべての使用禁止化操作をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。
このタイプは、ジョブまたは一連のジョブを使用禁止にする場合にのみサポートされます。

使用上の注意

ウィンドウには前にSYSを付ける必要があります。

すでに使用禁止になっているオブジェクトを使用禁止にしても、エラーは発生しません。

forceオプションの目的は、依存関係を示すことです。依存オブジェクトは変更されません。

ウィンドウまたはタイプWINDOWのグループでDISABLEを実行するには、MANAGE SCHEDULER権限が必要です。

DISABLEは、SYSスキーマ以外の任意のスキーマで使用できます。

ジョブ

ジョブを使用禁止にするとは、ジョブのメタデータが存在してもジョブを実行できず、ジョブ・コーディネータがこれらのジョブを処理対象として取得しないことを意味します。ジョブが使用禁止になると、ジョブ・キューのstateがdisabledに変更されます。

forceをFALSEに設定した場合でジョブが現在実行中の場合は、エラーが戻されます。

forceをTRUEに設定した場合、ジョブは使用禁止になりますが、現在実行中のインスタンスは終了できます。

複数の接続先があるジョブでは、特定の接続先で子ジョブを使用禁止にすることはできません。ただし、接続先を使用禁止にすることは可能です。

プログラム

プログラムが使用禁止になると、ステータスは使用禁止に変更されます。使用禁止プログラムとは、メタデータが存在しても、このプログラムを指定したジョブを実行できないことを意味します。

forceをFALSEに設定した場合、プログラムがどのジョブからも参照されないようにする必要があります。参照された場合はエラーが発生します。

forceをTRUEに設定した場合、このプログラムを指定したジョブは使用禁止になりませんが、このプログラムは無効であるため、実行時にエラーになります。

このプログラムを指定した実行中のジョブは、DISABLEコールの影響を受けずに続行できます。

プログラムが使用禁止の場合、プログラムに関するすべての引数には影響ありません。

File Watcher

forceをFALSEに設定した場合、File Watcherがどのジョブからも参照されないようにする必要があり、参照された場合にはエラーが発生します。File Watcherの使用禁止を強制すると、File Watcherに依存するジョブは使用禁止になります。

ウィンドウ

ウィンドウを使用禁止にした場合、ウィンドウがオープンされないことを意味しますが、ウィンドウのメタデータは依然存在するため、再び使用可能に設定できます。

forceをFALSEに設定した場合、ウィンドウがどのジョブからもオープンまたは参照されないようにする必要があります(オープンまたは参照された場合はエラーが発生します)。

forceをTRUEに設定した場合、オープンしているウィンドウを使用禁止にできますが、ウィンドウはクローズされません。ウィンドウは、再び使用可能になるまでオープンされません。

ウィンドウが使用禁止の場合、このウィンドウがスケジュールとして設定されているジョブを使用禁止にすることはできません。

ウィンドウ・グループ

タイプWINDOWのグループを使用禁止にすると、このウィンドウ・グループがスケジュールとして設定されたジョブ(現在実行中のジョブ以外)は、メンバー・ウィンドウがオープンしても実行されません。ただし、ウィンドウ・グループのメンバー・ウィンドウがどれか1つスケジュールとして設定されているジョブは、実行されます。

ウィンドウ・グループのメタデータは依然存在するため、再び使用可能に設定できます。ウィンドウ・グループのメンバーは、オープンしたままであることに注意してください。

forceをFALSEに設定した場合、ウィンドウ・グループに、ジョブによってオープンまたは参照されるメンバーが存在しないようにする必要があります(存在する場合は、エラーが発生します)。

forceをTRUEに設定すると、次のようになります。

- ウィンドウ・グループは使用禁止となりますが、オープン中のウィンドウはクローズされないか、または使用禁止になりません。これは、最後まで継続できます。

- ウィンドウ・グループは使用禁止になりますが、このウィンドウ・グループがスケジュールとして設定されているジョブは使用禁止になりません。

ジョブのチェーン

チェーンを使用禁止にしても、チェーンのメタデータはそのまま存在しますが、これを指定するジョブは実行できなくなります。これによって、不完全に指定されたチェーンが実行される危険性がなくなり、チェーンを安全に変更できます。forceをFALSEに設定した場合は、チェーンがどのジョブからも参照されないようにする必要があり、参照された場合は、エラーが発生します。forceをTRUEに設定した場合、このチェーンを指定したジョブは使用禁止になりませんが、実行時にエラーになります。このチェーンを指定した実行中のジョブは、DISABLEコールの影響を受けずに処理を完了できます。

データベース接続先

データベース接続先を使用禁止にすると、次のような影響があります。

- 複数の接続先ジョブが実行されると、接続先がスキップされます。

- ジョブに対してすべての接続先を使用禁止にした場合、Schedulerがジョブを実行しようとするとエラーが発生します。

- *_SCHEDULER_JOB_DESTSのREFS_ENABLED列は、データベース接続先を参照するすべてのジョブに対してFALSEに設定されます。

外部接続先

外部接続先を使用禁止にすると、次のような影響があります。

- 依存しているデータベース接続先は使用可能な状態を保持しますが、Schedulerが外部接続先に依存するデータベース接続先でジョブを実行しようとするとエラーが発生します。

- *_SCHEDULER_JOB_DESTSのREFS_ENABLED列は、外部接続先を参照するすべての外部ジョブおよび外部接続先に依存するデータベース接続先を持つすべてのデータベース・ジョブに対してFALSEに設定されます。

グループ

外部接続先グループまたはデータベース接続先グループを使用禁止にした場合、Schedulerが外部接続先にグループを指定するジョブを実行しようとするとエラーが発生します。

DROP_AGENT_DESTINATIONプロシージャ

このプロシージャは、1つ以上の外部接続先(エージェント接続先とも呼ばれます)を削除します。外部接続先を削除する優先的な方法(schagentユーティリティを使用してデータベースでのSchedulerエージェントの登録を解除)が失敗したために使用できない場合にのみ使用します。

このプロシージャは、SYSユーザーまたはMANAGE SCHEDULER権限を持つユーザーのみがコールできます。

注意:
外部接続先は、データベースにエージェントを登録することで、暗黙的にのみソース・データベースで作成されます。ユーザーがコール可能なCREATE_AGENT_DESTINATIONプロシージャはありません。

構文

DBMS_SCHEDULER.DROP_AGENT_DESTINATION (
destination_name        IN VARCHAR2);

パラメータ

表140-40 DROP_AGENT_DESTINATIONプロシージャのパラメータ

パラメータ

説明

destination_name

削除する外部接続先のカンマ区切りリスト。ユーザーSYSがすべての外部接続先を所有しているため、接頭辞としてスキーマ名を付加しないでください。

存在しない外部接続先が発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべての外部接続先が削除されます。

NULL以外にしてください。

使用上の注意

外部接続先が削除されると、次のような影響があります。

- 外部接続先を参照するすべてのデータベース接続先が使用禁止になり、そのagent属性がNULLに設定されます。

- 該当する接続先を参照する外部接続先グループのメンバーがグループから削除されます。

- 該当する外部接続先を参照する*_SCHEDULER_JOB_DESTSビューにあるすべてのジョブ・インスタンスも削除されます。

- 該当する接続先に対して実行されているジョブは停止します。

DROP_CHAINプロシージャ

このプロシージャは、既存のチェーンを削除します。

構文

DBMS_SCHEDULER.DROP_CHAIN (
chain_name              IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-41 DROP_CHAINプロシージャのパラメータ

パラメータ

説明

chain_name

削除するチェーンの名前。チェーンのカンマ区切りリストも使用できます。

force

forceをFALSEに設定した場合は、チェーンがどのジョブからも参照されないようにする必要があります(参照された場合は、エラーが発生します)。

forceをTRUEに設定した場合、チェーンを指定するすべてのジョブは、チェーンが削除される前に使用禁止になります。このチェーンを指定する実行中のジョブは、チェーンが削除される前に停止されます。

使用上の注意

チェーンを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

チェーンに関連付けられているすべてのステップが削除されます。チェーンの作成時にルール・セットが指定されていなかった場合は、チェーンに関連付けられている、自動的に作成されたルール・セットおよび評価コンテキストも削除されるため、ユーザーはこれを行うために必要な権限を持っている必要があります。詳細は、DBMS_RULE_ADM.DROP_RULE_SETおよびDBMS_RULE_ADM.DROP_EVALUATION_CONTEXTプロシージャに関する説明を参照してください。

forceをFALSEに設定した場合は、すべてのジョブでこのチェーンを使用できません。forceをTRUEに設定した場合は、このチェーンが削除される前に、このチェーンを使用するすべてのジョブが使用禁止になります(それらのジョブで実行中のものがある場合はすべて停止されます)。

DROP_CHAIN_RULEプロシージャ

このプロシージャは、既存のチェーンからルールを削除します。このルールに対応するルール・オブジェクトも削除されます。チェーンは使用禁止になりません。このルールを削除するとチェーンが無効になる場合は、まずチェーンを使用禁止にして、実行されないようにする必要があります。

構文

DBMS_SCHEDULER.DROP_CHAIN_RULE (
chain_name              IN VARCHAR2,
rule_name               IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-42 DROP_CHAIN_RULEプロシージャのパラメータ

パラメータ

説明

chain_name

変更するチェーンの名前。

rule_name

削除するルールの名前。

force

forceをTRUEに設定すると、チェーンを実行中の場合でも削除操作は続行されます。実行中のチェーンは、停止または中断されません。forceをFALSEに設定すると、チェーンの実行中はエラーが発生します。

使用上の注意

チェーン・ルールを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

チェーン・ルールを削除すると、元のルール・データベース・オブジェクトも削除されるため、ユーザーは、そのルール・オブジェクトを削除する権限を持っている必要があります。詳細は、「DBMS_RULE_ADM.DROP_RULEプロシージャ」を参照してください。

DROP_CHAIN_STEPプロシージャ

このプロシージャは、チェーン・ステップを削除します。このチェーン・ステップがチェーン・ルールで使用されている場合は、チェーンが使用禁止になります。

構文

DBMS_SCHEDULER.DROP_CHAIN_STEP (
chain_name              IN VARCHAR2,
step_name               IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-43 DROP_CHAIN_STEPプロシージャのパラメータ

パラメータ

説明

chain_name

変更するチェーンの名前。

step_name

削除するステップの名前。カンマ区切りリストを使用できます。

force

forceをTRUEに設定すると、このチェーンを実行中の場合でも正常に処理が行われます。実行中のチェーンは、停止または中断されません。forceがFALSEに設定され、このチェーンが実行中の場合、エラーが発生します。

使用上の注意

チェーン・ステップを削除するには、そのチェーンに対するALTER権限が必要です(チェーンの所有者であるか、チェーンに対するALTER権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

DROP_CREDENTIALプロシージャ

注意:
Oracle Database 12cリリース1(12.1)では、このプロシージャの使用は推奨されていません。このパッケージでは、下位互換性を維持する目的で、このプロシージャを使用できますが、かわりにDBMS_CREDENTIALパッケージで提供される拡張機能、具体的にはDROP_CREDENTIALプロシージャを使用することをお薦めします。

このプロシージャは、資格証明を削除します。

構文

DBMS_SCHEDULER.DROP_CREDENTIAL (
credential_name         IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-44 DROP_CREDENTIALプロシージャのパラメータ

パラメータ

説明

credential_name

削除する資格証明の名前。オプションで、スキーマ名を接頭辞として付加できます。NULLには設定できません。

force

FALSEに設定した場合、資格証明がどのジョブからも参照されないようにする必要があり、参照された場合はエラーが発生します。TRUEに設定した場合、資格証明は、これを参照しているジョブの有無に関係なく削除されます。資格証明を参照しているジョブは、存在していない資格証明を指し続け、実行時にエラーをスローします。

使用上の注意

資格証明の所有者またはCREATE ANY JOBシステム権限を持つユーザーのみが資格証明を削除できます。

資格証明を参照している実行中のジョブは、このプロシージャの影響を受けることなく続行できます。

関連項目:
「CREATE_CREDENTIALプロシージャ」

DROP_DATABASE_DESTINATIONプロシージャ

このプロシージャは、1つ以上のデータベース接続先を削除します。

構文

DBMS_SCHEDULER.DROP_DATABASE_DESTINATION (
destination_name        IN VARCHAR2);

パラメータ

表140-45 DROP_DATABASE_DESTINATIONプロシージャのパラメータ

パラメータ

説明

destination_name

削除する接続先の名前。削除するデータベース接続先のカンマ区切りリストを使用できます。各データベース接続先は、オプションでスキーマ名を接頭辞として付加できます。

存在しないデータベース接続先が発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべてのデータベース接続先が削除されます。

NULL以外にしてください。

使用上の注意

所有者またはCREATE ANY JOBシステム権限を持つユーザーのみがデータベース接続先を削除できます。

データベース接続先が削除されると、次のような影響があります。

- 該当するデータベース接続先を参照する*_SCHEDULER_JOB_DESTSビューにあるすべてのジョブ・インスタンスも削除されます。

- 該当する接続先に対して実行されているジョブは停止します。

- 該当する接続先を参照するデータベース接続先グループのメンバーがグループから削除されます。

関連項目:
CREATE_DATABASE_DESTINATIONプロシージャ

DROP_FILE_WATCHERプロシージャ

このプロシージャは、1つ以上のFile Watcherを削除します。

構文

DBMS_SCHEDULER.DROP_FILE_WATCHER (
file_watcher_name       IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-46 DROP_FILE_WATCHERプロシージャのパラメータ

パラメータ

説明

file_watcher_name

削除するFile Watcher。File Watcherのカンマ区切りリストを使用できます。各File Watcher名は、オプションでスキーマ名を接頭辞として付加できます。

NULL以外にしてください。

force

FALSEに設定した場合、File Watcherがどのジョブからも参照されないようにする必要があり、参照された場合はエラーが発生します。TRUEに設定した場合、File Watcherは、ジョブから参照されているかどうかに関係なく削除されます。この場合、削除されたFile Watcherを参照するジョブは使用禁止になります。

使用上の注意

File Watcherの所有者またはCREATE ANY JOBシステム権限を持つユーザーのみがFile Watcherを削除できます。

File Watcherを参照している実行中のジョブは、このプロシージャの影響を受けることなく続行できます。

関連項目:
「CREATE_FILE_WATCHERプロシージャ」

DROP_GROUPプロシージャ

このプロシージャは、1つ以上のグループを削除します。

構文

DBMS_SCHEDULER.DROP_GROUP (
group_name       IN VARCHAR2,
force            IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-47 DROP_GROUPプロシージャのパラメータ

パラメータ

説明

group_name

削除するグループ。グループ名のカンマ区切りリストを使用できます。各グループ名は、オプションでスキーマ名を接頭辞として付加できます。

存在しないグループが発生すると、プロシージャは処理を停止します。エラー以前に処理されたすべてのグループは削除されます。

NULL以外にしてください。

force

FALSEに設定した場合、グループがどのジョブからも参照されないようにする必要があり、参照された場合にはエラーが発生します。TRUEに設定した場合、グループは、ジョブから参照されているかどうかに関係なく削除されます。この場合、グループを参照しているすべてのジョブは使用禁止になり、グループを参照するすべてのジョブ・インスタンスは*_SCHEDULER_JOB_DESTSビューから削除されます。

使用上の注意

所有者またはCREATE ANY JOBシステム権限を持つユーザーのみがグループを削除できます。タイプWINDOWのグループを削除するには、MANAGE SCHEDULER権限が必要です。

関連項目:
「CREATE_FILE_WATCHERプロシージャ」

DROP_JOBプロシージャ

このプロシージャは、1つ以上のジョブ・クラスにある1つ以上のジョブまたはすべてのジョブを削除します。ジョブを削除すると、そのジョブに設定されたすべての引数値も削除されます。

構文

DBMS_SCHEDULER.DROP_JOB (
job_name                IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE,
defer                   IN BOOLEAN DEFAULT FALSE,
commit_semantics        IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表140-48 DROP_JOBプロシージャのパラメータ

パラメータ

説明

job_name

ジョブまたはジョブ・クラスの名前。カンマ区切りリストを使用できます。ジョブ・クラスの場合は、SYSスキーマを指定する必要があります。

ジョブ・クラスの名前を指定すると、そのジョブ・クラスに属するジョブは削除されますが、ジョブ・クラス自体は削除されません。

force

forceをTRUEに設定した場合、まずSchedulerは実行中のジョブのインスタンスの停止を(forceフラグをfalseに設定してSTOP_JOBコールを発行して)試み、それからジョブを削除します。

defer

deferをTRUEに設定した場合、Schedulerは現在実行中のジョブの完了を許可した後、ジョブを削除します。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

- STOP_ON_FIRST_ERROR: 最初にエラーが発生した時点で戻され、このエラーが発生する前に正常に実行された削除操作はディスクにコミットされます。これがデフォルトです。

- TRANSACTIONALは、最初にエラーが発生した時点で戻されます。エラーが発生する前に実行されたすべての操作がロールバックされます。forceをTRUEに設定した場合、このタイプはサポートされません。

- ABSORB_ERRORS: エラーを吸収して残りのジョブの削除を試行し、正常に実行されたすべての削除操作をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。

job_nameリストにジョブ・クラスが含まれる場合、STOP_ON_FIRST_ERRORのみが許可されます。

使用上の注意

forceおよびdeferをFALSEに設定した場合で、コール時にジョブを実行中の場合、このジョブを削除する試行は失敗します。commit_semanticsの設定により、DROP_JOBのコール全体が失敗する場合があります。

forceとdeferの両方をTRUEに設定すると、エラーが発生します。

ジョブを削除するには、そのジョブに対するALTER権限が必要です(ジョブの所有者であるか、ジョブに対するALTERオブジェクト権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

DROP_JOB_CLASSプロシージャ

このプロシージャは、ジョブ・クラスを削除します。ジョブ・クラスの削除とは、そのジョブ・クラスのすべてのメタデータをデータベースから削除することです。

構文

DBMS_SCHEDULER.DROP_JOB_CLASS (
job_class_name          IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-49 DROP_JOB_CLASSプロシージャのパラメータ

パラメータ

説明

job_class_name

ジョブ・クラスの名前。カンマ区切りリストを使用できます。

force

forceをFALSEに設定した場合、削除対象のクラスがジョブから参照されないようにする必要があります(参照された場合はエラーが発生します)。

forceをTRUEに設定すると、そのクラスに所属するジョブは使用禁止になり、クラスはデフォルト・クラスに設定されます。これに成功した場合のみクラスは削除されます。

そのジョブ・クラスに所属する実行中のジョブには影響しません。

使用上の注意

ジョブ・クラスを削除するには、MANAGE SCHEDULERシステム権限が必要です。

DROP_PROGRAMプロシージャ

このプロシージャは、プログラムを削除します。プログラムを削除すると、プログラムに関連する引数もすべて削除されます。

構文

DBMS_SCHEDULER.DROP_PROGRAM (
program_name            IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-50 DROP_PROGRAMプロシージャのパラメータ

パラメータ

説明

program_name

削除するプログラムの名前。カンマ区切りリストを使用できます。

force

forceをFALSEに設定した場合、プログラムがどのジョブからも参照されないようにする必要があります(参照された場合はエラーが発生します)。

forceをTRUEに設定した場合、そのプログラムを参照するすべてのジョブは、プログラムが削除される前に使用禁止になります。

このプログラムを指定した実行中のジョブは、DROP_PROGRAMコールの影響を受けずに続行できます。

使用上の注意

プログラムを削除するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラムを削除できます。

DROP_PROGRAM_ARGUMENTプロシージャ

このプロシージャは、プログラム引数を削除します。引数は、名前(指定されている場合)または位置のどちらでも指定できます。

このプロシージャはオーバーロードされています。

構文

位置を使用してプログラム引数を削除する場合:

DBMS_SCHEDULER.DROP_PROGRAM_ARGUMENT (
program_name            IN VARCHAR2,
argument_position       IN PLS_INTEGER);

名前を使用してプログラム引数を削除する場合:

DBMS_SCHEDULER.DROP_PROGRAM_ARGUMENT (
program_name            IN VARCHAR2,
argument_name           IN VARCHAR2);

パラメータ

表140-51 DROP_PROGRAM_ARGUMENTプロシージャのパラメータ

パラメータ

説明

program_name

変更するプログラムの名前。この名前のプログラムが存在する必要があります。

argument_name

削除する引数の名前。

argument_position

削除する引数の位置。

使用上の注意

プログラム引数を削除するには、プログラムの所有者であるか、プログラムのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、プログラム引数を削除できます。

DROP_SCHEDULEプロシージャ

このプロシージャは、スケジュールを削除します。

構文

DBMS_SCHEDULER.DROP_SCHEDULE (
schedule_name    IN VARCHAR2,
force            IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-52 DROP_SCHEDULEプロシージャのパラメータ

パラメータ

説明

schedule_name

スケジュールの名前。カンマ区切りリストを使用できます。

force

forceをFALSEに設定した場合、スケジュールがどのジョブからもどのウィンドウからも参照されないようにする必要があります(参照された場合はエラーが発生します)。

forceをTRUEに設定した場合、このスケジュールを使用するすべてのジョブまたはウィンドウは、スケジュールが削除される前に使用禁止になります。

このスケジュールを指定した実行中のジョブおよびオープン中のウィンドウには影響しません。

使用上の注意

削除するスケジュールの所有者であるか、そのスケジュールのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。

DROP_WINDOWプロシージャ

このプロシージャは、ウィンドウを削除します。このウィンドウに関するすべてのメタデータが、データベースから削除されます。このウィンドウは、このウィンドウを参照するすべてのグループから削除されます。

構文

DBMS_SCHEDULER.DROP_WINDOW (
window_name             IN VARCHAR2,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-53 DROP_WINDOWプロシージャのパラメータ

パラメータ

説明

window_name

ウィンドウの名前。カンマ区切りリストを使用できます。

force

forceをFALSEに設定した場合、ウィンドウがどのジョブからもオープンまたは参照されないようにする必要があります(オープンまたは参照された場合はエラーが発生します)。

forceをTRUEに設定した場合、ウィンドウは削除され、このウィンドウがスケジュールとして設定されているジョブは使用禁止になります。ただし、削除されたウィンドウがメンバーになっているウィンドウ・グループがスケジュールとして設定されているジョブは、使用禁止になりません。ウィンドウがオープンされると、Schedulerはまずそのウィンドウをクローズしてから削除しようと試みます。ウィンドウがクローズすると、通常のクローズ・ウィンドウ・ルールが適用されます。

このウィンドウがスケジュールとして設定されている実行中のジョブは、そのジョブのstop_on_window_closeフラグをTRUEに設定していない場合は続行できます。この場合、ウィンドウを削除するとジョブも停止します。

使用上の注意

ウィンドウを削除するには、MANAGE SCHEDULER権限が必要です。

ENABLEプロシージャ

このプロシージャは、プログラム、ジョブ、チェーン、ウィンドウ、データベース接続先、外部接続先、File Watcherまたはグループを使用可能にします。オブジェクトが使用可能である場合、enabled属性はTRUEに設定されています。デフォルトでは、ジョブ、チェーンおよびプログラムは使用禁止で作成され、データベース接続先、外部接続先、File Watcher、ウィンドウおよびグループは使用可能で作成されます。

使用禁止になっていたジョブを使用可能にすると、Schedulerによりスケジュールに従ってジョブが自動的に実行されるようになります。また、使用禁止になっていたジョブを使用可能にすると、*_SCHEDULER_JOBSデータ・ディクショナリ・ビューのジョブRUN_COUNT列、FAILURE_COUNT列およびRETRY_COUNT列のリセットも行われます。

オブジェクトを使用可能にする前に、妥当性チェックが実行されます。チェックに失敗すると、オブジェクトは使用可能に設定されず、内容を説明するエラーが戻されます。このプロシージャは、オブジェクトがすでに使用可能である場合はエラーを戻しません。

構文

DBMS_SCHEDULER.ENABLE (
name              IN VARCHAR2,
commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表140-54 ENABLEプロシージャのパラメータ

パラメータ

説明

name

使用可能にするSchedulerオブジェクトの名前。名前のカンマ区切りリストを使用できます。

ジョブ・クラス名を指定すると、そのジョブ・クラスのすべてのジョブが使用可能になります。

グループ名を指定すると、グループが使用可能になりますが、グループ・メンバーの使用可能な状態に影響はありません。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

- STOP_ON_FIRST_ERROR: 最初にエラーが発生した時点で戻され、このエラーが発生する前に正常に実行された使用可能化操作はディスクにコミットされます。これがデフォルトです。

- TRANSACTIONAL: このプロシージャは最初にエラーが発生した時点で戻され、このエラーが発生する前に実行されたすべての操作がロールバックされます。
このタイプは、ジョブまたは一連のジョブを使用可能にする場合にのみサポートされます。

- ABSORB_ERRORS: このプロシージャは、エラーを吸収して残りのジョブの使用可能化を試行します。正常に実行されたすべての使用可能化操作をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。
このタイプは、ジョブまたは一連のジョブを使用可能にする場合にのみサポートされます。

使用上の注意

ウィンドウ名には前にSYSを付ける必要があります。

ウィンドウまたはタイプWINDOWのグループでENABLEを実行するには、MANAGE SCHEDULER権限が必要です。EXECUTABLEタイプのジョブの場合(またはEXECUTABLEタイプのプログラムを指定するジョブの場合)、ジョブの所有者は、ジョブを使用可能にしたり、実行する際にCREATE EXTERNAL JOBシステム権限を持っている必要があります。

File Watcherを使用可能にするには、File Watcherの所有者は、指定した資格証明でEXECUTE権限を持つ必要があります。

ENABLEは、SYSスキーマ以外の任意のスキーマで使用できます。

END_DETACHED_JOB_RUNプロシージャ

このプロシージャは、連結解除されたジョブの実行を終了します。連結解除されたジョブとは、連結解除されたプログラム(detached属性がTRUEに設定されたプログラム)を指定するジョブのことです。連結解除されたジョブの実行は、このプロシージャまたはSTOP_JOBプロシージャがコールされるまで終了しません。

構文

DBMS_SCHEDULER.END_DETACHED_JOB_RUN (
job_name          IN VARCHAR2,
error_number      IN PLS_INTEGER DEFAULT 0,
additional_info   IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-55 END_DETACHED_JOB_RUNプロシージャのパラメータ

パラメータ

説明

job_name

終了するジョブの名前。連結解除された実行中のジョブである必要があります。

error_number

0(ゼロ)の場合は、ジョブの実行に対して成功のログが記録されます。-1013の場合は、ジョブの実行に対して停止のログが記録されます。0(ゼロ)以外の場合は、ジョブの実行に対してこのエラー番号と失敗のログが記録されます。

additional_info

このテキストは、該当するジョブ実行の*_scheduler_job_run_detailsビューのadditional_info列に格納されます。

使用上の注意

このプロシージャを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っているユーザーは、連結解除されたすべてのジョブの実行を終了できます。

関連項目:
連結解除されたジョブの詳細は、『Oracle Database管理者ガイド』を参照してください。

EVALUATE_CALENDAR_STRINGプロシージャ

Schedulerのカレンダ構文を使用して、ジョブ、ウィンドウまたはスケジュールの反復間隔を定義できます。このプロシージャはカレンダ式を評価し、ジョブまたはウィンドウの次の実行日時を表示します。この機能は、ジョブまたはウィンドウを実際にスケジュールすることなく、カレンダ文字列の正しい定義をテストできるため、非常に便利です。

また、このプロシージャでは、このプロシージャを1回起動したときに戻されるnext_run_dateを、次回起動するときのreturn_date_after引数として渡すことによって、反復間隔の複数のステップを取得することもできます。

「使用上の注意」で説明したカレンダ構文を参照してください。

構文

DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING (
calendar_string    IN  VARCHAR2,
start_date         IN  TIMESTAMP WITH TIME ZONE,
return_date_after  IN  TIMESTAMP WITH TIME ZONE,
next_run_date      OUT TIMESTAMP WITH TIME ZONE);

パラメータ

表140-56 EVALUATE_CALENDAR_STRINGプロシージャのパラメータ

パラメータ

説明

calendar_string

評価するカレンダ式。この文字列は、「使用上の注意」で説明したカレンダ構文で指定する必要があります。

start_date

反復間隔が有効になる日時。カレンダ文字列に不足している特定の項目を記入するために、使用することもできます。オプションでNULLを使用できます。

return_date_after

return_date_after引数は、start_dateによって決定される値およびカレンダ文字列の範囲で、すべての一致した選択可能値(すべての有効な実行日)の中からどれを戻すかをSchedulerが判断するのに役立ちます。

NULL値がこの引数に渡されると、Schedulerは自動的にその値としてsystimestampを使用します。

next_run_date

return_date_after引数に値が渡された後に発生するカレンダ文字列および開始日に一致する、最初のタイムスタンプ。

例

次に示すコードの一部は、特定のカレンダ文字列を使用して、ジョブが実行される次の5日分の日付を決定するために使用できます。

SET SERVEROUTPUT ON;
ALTER SESSION set NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
Session altered.

DECLARE
start_date        TIMESTAMP;
return_date_after TIMESTAMP;
next_run_date     TIMESTAMP;
BEGIN
start_date :=
to_timestamp_tz('01-JAN-2003 10:00:00','DD-MON-YYYY HH24:MI:SS');
return_date_after := start_date;
FOR i IN 1..5 LOOP
DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING(
'FREQ=DAILY;BYHOUR=9;BYMINUTE=30;BYDAY=MON,TUE,WED,THU,FRI',
start_date, return_date_after, next_run_date);
DBMS_OUTPUT.PUT_LINE('next_run_date: ' || next_run_date);
return_date_after := next_run_date;
END LOOP;
END;
/

next_run_date: 02-JAN-03 09.30.00.000000 AM
next_run_date: 03-JAN-03 09.30.00.000000 AM
next_run_date: 06-JAN-03 09.30.00.000000 AM
next_run_date: 07-JAN-03 09.30.00.000000 AM
next_run_date: 08-JAN-03 09.30.00.000000 AM

PL/SQL procedure successfully completed.

使用上の注意

特に必要なScheduler権限はありません。

EVALUATE_RUNNING_CHAINプロシージャ

このプロシージャは、実行中のチェーンのルールを強制的に再評価し、条件を満たしているルールがある場合は適用します。引数として渡すジョブは、チェーンを指定し、実行中である必要があります。ジョブを実行中でない場合は、エラーが発生します。(ジョブは、RUN_JOBを使用して開始できます。)

チェーンのいずれかのステップ自体でチェーンを実行中の場合、別のEVALUATE_RUNNING_CHAINが、ネストされている実行中のチェーンごとに実行されます。

構文

DBMS_SCHEDULER.EVALUATE_RUNNING_CHAIN (
job_name              IN VARCHAR2);

パラメータ

表140-57 EVALUATE_RUNNING_CHAINプロシージャのパラメータ

パラメータ

説明

job_name

ルールを再評価対象の実行中の(チェーンを指定している)ジョブの名前。

使用上の注意

ジョブに対してEVALUATE_RUNNING_CHAINを実行するには、そのジョブに対するALTER権限が必要です(ジョブの所有者であるか、ジョブに対するALTER権限またはCREATE ANY JOBシステム権限を持っているユーザーである必要があります)。

注意:
チェーンは、次のタイミングで自動的に評価されます。

- チェーン・ジョブの開始時

- チェーン・ステップの完了時

- チェーンのイベント・ステップに関連付けられたイベントの発生時

ほとんどのチェーンの場合は、これで十分です。EVALUATE_RUNNING_CHAINは、次の状況でのみ使用してください。

- ALTER_RUNNING_CHAINプロシージャを使用して、実行中のチェーンを手動で操作した場合

- チェーン・ルールにSQL構文が使用され、Schedulerで制御されていない要素がルール条件に含まれている場合

これらの場合でも、チェーンの作成時にevaluation_interval属性を設定しておくと、EVALUATE_RUNNING_CHAINが不要になることがあります。

GENERATE_JOB_NAMEファンクション

このファンクションは、ジョブの一意の名前を戻します。名前は{prefix}Nの形式で示され、Nは順序番号です。接頭辞が指定されていない場合にデフォルトで生成される名前はJOB$_1、JOB$_2、JOB$_3などになります。接頭辞として'SCOTT'が指定されている場合の名前は、SCOTT1、SCOTT2などになります。

構文

DBMS_SCHEDULER.GENERATE_JOB_NAME (
prefix        IN VARCHAR2 DEFAULT 'JOB$_') RETURN VARCHAR2;

パラメータ

表140-58 GENERATE_JOB_NAMEファンクションのパラメータ

パラメータ

説明

prefix

ジョブ名の作成時に使用する接頭辞。

使用上の注意

接頭辞が明示的にNULLに設定された場合、順序番号のみの名前になります。この順序番号のみの名前を使用する場合は、DBMS_SCHEDULERコールで使用するときに二重引用符で囲む必要があります。接頭辞は18文字以下でなければならず、数字で終わることはできません。

GENERATE_JOB_NAMEファンクションが同じジョブ名を2回戻すことはありませんが、戻された名前が既存のデータベース・オブジェクトの名前と一致する可能性があることに注意してください。

このファンクションを使用するために必要なScheduler権限は特にありません。

GET_AGENT_INFOファンクション

このファンクションは、選択された属性に応じて、実行中のジョブ数などのエージェント固有のジョブ情報を戻します。

構文

DBMS_SCHEDULER.GET_AGENT_INFO (
agent_name        IN VARCHAR2,
attribute         IN VARCHAR2) RETURN VARCHAR2;

パラメータ

表140-59 GET_AGENT_INFOファンクションのパラメータ

パラメータ

説明

agent_name

エージェントが実行される外部接続先の名前

attribute

設定可能な属性値

- VERSION:.エージェントのバージョン番号を戻します。CREATE JOBシステム権限が必要です。

- UPTIME: エージェントが起動しており実行中である時間を戻します。CREATE JOBシステム権限が必要です。

- NUMBER_OF_RUNNING_JOBS: エージェントが現在実行中のジョブ数を戻します。CREATE JOBシステム権限が必要です。

- TOTAL_JOBS_RUN: エージェントが起動された後に、エージェントによって実行されたジョブ数を戻します。CREATE JOBシステム権限が必要です。

- RUNNING_JOBS: 現在実行中のジョブ名のカンマ区切りリストを戻します。MANAGE SCHEDULERシステム権限が必要です。

- ALL: 前のオプションによって戻されたすべての情報を戻します。MANAGE SCHEDULERシステム権限が必要です。

使用上の注意

このファンクションは、schagentユーティリティのstatusオプションと同じ情報を戻します。『Oracle Database管理者ガイド』を参照してください。

GET_AGENT_VERSIONファンクション

このファンクションでは、データベースに登録されており、現在実行中のSchedulerエージェントのバージョン文字列が戻されます。GET_AGENT_VERSIONは、エージェントがデータベースに登録されていない場合、またはエージェントが現在実行中でない場合にエラーをスローします。

構文

DBMS_SCHEDULER.GET_AGENT_VERSION (
agent_host        IN VARCHAR2) RETURN VARCHAR2;

パラメータ

表140-60 GET_AGENT_VERSIONファンクションのパラメータ

パラメータ

説明

agent_host

エージェントが実行されているホスト名またはポートのいずれかをhostname:portの形式で指定するか、データベースに登録されているすべてのSchedulerエージェントを示すALL_SCHEDULER_EXTERNAL_DESTSビューのdestination_name列に示されているエージェント名を指定します。

使用上の注意

このファンクションには、CREATE EXTERNAL JOBシステム権限が必要です。

GET_ATTRIBUTEプロシージャ

このプロシージャは、Schedulerオブジェクトの属性値を取得します。様々なタイプの値を取得するために、オーバーロードされています。

構文

DBMS_SCHEDULER.GET_ATTRIBUTE (
name           IN VARCHAR2,
attribute      IN VARCHAR2,
value          OUT {VARCHAR2|PLS_INTEGER|BOOLEAN|DATE|TIMESTAMP|
TIMESTAMP WITH TIME ZONE|TIMESTAMP WITH LOCAL TIME ZONE|
INTERVAL DAY TO SECOND});

DBMS_SCHEDULER.GET_ATTRIBUTE (
name           IN VARCHAR2,
attribute      IN VARCHAR2,
value          OUT VARCHAR2,
value2         OUT VARCHAR2);

パラメータ

表140-61 GET_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

name

オブジェクトの名前。

attribute

取得する属性。属性値の表は、「SET_ATTRIBUTEプロシージャ」を参照してください。

value

属性の既存値。

value2

value2引数は、2つ目の値(オプション)に使用します。

ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。

使用上の注意

ジョブ・クラスについてGET_ATTRIBUTEを実行するには、そのクラスのMANAGE SCHEDULER権限、またはEXECUTE権限を持っている必要があります。スケジュール、ウィンドウまたはグループの場合は、権限は必要ありません。前述の権限がない場合は、そのオブジェクトの所有者であるか、そのオブジェクトのALTER権限またはEXECUTE権限があるか、またはCREATE ANY JOB権限を持っている必要があります。

様々なSchedulerオブジェクト・タイプに取得できる属性値の表は、「SET_ATTRIBUTEプロシージャ」を参照してください。

GET_FILEプロシージャ

このプロシージャは、指定したホストのオペレーティング・システムのファイル・システムからファイルを取得します。ファイルが任意の宛先にコピーされるか、またはその内容がプロシージャの出力パラメータに戻されます。

また、このプロシージャを使用して、資格証明に関連付けられている外部ジョブを実行するために標準出力またはエラー・テキストを取得できます。

このプロシージャは、同等機能のUTL_FILEプロシージャとは異なり、資格証明を使用して、Schedulerエージェントのみがインストールされている(Oracle Databaseはインストールされていない)リモート・ホストからファイルを取得できます。

構文

DBMS_SCHEDULER.GET_FILE (
source_file                  IN VARCHAR2,
source_host                  IN VARCHAR2,
credential_name              IN VARCHAR2,
file_contents                IN OUT NOCOPY {BLOB|CLOB});

DBMS_SCHEDULER.GET_FILE (
source_file                  IN VARCHAR2,
source_host                  IN VARCHAR2,
credential_name              IN VARCHAR2,
destination_file_name        IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_permissions      IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-62 GET_FILEプロシージャのパラメータ

パラメータ

説明

source_file

オペレーティング・システムから取得するファイルの完全修飾パス名。ファイル名は、大/小文字が区別され、大文字には変換されません。ファイル名が疑問符('?')で始まっている場合、この疑問符は、ローカル・ホストからファイルを取得するときはOracleホームのパス、リモート・ホストからファイルを取得するときはSchedulerエージェント・ホームのパスに置き換えられます。

このパラメータの形式がexternal_log_id_stdoutの場合は、指定した外部ジョブ実行から標準出力が戻されます。

このパラメータの形式がexternal_log_id_stderrの場合は、指定した外部ジョブ実行からエラー・テキストが戻されます。

*_SCHEDULER_JOB_RUN_DETAILSビューのADDITIONAL_INFO列からexternal_log_idの値を取得します。この列には名前/値ペアのセットが不確定な順序で含まれているため、external_log_id名前/値ペアのこの列を解析し、その値に_stdoutまたは_stderrを追加する必要があります。

外部ジョブには、資格証明が関連付けられている必要があります。GET_FILEのcredential_nameパラメータには、ジョブで使用される資格証明と同じ資格証明を指定する必要があり、source_hostパラメータは、ジョブのdestination属性と同じにする必要があります。

source_host

ファイルをリモート・ホストから取得する場合、このパラメータは有効な外部接続先の名前である必要があります。(リモートSchedulerエージェントをデータベースに登録すると、外部接続先が作成されます。外部接続先の名前はビュー*_SCHEDULER_EXTERNAL_DESTSに表示できます。)

source_hostがNULLまたは'localhost'に設定されている場合、ファイルはローカル・ホストのファイル・システムから取得されます。Schedulerエージェントのポート番号を確認するには、リモート・ホストのSchedulerエージェント・ホーム・ディレクトリにあるschagent.confファイルを参照します。

credential_name

ファイル・システムへのアクセスに使用する資格証明の名前。

file_contents

ファイルの内容の読み取り先変数。

destination_file_name

ファイルの内容の書き込み先ファイル。

destination_directory_object

宛先ファイルのパスを指定するディレクトリ・オブジェクト(destination_file_nameが使用されている場合)。コール元には、ディレクトリ・オブジェクトに対する権限が必要です。

destination_permissions

将来使用するために予約されています。

使用上の注意

コール元には、CREATE EXTERNAL JOBシステム権限および資格証明に対するEXECUTE権限が必要です。

GET_SCHEDULER_ATTRIBUTEプロシージャ

このプロシージャは、Scheduler属性の値を取得します。

構文

DBMS_SCHEDULER.GET_SCHEDULER_ATTRIBUTE (
attribute      IN VARCHAR2,
value          OUT VARCHAR2);

パラメータ

表140-63 GET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

attribute

属性の名前。

value

属性の既存値。

使用上の注意

GET_SCHEDULER_ATTRIBUTEを実行するには、MANAGE SCHEDULER権限が必要です。

表140-64に、取得可能なScheduler属性を示します。これらの属性の詳細は、表140-94および『Oracle Database管理者ガイド』のSchedulerの構成に関する項を参照してください。

表140-64 GET_SCHEDULER_ATTRIBUTEで取得可能なScheduler属性

Scheduler属性

説明

current_open_window

現在オープンしているウィンドウの名前。

default_timezone

Schedulerで、反復間隔およびウィンドウに対して使用されるデフォルトのタイムゾーン。

email_sender

ジョブの状態を電子メール通知するための送信者のデフォルト電子メール・アドレス。

email_server

ジョブの状態イベントの電子メール通知を送信するためにSchedulerが使用するSMTPサーバー・アドレス。この属性がNULLの場合、電子メール通知は送信できません。

event_expiry_time

Schedulerで生成され、Schedulerイベント・キューにエンキューされるイベントの有効期間(秒)。NULLの場合があります。

log_history

ジョブおよびウィンドウのログの保存期間(日)。有効値の範囲は、0から1000000です。

max_job_slave_processes

このScheduler属性は使用されません。

OPEN_WINDOWプロシージャ

このプロシージャは、スケジュールに関係なく手動でウィンドウをオープンします。ウィンドウがオープンすると、このウィンドウに関連付けられたリソース・プランがただちに有効になり、指定した継続時間の間、または継続時間を指定していない場合はウィンドウの標準継続時間の間、有効な状態が継続されます。手動でオープンできるのは、使用可能なウィンドウのみです。

構文

DBMS_SCHEDULER.OPEN_WINDOW (
window_name             IN VARCHAR2,
duration                IN INTERVAL DAY TO SECOND,
force                   IN BOOLEAN DEFAULT FALSE);

パラメータ

表140-65 OPEN_WINDOWプロシージャのパラメータ

パラメータ

説明

window_name

ウィンドウの名前。

duration

ウィンドウの継続時間。これには日から秒までの時間隔タイプがあります。NULLに設定すると、ウィンドウは、ウィンドウのメタデータで指定されている標準継続時間の間オープンします。

force

forceをFALSEに設定した場合、すでにオープンしているウィンドウをオープンすると、エラーが発生します。

forceをTRUEに設定すると、次のようになります。

すでにオープンしているウィンドウをオープンできます。ウィンドウは、OPEN_WINDOWコマンドが発行されたときから、このコールで指定した継続期間中オープンします。

たとえば、window1は4時間の継続時間で作成されています。もう2時間オープンしています。この時点でOPEN_WINDOW呼出しを使用してwindow1を再びオープンして期間を指定しない場合、window1は4時間オープンされたままになります(この期間で作成されたため)。30分という期間を指定すると、ウィンドウは30分でクローズします。

Schedulerにより、その時点でオープンしているすべてのウィンドウが自動的にクローズされます(より優先順位の高いウィンドウもクローズされます)。この手動でオープンしたウィンドウの継続時間中は、Schedulerにより他のスケジュール・ウィンドウはオープンされません(より優先順位の高いウィンドウもオープンされません)。

使用上の注意

手動によるウィンドウのオープンは、通常のスケジュール・ウィンドウの実行には影響しません。ウィンドウの次のオープン時間は更新されず、通常のオープン・スケジュールによって決定されます。

手動でオープンしたウィンドウをクローズする場合で、クローズするときに他のウィンドウもある場合、どのウィンドウをオープンするかを決定するために、オーバーラップ・ウィンドウのルールが適用されます。

ウィンドウをオープンしたときに実行中のジョブがある場合、リソース・プランが切り替わると、それらのジョブに割り当てられたリソースが変更される可能性があります。

指定したリソース・プランが存在しないか、またはウィンドウによるリソース・プランの切替えが無効になっている(forceオプションが指定されたALTER SYSTEM文を使用している場合など)ため、ウィンドウによるリソース・プランの切替えに失敗した場合、その失敗はウィンドウ・ログに記録されます。

ウィンドウをオープンするには、MANAGE SCHEDULER権限が必要です。

PURGE_LOGプロシージャ

Schedulerはデフォルトでは、ジョブ・ログおよびウィンドウ・ログの30日前より古い行をすべて、自動的にパージします。ジョブ・ログおよびウィンドウ・ログから余分な行をパージする場合は、PURGE_LOGプロシージャを使用します。

ジョブ・ログ表内の行でチェーンのステップに関連する行は、メインのチェーン・ジョブのエントリが(手動または自動で)パージされた場合にのみパージされます。

構文

DBMS_SCHEDULER.PURGE_LOG (
log_history             IN PLS_INTEGER  DEFAULT 0,
which_log               IN VARCHAR2     DEFAULT 'JOB_AND_WINDOW_LOG',
job_name                IN VARCHAR2     DEFAULT NULL);

パラメータ

表140-66 PURGE_LOGプロシージャのパラメータ

パラメータ

説明

log_history

保持する履歴の日数を指定します。有効値の範囲は、0から1000000です。0に設定すると、履歴は保持されません。

which_log

ログのタイプを指定します。有効な値は、job_log、window_logおよびjob_and_window_logです。

job_name

ジョブ・ログからパージするジョブ固有のエントリを指定します。ジョブ名およびジョブ・クラスのカンマ区切りリストも使用できます。job_nameにNULL以外の値を設定した場合は必ず、which_log引数には暗黙的にジョブ・ログが含まれます。

使用上の注意

このプロシージャを実行するには、MANAGE SCHEDULER権限が必要です。

例

ジョブ・ログおよびウィンドウ・ログのすべての行を完全にパージします。

DBMS_SCHEDULER.PURGE_LOG();

5日前より古いウィンドウ・ログのすべての行をパージします。

DBMS_SCHEDULER.PURGE_LOG(5, 'window_log');

1日前より古いウィンドウ・ログのすべての行をパージし、さらにjobclass1のジョブに関連し、かつ1日前より古いジョブ・ログのすべての行をパージします。

DBMS_SCHEDULER.PURGE_LOG(1, 'job_and_window_log', 'sys.jobclass1');

PUT_FILEプロシージャ

このプロシージャは、指定したリモート・ホストまたはローカル・コンピュータのオペレーティング・システムのファイル・システムにファイルを保存します。これは、同等のUTL_FILEプロシージャとは異なり、資格証明を使用して、Schedulerエージェントのみがインストールされている(Oracle Databaseはインストールされていない)リモート・ホストにファイルを保存できます。

構文

DBMS_SCHEDULER.PUT_FILE (
destination_file         IN VARCHAR2,
destination_host         IN VARCHAR2,
credential_name          IN VARCHAR2,
file_contents            IN {BLOB|CLOB},
destination_permissions  IN VARCHAR2 DEFAULT NULL);

DBMS_SCHEDULER.PUT_FILE (
destination_file         IN VARCHAR2,
destination_host         IN VARCHAR2,
credential_name          IN VARCHAR2,
source_file_name         IN VARCHAR2,
source_directory_object  IN VARCHAR2,
destination_permissions  IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-67 PUT_FILEプロシージャのパラメータ

パラメータ

説明

destination_file

オペレーティング・システムのファイル・システムに保存するファイルの完全修飾パス名。ファイル名は、大/小文字が区別されます。ファイル名が疑問符('?')で始まっている場合、この疑問符は、ローカル・ホストに保存するときはOracleホームのパス、リモート・ホストに保存するときはSchedulerエージェント・ホームへのパスに置き換えられます。

destination_host

NULLまたは'localhost'に設定されている場合、ファイルはローカル・コンピュータのファイル・システムに保存されます。

リモート・ホストに保存する場合、このパラメータは有効な外部接続先の名前である必要があります。(リモートSchedulerエージェントをデータベースに登録すると、外部接続先が作成されます。外部接続先の名前はビュー*_SCHEDULER_EXTERNAL_DESTSに表示できます。)

credential_name

宛先ファイル・システムへのアクセスに使用する資格証明の名前。

file_contents

ファイルの内容の読み取り元変数。

source_file_name

ファイルの内容を書き込む元のファイル。

source_directory_object

ソース・ファイルのパスを指定するディレクトリ・オブジェクト(source_file_nameが使用されている場合)。コール元には、ディレクトリ・オブジェクトに対する権限が必要です。

destination_permissions

将来使用するために予約されています。

使用上の注意

コール元には、CREATE EXTERNAL JOBシステム権限および資格証明に対するEXECUTE権限が必要です。

REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャ

このプロシージャは、Schedulerイベント・キューSYS.SCHEDULER$_EVENT_QUEUEからユーザーをサブスクライブ解除します。

構文

DBMS_SCHEDULER.REMOVE_EVENT_QUEUE_SUBSCRIBER (
subscriber_name         IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-68 REMOVE_EVENT_QUEUE_SUBSCRIBERプロシージャのパラメータ

パラメータ

説明

subscriber_name

サブスクリプションを削除するOracle Streams Advanced Queuing(AQ)エージェントの名前。NULLに設定すると、コール・ユーザーの名前が使用されます。

使用上の注意

エージェントは、サブスクライブ解除された後に削除されます。エージェントが存在しない場合、またはエージェントがSchedulerイベント・キューに現在サブスクライブされていない場合は、エラーが発生します。

REMOVE_GROUP_MEMBERプロシージャ

このプロシージャは、1つ以上のメンバーを既存のグループから削除します。

構文

DBMS_SCHEDULER.REMOVE_GROUP_MEMBER (
group_name              IN VARCHAR2,
member                  IN VARCHAR2);

パラメータ

表140-69 REMOVE_GROUP_MEMBERプロシージャのパラメータ

パラメータ

説明

group_name

グループの名前。

member_name

グループから削除するメンバーの名前。削除するメンバーのカンマ区切りリスト。いずれかのメンバーがグループの一部でない場合は、エラーが戻されます。

同じタイプのグループはメンバーに指定することができます。Schedulerは、含められたグループ名をただちにメンバーのリストに拡張します。

メンバーが接続先の場合、この接続先で実行されるすべてのジョブ・インスタンスは*_SCHEDULER_JOB_DESTSビューから削除されます。

使用上の注意

次のユーザーはグループからメンバーを削除できます。

- グループ所有者。

- グループでALTERオブジェクト権限を付与されたユーザー。

- CREATE ANY JOBシステム権限があるユーザー。

タイプWINDOWのグループからメンバーを削除するには、MANAGE SCHEDULER権限が必要です。

関連項目:
「CREATE_GROUPプロシージャ」

REMOVE_JOB_EMAIL_NOTIFICATIONプロシージャ

このプロシージャは、ジョブの電子メール通知を削除します。すべての電子メール通知を削除することも、特定の受信者または特定のイベントのみの通知を削除することもできます。

構文

DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION (
job_name             IN VARCHAR2,
recipients           IN VARCHAR2 DEFAULT NULL,
events               IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-70 ADD_JOB_EMAIL_NOTIFICATIONプロシージャのパラメータ

パラメータ

説明

job_name

電子メール通知を削除するジョブの名前。NULL以外にしてください。

recipients

電子メール通知を削除する電子メール・アドレス。電子メール・アドレスのカンマ区切りリスト。

events

電子メール通知を削除するジョブの状態イベント。ジョブの状態イベントのカンマ区切りリスト。

使用上の注意

複数の受信者および複数のイベントを指定すると、指定したそれぞれのイベントに対する通知は指定したそれぞれ受信者から削除されます。このプロシージャは、指定されても以前に追加されていない受信者またはイベントを無視します。

recipientsがNULLの場合、既存のすべての受信者で、指定したイベントに対する電子メール通知が削除されます。eventsがNULLの場合、指定した受信者で、すべてのイベントに対する通知が削除されます。recipientsとeventsの両方がNULLの場合、ジョブですべての電子メール通知が削除されます。

たとえば、recipientsが'jsmith@example.com,rjones@example.com'でありeventsが'JOB_FAILED,JOB_BROKEN'である場合、jsmithとrjonesの両方で、JOB_FAILEDイベントとJOB_BROKENイベントの両方に対する通知が削除されます。recipientsがNULLの場合、jsmith、rjonesおよびこれらのイベントに以前に定義された受信者で、JOB_FAILEDイベントとJOB_BROKENイベントの両方に対する通知が削除されます。

このプロシージャをコールするには、ジョブ所有者になるか、CREATE ANY JOBシステム権限またはジョブに対するALTERオブジェクト権限を持つユーザーである必要があります。

関連項目:
「ADD_JOB_EMAIL_NOTIFICATIONプロシージャ」

RESET_JOB_ARGUMENT_VALUEプロシージャ

このプロシージャは、以前にジョブの引数に設定された値をリセット(消去)します。

RESET_JOB_ARGUMENT_VALUEはオーバーロードされています。

構文

以前に設定したジョブの引数値を、引数の位置を使用して消去する場合:

DBMS_SCHEDULER.RESET_JOB_ARGUMENT_VALUE (
job_name                IN VARCHAR2,
argument_position       IN PLS_INTEGER);

以前に設定したジョブの引数値を、引数の名前を使用して消去する場合:

DBMS_SCHEDULER.RESET_JOB_ARGUMENT_VALUE (
job_name                IN VARCHAR2,
argument_name           IN VARCHAR2);

パラメータ

表140-71 RESET_JOB_ARGUMENT_VALUEプロシージャのパラメータ

パラメータ

説明

job_name

変更するジョブの名前。

argument_position

リセットするプログラム引数の位置。

argument_name

リセットするプログラム引数の名前。

使用上の注意

対応するプログラム引数にデフォルト値がない場合、このジョブは使用禁止になります。他のユーザーに所属するジョブのプログラム引数をリセットする場合は、そのジョブのALTER権限が必要です。引数は、位置または名前を使用して指定できます。

RESET_JOB_ARGUMENT_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数をリセットできます。

RESET_JOB_ARGUMENT_VALUEでは、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。

RUN_CHAINプロシージャ

このプロシージャは、1回のみ実行するジョブを指定したジョブ名で作成することによって、ただちにチェーンまたはチェーンの一部を実行します。job_nameが指定されていない場合は、RUN_CHAIN$_chainnameNの形式のジョブ名が生成されます(chainnameはチェーン名の最初の8文字、Nは整数です)。開始ステップのリストが指定されている場合は、それらのステップのみがチェーンの実行開始時に開始されます。リストにないステップ(通常は開始済のステップ)はスキップされ、一時停止します(これ以降のステップが実行されないようにするためです)。start_stepsがNULLの場合、通常どおりにチェーンが開始されます(初期評価が行われ、実行を開始するステップが確認されます)。

ステップの初期状態のリストが指定されている場合は、新しく作成されるチェーン・ジョブによって、リストされているすべてのステップが指定の状態に設定されてから、チェーン・ルールが評価され開始ステップが確認されます。(リスト内のステップは開始されません。)

構文

開始ステップのリストを使用してチェーンを実行する場合

DBMS_SCHEDULER.RUN_CHAIN (
chain_name                IN VARCHAR2,
start_steps               IN VARCHAR2,
job_name                  IN VARCHAR2 DEFAULT NULL);

ステップの初期状態のリストを使用してチェーンを実行する場合

DBMS_SCHEDULER.RUN_CHAIN (
chain_name               IN VARCHAR2,
step_state_list          IN SYS.SCHEDULER$_STEP_TYPE_LIST,
job_name                 IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-72 RUN_CHAINプロシージャのパラメータ

パラメータ

説明

chain_name

実行するチェーンの名前。

job_name

チェーンを実行するために作成するジョブの名前。

start_steps

チェーンの実行開始時に開始するステップのカンマ区切りリスト。

step_state_list

チェーン・ステップのリスト(各ステップに設定する初期状態(SUCCEEDEDまたはFAILED)付き)。

sys.scheduler$_step_typeの属性は次のように設定します。

step_name: ステップの名前。step_type 'SUCCEEDED'または'FAILED error_number'。

ここで、error_numberは、正または負の整数です。

使用上の注意

チェーンを実行するには、ユーザーのスキーマにジョブが作成される場合はCREATE JOB、それ以外の場合はCREATE ANY JOBが必要です。また、作成されるジョブの所有者には、チェーンの実行権限が必要です(チェーンの所有者であるか、チェーンに対するEXECUTE権限またはEXECUTE ANY PROGRAMシステム権限を持っているユーザーである必要があります)。

例

次の例では、一部のチェーン・ステップの初期状態を指定して、チェーンを途中から開始する方法を示しています。

declare
initial_step_states sys.scheduler$_step_type_list;
begin
initial_step_states := sys.scheduler$_step_type_list(
sys.scheduler$_step_type('step1', 'SUCCEEDED'),
sys.scheduler$_step_type('step2', 'FAILED 27486'),
sys.scheduler$_step_type('step3', 'SUCCEEDED'),
sys.scheduler$_step_type('step5', 'SUCCEEDED'));
dbms_scheduler.run_chain('my_chain', initial_step_states);
end;
/

RUN_JOBプロシージャ

このプロシージャは、ジョブをただちに実行します。

ジョブが使用可能である場合は、Schedulerによって自動的に実行されます。スケジュールに従ってジョブを実行する場合は、RUN_JOBをコールする必要はありません。通常のスケジュール以外でジョブを実行する場合に、RUN_JOBを使用します。

構文

DBMS_SCHEDULER.RUN_JOB (
job_name                IN VARCHAR2,
use_current_session     IN BOOLEAN DEFAULT TRUE);

パラメータ

表140-73 RUN_JOBプロシージャのパラメータ

パラメータ

説明

job_name

ジョブ名またはエントリのカンマ区切りリスト(それぞれが既存のジョブの名前であり、オプションでスキーマ名およびドット区切りを接頭辞として付加できます)。

複数の接続先ジョブを指定すると、ジョブはすべての接続先で実行されます。この場合、use_current_session引数はFALSEである必要があります。

use_current_session

実行されたジョブが、プロシージャの呼出し元である同じセッションで生じるかどうかを指定します。ジョブ所有者のスキーマでは、ジョブは常にジョブ所有者として実行され、資格証明が指定されていない場合、ジョブは資格証明で指定されるユーザーを使用して実行されます。

use_current_sessionをTRUEに設定した場合は、次のようになります。

- コマンドラインでジョブをテストして、起こりうるエラーを確認できます。

- *_scheduler_jobsのstate, run_count、last_start_date、last_run_durationおよびfailure_countは更新されません。

- RUN_JOBは、通常のスケジュール・ジョブと並行して実行できます。

use_current_sessionをFALSEに設定した場合は、次のようになります。

- エラー情報を確認するため、ジョブ・ログをチェックする必要があります。

- *_scheduler_jobsの関連フィールドはすべて更新されます。

- 通常のスケジュール・ジョブを実行中の場合、RUN_JOBを実行すると失敗します。

指定した接続先または接続先グループを持つジョブの場合、またはdetached属性がTRUEに設定されているチェーンまたはプログラムを指すジョブの場合、use_current_sessionはFALSEである必要があります。

使用上の注意

ジョブが使用可能になっている必要はありません。ジョブが使用禁止になっている場合は、ジョブを実行する前に、次の妥当性チェックが行われます。

- ジョブが有効なジョブ・クラスを指している。

- ジョブ所有者が、ジョブ・クラスに対するEXECUTE権限を持っている。

- プログラムまたはチェーンが参照される場合、そのプログラムまたはチェーンが存在する。

- プログラムまたはチェーンが参照される場合、ジョブ所有者がそのプログラムまたはチェーンの実行権限を持っている。

- すべての引数値が設定されている(またはデフォルト値を持っている)。

- 外部ジョブの場合、ジョブ所有者がCREATE EXTERNAL JOB権限を持っている。

次のタイプのジョブでは、use_current_sessionの値としてTRUEは許可されません。

- destination_name属性で接続先または接続先グループを指定するジョブ。

- チェーンを指すジョブ(チェーン・ジョブ)。

- 連結解除されたプログラム(連結解除されたジョブ)を使用するジョブ。

use_current_sessionがTRUEの場合、RUN_JOBへのコールはジョブが完了するまでブロックされます。ジョブの実行中に発生したエラーは、RUN_JOBプロシージャにエラーとして戻されます。

RUN_JOBをuse_current_session=TRUEで使用する場合、ジョブ状態は更新されず、ジョブは*_SCHEDULER_RUNNING_JOBSビューに表示されません。

use_current_sessionがFALSEの場合、RUN_JOBはすぐに戻り、ジョブはジョブ・コーディネータに取得されて実行用のジョブ・スレーブに渡されます。ジョブの結果については、Schedulerのビューおよびログを参照する必要があります。

use_current_sessionをTRUEに設定した場合、複数のユーザー・セッションで同時にRUN_JOBを使用できます。

RUN_JOBを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブを実行できます。

例

次にRUN_JOBの使用例を示します。

BEGIN
DBMS_SCHEDULER.RUN_JOB(
JOB_NAME            => 'EODJOB, DSS.ETLJOB',
USE_CURRENT_SESSION => FALSE);
END;

SET_AGENT_REGISTRATION_PASSプロシージャ

このプロシージャは、データベースのエージェント登録パスワードを設定します。データベースからエージェントにジョブを送信するには、Schedulerエージェントがデータベースに登録されている必要があります。エージェントは、登録時にこのパスワードを指定する必要があります。

構文

DBMS_SCHEDULER.SET_AGENT_REGISTRATION_PASS (
registration_password   IN VARCHAR2,
expiration_date         IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
max_uses                IN NUMBER DEFAULT NULL);

パラメータ

表140-74 SET_AGENT_REGISTRATION_PASSプロシージャのパラメータ

パラメータ

説明

registration_password

リモート・エージェントがデータベースに正常に登録するために指定する必要があるパスワード。NULLの場合、エージェントはデータベースに登録できなくなります。

expiration_date

NULL以外の値に設定した場合、この日付を過ぎると、registration_passwordは有効でなくなります。この日付を過ぎると、エージェントはデータベースに登録できなくなります。この値を過去の日付に設定することはできません。

max_uses

このパスワードで正常に実行できる登録の最大数。このパスワードで正常に実行された登録の数が最大数に達すると、エージェントはデータベースに登録できなくなります。この値を0または負の値に設定することはできません。NULLに設定すると、正常に実行された登録の数の制限はなくなります。

使用上の注意

悪用を防止するために、このパスワードは、指定した日付を過ぎたり、正常に実行された登録の数が最大数に達すると期限切れになるように設定できます。このプロシージャは、すでに設定されているパスワードを上書きします。このプロシージャを使用するには、MANAGE SCHEDULERシステム権限が必要です。

デフォルトでは、max_usesはNULLに設定されており、正常に実行された登録の数に制限がないことを意味します。

エージェントの登録ごとまたは既知のエージェントの登録ごとに、エージェント登録パスワードをリセットすることをお薦めします。また、新しいエージェントを登録しない場合は、このパスワードをNULLに設定することをお薦めします。

SET_ATTRIBUTEプロシージャ

このプロシージャは、Schedulerオブジェクトの属性を修正します。様々なタイプの値を受け入れるために、オーバーロードされています。属性をNULLに設定するには、SET_ATTRIBUTE_NULLプロシージャを使用します。設定可能な属性は、変更するオブジェクトによって異なります。オブジェクト名以外のすべてのオブジェクトの属性を、変更できます。

構文

DBMS_SCHEDULER.SET_ATTRIBUTE (
name           IN VARCHAR2,
attribute      IN VARCHAR2,
value          IN {BOOLEAN|DATE|TIMESTAMP|
TIMESTAMP WITH TIME ZONE|TIMESTAMP WITH LOCAL TIME ZONE|
INTERVAL DAY TO SECOND});

DBMS_SCHEDULER.SET_ATTRIBUTE (
name           IN VARCHAR2,
attribute      IN VARCHAR2,
value          IN VARCHAR2,
value2         IN VARCHAR2 DEFAULT NULL);

パラメータ

表140-75 SET_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

name

オブジェクトの名前。

attribute

表140-77から表140-87を参照してください。

value

属性に設定する新しい値。NULLは指定できません。属性値をNULLに設定するには、SET_ATTRIBUTE_NULLプロシージャを使用します。

value2

value2引数は、2つ目の値(オプション)に使用します。ほとんどの属性の場合、関連付けられる値は1つのみですが、値を2つ設定できる属性もあります。

表140-76は、Schedulerオブジェクト・タイプのディレクトリおよびオブジェクト・タイプ属性の表です。

これらのオブジェクト・タイプは、『Oracle Database管理者ガイド』に示されているSchedulerデータ・ディクショナリ・ビューを使用して表示できます。

表140-76 Schedulerオブジェクト・タイプの属性表

Schedulerオブジェクト・タイプ

属性の表

ジョブ

表140-77

プログラム

表140-79

スケジュール

表140-80

File Watcher

表140-81

ジョブ・クラス

表140-82

ウィンドウ

表140-83

チェーン

表140-84

データベース接続先

表140-85

外部接続先

表140-86

グループ

表140-87

資格証明

表140-88

使用上の注意

オブジェクトが使用可能な場合にオブジェクトを変更するには、Schedulerはまずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。使用可能プロセスでエラーが発生した場合は、オブジェクトは使用可能に再設定されず、エラーが生成されます。

使用禁止の状態だったオブジェクトを変更した場合、そのオブジェクトは変更した後も使用禁止のままです。

ウィンドウ、タイプWINDOWのグループまたはジョブ・クラスでSET_ATTRIBUTEを実行するには、MANAGE SCHEDULER権限が必要です。この権限のない場合は、変更対象のオブジェクトの所有者であるか、そのオブジェクトのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。

ジョブ

SET_ATTRIBUTEコールを行う際に実行中のジョブ・インスタンスがある場合、このインスタンスはこのコールによる影響は受けません。この変更は、今後実行されるジョブに対してのみ影響します。

ジョブの実行中にジョブのスケジュール属性が変更された場合、次のジョブを実行する時間は、新しいスケジュール属性を使用してスケジュールされます。ジョブのスケジュール属性には、schedule_name、start_date、end_date、repeat_intervalなどがあります。

ジョブの実行中にジョブのプログラム属性を変更した場合、新しいプログラム属性は、次回ジョブを実行するときから有効になります。ジョブのプログラム属性には、program_name、job_action、job_typeおよびnumber_of_argumentsなどがあります。

ジョブの実行中にジョブの引数値を変更した場合、新しい値は、次回ジョブを実行するときから有効になります。

ジョブに関するALTER権限をユーザーに付与すると、プログラム属性を除くそのジョブのすべての属性(program_name、job_type、job_action、program_actionおよびnumber_of_arguments)が変更可能になりますが、PL/SQL式を使用して、ジョブのスケジュールを指定することはできません。

データベースによって自動的に作成されたジョブは変更しないことをお薦めします。データベースによって作成されたジョブには、ジョブのビューでTRUEに設定された列SYSTEMがあります。

プログラム

プログラムを変更して、このプログラムを現在実行中のジョブで使用する場合は、変更前のプログラム定義を使用して実行が続行されます。新しいプログラム定義は、次回ジョブを実行するときから使用されます。

スケジュール

スケジュールを変更した場合、この変更は実行中のジョブおよびこのスケジュールを使用するオープン中のウィンドウには影響しません。この変更は、次回ジョブを実行するときまたはウィンドウをオープンするときからのみ有効になります。

File Watcher

File Watcherが変更されても、ファイル到着イベントにより開始された、現在実行中のイベント・ベースのジョブは影響を受けません。ローカル・システムでは、新しいFile Watcher属性は、File Watcherが次にファイルの到着をチェックするとき(デフォルトでは、10分ごと)に有効になります。リモート・システムでは、新しいFile Watcher属性が有効になるまでに追加の遅延がある場合があります。

ジョブ・クラス

デフォルトのジョブ・クラス以外のすべてのジョブ・クラスを変更できます。ジョブ・クラスを変更するには、MANAGE SCHEDULER権限が必要です。

ジョブ・クラスを変更した場合、そのクラスに属する実行中のジョブには影響しません。この変更は、今後実行されるジョブに対してのみ有効です。

ウィンドウ

ウィンドウを変更した場合、アクティブ・ウィンドウには影響しません。この変更は、次回ウィンドウをオープンするときからのみ有効になります。

リソース・プランが指定されているウィンドウをオープンしたときに現行のリソース・プランがない場合、リソース・マネージャはその指定された計画でアクティブになります。

ジョブの属性値

表140-77に、ジョブの属性値を示します。

注意:
この表に示す属性の詳細は、「CREATE_JOBプロシージャ」および「CREATE_JOBSプロシージャ」を参照してください。

表140-77 ジョブの属性値

名前

説明

allow_runs_in_restricted_mode

TRUEの場合、このモード中にジョブの所有者がログインを許可されれば、データベースが制限モードのときに、ジョブの実行が許可されます。デフォルトはFALSEです。

auto_drop

この属性をTRUEに設定すると、ジョブは、完了するかまたは自動的に使用禁止になると自動的に削除されます。ジョブは、次の場合、完了したとみなされます。

- ジョブの終了日(またはスケジュールの終了日)を過ぎた場合。

- max_runs回実行された場合。max_runsはSET_ATTRIBUTEで設定されている必要があります。

- 繰返しジョブではなく、1回実行された場合。

ジョブは、max_failures回失敗すると、自動的に使用禁止になります。max_failuresもSET_ATTRIBUTEで設定します。

この属性をFALSEに設定すると、ジョブは削除されず、ジョブのメタデータはDROP_JOBプロシージャで明示的に削除されるまで保持されます。

デフォルトでは、ジョブはauto_dropで作成され、TRUEに設定されます。

comments

コメント(オプション)。

connect_credential_name

この属性は、データベース資格証明を指すように設定されている場合があります。SQL*Plusまたはバックアップ・スクリプト・ジョブの場合、資格証明は、スクリプトを実行する前にデータベースに接続されます。その他のジョブ・タイプの場合は無視されます。ジョブ所有者は、資格証明の実行権限を持っている必要があります。持っていない場合、ジョブは失敗します。

connect_credential_nameを使用することをお薦めします。これを使用すると、パスワードをジョブ、プログラム・アクションまたはスクリプトでそのまま表示せずに、データベース内の資格証明に安全に格納できます。

credential_name

この属性は、リモート・データベース・ジョブ、リモート外部ジョブ、ローカル外部ジョブまたはファイル到着イベントを処理するイベント・ベース・ジョブに使用する資格証明オブジェクト(資格証明)の名前を指定します。ローカル外部ジョブのみでは、この属性がNULL(デフォルト)になっている場合、優先(デフォルトの)資格証明が選択されます。ローカルの外部ジョブの優先資格証明の詳細は、『Oracle Database管理者ガイド』を参照してください。

「CREATE_CREDENTIALプロシージャ」も参照してください。

database_role

この属性は、データベースがOracle Data Guard環境に組み込まれている場合に適用されます。この属性を'PRIMARY'に設定すると、データベースがプライマリ・データベースのロールに存在する場合にのみジョブが実行されます。'LOGICAL STANDBY'に設定すると、データベースがロジカル・スタンバイのロールに存在する場合にのみジョブが実行されます。デフォルトは、データベースがプライマリ・データベースの場合は'PRIMARY'、データベースがロジカル・スタンバイの場合は'LOGICAL STANDBY'です。

注意: 特定のホスト上のすべてのデータベース・ロールに対してジョブを実行する場合は、そのホストでそのジョブのコピーを2つ作成する必要があります。1つはdatabase_roleが'PRIMARY'のジョブ、もう1つはdatabase_roleが'LOGICAL STANDBY'のジョブです。

destination

*** Oracle Database 11gリリース2では非推奨となっています。かわりにdestination_nameを使用します。

この属性は、リモートの外部ジョブを実行するホストを指定します。接続先ホストのホスト名、またはIPアドレスに設定する必要があります。オプションとして、次の形式でポート番号を続けることができます。

hostname:port

デフォルトではNULLに設定されます。

destination_name

ジョブのデータベース接続先または外部接続先。リモート・データベース・ジョブおよびリモート外部ジョブのみに使用します。ローカル・データベースで実行されているジョブまたはローカル外部ジョブ(実行可能)では、NULLに設定してください。

この属性の詳細は、表140-26を参照してください。

end_date

ジョブの期限が切れる日時を指定します(この日時を過ぎると、ジョブは実行されなくなります)。end_dateよりも後でTRUEの場合、このジョブは削除されます。auto_dropがFALSEの場合、ジョブは使用禁止になり、ジョブのSTATEがCOMPLETEDに設定されます。

end_dateに値が指定されていない場合、ジョブは無期限で繰り返されます。ただし、max_runsまたはmax_failuresが設定されている場合は、いずれかの値に達するとジョブは停止します。

end_dateの値は、start_dateの値よりも大きい必要があります。等しいか小さい場合、ジョブが使用可能になったときにエラーが発生します。

event_spec

この属性では2つの値を指定します(value引数はイベント条件を指定し、value2引数はキューの仕様を指定します)。詳細は、「CREATE_JOBプロシージャ」のevent_condition引数およびqueue_spec引数に関する説明を参照してください。

follow_default_timezone

TRUEの場合で、ジョブstart_dateがNULLのときは、default_timezone Scheduler属性を変更すると、このジョブが新しいタイムゾーンで実行されるように、Schedulerによってジョブの次の実行日時が再計算されます。

たとえば、ジョブが古いタイムゾーンの午前2時に実行するように設定されていた場合は、新しいタイムゾーンの午前2時で実行されるようになります。

ジョブstart_dateがNULLでない場合、ジョブの実行日時のタイムゾーンは、常にstart_dateのタイムゾーンで指定されます。

FALSEの場合、default_timezone Scheduler属性が変更されても、ジョブの次の開始日時は再計算されません。古いタイムゾーンが新しいタイムゾーンより3時間早い場合、古いタイムゾーンの午前2時で実行されるようにスケジュールされているジョブは、新しいタイムゾーンの午前5時に実行されます。

デフォルトのタイムゾーン名は、夏から冬への遷移によっては変更されません。

instance_id

Oracle Real Application Clusters環境でのみ有効。ジョブを実行するインスタンスを示します。

instance_stickiness

この属性は、Oracle Real Application Clusters(Oracle RAC)環境で稼働するデータベースにのみ使用します。デフォルトではTRUEに設定されます。instance_stickinessをTRUEに設定した場合、ジョブは最も軽い負荷でインスタンスの実行を開始し、この後Schedulerはジョブが最後に実行したインスタンスの実行を試みます。そのインスタンスがダウンしているか、オーバーロードされているため新しいジョブを長い間開始できない場合、別のインスタンスでそのジョブが実行されます。実行間の間隔が長い場合は、instance_stickinessは無視され、ジョブはスティッキーでないジョブとして処理されます。

instance_stickinessをFALSEに設定した場合、ジョブの各インスタンスは、最初に使用可能なインスタンスで実行されます。

Oracle RAC以外の環境ではインスタンスが1つしかないため、この属性は有用ではありません。

job_action

job_type属性に応じてジョブで実行されるアクション。たとえば、job_typeが'STORED_PROCEDURE'の場合は、job_actionにストアド・プロシージャの名前を指定します。

job_class

このジョブに関連付けるクラス。

job_priority

この属性は、このジョブと同じクラス内の他のジョブと比較して、このジョブの優先順位を指定します。1つのクラス内の複数のジョブが同時に実行されるようにスケジュールした場合、ジョブ・コーディネータがそのクラスから実行用に選択するジョブの順序はこのジョブの優先度に従って決定されます。値は1から5の範囲で、1はジョブの実行用に1番目に選択されることを表します。

ジョブの作成時にジョブの優先順位が指定されていない場合は、デフォルトの優先順位である3が割り当てられます。

job_type

このジョブのタイプ。有効な値は、'PLSQL_BLOCK'、'STORED_PROCEDURE'、'EXECUTABLE'、CHAIN'、'EXTERNAL_SCRIPT'、'SQL_SCRIPT'および'BACKUP_SCRIPT'です。

この値を設定する場合は、program_nameはNULLに設定する必要があります。

job_weight

*** Oracle Database 11gリリース2では非推奨となっています。この属性の値をデフォルトの1から変更しないでください。

パラレル実行のジョブの重み。

logging_level

この属性は、ログ情報量を指定します。次のオプションから選択可能です。

DBMS_SCHEDULER.LOGGING_OFF

(デフォルト)このジョブに対してログは実行されません。ただし、ジョブ・クラスのロギング・レベルが優先され、ジョブのログが実行される場合があります。

DBMS_SCHEDULER.LOGGING_FAILED_RUNS

Schedulerは、失敗したジョブに対してのみ失敗の理由とともにログを記録します。ジョブ・クラスのロギング・レベルの方が高い場合は、高い方のロギング・レベルが優先されます。

DBMS_SCHEDULER.LOGGING_RUNS

Schedulerは、このクラスの各ジョブのすべての実行について、詳細情報をジョブ・ログに書き込みます。ジョブ・クラスのロギング・レベルの方が高い場合は、高い方のロギング・レベルが優先されます。

DBMS_SCHEDULER.LOGGING_FULL

Schedulerは、ジョブの全実行記録に加えて、このジョブで実行されたすべての操作を記録します。これらの操作には、作成、使用可能化、使用禁止化、変更(SET_ATTRIBUTEを使用)、停止などが含まれます。

max_failures

この属性は、ジョブがスケジュール実行に連続何回失敗すると自動的に使用禁止になるかを指定します。ジョブは一度使用禁止になると、その後は実行されず、*_SCHEDULER_JOBビューでSTATEがBROKENに設定されます。

max_failuresの範囲は、1から1,000,000の整数です。デフォルトではNULLに設定されており、これは、ジョブの新しいインスタンスは、以前に失敗したインスタンス数に関係なく開始されることを示しています。

max_run_duration

この属性は、ジョブを実行できる最大時間を指定します。データ・タイプはINTERVAL DAY TO SECONDです。この属性をゼロ以外およびNULL以外の値に設定してジョブの継続時間がこの値を超えると、SchedulerではJOB_OVER_MAX_DURタイプのイベントが発生します。この場合、ジョブを続行するかどうかについては、ご使用のイベント・ハンドラで決定されます。

max_runs

この属性は、ジョブのスケジュール実行を行う最大連続回数を指定します。max_runsに達すると、ジョブは使用禁止になり、STATEはCOMPLETEDに変更されます。

max_runsの範囲は、1から1,000,000の整数です。デフォルトではNULLに設定されており、これは、無期限に繰り返されるか、またはend_dateかmax_failuresに達するまで繰り返されることを意味します。

number_of_arguments

プログラムがインラインされている場合の引数の数。この値を設定する場合は、program_nameをNULLに設定する必要があります。

parallel_instances

これは、イベント・ベースのジョブにのみ設定できるブール属性です。

FALSE(デフォルト)の場合に、イベントが発生し、そのイベントを処理するイベント・ベースのジョブがすでに実行中であると、新しいイベントは無視されます。

TRUEの場合、ジョブのインスタンスがイベントのすべてのインスタンスに対して開始され、各ジョブ・インスタンスは軽量ジョブであるため、同じイベント・ベースのジョブの複数のインスタンスをパラレルで実行できます。各軽量ジョブは、イベント・ベースのジョブ(その親ジョブ)の定義から属性(アクション、最大実行時間など)を取得します。軽量ジョブは、完了後に削除されます。イベントの複数のインスタンスを処理するために、同時に実行できる軽量ジョブの数に明示的な制限はありません。ただし、利用可能なシステム・リソースによって制限が課される場合があります。

軽量ジョブは、いずれの*_SCHEDULER_JOBSビューにも表示されません。ただし、*_SCHEDULER_RUNNING_JOBSビューには表示されます。各軽量ジョブの名前は親ジョブと同じであり、各軽量ジョブを親および兄弟と区別するためにサブ名が自動的に生成されます。

program_name

このジョブで使用するプログラム・オブジェクトの名前。この名前を設定する場合は、job_action、job_typeおよびnumber_of_argumentsをNULLに設定する必要があります。

raise_events

この属性は、ジョブの実行中にイベントを発生させる段階をSchedulerに指示します。これはビットベクトルで、次のビットをゼロ個以上セットできます。各ビットに、対応するパッケージ定数があります。

- job_started CONSTANT PLS_INTEGER := 1

- job_succeeded CONSTANT PLS_INTEGER := 2

- job_failed CONSTANT PLS_INTEGER :=4

- job_broken CONSTANT PLS_INTEGER :=8

- job_completed CONSTANT PLS_INTEGER :=16

- job_stopped CONSTANT PLS_INTEGER :=32

- job_sch_lim_reached CONSTANT PLS_INTEGER :=64

- job_disabled CONSTANT PLS_INTEGER :=128

- job_chain_stalled CONSTANT PLS_INTEGER :=256

- job_all_events CONSTANT PLS_INTEGER := 511

- job_run_completed CONSTANT PLS_INTEGER := job_succeeded + job_failed + job_stopped

これらのイベント・タイプの詳細は、表140-78を参照してください。

repeat_interval

次に実行する日時を戻すPL/SQLファンクション、またはカレンダ構文式。この値を設定する場合は、schedule_nameはNULLに設定する必要があります。詳細は、「カレンダ構文」を参照してください。

restartable

この属性は、ジョブが失敗したときに再実行できるかどうかを指定します。デフォルトでは、ジョブは再実行不可能でFALSEに設定されます。TRUEに設定されている場合は、実行中にジョブが失敗すると、ジョブは開始時点からもう一度実行されます。

チェーン・ジョブの場合、この属性をTRUEに設定すると、アプリケーションの失敗後、チェーンが最初から再開されます。この属性をFALSEに設定した場合またはデータベースでエラーが発生した場合、チェーンは、最後に実行中だったステップから再開されます。この場合、そのステップのrestart_on_recovery属性によって、ステップが再開されるか、または停止のマークが付けられるかが決定されます。(停止のマークが付けられた場合、チェーンはルールを評価して続行されます。)

この属性をTRUEに設定すると、ジョブ内でデータがコミットされた場合など一部の状況で、データの不整合が発生する可能性があることに注意してください。

エラーによる再試行は、通常の実行としてカウントされません。ジョブが成功するか、6回再試行に失敗するまで、実行数または失敗数にはカウントされません。

Schedulerでは、restartable属性を使用して、通常のアプリケーション・エラーだけでなく、データベースに異常が発生した後についても、ジョブを再試行するかどうかを決定します。Schedulerではジョブを最大6回まで再試行します。1回目は1秒間待機し、その後はこの待機時間に対して試行回ごとに10を掛けた時間を待機します。

6回の再試行にすべて失敗すると、実行数および失敗数が1つずつ加算されます。ジョブがすぐに成功するか、または再試行時に成功すると、実行数が1つ加算されます。

Schedulerでは、次の場合にジョブの再試行を停止します。

- ジョブの再試行時に成功した場合

- 6回の再試行にすべて失敗した場合

- 次回の通常のスケジュール・ジョブの実行後に、次回の再試行が発生する場合

次にスケジュールされた再試行が、繰返しジョブの次の通常のスケジュール実行時点を過ぎた後は、Schedulerはジョブを再試行しません。

schedule_limit

負荷の大きいシステムでは、ジョブはスケジュールされた時間どおりに開始しないことがあります。この属性を使用すると、ジョブ開始の遅延が指定した間隔よりも大きい場合に、Schedulerがジョブを開始しないように設定できます。この値の範囲は、1分から99日です。たとえば、ジョブの開始が昼の12時に予定されていて、スケジュール限度が60分に設定されている場合、このジョブが午後1時までに実行されなかった場合はこのジョブは実行されません。

schedule_limitを指定しない場合は、実行するためのリソースが使用可能になり次第、ジョブは後から実行されます。デフォルトでは、この属性はNULLに設定されており、これは、ジョブがスケジュールされた時間の後であればいつでもジョブを実行できることを示しています。この属性によってスキップされたスケジュール済ジョブの実行については、ジョブの実行数および失敗数からは除外されます。ジョブ・ログのエントリは、スキップされた実行を反映します。

schedule_name

このジョブのスケジュールとして使用する、スケジュール、ウィンドウまたはタイプWINDOWのグループの名前。この値が設定されている場合、end_date、start_dateおよびrepeat_intervalはすべてNULLである必要があります。

start_date

このジョブが開始した元の日時、またはジョブの開始がスケジュールされている将来の日時。この値を設定する場合は、schedule_nameはNULLに設定する必要があります。

stop_on_window_close

この属性は、ジョブのスケジュールがウィンドウまたはウィンドウ・グループである場合のみ使用されます。この属性をTRUEに設定した場合、関連付けられたウィンドウがクローズするとジョブが停止します。ジョブは、forceをFALSEに設定したstop_jobプロシージャを使用して停止します。

デフォルトでは、stop_on_window_closeはFALSEに設定されます。そのため、この属性を設定しない場合、ジョブはウィンドウがクローズした後も続行されます。

ただし、ジョブは続行できますが、ウィンドウをクローズすると通常リソース・プランも変更されるため、ジョブのリソース割当ても変更される可能性があることに注意してください。

store_output

ブール属性です。TRUEに設定された場合、ログに記録される実行ジョブについて、すべてのジョブ出力とエラー・メッセージが*_JOB_RUN_DETAILSビューに格納されます。FALSEに設定された場合、出力とメッセージは格納されません。新しいジョブについては、デフォルトでTRUEに設定されます。

次のイベント・タイプは、表140-77「ジョブの属性値」のraise_events属性に有効な値です。

表140-78 Schedulerで発生するイベントのタイプ

イベント・タイプ

説明

job_all_events

イベントではなく、すべてのイベントを簡単に有効にするための定数です。

job_broken

ジョブ属性max_failuresで定義されている失敗回数を超えたため、ジョブは使用禁止になり、状態がBROKENに変更されました。

job_chain_stalled

チェーンを実行しているジョブの状態はCHAIN_STALLEDです。実行中または実行がスケジュールされているステップがない場合にチェーンのevaluation_intervalをNULLに設定すると、実行中のチェーンは停止状態になります。手動で操作を行わないかぎり、チェーンは続行されません。

job_completed

max_runsまたはend_dateに達したため、ジョブが終了しました。

job_disabled

SchedulerまたはSET_ATTRIBUTEへのコールによってジョブが使用禁止になりました。

job_failed

エラーか異常終了が原因で、ジョブが失敗しました。

job_over_max_dur

ジョブは、max_run_duration属性で指定した最大実行時間を超えました。(注意: このイベントをraise_eventsジョブ属性で有効にする必要はありません。常に有効になっています)。

job_run_completed

ジョブの実行が、失敗、成功または停止しました。

job_sch_lim_reached

ジョブのスケジュール限度に達しました。ジョブ開始の遅延時間がジョブ属性schedule_limitの値を超えたため、ジョブは開始されませんでした。

job_started

ジョブが開始しました。

job_stopped

STOP_JOBへのコールによって、ジョブが停止されました。

job_succeeded

ジョブが正常に完了しました。

プログラムの属性値

表140-79に、プログラムの属性値の一覧を示します。

注意:
この表に示す属性の詳細は、「CREATE_PROGRAMプロシージャ」を参照してください。

表140-79 プログラムの属性値

名前

説明

comments

コメント(オプション)。プログラムの実行内容や、使用目的の詳細を説明します。

detached

TRUEの場合、プログラムは連結解除されたプログラムです。連結解除されたジョブおよびプログラムの詳細は、『Oracle Database管理者ガイド』を参照してください。

number_of_arguments

プログラムによって起動されるストアド・プロシージャなどの実行可能ファイルに必要な引数の数。

program_action

program_type属性で示される、プログラムで実行されるアクション。たとえば、program_typeが'STORED_PROCEDURE'の場合は、program_actionにストアド・プロシージャの名前を指定します。

program_type

プログラムのタイプ。プログラム・タイプには'PLSQL_BLOCK'、'STORED_PROCEDURE'および'EXECUTABLE'がサポートされており、このいずれかを設定する必要があります。

スケジュールの属性値

表140-80に、スケジュールの属性値の一覧を示します。

注意:
この表に示す属性の詳細は、「CREATE_SCHEDULEプロシージャ」を参照してください。

表140-80 スケジュールの属性値

名前

説明

comments

コメント(オプション)。

end_date

スケジュールが指定される最終日時。

event_spec

この属性では2つの値を指定します(value引数はイベント条件を指定し、value2引数はキューの仕様を指定します)。詳細は、「CREATE_JOBプロシージャ」へのevent_condition引数およびqueue_spec引数に関する説明を参照してください。

repeat_interval

カレンダ構文を使用して、スケジュールを繰り返す間隔を指定する属性。詳細は、「カレンダ構文」を参照してください。

start_date

カレンダ構文が使用する開始日時または参照日時。

File Watcherの属性値

表140-81に、File Watcherの属性値の一覧を示します。

表140-81 File Watcherの属性値

パラメータ

説明

destination

ファイルの到着が想定されるリモート・ホスト名またはIPアドレス。NULLの場合、接続先はローカル・ホストです。

directory_path

ファイルの到着が指定されているディレクトリ。パスの先頭にある単一のワイルドカード'?'は、Oracleホームのパスを示します。たとえば、'?/rdbms/log'は、Oracleホーム・ディレクトリのrdbms/logサブディレクトリを示します。

file_name

検索するファイル名。2つのワイルドカードがファイル名の任意の場所で許可され、'?'は任意の1文字を示し、'*'はゼロ以上の文字を示します。この属性にNULLは指定できません。

credential_name

有効な資格証明オブジェクトの名前。File Watcherでは、ホスト・オペレーティング・システムに対する認証を行い監視対象ファイルにアクセスするために、資格証明が使用されます。File Watcherの所有者は、資格証明でEXECUTE権限を持つ必要があります。NULL以外にしてください。

min_file_size

File Watcherがファイルを見つけたとみなす前のファイルの最小サイズ(バイト単位)。デフォルトは0(ゼロ)です。

steady_state_duration

File Watcherがファイルを見つけたとみなす前にファイルが変化せずに留まっている必要がある最小間隔。NULLに設定すると、内部の値が使用されます。この属性の下限値は10秒です。

comments

オプションのコメント。

ジョブ・クラスの属性値

表140-82に、ジョブ・クラスの属性値の一覧を示します。

注意:
この表に示す属性の詳細は、「CREATE_JOB_CLASSプロシージャ」を参照してください。

表140-82 ジョブ・クラスの属性値

名前

説明

comments

クラスについてのコメントを指定します(オプション)。

log_history

この属性は、このクラスのジョブに対するジョブ・ログ・エントリが保持される日数を制御します。これによって、ジョブ・ログが無制限に大きくなることを避けることができます。

有効値の範囲は、0から1000000です。0に設定すると、履歴は保持されません。NULLの場合、Scheduler属性のlog_history(SET_SCHEDULER_ATTRIBUTEで設定可能)によって、保持する日数が設定されます。

logging_level

この属性は、ログ情報量を指定します。有効な値は、次のとおりです。

- DBMS_SCHEDULER.LOGGING_OFF
このクラスのどのジョブに対してもログは実行されません。

- DBMS_SCHEDULER.LOGGING_FAILED_RUNS
Schedulerは、クラス内の失敗したジョブに対してのみ失敗した理由とともにログを記録します。

- DBMS_SCHEDULER.LOGGING_RUNS
Schedulerは、このクラスの各ジョブのすべての実行について、詳細情報をジョブ・ログに書き込みます。これがデフォルトです。

- DBMS_SCHEDULER.LOGGING_FULL
Schedulerは、ジョブの全実行記録に加えて、このクラスのすべてのジョブで実行されたすべての操作を記録します。ジョブが作成、使用可能化、使用禁止化、変更(SET_ATTRIBUTEを使用)、停止されるたびに、ログにエントリが記録されます。

resource_consumer_group

クラスに関連付けるリソース・コンシューマ・グループ。クラス内のすべてのジョブがこのリソース・コンシューマ・グループの下で実行されます。リソース・コンシューマ・グループおよびデータベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。

service

このジョブ・クラス内のジョブが親和性を持つデータベース・サービス。サービスがリソース・コンシューマ・グループにマップされている場合にジョブ・クラスにresource_consumer_group属性とservice属性の両方を指定すると、resource_consumer_group属性の方が優先されます。

ウィンドウの属性値

表140-83に、ウィンドウの属性値の一覧を示します。

注意:
この表に示す属性の詳細は、「CREATE_WINDOWプロシージャ」を参照してください。

表140-83 ウィンドウの属性値

名前

説明

comments

ウィンドウについてのコメント(オプション)。

duration

ウィンドウの継続時間。

end_date

ウィンドウを最後にオープンする日付。この値を設定する場合は、schedule_nameはNULLに設定する必要があります。

repeat_interval

カレンダ構文を使用して、スケジュールを繰り返す間隔を指定する属性。PL/SQL日付ファンクションは使用できません。この値を設定する場合は、schedule_nameはNULLに設定する必要があります。詳細は、「カレンダ構文」を参照してください。

resource_plan

ウィンドウに関連付けるリソース・プラン。ウィンドウがオープンすると、このリソース・プランに自動的に切り替わります。ウィンドウがクローズすると、元のリソース・プランがリストアされます。リソース・プランがforceオプションでアクティブに指定されている場合は、リソース・プランは切り替えられません。

1つのウィンドウに関連付けられるのは、1つのリソース・プランのみです。NULLまたは空文字列("")が可能です。これがNULLの場合、ウィンドウのオープン時に有効だったリソース・プランが、ウィンドウの継続時間中もそのまま有効になります。これが空文字列の場合、ウィンドウの継続時間中、リソース・マネージャは無効になります。

schedule_name

このウィンドウで使用するスケジュールの名前。この値が設定されている場合、start_date、end_dateおよびrepeat_intervalはすべてNULLである必要があります。

start_date

このウィンドウのオープンがスケジュールされている次の日時。この値を設定する場合は、schedule_nameはNULLに設定する必要があります。

window_priority

ウィンドウの優先順位。LOW'(デフォルト)または'HIGH'のいずれかである必要があります。

チェーンの属性値

表140-84に、チェーンの属性値の一覧を示します。

注意:
この表に示す属性の詳細は、「CREATE_CHAINプロシージャ」を参照してください。

表140-84 チェーンの属性値

名前

説明

comments

チェーンの目的を説明するコメント(オプション)。

evaluation_interval

NULL以外に設定すると、チェーンの評価が通常のタイミング(ジョブの開始時、ステップの終了時、またはイベント・ステップに関連付けられているイベントの着信時)に加えて、この間隔でも行われます。

追加の間隔ではCPUが集中的に使用されるため、この属性は、チェーンのルールにSQL構文が使用され、Schedulerで制御されていない要素がルール条件に含まれている場合にのみ使用する必要があります。ほとんどのチェーンの場合は、通常の評価タイミングで十分です。

rule_set_name

通常、ルール・セットは渡す必要がありません。ルール・セットおよび関連する空の評価コンテキストは、Schedulerによって自動的に作成されます。その後、ユーザーは、DEFINE_CHAIN_RULEを使用してルールを追加したり、DROP_CHAIN_RULEを使用してルールを削除できます。

十分な知識を持つユーザーは、チェーン依存性を表すルール・セットを作成し、ここで渡すことができます。これによって、より柔軟にルールを定義できます。たとえば、条件によって外部変数を参照したり、評価コンテキストによって表を公開することができます。ルール・セットを渡す場合は、それがチェーン・ルール・セットの形式であることを確認する必要があります。(たとえば、すべてのステップは、評価コンテキストに変数として示されている必要があります)。ルール・セットを渡さない場合、ルール・セットはSCHED_RULESET${N}の形式で作成され、評価コンテキストはSCHED_EVCTX${N}の形式で作成されます。

ルールおよびルール・セットの詳細は、『Oracle Streams概要および管理』を参照してください。

データベース接続先の属性値

表140-85に、データベース接続先の属性値の一覧を示します。

注意:
この表に示す属性の詳細は、「CREATE_DATABASE_DESTINATIONプロシージャ」を参照してください。

表140-85 データベース接続先の属性値

名前

説明

agent

リモート・データベースに接続するために使用される外部接続先(エージェント接続先とも呼ばれる)の名前。

有効な外部接続先の名前はビューALL_SCHEDULER_EXTERNAL_DESTSから取得できます。

connect_info

接続先のリモート・データベースを識別するTNS接続記述子、または接続記述子に解決されるtnsnames.oraのネット・サービス名(別名)。

注意: これは、CREATE_DATABASE_DESTINATIONのtns_name引数に対応します。

enabled

TRUEの場合、データベース接続先が有効です。

comments

データベース接続先についてのコメント(オプション)。

外部接続先の属性値

表140-86に、外部接続先の属性値の一覧を示します。

注意:
外部接続先は、リモートSchedulerエージェントをローカル・データベースに登録することにより、暗黙的にのみ作成されます。

表140-86 外部接続先の属性値

名前

説明

hostname

(GET_ATTRIBUTEのみ)完全修飾されたホスト名(ドメインを含む)またはSchedulerエージェントが存在するコンピュータのIPアドレス。

port

(GET_ATTRIBUTEのみ)エージェントがリスニングするTCPポート番号。

ip_address

(GET_ATTRIBUTEのみ)エージェントが存在するホストのIPアドレス。

enabled

TRUEの場合、外部接続先が有効です。

comments

外部接続先についてのコメント(オプション)。

グループの属性値

表140-87に、グループの属性値の一覧を示します。

注意:
この表に示す属性の詳細は、「CREATE_GROUPプロシージャ」を参照してください。

表140-87 グループの属性値

名前

説明

group_type

(GET_ATTRIBUTEのみ)グループ・タイプ(WINDOW、DB_DESTまたはEXTERNAL_DEST)。

member_name

メンバーのカンマ区切りリスト。既存のメンバーのリストに置き換えます。既存のリストに1つ以上のメンバーを追加するには、ADD_GROUP_MEMBERを使用します。

注意: この属性は、CREATE_GROUPのmember引数に対応します。

enabled

TRUEの場合、グループが有効です。

comments

グループについてのコメント(オプション)。

number_of_members

(GET_ATTRIBUTEのみ)グループ内のメンバーの数。

資格証明の属性値

表140-88に、資格証明の属性値の一覧を示します。

注意:
SET_ATTRIBUTEおよびGET_ATTRIBUTEプロシージャの資格証明属性値は、Oracle Databaseリリース12cリリース1 (12.1)では推奨されていません。このパッケージでは、下位互換性を維持する目的で、これらの属性値を使用できますが、かわりにDBMS_CREDENTIALパッケージで提供される拡張機能、具体的にはUPDATE_CREDENTIALプロシージャのattributeパラメータを使用することをお薦めします。

表140-88 資格証明の属性値

名前

説明

username

ホスト・オペレーティング・システムまたはリモートOracle Databaseにログインするためのユーザー名。最大長は64です。

password

ユーザー名のパスワード。最大長は128です。

comments

資格証明の説明。最大長は240です。

windows_domain

Windowsリモート実行可能ファイルがターゲットの場合は、指定したユーザーが属するドメイン。最大長は64です。

database_role

database_role属性の値は、リモート・データベース・ジョブを実行するために、リモート・データベースへのログインに対するシステム権限として使用されます。

有効な値はSYSDBAおよびSYSOPERです。

SET_ATTRIBUTE_NULLプロシージャ

このプロシージャは、オブジェクトの属性をNULLに設定します。設定可能な属性は、変更するオブジェクトによって異なります。このオブジェクトが使用可能な場合は、まずオブジェクトを使用禁止にしてから変更し、その後もう一度使用可能にします。オブジェクトを再度使用可能にできない場合、エラーが生成され、オブジェクトのステータスは使用禁止のままです。

構文

DBMS_SCHEDULER.SET_ATTRIBUTE_NULL (
name              IN VARCHAR2,
attribute         IN VARCHAR2);

パラメータ

表140-89 SET_ATTRIBUTE_NULLプロシージャのパラメータ

パラメータ

説明

name

オブジェクトの名前。

attribute

変更する属性。

使用上の注意

ウィンドウ、タイプWINDOWのグループまたはジョブ・クラスでSET_ATTRIBUTE_NULLを実行するには、MANAGE SCHEDULER権限が必要です。この権限のない場合は、変更対象のオブジェクトの所有者であるか、そのオブジェクトのALTER権限があるか、またはCREATE ANY JOB権限を持っている必要があります。

SET_JOB_ANYDATA_VALUEプロシージャ

このプロシージャは、AnyDataオブジェクト内でカプセル化された、ジョブの関連プログラムの引数に値を設定します。これは、プログラム引数に設定されたすべてのデフォルト値に優先されます。プログラム引数には、NULLが有効な引数となります。引数は、位置または名前によって指定できます。次の場合は、名前による指定のみが可能です。

- 保存されたプログラム・オブジェクトをジョブが指定している場合

- DEFINE_ANYDATA_ARGUMENTプロシージャで引数に名前が割り当てられた場合

Schedulerでは、引数のタイプ・チェックを一切行いません。

SET_JOB_ANYDATA_VALUEはオーバーロードされています。

構文

位置を使用してプログラム引数を設定する場合:

DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUE (
job_name                IN VARCHAR2,
argument_position       IN PLS_INTEGER,
argument_value          IN SYS.ANYDATA);

名前を使用してプログラム引数を設定する場合:

DBMS_SCHEDULER.SET_JOB_ANYDATA_VALUE (
job_name                IN VARCHAR2,
argument_name           IN VARCHAR2,
argument_value          IN SYS.ANYDATA);

パラメータ

表140-90 SET_JOB_ANYDATA_VALUEプロシージャのパラメータ

パラメータ

説明

job_name

変更するジョブの名前。

argument_name

設定するプログラム引数の名前。

argument_position

設定するプログラム引数の位置。

argument_value

AnyDataオブジェクト内でカプセル化されたプログラム引数に割り当てられる新しい値。

使用上の注意

SET_JOB_ANYDATA_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数値を設定できます。

軽量ジョブではAnyData引数を取ることができないため、SET_JOB_ANYDATA_VALUEは軽量ジョブには適用されません。

関連項目:

- 「SET_JOB_ARGUMENT_VALUEプロシージャ」

- 「DEFINE_ANYDATA_ARGUMENTプロシージャ」

SET_JOB_ARGUMENT_VALUEプロシージャ

このプロシージャは、ジョブの引数に値を設定します。

対応するプログラムまたはストアド・プロシージャ引数に設定されたデフォルト値よりも優先されます。引数は、位置または名前によって指定できます。次の場合は、名前による指定のみが可能です。

- 保存されたプログラム・オブジェクトをジョブが指定している場合

- DEFINE_PROGRAM_ARGUMENTプロシージャまたはDEFINE_METADATA_ARGUMENTプロシージャで引数に名前が割り当てられた場合

Schedulerでは、引数のタイプ・チェックを一切行いません。

SET_JOB_ARGUMENT_VALUEはオーバーロードされています。

構文

位置を使用して引数値を設定する場合:

DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name                IN VARCHAR2,
argument_position       IN PLS_INTEGER,
argument_value          IN VARCHAR2);

名前を使用して引数値を設定する場合:

DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name                IN VARCHAR2,
argument_name           IN VARCHAR2,
argument_value          IN VARCHAR2);

パラメータ

表140-91 SET_JOB_ARGUMENT_VALUEプロシージャのパラメータ

パラメータ

説明

job_name

変更するジョブの名前。

argument_name

設定するプログラム引数の名前。

argument_position

設定するプログラム引数の位置。

argument_value

プログラム引数に設定する新しい値。VARCHAR以外の値を設定するには、SET_JOB_ANYDATA_VALUEプロシージャを使用します。

使用上の注意

SET_JOB_ARGUMENT_VALUEを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限を持っている場合も、ジョブの引数値を設定できます。

SET_JOB_ARGUMENT_VALUEでは、SQLタイプの引数のみがサポートされます。したがって、SQLタイプではない引数の値(ブール値など)は、プログラムまたはジョブ引数としてサポートされません。

SET_JOB_ARGUMENT_VALUEは軽量ジョブの引数の設定に使用できます。ただし、その引数がVARCHAR2タイプの場合のみです。

関連項目:

- 「SET_JOB_ANYDATA_VALUEプロシージャ」

- 「DEFINE_PROGRAM_ARGUMENTプロシージャ」

SET_JOB_ATTRIBUTESプロシージャ

このプロシージャは、ジョブの属性を変更します。

構文

DBMS_SCHEDULER.SET_JOB_ATTRIBUTES (
jobattr_array     IN JOBATTR_ARRAY,
commit_semantics  IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表140-92 SET_JOB_ATTRIBUTESプロシージャのパラメータ

パラメータ

説明

jobattr_array

ジョブ属性変更の配列。

commit_semantics

コミット・セマンティクス。次のタイプがサポートされています。

- STOP_ON_FIRST_ERROR: 最初にエラーが発生した時点で戻され、このエラーが発生する前に正常に実行された属性変更をディスクにコミットします。これがデフォルトです。

- TRANSACTIONALは、最初にエラーが発生した時点で戻され、このエラーが発生する前に実行されたすべての操作をロールバックします。

- ABSORB_ERRORSは、エラーを吸収してリスト内のジョブの属性変更の残りを完了することを試行します。正常に実行されたすべての変更をコミットします。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。

使用上の注意

使用可能になっているジョブに対してSET_ATTRIBUTEをコールすると、ジョブが使用禁止となり、属性値が変更され、ジョブが再度使用可能になります。SET_JOB_ATTRIBUTESは、1つのトランザクションのコンテキストで属性値を変更します。

SET_RESOURCE_CONSTRAINTプロシージャ

このプロシージャを使用すると、ユーザーはジョブによって使用されるリソースを指定できます。

構文

DBMS_SCHEDULER.SET_RESOURCE_CONSTRAINT (
object_name       IN VARCHAR2,
resource_name     IN VARCHAR2,
units             IN NUMBER DEFAULT 1);

パラメータ

表140-93 SET_RESOURCE_CONSTRAINTプロシージャのパラメータ

パラメータ

説明

object_name

プログラムやジョブの名前、またはこれらのオブジェクトのカンマ区切りリスト。

resource_name

リソースの名前。

units

ジョブやプログラムが使用する、このリソースのユニット数。

使用上の注意

unitsが0に設定された場合、プログラムやジョブはこのリソースを使用しなくなり、結果として生じる制約が削除されます。以前に制約がなかったリソースのunitsを0に設定すると、エラーが発生します。

同一のリソースに複数の制約を定義する場合、オブジェクト・タイプが一致している必要があります。リソースに適用される1つ以上の既存の制約がジョブに基づいており、プログラムに基づく新しい制約が同一のリソースに追加される場合(またはその逆の場合)、エラーが発生します。

SET_SCHEDULER_ATTRIBUTEプロシージャ

このプロシージャは、Scheduler属性の値を設定します。これはすぐに有効になりますが、影響を受ける属性によっては、結果として生じる変更をすぐに確認できない場合があります。

SET_SCHEDULER_ATTRIBUTEプロシージャの短い属性の説明は、表140-94に記載されています。詳細は、『Oracle Database管理者ガイド』のSchedulerのプリファレンスの設定に関する項を参照してください。

構文

DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE (
attribute      IN VARCHAR2,
value          IN VARCHAR2);

パラメータ

表140-94 SET_SCHEDULER_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

attribute

Scheduler属性の名前。有効な値は、次のとおりです。

- 'default_timezone': start_dateが指定されていない場合、カレンダ構文式を使用する繰返しジョブおよびウィンドウはこの属性からタイム・ゾーンを取得します。詳細は、「カレンダ構文」を参照してください。

- 'email_server': ジョブの状態イベントの電子メール通知を送信するためにSchedulerが使用するSMTPサーバー・アドレス。この属性がNULLの場合、電子メール通知は送信できません。

- 'email_sender': ジョブの状態を電子メール通知する送信者のデフォルト電子メール・アドレス。

- 'email_server_credential': SYSが実行オブジェクト権限を持っている既存の資格証明オブジェクトのスキーマおよび名前。デフォルトはNULLです。この資格証明に格納されているユーザー名およびパスワードを使用して、電子メール通知の送信時に電子メール・サーバーの認証を受けることができます。

- 'email_server_encryption': この属性は、この電子メール・サーバー接続で暗号化を有効にするかどうかを示し、有効にする場合、暗号化を開始するポイントと使用するプロトコルも示します。値は次のとおりです。

- NONE: デフォルト値で、暗号化を使用しないことを示します。

- SSL_TLS: 接続の最初からSSLまたはTLSを使用することを示します。

- STARTTLS: 暗号化を使用せずに接続を開始しますが、電子メール・サーバーにコマンドSTARTTLSを送信して暗号化を開始することを示します。

- 'event_expiry_time': Schedulerで生成されたジョブの状態イベントがSchedulerイベント・キューで有効期間が終了するまでの時間(秒)。NULLに設定すると、ジョブの状態イベントは24時間後に期限切れになります。

- 'log_history': ジョブ・ログとウィンドウ・ログの両方のログ・エントリが保持される日数。デフォルトは30で、有効値の範囲は、0から1000000です。

- 'max_job_slave_processes': このScheduler属性は使用されません。

value

属性の新しい値。

使用上の注意

SET_SCHEDULER_ATTRIBUTEを実行するには、MANAGE SCHEDULER権限が必要です。

関連項目:
Scheduler属性の詳細は、『Oracle Database管理者ガイド』を参照してください。

STOP_JOBプロシージャ

このプロシージャは、現在実行中のジョブ、またはジョブ・クラス内のすべてのジョブを停止します。ジョブの停止後、1回かぎりのジョブのSTATEはSTOPPEDに設定され、繰返しジョブのSTATEは、ジョブの次の実行がスケジュールされているかどうかによって、SCHEDULEDまたはCOMPLETEDに設定されます。

チェーンを指定しているジョブが停止すると、実行中のチェーンの実行中のすべてのステップが停止します。

ジョブに複数の接続先がある場合、データベースはすべての接続先でジョブを停止しようとします。

外部ジョブの場合、STOP_JOBはジョブ・アクションによって直接起動された外部プロセスのみを停止します。外部ジョブの子プロセスは停止しません。

構文

DBMS_SCHEDULER.STOP_JOB (
job_name         IN VARCHAR2
force            IN BOOLEAN DEFAULT FALSE
commit_semantics IN VARCHAR2 DEFAULT 'STOP_ON_FIRST_ERROR');

パラメータ

表140-95 STOP_JOBプロシージャのパラメータ

パラメータ

説明

job_name

停止するジョブの名前。ジョブのカンマ区切りリストを使用でき、各エントリは次のいずれかになります。

- ジョブ名: 既存のジョブの名前で、オプションでスキーマ名およびドット区切りが接頭辞として付加されます。

- ジョブ接続先ID: ジョブ、資格証明および接続先の一意の組合せを表す*_SCHEDULER_JOB_DESTSビューのJOB_DEST_ID列から取得する番号。

- ジョブ・クラス: ジョブ・クラスの名前。SYSスキーマ名およびドット区切りを接頭辞として付加する必要があります。

ジョブ・クラスを指定すると、このジョブ・クラスに所属するすべてのジョブは停止されます。接続先グループをdestination_name属性として作成されたジョブを指定すると、すべての接続先のすべてのジョブ・インスタンスが停止します。

force

forceをFALSEに設定した場合、Schedulerは割込み機能を使用してジョブの停止を試みます。この方法では制御をスレーブ・プロセスに戻して、停止するジョブ・キュー内のジョブのステータスをこのプロセスで更新できます。更新に失敗した場合は、エラーが戻されます。

forceをTRUEに設定した場合、Schedulerはただちにジョブ・スレーブを終了します。Oracleでは、forceをFALSEに設定したSTOP_JOBプロシージャに失敗した場合のみ、forceをTRUEに設定してSTOP_JOBプロシージャを使用することをお薦めします。

forceオプションを使用するには、MANAGE SCHEDULERシステム権限が必要です。

commit_semantics

コミット・セマンティクス。次の2つのタイプがサポートされています。

- STOP_ON_FIRST_ERROR: このプロシージャは、最初にエラーが発生した時点で戻され、このエラーが発生する前に正常に実行された停止操作をディスクにコミットします。これがデフォルトです。

- ABSORB_ERRORS: このプロシージャは、エラーを吸収して残りのジョブの停止を試行し、正常に実行されたすべての停止操作をコミットします。このタイプは、job_nameリストでジョブ・クラスが指定されない場合のみ使用できます。エラーが発生した場合、詳細はビューSCHEDULER_BATCH_ERRORSを問い合せることができます。

使用上の注意

forceオプションを使用せずにSTOP_JOBを使用するには、そのジョブの所有者であるか、またはそのジョブのALTER権限を持っている必要があります。CREATE ANY JOB権限またはMANAGE SCHEDULER権限を持っている場合も、ジョブを停止できます。

forceオプションを使用してSTOP_JOBを使用するには、MANAGE SCHEDULER権限を持っている必要があります。

例

次にSTOP_JOBの使用例を示します。

BEGIN
DBMS_SCHEDULER.STOP_JOB('DSS.ETLJOB, 984, 1223, SYS.ETL_JOBCLASS');
END;

141 DBMS_SERVER_ALERT

DBMS_SERVER_ALERTパッケージを使用すると、特定のサーバーのメトリックがしきい値を超えた場合にアラートを発行するようにOracle Databaseサーバーを構成できます。大量の事前定義済メトリックに対して、警告のしきい値およびクリティカルのしきい値を設定できます。

警告のしきい値に達すると、重大度レベル5のアラートが生成されます。クリティカルのしきい値に達すると、重大度レベル1のアラートが生成されます。

この章では、次の項目について説明します。

- DBMS_SERVER_ALERTの使用方法

- セキュリティ・モデル

- オブジェクト・タイプ

- 関係演算子

- サポートされるメトリック

- DBMS_SERVER_ALERTサブプログラムの要約

DBMS_SERVER_ALERTの使用方法

この項では、DBMS_SERVER_ALERTパッケージの使用に関連する項目について説明します。次の項目では、パッケージのプロシージャで使用される定数を定義しています。

- セキュリティ・モデル

- オブジェクト・タイプ

- 関係演算子

- サポートされるメトリック

セキュリティ・モデル

DBMS_SERVER_ALERTパッケージを使用するには、ユーザーにDBAロールまたはIMP_FULL_DATABASEロールが必要です。

オブジェクト・タイプ

次のオブジェクト・タイプに対するメトリックを、オブジェクトごとに限定します。

表141-1 定数として定義するオブジェクト・タイプ

定数

説明

OBJECT_TYPE_SYSTEM

各インスタンスについてシステム・レベルで収集されるメトリック。

OBJECT_TYPE_FILE

ファイル・レベルで収集されるメトリック。AVG_FILE_READ_TIMEメトリックおよびAVG_FILE_WRITE_TIMEメトリックに使用します。

OBJECT_TYPE_SERVICE

サービス・レベルで収集されるメトリック。現在は、ELAPSED_TIME_PER_CALLおよびCPU_TIME_PER_CALLが収集されます。

OBJECT_TYPE_TABLESPACE

表領域レベルで収集されるメトリック。

注意: ディクショナリ管理の表領域はサポートされていません。

OBJECT_TYPE_EVENT_CLASS

待機イベント・クラス・レベルで収集されるメトリック。現在サポートされているメトリックは、AVG_USERS_WAITINGおよびDB_TIME_WAITINGです。

OBJECT_TYPE_SESSION

セッション・レベルで収集されるメトリック。現在は、BLOCKED_USERSのみが収集されます。しきい値はインスタンス・レベルにのみ設定できます(すなわち、このタイプのメトリックにしきい値を設定する際には、オブジェクト名を指定できません)。

OBJECT_TYPE_WRCLIENT

リプレイ・クライアントのパフォーマンスを監視するために、リプレイ時に使用されるメトリックのグループ(WCR_...)を参照します。

関係演算子

関係比較演算子を指定して、任意のメトリックの値がしきい値の設定範囲を超えていないかどうかを決定できます。サーバーでは次の演算子がサポートされます。

表141-2 定数として定義する関係演算子

定数

説明

OPERATOR_CONTAINS

メトリック値がしきい値のリストのエントリと一致する場合は、エラーとみなされます。

OPERATOR_DO_NOT_CHECK

メトリック値はしきい値と比較されず、アラートは生成されません。この演算子は、メトリックに対するアラートを無効にする場合に使用します。

OPERATOR_EQ

しきい値と等しいメトリック値はエラーとみなされます。

OPERATOR_GE

しきい値以上のメトリック値はエラーとみなされます。

OPERATOR_GT

しきい値を超えるメトリック値はエラーとみなされます。

OPERATOR_LE

しきい値以下のメトリック値はエラーとみなされます。

OPERATOR_LT

しきい値未満のメトリック値はエラーとみなされます。

OPERATOR_NE

しきい値と等しくないメトリック値はエラーとみなされます。

サポートされるメトリック

次のメトリックがサポートされます。メトリックのすべての内部名は、パッケージの定数として提供されます。

表141-3 サポートされるメトリックのリスト

メトリック名(内部)

メトリック名(外部)

単位

AVG_FILE_READ_TIME

ファイル読取り平均時間

マイクロ秒

AVG_FILE_WRITE_TIME

ファイル書込み平均時間

マイクロ秒

AVG_USERS_WAITING

待機イベント・クラスの待機中ユーザーの平均数

セッション数

BLOCKED_USERS

一部のセッションによってブロックされたユーザーの数

ユーザー数

BRANCH_NODE_SPLITS_SEC

ブランチ・ノード分割(毎秒)

分割数/秒

BRANCH_NODE_SPLITS_TXN

ブランチ・ノード分割(トランザクション単位)

分割数/トランザクション

BUFFER_CACHE_HIT

バッファ・キャッシュ・ヒット(%)

キャッシュ・アクセスに占めるパーセント

CLUSTER_MSG_WAIT_SCT

クラスタ・メッセージ待機(セッション数)

セッション数

CLUSTER_MSG_WAIT_TIME

クラスタ・メッセージ待機(時間)

マイクロ秒

CONSISTENT_CHANGES_SEC

整合性のある変更(毎秒)

変更数/秒

CONSISTENT_CHANGES_TXN

整合性のある変更(トランザクション単位)

変更数/トランザクション

CONSISTENT_GETS_SEC

整合性のある取得(毎秒)

取得数/秒

CONSISTENT_GETS_TXN

整合性のある取得(トランザクション単位)

取得数/トランザクション

CONTENTION_WAIT_SCT

内部競合待機(セッション数)

セッション数

CONTENTION_WAIT_TIME

内部競合待機(時間)

マイクロ秒

CPU_TIME_PER_CALL

各サービスのユーザー・コールごとのCPUタイム

マイクロ秒/コール

CR_BLOCKS_CREATED_SEC

作成済CRブロック(毎秒)

ブロック数/秒

CR_BLOCKS_CREATED_TXN

作成済CRブロック(トランザクション単位)

ブロック数/トランザクション

CR_RECORDS_APPLIED_SEC

適用済CR UNDOレコード(毎秒)

レコード数/秒

CR_RECORDS_APPLIED_TXN

適用済CR UNDOレコード(トランザクション単位)

レコード数/トランザクション

CURSOR_CACHE_HIT

カーソル・キャッシュ・ヒット(%)

全解析に占めるパーセント

DATABASE_WAIT_TIME

データベース待機時間(%)

全データベース時間に占めるパーセント

DATABASE_CPU_TIME

データベースCPUタイム(%)

全データベース時間に占めるパーセント

DATA_DICT_HIT

データ・ディクショナリ・ヒット(%)

ディクショナリ・アクセスに占めるパーセント

DATA_DICT_MISS

データ・ディクショナリ・ミス(%)

ディクショナリ・アクセスに占めるパーセント

DB_BLKGETS_SEC

DBブロック取得(毎秒)

取得数/秒

DB_BLKGETS_TXN

DBブロック取得(トランザクション単位)

取得数/トランザクション

DB_TIME_WAITING

待機イベント・クラスで待機中に消費したデータベース時間のパーセント

データベース時間に占めるパーセント

DBR_IO_LIMIT_WAIT_SCT

リソース・マネージャI/O制限待機(セッション数)

セッション数

DBR_IO_LIMIT_WAIT_TIME

リソース・マネージャI/O制限待機(時間)

マイクロ秒

DBR_CPU_LIMIT_WAIT_SCT

リソース・マネージャCPU制限待機(セッション数)

セッション数

DBR_CPU_LIMIT_WAIT_TIME

リソース・マネージャCPU制限待機(時間)

マイクロ秒

DBR_USR_LIMIT_WAIT_SCT

リソース・マネージャ・ユーザー制限待機(セッション数)

セッション数

DBR_USR_LIMIT_WAIT_TIME

リソース・マネージャ・ユーザー制限待機(時間)

マイクロ秒

DBWR_CKPT_SEC

DBWRチェックポイント(毎秒)

チェックポイント数/秒

DISK_IO

ディスクI/O

ミリ秒

DISK_IO_WAIT_SCT

ディスクI/O待機(セッション数)

セッション数

DISK_SORT_SEC

ディスクのソート(毎秒)

ソート数/秒

DISK_SORT_TXN

ディスクのソート(トランザクション単位)

ソート数/トランザクション

ELAPSED_TIME_PER_CALL

各サービスのユーザー・コールごとの経過時間

マイクロ秒/コール

ENQUEUE_DEADLOCKS_SEC

エンキュー・デッドロック(毎秒)

デッドロック数/秒

ENQUEUE_DEADLOCKS_TXN

エンキュー・デッドロック(トランザクション単位)

デッドロック数/トランザクション

ENQUEUE_REQUESTS_SEC

エンキュー要求(毎秒)

要求数/秒

ENQUEUE_REQUESTS_TXN

エンキュー要求(トランザクション単位)

要求数/トランザクション

ENQUEUE_TIMEOUTS_SEC

エンキュー・タイムアウト(毎秒)

タイムアウト数/秒

ENQUEUE_TIMEOUTS_TXN

エンキュー・タイムアウト(トランザクション単位)

タイムアウト数/トランザクション

ENQUEUE_WAITS_SEC

エンキュー待機(毎秒)

待機数/秒

ENQUEUE_WAITS_TXN

エンキュー待機(トランザクション単位)

待機数/トランザクション

EXECUTE_WITHOUT_PARSE

解析なしの実行

全実行に占めるパーセント

FULL_INDEX_SCANS_SEC

高速全索引スキャン(毎秒)

スキャン数/秒

FULL_INDEX_SCANS_TXN

高速全索引スキャン(トランザクション単位)

スキャン数/トランザクション

GC_AVG_CR_GET_TIME

グローバル・キャッシュCR要求

ミリ秒

GC_AVG_CUR_GET_TIME

グローバル・キャッシュ現行要求

ミリ秒

GC_BLOCKS_CORRUPT

グローバル・キャッシュ・ブロック破損

ブロック数

GC_BLOCKS_LOST

グローバル・キャッシュ・ブロック消失

ブロック数

HARD_PARSES_SEC

ハード解析(毎秒)

解析数/秒

HARD_PARSES_TXN

ハード解析(トランザクション単位)

解析数/トランザクション

LEAF_NODE_SPLITS_SEC

リーフ・ノード分割(毎秒)

分割数/秒

LEAF_NODE_SPLITS_TXN

リーフ・ノード分割(トランザクション単位)

分割数/トランザクション

LIBRARY_CACHE_HIT

ライブラリ・キャッシュ・ヒット(%)

キャッシュ・アクセスに占めるパーセント

LIBRARY_CACHE_MISS

ライブラリ・キャッシュ・ミス(%)

キャッシュ・アクセスに占めるパーセント

LOG_SWITCH_SEC

バックグラウンド・チェックポイント(毎秒)

チェックポイント数/秒

LOGONS_CURRENT

現在のログオン数

ログオン数

LOGONS_SEC

累積ログオン(毎秒)

ログオン回数/秒

LOGONS_TXN

累積ログオン(トランザクション単位)

ログオン数/トランザクション

LONG_TABLE_SCANS_SEC

全表スキャン(毎秒)

スキャン数/秒

LONG_TABLE_SCANS_TXN

全表スキャン(トランザクション単位)

スキャン数/トランザクション

OPEN_CURSORS_SEC

累積オープン・カーソル(毎秒)

カーソル数/秒

MEMORY_SORTS_PCT

メモリー内のソート(%)

ソートに占めるパーセント

NETWORK_BYTES_SEC

ネットワーク・バイト(毎秒)

バイト数/秒

NETWORK_MSG_WAIT_SCT

ネットワーク・メッセージ待機(セッション数)

セッション数

NETWORK_MSG_WAIT_TIME

ネットワーク・メッセージ待機(時間)

マイクロ秒

OPEN_CURSORS_CURRENT

現在のカーソル数

カーソル数

OPEN_CURSORS_TXN

累積オープン・カーソル(トランザクション単位)

カーソル数/トランザクション

OS_SCHED_CPU_WAIT_SCT

オペレーティング・システム・スケジューラCPU待機(セッション数)

セッション数

OS_SCHED_CPU__WAIT_TIME

オペレーティング・システム・スケジューラCPU待機(時間)

マイクロ秒

OS_SERVICE_WAIT_SCT

オペレーティング・システム・サービス待機(セッション数)

セッション数

OS_SERVICE_WAIT_TIME

オペレーティング・システム・サービス待機(時間)

マイクロ秒

OTHER_WAIT_SCT

その他の待機(セッション数)

セッション数

OTHER_WAIT_TIME

その他の待機(時間)

マイクロ秒

PARSE_FAILURES_SEC

解析失敗(毎秒)

解析数/秒

PARSE_FAILURES_TXN

解析失敗(トランザクション単位)

解析数/トランザクション

PGA_CACHE_HIT

PGAキャッシュ・ヒット(%)

PGA内で処理されるバイト数のパーセント

PHYS_DESGN_WAIT_SCT

物理設計待機(セッション数)

セッション数

PHYS_DESGN_WAIT_TIME

物理設計待機(時間)

マイクロ秒

PHYSICAL_READS_SEC

物理読取り(毎秒)

読取り数/秒

PHYSICAL_READS_TXN

物理読取り(トランザクション単位)

読取り数/トランザクション

PHYSICAL_WRITES_SEC

物理書込み(毎秒)

書込み数/秒

PHYSICAL_WRITES_TXN

物理書込み(トランザクション単位)

書込み数/トランザクション

PHYSICAL_READS_DIR_SEC

直接物理読取り(毎秒)

読取り数/秒

PHYSICAL_READS_DIR_TXN

直接物理読取り(トランザクション単位)

読取り数/トランザクション

PHYSICAL_WRITES_DIR_SEC

直接物理書込み(毎秒)

書込み数/秒

PHYSICAL_WRITES_DIR_TXN

直接物理書込み(トランザクション単位)

書込み数/トランザクション

PHYSICAL_READS_LOB_SEC

直接LOB物理読取り(毎秒)

読取り数/秒

PHYSICAL_READS_LOB_TXN

直接LOB物理読取り(トランザクション単位)

読取り数/トランザクション

PHYSICAL_WRITES_LOB_SEC

直接LOB物理書込み(毎秒)

書込み数/秒

PHYSICAL_WRITES_LOB_TXN

直接LOB物理書込み(トランザクション単位)

書込み数/トランザクション

PROCESS_LIMIT_PCT

プロセス制限使用率(%)

最大値に占めるパーセント

PSERVICE_WAIT_SCT

プロセス・サービス待機(セッション数)

セッション数

PSERVICE_WAIT_TIME

プロセス・サービス待機(時間)

マイクロ秒

PX_DOWNGRADED_SEC

低下したパラレル操作(毎秒)

操作数/秒

PX_DOWNGRADED_25_SEC

25%以上の低下(毎秒)

操作数/秒

PX_DOWNGRADED_50_SEC

50%以上の低下(毎秒)

操作数/秒

PX_DOWNGRADED_75_SEC

75%以上の低下(毎秒)

操作数/秒

PX_DOWNGRADED_SER_SEC

シリアルまで低下(毎秒)

操作数/秒

RB_RECORDS_APPLIED_SEC

適用済ロールバックUNDOレコード(毎秒)

レコード数/秒

RB_RECORDS_APPLIED_TXN

適用済ロールバックUNDOレコード(トランザクション単位)

レコード数/トランザクション

REDO_ALLOCATION_HIT

REDOログ割当てのヒット

REDO割当てに占めるパーセント

REDO_GENERATED_SEC

生成済REDO(毎秒)

REDOログのバイト数/秒

REDO_GENERATED_TXN

生成済REDO(トランザクション単位)

REDOログのバイト数/トランザクション

REDO_WRITES_SEC

REDO書込み(毎秒)

書込み数/秒

REDO_WRITES_TXN

REDO書込み(トランザクション単位)

書込み数/トランザクション

RECURSIVE_CALLS_SEC

再帰的コール(毎秒)

コール数/秒

RECURSIVE_CALLS_TXN

再帰的コール(トランザクション単位)

コール数/トランザクション

RESPONSE_TXN

応答(トランザクション単位)

秒/トランザクション

ROWS_PER_SORT

1回のソートで処理する行数

行数/ソート

SESS_LOGICAL_READS_SEC

セッションの論理読取り(毎秒)

読取り数/秒

SESS_LOGICAL_READS_TXN

セッションの論理読取り(トランザクション単位)

読取り数/トランザクション

SESSION_CPU_SEC

データベースCPU(毎秒)

マイクロ秒/秒

SESSION_CPU_TXN

データベースCPU(トランザクション単位)

マイクロ秒/トランザクション

SESSION_LIMIT_PCT

セッション制限使用率(%)

最大値に占めるパーセント

SHARED_POOL_FREE_PCT

解放済共有プール(%)

共有プールに占めるパーセント

SOFT_PARSE_PCT

ソフト解析(%)

全解析に占めるパーセント

SQL_SRV_RESPONSE_TIME

サービス応答(実行単位)

秒

TABLESPACE_PCT_FULL

表領域の領域使用率

全領域に占めるパーセント

TABLESPACE_BYT_FREE

表領域の領域使用バイト数

空き領域(KB)

TOTAL_TABLE_SCANS_SEC

表スキャン合計(毎秒)

スキャン数/秒

TOTAL_TABLE_SCANS_TXN

表スキャン合計(トランザクション単位)

スキャン数/トランザクション

TOTAL_INDEX_SCANS_SEC

索引スキャン合計(毎秒)

スキャン数/秒

TOTAL_INDEX_SCANS_TXN

索引スキャン合計(トランザクション単位)

スキャン数/トランザクション

TOTAL_PARSES_SEC

解析合計(毎秒)

解析数/秒

TOTAL_PARSES_TXN

解析合計(トランザクション単位)

解析数/トランザクション

TRANSACTION_RATE

トランザクションの数(毎秒)

トランザクション数/秒

TXN_COMMITTED_PCT

コミット済トランザクション(%)

全トランザクションに占めるパーセント

USER_COMMITS_SEC

ユーザー・コミット(毎秒)

コミット数/秒

USER_COMMITS_TXN

ユーザー・コミット(トランザクション単位)

コミット数/トランザクション

USER_ROLLBACKS_SEC

ユーザー・ロールバック(毎秒)

ロールバック数/秒

USER_ROLLBACKS_TXN

ユーザー・ロールバック(トランザクション単位)

ロールバック数/トランザクション

USER_CALLS_SEC

ユーザー・コール(毎秒)

コール数/秒

USER_CALLS_TXN

ユーザー・コール(トランザクション単位)

コール数/トランザクション

USER_CALLS_PCT

ユーザー・コール(%)

全コールに占めるパーセント

USER_LIMIT_PCT

ユーザー制限使用率(%)

最大値に占めるパーセント

WCR_AVG_IO_LAT

平均IO応答時間(WRCクライアント用)

ミリ秒

WCR_PCPU

CPU上のリプレイ・スレッドのパーセント(WRCクライアント用)

全リプライ・スレッドに占めるパーセント

WCR_PIO

IOを実行するリプレイ・スレッドのパーセント(WRCクライアント用)

全リプライ・スレッドに占めるパーセント

DBMS_SERVER_ALERTサブプログラムの要約

表141-4 DBMS_SERVER_ALERTパッケージのサブプログラム

サブプログラム

説明

EXPAND_MESSAGEファンクション

アラート・メッセージを拡張します。

GET_THRESHOLDプロシージャ

指定メトリックの現行のしきい値設定を取得します。

SET_THRESHOLDプロシージャ

指定メトリックに対して、警告のしきい値およびクリティカルのしきい値を設定します。

EXPAND_MESSAGEファンクション

このファンクションは、アラート・メッセージを拡張します。

構文

DBMS_SERVER_ALERT.EXPAND_MESSAGE(
user_language            IN   VARCHAR2,
message_id               IN   NUMBER,
argument_1               IN   VARCHAR2,
argument_2               IN   VARCHAR2,
argument_3               IN   VARCHAR2,
argument_4               IN   VARCHAR2,
argument_5               IN   VARCHAR2)
RETURN VARCHAR2;

パラメータ

表141-5 EXPAND_MESSAGEファンクションのパラメータ

パラメータ

説明

user_language

現行セッションの言語。

message_id

アラート・メッセージのID。

argument_1

アラート・メッセージ内の第1引数。

argument_2

アラート・メッセージ内の第2引数。

argument_3

アラート・メッセージ内の第3引数。

argument_4

アラート・メッセージ内の第4引数。

argument_5

アラート・メッセージ内の第5引数。

GET_THRESHOLDプロシージャ

このプロシージャは、指定メトリックの現行のしきい値設定を取得します。

構文

DBMS_SERVER_ALERT.GET_THRESHOLD(
metrics_id               IN   BINARY_INTEGER,
warning_operator         OUT  BINARY_INTEGER,
warning_value            OUT  VARCHAR2,
critical_operator        OUT  BINARY_INTEGER,
critical_value           OUT  VARCHAR2,
observation_period       OUT  BINARY_INTEGER,
consecutive_occurrences  OUT  BINARY_INTEGER,
instance_name            IN   VARCHAR2,
object_type              IN   BINARY_INTEGER,
object_name              IN   VARCHAR2);

パラメータ

表141-6 GET_THRESHOLDプロシージャのパラメータ

パラメータ

説明

metrics_id

メトリックの内部名。詳細は、「サポートされるメトリック」を参照してください。

warning_operator

実際の値を警告のしきい値と比較するための演算子。

warning_value

警告のしきい値。

critical_operator

実際の値をクリティカルのしきい値と比較するための演算子。

critical_value

クリティカルのしきい値。

observation_period

メトリック値の算出結果をしきい値設定と照合して検証する時間。

consecutive_occurrences

メトリック値がしきい値に何回違反したらアラートを発行するかを規定する、監視期間の数。

instance_name

しきい値が設定されるインスタンスの名前。データベース全体のアラートの場合、NULLを指定します。このパラメータをNULL以外の値に設定する場合は、GV$INSTANCEビューに表示されているいずれかのINSTANCE_NAME値に設定する必要があります。

object_type

OBJECT_TYPE_SYSTEMまたはOBJECT_TYPE_SERVICE。

object_name

オブジェクトの名前。

使用上の注意

このサブプログラムは、instance_nameパラメータの値が意味のある値または有効な値であるかどうかをチェックしないことに注意してください。

SET_THRESHOLDプロシージャ

このプロシージャは、指定メトリックに対して、警告のしきい値およびクリティカルのしきい値を設定します。

構文

DBMS_SERVER_ALERT.SET_THRESHOLD(
metrics_id               IN   BINARY_INTEGER,
warning_operator         IN   BINARY_INTEGER,
warning_value            IN   VARCHAR2,
critical_operator        IN   BINARY_INTEGER,
critical_value           IN   VARCHAR2,
observation_period       IN   BINARY_INTEGER,
consecutive_occurrences  IN   BINARY_INTEGER,
instance_name            IN   VARCHAR2,
object_type              IN   BINARY_INTEGER,
object_name              IN   VARCHAR2);

パラメータ

表141-7 SET_THRESHOLDプロシージャのパラメータ

パラメータ

説明

metrics_id

メトリックの内部名。詳細は、「サポートされるメトリック」を参照してください。

warning_operator

実際の値を警告のしきい値と比較するための演算子(OPERATOR_GEなど)。詳細は、「関係演算子」を参照してください。

warning_value

警告のしきい値。警告のしきい値が設定されていない場合、NULLを指定します。値のリストをOPERATOR_CONTAINSに対して指定できます。

critical_operator

実際の値をクリティカルのしきい値と比較するための演算子。詳細は、「関係演算子」を参照してください。

critical_value

クリティカルのしきい値。設定しない場合はNULLを指定します。値のリストをOPERATOR_CONTAINSに対して指定できます。

observation_period

メトリック値の算出結果をしきい値設定と照合して検証する時間。有効な範囲は、1から60分です。

consecutive_occurrences

メトリック値がしきい値に何回違反したらアラートを発行するかを規定する、監視期間の数。

instance_name

しきい値が設定されるインスタンスの名前。データベース全体のアラートの場合、NULLを指定します。

object_type

詳細は、「オブジェクト・タイプ」を参照してください。

object_name

オブジェクトの名前。SYSTEMに対してはNULLを指定します。

使用上の注意

このサブプログラムは、instance_nameパラメータの値が意味のある値または有効な値であるかどうかをチェックしないことに注意してください。有効なインスタンスを特定できない名前を渡すと、DBA_THRESHOLDSビューでしきい値の設定が表示されている場合でも、そのしきい値はいずれのインスタンスでも使用されません。例外は小文字のdatabase_wideで、インスタンス名にNULLを渡す場合と同じ結果が得られます(後者の方法をお薦めします)。

142 DBMS_SERVICE

DBMS_SERVICEパッケージを使用して、シングル・インスタンスのサービスを作成、削除、アクティブ化および非アクティブ化できます。

この章では、次の項目について説明します。

- DBMS_SERVICEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- プロシージャの使用

- 例外

- DBMS_SERVICEサブプログラムの要約

関連項目:
Real Application Clustersの管理サービスについては、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

DBMS_SERVICEの使用方法

この項では、DBMS_SERVICEパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

- プロシージャの使用

- 例外

概要

DBMS_SERVICEは、ワークロードの測定、管理、優先順位付け、およびXAトランザクションと分散トランザクションの管理を目的として、RDBMSでの高可用性に関する操作、サービス品質に関する操作、ジョブ・スケジューリングに関する操作およびその他の計画済操作のワークロード管理をサポートします。

Oracle Real Application Clusters(RAC)は、SRVCTLを使用した場合と同じように、サービス名を複数のインスタンスにまたがって管理できます。DBMS_SERVICEパッケージを使用すると、シングル・インスタンスでサービスを作成、削除、開始および停止できます。また、サービス名でインスタンスに接続するすべてのセッションを切断することもできます。

関連項目:
Oracle Real Application Clustersの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

セキュリティ・モデル

権限

このパッケージを使用するクライアントは、ALTER SYSTEM実行権限、およびV$SESSION表読込み権限を持っている必要があります。

スキーマ

このパッケージは、SYSスキーマの下に作成する必要があります。

ロール

このパッケージのEXECUTE権限は、DBAロールにのみ付与されます。

定数

DBMS_SERVICEパッケージでは、次の表に示す定数が使用されます。

- 引数のコール時に使用される定数は、表142-1「引数のコール時に使用される定数」を参照してください。

- 接続バランシング目標引数で使用される定数は、表142-2「接続バランシング目標引数で使用される定数」を参照してください。

- TAFフェイルオーバー属性の引数で使用される定数については、表142-3「FAN、アプリケーション・コンティニュイティ、トランザクション・ガードおよびTAF用に高可用性属性の引数で使用される定数」を参照してください。

表142-1 引数のコール時に使用される定数

名前

タイプ

値

説明

GOAL_NONE

NUMBER

0

ロード・バランシング・アドバイザを無効にします。

GOAL_SERVICE_TIME

NUMBER

1

ロード・バランシング・アドバイザは、サービスでの処理の実行に要する時間およびサービスで使用可能な帯域幅に基づきます。

GOAL_THROUGHPUT

NUMBER

2

ロード・バランシング・アドバイザは、サービスで処理が実行される速度およびサービスで使用可能な帯域幅に基づきます。

表142-2 接続バランシング目標引数で使用される定数

名前

タイプ

値

説明

CLB_GOAL_SHORT

NUMBER

1

接続ロード・バランシングでは、ロード・バランシング・アドバイザ(goal_service_timeまたはgoal_throughputのいずれか)が有効になっている場合、ロード・バランシング・アドバイザが使用されます。GOAL=NONE(ロード・バランシング・アドバイザなし)に設定すると、CPU使用率に基づいた簡略アドバイスが使用されます。

CLB_GOAL_LONG

NUMBER

2

サービスごとのセッション数を使用して、インスタンスごとの接続数を平均化します。フォームなどの接続時間が長いアプリケーションには、この設定をお薦めします。この設定は、(接続を追加または削除せずに)接続プール自体の負荷に対応するためにそのサイズを調整する場合、ロード・バランシング・アドバイザで使用できます。これは、最も効果的な設定です。

表142-3 FAN、アプリケーション・コンティニュイティ、トランザクション・ガードおよびTAF用に高可用性属性の引数で使用される定数

名前

タイプ

値

説明

FAILOVER_METHOD_NONE

VARCHAR2

0

このサービスでは、サーバー側のTAFが有効になっていません。

FAILOVER_METHOD_BASIC

VARCHAR2

1

サーバー側のTAFメソッドはBASICです。BASICのみが、現在サポートされています。これは、障害時に新しい接続が確立されるということです。

FAILOVER_TYPE_NONE

VARCHAR

サーバー側のTAFタイプはNONEです。

FAILOVER_TYPE_SESSION

VARCHAR

サーバー側のTAFフェイルオーバー・タイプはSESSIONです。フェイルオーバー・タイプがSESSIONのときに障害が発生すると、TAFは残っているノードに再接続し、基本機能のみを備えたデータベース・セッションを再確立します。フェイルオーバー・コールバックで、カスタマイズ(ALTER SESSIONなど)を再度実行する必要があります。

FAILOVER_TYPE_SELECT

VARCHAR

サーバー側のTAFフェイルオーバー・タイプはSELECTです。

FAILOVER_RETRIES

NUMBER

フェイルオーバーが発生する際の接続試行回数です。アプリケーション・コンティニュイティとTAFが再接続と再認証のペアを試行する回数を指定します。0より大きい整数値を指定する必要があります。Oracle Database 12cリリース1 (12.1)でのアプリケーション・コンティニュイティに対するデフォルト値は30です。

FAILOVER_DELAY

NUMBER

次の接続試行までの遅延秒数です。これは、再接続と再認証が失敗した場合に、アプリケーション・コンティニュイティとTAFが待機する遅延時間です。0より大きい整数値を指定する必要があります。アプリケーション・コンティニュイティを使用する場合、Oracle Database 12cリリース1 (12.1)でのデフォルト値は10秒です。FAILOVER_DELAYを使用すると、次にサービスが使用可能になるまでフェイルオーバーを遅延させることができます。これは、サービスが一時的に(たとえば数分)使用できなくなる計画済停止で使用すると効果的です。

DYNAMIC

NUMBER

アプリケーション・コンティニュイティの場合は、非トランザクションのセッション状態をリクエストの実行中にアプリケーションで変更するかどうかをこのパラメータで指定します。すべてのアプリケーションでDYNAMICの値にすることをお薦めします。確信がない場合や、アプリケーションをカスタマイズできる場合は、DYNAMICを使用する必要があります。

使用上の注意

- TAFコールバックが登録されている場合は、フェイルオーバーが再試行され、フェイルオーバーの遅延は無視されます。エラーが発生した場合、コールバックによってOCI_FO_RETRYの値が戻されるかぎり、TAFは接続および認証の再試行を継続します。遅延は、コールバックのロジックにコーディングする必要があります。

- クライアント側のTAF設定がTNS接続記述子に設定されている場合、サーバー側のTAF設定によって上書きされます。TAFがクライアント側に設定されていない場合は、少なくとも、TAFが有効になるようにフェイルオーバー・タイプを設定する必要があります。フェイルオーバー・タイプがサーバー側に設定されている場合、フェイルオーバー・メソッドはBASICにデフォルト設定されます。遅延および再試行はオプションとなっており、個別に指定できます。

プロシージャの使用

- 次のプロシージャは、Oracle Real Applications Clusterware、Oracle RestartおよびOracle Global Data Servicesとともには使用できません。

- CREATE_SERVICEプロシージャ

- DELETE_SERVICEプロシージャ

- MODIFY_SERVICEプロシージャ

- START_SERVICEプロシージャ

- STOP_SERVICEプロシージャ

- Oracle Database 12cリリース1の場合は、サービス関連のすべてのサブプログラム内にあるパラメータ・インタフェースの使用をお薦めします。

- 単一インスタンス内でプラガブル・データベース(PDB)に対してDBMS_SERVICEを使用する場合は、まずそのPDBに接続する必要があります。

例外

次の表に、DBMS_SERVICEパッケージで発生する例外を示します。

表142-4 DBMS_SERVICEの例外

例外

エラー・コード

説明

NULL_SERVICE_NAME

44301

サービス名引数がNULLです。

NULL_NETWORK_NAME

44302

ネットワーク名引数がNULLです。

SERVICE_EXISTS

44303

サービス名はすでに存在します。

SERVICE_DOES_NOT_EXIST

44304

指定したサービスは存在しません。

SERVICE_IN_USE

44305

指定したサービスは実行中です。

SERVICE_NAME_TOO_LONG

44306

サービス名が長すぎます。

NETWORK_PREFIX_TOO_LONG

44307

ネットワーク名(ドメインを除く)が長すぎます。

NOT_INITIALIZED

44308

サービス・レイヤーが初期化されていません。

GENERAL_FAILURE

44309

不明な失敗です。

MAX_SERVICES_EXCEEDED

44310

サービスが最大数に達しています。

SERVICE_NOT_RUNNING

44311

指定したサービスは実行されていません。

DATABASE_CLOSED

44312

データベースは閉じられています。

INVALID_INSTANCE

44313

インスタンス名引数が無効です。

NETWORK_EXISTS

44314

ネットワーク名がすでに存在します。

NULL_ATTRIBUTES

44315

すべての属性がNULLに設定されています。

INVALID_ARGUMENT

44316

無効な引数が指定されています。

DATABASE_READONLY

44317

データベースは読取り専用で開かれています。

MAX_SN_LENGTH

44318

実行中のすべてのサービス・ネットワーク名の合計長が、最大許容長を超えました。

ERR_AQ_SERVICE

44319

AQサービスを削除できません。

ERR_GLB_SERVICE

44320

グローバル・サービスを削除できません。

ERR_INVALID_PDB_NAME

44771

プラガブル・データベース名が無効です。

ERR_CRS_API

44772

Cluster Ready Service(CRS)の操作が失敗しました。

ERR_PDB_CLOSED

44773

要求された操作を実行できません。

ERR_PDB_INVALID

44774

プラガブル・データベースの属性を変更できません。

ERR_PDB_NAME

44775

プラガブル・データベースのサービスを作成できません。

ERR_PDB_EXP

44776

プラガブル・データベースのサービスを削除できません。

ERR_PDB_FAIL

44777

プラガブル・データベースのサービスを開始できません。

DBMS_SERVICEサブプログラムの要約

表142-5 DBMS_SERVICEパッケージのサブプログラム

サブプログラム

説明

CREATE_SERVICEプロシージャ

サービスを作成します。

DELETE_SERVICEプロシージャ

サービスを削除します。

DISCONNECT_SESSIONプロシージャ

このサービスの下に実行されているセッションを切断します。

MODIFY_SERVICEプロシージャ

サービスを変更します。

START_SERVICEプロシージャ

サービスをアクティブにします。

STOP_SERVICEプロシージャ

サービスを停止します。

CREATE_SERVICEプロシージャ

このプロシージャは、データ・ディクショナリにサービス名を作成します。service_nameパラメータまたはALTER SYSTEM SET SERVICE_NAMESコマンドによってサービスを設定すると、サービスはデータ・ディクショナリにも暗黙的に作成されます。

注意:
サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、サブプログラムの2番目のバージョンは使用できません。Oracle Clusterware、Oracle RestartまたはOracle Global Data Servicesで管理されていないデータベースには、パラメータの配列インタフェースを含むバージョンが適用されます。新しい属性は、パラメータ・インタフェースを使用する場合のみ使用できます。

構文

DBMS_SERVICE.CREATE_SERVICE(
service_name               IN VARCHAR2,
network_name               IN VARCHAR2,
parameter_array            IN svc_parameter_array);

このオーバーロードは、下位互換性を維持する目的で保持されています。

DBMS_SERVICE.CREATE_SERVICE(
service_name               IN VARCHAR2,
network_name               IN VARCHAR2,
goal                       IN NUMBER DEFAULT NULL,
dtp                        IN BOOLEAN DEFAULT NULL,
aq_ha_notifications        IN BOOLEAN DEFAULT NULL,
failover_method            IN VARCHAR2 DEFAULT NULL,
failover_type              IN VARCHAR2 DEFAULT NULL,
failover_retries           IN NUMBER DEFAULT NULL,
failover_delay             IN NUMBER DEFAULT NULL,
clb_goal                   IN NUMBER DEFAULT NULL,
edition                    IN VARCHAR2 DEFAULT NULL);

パラメータ

表142-6 CREATE_SERVICEプロシージャのパラメータ

パラメータ

説明

service_name

データ・ディクショナリでのサービスの名前です(64文字まで使用可能)。

network_name

クライアント接続用にSQLNet接続記述子で使用されるサービスのネットワーク名です。これは、NET service_namesキャラクタ・セットに限定されます(『Oracle Database Net Servicesリファレンス』を参照)。

parameter_array

サービス属性の名前/値ペアに関連付けられた配列です。次の名前がサポートされています。

- goal

- dtp

- aq_ha_notifications

- failover_method

- failover_type

- failover_retries

- failover_delay

- clb_goal

- edition

- commit_outcome

- retention_timeout

- replay_initiation_timeout

- session_state_consistency

- sql_translation_profile

goal

サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。

- DBMS_SERVICE.GOAL_SERVICE_TIME

- DBMS_SERVICE.GOAL_THROUGHPUT

- DBMS_SERVICE.GOAL_NONE

dtp

サービスの対象がX/Open分散トランザクション処理(DTP)または任意の分散トランザクション(特にXA)であることを宣言します。

aq_ha_notifications

OCI/OCCI/ODPでFast Application Notification(FAN)を使用できるかどうかを指定します。Oracle Database12cでは、FANはOracle Notification Services(ONS)を使用します。このパラメータは、FANを有効にするために引き続き使用されます。FANはすべての高可用性システムで推奨されているため、アプリケーション・コンティニュイティではデフォルトで有効になっています。

failover_method

アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバーTYPEです。サービスのfailover_typeがTRANSACTIONに設定されている場合、COMMIT_OUTCOMEは自動的にTRUEに設定されます。JDBCリプレイ・ドライバは、TRANSACTIONのFAILOVER_TYPEサービス属性設定をTRANSACTIONのフェイルオーバーに使用します。OCIは、SELECTとSESSIONの以前の設定を使用します。サーバーでは、TRANSACTIONの設定として、FAILOVER_METHOD = BASICのみが許容されます。

failover_type

アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバーTYPEです。

failover_retries

アプリケーション・コンティニュイティとTAFが接続を再試行する回数です。failover_retriesおよびfailover_delayパラメータを使用すると、次にサービスが使用可能になるまでフェイルオーバーを遅延させることができます。このパラメータは、接続を対象としています。フェイルオーバー数は制御できません。アプリケーション・コンティニュイティの場合、この数はインシデントごとに3回です。

failover_delay

アプリケーション・コンティニュイティとTAFが接続を再試行するまでの遅延秒数です。アプリケーション・コンティニュイティに対するデフォルト値は10秒です。サービスによるフェイルオーバーと登録に時間がかかる場合は、遅延時間を0秒に指定しないでください。長い遅延時間は、計画済停止やData Guardへのフェイルオーバーでは有効です。サービスがすでに提供されているRACでは、短い遅延時間が効率的です。

edition

この引数がNULL以外の値の場合、エディションの指定がない(このサービスを使用する)後続のデータベース接続に対して初期セッション・エディションが指定されます。値を指定しない場合、この引数の効果はありません。

サービスの作成中または変更中に、このパラメータの検証は行われません。

接続時に、接続ユーザーがエディションに対するUSE権限を持っていないか、エディションが存在しない場合、ORA-38802エラー(エディションが存在しません)が発生します。

commit_outcome

トランザクションCOMMITが実行された後に、COMMITの結果にアクセスできるかどうかを指定します。COMMITが永続的であることはデータベースによって保証されますが、これによってCOMMITの結果も永続的であることが保証されます。アプリケーションでは、停止後にこの機能を使用して、最後に実行されたコミットのステータスを調べて、その結果を確認できます。注意:

- DBMS_APP_CONTパッケージのGET_LTXID_OUTCOMEプロシージャを起動するには、commit_outcome属性が設定されている必要があります。

- commit_outcomeは、アクティブなData Guardデータベースと読取り専用データベースには影響を及ぼしません。

- commit_outcomeは、データベース・サービスおよびユーザー定義のデータベース・サービスでのみ使用できます。

retention_timeout

commit_outcomeと組み合せて使用すると、COMMIT_OUTCOMEを保持する時間(秒単位)を指定できます。デフォルトは24時間(86400)です。最大値は30日(2592000)です。

replay_initiation_timeout

アプリケーション・コンティニュイティの場合、replay_initiation_timeoutは、要求の最初の操作を実行してから、再接続が成功し、リプレイを開始する準備が整うまでの時間を表します。リプレイ開始時間は、要求が最初に送信されてから、リプレイが接続され、それを開始する準備が整うまでの時間を計測したものです。リプレイが予期される場合は、大きな値を設定します。デフォルトは900秒です。

session_state_consistency

要求中にトランザクション以外がどのように変化するかを示します(値はDYNAMICまたはSTATICです)。このパラメータが考慮されるのは、アプリケーション・コンティニュイティのfailover_typeがTRANSACTIONに設定された場合のみです。セッション状態の例としては、NLS設定、オプティマイザのプリファレンス、イベントの設定、PL/SQLグローバル変数、一時表、アドバンスト・キュー、LOBおよび結果キャッシュがあります。要求が開始された後にこれらの値が変化する場合は、DYNAMIC(デフォルト)に設定します。ほぼすべてのアプリケーションでは、DYNAMICモードを使用する必要があります。確信がない場合は、DYNAMICモードを使用します。

sql_translation_name

SQL変換単位の名前です。

clb_goal

接続ロード・バランシングで使用されるメソッドです(表142-2「接続バランシング目標引数で使用される定数」を参照)。

例

DBMS_SERVICE.CREATE_SERVICE('ernie.example.com','ernie.example.com');

DECLARE
params dbms_service.svc_parameter_array;
BEGIN
params('FAILOVER_TYPE')            :='TRANSACTION';
params('REPLAY_INITIATION_TIMEOUT'):=1800;
params('RETENTION_TIMEOUT')        :=86400;
params('FAILOVER_DELAY')           :=10;
params('FAILOVER_RETRIES')         :=30;
params('commit_outcome')           :='true';
params('aq_ha_notifications')      :='true';
DBMS_SERVICE.MODIFY_SERVICE('GOLD',params);
END;

DELETE_SERVICEプロシージャ

このプロシージャは、データ・ディクショナリからサービスを削除します。

注意:
サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、このサブプログラムは使用できません。

構文

DBMS_SERVICE.DELETE_SERVICE(
service_name   IN VARCHAR2);

パラメータ

表142-7 DELETE_SERVICEプロシージャのパラメータ

パラメータ

説明

service_name

データ・ディクショナリでのサービスの名前です(64文字まで使用可能)。

例

DBMS_SERVICE.DELETE_SERVICE('ernie.example.com');

DISCONNECT_SESSIONプロシージャ

このプロシージャは、現行のインスタンスにおいて指定したサービスからセッションを切断します。

構文

DBMS_SERVICE.DISCONNECT_SESSION(
service_name         IN VARCHAR2,
disconnect_option    IN NUMBER DEFAULT POST_TRANSACTION);

パラメータ

表142-8 DISCONNECT_SESSIONプロシージャのパラメータ

パラメータ

説明

service_name

データ・ディクショナリでのサービスの名前です(64文字まで使用可能)。

disconnect_option

パッケージ定数である次のオプションは、NUMBERで表現されます。

- POST_TRANSACTION = 0: セッションは、現行トランザクションがコミットまたはロールバックされた後に切断されます。

- IMMEDIATE = 1: セッションが即時に切断されます。

- NOREPLAY = 2: セッションは即時に切断され、アプリケーション・コンティニュイティによってリプレイされないようにフラグ付けされます。つまり、IMMEDIATEとNOREPLAYの両方が指定された状態です。

注意: IMMEDIATE、POST_TRANSACTIONおよびNOREPLAYは、それぞれ1、0および2に自動的に変換されます。ただし、文字列リテラル("IMMEDIATE"、'POST_TRANSACTION'または'NOREPLAY'のように'または"文字を使用して引用されている)を渡すと、エラーが発生します。

使用上の注意

- このプロシージャは、Oracle Real Application Clustersとともにシングル・インスタンスのコンテキストでも使用できます。

- このサブプログラムは、対応するセッションがすべて切断されるまで戻りません。したがって、コール元は、対応するすべてのセッションが切断されるまで待機しないようにする場合、DBMS_JOBパッケージを使用するか、バックグラウンドでSQLセッションを設定します。

例

service_name 'ernie.example.com'からセッションを切断します。

DBMS_SERVICE.DISCONNECT_SESSION('ernie.example.com');

サービスがアプリケーション・コンティニュイティを使用している状態で、セッションをリプレイせず単に終了する必要がある場合、次の項目を使用します。

EXECUTE DBMS_SERVICE.DISCONNECT_SESSION('service name', DBMS_SERVICE.NOREPLAY);

MODIFY_SERVICEプロシージャ

このプロシージャは、既存のサービスを変更します。

注意:
サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、サブプログラムの2番目のバージョンは使用できません。Oracle Clusterware、Oracle RestartまたはOracle Global Data Servicesで管理されていないデータベースには、パラメータの配列インタフェースを含むバージョンが適用されます。新しい属性は、パラメータ・インタフェースを使用する場合のみ使用できます。

構文

DBMS_SERVICE.MODIFY_SERVICE(
service_name               IN VARCHAR2,
parameter_array            IN svc_parameter_array);

このオーバーロードは、下位互換性を維持する目的で保持されています。

DBMS_SERVICE.MODIFY_SERVICE(
service_name               IN VARCHAR2,
goal                       IN NUMBER DEFAULT NULL,
dtp                        IN BOOLEAN DEFAULT NULL,
aq_ha_notifications        IN BOOLEAN DEFAULT NULL,
failover_method            IN VARCHAR2 DEFAULT NULL,
failover_type              IN VARCHAR2 DEFAULT NULL,
failover_retries           IN NUMBER DEFAULT NULL,
failover_delay             IN NUMBER DEFAULT NULL,
clb_goal                   IN NUMBER DEFAULT NULL,
edition                    IN VARCHAR2 DEFAULT NULL,
modify_edition             IN BOOLEAN DEFAULT FALSE;

パラメータ

表142-9 MODIFY_SERVICEプロシージャのパラメータ

パラメータ

説明

service_name

データ・ディクショナリでのサービスの名前です(64文字まで使用可能)。

parameter_array

サービス属性の名前/値ペアに関連付けられた配列。次の名前がサポートされています。

- goal

- dtp

- aq_ha_notifications

- failover_method

- failover_type

- failover_retries

- failover_delay

- edition

- commit_outcome

- retention_timeout

- replay_initiation_timeout

- session_state_consistency

- sql_translation_name

goal

サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。

- DBMS_SERVICE.GOAL_SERVICE_TIME

- DBMS_SERVICE.GOAL_THROUGHPUT

- DBMS_SERVICE.GOAL_NONE

dtp

サービスの対象がX/Open分散トランザクション処理(DTP)または任意の分散トランザクション(特にXA)であることを宣言します。

aq_ha_notifications

OCI/OCCI/ODPでFast Application Notification(FAN)を使用できるかどうかを指定します。Oracle Database12cでは、FANはOracle Notification Services(ONS)を使用します。このパラメータは、FANを有効にするために引き続き使用されます。FANはすべての高可用性システムで推奨されているため、アプリケーション・コンティニュイティではデフォルトで有効になっています。

failover_method

アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバーTYPEです。サービスのfailover_typeがTRANSACTIONに設定されている場合、COMMIT_OUTCOMEは自動的にTRUEに設定されます。JDBCリプレイ・ドライバは、TRANSACTIONのFAILOVER_TYPEサービス属性設定をTRANSACTIONのフェイルオーバーに使用します。OCIは、SELECTとSESSIONの以前の設定を使用します。サーバーでは、TRANSACTIONの設定として、FAILOVER_METHOD = BASICのみが許容されます。

failover_type

アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバーTYPEです。

failover_retries

アプリケーション・コンティニュイティとTAFが接続を再試行する回数です。failover_retriesおよびfailover_delayパラメータを使用すると、次にサービスが使用可能になるまでフェイルオーバーを遅延させることができます。このパラメータは、接続を対象としています。フェイルオーバー数は制御できません。アプリケーション・コンティニュイティの場合、この数はインシデントごとに3回です。

failover_delay

アプリケーション・コンティニュイティとTAFが接続を再試行するまでの遅延秒数です。アプリケーション・コンティニュイティに対するデフォルト値は10秒です。サービスによるフェイルオーバーと登録に時間がかかる場合は、遅延時間を0秒に指定しないでください。長い遅延時間は、計画済停止やData Guardへのフェイルオーバーでは有効です。サービスがすでに提供されているRACでは、短い遅延時間が効率的です。

edition

この引数がNULL以外の値の場合、エディションの指定がない(このサービスを使用する)後続のデータベース接続に対して初期セッション・エディションが指定されます。値を指定しない場合、この引数の効果はありません。

サービスの作成中または変更中に、このパラメータの検証は行われません。

接続時に、接続ユーザーがエディションに対するUSE権限を持っていないか、エディションが存在しない場合、ORA-38802エラー(エディションが存在しません)が発生します。

commit_outcome

トランザクションCOMMITが実行された後に、COMMITの結果にアクセスできるかどうかを指定します。COMMITが永続的であることはデータベースによって保証されますが、これによってCOMMITの結果も永続的であることが保証されます。アプリケーションでは、停止後にこの機能を使用して、最後に実行されたコミットのステータスを調べて、その結果を確認できます。注意:

- DBMS_APP_CONTパッケージのGET_LTXID_OUTCOMEプロシージャを起動するには、commit_outcome属性が設定されている必要があります。

- commit_outcomeは、アクティブなData Guardデータベースと読取り専用データベースには影響を及ぼしません。

- commit_outcomeは、ユーザー定義データベース・サービスでのみ許可されます。

retention_timeout

commit_outcomeと組み合せて使用すると、COMMIT_OUTCOMEを保持する時間(秒単位)を指定できます。デフォルトは24時間(86400)です。最大値は30日(2592000)です。

replay_initiation_timeout

アプリケーション・コンティニュイティの場合、replay_initiation_timeoutは、要求の最初の操作を実行してから、再接続が成功し、リプレイを開始する準備が整うまでの時間を表します。リプレイ開始時間は、要求が最初に送信されてから、リプレイが接続され、それを開始する準備が整うまでの時間を計測したものです。リプレイが予期される場合は、大きな値を設定します。デフォルトは900秒です。

session_state_consistency

要求中にトランザクション以外がどのように変化するかを示します(値はDYNAMICまたはSTATICです)。このパラメータが考慮されるのは、アプリケーション・コンティニュイティのfailover_typeがTRANSACTIONに設定された場合のみです。セッション状態の例としては、NLS設定、オプティマイザのプリファレンス、イベントの設定、PL/SQLグローバル変数、一時表、アドバンスト・キュー、LOBおよび結果キャッシュがあります。要求が開始された後にこれらの値が変化する場合は、DYNAMIC(デフォルト)に設定します。ほぼすべてのアプリケーションでは、DYNAMICモードを使用する必要があります。確信がない場合は、DYNAMICモードを使用します。

sql_translation_name

SQL変換単位の名前です。

modify_edition

TRUEの場合、エディション・サービス属性は、edition引数値を使用するように更新されます。FALSEまたはNULLの場合、エディション属性は更新されません。

clb_goal

接続ロード・バランシングで使用されるメソッドです(表142-2「接続バランシング目標引数で使用される定数」を参照)。

使用上の注意

- Oracle ClusterwareでClustered Managed Servicesを使用している場合、またはシングル・インスタンス・データベースでOracle Restartを使用している場合、DBMS_SERVICEではなく、srvctlコマンドを使用して、サービスを変更する必要があります。サービスがOracle ClusterwareまたはOracle Restartによって開始された場合、サービスはOracle ClusterwareまたはOracle Restartに対して定義されたリソースに一致するようにデータベースで変更されます。DBMS_SERVICEで行われた変更は、対応するsrvctlコマンドでも行わなければ、失われます。srvctlによってサービスが開始または変更されると、11.2.0.2以上ではサービス属性の変更が即座に反映されます。

- ユーザーは、サービスが起動して実行中の場合でもエディション属性を変更できますが、この操作は安全性に問題があります。この操作では、既存の接続が影響を受けないまま新しいエディションで新規接続が確立されるため、ユーザーは注意して作業を進める必要があります。中間層の操作で、間違ったエディションへの接続が取得される可能性もあります。

START_SERVICEプロシージャ

このプロシージャは、サービスを開始します。Oracle RACでは、このオプションを実装すると、指定したインスタンスに影響があります。

注意:
サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、このサブプログラムは使用できません。

構文

DBMS_SERVICE.START_SERVICE(
service_name  IN VARCHAR2,
instance_name IN VARCHAR2);

パラメータ

表142-10 START_SERVICEプロシージャのパラメータ

パラメータ

説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。

instance_name

サービスをアクティブ化する必要のあるインスタンスの名前(オプション)。NULLを指定すると、ローカル・インスタンスでサービスが開始します。シングル・インスタンスでは、現行のインスタンスまたはNULLのみを指定できます。構成したすべてのインスタンスでサービスを開始するには、DBMS_SERVICE.ALL_INSTANCESを指定します。

例

DBMS_SERVICE.START_SERVICE('ernie.example.com');

STOP_SERVICEプロシージャ

このプロシージャは、サービスを停止します。

注意:
サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、このサブプログラムは使用できません。

構文

DBMS_SERVICE.STOP_SERVICE(
service_name   IN VARCHAR2,
instance_name  IN VARCHAR2);

パラメータ

表142-11 STOP_SERVICEプロシージャのパラメータ

パラメータ

説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。

instance_name

サービスを停止する必要のあるインスタンスの名前(オプション)。NULLを指定すると、サービスがローカルに停止します。シングル・インスタンスでは、現行のインスタンスまたはNULLのみを指定できます。Oracle RACおよび排他モードの場合、デフォルトはNULLです。構成したすべてのインスタンスでサービスを停止するには、DBMS_SERVICE.ALL_INSTANCESを指定します。

例

DBMS_SERVICE.STOP_SERVICE('ernie.example.com');

143 DBMS_SESSION

このパッケージは、PL/SQLからSQL ALTER SESSION文とSET ROLE文へのアクセスおよび他のセッション情報へのアクセスを提供します。DBMS_SESSIONを使用すると、作業環境とセキュリティ・レベルを設定できます。

この章では、次の項目について説明します。

- DBMS_SESSIONの使用方法

- セキュリティ・モデル

- 使用上の注意

- データ構造

- DBMS_SESSIONサブプログラムの要約

DBMS_SESSIONの使用方法

- セキュリティ・モデル

- 使用上の注意

セキュリティ・モデル

このパッケージは、パッケージ所有者SYSではなく、コール・ユーザーの権限で実行されます。

使用上の注意

close_cached_open_cursorsをオンまたはオフに変更しないでください。

データ構造

DBMS_SESSIONパッケージはTABLEタイプを定義します。

表タイプ

- INTEGER_ARRAY表タイプ

- LNAME_ARRAY表タイプ

INTEGER_ARRAY表タイプ

BINARY_INTEGERの表タイプ。

構文

TYPE integer_array IS TABLE OF BINARY_INTEGER INDEX BY BINARY_INTEGER;

LNAME_ARRAY表タイプ

VARCHAR2の表タイプ。

構文

TYPE lname_array IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;

DBMS_SESSIONサブプログラムの要約

表143-1 DBMS_SESSIONパッケージのサブプログラム

サブプログラム

説明

CLEAR_ALL_CONTEXTプロシージャ

すべてのコンテキスト情報を消去します。

CLEAR_CONTEXTプロシージャ

コンテキストを消去します。

CLEAR_IDENTIFIERプロシージャ

識別子を消去します。

CLOSE_DATABASE_LINKプロシージャ

データベース・リンクをクローズします。

FREE_UNUSED_USER_MEMORYプロシージャ

大量のメモリーが必要な操作を実行した後で未使用のメモリーを再要求できます。

GET_PACKAGE_MEMORY_UTILIZATIONプロシージャ

静的パッケージのメモリー使用量を示します。

IS_ROLE_ENABLEDファンクション

指定のロールがセッションで使用可能かどうかを判別します。

IS_SESSION_ALIVEファンクション

指定されたセッションがアクティブかどうかを判別します。

LIST_CONTEXTプロシージャ

現行のセッションについて、アクティブなネームスペースとコンテキストのリストを戻します。

MODIFY_PACKAGE_STATEプロシージャ

このプロシージャは、セッションでアクティブなすべてのPL/SQLプログラム・ユニットのセッション状態で、action_flagsパラメータで指定された様々なアクションを実行するために使用します。

SESSION_TRACE_DISABLEプロシージャ

コール元のセッションに対するセッション・レベルのSQLトレースを再設定します。

SESSION_TRACE_ENABLEプロシージャ

コール元のセッションに対するセッション・レベルのSQLトレースを使用可能にします。

RESET_PACKAGEプロシージャ

セッション内のすべてのパッケージのインスタンス化を解除します。

SET_CONTEXTプロシージャ

コンテキスト属性の値を設定または再設定します。

SET_EDITION_DEFERREDプロシージャ

指定したエディションへの切替えを要求します。

SET_IDENTIFIERプロシージャ

識別子を設定します。

SET_NLSプロシージャ

グローバリゼーション・サポート(NLS)を設定します。

SET_ROLEプロシージャ

ロールを設定します。

SET_SQL_TRACEプロシージャ

トレースをオンまたはオフにします。

SWITCH_CURRENT_CONSUMER_GROUPプロシージャ

ユーザーの現行のセッションでの、現行のリソース・コンシューマ・グループの変更を容易にします。

UNIQUE_SESSION_IDファンクション

データベースに現在接続しているすべてのセッションに対して一意の識別子を戻します。

CLEAR_ALL_CONTEXTプロシージャ

構文

DBMS_SESSION.CLEAR_ALL_CONTEXT
namespace         VARCHAR2);

パラメータ

表143-2 CLEAR_ALL_CONTEXTプロシージャのパラメータ

パラメータ

説明

namespace

アプリケーション・コンテキスト情報を消去するネームスペース。必須です。

使用上の注意

- このプロシージャは、信頼されたパッケージで直接的または間接的に起動する必要があります。

- コンテキスト値の変更はただちに反映され、SYS_CONTEXTによるこの値への後続のコールは最新の値を戻します。

CLEAR_CONTEXTプロシージャ

構文

DBMS_SESSION.CLEAR_CONTEXT
namespace         VARCHAR2,
client_identifier VARCHAR2
attribute         VARCHAR2);

パラメータ

表143-3 CLEAR_CONTEXTプロシージャのパラメータ

パラメータ

説明

namespace

アプリケーション・コンテキストを消去するネームスペース。必須です。

セッション・ローカル・コンテキストの場合、namespaceの指定は必須です。Session Local Contextとして定義したnamespaceは、グローバルにアクセスされるコンテキストのみに関連付けられるため、client_identifierはオプションとなります。

グローバルにアクセスされるコンテキストの場合、namespaceの指定は必須です。NULLは、client_identifierに対する有効な値です(これは、識別子の設定がないセッションでは、SET_CONTEXTを使用して設定されたコンテキスト(namespace、attribute、value、username、nullなど)を参照できるためです)。

client_identifier

グローバル・コンテキストに適用され、その他のタイプのコンテキストではオプションです(最大64バイト)。

attribute

消去するネームスペース内の特定の属性(オプション)。デフォルトはNULLです。attributeにNULLを指定すると、このネームスペースのnamespace、attribute、valueがセッションから消去されます。attributeを指定しないと、namespace引数とclient_identifier引数に関するすべてのコンテキスト情報が消去されます。

使用上の注意

- このプロシージャは、信頼されたパッケージで直接的または間接的に起動する必要があります。

- コンテキスト値の変更はただちに反映され、SYS_CONTEXTによるこの値への後続のコールは最新の値を戻します。

CLEAR_IDENTIFIERプロシージャ

このプロシージャは、セッションのset_client_idを削除します。

構文

DBMS_SESSION.CLEAR_IDENTIFIER;

使用上の注意

このプロシージャはパブリックで実行可能です。

CLOSE_DATABASE_LINKプロシージャ

このプロシージャは、オープンしているデータベース・リンクをクローズします。これは、次のSQL文と同じです。

ALTER SESSION CLOSE DATABASE LINK <name>

構文

DBMS_SESSION.CLOSE_DATABASE_LINK (
dblink VARCHAR2);

パラメータ

表143-4 CLOSE_DATABASE_LINKプロシージャのパラメータ

パラメータ

説明

dblink

クローズするデータベース・リンク名。

FREE_UNUSED_USER_MEMORYプロシージャ

このプロシージャは、大量のメモリー(100Kを超えるメモリー)が必要な操作の実行後、未使用のメモリーを再要求します。

大量のメモリーを使用する操作の例を次に示します。

- sort_area_size全部を使用し、sort_area_sizeが数百KBになる大規模なソート処理

- 大規模なPL/SQLパッケージ、プロシージャまたはファンクションのコンパイル処理

- PL/SQL索引表内にある数百KBのデータを格納する処理

v$sesstat固定ビューまたはv$statname固定ビューにある統計情報「セッションUGAメモリー」と「セッションPGAメモリー」を追跡調査して、ユーザー・メモリーを監視できます。これらの統計情報の監視では、このプロシージャが解放したメモリー量も表示されます。

注意:
このプロシージャは、メモリーが非常に不足している場合のみ使用してください。頻繁には使用せず、慎重に使用してください。

構文

DBMS_SESSION.FREE_UNUSED_USER_MEMORY;

戻り値

このプロシージャの動作は、クライアントのかわりに稼働しているサーバーの構成によって決まります。

- 専用サーバー: 使用されていないPGAメモリーとセッション・メモリーをオペレーティング・システムに戻します。セッション・メモリーは、この構成内のPGAから割り当てられます。

- 共有サーバー: 使用されていないセッション・メモリーをshared_poolに戻します。セッション・メモリーは、この構成内のshared_poolから割り当てられます。

使用上の注意

このプロシージャを使用してメモリーを解放するためには、そのメモリーが使用中でないことが必要です。

ある操作でメモリーを割り当てた後は、同じタイプの操作でのみ、割り当てられたメモリーを再利用できます。たとえば、ソート用に割り当てられたメモリーは、ソート完了後にそのメモリーが使用されなくなると、別のソート処理でのみ再利用できます。ソートとコンパイルについては、操作の完了後にメモリーが使用されなくなると、ユーザーはこのプロシージャをコールして、この未使用メモリーを解放できます。

索引表にはメモリーが暗黙的に割り当てられ、その索引表の要素に割り当てられた値が格納されます。したがって、索引表内の要素が多いほど、RDBMSは多くのメモリーを索引表に割り当てます。索引表に要素がある間は、索引表に関連するメモリーは使用中になります。

索引表の有効範囲によって、メモリーの使用期間が決まります。グローバルに宣言された索引表は、パッケージまたはパッケージ本体で宣言された索引表です。これらの索引表には、セッション・メモリーからメモリーが割り当てられます。グローバルに宣言された索引表では、メモリーは、ユーザーのログイン中(ユーザーのセッションの間)は使用中のままとなり、Oracleから切断された後に解放されます。

ローカルで宣言された索引表は、ファンクション、プロシージャまたは無名ブロック内で宣言された索引表です。このような索引表には、PGAメモリーからメモリーが割り当てられます。ローカルに宣言された索引表については、索引表が宣言されたプロシージャ、ファンクションまたは無名ブロックをユーザーが実行しているかぎり、メモリーは使用中のままになります。プロシージャ、ファンクションまたは無名ブロックの実行が完了すると、そのメモリーはローカルに宣言された他の索引表で使用可能になります(すなわち、メモリーは使用中ではなくなります)。

初期化されていない空の索引表を既存の索引表に割り当てることは、索引表とその索引表に関連付けられたメモリーを明示的に再初期化するための1つの方法です。この操作を行うと、索引表に関連付けられているメモリーは使用中ではなくなり、このプロシージャをコールして解放できます。この方法は、グローバルに宣言した索引表がユーザー・セッションの期間中に大きくなる可能性があり、ユーザーが索引表の内容を必要としない場合は、特に役立ちます。

索引表の有効範囲に関連するメモリー・ルールは適用されたままです。しかし、この方法とプロシージャによって、ユーザーが介入して、索引表に関連付けられているメモリーを明示的に解放できます。

例

次のPL/SQLは、この方法とFREE_UNUSED_USER_MEMORYプロシージャの使用方法を示します。

CREATE PACKAGE foobar
type number_idx_tbl is table of number indexed by binary_integer;

store1_table  number_idx_tbl;     --  PL/SQL indexed table
store2_table  number_idx_tbl;     --  PL/SQL indexed table
store3_table  number_idx_tbl;     --  PL/SQL indexed table
...
END;            --  end of foobar

DECLARE
...
empty_table   number_idx_tbl;     --  uninitialized ("empty") version
BEGIN
FOR i in 1..1000000 loop
store1_table(i) := i;           --  load data
END LOOP;
...
store1_table := empty_table;      --  "truncate" the indexed table
...
-
dbms_session.free_unused_user_memory;  -- give memory back to system

store1_table(1) := 100;           --  index tables still declared;
store2_table(2) := 200;           --  but truncated.
...
END;

GET_PACKAGE_MEMORY_UTILIZATIONプロシージャ

このプロシージャは、静的パッケージのメモリー使用量を示します。

出力コレクションは、インスタンス化された各パッケージでのメモリー使用量を示します。各パッケージは、所有者名、パッケージ名、使用しているメモリー量および未使用の割り当てられたメモリー量によって示されます。メモリーの断片化のため、また一度使用された空きメモリー・チャンクはまずパッケージ・メモリー・ヒープが所有する空きリストに移動されるため、未使用のメモリー量はゼロより大きくなります。FREE_UNUSED_USER_MEMORYプロシージャが起動された場合のみ解放され、親ヒープに戻ります。

構文

DBMS_SESSION.GET_PACKAGE_MEMORY_UTILIZATION (
owner_names     OUT NOCOPY LNAME_ARRAY,
unit_names      OUT NOCOPY LNAME_ARRAY,
unit_types      OUT NOCOPY INTEGER_ARRAY,
used_amounts    OUT NOCOPY INTEGER_ARRAY,
free_amounts    OUT NOCOPY INTEGER_ARRAY);

パラメータ

表143-5 GET_PACKAGE_MEMORY_UTILIZATIONファンクションのパラメータ

パラメータ

説明

owner_name

パッケージの所有者。

unit_name

パッケージの名前。

unit_types

ディクショナリ表obj$のtype#列の値。

used_amounts

バイト単位で指定した割当てメモリー量。

free_amounts

バイト単位で指定した使用可能なメモリー量。

IS_ROLE_ENABLEDファンクション

このファンクションは、指定のロールがこのセッションで使用可能かどうかを判別します。

構文

DBMS_SESSION.IS_ROLE_ENABLED (
rolename    VARCHAR2)
RETURN BOOLEAN;

パラメータ

表143-6 IS_ROLE_ENABLEDファンクションのパラメータ

パラメータ

説明

rolename

ロール名。

戻り値

表143-7 IS_ROLE_ENABLEDファンクションの戻り値

戻り値

説明

is_role_enabled

ロールが使用可能かどうかによってTRUEまたはFALSE。

IS_SESSION_ALIVEファンクション

このファンクションは、指定されたセッションがアクティブかどうかを判別します。

構文

DBMS_SESSION.IS_SESSION_ALIVE (
uniqueid VARCHAR2)
RETURN BOOLEAN;

パラメータ

表143-8 IS_SESSION_ALIVEファンクションのパラメータ

パラメータ

説明

uniqueid

セッションの一意のID。UNIQUE_SESSION_IDによって戻されるものと同じ。

戻り値

表143-9 IS_SESSION_ALIVEファンクションの戻り値

戻り値

説明

is_session_alive

セッションがアクティブかどうかによってTRUEまたはFALSE。

LIST_CONTEXTプロシージャ

このプロシージャは、現行のセッションに関するアクティブなネームスペースとコンテキストのリストを戻します。

構文

TYPE AppCtxRecTyp IS RECORD (
namespace VARCHAR2(30),
attribute VARCHAR2(30),
value     VARCHAR2(256));

TYPE AppCtxTabTyp IS TABLE OF AppCtxRecTyp INDEX BY BINARY_INTEGER;

DBMS_SESSION.LIST_CONTEXT (
list OUT AppCtxTabTyp,
size OUT NUMBER);

パラメータ

表143-10 LIST_CONTEXTプロシージャのパラメータ

パラメータ

説明

list

現行のセッション内のアプリケーション・コンテキスト設定リストを格納するバッファ。

戻り値

表143-11 LIST_CONTEXTプロシージャの戻り値

戻り値

説明

list

現行セッションの設定(ネームスペース、属性、値)リスト。

size

戻されたバッファ内のエントリ数を戻します。

使用上の注意

リスト内のコンテキスト情報は、<namespace> <attribute> <value>の順に表示されます。listは表タイプの変数なので、そのサイズは戻されるリストのサイズに合わせて動的に調整されます。

MODIFY_PACKAGE_STATEプロシージャ

このプロシージャは、セッションでアクティブなすべてのPL/SQLプログラム・ユニットのセッション状態で、action_flagsパラメータで指定された様々なアクションを実行するために使用します。このプロシージャは、PL/SQLコールで実行中の現行の起動が終了すると、有効になります。このプロシージャでは、表143-13に示すDBMS_SESSION定数が使用されます。

構文

DBMS_SESSION.MODIFY_PACKAGE_STATE(
action_flags IN PLS_INTEGER);

パラメータ

表143-12 MODIFY_PACKAGE_STATEプロシージャのパラメータ

パラメータ

説明

action_flags

PL/SQLプログラム・ユニットで実行するアクションを判別するビット・フラグ。

DBMS_SESSION.FREE_ALL_RESOURCES(または1): セッションから、以前実行したPL/SQLプログラムに関連付けられたメモリーをすべて解放します。グローバルなパッケージの現行の値を消去し、キャッシュされたカーソルをクローズします。その後の使用では、PL/SQLプログラム・ユニットが再インスタンス化され、グローバルなパッケージが再初期化されます。DBMS_SESSION.FREE_ALL_RESOURCESパラメータでMODIFY_PACKAGE_STATEを起動すると、DBMS_SESSION.RESET_PACKAGE()インタフェースと同一の機能が提供されます。

DBMS_SESSION.REINITIALIZE(または2): 実際にメモリーを解放して最初から再作成せずに、パッケージを再初期化します。パッケージ・メモリーは再利用されます。プログラム・セマンティクスとしては、DBMS_SESSION.REINITIALIZEフラグはDBMS_SESSION.FREE_ALL_RESOURCESフラグと同様、すべてのパッケージを再初期化します。

ただし、次の理由により、DBMS_SESSION.REINITIALIZEはDBMS_SESSION.FREE_ALL_RESOURCESオプションよりも高いパフォーマンスを提供します。

- パッケージは、実際にメモリーを解放して始めから再作成せずに再初期化されます。パッケージ・メモリーは再利用されます。

- 意味的には、すべてのオープン・カーソルはクローズされます。ただし、カーソル・リソースは実際には解放されていません。これは、単にPL/SQLのカーソル・キャッシュに戻ります。このカーソル・キャッシュはフラッシュされません。したがって、PL/SQLで頻繁にアクセスされる静的SQLに対応するカーソルは、PL/SQLカーソル・キャッシュにキャッシュされたままになり、その後に使用するPL/SQL文では、新規カーソルのオープン、解析およびクローズに関わるアプリケーションへのオーバーヘッドがありません。

- グローバルな状態でないPL/SQLモジュール(タイプやストアド・プロシージャなど)のセッション・メモリーは、解放されず、再作成されません。

使用上の注意

各フラグの相違点およびDBMS_SESSION.REINITIALIZEがDBMS_SESSION.FREE_ALL_RESOURCESよりも高いパフォーマンスを示す理由は、表143-14のパラメータの説明を参照してください。

表143-13 MODIFY_PACKAGE_STATEのAction_flags定数

定数

説明

FREE_ALL_RESOURCES

PLS_INTEGER:= 1

REINITIALIZE

PLS_INTEGER:= 2

- 再初期化とは、すべてのパッケージ変数を初期値に再設定するプロセス、およびパッケージ本体の初期化ブロック(存在する場合)を実行するプロセスのことです。次のパッケージを想定します。

package P is
n number;
m number := P2.foo;
d date := SYSDATE;
cursor c is select * from emp;
procedure bar;
end P;
/
package body P is
v   varchar2(20) := 'hello';
procedure bar is
begin
...
end;
procedure init_pkg is
begin
....
end;
begin
-- initialization block
init_pkg;
...
...
end P;
/

パッケージPでは、再初期化で次の処理を行います。

- P.nをNULLに設定する。

- ファンクションP2.fooを起動し、P.mにP2.fooから戻された値を設定する。

- P.dにSYSDATE組込みの戻り値を設定する。

- カーソルP.cが事前にオープンしている場合は、これをクローズする。

- P.vを'hello'に設定する。

- パッケージ本体の初期化ブロックを実行する。

- パッケージの再初期化は、その後パッケージが実際に参照された場合のみ実行されます。さらに、パッケージは参照された順に再初期化されます。

- FREE_ALL_RESOURCESまたはREINITIALIZEを使用する場合は、パッケージ変数値のリセットによって、アプリケーションに影響を与えないようにしてください。

- DBMS_SESSION.REINITIALIZEは、実際にすべてのパッケージ状態を解放するとはかぎらず、場合によっては、FREE_ALL_RESOURCESフラグやRESET_PACKAGEプロシージャを使用した場合よりも、はるかに大量のセッション・メモリーがアプリケーションで使用されます。たとえばDBMS_SESSION.MODIFY_PACKAGE_STATE(DBMS_SESSION.REINITIALIZE)の実行後、アプリケーションが以前に参照されたパッケージの多くを参照しない場合、これらのパッケージのセッション・メモリーは、セッションの終了まで(またはDBMS_SESSION.RESET_PACKAGEがコールされるまで)保持されます。

- クライアント側のPL/SQLコードは、リモート・パッケージの変数または定数を参照できないため、定数の値を明示的に使用する必要があります。たとえば、DBMS_SESSION.MODIFY_PACKAGE_STATE(DBMS_SESSION.REINITIALIZE)は、定数DBMS_SESSION.REINITIALIZEを使用しているため、クライアント側ではコンパイルしません。
かわりに、クライアント側ではDBMS_SESSION.MODIFY_PACKAGE_STATE(2)を使用します。これは、引数が明示的に指定されているためです。

例

ここでは、DBMS_SESSION.MODIFY_PACKAGE_STATEの使用例を示します。グローバルな状態(カーソルはc、変数値はcnt)のパッケージPを想定します。パッケージの最初の初期化では、パッケージ変数cntは0、カーソルcはCLOSEDです。次に、セッションで、cntの値が111に変更され、OPEN操作もカーソルで実行されます。print_statusをコールしてパッケージの状態を表示すると、cntが111で、カーソルがOPENであることを確認できます。次に、DBMS_SESSION.MODIFY_PACKAGE_STATEをコールします。print_statusを使用してパッケージPの状態を再度出力すると、cntが再度0になり、カーソルがCLOSEDされていることを確認できます。DBMS_SESSION.MODIFY_PACKAGE_STATEのコールが行われなかった場合は、2番目のprint_statusによって、111およびOPENが出力されます。

create or replace package P is
cnt    number := 0;
cursor c is select * from emp;
procedure print_status;
end P;
/
show errors;

create or replace package body P is
procedure print_status is
begin
dbms_output.put_line('P.cnt = ' || cnt);
if c%ISOPEN then
dbms_output.put_line('P.c is OPEN');
else
dbms_output.put_line('P.c is CLOSED');
end if;
end;
end P;
/
show errors;

SQL> set serveroutput on;
SQL> begin
2   P.cnt := 111;
3   open p.c;
4   P.print_status;
5  end;
6  /
P.cnt = 111
P.c is OPEN

PL/SQL procedure successfully completed.

SQL> begin
2   dbms_session.modify_package_state(dbms_session.reinitialize);
3  end;
4  /

PL/SQL procedure successfully completed.

SQL> set serveroutput on;
SQL>
SQL> begin
2   P.print_status;
3  end;
4  /
P.cnt = 0
P.c is CLOSED

PL/SQL procedure successfully completed.

SESSION_TRACE_DISABLEプロシージャ

このプロシージャは、コール元のセッションに対するセッション・レベルのSQLトレースを再設定します。クライアントID、およびサービス、モジュール、アクションのトレースは影響を受けません。

構文

DBMS_SESSION.SESSION_TRACE_DISABLE;

SESSION_TRACE_ENABLEプロシージャ

このプロシージャは、コール元のセッションに対するセッション・レベルのSQLトレースを使用可能にします。このプロシージャを起動すると、セッションによって発行されたすべてのSQL文のSQLトレースが実行されます。

構文

DBMS_SESSION.SESSION_TRACE_ENABLE(
waits     IN   BOOLEAN DEFAULT TRUE,
binds     IN   BOOLEAN DEFAULT FALSE,
plan_stat IN   VARCHAR2 DEFAULT NULL);

パラメータ

表143-14 SESSION_TRACE_ENABLEプロシージャのパラメータ

パラメータ

説明

waits

待機情報をトレースするかどうかを指定します。

binds

バインド情報をトレースするかどうかを指定します。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

RESET_PACKAGEプロシージャ

このプロシージャは、このセッションのすべてのパッケージのインスタンス化を解除します。これは、パッケージ状態を解放します。

注意:
「SESSION _TRACE_ENABLEプロシージャ」を参照してください。Oracle9iで導入されているMODIFY_PACKAGE_STATEインタフェースでは、RESET_PACKAGEと同一の機能が提供されます。これは、このセッションのあらゆるPL/SQLパッケージの状態を再初期化するための、効率的で軽量なバリアントです。

実行状態をキャッシュするために使用するメモリーは、セッションで実行されたPL/SQLファンクション、プロシージャおよびパッケージに関連付けられています。

パッケージに関して、このメモリーのコレクションはパッケージ変数の現行の値を保持し、各PL/SQLプログラムによってオープンされたカーソルのキャッシュを制御します。RESET_PACKAGEへのコールは、以前実行した各PL/SQLプログラムに関連付けられていたメモリーをセッションから解放し、この結果、グローバルなパッケージの現行の値は消去され、キャッシュされたカーソルはクローズされます。

RESET_PACKAGEは、セッションで失敗したプログラムを確実に再起動するためにも使用できます。パッケージ変数を含んだプログラムが失敗すると、どの変数を初期化しなおす必要があるかを判別することは困難です。RESET_PACKAGEは、すべてのパッケージ変数が初期値に再設定されることを保証します。

構文

DBMS_SESSION.RESET_PACKAGE;

使用上の注意

すべての実行PL/SQLが消費するメモリーは大量になるため、RESET_PACKAGEを使用して、データベース・アプリケーション内のある時点でセッション・メモリー・フットプリントを削減できます。ただし、パッケージ変数値の再設定がアプリケーションに影響を与えないことを確認してください。また、キャッシュしたメモリーとカーソルのないプログラムを後で実行すると、解放されたメモリーとカーソルを再作成する必要があるため、実行速度が遅くなることに留意してください。

RESET_PACKAGEは、メモリー、カーソルおよびパッケージ変数をコール直後に解放しません。

注意:
RESET_PACKAGEは、起動したPL/SQLコールの実行が完了した後でのみ、メモリー、カーソルおよびパッケージ変数を解放します。

たとえば、PL/SQLプロシージャP1がPL/SQLプロシージャP2をコールし、P2がRESET_PACKAGEをコールしたとします。プロシージャP1の実行が完了するまで(PL/SQLコールが終了するまで)、RESET_PACKAGEの処理は行われません。

例

SQL*Plusスクリプトは、多数のPL/SQLプログラム・ユニットを伴った大きいプログラムを実行します。これらのプログラム・ユニットでは、グローバル変数を使用する場合もしない場合もあります。ただし、実行後はグローバル変数は必要ありません。

EXCECUTE large_plsql_program1;

キャッシュされたPL/SQLセッション・メモリーを解放します。

EXECUTE DBMS_SESSION.RESET_PACKAGE;

別の大きいプログラムを実行します。

EXECUTE large_plsql_program2;

SET_CONTEXTプロシージャ

このプロシージャは、4つのタイプのコンテキスト(セッション・ローカル、グローバルな初期化、外部的な初期化およびグローバルなアクセス)を設定します。

次の5つのパラメータのうち最初の3つのみが必須となっており、後の2つはオプションでグローバルにアクセスされるコンテキストのみで使用されます。パラメータ情報の詳細は、パラメータ表および「使用上の注意」に示されています。

構文

DBMS_SESSION.SET_CONTEXT (
namespace VARCHAR2,
attribute VARCHAR2,
value     VARCHAR2,
username  VARCHAR2,
client_id VARCHAR2 );

パラメータ

表143-15 SET_CONTEXTプロシージャのパラメータ

パラメータ

説明

namespace

設定するアプリケーション・コンテキストのネームスペース(30バイトに制限)。

attribute

設定するアプリケーション・コンテキストの属性(30バイトに制限)。

value

設定するアプリケーション・コンテキストの値(4KBに制限)。

username

アプリケーション・コンテキストのデータベース・ユーザー名属性。

デフォルト: NULL

client_id

アプリケーション・コンテキストのアプリケーション固有のclient_id属性(最大64バイト)。

デフォルト: NULL

使用上の注意

- 最初の3つのパラメータは、すべてのコンテキスト・タイプに対して必須です。

- usernameパラメータは、有効なSQL識別子である必要があります。

- client_idパラメータは、最大64バイトの文字列である必要があります。これは大/小文字を区別し、set_identifierに対して提供される引数と一致させる必要があります。

- ネームスペース・パラメータがグローバル・コンテキストのネームスペースである場合、usernameパラメータはセッションの現行のデータベース・ユーザー名と一致し、client_idパラメータはセッションの現行のclient_idと一致します。これらのパラメータが設定されていない場合はNULLとみなされるため、どのユーザーもコンテキスト値を表示することができます。

- このプロシージャは、信頼されたパッケージで直接的または間接的に起動する必要があります。

- SET_CONTEXTのコール元は、CREATE CONTEXT文を介してコンテキスト・ネームスペースに関連付けられたプロシージャのコール・スタックに存在する必要があります。コール・スタックのチェックは、DBMSの境界を越えません。

- ネームスペースに設定できる属性の数に制限はありません。属性は、ユーザーによってリセットされないかぎり、ユーザーのセッション時に値を保持します。

- パラメータの値がネームスペースで設定されている場合、SET_CONTEXTがこの値を上書きします。

- コンテキスト値の変更はただちに反映され、SYS_CONTEXTによるこの値への後続のコールは最新の値を戻します。

関連項目:
次の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- ユーザー名およびクライアントIDの設定に関する項

- クライアントのセッションIDを使用するグローバル・アプリケーション・コンテキストの作成の例に関する項

SET_EDITION_DEFERREDプロシージャ

このプロシージャは、指定したエディションへの切替えを要求します。切替えは、現行のクライアント・コールの終了時に有効になります。

構文

DBMS_SESSION.SET_EDITION_DEFERRED (
edition    IN    VARCHAR2);

パラメータ

表143-16 SET_EDITION_DEFERREDプロシージャのパラメータ

パラメータ

説明

edition

切替え先となるエディション名。文字列の内容はSQL識別子として処理され、実際のエディション名に特殊文字または小文字が含まれている場合は、残りの文字列を二重引用符で囲む必要があります(二重引用符を使用しない場合、内容は大文字に設定されます)。コール元には、指定したエディションに対するUSE権限が必要です。

SET_IDENTIFIERプロシージャ

このプロシージャは、セッションのクライアントIDを設定します。

構文

DBMS_SESSION.SET_IDENTIFIER (
client_id VARCHAR2);

パラメータ

表143-17 SET_IDENTIFIERプロシージャのパラメータ

パラメータ

説明

client_id

現行のデータベース・セッションのアプリケーション固有の識別子で、大/小文字の区別があります。

使用上の注意

- SET_IDENTIFIERは、セッションのクライアントIDを指定された値に設定します。この値を使用すれば、v$session.client_identifierによってv$session内のセッションを識別できます。また、sys_context('USERENV','CLIENT_IDENTIFIER')によってセッションを識別するためにも使用できます。

- このプロシージャはPUBLICで実行可能です。

SET_NLSプロシージャ

このプロシージャは、グローバリゼーション・サポート(NLS)を設定します。これは、次のSQL文と同じです。

ALTER SESSION SET <nls_parameter> = <value>

構文

DBMS_SESSION.SET_NLS (
param VARCHAR2,
value VARCHAR2);

パラメータ

表143-18 SET_NLSプロシージャのパラメータ

パラメータ

説明

param

グローバリゼーション・サポートのパラメータ。このパラメータ名は、'NLS'で開始する必要があります。

value

パラメータ値。

パラメータがテキスト・リテラルの場合は、埋込みの一重引用符が必要です。例としては、set_nls ('nls_date_format','''DD-MON-YY''')があげられます。

SET_ROLEプロシージャ

このプロシージャは、ロールを使用可能または使用禁止にします。これは、SET ROLE SQL文と同等です。

構文

DBMS_SESSION.SET_ROLE (
role_cmd VARCHAR2);

パラメータ

表143-19 SET_ROLEプロシージャのパラメータ

パラメータ

説明

role_cmd

テキストが"set role"に追加され、SQLとして実行されます。

使用上の注意

このプロシージャは、既存のトランザクション内からコールされない場合、新しいトランザクションを作成することに注意してください。

SET_SQL_TRACEプロシージャ

このプロシージャは、トレースをオンまたはオフにします。これは、次のSQL文と同じです。

ALTER SESSION SET SQL_TRACE ...

構文

DBMS_SESSION.SET_SQL_TRACE (
sql_trace boolean);

パラメータ

表143-20 SET_SQL_TRACEプロシージャのパラメータ

パラメータ

説明

sql_trace

TRUEはトレースをオンにし、FALSEはトレースをオフにします。

SWITCH_CURRENT_CONSUMER_GROUPプロシージャ

このプロシージャは、ユーザーの現行のセッションでの現行のリソース・コンシューマ・グループを変更します。

ある特定のグループに対して切替え権限がある場合は、コンシューマ・グループを切り替えることができます。コール元が別のプロシージャの場合、ユーザーは、そのプロシージャの所有者が切替え権限を持っているコンシューマ・グループに切り替えることができます。

構文

DBMS_SESSION.switch_current_consumer_group (
new_consumer_group     IN  VARCHAR2,
old_consumer_group     OUT VARCHAR2,
initial_group_on_error IN  BOOLEAN);

パラメータ

表143-21 SWITCH_CURRENT_CONSUMER_GROUPプロシージャのパラメータ

パラメータ

説明

new_consumer_group

切り替える先のコンシューマ・グループの名前。

old_consumer_group

切り替える元のコンシューマ・グループの名前。

initial_group_on_error

TRUEの場合は、エラー発生時にコール元の現行のコンシューマ・グループが初期コンシューマ・グループとして設定されます。

戻り値

このプロシージャは、old_consumer_groupパラメータにある、ユーザーの古いコンシューマ・グループを出力します。

注意:
old_consumer_groupで戻された値を使用して、古いコンシューマ・グループに後で切り替えることができます。

例外

表143-22 SWITCH_CURRENT_CONSUMER_GROUPプロシージャの例外

例外

説明

29368

コンシューマ・グループが存在しません。

1031

権限が不十分です。

29396

OTHER_GROUPSコンシューマ・グループに切り替えることができません。

使用上の注意

プロシージャの所有者には、ユーザーを古いコンシューマ・グループに再切替えするために、ユーザーの古いグループ(old_consumer_group)に対する権限が必要です。このプロシージャには1つの例外があり、ユーザーを初期コンシューマ・グループにいつでも切り替えることができます(権限チェックはスキップ)。

initial_group_on_errorをTRUEに設定すると、SWITCH_CURRENT_CONSUMER_GROUPプロシージャは、new_consumer_groupが指定したグループに現行のセッションを設定できない場合、そのセッションをデフォルト・グループに設定します。現行のコンシューマ・グループが初期コンシューマ・グループに変更されていても、new_consumer_groupへのセッションの移動に関連するエラーは発生します。

例

CREATE OR REPLACE PROCEDURE high_priority_task is
old_group varchar2(30);
prev_group varchar2(30);
curr_user varchar2(30);
BEGIN
-- switch invoker to privileged consumer group. If we fail to do so, an
-- error is thrown, but the consumer group does not change
-- because 'initial_group_on_error' is set to FALSE

dbms_session.switch_current_consumer_group('tkrogrp1', old_group, FALSE);
-- set up exception handler (in the event of an error, we do not want to
-- return to caller while leaving the session still in the privileged
-- group)

BEGIN
-- perform some operations while under privileged group

EXCEPTION
WHEN OTHERS THEN
-- It is possible that the procedure owner does not have privileges
-- on old_group. 'initial_group_on_error' is set to TRUE to make sure
-- that the user is moved out of the privileged group in such a
-- situation

dbms_session.switch_current_consumer_group(old_group,prev_group,TRUE);
RAISE;
END;

-- we've succeeded. Now switch to old_group, or if cannot do so, switch
-- to caller's initial consumer group

dbms_session.switch_current_consumer_group(old_group,prev_group,TRUE);
END high_priority_task;
/

UNIQUE_SESSION_IDファンクション

このファンクションは、データベースに現在接続しているすべてのセッションに対して一意の識別子を戻します。同じセッション中にこのファンクションを複数回コールしても、常に同じ結果が戻されます。

構文

DBMS_SESSION.UNIQUE_SESSION_ID
RETURN VARCHAR2;

プラグマ

pragma restrict_references(unique_session_id,WNDS,RNDS,WNPS);

戻り値

表143-23 UNIQUE_SESSION_IDファンクションの戻り値

戻り値

説明

unique_session_id

最大24バイトまで戻します。

144 DBMS_SHARED_POOL

DBMS_SHARED_POOLパッケージは、共有プールへのアクセスを提供し、この共有プールは、カーソルとPL/SQLオブジェクトが格納されている共有メモリー領域です。DBMS_SHARED_POOLによって、共有プール内のオブジェクトのサイズを表示したり、メモリーの断片化を減らすためにオブジェクトを保存または非保存としてマークできます。

この章では、次の項目について説明します。

- DBMS_SHARED_POOLの使用方法

- 概要

- 使用上の注意

- DBMS_SHARED_POOLサブプログラムの要約

DBMS_SHARED_POOLの使用方法

- 概要

- 使用上の注意

概要

ここで提供されるプロシージャは、大規模なPL/SQLオブジェクトのロード時に役立ちます。大規模なPL/SQLオブジェクトのロード時には、大量の小規模オブジェクトを共有プールから期限切れとして削除して空き領域を用意する必要があるため(メモリー断片化のため)、ユーザーの応答時間に影響を与えます。場合によっては、大規模なオブジェクトをロードするためのメモリーが不足している場合があります。

DBMS_SHARED_POOLは、頻繁に実行するトリガーに対しても有効です。コンパイルしたトリガーを共有プールで頻繁に使用する表に保管できます。

さらに、DBMS_SHARED_POOLは順序もサポートしています。順序番号は、順序が期限切れで共有プールから削除されると失われます。DBMS_SHARED_POOLは、共有プールに順序を保存し、順序番号の損失を防止するのに役立ちます。

使用上の注意

DBMS_SHARED_POOLを作成するには、DBMSPOOL.SQLスクリプトを実行します。DBMSPOOL.SQLの実行後には、自動的にPRVTPOOL.PLBスクリプトが実行されます。これらのスクリプトは、通常のデータベース作成の一環では実行されません。

DBMS_SHARED_POOLサブプログラムの要約

表144-1 DBMS_SHARED_POOLパッケージのサブプログラム

サブプログラム

説明

ABORTED_REQUEST_THRESHOLDプロシージャ

共有プールについて、異常終了を要求するしきい値を設定します。

KEEPプロシージャ

共有プールにオブジェクトを保存します。

MARKHOTプロシージャ

ライブラリ・キャッシュ・オブジェクトをホット・オブジェクトとしてマーク付けします。

PURGEプロシージャ

名前付きオブジェクトまたはオブジェクトの指定したヒープをパージします。

SIZESプロシージャ

共有プールにあるオブジェクトで、指定サイズより大きいオブジェクトを表示します。

UNKEEPプロシージャ

指定オブジェクトを解放します。

UNMARKHOTプロシージャ

ライブラリ・キャッシュ・オブジェクトのホット・オブジェクトとしてのマークを解除します。

ABORTED_REQUEST_THRESHOLDプロシージャ

このプロシージャは、共有プールについて、異常終了を要求するしきい値を設定します。

構文

DBMS_SHARED_POOL.ABORTED_REQUEST_THRESHOLD (
threshold_size NUMBER);

パラメータ

表144-2 ABORTED_REQUEST_THRESHOLDプロシージャのパラメータ

パラメータ

説明

threshold_size

共有プール内で確保解除されたメモリー(解放されたメモリーではない)を解放しないための要求サイズ(バイト単位)。threshold_sizeの範囲は5000から2GBまでです。

例外

しきい値が有効な範囲内にない場合は、例外が発生します。

使用上の注意

通常、要求が空きリストで満たされない場合、RDBMSは、LRUリストからオブジェクトを解放して要求を満たすことができるかを定期的にチェックし、メモリーを再要求しようとします。このステップの完了後、RDBMSは、'ALTER SYSTEM FLUSH SHARED_POOL'とほぼ同等の内容を実行します。

これは、システム上のすべてのユーザーに影響を与えるため、このプロシージャは、その影響をthresh_holdサイズを超える共有メモリーの断片検索に失敗した処理にローカライズします。このユーザーは、LRUリストを検索しなくても、'メモリー不足'エラーとなります。

KEEPプロシージャ

このプロシージャは、共有プールにオブジェクトを保存します。オブジェクトが一度共有プールに保存されると、期間切れ削除の対象となりません。このことは、頻繁に使用されるラージ・オブジェクトに役立つ場合があります。ラージ・オブジェクトを共有プールに配置する場合、十分な連続領域を作成するために複数のオブジェクトを削除する必要がある場合があります。

構文

DBMS_SHARED_POOL.KEEP (
name VARCHAR2,
flag CHAR      DEFAULT 'P');

パラメータ

表144-3 KEEPプロシージャのパラメータ

パラメータ

説明

name

保存するオブジェクトの名前。

この識別子は、アドレスと、v$sqlareaビューのhash_value列を連結した値です。これは、SIZESプロシージャで表示されます。

現在、TABLEとVIEWオブジェクトは保存できません。

flag

(オプション)このパラメータを指定しないと、パッケージは、最初のパラメータをパッケージ、プロシージャまたはファンクションの名前とみなして名前を解決します。

入力内容がパッケージ、プロシージャまたはファンクションの名前であることを完全に指定するには、'P'または'p'を設定します。

入力内容がタイプ名であることを指定するには、'T'または't'を設定します。

入力内容がトリガー名であることを指定するには、'R'または'r'を設定します。

入力内容が順序名であることを指定するには、'Q'または'q'を設定します。

最初の引数がカーソル・アドレスとハッシュ値の場合は、パラメータに'P'、'p'、'Q'、'q'、'R'、'r'、'T'、't'を除く任意の文字を指定する必要があります。

例外

指定されたオブジェクトが見つからない場合は、例外が発生します。

使用上の注意

オブジェクトは2種類あります。

- 名前で指定するPL/SQLオブジェクト、トリガー、順序およびタイプ

- 2つの番号(共有プール内の位置を示す)で指定するSQLカーソル・オブジェクト

次に例を示します。

DBMS_SHARED_POOL.KEEP('scott.hispackage')

これは、SCOTTが所有するパッケージHISPACKAGEを保存します。PL/SQLオブジェクトの名前は、SQLのオブジェクトの命名規則に従っています(たとえば、デリミタ付き識別子やマルチバイトの名前などが可能です)。カーソルは、DBMS_SHARED_POOL.KEEP('0034CDFF, 20348871','C')によって保存でき、0034CDFFはADDRESS、20348871はHASH_VALUEです。最初の8文字は16進数の完全なアドレスである必要があることに注意してください。

MARKHOTプロシージャ

このプロシージャは、ライブラリ・キャッシュ・オブジェクトをホット・オブジェクトとしてマーク付けします。

構文

DBMS_SHARED_POOL.MARKHOT (
schema         VARCHAR2,
objname        VARCHAR2,
namespace      NUMBER DEFAULT 1,   global         BOOLEAN DEFAULT TRUE);

DBMS_SHARED_POOL.MARKHOT (
hash          VARCHAR2,
namespace     NUMBER DEFAULT 1,
global        BOOLEAN DEFAULT TRUE);

パラメータ

表144-4 MARKHOTプロシージャのパラメータ

パラメータ

説明

schema

オブジェクトが属するユーザー名またはスキーマ。

objname

オブジェクト名。

namespace

オブジェクトの検索範囲となるライブラリ・キャッシュ・ネームスペースを示す数。USER_OBJECTSやDBA_OBJECTSなどのビューは、ネームスペースを数値列として反映します。これは、OBJ$などのディクショナリ表のほとんどと同様です。

global

TRUE(デフォルト)に設定されている場合は、すべてのOracle RACインスタンスでオブジェクトをホットとしてマークします。

hash

オブジェクトの16バイトのハッシュ値。

例外

ORA-06502: 不適切な入力が原因で指定したオブジェクトを検出できない場合は例外が発生します。

ORA-04043: 指定したオブジェクトを検出できない場合は例外が発生します(不正なネームスペースまたはハッシュ入力)。

使用上の注意

パッケージまたはタイプの仕様にホットまたは非ホットのマークが付いている場合は、対応するパッケージまたはタイプの本体に暗黙的にホットまたは非ホットのマークが付きます。

PURGEプロシージャ

このプロシージャは、名前付きオブジェクトまたはオブジェクトの指定したヒープをパージします。

構文

DBMS_SHARED_POOL.PURGE (
name         VARCHAR2,
flag         CHAR DEFAULT 'P',
heaps        NUMBER DEFAULT 1);

DBMS_SHARED_POOL.PURGE (
schema       VARCHAR2,
objname      VARCHAR2,
namespace    NUMBER,
heaps        NUMBER);

DBMS_SHARED_POOL.PURGE (
hash         VARCHAR2,
namespace    NUMBER,
heaps        NUMBER);

パラメータ

表144-5 PURGEプロシージャのパラメータ

パラメータ

説明

name

パージするオブジェクトの名前。

この識別子は、アドレスと、v$sqlareaビューのhash_value列を連結した値です。これは、SIZESプロシージャで表示されます。

現在、TABLEとVIEWオブジェクトはパージできません。

flag

(オプション)このパラメータを指定しないと、パッケージは、最初のパラメータをパッケージ、プロシージャまたはファンクションの名前とみなして名前を解決します。

入力内容がパッケージ、プロシージャまたはファンクションの名前であることを完全に指定するには、'P'または'p'を設定します。

入力内容がタイプ名であることを指定するには、'T'または't'を設定します。

入力内容がトリガー名であることを指定するには、'R'または'r'を設定します。

入力内容が順序名であることを指定するには、'Q'または'q'を設定します。

最初の引数がカーソル・アドレスとハッシュ値の場合は、パラメータに'P'、'p'、'Q'、'q'、'R'、'r'、'T'、't'を除く任意の文字を指定する必要があります。

heaps

パージするヒープ。たとえば、ヒープ0およびヒープ6をパージする場合:

1<<0 | 1<<6 => hex 0x41 => decimal 65となります。このため、ヒープ=>65を指定します。デフォルトは1です。1は、オブジェクト全体がパージされるヒープ0を意味します。

schema

オブジェクトが属するユーザー名またはスキーマ。

objname

パージするオブジェクトの名前。

namespace

オブジェクトの検索範囲となるライブラリ・キャッシュ・ネームスペースを示す数。

hash

オブジェクトの16バイトのハッシュ値。

例外

ORA-6570: 指定したオブジェクトを検出できない場合は例外が発生します。

ORA-6570: 永続的に保持するようにマークされているオブジェクトはパージできません。

使用上の注意

KEEPプロシージャでサポートされているすべてのオブジェクトに対してPURGEがサポートされています。

SIZESプロシージャ

このプロシージャは、shared_poolにあるオブジェクトで指定したサイズより大きいオブジェクトを表示します。オブジェクト名も表示され、KEEPまたはUNKEEPいずれかのコールへの引数として使用できます。

構文

DBMS_SHARED_POOL.SIZES (
minsize NUMBER);

パラメータ

表144-6 SIZESプロシージャのパラメータ

パラメータ

説明

minsize

オブジェクトを表示するために、共有プール内で占有する必要があるサイズ(KB単位)。

使用上の注意

このプロシージャの使用前に、SQLDBAまたはSQLPlus 'SET SERVEROUTPUT ON SIZE XXXXX'コマンドを発行すると、結果が表示されます。

UNKEEPプロシージャ

このプロシージャは、指定のオブジェクトを解放します。

構文

DBMS_SHARED_POOL.UNKEEP (
name VARCHAR2,
flag CHAR     DEFAULT 'P');

注意:

このプロシージャは、将来自動メカニズムが実装されて不要になった場合サポートされなくなる可能性があります。

パラメータ

表144-7 UNKEEPプロシージャのパラメータ

パラメータ

説明

name

解放するオブジェクトの名前。KEEPプロシージャのnameパラメータの説明を参照してください。

flag

KEEPプロシージャのflagパラメータの説明を参照してください。

例外

ORA-06502: 指定したオブジェクトを検出できない場合は例外が発生します。

UNMARKHOTプロシージャ

このプロシージャは、ライブラリ・キャッシュ・オブジェクトのホット・オブジェクトとしてのマークを解除します。

構文

DBMS_SHARED_POOL.UNMARKHOT (
schema         VARCHAR2,
objname        VARCHAR2,
namespace      NUMBER DEFAULT 1,   global         BOOLEAN DEFAULT TRUE);

DBMS_SHARED_POOL.UNMARKHOT (
hash          VARCHAR2,
namespace     NUMBER DEFAULT 1,
global        BOOLEAN DEFAULT TRUE);

パラメータ

表144-8 UNMARKHOTプロシージャのパラメータ

パラメータ

説明

schema

オブジェクトが属するユーザー名またはスキーマ。

objname

オブジェクト名。

namespace

オブジェクトの検索範囲となるライブラリ・キャッシュ・ネームスペースを示す数。

global

TRUE(デフォルト)に設定されている場合は、すべてのOracle RACインスタンスでオブジェクトのホットとしてのマークを解除します。

hash

オブジェクトの16バイトのハッシュ値。

例外

ORA-06502: 不適切な入力が原因で指定したオブジェクトを検出できない場合は例外が発生します。

ORA-04043: 指定したオブジェクトを検出できない場合は例外が発生します(不正なネームスペース、ハッシュ入力または存在しないオブジェクト)。

使用上の注意

パッケージまたはタイプの仕様にホットまたは非ホットのマークが付いている場合は、対応するパッケージまたはタイプの本体に暗黙的にホットまたは非ホットのマークが付きます。

145 DBMS_SPACE

DBMS_SPACEパッケージによって、セグメントの成長と領域要件を分析できます。

この章では、次の項目について説明します。

- DBMS_SPACEの使用方法

- セキュリティ・モデル

- データ構造

- DBMS_SPACEサブプログラムの要約

DBMS_SPACEの使用方法

- セキュリティ・モデル

セキュリティ・モデル

このパッケージの実行には、SYS権限が必要です。実行権限は、PUBLICに付与されます。このパッケージのサブプログラムは、コール元のセキュリティ下で実行されます。ユーザーには、オブジェクトに関するANALYZE権限が必要です。

データ構造

DBMS_SPACEパッケージでは、オブジェクト・タイプ、レコード・タイプおよび表タイプを定義します。

オブジェクト・タイプ

CREATE_TABLE_COST_COLINFOオブジェクト・タイプ

レコード・タイプ

ASA_RECO_ROWレコード・タイプ

表タイプ

ASA_RECO_ROW_TB表タイプ

CREATE_TABLE_COST_COLINFOオブジェクト・タイプ

このタイプは、表の列のデータ・タイプとサイズを記述します。

構文

TYPE create_table_cost_colinfo IS OBJECT(
col_type    VARCHAR(200),
col_size    NUMBER)

属性

表145-1 CQ_NOTIFICATION$_DESCRIPTORオブジェクト・タイプ

属性

説明

col_type

列タイプ。

col_size

列サイズ。

ASA_RECO_ROWレコード・タイプ

このタイプには、ASA_RECOMMENDATIONSファンクションによって戻される個々の列のタイプが含まれています。

構文

TYPE asa_reco_row IS RECORD (
tablespace_name       VARCHAR2(30),
segment_owner         VARCHAR2(30),
segment_name          VARCHAR2(30),   segment_type          VARCHAR2(18),
partition_name        VARCHAR2(30),
allocated_space       NUMBER,
used_space            NUMBER,
reclaimable_space     NUMBER,
chain_rowexcess       NUMBER,
recommendations       VARCHAR2(1000),
c1                    VARCHAR2(1000),
c2                    VARCHAR2(1000),
c3                    VARCHAR2(1000),
task_id               NUMBER,
mesg_id               NUMBER);

属性

表145-2 ASA_RECO_ROWの属性

フィールド

説明

tablespace_name

オブジェクトを含む表領域の名前。

segment_owner

スキーマの名前。

segment_name

オブジェクト名。

segment_type

'TABLE'、'INDEXなどのセグメントのタイプ。

partition_name

パーティションの名前。

allocated_space

セグメントに割り当てる領域。

used_space

実際にセグメントに使用される領域。

reclaimable_space

セグメント内の再利用可能な空き領域。

chain_rowexcess

排除可能な余分な連鎖行のパーセント。

recommendations

このセグメントに対するリコメンデーションまたは検索結果。

c1

リコメンデーションに関連付けられたコマンド。

c2

リコメンデーションに関連付けられたコマンド。

c3

リコメンデーションに関連付けられたコマンド。

task_id

このセグメントを処理するアドバイザ・タスク。

mesg_id

リコメンデーションに対応するメッセージID。

ASA_RECO_ROW_TB表タイプ

構文

TYPE asa_reco_row_tb IS TABLE OF asa_reco_row;

DBMS_SPACEサブプログラムの要約

表145-3 DBMS_SPACEパッケージのサブプログラム

サブプログラム

説明

ASA_RECOMMENDATIONSファンクション

システムによって自動的に起動されているか、またはユーザーが手動で起動しているセグメント・アドバイザのリコメンデーションまたは検索結果を戻します。

CREATE_INDEX_COSTプロシージャ

既存の表に索引を作成するコストを判断します。

CREATE_TABLE_COSTプロシージャ

様々な属性を備えた表のサイズを判断します。

FREE_BLOCKSプロシージャ

オブジェクト(表、索引またはクラスタ)にある空きブロックに関する情報を戻します。

ISDATAFILEDROPPABLE_NAMEプロシージャ

データファイルが削除可能かどうかを確認します。

OBJECT_DEPENDENT_SEGMENTSファンクション

オブジェクトに関連付けられたセグメントのリストを戻します。

OBJECT_GROWTH_TRENDファンクション

特定の時点におけるオブジェクトの領域使用を、この表ファンクションの各行に示します。

SPACE_USAGEプロシージャ

自動セグメント領域管理セグメントでの空きブロックの情報を戻します。

UNUSED_SPACEプロシージャ

オブジェクト(表、索引またはクラスタ)にある未使用領域に関する情報を戻します。

ASA_RECOMMENDATIONSファンクション

このファンクションは、自動セグメント・アドバイザの保存された結果を使用してリコメンデーションを戻します。また、指定したオブジェクトに対する最新の実行結果を戻します。

構文

DBMS_SPACE.ASA_RECOMMENDATIONS (
all_runs        IN    VARCHAR2 DEFAULT := TRUE,
show_manual     IN    VARCHAR2 DEFAULT := TRUE,
show_findings   IN    VARCHAR2 DEFAULT := FALSE)
RETURN ASA_RECO_ROW_TB PIPELINED;

パラメータ

表145-4 ASA_RECOMMENDATIONSプロシージャのパラメータ

パラメータ

説明

all_runs

TRUEに設定すると、自動セグメント・アドバイザのすべての実行に関するリコメンデーションまたは検索結果を戻します。FALSEに設定すると、LATEST実行の結果のみを戻します。LATESTは、セグメント・アドバイザを手動で起動している場合は影響がありません。自動アドバイザの場合のみに適用できます。

show_manual

TRUEに設定すると、手動による起動の結果のみを表示します。自動アドバイザの結果は除外されます。FALSEに設定すると、セグメント・アドバイザの手動による起動の結果は戻されません。

show_findings

リコメンデーションではなく、検索結果のみを表示します。

CREATE_INDEX_COSTプロシージャ

このプロシージャでは、既存の表に索引を作成するコストを判断します。索引の作成に使用するDDL文を入力します。このプロシージャは、索引の作成に必要な記憶域を出力します。

構文

DBMS_SPACE.CREATE_INDEX_COST (
ddl             IN    VARCHAR2,
used_bytes      OUT   NUMBER,
alloc_bytes     OUT   NUMBER,
plan_table      IN    VARCHAR2 DEFAULT NULL);

プラグマ

pragma restrict_references(create_index_cost,WNDS);

パラメータ

表145-5 CREATE_INDEX_COSTプロシージャのパラメータ

パラメータ

説明

ddl

索引作成のDDL文。

used_bytes

実際の索引データを示すバイト数。

alloc_bytes

表領域に作成されたときの索引のサイズ。

plan_table

使用するPLAN TABLE。デフォルトはNULLです。

使用上の注意

- 索引が作成される表は、すでに存在している必要があります。

- 索引サイズの計算は、セグメント上で集められた統計情報に依存します。

- 直近に表の分析が行われている必要があります。

- 正しい統計情報がない場合は、このプロシージャでエラーが発生しなくても、結果が不正確になる可能性があります。

CREATE_TABLE_COSTプロシージャ

このプロシージャは、様々な属性を備えた表のサイズを判断するため、容量計画で使用されます。オブジェクトのサイズは、表領域の記憶域の属性、表領域のブロック・サイズなどによって大きく異なります。このプロシージャには、2つのオーバーロードがあります。

- 最初のバージョンでは、表の列情報を引数として使用して、表サイズを出力します。

- 2つ目のバージョンでは、表の標準行サイズを引数として使用し、表サイズを出力します。

このプロシージャは、ディクショナリ管理表領域とローカル管理表領域のエクステント管理でも、手動および自動によるセグメント領域管理でも使用できます。

構文

DBMS_SPACE.CREATE_TABLE_COST (
tablespace_name    IN VARCHAR2,
avg_row_size       IN NUMBER,
row_count          IN NUMBER,
pct_free           IN NUMBER,
used_bytes         OUT NUMBER,
alloc_bytes        OUT NUMBER);

DBMS_SPACE.CREATE_TABLE_COST (
tablespace_name    IN VARCHAR2,
colinfos           IN CREATE_TABLE_COST_COLUMNS,
row_count          IN NUMBER,
pct_free           IN NUMBER,
used_bytes         OUT NUMBER,
alloc_bytes        OUT NUMBER);

CREATE TYPE create_table_cost_colinfo IS OBJECT (
COL_TYPE   VARCHAR(200),
COL_SIZE   NUMBER);

パラメータ

表145-6 CREATE_TABLE_COSTプロシージャのパラメータ

パラメータ

説明

tablespace_name

オブジェクトが作成される表領域。デフォルトはSYSTEM表領域です。

avg_row_size

表の予測平均行サイズ。

colinfos

列の説明。

row_count

表の予測平均行数。

pct_free

将来の更新で既存行の拡張に使用される、各ブロックにおける空き領域のパーセント。

used_bytes

ユーザー・データが使用する領域。

alloc_bytes

表領域のエクステント特性を考慮に入れたオブジェクトのサイズ。

使用上の注意

- used_bytesは、データが使用する実際のバイト数を表します。このサイズには、ブロック・メタデータ、PCTFREEなどによるオーバーヘッドが含まれます。

- alloc_bytesは、表領域に作成されるときの表のサイズを示します。このサイズには、表領域におけるエクステントのサイズ、および表領域エクステント管理のプロパティが考慮されています。

例

-- review the parameters
SELECT argument_name, data_type, type_owner, type_name
FROM all_arguments
WHERE object_name = 'CREATE_TABLE_COST'
AND overload = 2

-- examine the input parameter type
SELECT text
FROM dba_source
WHERE name = 'CREATE_TABLE_COST_COLUMNS';

-- drill down further into the input parameter type
SELECT text
FROM dba_source
WHERE name = 'create_table_cost_colinfo';

set serveroutput on

DECLARE
ub NUMBER;
ab NUMBER;
cl sys.create_table_cost_columns;
BEGIN
cl := sys.create_table_cost_columns( sys.create_table_cost_colinfo('NUMBER',10),
sys.create_table_cost_colinfo('VARCHAR2',30),
sys.create_table_cost_colinfo('VARCHAR2',30),
sys.create_table_cost_colinfo('DATE',NULL));

DBMS_SPACE.CREATE_TABLE_COST('SYSTEM',cl,100000,0,ub,ab);

DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));
DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));
END;
/

FREE_BLOCKSプロシージャ

このプロシージャは、オブジェクト(表、索引またはクラスタ)にある空きブロックに関する情報を戻します。自動セグメント領域管理セグメントでの空きブロック情報の詳細は、「SPACE_USAGEプロシージャ」を参照してください。

構文

DBMS_SPACE.FREE_BLOCKS (
segment_owner     IN  VARCHAR2,
segment_name      IN  VARCHAR2,
segment_type      IN  VARCHAR2,
freelist_group_id IN  NUMBER,
free_blks         OUT NUMBER,
scan_limit        IN  NUMBER DEFAULT NULL,
partition_name    IN  VARCHAR2 DEFAULT NULL);

プラグマ

pragma restrict_references(free_blocks,WNDS);

パラメータ

表145-7 FREE_BLOCKSプロシージャのパラメータ

パラメータ

説明

segment_owner

分析するセグメントのスキーマ名。

segment_name

分析するセグメントのセグメント名。

segment_type

分析するセグメントのタイプ(TABLE、INDEXまたはCLUSTER):

- TABLE

- TABLE PARTITION

- TABLE SUBPARTITION

- INDEX

- INDEX PARTITION

- INDEX SUBPARTITION

- CLUSTER

- LOB

- LOB PARTITION

- LOB SUBPARTITION

freelist_group_id

空きリスト・サイズが計算される空きリスト・グループ(インスタンス)。

free_blks

指定されたグループに関する空きブロック数を戻します。

scan_limit

読み込む空きリストのブロックの最大数(オプション)。

空きリストにX個のブロックがあるかのみを確認する場合は、X個のスキャン制限を使用します。

partition_name

分析するセグメントのパーティション名。

これは、パーティション表についてのみ使用します。サブパーティションの名前は、パーティションがコンポジットのときに使用します。

例

次の例では、4つの空きリスト・グループを持つ、SCOTTスキーマにあるCLUSクラスタが使用されます。CLUSの空きリスト・グループ3にあるブロック数が戻されます。

DBMS_SPACE.FREE_BLOCKS('SCOTT', 'CLUS', 'CLUSTER', 3, :free_blocks);

注意:
scan_limitが正数でない場合は、エラーが発生します。

ISDATAFILEDROPPABLE_NAMEプロシージャ

このプロシージャは、データファイルが削除可能かどうかを確認します。実際にファイルを削除する前にこのプロシージャがコールされる場合があります。

構文

DBMS_SPACE.ISDATAFILEDROPPABLE_NAME (
filename     IN     VARCHAR2,
value        OUT    NUMBER);

プラグマ

pragma restrict_references(free_blocks,WNDS);

パラメータ

表145-8 ISDATAFILEDROPPABLE_NAMEプロシージャのパラメータ

パラメータ

説明

filename

ファイルの名前。

value

ファイルが削除可能でない場合、値: 0、ファイルが削除可能な場合、1。

例

DECLARE   fname    VARCHAR2(100);   retval   NUMBER;BEGIN   SELECT file_name   INTO fname   FROM dba_data_files   WHERE file_name like '%empty%';DBMS_SPACE.ISDATAFILEDROPPABLE_NAME(fname, retval);DBMS_OUTPUT.PUT_LINE(retval);END;/

OBJECT_DEPENDENT_SEGMENTSファンクション

この表ファンクションは、指定したオブジェクトに関連付けられたセグメントのリストを戻します。

構文

DBMS_SPACE.OBJECT_DEPENDENT_SEGMENTS(
objowner    IN     VARCHAR2,
objname     IN     VARCHAR2,
partname    IN     VARCHAR2,
objtype     IN     NUMBER)
RETURN dependent_segments_table PIPELINED;

パラメータ

表145-9 OBJECT_DEPENDENT_SEGMENTSファンクションのパラメータ

パラメータ

説明

objowner

オブジェクトを含むスキーマ。

objname

オブジェクトの名前。

partname

パーティションの名前。

objtype

オブジェクトのタイプ:

- OBJECT_TYPE_TABLE constant positive := 1;

- OBJECT_TYPE_NESTED_TABLE constant positive := 2;

- OBJECT_TYPE_INDEX constant positive := 3;

- OBJECT_TYPE_CLUSTER constant positive := 4;

- OBJECT_TYPE_TABLE_PARTITION constant positive := 7;

- OBJECT_TYPE_INDEX_PARTITION constant positive := 8;

- OBJECT_TYPE_TABLE_SUBPARTITION constant positive := 9;

- OBJECT_TYPE_INDEX_SUBPARTITION constant positive := 10;

- OBJECT_TYPE_MV constant positive := 13;

- OBJECT_TYPE_MVLOG constant positive := 14;

戻り値

dependent_segments_tableの1行のコンテンツ:

TYPE object_dependent_segment IS RECORD (
segment_owner      VARCHAR2(100),
segment_name       VARCHAR2(100),
segment_type       VARCHAR2(100),
tablespace_name    VARCHAR2(100),
partition_name     VARCHAR2(100),
lob_column_name    VARCHAR2(100));

表145-10 OBJECT_DEPENDENT_SEGMENTタイプのパラメータ

パラメータ

説明

segment_owner

セグメントを含むスキーマ。

segment_name

セグメントの名前。

segment_type

セグメントのタイプ(表、索引、LOBなど)。

tablespace_name

表領域の名前。

partition_name

パーティションの名前(オプション)。

lob_column_name

LOB列の名前(オプション)。

OBJECT_GROWTH_TRENDファンクション

これは表ファンクションです。特定の時点におけるオブジェクトの領域使用が、行ごとに記述された1行以上の形式で、結果が出力されます。領域使用の合計は、Automatic Workload Repository Facilities(AWRF)から取得するか、または現在の領域使用を計算しAWRFから取得した領域使用デルタと組み合せて取得します。

構文

DBMS_SPACE.OBJECT_GROWTH_TREND (
object_owner           IN    VARCHAR2,
object_name            IN    VARCHAR2,
object_type            IN    VARCHAR2,
partition_name         IN    VARCHAR2 DEFAULT NULL,
start_time             IN    TIMESTAMP DEFAULT NULL,
end_time               IN    TIMESTAMP DEFAULT NULL,
interval               IN    DSINTERVAL_UNCONSTRAINED DEFAULT NULL,
skip_interpolated      IN    VARCHAR2 DEFAULT 'FALSE',
timeout_seconds        IN    NUMBER DEFAULT NULL,
single_datapoint_flag  IN    VARCHAR2 DEFAULT 'TRUE')
RETURN object_growth_trend_table PIPELINED;

パラメータ

表145-11 OBJECT_GROWTH_TRENDファンクションのパラメータ

パラメータ

説明

object_owner

オブジェクトを含むスキーマ。

object_name

オブジェクトの名前。

object_type

オブジェクトのタイプ。

partition_name

パーティションの名前。

start_time

この時間以降に生成された統計は、成長傾向の生成に使用されます。

end_time

この時間までに生成された統計は、成長傾向の生成に使用されます。

interval

サンプルを取得する間隔。

skip_interpolated

欠損値の補間をスキップするかどうかを指定します。

timeout_seconds

ファンクションのタイムアウト値(秒)。

single_data_point_flag

統計がない場合にセグメントのサンプルを取得するかどうかを指定します。

戻り値

OBJECT_GROWTH_TREND表ファンクションでは、出力を記述するためにobject_growth_trend_rowおよびobject_growth_trend_tableを使用します。

TYPE object_growth_trend_row IS RECORD(
timepoint      TIMESTAMP,
space_usage    NUMBER,
space_alloc    NUMBER,
quality        VARCHAR(20));

表145-12 OBJECT_GROWTH_TREND_ROWタイプのパラメータ

パラメータ

説明

timepoint

統計が記録された時間。

space_usage

データが使用する領域。

space_alloc

セグメントのサイズ。オーバーヘッドおよび未使用領域も含まれます。

quality

結果の品質。"GOOD"、"INTERPOLATED"、"PROJECTION"の値を取ります。

TYPE object_growth_trend_table IS TABLE OF object_growth_trend_row;

SPACE_USAGEプロシージャ

このプロシージャの最初の形式は、セグメント最高水位標のデータ・ブロックの領域使用量を示します。LOB、LOB PARTITIONSおよびLOB SUBPARTITIONSの使用量を計算できます。このプロシージャは、自動セグメント領域管理で作成された表領域でのみ使用できます。ビットマップ・ブロック、セグメント・ヘッダーおよびエクステント・マップ・ブロックはこのプロシージャの対象外です。このオーバーロードは、SECUREFILE LOBでは使用できないことに注意してください。

このプロシージャの2番目の形式は、SECUREFILE LOB領域使用量に関する情報を戻します。これは、LOBセグメント内のすべてのSECUREFILE LOBによって使用されている、ブロック内の領域容量を戻します。このプロシージャによって、LOB列によってアクティブに使用されている領域、保存期限が切れている空き領域および保存期限が切れていない空き領域が表示されます。このオーバーロードは、SECUREFILE LOBでのみ使用できることに注意してください。

構文

DBMS_SPACE.SPACE_USAGE(
segment_owner           IN  VARCHAR2,
segment_name            IN  VARCHAR2,
segment_type            IN  VARCHAR2,
unformatted_blocks      OUT NUMBER,
unformatted_bytes       OUT NUMBER,
fs1_blocks              OUT NUMBER,
fs1_bytes               OUT NUMBER,
fs2_blocks              OUT NUMBER,
fs2_bytes               OUT NUMBER,
fs3_blocks              OUT NUMBER,
fs3_bytes               OUT NUMBER,
fs4_blocks              OUT NUMBER,
fs4_bytes               OUT NUMBER,
full_blocks             OUT NUMBER,
full_bytes              OUT NUMBER,
partition_name          IN  VARCHAR2 DEFAULT NULL);

DBMS_SPACE.SPACE_USAGE(
segment_owner           IN    VARCHAR2,
segment_name            IN    VARCHAR2,
segment_type            IN    VARCHAR2,
segment_size_blocks     OUT   NUMBER,
segment_size_bytes      OUT   NUMBER,
used_blocks             OUT   NUMBER,
used_bytes              OUT   NUMBER,
expired_blocks          OUT   NUMBER,
expired_bytes           OUT   NUMBER,
unexpired_blocks        OUT   NUMBER,
unexpired_bytes         OUT   NUMBER,
partition_name          IN    VARCHAR2 DEFAULT NULL);

パラメータ

表145-13 SPACE_USAGEプロシージャのパラメータ

パラメータ

説明

segment_owner

分析するセグメントのスキーマ名。

segment_name

分析するセグメントの名前。

partition_name

分析するセグメントのパーティション名。

segment_type

分析するセグメントのタイプ(TABLE、INDEXまたはCLUSTER):

- TABLE

- TABLE PARTITION

- TABLE SUBPARTITION

- INDEX

- INDEX PARTITION

- INDEX SUBPARTITION

- CLUSTER

- LOB

- LOB PARTITION

- LOB SUBPARTITION

unformatted_blocks

未フォーマットのブロックの合計数。

unformatted bytes

未フォーマットのバイトの合計数。

fs1_blocks

空き領域が最低で0から25%のブロック数。

fs1_bytes

空き領域が最低で0から25%のバイト数。

fs2_blocks

空き領域が最低で25から50%のブロック数。

fs2_bytes

空き領域が最低で25から50%のバイト数。

fs3_blocks

空き領域が最低で50から75%のブロック数。

fs3_bytes

空き領域が最低で50から75%のバイト数。

fs4_blocks

空き領域が最低で75から100%のブロック数。

fs4_bytes

空き領域が最低で75から100%のバイト数。

ful1_blocks

セグメントが一杯になった場合のブロックの合計数。

full_bytes

セグメントが一杯になった場合のバイトの合計数。

segment_size_blocks

セグメントに割り当てられているブロックの数。

segment_size_bytes

セグメントに割り当てられているバイトの数。

used_blocks

アクティブなデータが含まれているLOBに割り当てられているブロックの数。

used_bytes

アクティブなデータが含まれているLOBに割り当てられているバイトの数。

expired_blocks

LOBでバージョン・データの保持に使用されている期限切れブロックの数。

expired_bytes

LOBでバージョン・データの保持に使用されている期限切れバイトの数。

unexpired_blocks

LOBでバージョン・データの保持に使用されている期限切れになっていないブロックの数。

unexpired_bytes

LOBでバージョン・データの保持に使用されている期限切れになっていないバイトの数。

partition_name

パーティションの名前(パーティションでない場合はNULL)。

例

variable unf number;
variable unfb number;
variable fs1 number;
variable fs1b number;
variable fs2 number;
variable fs2b number;
variable fs3 number;
variable fs3b number;
variable fs4 number;
variable fs4b number;
variable full number;
variable fullb number;

begin
dbms_space.space_usage('U1','T',
'TABLE',
:unf, :unfb,
:fs1, :fs1b,
:fs2, :fs2b,
:fs3, :fs3b,
:fs4, :fs4b,
:full, :fullb);
end;
/
print unf ;
print unfb ;
print fs4 ;
print fs4b;
print fs3 ;
print fs3b;
print fs2 ;
print fs2b;
print fs1 ;
print fs1b;
print full;
print fullb;

UNUSED_SPACEプロシージャ

このプロシージャは、オブジェクト(表、索引またはクラスタ)にある未使用領域に関する情報を戻します。

構文

DBMS_SPACE.UNUSED_SPACE (
segment_owner              IN  VARCHAR2,
segment_name               IN  VARCHAR2,
segment_type               IN  VARCHAR2,
total_blocks               OUT NUMBER,
total_bytes                OUT NUMBER,
unused_blocks              OUT NUMBER,
unused_bytes               OUT NUMBER,
last_used_extent_file_id   OUT NUMBER,
last_used_extent_block_id  OUT NUMBER,
last_used_block            OUT NUMBER,
partition_name             IN  VARCHAR2 DEFAULT NULL);

パラメータ

表145-14 UNUSED_SPACEプロシージャのパラメータ

パラメータ

説明

segment_owner

分析するセグメントのスキーマ名。

segment_name

分析するセグメントのセグメント名。

segment_type

分析するセグメントのタイプ(TABLE、INDEXまたはCLUSTER):

- TABLE

- TABLE PARTITION

- TABLE SUBPARTITION

- INDEX

- INDEX PARTITION

- INDEX SUBPARTITION

- CLUSTER

- LOB

- LOB PARTITION

- LOB SUBPARTITION

total_blocks

セグメント内のブロック合計数を戻します。

total_bytes

セグメント内のブロック合計数をバイト単位で戻します。

unused_blocks

未使用のブロック数を戻します。

unused_bytes

未使用のブロック数をバイト単位で戻します。

last_used_extent_file_id

データを含んだ最新エクステントのファイルIDを戻します。

last_used_extent_block_id

データを含んだ最新エクステントの開始ブロックIDを戻します。

last_used_block

データを含んだエクステント内の最終ブロックを戻します。

partition_name

分析するセグメントのパーティション名。

これは、パーティション表についてのみ使用します。サブパーティションの名前は、パーティションの構成時に使用します。

例

次の例では、必要なバインド変数を宣言してから実行します。

DBMS_SPACE.UNUSED_SPACE('SCOTT', 'EMP', 'TABLE', :total_blocks,
:total_bytes,:unused_blocks, :unused_bytes, :lastextf,
:last_extb, :lastusedblock);

146 DBMS_SPACE_ADMIN

DBMS_SPACE_ADMINパッケージは、ローカルに管理される表領域に対する機能を提供します。

関連項目:
DBMS_SPACE_ADMINの使用方法の例および説明の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_SPACE_ADMINの使用方法

- セキュリティ・モデル

- 定数

- 使用上の注意

- DBMS_SPACE_ADMINサブプログラムの要約

DBMS_SPACE_ADMINの使用方法

この項では、DBMS_SPACE_ADMINパッケージの使用に関連する項目について説明します。

- セキュリティ・モデル

- 定数

- 使用上の注意

セキュリティ・モデル

このパッケージは、SYS権限で実行されるため、このパッケージを実行する権限を持つユーザーは、ビットマップも操作できます。

定数

表146-1 DBMS_SPACE_ADMINの定数

定数

タイプ

値

説明

SEGMENT_VERIFY_EXTENTS

POSITIVE

1

セグメントが所有する領域の使用状況がビットマップに適切に反映されていることを検証します。

SEGMENT_VERIFY_EXTENTS_GLOBAL

POSITIVE

2

セグメントが所有する領域の使用状況がビットマップに適切に反映されており、この領域が他のセグメントから要求されていないことを検証します。

SEGMENT_MARK_CORRUPT

POSITIVE

3

一時セグメントを破損としてマークします。これにより、ディクショナリからの排除が容易になります(領域の再利用なし)。

SEGMENT_MARK_VALID

POSITIVE

4

破損した一時セグメントを有効としてマークします。これは、セグメントのエクステント・マップまたは他の場所での破損が解決され、セグメントを正常に削除できる場合に役立ちます。

SEGMENT_DUMP_EXTENT_MAP

POSITIVE

5

指定のセグメントのエクステント・マップをダンプします。

TABLESPACE_VERIFY_BITMAP

POSITIVE

6

表領域のビットマップを、その表領域内のセグメントのエクステント・マップを使用して検証し、すべて一致していることを検証します。

TABLESPACE_EXTENT_MAKE_FREE

POSITIVE

7

ブロック範囲(エクステント)を、ビットマップ上で空き領域としてマークします。

TABLESPACE_EXTENT_MAKE_USED

POSITIVE

8

ブロック範囲(エクステント)を、ビットマップ上で使用領域としてマークします。

SEGMENT_VERIFY_BASIC

POSITIVE

9

メタデータの基本的なチェックを実行します。

SEGMENT_VERIFY_DEEP

POSITIVE

10

詳細な検証を実行します。

SEGMENT_VERIFY_SPECIFIC

POSITIVE

11

セグメントに対して特定のチェックを実行します。

HWM_CHECK

POSITIVE

12

最高水位標(HWM)をチェックします。

BMB_CHECK

POSITIVE

13

L1 BMB、L2 BMBおよびL3 BMB(ビットマップ・ブロック)間の整合性をチェックします。

SEG_DICT_CHECK

POSITIVE

14

セグメント・ヘッダーと、対応するSEGエントリ間の一貫性をチェックします。

EXTENT_TS_BITMAP_CHECK

POSITIVE

15

エクステント・マップに対応する表領域ビットマップが使用領域としてマークされているかどうかをチェックします。

DB_BACKPOINTER_CHECK

POSITIVE

16

L1 BMB、L2 BMB、L3 BMBおよびデータ・ブロックが同一の親セグメントを指しているかをチェックします。

EXTENT_SEGMENT_BITMAP_CHECK

POSITIVE

17

ビットマップ・ブロックとエクステント・マップ間に一貫性があるかどうかをチェックします。

BITMAPS_CHECK

POSITIVE

18

ブロックを示すビットマップの状態に一貫性があるかどうかをデータ・ブロックからチェックします。

TS_VERIFY_BITMAPS

POSITIVE

19

表領域ビットマップとその表領域に属するエクステントに一貫性があるかどうかをチェックします。

TS_VERIFY_DEEP

POSITIVE

20

DEEPオプションを指定してTS_VERIFY_BITMAPSおよびTS_VERIFY_SEGMENTSを実行します。

TS_VERIFY_SEGMENTS

POSITIVE

21

表領域内のすべてのセグメントに対してASSM_SEGMENT_VERIFYを実行します。BASICオプションまたはDEEPオプションを使用します。

SEGMENTS_DUMP_BITMAP_SUMMARY

POSITIVE

27

ビットマップ・ブロックの要約のみをダンプします。

使用上の注意

SYSTEM表領域を移行する前に、次の条件を満たす必要があります。これらの条件は、コールド・バックアップを除くTABLESPACE_MIGRATE_TO_LOCALプロシージャによって施行されます。

- データベースに、SYSTEMでないデフォルトの一時表領域があること。

- ディクショナリ管理表領域には、ロールバック・セグメントを保持できないこと。

- ローカル管理表領域には、最低1つのオンライン・ロールバック・セグメントがあること。自動UNDO管理を使用している場合は、UNDO表領域がオンラインであること。

- ロールバック・セグメントまたはUNDO表領域を含む表領域を除くすべての表領域が、読取り専用であること。

- データベースのコールド・バックアップがあること。

- システムが制限モードであること。

DBMS_SPACE_ADMINサブプログラムの要約

表146-2 DBMS_SPACE_ADMINパッケージのサブプログラム

サブプログラム

説明

ASSM_SEGMENT_VERIFYプロシージャ

ASSM(自動セグメント領域管理)表領域に作成されたセグメントを検証します。

ASSM_TABLESPACE_VERIFYプロシージャ

ASSM表領域を検証します。

DROP_EMPTY_SEGMENTSプロシージャ

空の表(または表の一部)とその依存オブジェクトからセグメントを削除します。

MATERIALIZE_DEFERRED_SEGMENTSプロシージャ

遅延セグメント作成が設定された表(および表の一部)とその依存オブジェクトに対してセグメントを実体化します。

SEGMENT_CORRUPTプロシージャ

セグメントを破損または有効としてマークし、適切なエラーのリカバリを可能にします。

SEGMENT_DROP_CORRUPTプロシージャ

現在破損としてマークされているセグメントを削除します(領域の再生なし)。

SEGMENT_DUMPプロシージャ

指定セグメントのセグメント・ヘッダーとエクステント・マップをダンプします。

SEGMENT_VERIFYプロシージャ

セグメントのエクステント・マップの一貫性を検証します。

TABLESPACE_FIX_BITMAPSプロシージャ

適切なブロック範囲(エクステント)を、ビットマップ上で空き領域または使用領域としてマークします。

TABLESPACE_FIX_SEGMENT_STATESプロシージャ

移行が異常終了した表領域内のセグメントの状態を修正します。

TABLESPACE_MIGRATE_FROM_LOCALプロシージャ

ローカル管理表領域を、ディクショナリ管理表領域に移行します。

TABLESPACE_MIGRATE_TO_LOCALプロシージャ

表領域を、ディクショナリ管理形式からローカル管理形式に移行します。

TABLESPACE_REBUILD_BITMAPSプロシージャ

適切なビットマップを再作成します。

TABLESPACE_REBUILD_QUOTASプロシージャ

指定の表領域について割当て制限を再作成します。

TABLESPACE_RELOCATE_BITMAPSプロシージャ

指定先にビットマップを再配置します。

TABLESPACE_VERIFYプロシージャ

表領域内のセグメントについて、ビットマップとエクステント・マップが同期していることを検証します。

ASSM_SEGMENT_VERIFYプロシージャ

このプロシージャは、セグメントを指定すると、その領域のメタデータ・ブロックの基本的な一貫性、および領域メタデータとセグメント・データ・ブロックの間の一貫性を検証します。このプロシージャは、自動セグメント領域管理(ASSM)表領域に作成されたセグメントを検証します。

ただし、基本的な検証と詳細な検証の間には次の違いがあります。

- 基本的な検証には、領域メタデータの一貫性チェックが含まれます。たとえば、レベル1、レベル2、レベル3のビットマップ・ブロック間の整合性、セグメントのエクステント・マップとレベル1のビットマップ範囲との一貫性などがチェックされます。

- 詳細な検証には、データ・ブロックと領域メタデータ・ブロック間の一貫性チェックが含まれます。たとえば、レベル1の親ビットマップ・ブロックをデータ・ブロックが正しく指しているかどうか、およびデータ・ブロックの空き状態とそのデータ・ブロックに対応するレベル1ビットマップ・ブロックのビットの空き状態に一貫性があるかどうかなどがチェックされます。

構文

DBMS_SPACE_ADMIN.ASSM_SEGMENT_VERIFY (
segment_owner   IN VARCHAR2,
segment_name    IN VARCHAR2,
segment_type    IN VARCHAR2,
partition_name  IN VARCHAR2,
verify_option   IN POSITIVE  DEFAULT SEGMENT_VERIFY_BASIC,
attrib          IN POSITIVE  DEFAULT NULL);

パラメータ

表146-3 ASSM_SEGMENT_VERIFYプロシージャのパラメータ

パラメータ

説明

segment_owner

セグメントを所有するスキーマ。

segment_name

検証するセグメントの名前。

segment_type

セグメントのネームスペースは、TABLE、TABLE PARTITION、TABLE SUBPARTITION、INDEX、INDEX PARTITION、INDEX SUBPARTITION、LOB、LOB PARTITION、LOB SUBPARTITION、CLUSTERのいずれかです。

partition_name

パーティションまたはサブパーティションの名前。

verify_option

次のオプションのいずれかです。

- SEGMENT_VERIFY_BASIC := 9。メタデータの基本的なチェックを実行します(デフォルト)。

- SEGMENT_VERIFY_DEEP := 10。詳細な検証を実行します。

- SEGMENT_VERIFY_SPECIFIC := 11。セグメントに対して特定のチェックを実行します。

attrib

SEGMENT_VERIFY_SPECIFICをオプションとして指定する場合、attribは次のいずれかにできます。

- HWM_CHECK := 12。最高水位標の情報が正確かどうかをチェックします。

- BMB_CHECK := 13。領域ビットマップ・ブロックにセグメント・ヘッダーへの正しいバックポインタがあるかどうかをチェックします。

- SEG_DICT_CHECK := 14。セグメントのディクショナリ情報が正確かどうかをチェックします。

- EXTENT_TS_BITMAP_CHECK := 15。エクステント・マップとファイル・レベルのビットマップで一貫性があるかどうかをチェックします。

- DB_BACKPOINTER_CHECK := 16。データ・ブロックに領域メタデータ・ブロックへの正しいバックポインタがあるかどうかをチェックします。

- EXTENT_SEGMENT_BITMAP_CHECK := 17。セグメントのエクステント・マップがセグメントのビットマップと一致しているかどうかをチェックします。

- BITMAPS_CHECK := 18。領域ビットマップ・ブロックが正確かどうかをチェックします。

使用上の注意

- このプロシージャを使用するには、SYSDBA権限が必要です。

- 相対ファイル番号およびヘッダー・ブロック番号(header_relative_fileパラメータおよびheader_blockパラメータ)は、DBA_SEGMENTSを問い合せて決定します。

- このプロシージャは、sid_ora_process_ID.trcという名前のダンプ・ファイルを、USER_DUMP_DEST初期化パラメータで指定した場所に出力します。

ASSM_TABLESPACE_VERIFYプロシージャ

このプロシージャは、ASSM表領域に作成されたすべてのセグメントを検証します。セグメントごとの検証では、その領域のメタデータ・ブロックの基本的な一貫性チェック、および領域メタデータとセグメント・データ・ブロックの間の一貫性チェックが実行されます。

構文

DBMS_SPACE_ADMIN.ASSM_TABLESPACE_VERIFY (
tablespace_name   IN VARCHAR2,
ts_option         IN POSITIVE,
segment_option    IN POSITIVE DEFAULT NULL);

パラメータ

表146-4 ASSM_TABLESPACE_VERIFYプロシージャのパラメータ

パラメータ

説明

tablespace_name

検証する表領域の名前。この表領域はASSM表領域である必要があります。

ts_option

- TS_VERIFY_BITMAPS := 19。ビットマップをエクステントと照合して検証します。これによって、使用領域としてマークされているか、または誤って空き領域となっているビットが検出され、エクステントの複数割当てが検出されます。ファイルのメタデータは、file$および制御ファイルと照合されて検証されます。

- TS_VERIFY_DEEP := 20。このオプションを使用して、ファイルのビットマップを検証し、すべてのセグメントのチェックを実行します。

- TS_VERIFY_SEGMENTS := 21。このオプションは、表領域内のすべてのセグメントでSEGMENT_VERIFYを起動するために使用します。オプションとして、表領域内のすべてのセグメントを問い合せるスクリプトを作成し、SEGMENT_VERIFYを起動できます。

segment_option

TS_VERIFY_SEGMENTSを指定すると、segment_optionは次のいずれかになります。

- SEGMENT_VERIFY_BASIC := 9

- SEGMENT_VERIFY_DEEP := 10

TS_VERIFY_DEEPまたはTS_VERIFY_BITMAPSを指定すると、segment_optionの値はNULLになります。

使用上の注意

- このプロシージャを使用するには、SYSDBA権限が必要です。

- このプロシージャは、sid_ora_process_ID.trcという名前のダンプ・ファイルを、USER_DUMP_DEST初期化パラメータで指定した場所に出力します。

DROP_EMPTY_SEGMENTSプロシージャ

このプロシージャは、空の表(または表の一部)とその依存オブジェクトからセグメントを削除します。

構文

DBMS_SPACE_ADMIN.DROP_EMPTY_SEGMENTS (
schema_name       IN     VARCHAR2   DEFAULT NULL,
table_name        IN     VARCHAR2   DEFAULT NULL,
partition_name    IN     VARCHAR2   DEFAULT NULL);

パラメータ

表146-5 DROP_EMPTY_SEGMENTSプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

table_name

表の名前。

partition_name

パーティションの名前。

使用上の注意

スキーマ名が指定されると、このプロシージャはそのスキーマ内のすべての表をスキャンします。各表について、表またはその一部が空であることが検出され、その表が一定の基準を満たしている場合(この制限は遅延セグメント作成の制限に関する項に記載されている制限と同じです)、空の表の一部および関連索引のセグメントは、対応するLOBデータおよび索引のセグメントとともに削除されます。後続の挿入操作では、同じプロパティを持つセグメントが作成されます。

オプション:

- schema_nameを指定しないと、すべてのスキーマに属している表がスキャンされます。

- schema_nameとtable_nameの両方を指定すると、指定した表に対して操作が実行されます。

- 3つの引数をすべて指定すると、操作は指定したパーティションとその依存オブジェクトに制限されます。

MATERIALIZE_DEFERRED_SEGMENTSプロシージャ

このプロシージャは、遅延セグメント作成が設定された表(および表の一部)とその依存オブジェクトに対してセグメントを実体化します。

構文

DBMS_SPACE_ADMIN.MATERIALIZE_DEFERRED_SEGMENTS (
schema_name       IN     VARCHAR2   DEFAULT NULL,
table_name        IN     VARCHAR2   DEFAULT NULL,
partition_name    IN     VARCHAR2   DEFAULT NULL);

パラメータ

表146-6 MATERIALIZE_DEFERRED_SEGMENTSプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

table_name

表の名前。

partition_name

パーティションの名前。

使用上の注意

スキーマ名が指定されると、このプロシージャはそのスキーマ内のすべての表をスキャンします。各表について、表またはその一部に遅延セグメント・プロパティが設定されている場合、それらの表の一部とその依存オブジェクトに対して新規セグメントが作成されます。

オプション:

- schema_nameを指定しないと、すべてのスキーマに属している表がスキャンされます。

- schema_nameとtable_nameの両方を指定すると、指定した表に対して操作が実行されます。

- 3つの引数をすべて指定すると、操作は指定したパーティションとその依存オブジェクトに制限されます。

SEGMENT_CORRUPTプロシージャ

このプロシージャは、適切なエラー・リカバリを実行できるように、セグメントを破損または有効としてマークします。これは、SYSTEM表領域では使用できません。

構文

DBMS_SPACE_ADMIN.SEGMENT_CORRUPT (
tablespace_name         IN    VARCHAR2,
header_relative_file    IN    POSITIVE,
header_block            IN    POSITIVE,
corrupt_option          IN    POSITIVE  DEFAULT SEGMENT_MARK_CORRUPT);

パラメータ

表146-7 SEGMENT_CORRUPTプロシージャのパラメータ

パラメータ

説明

tablespace_name

セグメントが常駐している表領域名。

header_relative_file

セグメント・ヘッダーの相対ファイル番号。

header_block

セグメント・ヘッダーの相対ファイル番号。

corrupt_option

SEGMENT_MARK_CORRUPT(デフォルト)またはSEGMENT_MARK_VALID。

使用上の注意

セグメント・ヘッダー・ブロックの相対ファイル番号およびブロック番号(header_relative_fileパラメータおよびheader_blockパラメータ)は、DBA_SEGMENTSを問い合せて決定します。

例

次の例では、セグメントを破損としてマークします。

EXECUTE DBMS_SPACE_ADMIN.SEGMENT_CORRUPT('USERS', 4, 33, DBMS_SPACE_ADMIN.SEGMENT_MARK_CORRUPT);

次の例では、破損のセグメントを有効としてマークします。

EXECUTE DBMS_SPACE_ADMIN.SEGMENT_CORRUPT('USERS', 4, 33, DBMS_SPACE_ADMIN.SEGMENT_MARK_VALID);

SEGMENT_DROP_CORRUPTプロシージャ

このプロシージャは、現在破損としてマークされているセグメントを削除します(領域の再生なし)。これを実行するには、セグメントが一時的としてマークされている必要があります。破損のセグメントを一時的としてマークするには、セグメントでDROPコマンドを発行します。

構文

DBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT (
tablespace_name         IN    VARCHAR2,
header_relative_file    IN    POSITIVE,
header_block            IN    POSITIVE);

パラメータ

表146-8 SEGMENT_DROP_CORRUPTプロシージャのパラメータ

パラメータ

説明

tablespace_name

セグメントが常駐している表領域名。

header_relative_file

セグメント・ヘッダーの相対ファイル番号。

header_block

セグメント・ヘッダーの相対ファイル番号。

使用上の注意

- セグメント用の領域は解放されないため、TABLESPACE_FIX_BITMAPSプロシージャまたはTABLESPACE_REBUILD_BITMAPSプロシージャを使用して調整する必要があります。

- SYSTEM表領域では使用できません。

- セグメント・ヘッダー・ブロックの相対ファイル番号およびブロック番号(header_relative_fileパラメータおよびheader_blockパラメータ)は、DBA_SEGMENTSを問い合せて決定します。

例

EXECUTE DBMS_SPACE_ADMIN.SEGMENT_DROP_CORRUPT('USERS', 4, 33);

SEGMENT_DUMPプロシージャ

このプロシージャは、特定のセグメントのセグメント・ヘッダーおよびビットマップ・ブロックを、USER_DUMP_DEST初期化パラメータで指定した場所にダンプします。

構文

DBMS_SPACE_ADMIN.SEGMENT_DUMP (
tablespace_name         IN    VARCHAR2,
header_relative_file    IN    POSITIVE,
header_block            IN    POSITIVE,
dump_option             IN    POSITIVE  DEFAULT SEGMENT_DUMP_EXTENT_MAP);

パラメータ

表146-9 SEGMENT_DUMPプロシージャのパラメータ

パラメータ

説明

tablespace_name

セグメントが常駐している表領域名。

header_relative_file

セグメント・ヘッダーの相対ファイル番号。

header_block

セグメント・ヘッダーの相対ファイル番号。

dump_option

次のオプションのいずれかです。

- SEGMENT_DUMP_EXTENT_MAP

- SEGMENT_DUMP_BITMAP_SUMMARY

使用上の注意

- SEGMENT_DUMP_BITMAP_SUMMARYをdump_optionパラメータとして渡す場合は、少し簡略化されたダンプ(セグメント・ヘッダーおよびビットマップ・ブロックの要約は含むが、各ブロックの空き領域の割合は含まない)を作成できます。

- セグメント・ヘッダー・ブロックの相対ファイル番号およびブロック番号(header_relative_fileパラメータおよびheader_blockパラメータ)は、DBA_SEGMENTS.HEADER_FILEを問い合せて決定します。HEADER_FILEが1023よりも大きい場合、DBA_DATA_FILES.RELATIVE_FNOを使用します。

例

EXECUTE DBMS_SPACE_ADMIN.SEGMENT_DUMP('USERS', 4, 33);

SEGMENT_VERIFYプロシージャ

このプロシージャは、セグメントのエクステント・マップと表領域のファイル・ビットマップ間の一貫性をチェックします。

構文

DBMS_SPACE_ADMIN.SEGMENT_VERIFY (
tablespace_name         IN    VARCHAR2,
header_relative_file    IN    POSITIVE,
header_block            IN    POSITIVE,
verify_option           IN    POSITIVE  DEFAULT SEGMENT_VERIFY_EXTENTS);

パラメータ

表146-10 SEGMENT_VERIFYプロシージャのパラメータ

パラメータ

説明

tablespace_name

セグメントが常駐している表領域名。

header_relative_file

セグメント・ヘッダーの相対ファイル番号。

header_block

セグメント・ヘッダーの相対ファイル番号。

verify_option

チェックの種類: SEGMENT_VERIFY_EXTENTSまたはSEGMENT_VERIFY_EXTENTS_GLOBAL

使用上の注意

- すべてのブロック範囲で誤った領域表現として検出された異常は、ブロック範囲、ビットマップ・ブロック、ビットマップ・ブロック範囲、異常情報としてトレース・ファイルに出力されます。レポートされる問題の種類は、空きとみなされない空き領域、空きとみなされた使用領域、および複数のセグメントで使用中とみなされた同一領域です。

- セグメント・ヘッダー・ブロックの相対ファイル番号およびブロック番号(header_relative_fileパラメータおよびheader_blockパラメータ)は、DBA_SEGMENTSを問い合せて決定します。

例

次の例では、相対ファイル番号4、ブロック番号33のセグメント・ヘッダーを持つセグメントで、エクステント・マップとビットマップが同期していることを検証します。

EXECUTE DBMS_SPACE_ADMIN.SEGMENT_VERIFY('USERS', 4, 33, DBMS_SPACE_ADMIN.SEGMENT_VERIFY_EXTENTS);

TABLESPACE_FIX_BITMAPSプロシージャ

このプロシージャは、適切なブロック範囲(エクステント)を、ビットマップ上で空きまたは使用中としてマークします。これは、SYSTEM表領域では使用できません。

構文

DBMS_SPACE_ADMIN.TABLESPACE_FIX_BITMAPS (
tablespace_name         IN    VARCHAR2,
dbarange_relative_file  IN    POSITIVE,
dbarange_begin_block    IN    POSITIVE,
dbarange_end_block      IN    POSITIVE,
fix_option              IN    POSITIVE);

パラメータ

表146-11 TABLESPACE_FIX_BITMAPSプロシージャのパラメータ

パラメータ

説明

tablespace_name

表領域の名前。

dbarange_relative_file

ブロック範囲(エクステント)の相対ファイル番号。

dbarange_begin_block

エクステントの開始ブロック番号。

dbarange_end_block

エクステントの終了ブロック番号(この番号を含める)。

fix_option

次のオプションのいずれかです。

- TABLESPACE_EXTENT_MAKE_FREE

- TABLESPACE_EXTENT_MAKE_USED

例

次の例では、相対ファイル番号4の、ブロック番号33からブロック番号83までの51ブロックのビットを、ビットマップ内でUSEDとしてマークします。

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_FIX_BITMAPS('USERS', 4, 33, 83, DBMS_SPACE_ADMIN.EXTENT_MAKE_USED);

または、オプションにTABLESPACE_EXTENT_MAKE_FREEを指定して、ビットマップ内でビットを空きとしてマークします。BEGINブロックとENDブロックはエクステント境界内にあり、エクステントの倍数である必要があります(そうでない場合は、エラーが発生します)。

TABLESPACE_FIX_SEGMENT_STATESプロシージャ

このプロシージャは、移行が異常終了した表領域内のセグメントの状態を修正します。ローカルから、またはローカルへの表領域の移行中、セグメントは一時的な状態に置かれます。移行が異常終了すると、イベント10906の設定時点でセグメントの状態がSMONによって訂正されます。セグメントがこのような一時的な状態にあるデータベースは、ダウングレードできません。このプロシージャは、このようなセグメントの状態を修正するために使用できます。

構文

DBMS_SPACE_ADMIN.TABLESPACE_FIX_SEGMENT_STATES (
tablespace_name     IN    VARCHAR);

パラメータ

表146-12 TABLESPACE_FIX_SEGMENT_STATESプロシージャのパラメータ

パラメータ名

説明

tablespace_name

セグメントを修正する必要がある表領域の名前。

使用上の注意

このプロシージャをコールしたときは、表領域はオンラインを維持して読込み/書込みを行う必要があります。

例

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_FIX_SEGMENT_STATES('TS1')

TABLESPACE_MIGRATE_FROM_LOCALプロシージャ

このプロシージャは、ローカルに管理される表領域をディクショナリ管理の表領域に移行します。

構文

DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL (
tablespace_name         IN    VARCHAR2);

パラメータ

表146-13 TABLESPACE_MIGRATE_FROM_LOCALプロシージャのパラメータ

パラメータ

説明

tablespace_name

表領域の名前。

使用上の注意

移行中、表領域はオンラインを維持して読込み/書込みを行う必要があります。一時表領域の移行とSYSTEM表領域の移行はサポートされていません。

例

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL('USERS');

TABLESPACE_MIGRATE_TO_LOCALプロシージャ

このプロシージャは、ディクショナリ管理形式からローカル管理形式に表領域を移行します。ローカル管理形式に移行した表領域は、ユーザーが管理します。

構文

DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL (
tablespace_name     IN     VARCHAR2,
unit_size           IN     POSITIVE DEFAULT NULL,
rfno                IN     POSITIVE DEFAULT NULL);

パラメータ

表146-14 TABLESPACE_MIGRATE_TO_LOCALプロシージャのパラメータ

パラメータ名

説明

tablespace_name

移行する表領域の名前。

unit_size

ブロック数で指定された表領域のビットマップ単位サイズ(割当て可能な領域の最小許容チャンク・サイズ)。

rfno

ビットマップ・ブロックが配置されるファイルの相対ファイル番号。

使用上の注意

- SYSTEM表領域を移行する前に、読込み/書込みモードで使用するディクショナリ管理の表領域をローカル管理に移行してください。SYSTEM表領域を移行した後で、ディクショナリ管理表領域を読込み/書込みモードに変更することはできません。

関連項目:
『Oracle Database管理者ガイド』

- 移行中、表領域はオンラインを維持して読込み/書込みを行う必要があります。一時表領域は移行できないことに注意してください。

- 割当て単位はオプションで指定できます。デフォルトは、表領域の全エクステント(使用中または空き)の最大公約数に基づいてシステムで計算されます。この数値は、表領域のMINIMUM EXTENTに基づきさらに減少します(MINIMUM EXTENTが指定されていない場合は5)。したがって、計算された値が表領域のMINIMUM EXTENTを超えることはありません。各ファイルの最後にある空きエクステントは、最大公約数の計算については無視されます。単位サイズを指定する場合は、システムで計算されたunit_sizeの因数とする必要があり、それ以外の場合はエラー・メッセージが戻ります。

- 相対ファイル番号のパラメータは、目的のファイルにビットマップを配置するために使用されます。ファイルに領域が見つからないと、エラーが発行されます。指定するデータファイルは、移行する表領域の一部である必要があります。データ・フローを指定しない場合、初期ビットマップ・ブロックを配置するデータ・フローはシステムで選択されます。初期ビットマップに必要な領域が見つからないと、エラーになります。

例

次の例は、最小エクステント・サイズ1MBで2KBのブロック・サイズの表領域'TS1'を移行します。

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('TS1', 512, 2);

ビットマップは、相対ファイル番号2のファイルに配置されます。

TABLESPACE_REBUILD_BITMAPSプロシージャ

このプロシージャは、適切なビットマップを再作成します。ビットマップ・ブロックが指定されていない場合は、指定の表領域のすべてのビットマップが再作成されます。

SYSTEM表領域では使用できません。

構文

DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS (
tablespace_name         IN    VARCHAR2,
bitmap_relative_file    IN    POSITIVE   DEFAULT NULL,
bitmap_block            IN    POSITIVE   DEFAULT NULL);

パラメータ

表146-15 TABLESPACE_REBUILD_BITMAPSプロシージャのパラメータ

パラメータ

説明

tablespace_name

表領域の名前。

bitmap_relative_file

再作成するビットマップ・ブロックの相対ファイル番号。

bitmap_block

再作成するビットマップ・ブロックのブロック番号。

使用上の注意

すべてのファイルの再作成のみサポートされます。

例

次の例では、USERS表領域にあるすべてのファイルについて、ビットマップを再作成します。

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS('USERS');

TABLESPACE_REBUILD_QUOTASプロシージャ

このプロシージャは、指定の表領域に関する割当て制限を再作成します。

構文

DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_QUOTAS (
tablespace_name         IN    VARCHAR2);

パラメータ

表146-16 TABLESPACE_REBUILD_QUOTASプロシージャのパラメータ

パラメータ

説明

tablespace_name

表領域の名前。

例

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_QUOTAS('USERS');

TABLESPACE_RELOCATE_BITMAPSプロシージャ

このプロシージャは、指定先にビットマップを再配置します。

構文

DBMS_SPACE_ADMIN.TABLESPACE_RELOCATE_BITMAPS (
tablespace_name    IN      VARCHAR2,
filno              IN      POSITIVE,
blkno              IN      POSITIVE);

パラメータ

表146-17 TABLESPACE_RELOCATE_BITMAPSプロシージャのパラメータ

パラメータ名

説明

tablespace_name

表領域の名前。

filno

宛先ファイルの相対ファイル番号。

blkno

宛先範囲のブロック番号。

使用上の注意

- 表領域のディクショナリ管理からローカル管理形式への移行を行うと、ビットマップ・ブロックを含んだSPACE HEADERセグメントが作成される場合があります。SPACE HEADERセグメントは、ユーザー・データとして取り扱われます。ユーザーがファイルのサイズを明示的にSPACE HEADERセグメント以下に変更すると、エラーが発行されます。制御情報を別の場所に移してからファイルのサイズを変更する場合は、TABLESPACE_RELOCATE_BITMAPSコマンドを使用します。

- このプロシージャは、SYSTEM表領域では使用できません。

- ビットマップの再配置中は、表領域はオンラインを維持して読込み/書込みを行う必要があります。ビットマップの再配置は、移行したローカル管理表領域でのみ実行できます。

例

EXECUTE  DBMS_SPACE_ADMIN.TABLESPACE_RELOCATE_BITMAPS('TS1', 3, 4);

ビットマップをファイル3、ブロック4に移動します。

注意:
ソース・アドレスと宛先アドレスはオーバーラップできません。宛先ブロック番号は単位の境界まで切り下げられます。宛先位置にユーザー・データが存在すると、エラーになります。

TABLESPACE_VERIFYプロシージャ

このプロシージャは、表領域内のセグメントについて、ビットマップとエクステント・マップが同期していることを検証します。

構文

DBMS_SPACE_ADMIN.TABLESPACE_VERIFY (
tablespace_name         IN    VARCHAR2,
verify_option           IN    POSITIVE DEFAULT TABLESPACE_VERIFY_BITMAP);

パラメータ

表146-18 TABLESPACE_VERIFYプロシージャのパラメータ

パラメータ

説明

tablespace_name

表領域の名前。

verify_option

TABLESPACE_VERIFY_BITMAPオプションのみがサポートされます。

例

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_VERIFY('USERS');

147 DBMS_SPD

DBMS_SPDパッケージは、SQLプラン・ディレクティブ(SPD)を管理するためのサブプログラムを提供します。

関連項目:

- 第155章「DBMS_STATS」

- SQLプラン・ディレクティブについては、『Oracle Database SQLチューニング・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_SPDの使用

- 概要

- セキュリティ・モデル

- ビュー

- DBMS_SPDサブプログラムの要約

DBMS_SPDの使用

- 概要

- セキュリティ・モデル

- ビュー

概要

このパッケージは、SQLプラン・ディレクティブ(SPD)を管理するためのサブプログラムを提供します。SPDは、Oracleによって自動的に生成されるオブジェクトです。たとえば、オプティマイザによって推測された単一表のカーディナリティが、表へのアクセス時に戻された実際の行数と異なることがOracleによって検出された場合、その表の動的統計を実行するディレクティブが自動的に作成されます。表を参照するSQL文がコンパイルされたときに、オプティマイザはその表の動的統計を実行し、より正確な推測値を取得します。

セキュリティ・モデル

DBMS_SPDは、実行者権限パッケージです。実行者は、このパッケージに含まれるほとんどのサブプログラムを実行するときに、ADMINISTER SQL MANAGEMENT OBJECT権限を必要とします。また、これらのサブプログラムは、現行のトランザクション(ある場合)をコミットし、操作を実行してから再度コミットします。

ビュー

DBAビューDBA_SQL_PLAN_DIRECTIVESは、システムで作成されたすべてのディレクティブを表示し、ビューDBA_SQL_PLAN_DIR_OBJECTSは、それらのディレクティブに含まれるオブジェクトを表示します。

DBMS_SPDサブプログラムの要約

表147-1 DBMS_SPDパッケージのサブプログラム

サブプログラム

説明

ALTER_SQL_PLAN_DIRECTIVEプロシージャ

SQLプラン・ディレクティブの様々な属性を変更します。

CREATE_STGTAB_DIRECTIVEプロシージャ

SQLプラン・ディレクティブをパック(エクスポート)するステージング表を作成します。

DROP_SQL_PLAN_DIRECTIVEプロシージャ

SQLプラン・ディレクティブを削除します。

FLUSH_SQL_PLAN_DIRECTIVEプロシージャ

SQL文の実行中にSGAメモリーに自動的に記録されるSQLプラン・ディレクティブの手動フラッシュを許可します。

GET_PREFSファンクション

SQLプラン・ディレクティブのプリファレンスの値を取得します。

PACK_STGTAB_DIRECTIVEファンクション

SQLプラン・ディレクティブをステージング表にパック(エクスポート)します。

SET_PREFSプロシージャ

SQLプラン・ディレクティブの様々なプリファレンスの設定を許可します。

UNPACK_STGTAB_DIRECTIVEファンクション

SQLプラン・ディレクティブをステージング表からアンパック(インポート)します。

ALTER_SQL_PLAN_DIRECTIVEプロシージャ

このプロシージャは、SQLプラン・ディレクティブの様々な属性を変更します。

構文

DBMS_SPD.ALTER_SQL_PLAN_DIRECTIVE (
directive_id        IN     NUMBER,
attribute_name      IN     VARCHAR2,
attribute_value     IN     VARCHAR2);

パラメータ

表147-2 ALTER_SQL_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

directive_id

SQLプラン・ディレクティブのID。

attribute_name

- ENABLED

- AUTO_DROP

attribute_value

有効な値は、次のとおりです。

- ENABLED:
- YESディレクティブが有効で使用可能な場合

- NOディレクティブが有効ではなく、使用不可の場合

- AUTO_DROP:
- SPD_RETENTION_WEEKSの期間使用されなかった場合、YESディレクティブを自動的に削除します。この動作はデフォルトです。

- NOディレクティブを自動的に削除しません。

例外

- ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

- ORA-28104 INVALID_INPUT: 入力値が無効です。

- ORA-13158 OBJECT_DOES_NOT_EXIST: 指定されたオブジェクトは存在しません。

使用上の注意

このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

例

BEGIN
DBMS_SPD.ALTER_SQL_PLAN_DIRECTIVE (12345, 'STATE', 'PERMANENT');
END;

CREATE_STGTAB_DIRECTIVEプロシージャ

このプロシージャは、SQLプラン・ディレクティブをパック(エクスポート)するステージング表を作成します。

構文

DBMS_SPD.CREATE_STGTAB_DIRECTIVE (
table_name         IN VARCHAR2,
table_owner        IN VARCHAR2  := USER,
tablespace_name    IN VARCHAR2  := NULL);

パラメータ

表147-3 CREATE_STGTAB_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

table_name

ステージング表の名前。

table_owner

ステージング表のスキーマ所有者の名前。デフォルトは現在のスキーマです。

tablespace_name

表領域の名前。デフォルトのNULLにすると、デフォルトの表領域にステージング表が作成されます。

例外

- ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

- ORA-28104 INVALID_INPUT: 入力値が無効です。

- ORA-44001 INVALID_SCHEMA: 入力されたスキーマは存在しません。

- ORA-13159 TABLE_ALREADY_EXISTS: 指定された表はすでに存在します。

- ORA-29304 TABLESPACE_MISSING: 指定された表領域は存在しません。

使用上の注意

このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

DROP_SQL_PLAN_DIRECTIVEプロシージャ

このプロシージャは、SQLプラン・ディレクティブを削除します。

構文

DBMS_SPD.DROP_SQL_PLAN_DIRECTIVE (
directive_id        IN     NUMBER);

パラメータ

表147-4 DROP_SQL_PLAN_DIRECTIVEプロシージャのパラメータ

パラメータ

説明

directive_id

SQLプラン・ディレクティブのID。

例外

- ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

- ORA-28104 INVALID_INPUT: 入力値が無効です。

- ORA-13158 OBJECT_DOES_NOT_EXIST: 指定されたオブジェクトは存在しません。

使用上の注意

このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

例

BEGIN
DBMS_SPD.DROP_SQL_PLAN_DIRECTIVE (12345);
END;

FLUSH_SQL_PLAN_DIRECTIVEプロシージャ

このプロシージャは、SQL文の実行中にSGAメモリーに自動的に記録されるSQLプラン・ディレクティブの手動フラッシュを許可します。SGAで記録された情報は、Oracleバックグラウンド処理で定期的にフラッシュされます。このプロシージャは、手動で情報をフラッシュする方法を提供します。

構文

DBMS_SPD.FLUSH_SQL_PLAN_DIRECTIVE;

例外

ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

使用上の注意

このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

例

BEGIN
DBMS_SPD.FLUSH_SQL_PLAN_DIRECTIVE;
END;

GET_PREFSファンクション

この機能では、SQLプラン・ディレクティブに指定されたプリファレンスの値が戻されます。

構文

DBMS_SPD.GET_PREFS (
pname     IN   VARCHAR2)
RETURN VARCHAR2;

パラメータ

表147-5 GET_PREFSファンクションのパラメータ

パラメータ

説明

pname

プリファレンスの名前。このプロシージャでは、プリファレンスSPD_RETENTION_WEEKSがサポートされます。

戻り値

プリファレンスの値。

例外

- ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

- ORA-28104 INVALID_INPUT: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

- SPD_RETENTION_WEEKS: SQLプラン・ディレクティブは、このプリファレンスの設定値よりも長い期間使用されなかった場合、パージされます。

例

SELECT DBMS_SPD.GET_PREFS('SPD_RETENTION_WEEKS') FROM DUAL;

PACK_STGTAB_DIRECTIVEファンクション

このファンクションは、SQLプラン・ディレクティブをステージング表にパック(エクスポート)します。

構文

DBMS_SPD.PACK_STGTAB_DIRECTIVE (
table_name         IN VARCHAR2,
table_owner        IN VARCHAR2  := USER
directive_id       IN NUMBER    := NULL,
obj_list           IN OBJECTTAB := NULL)
RETURN NUMBER

パラメータ

表147-6 PACK_STGTAB_DIRECTIVEファンクションのパラメータ

パラメータ

説明

table_name

ステージング表の名前。

table_owner

ステージング表のスキーマ所有者の名前。デフォルトは現在のスキーマです。

directive_id

SQLプラン・ディレクティブのID。デフォルトのNULLは、システム内のすべてのディレクティブを意味します。

obj_list

ディレクティブで使用されるオブジェクトに基づいて、パックするディレクティブをフィルタするために使用されます。obj_listがNULLでない場合、ディレクティブがパックされるのは、そのディレクティブ内のすべてのオブジェクトがobj_list内に存在するときのみです。

戻り値

パックするSQLプラン・ディレクティブの数。

例外

- ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

- ORA-28104 INVALID_INPUT: 入力値が無効です。

- ORA-44001 INVALID_SCHEMA: 入力されたスキーマは存在しません。

- ORA-29304 INVALID_STGTAB: 指定されたステージング表が無効であるか、存在しません。

- ORA-13158 OBJECT_DOES_NOT_EXIST: 指定されたオブジェクトは存在しません。

使用上の注意

このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

例

-- Pack all directives in the system
SELECT DBMS_SPD.PACK_STGTAB_DIRECTIVE('mydirtab') FROM DUAL;

SET SERVEROUTPUT ON;
-- Pack directives relevant to objects in SH schema
DECLARE
my_list  DBMS_SPD.OBJECTTAB := DBMS_SPD.ObjectTab();
dir_cnt  NUMBER;
BEGIN
my_list.extend(1);
my_list(1).owner := 'SH';           -- schema name
my_list(1).object_name := NULL;     -- all tables in SH
my_list(1).object_type := 'TABLE';  -- type of object

dir_cnt :=
DBMS_SPD.PACK_STGTAB_DIRECTIVE('mydirtab', obj_list => my_list);
DBMS_OUTPUT.PUT_LINE('dir_cnt = ' || dir_cnt);
END;

-- Pack directives relevant to tables SALES and CUSTOMERS in SH schema
DECLARE
my_list  DBMS_SPD.OBJECTTAB := DBMS_SPD.ObjectTab();
dir_cnt  NUMBER;
BEGIN
my_list.extend(2);

-- SALES table
my_list(1).owner := 'SH';
my_list(1).object_name := 'SALES';
my_list(1).object_type := 'TABLE';

-- CUSTOMERS table
my_list(2).owner := 'SH';
my_list(2).object_name := 'CUSTOMERS';
my_list(2).object_type := 'TABLE';

dir_cnt :=
DBMS_SPD.PACK_STGTAB_DIRECTIVE('mydirtab', obj_list => my_list);
DBMS_OUTPUT.PUT_LINE('dir_cnt = ' || dir_cnt);
END;

SET_PREFSプロシージャ

このプロシージャは、SQLプラン・ディレクティブの様々なプリファレンスの設定を許可します。

構文

DBMS_SPD.SET_PREFS (
pname     IN   VARCHAR2,
pvalue    IN   VARCHAR2);

パラメータ

表147-7 SET_PREFSプロシージャのパラメータ

パラメータ

説明

pname

プリファレンスの名前。このプロシージャでは、プリファレンスSPD_RETENTION_WEEKSがサポートされます。

pvalue

プリファレンスの値。

- SPD_RETENTION_WEEKS: SQLプラン・ディレクティブは、このプリファレンスの設定値よりも長い期間使用されなかった場合、パージされます。デフォルトの53(SPD_RETENTION_WEEKS_DEFAULT)週は、期間ディレクティブが1年余り経っても使用されなかった場合、そのディレクティブがパージされることを意味します。0以上の値を設定できます。また、値NULLを渡すと、プリファレンスをデフォルトに設定できます。

例外

- ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

- ORA-28104 INVALID_INPUT: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

- SPD_RETENTION_WEEKS: SQLプラン・ディレクティブは、このプリファレンスの設定値よりも長い期間使用されなかった場合、パージされます。

例

BEGIN
DBMS_SPD.SET_PREFS('SPD_RETENTION_WEEKS', '4');
END;

UNPACK_STGTAB_DIRECTIVEファンクション

このプロシージャは、SQLプラン・ディレクティブをステージング表からアンパック(インポート)します。

構文

DBMS_SPD.UNPACK_STGTAB_DIRECTIVE (
table_name         IN VARCHAR2,
table_owner        IN VARCHAR2  := USER,
directive_id       IN NUMBER    := NULL,
obj_list           IN OBJECTTAB := NULL)
RETURN NUMBER

パラメータ

表147-8 UNPACK_STGTAB_DIRECTIVEファンクションのパラメータ

パラメータ

説明

table_name

ステージング表の名前。

table_owner

ステージング表のスキーマ所有者の名前。デフォルトは現在のスキーマです。

directive_id

SQLプラン・ディレクティブのID。デフォルトのNULLは、システム内のすべてのディレクティブを意味します。

obj_list

ディレクティブで使用されるオブジェクトに基づいて、アンパックするディレクティブをフィルタするために使用されます。obj_listがNULLでない場合、ディレクティブがアンパックされるのは、そのディレクティブ内のすべてのオブジェクトがobj_list内に存在するときのみです。

戻り値

アンパックするSQLプラン・ディレクティブの数。

例外

- ORA-38171 INSUFFICIENT_PRIVILEGE: ユーザーには、操作を実行するための適切な権限がありません。

- ORA-28104 INVALID_INPUT: 入力値が無効です。

- ORA-44001 INVALID_SCHEMA: 入力されたスキーマは存在しません。

- ORA-29304 INVALID_STGTAB: 指定されたステージング表が無効であるか、存在しません。

- ORA-13158 OBJECT_DOES_NOT_EXIST: 指定されたオブジェクトは存在しません。

使用上の注意

このプロシージャを実行するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

例

-- Unack all directives in the staging table
SELECT DBMS_SPD.UNPACK_STGTAB_DIRECTIVE('mydirtab') FROM DUAL;

SET SERVEROUTPUT ON;
-- Unpack directives relevant to objects in SH schema
DECLARE
my_list  DBMS_SPD.OBJECTTAB := DBMS_SPD.ObjectTab();
dir_cnt  number;
BEGIN
my_list.extend(1);
my_list(1).owner := 'SH';           -- schema name
my_list(1).object_name := null;     -- all tables in SH
my_list(1).object_type := 'TABLE';  -- type of object

dir_cnt :=
DBMS_SPD.UNPACK_STGTAB_DIRECTIVE('mydirtab', obj_list => my_list);
DBMS_OUTPUT.PUT_LINE('dir_cnt = ' || dir_cnt);
END;

-- Unpack directives relevant to tables SALES and CUSTOMERS in SH schema
DECLARE
my_list  DBMS_SPD.OBJECTTAB := DBMS_SPD.ObjectTab();
dir_cnt  NUMBER;
begin
my_list.extend(2);

-- SALES table
my_list(1).owner := 'SH';
my_list(1).object_name := 'SALES';
my_list(1).object_type := 'TABLE';

-- CUSTOMERS table
my_list(2).owner := 'SH';
my_list(2).object_name := 'CUSTOMERS';
my_list(2).object_type := 'TABLE';

dir_cnt :=
DBMS_SPD.UNPACK_STGTAB_DIRECTIVE('mydirtab', obj_list => my_list);
DBMS_OUTPUT.PUT_LINE('dir_cnt = ' || dir_cnt);
END;

148 DBMS_SPM

DBMS_SPMパッケージは、様々なSQL文に対して保持される、計画履歴およびSQL計画のベースラインに対する制御された操作を実行するためのインタフェースを、DBAおよびその他のユーザーに提供することによって、SQL計画管理機能をサポートします。

関連項目:
詳細は、『Oracle Database SQLチューニング・ガイド』のSQL計画管理の使用方法に関する項を参照してください。

この章では、次の項目について説明します。

- DBMS_SPMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例

- データ構造

- DBMS_SPMサブプログラムの要約

DBMS_SPMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例

概要

DBMS_SPMパッケージを使用すると、ユーザーはSQL計画管理を使用して、SQL実行計画を管理できます。SQL計画管理は、長期間にわたってSQL文の実行計画を記録し評価することで、SQL文の実行計画の突然の変更によってパフォーマンスが低下するのを防止し、効果的であることが判明している既存の計画セットで構成されるSQL計画ベースラインを作成します。次にSQL計画ベースラインを使用して、システムで発生する変更とは無関係に、対応するSQL文のパフォーマンスを保持します。SQL計画管理がSQLのパフォーマンスを向上または保持する一般的な使用のシナリオには次のようなものがあります。

- 新しいバージョンのオプティマイザをインストールするデータベースのアップグレードにより、通常わずかな割合のSQL文に対して計画が変更され、計画の変更のほとんどでパフォーマンスの変更も向上も発生しません。ただし、一部の計画変更はパフォーマンスの低下の原因になる場合があります。SQL計画ベースラインを使用すると、データベースのアップグレードが原因でパフォーマンスの低下が発生する可能性は大幅に減少します。

- 継続的なシステムおよびデータの変更は一部のSQL文の計画に影響を与え、パフォーマンスの低下の原因になる場合があります。SQL計画ベースラインを使用すると、パフォーマンスの低下が最小限に抑えられ、SQLのパフォーマンスが安定します。

- 新しいアプリケーション・モジュールをデプロイメントすることは、システムに新しいSQL文を導入することを意味します。アプリケーション・ソフトウェアは、新しいSQL文の標準テスト構成で開発された適切なSQL実行計画を使用できます。システムの本番構成がテスト構成と大幅に異なる場合は、パフォーマンスを向上するために時間をかけてSQL計画ベースラインを進化させることができます。

セキュリティ・モデル

このパッケージの所有者はSYSです。パッケージのプロシージャを実行するには、EXECUTEパッケージ権限が必要です。ADMINISTER SQL MANAGEMENT OBJECT権限を付与されているすべてのユーザーがDBMS_SPMパッケージを実行できます。

定数

DBMS_SPMパッケージでは、表148-1「DBMS_SPMの定数」に示す定数が使用されます。これらの定数は、EVOLVE_SQL_PLAN_BASELINEファンクションのtime_limitパラメータの標準入力として定義されます。

表148-1 DBMS_SPMの定数

定数

タイプ

値

説明

AUTO_LIMIT

INTEGER

2147483647

EVOLVE_SQL_PLAN_BASELINEファンクションにより費やされる適切な時間が判断されます。

NO_LIMIT

INTEGER

2147483647 -1

EVOLVE_SQL_PLAN_BASELINEファンクションにより費やされる時間に制限はありません。

例

詳細な例は、次のトピックの下にあります。

- ストアド・アウトラインのSQL計画ベースラインへの移行

- SQL計画管理機能を使用するためにアウトラインを移行

- ストアド・アウトライン動作を保持するためにアウトラインを移行

- ストアド・アウトラインの移行後にフォローアップ・タスクを実行

データ構造

DBMS_SPMパッケージは、TABLEタイプを定義します。

表タイプ

- NAMELIST表タイプ

NAMELIST表タイプ

このタイプでは入力パラメータとして名前のリストが使用できます。

構文

TYPE  name_list  IS TABLE OF VARCHAR2(30);

DBMS_SPMサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表148-2 DBMS_SPMパッケージのサブプログラム

サブプログラム

説明

ACCEPT_SQL_PLAN_BASELINEプロシージャ

進化タスクのリコメンデーションに基づいて計画を受け入れます。

ALTER_SQL_PLAN_BASELINEファンクション

属性名/値の形式でSQL文と関連付けられている1つまたはすべての計画の属性を変更します。

CANCEL_EVOLVE_TASKプロシージャ

現在実行中の進化タスクを取り消します。

CONFIGUREプロシージャ

パラメータ/値の形式でSQL管理ベースの構成オプションを設定します。

CREATE_EVOLVE_TASKファンクション

アドバイザのタスクを作成し、そのパラメータを設定します。

CREATE_STGTAB_BASELINEプロシージャ

システム間でのSQL計画ベースラインの転送に使用するステージング表を作成します。

DROP_EVOLVE_TASKプロシージャ

進化したタスクを削除します。

DROP_SQL_PLAN_BASELINEファンクション

SQL文に関連付けられている1つまたはすべての計画を削除します。

EVOLVE_SQL_PLAN_BASELINEファンクション

1つ以上のSQL文に関連付けられているSQL計画ベースラインを進化させます。

EXECUTE_EVOLVE_TASKファンクション

以前に作成した進化タスクを実行します。

IMPLEMENT_EVOLVE_TASKファンクション

進化タスクのリコメンデーションに基づいて計画を実装します。

INTERRUPT_EVOLVE_TASKプロシージャ

現在実行中の進化タスクを中断します。

LOAD_PLANS_FROM_CURSOR_CACHEファンクション

SQL文のカーソル・キャッシュに存在する1つ以上の計画をロードします。

LOAD_PLANS_FROM_SQLSETファンクション

SQLチューニング・セット(STS)に保存されている計画をSQL計画ベースラインにロードします。

MIGRATE_STORED_OUTLINEファンクション

既存のストアド・アウトラインをSQL計画ベースラインに移行します。

PACK_STGTAB_BASELINEファンクション

SQL管理ベースからステージング表にSQL計画ベースラインをパック(エクスポート)します。

RESET_EVOLVE_TASKプロシージャ

進化タスクを初期状態にリセットします。

RESUME_EVOLVE_TASKプロシージャ

以前に中断したタスクを再開します。

REPORT_AUTO_EVOLVE_TASKファンクション

自動進化タスクの実行結果を表示します。

REPORT_EVOLVE_TASKファンクション

進化したタスクの結果を表示します。

SET_EVOLVE_TASK_PARAMETERプロシージャ

進化タスクのパラメータを設定します。

UNPACK_STGTAB_BASELINEファンクション

ステージング表からSQL管理ベースにSQL計画ベースラインをアンパック(インポート)します。

ACCEPT_SQL_PLAN_BASELINEプロシージャ

このプロシージャは、進化タスクのリコメンデーションに基づいて計画を受け入れます。

構文

DBMS_SPM.ACCEPT_SQL_PLAN_BASELINE  (
task_name       IN  VARCHAR2,
object_id       IN  NUMBER    := NULL,
task_owner      IN  VARCHAR2  := NULL,
force           IN  BOOLEAN   := FALSE);

パラメータ

表148-3 ACCEPT_SQL_PLAN_BASELINEプロシージャのパラメータ

パラメータ

説明

task_name

実装するタスクの識別子。

object_id

単一の計画を表すアドバイザ・フレームワーク・オブジェクトの識別子。NULLの場合、すべてのオブジェクトに対してレポートが生成されます。

task_owner

進化タスクの所有者。デフォルトは、現行のスキーマ所有者です。

force

アドバイザがそのようなアクションを推奨しなかった場合でも計画を受け入れます。デフォルトはFALSEです。検証済で、メリットの向上を十分に見込める場合にのみ計画を受け入れることを要求します。

ALTER_SQL_PLAN_BASELINEファンクション

このファンクションは、属性名/値の形式でSQL文と関連付けられている1つまたはすべての計画の属性を変更します。

構文

DBMS_SPM.ALTER_SQL_PLAN_BASELINE (
sql_handle        IN VARCHAR2 := NULL,
plan_name         IN VARCHAR2 := NULL,
attribute_name    IN VARCHAR2,
attribute_value   IN VARCHAR2)
RETURN PLS_INTEGER;

パラメータ

表148-4 ALTER_SQL_PLAN_BASELINEファンクションのパラメータ

パラメータ

説明

sql_handle

SQL文のハンドル。属性変更のためにSQL文に関連付けられている計画を識別します。NULLの場合は、plan_nameを指定する必要があります。

plan_name

計画名。特定の計画を識別します。デフォルトのNULLにすると、sql_handleで識別されるSQL文に関連付けられているすべての計画の属性が設定されます。NULLの場合は、sql_handleを指定する必要があります。

attribute_name

設定する計画属性の名前(次の表を参照)。

attribute_value

設定する計画属性の値(次の表を参照)。

表148-5 ALTER_SQL_PLAN_BASELINEファンクションのパラメータの名前および値

名前

説明

設定可能な値

enabled

'YES'にすると、計画をオプティマイザで使用できます。これが使用されるかどうかは、acceptedステータスによって決まります。

'YES'または'NO'

fixed

'YES'にすると、時間が経過してもSQL計画ベースラインは進化しません。固定された計画は、固定されていない計画より優先されます。

'YES'または'NO'

autopurge

'YES'にすると、計画は特定の期間使用されない場合にパージされます。'NO'にすると、計画はパージされません。

'YES'または'NO'

plan_name

計画の名前。

最大30文字の文字列

description

計画の説明。

最大500バイトの文字列

戻り値

変更した計画の数。

使用上の注意

1つの計画を指定した場合は、様々なステータスの1つ、計画名または説明を変更できます。SQL文のすべての計画を指定した場合は、様々なステータスの1つまたは説明を変更できます。このファンクションは、同じ計画または他の計画で別の計画属性を設定するたびに何回もコールできます。

CANCEL_EVOLVE_TASKプロシージャ

このプロシージャは、現在実行中の進化タスクを取り消します。タスクから、すべての中間結果が削除されます。

構文

DBMS_SPM.CANCEL_EVOLVE_TASK  (
task_name        IN  VARCHAR2);

パラメータ

表148-6 CANCEL_EVOLVE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

取り消すタスクの識別子。

CONFIGUREプロシージャ

このプロシージャは、パラメータ/値の形式でSQL管理ベースの構成オプションを設定します。このファンクションは、構成オプションを設定するたびに何回もコールできます。

構文

DBMS_SPM.CONFIGURE (
parameter_name    IN VARCHAR2,
parameter_value   IN NUMBER);

パラメータ

表148-7 CONFIGUREプロシージャのパラメータ

パラメータ

説明

parameter_name

設定するパラメータの名前(次の表を参照)。

parameter_value

設定するパラメータの値(次の表を参照)。

表148-8 CONFIGUREプロシージャのパラメータの名前および値

名前

説明

設定可能な値

デフォルト値

space_budget_percent

SQL管理ベースに使用可能なSYSAUX領域の最大の割合。

1,2, …, 50

10

plan_retention_weeks

パージする前に未使用の計画を保持する週の数。

5,6, …, 523

53

使用上の注意

- SQL管理ベースのデフォルトの領域配分は、SYSAUX表領域のサイズの10パーセントのみです。領域配分は、最大50%に設定できます。未使用の計画のデフォルトの保存期間は1年と1週間で、すなわち計画は、1年を超えて未使用の場合に、自動的にパージされます。保存期間は、最大523週間(すなわち10年強)に設定できます。

- SQL管理ベースによって占有される領域が、定義されている領域配分の制限を超えると、週次データベース・アラートが生成されます。

CREATE_EVOLVE_TASKファンクション

このファンクションには2つのオーバーロードがあり、その両方ともでアドバイザのタスクが作成され、パラメータが設定されます。SQLハンドルを取るこのバージョンは、特定のSQL文の1つ以上の計画を進化させる進化タスクを作成します。

構文

DBMS_SPM.CREATE_EVOLVE_TASK (
sql_handle    IN  VARCHAR2  := NULL,
plan_name     IN  VARCHAR2  := NULL,
time_limit    IN  NUMBER    := DBMS_SPM.AUTO_LIMIT,
task_name     IN  VARCHAR2  := NULL,
description   IN  VARCHAR2  := NULL)
RETURN VARCHAR2;

DBMS_SPM.CREATE_EVOLVE_TASK (
plan_list     IN  DBMS_SPM.NAME_LIST,
time_limit    IN  NUMBER    := DBMS_SPM.AUTO_LIMIT,
task_name     IN  VARCHAR2  := NULL,
description   IN  VARCHAR2  := NULL)
RETURN VARCHAR2;

パラメータ

表148-9 CREATE_EVOLVE_TASKファンクションのパラメータ

パラメータ

説明

sql_handle

SQL文のハンドル。デフォルトのNULLでは、未承認の計画を指定するすべてのSQL文が考慮されます。

plan_list

計画名のリスト。計画は、異なるSQL文に属している場合があります。

plan_name

計画の識別子。デフォルトのNULLでは、SQLハンドルがNULLの場合、指定されたSQLハンドルのすべての未承認の計画またはすべてのSQL文が考慮されます。

time_limit

時間制限(分)。時間制限はグローバルで、次の方法で使用されます。最初の未承認の計画の時間制限は、入力値と同じです。2番目の未承認の計画の時間制限は、入力値から最初の計画の検証で費やした時間を差し引いた値になります。それ以降の時間制限も、同様の方法で計算します。デフォルトのDBMS_SPM.AUTO_LIMITにすると、計画に対して実行する必要がある検証の数に基づいて適切な時間制限が選択されます。値DBMS_SPM.NO_LIMITは、時間制限がないことを意味します。

task_name

進化タスク名。

description

タスクの説明(最大256文字)。

戻り値

SQL進化タスクの一意の名前。

CREATE_STGTAB_BASELINEプロシージャ

このプロシージャは、システム間でのSQL計画ベースラインの転送に使用するステージング表を作成します。

構文

DBMS_SPM.CREATE_STGTAB_BASELINE (
table_name        IN VARCHAR2,
table_owner       IN VARCHAR2 := NULL,
tablespace_name   IN VARCHAR2 := NULL);

パラメータ

表148-10 CREATE_STGTAB_BASELINEプロシージャのパラメータ

パラメータ

説明

table_name

SQL計画ベースラインをパックおよびアンパックする目的で作成するステージング表の名前。

table_owner

ステージング表の所有者の名前。デフォルトのNULLにすると、現行のスキーマが表の所有者になります。

tablespace_name

表領域の名前。デフォルトのNULLにすると、デフォルトの表領域にステージング表が作成されます。

使用上の注意

ステージング表の作成が最初の手順です。システム間でSQL計画ベースラインを移行するには、次の一連の手順を実行する必要があります。

1. ソース・システムにステージング表を作成します。

2. ソース・システムでSQL計画ベースラインを選択して、ステージング表にパックします。

3. Oracle EXPユーティリティまたはOracle Data Pumpを使用して、フラット・ファイルにステージング表をエクスポートします。

4. ターゲット・システムにフラット・ファイルを転送します。

5. Oracle IMPユーティリティまたはOracle Data Pumpを使用して、フラット・ファイルからステージング表をインポートします。

6. ステージング表からSQL計画ベースラインを選択して、ターゲット・システムにアンパックします。

DROP_EVOLVE_TASKプロシージャ

このプロシージャは、進化したタスクを削除します。

構文

DBMS_SPM.DROP_EVOLVE_TASK  (
task_name        IN  VARCHAR2);

パラメータ

表148-11 DROP_EVOLVE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

削除するタスクの識別子。

DROP_SQL_PLAN_BASELINEファンクション

このファンクションは、SQL文に関連付けられている1つまたはすべての計画を削除します。

構文

DBMS_SPM.DROP_SQL_PLAN_BASELINE (
sql_handle     IN VARCHAR2 := NULL,
plan_name      IN VARCHAR2 := NULL)
RETURN PLS_INTEGER;

パラメータ

表148-12 DROP_SQL_PLAN_BASELINEファンクションのパラメータ

パラメータ

説明

sql_handle

SQL文のハンドル。削除するSQL文に関連付けられている計画を識別します。NULLの場合は、plan_nameを指定する必要があります。

plan_name

計画名。特定の計画を識別します。デフォルトのNULLにすると、sql_handleで識別されるSQL文に関連付けられているすべての計画が削除されます。

戻り値

削除した計画の数。

EVOLVE_SQL_PLAN_BASELINEファンクション

このファンクションは、1つ以上のSQL文に関連付けられているSQL計画ベースラインを進化させます。SQL計画ベースラインは、1つ以上の承認されていない計画が承認済に変更されると進化します。ユーザーによって問合せ(パラメータverify = 'YES')が行われた場合、関連付けられているSQL計画ベースラインから選択された計画のパフォーマンスと各未承認の計画の実行パフォーマンスが比較されます。未承認の計画のパフォーマンスがSQL計画ベースラインのパフォーマンスより優れている場合、未承認の計画は承認済の計画に変更されます(ただし、ユーザーがこのようなアクションを許可している場合(パラメータcommit = 'YES')にかぎられます)。

このファンクションの2番目の形式では、計画リスト形式を使用します。

構文

DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE (
sql_handle   IN VARCHAR2 := NULL,
plan_name    IN VARCHAR2 := NULL,
time_limit   IN INTEGER  := DBMS_SPM.AUTO_LIMIT,
verify       IN VARCHAR2 := 'YES',
commit       IN VARCHAR2 := 'YES')
RETURN CLOB;

DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE (
plan_list    IN DBMS_SPM.NAME_LIST,
time_limit   IN INTEGER  := DBMS_SPM.AUTO_LIMIT,
verify       IN VARCHAR2 := 'YES',
commit       IN VARCHAR2 := 'YES')
RETURN CLOB;

パラメータ

表148-13 EVOLVE_SQL_PLAN_BASELINEファンクションのパラメータ

パラメータ

説明

sql_handle

SQL文の識別子。plan_nameを指定しないかぎり、NULLにすると、SQL計画ベースライン内の未承認の計画を含むすべての文が考慮されます。

plan_name

計画の識別子。デフォルトのNULLにすると、識別されたSQL文、またはsql_handleがNULLの場合はすべてのSQL文のSQL計画ベースラインで未承認の計画が考慮されます。

plan_list

計画名のリスト。リストないの各計画は、同じSQL文に属するものでも、別のSQL文に属するものでもかまいません。

time_limit

時間制限(分)。これはverify = 'YES'の場合にのみ適用されます。時間制限はグローバルで、次のように使用され、たとえば最初の未承認の計画を検証する場合の時間制限は入力値と同じ値に設定され、2番目の未承認の計画を検証する場合の制限時間は(入力値 - 最初の計画の検証に要した時間)という具合に設定されます。

- DBMS_SPM.AUTO_LIMIT(デフォルト)にすると、計画に対して実行する必要がある検証の数に基づいて適切な時間制限が選択されます。

- DBMS_SPM.NO_LIMITにすると、時間制限は設定されません。

- 正の整数値は、ユーザーが指定した時間制限を表します。

verify

未承認の計画を承認済の計画に変更する前に、計画を実行し、パフォーマンスを比較するかどうかを指定します。パフォーマンスの検証では、未承認の計画および対応するSQL計画ベースラインから選択された計画が実行され、これらの計画のパフォーマンス統計が比較されます。未承認の計画でパフォーマンスが向上した場合、未承認の計画は承認済の計画に変更されます。

- 'YES'(デフォルト)にすると、未承認の計画を承認済の計画に変更する前に、未承認の計画でパフォーマンスが向上することが検証されます。

- 'NO'にすると、計画は実行されず、未承認の計画が承認済の計画に変更されるのみです。

commit

未承認の計画のACCEPTEDステータスを'NO'から'YES'に更新するかどうかを指定します。

- 'YES'(デフォルト): 条件を満たす未承認の計画を更新し、verify = 'YES'の場合はその更新およびパフォーマンスの検証結果を示すレポートを生成します。

- 'NO': 更新せずにレポートを生成します。verify = 'NO'とともにcommit = 'NO'を指定すると、操作できなくなります。

戻り値

書式設定されたテキスト・レポートが含まれているCLOB。レポートには、ACCEPTEDステータスへの変更が可能な未承認の計画が順に示されます。また、verify = 'YES'の場合は、それらの計画のパフォーマンスの検証結果も示されます。

使用上の注意

このサブプログラムを起動するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

EXECUTE_EVOLVE_TASKファンクション

このファンクションは、以前に作成した進化タスクを実行します。

構文

DBMS_SPM.EXECUTE_EVOLVE_TASK  (
task_name        IN  VARCHAR2,
execution_name   IN  VARCHAR2  := NULL,
execution_desc   IN  VARCHAR2  := NULL);
RETURN VARCHAR2;

パラメータ

表148-14 EXECUTE_EVOLVE_TASKファンクションのパラメータ

パラメータ

説明

task_name

進化タスク名。

execution_name

実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。

execution_desc

実行の説明(最大256文字)。

戻り値

新しい実行の名前。

IMPLEMENT_EVOLVE_TASKファンクション

このファンクションは、進化タスクによって推奨されているすべてのアクションを実装します。

構文

DBMS_SPM.IMPLEMENT_EVOLVE_TASK  (
task_name       IN  VARCHAR2,
task_owner      IN  VARCHAR2  := NULL,
execution_name  IN  VARCHAR2  := NULL,
force           IN BOOLEAN    := FALSE)
RETURN NUMBER;

パラメータ

表148-15 IMPLEMENT_EVOLVE_TASKファンクションのパラメータ

パラメータ

説明

task_name

レポートするタスクの識別子。

task_owner

進化タスクの所有者。デフォルトは、現行のスキーマ所有者です。

execution_name

実行を修飾して識別するための名前。NULLの場合、最後のタスク実行に対してアクションが実行されます。

force

アドバイザがそのようなアクションを推奨しなかった場合でもすべての計画を受け入れます。デフォルトはFALSEです。検証済で、メリットの向上を十分に見込める場合にのみ計画を受け入れることを要求します。

戻り値

受け入れた計画の数。

INTERRUPT_EVOLVE_TASKプロシージャ

このプロシージャは、現在実行中の進化タスクを中断します。このタスクは、通常の終了時と同様に操作を終了し、ユーザーは中間結果にアクセスできます。タスクは後で再開できます。

構文

DBMS_SPM.INTERRUPT_EVOLVE_TASK  (
task_name        IN  VARCHAR2);

パラメータ

表148-16 INTERRUPT_EVOLVE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

中断するタスクの識別子。

LOAD_PLANS_FROM_CURSOR_CACHEファンクション

このファンクションは、1つまたは1組のSQL文のカーソル・キャッシュに存在する1つ以上の計画をロードします。これには、4つのオーバーロード(SQL文テキストを使用するもの、SQLハンドルを使用するもの、SQL IDを使用するもの、またはattribute_nameとattribute_valueのペアを使用するもの)があります。

構文

DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE (
sql_id            IN  VARCHAR2,
plan_hash_value   IN  NUMBER   := NULL,
sql_text          IN  CLOB,
fixed             IN  VARCHAR2 := 'NO',
enabled           IN  VARCHAR2 := 'YES')
RETURN PLS_INTEGER;

DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE (
sql_id            IN  VARCHAR2,
plan_hash_value   IN  NUMBER   := NULL,
sql_handle        IN  VARCHAR2,
fixed             IN  VARCHAR2 := 'NO',
enabled           IN  VARCHAR2 := 'YES')
RETURN PLS_INTEGER;

DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE (
sql_id            IN  VARCHAR2,
plan_hash_value   IN  NUMBER   := NULL,
fixed             IN  VARCHAR2 := 'NO',
enabled           IN  VARCHAR2 := 'YES')
RETURN PLS_INTEGER;

DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE (
attribute_name   IN VARCHAR2,
attribute_value  IN VARCHAR2,
fixed            IN VARCHAR2 := 'NO',
enabled          IN VARCHAR2 := 'YES')
RETURN PLS_INTEGER;

パラメータ

表148-17 LOAD_PLANS_FROM_CURSOR_CACHEファンクションのパラメータ

パラメータ

説明

sql_id

SQL文の識別子。カーソル・キャッシュ内のSQL文を識別します。注意: 3番目のオーバーロードでは、識別されたSQL文のテキストがカーソル・キャッシュから抽出され、計画のロード先となるSQL計画ベースラインの特定にそのテキストが使用されます。SQL計画ベースラインが存在しない場合は作成されます。

plan_hash_value

計画の識別子。デフォルトのNULLにすると、SQL_IDで識別されるSQL文のカーソル・キャッシュに存在するすべての計画が取得されます。

sql_text

計画のロード先となるSQL計画ベースラインを特定する場合に使用されるSQLテキスト。SQL計画ベースラインが存在しない場合は作成されます。ユーザーがSQL文のテキストにヒントを追加してSQL文をチューニングし、その結果生成された計画を元のSQL文のSQL計画ベースラインにロードする場合は、テキストの使用が重要となります。

sql_handle

計画のロード先となるSQL計画ベースラインを特定する場合に使用されるSQLハンドル。sql_handleは、既存のSQL計画ベースラインである必要があります。ユーザーがSQL文のテキストにヒントを追加してSQL文をチューニングし、その結果生成された計画を元のSQL文のSQL計画ベースラインにロードする場合は、ハンドルの使用が重要となります。

fixed

デフォルトの'NO'にすると、ロードされた計画が、固定されていない計画として使用されます。値を'YES'にすると、ロードされた計画が、固定された計画として使用され、時間が経過してもSQL計画のベースラインは進化しません。

attribute_name

次の属性名のいずれかになります。

- SQL_TEXT''

- 'PARSING_SCHEMA_NAME'

- 'MODULE'

- 'ACTION'

attribute_value

属性値は、属性名が'SQL_TEXT'の場合、LIKE条件の検索パターンとして使用されます。それ以外の場合は、等価検索値として使用されます (たとえば、attribute_name => 'SQL_TEXT'およびattribute_value => '% HR-123 %'を指定すると、選択フィルタとしてSQL_TEXT LIKE '% HR-123 %'が適用されます。同様に、attribute_name => 'MODULE'およびattribute_value => 'HR'を指定すると、計画選択フィルタとして'MODULE = 'HR'が適用されます)。属性値は、二重引用符で囲んだ場合または属性名が'SQL_TEXT'の場合を除き、大文字になります。

enabled

デフォルトの'YES'にすると、ロードされた計画が、オプティマイザで使用できるように有効になります。

戻り値

ロードした計画の数。

使用上の注意

このサブプログラムを起動するには、ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。

LOAD_PLANS_FROM_SQLSETファンクション

このファンクションは、SQLチューニング・セット(STS)に保存されている計画をSQL計画ベースラインにロードします。STSからロードした計画は、パフォーマンスに関しては検証されませんが、承認済の計画として既存または新規のSQL計画ベースラインに追加されます。このファンクションを使用すると、新しいSQL計画ベースラインでSQL管理ベースをシードできます。

構文

DBMS_SPM.LOAD_PLANS_FROM_SQLSET (
sqlset_name      IN  VARCHAR2,
sqlset_owner     IN  VARCHAR2 := NULL,
basic_filter     IN  VARCHAR2 := NULL,
fixed            IN  VARCHAR2 := 'NO',
enabled          IN  VARCHAR2 := 'YES'
commit_rows      IN  NUMBER   := 1000)
RETURN PLS_INTEGER;

パラメータ

表148-18 LOAD_PLANS_FROM_SQLSETファンクションのパラメータ

パラメータ

説明

sqlset_name

SQL計画ベースラインに計画をロードするSTSの名前。

sqlset_owner

STSの所有者。NULLにすると、現行のスキーマが所有者になります。

basic_filter

条件を満たす計画のみをロード対象として選択するためにSTSに適用されるフィルタ。このフィルタは、DBA_SQLSET_STATEMENTSビューに対して指定可能なWHERE句条件の形式にすることができます。たとえば、basic_filter => 'sql_text like ''select /*LOAD_STS*/%'''やbasic_filter => 'sql_id=''b62q7nc33gzwx'''などです。

fixed

デフォルトの'NO'にすると、ロードされた計画が、固定されていない計画として使用されます。値を'YES'にすると、ロードされた計画が、固定された計画として使用され、時間が経過してもSQL計画のベースラインは進化しません。

enabled

デフォルトの'YES'にすると、ロードされた計画が、オプティマイザで使用できるように有効になります。

commit_rows

定期的なコミットを実行する前にロードするSQL計画の数。UNDOログのサイズ縮小に役立ちます。

戻り値

ロードした計画の数。

使用上の注意

- リモート・システムから計画をロードするには、まずリモート・システムのSTSに計画をロードし、リモート・システムからローカル・システムにSTSをエクスポート/インポートしてから、このファンクションを使用します。

- 自動ワークロード・リポジトリ(AWR)から計画をロードするには、まずAWRスナップショットに保存されている計画をSTSにロードしてから、このプロシージャを使用します。

- また、1つ以上のSQL文のカーソル・キャッシュに存在する計画をSTSに取得してから、このプロシージャを使用することもできます。

MIGRATE_STORED_OUTLINEファンクション

このファンクションは、1つ以上のSQL文のストアド・アウトラインをSQL管理ベース(SMB)の計画ベースラインに移行します。ユーザーは、アウトライン名、SQLテキストまたはアウトライン・カテゴリに基づいてどのストアド・アウトラインを移行するか指定することができ、またシステムにあるすべてのストアド・アウトラインをSQL計画ベースラインに移行することもできます。

このファンクションの2番目のオーバーロードは、1つ以上のSQL文のストアド・アウトラインを1つ以上のアウトライン名を付与されたSQL管理ベース(SMB)の計画ベースラインに移行します。

構文

DBMS_SPM.MIGRATE_STORED_OUTLINE (
attribute_name     IN  VARCHAR2,
attribute_value    IN  CLOB,
fixed              IN  VARCHAR2 := 'NO')
RETURN CLOB;

DBMS_SPM.MIGRATE_STORED_OUTLINE (
outln_list         IN  DBMS_SPM.NAME_LIST,
fixed              IN  VARCHAR2 := 'NO')
RETURN CLOB;

パラメータ

表148-19 MIGRATE_STORED_OUTLINEファンクションのパラメータ

パラメータ

説明

attribute_name

attribute_valueで使用するパラメータのタイプを指定して、移行されたストアド・アウトラインを識別します。大文字または小文字を区別しません。有効な値は、次のとおりです。

- outline_name

- sql_text

- category

- all

attribute_value

attribute_nameに基づいて次の値が可能です。

- 移行するストアド・アウトラインの名前。

- 移行するストアド・アウトラインのSQLテキスト。

- 移行するストアド・アウトラインのカテゴリ。

- attribute_nameがallの場合はNULLです。

fixed

NO(デフォルト)またはYES。移行中に生成された計画の「固定」状態を指定します。デフォルトでは、計画は「固定されていない」計画として生成されます。

outln_list

移行するアウトライン名のリスト。

戻り値

次のような、移行中に統計を説明する書式設定されたレポートを含むCLOB。

- 正常に移行されたストアド・アウトラインの数。

- 移行に失敗したストアド・アウトラインの数(および対応するアウトライン名)と失敗の理由。

使用上の注意

- ユーザーがアウトライン名を指定すると、ファンクションは、移行する単一のストアド・アウトラインを一意に識別する付与されたアウトライン名に基づいてストアド・アウトラインを計画ベースラインに移行します。

- ユーザーがSQLテキストを指定すると、ファンクションは指定したSQL文のために作成されたすべてのストアド・アウトラインを移行します。単一のSQL文は、異なるカテゴリ名の下で作成した複数のストアド・アウトラインを持つことができます。各ストアド・アウトラインに1つの計画ベースライン計画が作成されます。新しい計画ベースラインには、DEFAULTに設定されたカテゴリ名があります。計画ベースラインのモジュール名は、ストアド・アウトラインと同じになるように設定されます。

- ユーザーがカテゴリ名を指定すると、ファンクションは指定したカテゴリ名があるすべてのストアド・アウトラインを移行します。SQL文ごとのカテゴリごとに1つのストアド・アウトラインのみが存在します。各ストアド・アウトラインに1つの計画ベースラインが作成されます。

- ユーザーがallの移行を指定すると、ファンクションは、システムにあるすべてのストアド・アウトラインを計画ベースラインに移行します。各ストアド・アウトラインに1つの計画ベースラインが作成されます。

PACK_STGTAB_BASELINEファンクション

このファンクションは、SQL管理ベースからステージング表にSQL計画ベースラインをパック(エクスポート)します。

構文

DBMS_SPM.PACK_STGTAB_BASELINE (
table_name       IN VARCHAR2,
table_owner      IN VARCHAR2 := NULL,
sql_handle       IN VARCHAR2 := NULL,
plan_name        IN VARCHAR2 := NULL,
sql_text         IN CLOB     := NULL,
creator          IN VARCHAR2 := NULL,   origin           IN VARCHAR2 := NULL,
enabled          IN VARCHAR2 := NULL,
accepted         IN VARCHAR2 := NULL,
fixed            IN VARCHAR2 := NULL,
module           IN VARCHAR2 := NULL,
action           IN VARCHAR2 := NULL)
RETURN NUMBER;

パラメータ

表148-20 PACK_STGTAB_BASELINEファンクションのパラメータ

パラメータ

説明

table_name

SQL計画ベースラインのパック先のステージング表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。

table_owner

ステージング表の所有者の名前。デフォルトのNULLにすると、現行のスキーマが表の所有者になります。

sql_handle

SQLハンドル(大/小文字区別)

plan_name

計画名(大/小文字区別、%ワイルドカードを使用可)

sql_text

SQLテキスト文字列(大/小文字区別、%ワイルドカードを使用可)

creator

SQL計画ベースラインの作成者(二重引用符で囲まれていないかぎり、大/小文字区別なし)

origin

SQL計画ベースラインの起点。'MANUAL-LOAD'、'AUTO-CAPTURE'、'MANUAL_SQLTUNE'または'AUTO-SQLTUNE'(大/小文字区別なし)である必要があります。

enabled

'YES'または'NO'(大/小文字区別なし)である必要があります。

accepted

'YES'または'NO'(大/小文字区別なし)である必要があります。

fixed

'YES'または'NO'(大/小文字区別なし)である必要があります。

module

モジュール(大/小文字区別)

action

アクション(大/小文字区別)

戻り値

パックしたSQL計画ベースラインの数。

RESET_EVOLVE_TASKプロシージャ

このプロシージャは、進化タスクを初期状態にリセットします。タスクから、すべての中間結果が削除されます。現在実行されていないタスクに対してこのプロシージャ呼び出します。

構文

DBMS_SPM.RESET_EVOLVE_TASK  (
task_name        IN  VARCHAR2);

パラメータ

表148-21 RESET_EVOLVE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

リセットするタスクの識別子。

RESUME_EVOLVE_TASKプロシージャ

このプロシージャは、以前に中断したタスクを再開します。

構文

DBMS_SPM.RESUME_EVOLVE_TASK  (
task_name        IN  VARCHAR2);

パラメータ

表148-22 RESUME_EVOLVE_TASKプロシージャのパラメータ

パラメータ

説明

task_name

再開するタスクの識別子。

REPORT_AUTO_EVOLVE_TASKファンクション

このプロシージャは、自動進化タスクの実行結果を表示します。

構文

DBMS_SPM.REPORT_AUTO_EVOLVE_TASK  (
type            IN  VARCHAR2  := TYPE_TEXT,
level           IN  VARCHAR2  := LEVEL_TYPICAL,
section         IN  VARCHAR2  := SECTION_ALL,
object_id       IN  NUMBER    := NULL,
execution_name  IN  VARCHAR2  := NULL)
RETURN CLOB;

パラメータ

表148-23 REPORT_AUTO_EVOLVE_TASKファンクションのパラメータ

パラメータ

説明

type

レポートのタイプ。可能な値はTEXT、HTML、XMLです。

level

レポートの形式。可能な値はBASIC、TYPICAL、ALLです。

section

レポート内の特定のセクション。可能な値はSUMMARY、FINDINGS、PLANS、INFORMATION、ERRORS、ALLです。

object_id

単一の計画を表すアドバイザ・フレームワーク・オブジェクトの識別子。NULLの場合、すべてのオブジェクトに対してレポートが生成されます。

execution_name

実行を修飾して識別するための名前。NULLの場合は、最後のタスク実行に関するレポートが生成されます。

戻り値

レポート。

REPORT_EVOLVE_TASKファンクション

このプロシージャは、進化したタスクの結果を表示します。

構文

DBMS_SPM.REPORT_EVOLVE_TASK  (
task_name       IN  VARCHAR2,
type            IN  VARCHAR2  := TYPE_TEXT,
level           IN  VARCHAR2  := LEVEL_TYPICAL,
section         IN  VARCHAR2  := SECTION_ALL,
object_id       IN  NUMBER    := NULL,
task_owner      IN  VARCHAR2  := NULL,
execution_name  IN  VARCHAR2  := NULL)
RETURN CLOB;

パラメータ

表148-24 REPORT_EVOLVE_TASKファンクションのパラメータ

パラメータ

説明

task_name

レポートするタスクの識別子。

type

レポートのタイプ。可能な値はTEXT、HTML、XMLです。

level

レポートの形式。可能な値はBASIC、TYPICAL、ALLです。

section

レポート内の特定のセクション。可能な値はSUMMARY、FINDINGS、PLANS、INFORMATION、ERRORS、ALLです。

object_id

単一の計画を表すアドバイザ・フレームワーク・オブジェクトの識別子。NULLの場合、すべてのオブジェクトに対してレポートが生成されます。

task_owner

進化タスクの所有者。デフォルトは、現行のスキーマ所有者です。

execution_name

実行を修飾して識別するための名前。NULLの場合は、最後のタスク実行に関するレポートが生成されます。

戻り値

レポート。

SET_EVOLVE_TASK_PARAMETERプロシージャ

このプロシージャは、進化タスクのパラメータをNUMBERまたはVARCHAR2に設定します。

構文

DBMS_SPM.SET_EVOLVE_TASK_PARAMETER  (
task_name     IN  VARCHAR2,
parameter     IN  VARCHAR2,
value         IN  NUMBER);

DBMS_SPM.SET_EVOLVE_TASK_PARAMETER  (
task_name     IN  VARCHAR2  := NULL,
parameter     IN  VARCHAR2,
value         IN  VARCHAR2);

パラメータ

表148-25 SET_EVOLVE_TASK_PARAMETERプロシージャのパラメータ

パラメータ

説明

task_name

進化タスク名。

parameter

設定するパラメータの名前。

value

パラメータの新しい値。

UNPACK_STGTAB_BASELINEファンクション

このファンクションは、ステージング表からSQL管理ベースにSQL計画ベースラインをアンパック(インポート)します。

構文

DBMS_SPM.UNPACK_STGTAB_BASELINE (
table_name       IN VARCHAR2,
table_owner      IN VARCHAR2 := NULL,
sql_handle       IN VARCHAR2 := NULL,
plan_name        IN VARCHAR2 := NULL,
sql_text         IN CLOB     := NULL,
creator          IN VARCHAR2 := NULL,   origin           IN VARCHAR2 := NULL,
enabled          IN VARCHAR2 := NULL,
accepted         IN VARCHAR2 := NULL,
fixed            IN VARCHAR2 := NULL,
module           IN VARCHAR2 := NULL,
action           IN VARCHAR2 := NULL)
RETURN NUMBER;

パラメータ

表148-26 UNPACK_STGTAB_BASELINEファンクションのパラメータ

パラメータ

説明

table_name

SQL計画ベースラインのアンパック元のステージング表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。

table_owner

ステージング表の所有者の名前。デフォルトのNULLにすると、現行のスキーマが表の所有者になります。

sql_handle

SQLハンドル(大/小文字区別)

plan_name

計画名(大/小文字区別、%ワイルドカードを使用可)

sql_text

SQLテキスト文字列(大/小文字区別、%ワイルドカードを使用可)

creator

SQL計画ベースラインの作成者(二重引用符で囲まれていないかぎり、大/小文字区別なし)

origin

SQL計画ベースラインの起点。'MANUAL-LOAD'、'AUTO-CAPTURE'、'MANUAL_SQLTUNE'または'AUTO-SQLTUNE'(大/小文字区別なし)である必要があります。

enabled

'YES'または'NO'(大/小文字区別なし)である必要があります。

accepted

'YES'または'NO'(大/小文字区別なし)である必要があります。

fixed

'YES'または'NO'(大/小文字区別なし)である必要があります。

module

モジュール(大/小文字区別)

action

アクション(大/小文字区別)

戻り値

アンパックした計画の数。

149 DBMS_SQL

DBMS_SQLパッケージでは、動的SQLを使用するためのインタフェースを提供し、PL/SQLを使用したデータ操作言語(DML)文やデータ定義言語(DDL)文の解析を可能にします。たとえば、DBMS_SQLパッケージが提供するPARSEプロシージャを使用することによって、ストアド・プロシージャ内からDROP TABLE文を入力できます。

関連項目:
ネイティブ動的SQLの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_SQLの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例外

- 使用上の注意

- 例

- データ構造

- レコード・タイプ

- 表タイプ

- DBMS_SQLサブプログラムの要約

DBMS_SQLの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 例外

- 使用上の注意

- 例

概要

Oracleを使用すると、動的SQLを使用するストアド・プロシージャおよび無名PL/SQLブロックを記述できます。動的SQL文は、ユーザーのソース・プログラムに埋め込まれておらず、実行時にプログラムに入力されるか、またはプログラムによって作成されるように、文字列で格納されています。これによって、さらに汎用的なプロシージャを作成できます。たとえば、この動的SQLによって、実行時まで名前がわからない表で動作するプロシージャを作成できます。

ネイティブ動的SQLはDBMS_SQLに代わるものであり、動的SQL文をPL/SQLブロックに直接設定できます。ほとんどの場合、ネイティブ動的SQLは、DBMS_SQLと比べると簡単に使用でき、より高パフォーマンスです。ただし、ネイティブ動的SQL自体に、次の制限があります。

- メソッド4(不明数の入力または出力を含む動的SQL文)はサポートされていません。

- DBMS_SQLを使用する場合のみに実行可能なタスクがいくつかあります。DBMS_SQLが必要なタスクの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

ストアド・プロシージャ内から動的SQLを使用する機能は一般的に、Oracle Call Interface(OCI)の手順に従っています。

関連項目:
『Oracle Call Interfaceプログラマーズ・ガイド』

PL/SQLは、Cなどの他の一般的なプログラム言語とは、多少異なります。たとえば、ユーザーはアドレス(ポインタとも呼ばれます)をPL/SQLで参照できません。そのため、Oracle Call InterfaceとDBMS_SQLパッケージの間には、いくつか相違点があります。相違点は、次のとおりです。

- OCIはアドレスでバインドし、DBMS_SQLパッケージは値でバインドします。

- DBMS_SQLでは、無名ブロックのOUTパラメータの値を取得するためにVARIABLE_VALUEをコールする必要があります。また、行をフェッチして、行内の列の値をプログラムに取得した後で、COLUMN_VALUEをコールする必要があります。

- 現行のリリースのDBMS_SQLパッケージは、CANCELカーソル・プロシージャを提供していません。

- NULLはPL/SQL変数の値として完全にサポートされているため、インジケータ変数は不要です。

セキュリティ・モデル

DBMS_SQLは、SYS所有のパッケージであり、AUTHID CURRENT_USERでコンパイルされます。無名PL/SQLブロックからコールされたすべてのDBMS_SQLサブプログラムは、現行のユーザーの権限を使用して実行されます。

関連項目:
実行者権限または定義者権限の使用方法の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

オープン・カーソル番号による悪意のあるアクセスまたは誤ったアクセスの防止

オープン・カーソルを示していないカーソル番号を使用してDBMS_SQLサブプログラムをコールすると、エラーORA-29471が発生します。このエラーが発生すると、アラート・ログにアラートが発行され、セッションが存続している間DBMS_SQLは操作不能になります。

IS_OPENファンクションに対するコール内のカーソル番号の実際の値が、セッション内で現在オープンされているカーソルを示している場合、戻り値はTRUEになります。実際の値がNULLの場合、戻り値はFALSEになります。これら以外の場合は、ORA-29471エラーが発生します。

カーソルの不適切な使用の防止

カーソルは、既存のカーソルを破壊するセキュリティ侵害から保護されています。

バインド時および実行時にチェックが行われます。チェックは、必要に応じてDBMS_SQLサブプログラムをコールするたびに実行することもできます。次のことがチェックされます。

- current_userが、サブプログラムをコールした時点と最新の解析をコールした時点で同じであること。

- サブプログラムのコール時に有効化されたロールが、最新の解析のコール時に有効化されたロールと同一であるかどうか。

- コンテナが、サブプログラムをコールした時点と最新の解析をコールした時点で同じであること。

定義者の権限サブプログラムを使用した場合との整合性を維持するために、ロールは適用されません。

いずれかのチェックが正常に実行されなかった場合は、ORA-29470エラーが発生します。

チェックが実行されるタイミングを定義するためのメカニズムは、許容値がNULL、1および2の仮パラメータsecurity_levelを取るOPEN_CURSORサブプログラムの新しいオーバーロードです。

- security_level = 1(またはNULL)の場合、チェックはバインド時および実行時にのみ行われます。

- security_level = 2の場合、チェックは常に行われます。

アップグレードに関する注意事項

このセキュリティ体制は、以前のリリースよりも厳しくなっています。したがって、DBMS_SQLを使用すると、アップグレード時にランタイム・エラーが発生する可能性があります。

定数

表149-1に示す定数は、PARSEプロシージャのlanguage_flagパラメータとともに使用します。

表149-1 DBMS_SQLの定数

名前

タイプ

値

説明

V6

INTEGER

0

Oracle Databaseバージョン6の動作を指定します。

NATIVE

INTEGER

1

プログラムの接続先のデータベースの通常の動作を指定します。

V7

INTEGER

2

Oracle Databaseバージョン7の動作を指定します。

FOREIGN_SYNTAX

INTEGER

4

language_flag引数としてPARSEプロシージャに渡され、解析するSQL文を、データベース・セッションで設定されたSQL翻訳プロファイルにより最初に翻訳する必要があることを指定します。プロファイルが設定されていない場合、エラーが発生します。

例外

inconsistent_type EXCEPTION;
pragma exception_init(inconsistent_type, -6562);

この例外は、指定したOUTパラメータ(要求した値を設定するパラメータ)のタイプがその値のタイプと異なる場合、COLUMN_VALUEプロシージャまたはVARIABLE_VALUEプロシージャで発生します。

使用上の注意

- 実行フロー

- 問合せの処理

- 更新、挿入および削除の処理

- エラーの位置

実行フロー

1. OPEN_CURSOR

2. PARSE

3. BIND_VARIABLEまたはBIND_ARRAY

4. DEFINE_COLUMN、DEFINE_COLUMN_LONGまたはDEFINE_ARRAY

5. EXECUTE

6. FETCH_ROWSまたはEXECUTE_AND_FETCH

7. VARIABLE_VALUE、COLUMN_VALUEまたはCOLUMN_VALUE_LONG

8. CLOSE_CURSOR

OPEN_CURSOR

SQL文を処理するためには、オープン・カーソルが必要です。OPEN_CURSORファンクションをコールすると、ユーザーはOracleが保持している有効なカーソルを示すデータ構造のカーソルID番号を受け取ります。これらのカーソルは、プリコンパイラ、OCIまたはPL/SQLレベルで定義されたカーソルとは異なり、DBMS_SQLパッケージでのみ使用されます。

PARSE

SQL文はすべて、PARSEプロシージャをコールして解析する必要があります。文を解析することによって、その文の構文がチェックされ、プログラム内のカーソルに関連付けられます。

DML文またはDDL文はすべて解析できます。DDL文は解析時に実行され、暗黙のコミットを実行します。

図149-1に、DBMS_SQL実行フローを示します。

図149-1 DBMS_SQL実行フロー

BIND_VARIABLEまたはBIND_ARRAY

多くのDML文では、プログラム内のデータをOracleに入力することが必要です。実行時に提供する入力データを含んでいるSQL文を定義する場合は、SQL文内のプレースホルダを使用して、データの提供場所にマークを付ける必要があります。

SQL文内の各プレースホルダに対してBIND_ARRAYプロシージャまたはBIND_VARIABLEプロシージャのいずれかをコールして、プログラム内の変数の値(または配列の値)をプレースホルダに提供する必要があります。SQL文が引き続き実行されると、Oracleは、ユーザーのプログラムが入力変数と出力変数、またはバインド変数に設定したデータを使用します。

DBMS_SQLは、その都度異なるバインド変数を使用してDML文を繰り返し実行できます。BIND_ARRAYプロシージャを使用すると、スカラーのコレクションをバインドでき、それぞれの値はEXECUTEごとに1回だけ入力変数として使用されます。これは、OCIがサポートする配列インタフェースに類似しています。

プレースホルダーにバインドされた値のデータ・タイプは、PL/SQL専用のデータ・タイプであってはなりません。

DEFINE_COLUMN、DEFINE_COLUMN_LONGまたはDEFINE_ARRAY

SELECT文内で選択されている行の列は、選択リスト内での相対位置(左から右)によって識別されます。問合せの場合は、定義プロシージャ(DEFINE_COLUMNプロシージャ、DEFINE_COLUMN_LONGプロシージャまたはDEFINE_ARRAYプロシージャ)の1つをコールして、SELECT値を受け入れる変数を指定する必要があり、これはINTO句が静的問合せに対して行う方法とほとんど同じです。

DEFINE_COLUMNを使用してLONG列以外の列を定義するのと同じ方法で、DEFINE_COLUMN_LONGプロシージャを使用してLONG列を定義します。COLUMN_VALUE_LONGプロシージャを使用してLONG列からフェッチする前に、DEFINE_COLUMN_LONGをコールする必要があります。

DEFINE_ARRAYプロシージャを使用して、行を単一のSELECT文でフェッチするPL/SQLコレクションを定義します。DEFINE_ARRAYは、1回のフェッチで複数行をフェッチするインタフェースを提供します。COLUMN_VALUEプロシージャで行をフェッチする前に、DEFINE_ARRAYをコールする必要があります。

EXECUTE

EXECUTEファンクションをコールして、SQL文を実行します。

FETCH_ROWSまたはEXECUTE_AND_FETCH

FETCH_ROWSファンクションで問合せを満たす行を取得します。フェッチで行を取得できなくなるまで、フェッチを連続実行して別の行を取得します。単一の実行に対してEXECUTEをコールしている場合は、EXECUTEファンクションをコールして次にFETCH_ROWSをコールするかわりに、EXECUTE_AND_FETCHファンクションをコールするほうが効率的な場合があります。

VARIABLE_VALUE、COLUMN_VALUEまたはCOLUMN_VALUE_LONG

問合せの場合は、COLUMN_VALUEプロシージャをコールして、FETCH_ROWSファンクションで取得する列の値を決定します。returning句によるPL/SQLプロシージャまたはDML文へのコールを含む無名ブロックの場合は、VARIABLE_VALUEプロシージャをコールして、文の実行時に出力変数に割り当てられた値を取得します。

LONGデータベース列(サイズは最大2GBまで可能)の一部のみをフェッチするには、DEFINE_COLUMN_LONGプロシージャを使用します。列値へのオフセット(バイト単位)とフェッチするバイト数を指定できます。

CLOSE_CURSOR

セッションでカーソルが不要な場合は、CLOSE_CURSORプロシージャをコールしてカーソルをクローズします。Oracle Open Gatewayを使用している場合は、これ以外のときにもカーソルのクローズが必要になる場合があります。追加情報は、Oracle Open Gatewayに関連するドキュメントを参照してください。

カーソルをクローズしないと、カーソルが不要になっても、そのカーソルが使用しているメモリーは割り当てられたままになります。

問合せの処理

動的SQLを使用して問合せを処理する場合は、次のステップを実行する必要があります。

1. DEFINE_COLUMNプロシージャ、DEFINE_COLUMN_LONGプロシージャまたはDEFINE_ARRAYプロシージャをコールして、SELECT文が戻す値を受け入れる変数を指定します。

2. EXECUTEファンクションをコールして、SELECT文を実行します。

3. FETCH_ROWSファンクション(またはEXECUTE_AND_FETCH)をコールして、問合せに一致した行を取得します。

4. COLUMN_VALUEプロシージャまたはCOLUMN_VALUE_LONGプロシージャをコールして、問合せに関してFETCH_ROWSファンクションが取得した列の値を判別します。PL/SQLプロシージャへのコールを含んだ無名ブロックを使用した場合は、VARIABLE_VALUEプロシージャをコールして、これらのプロシージャの出力変数に割り当てられた値を取得します。

更新、挿入および削除の処理

動的SQLを使用してINSERT、UPDATEまたはDELETEを処理する場合は、次のステップを実行する必要があります。

1. EXECUTEファンクションをコールして、INSERT文、UPDATE文またはDELETE文を実行します。

2. 文にreturning句がある場合は、VARIABLE_VALUEプロシージャをコールして出力変数に割り当てられた値を取得します。

エラーの位置

DBMS_SQLパッケージには、セッションで最後に参照されたカーソルの情報を取得するための追加ファンクションがあります。これらのファンクションが戻す値は、SQL文の実行直後にのみ有効です。また、エラーを検出するファンクションは、特定のDBMS_SQLコール後にのみ意味を持ちます。たとえば、PARSEプロシージャの1つを呼び出した直後には、LAST_ERROR_POSITIONファンクションをコールします。

例

この項では、DBMS_SQLパッケージを使用するプロシージャの例が示されています。

例1

この例では、文のテキストがコンパイル時に判明しているため、動的SQLは必要ありませんが、パッケージの基礎となる基本概念を示します。

DEMOプロシージャは、DEMOの実行時に指定した給与よりも高い給与のすべての従業員をEMP表から削除します。

CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AS
cursor_name INTEGER;
rows_processed INTEGER;
BEGIN
cursor_name := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, 'DELETE FROM emp WHERE sal > :x',
DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', salary);
rows_processed := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;

例2

次のプロシージャの例では、SQL文が渡され、そのSQL文を解析して実行します。

CREATE OR REPLACE PROCEDURE exec(STRING IN varchar2) AS
cursor_name INTEGER;
ret INTEGER;
BEGIN
cursor_name := DBMS_SQL.OPEN_CURSOR;

DDL文はPARSEをコールして実行され、暗黙のコミットが実行されます。

DBMS_SQL.PARSE(cursor_name, string, DBMS_SQL.NATIVE);
ret := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;

このようなプロシージャを作成すると、次の操作を実行できます。

- コール元のプログラムによって、実行時にSQL文を動的に生成できます。

- SQL文は、DDL文またはバインドなしのDMLでかまいません。

たとえば、このプロシージャの作成後に、次のコールを行うことができます。

exec('create table acct(c1 integer)');

次の例のように、このプロシージャはリモートでコールすることもできます。これによって、リモートDDLを実行できます。

exec@hq.com('CREATE TABLE acct(c1 INTEGER)');

例3

次のプロシージャの例は、コピー元表とコピー先表の名前が渡され、コピー元表からコピー先表に行をコピーします。このプロシージャの例は、コピー元表とコピー先表にはいずれも次の列があることを前提としています。

id        of type NUMBER
name      of type VARCHAR2(30)
birthdate of type DATE

このプロシージャでは、動的SQLの使用は必要ありませんが、このパッケージの概念が示されています。

CREATE OR REPLACE PROCEDURE copy (
source      IN VARCHAR2,
destination IN VARCHAR2) IS
id_var             NUMBER;
name_var           VARCHAR2(30);
birthdate_var      DATE;
source_cursor      INTEGER;
destination_cursor INTEGER;
ignore             INTEGER;
BEGIN

-- Prepare a cursor to select from the source table:
source_cursor := dbms_sql.open_cursor;
DBMS_SQL.PARSE(source_cursor,
'SELECT id, name, birthdate FROM ' || source,
DBMS_SQL.NATIVE);
DBMS_SQL.DEFINE_COLUMN(source_cursor, 1, id_var);
DBMS_SQL.DEFINE_COLUMN(source_cursor, 2, name_var, 30);
DBMS_SQL.DEFINE_COLUMN(source_cursor, 3, birthdate_var);
ignore := DBMS_SQL.EXECUTE(source_cursor);

-- Prepare a cursor to insert into the destination table:
destination_cursor := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(destination_cursor,
'INSERT INTO ' || destination ||
' VALUES (:id_bind, :name_bind, :birthdate_bind)',
DBMS_SQL.NATIVE);

-- Fetch a row from the source table and insert it into the destination table:
LOOP
IF DBMS_SQL.FETCH_ROWS(source_cursor)>0 THEN
-- get column values of the row
DBMS_SQL.COLUMN_VALUE(source_cursor, 1, id_var);
DBMS_SQL.COLUMN_VALUE(source_cursor, 2, name_var);
DBMS_SQL.COLUMN_VALUE(source_cursor, 3, birthdate_var);

-- Bind the row into the cursor that inserts into the destination table. You
-- could alter this example to require the use of dynamic SQL by inserting an
-- if condition before the bind.
DBMS_SQL.BIND_VARIABLE(destination_cursor, ':id_bind', id_var);
DBMS_SQL.BIND_VARIABLE(destination_cursor, ':name_bind', name_var);
DBMS_SQL.BIND_VARIABLE(destination_cursor, ':birthdate_bind',
birthdate_var);
ignore := DBMS_SQL.EXECUTE(destination_cursor);
ELSE

-- No more rows to copy:
EXIT;
END IF;
END LOOP;

-- Commit and close all cursors:
COMMIT;
DBMS_SQL.CLOSE_CURSOR(source_cursor);
DBMS_SQL.CLOSE_CURSOR(destination_cursor);
EXCEPTION
WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(source_cursor) THEN
DBMS_SQL.CLOSE_CURSOR(source_cursor);
END IF;
IF DBMS_SQL.IS_OPEN(destination_cursor) THEN
DBMS_SQL.CLOSE_CURSOR(destination_cursor);
END IF;
RAISE;
END;
/

例3、4および5: バルクDML

次の一連の例では、INSERT、UPDATEおよびDELETEの各SQL DML文でのバルク配列バインド(表項目)の使用方法を示します。

次に、emp表に新しい従業員7人を追加するバルクINSERT文の例を示します。

DECLARE
stmt VARCHAR2(200);
empno_array      DBMS_SQL.NUMBER_TABLE;
empname_array    DBMS_SQL.VARCHAR2_TABLE;
jobs_array       DBMS_SQL.VARCHAR2_TABLE;
mgr_array        DBMS_SQL.NUMBER_TABLE;
hiredate_array   DBMS_SQL.VARCHAR2_TABLE;
sal_array        DBMS_SQL.NUMBER_TABLE;
comm_array       DBMS_SQL.NUMBER_TABLE;
deptno_array     DBMS_SQL.NUMBER_TABLE;
c                NUMBER;
dummy            NUMBER;
BEGIN
empno_array(1):= 9001;
empno_array(2):= 9002;
empno_array(3):= 9003;
empno_array(4):= 9004;
empno_array(5):= 9005;
empno_array(6):= 9006;
empno_array(7):= 9007;

empname_array(1) := 'Dopey';
empname_array(2) := 'Grumpy';
empname_array(3) := 'Doc';
empname_array(4) := 'Happy';
empname_array(5) := 'Bashful';
empname_array(6) := 'Sneezy';
empname_array(7) := 'Sleepy';

jobs_array(1) := 'Miner';
jobs_array(2) := 'Miner';
jobs_array(3) := 'Miner';
jobs_array(4) := 'Miner';
jobs_array(5) := 'Miner';
jobs_array(6) := 'Miner';
jobs_array(7) := 'Miner';

mgr_array(1) := 9003;
mgr_array(2) := 9003;
mgr_array(3) := 9003;
mgr_array(4) := 9003;
mgr_array(5) := 9003;
mgr_array(6) := 9003;
mgr_array(7) := 9003;

hiredate_array(1) := '06-DEC-2006';
hiredate_array(2) := '06-DEC-2006';
hiredate_array(3) := '06-DEC-2006';
hiredate_array(4) := '06-DEC-2006';
hiredate_array(5) := '06-DEC-2006';
hiredate_array(6) := '06-DEC-2006';
hiredate_array(7) := '06-DEC-2006';

sal_array(1):= 1000;
sal_array(2):= 1000;
sal_array(3):= 1000;
sal_array(4):= 1000;
sal_array(5):= 1000;
sal_array(6):= 1000;
sal_array(7):= 1000;

comm_array(1):= 0;
comm_array(2):= 0;
comm_array(3):= 0;
comm_array(4):= 0;
comm_array(5):= 0;
comm_array(6):= 0;
comm_array(7):= 0;

deptno_array(1):= 11;
deptno_array(2):= 11;
deptno_array(3):= 11;
deptno_array(4):= 11;
deptno_array(5):= 11;
deptno_array(6):= 11;
deptno_array(7):= 11;

stmt := 'INSERT INTO emp VALUES(
:num_array, :name_array, :jobs_array, :mgr_array, :hiredate_array,
:sal_array, :comm_array, :deptno_array)';
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, stmt, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(c, ':num_array', empno_array);
DBMS_SQL.BIND_ARRAY(c, ':name_array', empname_array);
DBMS_SQL.BIND_ARRAY(c, ':jobs_array', jobs_array);
DBMS_SQL.BIND_ARRAY(c, ':mgr_array', mgr_array);
DBMS_SQL.BIND_ARRAY(c, ':hiredate_array', hiredate_array);
DBMS_SQL.BIND_ARRAY(c, ':sal_array', sal_array);
DBMS_SQL.BIND_ARRAY(c, ':comm_array', comm_array);
DBMS_SQL.BIND_ARRAY(c, ':deptno_array', deptno_array);

dummy := DBMS_SQL.EXECUTE(c);
DBMS_SQL.CLOSE_CURSOR(c);
EXCEPTION WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(c) THEN
DBMS_SQL.CLOSE_CURSOR(c);
END IF;
RAISE;
END;
/
SHOW ERRORS;

次に、emp表内の4人の既存従業員の給与を更新するバルクUPDATE文の例を示します。

DECLARE
stmt VARCHAR2(200);
empno_array     DBMS_SQL.NUMBER_TABLE;
salary_array    DBMS_SQL.NUMBER_TABLE;
c               NUMBER;
dummy           NUMBER;
BEGIN

empno_array(1):= 7369;
empno_array(2):= 7876;
empno_array(3):= 7900;
empno_array(4):= 7934;

salary_array(1) := 10000;
salary_array(2) := 10000;
salary_array(3) := 10000;
salary_array(4) := 10000;

stmt := 'update emp set sal = :salary_array
WHERE empno = :num_array';
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, stmt, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(c, ':num_array', empno_array);
DBMS_SQL.BIND_ARRAY(c, ':salary_array', salary_array);
dummy := DBMS_SQL.EXECUTE(c);
DBMS_SQL.CLOSE_CURSOR(c);

EXCEPTION WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(c) THEN
DBMS_SQL.CLOSE_CURSOR(c);
END IF;
RAISE;
END;
/

たとえば、DELETE文では、WHERE句に配列をバインドして、配列内の要素ごとに文を実行させることもできます。

DECLARE
stmt VARCHAR2(200);
dept_no_array DBMS_SQL.NUMBER_TABLE;
c NUMBER;
dummy NUMBER;
begin
dept_no_array(1) := 10; dept_no_array(2) := 20;
dept_no_array(3) := 30; dept_no_array(4) := 40;
dept_no_array(5) := 30; dept_no_array(6) := 40;
stmt := 'delete from emp where deptno = :dept_array';
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, stmt, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(c, ':dept_array', dept_no_array, 1, 4);
dummy := DBMS_SQL.EXECUTE(c);
DBMS_SQL.CLOSE_CURSOR(c);

EXCEPTION WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(c) THEN
DBMS_SQL.CLOSE_CURSOR(c);
END IF;
RAISE;
END;
/

前述の例では、1から4までの要素のみが、BIND_ARRAYコールで指定したとおりに使用されます。配列の各要素は、大量の従業員をデータベースから削除する可能性があります。

例6および7: 配列の定義

次の例では、DEFINE_ARRAYプロシージャの使用方法を示します。

declare
c       NUMBER;
d       NUMBER;
n_tab   DBMS_SQL.NUMBER_TABLE;
indx    NUMBER := -10;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
dBMS_SQL.PARSE(c, 'select n from t order by 1', DBMS_SQL.NATIVE);

DBMS_SQL.DEFINE_ARRAY(c, 1, n_tab, 10, indx);

d := DBMS_SQL.EXECUTE(c);
loop
d := DBMS_SQL.FETCH_ROWS(c);

DBMS_SQL.COLUMN_VALUE(c, 1, n_tab);

EXIT WHEN d != 10;
END LOOP;

DBMS_SQL.CLOSE_CURSOR(c);

EXCEPTION WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(c) THEN
DBMS_SQL.CLOSE_CURSOR(c);
END IF;
RAISE;
END;
/

前述の例では、FETCH_ROWSファンクションをコールするたびに、DBMS_SQLバッファに保持されている10行がフェッチされます。COLUMN_VALUEプロシージャがコールされると、それらの行は、DEFINE文の指定に従って、-10から-1の位置で指定されたPL/SQL表(この場合はn_tab)に移動します。次に、2番目のバッチがループ内でフェッチされ、行が0(ゼロ)から9の位置に移動し、その後同様に続きます。

各配列への現行の索引は、自動的にメンテナンスされます。この索引は、EXECUTE時に「indx」に初期化され、COLUMN_VALUEがコールされるたびに更新されます。任意の時点で再実行する場合は、各DEFINEの現行の索引が「indx」に再初期化されます。

このようにして、問合せのすべての結果が表内にフェッチされます。FETCH_ROWSで10行をフェッチできない場合は、実際にフェッチされた行数を戻して(1行もフェッチできなかった場合は0(ゼロ)を戻します)、ループを終了します。

DEFINE_ARRAYプロシージャの別の使用例を次に示します。

次のように定義されたMULTI_TAB表を想定します。

CREATE TABLE multi_tab (num NUMBER,
dat1 DATE,
var VARCHAR2(24),
dat2 DATE)

この表からすべてを選択して4つのPL/SQL表に移動するには、次の簡単なプログラムを使用できます。

DECLARE
c       NUMBER;
d       NUMBER;
n_tab  DBMS_SQL.NUMBER_TABLE;
d_tab1 DBMS_SQL.DATE_TABLE;
v_tab  DBMS_SQL.VARCHAR2_TABLE;
d_tab2 DBMS_SQL.DATE_TABLE;
indx NUMBER := 10;
BEGIN

c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'select * from multi_tab order by 1', DBMS_SQL.NATIVE);

DBMS_SQL.DEFINE_ARRAY(c, 1, n_tab,  5, indx);
DBMS_SQL.DEFINE_ARRAY(c, 2, d_tab1, 5, indx);
DBMS_SQL.DEFINE_ARRAY(c, 3, v_tab,  5, indx);
DBMS_SQL.DEFINE_ARRAY(c, 4, d_tab2, 5, indx);

d := DBMS_SQL.EXECUTE(c);

LOOP
d := DBMS_SQL.FETCH_ROWS(c);

DBMS_SQL.COLUMN_VALUE(c, 1, n_tab);
DBMS_SQL.COLUMN_VALUE(c, 2, d_tab1);
DBMS_SQL.COLUMN_VALUE(c, 3, v_tab);
DBMS_SQL.COLUMN_VALUE(c, 4, d_tab2);

EXIT WHEN d != 5;
END LOOP;

DBMS_SQL.CLOSE_CURSOR(c);

/*

これで、4つの表はあらゆる用途に使用できます。使用方法の1つとして、'INSERT into SOME_T values (:a, :b, :c, :d)'などの文を使用して、行を別の表に移動するためにBIND_ARRAYを使用できます。

*/

EXCEPTION WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(c) THEN
DBMS_SQL.CLOSE_CURSOR(c);
END IF;
RAISE;
END;
/

例8: 列の定義の表示

このコードは、説明が必要な表のSELECT *問合せを使用することで、SQL*PlusのDESCRIBEコールのかわりとして使用できます。

DECLARE
c           NUMBER;
d           NUMBER;
col_cnt     INTEGER;
f           BOOLEAN;
rec_tab     DBMS_SQL.DESC_TAB;
col_num    NUMBER;
PROCEDURE print_rec(rec in DBMS_SQL.DESC_REC) IS
BEGIN
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('col_type            =    '
|| rec.col_type);
DBMS_OUTPUT.PUT_LINE('col_maxlen          =    '
|| rec.col_max_len);
DBMS_OUTPUT.PUT_LINE('col_name            =    '
|| rec.col_name);
DBMS_OUTPUT.PUT_LINE('col_name_len        =    '
|| rec.col_name_len);
DBMS_OUTPUT.PUT_LINE('col_schema_name     =    '
|| rec.col_schema_name);
DBMS_OUTPUT.PUT_LINE('col_schema_name_len =    '
|| rec.col_schema_name_len);
DBMS_OUTPUT.PUT_LINE('col_precision       =    '
|| rec.col_precision);
DBMS_OUTPUT.PUT_LINE('col_scale           =    '
|| rec.col_scale);
DBMS_OUTPUT.PUT('col_null_ok         =    ');
IF (rec.col_null_ok) THEN
DBMS_OUTPUT.PUT_LINE('true');
ELSE
DBMS_OUTPUT.PUT_LINE('false');
END IF;
END;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(c, 'SELECT * FROM scott.bonus', DBMS_SQL.NATIVE);

d := DBMS_SQL.EXECUTE(c);

DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);

/*
* Following loop could simply be for j in 1..col_cnt loop.
* Here we are simply illustrating some of the PL/SQL table
* features.
*/
col_num := rec_tab.first;
IF (col_num IS NOT NULL) THEN
LOOP
print_rec(rec_tab(col_num));
col_num := rec_tab.next(col_num);
EXIT WHEN (col_num IS NULL);
END LOOP;
END IF;

DBMS_SQL.CLOSE_CURSOR(c);
END;
/

例9: RETURNING句

この句を使用すると、INSERT、UPDATEおよびDELETEの各文でバインド変数内の式の値を戻すことができます。

単一行が挿入、更新または削除された場合は、DBMS_SQL.BIND_VARIABLEを使用してこれらのアウトバインドをバインドします。これらのバインド変数内の値を取得するには、DBMS_SQL.VARIABLE_VALUEをコールします。

注意:
この処理は、DBMS_SQL内のアウトバインドを使用してPL/SQLブロックを実行した後にコールする必要があるDBMS_SQL.VARIABLE_VALUEに類似しています。

i) 単一行の挿入

CREATE OR REPLACE PROCEDURE single_Row_insert
(c1 NUMBER, c2 NUMBER, r OUT NUMBER) is
c NUMBER;
n NUMBER;
begin
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'INSERT INTO tab VALUES (:bnd1, :bnd2) ' ||
'RETURNING c1*c2 INTO :bnd3', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(c, 'bnd1', c1);
DBMS_SQL.BIND_VARIABLE(c, 'bnd2', c2);
DBMS_SQL.BIND_VARIABLE(c, 'bnd3', r);
n := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'bnd3', r); -- get value of outbind variable
DBMS_SQL.CLOSE_CURSOR(c);
END;
/

ii) 単一行の更新

CREATE OR REPLACE PROCEDURE single_Row_update
(c1 NUMBER, c2 NUMBER, r out NUMBER) IS
c NUMBER;
n NUMBER;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'UPDATE tab SET c1 = :bnd1, c2 = :bnd2 ' ||
'WHERE rownum < 2 ' ||
'RETURNING c1*c2 INTO :bnd3', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(c, 'bnd1', c1);
DBMS_SQL.BIND_VARIABLE(c, 'bnd2', c2);
DBMS_SQL.BIND_VARIABLE(c, 'bnd3', r);
n := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'bnd3', r);-- get value of outbind variable
DBMS_SQL.CLOSE_CURSOR(c);
END;
/

iii) 単一行の削除

CREATE OR REPLACE PROCEDURE single_Row_Delete
(c1 NUMBER, r OUT NUMBER) is
c NUMBER;
n number;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'DELETE FROM tab WHERE ROWNUM = :bnd1 ' ||
'RETURNING c1*c2 INTO :bnd2', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(c, 'bnd1', c1);
DBMS_SQL.BIND_VARIABLE(c, 'bnd2', r);
n := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'bnd2', r);-- get value of outbind variable
DBMS_SQL.CLOSE_CURSOR(c);
END;
/

iv) 複数行の挿入

CREATE OR REPLACE PROCEDURE multi_Row_insert
(c1 DBMS_SQL.NUMBER_TABLE, c2 DBMS_SQL.NUMBER_TABLE,
r OUT DBMS_SQL.NUMBER_TABLE) is
c NUMBER;
n NUMBER;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'insert into tab VALUES (:bnd1, :bnd2) ' ||
'RETURNING c1*c2 INTO :bnd3', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(c, 'bnd1', c1);
DBMS_SQL.BIND_ARRAY(c, 'bnd2', c2);
DBMS_SQL.BIND_ARRAY(c, 'bnd3', r);
n := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'bnd3', r);-- get value of outbind variable
DBMS_SQL.CLOSE_CURSOR(c);
END;
/

v) 複数行の更新

CREATE OR REPLACE PROCEDURE multi_Row_update
(c1 NUMBER, c2 NUMBER, r OUT DBMS_SQL.NUMBER_TABLE) IS
c NUMBER;
n NUMBER;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'UPDATE tab SET c1 = :bnd1 WHERE c2 = :bnd2 ' ||
'RETURNING c1*c2 INTO :bnd3', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(c, 'bnd1', c1);
DBMS_SQL.BIND_VARIABLE(c, 'bnd2', c2);
DBMS_SQL.BIND_ARRAY(c, 'bnd3', r);
n := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'bnd3', r);-- get value of outbind variable
DBMS_SQL.CLOSE_CURSOR(c);
END;
/

注意:
bnd1とbnd2は配列に指定できます。更新されたすべての行に対する式の値は、bnd3に入れられます。bnd1とbnd2の各値に更新された行を判別する方法はありません。

vi) 複数行の削除

CREATE OR REPLACE PROCEDURE multi_row_delete
(c1 DBMS_SQL.NUMBER_TABLE,
r OUT DBMS_SQL.NUMBER_TABLE) is
c NUMBER;
n NUMBER;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'DELETE FROM tab WHERE c1 = :bnd1' ||
'RETURNING c1*c2 INTO :bnd2', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(c, 'bnd1', c1);
DBMS_SQL.BIND_ARRAY(c, 'bnd2', r);
n := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'bnd2', r);-- get value of outbind variable
DBMS_SQL.CLOSE_CURSOR(c);
END;
/

vii) バルクPL/SQL内のアウトバインド

CREATE OR REPLACE PROCEDURE foo (n NUMBER, square OUT NUMBER) IS
BEGIN square := n * n; END;/

CREATE OR REPLACE PROCEDURE bulk_plsql
(n DBMS_SQL.NUMBER_TABLE, square OUT DBMS_SQL.NUMBER_TABLE) IS
c NUMBER;
r NUMBER;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'BEGIN foo(:bnd1, :bnd2); END;', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_ARRAY(c, 'bnd1', n);
DBMS_SQL.BIND_ARRAY(c, 'bnd2', square);
r := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'bnd2', square);
END;
/

注意:
number_TableのDBMS_SQL.BIND_ARRAYは、数値を内部的にバインドします。文を実行する回数は、インバインド配列内の要素数によって決まります。

例10: DBMS_SQLでのユーザー定義タイプのバインドおよび定義

CREATE TYPE dnames_var IS VARRAY(7) OF VARCHAR2(30)
/

CREATE TABLE depts (region VARCHAR2(25), dept_names dnames_var)
/

INSERT INTO depts VALUES('Europe', dnames_var('Shipping','Sales','Finance'))
/
INSERT INTO depts VALUES('Americas', dnames_var('Sales','Finance','Shipping'))
/
INSERT INTO depts
VALUES('Asia', dnames_var('Finance','Payroll','Shipping','Sales'))
/

CREATE OR REPLACE PROCEDURE update_depts(new_dnames dnames_var, region VARCHAR2) IS
some_dnames dnames_var;
c      NUMBER;
r      NUMBER;
sql_stmt VARCHAR2(32767) :=
'UPDATE depts SET dept_names = :b1 WHERE region = :b2 RETURNING dept_names INTO :b3';

BEGIN

c := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(c, sql_stmt, dbms_sql.native);

DBMS_SQL.BIND_VARIABLE(c, 'b1', new_dnames);
DBMS_SQL.BIND_VARIABLE(c, 'b2', region);
DBMS_SQL.BIND_VARIABLE(c, 'b3', some_dnames);

r := DBMS_SQL.EXECUTE(c);

-- Get value of outbind variable
DBMS_SQL.VARIABLE_VALUE(c, 'b3', some_dnames);

DBMS_SQL.CLOSE_CURSOR(c);

-- select dept_names
sql_stmt := 'SELECT dept_names FROM depts WHERE region = :b1';

c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, sql_stmt, dbms_sql.native);

DBMS_SQL.DEFINE_COLUMN(c, 1, some_dnames);
DBMS_SQL.BIND_VARIABLE(c, 'b1', region);

r := DBMS_SQL.EXECUTE_AND_FETCH(c);

DBMS_SQL.COLUMN_VALUE(c, 1, some_dnames);

DBMS_SQL.CLOSE_CURSOR(c);

-- loop through some_dnames collections
FOR i IN some_dnames.FIRST .. some_dnames.LAST  LOOP
DBMS_OUTPUT.PUT_LINE('Dept. Name = ' || some_dnames(i) || ' Updated!');
END LOOP;
END;
/

DECLARE
new_dnames dnames_var;
BEGIN
new_dnames := dnames_var('Benefits', 'Advertising', 'Contracting',
'Executive', 'Marketing');
update_depts(new_dnames, 'Asia');
END;
/

データ構造

DBMS_SQLパッケージは、次のRECORDタイプおよびTABLEタイプを定義します。

レコード・タイプ

- DESC_RECレコード・タイプ

- DESC_REC2レコード・タイプ

- DESC_REC3レコード・タイプ

表タイプ

- BFILE_TABLE表タイプ

- BINARY_DOUBLE_TABLE表タイプ

- BINARY_FLOAT_TABLE表タイプ

- BLOB_TABLE表タイプ

- CLOB_TABLE表タイプ

- DATE_TABLE表タイプ

- DESC_TAB表タイプ

- DESC_TAB2表タイプ

- DESC_TAB3表タイプ

- INTERVAL_DAY_TO_SECOND_TABLE表タイプ

- INTERVAL_YEAR_TO_MONTH_TABLE表タイプ

- NUMBER_TABLE表タイプ

- TIME_TABLE表タイプ

- TIME_WITH_TIME_ZONE_TABLE表タイプ

- TIMESTAMP_TABLE表タイプ

- TIMESTAMP_WITH_LTZ_TABLE表タイプ

- TIMESTAMP_WITH_TIME_ZONE_TABLE表タイプ

- UROWID_TABLE表タイプ

- VARCHAR2_TABLE表タイプ

- VARCHAR2A表タイプ

- VARCHAR2S表タイプ

DESC_RECレコード・タイプ

注意:
このタイプは非推奨となっているため、DESC_REC2レコード・タイプを使用することをお薦めします。

このレコード・タイプは、動的問合せ内に単一列の記述情報を保持します。これは、DESC_TAB表タイプおよびDESCRIBE_COLUMNSプロシージャの要素タイプです。

構文

TYPE desc_rec IS RECORD (
col_type            BINARY_INTEGER := 0,
col_max_len         BINARY_INTEGER := 0,
col_name            VARCHAR2(32)   := '',
col_name_len        BINARY_INTEGER := 0,
col_schema_name     VARCHAR2(32)   := '',
col_schema_name_len BINARY_INTEGER := 0,
col_precision       BINARY_INTEGER := 0,
col_scale           BINARY_INTEGER := 0,
col_charsetid       BINARY_INTEGER := 0,
col_charsetform     BINARY_INTEGER := 0,
col_null_ok         BOOLEAN        := TRUE);
TYPE desc_tab IS TABLE OF desc_rec INDEX BY BINARY_INTEGER;

フィールド

表149-2 DESC_RECのフィールド

フィールド

説明

col_type

列のタイプ。

col_max_len

列の最大長。

col_name

列の名前。

col_name_len

列名の長さ。

col_schema_name

列のスキーマ名。

col_schema_name_len

列のスキーマ名の長さ。

col_precision

列の精度。

col_scale

列のスケール。

col_charsetid

列のキャラクタ・セットID。

col_charsetform

列のキャラクタ・セット形式。

col_null_ok

NULL列フラグ。NULLが設定可能な場合はTRUE。

DESC_REC2レコード・タイプ

DESC_REC2は、DESC_TAB2表タイプおよびDESCRIBE_COLUMNS2プロシージャの要素タイプです。

このレコード・タイプはDESC_RECと同じですが、col_nameフィールドがVARCHAR2の設定可能な最大サイズに拡張されている点は異なります。したがって、32文字を超えて列名の値を設定できるため、DESC_RECよりも適切です。この結果、DESC_RECは非推奨となります。

構文

TYPE desc_rec2 IS RECORD (
col_type            binary_integer := 0,
col_max_len         binary_integer := 0,
col_name            varchar2(32767) := '',
col_name_len        binary_integer := 0,
col_schema_name     varchar2(32)   := '',
col_schema_name_len binary_integer := 0,
col_precision       binary_integer := 0,
col_scale           binary_integer := 0,
col_charsetid       binary_integer := 0,
col_charsetform     binary_integer := 0,
col_null_ok         boolean        := TRUE);

フィールド

表149-3 DESC_REC2フィールド

フィールド

説明

col_type

列のタイプ。

col_max_len

列の最大長。

col_name

列の名前。

col_name_len

列名の長さ。

col_schema_name

列のスキーマ名。

col_schema_name_len

列のスキーマ名の長さ。

col_precision

列の精度。

col_scale

列のスケール。

col_charsetid

列のキャラクタ・セットID。

col_charsetform

列のキャラクタ・セット形式。

col_null_ok

NULL列フラグ。NULLが設定可能な場合はTRUE。

DESC_REC3レコード・タイプ

DESC_REC3は、DESC_TAB3表タイプおよびDESCRIBE_COLUMNS3プロシージャの要素タイプです。

DESC_REC3はDESC_REC2と同じですが、動的問合せ内に列のタイプ名(type_name)およびタイプ名の長さ(type_name_len)を保持するための2つのフィールドが追加されている点は異なります。列がユーザー定義タイプ(コレクション・タイプまたはオブジェクト・タイプ)の場合は、これらの2つのフィールドにタイプ名およびタイプ名の長さが保持されます。col_typeフィールドの値が109 (ユーザー定義タイプに対するOracleタイプ番号)の場合にのみ、col_type_nameおよびcol_type_name_lenフィールドにデータが移入されます。

構文

TYPE desc_rec3 IS RECORD (
col_type               binary_integer := 0,
col_max_len            binary_integer := 0,
col_name               varchar2(32767) := '',
col_name_len           binary_integer := 0,
col_schema_name        varchar2(32) := '',
col_schema_name_len    binary_integer := 0,
col_precision          binary_integer := 0,
col_scale              binary_integer := 0,
col_charsetid          binary_integer := 0,
col_charsetform        binary_integer := 0,
col_null_ok            boolean := TRUE,
col_type_name          varchar2(32767)   := '',
col_type_name_len      binary_integer := 0);

フィールド

表149-4 DESC_REC3のフィールド

フィールド

説明

col_type

列のタイプ。

col_max_len

列の最大長。

col_name

列の名前。

col_name_len

列名の長さ。

col_schema_name

列のスキーマ名。

col_schema_name_len

列のスキーマ名の長さ。

col_precision

列の精度。

col_scale

列のスケール。

col_charsetid

列のキャラクタ・セットID。

col_charsetform

列のキャラクタ・セット形式。

col_null_ok

NULL列フラグ。NULLが設定可能な場合はTRUE。

col_type_name

ユーザー定義タイプの列タイプ名。このフィールドは、col_typeが109の場合に有効です。

col_type_name_len

ユーザー定義タイプの列タイプ名の長さ。このフィールドは、col_typeが109の場合に有効です。

BFILE_TABLE表タイプ

これは、BFILEの表です。

構文

TYPE bfile_table IS TABLE OF BFILE INDEX BY BINARY_INTEGER;

BINARY_DOUBLE_TABLE表タイプ

これは、BINARY_DOUBLEの表です。

構文

TYPE binary_double_table IS TABLE OF BINARY_DOUBLE INDEX BY BINARY_INTEGER;

BINARY_FLOAT_TABLE表タイプ

これは、BINARY_FLOATの表です。

構文

TYPE binary_float_table IS TABLE OF BINARY_FLOAT INDEX BY BINARY_INTEGER;

BLOB_TABLE表タイプ

これは、BLOBの表です。

構文

TYPE blob_table IS TABLE OF BLOB INDEX BY BINARY_INTEGER;

CLOB_TABLE表タイプ

これは、CLOBの表です。

構文

TYPE clob_table IS TABLE OF CLOB INDEX BY BINARY_INTEGER;

DATE_TABLE表タイプ

これは、DATEの表です。

構文

type date_table IS TABLE OF DATE INDEX BY BINARY_INTEGER;

DESC_TAB表タイプ

これは、DESC_RECレコード・タイプの表です。

構文

TYPE desc_tab IS TABLE OF desc_rec INDEX BY BINARY_INTEGER;

DESC_TAB2表タイプ

これは、DESC_REC2レコード・タイプの表です。

構文

TYPE desc_tab2 IS TABLE OF desc_rec2 INDEX BY BINARY_INTEGER;

DESC_TAB3表タイプ

これは、DESC_REC3レコード・タイプの表です。

構文

TYPE desc_tab3 IS TABLE OF desc_rec3 INDEX BY BINARY_INTEGER;

INTERVAL_DAY_TO_SECOND_TABLE表タイプ

これは、DSINTERVAL_UNCONSTRAINEDの表です。

構文

TYPE interval_day_to_second_Table IS TABLE OF
DSINTERVAL_UNCONSTRAINED INDEX BY binary_integer;

INTERVAL_YEAR_TO_MONTH_TABLE表タイプ

これは、YMINTERVAL_UNCONSTRAINEDの表です。

構文

TYPE interval_year_to_month_table IS TABLE OF YMINTERVAL_UNCONSTRAINED
INDEX BY BINARY_INTEGER;

NUMBER_TABLE表タイプ

これは、NUMBERの表です。

構文

TYPE number_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

TIME_TABLE表タイプ

これは、TIME_UNCONSTRAINEDの表です。

構文

TYPE time_table IS TABLE OF TIME_UNCONSTRAINED INDEX BY BINARY_INTEGER;

TIME_WITH_TIME_ZONE_TABLE表タイプ

これは、TIME_TZ_UNCONSTRAINEDの表です。

構文

TYPE time_with_time_zone_table IS TABLE OF TIME_TZ_UNCONSTRAINED
INDEX BY BINARY_INTEGER;;

TIMESTAMP_TABLE表タイプ

これは、TIMESTAMP_UNCONSTRAINEDの表です。

構文

TYPE timestamp_table IS TABLE OF TIMESTAMP_UNCONSTRAINED INDEX BY BINARY_INTEGER;

TIMESTAMP_WITH_LTZ_TABLE表タイプ

これは、TIMESTAMP_LTZ_UNCONSTRAINEDの表です。

構文

TYPE timestamp_with_ltz_table IS TABLE OF
TIMESTAMP_LTZ_UNCONSTRAINED INDEX BY binary_integer;

TIMESTAMP_WITH_TIME_ZONE_TABLE表タイプ

これは、TIMESTAMP_TZ_UNCONSTRAINEDの表です。

構文

TYPE timestamp_with_time_zone_Table IS TABLE OF
TIMESTAMP_TZ_UNCONSTRAINED INDEX BY binary_integer;

UROWID_TABLE表タイプ

これは、UROWIDの表です。

構文

TYPE urowid_table IS TABLE OF UROWID INDEX BY BINARY_INTEGER;

VARCHAR2_TABLE表タイプ

これは、VARCHAR2(2000)の表です。

構文

TYPE varchar2_table IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;

VARCHAR2A表タイプ

これは、VARCHAR2(32767)の表です。

構文

TYPE varchar2a IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;

VARCHAR2S表タイプ

これは、VARCHAR2(256)の表です。

注意:
このタイプは、VARCHAR2A表タイプによって置き換えられています。このタイプは、レガシー・コードの下位互換性を維持する目的で現在保持されていますが、非推奨となる予定であり、将来のリリースではサポートされなくなります。

構文

TYPE varchar2s IS TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;

DBMS_SQLサブプログラムの要約

表149-5 DBMS_SQLパッケージのサブプログラム

サブプログラム

説明

BIND_ARRAYプロシージャ

指定の値を指定のコレクションにバインドします。

BIND_VARIABLEプロシージャ

指定の値を指定の変数にバインドします。

CLOSE_CURSORプロシージャ

指定したカーソルをクローズして、メモリーを解放します。

COLUMN_VALUEプロシージャ

カーソル内の指定位置にあるカーソル要素の値を戻します。

COLUMN_VALUE_LONGプロシージャ

DEFINE_COLUMN_LONGで定義したLONG列の選択された部分を戻します。

DEFINE_ARRAYプロシージャ

指定したカーソルから選択するコレクションを定義します。SELECT文のみで使用されます。

DEFINE_COLUMNプロシージャ

指定したカーソルから選択する列を定義します。SELECT文のみで使用されます。

DEFINE_COLUMN_CHARプロシージャ

指定したカーソルから選択するタイプCHARの列を定義します。SELECT文のみで使用されます。

DEFINE_COLUMN_LONGプロシージャ

指定したカーソルから選択するLONG列を定義します。SELECT文のみで使用されます。

DEFINE_COLUMN_RAWプロシージャ

指定したカーソルから選択するタイプRAWの列を定義します。SELECT文のみで使用されます。

DEFINE_COLUMN_ROWIDプロシージャ

指定したカーソルから選択するタイプROWIDの列を定義します。SELECT文のみで使用されます。

DESCRIBE_COLUMNSプロシージャ

DBMS_SQLによってオープンされ解析されたカーソルの列の情報を表示します。

DESCRIBE_COLUMNS2プロシージャ

指定した列の情報を表示します。DESCRIBE_COLUMNSプロシージャの代替オプションです。

DESCRIBE_COLUMNS3プロシージャ

指定した列の情報を表示します。DESCRIBE_COLUMNSプロシージャの代替オプションです。

EXECUTEファンクション

指定のカーソルを実行します。

EXECUTE_AND_FETCHファンクション

指定のカーソルを実行して、行をフェッチします。

FETCH_ROWSファンクション

指定のカーソルから行をフェッチします。

GET_NEXT_RESULTプロシージャ

再帰文のコール元に戻される次の結果の文を取得するか、このコール元が自らを再帰文のクライアントとして設定している場合、クライアントとしてこのコール元に戻される次の結果を取得します。

IS_OPENファンクション

指定のカーソルがオープンの場合にTRUEを戻します。

LAST_ERROR_POSITIONファンクション

エラーが発生したSQL文テキスト内のバイト・オフセットを戻します。

LAST_ROW_COUNTファンクション

フェッチされた累積行数を戻します。

LAST_ROW_IDファンクション

最後に処理された行のROWIDを戻します。

LAST_SQL_FUNCTION_CODEファンクション

文のSQL機能コードを戻します。

OPEN_CURSORファンクション

新規カーソルのID番号を戻します。

PARSEプロシージャ

指定した文を解析します。

RETURN_RESULTプロシージャ

実行した文の結果をクライアント・アプリケーションに戻します。

TO_CURSOR_NUMBERファンクション

強くタイプ付けされたREFカーソルまたは弱くタイプ付けされたREFカーソルのうちOPENが実行されたカーソルを使用して、そのカーソルをDBMS_SQLカーソル番号に変換します。

TO_REFCURSORファンクション

OPEN、PARSEおよびEXECUTEが実行されたカーソルを使用して、そのカーソルをPL/SQLで管理可能なREF CURSOR(弱くタイプ付けされたカーソル)に変換/移行します。変換/移行後のカーソルは、システム固有の動的SQLを使用するように切り替えられているPL/SQLシステム固有の動的SQLで消費できます。

VARIABLE_VALUEプロシージャ

指定のカーソルについて指定の変数の値を戻します。

BIND_ARRAYプロシージャ

このプロシージャは、文内の変数の名前に基づいて、カーソル内の指定の変数に指定の値または値のセットをバインドします。

構文

DBMS_SQL.BIND_ARRAY (
c                   IN INTEGER,
name                IN VARCHAR2,
<table_variable>    IN <datatype>
[,index1              IN INTEGER,
index2              IN INTEGER)] );

<table_variable>とそれに対応する<datatype>は、次のいずれかの組合せになります。

<clob_tab>     Clob_Table
<bflt_tab>     Binary_Float_Table
<bdbl_tab>     Binary_Double_Table
<blob_tab>     Blob_Table
<bfile_tab>    Bfile_Table
<date_tab>     Date_Table
<num_tab>      Number_Table
<urowid_tab>   Urowid_Table
<vchr2_tab>    Varchar2_Table
<tm_tab>       Time_Table
<ttz_tab>      Time_With_Time_Zone_Table
<tms_tab>      Timestamp_Table
<tstz_tab>     Timestamp_With_ltz_Table;
<tstz_tab>     Timestamp_With_Time_Zone_Table
<ids_tab>      Interval_Day_To_Second_Table
<iym_tab>      Interval_Year_To_Month_Table

BIND_ARRAYプロシージャは、異なるデータ・タイプを受け入れるためにオーバーロードされていることに注意してください。

パラメータ

表149-6 BIND_ARRAYプロシージャのパラメータ

パラメータ

説明

c

値をバインドするカーソルのID番号。

name

文内のコレクションの名前。

table_variable

<datatype>として宣言されたローカル変数。

index1

範囲の下限を示す表要素の索引。

index2

範囲の上限を示す表要素の索引。

使用上の注意

バインド変数名の長さは<=30バイトにする必要があります。

範囲をバインドするためには、範囲を指定する要素(タブ(index1)とタブ(index2))が表に含まれている必要がありますが、その範囲は詳細でなくてもかまいません。index1には、index2以下の値を指定してください。タブ(index1)とタブ(index2)の間にあるすべての要素がバインドして使用されます。

バインド・コールで索引を指定しない場合で、かつ文内の2つの異なるバインドが異なる数の要素を含んだ表を指定している場合、実際に使用される要素の数は、すべての表の最小値となります。これは索引を指定する場合にも当てはまり、すなわちすべての表に関する2つの索引の間では最小範囲が選択されます。

問合せ内のすべてのバインド変数が、配列バインドである必要はありません。一部は通常のバインドの場合があり、式の評価などでは、同じ値がコレクションの各要素に使用されます。

関連項目:
コレクションのバインド方法の例は、「例3、4および5: バルクDML」を参照してください。

バルク配列バインド

バルクSELECT、INSERT、UPDATEおよびDELETEは、多くのコールを1つにまとめることによって、アプリケーションのパフォーマンスが向上します。DBMS_SQLパッケージによって、ユーザーはPL/SQL表タイプを使用しながらデータの収集に対する処理を実行できます。

表項目は、バインドされていない同種のコレクションです。表項目は、持続記憶域では他のリレーショナル表に似ており、組込みの配列を持ちません。ただし、表項目が、(問合せまたは持続データのナビゲーション・アクセスのいずれかによって)作業領域に移されたり、あるいはPL/SQLの変数またはパラメータの値として作成されると、要素の値を取得して設定するために配列形式の構文で使用できる添字が、その表項目の要素に与えられます。

これらの要素の添字は詳細である必要はなく、負数を含むあらゆる数値が使用できます。たとえば、表項目には、-10、2および7の位置のみにある要素を含めることができます。

表項目が一時作業領域から持続記憶域に移されると、添字は格納されません。つまり、表項目は、持続記憶域内では順序が付いていません。

表は、バインド実行時に、PL/SQLバッファからローカルのDBMS_SQLバッファにコピーされ(すべてのスカラー・タイプについて同様)、ローカルのDBMS_SQLバッファから操作されます。したがって、バインド・コール後に表を変更した場合でも、その変更が実行方法に影響を与えることはありません。

スカラー・タイプとLOBタイプ・コレクション

ローカル変数を次のいずれかの表項目タイプとして宣言できます。これらの表項目タイプは、DBMS_SQLではパブリック・タイプとして定義されています。

TYPE binary_double_table
IS TABLE OF BINARY_DOUBLE  INDEX BY BINARY_INTEGER;
TYPE binary_float_table
IS TABLE OF BINARY_FLOAT   INDEX BY BINARY_INTEGER;
TYPE bfile_table    IS TABLE OF BFILE          INDEX BY BINARY_INTEGER;
TYPE blob_table     IS TABLE OF BLOB           INDEX BY BINARY_INTEGER;
TYPE clob_table     IS TABLE OF CLOB           INDEX BY BINARY_INTEGER;
TYPE date_table     IS TABLE OF DATE           INDEX BY BINARY_INTEGER;
TYPE interval_day_to_second_Table
IS TABLE OF dsinterval_unconstrained
INDEX BY BINARY_INTEGER;
TYPE interval_year_to_MONTH_Table
IS TABLE OF yminterval_unconstrained
INDEX BY BINARY_INTEGER;
TYPE number_table   IS TABLE OF NUMBER         INDEX BY BINARY_INTEGER;
TYPE time_table     IS TABLE OF time_unconstrained
INDEX BY BINARY_INTEGER;
TYPE time_with_time_zone_table
IS TABLE OF time_tz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_table
IS TABLE OF timestamp_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_with_ltz_Table
IS TABLE OF timestamp_ltz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_with_time_zone_Table
IS TABLE OF timestamp_tz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE urowid_table   IS TABLE OF UROWID         INDEX BY BINARY_INTEGER;
TYPE varchar2_table IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;

BIND_VARIABLEプロシージャ

このプロシージャは、文内の変数の名前に基づいて、カーソル内の指定の変数に指定の値または値のセットをバインドします。

構文

DBMS_SQL.BIND_VARIABLE (
c              IN INTEGER,
name           IN VARCHAR2,
value          IN <datatype>);

<datatype>は、次のいずれかのデータ・タイプである必要があります。

BINARY_DOUBLE
BINARY_FLOAT
BFILE
BLOB
CLOB CHARACTER SET ANY_CS
DATE
DSINTERVAL_UNCONSTRAINED
NUMBER
TIME_UNCONSTRAINED
TIME_TZ_UNCONSTRAINED
TIMESTAMP_LTZ_UNCONSTRAINED
TIMESTAMP_TZ_UNCONSTRAINED
TIMESTAMP_UNCONSTRAINED
UROWID
VARCHAR2 CHARACTER SET ANY_CS
YMINTERVAL_UNCONSTRAINED
user-defined object types
collections (VARRAYs and nested tables)
REFs
Opaque types

BIND_VARIABLEは、異なるデータ・タイプを受け入れるためにオーバーロードされていることに注意してください。

BIND_VARIABLEでは、次の構文もサポートされています。大カッコ[]は、BIND_VARIABLEファンクションのオプション・パラメータを示します。

DBMS_SQL.BIND_VARIABLE (
c              IN INTEGER,
name           IN VARCHAR2,
value          IN VARCHAR2 CHARACTER SET ANY_CS [,out_value_size IN INTEGER]);

CHAR、RAWおよびROWIDデータをバインドするために、次のバリエーションを構文で使用できます。

DBMS_SQL.BIND_VARIABLE_CHAR (
c              IN INTEGER,
name           IN VARCHAR2,
value          IN CHAR CHARACTER SET ANY_CS [,out_value_size IN INTEGER]);

DBMS_SQL.BIND_VARIABLE_RAW (
c              IN INTEGER,
name           IN VARCHAR2,
value          IN RAW [,out_value_size IN INTEGER]);

DBMS_SQL.BIND_VARIABLE_ROWID (
c              IN INTEGER,
name           IN VARCHAR2,
value          IN ROWID);

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

プラグマ

pragma restrict_references(bind_variable,WNDS);

パラメータ

表149-7 BIND_VARIABLEプロシージャのパラメータ

パラメータ

説明

c

値をバインドするカーソルのID番号。

name

文内の変数の名前。

value

カーソル内の変数にバインドする値。

IN変数とIN/OUT変数の場合、この値は、このパラメータで渡される値のタイプと同じタイプです。

out_value_size

VARCHAR2、RAW、CHAR OUTまたはIN/OUT変数の最大予測OUT値サイズ(バイト単位)。

サイズの指定がない場合は、現行値の長さが使用されます。このパラメータは、valueパラメータが初期化されていない場合、指定する必要があります。

使用上の注意

この変数がIN変数、IN/OUT変数またはINコレクションである場合は、指定したバインド値が、変数タイプまたは配列タイプに対して有効である必要があります。OUT変数のバインド値は無視されます。

SQL文のバインド変数またはコレクションは、名前によって識別されます。バインド変数またはバインド配列に値をバインドする場合は、次の例に示すように、文中でバインド変数を識別する文字列の先頭にコロンを付ける必要があります。

SELECT emp_name FROM emp WHERE SAL > :X;

この例では、対応するバインド・コールは次のようになります。

BIND_VARIABLE(cursor_name, ':X', 3500);

or

BIND_VARIABLE (cursor_name, 'X', 3500);

バインド変数名の長さは<=30バイトにする必要があります。

関連項目:
コレクションのバインド方法の例は、「例3、4および5: バルクDML」を参照してください。

CLOSE_CURSORプロシージャ

このプロシージャは、指定のカーソルをクローズします。

構文

DBMS_SQL.CLOSE_CURSOR (
c    IN OUT INTEGER);

プラグマ

pragma restrict_references(close_cursor,RNDS,WNDS);

パラメータ

表149-8 CLOSE_CURSORプロシージャのパラメータ

パラメータ

モード

説明

c

IN

クローズするカーソルのID番号。

c

OUT

カーソルはNULLに設定されています。

CLOSE_CURSORをコールした後、カーソルに割り当てられたメモリーは解放され、そのカーソルからはフェッチできなくなります。

COLUMN_VALUEプロシージャ

このプロシージャは、指定したカーソル内の指定の位置にあるカーソル要素の値を戻します。このプロシージャは、FETCH_ROWSをコールしてフェッチしたデータへのアクセスに使用されます。

構文

DBMS_SQL.COLUMN_VALUE (
c                 IN  INTEGER,
position          IN  INTEGER,
value             OUT <datatype>
[,column_error      OUT NUMBER]
[,actual_length     OUT INTEGER]);

大カッコ[ ]はオプション・パラメータを示します。<datatype>は次のいずれかのデータ・タイプである必要があります。

BINARY_DOUBLE
BINARY_FLOAT
BFILE
BLOB
CLOB CHARACTER SET ANY_CS
DATE
DSINTERVAL_UNCONSTRAINED
NUMBER
TIME_TZ_UNCONSTRAINED
TIME_UNCONSTRAINED
TIMESTAMP_LTZ_UNCONSTRAINED
TIMESTAMP_TZ_UNCONSTRAINED
TIMESTAMP_UNCONSTRAINED
UROWID
VARCHAR2 CHARACTER SET ANY_CS
YMINTERVAL_UNCONSTRAINED
user-defined object types
collections (VARRAYs and nested tables)
REFs
Opaque types

CHAR、RAWおよびROWIDデータを含んだ変数では、次のバリエーションを構文で使用できます。

DBMS_SQL.COLUMN_VALUE_CHAR (
c               IN  INTEGER,
position        IN  INTEGER,
value           OUT CHAR CHARACTER SET ANY_CS
[,column_error    OUT NUMBER]
[,actual_length   OUT INTEGER]);

DBMS_SQL.COLUMN_VALUE_RAW (
c               IN  INTEGER,
position        IN  INTEGER,
value           OUT RAW
[,column_error    OUT NUMBER]
[,actual_length   OUT INTEGER]);

DBMS_SQL.COLUMN_VALUE_ROWID (
c               IN  INTEGER,
position        IN  INTEGER,
value           OUT ROWID
[,column_error    OUT NUMBER]
[,actual_length   OUT INTEGER]);

次の構文を使用すると、COLUMN_VALUEプロシージャでバルク操作に対応できます。

DBMS_SQL.COLUMN_VALUE(
c                 IN             INTEGER,
position          IN             INTEGER,
<param_name>      IN OUT NOCOPY  <table_type>);

<param_name>とそれに対応する<table_type>は、次のいずれかの組合せになります。

bdbl_tab     Binary_Double_Table
bflt_tab     Binary_Float_Table
bf_tab       Bfile_Table
bl_tab       Blob_Table
cl_tab       Clob_Table
d_tab        Date_Table
ids_tab      Interval_Day_To_Second_Table
iym_tab      Interval_Year_To_Month_Table
n_tab        Number_Table
tm_tab       Time_Table
ttz_tab      Time_With_Time_Zone_Table
tms_tab      Timestamp_Table
tstz_tab     Timestamp_With_ltz_Table;
tstz_tab     Timestamp_With_Time_Zone_Table
ur_tab       Urowid_Table
c_tab        Varchar2_Table

プラグマ

pragma restrict_references(column_value,RNDS,WNDS);

パラメータ

表149-9 COLUMN_VALUEプロシージャのパラメータ(単一行)

パラメータ

説明

c

値をフェッチするカーソルのID番号。

position

カーソル内の列の相対位置。

文の最初の列は位置1です。

value

指定した列の値を戻します。

この出力パラメータのタイプが、DEFINE_COLUMNへのコールで定義されている値の実際のタイプと異なる場合、例外エラーORA-06562、inconsistent_typeが発生します。

column_error

指定した列値のエラー・コードを戻します。

actual_length

指定した列内の値の(切捨て前の)実際の長さ。

表149-10 COLUMN_VALUEプロシージャのパラメータ(バルク)

パラメータ

説明

c

値をフェッチするカーソルのID番号。

position

カーソル内の列の相対位置。

文の最初の列は位置1です。

<param_name>

<table_type>として宣言されたローカル変数。<param_name>は、バルク操作でのIN OUT NOCOPYパラメータです。

バルク操作では、サブプログラムによって、(暗黙的に保持される)適切な索引に新しい要素が追加されます。たとえば、DEFINE_ARRAYプロシージャの使用時にバッチ・サイズ(cntパラメータ)として10行、開始索引(lower_bound)として1を指定した場合、FETCH_ROWSファンクションをコールした後に、このサブプログラムを最初にコールすると索引1から10、その次にコールすると索引11から20に要素が移入され、以降同様の処理が行われます。

例外

指定したOUTパラメータのvalueが、実際の値のタイプと異なる場合は、INCONSISTENT_TYPE(ORA-06562)が発生します。このタイプは、DEFINE_COLUMNプロシージャをコールして列を定義したときに指定したタイプです。

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

COLUMN_VALUE_LONGプロシージャ

このプロシージャは、LONG列の値の一部を取得します。

構文

DBMS_SQL.COLUMN_VALUE_LONG (
c            IN  INTEGER,
position     IN  INTEGER,
length       IN  INTEGER,
offset       IN  INTEGER,
value        OUT VARCHAR2,
value_length OUT INTEGER);

プラグマ

pragma restrict_references(column_value_long,RNDS,WNDS);

パラメータ

表149-11 COLUMN_VALUE_LONGプロシージャのパラメータ

パラメータ

説明

c

値を取得するカーソルのカーソルID番号。

position

値を取得する列の位置。

length

フェッチするLONG値のバイト数。

offset

フェッチを開始するためのLONGフィールドへのオフセット。

value

VARCHAR2の列の値。

value_length

値に実際に戻されるバイト数。

DEFINE_ARRAYプロシージャ

このプロシージャは、(FETCH_ROWSコールで)行をフェッチする列に対してコレクションを定義します。このプロシージャによって、ユーザーは単一のSELECT文から、行を一括してフェッチできます。1回のフェッチ・コールで、PL/SQLの集計オブジェクトに多数の行をフェッチできます。

行をフェッチすると、それらの行はCOLUMN_VALUEコールを実行するまでDBMS_SQLバッファにコピーされ、COLUMN_VALUEコールの実行時点で、このコールに引数として渡された表にコピーされます。

スカラー・タイプとLOBタイプ・コレクション

ローカル変数を、次のいずれかの表項目タイプとして宣言し、DBMS_SQLを使用して、任意の行数をその中にフェッチできます。(これらは、BIND_ARRAYプロシージャに指定できるタイプと同じです。)

TYPE binary_double_table
IS TABLE OF BINARY_DOUBLE  INDEX BY BINARY_INTEGER;
TYPE binary_float_table
IS TABLE OF BINARY_FLOAT   INDEX BY BINARY_INTEGER;
TYPE bfile_table    IS TABLE OF BFILE          INDEX BY BINARY_INTEGER;
TYPE blob_table     IS TABLE OF BLOB           INDEX BY BINARY_INTEGER;
TYPE clob_table     IS TABLE OF CLOB           INDEX BY BINARY_INTEGER;
TYPE date_table     IS TABLE OF DATE           INDEX BY BINARY_INTEGER;
TYPE interval_day_to_second_Table
IS TABLE OF dsinterval_unconstrained
INDEX BY BINARY_INTEGER;
TYPE interval_year_to_MONTH_Table
IS TABLE OF yminterval_unconstrained
INDEX BY BINARY_INTEGER;
TYPE number_table   IS TABLE OF NUMBER         INDEX BY BINARY_INTEGER;
TYPE time_table     IS TABLE OF time_unconstrained
INDEX BY BINARY_INTEGER;
TYPE time_with_time_zone_table
IS TABLE OF time_tz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_table
IS TABLE OF timestamp_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_with_ltz_Table
IS TABLE OF timestamp_ltz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_with_time_zone_Table
IS TABLE OF timestamp_tz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE urowid_table   IS TABLE OF UROWID         INDEX BY BINARY_INTEGER;
TYPE varchar2_table IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;

構文

DBMS_SQL.DEFINE_ARRAY (
c           IN INTEGER,
position    IN INTEGER,
<table_variable>    IN <datatype>
cnt         IN INTEGER,
lower_bnd   IN INTEGER);

<table_variable>とそれに対応する<datatype>は、次のいずれかの組合せになります。DEFINE_ARRAYは、異なるデータ・タイプを受け入れるためにオーバーロードされています。

<clob_tab>     Clob_Table
<bflt_tab>     Binary_Float_Table
<bdbl_tab>     Binary_Double_Table
<blob_tab>     Blob_Table
<bfile_tab>    Bfile_Table
<date_tab>     Date_Table
<num_tab>      Number_Table
<urowid_tab>   Urowid_Table
<vchr2_tab>    Varchar2_Table
<tm_tab>       Time_Table
<ttz_tab>      Time_With_Time_Zone_Table
<tms_tab>      Timestamp_Table
<tstz_tab>     Timestamp_With_ltz_Table;
<tstz_tab>     Timestamp_With_Time_Zone_Table
<ids_tab>      Interval_Day_To_Second_Table
<iym_tab>      Interval_Year_To_Month_Table

プラグマ

pragma restrict_references(define_array,RNDS,WNDS);

後続のFETCH_ROWSコールがcnt行をフェッチします。COLUMN_VALUEがコールされると、これらの行はlower_bnd、lower_bnd+1、lower_bnd+2のように配置されます。行が送られてくる間、ユーザーはFETCH_ROWSコールまたはCOLUMN_VALUEコールを継続して発行します。行は、COLUMN_VALUEコールに引数として指定した表内に蓄積されます。

パラメータ

表149-12 DEFINE_ARRAYプロシージャのパラメータ

パラメータ

説明

c

配列をバインドするカーソルのID番号。

position

定義している配列内にある列の相対位置。

文の最初の列は位置1です。

table_variable

<datatype>として宣言されたローカル変数。

cnt

フェッチする行数。

lower_bnd

結果のコレクションへのコピーは、この下限の索引から開始されます。

使用上の注意

行数(cnt)にはゼロより大きい整数を指定する必要があり、それ以外の場合には例外が発生します。lower_bndは、正の数、負の数またはゼロでもかまいません。DEFINE_ARRAYコールが発行された問合せに、配列バインドを含めることはできません。

例

PROCEDURE BULK_PLSQL(deptid NUMBER)
TYPE namelist IS TABLE OF employees.last_name%TYPE;
TYPE sallist IS TABLE OF employees.salary%TYPE;
names    namelist;
sals     sallist;
c        NUMBER;
r        NUMBER;
sql_stmt VARCHAR2(32767) :=
'SELECT last_name, salary FROM employees WHERE department_id = :b1';

BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, sql_stmt, dbms_sql.native);

DBMS_SQL.BIND_VARIABLE(c, 'b1', deptid);

DBMS_SQL.DEFINE_ARRAY(c, 1, names, 5);
DBMS_SQL.DEFINE_ARRAY(c, 2, sals, 5);

r := DBMS_SQL.EXECUTE(c);

LOOP
r := DBMS_SQL.FETCH_ROWS(c);
DBMS_SQL.COLUMN_VALUE(c, 1, names);
DBMS_SQL.COLUMN_VALUE(c, 2, sals);
EXIT WHEN r != 5;
END LOOP;

DBMS_SQL.CLOSE_CURSOR(c);

-- loop through the names and sals collections
FOR i IN names.FIRST .. names.LAST  LOOP
DBMS_OUTPUT.PUT_LINE('Name = ' || names(i) || ', salary = ' || sals(i));
END LOOP;
END;
/

関連項目:
コレクションの定義方法の例は、「例6および7: 配列の定義」を参照してください。

DEFINE_COLUMNプロシージャ

このプロシージャは、指定のカーソルから選択する列を定義します。このプロシージャが使用できるのは、SELECTカーソルのみです。

定義されている列は、指定のカーソル内にある文のSELECTリスト内での相対位置によって識別されます。COLUMN値のタイプによって、定義されている列のタイプが決まります。

「DEFINE_COLUMN_CHARプロシージャ」、「DEFINE_COLUMN_LONGプロシージャ」、「DEFINE_COLUMN_RAWプロシージャ」および「DEFINE_COLUMN_ROWIDプロシージャ」も参照してください。

構文

DBMS_SQL.DEFINE_COLUMN (
c              IN INTEGER,
position       IN INTEGER,
column         IN <datatype>);

<datatype>は、次のいずれかのデータ・タイプである必要があります。

BINARY_DOUBLE
BINARY_FLOAT
BFILE
BLOB
CLOB CHARACTER SET ANY_CS
DATE
DSINTERVAL_UNCONSTRAINED
NUMBER
TIME_UNCONSTRAINED
TIME_TZ_UNCONSTRAINED
TIMESTAMP_LTZ_UNCONSTRAINED
TIMESTAMP_TZ_UNCONSTRAINED
TIMESTAMP_UNCONSTRAINED
UROWID
YMINTERVAL_UNCONSTRAINED
user-defined object types
collections (VARRAYs and nested tables)
REFs
Opaque types

DEFINE_COLUMNは、異なるデータ・タイプを受け入れるためにオーバーロードされていることに注意してください。

DEFINE_COLUMNプロシージャでは、次の構文もサポートされます。

DBMS_SQL.DEFINE_COLUMN (
c              IN INTEGER,
position       IN INTEGER,
column         IN VARCHAR2 CHARACTER SET ANY_CS,
column_size    IN INTEGER);

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

プラグマ

pragma restrict_references(define_column,RNDS,WNDS);

パラメータ

表149-13 DEFINE_COLUMNプロシージャのパラメータ

パラメータ

説明

c

選択対象に定義されている行のカーソルのID番号。

position

定義している行内にある列の相対位置。文の最初の列は位置1です。

column

定義している列の値。この値のタイプによって、定義している列のタイプが決まります。

column_size

タイプVARCHAR2およびRAWの列に対する列値の最大予測サイズ(バイト単位)。

使用上の注意

文字長セマンティクスを使用するとき、タイプVARCHAR2の列値に戻される最大バイト数は、column_size *現在の文字セットの最大文字バイト数で求められます。たとえば、column_sizeを10に指定すると、UTF8文字セットで文字長セマンティクスを使用するとき、これが表す文字数に関係なく、最大で30(10*3)バイトが戻されます。

DEFINE_COLUMN_CHARプロシージャ

このプロシージャは、指定のカーソルから選択するCHARデータのある列を定義します。このプロシージャが使用できるのは、SELECTカーソルのみです。

定義されている列は、指定のカーソル内にある文のSELECTリスト内での相対位置によって識別されます。COLUMN値のタイプによって、定義されている列のタイプが決まります。

「DEFINE_COLUMNプロシージャ」、「DEFINE_COLUMN_LONGプロシージャ」、「DEFINE_COLUMN_RAWプロシージャ」および「DEFINE_COLUMN_ROWIDプロシージャ」も参照してください。

構文

DBMS_SQL.DEFINE_COLUMN_CHAR (
c              IN INTEGER,
position       IN INTEGER,
column         IN CHAR CHARACTER SET ANY_CS,
column_size    IN INTEGER);

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

プラグマ

pragma restrict_references(define_column,RNDS,WNDS);

パラメータ

表149-14 DEFINE_COLUMN_CHARプロシージャのパラメータ

パラメータ

説明

c

選択対象に定義されている行のカーソルのID番号。

position

定義している行内にある列の相対位置。文の最初の列は位置1です。

column

定義している列の値。この値のタイプによって、定義している列のタイプが決まります。

column_size

タイプCHARの列に対する列値の最大予測サイズ(文字数)。

DEFINE_COLUMN_LONGプロシージャ

このプロシージャは、SELECTカーソルに対してLONG列を定義します。定義されている列は、指定のカーソルの文のSELECTリスト内での相対位置によって識別されます。COLUMN値のタイプによって、定義されている列のタイプが決まります。

「DEFINE_COLUMNプロシージャ」、「DEFINE_COLUMN_CHARプロシージャ」、「DEFINE_COLUMN_RAWプロシージャ」および「DEFINE_COLUMN_ROWIDプロシージャ」も参照してください。

構文

DBMS_SQL.DEFINE_COLUMN_LONG (
c              IN INTEGER,
position       IN INTEGER);

パラメータ

表149-15 DEFINE_COLUMN_LONGプロシージャのパラメータ

パラメータ

説明

c

選択対象に定義されている行のカーソルのID番号。

position

定義している行内にある列の相対位置。

文の最初の列は位置1です。

DEFINE_COLUMN_RAWプロシージャ

このプロシージャは、指定のカーソルから選択するタイプRAWの列を定義します。このプロシージャが使用できるのは、SELECTカーソルのみです。

定義されている列は、指定のカーソル内にある文のSELECTリスト内での相対位置によって識別されます。COLUMN値のタイプによって、定義されている列のタイプが決まります。

「DEFINE_COLUMNプロシージャ」、「DEFINE_COLUMN_CHARプロシージャ」、「DEFINE_COLUMN_LONGプロシージャ」および「DEFINE_COLUMN_ROWIDプロシージャ」も参照してください。

構文

DBMS_SQL.DEFINE_COLUMN_RAW (
c              IN INTEGER,
position       IN INTEGER,
column         IN RAW,
column_size    IN INTEGER);

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

プラグマ

pragma restrict_references(define_column,RNDS,WNDS);

パラメータ

表149-16 DEFINE_COLUMNプロシージャのパラメータ

パラメータ

説明

c

選択対象に定義されている行のカーソルのID番号。

position

定義している行内にある列の相対位置。文の最初の列は位置1です。

column

定義している列の値。この値のタイプによって、定義している列のタイプが決まります。

column_size

RAWの列に対する列値の最大予測サイズ(バイト単位)。

DEFINE_COLUMN_ROWIDプロシージャ

このプロシージャは、指定のカーソルから選択するタイプROWIDの列を定義します。このプロシージャが使用できるのは、SELECTカーソルのみです。

定義されている列は、指定のカーソル内にある文のSELECTリスト内での相対位置によって識別されます。COLUMN値のタイプによって、定義されている列のタイプが決まります。

「DEFINE_COLUMNプロシージャ」、「DEFINE_COLUMN_CHARプロシージャ」、「DEFINE_COLUMN_LONGプロシージャ」および「DEFINE_COLUMN_RAWプロシージャ」も参照してください。

構文

DBMS_SQL.DEFINE_COLUMN_ROWID (
c              IN INTEGER,
position       IN INTEGER,
column         IN ROWID);

関連項目:
『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』

プラグマ

pragma restrict_references(define_column,RNDS,WNDS);

パラメータ

表149-17 DEFINE_COLUMNプロシージャのパラメータ

パラメータ

説明

c

選択対象に定義されている行のカーソルのID番号。

position

定義している行内にある列の相対位置。文の最初の列は位置1です。

column

定義している列の値。この値のタイプによって、定義している列のタイプが決まります。

DESCRIBE_COLUMNSプロシージャ

このプロシージャは、DBMS_SQLによってオープンされ解析されたカーソルの列の情報を表示します。

構文

DBMS_SQL.DESCRIBE_COLUMNS (
c              IN  INTEGER,
col_cnt        OUT INTEGER,
desc_t         OUT DESC_TAB);

パラメータ

表149-18 DESCRIBE_COLUMNSプロシージャのパラメータ

パラメータ

説明

c

表示される列のカーソルのID番号。

col_cnt

問合せの選択リストにある列数。

desc_t

問合せの各列の情報を表示する表。

関連項目:
DESCRIBE_COLUMNSの使用方法は、「例8: 列の定義の表示」を参照してください。

DESCRIBE_COLUMNS2プロシージャ

このプロシージャは、指定した列の情報を表示します。これは、DESCRIBE_COLUMNSプロシージャの代替オプションです。

構文

DBMS_SQL.DESCRIBE_COLUMNS2 (
c              IN  INTEGER,
col_cnt        OUT INTEGER,
desc_t         OUT DESC_TAB2);

プラグマ

PRAGMA RESTRICT_REFERENCES(describe_columns2,WNDS);

パラメータ

表149-19 DESCRIBE_COLUMNS2プロシージャのパラメータ

パラメータ

説明

c

表示される列のカーソルのID番号。

col_cnt

問合せの選択リストにある列数。

desc_t

問合せの各列の情報を表示する表。この表は、1から順に、問合せの選択リストの要素数まで索引付けされます。

DESCRIBE_COLUMNS3プロシージャ

このプロシージャは、指定した列の情報を表示します。これは、DESCRIBE_COLUMNSプロシージャの代替オプションです。

構文

DBMS_SQL.DESCRIBE_COLUMNS3 (
c              IN  INTEGER,
col_cnt        OUT INTEGER,
desc_t         OUT DESC_TAB3);

プラグマ

PRAGMA RESTRICT_REFERENCES(describe_columns3,WNDS);

パラメータ

表149-20 DESCRIBE_COLUMNS3プロシージャのパラメータ

パラメータ

説明

c

表示される列のカーソルのID番号。

col_cnt

問合せの選択リストにある列数。

desc_t

問合せの各列の情報を表示する表。この表は、1から順に、問合せの選択リストの要素数まで索引付けされます。

使用上の注意

カーソルIDに基づいて渡されるカーソルには、OPENおよびPARSEを実行しておく必要があります。実行しておかない場合、カーソルIDが無効であることを示すエラーが発生します。

例

CREATE TYPE PROJECT_T AS OBJECT
( projname          VARCHAR2(20),
mgr               VARCHAR2(20))
/

CREATE TABLE projecttab(deptno NUMBER, project HR.PROJECT_T)
/

DECLARE
curid      NUMBER;
desctab    DBMS_SQL.DESC_TAB3;
colcnt     NUMBER;
sql_stmt   VARCHAR2(200) := 'select * from projecttab';
BEGIN

curid := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(curid, sql_stmt, DBMS_SQL.NATIVE);

DBMS_SQL.DESCRIBE_COLUMNS3(curid, colcnt, desctab);

FOR i IN 1 .. colcnt LOOP
IF desctab(i).col_type = 109 THEN
DBMS_OUTPUT.PUT(desctab(i).col_name || ' is user-defined type: ');
DBMS_OUTPUT.PUT_LINE(desctab(i).col_schema_name || '.' ||
desctab(i).col_type_name);
END IF;
END LOOP;

DBMS_SQL.CLOSE_CURSOR(curid);
END;
/

Output:

PROJECT is user-defined type: HR.PROJECT_T

EXECUTEファンクション

このファンクションは、指定のカーソルを実行します。このファンクションはカーソルのID番号を受け入れて、処理された行数を戻します。戻り値は、INSERT文、UPDATE文およびDELETE文に対してのみ有効で、DDL文を含めた他のタイプの文に対しては、戻り値は定義されてなく、無視する必要があります。

構文

DBMS_SQL.EXECUTE (
c   IN INTEGER)
RETURN INTEGER;

パラメータ

表149-21 EXECUTEファンクションのパラメータ

パラメータ

説明

c

実行するカーソルのカーソルID番号。

戻り値

処理された行数を戻します。

使用上の注意

TO_CURSOR_NUMBERファンクションにより戻されるDBMS_SQLカーソルは、すでに実行されているDBMS_SQLカーソルと同じ方法で実行されます。したがって、このカーソルにEXECUTEをコールするとエラーが発生します。

EXECUTE_AND_FETCHファンクション

このファンクションは、指定のカーソルを実行して行をフェッチします。このファンクションは、EXECUTEをコールしてからFETCH_ROWSをコールするのと同じ機能を提供します。ただし、リモート・データベースに対して使用する場合は、EXECUTE_AND_FETCHをコールした方がネットワークのラウンドトリップ数を低減できます。

EXECUTE_AND_FETCHファンクションは、実際にフェッチされた行数を戻します。

構文

DBMS_SQL.EXECUTE_AND_FETCH (
c              IN INTEGER,
exact          IN BOOLEAN DEFAULT FALSE)
RETURN INTEGER;

プラグマ

pragma restrict_references(execute_and_fetch,WNDS);

パラメータ

表149-22 EXECUTE_AND_FETCHファンクションのパラメータ

パラメータ

説明

c

実行してフェッチするカーソルのカーソルID番号。

exact

問合せで実際に一致する行数が1以外の場合は、TRUEに設定すると、例外が発生します。

注意: LONG列に対して、exactパラメータをTRUEに設定するオプションはサポートされていません。

例外が発生しても、行はフェッチされ、使用可能です。

戻り値

指定された行を戻します。

FETCH_ROWSファンクション

このファンクションは、指定のカーソルから行をフェッチします。FETCH_ROWSは、フェッチする行が残っているかぎり、繰り返しコールできます。これらの行はバッファに取り出し、FETCH_ROWSへの各コール後に、COLUMN_VALUEをコールして列ごとに読み込む必要があります。

FETCH_ROWSファンクションは、フェッチするカーソルのID番号を受け入れて、実際にフェッチされた行数を戻します。

構文

DBMS_SQL.FETCH_ROWS (
c              IN INTEGER)
RETURN INTEGER;

プラグマ

pragma restrict_references(fetch_rows,WNDS);

パラメータ

表149-23 FETCH_ROWSファンクションのパラメータ

パラメータ

説明

c

ID番号。

戻り値

指定のカーソルから行を戻します。

GET_NEXT_RESULTプロシージャ

このプロシージャは、再帰文のコール元に戻される次の結果の文を取得するか、このコール元が自らを再帰文のクライアントとして設定している場合、クライアントとしてこのコール元に戻される次の結果を取得します。文が戻される順序は、RETURN_RESULTプロシージャによって戻される順序と同じです。

構文

DBMS_SQL.GET_NEXT_RESULT(
c            IN          INTEGER,
rc           OUT         SYS_REFCURSOR);

DBMS_SQL.GET_NEXT_RESULT(
c            IN          INTEGER,
rc           OUT         INTEGER);

パラメータ

表149-24 GET_NEXT_RESULTプロシージャのパラメータ

パラメータ

説明

c

再帰文カーソル

rc

次に戻される結果の文のカーソルまたはREFカーソル

例外

ORA-01403 no_data_found: これは、戻される文の結果がない場合に発生します。

使用上の注意

- 文の結果のカーソルを取得した後、これが不要になったら、コール元はカーソルを正しくクローズする必要があります。

- 取得されていないすべての戻された文のカーソルは、再帰文のカーソルをクローズした後にクローズされます。

例

DECLARE
c  INTEGER;
rc SYS_REFCURSOR;
BEGIN
c := DBMS_SQL.OPEN_CURSOR(treat_as_client_for_results => TRUE);
DBMS_SQL.PARSE(c                  => c,
statement          => 'begin proc; end;');
DBMS_SQL.EXECUTE(c);
LOOP
BEGIN
DBMS_SQL.GET_NEXT_RESULT(c, rc);
EXCEPTIONS
WHEN no_data_found THEN
EXIT;
END;
LOOP
FETCH rc INTO ...
...
END LOOP;
END LOOP;
END;

IS_OPENファンクション

このファンクションは、指定のカーソルが現在オープンしているかどうかをチェックします。

構文

DBMS_SQL.IS_OPEN (
c              IN INTEGER)
RETURN BOOLEAN;

プラグマ

pragma restrict_references(is_open,RNDS,WNDS);

パラメータ

表149-25 IS_OPENファンクションのパラメータ

パラメータ

説明

c

チェックするカーソルのカーソルID番号。

戻り値

オープンされ、クローズされていないカーソル番号に対してはTRUE、NULLのカーソル番号に対してはFALSEを戻します。CLOSE_CURSORプロシージャは、渡されたカーソル変数をNULLにすることに注意してください。

例外

ORA-29471 DBMS_SQLアクセスが拒否されました: これは、無効なカーソルID番号が検出された場合に発生します。セッションでこのエラーが発生し、レポートされると、その後は同じセッションでDBMS_SQLをコールするたびにこのエラーが発生しますが、これは、このセッションではDBMS_SQLを実行できなくなることを意味します。

LAST_ERROR_POSITIONファンクション

このファンクションは、エラーが発生したSQL文テキスト内のバイト・オフセットを戻します。SQL文内の最初の文字は、位置0(ゼロ)にあります。

構文

DBMS_SQL.LAST_ERROR_POSITION
RETURN INTEGER;

プラグマ

pragma restrict_references(last_error_position,RNDS,WNDS);

戻り値

エラーが発生したSQL文テキスト内のバイト・オフセットを戻します。

使用上の注意

このファンクションは、別のDBMS_SQLプロシージャまたはファンクションのコール前、かつPARSEのコール後にコールしてください。

LAST_ROW_COUNTファンクション

このファンクションは、フェッチされた累積行数を戻します。

構文

DBMS_SQL.LAST_ROW_COUNT
RETURN INTEGER;

プラグマ

pragma restrict_references(last_row_count,RNDS,WNDS);

戻り値

フェッチされた累積行数を戻します。

使用上の注意

このファンクションは、FETCH_ROWSコールまたはEXECUTE_AND_FETCHコール後にコールしてください。EXECUTEコール後にコールすると、戻される値は0(ゼロ)です。

LAST_ROW_IDファンクション

このファンクションは、処理された最後の行のROWIDを戻します。

構文

DBMS_SQL.LAST_ROW_ID
RETURN ROWID;

プラグマ

pragma restrict_references(last_row_id,RNDS,WNDS);

戻り値

最後に処理された行のROWIDを戻します。

使用上の注意

このファンクションは、FETCH_ROWSコールまたはEXECUTE_AND_FETCHコール後にコールしてください。

LAST_SQL_FUNCTION_CODEファンクション

このファンクションは、文のSQL機能コードを戻します。これらのコードについては、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。

構文

DBMS_SQL.LAST_SQL_FUNCTION_CODE
RETURN INTEGER;

プラグマ

pragma restrict_references(last_sql_function_code,RNDS,WNDS);

戻り値

文のSQL機能コードを戻します。

使用上の注意

このファンクションは、SQL文の実行直後にコールする必要があります。それ以外の場合は、戻り値が定義されません。

OPEN_CURSORファンクション

このファンクションは、新規のカーソルをオープンします。security_levelパラメータでは、オープンされたカーソルのセキュリティへのファイングレイン・コントロールの適用が許可されます。

構文

DBMS_SQL.OPEN_CURSOR (
treat_as_client_for_results    IN     BOOLEAN    DEFAULT FALSE)
RETURN INTEGER;

DBMS_SQL.OPEN_CURSOR (
security_level                 IN     INTEGER,
treat_as_client_for_results    IN     BOOLEAN    DEFAULT FALSE)
RETURN INTEGER;

パラメータ

表149-26 OPEN_CURSORファンクションのパラメータ

パラメータ

説明

security_level

オープンされたカーソルに適用するセキュリティ保護のレベルを指定します。有効なセキュリティ・レベル値は、0、1および2です。security_levelパラメータを指定せずにopen_cursorのオーバーロードを使用してカーソルをオープンした場合にこのオーバーロードに引数値としてNULLを指定すると、オープンされたカーソルに対して、セキュリティ・レベルのデフォルト値1が適用されます。

- Level 0: カーソルに対して、セキュリティ・チェックなしですべてのDBMS_SQL操作が可能です。カーソルは、フェッチされることがあり、カーソルは、(カーソルの解析時に有効だったユーザーIDおよびロールとは異なる)有効なユーザーIDおよびロールで実行されるコードによってフェッチでき、さらに、このコードによって再バインドおよび再実行することもできます。デフォルトでは、セキュリティのこのレベルはオフになっています。

- Level 1: カーソルに対してバインド操作および実行操作を行う場合のDBMS_SQLのコール元の参照コンテナ、有効なユーザーID、およびロールは、そのカーソルに対して最後に解析操作を行ったコール元の有効なユーザーIDおよびロールと同じである必要があります。

- Level 2: カーソルに対してバインド、実行、定義、記述、フェッチのすべての操作を行う場合のDBMS_SQLのコール元の参照コンテナ、有効なユーザーID、およびロールは、そのカーソルに対して最後に解析操作を行ったコール元の有効なユーザーIDおよびロールと同じである必要があります。

treat_as_client_for results

再帰文のコール元が自らをクライアントに設定し、再帰文からクライアントに戻される文の結果を受信することを許可します。戻される文の結果は、GET_NEXT_RESULTプロシージャによって取得できます。

プラグマ

pragma restrict_references(open_cursor,RNDS,WNDS);

戻り値

新規カーソルのID番号を戻します。

使用上の注意

- このカーソルが不要になった場合は、CLOSE_CURSORプロシージャをコールして、明示的にクローズする必要があります。

- カーソルを使用すると、同じSQL文を繰り返し実行したり、新規のSQL文を実行することができます。カーソルを再使用した場合、新規のSQL文が解析されるときに、対応するカーソル・データ領域の内容がリセットされます。カーソルを再使用しないかぎり、クローズして再オープンする必要はありません。

PARSEプロシージャ

このプロシージャは、指定したカーソル内の指定した文を解析します。すべての文が即時に解析されます。さらに、DDL文は、解析時にただちに実行されます。

PARSEプロシージャには、次の4つのバージョンがあります。

- 引数としてVARCHAR2文を使用します。

- セグメント化された文字列を使用する2つのバージョン。1つはVARCHAR2A (varchar2d(32767)の表)、もう1つはVARCHAR2S (varchar2(256)の表)を引数として使用します。どちらのオーバーロードも、PL/SQL表の文の要素を連結して、連結結果の文字列を解析します。これらのプロシージャを使用すると、文を分割することによって、単一のVARCHAR2変数についての制限を超えた長い文を解析できます。

- 引数としてCLOBを使用します。この解析プロシージャのCLOBオーバーロード・バージョンを使用すると、32KBを超えるSQL文を解析できます。

構文

DBMS_SQL.PARSE (
c                           IN   INTEGER,
statement                   IN   VARCHAR2,
language_flag               IN   INTEGER,
edition                     IN   VARCHAR2 DEFAULT NULL,
apply_crossedition_trigger  IN   VARCHAR2 DEFAULT NULL,
fire_apply_trigger          IN   BOOLEAN DEFAULT TRUE,
schema                      IN   VARCHAR2 DEFAULT NULL,
container                   IN   VARCHAR2);

DBMS_SQL.PARSE (
c                           IN   INTEGER,
statement                   IN   CLOB,
language_flag               IN   INTEGER,
edition                     IN   VARCHAR2 DEFAULT NULL,
apply_crossedition_trigger  IN   VARCHAR2 DEFAULT NULL,
fire_apply_trigger          IN   BOOLEAN DEFAULT TRUE,
schema                      IN   VARCHAR2 DEFAULT NULL,
container                   IN   VARCHAR2);

DBMS_SQL.PARSE (
c                           IN   INTEGER,
statement                   IN   VARCHAR2A,
lb                          IN   INTEGER,
ub                          IN   INTEGER,
lfflg                       IN   BOOLEAN,
language_flag               IN   INTEGER,
edition                     IN   VARCHAR2 DEFAULT NULL,
apply_crossedition_trigger  IN   VARCHAR2 DEFAULT NULL,
fire_apply_trigger          IN   BOOLEAN DEFAULT TRUE,
schema                      IN   VARCHAR2 DEFAULT NULL,
container                   IN   VARCHAR2);

DBMS_SQL.PARSE (
c                           IN   INTEGER,
statement                   IN   VARCHAR2s,
lb                          IN   INTEGER,
ub                          IN   INTEGER,
lfflg                       IN   BOOLEAN,
language_flag               IN   INTEGER,
edition                     IN   VARCHAR2 DEFAULT NULL,
apply_crossedition_trigger  IN   VARCHAR2 DEFAULT NULL,
fire_apply_trigger          IN   BOOLEAN DEFAULT TRUE,
schema                      IN   VARCHAR2 DEFAULT NULL,
container                   IN   VARCHAR2);

パラメータ

表149-27 PARSEプロシージャのパラメータ

パラメータ

説明

c

文を解析するカーソルのID番号。

statement

解析するSQL文。32Kを超えてCLOBに格納できるSQL文。

PL/SQL文と異なり、SQL文の終わりにはセミコロンを含めないでください。次に例を示します。

DBMS_SQL.PARSE(cursor1, 'BEGIN proc; END;', 2);

DBMS_SQL.PARSE(cursor1, 'INSERT INTO tab VALUES(1)', 2);

lb

文内の要素の下限。

ub

文内の要素の上限。

lfflg

TRUEの場合、連結している各要素の後に改行を挿入します。

language_flag

注: このパラメータは、Oracle Database 12cでは動作しません。このパラメータは、下位互換性のためにのみ提供されています。

edition

次に示す条件のもとで、文を実行するエディションを指定します。

- NULLであり、containerがNULLの場合、文は現行エディションで実行されます。

- 有効なコンテナが指定されている場合は、NULLを渡すと、文はターゲット・コンテナのデフォルト・エディションで実行されます。

- 文を実行するユーザーとエディションを指定した場合、ユーザーにはそのエディションに対するUSE権限が必要です。

次の一般的な条件が適用されます。文字列の内容はSQL識別子として処理され、実際のエディション名に特殊文字または小文字が含まれている場合は、残りの文字列を二重引用符で囲む必要があります(二重引用符を使用しない場合、内容は大文字になります)。

apply_crossedition_trigger

指定したSQLに適用する転送crosseditionトリガーの未修飾の名前を指定します。この名前は、文が実行されるエディションおよびcurrent_schema設定を使用して解決されます。トリガーは、文を実行するユーザーによって所有されている必要があります。NULL以外の値を指定した場合は、指定したcrosseditionトリガーが実行されます(この場合に前提となるのは、fire_apply_triggerがTRUEであること、トリガーが有効になっていること、トリガーが文のターゲットの表で定義されていること、文のタイプがトリガーのdml_event_clauseと一致していること、有効なWHENおよびUPDATE OFの制限事項が満たされていることなどです)。他の転送crosseditionトリガーは、指定したトリガーが文のターゲットである表に対して追加のDMLを実行している場合と同様に適用されるcrosseditionトリガーDMLルールを使用して、実行および選択することもできます。crossedition以外のトリガーおよびreverse crosseditionトリガーは実行されません。文字列の内容はSQL識別子として処理され、実際のトリガー名に特殊文字または小文字が含まれている場合は、残りの文字列を二重引用符で囲む必要があります(二重引用符を使用しない場合、内容は大文字になります)。

fire_apply_trigger

指定したapply_crossedition_trigger自体が実行されるか、他のトリガーを選択する際に使用されるガイドのみの指定が必要なことを示します。これは文がapply_crossedition_trigger自体によって実行されるアクションの代替である場合に、通常はFALSEに設定されます。FALSEの場合、指定したトリガーは実行されませんが、他のトリガーは、指定したトリガーが文のターゲットの表に対してDMLを実行している場合と同様に起動対象として選択されます。文がDMLでない場合、apply_crossedition_triggerおよびfire_apply_triggerパラメータは無視されます。

schema

未修飾のオブジェクト名を解決するスキーマを指定します。NULLの場合、現行スキーマは有効なユーザーのスキーマです。

container

カーソルを実行するターゲット・コンテナの名前。NULLまたは指定しない場合、ターゲット・コンテナの名前はコール元コンテナと同じで、コンテナの切替えは実行されません。有効なコンテナ名を指定する場合、現行ユーザーはターゲット・コンテナに切り替えるためのSET CONTAINER権限を持つ共通ユーザーであることが必要です。コンテナの切替えが完了すると、有効なユーザーにはデフォルトのロールが設定されます。

使用上の注意

- DBMS_SQLを使用してDDL文を動的に実行すると、プログラムが応答しなくなる可能性があります。たとえば、パッケージ内のプロシージャをコールすると、実行がユーザー側に戻るまでそのパッケージがロックされます。最初のロックを解放する前に、動的にパッケージを削除するなど、ロックの競合を引き起こす操作を行うとプログラムの実行が停止します。

- クライアント側コードは、リモート・パッケージの変数または定数を参照できないため、定数の値を明示的に使用する必要があります。
たとえば、次のコードは、クライアント側でコンパイルしません。

DBMS_SQL.PARSE(cur_hdl, stmt_str, DBMS_SQL.NATIVE); -- 定数DBMS_SQL.NATIVEを使用

次のコードは、引数が明示的に指定されているので、クライアント側で有効です。

DBMS_SQL.PARSE(cur_hdl, stmt_str, 1); -- クライアント上でコンパイル

- VARCHAR2Sタイプは、レガシー・コードの下位互換性を維持する目的で現在サポートされています。ただし、VARCHAR2Aを使用することをお薦めします(こちらの機能の方が優れており、VARCHAR2Sは将来のリリースでは非推奨となるため)。

- 32KBを超えるSQL文を解析する場合、VARCHAR2Awオーバーロードのかわりに、新しいCLOBオーバーロード・バージョンのPARSEプロシージャを使用できます。

- containerパラメータの値がコール側コンテナと同じである場合、コンテナの切替えは行われません。ただし、現行ユーザーのデフォルト・ロールは有効になります。

例外

コンパイルに関する警告を伴ったDBMS_SQLを使用して、タイプ、プロシージャ、ファンクション、またはパッケージを作成する場合、ORA-24344例外が発生しますが、PL/SQLユニットはそのまま作成されます。

RETURN_RESULTプロシージャ

このプロシージャは、実行した文の結果をクライアント・アプリケーションに戻します。

結果は、クライアントが後で取得できます。または、この文の結果が戻される再帰文を実行する直接のコール元に文の結果を戻し、このコール元が後で結果を取得できます。

コール元は次のいずれかにできます。

- DBMS_SQLを使用して再帰文を実行するPL/SQLストアド・プロシージャ

- JDBCを使用するJavaストアド・プロシージャ

- ADO.NETを使用する.NETストアド・プロシージャ

- Oracle Call Interface(OCI)を使用する外部プロシージャ

構文

DBMS_SQL.RETURN_RESULT(
rc           IN OUT      SYS_REFCURSOR,
to_client    IN          BOOLEAN           DEFAULT TRUE);

DBMS_SQL.RETURN_RESULT(
rc           IN OUT      INTEGER,
to_client    IN          BOOLEAN           DEFAULT TRUE);

パラメータ

表149-28 RETURN_RESULTプロシージャのパラメータ

パラメータ

説明

rc

文カーソルまたはREFカーソル

to_client

文の結果をクライアントに戻します(または戻しません)。戻さない場合、直接のコール元に戻されます。

使用上の注意

- 現在、SQL問合せのみを戻すことができます。リモート・プロシージャ・コールを介して文の結果を戻すことはサポートされていません。

- 文が戻されると、この文が戻されたクライアントまたは直接のコール元を除いてアクセスできなくなります。

- クライアントによって実行された文または中間の再帰文がSQL問合せで、エラーが発生している場合、文の結果を戻すことができません。

- 戻されるREFカーソルでは、強いタイプまたは弱いタイプを指定できます。

- 戻される問合せは部分的にフェッチできます。

- EXECUTE IMMEDIATE文はその再帰文から戻される文の結果を取得するインタフェースを提供しないため、EXECUTE IMMEDIATE文のコール元に戻される文の結果のカーソルは、文が完了するとクローズされます。PL/SQLで再帰文から戻される文の結果を取得するには、DBMS_SQLを使用して再帰文を実行します。

例

CREATE PROCEDURE proc AS
rc1 sys_refcursor;
rc2 sys_refcursor;
BEGIN
OPEN rc1 FOR SELECT * FROM t1;
DBMS_SQL.RETURN_RESULT(rc1);
OPEN rc2 FOR SELECT * FROM t2;
DBMS_SQL.RETURN_RESULT(rc2);
END;
/

TO_CURSOR_NUMBERファンクション

このファンクションは、強くタイプ付けされたREFカーソルまたは弱くタイプ付けされたREFカーソルのうちOPENが実行されたカーソルを使用して、そのカーソルをDBMS_SQLカーソル番号に変換します。

構文

DBMS_SQL.TO_CURSOR_NUMBER(
rc IN OUT SYS_REFCURSOR)
RETURN INTEGER;

パラメータ

表149-29 TO_CURSOR_NUMBERファンクションのパラメータ

パラメータ

説明

rc

カーソル番号に変換されるREF CURSOR。

戻り値

REF CURSORから変換された、DBMS_SQLで管理可能なカーソル番号を戻します。

使用上の注意

- 渡されるREF CURSORには、OPENを実行しておく必要があります。実行しておかない場合、エラーが発生します。

- REF CURSORがDBMS_SQLカーソル番号に変換されると、REF CURSORはシステム固有の動的SQL操作でアクセスできなくなります。

- このサブプログラムにより戻されるDBMS_SQLカーソルは、すでに実行されているDBMS_SQLカーソルと同じ方法で実行されます。

例

CREATE OR REPLACE PROCEDURE DO_QUERY(sql_stmt VARCHAR2) IS
TYPE CurType IS REF CURSOR;
src_cur         CurType;
curid           NUMBER;
desctab         DBMS_SQL.DESC_TAB;
colcnt          NUMBER;
namevar         VARCHAR2(50);
numvar          NUMBER;
datevar         DATE;
empno           NUMBER := 100;
BEGIN

-- sql_stmt := 'select ...... from employees where employee_id = :b1';
OPEN src_cur FOR sql_stmt USING empno;

-- Switch from native dynamic SQL to DBMS_SQL
curid := DBMS_SQL.TO_CURSOR_NUMBER (src_cur);

DBMS_SQL.DESCRIBE_COLUMNS(curid, colcnt, desctab);

-- Define columns
FOR i IN 1 .. colcnt LOOP
IF desctab(i).col_type = 2 THEN
DBMS_SQL.DEFINE_COLUMN(curid, i, numvar);
ELSIF desctab(i).col_type = 12 THEN
DBMS_SQL.DEFINE_COLUMN(curid, i, datevar);
.......
ELSE
DBMS_SQL.DEFINE_COLUMN(curid, i, namevar, 25);
END IF;
END LOOP;

-- Fetch Rows
WHILE DBMS_SQL.FETCH_ROWS(curid) > 0 LOOP
FOR i IN 1 .. colcnt LOOP
IF (desctab(i).col_type = 1) THEN
DBMS_SQL.COLUMN_VALUE(curid, i, namevar);
ELSIF (desctab(i).col_type = 2) THEN
DBMS_SQL.COLUMN_VALUE(curid, i, numvar);
ELSIF (desctab(i).col_type = 12) THEN
DBMS_SQL.COLUMN_VALUE(curid, i, datevar);
....
END IF;
END LOOP;
END LOOP;

DBMS_SQL.CLOSE_CURSOR(curid);
END;
/

TO_REFCURSORファンクション

このファンクションは、OPEN、PARSEおよびEXECUTEが実行されたカーソルを使用して、そのカーソルをPL/SQLで管理可能なREF CURSOR(弱くタイプ付けされたカーソル)に変換/移行します(変換/移行後のカーソルは、システム固有の動的SQLを使用するように切り替えられているPL/SQLシステム固有の動的SQLで消費できます)。このサブプログラムが使用できるのは、SELECTカーソルのみです。

構文

DBMS_SQL.TO_REFCURSOR(
cursor_number IN OUT INTEGER)
RETURN SYS_REFCURSOR;

パラメータ

表149-30 TO_REFCURSORファンクションのパラメータ

パラメータ

説明

cursor_number

REF CURSORに変換されるカーソルのカーソル番号。

戻り値

DBMS_SQLカーソル番号から変換されたPL/SQL REF CURSORを戻します。

使用上の注意

- cursor_numberによって渡されるカーソルには、OPEN、PARSEおよびEXECUTEを実行しておく必要があります。実行しておかない場合、エラーが発生します。

- cursor_numberがREF CURSORに変換されると、cursor_numberはDBMS_SQL操作でアクセスできなくなります。

- cursor_numberがREF CURSORに変換された後に、DBMS_SQL.IS_OPENを使用してcursor_numberがオープンしているかどうかを確認しようとすると、エラーが発生します。

- カーソル番号が最後に有効なコンテナ・パラメータを使用して解析された場合、そのカーソル番号をREF CURSORに変換することはできません。

例

CREATE OR REPLACE PROCEDURE DO_QUERY(mgr_id NUMBER) IS
TYPE CurType IS REF CURSOR;
src_cur         CurType;
curid           NUMBER;
sql_stmt        VARCHAR2(200);
ret             INTEGER;
empnos          DBMS_SQL.Number_Table;
depts           DBMS_SQL.Number_Table;
BEGIN

-- DBMS_SQL.OPEN_CURSOR
curid := DBMS_SQL.OPEN_CURSOR;

sql_stmt :=    'SELECT EMPLOYEE_ID, DEPARTMENT_ID from employees where MANAGER_ID = :b1';

DBMS_SQL.PARSE(curid, sql_stmt, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(curid, 'b1', mgr_id);
ret := DBMS_SQL.EXECUTE(curid);

-- Switch from DBMS_SQL to native dynamic SQL
src_cur := DBMS_SQL.TO_REFCURSOR(curid);

-- Fetch with native dynamic SQL
FETCH src_cur BULK COLLECT INTO empnos, depts;

IF empnos.COUNT > 0 THEN
DBMS_OUTPUT.PUT_LINE('EMPNO DEPTNO');
DBMS_OUTPUT.PUT_LINE('----- ------');
-- Loop through the empnos and depts collections
FOR i IN 1 .. empnos.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(empnos(i) || '   ' || depts(i));
END LOOP;
END IF;
-- Close cursor
CLOSE src_cur;
END;
/

VARIABLE_VALUEプロシージャ

このプロシージャは、指定のカーソルについて指定の変数の値を戻します。これは、returning句を使用してPL/SQLブロックまたはDML文内のバインド変数の値を戻すために使用されます。

構文

DBMS_SQL.VARIABLE_VALUE (
c               IN  INTEGER,
name            IN  VARCHAR2,
value           OUT NOCOPY <datatype>);

<datatype>は、次のいずれかのデータ・タイプである必要があります。

BINARY_DOUBLE
BINARY_FLOAT
BFILE
BLOB
CLOB CHARACTER SET ANY_CS
DATE
DSINTERVAL_UNCONSTRAINED
NUMBER
TIME_TZ_UNCONSTRAINED
TIME_UNCONSTRAINED
TIMESTAMP_LTZ_UNCONSTRAINED
TIMESTAMP_TZ_UNCONSTRAINED
TIMESTAMP_UNCONSTRAINED
UROWID
VARCHAR2 CHARACTER SET ANY_CS
YMINTERVAL_UNCONSTRAINED
user-defined object types
collections (VARRAYs and nested tables)
REFs
Opaque types

CHAR、RAWおよびROWIDデータを含んだ変数では、次のバリエーションを構文で使用できます。

DBMS_SQL.VARIABLE_VALUE_CHAR (
c               IN  INTEGER,
name            IN  VARCHAR2,
value           OUT CHAR CHARACTER SET ANY_CS);

DBMS_SQL.VARIABLE_VALUE_RAW (
c               IN  INTEGER,
name            IN  VARCHAR2,
value           OUT RAW);

DBMS_SQL.VARIABLE_VALUE_ROWID (
c               IN  INTEGER,
name            IN  VARCHAR2,
value           OUT ROWID);

次の構文を使用すると、VARIABLE_VALUEプロシージャでバルク操作に対応できます。

DBMS_SQL.VARIABLE_VALUE (
c                 IN   INTEGER,
name              IN   VARCHAR2,
value             OUT NOCOPY <table_type>);

バルク操作では、<table_type>は次のようになります。

Binary_Double_Table
Binary_Float_Table
Bfile_Table
Blob_Table
Clob_Table
Date_Table
Interval_Day_To_Second_Table
Interval_Year_To_Month_Table
Number_Table
Time_Table
Time_With_Time_Zone_Table
Timestamp_Table
Timestamp_With_ltz_Table;
Timestamp_With_Time_Zone_Table
Urowid_Table
Varchar2_Table

プラグマ

pragma restrict_references(variable_value,RNDS,WNDS);

パラメータ

表149-31 VARIABLE_VALUEプロシージャのパラメータ

パラメータ

説明

c

値を取得するカーソルのID番号。

name

取得した値を代入する変数名。

value

- 単一行オプション: 指定した位置の変数の値を戻します。この出力パラメータのタイプが、BIND_VARIABLEへのコールで定義されている値の実際のタイプと異なる場合、例外エラーORA-06562、inconsistent_typeが発生します。

- 配列オプション: <table_type>として宣言されたローカル変数。バルク操作では、valueがOUT NOCOPYパラメータとなります。

150 DBMS_SQL_TRANSLATOR

DBMS_SQL_TRANSLATORパッケージには、SQL翻訳プロファイルを作成、構成および使用するためのインタフェースが用意されています。

関連項目:
『Oracle Database移行ガイド』のSQL翻訳フレームワークのアーキテクチャと概要

この章では、次の項目について説明します。

- DBMS_SQL_TRANSLATORの使用

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

- DBMS_SQL_TRANSLATORサブプログラムの要約

DBMS_SQL_TRANSLATORの使用

- セキュリティ・モデル

- 定数

- 使用上の注意

- 例外

- 例

セキュリティ・モデル

- DBMSL_SQL_TRANSLATORは実行者権限のパッケージです。

- SQL文またはエラーの翻訳時に、トランスレータ・パッケージ・プロシージャは、SQL文が解析されている対象と同じ現在のユーザーおよび現在のスキーマを使用して呼び出されます。トランスレータ・パッケージの所有者には、現在のユーザーのTRANSLATE SQLユーザー権限が付与される必要があります。

- さらに、現在のユーザーには、トランスレータ・パッケージ上のEXECUTE権限が付与される必要があります。

定数

DBMS_SQL_TRANSLATORパッケージでは、表150-1「DBMS_SQL_TRANSLATORの定数」に示す定数が使用されます。

表150-1 DBMS_SQL_TRANSLATORの定数

定数

値

タイプ

説明

ATTR_EDITIONABLE

'EDITIONABLE'

VARCHAR2(30)

SQL翻訳プロファイル属性の名前で、この属性は、所有者のスキーマにあるSQL翻訳プロファイルのスキーマ・オブジェクト・タイプに対してエディショニングが後で有効化される場合に、SQL翻訳プロファイルがエディション化オブジェクトか、または非エディション化オブジェクトになることを指定します(「使用上の注意」を参照)。

ATTR_FOREIGN_SQL_SYNTAX

'FOREIGN_SQL_SYNTAX'

VARCHAR2(30)

SQL翻訳プロファイル属性の名前で、この属性は、プロファイルが外部SQL構文の翻訳用であるかどうかを示します(「使用上の注意」を参照)。

ATTR_LOG_TRANSLATION_ERROR

'TRANSLATION_ERROR'

VARCHAR2(30)

SQL翻訳プロファイル属性の名前で、この属性は、プロファイルでデータベース・アラート・ログ内の翻訳エラーを記録するかどうかを制御します(「使用上の注意」を参照)。

ATTR_RAISE_TRANSLATION_ERROR

'TRANSLATION_ERROR '

VARCHAR2(30)

SQL翻訳プロファイル属性の名前で、この属性は、SQL文またはエラーの翻訳に失敗した場合にプロファイルで翻訳エラーを生成するかどうかを制御します(「使用上の注意」を参照)。

ATTR_TRANSLATE_NEW_SQL

'TRANSLATE_NEW_SQL'

VARCHAR2(30)

SQL翻訳プロファイル属性の名前で、この属性は、プロファイルで新しいSQL文およびエラーを翻訳するかどうかを制御します(「使用上の注意」を参照)。

ATTR_TRACE_TRANSLATION

'TRACE_TRANSLATION'

VARCHAR2(30)

トレースを制御するSQL翻訳プロファイル属性の名前(「使用上の注意」を参照)。

ATTR_TRANSLATOR

'TRANSLATOR'

VARCHAR2(30)

トランスレータ・パッケージを指定するSQL翻訳プロファイル属性の名前(「使用上の注意」を参照)。

ATTR_VALUE_TRUE

'TRUE'

VARCHAR2(30)

SQL翻訳プロファイル属性をtrueに設定する値です(「使用上の注意」)。

ATTR_VALUE_FALSE

'FALSE'

VARCHAR2(30)

SQL翻訳プロファイル属性をfalseに設定する値です(「使用上の注意」)。

使用上の注意

プロファイルを変更するサブプログラムには、DDLトランザクション・セマンティクスがあり、起動されるとセッションでオープンになっているトランザクションがコミットされます。

ATTR_EDITIONABLEの定数

デフォルトでは、エディションの有効化がtrueです。

ATTR_FOREIGN_SQL_SYNTAXの定数

デフォルトでは、外部SQL構文がtrueです。

ATTR_LOG_TRANSLATION_ERRORの定数

- SQL翻訳プロファイルでログ翻訳が有効化されていて、SQL文またはエラーにカスタム翻訳が見つからない場合は、アラート・ログがデータベースのアラート・ログに書き込まれます。これにより、ユーザーは、プロファイル内のカスタム翻訳にあるすべてのエラーを捕捉できます。

- デフォルトでは、ログ翻訳エラーはfalseです。

ATTR_RAISE_TRANSLATION_ERRORの定数

デフォルトでは、翻訳エラーの生成はfalseです。

ATTR_TRANSLATE_NEW_SQLの定数

- SQL翻訳プロファイル属性の名前で、この属性は、プロファイルで新しいSQL文およびエラーを翻訳するかどうかを制御します。翻訳する場合に、翻訳パッケージが登録されている場合は、そのパッケージによって、カスタム翻訳でまだ翻訳されていない新しいSQL文またはエラーを翻訳し、またその新しい翻訳をカスタム翻訳として登録します。翻訳しない場合は、どのようなSQL文またはエラーが新規に発生しても翻訳エラーになります。

- デフォルトでは、新しいSQL文およびエラーの翻訳はtrueです。

ATTR_TRACE_TRANSLATIONの定数

- トレースがSQL翻訳プロファイルで有効な場合、データベース・セッションのプロファイルによって翻訳された任意のSQL文またはエラー、およびその翻訳がデータベース・セッションのトレース・ファイルに書き込まれます。

- トレースはデフォルトで無効になっています。

ATTR_TRANSLATORの定数

- トランスレータ・パッケージは、次の3つのプロシージャを含むPL/SQLパッケージである必要があります。TRANSLATE_SQLプロシージャおよびTRANSLATE_ERRORプロシージャは、SQL文およびエラーを翻訳するためにコールされます。翻訳プロシージャのパラメータの名前がこれに続く必要があります。

PROCEDURE TRANSLATE_SQL(
sql_text        IN  CLOB,
translated_text OUT CLOB);

PROCEDURE TRANSLATE_ERROR(
error_code          IN  BINARY_INTEGER,
translated_code     OUT BINARY_INTEGER,
translated_sqlstate OUT VARCHAR2);

Parameters:
profile_name        - profile name
sql_text            - SQL statement to be translated
translated_text     - translated SQL statement
error_code          - Oracle error code
translated_code     - translated error code
translated_sqlstate - translated SQLSTATE

- translated_text、translated_codeまたはtranslated_sqlstateでNULLが返される場合は、翻訳の必要がないかわりに、元のSQL文、エラー・コードまたはSQLSTATEを使用することが示されます。

- トランスレータ・パッケージの名前は、[schema.]package_name形式のデータベース・パッケージのネーミング規則に従います。スキーマ名およびパッケージ名が使用される場合、二重引用符で囲まれていないかぎり、デフォルトで大文字に設定されます。たとえば、トランスレータ・パッケージの設定では、translator => 'dbms_tsql_translator'は、translator => 'Dbms_Tsql_Translator'およびtranslator => 'DBMS_TSQL_TRANSLATOR'と同じですが、translator => '"dbms_tsql_translator"'とは同じではありません。デフォルトのスキーマ名はプロファイルの所有者です。

- トランスレータ属性はデフォルトでは設定されません。

ATTR_VALUE_TRUEの定数

SQL翻訳プロファイル属性をtrueに設定する値です。

ATTR_VALUE_FALSEの定数

SQL翻訳プロファイル属性をfalseに設定する値です。

例外

次の表に、DBMS_SQL_TRANSLATORパッケージで発生する例外を示します。

表150-2 DBMS_SQL_TRANSLATORで発生する例外

例外

エラー・コード

説明

BAD_ARGUMENT

29261

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

1031

ユーザーには、この操作の権限がありません

NO_SUCH_PROFILE

24252

プロファイルが存在しません

NO_SUCH_USER

1918

プロファイルの所有者が存在しません

NO_TRANSLATION_FOUND

24253

SQL文またはエラー・コードの翻訳が見つかりません

PROFILE_EXISTS

955

プロファイルがすでに存在します

例

基本SQL翻訳

BEGIN
DBMS_SQL_TRANSLATOR.CREATE_PROFILE(
profile_name     => ' tsql_application');
DBMS_SQL_TRANSLATOR.SET_ATTRIBUTE(
profile_name     =>  'tsql_application',
attribute_name   =>  DBMS_SQL_TRANSLATOR.ATTR_TRANSLATOR,
attribute_value  =>  'migration_repo.sybase_tsql_translator');
END;

DBMS_SQL_TRANSLATORサブプログラムの要約

表150-3 DBMS_SQL_TRANSLATORパッケージのサブプログラム

サブプログラム

説明

CREATE_PROFILEプロシージャ

SQL翻訳プロファイルを作成します。

DEREGISTER_SQL_TRANSLATIONプロシージャ

SQL翻訳プロファイルのSQL文のカスタム翻訳を登録解除します。

DEREGISTER_ERROR_TRANSLATIONプロシージャ

SQL翻訳プロファイルのOracleエラー・コードおよびSQLSTATEの翻訳を登録解除します。

DROP_PROFILEプロシージャ

SQL翻訳プロファイルおよびその内容を削除します。

ENABLE_ERROR_TRANSLATIONプロシージャ

SQL翻訳プロファイルでOracleエラー・コードのカスタム翻訳を有効または無効にします。

ENABLE_SQL_TRANSLATIONプロシージャ

SQL翻訳プロファイルでSQL文のカスタム翻訳を有効または無効にします。

EXPORT_PROFILEプロシージャ

SQL翻訳プロファイルの内容をエクスポートします。

IMPORT_PROFILEプロシージャ

SQL翻訳プロファイルの内容をインポートします。

REGISTER_ERROR_TRANSLATIONプロシージャ

SQL翻訳プロファイルのOracleエラー・コードおよびSQLSTATEのカスタム翻訳を登録します。

REGISTER_SQL_TRANSLATIONプロシージャ

SQL翻訳プロファイルのSQL文のカスタム翻訳を登録します。

SET_ATTRIBUTEプロシージャ

SQL翻訳プロファイルの属性を設定します。

SQL_HASHファンクション

SQL翻訳プロファイルのSQL文のハッシュ値を計算します。

SQL_IDファンクション

SQL翻訳プロファイルのSQL文のSQL識別子を計算します。

TRANSLATE_ERRORプロシージャ

SQL翻訳プロファイルを使用して、Oracleエラー・コードおよびANSI SQLSTATEを翻訳します。

TRANSLATE_SQLプロシージャ

SQL翻訳プロファイルを使用して、SQL文を翻訳します。

CREATE_PROFILEプロシージャ

このプロシージャは、SQL翻訳プロファイルを作成します。

構文

DBMS_SQL_TRANSLATOR.CREATE_PROFILE (
profile_name    IN  VARCHAR2);

パラメータ

表150-4 CREATE_PROFILEプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

例外

表150-5 CREATE_PROFILEプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

PROFILE_EXISTS

プロファイルがすでに存在します

使用上の注意

- SQL翻訳プロファイルは、SQL翻訳プロファイル・ネームスペースにあるデータベース・スキーマ・オブジェクトです。その名前は、[schema.]name形式のデータベース・オブジェクトのネーミング規則に従います。スキーマ名およびプロファイル名がDBMS_SQL_TRANSLATORパッケージで使用される場合、二重引用符で囲まれていないかぎり大文字になります。たとえば、翻訳プロファイルprofile_name => 'tsql_application'は、profile_name => 'Tsql_Application'およびprofile_name => 'TSQL_APPLICATION'と同じですが、profile_name => '"tsql_application"'とは同じではありません。

- SQL翻訳プロファイルは、エディション化可能なオブジェクト・タイプです。

- SQL翻訳プロファイルは、マルチテナント・コンテナ・データベース(CDB)の共通オブジェクトとして作成できません。

- SQL翻訳プロファイルを破棄するには、DROP_PROFILEプロシージャを使用します。

例

BEGIN
DBMS_SQL_TRANSLATOR.CREATE_PROFILE(profile_name => 'tsql_application');
END;

DEREGISTER_SQL_TRANSLATIONプロシージャ

このプロシージャは、SQL翻訳プロファイルのSQL文のカスタム翻訳を登録解除します。

構文

DBMS_SQL_TRANSLATOR.DEREGISTER_SQL_TRANSLATION (
profile_name      IN  VARCHAR2,
sql_text          IN  CLOB);

パラメータ

表150-6 DEREGISTER_SQL_TRANSLATIONプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

sql_text

SQL文

例外

表150-7 DEREGISTER_SQL_TRANSLATIONプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

PROFILE_EXISTS

プロファイルがすでに存在します

例

BEGIN
DBMS_SQL_TRANSLATOR.DEREGISTER_SQL_TRANSLATION(
profile_name => 'tsql_application',
sql_text     => 'select top 5 * from emp');
END;

DEREGISTER_ERROR_TRANSLATIONプロシージャ

このプロシージャは、SQL翻訳プロファイルのOracleエラー・コードおよびSQLSTATEの翻訳を登録解除します。

構文

DBMS_SQL_TRANSLATOR.DEREGISTER_ERROR_TRANSLATION (
profile_name          IN   VARCHAR2,
error_code            IN   PLS_INTEGER);

パラメータ

表150-8 DEREGISTER_ERROR_TRANSLATIONプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

error_code

Oracleエラー・コード

例外

表150-9 DEREGISTER_ERROR_TRANSLATIONプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

例

BEGIN
DBMS_SQL_TRANSLATOR.DEREGISTER_ERROR_TRANSLATION(
profile_name    => 'tsql_application',
error_code      => 1);
END;

DROP_PROFILEプロシージャ

このプロシージャは、SQL翻訳プロファイルおよびその内容を削除します。

構文

DBMS_SQL_TRANSLATOR.DROP_PROFILE (
profile_name     IN    VARCHAR2);

パラメータ

表150-10 DROP_PROFILEプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

例外

表150-11 DROP_PROFILEプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

例

BEGIN
DBMS_SQL_TRANSLATOR.DROP_PROFILE(
profile_name    =>  'tsql_application');
END;

ENABLE_ERROR_TRANSLATIONプロシージャ

このプロシージャは、SQL翻訳プロファイルでOracleエラー・コードのカスタム翻訳を有効または無効にします。

構文

DBMS_SQL_TRANSLATOR.ENABLE_ERROR_TRANSLATION (
profile_name      IN  VARCHAR2,
sql_text          IN CLOB,
enable            IN BOOLEAN DEFAULT TRUE);

パラメータ

表150-12 ENABLE_ERROR_TRANSLATIONプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

sql_text

SQL文

enable

翻訳を有効または無効にします

例外

表150-13 ENABLE_ERROR_TRANSLATIONプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

例

BEGIN
DBMS_SQL_TRANSLATOR.ENABLE_ERROR_TRANSLATION(
profile_name => 'tsql_application',
sql_text     => 'SELECT TOP 5 * FROM emp'
enable       => TRUE);
END;

ENABLE_SQL_TRANSLATIONプロシージャ

このプロシージャは、SQL翻訳プロファイルでSQL文のカスタム翻訳を有効または無効にします。

構文

DBMS_SQL_TRANSLATOR.ENABLE_SQL_TRANSLATION (
profile_name      IN    VARCHAR2,
sql_text          IN    CLOB,
enable            IN BOOLEAN DEFAULT TRUE);

パラメータ

表150-14 ENABLE_SQL_TRANSLATIONプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

sql_text

SQL文

enable

翻訳を有効または無効にします

例外

表150-15 ENABLE_SQL_TRANSLATIONプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

例

BEGIN
DBMS_SQL_TRANSLATOR.ENABLE_SQL_TRANSLATION(
profile_name => 'tsql_application',
sql_text     => 'select top 5 * from emp',
enable       => TRUE);
END;

EXPORT_PROFILEプロシージャ

このプロシージャは、SQL翻訳プロファイルの内容をエクスポートします。

構文

DBMS_SQL_TRANSLATOR.EXPORT_PROFILE (
profile_name     IN          VARCHAR2,
content          OUT NOCOPY  CLOB);

パラメータ

表150-16 EXPORT_PROFILEプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

content

プロファイルの内容。

例外

表150-17 EXPORT_PROFILEプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

使用上の注意

- SQL翻訳プロファイルの内容は、次のようにXML形式でエクスポートされます。プロファイル名はエクスポートされないことに注意してください。

SQLTranslationProfile Translator="translator package name"
ForeignSQLSyntax="TRUE|FALSE"
TranslateNewSQL="TRUE|FALSE"
RaiseTranslationError="TRUE|FALSE"
LogTranslationError="TRUE|FALSE"
TraceTranslation="TRUE|FALSE"
Editionable="TRUE|FALSE">
<SQLTranslations>
<SQLTranslation Enabled="TRUE|FALSE">
<SQLText>original SQL text</SQLText>
<TranslatedText>translated SQL text</TranslatedText>
</SQLTranslation>
...
</SQLTranslations>
<ErrorTranslations>
<ErrorTranslation Enabled="TRUE|FALSE">
<ErrorCode>Oracle error code</ErrorCode>
<TranslatedCode>translated error code</TranslatedCode>
<TranslatedSQLSTATE>translated SQLSTATE</TranslatedSQLSTATE>
</ErrorTranslation>
...
</ErrorTranslations>
</SQLTranslationProfile>

- 内容をSQL翻訳プロファイルにインポートするには、IMPORT_PROFILEプロシージャを使用します。

例

DECLARE
content CLOB;
BEGIN
DBMS_SQL_TRANSLATOR.EXPORT_PROFILE(
profile_name    =>  'tsql_application',
content         =>  content);
END;

IMPORT_PROFILEプロシージャ

このプロシージャは、SQL翻訳プロファイルの内容をインポートします。

構文

DBMS_SQL_TRANSLATOR.IMPORT_PROFILE (
profile_name       IN   VARCHAR2,
content            IN   CLOB);

パラメータ

表150-18 IMPORT_PROFILEプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

content

プロファイルの内容。

例外

表150-19 IMPORT_PROFILEプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

使用上の注意

- SQL翻訳プロファイルの内容は、EXPORT_PROFILEプロシージャで使用されるXML形式である必要があります。すべての要素および属性はオプションです。

- プロファイルが存在しない場合は作成されます。プロファイルが存在する場合、その内容によって既存の属性、トランスレータ・パッケージ、SQLまたはエラーの翻訳登録が上書きされます。

- 内容をSQL翻訳プロファイルにエクスポートするには、EXPORT_PROFILEプロシージャを使用します。

例

DECLARE
content CLOB;
BEGIN
DBMS_SQL_TRANSLATOR.IMPORT_PROFILE(
profile_name    =>  'tsql_application',
content         =>  content);
END;

REGISTER_ERROR_TRANSLATIONプロシージャ

このプロシージャは、SQL翻訳プロファイルのOracleエラー・コードおよびSQLSTATEのカスタム翻訳を登録します。

構文

DBMS_SQL_TRANSLATOR.REGISTER_ERROR_TRANSLATION (
profile_name          IN   VARCHAR2,
error_code            IN   PLS_INTEGER,
translated_code       IN   PLS_INTEGER DEFAULT NULL,
translated_sqlstate   IN   VARCHAR2 DEFAULT NULL,
enable                IN   BOOLEAN DEFAULT TRUE);

パラメータ

表150-20 REGISTER_ERROR_TRANSLATIONプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

error_code

Oracleエラー・コード

translated_code

翻訳されたエラー・コード

translated_sqlstate

翻訳されたSQLSTATE

enable

翻訳を有効または無効にします

例外

表150-21 REGISTER_ERROR_TRANSLATIONプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

使用上の注意

- Oracle Databaseは、翻訳プロファイルを使用してOracleエラー・コードを翻訳するときに、まず登録されたカスタム翻訳を検索し、一致が見つからなかった場合にのみトランスレータ・パッケージを起動します。

- プロファイルに翻訳が登録されている場合、翻訳を無効にできます。Oracle Databaseは、無効になっている翻訳を検索しません。

- エラー・コードおよびSQLSTATEの古い翻訳がある場合、新しい翻訳に置き換えられます。

- 翻訳を登録解除するには、DEREGISTER_ERROR_TRANSLATIONプロシージャを使用します。

例

BEGIN
DBMS_SQL_TRANSLATOR.REGISTER_ERROR_TRANSLATION(
profile_name    => 'tsql_application',
error_code      => 1,
translated_code => 2601);
END;

REGISTER_SQL_TRANSLATIONプロシージャ

このプロシージャは、SQL翻訳プロファイルのSQL文のカスタム翻訳を登録します。

構文

DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION (
profile_name      IN VARCHAR2,
sql_text          IN CLOB,
translated_text   IN CLOB DEFAULT NULL,
enable            IN BOOLEAN DEFAULT TRUE);

パラメータ

表150-22 REGISTER_SQL_TRANSLATIONプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

sql_text

SQL文

translated_text

翻訳されたSQL文

enable

翻訳を有効または無効にします

例外

表150-23 REGISTER_SQL_TRANSLATIONプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

使用上の注意

- Oracle Databaseは、翻訳プロファイルを使用して文を翻訳するときに、まず登録されたカスタム翻訳を検索し、一致が見つからなかった場合にのみトランスレータ・パッケージを起動します。

- プロファイルに翻訳が登録されている場合、翻訳を無効にできます。Oracle Databaseは、無効になっている翻訳を検索しません。

- translated_textがNULLの場合、翻訳の必要はなく、元の文が使用されます。

- SQL文の古い翻訳がある場合、新しい翻訳に置き換えられます。

- 翻訳を登録解除するには、DEREGISTER_SQL_TRANSLATIONプロシージャを使用します。

例

BEGIN
DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION(
profile_name    => 'tsql_application',
sql_text        => 'select top 5 * from emp',
translated_text => 'SELECT * FROM emp WHERE rownum <= :SYS_N_001');
END;

SET_ATTRIBUTEプロシージャ

このプロシージャは、SQL翻訳プロファイルの属性を設定します。

構文

DBMS_SQL_TRANSLATOR.SET_ATTRIBUTE (
profile_name      IN  VARCHAR2,
attribute_name    IN  VARCHAR2,
attribute_value   IN  VARCHAR2;)

パラメータ

表150-24 SET_ATTRIBUTEプロシージャのパラメータ

パラメータ

説明

profile_name

プロファイルの名前。

attribute_name

属性の名前

attribute_value

属性の値

例外

表150-25 SET_ATTRIBUTEプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

使用上の注意

「定数」を参照してください。

SQL_HASHファンクション

このプロシージャは、セッションのSQL翻訳プロファイルでSQL文のハッシュ値を計算します。

構文

DBMS_SQL_TRANSLATOR.SQL_HASH (
sql_text         IN    CLOB)
RETURN NUMBER DETERMINISTIC;

パラメータ

表150-26 SQL_HASHファンクションのパラメータ

パラメータ

説明

sql_text

SQL文

戻り値

SQL翻訳プロファイルのSQL文のハッシュ値を戻します。

例外

表150-27 SQL_HASHファンクションの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

例

DECLARE
sqltext CLOB;
txltext CLOB;
sqlhash NUMBER;
BEGIN
sqltext  :=  'SELECT TOP 1 * FROM emp';
sqlhash  :=  DBMS_SQL_TRANSLATOR.SQL_HASH (sqltext);
SELECT translated_text INTO txltext
FROM user_sql_translations
WHERE sql_hash = sqlhash
AND DBMS_LOB.COMPARE (sql_text, sqltext) = 0;
END;

SQL_IDファンクション

このプロシージャは、SQL翻訳プロファイルのSQL文のSQL識別子を計算します。

構文

DBMS_SQL_TRANSLATOR.SQL_ID (
sql_text         IN    CLOB)
RETURN VARCHAR2 DETERMINISTIC;

パラメータ

表150-28 SQL_IDファンクションのパラメータ

パラメータ

説明

sql_text

SQL文

戻り値

SQL翻訳プロファイルのSQL文のSQL IDを戻します。

例外

表150-29 SQL_IDファンクションの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

例

DECLARE
sqltext CLOB;
sqlid   VARCHAR2(13);
BEGIN
sqltext :=  'SELECT TOP 1 * FROM emp';
sqlid   :=  DBMS_SQL_TRANSLATOR.SQL_ID (sqltext);
END;

TRANSLATE_ERRORプロシージャ

このプロシージャは、セッションのSQL翻訳プロファイルを使用してOracleエラー・コードとANSI SQLSTATEを翻訳します。

構文

DBMS_SQL_TRANSLATOR.TRANSLATE_ERROR (
error_code           IN           PLS_INTEGER,
translated_code      OUT          PLS_INTEGER,
translated_sqlstate  OUT NOCOPY   VARCHAR2);

パラメータ

表150-30 TRANSLATE_ERRORプロシージャのパラメータ

パラメータ

説明

error_code

Oracleエラー・コード

translated_code

翻訳されたエラー・コード

translated_sqlstate

翻訳されたSQLSTATE

例外

表150-31 TRANSLATE_ERRORプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

NO_TRANSLATION_FOUND

SQL文またはエラー・コードの翻訳が見つかりません

例

DECLARE
translated_code      BINARY_INTEGER;
translated_sqlstate  VARCHAR2(5);
BEGIN
DBMS_SQL_TRANSLATOR.TRANSLATE_ERROR(
error_code           => 1,
translated_code      => translated_code,
translated_sqlstate  => translated_sqlstate);
END;

TRANSLATE_SQLプロシージャ

このプロシージャは、SQL翻訳プロファイルを使用して、SQL文を翻訳します。

構文

DBMS_SQL_TRANSLATOR.TRANSLATE_SQL (
sql_text          IN           CLOB,
translated_text   OUT  NOCOPY  CLOB);

パラメータ

表150-32 TRANSLATE_SQLプロシージャのパラメータ

パラメータ

説明

sql_text

SQL文

translated_text

翻訳されたSQL文

例外

表150-33 TRANSLATE_SQLプロシージャの例外

例外

説明

BAD_ARGUMENT

不正な引数がPL/SQLインタフェースに渡されました

INSUFFICIENT_PRIVILEGE

ユーザーには、この操作の権限がありません

NO_SUCH_USER

プロファイルの所有者が存在しません

NO_SUCH_PROFILE

プロファイルが存在しません

例

ALTER SESSION SET SQL_TRANSLATION_PROFILE =  tsql_application;

DECLARE
translated_text CLOB;
BEGIN
DBMS_SQL_TRANSLATOR.TRANSLATE_SQL(
sql_text         => 'select top 5 * from emp',
translated_text  => translated_text);
END;

151 DBMS_SQL_MONITOR

DBMS_SQL_MONITORパッケージでは、リアルタイムSQL監視およびリアルタイム・データベース操作監視について説明します。

関連項目:
DBMS_SQLTUNE

この章では、次の項目について説明します。

- DBMS_SQL_MONITORの使用

- 概要

- セキュリティ・モデル

- 定数

- DBMS_SQL_MONITORサブプログラムの要約

DBMS_SQL_MONITORの使用

- 概要

- セキュリティ・モデル

- 定数

概要

DBMS_SQL_MONITORパッケージでは、リアルタイムSQL監視およびリアルタイム・データベース操作監視について説明します。これらの機能によって、高価なものとみなされている、SQL文、PL/SQLブロックまたはコンポジット・データベース操作の自動監視が可能となります。単一のSQL文、あるいは単一のPL/SQLプロシージャまたは機能はシンプル・データベースの操作です。コンポジット・データベースの操作は、データベース・セッションで定義された2つの時点間のアクティビティです。監視されるデータは、V$SQL_MONITORおよびV$SQL_PLAN_MONITORに収集されます。

次のサブプログラムは、コンポジット・データベース操作の監視を開始および終了します。

- BEGIN_OPERATIONファンクション

- END_OPERATIONプロシージャ

次のサブプログラムは、V$SQL_MONITORおよびV$SQL_PLAN_MONITORで収集された監視データに関するレポートを作成します。

- REPORT_SQL_MONITORファンクション

- REPORT_SQL_MONITOR_LISTファンクション

セキュリティ・モデル

このパッケージはPUBLICで使用可能で、実行者権限で実行します。レポート機能では、SELECT_CATALOG_ROLEロールによって提供される、カタログからデータを選択する権限が必要です。

定数

DBMS_SQL_MONITORパッケージでは、表151-1「DBMS_SQL_MONITORの定数」で示す定数が使用されます。

表151-1 DBMS_SQL_MONITORの定数

定数

タイプ

値

説明

FORCE_TRACKING

VARCHAR2(30)

'Y'

操作の開始時にコンポジット・データベースの操作を強制的に追跡します。

NO_FORCE_TRACKING

VARCHAR2(30)

'N'

操作の開始時にコンポジット・データベースの操作を強制的には追跡しません。CPUまたはI/O時間を5秒消費した場合にのみ追跡されます。

DBMS_SQL_MONITORサブプログラムの要約

表151-2 DBMS_SQL_MONITORパッケージのサブプログラム

サブプログラム

説明

BEGIN_OPERATIONファンクション

現在のセッションでコンポジット・データベースの操作を開始します。

END_OPERATIONプロシージャ

現在のセッションの監視操作を終了します。

REPORT_SQL_MONITORファンクション

Oracleで監視している特定のデータベース操作の詳細レポートを作成します。

REPORT_SQL_MONITOR_LISTファンクション

Oracleで監視しているデータベース操作のすべてまたは1つのサブセットのレポートを作成します。

BEGIN_OPERATIONファンクション

このファンクションは、現在のセッションでコンポジット・データベースの操作を開始します。

構文

DBMS_SQL_MONITOR.BEGIN_OPERATION (
dbop_name       IN VARCHAR2,
dbop_eid        IN NUMBER   := NULL,
forced_tracking IN VARCHAR2 := NO_FORCE_TRACKING,
attribute_list  IN VARCHAR2 := NULL)
RETURN NUMBER;

パラメータ

表151-3 BEGIN_OPERATIONプロシージャのパラメータ

パラメータ

説明

dbop_name

コンポジット・データベース操作の名前です。

dbop_eid

コンポジット・データベース操作の現在の実行に対する一意の識別子です。

forced_tracking

値: (定義されている定数を参照):

- FORCE_TRACKING - 操作の開始時にコンポジット・データベース操作を強制的に追跡します。文字列変数'Y'を使用することもできます。

- NO_FORCE_TRACKING - CPUまたはI/O時間を5秒以上消費した場合にのみ操作が追跡されます。文字列変数'N'を使用することもできます。

attribute_list

ユーザーが作成した属性のリストです。これは、名前/値ペア('table_name=emp, operation=load'など)のカンマ区切りリストです。

戻り値

コンポジット・データベース操作の一意の実行ID

END_OPERATIONプロシージャ

このファンクションは、現在のセッション内のコンポジット・データベースの操作を終了します。指定されたコンポジット・データベース操作がない場合は、このプロシージャの効果はありません。

構文

DBMS_SQL_MONITOR.END_OPERATION  (
dbop_name       IN VARCHAR2,
dbop_eid        IN NUMBER)
RETURN NUMBER;

パラメータ

表151-4 END_OPERATIONプロシージャのパラメータ

パラメータ

説明

dbop_name

コンポジット・データベース操作の名前です。

dbop_eid

コンポジット・データベース操作の現在の実行に対する一意の識別子です。

REPORT_SQL_MONITORファンクション

このファンクションは、シンプル・データベースまたはコンポジット・データベースの操作に関する監視情報を含む詳細レポートを作成します。各操作には、キー情報および関連付けられているグローバルな統計情報が指定されます。このファンクションを使用して、シンプル・データベースまたはコンポジット・データベースの操作に関する詳細な監視情報を取得します。

このレポートで対象となるデータベース操作は次になります。

- Oracleで監視するデータベースの最後の操作(デフォルトはパラメータなし)。

- 指定されたセッションで実行し、Oracleで監視するデータベースの最後の操作。このセッションは、セッションIDか、オプションのシリアル番号で識別されます(-1が現在のセッションです)。

- sql_idで識別された特定のデータベース操作の最後の実行。

- sql_id、sql_exec_startおよびsql_exec_idを組み合せて識別されたデータベース操作の特定の実行。

- dbop_nameで識別された特定のコンポジット・データベース操作の最後の実行。

- dbop_nameとdbop_exec_idを組み合せて識別されたコンポジット・データベース操作の特定の実行。

構文

DBMS_SQL_MONITOR.REPORT_SQL_MONITOR (
sql_id                    IN VARCHAR2 DEFAULT  NULL,
dbop_name                 IN VARCHAR2 DEFAULT  NULL,
dbop_exec_id              IN NUMBER   DEFAULT  NULL,
session_id                IN NUMBER   DEFAULT  NULL,
session_serial            IN NUMBER   DEFAULT  NULL,
sql_exec_start            IN DATE     DEFAULT  NULL,
sql_exec_id               IN NUMBER   DEFAULT  NULL,
inst_id                   IN NUMBER   DEFAULT  NULL,
start_time_filter         IN DATE     DEFAULT  NULL,
end_time_filter           IN DATE     DEFAULT  NULL,
instance_id_filter        IN NUMBER   DEFAULT  NULL,
parallel_filter           IN VARCHAR2 DEFAULT  NULL,
plan_line_filter          IN NUMBER   DEFAULT  NULL,
event_detail              IN VARCHAR2 DEFAULT  'YES',
bucket_max_count          IN NUMBER   DEFAULT  128,
bucket_interval           IN NUMBER   DEFAULT  NULL,
base_path                 IN VARCHAR2 DEFAULT  NULL,
last_refresh_time         IN DATE     DEFAULT  NULL,
report_level              IN VARCHAR2 DEFAULT 'TYPICAL',
type                      IN VARCHAR2 DEFAULT 'TEXT',
sql_plan_hash_value       IN NUMBER   DEFAULT  NULL,
con_name                  IN VARCHAR2 DEFAULT  NULL)
RETURN CLOB;

パラメータ

表151-5 REPORT_SQL_MONITORプロシージャのパラメータ

パラメータ

説明

sql_id

監視情報の表示が必要なシンプル・データベース操作のSQL_ID。NULL(デフォルト)を使用すると、Oracleで監視するシンプル・データベースの最後の操作に関する監視情報が表示されます。

dbop_name

コンポジット・データベース操作の監視情報を表示する対象のDBOP_NAME。

dbop_exec_id

監視情報の表示対象であるコンポジット・データベース操作の実行ID。

session_id

指定されたセッションのかわりに実行および監視される文のサブセットのみが対象となります。デフォルトはNULLです。現在のセッションには-1またはUSERENV('SID')を使用します。

session_serial

session_idに加えて、セッション・シリアル番号を指定することで、必要なセッション・インカネーションが対象になっていることを確認できます。session_idがNULLの場合、これは無視されます。

sql_exec_start

監視されるSQLの実行が開始された時刻。sql_idが指定されている場合のみ適用可能です。sql_idの特定の実行に関する監視情報の表示に使用されます。NULL(デフォルト)の場合は、sql_idの最後の実行が表示されます。

sql_exec_id

同じSQL文の異なる実行を識別するためにSQL監視によって内部的に生成された数値のID。したがって、各実行には、同じsql_idが存在するものの、sql_exec_idが異なります。sql_idを指定し、さらにsql_idの特定の実行に関する監視情報の表示に使用する場合にのみ適用可能です。NULL(デフォルト)の場合は、sql_idの最後の実行が表示されます。

inst_id

指定したインスタンスで開始された問合せのみを検索します。現在のインスタンスを対象にするには-1を使用します。デフォルトのNULLでは、すべてのインスタンスを対象にします。

start_time_filter

NULL以外の場合は、この日付より後に開始されたV$ACTIVE_SESSION_HISTORYのアクティビティがレポートに表示されます。NULLの場合は、対象のデータベース操作が開始されるとレポート対象のアクティビティが開始されます。

end_time_filter

NULL以外の場合は、この日付より前に開始されたV$ACTIVE_SESSION_HISTORYのアクティビティがレポートに表示されます。NULLの場合は、対象のデータベース操作が終了するか、SYSDATEの時点(操作が実行中の場合)で、レポート対象のアクティビティが終了します。

instance_id_filter

指定したインスタンスのアクティビティのみを検索します。すべてのインスタンスを対象にするにはNULL(デフォルト)を使用します。問合せがパラレル実行されている場合にのみ適切です。

parallel_filter

パラレル・フィルタはパラレル実行にのみ適用され、これによってパラレル実行に関連する処理のサブセットのみを選択できます。文字列parallel_filterは、次のいずれかにできます。

- NULL: すべてのパラレル実行サーバーおよび問合せコーディネータが対象になります。

- ['qc'][servers(<svr_grp>[,] <svr_set>[,] <srv_num>)]では、すべてのNULL値がALLとして解釈されます。

plan_line_filter

SQLの計画で指定した行番号のアクティビティおよび実行統計を選択します。

event_detail

NOに設定すると、アクティビティはwait_classのみによって集計されます。wait_class、event_nameによって集計するには、YES(デフォルト)を使用します。

bucket_max_count

レポートで作成するバケットの最大数を指定します。

bucket_interval

すべてのヒストグラム・バケットの正確な時間間隔(秒)を表します。指定すると、bucket_max_countは無視されます。

base_path

フレックスHTML形式で外部ファイル(Javaスクリプトおよびフラッシュswfファイル)へのアクセスが必要な場合のフレックスHTMLリソースのURLパスです。

last_refresh_time

NULL(デフォルト)ではない場合、レポートが最後に取得された時刻(レポート・タグのSYSDATE属性)。このオプションは、実行中の問合せのレポートを表示するため、およびそのレポートが定期的に更新される際に使用します。新しい変更された情報のみが戻されるため、レポートのサイズを最適化します。特に、次が最適化されます。

- このオプションを指定すると、SQLテキストが戻されません。

- アクティビティ・ヒストグラムはその時点で交差するバケットで開始されます。last_refresh_timeがバケットの開始後でも、バケットの内容全体が戻されます。

report_level

レポートの詳細なレベル。次のうち、1つのみを指定できます。

- NONE: 可能なかぎり最小です。

- BASIC: これは、sql_text-plan-xplan-sessions-instance-activity_histogram-plan_histogram-metricsと同じであり、ここでのトークン"-"は、レポート・セクションがレポートに含まれていないことを示します。

- TYPICAL: plan_histogram以外のすべてです。

- ALL: すべてです。

また、レポートの個々のセクションは、±section_nameを使用して、有効または無効にすることもできます。複数のセクションが定義されます。

- XPLAN: 実行計画を表示します。デフォルトではONです。

- PLAN: 計画監視統計を表示します。デフォルトではONです。

- 'SESSIONS': セッションの詳細を表示します。パラレル問合せにのみ適用されます。デフォルトではONです。

- INSTANCE: インスタンスの詳細を表示します。パラレルおよびインスタンス間の問合せにのみ適用されます。デフォルトではONです。

- PARALLEL: セッションおよびインスタンスの詳細を指定するための包括的なパラメータです。

- ACTIVITY: グローバル・レベル、プラン・ライン・レベルおよびセッションでアクティビティの要約を表示します。

- INSTANCE LEVEL: (該当する場合)。デフォルトではONです。

- BINDS: 該当する場合にバインド情報を表示します。デフォルトではONです。

- METRICS: メトリック・データ(CPUやIOなど)を経時的に表示します。デフォルトではONです。

- ACTIVITY_HISTOGRAM: 全体的な問合せアクティビティのヒストグラムを表示します。デフォルトではONです。

- PLAN_HISTOGRAM: プラン・ライン・レベルでアクティビティ・ヒストグラムを表示します。デフォルトではOFFです。

- OTHER: その他の情報です。デフォルトではONです。

また、SQLテキストは異なるレベルで指定できます。

- -SQL_TEXT: レポートにSQLテキストなし。

- +SQL_TEXT: 部分的なSQLテキストが有効(つまりGV$SQL_MONITORに格納される最初の2000文字まで)。

- SQL_FULLTEXT: 完全なSQLテキストなし(つまり+sql_text)。

- +SQL_FULLTEXT: 完全なSQLテキストを表示(デフォルト)。

type

レポート・タイプ

- TEXT: テキスト・レポート(デフォルト)。

- HTML: 単純なHTMLレポート。

- ACTIVE: データベースのアクティブ・レポート。一部の情報(実行計画、activity_histogram、メトリックおよびplan_histogram)は、このタイプが選択された場合にのみ表示されます。

- XML: レポートの生データ。

sql_plan_hash_value

指定した計画ハッシュ値があるもののみを対象にします。デフォルトはNULLです。

con_name

コンテナ名。

戻り値

SQL監視レポート、XML文書。

使用上の注意

このファンクションを起動するユーザーは、次の固定ビューにアクセスする権限を持っている必要があります。

- GV$SQL_MONITOR

- GV$SQL_PLAN_MONITOR

- GV$ACTIVE_SESSION_HISTORY

- GV$SESSION_LONGOPS

- GV$SQL SQL全文が要求され、その長さが2Kを超える場合。

REPORT_SQL_MONITOR_LISTファンクション

このファンクションは、Oracleで監視しているデータベース操作のすべてまたは1つのサブセットのレポートを作成します。各データベース操作には、キー情報および関連付けられているグローバルな統計情報が指定されます。

構文

DBMS_SQL_MONITOR.REPORT_SQL_MONITOR_LIST (
sql_id                    IN VARCHAR2 DEFAULT  NULL,
dbop_name                 IN VARCHAR2 DEFAULT  NULL,
monitor_type              IN NUMBER   DEFAULT  MONITOR_TYPE_ALL,
session_id                IN NUMBER   DEFAULT  NULL,
session_serial            IN NUMBER   DEFAULT  NULL,
inst_id                   IN NUMBER   DEFAULT  NULL,
active_since_date         IN DATE     DEFAULT  NULL,
active_since_sec          IN NUMBER   DEFAULT  NULL,
last_refresh_time         IN DATE     DEFAULT  NULL,
report_level              IN VARCHAR2 DEFAULT 'TYPICAL',
auto_refresh              IN NUMBER   DEFAULT  NULL,
base_path                 IN VARCHAR2 DEFAULT  NULL,
type                      IN VARCHAR2 DEFAULT 'TEXT',
con_name                  IN VARCHAR2 DEFAULT  NULL)
RETURN CLOB;

パラメータ

表151-6 REPORT_SQL_MONITOR_LISTプロシージャのパラメータ

パラメータ

説明

sql_id

監視情報の表示が必要なシンプル・データベース操作のSQL_ID。NULL(デフォルト)を使用すると、Oracleで監視する最後の操作に関する監視情報が表示されます。

dbop_name

コンポジット・データベース操作の監視情報を表示する対象のDBOP_NAME。

monitor_type

モニター・タイプ

- MONITOR_TYPE_SQLは、シンプル・データベースの操作のみを戻します。

- MONITOR_TYPE_DBOPは、コンポジット・データベースの操作を戻します。

- MONITOR_TYPE_ALLはすべてのタイプを戻します。

session_id

指定されたセッションのかわりに実行および監視されたデータベース操作のサブセットのみが対象となります。デフォルトはNULLです。現在のセッションには-1またはUSERENV('SID')を使用します。

session_serial

session_idに加えて、セッション・シリアル番号を指定することで、必要なセッション・インカネーションが対象になっていることを確認できます。session_idがNULLの場合、これは無視されます。

inst_id

指定されたインスタンスで発生するデータベース操作で監視対象のもののみを確認します。レポートが実行されたインスタンスを対象にするには-1を使用します。すべてのインスタンスを対象にするにはNULL(デフォルト)を使用します。

active_since_date

NULL(デフォルト)以外の場合は、指定された日時以降アクティブなデータベース操作で監視対象のものを戻します。これには、実行されているすべての操作のほか、指定された開始時間の後に実行が完了したすべての操作が含まれます。

active_since_sec

NULL(デフォルト)以外の場合は、指定された日時以降アクティブなデータベース操作で監視対象のものを戻します。これには、実行されているすべての操作のほか、指定された日時の後に実行が完了したすべての操作が含まれます。この場合、開始時刻は、現行のSYSDATEから指定した秒数を減じた数値に対して指定されています。たとえば、3600を使用すると、レポートの対象は、過去1時間でアクティブになっているすべての操作に制限されます。

last_refresh_time

NULL(デフォルト)ではない場合、リスト・レポートが最後に取得された時刻。これにより、アプリケーションがリストを表示し、定期的(5秒ごとなど)にレポートを更新する場合に最適化されます。この場合は、指定されたlast_refresh_time以降アクティブになっている監視対象の問合せの実行について、レポートで詳細が示されます。その他の問合せについては、レポートは実行キー(sql_id、sql_exec_startおよびsql_exec_id)を戻します。また、指定した日付の後に最初のリフレッシュ時間がある問合せについては、SQL実行キーおよび統計情報のみが戻されます。

report_level

レポートの詳細なレベル。レベルは、BASIC(最大200文字のSQLテキスト)、TYPICAL(カーソルが期限切れになっていないことを前提に、完全なSQLテキストを含む。期限切れの場合は、最大2000文字のSQLテキストが含まれる)またはALL(TYPICALと同じ)にできます。

auto_refresh

監視対象のSQLまたはデータベース操作の実行中にレポート・データが自動的にリフレッシュされるまでの時間間隔(秒単位)を指定します。これは、アクティブなレポート・タイプに適用されます。

base_path

フレックスHTML形式で外部ファイル(Javaスクリプトおよびフラッシュswfファイル)へのアクセスが必要な場合のフレックスHTMLリソースのURLパスです。

type

レポート・タイプ

- TEXT: テキスト・レポート(デフォルト)。

- HTML: 単純なHTMLレポート。

- ACTIVE: データベースのアクティブ・レポート。このタイプが選択された場合にのみ表示される情報(実行プラン、activity_histogram、メトリックおよびplan_histogram)があります。

- XML: レポートの生データ。

con_name

コンテナ名。

戻り値

監視されたデータベース操作のリストを含むXMLドキュメント

使用上の注意

- REPORT_SQL_MONITORファンクションを使用すると、単一のデータベース操作に関する監視情報の詳細が取得されます。

- このファンクションを呼び出すユーザーには、固定ビューのGV$SQL_MONITORとGV$SQLにアクセスする権限が必要です。

152 DBMS_SQLDIAG

DBMS_SQLDIAGパッケージは、SQL診断機能のインタフェースを提供します。

関連項目:
診断データの管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_SQLDIAGの使用方法

- 概要

- 定数

- 例

- DBMS_SQLDIAGサブプログラムの要約

DBMS_SQLDIAGの使用方法

- 概要

- 定数

- 例

概要

重大なエラーが発生してSQL文が失敗した場合は、SQL修復アドバイザを実行して、失敗した文の修復を試行できます。この項では、次の項目について説明します。

- SQL修復アドバイザの概要

- SQL修復アドバイザの実行

- SQLパッチの削除

SQL修復アドバイザの概要

SQL修復アドバイザは、重大なエラーが発生してSQL文が失敗した場合に実行します。このアドバイザによって、文が分析され、多くの場合、文を修復するためにパッチの適用が推奨されます。リコメンデーションを実装すると、適用されたSQLパッチによって、問合せオプティマイザで将来実行する場合の代替実行計画が選択され、失敗が回避されます。

SQL修復アドバイザの実行

SQL修復アドバイザを実行するには、CREATE_DIAGNOSIS_TASKを使用して診断タスクを作成し、EXECUTE_DIAGNOSIS_TASKを使用してその診断タスクを実行します。SQL修復アドバイザは、まず重大なエラーを再現し、次にSQLパッチの形式での対処方法の生成を試行します。

1. 問題が発生したSQL文の特定
重大なエラーが発生した次のSQL文について考えてみます。

DELETE FROM t t1 WHERE t1.a = 'a' AND ROWID <> (SELECT MAX(ROWID) FROM t t2 WHERE t1.a= t2.a AND t1.b = t2.b AND t1.d=t2.d)

SQL修復アドバイザを使用して、この重大なエラーを修復します。

2. 診断タスクの作成
DBMS_SQLDIAGを呼び出します。CREATE_DIAGNOSIS_TASK。オプションのタスク名、アドバイザ・タスクのオプションの時間制限、および問題のタイプを指定できます。次の例では、SQLテキストを指定し、タスク名をerror_task、問題のタイプをDBMS_SQLDIAG.PROBLEM_TYPE_COMPILATION_ERRORと指定しています。

DECLARE
rep_out         CLOB;
t_id            VARCHAR2(50);
BEGIN
t_id := DBMS_SQLDIAG.CREATE_DIAGNOSIS_TASK(
sql_text => 'DELETE FROM t t1 WHERE t1.a = ''a'' AND ROWID <> (SELECT MAX(ROWID) FROM t t2 WHERE t1.a= t2.a AND t1.b = t2.b AND t1.d=t2.d)',
task_name => 'error_task',
problem_type =>DBMS_SQLDIAG.PROBLEM_TYPE_COMPILATION_ERROR);

3. 診断タスクの実行
SQL修復アドバイザの対処方法生成および分析フェーズを実行するには、CREATE_DIAGNOSIS_TASKで戻されたタスクIDを使用して、DBMS_SQLDIAG.EXECUTE_DIAGNOSIS_TASKをコールします。多少の遅延後に、SQL修復アドバイザに戻ります。SQL修復アドバイザは、その実行の一環として検索結果の記録を残し、この記録には、SQL修復アドバイザのレポート機能を使用してアクセス可能です。

DBMS_SQLDIAG.EXECUTE_DIAGNOSIS_TASK (t_id);

4. 診断タスクのレポート
診断タスクの分析には、dbms_sqldiag.report_diagnosis_タスクを使用してアクセスできます。SQL修復アドバイザは、対処方法を検出できた場合、SQLパッチを推奨します。SQLパッチは、SQLプロファイルと類似していますが、SQLプロファイルとは異なり、コンパイル・エラーまたは実行エラーに対処するために使用します。

rep_out := DBMS_SQLDIAG.REPORT_DIAGNOSIS_TASK (t_id, DBMS_SQLDIAG.TYPE_TEXT);

DBMS_OUTPUT.PUT_LINE ('Report : ' ||  rep_out);

END;
/

5. パッチの適用
レポートでパッチが推奨されている場合は、DBMS_SQLDIAG.ACCEPT_SQL_PATCHをコールすることによって、ACCEPT_SQL_PATCHコマンドを実行してパッチを受け入れることができます。このプロシージャは、引数としてtask_nameを使用します。

EXECUTE DBMS_SQLDIAG.ACCEPT_SQL_PATCH(task_name => 'error_task', task_owner => 'SYS', replace => TRUE);

6. パッチのテスト
パッチを受け入れたため、SQL文を再実行できます。今回は重大なエラーが発生しなくなります。この文でEXPLAIN PLANを実行すると、計画を生成するためにSQLパッチが使用されたことが表示されます。

DELETE FROM t t1 WHERE t1.a = 'a' AND ROWID <> (select max(rowid) FROM t t2 WHERE t1.a= t2.a AND t1.b = t2.b AND t1.d=t2.d);

SQLパッチの削除

正式なパッチをOracleから取得してエラーを修正した場合、あるいはエラーの修正を含むOracleの次のパッチ・セットまたはパッチ・リリースにアップグレードした場合は、パッチ名を指定してDBMS_SQLDIAG.DROP_SQL_PATCHをコールし、SQLパッチを削除します。パッチ名は、EXPLAIN PLANセクションから取得することも、ビューDBA_SQL_PATCHESを問い合せて取得することもできます。

定数

DBMS_SQLDIAGパッケージでは、次の表に示す定数が使用されます。

- 表152-1「DBMS_SQLDIAGの定数: SQLDIAGアドバイザの名前」は、アドバイザのフレームワークに表示されるSQL修復アドバイザの名前について説明しています。

- 表152-2「DBMS_SQLDIAGの定数: SQLDIAGアドバイザのタスク・スコープ・パラメータの値」は、SQLDIAGアドバイザのタスク・スコープ・パラメータの値について説明しています。

- 表152-3「DBMS_SQLDIAGの定数: SQLDIAGアドバイザのtime_limit定数」は、SQLDIAGアドバイザのtime_limit定数について説明しています。

- 表152-4「DBMS_SQLDIAGの定数: レポート・タイプ(設定可能な値)の定数」は、レポートで使用可能な書式について説明しています。

- 表152-5「DBMS_SQLDIAGの定数 - レポート・レベル(設定可能な値)の定数」は、レポートで使用可能な詳細レベルについて説明しています。

- 表152-6「DBMS_SQLDIAGの定数: レポート・セクション(設定可能な値)の定数」は、(カンマで区切られた)使用可能なレポート・セクションについて説明しています。

- 表152-7「DBMS_SQLDIAGの定数: 問題のタイプの定数」は、CREATE_DIAGNOSIS_TASKファンクションのproblem_typeパラメータに設定可能な値について説明しています。

- 表152-8「DBMS_SQLDIAGの定数: 検索結果のフィルタの定数」は、_sql_findings_modeパラメータに設定可能な値について説明しています。

表152-1 DBMS_SQLDIAGの定数: SQLDIAGアドバイザの名前

定数

タイプ

値

説明

ADV_SQL_DIAG_NAME

VARCHAR2(18)

'SQL Repair Advisor'

アドバイザのフレームワークに表示されるSQL修復アドバイザの名前

表152-2 DBMS_SQLDIAGの定数: SQLDIAGアドバイザのタスク・スコープ・パラメータの値

定数

タイプ

値

説明

SCOPE_COMPREHENSIVE

VARCHAR2(13)

'COMPREHENSIVE'

問題の詳細な分析(実行に時間がかかる場合があります)

SCOPE_LIMITED

VARCHAR2(7)

'LIMITED'

問題の簡単な分析

表152-3 DBMS_SQLDIAGの定数: SQLDIAGアドバイザのtime_limit定数

定数

タイプ

値

説明

TIME_LIMIT_DEFAULT

NUMBER

1800

問題の分析に対するデフォルトの時間制限

表152-4 DBMS_SQLDIAGの定数: レポート・タイプ(設定可能な値)の定数

定数

タイプ

値

説明

TYPE_HTML

VARCHAR2(4)

'HTML'

REPORT_DIAGNOSIS_TASKファンクションによるレポート(HTML形式)

TYPE_TEXT

VARCHAR2(4)

'TEXT'

REPORT_DIAGNOSIS_TASKファンクションによるレポート(テキスト形式)

TYPE_XML

VARCHAR2(3)

'XML'

REPORT_DIAGNOSIS_TASKファンクションによるレポート(XML形式)

表152-5 DBMS_SQLDIAGの定数 - レポート・レベル(設定可能な値)の定数

定数

タイプ

値

説明

LEVEL_ALL

VARCHAR2(3)

'ALL'

スキップされた文に関する注釈を含む詳細なレポート。

LEVEL_BASIC

VARCHAR2(5)

'BASIC'

分析対象の各文に関する情報(実装されていないリコメンデーションなど)を表示します。

LEVEL_TYPICAL

VARCHAR2(7)

'TYPICAL'

簡単なレポートに、アドバイザによって実行されるアクションに関する情報のみが表示されます。

表152-6 DBMS_SQLDIAGの定数: レポート・セクション(設定可能な値)の定数

定数

タイプ

値

説明

SECTION_ALL

VARCHAR2(3)

'ALL'

すべての文

SECTION_ERRORS

VARCHAR2(6)

'ERRORS'

エラーが発生した文

SECTION_FINDINGS

VARCHAR2(8)

'FINDINGS'

チューニングの結果

SECTION_INFORMATION

VARCHAR2(11)

'INFORMATION'

一般的な情報

SECTION_PLANS

VARCHAR2(5)

'PLANS'

EXPLAIN PLAN

SECTION_SUMMARY

VARCHAR2(7)

'SUMMARY'

サマリー情報

表152-7 DBMS_SQLDIAGの定数: 問題のタイプの定数

定数

タイプ

値

説明

PROBLEM_TYPE_PERFORMANCE

NUMBER

1

パフォーマンスに問題があるとユーザーが推定しています。

PROBLEM_TYPE_WRONG_RESULTS

NUMBER

2

問合せの結果に一貫性がないとユーザーが推定しています。

PROBLEM_TYPE_COMPILATION_ERROR

NUMBER

3

コンパイル中にクラッシュしたことをユーザーが確認しました。

PROBLEM_TYPE_EXECUTION_ERROR

NUMBER

4

実行中にクラッシュしたことをユーザーが確認しました。

PROBLEM_TYPE_ALT_PLAN_GEN

NUMBER

5

すべての代替計画を検索するユーザー。

表152-8 DBMS_SQLDIAGの定数: 検索結果のフィルタの定数

定数

タイプ

値

説明

SQLDIAG_FINDINGS_ALL

NUMBER

1

検索可能なすべての結果を表示します。

SQLDIAG_FINDINGS_VALIDATION

NUMBER

2

構造に対する検証ルールのステータスを表示します。

SQLDIAG_FINDINGS_FEATURES

NUMBER

3

問合せで使用される機能のみを表示します。

SQLDIAG_FINDINGS_FILTER_PLANS

NUMBER

4

アドバイザによって生成された代替計画を表示します。

SQLDIAG_FINDINGS_CR_DIFF

NUMBER

5

2つの計画の差異を表示します。

SQLDIAG_FINDINGS_MASK_VARIANT

NUMBER

6

テスト用のマスク情報。

SQLDIAG_FINDINGS_OBJ_FEATURES

NUMBER

7

機能の使用履歴を表示します。

SQLDIAG_FINDINGS_BASIC_INFO

NUMBER

8

アドバイザによって生成された代替計画を表示します。

例

パッチのパック/アンパック

パッチは、パッケージ内のサブプログラムで提供されているステージング表を使用して、あるシステムからエクスポートして別のシステムにインポートできます。SQL診断セットの場合と同様に、ステージング表に挿入する操作は「パック」、ステージング表のデータからパッケージを作成する操作は「アンパック」と呼ばれます。

DBAは、パック/アンパックを次のように実行する必要があります。

1. CREATE_STGTAB_SQLPATCHをコールして、ユーザー'SH'が所有するステージング表を作成します。

EXEC DBMS_SQLDIAG.CREATE_STGTAB_SQLPATCH(
table_name          =>  'STAGING_TABLE',
schema_name         =>  'SH');

2. PACK_STGTAB_SQLPATCHを1回以上コールして、ステージング表にSQLパッチのデータを書き込みます。この場合、現行のスキーマ所有者が所有するステージング表に、DEFAULTカテゴリ内のすべてのSQLパッチのデータをコピーします。

EXEC DBMS_SQLDIAG.PACK_STGTAB_SQLPATCH(
staging_table_name  =>  'STAGING_TABLE');

3. この場合、現行のスキーマ所有者が所有するステージング表には、1つのSQLパッチSP_FIND_EMPLOYEEのみがコピーされます。

EXEC DBMS_SQLDIAG.PACK_STGTAB_SQLPATCH(
patch_name          =>  'SP_FIND_EMPLOYEE',
staging_table_name  =>  'STAGING_TABLE');

これによって、データポンプ、インポート・コマンドとエクスポート・コマンドまたはデータベース・リンクのいずれかを使用して、ステージング表を別のシステムに移動できます。

4. UNPACK_STGTAB_SQLPATCHをコールして、ステージング表のパッチのデータから、新しいシステムにSQLパッチを作成します。この場合、ステージング表に格納されているSP_FIND_EMPLOYEEパッチのデータ内の名前を'SP_FIND_EMP_PROD'に変更します。

exec dbms_sqldiag.remap_stgtab_sqlpatch(
old_patch_name      =>  'SP_FIND_EMPLOYEE',
new_patch_name      =>  'SP_FIND_EMP_PROD',

DBMS_SQLDIAGサブプログラムの要約

表152-9 DBMS_SQLDIAGパッケージのサブプログラム

サブプログラム

説明

ACCEPT_SQL_PATCHファンクションおよびプロシージャ

指定したSQL診断タスクで推奨されているとおりに、推奨されたSQLパッチを受け入れます。

ALTER_SQL_PATCHプロシージャ

既存のSQLパッチ・オブジェクトの特定の属性を変更します。

CANCEL_DIAGNOSIS_TASKプロシージャ

診断タスクを取り消します。

CREATE_DIAGNOSIS_TASKファンクション

このファンクションは、1つのSQL文を診断するために診断タスクを作成します。

CREATE_STGTAB_SQLPATCHプロシージャ

システム間でのSQLパッチの転送に使用するステージング表を作成します。

DROP_DIAGNOSIS_TASKプロシージャ

診断タスクを削除します。

DROP_SQL_PATCHプロシージャ

データベースから名前付きSQLパッチを削除します。

EXECUTE_DIAGNOSIS_TASKプロシージャ

診断タスクを実行します。

EXPLAIN_SQL_TESTCASEファンクション

SQLテスト・ケースについて記述します。

EXPORT_SQL_TESTCASEプロシージャ

SQLテスト・ケースをディレクトリにエクスポートします。

EXPORT_SQL_TESTCASE_DIR_BY_INCファンクション

引数として渡されるインシデントIDに対応するSQLテスト・ケースを生成します。

EXPORT_SQL_TESTCASE_DIR_BY_TXTファンクション

引数として渡されるSQLに対応するSQLテスト・ケースを生成します。

GET_FIX_CONTROLファンクション

指定したバグ番号に対する修正制御の値を戻します。

GET_SQLファンクション

SQLテスト・ケースをインポートします。

IMPORT_SQL_TESTCASEプロシージャ

SQLテスト・ケースをスキーマにインポートします。

INCIDENTID_2_SQLプロシージャ

インシデントIDのsql_setrowを初期化します。

INTERRUPT_DIAGNOSIS_TASKプロシージャ

診断タスクを中断します。

LOAD_SQLSET_FROM_TCBファンクション

テスト・ケース・ビルダー(TCB)・ファイルからSQLSETをロードします。

PACK_STGTAB_SQLPATCHプロシージャ

CREATE_STGTAB_SQLPATCHプロシージャによって作成されたステージング表へのSQLパッチ。

REPLAY_SQL_TESTCASEプロシージャ

診断タスクをレポートします。

REPORT_DIAGNOSIS_TASKファンクション

診断タスクをレポートします。

RESET_DIAGNOSIS_TASKプロシージャ

診断タスクをリセットします。

RESUME_DIAGNOSIS_TASKプロシージャ

診断タスクを再開します。

SET_DIAGNOSIS_TASK_PARAMETERプロシージャ

診断タスク・パラメータを設定します。

UNPACK_STGTAB_SQLPATCHプロシージャ

PACK_STGTAB_SQLPATCHプロシージャをコールして移入されたステージング表からアンパックし、ステージング表に格納されているパッチのデータを使用して、システムにパッチを作成します。

ACCEPT_SQL_PATCHファンクションおよびプロシージャ

このプロシージャは、指定したSQL診断タスクで推奨されているとおりに、推奨されたSQLパッチを受け入れます。

構文

DBMS_SQLDIAG.ACCEPT_SQL_PATCH (
task_name      IN  VARCHAR2,
object_id      IN  NUMBER := NULL,
name           IN  VARCHAR2 := NULL,
description    IN  VARCHAR2 := NULL,
category       IN  VARCHAR2 := NULL,
task_owner     IN  VARCHAR2 := NULL,
replace        IN  BOOLEAN := FALSE,
force_match    IN  BOOLEAN := FALSE)
RETURN VARCHAR2;

DBMS_SQLDIAG.ACCEPT_SQL_PATCH (
task_name      IN  VARCHAR2,
object_id      IN  NUMBER := NULL,
name           IN  VARCHAR2 := NULL,
description    IN  VARCHAR2 := NULL,
category       IN  VARCHAR2 := NULL,
task_owner     IN  VARCHAR2 := NULL,
replace        IN  BOOLEAN := FALSE,
force_match    IN  BOOLEAN := FALSE);

パラメータ

表152-10 ACCEPT_SQL_PATCHファンクションおよびプロシージャのパラメータ

パラメータ

説明

taskname

SQL診断タスクの名前。

object_id

診断タスクに関連付けられているSQL文を示すアドバイザ・フレームワーク・オブジェクトの識別子。

name

パッチの名前。二重引用符を含むことはできません。大文字と小文字が区別されます。指定しない場合は、システムによってSQLパッチに一意の名前が生成されます。

description

SQLパッチの目的を記述したユーザー指定の文字列。記述の最大サイズは500です。

category

カテゴリ名であり、このパッチを使用するセッションに対するセッションのSQLDIAGNOSE_CATEGORYパラメータの値と一致する必要があります。デフォルトの値はDEFAULTになります。この値は、SQLDIAGNOSE_CATEGORYパラメータのデフォルトでもあります。カテゴリには、有効なOracle識別子を指定してください。指定したカテゴリ名は、常に大文字に変換されます。正規化されたSQLテキストとカテゴリ名の組合せによって、パッチの一意のキーが作成されます。この組合せが重複した場合、受入れは失敗します。

task_owner

診断タスクの所有者。これはオプションのパラメータで、他のユーザーが所有する診断タスクに関連付けられているSQLパッチを受け入れるためには指定する必要があります。現行のユーザーがデフォルト値です。

replace

パッチがすでに存在する場合にこの引数をTRUEにすると、そのパッチは置き換えられます。TRUEに設定した置換の場合でも、別のシグネチャ/カテゴリの組合せで使用されている名前を渡すとエラーが発生します。

force_match

TRUEに設定すると、すべてのリテラル値をバインド変数に正規化した後に同じテキストが含まれているSQL文がSQLパッチの対象になります。(SQL文でリテラル値とバインド変数の組合せが使用されている場合、バインド変換は行われません。)これは、CURSOR_SHARINGパラメータのFORCEオプションで使用される一致アルゴリズムと似ています。FALSEに設定すると、リテラルは変換されません。これは、CURSOR_SHARINGパラメータのEXACTオプションで使用される一致アルゴリズムと似ています。

戻り値

SQLパッチの名前。

使用上の注意

CREATE ANY SQL PROFILE権限が必要です。

ALTER_SQL_PATCHプロシージャ

このプロシージャは、既存のSQLパッチ・オブジェクトの特定の属性を変更します。

構文

DBMS_SQLDIAG.ALTER_SQL_PATCH (
name            IN  VARCHAR2,
attribute_name  IN  VARCHAR2,
value           IN  VARCHAR2);

パラメータ

表152-11 ALTER_SQL_PATCHプロシージャのパラメータ

パラメータ

説明

name

変更するSQLパッチの名前。

attribute_name

変更するSQLパッチの名前。有効な値は、次のとおりです。

- STATUS: ENABLEDまたはDISABLEDに設定できます。

- NAME: 有効な名前にリセットできます(この名前は、有効なOracle識別子であり一意である必要があります)。

- DESCRIPTION: 500以下の文字列に設定できます。

- CATEGORY: 有効なカテゴリ名にリセットできます(この名前は有効なOracle識別子であり、正規化されたSQLテキストと組み合せた場合は一意である必要があります)。

このパラメータは必須で、大/小文字が区別されます。

value

属性の新しい値。有効な属性値については、attribute_nameを参照してください。このパラメータは必須です。

使用上の注意

ALTER ANY SQL PATCH権限が必要です。

CANCEL_DIAGNOSIS_TASKプロシージャ

このプロシージャは、診断タスクを取り消します。

構文

DBMS_SQLDIAG.CANCEL_DIAGNOSIS_TASK (
taskname        IN   VARCHAR2);

パラメータ

表152-12 CANCEL_DIAGNOSIS_TASKプロシージャのパラメータ

パラメータ

説明

taskname

タスクの名前。

CREATE_DIAGNOSIS_TASKファンクション

このファンクションは、1つのSQL文を診断するために診断タスクを作成します。これは、SQL診断タスクの一意の名前を戻します。

構文

テキストを指定して、単一の文の診断を準備します。

DBMS_SQLDIAG.CREATE_DIAGNOSIS_TASK (
sql_text           IN   CLOB,
bind_list          IN   sql_binds := NULL,
user_name          IN   VARCHAR2  := NULL,
scope              IN   VARCHAR2  := SCOPE_COMPREHENSIVE,
time_limit         IN   NUMBER    := TIME_LIMIT_DEFAULT,
task_name          IN   VARCHAR2  := NULL,
description        IN   VARCHAR2  := NULL,
problem_type       IN   NUMBER    := PROBLEM_TYPE_PERFORMANCE)
RETURN VARCHAR2;

識別子を指定して、カーソル・キャッシュ内の単一の文の診断を準備します。

DBMS_SQLDIAG.CREATE_DIAGNOSIS_TASK (
sql_id             IN   VARCHAR2,
plan_hash_value    IN   NUMBER    := NULL,
scope              IN   VARCHAR2  := SCOPE_COMPREHENSIVE,
time_limit         IN   NUMBER    := TIME_LIMIT_DEFAULT,
task_name          IN   VARCHAR2  := NULL,
description        IN   VARCHAR2  := NULL,
problem_type       IN   NUMBER    := PROBLEM_TYPE_PERFORMANCE)
RETURN VARCHAR2;

sqlsetの診断を準備します。

DBMS_SQLDIAG.CREATE_DIAGNOSIS_TASK (
sqlset_name       IN VARCHAR2,
basic_filter      IN VARCHAR2 :=  NULL,
object_filter     IN VARCHAR2 :=  NULL,
rank1             IN VARCHAR2 :=  NULL,
rank2             IN VARCHAR2 :=  NULL,
rank3             IN VARCHAR2 :=  NULL,
result_percentage IN NUMBER   :=  NULL,
result_limit      IN NUMBER   :=  NULL,
scope             IN VARCHAR2 :=  SCOPE_COMPREHENSIVE,
time_limit        IN NUMBER   :=  TIME_LIMIT_DEFAULT,
task_name         IN VARCHAR2 :=  NULL,
description       IN VARCHAR2 :=  NULL,
plan_filter       IN VARCHAR2 :=  'MAX_ELAPSED_TIME',
sqlset_owner      IN VARCHAR2 :=  NULL,
problem_type      IN NUMBER   :=  PROBLEM_TYPE_PERFORMANCE)  RETURN VARCHAR2;

パラメータ

表152-13 CREATE_DIAGNOSIS_TASKファンクションのパラメータ

パラメータ

説明

sql_text

SQL文のテキスト。

bind_list

バインド値のセット。

user_name

診断対象の文またはsqlsetがあるユーザーの名前。

scope

診断スコープ(制限付き/包括的)。

time_limit

診断セッションの最大継続時間(秒)。

task_name

診断タスク名(オプション)。

description

最大256文字のSQL診断セッションの記述。

problem_type

タスクの目標を決定します。有効な値は、次のとおりです。

- PROBLEM_TYPE_WRONG_RESULTS

- PROBLEM_TYPE_COMPILATION_ERROR

- PROBLEM_TYPE_EXECUTION_ERROR

sql_id

文の識別子。

plan_hash_value

SQL実行計画のハッシュ値。

sqlset_name

sqlset名。

basic_filter

SQLチューニング・セット(STS)からSQLをフィルタするためのSQL述語。

object_filter

オブジェクト・フィルタ。

rank(i)

選択したSQLのorder-by句。

result_percentage

ランキング・メジャーの合計のパーセント。

result_limit

フィルタ処理またはランク付けが済んでいるSQLの先頭から数件取得されるSQL文。

plan_filter

計画フィルタ。計画(plan_hash_value)が複数ある場合に適用できます。このフィルタには、1つの計画(plan_hash_value)のみを選択できます。有効な値は、次のとおりです。

- LAST_GENERATED: タイムスタンプが最も新しい計画。

- FIRST_GENERATED: LAST_GENERATEDの反対です。

- LAST_LOADED: first_load_time統計情報が最も新しい計画。

- FIRST_LOADED: LAST_LOADEDの反対です。

- MAX_ELAPSED_TIME: 経過時間が最も長い計画。

- MAX_BUFFER_GETS: バッファ取得回数が最も多い計画。

- MAX_DISK_READS: ディスク読取り回数が最も多い計画。

- MAX_DIRECT_WRITES: 直接書込み回数が最も多い計画。

- MAX_OPTIMIZER_COST: オプティマイザ・コストが最も大きい計画。

sqlset_owner

sqlsetの所有者。現行のスキーマ所有者の場合はNULL。

CREATE_STGTAB_SQLPATCHプロシージャ

このプロシージャは、システム間でのSQLパッチの転送に使用するステージング表を作成します。

構文

DBMS_SQLDIAG.CREATE_STGTAB_SQLPATCH (
table_name       IN  VARCHAR2,
schema_name      IN  VARCHAR2 := NULL,
tablespace_name  IN  VARCHAR2 := NULL);

パラメータ

表152-14 CREATE_STGTAB_SQLPATCHプロシージャのパラメータ

パラメータ

説明

table_name

(必須)作成する表の名前(大/小文字区別)。

schema_name

作成する表を格納するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL。

tablespace_name

ステージング表を格納する表領域(大/小文字区別)。現行のユーザーのデフォルト表領域の場合はNULL。

DROP_DIAGNOSIS_TASKプロシージャ

このプロシージャは、診断タスクを削除します。

構文

DBMS_SQLDIAG.DROP_DIAGNOSIS_TASK (
taskname        IN   VARCHAR2);

パラメータ

表152-15 DROP_DIAGNOSIS_TASKプロシージャのパラメータ

パラメータ

説明

taskname

タスクの名前。

DROP_SQL_PATCHプロシージャ

このプロシージャは、データベースから名前付きSQLパッチを削除します。

構文

DBMS_SQLDIAG.DROP_SQL_PATCH (
name     IN  VARCHAR2,   ignore   IN  BOOLEAN := FALSE);

パラメータ

表152-16 DROP_SQL_PATCHファンクションのパラメータ

パラメータ

説明

name

削除するパッチの名前。大文字と小文字が区別されます。

ignore

オブジェクトが存在しないために起こるエラーは無視されます。

使用上の注意

DROP ANY SQL PATCH権限が必要です。

EXECUTE_DIAGNOSIS_TASKプロシージャ

このプロシージャは、診断タスクを実行します。

構文

DBMS_SQLDIAG.EXECUTE_DIAGNOSIS_TASK (
taskname        IN   VARCHAR2);

パラメータ

表152-17 EXECUTE_DIAGNOSIS_TASKプロシージャのパラメータ

パラメータ

説明

taskname

タスクの名前。

EXPLAIN_SQL_TESTCASEファンクション

このプロシージャは、SQLテスト・ケースについて記述します。

構文

DBMS_SQLDIAG.EXPLAIN_SQL_TESTCASE (
sqlTestCase        IN   CLOB)
RETURN CLOB;

パラメータ

表152-18 EXPLAIN_SQL_TESTCASEファンクションのパラメータ

パラメータ

説明

sqlTestCase

SQLテスト・ケースについて記述したXML文書。

EXPORT_SQL_TESTCASEプロシージャ

このプロシージャは、SQLテスト・ケースをディレクトリにエクスポートします。

構文

この変数は、SQL情報とともに指定する必要があります。

DBMS_SQLDIAG.EXPORT_SQL_TESTCASE (
directory                IN              VARCHAR2,
sql_text                 IN              CLOB,
user_name                IN              VARCHAR2  :=  NULL,
bind_list                IN              sql_binds :=  NULL,
exportEnvironment        IN              BOOLEAN   :=  TRUE,
exportMetadata           IN              BOOLEAN   :=  TRUE,
exportData               IN              BOOLEAN   :=  FALSE,
exportPkgbody            IN              BOOLEAN   :=  FALSE,
samplingPercent          IN              NUMBER    :=  100,
ctrlOptions              IN              VARCHAR2  :=  NULL,
timeLimit                IN              NUMBER    :=  0,
testcase_name            IN              VARCHAR2  :=  NULL,
testcase                 IN OUT NOCOPY   CLOB,
preserveSchemaMapping    IN              BOOLEAN   :=  FALSE,
version                  IN              VARCHAR2  :=  'COMPATIBLE');

この変数は、インシデント・ファイルからSQL情報を抽出します。

DBMS_SQLDIAG.EXPORT_SQL_TESTCASE (
directory                IN              VARCHAR2,
incident_id              IN              VARCHAR2,
exportEnvironment        IN              BOOLEAN   :=  TRUE,
exportMetadata           IN              BOOLEAN   :=  TRUE,
exportData               IN              BOOLEAN   :=  FALSE,
exportPkgbody            IN              BOOLEAN   :=  FALSE,
samplingPercent          IN              NUMBER    :=  100,
ctrlOptions              IN              VARCHAR2  :=  NULL,
timeLimit                IN              NUMBER    :=
DBMS_SQLDIAG.TIME_LIMIT_DEFAULT,
testcase_name            IN              VARCHAR2  :=  NULL,
testcase                 IN OUT NOCOPY   CLOB,
preserveSchemaMapping    IN              BOOLEAN   :=  FALSE);

この変数を使用すると、カーソル・キャッシュに存在するカーソルからSQLテスト・ケースを生成できます。SQL識別子およびSQLハッシュ値を取得するには、V$SQLを使用します。

DBMS_SQLDIAG.EXPORT_SQL_TESTCASE (
directory                IN              VARCHAR2,
sql_id                   IN              VARCHAR2,
plan_hash_value          IN              NUMBER    := NULL,
exportEnvironment        IN              BOOLEAN   :=  TRUE,
exportMetadata           IN              BOOLEAN   :=  TRUE,
exportData               IN              BOOLEAN   :=  TRUE,
exportPkgbody            IN              BOOLEAN   :=  FALSE,
samplingPercent          IN              NUMBER    :=  100,
ctrlOptions              IN              VARCHAR2  :=  NULL,
timeLimit                IN              NUMBER    :=
DBMS_SQLDIAG.TIME_LIMIT_DEFAULT,
testcase_name            IN              VARCHAR2  :=  NULL,
testcase                 IN OUT NOCOPY   CLOB,
preserveSchemaMapping    IN              BOOLEAN   :=  FALSE);

パラメータ

表152-19 EXPORT_SQL_TESTCASEプロシージャのパラメータ

パラメータ

説明

directory

生成された様々なファイルを保存するディレクトリ。

sql_text

エクスポートするSQL文のテキスト。

incident_id

違反SQLが含まれているインシデントID。

sql_id

カーソル・キャッシュ内の文の識別子。

username

SQLの解析に使用されるユーザー・スキーマの名前。デフォルトはSYSです。

bind_list

文に関連付けられているバインド値のリスト。

exportEnvironment

コンパイル環境をエクスポートする必要がある場合は、TRUEを指定します。

exportMetadata

SQLで参照されているオブジェクトの定義をエクスポートする必要がある場合は、TRUEを指定します。

exportData

SQLで参照されているオブジェクトのデータをエクスポートする必要がある場合は、TRUEを指定します。

exportPkgbody

SQLで参照されているパッケージの本体をエクスポートする場合は、TRUEを指定します。

samplingPercent

TRUEの場合は、ダンプ・ファイルの作成に使用するサンプリングのパーセントを指定します。

ctrlOptions

不透明な制御パラメータ。たとえば、3回実行するには、文字列'<parameter name="mexec_count">3</parameter>'でctrlOptionsを設定します。

- capture - BASIC(デフォルト)またはWITH_RUNTIME_INFOです。このパラメータでTCB取得のモードを定義します。
BASIC: Oracle Release 11gのTCBとして実行され、そのリリースで取得したすべての情報のほか、AWRレポート、SQL監視レポートおよびパラメータ情報が取得されます。

WITH_RUNTIME_INFO: BASICモード下で取得された情報とともに、動的サンプリング・データ、バインドのリスト、動的計画の情報など、SQLのランタイム情報がTCBで取得されます。

これは、IMPORT_SQL_TESTCASEプロシージャで使用された値と同じである必要があり、ユーザーが不適切なパラメータ値を指定した場合は、TCBがデフォルト・モードで実行され、エラーがスローされません。

- replay - EXPLAIN(デフォルト)、OUTLINE、EXECUTIONまたはOUTLINE EXECUTIONです。このパラメータでTCBリプレイ機能を定義します。
EXPLAIN: リプレイにより、アウトラインを使用せずに文を説明します。

OUTLINE: リプレイでアウトライン・モードを使用し、アウトラインを使用して文を説明します。

EXECUTION: リプレイにより、アウトラインを使用せずに文を実行します。

OUTLINE EXECUTION: リプレイにより、アウトラインを使用して文を実行します。

ユーザーが不適切なパラメータ値を指定した場合は、replayがデフォルト・モードで実行され、エラーがスローされないことに注意してください。

- name=mexec_count - 値はすべて正の数(N)です。このパラメータにより、TCBで文をN回実行し、各実行の終了時にランタイム情報を取得するように命令します。

- name=stat_history_since - 値は日付です。このパラメータを使用してオブジェクトの統計履歴がエクスポートされます。指定された日付から統計履歴がエクスポートされます。

timeLimit

SQLテスト・ケースのエクスポートにかける時間。

testcaseName

SQLテスト・ケースの名前(オプション)。この名前は、生成されたすべてのスクリプトの接頭辞に使用されます。

testcase

結果として得られるテスト・ケース。

preserveSchemaMapping

スキーマ(単数または複数)が元の環境からテスト環境に再マップされない場合は、TRUEを指定します。

version

抽出されるデータベース・オブジェクトのバージョン。このオプションは、EXPORTでのみ有効です。このバージョンと互換性のないデータベース・オブジェクトまたは属性は抽出されません。

- COMPATIBLE : (デフォルト)データベース互換性レベルおよび機能の互換性リリース・レベルに対応するメタデータのバージョン(V$COMPATIBILITYビューで表示されます)。データベース互換性は9.2以上に設定する必要があります。

- LATEST: 現在のデータベース・バージョンを指定するメタデータのバージョン。

- 特定のデータベース・バージョン。たとえば、'10.0.0'の場合、Oracle Databaseリリース10.0.0未満にはできません。

使用上の注意

- SQLテスト・ケースは、別のマシンでSQLの失敗を再現するために必要なファイルのセットを生成します。次のものが含まれます。

- スキーマ・オブジェクトおよび統計情報を含むダンプ・ファイル(.dmp)

- 文のEXPLAIN PLAN(拡張モード)

- 問題となる文で収集した診断情報

- オブジェクトを再ロードするために実行する重要なスクリプト

- ソースのシステム統計情報をリプレイするSQLスクリプト

- SQLテスト・ケースについて記述したコンテンツ・ファイルの表

- メタデータ(xxxxmain.xml)

- TCBの使用方法を説明するREADME.txtファイル

- 文(ol.xml)で使用されるアウトライン

- エクスポートするdb/env(prmimp.sql)内のパラメータ・セットのリスト

- SQL監視レポート(smrpt.html)(存在する場合)

- AWRレポート(awrrpt.html)(存在する場合)

- 当該の文で使用されるバインドのリスト(bndlst.xml)

- ユーザーSYSでテスト・ケース・ビルダー(TCB)を実行することはできません。かわりに、DBAロールを付与できる別のユーザーを使用してください。

- TCBのデフォルト設定では、データはエクスポートされません。ただし、最適ではない結果を診断するためなどにデータが必要な場合があります。データをエクスポートするには、exportData=>TRUEに設定してEXPORT_SQL_TESTCASEをコールします(importData=>FALSEでOFFに設定しないかぎり、データはデフォルトでインポートされます)。

- TCBはデフォルトでPL/SQLパッケージ仕様部を含みますが、PL/SQLパッケージ本体は含みません。しかし、PL/SQLファンクションを起動するため、またはパッケージでVirtual Private Database(VPD)機能が定義されているためパッケージ本体が必要になる場合もあります。PL/SQLパッケージ本体をエクスポートするには、exportPkgbody=>TRUEに設定して、EXPORT_SQL_TESTCASEをコールします。PL/SQLパッケージ本体をインポートするには、importPkgbody=>TRUEに設定して、IMPORT_SQL_TESTCASEプロシージャをコールします。

- オブジェクトの統計履歴をエクスポートするには、データベース互換性を12.0以上に設定する必要があります。

- このプロシージャでは、グローバル一時表(GTT)のデータおよび統計はエクスポートされません。

例

<parameters>親タグを使用するか、またはその親タグを使用しないでカプセル化されたctrlOptionsで、ユーザーは複数のパラメータを指定できます。

<parameters>タグを使用する場合

<parameters>
<parameter name="capture"> with_runtime_info
</parameter>
<parameter name="mexec_count"> 1
</parameter></parameters>

<parameters>タグを使用しない場合

<parameter name="capture"> with_runtime_info
</parameter>
<parameter name="mexec_count"> 1
</parameter>'

EXPORT_SQL_TESTCASE_DIR_BY_INCファンクション

このファンクションは、引数として渡されるインシデントIDに対応するSQLテスト・ケースを生成します。引数として渡されるディレクトリ内に、スクリプトおよびダンプ・ファイルのセットを作成します。

構文

DBMS_SQLDIAG.EXPORT_SQL_TESTCASE_DIR_BY_INC (
incident_id        IN   NUMBER,
directory          IN   VARCHAR2,
exportEnvironment  IN   VARCHAR2 := 'TRUE',
exportMetadata     IN   VARCHAR2 := 'TRUE',
exportData         IN   VARCHAR2 := 'FALSE',
samplingPercent    IN   VARCHAR2 := '100',
ctrlOptions        IN   VARCHAR2 := NULL)
RETURN BOOLEAN;

パラメータ

表152-20 EXPORT_SQL_TESTCASE_DIR_BY_INCファンクションのパラメータ

パラメータ

説明

incident_id

違反SQLが含まれているインシデントID。インシデントの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

directory

生成されたファイルのディレクトリ・パス

exportEnvironment

コンパイル環境をエクスポートする必要がある場合は、TRUEを指定します。

exportMetadata

SQLで参照されているオブジェクトの定義をエクスポートする必要がある場合は、TRUEを指定します。

exportData

SQLで参照されているオブジェクトのデータをエクスポートする必要がある場合は、TRUEを指定します。

samplingPercent

TRUEの場合は、ダンプ・ファイルの作成に使用するサンプリングのパーセントを指定します。

ctrlOptions

不透明な制御パラメータ。たとえば、3回実行するには、文字列'<parameter name="mexec_count">3</parameter>'でctrlOptionsを設定します。

- capture - BASIC(デフォルト)またはWITH_RUNTIME_INFOです。このパラメータでTCB取得のモードを定義します。
BASIC: Oracle Release 11gのTCBとして実行され、そのリリースで取得したすべての情報のほか、AWRレポート、SQL監視レポートおよびパラメータ情報が取得されます。

WITH_RUNTIME_INFO: BASICモード下で取得された情報とともに、動的サンプリング・データ、バインドのリスト、動的計画の情報など、SQLのランタイム情報がTCBで取得されます。

ユーザーが不適切なパラメータ値を指定した場合は、TCBがデフォルト・モードで実行され、エラーがスローされないことに注意してください。

- replay - EXPLAIN(デフォルト)、OUTLINE、EXECUTIONまたはOUTLINE EXECUTIONです。このパラメータでTCBリプレイ機能を定義します。
EXPLAIN: リプレイにより、アウトラインを使用せずに文を説明します。

OUTLINE: リプレイでアウトライン・モードを使用し、アウトラインを使用して文を説明します。

EXECUTION: リプレイにより、アウトラインを使用せずに文を実行します。

OUTLINE EXECUTION: リプレイにより、アウトラインを使用して文を実行します。

ユーザーが不適切なパラメータ値を指定した場合は、replayがデフォルト・モードで実行され、エラーがスローされないことに注意してください。

- name=mexec_count - 値はすべて正の数(N)です。このパラメータにより、TCBで文をN回実行し、各実行の終了時にランタイム情報を取得するように命令します。

- name=stat_history_since - 値は日付です。このパラメータを使用してオブジェクトの統計履歴がエクスポートされます。指定された日付から統計履歴がエクスポートされます。

EXPORT_SQL_TESTCASE_DIR_BY_TXTファンクション

このファンクションは、引数として渡されるSQLに対応するSQLテスト・ケースを生成します。引数として渡されるディレクトリ内に、スクリプトおよびダンプ・ファイルのセットを作成します。

構文

DBMS_SQLDIAG.EXPORT_SQL_TESTCASE_DIR_BY_TXT (
incident_id        IN   NUMBER,
directory          IN   VARCHAR2,
sql_text           IN   CLOB,
user_name          IN   VARCHAR2 := 'SYS',
exportEnvironment  IN   VARCHAR2 := 'TRUE',
exportMetadata     IN   VARCHAR2 := 'TRUE',
exportData         IN   VARCHAR2 := 'FALSE',
samplingPercent    IN   VARCHAR2 := '100',
ctrlOptions        IN   VARCHAR2 := NULL)
RETURN BOOLEAN;

パラメータ

表152-21 EXPORT_SQL_TESTCASE_DIR_BY_TXTファンクションのパラメータ

パラメータ

説明

incident_id

違反SQLが含まれているインシデントID。

directory

生成された様々なファイルを保存するディレクトリ。

sql_text

記述するSQL文のテキスト。

username

SQLの解析に使用されるユーザー・スキーマの名前。デフォルトはSYSです。

exportEnvironment

コンパイル環境をエクスポートする必要がある場合は、TRUEを指定します。

exportMetadata

SQLで参照されているオブジェクトの定義をエクスポートする必要がある場合は、TRUEを指定します。

exportData

SQLで参照されているオブジェクトのデータをエクスポートする必要がある場合は、TRUEを指定します。

samplingPercent

TRUEの場合は、ダンプ・ファイルの作成に使用するサンプリングのパーセントを指定します。

ctrlOptions

不透明な制御パラメータ。たとえば、3回実行するには、文字列'<parameter name="mexec_count">3</parameter>'でctrlOptionsを設定します。

- capture - BASIC(デフォルト)またはWITH_RUNTIME_INFOです。このパラメータでTCB取得のモードを定義します。
BASIC: Oracle Release 11gのTCBとして実行され、そのリリースで取得したすべての情報のほか、AWRレポート、SQL監視レポートおよびパラメータ情報が取得されます。

WITH_RUNTIME_INFO: BASICモード下で取得された情報とともに、動的サンプリング・データ、バインドのリスト、動的計画の情報など、SQLのランタイム情報がTCBで取得されます。

ユーザーが不適切なパラメータ値を指定した場合は、TCBがデフォルト・モードで実行され、エラーがスローされないことに注意してください。

- replay - EXPLAIN(デフォルト)、OUTLINE、EXECUTIONまたはOUTLINE EXECUTIONです。このパラメータでTCBリプレイ機能を定義します。
EXPLAIN: リプレイにより、アウトラインを使用せずに文を説明します。

OUTLINE: リプレイでアウトライン・モードを使用し、アウトラインを使用して文を説明します。

EXECUTION: リプレイにより、アウトラインを使用せずに文を実行します。

OUTLINE EXECUTION: リプレイにより、アウトラインを使用して文を実行します。

ユーザーが不適切なパラメータ値を指定した場合は、replayがデフォルト・モードで実行され、エラーがスローされないことに注意してください。

- name=mexec_count - 値はすべて正の数(N)です。このパラメータにより、TCBで文をN回実行し、各実行の終了時にランタイム情報を取得するように命令します。

- name=stat_history_since - 値は日付です。このパラメータを使用してオブジェクトの統計履歴がエクスポートされます。指定された日付から統計履歴がエクスポートされます。

GET_FIX_CONTROLファンクション

このファンクションは、指定したバグ番号に対する固定制御の値を戻します。

構文

DBMS_SQLDIAG.GET_FIX_CONTROL (
bug_number   IN    NUMBER)
RETURN NUMBER;

パラメータ

表152-22 GET_FIX_CONTROLファンクションのパラメータ

パラメータ

説明

bug_number

バグ番号。

GET_SQLファンクション

このファンクションは、指定したインシデントIDに関連付けられているトレース・ファイルからsql_setrowをロードします。

構文

DBMS_SQLDIAG.GET_SQL (
incident_id  IN     VARCHAR2)
RETURN SQLSET_ROW;

パラメータ

表152-23 GET_SQLファンクションのパラメータ

パラメータ

説明

incident_id

インシデントの識別子。

IMPORT_SQL_TESTCASEプロシージャ

このプロシージャは、SQLテスト・ケースをスキーマにインポートします。

構文

この変数には、ソース・ディレクトリとSQLテスト・ケース・メタデータ・オブジェクト(XML形式)が必要です。

DBMS_SQLDIAG.IMPORT_SQL_TESTCASE (
directory                IN   VARCHAR2,
sqlTestCase              IN   CLOB,
importEnvironment        IN   BOOLEAN   :=  TRUE,
importMetadata           IN   BOOLEAN   :=  TRUE,
importData               IN   BOOLEAN   :=  TRUE,
importPkgbody            IN   BOOLEAN   :=  FALSE,
importDiagnosis          IN   BOOLEAN   :=  TRUE,
ignoreStorage            IN   BOOLEAN   :=  TRUE,
ctrlOptions              IN   VARCHAR2  :=  NULL,
preserveSchemaMapping    IN   BOOLEAN   :=  FALSE);

この変数には、SQLテスト・ケース・メタデータ・ファイルのソース・ディレクトリ名が必要です。

DBMS_SQLDIAG.IMPORT_SQL_TESTCASE (
directory                IN   VARCHAR2,
filename                 IN   VARCHAR2,
importEnvironment        IN   BOOLEAN   :=  TRUE,
importMetadata           IN   BOOLEAN   :=  TRUE,
importData               IN   BOOLEAN   :=  TRUE,
importPkgbody            IN   BOOLEAN   :=  FALSE,
importDiagnosis          IN   BOOLEAN   :=  TRUE,
ignoreStorage            IN   BOOLEAN   :=  TRUE,
ctrlOptions              IN   VARCHAR2  :=  NULL,
preserveSchemaMapping    IN   BOOLEAN   :=  FALSE);

パラメータ

表152-24 IMPORT_SQL_TESTCASEプロシージャのパラメータ

パラメータ

説明

directory

テスト・ケース・ファイルがあるディレクトリ。

filename

SQLテスト・ケースについて記述したXML文書を含むファイルの名前。

importEnvironment

コンパイル環境をインポートする必要がある場合は、TRUEを指定します。

importMetadata

SQLで参照されているオブジェクトの定義をインポートする必要がある場合は、TRUEを指定します。

importData

SQLで参照されているオブジェクトのデータをインポートする必要がある場合は、TRUEを指定します。

importPkgbody

SQLで参照されているパッケージの本体をインポートする場合は、TRUEを指定します。

importDiagnosis

タスクに関連付けられた診断情報をインポートする必要がある場合は、TRUEを指定します。

ignoreStorage

記憶域の属性を無視する必要がある場合は、TRUEを指定します。

ctrlOptions

不透明な制御パラメータであり、このcaptureのみが当該のサブプログラムに有効です。

- capture - BASIC(デフォルト)またはWITH_RUNTIME_INFOです。このパラメータでTCB取得のモードを定義します。
BASIC: Oracle Release 11gのTCBとして実行され、そのリリースで取得したすべての情報のほか、AWRレポート、SQL監視レポートおよびパラメータ情報が取得されます。

WITH_RUNTIME_INFO: BASICモード下で取得された情報とともに、動的サンプリング・データ、バインドのリスト、動的計画の情報など、SQLのランタイム情報がTCBで取得されます。

ユーザーが不適切なパラメータ値を指定した場合は、TCBがデフォルト・モードで実行され、エラーがスローされないことに注意してください。

preserveSchemaMapping

スキーマ(単数または複数)が元の環境からテスト環境に再マップされない場合は、TRUEを指定します(対象のデータベースでマップされているスキーマはソース・データベースと同一です)。preservesSchemaMappingがTRUEに設定された状態でインポートが実行されたときに、スキーマ内にオブジェクトが存在する場合は、そのインポートで既存のオブジェクトが上書きされることに注意してください。

使用上の注意

- SQLテスト・ケースは、別のマシンでSQLの失敗を再現するために必要なファイルのセットを生成します。次のものが含まれます。

- スキーマ・オブジェクトおよび統計情報を含むダンプ・ファイル(.dmp)

- 文のEXPLAIN PLAN(拡張モード)

- 問題となる文で収集した診断情報

- オブジェクトを再ロードするために実行する重要なスクリプト

- ソースのシステム統計情報をリプレイするSQLスクリプト

- SQLテスト・ケースについて記述したコンテンツ・ファイルの表

- メタデータ(xxxxmain.xml)

- TCBの使用方法を説明するREADME.txtファイル

- 文(ol.xml)で使用されるアウトライン

- エクスポートするdb/env(prmimp.sql)内のパラメータ・セットのリスト

- SQL監視レポート(smrpt.html)(存在する場合)

- AWRレポート(awrrpt.html)(存在する場合)

- 当該の文で使用されるバインドのリスト(bndlst.xml)

- ユーザーSYSでテスト・ケース・ビルダー(TCB)を実行することはできません。かわりに、SYSDBA権限を付与できる別のユーザーを使用してください。

- TCBのデフォルト設定では、データはエクスポートされません。ただし、最適ではない結果を診断するためなどにデータが必要な場合があります。データをエクスポートするには、exportData=>TRUEに設定してEXPORT_SQL_TESTCASEプロシージャをコールします(importData=>FALSEでOFFに設定しないかぎり、データはデフォルトでインポートされます)。

- TCBはデフォルトでPL/SQLパッケージ仕様部を含みますが、PL/SQLパッケージ本体は含みません。しかし、PL/SQLファンクションを起動するため、またはパッケージでVirtual Private Database(VPD)機能が定義されているためパッケージ本体が必要になる場合もあります。PL/SQLパッケージ本体をエクスポートするには、exportPkgbody=>TRUEに設定して、EXPORT_SQL_TESTCASEプロシージャをコールします。PL/SQLパッケージ本体をインポートするには、importPkgbody=>TRUEに設定して、IMPORT_SQL_TESTCASEプロシージャをコールします。

- EXPORT_SQL_TESTCASEプロシージャの起動時に使用されるcapture値は、このプロシージャをコールする際に使用する必要があります。

INCIDENTID_2_SQLプロシージャ

このプロシージャは、インシデントIDのsql_setrowを初期化します。

構文

DBMS_SQLDIAG.INCIDENTID_2_SQL (
incident_id   IN     VARCHAR2,
sql_stmt      OUT    SQLSET_ROW,
problem_type  OUT    NUMBER,
err_code      OUT    BINARY_INTEGER,
err_mesg      OUT    VARCHAR2);

パラメータ

表152-25 INCIDENTID_2_SQLプロシージャのパラメータ

パラメータ

説明

incident_id

インシデントの識別子。

sql_stmt

結果として得られるSQL。

problem_type

SQL問題の暫定タイプ(現時点では、PROBLEM_TYPE_COMPILATION_ERRORおよびPROBLEM_TYPE_EXECUTION_ERROR)。

err_code

エラー・コード。存在しない場合はNULLに設定されます。

err_msg

エラー・メッセージ。存在しない場合はNULLに設定されます。

INTERRUPT_DIAGNOSIS_TASKプロシージャ

このプロシージャは、診断タスクを中断します。

構文

DBMS_SQLDIAG.INTERRUPT_DIAGNOSIS_TASK (
taskname        IN   VARCHAR2);

パラメータ

表152-26 INTERRUPT_DIAGNOSIS_TASKプロシージャのパラメータ

パラメータ

説明

taskname

タスクの名前。

LOAD_SQLSET_FROM_TCBファンクション

このファンクションは、テスト・ケース・ビルダー・ファイルからSQLSETをロードします。

構文

DBMS_SQLDIAG.LOAD_SQLSET_FROM_TCB (
directory        IN     VARCHAR2,
filename         IN     VARCHAR2,
sqlset_name      IN     VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表152-27 LOAD_SQLSET_FROM_TCBファンクションのパラメータ

パラメータ

説明

directory

ディレクトリの名前。

filename

ファイルの名前。

sqlset_name

SQLSETの名前

PACK_STGTAB_SQLPATCHプロシージャ

このプロシージャは、CREATE_STGTAB_SQLPATCHプロシージャをコールして作成されたステージング表にSQLパッチをパックします。

構文

DBMS_SQLDIAG.UPPACK_STGTAB_SQLPATCH (
patch_name            IN  VARCHAR2 := '%',
patch_category        IN  VARCHAR2 := 'DEFAULT',
staging_table_name    IN  VARCHAR2,
staging_schema_owner  IN  VARCHAR2 := NULL);

パラメータ

表152-28 UPPACK_STGTAB_SQLPATCHプロシージャのパラメータ

パラメータ

説明

patch_name

パックするパッチの名前(%ワイルドカードを使用可、大/小文字区別)。

patch_category

パックするパッチのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。

staging_table_name

(必須)使用する表の名前(大/小文字区別)。

staging_schema_owner

表が存在するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL。

使用上の注意

- ステージング表に対するADMINISTER SQL PLAN MANAGEMENT OBJECT権限およびINSERT権限が必要です。

- デフォルトでは、カテゴリDEFAULT内のすべてのSQLパッチを移動します。詳細は、「例」を参照してください。このサブプログラムは各SQLパッチをパックした後にCOMMITを発行するため、実行中にエラーが発生した場合、ステージング表にいくつかのパッチが残る可能性があります。

REPLAY_SQL_TESTCASEプロシージャ

このプロシージャは、SQLテスト・ケースの再生成を自動化します。

構文

DBMS_SQLDIAG.REPLAY_SQL_TESTCASE (
directory       IN  VARCHAR2,
filename        IN  VARCHAR2,
ctrlOptions     IN  VARCHAR2 := NULL,
format          IN   VARCHAR2  := 'TEXT');

DBMS_SQLDIAG.REPLAY_SQL_TESTCASE (
directory       IN   VARCHAR2,
sqlTestCase     IN   CLOB,
ctrlOptions     IN   VARCHAR2  := NULL,
format          IN   VARCHAR2  := 'TEXT');

パラメータ

表152-29 REPLAY_SQL_TESTCASEプロシージャのパラメータ

パラメータ

説明

directory

テスト・ケース・ファイルがあるディレクトリ。

filename

SQLテスト・ケースについて記述したXML文書を含むファイルの名前。

ctrlOptions

不透明な制御パラメータ。たとえば、3回実行するには、文字列'<parameter name="mexec_count">3</parameter>'でctrlOptionsを設定します。

- replay - EXPLAIN(デフォルト)、OUTLINE、EXECUTIONまたはOUTLINE EXECUTIONです。このパラメータでTCBリプレイ機能を定義します。
EXPLAIN: リプレイにより、アウトラインを使用せずに文を説明します。

OUTLINE: リプレイでアウトライン・モードを使用し、アウトラインを使用して文を説明します。

EXECUTION: リプレイにより、アウトラインを使用せずに文を実行します。

OUTLINE EXECUTION: リプレイにより、アウトラインを使用して文を実行します。

ユーザーが不適切なパラメータ値を指定した場合は、replayがデフォルト・モードで実行され、エラーがスローされないことに注意してください。

- name=mexec_count - 値はすべて正の数(N)です。このパラメータにより、TCBで文をN回実行し、各実行の終了時にランタイム情報を取得するように命令します。

sqlTestCase

SQLテスト・ケース。

format

リプレイ・レポートの形式。使用可能な形式は、TEXT、XMLおよびHTMLです。

例

TCB Replay Mode: Execute
SELECT /* tcbdynpl_1 */ /*+ gather_plan_statistics */ * FROM (SELECT * FROM emp where emp.sal > 100) emp, dept WHERE emp.deptno = dept.deptno And emp.sal > 1000 /* tcbdynpl_1 */

Explain Plan
Plan Hash Value  : 2219294842

-----------------------------------------------------------------
| Id  | Operation                       | Name           | Rows |
-----------------------------------------------------------------
|   0 | SELECT STATEMENT                |                |   13 |
| * 1 |   HASH JOIN                     |                |   13 |
|   2 |    NESTED LOOPS                 |                |      |
|   3 |     NESTED LOOPS                |                |   13 |
|   4 |      STATISTICS COLLECTOR       |                |      |
|   5 |       TABLE ACCESS FULL         | DEPT           |    4 |
| * 6 |      INDEX RANGE SCAN           | EMP_IDX_DEPTNO |      |
| * 7 |     TABLE ACCESS BY INDEX ROWID | EMP            |    3 |
| * 8 |    TABLE ACCESS FULL            | EMP            |   13 |
-----------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")
* 6 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")
* 7 - filter("EMP"."SAL">1000)
* 8 - filter("EMP"."SAL">1000)

Runtime Plan
Plan Hash Value  : 2219294842

-------------------------------------------------------
| Id  | Operation            | Name | E-Card | A-Card |
-------------------------------------------------------
|   0 | SELECT STATEMENT     |      |        |      0 |
| * 1 |   HASH JOIN          |      |     13 |      0 |
|   2 |    TABLE ACCESS FULL | DEPT |      4 |      0 |
| * 3 |    TABLE ACCESS FULL | EMP  |     13 |      0 |
-------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")
* 3 - filter("EMP"."SAL">1000)

REPLAY Note:
-----------
- Replay used dynamic sampling
- Replay forced Dynamic plan

REPORT_DIAGNOSIS_TASKファンクション

このファンクションは、診断タスクをレポートします。これは、必要なレポートが含まれているCLOBを戻します。

構文

DBMS_SQLDIAG.REPORT_DIAGNOSIS_TASK (
taskname           IN   VARCHAR2,
type               IN   VARCHAR2  := TYPE_TEXT,
level              IN   VARCHAR2  := LEVEL_TYPICAL,
section            IN   VARCHAR2  := SECTION_ALL,
object_id          IN   NUMBER    := NULL,
result_limit       IN   NUMBER    := NULL,
owner_name         IN   VARCHAR2  := NULL)
RETURN CLOB;

パラメータ

表152-30 REPORT_DIAGNOSIS_TASKファンクションのパラメータ

パラメータ

説明

taskname

レポートするタスクの名前。

type

レポートのタイプ。設定可能な値は、TEXT、HTMLおよびXMLです(表152-4「DBMS_SQLDIAGの定数: レポート・タイプ(設定可能な値)の定数」を参照)。

level

リコメンデーションの形式。設定可能な値は、TYPICAL、BASICおよびALLです(表152-5「DBMS_SQLDIAGの定数 - レポート・レベル(設定可能な値)の定数」を参照)。

section

レポート内の特定のセクション。設定可能な値は、SUMMARY、FINDINGS、PLAN、INFORMATION、ERRORおよびALLです(表152-6「DBMS_SQLDIAGの定数: レポート・セクション(設定可能な値)の定数」を参照)。

object_id

SQLチューニング・セット(STS)の特定の文を表すアドバイザ・フレームワーク・オブジェクトの識別子。

result_limit

レポート生成の対象となる、STS内の文の数。

owner_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に関するレポートが生成されます。

RESET_DIAGNOSIS_TASKプロシージャ

このプロシージャは、診断タスクをリセットします。

構文

DBMS_SQLDIAG.RESET_DIAGNOSIS_TASK (
taskname        IN   VARCHAR2);

パラメータ

表152-31 RESET_DIAGNOSIS_TASKプロシージャのパラメータ

パラメータ

説明

taskname

タスクの名前。

RESUME_DIAGNOSIS_TASKプロシージャ

このプロシージャは、診断パスを再開します。

構文

DBMS_SQLDIAG.RESUME_DIAGNOSIS_TASK (
taskname        IN   VARCHAR2);

パラメータ

表152-32 RESUME_DIAGNOSIS_TASKプロシージャのパラメータ

パラメータ

説明

taskname

タスクの名前。

SET_DIAGNOSIS_TASK_PARAMETERプロシージャ

このプロシージャは、VARCHAR2タイプのSQL診断パラメータの値を更新するためにコールします。このプロシージャをコールする前に、タスクを初期状態に設定する必要があります。このプロシージャによって設定可能な診断パラメータは、次のとおりです。

- MODE: 診断スコープ(制限付き/包括的)。

- _SQLDIAG_FINDING_MODE: レポート内の検索結果(設定可能な値については、「DBMS_SQLDIAGの定数: 検索結果のフィルタの定数」を参照)。

構文

DBMS_SQLDIAG.SET_DIAGNOSIS_TASK_PARAMETER (
taskname           IN   VARCHAR2,
parameter          IN   VARCHAR2,    value              IN   NUMBER);

パラメータ

表152-33 SET_DIAGNOSIS_TASK_PARAMETERプロシージャのパラメータ

パラメータ

説明

taskname

実行するタスクの識別子。

parameter

設定するパラメータの名前。

value

指定したパラメータの新しい値。

UNPACK_STGTAB_SQLPATCHプロシージャ

このプロシージャは、PACK_STGTAB_SQLPATCHプロシージャをコールして移入されたステージング表からアンパックします。これは、ステージング表に保存されているパッチ・データを使用して、システム上にパッチを作成します。パッチがすでに存在する場合、ユーザーは既存のパッチをパッチ・データに置き換えることも選択できます。この場合、同じ文を参照するパッチについては、名前が同じ場合にのみ置き換えることができます(「ACCEPT_SQL_PATCHファンクションおよびプロシージャ」を参照)。

構文

DBMS_SQLDIAG.UPPACK_STGTAB_SQLPATCH (
patch_name            IN  VARCHAR2 := '%',
patch_category        IN  VARCHAR2 := '%',
replace               IN  BOOLEAN,
staging_table_name    IN  VARCHAR2,
staging_schema_owner  IN  VARCHAR2 := NULL);

パラメータ

表152-34 UPPACK_STGTAB_SQLPATCHプロシージャのパラメータ

パラメータ

説明

patch_name

アンパックするパッチの名前(%ワイルドカードを使用可、大/小文字区別)。

patch_category

アンパックするパッチのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。

replace

すでに存在するパッチを置換します。ステージング表のパッチの名前と、別のSQLのアクティブなパッチの名前が同じ場合、パッチは置換できません。すでに存在するパッチを作成しようとすると、エラーが発生します。

staging_table_name

(必須)使用する表の名前(大/小文字区別)。

staging_schema_owner

表が存在するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL。

使用上の注意

- ステージング表に対するADMINISTER SQL MANAGEMENT OBJECT権限およびSELECTまたはREAD権限が必要です。

- デフォルトでは、ステージング表内のすべてのSQLパッチが移動されます。このファンクションは、各パッチを正常にロードした後でコミットします。個々のパッチの作成に失敗すると、エラーが発生し、ステージング表に残っているパッチには進みません。

153 DBMS_SQLPA

DBMS_SQLPAパッケージは、SQLパフォーマンス・アナライザを実装するためのインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_SQLPAの使用方法

- 概要

- セキュリティ・モデル

- DBMS_SQLPAサブプログラムの要約

DBMS_SQLPAの使用方法

- 概要

- セキュリティ・モデル

概要

DBMS_SQLPAパッケージは、システム環境の変更がSQLワークロードのパフォーマンスに与える影響をユーザーが予測する場合に役立つ機能を提供します。このインタフェースを使用すると、2つの異なるバージョンのワークロード・パフォーマンスを作成してから比較し、それらの2つのバージョンの違いを分析して、変更によって影響を受ける可能性があるSQL文を明らかにできます。

このパッケージは、SQLパフォーマンス・アナライザを実装するためのタスク指向のインタフェースを提供します。次に例を示します。

1. CREATE_ANALYSIS_TASKファンクションを使用して、1つの文またはSQL文の集合に対する分析タスクを作成します。

2. EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャを使用して、作成した分析タスクを実行します。

3. REPORT_ANALYSIS_TASKファンクションを使用して、分析タスクの結果を表示します。

セキュリティ・モデル

このパッケージは、PUBLICで使用可能で、独自のセキュリティ・チェックが実行されます。すべての分析タスク・インタフェース(XXX_ANALYSIS_TASK)にはADVISOR権限が必要です。

DBMS_SQLPAサブプログラムの要約

表153-1 DBMS_SQLPAパッケージのサブプログラム

サブプログラム

説明

CANCEL_ANALYSIS_TASKプロシージャ

1つ以上のSQL文に対して現在実行中の分析タスクを取り消します。

CREATE_ANALYSIS_TASKファンクション

1つ以上のSQL文を処理および分析するアドバイザ・タスクを作成します。

DROP_ANALYSIS_TASKプロシージャ

SQL分析タスクを削除します。

EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャ

以前に作成した分析タスクを実行します。

INTERRUPT_ANALYSIS_TASKプロシージャ

現在実行中の分析タスクを中断します。

REPORT_ANALYSIS_TASKファンクション

分析タスクの結果を表示します。

RESET_ANALYSIS_TASKプロシージャ

現在実行中の分析タスクを初期状態にリセットします。

RESUME_ANALYSIS_TASKプロシージャ

SQLチューニング・セットを処理するために作成され、以前に中断された分析タスクを再開します。

SET_ANALYSIS_TASK_PARAMETERプロシージャ

SQL分析タスク・パラメータの値を設定します。

SET_ANALYSIS_DEFAULT_PARAMETERプロシージャ

SQL分析タスク・パラメータのデフォルト値を設定します。

CANCEL_ANALYSIS_TASKプロシージャ

このプロシージャは、現在実行中の分析タスクを取り消します。タスクから、すべての中間結果データが削除されます。

構文

DBMS_SQLPA.CANCEL_ANALYSIS_TASK(
task_name         IN VARCHAR2);

パラメータ

表153-2 CANCEL_ANALYSIS_TASKプロシージャのパラメータ

パラメータ

説明

task_name

取り消すタスクの名前。

例

タスクの実行を停止する必要があり、実行済結果の確認が不要な場合のタスクの取消し

EXEC DBMS_SQLPA.CANCEL_ANALYSIS_TASK(:my_task);

CREATE_ANALYSIS_TASKファンクション

このファンクションは、1つ以上のSQL文を処理および分析するアドバイザ・タスクを作成します。このファンクションを様々な形式で使用して次の操作ができます。

- テキストを指定して、単一の文に対する分析タスクを作成する。

- 識別子を指定して、カーソル・キャッシュ内の単一の文に対する分析タスクを作成する。

- スナップショット識別子の範囲を指定して、ワークロード・リポジトリ内の単一文に対する分析タスクを作成する。

- SQLチューニング・セットに対する分析タスクを作成する。

すべての場合において、このファンクションは、アドバイザ・タスクの作成とそのパラメータの設定を行います。

構文

SQLテキスト形式。この形式のファンクションは、テキストを指定して、単一の文の診断を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
sql_text         IN CLOB,
bind_list        IN sql_binds := NULL,
parsing_schema   IN VARCHAR2  := NULL,
task_name        IN VARCHAR2  := NULL,
description      IN VARCHAR2  := NULL)
RETURN VARCHAR2;

SQL ID形式。この形式のファンクションは、識別子を指定して、カーソル・キャッシュ内の単一の文に対する分析を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
sql_id           IN VARCHAR2,
plan_hash_value  IN NUMBER    := NULL,
task_name        IN VARCHAR2  := NULL,
description      IN VARCHAR2  := NULL)
RETURN VARCHAR2;

ワークロード・リポジトリ形式。この形式のファンクションは、スナップショット識別子の範囲を指定して、ワークロード・リポジトリ内の単一の文に対する分析を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
begin_snap       IN NUMBER,
end_snap         IN NUMBER,
sql_id           IN VARCHAR2,
plan_hash_value  IN NUMBER    := NULL,
task_name        IN VARCHAR2  := NULL,
description      IN VARCHAR2  := NULL)
RETURN VARCHAR2;

SQLSET形式。この形式のファンクションは、SQLチューニング・セットの診断を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
sqlset_name       IN VARCHAR2,
basic_filter      IN VARCHAR2 :=  NULL,
order_by          IN VARCHAR2 :=  NULL,
top_sql           IN VARCHAR2 :=  NULL,
task_name         IN VARCHAR2 :=  NULL,
description       IN VARCHAR2 :=  NULL
sqlset_owner      IN VARCHAR2 :=  NULL)
RETURN VARCHAR2;

パラメータ

表153-3 CREATE_ANALYSIS_TASKファンクションのパラメータ

パラメータ

説明

sql_text

SQL文のテキスト。

bind_list

バインド値のセット。

parsing_schema

文をコンパイルできるスキーマの名前。

task_name

分析タスク名(オプション)。

description

SQL分析タスクの説明(最大256文字)。

sql_id

SQL文の識別子。

plan_hash_value

SQL実行計画のハッシュ値。

begin_snap

スナップショット識別子を開始します。

end_snap

スナップショット識別子を終了します。

sqlset_name

SQLチューニング・セットの名前。

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。

order_by

選択したSQLのorder-by句。

top_sql

フィルタ処理およびランク付け後のTop N SQL。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL。

戻り値

ユーザーごとに一意のSQL分析タスク名(2人の異なるユーザーが自分のアドバイザ・タスクに同じ名前を付けることはできます)。

例

variable stmt_task VARCHAR2(64);
variable sts_task  VARCHAR2(64);

-- Sql text format
EXEC :stmt_task := DBMS_SQLPA.CREATE_ANALYSIS_TASK(
sql_text => 'select quantity_sold from sales s, times t where s.time_id = t.time_id and s.time_id = TO_DATE(''24-NOV-00'')');

-- Sql id format (cursor cache)
EXEC :stmt_task := DBMS_SQLPA.CREATE_ANALYSIS_TASK(
sql_id       => 'ay1m3ssvtrh24');

-- Workload repository format
exec :stmt_task := DBMS_SQLPA.CREATE_ANALYSIS_TASK(
begin_snap  => 1,
end_snap    => 2,
sql_id      => 'ay1m3ssvtrh24');

-- Sql tuning set format (first we need to load an STS, then analyze it)
EXEC :sts_task := DBMS_SQLPA.CREATE_ANALYSIS_TASK( -
sqlset_name    =>   'my_workload', -
order_by       =>   'BUFFER_GETS', -
description    =>   'process workload ordered by buffer gets');

DROP_ANALYSIS_TASKプロシージャ

このプロシージャは、SQL分析タスクを削除します。タスクとそのすべての結果データが削除されます。

構文

DBMS_SQLPA.DROP_ANALYSIS_TASK(
task_name         IN VARCHAR2);

パラメータ

表153-4 DROP_ANALYSIS_TASKプロシージャのパラメータ

パラメータ

説明

task_name

削除する分析タスクの名前。

EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャ

このファンクションおよびプロシージャは、以前に作成した分析タスクを実行します。ファンクション・バージョンは、新しい実行名を戻します。

構文

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
task_name         IN VARCHAR2,
execution_type    IN VARCHAR2               := 'test execute',
execution_name    IN VARCHAR2               := NULL,
execution_params  IN dbms_advisor.argList   := NULL,
execution_desc    IN VARCHAR2               := NULL)
RETURN VARCHAR2;

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
task_name         IN VARCHAR2,
execution_type    IN VARCHAR2               := 'test execute',
execution_name    IN VARCHAR2               := NULL,
execution_params  IN dbms_advisor.argList   := NULL,
execution_desc    IN VARCHAR2               := NULL);

パラメータ

表153-5 EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャのパラメータ

パラメータ

説明

task_name

実行するタスクの識別子。

execution_type

ファンクションで実行するアクションのタイプ。NULLの場合、デフォルト値はDEFAULT_EXECUTION_TYPEパラメータの値に設定されます。有効な値は、次のとおりです。

- [TEST] EXECUTE: すべてのSQL文をテスト実行し、実行計画および実行の統計情報を収集します。生成される計画および統計情報は、アドバイザ・フレームワークに格納されます。これがデフォルトです。

- EXPLAIN PLAN: SQLワークロード内のすべての文に対してEXPLAIN PLANを生成します。これは、EXPLAIN PLANコマンドに類似しています。生成される計画は、タスクに関連付けられているアドバイザ・フレームワークに格納されます。

- COMPARE [PERFORMANCE]: 2つのバージョンのSQLパフォーマンス・データを分析および比較します。パフォーマンス・データを生成するには、SQL文のテスト実行またはそのEXPLAIN PLANの生成を行います。このオプションは、2つの実行タイプEXPLAIN_PLANまたはTEST_EXECUTEが、タスクにすでに存在する場合に使用します。

- CONVERT SQLSET: SQLチューニング・セットに取得されている統計情報を読み取り、タスク実行のモデルとして使用します。試用に対する有効なデータがすでにSQLチューニング・セットに存在する場合は、このオプションを使用してSQL文の実行を省略できます。

execution_name

実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。

execution_params

指定した実行のパラメータ(名前、値)のリスト。実行パラメータは、指定した実行に対してのみ影響します。これらのパラメータは、(SET_ANALYSIS_DEFAULT_PARAMETERプロシージャを使用して設定された)タスクに格納されているパラメータの値より優先されます。

execution_desc

実行について説明する256文字の長さの文字列。

使用上の注意

SQLパフォーマンス・アナライザのタスクは、リセットせずに複数回実行できます。たとえば、SQLワークロードに対して変更の影響分析を実行するためにタスクが作成された場合は、システム環境を変更する前に、作成されたタスクを実行して、パフォーマンス分析の資料として使用されるワークロードのバージョンを構築する必要があります。変更が行われた後で、変更後バージョンのワークロードを構築するには、2回目の実行が必要になります。最後に、両方のバージョンのワークロードのパフォーマンスをアドバイザで分析および比較するために、タスクの3回目の実行が必要になります。

例

1. 変更の影響を分析する目的でのタスクの作成

EXEC :tname := DBMS_SQLPA.CREATE_ANALYSIS_TASK(
sqlset_name     => 'my_sts');

2. ベースラインの作成または変更前の実行

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
task_name       => :tname,
execution_type  => 'test execute',
execution_name  => 'before_change');

3. 変更の実行

...

4. 変更後バージョンのワークロード・パフォーマンスの作成

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
task_name          => :tname, -
execution_type     => 'test execute',
execution_name     => 'after_change')

5. 2つのバージョンのワークロードの比較

デフォルトでは、最後の2回の実行結果を常に比較します。SQLパフォーマンス・アナライザは、比較用のデフォルトのメトリックとしてelapsed_timeを使用します。ここでは、デフォルトのメトリックをbuffer_getsに変更しています。

EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(
:tname,'comparison_metric', 'buffer_gets');
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
task_name         => :tname, -
execution_type    => 'compare performance', -
execution_name    => 'after_change');

比較する2つの実行、および使用する比較メトリックを明示的に指定する場合は、次のコールを使用します。

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
task_name        => :tname, -
execution_type   => 'compare performance',
execution_params => dbms_advisor.arglist(
'execution_name1',
'before_change',
'execution_name2',
'after_change',
'comparison_metric',
'buffer_gets'));

INTERRUPT_ANALYSIS_TASKプロシージャ

このプロシージャは、現在実行中の分析タスクを中断します。タスクから、すべての中間結果データが削除されるわけではありません。

構文

DBMS_SQLPA.INTERRUPT_ANALYSIS_TASK(
task_name         IN VARCHAR2);

パラメータ

表153-6 INTERRUPT_ANALYSIS_TASKプロシージャのパラメータ

パラメータ

説明

task_name

中断する分析タスクの識別子。

例

EXEC DBMS_SQLPA.INTERRUPT_ANALYSIS_TASK(:my_task);

REPORT_ANALYSIS_TASKファンクション

このプロシージャは、分析タスクの結果を表示します。

構文

DBMS_SQLPA.REPORT_ANALYSIS_TASK(
task_name       IN   VARCHAR2,
type            IN   VARCHAR2   := 'TEXT',
level           IN   VARCHAR2   := 'TYPICAL',
section         IN   VARCHAR2   := 'SUMMARY',
object_id       IN   NUMBER     := NULL,
top_sql         IN   NUMBER     := 100,
execution_name  IN   VARCHAR2   := NULL,
task_owner      IN   VARCHAR2   := NULL,
order_by        IN   VARCHAR2   := NULL)
RETURN CLOB;

パラメータ

表153-7 REPORT_ANALYSIS_TASKファンクションのパラメータ

パラメータ

説明

task_name

レポートするタスクの名前。

type

作成するレポートのタイプ。設定可能な値は、TEXT(デフォルト)、HTML、XMLおよびACTIVEです(「使用上の注意」を参照)。

level

レポートの詳細なレベル。

- ALL: すべてのSQLの詳細。

- BASIC: 現時点ではTYPICALと同じ。

- CHANGED: パフォーマンスが変更されたSQLのみ。

- CHANGED_PLANS: 計画が変更されたSQLのみ。

- ERRORS: エラーが発生したSQLのみ。

- IMPROVED: 改善されたSQLのみ。

- REGRESSED: 回帰されたSQLのみ。

- TIMEOUT: 実行中にタイムアウトしたSQLのみ。

- TYPICAL(デフォルト): 分析対象の各文に関する情報(変更やエラーなど)を表示します。

- UNCHANGED: パフォーマンスが変更されていないSQLのみ。

- UNCHANGED_PLANS: 計画が変更されていないSQLのみ。

- UNSUPPORTED: SPAによってサポートされないSQLのみ。

section

オプションで、レポートを単一のセクションに制限できます(すべてのセクションに関するレポートの場合は、ALLを指定します)。

- SUMMARY(デフォルト): ワークロードのサマリーのみ。

- ALL: SQLに関するサマリーおよび詳細。

object_id

チューニング・セット(STS)の特定のSQLを表すアドバイザ・フレームワーク・オブジェクトの識別子。

top_sql

レポート生成の対象となる、STS内のSQL文の数。

execution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に関するレポートが生成されます。

task_owner

関連する分析タスクの所有者。デフォルトは、現行のスキーマ所有者です。

order_by

レポート(要約および本文)でSQL文をソートする方法。有効な値は、次のとおりです。

- CHANGE_DIFF: 比較メトリックに基づいてSQLパフォーマンスの変更の差異によりSQL文をソート。

- NULL(デフォルト): ワークロードに対する影響によりSQL文を順序付け。

- SQL_IMPACT: SQLに対する変更の影響によりSQL文を順序付け。

- WORKLOAD_IMPACT: NULLと同じ。

- METRIC_DELTA: CHANGE_DIFFと同じ。

戻り値

必要なレポートが含まれているCLOB。

使用上の注意

ACTIVEレポートは、Enterprise Managerと類似した豊富な対話型ユーザー・インタフェースを備えていますが、EMのインストールは必要ありません。レポート・ファイルはHTML形式で作成されるため、最近のほとんどのブラウザで解釈可能です。アクティブ・レポートに機能を付与するコードは、最初に表示したときにWebブラウザにより透過的にダウンロードされるため、表示には外部接続が必要です。

例

-- Get the whole report for the single statement case.
SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(:stmt_task) from dual;

-- Show me the summary for the sts case.
SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(:sts_task, 'TEXT', 'TYPICAL', 'SUMMARY')
FROM DUAL;

-- Show me the findings for the statement I'm interested in.
SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(:sts_task, 'TEXT', 'TYPICAL', 'ALL', 5) from dual;

RESET_ANALYSIS_TASKプロシージャ

このプロシージャは、現在実行されていない分析タスクに対してコールされ、その分析タスクを再実行できるように準備します。すべての中間結果データは削除されます。

構文

DBMS_SQLPA.RESET_ANALYSIS_TASK(
task_name         IN VARCHAR2);

パラメータ

表153-8 RESET_ANALYSIS_TASKプロシージャのパラメータ

パラメータ

説明

task_name

リセットする分析タスクの識別子。

例

-- reset and re-execute a task
EXEC DBMS_SQLPA.RESET_ANALYSIS_TASK(:sts_task);

-- re-execute the task
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(:sts_task);

RESUME_ANALYSIS_TASKプロシージャ

このプロシージャは、以前に中断されたか、または(致命的なエラーによって)FAILEDになったタスクの実行を再開します。

構文

DBMS_SQLPA.RESUME_ANALYSIS_TASK(
task_name         IN VARCHAR2,
basic_filter      IN VARCHAR2 := NULL);

パラメータ

表153-9 RESUME_ANALYSIS_TASKプロシージャのパラメータ

パラメータ

説明

task_name

再開する分析タスクの識別子。

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。このフィルタは、CREATE_ANALYSIS_TASKファンクションのコール時に、指定された基本フィルタ(パラメータbasic_filter)と組み合されて適用されます。

使用上の注意

単一のSQL分析タスク(SQLチューニング・セットではなく、1つのSQL文を分析するために作成されたタスク)の再開はサポートされていません。

例

-- Interrupt the task
EXEC DBMS_SQLPA.INTERRUPT_ANALYSIS_TASK(:conc_task);

-- Once a task is interrupted, we can elect to reset it, resume it, or check
-- out its results and then decide.  For this example we will just resume.

EXEC DBMS_SQLPA.RESUME_ANALYSIS_TASK(:conc_task);

SET_ANALYSIS_TASK_PARAMETERプロシージャ

このプロシージャは、SQL分析タスク・パラメータの値を設定します。

構文

この形式のプロシージャは、VARCHAR2タイプのSQL分析パラメータの値を更新します。

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(
task_name         IN VARCHAR2,
parameter         IN VARCHAR2,
value             IN VARCHAR2);

この形式のプロシージャは、NUMBERタイプのSQL分析パラメータの値を更新します。

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(
task_name         IN VARCHAR2,
parameter         IN VARCHAR2,
value             IN NUMBER);

パラメータ

表153-10 SET_ANALYSIS_TASK_PARAMETERプロシージャのパラメータ

パラメータ

説明

task_name

実行するタスクの識別子。

parameter

設定するパラメータの名前。このプロシージャによって設定可能な分析パラメータは、次のとおりです。

- APPLY_CAPTURED_COMPILENV: SQL文で取得されたコンパイル環境をアドバイザで使用できるかどうかを示します。デフォルトは0(NO)です。

- BASIC_FILTER: SQLチューニング・セットの基本フィルタ。

- CELL_SIMULATION_ENABLED: 詳細は、ADMINディレクトリ内のヘルパー・スクリプトtcellsim.sqlを参照してください。

- COMPARISON_METRIC: パフォーマンスの比較で使用する実行統計の式を指定します(例: buffer_gets、cpu_time + buffer_gets * 10)。

- DATABASE_LINK: PUBLICデータベース・リンクのグローバル名に設定できます。設定した場合、SQLパフォーマンス・アナライザでは、SQL文をリモート・データベースに送信してリモートで処理することによって、すべてのTEST EXECUTEおよびEXPLAIN PLAN操作に対してデータベース・リンクが使用されます。この場合でも、分析結果はローカル・データベースに格納されます。

- DAYS_TO_EXPIRE: タスクが削除されるまでの日数。

- DEFAULT_EXECUTION_TYPE: EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャによって何も指定されていない場合、タスクの実行タイプはデフォルトでこのタイプに設定されます。

parameter(続き)

- DISABLE_MULTI_EXEC: SQL文を複数回実行した後ランタイム統計の平均を求めます。この機能を使用禁止にするには、このパラメータを'TRUE'に設定します。この場合、SQLチューニング・セットの各SQLは、1回のみ実行されます。

- EXECUTION_DAYS_TO_EXPIRE: (タスクが削除されることなく)タスクの実行が削除されるまでの日数。

- EXECUTE_FULLDML: 行のロックの取得および行の変更を含め、DML文を完全に実行するにはTRUE、データを変更せずにDMLの問合せ部分のみを実行するにはFALSE(デフォルト)。TRUEの場合、SQLパフォーマンス・アナライザは、DML実行の後でロールバックを発行して、DMLにより永続的な変更が行われないようにします。

- EXECUTION_NAME1: 分析する最初のタスク実行の名前。

- EXECUTION_NAME2: 分析する2番目のタスク実行の名前。

- LOCAL_TIME_LIMIT: 文単位のタイムアウト(秒)。

- METRIC_DELTA_THRESHOLD: 変更の前と後でのSQLパフォーマンス・メトリックの差異のしきい値。デフォルト値は0(ゼロ)です。

- PLAN_FILTER: SQLチューニング・セットの計画フィルタ(設定可能な値については、SELECT_SQLSETを参照してください)。

- PLAN_LINES_COMPARISON:
- ALWAYS --すべてのシナリオの計画を行ごとに比較します。- AUTO -phv2が使用可能ではなく、phv1が異なる場合にのみ、計画を行ごとに比較します。- NONE (デフォルト) - phvが不明の場合にのみ、計画を行ごとに比較します。

- RANK_MEASURE1: SQLチューニング・セットの最初のランキング・メジャー。

- RANK_MEASURE2: SQLチューニング・セットの2番目の設定可能なランキング・メジャー。

- RANK_MEASURE3: SQLチューニング・セットの3番目の設定可能なランキング・メジャー。

- RESUME_FILTER: SQLチューニング・セットのBASIC_FILTER以外の追加フィルタ。

- SQL_IMPACT_THRESHOLD: SQLに対する変更の影響のしきい値。前述のパラメータ同じ(ただし、SQL文レベル)。

- SQL_LIMIT: 処理するSQL文の最大数。

- SQL_PERCENTAGE: SQLチューニング・セットの文のパーセント・フィルタ。

- SQLSET_NAME: 指定したタスクまたはタスク実行に関連付けるSQLチューニング・セットの名前。このパラメータは主に、SPAを使用する2つのSQLチューニング・セットを比較するために使用します。

- SQLSET_OWNER: タスク・パラメータSQLSET_NAMEを使用して指定したSQLチューニング・セットの所有者。

- TIME_LIMIT: グローバル・タイムアウト(秒)。

parameter(続き)

- WORKLOAD_IMPACT_THRESHOLD: ワークロードに対するSQL文の影響のしきい値。ワークロードに対する変更の影響がこのしきい値の絶対値より低い文は無視され、改善および回帰は考慮されません。

- CON_DBID_MAPPING: マルチテナント・コンテナ・データベース(CDB) IDのマッピングを指定します。設定した場合、SQL Performance Analyzerは以前のCDB IDの一致を検出すると新しいCDB IDを使用し、そのコンテナ内でSQLを実行します。

value

指定したパラメータの新しい値。

SET_ANALYSIS_DEFAULT_PARAMETERプロシージャ

このプロシージャは、SQL分析タスク・パラメータのデフォルト値を設定します。

構文

この形式のプロシージャは、VARCHAR2タイプのアナライザ・パラメータのデフォルト値を更新します。

DBMS_SQLPA.SET_ANALYSIS_DEFAULT_PARAMETER(
parameter    IN  VARCHAR2,
value        IN  VARCHAR2);

この形式のプロシージャは、NUMBERタイプのアナライザ・パラメータのデフォルト値を更新します。

DBMS_SQLPA.SET_ANALYSIS_DEFAULT_PARAMETER(
parameter    IN  VARCHAR2,
value        IN  NUMBER);

パラメータ

表153-11 SET_ANALYSIS_DEFAULT_PARAMETERプロシージャのパラメータ

パラメータ

説明

parameter

設定するパラメータの名前。このプロシージャによって設定可能な分析パラメータは、次のとおりです。

- APPLY_CAPTURED_COMPILENV: SQL文で取得されたコンパイル環境をアドバイザで使用できるかどうかを示します。デフォルトは0(NO)です。

- BASIC_FILTER: SQLチューニング・セットの基本フィルタ。

- COMPARISON_METRIC: パフォーマンスの比較で使用する実行統計の式を指定します(例: buffer_gets、cpu_time + buffer_gets * 10)。

- DATABASE_LINK: PUBLICデータベース・リンクのグローバル名に設定できます。設定した場合、SQLパフォーマンス・アナライザでは、SQL文をリモート・データベースに送信してリモートで処理することによって、すべてのTEST EXECUTEおよびEXPLAIN PLAN操作に対してデータベース・リンクが使用されます。この場合でも、分析結果はローカル・データベースに格納されます。

- DAYS_TO_EXPIRE: タスクが削除されるまでの日数。

- DEFAULT_EXECUTION_TYPE: EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャによって何も指定されていない場合、タスクの実行タイプはデフォルトでこのタイプに設定されます。

- EXECUTE_FULLDML: 行のロックの取得および行の変更を含め、DML文を完全に実行するにはTRUE、データを変更せずにDMLの問合せ部分のみを実行するにはFALSE(デフォルト)。TRUEの場合、SQLパフォーマンス・アナライザは、DML実行の後でロールバックを発行して、DMLにより永続的な変更が行われないようにします。

- EXECUTION_DAYS_TO_EXPIRE: (タスクが削除されることなく)タスクの実行が削除されるまでの日数。

- EXECUTION_NAME1: 分析する最初のタスク実行の名前。

- EXECUTION_NAME2: 分析する2番目のタスク実行の名前。

- LOCAL_TIME_LIMIT: 文単位のタイムアウト(秒)。

parameter(続き)

- PLAN_FILTER: SQLチューニング・セットの計画フィルタ(設定可能な値については、SELECT_SQLSETを参照してください)。

- RANK_MEASURE1: SQLチューニング・セットの最初のランキング・メジャー。

- RANK_MEASURE2: SQLチューニング・セットの2番目の設定可能なランキング・メジャー。

- RANK_MEASURE3: SQLチューニング・セットの3番目の設定可能なランキング・メジャー。

- RESUME_FILTER: SQLチューニング・セットのBASIC_FILTER以外の追加フィルタ。

- SQL_IMPACT_THRESHOLD: SQLに対する変更の影響のしきい値。前述のパラメータ同じ(ただし、SQL文レベル)。

- SQL_LIMIT: 処理するSQL文の最大数。

- SQL_PERCENTAGE: SQLチューニング・セットの文のパーセント・フィルタ。

- TIME_LIMIT: グローバル・タイムアウト(秒)。

- WORKLOAD_IMPACT_THRESHOLD: ワークロードに対するSQL文の影響のしきい値。ワークロードに対する変更の影響がこのしきい値の絶対値より低い文は無視され、改善および回帰は考慮されません。

value

指定したパラメータの新しい値。

154 DBMS_SQLTUNE

DBMS_SQLTUNEパッケージは、オンデマンドでSQLをチューニングするためのインタフェースです。関連パッケージのDBMS_AUTO_SQLTUNEパッケージは、自動タスクとして実行されるSQLチューニング・アドバイザに対するインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_SQLTUNEの使用方法

- 概要

- セキュリティ・モデル

- データ構造

- サブプログラム・グループ

- SQLチューニング・アドバイザ・サブプログラム

- SQLプロファイル・サブプログラム

- SQLチューニング・セット・サブプログラム

- SQLパフォーマンス・レポート・サブプログラム

- DBMS_SQLTUNEサブプログラムの要約

DBMS_SQLTUNEの使用方法

- 概要

- セキュリティ・モデル

概要

DBMS_SQLTUNEパッケージは、相互に関連する次のいくつかの機能領域を提供します。

- SQLチューニング・アドバイザ・サブプログラム

- SQLプロファイル・サブプログラム

- SQLチューニング・セット・サブプログラム

SQLチューニング・アドバイザ

アドバイザ・スイートの1つであるSQLチューニング・アドバイザは、データベースのパフォーマンス問題を特定および解決する一連のエキスパート・システムです。具体的には、SQLチューニング・アドバイザによって、問題のあるSQL文のチューニングが自動化されます。SQLチューニング・アドバイザに1つ以上のSQL文を入力すると、その文のチューニング方法に関する的確なアドバイスを取得できます。アドバイザは、SQLをチューニングするためのSQLアクションの形でアドバイスを提供するとともに、予測されるパフォーマンス上のメリットも示します。

SQLチューニング・アドバイザ・サブプログラムのグループには、アドバイザへのアクセスを可能にするタスク指向のインタフェースが用意されています。次に示すサブプログラムを、次の順序でコールすると、SQLチューニング・アドバイザの機能の一部を使用できます。

1. CREATE_TUNING_TASKファンクションは、1つ以上のSQL文をチューニングするためのチューニング・タスクを作成します。

2. EXECUTE_TUNING_TASKファンクションおよびプロシージャは、以前作成したチューニング・タスクを実行します。

3. REPORT_TUNING_TASKファンクションを使用して、チューニング・タスクの結果を表示します。

4. SCRIPT_TUNING_TASKファンクションを使用して、SQL*PLUSスクリプトを作成します。その後、このスクリプトを実行すると、アドバイザによる一連のリコメンデーションを実装できます。

SQLプロファイル・サブプログラム

SQLチューニング・アドバイザによって、文のパフォーマンスを向上させるSQLプロファイルの作成を推奨される場合があります。SQLプロファイルは、その文に固有な補助統計で構成されます。カーディナリティ、選択性およびコストは問合せオプティマイザによって推定されますが、これらの値が大幅にずれているために不適切な実行計画が生成される場合があります。SQLプロファイルは、サンプリングおよび部分的に実行する方法を使用して追加情報を収集し、これらの推定を調整することで、この問題に対処します。

SQLプロファイル・サブプログラムのグループでは、特定の単一SQL文を対象とするオプティマイザに統計情報を伝えるためのメカニズムが用意されており、可能なかぎり正確な統計情報を伝えることによって、オプティマイザでその文に対する優れた判断を行うことができるようにします。次に例を示します。

- ACCEPT_SQL_PROFILEプロシージャおよびファンクションを使用すると、SQLチューニング・アドバイザによって推奨されたSQLプロファイルを受け入れることができます。

- ALTER_SQL_PROFILEプロシージャを使用すると、既存のSQLプロファイルの属性(STATUS、NAME、DESCRIPTIONおよびCATEGORY)を変更できます。

- DROP_SQL_PROFILEプロシージャを使用すると、SQLプロファイルを削除できます。

SQLチューニング・セット

SQLチューニング・アドバイザには、1つまたは一連のSQL文を入力できます。複数の文を1つのアドバイザ・タスクでチューニングする場合は、SQLチューニング・セット(STS)の形式で入力します。SQLチューニング・セットは、SQL文およびその実行コンテキストをシステム提供のスキーマ内に格納するデータベース・オブジェクトです。SQLチューニング・セットでは、SQLのワークロードを処理するためのインフラストラクチャが用意されているため、大量のSQL文を簡単にチューニングできます。

SQLチューニング・セットでSQL文とともに格納されるものは、次のとおりです。

- 解析スキーマ名、バインド値などの実行コンテキスト。

- 平均経過時間、実行件数などの実行統計情報。

- 実行計画(SQL文を実行するために行われる一連の操作)。

- 行ソース統計(計画で実行される各操作の処理行数など)。

SQLチューニング・セットを作成する場合は、次のソースを使用してSQL文にフィルタ処理やランキングを実行します。

- SELECT_CURSOR_CACHEファンクションを使用した共有SQL領域。

- 自動ワークロード・リポジトリの先頭にあるSQL文(SELECT_WORKLOAD_REPOSITORYファンクションを使用)。

- その他のSQLチューニング・セット(SELECT_SQLSETファンクションを使用)。

- SQLパフォーマンス・アナライザ・タスクの比較結果(SELECT_SQLPA_TASKファンクションを使用)。

- SQLトレース・ファイル(SELECT_SQL_TRACEファンクションを使用)。

- ユーザー定義ワークロード。

この機能は、すべてのSQLチューニング・セット・サブプログラムを使用すると、簡単に実行できます。次に例を示します。

- CREATE_SQLSETプロシージャおよびファンクションでは、データベース内にSQLチューニング・セット・オブジェクトを作成します。

- 選択した一連のSQLをSQLチューニング・セットに入力する場合は、LOAD_SQLSETプロシージャを使用します。

- CAPTURE_CURSOR_CACHE_SQLSETプロシージャでは、指定した期間にわたり共有SQL領域からSQL文を収集し、データベース・ワークロードにおける実際のピクチャの作成を試みます。

SQLチューニング・セットおよびSQLプロファイルのインポート/エクスポート

DBMS_SQLTUNEサブプログラムを使用して、共通のプログラム・モデルを使用するシステム間でSQLプロファイルおよびSQLチューニング・セットを移動します。いずれの場合も、ソース・データベース上にステージング表を作成し、関連するデータをそのステージング表に入力します。次に、選択した方法(Oracle Data Pump、データベース・リンクなど)に従ってそのステージング表を移動先システムに移動し、そのステージング表を使用してオブジェクトを元の形式で再構成します。次の手順は、このパッケージに含まれるサブプログラムによって実行されます。

1. ソース・システムにステージング表を作成するには、CREATE_STGTAB_SQLPROFプロシージャまたはCREATE_STGTAB_SQLSETプロシージャをコールします。

2. ソース・システムの情報をステージング表に移入するには、PACK_STGTAB_SQLPROFプロシージャまたはPACK_STGTAB_SQLSETプロシージャをコールします。

3. ステージング表を移動先システムに移動します。

4. 新しいシステム上にオブジェクトを再作成するには、UNPACK_STGTAB_SQLPROFプロシージャまたはUNPACK_STGTAB_SQLSETプロシージャをコールします。

関連項目:
プログラム・フローの詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

自動チューニング・タスク・ファンクション

データベースによって、カタログ・スクリプトの一部として自動システム・タスクSYS_AUTO_SQL_TUNING_TASKが作成されます。このタスクによってAWRから一連の高負荷SQLが自動的に選択され、そのSQLに対してSQLチューニング・アドバイザが実行されます。自動タスクでは、他のSQLチューニング・タスクと同じ包括的な分析が実行されます。

自動SQLチューニング・タスクのアクティビティに関するレポートは、DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK APIを通じて取得できます。自動SQLチューニング・タスクの管理に使用できるサブプログラムのリストについては、DBMS_AUTO_SQLTUNEパッケージを参照してください。

関連項目:
DBMS_AUTO_SQLTUNEの使用方法

リアルタイムSQL監視

リアルタイムSQL監視を使用すると、DBAまたはパフォーマンス・アナリストにより、長時間にわたって実行されるSQL文の実行をその実行中に監視できます。カーソルの統計(CPU時間、IO時間など)と実行計画の統計(出力行の数、メモリー、使用される一時領域など)は、どちらも文の実行中にほぼリアルタイムで更新されます。V$SQL_MONITORビューおよびV$SQL_PLAN_MONITORビューではこれらの統計が公開されます。さらに、DBMS_SQLTUNEによって、REPORT_SQL_MONITOR機能とREPORT_SQL_MONITOR_LIST機能を提供することで、監視情報をレポートします。

注意:
また、DBMS_SQL_MONITORには、REPORT_SQL_MONITOR機能とREPORT_SQL_MONITOR_LIST機能が含まれます。

セキュリティ・モデル

このパッケージは、PUBLICで使用可能で、独自のセキュリティ・チェックが実行されます。

- SQLチューニング・アドバイザはアドバイザ・フレームワークに依存しているため、すべてのチューニング・タスク・インタフェース(XXX_TUNING_TASK)を使用するにはADVISOR権限が必要です。

- SQLチューニング・セット・サブプログラム(XXX_SQLSET)では、ADMINISTER SQL TUNING SETまたはADMINISTER ANY SQL TUNING SET権限が必要です。ADMINISTER SQL TUNING SET権限を持つユーザーは、ユーザー自身が所有するSQLチューニング・セットのみを作成および変更できます(ADMINISTER ANY SQL TUNING SET権限を持っている場合は、すべてのSQLチューニング・セット(他のユーザーが所有するものも含む)に対して操作を行うことができます)。たとえばCREATE_SQLSETプロシージャおよびファンクションを使用すると、他のユーザーによって所有されるSQLチューニング・セットを作成できます。この場合、そのユーザーは、ADMINISTER SQL TUNING SET権限がなくてもチューニング・セットを操作できます。

- 以前は、SQLプロファイルに関連するサブプログラムを起動するには、次の3つの異なる権限が必要でした。

- CREATE ANY SQL PROFILE

- ALTER ANY SQL PROFILE

- DROP ANY SQL PROFILE

これらの権限は非推奨となっているため、ADMINISTER SQL MANAGEMENT OBJECTを使用することをお薦めします。

データ構造

DBMS_SQLTUNEパッケージは、次のOBJECTタイプを定義します。

オブジェクト・タイプ

- SQLSET_ROWオブジェクト・タイプ

SQLSET_ROWオブジェクト・タイプ

SQLSET_ROWオブジェクトは、ユーザーのSQLチューニング・セットの内容をモデル化します。SQLチューニング・セットは、論理的には、各SQLSET_ROWに1つのSQL文とその実行コンテキスト、統計、バインドおよび計画が含まれているSQLSET_ROWのコレクションです。各SELECT_XXXサブプログラムは、(sql_id、plan_hash_value)によって一意に識別されるSQLSET_ROWのコレクションとしてデータ・ソースをモデル化します。同様に、LOAD_SQLSETプロシージャは、行タイプがSQLSET_ROWのカーソルを入力時に使用し、ユーザーが要求するポリシーに従って各SQLSET_ROWを個別に処理します。

DBMS_SQLTUNEパッケージのいくつかのサブプログラムは、SQLチューニング・セットまたはデータ・ソースの内容に対して基本フィルタを使用できます。これらのフィルタは、SQLSET_ROW内に定義されている属性に基づいて表現されます。

構文

CREATE TYPE sqlset_row AS object (
sql_id                   VARCHAR(13),
force_matching_signature NUMBER,
sql_text                 CLOB,
object_list              sql_objects,
bind_data                RAW(2000),
parsing_schema_name      VARCHAR2(30),
module                   VARCHAR2(48),
action                   VARCHAR2(32),
elapsed_time             NUMBER,
cpu_time                 NUMBER,
buffer_gets              NUMBER,
disk_reads               NUMBER,
direct_writes            NUMBER,
rows_processed           NUMBER,
fetches                  NUMBER,
executions               NUMBER,
end_of_fetch_count       NUMBER,
optimizer_cost           NUMBER,
optimizer_env            RAW(2000),
priority                 NUMBER,
command_type             NUMBER,
first_load_time          VARCHAR2(19),
stat_period              NUMBER,
active_stat_period       NUMBER,
other                    CLOB,
plan_hash_value          NUMBER,
sql_plan                 sql_plan_table_type,
bind_list                sql_binds)

属性

表154-1 SQLSET_ROWの属性

属性

説明

sql_id

一意なSQL ID。

forcing_matching_signature

リテラル、ケースおよび空白を除くシグネチャ。

sql_text

文の全文。

object_list

現在、実装されていません。

bind_data

このSQLに対して取得されるバインド・データ。このパラメータの引数を指定し、bind_listの引数も指定することはできません(これらのパラメータは、同時には指定できません)。

parsing_schema_name

SQLが解析されるスキーマ。

module

SQLの最後のアプリケーション・モジュール。

action

SQLの最後のアプリケーション・アクション。

elapsed_time

このSQL文の経過時間の合計。

cpu_time

このSQL文のCPU時間の合計。

buffer_gets

バッファ取得回数の合計。

disk_reads

ディスク読取り回数の合計。

direct_writes

直接書込み回数の合計。

rows_processed

このSQL文による処理行数の合計。

fetches

フェッチ回数の合計。

executions

このSQLの実行回数の合計。

end_of_fetch_count

文のすべての行がフェッチされ、文が完全に実行された回数。

optimizer_cost

このSQLのオプティマイザ・コスト。

optimizer_env

このSQL文のオプティマイザ環境。

priority

ユーザー定義の優先順位(1、2、3)。

command_type

文のタイプ(INSERT、SELECTなど)。

first_load_time

親カーソルのロード時間。

stat_period

このSQL文の統計情報が収集された期間(秒)。

active_stat_period

SQL文がアクティブだった有効期間(秒)。

other

他の列(ユーザー定義の属性用)。

plan_hash_value

計画の計画ハッシュ値。

sql_plan

EXPLAIN PLAN。

bind_list

SQLに対するユーザー指定のバインドのリスト。これは、ユーザー指定のワークロードに対して使用されます。このパラメータの引数を指定し、bind_dataの引数も指定することはできません(これらのパラメータは、同時には指定できません)。

サブプログラム・グループ

DBMS_SQLTUNEのサブプログラムは、機能ごとに次のようにグループ分けされています。

- SQLチューニング・アドバイザ・サブプログラム

- SQLプロファイル・サブプログラム

- SQLチューニング・セット・サブプログラム

- SQLパフォーマンス・レポート・サブプログラム

SQLチューニング・アドバイザ・サブプログラム

このサブプログラム・グループは、SQLチューニング・タスクを管理するためのインタフェースを提供します。

表154-2 SQLチューニング・タスク・サブプログラム

サブプログラム

説明

「CANCEL_TUNING_TASKプロシージャ」

現在実行中のチューニング・タスクを取り消します。

「CREATE_SQL_PLAN_BASELINEプロシージャ」

既存の計画のSQL計画ベースラインを作成します。

「CREATE_TUNING_TASKファンクション」

SQLチューニング・アドバイザ用に1つの文または1つのSQLチューニング・セットのチューニングを作成します。

「DROP_TUNING_TASK Procedureプロシージャ」

SQLチューニング・タスクを削除します。

「EXECUTE_TUNING_TASKファンクションおよびプロシージャ」

以前に作成したチューニング・タスクを実行します。

「IMPLEMENT_TUNING_TASKファンクション」

SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。

「INTERRUPT_TUNING_TASKプロシージャ」

現在実行中のチューニング・タスクを中断します。

「REPORT_AUTO_TUNING_TASKファンクション」

自動チューニング・タスクによるレポートを表示して、特定の範囲の実行についてレポートします。

「REPORT_TUNING_TASKファンクション」

チューニング・タスクの結果を表示します。

「RESET_TUNING_TASKプロシージャ」

現在実行中のチューニング・タスクを初期状態にリセットします。

「RESUME_TUNING_TASKプロシージャ」

SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。

「SCHEDULE_TUNING_TASKファンクション」

チューニング・タスクを作成し、その実行をスケジューラ・ジョブとしてスケジュールします。

「SCRIPT_TUNING_TASKファンクション」

SQL*PLUSスクリプトを作成します。その後、このスクリプトを実行すると、SQLチューニング・アドバイザによる一連のリコメンデーションを実装できます。

「SET_TUNING_TASK_PARAMETERプロシージャ」

VARCHAR2タイプまたはNUMBERタイプのSQLチューニング・パラメータの値を更新します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_SQLTUNEサブプログラムの要約」を参照してください。

SQLプロファイル・サブプログラム

このサブプログラム・グループは、SQLプロファイルを管理するためのインタフェースを提供します。

表154-3 SQLプロファイル・サブプログラム

サブプログラム

説明

ACCEPT_ALL_SQL_PROFILESプロシージャ

チューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れます。

ACCEPT_SQL_PROFILEプロシージャおよびファンクション

指定されたチューニング・タスクのSQLプロファイルを作成します。

ALTER_SQL_PROFILEプロシージャ

既存のSQLプロファイル・オブジェクトの特定の属性を変更します。

CREATE_STGTAB_SQLPROFプロシージャ

システム間でのSQLプロファイルのコピーに使用するステージング表を作成します。

DROP_SQL_PROFILEプロシージャ

データベースから名前付きSQLプロファイルを削除します。

PACK_STGTAB_SQLPROFプロシージャ

SYSスキーマからステージング表にプロファイル・データを移動します。

REMAP_STGTAB_SQLPROFプロシージャ

ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更します。

SQLTEXT_TO_SIGNATUREファンクション

SQLテキストのシグネチャを戻します。

UNPACK_STGTAB_SQLPROFプロシージャ

ステージング表に保存されているプロファイル・データを使用して、このシステム上にプロファイルを作成します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_SQLTUNEサブプログラムの要約」を参照してください。

SQLチューニング・セット・サブプログラム

このサブプログラム・グループは、SQLチューニング・セットを管理するためのインタフェースを提供します。

表154-4 SQLチューニング・セット・サブプログラム

サブプログラム

説明

ADD_SQLSET_REFERENCEファンクション

新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。

CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

指定した期間にわたり、共有SQL領域からワークロードを増分取得して、SQLチューニング・セットに移入します。

CREATE_SQLSETプロシージャおよびファンクション

データベース内にSQLチューニング・セット・オブジェクトを作成します。

CREATE_STGTAB_SQLSETプロシージャ

SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。

DELETE_SQLSETプロシージャ

SQL文のセットをSQLチューニング・セットから削除します。

DROP_SQLSETプロシージャ

SQLチューニング・セットがアクティブでない場合はそれを削除します。

LOAD_SQLSETプロシージャ

選択したSQLのセットをSQLチューニング・セットに入力します。

PACK_STGTAB_SQLSETプロシージャ

SYSスキーマからステージング表にチューニング・セットをコピーします。

REMOVE_SQLSET_REFERENCEプロシージャ

SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。

SELECT_CURSOR_CACHEファンクション

共有SQL領域からSQL文を収集します。

SELECT_SQL_TRACEファンクション

1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文をsqlset_rowの形式で戻します。

SELECT_SQLPA_TASKファンクション

SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。

SELECT_SQLSETファンクション

既存のSQLチューニング・セットからSQL文を収集します。

SELECT_WORKLOAD_REPOSITORYファンクション

ワークロード・リポジトリからSQL文を収集します。

UNPACK_STGTAB_SQLSETプロシージャ

ステージング表から1つ以上のSQLチューニング・セットをコピーします。

UPDATE_SQLSETプロシージャ

SQLチューニング・セットのSQL文の選択されている文字列フィールドを更新するか、SQLチューニング・セットのSQLの設定済の数値属性を更新します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_SQLTUNEサブプログラムの要約」を参照してください。

リアルタイムSQL監視サブプログラム

このサブプログラム・グループでは、V$SQL_MONITORおよびV$SQL_PLAN_MONITORに収集された監視データをレポートする機能が提供されています。

表154-5 リアルタイムSQL監視サブプログラム

サブプログラム

説明

REPORT_SQL_MONITORファンクション

リアルタイムSQL監視をレポートします。

REPORT_SQL_MONITOR_LISTファンクション

Oracleによって監視されるすべての文または文のサブセットのレポートを作成します。

SQLパフォーマンス・レポート・サブプログラム

このサブプログラム・グループは、共有SQL領域および自動ワークロード・リポジトリ(AWR)の統計情報を使用して、SQLパフォーマンスの詳細なレポートを提供します。

表154-6 SQLパフォーマンス・レポート・サブプログラム

サブプログラム

説明

REPORT_SQL_DETAILファンクション

特定のSQLIDをレポートします。

DBMS_SQLTUNEサブプログラムの要約

表154-7 DBMS_SQLTUNEパッケージのサブプログラム

サブプログラム

説明

グループ

ACCEPT_ALL_SQL_PROFILESプロシージャ

特定のチューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れます。

SQLプロファイル・サブプログラム

ACCEPT_SQL_PROFILEプロシージャおよびファンクション

指定されたチューニング・タスクのSQLプロファイルを作成します。

SQLプロファイル・サブプログラム

ADD_SQLSET_REFERENCEファンクション

新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。

SQLチューニング・セット・サブプログラム

ALTER_SQL_PROFILEプロシージャ

既存のSQLプロファイル・オブジェクトの特定の属性を変更します。

SQLプロファイル・サブプログラム

CANCEL_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを取り消します。

SQLチューニング・アドバイザ・サブプログラム

CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

指定した期間にわたり、共有SQL領域からワークロードを増分取得して、SQLチューニング・セットに移入します。

SQLチューニング・セット・サブプログラム

CREATE_SQL_PLAN_BASELINEプロシージャ

既存の計画のSQL計画ベースラインを作成します。

SQLチューニング・アドバイザ・サブプログラム

CREATE_SQLSETプロシージャおよびファンクション

データベース内にSQLチューニング・セット・オブジェクトを作成します。

SQLチューニング・セット・サブプログラム

CREATE_STGTAB_SQLPROFプロシージャ

システム間でのSQLプロファイルのコピーに使用するステージング表を作成します。

SQLプロファイル・サブプログラム

CREATE_STGTAB_SQLSETプロシージャ

SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。

SQLチューニング・セット・サブプログラム

CREATE_TUNING_TASKファンクション

SQLチューニング・アドバイザ用に1つの文または1つのSQLチューニング・セットのチューニングを作成します。

SQLチューニング・アドバイザ・サブプログラム

DELETE_SQLSETプロシージャ

SQL文のセットをSQLチューニング・セットから削除します。

SQLチューニング・セット・サブプログラム

DROP_SQL_PROFILEプロシージャ

データベースから名前付きSQLプロファイルを削除します。

SQLプロファイル・サブプログラム

DROP_SQLSETプロシージャ

SQLチューニング・セットがアクティブでない場合はそれを削除します。

SQLチューニング・セット・サブプログラム

DROP_TUNING_TASKプロシージャ

SQLチューニング・タスクを削除します。

SQLチューニング・アドバイザ・サブプログラム

EXECUTE_TUNING_TASKファンクションおよびプロシージャ

以前に作成したチューニング・タスクを実行します。

SQLチューニング・アドバイザ・サブプログラム

IMPLEMENT_TUNING_TASKファンクション

SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。

SQLチューニング・アドバイザ・サブプログラム

INTERRUPT_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを中断します。

SQLチューニング・アドバイザ・サブプログラム

LOAD_SQLSETプロシージャ

選択したSQLのセットをSQLチューニング・セットに入力します。

SQLチューニング・セット・サブプログラム

PACK_STGTAB_SQLPROFプロシージャ

SYSスキーマからステージング表にプロファイル・データを移動します。

SQLプロファイル・サブプログラム

PACK_STGTAB_SQLSETプロシージャ

SYSスキーマからステージング表にチューニング・セットを移動します。

SQLチューニング・セット・サブプログラム

REMAP_STGTAB_SQLPROFプロシージャ

ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更します。

SQLプロファイル・サブプログラム

REMAP_STGTAB_SQLSETプロシージャ

ホスト・システム上とは異なる値でアンパックできるように、ステージング表内のチューニング・セットの名前および所有者を変更します。

SQLチューニング・セット・サブプログラム

REMOVE_SQLSET_REFERENCEプロシージャ

SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。

SQLチューニング・セット・サブプログラム

REPORT_AUTO_TUNING_TASKファンクション

自動チューニング・タスクによるレポートを表示して、特定の範囲のサブタスクについてレポートします。

SQLチューニング・セット・サブプログラム

REPORT_SQL_DETAILファンクション

特定のSQLIDをレポートします。

SQLパフォーマンス・レポート・サブプログラム

REPORT_TUNING_TASKファンクション

チューニング・タスクの結果を表示します。

SQLチューニング・セット・サブプログラム

RESET_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを初期状態にリセットします。

SQLチューニング・アドバイザ・サブプログラム

RESUME_TUNING_TASKプロシージャ

SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。

SQLチューニング・アドバイザ・サブプログラム

SCHEDULE_TUNING_TASKファンクション

SQLチューニング・タスクを作成し、その実行をスケジューラ・ジョブとしてスケジュールします。

SQLチューニング・アドバイザ・サブプログラム

SCRIPT_TUNING_TASKファンクション

SQL*PLUSスクリプトを作成します。その後、このスクリプトを実行すると、SQLチューニング・アドバイザによる一連のリコメンデーションを実装できます。

SQLチューニング・アドバイザ・サブプログラム

SELECT_CURSOR_CACHEファンクション

共有SQL領域からSQL文を収集します。

SQLチューニング・セット・サブプログラム

SELECT_SQL_TRACEファンクション

1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文をsqlset_rowの形式で戻します。

SQLチューニング・セット・サブプログラム

SELECT_SQLSETファンクション

既存のSQLチューニング・セットからSQL文を収集します。

SQLチューニング・セット・サブプログラム

SELECT_WORKLOAD_REPOSITORYファンクション

ワークロード・リポジトリからSQL文を収集します。

SQLチューニング・セット・サブプログラム

SET_TUNING_TASK_PARAMETERプロシージャ

VARCHAR2タイプまたはNUMBERタイプのSQLチューニング・パラメータの値を更新します。

SQLチューニング・アドバイザ・サブプログラム

SQLTEXT_TO_SIGNATUREファンクション

SQLテキストのシグネチャを戻します。

SQLプロファイル・サブプログラム

UNPACK_STGTAB_SQLPROFプロシージャ

ステージング表に保存されているプロファイル・データを使用して、このシステム上にプロファイルを作成します。

SQLプロファイル・サブプログラム

UNPACK_STGTAB_SQLSETプロシージャ

ステージング表から1つ以上のSQLチューニング・セットを移動します。

SQLチューニング・セット・サブプログラム

UPDATE_SQLSETプロシージャ

SQLチューニング・セットのSQL文の選択されているフィールドを更新します。

SQLチューニング・セット・サブプログラム

ACCEPT_ALL_SQL_PROFILESプロシージャ

このプロシージャは、チューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れ、ユーザーが渡したパラメータ値に従ってSQLプロファイルの属性を設定します。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ACCEPT_ALL_SQL_PROFILES (
task_name       IN VARCHAR2,
category        IN VARCHAR2 := NULL,
replace         IN BOOLEAN  := FALSE,
force_match     IN BOOLEAN  := FALSE,
profile_type    IN VARCHAR2 := REGULAR_PROFILE,
autotune_period IN NUMBER   := NULL,
execution_name  IN VARCHAR2 := NULL,
task_owner      IN VARCHAR2 := NULL,
description     IN VARCHAR2 := NULL);

パラメータ

表154-8 ACCEPT_ALL_SQL_PROFILESプロシージャのパラメータ

パラメータ

説明

task_name

SQLチューニング・タスクの名前(必須)。

category

これはカテゴリ名で、このSQLプロファイルを使用するセッションに対するセッションのSQLTUNE_CATEGORYパラメータの値と一致する必要があります。デフォルトの値はDEFAULTになります。この値は、SQLTUNE_CATEGORYパラメータのデフォルトでもあります。カテゴリには、有効なOracle識別子を指定してください。指定したカテゴリ名は、常に大文字に変換されます。正規化されたSQLテキストとカテゴリ名の組合せによって、SQLプロファイルの一意のキーが作成されます。この組合せが重複した場合、ACCEPT_SQL_PROFILEは失敗します。

replace

これは、プロファイルがすでに存在する場合にこの引数をTRUEにすると、置き換えられます。TRUEに設定した置換の場合でも、別のシグネチャ/カテゴリの組合せで使用されている名前を渡すとエラーが発生します。

force_match

TRUEに設定すると、すべてのリテラル値をバインド変数に正規化した後に同じテキストが含まれているSQL文がSQLプロファイルの対象になります。(SQL文でリテラル値とバインド変数の組合せが使用されている場合、バインド変換は行われません。)これは、cursor_sharingパラメータのFORCEオプションで使用される一致アルゴリズムと似ています。

FALSEに設定すると、リテラルは変換されません。これは、cursor_sharingパラメータのEXACTオプションで使用される一致アルゴリズムと似ています。

profile_type

オプション:

- REGULAR_PROFILE: パラレル実行を変更しないプロファイル(デフォルト、NULLと同じです)。SQL文に現在パラレル実行計画がある場合、通常のプロファイルではオプティマイザが異なるけれどもパラレルである実行計画を選択します。

- PX_PROFILE: パラレル実行を変更する通常のプロファイル。

autotune_period

自動SQLチューニングの時間。この設定は、自動SQLチューニング・アドバイザ・タスクにのみ適用されます。次の値があります。

- NULLまたは負の値(デフォルト): すべてまたは完全。結果にはすべてのタスク実行が含まれます。

- 0: 現在または直近のタスク実行の結果。

- 1: 直近24時間の結果。

- 7: 直近7日間の結果。

このプロシージャは、その他の値を直近のタスク実行からこの引数の値を引いた時間として解釈します。

execution_name

使用するタスク実行の名前。NULLの場合、このプロシージャは、直近のタスク実行のレポートを生成します。

task_owner

チューニング・タスクの所有者。これはオプションのパラメータで、他のユーザーが所有するチューニング・タスクに関連付けられているSQLプロファイルを受け入れるためには指定する必要があります。現行のユーザーがデフォルト値です。

description

SQLプロファイルの目的を記述したユーザー指定の文字列。256文字を超える場合は切り捨てられます。最大サイズは500文字です。

使用上の注意

CREATE ANY SQL PROFILE権限が必要です。

ACCEPT_SQL_PROFILEプロシージャおよびファンクション

このプロシージャは、SQLチューニング・アドバイザによって推奨されるSQLプロファイルを作成します。SQLテキストは、マッチング用に正規化されていますが、データ・ディクショナリに格納される場合は読みやすさを考慮して正規化されていません。SQLテキストは、SQLチューニング・タスクへの参照を介して提供されます。参照されたSQL文が存在しない場合、エラーが報告されます。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
task_name    IN  VARCHAR2,
object_id    IN  NUMBER   := NULL,
name         IN  VARCHAR2 := NULL,
description  IN  VARCHAR2 := NULL,
category     IN  VARCHAR2 := NULL);
task_owner   IN VARCHAR2  := NULL,
replace      IN BOOLEAN   := FALSE,
force_match  IN BOOLEAN   := FALSE,
profile_type IN VARCHAR2  := REGULAR_PROFILE);

DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
task_name    IN  VARCHAR2,
object_id    IN  NUMBER   := NULL,
name         IN  VARCHAR2 := NULL,
description  IN  VARCHAR2 := NULL,
category     IN  VARCHAR2 := NULL;
task_owner   IN VARCHAR2  := NULL,
replace      IN BOOLEAN   := FALSE,
force_match  IN BOOLEAN   := FALSE,
profile_type IN VARCHAR2  := REGULAR_PROFILE)
RETURN VARCHAR2;

パラメータ

表154-9 ACCEPT_SQL_PROFILEプロシージャおよびファンクションのパラメータ

パラメータ

説明

task_name

SQLチューニング・タスクの名前(必須)。

object_id

チューニング・タスクに関連付けられたSQL文を示すアドバイザ・フレームワーク・オブジェクトの識別子。

name

SQLプロファイルの名前。二重引用符を含むことはできません。大文字と小文字が区別されます。指定しない場合は、システムによってSQLプロファイルに一意の名前が生成されます。

description

SQLプロファイルの目的を記述したユーザー指定の文字列。256文字を超える場合は切り捨てられます。最大サイズは500文字です。

category

これはカテゴリ名で、このSQLプロファイルを使用するセッションに対するセッションのSQLTUNE_CATEGORYパラメータの値と一致する必要があります。デフォルトの値はDEFAULTになります。この値は、SQLTUNE_CATEGORYパラメータのデフォルトでもあります。カテゴリには、有効なOracle識別子を指定してください。指定したカテゴリ名は、常に大文字に変換されます。正規化されたSQLテキストとカテゴリ名の組合せによって、SQLプロファイルの一意のキーが作成されます。この組合せが重複した場合、ACCEPT_SQL_PROFILEは失敗します。

task_owner

チューニング・タスクの所有者。これはオプションのパラメータで、他のユーザーが所有するチューニング・タスクに関連付けられているSQLプロファイルを受け入れるためには指定する必要があります。現行のユーザーがデフォルト値です。

replace

これは、プロファイルがすでに存在する場合にこの引数をTRUEにすると、置き換えられます。TRUEに設定した置換の場合でも、別のシグネチャ/カテゴリの組合せで使用されている名前を渡すとエラーが発生します。

force_match

TRUEに設定すると、すべてのリテラル値をバインド変数に正規化した後に同じテキストが含まれているSQL文がSQLプロファイルの対象になります。(SQL文でリテラル値とバインド変数の組合せが使用されている場合、バインド変換は行われません。)これは、cursor_sharingパラメータのFORCEオプションで使用される一致アルゴリズムと似ています。

FALSEに設定すると、リテラルは変換されません。これは、cursor_sharingパラメータのEXACTオプションで使用される一致アルゴリズムと似ています。

profile_type

オプション:

- REGULAR_PROFILE: パラレル実行を変更しないプロファイル(デフォルト、NULLと同じです)。SQL文に現在パラレル実行計画がある場合、通常のプロファイルではオプティマイザが異なるけれどもパラレルである実行計画を選択します。

- PX_PROFILE: パラレル実行を変更する通常のプロファイル。

戻り値

SQLプロファイルの名前。

使用上の注意

CREATE ANY SQL PROFILE権限が必要です。

例

このサブプログラムのプロシージャ・バージョンとファンクション・バージョンの両方を同様に使用しますが、ファンクションを起動する場合は戻り値を指定する必要があります。次に示す例は、プロシージャにのみ適用されます。

この例では、ワークロード・リポジトリの1つのSQL文がチューニングされ、SQLチューニング・アドバイザが推奨するSQLプロファイルが作成されます。

variable stmt_task VARCHAR2(64);
variable sts_task VARCHAR2(64);

-- create a tuning task tune the statement
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(
begin_snap  => 1, -
end_snap    => 2, -
sql_id      => 'ay1m3ssvtrh24');

-- execute the resulting task
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task);

EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE(:stmt_task);

チューニングされたSQL文を表す場合、SQLチューニング・アドバイザによって作成されたアドバイザ・フレームワーク・オブジェクトのID(object_id)を指定する必要はありません。

推奨されるSQLプロファイルがデフォルトで使用されないように、そのSQLプロファイルを別のカテゴリ(TESTなど)で受け入れることもできます。

EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
task_name  =>  :stmt_task, -
category   =>  'TEST');

コマンドALTER SESSION SET SQLTUNE_CATEGORY = 'TEST'を使用すると、このプロファイルの動作を確認できます。

次のコールを実行すると、同じforce_matching_signatureが指定されているすべてのSQL文をチューニング対象とするSQLプロファイルが作成されます。

EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (task_name   =>  :stmt_task, -
force_match =>  TRUE);

次の例のチューニング対象はSQLチューニング・セットですが、SQLプロファイルは、そのSQLチューニング・セット内の1つのSQL文のみに対して作成されます。SQL文は、IDが'5'のアドバイザ・フレームワーク・オブジェクトによって表されています。チューニング・タスクに対して複数のSQLプロファイルが存在する可能性があるため、ACCEPT_SQL_PROFILEプロシージャにオブジェクトIDを渡す必要があることに注意してください。このオブジェクトIDは、レポートとともに取得されます。

EXEC :sts_task := DBMS_SQLTUNE.CREATE_TUNING_TASK ( -
sqlset_name   => 'my_workload',  -
rank1         => 'ELAPSED_TIME', -
time_limit    => 3600,           -
description   => 'my workload ordered by elapsed time');

-- execute the resulting task
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:sts_task);

-- create the profile for the sql statement corresponding to object_id = 5.
EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
task_name  =>  :sts_task, -
object_id  =>  5);

ADD_SQLSET_REFERENCEファンクション

このプロシージャは、新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ADD_SQLSET_REFERENCE (
sqlset_name  IN  VARCHAR2,
description  IN  VARCHAR2 := NULL)
RETURN NUMBER;

パラメータ

表154-10 ADD_SQLSET_REFERENCEファンクションのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

description

SQLチューニング・セットの使用方法の説明。256文字を超える場合は切り捨てられます。

戻り値

追加した参照の識別子。

例

SQLチューニング・セットへの参照を追加できます。これによって、使用中にチューニング・セットが変更されなくなります。参照は、SQLチューニング・セットに対してSQLチューニング・アドバイザを起動すると自動的に追加されるため、このファンクションは特別な目的でのみ使用してください。このファンクションは、後で参照を削除する際に使用する参照IDを戻します。SQLチューニング・セットへの参照を削除するには、REMOVE_SQLSET_REFERENCEプロシージャを使用します。

variable rid number;
EXEC :rid := DBMS_SQLTUNE.ADD_SQLSET_REFERENCE( -
sqlset_name => 'my_workload', -
description => 'my sts reference');

ビューUSER/DBA_SQLSET_REFERENCESを使用すると、特定のSQLチューニング・セットに関するすべての参照を確認できます。

ALTER_SQL_PROFILEプロシージャ

このプロシージャは、既存のSQLプロファイル・オブジェクトの特定の属性を変更します。次の属性を変更できます(これらの属性名を使用)。

- "STATUS"を"ENABLED"または"DISABLED"に設定できます。

- "NAME"を有効な名前にリセットできます。この名前は、有効なOracle識別子であり一意である必要があります。

- "DESCRIPTION"を500文字以下の文字列に設定できます。

- "CATEGORY"を有効なカテゴリ名にリセットできます。この名前は有効なOracle識別子であり、正規化されたSQLテキストと組み合せた場合は一意である必要があります。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ALTER_SQL_PROFILE (
name                 IN  VARCHAR2,
attribute_name       IN  VARCHAR2,
value                IN  VARCHAR2);

パラメータ

表154-11 ALTER_SQL_PROFILEプロシージャのパラメータ

パラメータ

説明

name

変更する既存のSQLプロファイルの名前(必須)。

attribute_name

有効な属性名を使用して変更する属性の名前(必須)。大文字と小文字は区別されません。

value

有効な属性値を使用した新しい属性の値(必須)。

使用上の注意

ALTER ANY SQL PROFILE権限が必要です。

例

-- Disable a profile, so it is not be used by any sessions.
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>  :pname,   -
attribute_name  =>  'STATUS', -
value           =>  'DISABLED');

-- Enable it back:
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>   :pname,   -
attribute_name  =>   'STATUS', -
value           =>   'ENABLED');

-- Change the category of the profile so it is used only by sessions
-- with category set to TEST.
-- Use ALTER SESSION SET SQLTUNE_CATEGORY = 'TEST' to see how this profile
-- behaves.
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>  :pname,   -
attribute_name  =>  'CATEGORY', -
value           =>  'TEST');

-- Change it back:
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>  :pname,   -
attribute_name  =>  'CATEGORY', -
value           =>  'DEFAULT');

CANCEL_TUNING_TASKプロシージャ

このプロシージャは、現在実行中のチューニング・タスクを取り消します。すべての中間結果データは削除されます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CANCEL_TUNING_TASK (
task_name         IN VARCHAR2);

パラメータ

表154-12 CANCEL_TUNING_TASKプロシージャのパラメータ

パラメータ

説明

task_name

取り消すタスクの名前。

例

タスクの取消しは、タスクの実行を停止し、実行済結果の確認が不要な場合に行います。

EXEC DBMS_SQLTUNE.CANCEL_TUNING_TASK(:my_task);

CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

指定した期間にわたり、このプロシージャは、共有SQL領域からワークロードを増分取得して、SQLチューニング・セットに移入します。このプロシージャは、共有SQL領域からワークロードを取得してSQLチューニング・セットに移入し、一定の期間にキャッシュを複数回ポーリングして、そこに格納されたワークロード・データを更新します。必要な期間に実行して、システム・ワークロード全体を取得できます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET (
sqlset_name         IN VARCHAR2,
time_limit          IN POSITIVE := 1800,
repeat_interval     IN POSITIVE := 300,
capture_option      IN VARCHAR2 := 'MERGE',
capture_mode        IN NUMBER   := MODE_REPLACE_OLD_STATS,
basic_filter        IN VARCHAR2 := NULL,
sqlset_owner        IN VARCHAR2 := NULL,
recursive_sql       IN VARCHAR2 := HAS_RECURSIVE_SQL);

パラメータ

表154-13 CAPTURE_CURSOR_CACHE_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

time_limit

実行する合計時間(秒)。

repeat_interval

サンプリングの実行間隔(秒)。

capture_option

取得時の動作(新しい文の挿入、既存の文の更新またはその両方)。'INSERT'、'UPDATE'または'MERGE'を指定できます(load_sqlsetのload_optionと同様)。

capture_mode

取得モード(UPDATEおよびMERGE取得オプション)。有効な値は、次のとおりです。

- MODE_REPLACE_OLD_STATS: 確認された実行回数がSQLチューニング・セット内に保存されている値より大きい場合は、統計が置換されます。

- MODE_ACCUMULATE_STATS: SQLに対して格納済の現在の値に、新しい値が加算されます。このモードでは、文が期限切れになっているかどうかが検出されるため、最終的な統計値は、その文が存在したすべてのカーソルの統計の合計になることに注意してください。

basic_filter

各サンプリングで共有SQL領域に適用するフィルタ(「SELECT_XXXサブプログラム」を参照)。basic_filterがコール元によって設定されていない場合、このサブプログラムはCREATE TABLE、INSERT、SELECT、UPDATE、DELETEおよびMERGEタイプの文のみを取得します。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL。

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)。

例

次の例では、30秒間にわたって取得が実行され、キャッシュが5秒に1回ポーリングされます。これによって、その時間内に実行されたすべての文が取得されます(その時間帯の前後は含まれません)。同じ文が重複して使用された場合は、格納されている文が新しい文に置換されます。

本番システムでの制限時間および繰返し間隔は、この例よりかなり大きく設定されることに注意してください。time_limitパラメータおよびrepeat_intervalパラメータは、使用するシステムでのワークロード時間および共有SQL領域の回転率プロパティに基づいて調整する必要があります。

EXEC DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET( -
sqlset_name     => 'my_workload', -
time_limit      =>  30, -
repeat_interval =>  5);

次のコールでは、実行中に実行統計を累積します。このオプションでは、期限切れにまたがる場合でも、各カーソルの累積アクティビティの正確な状況が示されますが、前述の例よりもコストが大きくなります。

EXEC DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET( -
sqlset_name     => 'my_workload', -
time_limit      => 30, -
repeat_interval => 5, -
capture_mode    => dbms_sqltune.MODE_ACCUMULATE_STATS);

次のコールでは、非常に低いコストで取得が実行されます。このコールでは、新しい文が挿入されるのみで、それらの文がSQLチューニング・セットに挿入された後、統計は更新されません。

EXEC DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET( -
sqlset_name     => 'my_workload', -
time_limit      => 30, -
repeat_interval => 5, -
capture_option  => 'INSERT');

CREATE_SQL_PLAN_BASELINEプロシージャ

このプロシージャは、実行計画のSQL計画ベースラインを作成します。SQLチューニング・アドバイザが作成する、代替計画検索のコンテキストで使用できます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_SQL_PLAN_BASELINE (
task_name            IN VARCHAR2,
object_id            IN NUMBER := NULL,
plan_hash_value      IN NUMBER,
owner_name           IN VARCHAR2 := NULL);

パラメータ

表154-14 CREATE_SQL_PLAN_BASELINEプロシージャのパラメータ

パラメータ

説明

task_name

スクリプトを取得するタスクの名前。

object_id

SQLが対応するオブジェクトID。

plan_hash_value

計画ベースラインを作成する計画。

owner_name

関連するチューニング・タスクの所有者。デフォルトは、現行のスキーマ所有者です。

CREATE_SQLSETプロシージャおよびファンクション

このプロシージャは、データベース内にSQLチューニング・セット・オブジェクトを作成します。

このファンクションを実行すると、システムによってSQLチューニング・セットの名前が生成されます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_SQLSET (
sqlset_name  IN  VARCHAR2,
description  IN  VARCHAR2 := NULL
sqlset_owner IN  VARCHAR2 := NULL);

DBMS_SQLTUNE.CREATE_SQLSET (
sqlset_name  IN  VARCHAR2 := NULL,
description  IN  VARCHAR2 := NULL,
sqlset_owner IN  VARCHAR2 := NULL)
RETURN VARCHAR2;

パラメータ

表154-15 CREATE_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

description

SQLチューニング・セットの説明。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL。

例

EXEC DBMS_SQLTUNE.CREATE_SQLSET(-
sqlset_name => 'my_workload', -
description => 'complete application workload');

CREATE_STGTAB_SQLPROFプロシージャ

このプロシージャは、システム間でのSQLプロファイルのコピーに使用するステージング表を作成します。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF (
table_name            IN VARCHAR2,
schema_name           IN VARCHAR2 := NULL,
tablespace_name       IN VARCHAR2 := NULL);

パラメータ

表154-16 CREATE_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ

説明

table_name

作成する表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。必須です。

schema_name

作成する表を格納するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合はNULL。

tablespace_name

ステージング表を格納する表領域(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のユーザーのデフォルト表領域の場合はNULL。

使用上の注意

- このプロシージャは、PACK_STGTAB_SQLPROFプロシージャへのコールを発行する前に、1回コールします。

- 別のステージング表に別のSQLプロファイルを作成する場合は、複数回コールできます。

- これは、DDL操作であるため、トランザクション内では実行されないことに注意してください。

例

別のシステムに移動可能なプロファイル・データを格納するステージング表を作成します。

EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF (table_name  => 'PROFILE_STGTAB');

CREATE_STGTAB_SQLSETプロシージャ

このプロシージャは、SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_STGTAB_SQLSET (
table_name           IN VARCHAR2,
schema_name          IN VARCHAR2 := NULL,
tablespace_name      IN VARCHAR2 := NULL,
db_version           IN NUMBER   := NULL);

パラメータ

表154-17 CREATE_STGTAB_SQLSETプロシージャのパラメータ

パラメータ

説明

table_name

作成する表の名前(大/小文字区別)。

schema_name

作成する表を格納するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL。

tablespace_name

ステージング表を格納する表領域(大/小文字区別)。現行ユーザーのデフォルト表領域の場合はNULL。

db_version

ステージング表の形式を決定するデータベース(DB)のバージョン。ユーザーは、古いDBバージョンのステージング表を作成して、STSを古いDBバージョンにエクスポートすることもできます。次のいずれかの値です。

- NULL(デフォルト): 現行のDBバージョン。

- STS_STGTAB_10_2_VERSION: 10.2 DBバージョン

- STS_STGTAB_11_1_VERSION: 11.1 DBバージョン

- STS_STGTAB_11_2_VERSION: 11.2 DBバージョン

使用上の注意

- このプロシージャは、PACK_STGTAB_SQLSETプロシージャへのコールを発行する前に、1回コールします。

- 別のステージング表に別のチューニング・セットを作成する場合は、複数回コールできます。

- これは、DDL操作であるため、トランザクション内では実行されないことに注意してください。

- このコールを発行するユーザーには、指定するスキーマおよび関連する表領域でのCREATE TABLE権限が必要です。

- ステージング表にはネストした表の列および索引が含まれているため、ステージング表の名前は変更しないでください。

例

SQLチューニング・セットをパックし最終的にはエクスポートするためのステージング表を作成します。

EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLSET(table_name => 'STGTAB_SQLSET');

Oracle Database 10gリリース2 (10.2)形式でSQLチューニング・セットをパックするステージング表を作成します。

EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLSET(
table_name => 'STGTAB_SQLSET',
db_version => DBMS_SQLTUNE.STS_STGTAB_10_2_VERSION)

Oracle Database 11gリリース1(11.1)形式でSQLチューニング・セットをパックするステージング表を作成します。

EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLSET(
table_name => 'STGTAB_SQLSET',
db_version => DBMS_SQLTUNE.STS_STGTAB_11_1_VERSION)

CREATE_TUNING_TASKファンクション

このファンクションを様々な形式で使用して次の操作ができます。

- テキストを指定して、単一の文に対するチューニング・タスクを作成する。

- 識別子を指定して、共有SQL領域内の単一の文に対するチューニング・タスクを作成する。

- スナップショット識別子の範囲を指定して、ワークロード・リポジトリ内の単一文に対するチューニング・タスクを作成する。

- SQLチューニング・セットに対するチューニング・タスクを作成する。

- SQLパフォーマンス・アナライザに対するチューニング・タスクを作成する。

すべての場合において、ファンクションは、主にアドバイザ・タスクの作成とそのパラメータの設定を行います。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

SQLテキスト形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
sql_text         IN CLOB,
bind_list        IN sql_binds := NULL,
user_name        IN VARCHAR2  := NULL,
scope            IN VARCHAR2  := SCOPE_COMPREHENSIVE,
time_limit       IN NUMBER    := TIME_LIMIT_DEFAULT,
task_name        IN VARCHAR2  := NULL,
description      IN VARCHAR2  := NULL,
con_name         IN VARCHAR2  := NULL)
RETURN VARCHAR2;

SQL ID形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
sql_id           IN VARCHAR2,
plan_hash_value  IN NUMBER    := NULL,
scope            IN VARCHAR2  := SCOPE_COMPREHENSIVE,
time_limit       IN NUMBER    := TIME_LIMIT_DEFAULT,
task_name        IN VARCHAR2  := NULL,
description      IN VARCHAR2  := NULL,
con_name         IN VARCHAR2  := NULL)
RETURN VARCHAR2;

AWR形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
begin_snap       IN NUMBER,
end_snap         IN NUMBER,
sql_id           IN VARCHAR2,
plan_hash_value  IN NUMBER    := NULL,
scope            IN VARCHAR2  := SCOPE_COMPREHENSIVE,
time_limit       IN NUMBER    := TIME_LIMIT_DEFAULT,
task_name        IN VARCHAR2  := NULL,
description      IN VARCHAR2  := NULL,
con_name         IN VARCHAR2  := NULL)
RETURN VARCHAR2;

SQLチューニング・セット形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
sqlset_name       IN VARCHAR2,
basic_filter      IN VARCHAR2 :=  NULL,
object_filter     IN VARCHAR2 :=  NULL,
rank1             IN VARCHAR2 :=  NULL,
rank2             IN VARCHAR2 :=  NULL,
rank3             IN VARCHAR2 :=  NULL,
result_percentage IN NUMBER   :=  NULL,
result_limit      IN NUMBER   :=  NULL,
scope             IN VARCHAR2 :=  SCOPE_COMPREHENSIVE,
time_limit        IN NUMBER   :=  TIME_LIMIT_DEFAULT,
task_name         IN VARCHAR2 :=  NULL,
description       IN VARCHAR2 :=  NULL
plan_filter       IN VARCHAR2 :=  'MAX_ELAPSED_TIME',
sqlset_owner      IN VARCHAR2 :=  NULL)
RETURN VARCHAR2;

SQLパフォーマンス・アナライザ形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
spa_task_name     IN VARCHAR2,
spa_task_owner    IN VARCHAR2 :=  NULL,
spa_compare_exec  IN VARCHAR2 :=  NULL,
basic_filter      IN VARCHAR2 :=  NULL,
time_limit        IN NUMBER   :=  TIME_LIMIT_DEFAULT,
task_name         IN VARCHAR2 :=  NULL,
description       IN VARCHAR2 :=  NULL)
RETURN VARCHAR2;

パラメータ

表154-18 CREATE_TUNING_TASKファンクションのパラメータ

パラメータ

説明

sql_text

SQL文のテキスト。

begin_snap

スナップショット識別子を開始します。

end_snap

スナップショット識別子を終了します。

sql_id

SQL文の識別子。

bind_list

ANYDATAタイプのバインド値の順序付けられたリスト。

plan_hash_value

SQL実行計画のハッシュ値。

sqlset_name

SQLチューニング・セットの名前。

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。

object_filter

オブジェクト・フィルタ。

rank(i)

選択したSQLのorder-by句。

result_percentage

ランキング・メジャーの合計のパーセント。

result_limit

フィルタ処理またはランク付けが済んでいるSQLの先頭から数件取得されるSQL文。

user_name

チューニング対象の文があるユーザーの名前。

scope

チューニング・スコープ(制限付き/包括的)。

time_limit

チューニング・セッションの最大継続時間(秒)。

task_name

チューニング・タスク名(オプション)。

description

SQLチューニング・セッションの説明(最大256文字)。

plan_filter

計画フィルタ。同じ文に関連付けられている計画(plan_hash_value)が複数ある場合に、適用できます。このフィルタには、1つの計画(plan_hash_value)のみを選択できます。有効な値は、次のとおりです。

- LAST_GENERATED: タイムスタンプが最も新しい計画。

- FIRST_GENERATED: タイムスタンプが最も古い計画。LAST_GENERATEDの反対です。

- LAST_LOADED: first_load_time統計情報が最も新しい計画。

- FIRST_LOADED: first_load_time統計情報が最も古い計画。LAST_LOADEDの反対です。

- MAX_ELAPSED_TIME: 経過時間が最も長い計画。

- MAX_BUFFER_GETS: バッファ取得回数が最も多い計画。

- MAX_DISK_READS: ディスク読取り回数が最も多い計画。

- MAX_DIRECT_WRITES: 直接書込み回数が最も多い計画。

- MAX_OPTIMIZER_COST: オプティマイザ・コストが最も大きい計画。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL。

spa_task_name

パフォーマンスの低下をチューニングする必要があるSQLパフォーマンス・アナライザ・タスクの名前。

spa_task_owner

指定したSQLパフォーマンス・アナライザ・タスクの所有者。現行のユーザーの場合はNULL。

spa_compare_exec

SQLパフォーマンス・アナライザ・タスクのパフォーマンス比較試行の実行名。NULLの場合、指定したSQLパフォーマンス・アナライザ・タスクの最新の実行、タイプCOMPARE PERFORMANCEを使用します。

con_name

チューニング・タスクのコンテナを指定します。セマンティクスはファンクションの形式によって、次のように異なります。

- SQLテキスト形式の場合、このパラメータでは、SQLチューニング・アドバイザによるチューニング対象のSQL文が含まれるコンテナを指定します。NULL (デフォルト)の場合、SQLチューニング・アドバイザは現在のコンテナを使用します。

- SQL ID形式の場合、このパラメータでは、データベースがチューニング対象のSQL文を取得するコンテナを指定します。SQLチューニング・アドバイザはこのコンテナの文をチューニングします。NULLの場合、データベースでは、チューニングに現在のPDBを使用し、SQL文を実行するすべての有効なコンテナのカーソル・キャッシュから文を取得し、コンテナ内で最も非効率な文をチューニングします。

- AWR形式の場合、このパラメータでは、データベースがチューニング対象のSQL文を取得するAWRデータが含まれるコンテナを指定します。SQLチューニング・アドバイザはこのコンテナの文をチューニングします。NULLの場合、データベースでは、チューニングに現在のPDBを使用し、このSQL文を含むすべての有効なコンテナのAWRから文を取得し、コンテナ内で最も非効率な文をチューニングします。

すべてのファンクション形式で、次のことが当てはまります。

- CDB以外の場合、このパラメータは無視されます。

- PDBの場合、このパラメータはNULLであるか、またはPDBのコンテナ名と一致する必要があります。それ以外の場合はエラーが発生します。

- CDBルートの場合、このパラメータはNULLであるか、またはこのCDBのコンテナ名と一致する必要があります。それ以外の場合はエラーが発生します。

戻り値

ユーザーごとに一意のSQLチューニング・タスク名(2人の異なるユーザーが自分のアドバイザ・タスクに同じ名前を付けることはできます)。

使用上の注意

SQLチューニング・セットを使用するこのサブプログラムの形式に関して、このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

例

VARIABLE stmt_task VARCHAR2(64);
VARIABLE sts_task  VARCHAR2(64);
VARIABLE spa_tune_task VARCHAR2(64);

SQLテキスト形式を使用したチューニング・タスクの作成

EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK( -
sql_text => 'select quantity_sold from sales s, times t where s.time_id = t.time_id and s.time_id = TO_DATE(''24-NOV-00'')');

SQL ID形式を使用したチューニング・タスクの作成

EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24');

-- tune in limited scope
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24', -
scope => 'LIMITED');

-- only give 10 minutes for tuning statement
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24', -
time_limit => 600);

AWRスナップショット形式を使用したチューニング・タスクの作成

EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(begin_snap => 1, -
end_snap => 2, sql_id => 'ay1m3ssvtrh24');

SQLチューニング・セット形式を使用したチューニング・タスクの作成

-- First we need to load an STS, then tune it
-- Tune our statements in order by buffer gets, time limit of one hour
-- the default ranking measure is elapsed time.
EXEC :sts_task := DBMS_SQLTUNE.CREATE_TUNING_TASK( -
sqlset_name  => 'my_workload', -
rank1        => 'BUFFER_GETS', -
time_limit   => 3600, -
description  => 'tune my workload ordered by buffer gets');

SPAタスク形式を使用したチューニング・タスクの作成

-- Tune the SQLs that were reported as having regressed from the compare
-- performance execution of the SPA task named task_123
EXEC :spa_tune_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(
spa_task_name     => 'task_123',
spa_task_owner    => 'SCOTT',
spa_compare_exec  => 'exec1');

DELETE_SQLSETプロシージャ

このプロシージャは、SQL文のセットをSQLチューニング・セットから削除します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.DELETE_SQLSET (
sqlset_name   IN  VARCHAR2,
basic_filter  IN  VARCHAR2 := NULL,
sqlset_owner  IN  VARCHAR2 := NULL);

パラメータ

表154-19 DELETE_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。この基本フィルタはSQLチューニング・セットのコンテンツ上でwhere句として使用され、目的のSQLのサブセットをチューニング・セットから選択します。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL。

例

-- Delete all statements in a sql tuning set.
EXEC DBMS_SQLTUNE.DELETE_SQLSET(sqlset_name   => 'my_workload');

-- Delete all statements in a sql tuning set which ran for less than a second
EXEC DBMS_SQLTUNE.DELETE_SQLSET(sqlset_name   => 'my_workload', -
basic_filter  => 'elapsed_time < 1000000');

DROP_SQL_PROFILEプロシージャ

このプロシージャは、データベースから名前付きSQLプロファイルを削除します。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.DROP_SQL_PROFILE (
name          IN  VARCHAR2,
ignore        IN  BOOLEAN  := FALSE);

パラメータ

表154-20 DROP_SQL_PROFILEプロシージャのパラメータ

パラメータ

説明

name

削除するSQLプロファイルの名前(必須)。大文字と小文字が区別されます。

ignore

オブジェクトが存在しないために起こるエラーは無視されます。

使用上の注意

"DROP ANY SQL PROFILE"権限が必要です。

例

-- Drop the profile:
EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE(:pname);

DROP_SQLSETプロシージャ

このプロシージャは、SQLチューニング・セットがアクティブでない場合はそれを削除します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.DROP_SQLSET (
sqlset_name   IN  VARCHAR2,
sqlset_owner  IN  VARCHAR2 := NULL);

パラメータ

表154-21 DROP_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL。

使用上の注意

SQLチューニング・セットは、1つ以上のクライアントが参照している場合は削除できません。

例

-- Drop the sqlset.
EXEC DBMS_SQLTUNE.DROP_SQLSET ('my_workload');

DROP_TUNING_TASKプロシージャ

このプロシージャは、SQLチューニング・タスクを削除します。タスクおよびすべての結果データは削除されます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.DROP_TUNING_TASK (
task_name         IN VARCHAR2);

パラメータ

表154-22 DROP_TUNING_TASKプロシージャのパラメータ

パラメータ

説明

task_name

削除するチューニング・タスクの名前。

EXECUTE_TUNING_TASKファンクションおよびプロシージャ

このファンクションおよびプロシージャは、以前に作成したチューニング・タスクを実行します。ファンクションとプロシージャの両方とも、新しいタスク実行のコンテキストで実行されます。ファンクションのバージョンは新しい実行名を戻す点が異なります。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.EXECUTE_TUNING_TASK (
task_name         IN VARCHAR2,
execution_name    IN VARCHAR2               := NULL,
execution_params  IN dbms_advisor.argList   := NULL,
execution_desc    IN VARCHAR2               := NULL)
RETURN VARCHAR2;

DBMS_SQLTUNE.EXECUTE_TUNING_TASK (
task_name         IN VARCHAR2,
execution_name    IN VARCHAR2               := NULL,
execution_params  IN dbms_advisor.argList   := NULL,
execution_desc    IN VARCHAR2               := NULL);

パラメータ

表154-23 EXECUTE_TUNING_TASKファンクションおよびプロシージャのパラメータ

パラメータ

説明

task_name

実行するチューニング・タスクの名前。

execution_name

実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。

execution_params

指定した実行のパラメータ(名前、値)のリスト。実行パラメータは、指定した実行に対してのみ影響します。これらのパラメータは、(SET_TUNING_TASK_PARAMETERプロシージャを使用して設定された)タスクに格納されているパラメータの値より優先されます。

execution_desc

実行について説明する256文字の長さの文字列。

使用上の注意

チューニング・タスクは、リセットせずに複数回実行できます。

例

EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task);

IMPLEMENT_TUNING_TASKファンクション

このファンクションは、SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。このサブプログラムをコールすることは、SCRIPT_TUNING_TASKファンクションをコールしてからスクリプトを実行することと同じです。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.IMPLEMENT_TUNING_TASK (
task_name      IN VARCHAR2,
rec_type       IN VARCHAR2 := REC_TYPE_SQL_PROFILES,
owner_name     IN VARCHAR2 := NULL,
execution_name IN VARCHAR2 := NULL);

パラメータ

表154-24 IMPLEMENT_TUNING_TASKファンクションのパラメータ

パラメータ

説明

task_name

リコメンデーションを実装するチューニング・タスクの名前。

rec_type

実装するリコメンデーションのタイプをフィルタします。現在は'PROFILES'のみがサポートされています。

owner_name

関連するチューニング・タスクの所有者。現行のユーザーの場合はNULL。

execution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に対するリコメンデーションが実装されます。

INTERRUPT_TUNING_TASKプロシージャ

このプロシージャは、現在実行中のチューニング・タスクを中断します。このタスクは、通常の終了と同様に操作を終了するため、ユーザーは中間結果にアクセスできます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.INTERRUPT_TUNING_TASK (
task_name         IN VARCHAR2);

パラメータ

表154-25 INTERRUPT_TUNING_TASKプロシージャのパラメータ

パラメータ

説明

task_name

中断するチューニング・タスクの名前。

例

EXEC DBMS_SQLTUNE.INTERRUPT_TUNING_TASK(:my_task);

LOAD_SQLSETプロシージャ

このプロシージャは、選択したSQLのセットをSQLチューニング・セットに入力します。このプロシージャを複数回コールすると、新しいSQL文の追加または既存の文の属性の置換を行うことができます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.LOAD_SQLSET (
sqlset_name       IN  VARCHAR2,
populate_cursor   IN  sqlset_cursor,
load_option       IN VARCHAR2 := 'INSERT',
update_option     IN VARCHAR2 := 'REPLACE',
update_condition  IN VARCHAR2 :=  NULL,
update_attributes IN VARCHAR2 :=  NULL,
ignore_null       IN BOOLEAN  :=  TRUE,
commit_rows       IN POSITIVE :=  NULL,
sqlset_owner      IN VARCHAR2 := NULL);

パラメータ

表154-26 LOAD_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

入力先のSQLチューニング・セットの名前。

populate_cursor

入力に使用するカーソル参照。

load_option

SQLチューニング・セットへの文のロード方法を指定します。有効な値は、次のとおりです。

- INSERT(デフォルト): 新しい文のみを追加します。

- UPDATE: 既存のSQL文を更新します。新しい文は無視されます。

- MERGE: 他の2つのオプションを組み合せたものです。このオプションを指定すると、新しい文の挿入および既存の文の情報の更新が行われます。

update_option

既存の文の更新方法を指定します。このパラメータは、load_optionが'UPDATE'または'MERGE'に指定されている場合のみ考慮されます。有効な値は、次のとおりです。

- REPLACE(デフォルト): 新しい統計、バインド・リスト、オブジェクト・リストなどを使用して文を更新します。

- ACCUMULATE: 可能な場合(elapsed_timeなどの統計などの場合)は、属性を組み合せ、可能でない場合(モジュール、アクションなどの場合)は、古い値を新しく指定した値に置き換えます。累積が可能なSQL文の属性には、elapsed_time、buffer_gets、direct_writes、disk_reads、row_processed、fetches、executions、end_of_fetch_count、stat_periodおよびactive_stat_periodがあります。

update_condition

更新操作を実行するwhere句を指定します。更新操作は、指定条件がTRUEの場合にのみ実行されます。条件によって、データのソースまたは宛先のいずれかを参照できます。条件では、次の接頭辞を使用してソースまたは宛先の属性を参照する必要があります。

- OLD: SQLチューニング・セット(宛先)の文の属性を参照します。

- NEW: 入力文(ソース)の文属性を参照します。

update_attributes

マージ操作時または更新操作時に更新するSQL文の属性のリストを指定します。有効な値は、次のとおりです。

- NULL(デフォルト): 入力カーソルの内容(実行コンテキストは除く)。モジュール、アクションなどの実行コンテキストを除いた場合のALLと同じです。

- BASIC: 統計およびバインドのみ。

- TYPICAL: BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます。

- ALL: 実行コンテキスト(モジュール、アクションなど)も含むすべての属性。

- 更新する属性名のカンマ区切りリスト: EXECUTION_CONTEXT、EXECUTION_STATISTICS、BIND_LIST、OBJECT_LIST、SQL_PLAN、SQL_PLAN_STATISTICS(SQL_PLAN + 行ソース統計に類似)。

ignore_null

TRUEに設定すると、新しい値がNULLの場合、属性は更新されません。つまり、意図しないかぎり、NULL値で上書きされることはありません。

commit_rows

数値を指定すると、その数の文が挿入されるたびにロードがコミットされます。NULLを指定すると、操作の最後に1回のみロードがコミットされます。この引数に値を指定すると、SQLチューニング・セットのロード操作の進行状況をDBA_/USER_SQLSETビューで監視できます。STATEMENT_COUNTの値は、新しいSQL文がロードされるたびに増加します。

sqlset_owner

SQLチューニング・セットの所有者または現行のスキーマ所有者。現行の所有者の場合はNULL。

例外

- sqlset_nameが無効の場合、対応するSQLチューニング・セットが存在しない場合、またはpopulate_cursorが正しくないために実行できない場合、このプロシージャはエラーを戻します。

- 指定したフィルタが無効な場合も例外が発生します。フィルタは、解析できない場合(sqlset_rowに存在しない属性を参照している場合など)またはユーザーの権限に違反している場合に無効になる可能性があります。

使用上の注意

入力populate_cursorの行は、SQLSET_ROWタイプである必要があります。

例

この例では、SQLチューニング・セットを作成し、そのチューニング・セットに経過時間が5秒以上のすべての共有SQL領域文を入力します((アプリケーション・ユーザーのワークロードをシミュレートするための)SYSスキーマに属する文は除きます)。SQL文のすべての属性を選択して、デフォルト・モードでチューニング・セットにロードします(SQLチューニング・セットは空であるため、このデフォルト・モードには新しい文のみがロードされます)。

-- create the tuning set
EXEC DBMS_SQLTUNE.CREATE_SQLSET('my_workload');
-- populate the tuning set from the shared SQL area
DECLARE
cur DBMS_SQLTUNE.SQLSET_CURSOR;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(
DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
'parsing_schema_name <> ''SYS'' AND elapsed_time > 5000000',
NULL, NULL, NULL, NULL, 1, NULL,
'ALL')) P;

DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name => 'my_workload',
populate_cursor => cur);

END;
/

ここで、ワークロード・リポジトリ(AWR)に格納されている内容でこの情報を増補するとします。現在キャッシュに入っているカーソルは、スナップショットが取られたことで期限切れしているとみなされるため、チューニング・セットにupdate_optionとして'ACCUMULATE'を入力します。

AWRで取得されるすべての文が重要とみなされるため、elapsed_timeフィルタは省略します。ただし、再帰的SQLを回避するために、SYS解析のカーソルは破棄します。

DECLARE
cur DBMS_SQLTUNE.SQLSET_CURSOR;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(
DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(1,2,
'parsing_schema_name <> ''SYS''',
NULL, NULL,NULL,NULL,
1,
NULL,
'ALL')) P;

DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name => 'my_workload',
populate_cursor => cur,
Using DBMS_SQLTUNE
load_option => 'MERGE',
update_option => 'ACCUMULATE');
END;

次の例は、新しい文のみをワークロード・リポジトリから挿入し、SQLチューニング・セットにすでに存在する文はスキップする単純なロード操作です。LOAD_SQLSETプロシージャのload_option引数のデフォルト値は'INSERT'であることに注意してください。

DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(1,2)) P;

DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name => 'my_workload',
populate_cursor => cur);
END;
/

次の例は、UPDATEオプションを指定したロード操作を示します。これによって、SQLチューニング・セットにすでに存在する文は更新されますが、新しい文は追加されません。デフォルトでは、古い統計が新しい値に置き換えられます。

DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE) P;

DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name => 'my_workload',
populate_cursor => cur,
load_option => 'UPDATE');
END;
/

PACK_STGTAB_SQLPROFプロシージャ

このプロシージャは、SYSスキーマからステージング表にプロファイル・データをコピーします。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (
profile_name          IN VARCHAR2 := '%',
profile_category      IN VARCHAR2 := 'DEFAULT',
staging_table_name    IN VARCHAR2,
staging_schema_owner  IN VARCHAR2 := NULL);

パラメータ

表154-27 PACK_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ

説明

profile_name

パックするプロファイルの名前(%ワイルドカードを使用可、大/小文字区別)。

profile_category

パックするプロファイルのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。

staging_table_name

使用する表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。必須です。

staging_schema_owner

表が存在するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合はNULL。

使用上の注意

- このプロシージャを実行するには、ステージング表に対するADMINISTER SQL MANAGEMENT OBJECT権限およびINSERT権限が必要です。

- このファンクションは、各SQLプロファイルをパックした後にCOMMITを発行するため、実行中にエラーが発生した場合は、ステージング表の行を削除して、ステージング表を消去してください。

例

DEFAULTカテゴリ内のプロファイルのみをステージング表に入れます。これは、このシステム上でデフォルトで使用されるすべてのプロファイルに該当します。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (staging_table_name => 'PROFILE_STGTAB');

次の例でも、すべてのプロファイルがステージング表に入れられます。この例では、現在デフォルトで使用されていない、別のカテゴリ内のプロファイルが(テストなどのために)移動されることに注意してください。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (profile_category => '%', -
staging_table_name => 'PROFILE_STGTAB');

PACK_STGTAB_SQLSETプロシージャ

このプロシージャは、1つ以上のSQLチューニング・セットを、SYSスキーマ内のそれぞれの場所からCREATE_STGTAB_SQLSETプロシージャによって作成されたステージング表にコピーします。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.PACK_STGTAB_SQLSET (
sqlset_name          IN VARCHAR2,
sqlset_owner         IN VARCHAR2 := NULL,
staging_table_name   IN VARCHAR2,
staging_schema_owner IN VARCHAR2 := NULL,
db_version           IN NUMBER := NULL);

パラメータ

表154-28 PACK_STGTAB_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

パックするSQLチューニング・セットの名前(%ワイルドカードを使用可、大/小文字区別)。

sqlset_owner

パックするSQLチューニング・セットのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。

staging_table_name

使用する表の名前(大/小文字区別)。

staging_schema_owner

表が存在するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL。

db_version

ステージング表の形式を決定するデータベース(DB)のバージョン。ユーザーは、古いDBバージョンのステージング表を作成して、STSを古いDBバージョンにエクスポートすることもできます。次のいずれかの値です。

- NULL(デフォルト): 現行のDBバージョン。

- STS_STGTAB_10_2_VERSION: 10.2 DBバージョン

- STS_STGTAB_11_1_VERSION: 11.1 DBバージョン

- STS_STGTAB_11_2_VERSION: 11.2 DBバージョン

使用上の注意

- このプロシージャを複数回コールすると、複数のSQLチューニング・セットを移動できます。これによって、ユーザーは、入力済のステージング表を別のシステムに任意の方法(データベース・リンク、Oracle Data Pumpなど)で移動できます。その後、UNPACK_STGTAB_SQLSETプロシージャをコールして、そのシステムにSQLチューニング・セットを作成できます。

- このファンクションは、各SQLチューニング・セットをパックした後にCOMMITを発行するため、実行中にエラーが発生した場合は、ステージング表の行を削除して、ステージング表を消去してください。

例

システム上のすべてのSQLチューニング・セットをステージング表に入れます。

-- ステージング表を作成する方法は、「CREATE_STGTAB_SQLSETプロシージャ」を参照してください。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(sqlset_name        => '%', -
sqlset_owner       => '%', -
staging_table_name => 'STGTAB_SQLSET');

現行のユーザーが所有するSQLチューニング・セットのみをステージング表に入れます。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
sqlset_name           => '%',
staging_table_name    => 'STGTAB_SQLSET');

特定のSQLチューニング・セットをパックします。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
sqlset_name           => 'my_workload', -
staging_table_name    => 'STGTAB_SQLSET');

2つ目のSQLチューニング・セットをパックします。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
sqlset_name           => 'workload_subset', -
staging_table_name    => 'STGTAB_SQLSET');

Oracle Database 10g リリース2 (10.2)に作成したステージング表STGTAB_SQLSETに、STS my_workloadをパックします。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
sqlset_name          => 'workload_subset',
staging_table_name   => 'STGTAB_SQLSET',
db_version           => DBMS_SQLTUNE.STS_STGTAB_10_2_VERSION);

Oracle Database 11g リリース1 (11.1)に作成したステージング表STGTAB_SQLSETに、STS my_workloadをパックします。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
sqlset_name          => 'workload_subset',
staging_table_name   => 'STGTAB_SQLSET',
db_version           => DBMS_SQLTUNE.STS_STGTAB_11_1_VERSION);

REMAP_STGTAB_SQLPROFプロシージャ

このプロシージャによって、DBAは、ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更できます。このプロシージャは、プロファイルのカテゴリを変更するために使用できます。同じ名前のプロファイルがシステム上にある場合、プロファイルの名前を変更するために使用できます。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REMAP_STGTAB_SQLPROF (
old_profile_name      IN VARCHAR2,
new_profile_name      IN VARCHAR2 := NULL,
new_profile_category  IN VARCHAR2 := NULL,
staging_table_name    IN VARCHAR2,
staging_schema_owner  IN VARCHAR2 := NULL);

パラメータ

表154-29 REMAP_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ

説明

old_profile_name

再マップ操作の対象となるプロファイルの名前(大/小文字区別)。

new_profile_name

プロファイルの新しい名前(大/小文字区別)。変更しない場合はNULL。

new_profile_category

プロファイルの新しいカテゴリ(大/小文字区別)。変更しない場合はNULL。

staging_table_name

再マップ操作を行う表の名前(大/小文字区別)。必須です。

staging_schema_owner

表が存在するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL。

使用上の注意

このプロシージャを使用するには、ステージング表に対するUPDATE権限が必要です。

例

アンパックする前にプロファイルの名前を変更して、競合を回避します。

EXEC DBMS_SQLTUNE.REMAP_STGTAB_SQLPROF(old_profile_name    => :pname,          -
new_profile_name    => 'IMP' || :pname, -
staging_table_name  => 'PROFILE_STGTAB');

ステージング表のSQLプロファイルをインポートする前に、そのプロファイルのカテゴリを'TEST'に変更します。これによって、ユーザーは、プロファイルを新しいシステムでアクティブにする前にテストを行うことができます。

EXEC DBMS_SQLTUNE.REMAP_STGTAB_SQLPROF(old_profile_name     => :pname,       -
new_profile_category => 'TEST',       -
staging_table_name   => 'PROFILE_STGTAB');

REMAP_STGTAB_SQLSETプロシージャ

このプロシージャは、ホスト・システム上とは異なる値でアンパックできるように、ステージング表内のチューニング・セットの名前および所有者を変更します。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REMAP_STGTAB_SQLSET (
old_sqlset_name        IN VARCHAR2,
old_sqlset_owner       IN VARCHAR2 := NULL,
new_sqlset_name        IN VARCHAR2 := NULL,
new_sqlset_owner       IN VARCHAR2 := NULL,
staging_table_name     IN VARCHAR2,
staging_schema_owner   IN VARCHAR2 := NULL
old_con_dbid           IN NUMBER   := NULL,
new_con_dbid           IN NUMBER   := NULL);
);

パラメータ

表154-30 REMAP_STGTAB_SQLSETプロシージャのパラメータ

パラメータ

説明

old_sqlset_name

再マップ操作の対象となるチューニング・セットの名前。ワイルドカードはサポートされていません。

old_sqlset_owner

再マップ操作の対象となるチューニング・セット所有者の名前。現行のスキーマ所有者の場合はNULL。

new_sqlset_name

チューニング・セットの新しい名前。チューニング・セット名を変更しない場合はNULL。

new_sqlset_owner

チューニング・セットの新しい所有者。所有者を変更しない場合はNULL。

staging_table_name

再マップ操作を行う表の名前(大/小文字区別)。

staging_schema_owner

ステージング表の所有者の名前(大/小文字区別)。現行のスキーマ所有者の場合はNULL。

old_con_dbid

新しいコンテナDBIDに再マップされる古いコンテナDBID。同じコンテナDBIDを使用するにはNULLを指定します。再マップを成功させるには、old_con_dbidとnew_con_dbidの両方を指定する必要があります。

new_con_dbid

古いコンテナDBIDと置き換える新しいコンテナDBID。同じコンテナDBIDを使用するにはNULLを指定します。再マップを成功させるには、old_con_dbidとnew_con_dbidの両方を指定する必要があります。

使用上の注意

このプロシージャを複数回コールすると、複数のチューニング・セットの名前または所有者を再マップできます。このプロシージャで処理できるチューニング・セットは、1回のコールで1つのみであることに注意してください。

例

-- Change the name of an STS in the staging table before we unpack it.
EXEC DBMS_SQLTUNE.REMAP_STGTAB_SQLSET(old_sqlset_name    => 'my_workload', -
old_sqlset_owner   => 'SH', -
new_sqlset_name    => 'imp_workload', -
staging_table_name => 'STGTAB_SQLSET');

-- Change the owner of an STS in the staging table before we unpack it.
EXEC DBMS_SQLTUNE.REMAP_STGTAB_SQLSET(old_sqlset_name    => 'imp_workload', -
old_sqlset_owner   => 'SH', -
new_sqlset_owner   => 'SYS', -
staging_table_name => 'STGTAB_SQLSET');

REMOVE_SQLSET_REFERENCEプロシージャ

このプロシージャは、SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REMOVE_SQLSET_REFERENCE (
sqlset_name   IN  VARCHAR2,
reference_id  IN  NUMBER);

パラメータ

表154-31 REMOVE_SQLSET_REFERENCEプロシージャのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

reference_id

削除する参照の識別子。

例

特定のSQLチューニング・セットの使用を終了した後、そのSQLチューニング・セットに関する参照を削除して、再度書込み可能にすることができます。

EXEC DBMS_SQLTUNE.REMOVE_SQLSET_REFERENCE( -
sqlset_name   => 'my_workload', -
reference_id  => :rid);

特定のSQLチューニング・セットに関するすべての参照を確認するには、ビューUSER/DBA_SQLSET_REFERENCESを使用します。

REPORT_AUTO_TUNING_TASKファンクション

このファンクションは、自動チューニング・タスクによるレポートを表示します。このファンクションは、一定範囲のタスク実行についてレポートし、REPORT_TUNING_TASKファンクションは単一の実行についてレポートします。このファンクションは、DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASKが優先されるOracle Database 11gリリース2(11.2)では非推奨となっています。

関連項目:

- このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

- REPORT_AUTO_TUNING_TASKファンクション

構文

DBMS_SQLTUNE.REPORT_AUTO_TUNING_TASK(
begin_exec     IN VARCHAR2  := NULL,
end_exec       IN VARCHAR2  := NULL,
type           IN VARCHAR2  := TYPE_TEXT,
level          IN VARCHAR2  := LEVEL_TYPICAL,
section        IN VARCHAR2  := SECTION_ALL,
object_id      IN NUMBER    := NULL,
result_limit   IN NUMBER    := NULL)
RETURN CLOB;

パラメータ

表154-32 REPORT_AUTO_TUNING_TASKファンクションのパラメータ

パラメータ

説明

begin_exec

レポートを開始する実行の名前。NULLの場合は、最新の実行に関するレポートが取得されます。

end_exec

レポートを終了する実行の名前。NULLの場合は、最新の実行に関するレポートが取得されます。

type

作成するレポートのタイプ。設定可能な値は、テキストのレポートを作成するTYPE_TEXTです。

level

レポートの詳細なレベル。

- LEVEL_BASIC: 簡単なバージョンのレポート。アドバイザによって実行されるアクションに関する情報を表示します。

- LEVEL_TYPICAL: 分析対象の各文に関する情報(実装されていない要求など)を表示します。

- LEVEL_ALL: 高度に詳細なレポート・レベル。スキップされた文に関する注釈も表示します。

section

オプションで、レポートを単一のセクションに制限できます(すべてのセクションに関するレポートの場合は、ALLを指定します)。

- SECTION_SUMMARY: サマリー情報

- SECTION_FINDINGS: チューニングの結果

- SECTION_PLAN: EXPLAIN PLAN

- SECTION_INFORMATION: 一般的な情報

- SECTION_ERROR: エラーが発生した文

- SECTION_ALL: すべての文

object_id

レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、NULLを指定します。単一の実行を対象とするレポートでのみ有効です。

result_limit

レポートに表示されるSQL文の最大数。

戻り値

必要なレポートが含まれているCLOB。

REPORT_SQL_DETAILファンクション

このファンクションは、特定のSQLIDに関するレポートを作成します。各SQLIDにV$ビューおよびAWRから取得した様々な統計情報と詳細を付与します。

関連項目:
このグループの他のサブプログラムについては、「SQLパフォーマンス・レポート・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REPORT_SQL_DETAIL (
sql_id                   IN  VARCHAR2   DEFAULT NULL,
sql_plan_hash_value      IN  NUMBER     DEFAULT NULL,
start_time               IN  DATE       DEFAULT NULL,
duration                 IN  NUMBER     DEFAULT NULL,
inst_id                  IN  NUMBER     DEFAULT NULL,
dbid                     IN  NUMBER     DEFAULT NULL,
event_detail             IN  VARCHAR2   DEFAULT 'YES',
bucket_max_count         IN  NUMBER     DEFAULT 128,
bucket_interval          IN  NUMBER     DEFAULT NULL,
top_n                    IN  NUMBER     DEFAULT 10,
report_level             IN  VARCHAR2   DEFAULT 'TYPICAL',
type                     IN  VARCHAR2   DEFAULT 'ACTIVE')
RETURN CLOB;

パラメータ

表154-33 REPORT_SQL_DETAILファンクションのパラメータ

パラメータ

説明

sql_id

監視情報を表示する対象のSQLID。NULL(デフォルト)の場合、現在のセッションで最後に実行されたSQL文のSQLIDに関する統計情報を表示します。

sql_plan_hash_value

特定のplan_hash_valueに対するSQL統計情報および詳細を表示します。NULL(デフォルト)の場合、SQL_IDのすべての計画に対する統計情報および詳細を表示します。

start_time

指定すると、この時刻に開始されるSQLアクティビティを(GV$ACTIVE_SESSION_HISTORYから)表示します。Oracle RACでは、最小のstart_timeは、すべてのインスタンスにおけるインメモリーASHバッファの最も早いsample_timeです。NULL(デフォルト)の場合、現在の時刻の1時間前です。

duration

レポートに対するアクティビティの継続時間(秒)。NULL(デフォルト)の場合、1時間の値を使用します。

inst_id

SQLの詳細を取得するターゲット・インスタンス。NULLの場合、すべてのインスタンスのデータを使用します。0または-1の場合は、現行のインスタンスが使用されます。

dbid

SQLの詳細を取得するDBID。NULLの場合は、現行のDBIDが使用されます。

event_detail

'NO'に設定すると、アクティビティはwait_classのみによって集計されます。(wait_class、event_name)によって集計するには、'YES'(デフォルト)を使用します。

bucket_max_count

指定すると、レポートで作成されるヒストグラム・バケットの最大数になります。指定しない場合は、128の値が使用されます。

bucket_interval

指定すると、すべてのヒストグラム・バケットの正確な時間間隔(秒)を表します。指定すると、bucket_max_countは無視されます。

top_n

最上位のディメンション・セクションにディメンションごとに表示するエントリの数を制御します。指定しない場合は、デフォルト値の10が使用されます。

report_level

レポートの詳細なレベル('BASIC'、'TYPICAL'または'ALL'のいずれか)です。デフォルトでは、'TYPICAL'を想定します。意味は下で説明しています。

また、レポートの個々のセクションは、+/- section_nameを使用して、有効または無効にすることもできます。複数のセクションが定義されます。

- 'TOP': SQL文のASHディメンションの上限値を表示します。デフォルトはONです。

- 'SPM': SQL文の既存の計画ベースラインを表示します。デフォルトはOFFです。

- 'MISMATCH': 新しい子カーソルを作成する理由を表示します(条件違反を共有)。デフォルトはOFFです。

- 'STATS': GV$SQLAREA_PLAN_HASHから計画ごとにSQL実行統計情報を表示します。デフォルトはONです。

- 'ACTIVITY': SQL文の各計画のASHからトップ・アクティビティを表示します。デフォルトはONです。

- 'ACTIVITY_ALL': SQL文に対する計画の各行のASHからトップ・アクティビティを表示します。デフォルトはOFFです。

- 'HISTOGRAM': SQL文の各計画のアクティビティ・ヒストグラムを表示します(計画タイムライン・ヒストグラム)。デフォルトはONです。

- 'SESSIONS': SQL文の各計画の上位セッションに関するアクティビティを表示します。デフォルトはOFFです。

- 'MONITOR': 実行計画ごとに1つの監視されたSQL実行を表示します。デフォルトはONです。

- 'XPLAN': 実行計画を表示します。デフォルトはONです。

- 'BINDS': 取得されたバインド・データを表示します。デフォルトはONです。

また、SQLテキストは異なるレベルで指定できます。

- -SQL_TEXT: レポートにSQLテキストなし。

- +SQL_TEXT: GV$SQL_MONITORに格納される最初の2000文字までの部分的なSQLテキストが有効。

- -SQL_FULLTEXT: 完全なSQLテキストなし(+SQL_TEXT)。

- +SQL_FULLTEXT: 完全なSQLテキストを表示(デフォルト値)

3つのトップ・レベルのレポート・レベルの意味は次のとおりです。

- NONE: 可能なかぎり最小

- BASIC: SQL_TEXT+STATS+ACTIVITY+HISTOGRAM

- TYPICAL: SQL_FULLTEXT+TOP+STATS+ACTIVITY+HISTOGRAM+XPLAN+MONITOR

- ALL: すべて

これら4つのレベルのうち1レベルのみを指定でき、指定する場合は、REPORT_LEVEL文字列の先頭にある必要があります。

type

レポート形式: デフォルトは'ACTIVE'です。'XML'も可能です(「使用上の注意」を参照)。

戻り値

必要なレポートが含まれているCLOB。

使用上の注意

- ACTIVEレポートは、Enterprise Managerと類似した豊富な対話型ユーザー・インタフェースを備えていますが、EMのインストールは必要ありません。レポート・ファイルはHTML形式で作成されるため、最近のほとんどのブラウザで解釈可能です。アクティブ・レポートに機能を付与するコードは、最初に表示したときにWebブラウザにより透過的にダウンロードされるため、表示には外部接続が必要です。

- 実行者は次のビューに対してSELECTまたはREAD権限が必要です。

- V$SESSION

- DBA_ADVISOR_FINDINGS

- V$DATABASE

- GV$ASH_INFO

- GV$ACTIVE_SESSION_HISTORY

- GV$SQLAREA_PLAN_HASH

- GV$SQL

- DBA_HIST_SNAPSHOT

- DBA_HIST_WR_CONTROL

- DBA_HIST_ACTIVE_SESS_HISTORY

- DBA_HIST_SQLSTAT

- DBA_HIST_SQL_BIND_METADATA

- DBA_HIST_SQLTEXT

- DBA_SQL_PLAN_BASELINES

- DBA_SQL_PROFILES

- DBA_ADVISOR_TASKS

- DBA_SERVICES

- DBA_USERS

- DBA_OBJECTS

- DBA_PROCEDURES

- 実行者にはDBMS_XPLANパッケージに対するEXECUTE権限が必要です。

REPORT_SQL_MONITORファンクション

このファンクションは、対象の文の実行にかわって収集した監視情報に関するレポート(テキスト、単純なHTML、アクティブなHTMLまたはXML)を作成します。

関連項目:
このグループの他のサブプログラムについては、「リアルタイムSQL監視」を参照してください。

構文

DBMS_SQLTUNE.REPORT_SQL_MONITOR(
sql_id                    IN VARCHAR2  DEFAULT  NULL,
dbop_name                 IN VARCHAR2  DEFAULT  NULL,
dbop_exec_id              IN NUMBER    DEFAULT  NULL,
session_id                IN NUMBER    DEFAULT  NULL,
session_serial            IN NUMBER    DEFAULT  NULL,
sql_exec_start            IN DATE      DEFAULT  NULL,
sql_exec_id               IN NUMBER    DEFAULT  NULL,
inst_id                   IN NUMBER    DEFAULT  NULL,
start_time_filter         IN DATE      DEFAULT  NULL,
end_time_filter           IN DATE      DEFAULT  NULL,
instance_id_filter        IN NUMBER    DEFAULT  NULL,
parallel_filter           IN VARCHAR2  DEFAULT  NULL,
plan_line_filter          IN NUMBER    DEFAULT  NULL,
event_detail              IN VARCHAR2  DEFAULT  'YES',
bucket_max_count          IN NUMBER    DEFAULT  128,
bucket_interval           IN NUMBER    DEFAULT  NULL,
base_path                 IN VARCHAR2  DEFAULT  NULL,
last_refresh_time         IN DATE      DEFAULT  NULL,
report_level              IN VARCHAR2  DEFAULT 'TYPICAL',
type                      IN VARCHAR2  DEFAULT 'TEXT',
sql_plan_hash_value       IN NUMBER    DEFAULT  NULL)
RETURN CLOB;

パラメータ

表154-34 REPORT_SQL_MONITORファンクションのパラメータ

パラメータ

説明

sql_id

監視情報を表示する対象のSQL_ID。Oracleによって監視される最後の文をレポートする場合は、NULL(デフォルト)を使用します。

dbop_name

コンポジット・データベース操作の監視情報を表示する対象のDBOP_NAME。

dbop_exec_id

監視情報の表示対象であるコンポジット・データベース操作の実行ID。

session_id

NULL以外に設定すると、指定したセッションで実行される文のサブセットのみがこのパラメータの対象となります。デフォルトはNULLです。現行のセッションに対しては、USERENV('SID')を使用します。

session_serial

session_idパラメータに加えて、目的のセッション・インカネーションが対象となるように、セッションのシリアルを指定することもできます。session_idがNULLの場合、このパラメータは無視されます。

sql_exec_start

このパラメータは、sql_idも指定されている場合にのみsql_exec_idとともに適用できます。sql_idで識別される文が監視されていた場合、これらのパラメータを組み合せて使用すると、sql_idで識別される文の実行に関連する監視情報を表示できます。NULL(デフォルト)の場合、最後に監視されたSQLの実行のsql_idが表示されます。

sql_exec_id

このパラメータは、sql_idも指定されている場合にのみsql_exec_startとともに適用できます。sql_idで識別される文が監視されていた場合、これらのパラメータを組み合せて使用すると、sql_idで識別される文の実行に関連する監視情報を表示できます。NULL(デフォルト)の場合、最後に監視されたSQLの実行のsql_idが表示されます。

inst_id

指定したインスタンスで開始された文のみを対象とします。ログイン・インスタンスを対象とする場合は、-1を使用します。すべてのインスタンスを対象とする場合は、NULL(デフォルト)を指定します。

start_time_filter

NULL以外の場合は、指定した日付より後に記録された(GV$ACTIVE_SESSION_HISTORYの)アクティビティのみがレポートの対象となります。NULLの場合は、対象のSQL文の実行開始時に、レポート対象のアクティビティが開始されます。

end_time_filter

NULL以外の場合は、end_time_filterの日付より前に収集された(GV$ACTIVE_SESSION_HISTORYの)アクティビティのみがレポートに表示されます。NULLの場合は、対象のSQL文の実行終了時，または現行の時間(文が実行されている場合)に、レポート対象のアクティビティが終了されます。

instance_id_filter

複数のOracle Real Application Clusters(Oracle RAC)インスタンスにわたってパラレル実行が行われた場合にのみ適用されます。このパラメータを使用すると、指定したインスタンスのアクティビティのみをレポートできます。パラレル問合せが実行されたすべてのインスタンスに関するアクティビティを含めるには、NULL値(デフォルト)を使用します。

parallel_filter

パラレル実行にのみ適用され、パラレル実行に関連する処理(問合せコーディネータまたはパラレル実行サーバー、あるいはその両方)のサブセットのみのアクティビティを報告できるようにします。このパラメータの値は、次のいずれかになります。

- NULL: すべての処理を対象とします。

- [qc][servers(<svr_grp>[,] <svr_set>[,] <srv_num>)]: qcは問合せコーディネータを表し、servers()は対象とするPXサーバーを指定します。

次の例では、パラレル処理のサブセットを対象とする方法を示します。

- qc: 問合せコーディネータのみを対象とします。

- servers(1): グループ番号1に属するすべてのパラレル実行サーバーを対象とします。パラレルに実行される文には、メイン・サーバー・グループ(グループ番号1)が1つあり、パラレルに実行されるネストされた副問合せごとに1つのグループが追加されます。

- servers(,2): 任意のグループに属するすべてのパラレル実行サーバーを対象とします。ただし、各グループのセット1で実行されるサーバーのみです(各グループには、最大2セットのパラレル実行サーバーが含まれています)。

- servers(1,1): グループ1、セット1のみを対象とします。

- servers(1,2,4): グループ1、セット2、サーバー番号4のみを対象とします。この設定では、1つのパラレル・サーバー処理がレポートされます。

- qc servers(1,2,4): 問合せコーディネータも含めることによって、前述の設定と同じになります。

event_detail

値が'YES'(デフォルト)の場合は、レポート対象となるGV$ACTIVE_SESSION_HISTORYのアクティビティが、(wait_class, event_name)によって集計されます。wait_classでのみ集計するには、'NO'を使用します。

bucket_max_count

指定すると、レポートで作成されるヒストグラム・バケットの最大数になります。

bucket_interval

指定すると、すべてのヒストグラム・バケットの正確な時間間隔(秒)を表します。指定すると、bucket_max_countは無視されます。

base_path

外部ファイル(JavaスクリプトおよびフラッシュSWFファイル自体)にアクセスするためにフレックスHTML形式が必要なため、フレックスHTMLリソースのURLパス。

last_refresh_time

NULL(デフォルトではNULL)ではない場合、レポートが最後に取得された時刻(レポート・タグのSYSDATE属性を参照)。このオプションは、実行中の問合せのレポートを表示するため、およびレポートが定期的に更新される際に使用します。新しい情報または変更された情報のみが戻されるため、レポートのサイズを最適化します。特に、次が最適化されます。

- このオプションを指定すると、SQLテキストが戻されません。

- アクティビティ・ヒストグラムはその時点で交差するバケットで開始されます。last_refresh_timeがバケットの開始後でも、バケットの内容全体が戻されます。

report_level

レポートの詳細なレベル('NONE'、'BASIC'、'TYPICAL'または'ALL'のいずれか)です。デフォルトでは、'TYPICAL'を想定します。意味は下で説明しています。

また、レポートの個々のセクションは、+/- section_nameを使用して、有効または無効にすることもできます。複数のセクションが定義されます。

- 'XPLAN': EXPLAIN PLANを表示します。デフォルトはONです。

- 'PLAN': 計画監視統計を表示します。デフォルトはONです。

- 'SESSIONS': セッションの詳細を表示します。パラレル問合せにのみ適用され、デフォルトはONです。

- 'INSTANCE': インスタンスの詳細を表示します。パラレルおよびインスタンス間にのみ適用され、デフォルトはONです。

- 'PARALLEL': セッションおよびインスタンスの詳細を指定するための包括的なパラメータです。

- 'ACTIVITY' - グローバル・レベル、プラン・ライン・レベルおよびセッションまたはインスタンス・レベル(該当する場合)でアクティビティの要約を表示します。デフォルトはONです。

- 'BINDS' - 該当する場合にバインド情報を表示します。デフォルトはONです。

- 'METRICS' - 一定期間のメトリック・データ(CPU、IO、...)を表示します。デフォルトはONです。

- 'ACTIVITY_HISTOGRAM' - 全体的な問合せアクティビティのヒストグラムを表示します。デフォルトはONです。

- 'PLAN_HISTOGRAM' - プラン・ライン・レベルでアクティビティ・ヒストグラムを表示します。デフォルトはOFFです。

- 'OTHER' - その他の情報。デフォルトはONです。

また、SQLテキストは異なるレベルで指定できます。

- SQL_TEXT - レポートにSQLテキストなし。

- +SQL_TEXT: GV$SQL_MONITORに格納される最初の2000文字までの部分的なSQLテキストが有効。

- -SQL_FULLTEXT: 完全なSQLテキストなし(+SQL_TEXT)。

- +SQL_FULLTEXT: 完全なSQLテキストを表示(デフォルト値)

report_level(続き)

3つのトップ・レベルのレポート・レベルの意味は次のとおりです。

- NONE: 可能なかぎり最小

- +BASIC: SQL_TEXT-PLAN-XPLAN-SESSIONS-INSTANCE-ACTIVITY_HISTOGRAM-PLAN_HISTOGRAM-METRICS

- TYPICAL - PLAN_HISTOGRAMを除くすべて

- ALL: すべて

これら4つのレベルのうち1レベルのみを指定でき、指定する場合は、REPORT_LEVEL文字列の先頭にある必要があります。

type

レポート形式で、デフォルトは'TEXT'です。可能な値は、'TEXT'、'HTML'、'XML'または'ACTIVE'です(「使用上の注意」を参照)。

sql_plan_hash_value

指定したplan_hash_valueのあるSQL実行のみを対象にします。デフォルトはNULLです。

戻り値

必要なレポートが含まれているCLOB。

使用上の注意

- このレポートの対象となるSQL文の特徴を次に示します。

- Oracleで監視された最後のSQL(これはデフォルト動作のためパラメータの指定は必要ありません)。特定のセッションで実行され、さらにOracleで監視された最後のSQL。セッションは、セッションID、および必要に応じてシリアル番号によって識別されます。たとえば現行のセッションにはsession_id => USERENV ('SID')を使用し、セッションIDが20、シリアル番号が103のセッションにはsession_id=>20、session_serial=>103を使用します。特定の文の最後の実行は、sql_idによって識別されます。特定のSQL文の実行は、その実行キー(sql_id、sql_exec_startおよびsql_exec_id)によって識別されます。

- このレポートでは、次に示すいくつかの固定ビューで公開されるパフォーマンス・データが生成されます。このため、レポート・ファンクションを起動するには、これらの固定ビューからデータを選択する権限(SELECT_CATALOGロールなど)が必要です。

- GV$SQL_MONITOR

- GV$SQL_PLAN_MONITOR

- GV$SQL_PLAN

- GV$ACTIVE_SESSION_HISTORY

- GV$SESSION_LONGOPS

- GV$SQL

- bucket_max_countおよびbucket_intervalパラメータはアクティビティ・ヒストグラムを制御します。デフォルトでは、バケットの最大数が128に設定され、これに基づいてRDBMSでbucket_intervalを導出します。bucket_interval(値は秒単位)は、バケットの最大数を超えない許容最小限の2の累乗(最小は1秒)になるように計算されます。たとえば、問合せが600秒間実行された場合、600/8 = 74でありこれはバケットの最大数128より小さいので、RDBMSは8秒(2の累乗)のbucket_intervalを選択します。8秒より小さいと4秒になりますが、この場合は最大の128を超えるバケットになります。bucket_intervalを指定する場合は、その値がRDBMSで使用され、bucket_max_countからの導出は行われません。

- ACTIVEレポートは、Enterprise Managerと類似した豊富な対話型ユーザー・インタフェースを備えていますが、EMのインストールは必要ありません。レポート・ファイルはHTML形式で作成されるため、最近のほとんどのブラウザで解釈可能です。アクティブ・レポートに機能を付与するコードは、最初に表示したときにWebブラウザにより透過的にダウンロードされるため、表示には外部接続が必要です。

関連項目:
リアルタイムSQL監視の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

REPORT_SQL_MONITOR_LISTファンクション

このファンクションは、Oracleによって監視されるすべての文または文のサブセットのレポートを作成します。サブプログラムは、各文に対して、キー情報および関連付けられているグローバルな統計を付与します。

REPORT_SQL_MONITORファンクションを使用して、単一のSQL文に関する詳細な監視情報を取得します。

関連項目:
このグループの他のサブプログラムについては、「リアルタイムSQL監視」を参照してください。

構文

DBMS_SQLTUNE.REPORT_SQL_MONITOR_LIST(
sql_id                    IN VARCHAR2  DEFAULT  NULL,
session_id                IN NUMBER    DEFAULT  NULL,
session_serial            IN NUMBER    DEFAULT  NULL,
inst_id                   IN NUMBER    DEFAULT  NULL,
active_since_date         IN DATE      DEFAULT  NULL,
active_since_sec          IN NUMBER    DEFAULT  NULL,
last_refresh_time         IN DATE      DEFAULT  NULL,
report_level              IN VARCHAR2  DEFAULT  'TYPICAL',
auto_refresh              IN NUMBER    DEFAULT  NULL,
base_path                 IN VARCHAR2  DEFAULT  NULL,
type                      IN VARCHAR2  DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表154-35 REPORT_SQL_MONITOR_LISTファンクションのパラメータ

パラメータ

説明

sql_id

監視情報を表示する対象のSQL_ID。Oracleによって監視される最後の文をレポートする場合は、NULL(デフォルト)を使用します。

session_id

NULL以外に設定すると、指定したセッションで実行される文のサブセットのみがこのパラメータの対象となります。デフォルトはNULLです。現行のセッションに対しては、-1またはUSERENV('SID')を使用します。

session_serial

session_idパラメータに加えて、目的のセッション・インカネーションが対象となるように、セッションのシリアルを指定することもできます。session_idがNULLの場合、このパラメータは無視されます。

inst_id

指定したインスタンスで開始された文のみを対象とします。ログイン・インスタンスを対象とする場合は、-1を使用します。すべてのインスタンスを対象とする場合は、NULL(デフォルト)を指定します。

active_since_date

NULL(デフォルト)以外を指定すると、指定した時刻以後にアクティブである監視対象の文のみを戻します。これには、指定した日時の後で実行を完了したあらゆる文とともに実行中のすべての文が含まれます。

active_since_sec

active_since_dateと同じですが、現行のSYSDATEから指定の秒数を引いた値を基準にして日付が指定されます。たとえば、1時間の制限を適用するには3600を指定します。

last_refresh_time

NULL(デフォルト)ではない場合、リスト・レポートが最後に取得された日時。これにより、アプリケーションがリストを表示し、定期的(5秒ごとなど)にレポートを更新する場合に最適化されます。この場合、レポートは、指定したlast_refresh_time以降アクティブになっている監視対象の問合せの実行に関する詳細を示します。その他の問合せについては、レポートは実行キー(sql_id、sql_exec_start、sql_exec_id)を戻します。指定した日付以降の最初のリフレッシュ時の問合せでは、このファンクションによってSQL実行キーと統計情報のみが戻されます。

report_level

レポートの詳細なレベル。レベルは、次のいずれかになります。

- BASIC - 最大200文字までのSQLテキスト

- TYPICAL - カーソルが期限切れになっていないことを前提に、完全なSQLテキストを含みます。期限切れの場合は、最大2000文字のSQLテキストが含まれます。

- ALL - 現在はTYPICALと同じです。

auto_refresh

現在は実行できず、将来使用するために予約されています。

base_path

フレックスHTMLリソースのURLパス。これが必要な理由は、外部ファイル(JavaスクリプトおよびフラッシュSWFファイル自体)にアクセスするにはフレックスHTML形式が必要なためです。

type

レポート形式のTEXT(デフォルト)、HTMLまたはXML。

戻り値

監視されているSQL文のリストに対するレポート(XML、テキスト、HTML)。

使用上の注意

このファンクションをチューニングするユーザーは、固定ビューGV$SQL_MONITORおよびGV$SQLにアクセスする権限を持つ必要があります。

関連項目:
リアルタイムSQL監視の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

REPORT_TUNING_TASKファンクション

このプロシージャは、チューニング・タスクの結果を表示します。

関連項目:
このグループの他のサブプログラムについては、「SQLパフォーマンス・レポート・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REPORT_TUNING_TASK(
task_name       IN   VARCHAR2,
type            IN   VARCHAR2   := 'TEXT',
level           IN   VARCHAR2   := 'TYPICAL',
section         IN   VARCHAR2   := ALL,
object_id       IN   NUMBER     := NULL,
result_limit    IN   NUMBER     := NULL,
owner_name      IN    VARCHAR2  := NULL,
execution_name  IN  VARCHAR2    := NULL)
RETURN CLOB;

パラメータ

表154-36 REPORT_TUNING_TASKファンクションのパラメータ

パラメータ

説明

task_name

レポートするチューニング・タスクの名前。

type

作成するレポートのタイプ。設定可能な値は、テキストのレポートを作成するTEXTです。

level

レポートの詳細なレベル。

- BASIC: 簡単なバージョンのレポート。アドバイザによって実行されるアクションに関する情報を表示します。

- TYPICAL: 分析対象の各文に関する情報(実装されていない要求など)を表示します。

- ALL: 高度に詳細なレポート・レベル。スキップされた文に関する注釈も表示します。

section

オプションで、レポートを単一のセクションに制限できます(すべてのセクションに関するレポートの場合は、ALLを指定します)。

- SUMMARY: サマリー情報

- FINDINGS: チューニングの結果

- PLAN: EXPLAIN PLAN

- INFORMATION: 一般的な情報

- ERROR: エラーが発生した文

- ALL: すべての文

object_id

レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、NULLを指定します。単一の実行を対象とするレポートでのみ有効です。

result_limit

レポートに表示されるSQL文の最大数。

owner_name

関連するチューニング・タスクの所有者。デフォルトは、現行のスキーマ所有者です。

execution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に関するレポートが生成されます。

戻り値

必要なレポートが含まれているCLOB。

例

-- Display the report for a single statement.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:stmt_task)
FROM   DUAL;

-- Display the summary for a SQL tuning set.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:sts_task, 'TEXT', 'TYPICAL', 'SUMMARY')
FROM   DUAL;

-- Display the findings for a specific statement.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:sts_task, 'TEXT', 'TYPICAL','FINDINGS', 5)
FROM   DUAL;

RESET_TUNING_TASKプロシージャ

このプロシージャは、現在実行されていないチューニング・タスクに対してコールされ、そのチューニング・タスクを再実行できるように準備します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.RESET_TUNING_TASK(
task_name         IN VARCHAR2);

パラメータ

表154-37 RESET_TUNING_TASKプロシージャのパラメータ

パラメータ

説明

task_name

リセットするチューニング・タスクの名前。

例

-- reset and re-execute a task
EXEC DBMS_SQLTUNE.RESET_TUNING_TASK(:sts_task);

-- re-execute the task
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:sts_task);

RESUME_TUNING_TASKプロシージャ

このプロシージャは、SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.RESUME_TUNING_TASK(
task_name         IN VARCHAR2,
basic_filter      IN VARCHAR2 := NULL);

パラメータ

表154-38 RESUME_TUNING_TASKプロシージャのパラメータ

パラメータ

説明

task_name

再開するチューニング・タスクの名前。

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。このフィルタは、CREATE_TUNING_TASKファンクションのコール時に、基本フィルタ(パラメータbasic_filterなど)と組み合されて適用されます。

使用上の注意

単一のSQLチューニング・タスク(SQLチューニング・セットではなく、1つのSQL文をチューニングするために作成されたタスク)の再開はサポートされていません。

例

-- Interrupt the task
EXEC DBMS_SQLTUNE.INTERRUPT_TUNING_TASK(:conc_task);

-- Once a task is interrupted, we can elect to reset it, resume it, or check
-- out its results and then decide.  For this example we will just resume.

EXEC DBMS_SQLTUNE.RESUME_TUNING_TASK(:conc_task);

SCHEDULE_TUNING_TASKファンクション

このファンクションは、単一のSQL文に対してチューニング・タスクを作成し、DBMS_SCHEDULERジョブをスケジュールしてこのチューニング・タスクを実行します。このファンクションの1つの形式では、チューニングされる文の情報が共有SQL領域で検出され、別の形式では、AWRで情報が検出されます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

共有SQL領域の形式

DBMS_SQLTUNE.SCHEDULE_TUNING_TASK(
sql_id          IN VARCHAR2,
plan_hash_value IN NUMBER                   := NULL,
start_date      IN TIMESTAMP WITH TIME ZONE := NULL,
scope           IN VARCHAR2                 := SCOPE_COMPREHENSIVE,
time_limit      IN NUMBER                   := TIME_LIMIT_DEFAULT,
task_name       IN VARCHAR2                 := NULL,
description     IN VARCHAR2                 := NULL,
con_name        IN VARCHAR2                 := NULL)
RETURN VARCHAR2;

AWRの形式

DBMS_SQLTUNE.SCHEDULE_TUNING_TASK(
begin_snap      IN NUMBER,
end_snap        IN NUMBER,
sql_id          IN VARCHAR2,
plan_hash_value IN NUMBER                   := NULL,
start_date      IN TIMESTAMP WITH TIME ZONE := NULL,
scope           IN VARCHAR2                 := SCOPE_COMPREHENSIVE,
time_limit      IN NUMBER                   := TIME_LIMIT_DEFAULT,
task_name       IN VARCHAR2                 := NULL,
description     IN VARCHAR2                 := NULL,
con_name        IN VARCHAR2                 := NULL)
RETURN VARCHAR2;

パラメータ

表154-39 SCHEDULE_TUNING_TASKファンクションのパラメータ

パラメータ

説明

begin_snap

開始スナップショット識別子。範囲は排他的です。つまり、このスナップショットIDのSQL文は含まれません。

end_snap

終了スナップショット識別子。範囲は包括的です。つまり、このスナップショットIDのSQL文は含まれます。

sql_id

チューニングされる文のSQL ID。

plan_hash_value

チューニングされる文の計画ハッシュ値。たとえば、チューニング・ジョブは、このSQL計画に対して取得されたバインドをフェッチします。

start_date

スケジュールが有効になる日付。NULLの場合、SQLチューニング・アドバイザはすぐにタスクを実行します。

scope

チューニング・ジョブのスコープ: 制限付きまたは包括的。

time_limit

SQLチューニング・セッションの最大継続時間(秒)。

task_name

SQLチューニング・タスク名(オプション)。

description

SQLチューニング・セッションの説明。説明は、最大256文字です。

con_name

SQLチューニング・アドバイザがSQL文の情報にアクセスする際のアクセス元のコンテナ。

戻り値

各ユーザーに一意であるSQLチューニング・タスク名。複数のユーザーがアドバイザ・タスクに同じ名前を割り当てることができます。

使用上の注意

- タスクをスケジュールできるのは1回のみです。

- スケジューラ・ジョブの名前は次のように作成されます。sqltune_job_taskid_orahash(systimestamp)。

- コール元には、ジョブに対するCREATE JOB権限が必要です。

SCRIPT_TUNING_TASKファンクション

このファンクションは、SQL*PLUSスクリプトを作成します。その後、このスクリプトを実行すると、アドバイザによる一連のリコメンデーションを実装できます。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SCRIPT_TUNING_TASK(
task_name         IN VARCHAR2,
rec_type          IN VARCHAR2  := REC_TYPE_ALL,
object_id         IN NUMBER    := NULL,
result_limit      IN NUMNBER   := NULL,
owner_name        IN VARCHAR2  := NULL,
execution_name    IN VARCHAR2  := NULL)
RETURN CLOB;

パラメータ

表154-40 SCRIPT_TUNING_TASKファンクションのパラメータ

パラメータ

説明

task_name

スクリプトを適用するチューニング・タスクの名前。

rec_type

対象とするリコメンデーションのタイプで、スクリプトをフィルタします。'PROFILES'、'STATISTICS'、'INDEXES'をカンマで区切ったサブセットまたは'ALL'を指定します。たとえば、プロファイルおよび統計のスクリプトの場合は、'PROFILES,STATISTICS'になります。

object_id

1つのオブジェクトIDでフィルタします(オプション)。

result_limit

オプションで上位n番のSQLのみに対してコマンドを示します(順序はobject_idで決定され、object_idも指定されている場合は無視されます)。

owner_name

関連するチューニング・タスクの所有者。デフォルトは、現行のスキーマ所有者です。

excution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に関するスクリプトが生成されます。

戻り値

CLOBの形式でスクリプトを戻します。

使用上の注意

- 戻されたスクリプトは、DBAが確認した後で実行してください。

- スクリプトをファイルに入れるには、DBMS_ADVISOR.CREATE_FILEのコールでラップしてください。

例

SET LINESIZE 140

-- Get a script for all actions recommended by the task.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task) FROM DUAL;

-- Get a script of just the sql profiles we should create.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task, 'PROFILES') FROM DUAL;

-- get a script of just stale / missing stats
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task, 'STATISTICS') FROM DUAL;

-- Get a script with recommendations about just one SQL statement when we have
-- tuned an entire STS.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:sts_task, 'ALL', 5) FROM DUAL;

SELECT_CURSOR_CACHEファンクション

このファンクションは、共有SQL領域からSQL文を収集します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SELECT_CURSOR_CACHE (
basic_filter        IN   VARCHAR2 := NULL,
object_filter       IN   VARCHAR2 := NULL,
ranking_measure1    IN   VARCHAR2 := NULL,
ranking_measure2    IN   VARCHAR2 := NULL,
ranking_measure3    IN   VARCHAR2 := NULL,
result_percentage   IN   NUMBER   := 1,
result_limit        IN   NUMBER   := NULL,
attribute_list      IN   VARCHAR2 := NULL,
recursive_sql       IN   VARCHAR2 := HAS_RECURSIVE_SQL)
RETURN sys.sqlset PIPELINED;

パラメータ

表154-41 SELECT_CURSOR_CACHEファンクションのパラメータ

パラメータ

説明

basic_filter

SQLSET_ROWの属性で定義された共有SQL領域からSQLをフィルタするためのSQL述語。basic_filterがコール元によって設定されていない場合、このサブプログラムはCREATE TABLE、INSERT、SELECT、UPDATE、DELETEおよびMERGEタイプの文のみを取得します。

object_filter

現在サポートされていません。

ranking_measure(n)

選択したSQLのorder-by句。

result_percentage

指定されたランキング・メジャーに従って、上位N%を選択するフィルタ。このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されることに注意してください。

result_limit

ランキング・メジャーでランク付けした(フィルタ済の)ソースの先頭から数件取得されるSQL文。

attribute_list

結果として戻すSQL文の属性リスト。有効な値は、次のとおりです。

- TYPICAL: BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます(デフォルト)。

- BASIC: 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

- ALL: すべての属性を戻します。

- 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICS、BIND_LIST、OBJECT_LIST、SQL_PLAN、SQL_PLAN_STATISTICS(SQL_PLAN + 行ソース統計に類似)です。

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)。

戻り値

このファンクションは、各データ・ソースで検出されるSQL_IDまたはPLAN_HASH_VALUEの組合せごとに1つのSQLSET_ROWを戻します。

使用上の注意

- このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

- ユーザーには、共有SQL領域ビューの権限が必要です。

例

-- Get sql ids and sql text for statements with 500 buffer gets.
SELECT sql_id, sql_text
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('buffer_gets > 500'))
ORDER BY sql_id;

-- Get all the information we have about a particular statement.
SELECT *
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('sql_id = ''4rm4183czbs7j'''));

-- Notice that some statements can have multiple plans.  The output of the
-- SELECT_XXX table functions is unique by (sql_id, plan_hash_value).  This is
-- because a data source can store multiple plans per sql statement.
SELECT sql_id, plan_hash_value
FROM table(dbms_sqltune.select_cursor_cache('sql_id = ''ay1m3ssvtrh24'''))
ORDER BY sql_id, plan_hash_value;

-- PL/SQL examples: load_sqlset is called after opening a cursor, along the
-- lines given below

-- Select all statements in the shared SQL area.
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT value(P)
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE) P;

-- Process each statement (or pass cursor to load_sqlset).

CLOSE cur;
END;/

-- Look for statements not parsed by SYS.
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur for
SELECT VALUE(P)
FROM table(
DBMS_SQLTUNE.SELECT_CURSOR_CACHE('parsing_schema_name <> ''SYS''')) P;

-- Process each statement (or pass cursor to load_sqlset).

CLOSE cur;
end;/

-- All statements from a particular module/action.
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(
DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
'module = ''MY_APPLICATION'' and action = ''MY_ACTION''')) P;

-- Process each statement (or pass cursor to load_sqlset)

CLOSE cur;
END;/

-- all statements that ran for at least five seconds
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('elapsed_time > 5000000')) P;

-- Process each statement (or pass cursor to load_sqlset)

CLOSE cur;
end;/

-- select all statements that pass a simple buffer_gets threshold and
-- are coming from an APPS user
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(
DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
'buffer_gets > 100 and parsing_schema_name = ''APPS'''))P;

-- Process each statement (or pass cursor to load_sqlset)

CLOSE cur;
end;/

-- select all statements exceeding 5 seconds in elapsed time, but also
-- select the plans (by default we only select execution stats and binds
-- for performance reasons - in this case the SQL_PLAN attribute of sqlset_row
-- is NULL)
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(dbms_sqltune.select_cursor_cache(
'elapsed_time > 5000000', NULL, NULL, NULL, NULL, 1, NULL,
'EXECUTION_STATISTICS, SQL_BINDS, SQL_PLAN')) P;

-- Process each statement (or pass cursor to load_sqlset)

CLOSE cur;
END;/

-- Select the top 100 statements in the shared SQL area ordering by elapsed_time.
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE(NULL,
NULL,
'ELAPSED_TIME', NULL, NULL,
1,
100)) P;

-- Process each statement (or pass cursor to load_sqlset)

CLOSE cur;
end;/

-- Select the set of statements which cumulatively account for 90% of the
-- buffer gets in the shared SQL area.  This means that the buffer gets of all
-- of these statements added up is approximately 90% of the sum of all
-- statements currently in the cache.
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE(P)
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE(NULL,
NULL,
'BUFFER_GETS', NULL, NULL,
.9)) P;

-- Process each statement (or pass cursor to load_sqlset).

CLOSE cur;
END;
/

SELECT_SQL_TRACEファンクション

この表ファンクションは、1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文をsqlset_rowの形式で戻します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SELECT_SQL_TRACE (
directory              IN VARCHAR2,
file_name              IN VARCHAR2 := NULL,
mapping_table_name     IN VARCHAR2 := NULL,
mapping_table_owner    IN VARCHAR2 := NULL,,
select_mode            IN POSITIVE := SINGLE_EXECUTION,
options                IN BINARY_INTEGER := LIMITED_COMMAND_TYPE,
pattern_start          IN VARCHAR2 := NULL,
pattern_end            IN VARCHAR2 := NULL,
result_limit           IN POSITIVE := NULL)
RETURN sys.sqlset PIPELINED;

パラメータ

表154-42 SELECT_SQL_TRACEファンクションのパラメータ

パラメータ

説明

directory

トレース・ファイルを含むディレクトリ・オブジェクト。このフィールドは必須です。

file_name

処理するトレース・ファイルの完全な名前または名前の一部。NULLの場合は、指定した場所またはパスにある現行のファイルまたは最新のファイルが使用されます。トレース・ファイル名の一致検索については、ワイルドカード'%'がサポートされています。

mapping_table_name

マッピング表名。マッピング表名は大/小文字が区別されないことに注意してください。マッピング表名がNULLの場合は、現行のデータベースにあるマッピングが使用されます。

mapping_table_owner

マッピング表の所有者。NULLの場合は、現行のユーザーが使用されます。

select_mode

トレースからSQLを選択するためのモード。デフォルトは、SINGLE_EXECUTIONです。

- SINGLE_EXECUTION: 1つのSQL実行を戻します(デフォルト)。

- ALL_EXECUTIONS: すべての実行を戻します。

options

オプション。デフォルトは、LIMITED_COMMAND_TYPEですが、すべてのOracleコマンド・タイプからのSQL文を含むように指定することもできます。

- LIMITED_COMMAND_TYPE: コマンド・タイプがCREATE、INSERT、SELECT、UPDATE、DELETE、UPSERTのSQL文を戻します。これがデフォルトです。

- ALL_COMMAND_TYPE: すべてのコマンド・タイプのSQL文を戻します。

pattern_start

対象となるトレース・ファイル・セクションの開始区切りパターン。(現在使用不可)

pattern_end

処理するトレース・ファイル・セクションの終了区切りパターン。(現在使用不可)

result_limit

フィルタ処理済のソースの先頭から数件取得されるSQL文。NULLの場合は、デフォルトのMAXSB4が設定されます。

戻り値

このファンクションは、SQLSET_ROWオブジェクトを戻します。

例

次のコードは、いくつかのSQL文のSQLトレースを使用可能にして、SQLチューニング・セットに結果をロードする方法を示しています。

-- turn on the SQL trace in the capture database
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 4'

-- run sql statements
SELECT 1 FROM DUAL;
SELECT COUNT(*) FROM dba_tables WHERE table_name = :mytab;

ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';

-- create mapping table from the capture database
CREATE TABLE mapping AS
SELECT object_id id, owner, substr(object_name, 1, 30) name
FROM dba_objects
WHERE object_type NOT IN ('CONSUMER GROUP', 'EVALUATION CONTEXT',
'FUNCTION', 'INDEXTYPE', 'JAVA CLASS',
'JAVA DATA', 'JAVA RESOURCE', 'LIBRARY',
'LOB', 'OPERATOR', 'PACKAGE',
'PACKAGE BODY', 'PROCEDURE', 'QUEUE',
'RESOURCE PLAN', 'TRIGGER', 'TYPE',
'TYPE BODY')
UNION ALL
SELECT user_id id, username owner, NULL name
FROM dba_users;

-- create the directory object where the SQL traces are stored
CREATE DIRECTORY SQL_TRACE_DIR as '/home/foo/trace';

-- create the STS
EXEC DBMS_SQLTUNE.CREATE_SQLSET('my_sts', 'test purpose');

-- load the SQL statements into STS from SQL TRACE
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT value(p)
FROM TABLE(
DBMS_SQLTUNE.SELECT_SQL_TRACE(
directory=>'SQL_TRACE_DIR',
file_name=>'%trc',
mapping_table_name=>'mapping')) p;
DBMS_SQLTUNE.LOAD_SQLSET('my_sts', cur);
CLOSE cur;
END;
/

SELECT_SQLPA_TASKファンクション

このファンクションは、SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。

関連項目:

- このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

- 『Oracle Database Testingガイド』

構文

DBMS_SQLTUNE.SELECT_SQLPA_TASK(
task_name         IN VARCHAR2,
task_owner        IN VARCHAR2 := NULL,
execution_name    IN VARCHAR2 := NULL,
level_filter      IN VARCHAR2 := 'REGRESSED',
basic_filter      IN VARCHAR2 := NULL,
object_filter     IN VARCHAR2 := NULL,
attribute_list    IN VARCHAR2 := 'TYPICAL')
RETURN sys.sqlset PIPELINED;

パラメータ

表154-43 SELECT_SQLPA_TASKファンクションのパラメータ

パラメータ

説明

task_name

SQLパフォーマンス・アナライザ・タスクの名前。

task_owner

SQLパフォーマンス・アナライザ・タスクの所有者。NULLの場合、現行のユーザーとみなされます。

execution_name

指定したフィルタの適用元になるSQLパフォーマンス・アナライザ・タスクの実行の名前(タイプCOMPARE PERFORMANCE)。NULLの場合、最新のCOMPARE PERFORMANCEの実行とみなされます。

level_filter

SQL文のどのサブセットを含めるかを指定するフィルタ。DBMS_SQLPAと同じ形式です。REPORT_ANALYSIS_TASK.LEVEL (一部の文字列が除外されています)。

- IMPROVED: 改善されたSQLのみが含まれます。

- REGRESSED: 低下したSQLのみが含まれます(デフォルト)。

- CHANGED: パフォーマンスが変更されたSQLのみが含まれます。

- UNCHANGED: パフォーマンスが変更されていないSQLのみが含まれます。

- CHANGED_PLANS: 計画が変更されたSQLのみが含まれます。

- UNCHANGED_PLANS: 計画が変更されていないSQLのみが含まれます。

- ERRORS: エラーが発生したSQLのみが含まれます。

- MISSING_SQL: (STS全体で)欠落しているSQL文のみが含まれます。

- NEW_SQL: (STS全体で)新規のSQL文のみが含まれます。

basic filter

レベル・フィルタに加えてSQLをフィルタするためのSQL述語。

object_filter

現在サポートされていません。

attribute_list

結果として戻すSQL文の属性リスト。有効な値は、次のとおりです。

- TYPICAL: BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます(デフォルト)。

- BASIC: 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

- ALL: すべての属性を戻します。

- 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICS、SQL_BINDS、SQL_PLAN_STATISTICS(SQL_PLAN + 行ソース統計に類似)です。

戻り値

このファンクションは、SQLチューニング・セット・オブジェクトを戻します。

使用上の注意

たとえば、このファンクションを使用して、SQLパフォーマンス・アナライザ(SPA)の試用中に低下したSQL文のサブセットを含むSQLチューニング・セットを作成できます。また、他の任意のフィルタを指定することもできます。

SELECT_SQLSETファンクション

このファンクションは、SQLSETの内容を読み取ります。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SELECT_SQLSET (
sqlset_name         IN   VARCHAR2,
basic_filter        IN   VARCHAR2 := NULL,
object_filter       IN   VARCHAR2 := NULL,
ranking_measure1    IN   VARCHAR2 := NULL,
ranking_measure2    IN   VARCHAR2 := NULL,
ranking_measure3    IN   VARCHAR2 := NULL,
result_percentage   IN   NUMBER   := 1,
result_limit        IN   NUMBER   := NULL)
attribute_list      IN   VARCHAR2 := NULL,
plan_filter         IN   VARCHAR2 := NULL,
sqlset_owner        IN   VARCHAR2 := NULL,
recursive_sql       IN   VARCHAR2 := HAS_RECURSIVE_SQL)
RETURN sys.sqlset PIPELINED;

パラメータ

表154-44 SELECT_SQLSETファンクションのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

basic_filter

SQLSET_ROWの属性に対して定義されたSQLチューニング・セットからSQLをフィルタするためのSQL述語。

object_filter

現在サポートされていません。

ranking_measure(n)

選択したSQLのorder-by句。

result_percentage

指定されたランキング・メジャーに従って、上位N%を選択するフィルタ。このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されることに注意してください。

result_limit

ランキング・メジャーでランク付けした(フィルタ済の)ソースの先頭から数件取得されるSQL文。

attribute_list

結果として戻すSQL文の属性リスト。有効な値は、次のとおりです。

- TYPICAL: BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます(デフォルト)。

- BASIC: 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

- ALL: すべての属性を戻します。

- 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICS、SQL_BINDS、SQL_PLAN_STATISTICS(SQL_PLAN + 行ソース統計に類似)です。

plan_filter

計画フィルタ。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL。

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)。

戻り値

このファンクションは、各データ・ソースで検出されるSQL_IDまたはPLAN_HASH_VALUEの組合せごとに1つのSQLSET_ROWを戻します。

使用上の注意

このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

例

-- select from a sql tuning set
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE (P)
FROM table(dbms_sqltune.select_sqlset('my_workload')) P;

-- Process each statement (or pass cursor to load_sqlset)

CLOSE cur;
END;
/

SELECT_WORKLOAD_REPOSITORYファンクション

このファンクションは、ワークロード・リポジトリからSQL文を収集します。オーバーロードされたフォームによって、次の操作を実行できます。

- begin_snapとend_snapの間のすべてのスナップショットからSQL文を収集する。

- ワークロード・リポジトリ・ベースラインからSQL文を収集する。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY (
begin_snap        IN NUMBER,
end_snap          IN NUMBER,
basic_filter      IN VARCHAR2 := NULL,
object_filter     IN VARCHAR2 := NULL,
ranking_measure1  IN VARCHAR2 := NULL,
ranking_measure2  IN VARCHAR2 := NULL,
ranking_measure3  IN VARCHAR2 := NULL,
result_percentage IN NUMBER   := 1,
result_limit      IN NUMBER   := NULL,
attribute_list    IN VARCHAR2 := NULL,
recursive_sql     IN VARCHAR2 := HAS_RECURSIVE_SQL)
RETURN sys.sqlset PIPELINED;

DBMS_SQLTUNE.SELECT_WORKLOAD REPOSITORY (
baseline_name     IN VARCHAR2,
basic_filter      IN VARCHAR2 := NULL,
object_filter     IN VARCHAR2 := NULL,
ranking_measure1  IN VARCHAR2 := NULL,
ranking_measure2  IN VARCHAR2 := NULL,
ranking_measure3  IN VARCHAR2 := NULL,
result_percentage IN NUMBER   := 1,
result_limit      IN NUMBER   := NULL,
attribute_list    IN VARCHAR2 := NULL,
recursive_sql     IN VARCHAR2 := HAS_RECURSIVE_SQL)
RETURN sys.sqlset PIPELINED;

パラメータ

表154-45 SELECT_WORKLOAD_REPOSITORYファンクションのパラメータ

パラメータ

説明

begin_snap

開始スナップショット(この値を含めない)。

end_snap

終了スナップショット(この値を含む)。

baseline_name

ベースライン時間の名前。

basic_filter

SQLSET_ROWの属性に対して定義されたワークロード・リポジトリからSQLをフィルタするためのSQL述語。basic_filterがコール元によって設定されていない場合、このサブプログラムはCREATE TABLE、INSERT、SELECT、UPDATE、DELETEおよびMERGEタイプの文のみを取得します。

object_filter

現在サポートされていません。

ranking_measure(n)

選択したSQLのorder-by句。

result_percentage

指定されたランキング・メジャーに従って、上位N%を選択するフィルタ。このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されることに注意してください。

result_limit

ランキング・メジャーでランク付けした(フィルタ済の)ソースの先頭から数件取得されるSQL文。

attribute_list

結果として戻すSQL文の属性リスト。有効な値は、次のとおりです。

- TYPICAL: BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます(デフォルト)。

- BASIC: 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

- ALL: すべての属性を戻します。

- 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICS、SQL_BINDS、SQL_PLAN_STATISTICS(SQL_PLAN + 行ソース統計に類似)です。

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)。

戻り値

このファンクションは、各データ・ソースで検出されるSQL_IDまたはPLAN_HASH_VALUEの組合せごとに1つのSQLSET_ROWを戻します。

使用上の注意

このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

例

-- select statements from snapshots 1-2
DECLARE
cur sys_refcursor;
BEGIN
OPEN cur FOR
SELECT VALUE (P)
FROM table(dbms_sqltune.select_workload_repository(1,2)) P;

-- Process each statement (or pass cursor to load_sqlset)

CLOSE cur;
END;
/

SET_TUNING_TASK_PARAMETERプロシージャ

このプロシージャは、VARCHAR2タイプまたはNUMBERタイプのSQLチューニング・パラメータの値を更新します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER (
task_name    IN  VARCHAR2,
parameter    IN  VARCHAR2,
value        IN  VARCHAR2);

DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER (
task_name    IN  VARCHAR2,
parameter    IN  VARCHAR2,
value        IN  NUMBER);

パラメータ

表154-46 SET_TUNING_TASK_PARAMETERプロシージャのパラメータ

パラメータ

説明

task_name

実行するタスクの識別子。

parameter

設定するパラメータの名前。パラメータをVARCHAR2形式で使用してこのプロシージャで設定できるチューニング・パラメータは、次のとおりです。

- APPLY_CAPTURED_COMPILENV: SQL文で取得されたコンパイル環境をアドバイザで使用できるかどうかを示します。デフォルトは0(NO)です。

- BASIC_FILTER: SQLチューニング・セットの基本フィルタ。

- DAYS_TO_EXPIRE: タスクが削除されるまでの日数。

- DEFAULT_EXECUTION_TYPE: EXECUTE_TUNING_TASKファンクションおよびプロシージャによって何も指定されていない場合、タスクの実行タイプはデフォルトでこのタイプに設定されます。

- EXECUTION_DAYS_TO_EXPIRE: (タスクが削除されることなく)タスクの実行が削除されるまでの日数。

- LOCAL_TIME_LIMIT: 文単位のタイムアウト(秒)。

- MODE: チューニング・スコープ(制限付き/包括的)。

- OBJECT_FILTER: SQLチューニング・セットのオブジェクト・フィルタ。

- PLAN_FILTER: SQLチューニング・セットの計画フィルタ(設定可能な値については、SELECT_SQLSETを参照してください)。

- RANK_MEASURE1: SQLチューニング・セットの最初のランキング・メジャー。

- RANK_MEASURE2: SQLチューニング・セットの2番目の設定可能なランキング・メジャー。

- RANK_MEASURE3: SQLチューニング・セットの3番目の設定可能なランキング・メジャー。

- RESUME_FILTER: SQLチューニング・セットのBASIC_FILTER以外の追加フィルタ。

- SQL_LIMIT: チューニングするSQL文の最大数。

- SQL_PERCENTAGE: SQLチューニング・セットの文のパーセント・フィルタ。

- TEST_EXECUTE: FULL/AUTO/OFF。
* FULL: SQLのローカル時間制限(SQLの時間制限が設定されていない場合はグローバル・タスクの時間制限)まで、必要な時間テスト実行します。

* AUTO: チューニング時間に比例して自動的に選択された時間テスト実行します。

* OFF: テスト実行しません。

- TIME_LIMIT: グローバル・タイムアウト(秒)。

- USERNAME: 文を解析するユーザーの名前。

value

指定したパラメータの新しい値。

使用上の注意

自動チューニング・タスクのパラメータを設定する場合、DBMS_AUTO_SQLTUNEパッケージのSET_AUTO_TUNING_TASK_PARAMETERプロシージャを使用してください。

SQLTEXT_TO_SIGNATUREファンクション

このファンクションは、SQLテキストのシグネチャを戻します。このシグネチャを使用して、dba_sql_profilesのSQLテキストを識別できます。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE (
sql_text    IN CLOB,  force_match IN BOOLEAN  := FALSE)
RETURN NUMBER;

パラメータ

表154-47 SQLTEXT_TO_SIGNATUREファンクションのパラメータ

パラメータ

説明

sql_text

シグネチャが必要なSQLテキスト。必須です。

force_match

TRUEに設定すると、リテラル値をバインド変数に変換するSQLマッチングがサポートされているシグネチャを戻します。FALSEに設定すると、リテラルが変換されないテキストに基づいてシグネチャを戻します。

戻り値

このファンクションは、指定したSQLテキストのシグネチャを戻します。

UNPACK_STGTAB_SQLPROFプロシージャ

このプロシージャは、ステージング表に保存されているプロファイル・データを使用して、システム上にプロファイルを作成します。

関連項目:
このグループの他のサブプログラムについては、「SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF (
profile_name          IN VARCHAR2 := '%',
profile_category      IN VARCHAR2 := 'DEFAULT',
replace               IN BOOLEAN,
staging_table_name    IN VARCHAR2,
staging_schema_owner  IN VARCHAR2 := NULL);

パラメータ

表154-48 UNPACK_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ

説明

profile_name

アンパックするプロファイルの名前(%ワイルドカードを使用可、大/小文字区別)。

profile_category

アンパックするプロファイルのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。

replace

プロファイルがすでに存在する場合、そのプロファイルを置換するオプション。ステージング表のプロファイルの名前と、別のSQL文のアクティブなプロファイルの名前が同じ場合、プロファイルは置換できません。FALSEの場合、すでに存在するプロファイルを作成しようとすると、このファンクションによってエラーが発生します。

staging_table_name

再マップ操作を行う表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。必須です。

staging_schema_owner

表が存在するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合はNULL。

使用上の注意

このプロシージャを使用するには、ステージング表に対するCREATE ANY SQL PROFILE権限およびSELECT権限が必要です。

例

-- Unpack all profiles stored in a staging table
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(replace            => FALSE, -
staging_table_name => 'PROFILE_STGTAB');

-- If there is a failure during the unpack operation, users can find the profile
-- we failed on and perform a remap_stgtab_sqlprof operation targeting it.  Then
-- they can resume the unpack operation by setting replace to TRUE so that
-- the profiles that were already created are replaced
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(replace            => TRUE, -
staging_table_name => 'PROFILE_STGTAB');

UNPACK_STGTAB_SQLSETプロシージャ

このプロシージャは、1つ以上のSQLチューニング・セットを、ステージング表内のそれぞれの場所からSQLチューニング・セット・スキーマにコピーして、適切なSQLチューニング・セットを作成します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET (
sqlset_name          IN VARCHAR2 := '%',
sqlset_owner         IN VARCHAR2 := NULL,
replace              IN BOOLEAN,
staging_table_name   IN VARCHAR2,
staging_schema_owner IN VARCHAR2 := NULL);

パラメータ

表154-49 UNPACK_STGTAB_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

アンパックするチューニング・セットの名前(NULL以外)。ワイルドカード文字('%')がサポートされていて、1回のコールで複数のチューニング・セットをアンパックできます。たとえば、'%'と指定すると、すべてのチューニング・セットがステージング表からアンパックされます。

sqlset_owner

チューニング・セットの所有者の名前で、現行のスキーマ所有者の場合はNULL。ワイルドカードがサポートされています。

replace

すでに存在するチューニング・セットを置換します。FALSEに設定した場合、すでに存在するチューニング・セットを作成しようとするとエラーが発生します。

staging_table_name

ステージング表の名前(大/小文字区別)。このステージング表は、PACK_STGTAB_SQLSETプロシージャへのコールによって移動された表です。

staging_schema_owner

ステージング表の所有者の名前(大/小文字区別)。現行のスキーマ所有者の場合はNULL。

使用上の注意

- ユーザーは、このプロシージャが正常に完了した後、ステージング表を削除できます。

- このアンパック・プロシージャは、各SQLチューニング・セットを正常にロードした後でコミットします。いずれかのチューニング・セットの処理に失敗した場合、そのチューニング・セットはアンパックされませんが、サブプログラムですでに認識されているチューニング・セットはそのまま存在します。

- SQLチューニング・セット名または所有者名の競合が原因で正常に実行できなかった場合は、ステージング表をREMAP_STGTAB_SQLSETプロシージャで修正してから、このプロシージャを再度コールして残りのチューニング・セットをアンパックしてください。

例

-- unpack all STS in the staging table
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET(sqlset_name         => '%', -
sqlset_owner        => '%', -
replace             => FALSE, -
staging_table_name  => 'STGTAB_SQLSET');

-- errors can arise during STS unpack when a STS in the staging table has the
-- same name/owner as STS on the system.  In this case, users should call
-- remap_stgtab_sqlset to patch the staging table and with which to call unpack
-- Replace set to TRUE.
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET(sqlset_name         => '%', -
sqlset_owner        => '%', -
replace             => TRUE, -
staging_table_name  => 'STGTAB_SQLSET');

UPDATE_SQLSETプロシージャ

このプロシージャは、SQLチューニング・セットのSQL文の選択されているフィールドを更新します。

関連項目:
このグループの他のサブプログラムについては、「SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.UPDATE_SQLSET (
sqlset_name      IN  VARCHAR2,
sql_id           IN  VARCHAR2,
attribute_name   IN  VARCHAR2,
attribute_value  IN  VARCHAR2 := NULL);

DBMS_SQLTUNE.UPDATE_SQLSET (
sqlset_name      IN  VARCHAR2,
sql_id           IN  VARCHAR2,
attribute_name   IN  VARCHAR2,
attribute_value IN NUMBER := NULL);

パラメータ

表154-50 UPDATE_SQLSETプロシージャのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

sql_id

更新する文の識別子。

attribute_name

変更する属性の名前。

attribute_value

属性の新しい値。

155 DBMS_STATS

DBMS_STATSパッケージを使用すると、データベース・オブジェクト用に収集したオプティマイザの統計情報を表示および変更できます。

関連項目:
『Oracle Database SQLチューニング・ガイド』

この章では、次の項目について説明します。

- DBMS_STATSの使用方法

- 概要

- 推奨されないサブプログラム

- タイプ

- 定数

- 使用上の注意

- 推奨されないサブプログラム

- 例

- データ構造

- DBMS_STATSサブプログラムの要約

DBMS_STATSの使用方法

この項では、DBMS_STATSパッケージの使用に関連する項目について説明します。

- 概要

- 推奨されないサブプログラム

- タイプ

- 定数

- 使用上の注意

- 推奨されないサブプログラム

概要

Oracle RDBMSでは、パフォーマンス向上のために使用できる様々な統計情報を収集できます。このパッケージは、オプティマイザ統計情報にのみ関連しています。Oracleでは、これらの統計情報の自動収集がデフォルトに設定されているため、このパッケージは特別な場合にのみ使用されます。

表示または変更対象の統計情報は、この目的のためにユーザーのスキーマに作成したディクショナリや表に常駐させることができます。また、このパッケージを使用して、表およびドメイン索引に関するユーザー定義の統計情報を収集および管理できます。

たとえば、関連性が定義されている列に対してDELETE_COLUMN_STATSプロシージャが起動されると、標準的な統計情報以外に、その列にあるユーザー定義の統計情報も削除されます。

コストベースのオプティマイザに影響を与える統計情報は、ディクショナリに格納されている統計情報のみです。また、DBMS_STATSを使用して、並列的に統計情報を収集できます。

関連項目:
オプティマイザ統計情報の管理の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

推奨されないサブプログラム

注意:
推奨されないサブプログラムは、使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 12c以降では、次のサブプログラムの使用は推奨されていません。

- GENERATE_STATS
このプロシージャのかわりにGATHER_INDEX_STATプロシージャを使用してください。

関連項目:
「GATHER_INDEX_STATSプロシージャ」

タイプ

最小値と最大値およびヒストグラム終点のタイプは、次のとおりです。

TYPE numarray  IS VARRAY(2050) OF NUMBER;
TYPE datearray IS VARRAY(2050) OF DATE;
TYPE chararray IS VARRAY(2050) OF VARCHAR2(4000);
TYPE rawarray  IS VARRAY(2050) OF RAW(2000);
TYPE fltarray  IS VARRAY(2050) OF BINARY_FLOAT;
TYPE dblarray  IS VARRAY(2050) OF BINARY_DOUBLE;

失効した表を表示するタイプは、次のとおりです。

TYPE ObjectElem IS RECORD (
ownname     VARCHAR2(30),     -- owner
objtype     VARCHAR2(6),      -- 'TABLE' or 'INDEX'
objname     VARCHAR2(30),     -- table/index
partname    VARCHAR2(30),     -- partition
subpartname VARCHAR2(30));    -- subpartition
type ObjectTab is TABLE of ObjectElem;

統計情報の違いのレポートを表示するタイプは、次のとおりです。

TYPE DiffRepElem IS RECORD (
report     CLOB,              -- stats difference report
maxdiffpct number);           -- max stats difference (percentage)
type DiffRepTab is table of DiffRepElem;

定数

DBMS_STATSパッケージでは、表155-1に示す定数が使用されます。

表155-1 DBMS_STATSの定数

名前

タイプ

説明

ADD_GLOBAL_PREFS

NUMBER

グローバル・プリファレンスをコピーします。

AUTO_CASCADE

BOOLEAN

索引の統計情報を収集するかどうかを選択できます。

AUTO_DEGREE

NUMBER

オブジェクトのサイズ、CPU数および初期化パラメータを基に並列度を選択できます。

AUTO_INVALIDATE

BOOLEAN

Oracleで依存カーソルを無効化するタイミングを決定できます。

AUTO_SAMPLE_SIZE

NUMBER

自動サンプル・サイズのアルゴリズムを使用することを示します。

PURGE_ALL

TIMESTAMP WITH TIME ZONE

PURGE_STATSプロシージャに渡すことが可能で、すべての履歴統計を無条件に削除するフラグ。削除では、統計の履歴を保持する様々なディクショナリ統計表に対してTRUNCATE文が使用されます。

RECLAIM_SYNOPSIS

TIMESTAMP WITH TIME ZONE

シノプシス表領域の再要求に使用される定数。

使用上の注意

DBMS_STATSサブプログラムでは、次に示す一般的な操作を実行します。

- オプティマイザ統計情報の収集

- 統計情報の設定または取得

- 統計情報の削除

- 統計情報の転送

- 統計情報のロックまたはロック解除

- 統計履歴のリストアおよびパージ

- ユーザー定義の統計情報

- 保留中の統計情報

- 統計情報の比較

- 統計情報の拡張

ほとんどのDBMS_STATSプロシージャには、statown、stattabおよびstatidの3つのパラメータが含まれています。これらのパラメータによって、ユーザーはオプティマイザに影響を与えない自分自身の表(ディクショナリ外)に統計情報を格納できます。したがって、ユーザーは統計情報のセットをメンテナンスおよび試用することができます。

stattabパラメータは、統計情報を保持する表の名前を指定し、この表は、(statownパラメータが指定されていないかぎり)統計情報が収集されるオブジェクトと同じスキーマ内に常駐しているとみなされます。異なるstattab識別子で複数の表を作成し、統計情報セットを別々に保持できます。

さらに、statidパラメータを使用して1つのstattab内で複数の統計情報セットをメンテナンスできるため、ユーザーのスキーマが混乱するのを回避できます。

SETおよびGETプロシージャでは、stattabを指定しない場合(つまりNULLの場合)、操作はディクショナリ統計上で直接動作するため、ディクショナリを直接変更することだけが目的の場合は、これらの統計表を作成する必要はありません。ただし、stattabがNULLでない場合、SETまたはGET操作は、ディクショナリではなく、指定したユーザー統計表に対して行われます。

SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用して、DBMS_STATSプロシージャのいくつかのパラメータのデフォルト値を変更できます。

このパッケージのほとんどのプロシージャは、現行のトランザクションをコミットし、操作を実行してから再度コミットします。

ほとんどのプロシージャには、統計情報のすべてのロックを無効にできるforceパラメータがあります。ディクショナリの統計情報が変更されると、古いバージョンの統計情報が将来のリストアに備えて自動的に保存されます。

オプティマイザ統計情報の収集

次のサブプログラムを使用して、特定のクラスのオプティマイザ統計情報を収集し、ANALYZEコマンドの潜在的なパフォーマンスを向上させます。

GATHER_DATABASE_STATSプロシージャ
GATHER_DICTIONARY_STATSプロシージャ
GATHER_FIXED_OBJECTS_STATSプロシージャ
GATHER_INDEX_STATSプロシージャ
GATHER_SCHEMA_STATSプロシージャ
GATHER_SYSTEM_STATSプロシージャ
GATHER_TABLE_STATSプロシージャ

GATHER_*プロシージャは、列およびドメイン索引に関するユーザー定義の統計情報も収集します。

statown、stattabおよびstatidの各パラメータは、パッケージに対して、新規の統計情報を収集する前に、指定した表内の現行の統計情報をバックアップするように指示します。

関連オブジェクトに十分な統計情報がある場合、導出オブジェクトの統計情報を生成するために、Oracleは次のプロシージャも提供します。

GENERATE_STATSプロシージャ

統計情報の設定または取得

次のサブプログラムを使用して、個別の列、索引および表に関連する統計情報を格納および取り出します。

PREPARE_COLUMN_VALUESプロシージャ
PREPARE_COLUMN_VALUES_NVARCHARプロシージャ
PREPARE_COLUMN_VALUES_ROWIDプロシージャ

SEED_COL_USAGEプロシージャ
SET_INDEX_STATSプロシージャ
SET_SYSTEM_STATSプロシージャ
SET_TABLE_STATSプロシージャ

GET_COLUMN_STATSプロシージャ
GET_INDEX_STATSプロシージャ
GET_SYSTEM_STATSプロシージャ
GET_TABLE_STATSプロシージャ

ユーザー定義の統計情報を設定する特別バージョンのSET_*_STATSプロシージャでは、次の情報(提供された場合)がディレクトリまたはユーザー統計表に格納されます。

- ユーザー定義の統計情報

- 統計タイプの所有者

- 統計タイプの名前。

ユーザー定義の統計情報と対応する統計タイプは、USTATS$ディクショナリ表に挿入されます。ユーザー定義の統計情報は、統計タイプ名の指定なしに指定できます。

特別バージョンのGET_*_STATSプロシージャは、ユーザー定義の統計情報および統計タイプの所有者と名前を、指定したスキーマ・オブジェクトに対応するOUT引数として戻します。ユーザー定義の統計情報が収集されていない場合は、NULL値が戻ります。

統計情報の削除

DELETE_*プロシージャは、ユーザー定義の統計情報、および指定したスキーマ・オブジェクトに関する標準的な統計情報の両方を削除します。

DELETE_COLUMN_STATSプロシージャ
DELETE_DATABASE_STATSプロシージャ
DELETE_DICTIONARY_STATSプロシージャ
DELETE_FIXED_OBJECTS_STATSプロシージャ
DELETE_INDEX_STATSプロシージャ
DELETE_SCHEMA_STATSプロシージャ
DELETE_SYSTEM_STATSプロシージャ
DELETE_TABLE_STATSプロシージャ

DELETE_TABLE_STATS、DELETE_DICTIONARY_STATS、DELETE_DATABASE_STATSおよびDELETE_SCHEMA_STATSには、パラメータstat_categoryがあり、削除する統計を指定します。このパラメータは、カンマで区切られた複数の値を受け入れます。サポートされる値は、'OBJECT_STATS'(表統計、列統計および索引統計)と'SYNOPSES'(統計が増分的に保持されるときに作成される補助統計)です。デフォルトは'OBJECT_STATS, SYNOPSES'です。

統計情報の転送

次のプロシージャを使用して、ユーザー統計表を作成および削除します。

CREATE_STAT_TABLEプロシージャ
DROP_STAT_TABLEプロシージャ

次のプロシージャを使用して、統計情報を転送します。

- ディクショナリからユーザー統計表への転送(EXPORT_*)

- ユーザー統計表からディクショナリへの転送(IMPORT_*)

EXPORT_COLUMN_STATSプロシージャ
EXPORT_DATABASE_STATSプロシージャ
EXPORT_DICTIONARY_STATSプロシージャ
EXPORT_FIXED_OBJECTS_STATSプロシージャ
EXPORT_INDEX_STATSプロシージャ
EXPORT_SCHEMA_STATSプロシージャ
EXPORT_SYSTEM_STATSプロシージャ
EXPORT_TABLE_STATSプロシージャ

IMPORT_COLUMN_STATSプロシージャ
IMPORT_DATABASE_STATSプロシージャ
IMPORT_DICTIONARY_STATSプロシージャ
IMPORT_FIXED_OBJECTS_STATSプロシージャ
IMPORT_INDEX_STATSプロシージャ
IMPORT_SCHEMA_STATSプロシージャ
IMPORT_SYSTEM_STATSプロシージャ
IMPORT_TABLE_STATSプロシージャ

注意:
Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

統計情報のロックまたはロック解除

オブジェクトの統計情報をロックおよびロック解除するには、次のプロシージャを使用します。

LOCK_PARTITION_STATSプロシージャ
LOCK_SCHEMA_STATSプロシージャ
LOCK_TABLE_STATSプロシージャ

UNLOCK_PARTITION_STATSプロシージャ
UNLOCK_SCHEMA_STATSプロシージャ
UNLOCK_TABLE_STATSプロシージャ

LOCK_*プロシージャは、統計情報の現在のセットをアクセス制限するか、統計情報を不変のままにします。表の統計情報がロックされている場合、表統計情報、列統計情報、ヒストグラムおよび統計情報など、すべての依存索引に関する情報も含めて、表に依存するすべての統計情報はロックされているとみなされます。

統計履歴のリストアおよびパージ

指定したタイムスタンプの統計情報をリストアするには、次のプロシージャを使用します。これは、新しく収集された統計情報によって準最適な実行計画がいくつか実現される場合や、管理者の要望により統計情報を以前のセットに戻す必要がある場合に有効です。

RESET_GLOBAL_PREF_DEFAULTSプロシージャ
RESTORE_DATABASE_STATSプロシージャ
RESTORE_DICTIONARY_STATSプロシージャ
RESTORE_FIXED_OBJECTS_STATSプロシージャ
RESTORE_SCHEMA_STATSプロシージャ
RESTORE_SYSTEM_STATSプロシージャ
RESTORE_TABLE_STATSプロシージャ

ディクショナリの統計情報が変更されると、古いバージョンの統計情報が将来のリストアに備えて自動的に保存されます。古い統計情報は、統計履歴のリテンション設定とシステムで実行された最新の統計情報収集の時間に基づいて、一定の周期で自動的にパージされます。ALTER_STATS_HISTORY_RETENTIONプロシージャを使用して、保存を設定できます。

この他、DBMS_STATSプロシージャで統計情報のリストアに関連するものには、次のものがあります。

- PURGE_STATSプロシージャ: このプロシージャでは、タイムスタンプに関係なく古いバージョンを手動でパージできます。

- GET_STATS_HISTORY_RETENTIONファンクション: このファンクションは、現在の統計履歴のリテンション値を取得します。

- GET_STATS_HISTORY_AVAILABILITYファンクション: このファンクションは、統計履歴を使用できる最も古いタイムスタンプを取得します。ユーザーが統計情報をリストアする場合、最も古いタイムスタンプよりさらに前のタイムスタンプにはできません。

RESTORE_*操作は、ユーザー定義の統計情報ではサポートされていません。

ユーザー定義の統計情報

DBMS_STATSパッケージは、ユーザー定義の統計情報に関する操作をサポートしています。ドメイン索引または列が(associateを使用して)統計タイプに関連付けられている場合は、索引または列に関する操作によって、ユーザー定義の統計情報が操作されます。たとえば、GET_INDEX_STATSプロシージャを使用して(統計タイプに関連付けられている)ドメイン索引の統計情報を収集すると、関連付けられている統計タイプに対応するユーザー定義の統計情報収集メソッドが起動されます。同様に、削除、転送、インポートおよびエクスポートの各操作によって、ユーザー定義の統計情報が操作されます。

ユーザー定義の統計情報に対するSET_*およびGET_*操作も、列および索引に対する特別バージョンのSETおよびGETインタフェースを使用してサポートされます。

EXPORT_*、IMPORT_*およびRESTORE_*操作は、ユーザー定義の統計情報ではサポートされていません。

保留中の統計情報

デフォルトでは、このパッケージは統計情報を収集してディクショナリに格納します。ユーザーは、SET*PREFSプロシージャを使用してPUBLISHオプションをFALSEにすることによって、これらの統計情報を、ディクショナリではなくシステムのプライベート・エリアに格納できます。PUBLISHのデフォルト値はTRUEです。プライベート領域に格納された統計情報は、パラメータoptimizer_use_pending_statisticsがTRUEに設定されないかぎり、コスト・ベース・オプティマイザでは使用されません。このパラメータのデフォルト値はFALSEで、このブール・パラメータは、セッション/システム・レベルで設定できます。ユーザーは、セッションの保留中の統計情報を使用することによって、クエリー・プランに対する新しい統計情報の影響を確認できます。

保留中の統計情報には、新しい統計情報を一般的に使用できるようにする前にクエリー・プランに対するそれらの統計情報の影響を確認するメカニズムが用意されています。クエリー・プランを確認するには、次の2つの方法があります。

- 保留中の統計情報を(EXPORT_PENDING_STATSプロシージャを使用して)テスト・システムにエクスポートし、問合せワークロードを実行してパフォーマンスまたは計画をチェックします。

- 保留中の統計情報が収集されたシステムのセッションでoptimizer_use_pending_statisticsをTRUEに設定し、ワークロードを実行してパフォーマンスまたは計画をチェックします。

パフォーマンスまたはクエリー・プランの確認後、パフォーマンスに問題がない場合は、(PUBLISH_PENDING_STATSプロシージャを実行して)保留中の統計情報をパブリッシュできます。問題がある場合は、(DELETE_PENDING_STATSプロシージャを実行して)削除できます。

保留中の統計情報は、パブリッシュ、エクスポートまたは削除できます。保留中の統計情報を管理するために、次のプロシージャが用意されています。

- DELETE_PENDING_STATSプロシージャ

- EXPORT_PENDING_STATSプロシージャ

- PUBLISH_PENDING_STATSプロシージャ

統計情報の比較

DIFF_TABLE_STATS_*統計情報を使用すると、ソースが異なる2つの表の統計情報を比較できます。統計情報のソースは、次のいずれかです。

- 2つの異なるユーザー統計表

- statidsを使用して識別可能な2つの統計情報のセットが含まれている単一のユーザー統計表

- ユーザー統計表とディクショナリ履歴

- 保留中の統計情報

これらのファンクションでは、依存オブジェクト(索引、列、パーティション)の統計情報も比較します。また、統計情報の違いが特定のしきい値を超えた場合に、両方のソースのオブジェクトの統計情報を表示します。しきい値は、デフォルトが10%で、ファンクションの引数として指定できます。最初のソース(stattab1またはtime1)に対応する統計情報が、差分のパーセントを計算する基礎として使用されます。

統計情報の拡張

このパッケージでは、列グループおよび式の統計情報の収集を実行できます。列グループおよび式に対して収集された統計情報は、拡張統計情報と呼ばれます。

列グループの統計情報は、列間の相関関係の評価のためにオプティマイザによって使用されます。たとえば、問合せにc1=1とc2=1の述語があり、列グループ(c1, c2)に対する統計がある場合、オプティマイザはこの統計を使用して、述語の組合せの選択性を見積ります。式の統計は、オプティマイザによりこれらの式の述語の選択性を見積るために使用されます。拡張統計情報は列の統計情報に類似しており、列名を取るプロシージャは列名のかわりに拡張統計情報名を受け入れます。

関連サブプログラム:

- CREATE_EXTENDED_STATSファンクション

- DROP_EXTENDED_STATSプロシージャ

- SHOW_EXTENDED_STATS_NAMEファンクション

推奨されないサブプログラム

Oracle Database 11gリリース2(11.2)では、次のサブプログラムの使用は廃止されました。

- GET_PARAMファンクション
かわりに、GET_PREFSファンクションを使用します。

- SET_PARAMプロシージャ
かわりに、SET_GLOBAL_PREFSプロシージャを使用します。

- RESET_PARAM_DEFAULTSプロシージャ
かわりに、RESET_GLOBAL_PREF_DEFAULTSプロシージャを使用します。

データ構造

DBMS_STATSパッケージは、レコード・タイプを定義します。

レコード・タイプ

- STAT_RECレコード・タイプ

STAT_RECレコード・タイプ

このレコード・タイプは、ユーザーが列の統計を手動で設定する場合のために提供されています。フィールドを使用して、列の最小/最大値、および列のヒストグラムを指定できます。

構文

TYPE STATREC IS RECORD (
epc    NUMBER,
minval RAW(2000),
maxval RAW(2000),
bkvals NUMARRAY,
novals NUMARRAY,
chvals CHARARRAY,
eavals RAWARRAY,
rpcnts NUMARRAY,
eavs   NUMBER);

フィールド

表155-2 STAT_RECの属性

フィールド

説明

epc

ヒストグラム内のバケット数

minval

最小値

maxval

最大値

bkvals

バケット数の配列

novals

正規化エンドポイント値の配列

chvals

ダンプされたエンドポイント値の配列

eavals

エンドポイント実際値の配列

rpcnts

エンドポイント値の頻度の配列

eavs

実際のエンドポイント値がヒストグラムで必要になるかどうかを示す数値。PREPARE_COLUMN_VALUESプロシージャを使用している場合、このフィールドは自動的に入力されます。

DBMS_STATSサブプログラムの要約

表155-3 DBMS_STATSパッケージのサブプログラム

サブプログラム

説明

ALTER_STATS_HISTORY_RETENTIONプロシージャ

統計履歴のリテンション値を変更します。

CONVERT_RAW_VALUEプロシージャ

最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。

CONVERT_RAW_VALUE_NVARCHARプロシージャ

最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。

CONVERT_RAW_VALUE_ROWIDプロシージャ

最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。

COPY_TABLE_STATSプロシージャ

スケーリング後に、ソース・(サブ・)パーティションの統計情報を宛先(サブ・)パーティションにコピーします。

CREATE_EXTENDED_STATSファンクション

ユーザー指定の列グループまたは式の仮想列を表に作成します。

CREATE_STAT_TABLEプロシージャ

統計情報を保持できるownnameのスキーマにstattabの名前で表を作成します。

DELETE_COLUMN_STATSプロシージャ

列に関連する統計情報を削除します。

DELETE_DATABASE_PREFSプロシージャ

すべての表の統計プリファレンスを削除します。

DELETE_DATABASE_STATSプロシージャ

データベース全体に関する統計情報を削除します。

DELETE_DICTIONARY_STATSプロシージャ

すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を削除します。

DELETE_FIXED_OBJECTS_STATSプロシージャ

すべての固定表の統計情報を削除します。

DELETE_INDEX_STATSプロシージャ

索引に関連する統計情報を削除します。

DELETE_PENDING_STATSプロシージャ

収集され、パブリッシュされなかったプライベート統計を削除します。

DELETE_PROCESSING_RATEプロシージャ

指定した統計情報のソースの処理速度を削除します。ソースが指定されていない場合、すべてのソースの統計情報が削除されます。

DELETE_SCHEMA_PREFSプロシージャ

指定した所有者名で所有されているすべての表の統計プリファレンスを削除します。

DELETE_SCHEMA_STATSプロシージャ

スキーマに関連する統計情報を削除します。

DELETE_SYSTEM_STATSプロシージャ

システムの統計情報を削除します。

DELETE_TABLE_PREFSプロシージャ

指定したスキーマ内の指定した表の統計プリファレンスを削除します。

DELETE_TABLE_STATSプロシージャ

表に関連する統計情報を削除します。

DIFF_TABLE_STATS_IN_HISTORYファンクション

過去の2つのタイムスタンプからの表の統計情報の比較、およびそれらのタイムスタンプの時点の統計情報の比較を行います。

DIFF_TABLE_STATS_IN_PENDINGファンクション

保留中の統計情報とタイムスタンプの時点の統計情報またはディクショナリの統計情報を比較します。

DIFF_TABLE_STATS_IN_STATTABファンクション

2つの異なるソースの表の統計情報を比較します。

DROP_EXTENDED_STATSプロシージャ

ユーザー指定の拡張に対して作成された統計情報エントリを削除します。

DROP_STAT_TABLEプロシージャ

CREATE_STAT_TABLEで作成したユーザー統計表を削除します。

EXPORT_COLUMN_STATSプロシージャ

特定の列に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

EXPORT_DATABASE_PREFSプロシージャ

すべての表の統計プリファレンスをエクスポートします。

EXPORT_DATABASE_STATSプロシージャ

データベース内のすべてのオブジェクトに関する統計情報を取り出し、statown.stattabで識別されるユーザー統計表に格納します。

EXPORT_DICTIONARY_STATSプロシージャ

すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

EXPORT_FIXED_OBJECTS_STATSプロシージャ

固定表に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

EXPORT_INDEX_STATSプロシージャ

特定の索引に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

EXPORT_PENDING_STATSプロシージャ

保留中として収集および格納された統計情報をエクスポートします。

EXPORT_SCHEMA_PREFSプロシージャ

指定した所有者名で所有されているすべての表の統計プリファレンスをエクスポートします。

EXPORT_SCHEMA_STATSプロシージャ

ownnameで識別されるスキーマ内のすべてのオブジェクトに関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

EXPORT_SYSTEM_STATSプロシージャ

システムの統計情報を取り出し、ユーザー統計表に格納します。

EXPORT_TABLE_PREFSプロシージャ

指定したスキーマ内の指定した表の統計プリファレンスを、指定した統計表にエクスポートします。

EXPORT_TABLE_STATSプロシージャ

特定の表に関する統計情報を取り出し、ユーザー統計表に格納します。

FLUSH_DATABASE_MONITORING_INFOプロシージャ

インメモリーのすべての表の監視情報をディクショナリにフラッシュします。

GATHER_DATABASE_STATSプロシージャ

データベース内のすべてのオブジェクトに関する統計情報を収集します。

GATHER_DICTIONARY_STATSプロシージャ

ディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を収集します。

GATHER_FIXED_OBJECTS_STATSプロシージャ

固定オブジェクトの統計情報を収集します。

GATHER_INDEX_STATSプロシージャ

索引の統計情報を収集します。

GATHER_PROCESSING_RATEプロシージャ

interval分後に終了する処理率の収集ジョブを開始します。

GATHER_SCHEMA_STATSプロシージャ

スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

GATHER_SYSTEM_STATSプロシージャ

システムの統計情報を収集します。

GATHER_TABLE_STATSプロシージャ

表と列(および索引)の統計情報を収集します。

GENERATE_STATSプロシージャ

関連するオブジェクトに関して以前に収集した統計情報から、オブジェクトの統計情報を生成します。

GET_COLUMN_STATSプロシージャ

列に関連するすべての情報を取得します。

GET_INDEX_STATSプロシージャ

索引に関連するすべての情報を取得します。

GET_PARAMファンクション

DBMS_STATSプロシージャのパラメータのデフォルト値を取得します(「推奨されないサブプログラム」を参照)。

GET_PREFSファンクション

指定したプリファレンスのデフォルト値を取得します。

GET_STATS_HISTORY_AVAILABILITYファンクション

統計履歴を使用できる最も古いタイムスタンプを取得します。

GET_STATS_HISTORY_RETENTIONファンクション

現在の統計履歴のリテンション値を戻します。

GET_SYSTEM_STATSプロシージャ

stattab(stattabがNULLの場合はディクショナリ)からシステムの統計情報を取得します。

GET_TABLE_STATSプロシージャ

表に関連するすべての情報を取得します。

IMPORT_COLUMN_STATSプロシージャ

stattabで識別されるユーザー統計表から特定の列に関する統計情報を取り出し、ディクショナリに格納します。

IMPORT_DATABASE_PREFSプロシージャ

すべての表の統計プリファレンスをインポートします。

IMPORT_DATABASE_STATSプロシージャ

データベース内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。

IMPORT_DICTIONARY_STATSプロシージャ

すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。

IMPORT_FIXED_OBJECTS_STATSプロシージャ

stattabで識別されるユーザー統計表から固定表に関する統計情報を取り出し、ディクショナリに格納します。

IMPORT_INDEX_STATSプロシージャ

stattabで識別されるユーザー統計表から特定の索引に関する統計情報を取り出し、ディクショナリに格納します。

IMPORT_SCHEMA_PREFSプロシージャ

指定した所有者名で所有されているすべての表の統計プリファレンスをインポートします。

IMPORT_SCHEMA_STATSプロシージャ

ownnameで識別されるスキーマ内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。

IMPORT_SYSTEM_STATSプロシージャ

ユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。

IMPORT_TABLE_PREFSプロシージャ

指定したスキーマ内の指定した表の統計プリファレンスを設定します。

IMPORT_TABLE_STATSプロシージャ

stattabで識別されるユーザー統計表から特定の表に関する統計情報を取り出し、ディクショナリに格納します。

LOCK_PARTITION_STATSプロシージャ

パーティションの統計情報をロックします。

LOCK_SCHEMA_STATSプロシージャ

スキーマのすべての表の統計情報をロックします。

LOCK_TABLE_STATSプロシージャ

表の統計情報をロックします。

MERGE_COL_USAGEプロシージャ

dblinkを使用して、列使用情報をソース・データベースからローカル・データベースにマージします。

PREPARE_COLUMN_VALUESプロシージャ

ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。

PREPARE_COLUMN_VALUES_NVARCHARプロシージャ

ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。

PREPARE_COLUMN_VALUES_ROWIDプロシージャ

ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SEED_COL_USAGEプロシージャを使用して将来格納するためにOracleの内部表記に変換します。

PUBLISH_PENDING_STATSプロシージャ

保留中として収集および格納された統計情報をパブリッシュします。

PURGE_STATSプロシージャ

ディクショナリに保存されている統計情報の古いバージョンをパージします。

REMAP_STAT_TABLEプロシージャ

ユーザー統計表のオブジェクトの名前を再マップします。

REPORT_COL_USAGEファンクション

記録された列(グループ)使用情報をレポートします。

REPORT_GATHER_AUTO_STATSファンクション

自動統計情報収集ジョブをレポート・モードで実行します。

REPORT_GATHER_DATABASE_STATSファンクション

GATHER_DATABASE_STATSプロシージャをレポート・モードで実行します。

REPORT_GATHER_DICTIONARY_STATSファンクション

GATHER_DICTIONARY_STATSプロシージャをレポート・モードで実行します。

REPORT_GATHER_FIXED_OBJ_STATSファンクション

GATHER_FIXED_OBJECTS_STATSプロシージャをレポート・モードで実行します。

REPORT_GATHER_SCHEMA_STATSファンクション

GATHER_SCHEMA_STATSプロシージャをレポート・モードで実行します。

REPORT_GATHER_TABLE_STATSファンクション

GATHER_TABLE_STATSプロシージャをレポート・モードで実行します。

REPORT_SINGLE_STATS_OPERATIONファンクション

マルチテナント環境で特定のプラガブル・データベース(PDB)の指定された操作のレポートを生成します(オプション)。

REPORT_STATS_OPERATIONSファンクション

2つのタイムスタンプ(指定されている場合と指定されていない場合がある)の間に実行されるすべての統計操作のレポートを生成します。

RESET_GLOBAL_PREF_DEFAULTSプロシージャ

すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。

RESET_PARAM_DEFAULTSプロシージャ

グローバル・プリファレンスをデフォルト値にリセットします(「推奨されないサブプログラム」を参照)。

RESTORE_DICTIONARY_STATSプロシージャ

すべてのディクショナリ表('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)の統計情報を、指定したタイムスタンプでリストアします。

RESTORE_FIXED_OBJECTS_STATSプロシージャ

すべての固定表の統計情報を、指定したタイムスタンプでリストアします。

RESTORE_SCHEMA_STATSプロシージャ

スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。

RESTORE_SYSTEM_STATSプロシージャ

スキーマのすべての表の統計情報を、指定したタイムスタンプでリストアします。

RESTORE_TABLE_STATSプロシージャ

指定したタイムスタンプ(as_of_timestamp)で、表の統計情報および関連する索引と列の統計情報をリストアします。

SEED_COL_USAGEプロシージャ

指定したSQLチューニング・セットでSQL文を繰り返し、それらをコンパイルして、その文に表示される列に関する列使用情報をシードします。

SET_COLUMN_STATSプロシージャ

列に関連する情報を設定します。

SET_DATABASE_PREFSプロシージャ

すべての表の統計プリファレンスを設定します。

SET_GLOBAL_PREFSプロシージャ

グローバルな統計プリファレンスを設定します。

SET_INDEX_STATSプロシージャ

索引に関連する情報を設定します。

SET_PARAMプロシージャ

DBMS_STATSプロシージャのパラメータのデフォルト値を設定します(「推奨されないサブプログラム」を参照)。

SET_PROCESSING_RATEプロシージャ

特定の操作の処理速度の値を設定します。

SET_SCHEMA_PREFSプロシージャ

指定した所有者名で所有されているすべての表の統計プリファレンスを設定します。

SET_SYSTEM_STATSプロシージャ

システムの統計情報を設定します。

SET_TABLE_PREFSプロシージャ

指定したスキーマ内の指定した表の統計プリファレンスを設定します。

SET_TABLE_STATSプロシージャ

表に関連する情報を設定します。

SHOW_EXTENDED_STATS_NAMEファンクション

ユーザー指定の拡張に対して作成された仮想列の名前を戻します。

TRANSFER_STATSプロシージャ

指定した表の統計情報を、dblinkによって指定されたリモート・データベースからローカル・データベースに転送します。

UNLOCK_PARTITION_STATSプロシージャ

パーティションの統計情報をロック解除します。

UNLOCK_SCHEMA_STATSプロシージャ

スキーマ内にあるすべての表の統計情報をロック解除します。

UNLOCK_TABLE_STATSプロシージャ

表の統計情報をロック解除します。

UPGRADE_STAT_TABLEプロシージャ

古い表のユーザー統計情報をアップグレードします。

ALTER_STATS_HISTORY_RETENTIONプロシージャ

このプロシージャは、統計履歴のリテンション値を変更します。統計履歴保存は、自動パージおよびPURGE_STATSプロシージャの両方で使用されます。

構文

DBMS_STATS.ALTER_STATS_HISTORY_RETENTION (
retention       IN     NUMBER);

パラメータ

表155-4 ALTER_STATS_HISTORY_RETENTIONプロシージャのパラメータ

パラメータ

説明

retention

リテンション期間を日数で指定します。少なくとも指定された期間は、統計履歴が保持されます。有効範囲は1から365000です。また、次の値を特定の目的に使用できます。

- -1: 自動パージで統計履歴を削除しない。

- 0: 古い統計情報を保存しない。自動パージですべての統計履歴を削除する。

- NULL: 統計履歴のリテンションをデフォルト値に変更する。

使用上の注意

このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

例外

ORA-20000: 権限が不十分です。

CONVERT_RAW_VALUEプロシージャ

このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を、データ・タイプ固有の値に変換します。GET_COLUMN_STATSまたはPREPARE_COLUMN_VALUESで入力されたStatRec構造のminvalフィールド、maxvalフィールドおよびeavalsフィールドの値が、有効な入力値です。

構文

DBMS_STATS.CONVERT_RAW_VALUE (
rawval     RAW,
resval OUT BINARY_FLOAT);

DBMS_STATS.CONVERT_RAW_VALUE (
rawval     RAW,
resval OUT BINARY_DOUBLE);

DBMS_STATS.CONVERT_RAW_VALUE (
rawval     RAW,
resval OUT DATE);

DBMS_STATS.CONVERT_RAW_VALUE (
rawval     RAW,
resval OUT NUMBER);

DBMS_STATS.CONVERT_RAW_VALUE (
rawval     RAW,
resval OUT VARCHAR2);

パラメータ

表155-5 CONVERT_RAW_VALUEプロシージャのパラメータ

パラメータ

説明

rawval

列最小、列最大、ヒストグラム終点の実際の値のRAWタイプ表記。

resval

変換済のタイプ固有の値。

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

CONVERT_RAW_VALUE_NVARCHARプロシージャ

このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を変換します。GET_COLUMN_STATSまたはPREPARE_COLUMN_VALUESで入力されたStatRec構造のminvalフィールド、maxvalフィールドおよびeavalsフィールドの値が、有効な入力値です。

構文

DBMS_STATS.CONVERT_RAW_VALUE_NVARCHAR (
rawval     RAW,
resval OUT NVARCHAR2);

パラメータ

表155-6 CONVERT_RAW_VALUE_NVARCHARプロシージャのパラメータ

パラメータ

説明

rawval

列最大または列最小のデータ・タイプ固有の出力パラメータのRAWタイプ表記。

resval

変換済のタイプ固有の値。

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

CONVERT_RAW_VALUE_ROWIDプロシージャ

このプロシージャは、最小値、最大値またはヒストグラム終点の実際の値の内部表記を変換します。GET_COLUMN_STATSまたはPREPARE_COLUMN_VALUESで入力されたStatRec構造のminvalフィールド、maxvalフィールドおよびeavalsフィールドの値が、有効な入力値です。

構文

DBMS_STATS.CONVERT_RAW_VALUE_ROWID (
rawval     RAW,
resval OUT ROWID);

プラグマ

pragma restrict_references(convert_raw_value_rowid, WNDS, RNDS, WNPS, RNPS);

パラメータ

表155-7 CONVERT_RAW_VALUE_ROWIDプロシージャのパラメータ

パラメータ

説明

rawval

列最大または列最小のデータ・タイプ固有の出力パラメータのRAWタイプ表記。

resval

変換済のタイプ固有の値。

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

COPY_TABLE_STATSプロシージャ

このプロシージャは、ソース・(サブ・)パーティションの統計情報を宛先(サブ・)パーティションにコピーします。すべての依存オブジェクト(列、ローカル索引など)の統計情報もコピーします。ソースの統計情報を使用できない場合は、何もコピーされません。オプションで、指定されたscale_factorに基づいて、(blks数、行数などの)統計情報をスケーリングできます。

構文

DBMS_STATS.COPY_TABLE_STATS (
ownname          VARCHAR2,
tabname          VARCHAR2,
srcpartname      VARCHAR2,
dstpartname      VARCHAR2,
scale_factor     VARCHAR2 DEFAULT 1,
flags            NUMBER DEFAULT NULL,
force            BOOLEAN DEFAULT FALSE);

パラメータ

表155-8 COPY_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

ソース・(サブ・)パーティションおよび宛先(サブ・)パーティションの表のスキーマ。

tabname

ソース・(サブ・)パーティションおよび宛先(サブ・)パーティションの表名。

srcpartname

ソース・(サブ・)パーティション。

dtspartname

宛先(サブ・)パーティション。

scale_factor

dstpartname内のnblks、nrowsなどをスケーリングするスケール係数。

flags

Oracle内部で使用(NULLのままにします)。

force

この引数の値がTRUEの場合、宛先[サブ]パーティションがロックされていても統計をコピーします。

例外

ORA-20000: (サブ・)パーティション名が無効です。

ORA-20001: 入力値が無効です。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

このプロシージャは、次のように、最初のパーティション列に対する宛先パーティションの最小値および最大値を更新します。

- パーティション化のタイプがHASHの場合は、宛先パーティションの最小値および最大値は、ソース・パーティションのパーティション化のタイプと同じです。

- パーティション化のタイプがLISTの場合

- 宛先パーティションがNOT DEFAULTパーティションである場合

- 宛先パーティションの最小値は、宛先パーティションを記述した値リストの最小値に設定されます。

- 宛先パーティションの最大値は、宛先パーティションを記述した値リストの最大値に設定されます。

- または、宛先パーティションがDEFAULTパーティションである場合

- 宛先パーティションの最小値は、ソース・パーティションの最小値に設定されます。

- 宛先パーティションの最大値は、ソース・パーティションの最大値に設定されます。

- パーティション化のタイプがRANGEの場合

- 宛先パーティションの最小値は、宛先パーティションが最初のパーティションでないかぎり、前のパーティションの上限に設定されます。最初のパーティションの場合、最小値は宛先パーティションの上限に設定されます。

- 宛先パーティションの上限がMAXVALUEである場合(この場合、宛先パーティションの最大値は前のパーティションの上限に設定される)を除き、宛先パーティションの最大値は宛先パーティションの上限に設定されます。

- ソース・パーティション列の最小値がソース・パーティション列の最大値と等しく、かつ最小値と最大値の両方がソース・パーティションの下限と等しく、単一の個別値を持つ場合、宛先パーティション列の最小値および最大値は両方とも、宛先パーティションの下限に設定されます。すべてのパーティション列に対してこの処理が行われます。
前述の条件が当てはまらない場合、2番目以降のパーティショニング列は次のように更新されます。宛先パーティション列の最大値は、1つを除き、宛先パーティションの上限とソース・パーティション列の最大値の大きい方に設定されます。宛先パーティションがD、その先行パーティションがD-1、調節するキー列がCnである場合、前のキー列Cn-1の上限がパーティションDとD-1で同じであることを条件として、Cnの最大値はDの上限に設定されます(ソース・パーティション列の最大値は無視されます)。

- 変更後の列の最小値と最大値が異なっていて、個別値の数が1より小さい場合、個別値の数は2に更新されます。

- このプロシージャでは、ソース/宛先がパーティション化された複合表のパーティションである場合に、基礎となるサブパーティションの統計はコピーされません。

CREATE_EXTENDED_STATSファンクション

このファンクションは、表のユーザー指定の列グループまたは式の列統計情報エントリをシステム内に作成します。この拡張の統計情報は、ユーザーまたは自動統計情報収集ジョブが表の統計情報を収集する際に収集されます。このような拡張の統計情報は、拡張統計情報と呼ばれます。このファンクションは、拡張用に新しく作成されたエントリの名前を戻します。

この2番目の形式では、SEED_COL_USAGEプロシージャによって記録された列グループ使用率に基づいて、統計の拡張が作成されます。このファンクションは、作成された拡張のレポートを戻します。

構文

DBMS_STATS.CREATE_EXTENDED_STATS (
ownname    VARCHAR2,
tabname    VARCHAR2,
extension  VARCHAR2)
RETURN VARCHAR2;

DBMS_STATS.CREATE_EXTENDED_STATS (
ownname    VARCHAR2,
tabname    VARCHAR2,
extension  VARCHAR2)
RETURN CLOB;

パラメータ

表155-9 CREATE_EXTENDED_STATSファンクションのパラメータ

パラメータ

説明

ownname

表の所有者名。

tabname

表の名前。

extension

列グループまたは式を指定できます。指定した表に、列c1およびc2があるとします。たとえば、列グループは"(c1, c2)"、式は"(c1 + c2)"のようになります。

戻り値

このファンクションは、拡張用に新しく作成されたエントリの名前を戻します。

例外

ORA-20000: 権限が不十分です。/拡張の作成はサポートされていません。

ORA-20001: 拡張の処理中にエラーが発生しました。

ORA-20007: 拡張はすでに存在しています。

ORA-20008: 拡張数の上限に達しました。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

拡張には次の9個の制限事項があります。

- 拡張に仮想列を含めることはできません。

- SYSが所有する表には拡張を作成できません。

- クラスタ表、索引構成表、一時表または外部表には拡張を作成できません。

- 表内の拡張の合計数が最大数(20、表内の非仮想列の10%)を超えることはできません。

- 列グループ内の列の数は、2から32の範囲内である必要があります。

- 1つの列を1つの列グループ内で複数回使用することはできません。

- 列グループに式を含めることはできません。

- 式には1つ以上の列が含まれている必要があります。

- 式に副問合せを含めることはできません。

- COMPATIBLEは、11.0.0.0.0以上である必要があります。

CREATE_STAT_TABLEプロシージャ

このプロシージャは、統計情報を保持できるownnameのスキーマにあるstattabの名前で表を作成します。この表は、このパッケージのプロシージャを介して単独にアクセスされるため、この表を構成する列とタイプは互いに関係がありません。

構文

DBMS_STATS.CREATE_STAT_TABLE (
ownname             VARCHAR2,
stattab             VARCHAR2,
tblspace            VARCHAR2 DEFAULT NULL,
global_temporary    BOOLEAN DEFAULT FALSE);

パラメータ

表155-10 CREATE_STAT_TABLEプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

stattab

作成する表の名前。ユーザーがディクショナリ統計情報を直接変更しない場合、この値は、stattabパラメータとして他のプロシージャに渡されます。

tblspace

統計表を作成する表領域。このパラメータを指定しないと、統計表はユーザーのデフォルトの表領域に作成されます。

global_temporary

表をグローバル一時表として作成する必要があるかどうか。

例外

ORA-20000: 表がすでに存在するか、権限が不十分です。

ORA-20001: 表領域が存在しません

使用上の注意

このプロシージャを起動するには、指定したスキーマで表を作成するために必要な権限が必要です。

DELETE_COLUMN_STATSプロシージャ

このプロシージャは、列に関連する統計情報を削除します。

構文

DBMS_STATS.DELETE_COLUMN_STATS (
ownname        VARCHAR2,
tabname        VARCHAR2,
colname        VARCHAR2,
partname       VARCHAR2 DEFAULT NULL,
stattab        VARCHAR2 DEFAULT NULL,
statid         VARCHAR2 DEFAULT NULL,
cascade_parts  BOOLEAN  DEFAULT TRUE,
statown        VARCHAR2 DEFAULT NULL,
no_invalidate  BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force          BOOLEAN  DEFAULT FALSE,
col_stat_type  VARCHAR2 DEFAULT 'ALL');

パラメータ

表155-11 DELETE_COLUMN_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

列が所属している表の名前。

colname

列または拡張の名前。

partname

統計情報を削除する表パーティションの名前。表がパーティション化されていて、partnameがNULLの場合、グローバルな列統計情報が削除されます。

stattab

統計情報を削除する場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接削除されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

cascade_parts

表がパーティション化されていて、partnameがNULLの場合、このパラメータをTRUEに設定すると、基礎となるすべてのパーティションについても列の統計情報が削除されます。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

この引数の値がTRUEの場合、列の統計情報は、ロックされていても削除されます。

col_stat_type

削除される列統計情報のタイプ。この引数は次の値を取ります。

- HISTOGRAM: 列のヒストグラムのみを削除します。

- ALL: ベース列の統計情報およびヒストグラムを削除します。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20005: オブジェクト統計はロックされています

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

DELETE_DATABASE_PREFSプロシージャ

このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスを削除するために使用されます。これらの表は、add_sysパラメータにTRUEを渡すことによって含めることができます。

構文

DBMS_STATS.DELETE_DATABASE_PREFS (
pname            IN   VARCHAR2,
add_sys          IN   BOOLEAN DEFAULT FALSE);

パラメータ

表155-12 DELETE_DATABASE_PREFSプロシージャのパラメータ

パラメータ

説明

pname

プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。

- CASCADE

- DEGREE

- ESTIMATE_PERCENT

- METHOD_OPT

- NO_INVALIDATE

- GRANULARITY

- PUBLISH

- INCREMENTAL

- INCREMENTAL_STALENESS

- INCREMENTAL_LEVEL

- STALE_PERCENT

- GLOBAL_TEMP_TABLE_STATS

- TABLE_CACHED_BLOCKS

- OPTIONS

.

CASCADE - 指定した値によって、索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

.

DEGREE - 指定した値によって、統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 指定した値によって、推定する行のパーセントが決定されます。

.

METHOD_OPT - 指定した値によって、列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、'FOR ALL'構文のみが許可されます。

.

NO_INVALIDATE - 指定した値によって、統計情報を収集する表の依存カーソルの無効化が制御されます。

.

GRANULARITY - 指定した値によって、収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

.

PUBLISH - 指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。

.

INCREMENTAL - 指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。

INCREMENTAL_LEVEL: INCREMENTALプリファレンスがTRUEに設定されている場合、この値はどのシノプシスを収集するかを制御します。

INCREMENTAL_STALENESS: この値は、パーティションまたはサブパーティションを失効として決定する方法を制御します。

.

STALE_PERCENT - 指定した値によって、表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。

GLOBAL_TEMP_TABLE_STATS: グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。

TABLE_CACHED_BLOCKS: 索引のクラスタリング要因の収集時に表のバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)。

OPTIONS: GATHER_TABLE_STATSプロシージャで使用されるoptionsパラメータを判別します。T

add_sys

SYS表を含めるかどうかを決定します。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- すべてのpname引数はVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲みます。

例

DBMS_STATS.DELETE_DATABASE_PREFS('CASCADE', FALSE);
DBMS_STATS.DELETE_DATABASE_PREFS('ESTIMATE_PERCENT',TRUE);

関連項目:
このサブプログラムの複雑な使用法の例については、『Oracle Database SQLチューニング・ガイド』を参照してください。

DELETE_DATABASE_STATSプロシージャ

このプロシージャは、データベース内のすべての表に関する統計情報を削除します。

構文

DBMS_STATS.DELETE_DATABASE_STATS (
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force            BOOLEAN  DEFAULT FALSE,
stat_category    VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);

パラメータ

表155-13 DELETE_DATABASE_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報を削除する場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接削除されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

この引数の値がTRUEの場合、データベース内の表の統計情報は、ロックされていても削除されます。

stat_category

削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。

- OBJECT_STATS: 表、列および索引の統計情報。

- SYNOPSES: 増分統計をサポートする情報

デフォルトは'OBJECT_STATS, SYNOPSES'です。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

DELETE_DICTIONARY_STATSプロシージャ

このプロシージャは、すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を削除します。

構文

DBMS_STATS.DELETE_DICTIONARY_STATS (
stattab        VARCHAR2 DEFAULT NULL,
statid         VARCHAR2 DEFAULT NULL,
statown        VARCHAR2 DEFAULT NULL,
no_invalidate  BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
stattype       VARCHAR2 DEFAULT 'ALL',
force          BOOLEAN  DEFAULT FALSE,
stat_category  VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);

パラメータ

表155-14 DELETE_DICTIONARY_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報を削除する場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接削除されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattype

統計タイプ。

force

この引数の値がTRUEの場合、データベース内の表の統計情報は、ロックされていても削除されます。

stat_category

削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。

- OBJECT_STATS: 表、列および索引の統計情報。

- SYNOPSES: 増分統計をサポートする情報

デフォルトは'OBJECT_STATS, SYNOPSES'です。

使用上の注意

このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

DELETE_FIXED_OBJECTS_STATSプロシージャ

このプロシージャは、すべての固定表の統計情報を削除します。

構文

DBMS_STATS.DELETE_FIXED_OBJECTS_STATS (
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force            BOOLEAN  DEFAULT FALSE);

パラメータ

表155-15 DELETE_FIXED_OBJECTS_STATSプロシージャのパラメータ

パラメータ

説明

stattab

現在の統計情報を削除する場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接削除されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)。これは、stattabがNULLでない場合のみ適用可能です。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

TRUEに設定されている場合、オブジェクトの統計情報がロックされていても、それを無視して統計情報を削除します。

使用上の注意

このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。

例外

ORA-20000: 権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

DELETE_INDEX_STATSプロシージャ

このプロシージャは、索引に関連する統計情報を削除します。

構文

DBMS_STATS.DELETE_INDEX_STATS (
ownname          VARCHAR2,
indname          VARCHAR2,
partname         VARCHAR2 DEFAULT NULL,
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
cascade_parts    BOOLEAN  DEFAULT TRUE,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
stattype         VARCHAR2 DEFAULT 'ALL',
force            BOOLEAN  DEFAULT FALSE);
stat_category    VARCHAR2 DEFAULT DEFAULT_DEL_STAT_CATEGORY);

パラメータ

表155-16 DELETE_INDEX_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

indname

索引の名前。

partname

統計情報を削除する索引パーティションの名前。索引がパーティション化されていて、partnameがNULLの場合、索引統計情報はグローバル・レベルで削除されます。

stattab

統計情報を削除する場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接削除されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

cascade_parts

索引がパーティション化されていて、partnameがNULLの場合、このパラメータをTRUEに設定すると、基礎となるすべてのパーティションについても索引の統計情報が削除されます。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattype

統計タイプ。

force

この引数の値がTRUEの場合、索引の統計情報は、ロックされていても削除されます。

stat_category

削除する統計情報。これは、カンマで区切られた複数の値を受け入れます。

- OBJECT_STATS: 表、列および索引の統計情報。

- SYNOPSES: 増分統計をサポートする情報

デフォルトは'OBJECT_STATS, SYNOPSES'です。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20005: オブジェクト統計はロックされています

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

DELETE_PENDING_STATSプロシージャ

このプロシージャは、収集され、パブリッシュされなかった保留中の統計情報を削除するために使用されます。

構文

DBMS_STATS.DELETE_PENDING_STATS (
ownname    IN  VARCHAR2  DEFAULT USER,
tabname    IN  VARCHAR2);

パラメータ

表155-17 DELETE_PENDING_STATSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

tabname

表名。

例外

ORA-20000: 権限が不十分です。

使用上の注意

- パラメータtabnameがNULLの場合、指定したスキーマのすべての表に削除が適用されます。

- デフォルトの所有者/スキーマは、このプロシージャを実行するユーザーです。

- このプロシージャを実行するには、このプロシージャによって処理される表の統計情報を収集する権限と同じ権限を持っている必要があります。

例

DBMS_STATS.DELETE_PENDING_STATS('SH', 'SALES');

DELETE_PROCESSING_RATEプロシージャ

このファンクションは、指定した統計情報のソースの処理速度を削除します。ソースが指定されていない場合、すべてのソースの統計情報が削除されます。

構文

DBMS_STATS.DELETE_PROCESSING_RATE (
stat_source      IN    VARCHAR2 DEFAULT NULL);

パラメータ

表155-18 DELETE_PROCESSING_RATEプロシージャのパラメータ

パラメータ

説明

stat_source

処理速度のソース。

- 'MANUAL': SET_PROCESSING_RATEプロシージャを使用してユーザーが手動で設定する値。

- 'CALIBRATION': ユーザーが明示的に実行する、較正用のGATHER_PROCESSING_RATEプロシージャによって収集される値。

- 'FEEDBACK': 時間フィードバックによって取得される値。

使用上の注意

このプロシージャを実行するにはOPTIMIZER_PROCESSING_RATEロールが必要です。AUTO DOPは、処理速度を使用してSQL文の適切な並列度を判断するからです。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

DELETE_SCHEMA_PREFSプロシージャ

このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスを削除するために使用されます。

構文

DBMS_STATS.DELETE_SCHEMA_PREFS (
ownname   IN   VARCHAR2,
pname     IN   VARCHAR2);

パラメータ

表155-19 DELETE_SCHEMA_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

pname

プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。

- CASCADE

- DEGREE

- ESTIMATE_PERCENT

- METHOD_OPT

- NO_INVALIDATE

- GRANULARITY

- PUBLISH

- INCREMENTAL

- INCREMENTAL_STALENESS

- INCREMENTAL_LEVEL

- STALE_PERCENT

- GLOBAL_TEMP_TABLE_STATS

- TABLE_CACHED_BLOCKS

- OPTIONS

.

CASCADE - 指定した値によって、索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

.

DEGREE - 指定した値によって、統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 指定した値によって、推定する行のパーセントが決定されます。

.

METHOD_OPT - 指定した値によって、列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、'FOR ALL'構文のみが許可されます。

.

NO_INVALIDATE - 指定した値によって、統計情報を収集する表の依存カーソルの無効化が制御されます。

.

GRANULARITY - 指定した値によって、収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

.

PUBLISH - 指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。

.

INCREMENTAL - 指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。

INCREMENTAL_LEVEL: INCREMENTALプリファレンスがTRUEに設定されている場合、この値はどのシノプシスを収集するかを制御します。

INCREMENTAL_STALENESS: この値は、パーティションまたはサブパーティションを失効として決定する方法を制御します。

.

STALE_PERCENT - 指定した値によって、表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。

GLOBAL_TEMP_TABLE_STATS: グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。

TABLE_CACHED_BLOCKS: 索引のクラスタリング要因の収集時に表のバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)。

OPTIONS: GATHER_TABLE_STATSプロシージャで使用されるoptionsパラメータを判別します。T

例外

ORA-20000: 権限が不十分です。/スキーマ"<schema>"は存在しません

ORA-20001: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、所有者として接続するか、あるいはSYSDBA権限またはANALYZE ANYシステム権限を持っている必要があります。

- すべての引数はVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲みます。

例

DBMS_STATS.DELETE_SCHEMA_PREFS('SH', 'CASCADE');
DBMS_STATS.DELETE_SCHEMA_PREFS('SH', 'ESTIMATE_PERCENT');
DBMS_STATS.DELETE_SCHEMA_PREFS('SH', 'DEGREE');

DELETE_SCHEMA_STATSプロシージャ

このプロシージャは、スキーマ全体の統計情報を削除します。

構文

DBMS_STATS.DELETE_SCHEMA_STATS (
ownname          VARCHAR2,
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force            BOOLEAN DEFAULT FALSE);

パラメータ

表155-20 DELETE_SCHEMA_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

stattab

統計情報を削除する場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接削除されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

この引数の値がTRUEの場合、スキーマ内の表の統計情報は、ロックされていても削除されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

DELETE_SYSTEM_STATSプロシージャ

このプロシージャは、stattabが指定されていない場合、ワークロード統計('INTERVAL'または'START'および'STOP'オプションを使用して収集)を削除し、デフォルトをnoworkload統計('NOWORKLOAD'オプションを使用して収集)にリセットします。stattabが指定されている場合、サブプログラムは、関連するstatidとともにすべてのシステム統計情報をstattabから削除します。

構文

DBMS_STATS.DELETE_SYSTEM_STATS (
stattab       VARCHAR2 DEFAULT NULL,
statid        VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL);

パラメータ

表155-21 DELETE_SYSTEM_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報が保存されるユーザー統計表の識別子。

statid

stattabに保存された統計情報に関連付けられた、オプションの識別子。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

使用上の注意

このプロシージャを実行するには、GATHER_SYSTEM_STATISTICSロールが必要です。

DELETE_TABLE_PREFSプロシージャ

このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを削除するために使用されます。

構文

DBMS_STATS.DELETE_TABLE_PREFS (
ownname    IN  VARCHAR2,
tabname    IN  VARCHAR2,
pname      IN  VARCHAR2);

パラメータ

表155-22 DELETE_TABLE_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

tabname

表名。

pname

プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。

- AUTOSTATS_TARGET

- CASCADE

- CONCURRENT

- DEGREE

- ESTIMATE_PERCENT

- METHOD_OPT

- NO_INVALIDATE

- GRANULARITY

- PUBLISH

- INCREMENTAL

- INCREMENTAL_STALENESS

- INCREMENTAL_LEVEL

- STALE_PERCENT

- GLOBAL_TEMP_TABLE_STATS

- TABLE_CACHED_BLOCKS

- OPTIONS

AUTOSTATS_TARGET: このプリファレンスは、自動統計情報収集にのみ適用されます。このパラメータの値は、統計情報収集に必要なオブジェクトを制御します。

.

CASCADE - 指定した値によって、索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

CONCURRENT: このプリファレンスは、統計を複数のオブジェクトで同時に収集するか、または一度に1つずつ順次に収集するかどうかを判別します。

.

DEGREE - 指定した値によって、統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 指定した値によって、推定する行のパーセントが決定されます。

.

METHOD_OPT - 指定した値によって、列統計収集およびヒストグラムの作成が制御されます。グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、'FOR ALL'構文のみが許可されます。

.

NO_INVALIDATE - 指定した値によって、統計情報を収集する表の依存カーソルの無効化が制御されます。

.

GRANULARITY - 指定した値によって、収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

.

PUBLISH - 指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。

.

INCREMENTAL - 指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。

INCREMENTAL_LEVEL: INCREMENTALプリファレンスがTRUEに設定されている場合、この値はどのシノプシスを収集するかを制御します。

INCREMENTAL_STALENESS: この値は、パーティションまたはサブパーティションを失効として決定する方法を制御します。

.

STALE_PERCENT - 指定した値によって、表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。

GLOBAL_TEMP_TABLE_STATS: グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。

TABLE_CACHED_BLOCKS: 索引のクラスタリング要因の収集時に表のバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)。

OPTIONS: GATHER_TABLE_STATSプロシージャで使用されるoptionsパラメータを判別します。T

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、表の所有者として接続するか、あるいは表に対するANALYZE権限またはANALYZE ANYシステム権限を付与されている必要があります。

- すべての引数はVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲みます。

例

DBMS_STATS.DELETE_TABLE_PREFS('SH', 'SALES', 'CASCADE');
DBMS_STATS.DELETE_TABLE_PREFS('SH', 'SALES', 'DEGREE');

DELETE_TABLE_STATSプロシージャ

このプロシージャは、表に関連する統計情報を削除します。

構文

DBMS_STATS.DELETE_TABLE_STATS (
ownname          VARCHAR2,
tabname          VARCHAR2,
partname         VARCHAR2 DEFAULT NULL,
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
cascade_parts    BOOLEAN  DEFAULT TRUE,
cascade_columns  BOOLEAN  DEFAULT TRUE,
cascade_indexes  BOOLEAN  DEFAULT TRUE,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force            BOOLEAN DEFAULT FALSE);

パラメータ

表155-23 DELETE_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

列が所属している表の名前。

partname

統計情報を取得する表(サブ・)パーティションの名前。表がパーティション化されていて、partnameがNULLの場合、統計情報はグローバルな表レベルで取り出されます。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接取り出されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

cascade_parts

表がパーティション化されていて、partnameがNULLの場合、このパラメータをTRUEに設定すると、基礎となるすべてのパーティションについても表の統計情報が削除されます。

cascade_columns

基礎となるすべての列について、DELETE_COLUMN_STATSをコールする必要があることを示します(cascade_partsパラメータを渡します)。

cascade_indexes

基礎となるすべての索引について、DELETE_INDEX_STATSをコールする必要があることを示します(cascade_partsパラメータを渡します)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

この引数の値がTRUEの場合、表の統計情報は、ロックされていても削除されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

ORA-20005: オブジェクト統計はロックされています

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

DIFF_TABLE_STATS_IN_HISTORYファンクション

このファンクションは、過去の2つのタイムスタンプからの表の統計情報の比較、およびそれらのタイムスタンプの時点の統計情報の比較を行うために使用できます。

構文

DBMS_STATS.DIFF_TABLE_STATS_IN_HISTORY(
ownname        IN  VARCHAR2,
tabname        IN  VARCHAR2,
time1          IN  TIMESTAMP WITH TIME ZONE,
time2          IN  TIMESTAMP WITH TIME ZONE DEFAULT NULL,
pctthreshold   IN  NUMBER  DEFAULT 10)
RETURN DiffRepTab pipelined;

パラメータ

表155-24 DIFF_TABLE_STATS_IN_HISTORYファンクションのパラメータ

パラメータ

説明

ownname

表の所有者。現行のスキーマの場合は、NULLを指定します。

tabname

統計情報を比較する表。

time1

最初のタイムスタンプ1。

time2

2番目のタイムスタンプ2。

pctthreshold

このファンクションは、この制限を超えた場合にのみ統計情報の違いをレポートします。デフォルト値は10です。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- 2番目のタイムスタンプがNULLの場合、このファンクションは、ディクショナリ内の現在の統計情報と他のタイムスタンプの時点の統計情報を比較します。

DIFF_TABLE_STATS_IN_PENDINGファンクション

このファンクションは、保留中の統計情報とタイムスタンプの時点の統計情報またはディクショナリの統計情報を比較します。

構文

DBMS_STATS.DIFF_TABLE_STATS_IN_PENDING(
ownname        IN  VARCHAR2,
tabname        IN  VARCHAR2,
timestamp      IN  TIMESTAMP WITH TIME ZONE,
pctthreshold   IN  NUMBER  DEFAULT 10)
RETURN DiffRepTab pipelined;

パラメータ

表155-25 DIFF_TABLE_STATS_IN_PENDINGファンクションのパラメータ

パラメータ

説明

ownname

表の所有者。現行のスキーマの場合は、NULLを指定します。

tabname

統計情報を比較する表。

timestamp

履歴から統計情報を取得するタイムスタンプ。

pctthreshold

このファンクションは、この制限を超えた場合にのみ統計情報の違いをレポートします。デフォルト値は10です。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- 2番目のタイムスタンプがNULLの場合、このファンクションは、ディクショナリ内の現在の統計情報と他のタイムスタンプの時点の統計情報を比較します。

DIFF_TABLE_STATS_IN_STATTABファンクション

このファンクションは、ソースが異なる2つの表の統計情報を比較するために使用できます。統計情報のソースは、次のいずれかです。

- 2つの異なるユーザー統計表

- statidsを使用して識別可能な2つの統計情報のセットが含まれている単一のユーザー統計表

- ユーザー統計表とディクショナリ

このファンクションは、依存オブジェクト(索引、列、パーティション)の統計情報も比較します。また、統計情報の違いが特定のしきい値(%)を超えた場合に、両方のソースからオブジェクトの統計情報を表示します。しきい値は、ファンクションの引数として指定できます。最初のソース(stattab1またはtime1)に対応する統計情報が、差分のパーセントを計算する基礎として使用されます。

構文

DBMS_STATS.DIFF_TABLE_STATS_IN_STATTAB(
ownname        IN  VARCHAR2,
tabname        IN  VARCHAR2,
stattab1       IN  VARCHAR2,
stattab2       IN  VARCHAR2 DEFAULT NULL,
pctthreshold   IN  NUMBER  DEFAULT 10,
statid1        IN  VARCHAR2 DEFAULT NULL,
statid2        IN  VARCHAR2 DEFAULT NULL,
stattab1own    IN  VARCHAR2 DEFAULT NULL,
stattab2own    IN  VARCHAR2 DEFAULT NULL)
RETURN DiffRepTab pipelined;

パラメータ

表155-26 DIFF_TABLE_STATS_IN_STATTABファンクションのパラメータ

パラメータ

説明

ownname

表の所有者。現行のスキーマの場合は、NULLを指定します。

tabname

統計情報を比較する表。

stattab1

ユーザー統計表1。

stattab2

ユーザー統計表2。NULLの場合、stattab1の統計情報は、ディクショナリ内の現在の統計情報と比較されます。これがデフォルトです。統計表内の2つのセットを比較するには、stattab1と同じ表を指定します(後述のstatidを参照)。

pctthreshold

このファンクションは、この制限を超えた場合にのみ統計情報の違いをレポートします。デフォルト値は10です。

stadid1

(オプション)stattab1内の統計情報セットを識別します。

stadid2

(オプション)stattab2内の統計情報セットを識別します。

stattab1own

stattab1が含まれているスキーマ(ownname以外の場合)。

stattab2own

stattab2が含まれているスキーマ(ownname以外の場合)。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

DROP_EXTENDED_STATSプロシージャ

このファンクションは、ユーザー指定の拡張に対して作成された統計情報エントリを削除します。これによって、CREATE_EXTENDED_STATSファンクションの実行効果が取り消されます。

構文

DBMS_STATS.DROP_EXTENDED_STATS (
ownname    VARCHAR2,
tabname    VARCHAR2,
extension  VARCHAR2);

パラメータ

表155-27 DROP_EXTENDED_STATSプロシージャのパラメータ

パラメータ

説明

ownname

表の所有者名。

tabname

表の名前。

extension

列グループまたは式を指定できます。指定した表に、列c1およびc2があるとします。たとえば、列グループは"(c1, c2)"、式は"(c1 + c2)"のようになります。

例外

- ORA-20000: 権限が不十分であるか、または拡張が存在しません。

- ORA-20001: 拡張の処理中にエラーが発生しました。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- 拡張に対して拡張統計情報セットが作成されない場合、このファンクションはエラーをスローします。

DROP_STAT_TABLEプロシージャ

このプロシージャは、ユーザー統計表を削除します。

構文

DBMS_STATS.DROP_STAT_TABLE (
ownname VARCHAR2,
stattab VARCHAR2);

パラメータ

表155-28 DROP_STAT_TABLEプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

stattab

ユーザー統計表の識別子。

例外

ORA-20000: 表が存在しないか、権限が不十分です。

使用上の注意

このプロシージャを起動するには、指定した表を削除する権限が必要です。

EXPORT_COLUMN_STATSプロシージャ

このプロシージャは、特定の列に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

構文

DBMS_STATS.EXPORT_COLUMN_STATS (
ownname  VARCHAR2,
tabname  VARCHAR2,
colname  VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab  VARCHAR2,
statid   VARCHAR2 DEFAULT NULL,
statown  VARCHAR2 DEFAULT NULL);

パラメータ

表155-29 EXPORT_COLUMN_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

列が所属している表の名前。

colname

列または拡張の名前。

partname

表パーティション名。表がパーティション化されていて、partnameがNULLの場合、グローバルでパーティション化された列の統計情報がエクスポートされます。

stattab

統計情報の格納場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

EXPORT_DATABASE_PREFSプロシージャ

このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスをエクスポートするために使用されます。これらの表は、add_sysパラメータにTRUEを渡すことによって含めることができます。

構文

DBMS_STATS.EXPORT_DATABASE_PREFS (
stattab    IN  VARCHAR2,
statid     IN  VARCHAR2 DEFAULT NULL,
statown    IN  VARCHAR2 DEFAULT NULL
add_sys    IN  BOOLEAN DEFAULT FALSE);

パラメータ

表155-30 EXPORT_DATABASE_PREFSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報のエクスポート先となる統計表の名前。

statid

(オプション)stattab内の統計情報を関連付ける識別子。

statown

stattabが含まれているスキーマ(ownname以外の場合)。

add_sys

値TRUEを指定すると、Oracle所有の表が含まれます。

例外

ORA-20000: 権限が不十分です。

使用上の注意

- このプロシージャを実行するには、SYSDBAロール、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- すべての引数はVARCHAR2タイプです。値は引用符で囲みます。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例

DBMS_STATS.EXPORT_DATABASE_PREFS('STATTAB', statown=>'SH');

EXPORT_DATABASE_STATSプロシージャ

このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報を取り出し、statown.stattabで識別されるユーザー統計表に格納します。

構文

DBMS_STATS.EXPORT_DATABASE_STATS (
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
statown         VARCHAR2 DEFAULT NULL,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-31 EXPORT_DATABASE_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報の格納場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

'OBJECT_STATS, SYNOPSES'が指定されると、表統計情報、列統計情報、索引統計情報およびシノプシスが削除されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

EXPORT_DICTIONARY_STATSプロシージャ

このプロシージャは、すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

構文

DBMS_STATS.EXPORT_DICTIONARY_STATS (
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
statown         VARCHAR2 DEFAULT NULL,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-32 EXPORT_DICTIONARY_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報の格納場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

'OBJECT_STATS, SYNOPSES'が指定されると、表統計情報、列統計情報、索引統計情報およびシノプシスが削除されます。

使用上の注意

- このプロシージャを実行するには、SYSDBAか、ANALYZE ANY DICTIONARYとANALYZE ANYのシステム権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

EXPORT_FIXED_OBJECTS_STATSプロシージャ

このプロシージャは、固定表に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

構文

DBMS_STATS.EXPORT_FIXED_OBJECTS_STATS (
stattab  VARCHAR2,
statid   VARCHAR2 DEFAULT NULL,
statown  VARCHAR2 DEFAULT NULL);

パラメータ

表155-33 EXPORT_FIXED_OBJECTS_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報の格納場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

使用上の注意

- このサブプログラムを起動するには、SYSとして接続するか、あるいはANALYZE ANY DICTIONARY権限またはSYSDBA権限を持っている必要があります。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

EXPORT_INDEX_STATSプロシージャ

このプロシージャは、特定の索引に関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

構文

DBMS_STATS.EXPORT_INDEX_STATS (
ownname  VARCHAR2,
indname  VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab  VARCHAR2,
statid   VARCHAR2 DEFAULT NULL,
statown  VARCHAR2 DEFAULT NULL);

パラメータ

表155-34 EXPORT_INDEX_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

indname

索引の名前。

partname

索引パーティション名。索引がパーティション化されていて、partnameがNULLの場合、グローバルでパーティション化された索引統計情報がエクスポートされます。

stattab

統計情報の格納場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

EXPORT_PENDING_STATSプロシージャ

このプロシージャは、保留中として収集および格納された統計情報をエクスポートするために使用されます。

構文

DBMS_STATS.EXPORT_PENDING_STATS (
ownname    IN  VARCHAR2  DEFAULT USER,
tabname    IN  VARCHAR2,
stattab    IN  VARCHAR2,
statid     IN  VARCHAR2 DEFAULT NULL,
statown    IN  VARCHAR2 DEFAULT USER);

パラメータ

表155-35 EXPORT_PENDING_STATSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

tabname

表名。

stattab

統計情報のエクスポート先となる統計表の名前。

statid

(オプション)stattab内の統計情報を関連付ける識別子。

statown

stattabが含まれているスキーマ(ownname以外の場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- パラメータtabnameがNULLの場合、指定したスキーマのすべての表にエクスポートが適用されます。

- デフォルトの所有者/スキーマは、このプロシージャを実行するユーザーです。

- このプロシージャを実行するには、このプロシージャによって処理される表の統計情報を収集する権限と同じ権限を持っている必要があります。

- すべての引数はVARCHAR2タイプです。値は引用符で囲みます。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例

DBMS_STATS.EXPORT_PENDING_STATS(NULL, NULL, 'MY_STAT_TABLE');

EXPORT_SCHEMA_PREFSプロシージャ

このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスをエクスポートするために使用されます。

構文

DBMS_STATS.EXPORT_SCHEMA_PREFS (
ownname    IN  VARCHAR2,
stattab    IN  VARCHAR2,
statid     IN  VARCHAR2 DEFAULT NULL,
statown    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表155-36 EXPORT_SCHEMA_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

stattab

統計情報のエクスポート先となる統計表の名前。

statid

(オプション)stattab内の統計情報を関連付ける識別子。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを実行するには、所有者として接続するか、あるいはSYSDBA権限またはANALYZE ANYシステム権限を持っている必要があります。

- すべての引数はVARCHAR2タイプです。値は引用符で囲みます。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例

DBMS_STATS.EXPORT_SCHEMA_PREFS('SH', 'STAT');

EXPORT_SCHEMA_STATSプロシージャ

このプロシージャは、ownnameで識別されるスキーマ内のすべてのオブジェクトに関する統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

構文

DBMS_STATS.EXPORT_SCHEMA_STATS (
ownname         VARCHAR2,
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
statown         VARCHAR2 DEFAULT NULL,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-37 EXPORT_SCHEMA_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

stattab

統計情報の格納場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

'OBJECT_STATS, SYNOPSES'が指定されると、表統計情報、列統計情報、索引統計情報およびシノプシスが削除されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

EXPORT_SYSTEM_STATSプロシージャ

このプロシージャは、システムの統計情報を取り出し、stattabで識別されるユーザー統計表に格納します。

構文

DBMS_STATS.EXPORT_SYSTEM_STATS (
stattab       VARCHAR2,
statid        VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL);

パラメータ

表155-38 EXPORT_SYSTEM_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報を格納する場所を記述したユーザー統計表の識別子。

statid

stattabに格納された統計情報に関連付けられた、オプションの識別子。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

ORA-20003: システムの統計情報をエクスポートできません。

使用上の注意

このプロシージャを実行するには、GATHER_SYSTEM_STATISTICSロールが必要です。

Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

EXPORT_TABLE_PREFSプロシージャ

このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを、指定した統計表にエクスポートするために使用されます。

構文

DBMS_STATS.EXPORT_TABLE_PREFS (
ownname    IN  VARCHAR2,
tabname    IN  VARCHAR2,
stattab    IN  VARCHAR2,
statid     IN  VARCHAR2 DEFAULT NULL,
statown    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表155-39 EXPORT_TABLE_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

tabname

表名。

stattab

統計情報のエクスポート先の統計表の名前。

statid

stattab内の統計情報を関連付けるオプションの識別子。

statown

stattabが含まれているスキーマ(ownname以外の場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを実行するには、その表の所有者として接続するか、またはANALYZE ANYシステム権限を持っている必要があります。

- すべての引数はVARCHAR2タイプです。値は引用符で囲みます。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例

DBMS_STATS.EXPORT_TABLE_PREFS('SH', 'SALES', 'STAT');

EXPORT_TABLE_STATSプロシージャ

このプロシージャは、特定の表に関する統計情報を取り出し、ユーザー統計表に格納します。cascadeを使用すると、指定した表に関連付けられているすべての索引統計情報もエクスポートされます。

構文

DBMS_STATS.EXPORT_TABLE_STATS (
ownname         VARCHAR2,
tabname         VARCHAR2,
partname        VARCHAR2 DEFAULT NULL,
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
cascade         BOOLEAN  DEFAULT TRUE,
statown         VARCHAR2 DEFAULT NULL,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-40 EXPORT_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

表の名前。

partname

表パーティション名。表がパーティション化されていて、partnameがNULLの場合、グローバルでパーティション化された表の統計情報がエクスポートされます。

stattab

統計情報の格納場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

cascade

TRUEの場合は、この表の列と索引の統計情報もまたエクスポートされます。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

'OBJECT_STATS, SYNOPSES'が指定されると、表統計情報、列統計情報、索引統計情報およびシノプシスが削除されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

FLUSH_DATABASE_MONITORING_INFOプロシージャ

このプロシージャは、インメモリーのすべての表の監視情報をディクショナリにフラッシュします。*_TAB_MODIFICATIONS、*_TAB_STATISTICSおよび*_IND_STATISTICSビュー内の対応するエントリは、Oracle Databaseによる定期的なフラッシュを待機せずにすぐに更新されます。こうしたビューで最新の情報が必要な場合は、このプロシージャが有効です。GATHER_*_STATSプロシージャでは監視情報が内部処理で自動的にフラッシュされるため、統計情報の収集前にこのプロシージャを実行する必要はありません。

構文

DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

例外

ORA-20000: 権限が不十分です。

使用上の注意

このプロシージャを実行するには、ANALYZE_ANYシステム権限が必要です。

GATHER_DATABASE_STATSプロシージャ

このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報を収集します。

構文

DBMS_STATS.GATHER_DATABASE_STATS (
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample     BOOLEAN  DEFAULT FALSE,
method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
options          VARCHAR2 DEFAULT 'GATHER',
objlist          OUT      ObjectTab,
statown          VARCHAR2 DEFAULT NULL,
gather_sys       BOOLEAN  DEFAULT TRUE,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
obj_filter_list ObjectTab DEFAULT NULL);

DBMS_STATS.GATHER_DATABASE_STATS (
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample     BOOLEAN  DEFAULT FALSE,
method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
options          VARCHAR2 DEFAULT 'GATHER',
statown          VARCHAR2 DEFAULT NULL,
gather_sys       BOOLEAN  DEFAULT TRUE,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
obj_filter_list ObjectTab DEFAULT NULL);

パラメータ

表155-41 GATHER_DATABASE_STATSプロシージャのパラメータ

パラメータ

説明

estimate_percent

推定する行のパーセント(NULLは計算を意味します)で、有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。

method_opt

グローバル、スキーマ、データベース、またはディクショナリの各レベルでプリファレンスを設定する場合は、'FOR ALL'構文のみが使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、データベース内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

統計表は、分析するオブジェクトと同じスキーマに常駐するとみなされるので、各スキーマにこのオプションを使用するための表が1つ必要です。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

GATHER: (デフォルト)スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

GATHER AUTO: 必要な統計情報をすべて自動的に収集します。Oracleは、新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別します。GATHER AUTOが指定された場合、有効な追加パラメータはstattab、statid、objlistおよびstatownのみで、その他のパラメータ設定はすべて無視されます。処理されたオブジェクトのリストを戻します。

GATHER STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集します。また、失効と判別されたオブジェクトのリストも戻します。

GATHER EMPTY: 現在統計情報がないオブジェクトの統計情報を収集します。統計情報がないオブジェクトのリストを戻します。

LIST AUTO: GATHER AUTOを使用して処理されるオブジェクトのリストを戻します。

LIST STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトのリストを戻します。

LIST EMPTY: 現在統計情報がないオブジェクトのリストを戻します。

objlist

失効または空と判別されたオブジェクトのリスト。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

gather_sys

SYSユーザーが所有するオブジェクトの統計情報を収集します。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

obj_filter_list

オブジェクト・フィルタのリスト。指定された場合、GATHER_DATABASE_STATSは、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対してNULL以外の値s1、s2、...が指定されているとします。(o.a1 like s1)、(o.a2 like s2)、...がTRUEの場合、オブジェクトoはこのオブジェクト・フィルタを満たすとみなされます。詳細は、「オブジェクト・フィルタ・リストの適用」を参照してください。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

GATHER_DICTIONARY_STATSプロシージャ

このプロシージャは、ディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報を収集します。

構文

DBMS_STATS.GATHER_DICTIONARY_STATS (
comp_id          VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample     BOOLEAN  DEFAULT FALSE,
method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
options          VARCHAR2 DEFAULT 'GATHER AUTO',
objlist    OUT   ObjectTab,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
obj_filter_list ObjectTab DEFAULT NULL);

DBMS_STATS.GATHER_DICTIONARY_STATS (
comp_id           VARCHAR2 DEFAULT NULL,
estimate_percent  NUMBER DEFAULT
to_estimate_percent_type(GET_PARAM('ESTIMATE_PERCENT')),
block_sample      BOOLEAN DEFAULT FALSE,
method_opt        VARCHAR2 DEFAULT GET_PARAM('METHOD_OPT'),
degree            NUMBER DEFAULT to_degree_type(GET_PARAM('DEGREE')),
granularity       VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade           BOOLEAN DEFAULT to_cascade_type(GET_PARAM('CASCADE')),
stattab           VARCHAR2 DEFAULT NULL,
statid            VARCHAR2 DEFAULT NULL,
options           VARCHAR2 DEFAULT 'GATHER AUTO',
statown           VARCHAR2 DEFAULT NULL,
no_invalidate     BOOLEAN DEFAULT
to_no_invalidate_type(get_param('NO_INVALIDATE')),
obj_filter_list   ObjectTab DEFAULT NULL);

パラメータ

表155-42 GATHER_DICTIONARY_STATSプロシージャのパラメータ

パラメータ

説明

comp_id

分析するスキーマのコンポーネントID (NULLを指定すると、すべてのRDBMSコンポーネントのスキーマが分析される)。DBA_REGISTRYビューのcomp_id列を参照してください。このプロシージャでは、引数の指定内容に関係なく、'SYS'スキーマと'SYSTEM'スキーマの統計情報を常に収集します。

estimate_percent

推定する行のパーセント(NULLは計算を意味します)。有効な範囲は、0.000001から100([0.000001,100])です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトで、デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを決定します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を実行した場合にのみ該当します。

method_opt

次を受け入れます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

索引についても統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

- 'GATHER': スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

- 'GATHER AUTO': (デフォルト)必要な統計情報をすべて自動的に収集します。Oracleは、新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別します。'GATHER AUTO'が指定された場合、有効な追加パラメータはcomp_id、stattab、statidおよびstatownのみで、その他のパラメータ設定はすべて無視されます。また、処理されたオブジェクトのリストも戻します。

- 'GATHER STALE': *_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集します。また、失効と判別されたオブジェクトのリストも戻します。

- 'GATHER EMPTY': 現在統計情報がないオブジェクトの統計情報を収集します。また、統計情報がないオブジェクトのリストも戻します。

- 'LIST AUTO': 'GATHER AUTO'を使用して処理されるオブジェクトのリストを戻します。

- 'LIST STALE': *_tab_modificationsビューを調べて判別した失効オブジェクトのリストを戻します。

- 'LIST EMPTY': 現在統計情報がないオブジェクトのリストを戻します。

objlist

失効または空と判別されたオブジェクトのリスト。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

obj_filter_list

オブジェクト・フィルタのリスト。指定された場合、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対してNULL以外の値s1、s2、...が指定されているとします。(o.a1 like s1)、(o.a2 like s2)、...がTRUEの場合、オブジェクトoはこのオブジェクト・フィルタを満たすとみなされます。詳細は、「オブジェクト・フィルタ・リストの適用」を参照してください。

使用上の注意

このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

例外

ORA-20000: 索引が存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

GATHER_FIXED_OBJECTS_STATSプロシージャ

このプロシージャは、すべての固定オブジェクト(動的パフォーマンス表)に関する統計情報を収集します。

構文

DBMS_STATS.GATHER_FIXED_OBJECTS_STATS (
stattab        VARCHAR2 DEFAULT NULL,
statid         VARCHAR2 DEFAULT NULL,
statown        VARCHAR2 DEFAULT NULL,
no_invalidate  BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')));

パラメータ

表155-43 GATHER_FIXED_OBJECTS_STATSプロシージャのパラメータ

パラメータ

説明

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

使用上の注意

このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

GATHER_INDEX_STATSプロシージャ

このプロシージャは、索引の統計情報を収集します。これは、可能なかぎり多くの作業をパラレル化します。個々のパラメータで説明するように、いくつかの制限があります。この操作では、クラスタ索引、ドメイン索引、ビットマップ結合索引など、特定タイプの索引でのパラレル化は行いません。granularity引数およびno_invalidate引数は、これらのタイプの索引とは関係がありません。

構文

DBMS_STATS.GATHER_INDEX_STATS (
ownname          VARCHAR2,
indname          VARCHAR2,
partname         VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(GET_PARAM('ESTIMATE_PERCENT')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL,
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')),
force            BOOLEAN DEFAULT FALSE);

パラメータ

表155-44 GATHER_INDEX_STATSプロシージャのパラメータ

パラメータ

説明

ownname

分析する索引のスキーマ。

indname

索引の名前。

partname

パーティションの名前。

estimate_percent

推定する行のパーセント(NULLは計算を意味します)。有効な範囲は、0.000001から100([0.000001,100])です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

ロックされている場合でも、オブジェクトの統計情報を収集します。

例外

ORA-20000: 索引が存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

GATHER_PROCESSING_RATEプロシージャ

このプロシージャは、interval分後に終了する処理率の収集ジョブを開始します。

構文

DBMS_STATS.GATHER_PROCESSING_RATE (
gathering_mode      IN    VARCHAR2  DEFAULT 'START',
interval            IN    NUMBER    DEFAULT  NULL);

パラメータ

表155-45 GATHER_PROCESSING_RATEプロシージャのパラメータ

パラメータ

説明

gathering_mode

モード: 'START'または'END'。'START'オプションで起動された場合、このモードはアクティブ・セッション履歴(ASH)に基づきます。'END'オプションで起動された場合には収集が停止されます。'START'で起動する場合、'interval'オプションを指定できます(オプション)。intervalを指定しない場合、このデフォルト値は60分に設定されます。

interval

処理を収集する必要がある時間間隔(分単位)。

使用上の注意

- このプロシージャを実行するには、OPTIMIZER_PROCESSING_RATEロールが必要です。

- AUTO DOPは、これらの処理率を使用して、SQL文の最適な並列度を決定します。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

GATHER_SCHEMA_STATSプロシージャ

このプロシージャは、スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

構文

DBMS_STATS.GATHER_SCHEMA_STATS (
ownname          VARCHAR2,
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample     BOOLEAN  DEFAULT FALSE,
method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
options          VARCHAR2 DEFAULT 'GATHER',
objlist          OUT      ObjectTab,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force             BOOLEAN DEFAULT FALSE,
obj_filter_list  ObjectTab DEFAULT NULL);

DBMS_STATS.GATHER_SCHEMA_STATS (
ownname          VARCHAR2,
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample     BOOLEAN  DEFAULT FALSE,
method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
options          VARCHAR2 DEFAULT 'GATHER',
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE'),
force            BOOLEAN DEFAULT FALSE,
obj_filter_list  ObjectTab DEFAULT NULL);

パラメータ

表155-46 GATHER_SCHEMA_STATSプロシージャのパラメータ

パラメータ

説明

ownname

分析するスキーマ(NULLは現行のスキーマを意味します)。

estimate_percent

推定する行のパーセント(NULLは計算を意味します)で、有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。

method_opt

次を受け入れます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

GATHER: (デフォルト)スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

GATHER AUTO: 必要な統計情報をすべて自動的に収集します。Oracleは、新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別します。GATHER AUTOが指定された場合、有効な追加パラメータはownname、stattab、statid、objlistおよびstatownのみで、その他のパラメータ設定はすべて無視されます。処理されたオブジェクトのリストを戻します。

GATHER STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集します。また、失効と判別されたオブジェクトのリストも戻します。

GATHER EMPTY: 現在統計情報がないオブジェクトについて統計情報を収集し、統計情報なしと判別されたオブジェクトのリストも戻します。

LIST AUTO: GATHER AUTOを使用して処理されるオブジェクトのリストを戻します。

LIST STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトのリストを戻します。

LIST EMPTY: 現在統計情報がないオブジェクトのリストを戻します。

objlist

失効または空と判別されたオブジェクトのリスト。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

ロックされている場合でも、オブジェクトの統計情報を収集します。

obj_filter_list

オブジェクト・フィルタのリスト。指定された場合、GATHER_SCHEMA_STATSは、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対してNULL以外の値s1、s2、...が指定されているとします。(o.a1 like s1)、(o.a2 like s2)、...がTRUEの場合、オブジェクトoはこのオブジェクト・フィルタを満たすとみなされます。詳細は、「オブジェクト・フィルタ・リストの適用」を参照してください。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

サンプリングのパーセント指定には特定の値を使用できますが、次の場合は、DBMS_STATSでその値が有効ではなくなります。

- 結果が2500行未満の場合(サンプルとしてはデータ量が非常に少ない)。

- 指定のパーセントが特定のパーセントを超えた場合。

例外

ORA-20000: スキーマが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

例

オブジェクト・フィルタ・リストの適用

次の例では、SAMPLEスキーマ内の接頭辞がTの表およびSYSスキーマ内のいずれかの表が失効している場合、それらの表に対する統計情報が収集されるように指定します。

DECLARE
filter_lst  DBMS_STATS.OBJECTTAB := DBMS_STATS.OBJECTTAB();
BEGIN
filter_lst.extend(2);
filter_lst(1).ownname := 'SH';
filter_lst(1).objname := 'SALES';
filter_lst(2).ownname := 'SH';
filter_lst(2).objname := 'COSTS';
DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>'SH',obj_filter_list=>filter_lst);
END;

GATHER_SYSTEM_STATSプロシージャ

このプロシージャは、システムの統計情報を収集します。

構文

DBMS_STATS.GATHER_SYSTEM_STATS (
gathering_mode   VARCHAR2 DEFAULT 'NOWORKLOAD',
interval         INTEGER  DEFAULT NULL,
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL);

パラメータ

表155-47 GATHER_SYSTEM_STATSプロシージャのパラメータ

パラメータ

説明

gathering_mode

モードの値は、次のとおりです。

NOWORKLOAD: I/Oシステムの特性を取得します。データベースのサイズにもよりますが、収集に数分間かかる場合があります。この時間の間に、Oracleは、I/Oシステムに要するリード・シーク時間と転送速度の平均値を見積もります。このモードは、すべてのワークロードに適しています。データベースおよび表領域の作成後にGATHER_SYSTEM_STATS('NOWORKLOAD')を実行することをお薦めします。ワークロードのシステム統計を正確に調整するには、'START'オプションと'STOP'オプションをともに使用するか、または'INTERVAL'オプションを使用します。''NOWORKLOAD'とワークロード固有の統計情報('INTERVAL'を使用するか、または'START'と'STOP'の両方を使用して収集)を両方とも収集する場合、そのワークロードの統計情報はオプティマイザが使用します。収集されるコンポーネント: cpuspeednw、ioseektim、iotfrspeed。

INTERVAL: 指定された間隔でシステムのアクティビティを取得します。このモードは、intervalパラメータとの組合せで動作します。間隔は分単位で指定し、指定した後、ディクショナリまたはstattabでシステムの統計情報が作成または更新されます。予定よりも早く収集を停止する場合は、GATHER_SYSTEM_STATS (gathering_mode=>'STOP')を使用できます。収集されるコンポーネント: maxthr、slavethr、cpuspeed、sreadtim、mreadtim、mbrc。

START | STOP: 指定された開始時間から停止時間の間にシステムのアクティビティを取得し、経過期間の統計情報を使用してディクショナリまたはstattabをリフレッシュします。Interval値は無視されます。収集されるコンポーネント: maxthr、slavethr、cpuspeed、sreadtim、mreadtim、mbrc。

EXADATA: このモードでは、大きいIOサイズや高IOスループットなど、EXADATAを使用して提供される一意の機能が収集されたシステム統計で考慮されます。マルチブロック読取り数とIOスループットの統計が、CPU速度とともに設定されます。

interval

統計情報を収集する時間(分単位)。このパラメータが適用されるのは、gathering_mode='INTERVAL'の場合のみです。

stattab

統計情報が保存されるユーザー統計表の識別子。

statid

stattabに保存された統計情報に関連付けられた、オプションの識別子。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

ORA-20003: システムの統計情報を収集できません

ORA-20004: INTERVALモードでエラーが発生しました。システム・パラメータjob_queue_processes>0である必要があります。

使用上の注意

このプロシージャを実行するには、GATHER_SYSTEM_STATISTICSロールが必要です。

例

昼間OLTPトランザクションを処理するデータベース・アプリケーションを実行し、夜間にレポートを実行すると想定します。

昼間のシステムの統計情報を収集するには、720分間情報を収集します。収集した統計情報をMYSTATS表に格納します。

BEGIN
DBMS_STATS.GATHER_SYSTEM_STATS (
interval => 720,
stattab  => 'mystats',
statid   => 'OLTP');
END;

夜間のシステムの統計情報を収集するには、720分間情報を収集します。収集した統計情報をMYSTATS表に格納します。

BEGIN
DBMS_STATS.GATHER_SYSTEM_STATS (
interval => 720,
stattab  => 'mystats',
statid   => 'OLAP');
END;

収集した統計情報を使用して、ディクショナリを更新します。

VARIABLE   jobno   number;
BEGIN
DBMS_JOB.SUBMIT (:jobno, 'DBMS_STATS.IMPORT_SYSTEM_STATS
(''mystats'',''OLTP'');'
sysdate, 'sysdate + 1');
COMMIT;
END;

BEGIN
DBMS_JOB.SUBMIT (:jobno, 'DBMS_STATS.IMPORT_SYSTEM_STATS
(''mystats'',''OLAP'');'
sysdate + 0.5, 'sysdate + 1');
COMMIT;
END;

GATHER_TABLE_STATSプロシージャ

このプロシージャは、表と列(および索引)の統計情報を収集します。これは、可能なかぎり多くの作業をパラレル化しますが、個々のパラメータで説明するように、いくつかの制限があります。

構文

DBMS_STATS.GATHER_TABLE_STATS (
ownname          VARCHAR2,
tabname          VARCHAR2,
partname         VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample     BOOLEAN  DEFAULT FALSE,
method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT  to_no_invalidate_type (
get_param('NO_INVALIDATE')),
stattype         VARCHAR2 DEFAULT 'DATA',
force            BOOLEAN  DEFAULT FALSE,
context          DBMS_STATS.CCONTEXT DEFAULT NULL, -- non operative
options          VARCHAR2 DEFAULT 'GATHER');

パラメータ

表155-48 GATHER_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

分析する表のスキーマ。

tabname

表の名前。

partname

パーティションの名前。

estimate_percent

推定する行のパーセント(NULLは計算を意味します)で、有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。

method_opt

METHOD_OPT: グローバル、スキーマ、データベースまたはディクショナリのレベルでプリファレンスを設定する場合、'FOR ALL'構文のみが許可されます。これ以外の場合、method_optは、次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

- FOR COLUMNS [column_clause] [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

column_clauseは、column_clause := column_name | extension name | extensionのように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
- column_name: 列の名前。
- extension:(column_name, Colume_name [, ...])の書式の列グループまたは式。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'APPROX_GLOBAL AND PARTITION' - 'GLOBAL AND PARTITION'に似ていますが、この場合、グローバルな統計情報がパーティション・レベルの統計情報から集計されます。このオプションでは、列の個別値の数および索引の個別キーの数を除く、すべての統計情報が集計されます。表レベルの列の既存ヒストグラムも集計されます。集計には統計のあるパーティションのみが使用され、正確なグローバル統計情報を取得するために、ユーザーはすべてのパーティションの統計情報があることを確認する必要があります。グローバルな統計情報は、partnameがNULLの場合または集計を実行できない場合(いずれかのパーティションの統計情報がない場合など)に収集されます。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

表の索引について統計情報を収集します。このオプションを使用することは、表の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattype

統計タイプ。許可されている値は、DATAのみです。

force

ロックされている場合でも、表の統計情報を収集します。

context

[機能しません]

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

- GATHER: スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

- GATHER AUTO: 必要な統計情報をすべて自動的に収集します。どのオブジェクトに新しい統計情報が必要かは暗黙的に決定されます。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

索引統計情報収集は、クラスタ索引、ドメイン索引および結合索引を除き、パラレル化できます。

例外

ORA-20000: 表が存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

例

拡張は、列グループ(例1を参照)または式(例2を参照)です。

例1

DBMS_STATS.GATHER_TABLE_STATS(
'SH', 'SALES', method_opt => 'FOR COLUMNS (empno, deptno)');

例2

DBMS_STATS.GATHER_TABLE_STATS(
'SH', 'SALES', method_opt => 'FOR COLUMNS (sal+comm)');

GENERATE_STATSプロシージャ

注意:
このサブプログラムの使用は推奨されず、より高度なテクノロジがかわりに使用されます。下位互換性の目的でのみ保持されています。代替として、GATHER_INDEX_STATプロシージャを使用してください。「GATHER_INDEX_STATSプロシージャ」を参照してください。

このプロシージャは、関連するオブジェクトで以前に収集した統計情報から、オブジェクトの統計情報を生成します。現在サポートされているオブジェクトは、Bツリー索引とビットマップ索引です。

構文

DBMS_STATS.GENERATE_STATS (
ownname    VARCHAR2,
objname    VARCHAR2,
organized  NUMBER DEFAULT 7,
force      BOOLEAN default FALSE);

パラメータ

表155-49 GENERATE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

オブジェクトのスキーマ。

objname

オブジェクトの名前。

organized

索引とその基礎となる表の間で関連付けられた順位付けの量。複雑に編成されている索引には、ディスク上の連続行を参照する連続索引キーがその表(同じブロック)に対してあります。複雑に編成されていない索引には、ディスク上の異なる表ブロックを参照する連続キーがあります。

このパラメータは、Bツリー索引に対してのみ使用します。数値は、0から10の範囲で使用でき、0(ゼロ)は完全に編成された索引、10は完全に編成解除された索引を示します。

force

TRUEの場合は、ロックされていてもターゲット・オブジェクトの統計情報を生成します。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

完全に移入されたスキーマについては、より正確な統計情報が必要な場合は、GATHERプロシージャをかわりに使用する必要があります。

例外

ORA-20000: サポートされていないオブジェクト・タイプで、オブジェクトは存在しません。

ORA-20001: 無効なオプションまたは無効な統計情報です。

GET_COLUMN_STATSプロシージャ

このプロシージャは、列に関連するすべての情報を取得します。ユーザー定義の統計情報を処理するこのプロシージャのフォームでは、戻される統計情報のタイプは、ユーザー定義の統計情報に加え、格納されるタイプでもあります。

構文

DBMS_STATS.GET_COLUMN_STATS (
ownname     VARCHAR2,
tabname     VARCHAR2,
colname     VARCHAR2,
partname    VARCHAR2 DEFAULT NULL,
stattab     VARCHAR2 DEFAULT NULL,
statid      VARCHAR2 DEFAULT NULL,
distcnt OUT NUMBER,
density OUT NUMBER,
nullcnt OUT NUMBER,
srec    OUT StatRec,
avgclen OUT NUMBER,
statown     VARCHAR2 DEFAULT NULL);

ユーザー定義統計情報には、次の構文を使用します。

DBMS_STATS.GET_COLUMN_STATS (
ownname          VARCHAR2,
tabname          VARCHAR2,
colname          VARCHAR2,
partname         VARCHAR2 DEFAULT NULL,
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
ext_stats   OUT  RAW,
stattypown  OUT  VARCHAR2 DEFAULT NULL,
stattypname OUT  VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL);

パラメータ

表155-50 GET_COLUMN_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

列が所属している表の名前。

colname

列または拡張の名前。

partname

統計情報を取得する表パーティションの名前。表がパーティション化されていて、partnameがNULLの場合、統計情報はグローバルな表レベルで取り出されます。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接取り出されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

ext_stats

ユーザー定義の統計情報。

stattypown

統計タイプのスキーマ。

stattypname

統計タイプの名前。

distcnt

個別値の数。

density

列密度。

nullcnt

NULLの数

srec

列最大、列最小およびヒストグラム値の内部表記を保持する構造。

avgclen

列の平均長(バイト単位)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。

使用上の注意

このプロシージャを呼び出す前に、表が存在することを確認してください。

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

GET_INDEX_STATSプロシージャ

このプロシージャは、索引に関連するすべての情報を取得します。ユーザー定義の統計情報を処理するこのプロシージャのフォームでは、戻される統計情報のタイプは、ユーザー定義の統計情報に加え、格納されるタイプでもあります。

構文

DBMS_STATS.GET_INDEX_STATS (
ownname        VARCHAR2,
indname        VARCHAR2,
partname       VARCHAR2 DEFAULT NULL,
stattab        VARCHAR2 DEFAULT NULL,
statid         VARCHAR2 DEFAULT NULL,
numrows    OUT NUMBER,
numlblks   OUT NUMBER,
numdist    OUT NUMBER,
avglblk    OUT NUMBER,
avgdblk    OUT NUMBER,
clstfct    OUT NUMBER,
indlevel   OUT NUMBER,
statown        VARCHAR2 DEFAULT NULL,
cachedblk  OUT NUMBER,
cachehit   OUT NUMBER);

DBMS_STATS.GET_INDEX_STATS (
ownname        VARCHAR2,
indname        VARCHAR2,
partname       VARCHAR2 DEFAULT NULL,
stattab        VARCHAR2 DEFAULT NULL,
statid         VARCHAR2 DEFAULT NULL,
numrows    OUT NUMBER,
numlblks   OUT NUMBER,
numdist    OUT NUMBER,
avglblk    OUT NUMBER,
avgdblk    OUT NUMBER,
clstfct    OUT NUMBER,
indlevel   OUT NUMBER,
statown        VARCHAR2 DEFAULT NULL,
guessq     OUT NUMBER,
cachedblk  OUT NUMBER,
cachehit   OUT NUMBER);

ユーザー定義統計情報には、次の構文を使用します。

DBMS_STATS.GET_INDEX_STATS (
ownname          VARCHAR2,
indname          VARCHAR2,
partname         VARCHAR2 DEFAULT NULL,
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
ext_stats   OUT  RAW,
stattypown  OUT  VARCHAR2 DEFAULT NULL,
stattypname OUT  VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL,
cachedblk        OUT NUMBER,
cachehit         OUT NUMBER);

パラメータ

表155-51 GET_INDEX_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

indname

索引の名前。

partname

統計情報を取得する索引パーティションの名前。索引がパーティション化されていて、partnameがNULLの場合、統計情報はグローバルな索引レベルで取り出されます。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接取り出されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

ext_stats

ユーザー定義の統計情報

stattypown

統計タイプのスキーマ。

stattypname

統計タイプの名前。

numrows

索引(パーティション)内の行数。

numlblks

索引(パーティション)内のリーフ・ブロックの数。

numdist

索引(パーティション)内の個別キーの数。

avglblk

この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。

avgdblk

この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。

clstfct

索引(パーティション)のクラスタ化要因。

indlevel

索引(パーティション)の高さ。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

guessq

索引の推測品質(パーティション)。

cachedblk

セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。

cachehit

セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。

例外

ORA-20000: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。

使用上の注意

- このプロシージャを呼び出す前に、表が存在することを確認してください。
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。

- Oracleは常にcachedblkおよびcachehitを維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。

- オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。

- 自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。

- オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。

- システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。

GET_PARAMファンクション

注意:
テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、GET_PREFSファンクションを使用してください。
「推奨されないサブプログラム」も参照してください。

このファンクションは、DBMS_STATSプロシージャのパラメータのデフォルト値を戻します。

構文

DBMS_STATS.GET_PARAM (
pname     IN   VARCHAR2)
RETURN VARCHAR2;

パラメータ

表155-52 GET_PARAMファンクションのパラメータ

パラメータ

説明

pname

パラメータ名。

例外

ORA-20001: 入力値が無効です

GET_PREFSファンクション

このファンクションは、指定したプリファレンスのデフォルト値を戻します。

構文

DBMS_STATS.GET_PREFS (
pname     IN   VARCHAR2,
ownname   IN   VARCHAR2 DEFAULT NULL,
tabname   IN   VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表155-53 GET_PREFSファンクションのパラメータ

パラメータ

説明

pname

プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。

- AUTOSTATS_TARGET

- CASCADE

- CONCURRENT

- DEGREE

- ESTIMATE_PERCENT

- METHOD_OPT

- NO_INVALIDATE

- GRANULARITY

- PUBLISH

- INCREMENTAL

- INCREMENTAL_STALENESS

- INCREMENTAL_LEVEL

- STALE_PERCENT

- GLOBAL_TEMP_TABLE_STATS

- TABLE_CACHED_BLOCKS

- OPTIONS

AUTOSTATS_TARGET: このプリファレンスは、自動統計情報収集にのみ適用されます。このパラメータの値は、統計情報収集に必要なオブジェクトを制御します。値は次のいずれかとなります。

- 'ALL': システム内のすべてのオブジェクトに関して収集された統計情報

- 'ORACLE': Oracle所有のすべてのオブジェクトに関して収集された統計情報

- 'AUTO': 統計情報を収集するオブジェクトをOracleが指定します。

.

CASCADE - 指定した値によって、索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

CONCURRENT: このプリファレンスは、統計情報が複数のオブジェクトで同時に収集されるか、一度に1オブジェクトずつ順次収集されるかを決定します。

- 'MANUAL': 並行性は、手動統計情報収集に対してのみオンになります。

- 'AUTOMATIC': 並行性は、自動統計情報収集に対してのみオンになります。

- 'ALL': 並行性は、自動と手動の両方の統計情報収集に対してオンになります。

- 'OFF': 並行性は、手動と自動の両方の統計情報に対してオフになります。

次の「使用上の注意」を参照してください。

.

DEGREE - 指定した値によって、統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 指定した値によって、推定する行のパーセントが決定されます。有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。

method_opt

グローバル、スキーマ、データベース、またはディクショナリの各レベルでプリファレンスを設定する場合は、'FOR ALL'構文のみが使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

.

NO_INVALIDATE - 指定した値によって、統計情報を収集する表の依存カーソルの無効化が制御されます。TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。

.

GRANULARITY - 指定した値によって、収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

.

PUBLISH - 指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。Oracle Database 11gリリース1(11.1)より前のバージョンでは、統計情報収集ジョブが完了すると、新しい統計情報は自動的にディクショナリ表にパブリッシュされます。現在、ユーザーは、統計情報を収集し、すぐにはパブリッシュしないようにできるようになりました。これによって、DBAは新しい統計情報をパブリッシュする前にテストできます。

.

INCREMENTAL - 指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。パーティション表では、多くの場合、新しいデータを新しいパーティションにロードします。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。Oracleでは、次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。

- パーティション表のINCREMENTALの値がTRUEに設定されている場合

- パーティション表のPUBLISHの値がTRUEに設定されている場合

- 表で統計情報を収集する際に、ユーザーがESTIMATE_PERCENTにAUTO_SAMPLE_SIZE、GRANULARITYにAUTOを指定した場合

パーティション表のINCREMENTALの値がFALSE(デフォルト値)に設定されている場合は、リソースが集中的に使用され、時間がかかる操作を大きい表に対して行うグローバルな統計情報のメンテナンスに、全表スキャンが使用されます。

INCREMENTAL_LEVEL: INCREMENTALプリファレンスがTRUEに設定されいている場合、この値はどのシノプシスを収集するかを制御します。これは、次の2つの値を取ります。

- TABLE: 表レベルのシノプシスが収集されます。これは、この表をパーティションと交換する場合に使用されます。この表でGATHER_TABLE_STATSを実行(INCREMENTALをTRUEに、INCREMENTAL_LEVELをTABLEに設定)してから交換できます。その結果、表レベルのシノプシスがこの表で収集されます(現在、事前に宛先指定されていない表の表レベルのシノプシスのみがサポートされている)。交換が発生すると、パーティションに、交換前の表の表レベルのシノプシスが存在するようになります。このプリファレンス値は、SET_TABLE_PREFSプロシージャでのみ使用できます。SET_GLOBAL/DATABASE/SCHEMA_PREFSプロシージャでは使用できません。

- PARTITION: パーティション・レベルのシノプシスが収集されます。これがデフォルト値です。PARTITIONがパーティション化されていない表で設定された場合、シノプシスは収集されません。

INCREMENTAL_STALENESS: この値は、パーティションまたはサブパーティションを失効として決定する方法を制御します。これは、'USE_STALE_PERCENT'、'USE_LOCKED_STATS'などの複数の列挙値を取ります。

- USE_STALE_PERCENT: DMLの変更がSTALE_PERCENTプリファレンスの値を下回る場合、パーティション/サブパーティションが失効しているとはみなされません。

- USE_LOCKED_STATS: DML変更に関係なく、ロックされたパーティションまたはサブパーティションの統計情報は失効とみなされません。

- NULL: これはデフォルト値です。パーティションまたはサブパーティションにDML変更があるかぎり、これらが失効とみなされることを意味します。デフォルト値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報と必ず同じになります。デフォルト値以外の値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報より精度が劣る場合があります。

.

STALE_PERCENT - 指定した値によって、表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。stale_percentの有効なドメインは、負数以外の数です。デフォルト値は10で、10%を超える変更がある表が失効とみなされることを意味します。

GLOBAL_TEMP_TABLE_STATS: グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。これは次の2つの値を取ります。

- SHARED: すべてのセッションで同じ統計セットが参照されます。

- SESSION: グローバルな一時表でGATHER_TABLE_STATSプロシージャにより収集された統計はセッション固有であるため、統計収集プロセスと同じセッションで発行された問合せのみで使用されます。セッション固有の統計情報は、セッション終了時に削除されます。

TABLE_CACHED_BLOCKS: 索引のクラスタリング要因の収集時に表のバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)。

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

- GATHER: スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

- GATHER AUTO: 必要な統計情報をすべて自動的に収集します。どのオブジェクトに新しい統計情報が必要かは暗黙的に決定されます。

ownname

所有者名。

tabname

表名。

例外

- ORA-20000: 統計情報を同時に収集できません。リソース・マネージャが有効になっていません。

- ORA-20001: 入力値が無効です

使用上の注意

- このプロシージャを起動するのに、特別な権限またはロールは必要ありません。ただし、CONCURRENTプリファレンスに関しては、次の点に注意してください。

- ユーザーがGATHER_*_STATSプロシージャを発行した場合、CONCURRENTプリファレンスは、表または表の(サブ)パーティションの統計を同時に収集するかどうかを判別します。DBMS_STATSは、degreeパラメータの値に基づいて単一オブジェクト(表、(サブ)パーティション)の統計を並列収集する機能を備えています。ただし、並列性は1つのオブジェクトに限定されます。CONCURRENTプリファレンスは、ユーザーが1つのスキームまたはデータベースの複数の表、および1つの表の複数の(サブ)パーティションに対して同時に統計を収集できるようにすることによって、パラレル化の範囲を複数のデータベース・オブジェクトに拡張します。これは主にマルチCPUシステムを対象としており、単一CPUマシン上の小規模なデータベースには不適切な場合があります。
統計を同時に収集するには:

- - ユーザーはDBAロールを持っているか、統計の収集に必要な権限に加えて、次の権限、CREATE JOB、MANAGE SCHEDULER、MANAGE ANY QUEUEを持っている必要があります。

- リソース・マネージャが有効である必要があります。

- job_queue_processesパラメータの設定値が少なくとも4である必要があります。

- ownnameおよびtabnameが指定され、表に対してプリファレンスが入力されている場合、このファンクションは、その表に対して指定されているとおりにプリファレンスを戻します。それ以外のすべての場合は、グローバル・プリファレンスが指定されている場合はそれを戻し、指定されていない場合はデフォルト値を戻します。

GET_STATS_HISTORY_AVAILABILITYファンクション

このファンクションは、統計履歴を使用できる最も古いタイムスタンプを戻します。ユーザーは、この値よりも古いタイムスタンプで統計情報をリストアできません。

構文

DBMS_STATS.GET_STATS_HISTORY_AVAILABILITY
RETURN TIMESTAMP WITH TIMEZONE;

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

GET_STATS_HISTORY_RETENTIONファンクション

このファンクションは、現在の統計履歴のリテンション値を戻します。

構文

DBMS_STATS.GET_STATS_HISTORY_RETENTION
RETURN NUMBER;

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

GET_SYSTEM_STATSプロシージャ

このプロシージャは、stattab(stattabがNULLの場合はディクショナリ)からシステムの統計情報を取得します。

構文

DBMS_STATS.GET_SYSTEM_STATS (
status    OUT  VARCHAR2,
dstart    OUT  DATE,
dstop     OUT  DATE,
pname     IN   VARCHAR2,
pvalue    OUT  NUMBER,
stattab   IN   VARCHAR2 DEFAULT NULL,
statid    IN   VARCHAR2 DEFAULT NULL,
statown   IN   VARCHAR2 DEFAULT NULL);

パラメータ

表155-54 GET_SYSTEM_STATSプロシージャのパラメータ

パラメータ

説明

status

出力は次のいずれかです。

- COMPLETED:

- AUTOGATHERING:

- MANUALGATHERING:

- BADSTATS:

dstart

統計情報の収集が開始された日付。

status = MANUALGATHERINGの場合は、開始日が戻されます。

dstop

統計情報の収集が停止された日付。

- status = COMPLETEの場合は、終了日が戻されます。

- status = AUTOGATHERINGの場合は、将来の終了日が戻されます。

- status = BADSTATSの場合は、終了期限の日付が戻されます。

pname

取得するパラメータ名。次の値の1つが入ります。

- iotfrspeed - I/O転送速度(ミリ秒当たりのバイト数単位)

- ioseektim - シーク時間+待機時間+オペレーティング・システムのオーバーヘッド時間(ミリ秒単位)

- sreadtim - シングル・ブロックの読込み(ランダム読込み)平均時間(ミリ秒単位)

- mreadtim - mbrcブロックを1回に読み込む(順次読取り)平均時間(ミリ秒単位)

- cpuspeed - 1秒当たりの平均CPUサイクル数(100万単位)であり、ワークロードの統計情報('INTERVAL'か、'START'と'STOP'の両方のオプションを使用して収集)に対して取得したもの

- cpuspeednw: 1秒当たりの平均CPUサイクル数(100万単位)であり、no-workloadの統計情報('NOWORKLOAD'オプションを使用して収集)に対して取得したもの。

- mbrc - 順次読取りのマルチブロック読込み平均数(ブロック単位)

- maxthr - 最大I/Oシステム・スループット(1秒当たりのバイト数単位)

- slavethr - 平均スレーブI/Oスループット(1秒当たりのバイト数単位)

pvalue

取得するパラメータ値。

stattab

統計情報を取得するユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから取得されます。

statid

stattabに保存された統計情報に関連付けられた、オプションの識別子。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

ORA-20003: システムの統計情報を収集できません

ORA-20004: パラメータが存在しません。

使用上の注意

このプロシージャを実行するには、GATHER_SYSTEM_STATISTICSロールが必要です。

GET_TABLE_STATSプロシージャ

このプロシージャは、表に関連するすべての情報を取得します。

構文

DBMS_STATS.GET_TABLE_STATS (
ownname         VARCHAR2,
tabname         VARCHAR2,
partname        VARCHAR2 DEFAULT NULL,
stattab         VARCHAR2 DEFAULT NULL,
statid          VARCHAR2 DEFAULT NULL,
numrows     OUT NUMBER,
numblks     OUT NUMBER,
avgrlen     OUT NUMBER,
statown         VARCHAR2 DEFAULT NULL,
cachedblk   OUT NUMBER,
cachehit    OUT NUMBER);

パラメータ

表155-55 GET_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

列が所属している表の名前。

partname

統計情報を取得する表パーティションの名前。表がパーティション化されていて、partnameがNULLの場合、統計情報はグローバルな表レベルで取り出されます。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから直接取り出されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

numrows

表(パーティション)内の行数。

numblks

表(パーティション)が占有するブロックの数。

avgrlen

表(パーティション)の行の平均長。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

cachedblk

セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。

cachehit

セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。

使用上の注意

- このプロシージャを呼び出す前に、表が存在することを確認してください。
このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。

- Oracleは常にcachedblkおよびcachehitを維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。

- オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。

- 自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。

- オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。

- システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例外

ORA-20000: オブジェクトが存在しないか権限が不十分、または要求したオブジェクトの統計情報が格納されていません。

IMPORT_COLUMN_STATSプロシージャ

このプロシージャは、stattabで識別されるユーザー統計表から特定の列に関する統計情報を取り出し、ディクショナリに格納します。

構文

DBMS_STATS.IMPORT_COLUMN_STATS (
ownname       VARCHAR2,
tabname       VARCHAR2,
colname       VARCHAR2,
partname      VARCHAR2 DEFAULT NULL,
stattab       VARCHAR2,
statid        VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
force         BOOLEAN DEFAULT FALSE);

パラメータ

表155-56 IMPORT_COLUMN_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

列が所属している表の名前。

colname

列または拡張の名前。

partname

表パーティション名。表がパーティション化されていて、partnameがNULLの場合、グローバルでパーティション化された列統計情報がインポートされます。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

TRUEに設定されている場合、統計情報は、ロックされていてもインポートされます。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

ORA-20005: オブジェクト統計はロックされています

使用上の注意

Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

IMPORT_DATABASE_PREFSプロシージャ

このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスをインポートするために使用されます。これらの表は、add_sysパラメータにTRUEを渡すことによって含めることができます。

構文

DBMS_STATS.IMPORT_DATABASE_PREFS (
stattab    IN  VARCHAR2,
statid     IN  VARCHAR2 DEFAULT NULL,
statown    IN  VARCHAR2 DEFAULT NULL
add_sys    IN  BOOLEAN DEFAULT FALSE);

パラメータ

表155-57 IMPORT_DATABASE_PREFSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報のインポート先の統計表の名前。

statid

stattab内の統計情報を関連付けるオプションの識別子。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

add_sys

値TRUEを指定すると、Oracle所有の表が含まれます。

例外

ORA-20000: 権限が不十分です。

使用上の注意

- このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例

DBMS_STATS.IMPORT_DATABASE_PREFS('STATTAB', statown=>'SH');

IMPORT_DATABASE_STATSプロシージャ

このプロシージャは、データベース内のすべてのオブジェクトに関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。

構文

DBMS_STATS.IMPORT_DATABASE_STATS (
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
statown         VARCHAR2 DEFAULT NULL,
no_invalidate   BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force           BOOLEAN DEFAULT FALSE,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-58 IMPORT_DATABASE_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

オブジェクト(表)のレベルでロックされている統計情報を上書きします。

- TRUE: 統計情報のロックを無視して統計情報をインポートします。

- FALSE: 統計情報は、ロックされていない場合のみインポートされます。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

使用上の注意

- このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

IMPORT_DICTIONARY_STATSプロシージャ

このプロシージャは、すべてのディクショナリのスキーマ('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)に関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。

構文

DBMS_STATS.IMPORT_DICTIONARY_STATS (
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
statown         VARCHAR2 DEFAULT NULL,
no_invalidate   BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force           BOOLEAN DEFAULT FALSE,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-59 IMPORT_DICTIONARY_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

オブジェクト(表)のレベルで統計情報のロックを無視します。

- TRUE: 統計情報のロックを無視して統計情報をインポートします。

- FALSE: 統計情報は、ロックされていない場合のみインポートされます。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

使用上の注意

- このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

IMPORT_FIXED_OBJECTS_STATSプロシージャ

このプロシージャは、固定表に関する統計情報をユーザー統計表から取り出し、ディクショナリに格納します。

構文

DBMS_STATS.IMPORT_FIXED_OBJECTS_STATS (
stattab       VARCHAR2,
statid        VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force         BOOLEAN DEFAULT FALSE);

パラメータ

表155-60 IMPORT_FIXED_OBJECTS_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

統計情報のロックを無視します。

- TRUE: 統計情報のロックを無視して統計情報をインポートします。

- FALSE: 統計情報は、ロックされていない場合のみインポートされます。

使用上の注意

- このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

IMPORT_INDEX_STATSプロシージャ

このプロシージャは、stattabで識別されるユーザー統計表から特定の索引に関する統計情報を取得し、ディクショナリに格納します。

構文

DBMS_STATS.IMPORT_INDEX_STATS (
ownname       VARCHAR2,
indname       VARCHAR2,
partname      VARCHAR2 DEFAULT NULL,
stattab       VARCHAR2,
statid        VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force         BOOLEAN DEFAULT FALSE);

パラメータ

表155-61 IMPORT_INDEX_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

indname

索引の名前。

partname

索引パーティション名。索引がパーティション化されていて、partnameがNULLの場合、グローバルでパーティション化された索引統計情報がインポートされます。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

索引の統計情報がロックされていても、統計情報をインポートします。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

ORA-20005: オブジェクト統計はロックされています

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

IMPORT_SCHEMA_PREFSプロシージャ

このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスをインポートするために使用されます。

構文

DBMS_STATS.IMPORT_SCHEMA_PREFS (
ownname    IN  VARCHAR2,
stattab    IN  VARCHAR2,
statid     IN  VARCHAR2 DEFAULT NULL,
statown    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表155-62 IMPORT_SCHEMA_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

stattab

統計情報のインポート元の統計表の名前

statid

(オプション)stattab内の統計情報を関連付ける識別子。

statown

stattabが含まれているスキーマ(ownname以外の場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを実行するには、所有者として接続するか、あるいはSYSDBA権限またはANALYZE ANYシステム権限を持っている必要があります。

- すべての引数はVARCHAR2タイプです。値は引用符で囲みます。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例

DBMS_STATS.IMPORT_SCHEMA_PREFS('SH', 'STAT');

IMPORT_SCHEMA_STATSプロシージャ

このプロシージャは、ownnameで識別されるスキーマ内のすべてのオブジェクトに関する統計情報をユーザー統計表から取得し、ディクショナリに格納します。

構文

DBMS_STATS.IMPORT_SCHEMA_STATS (
ownname         VARCHAR2,
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
statown         VARCHAR2 DEFAULT NULL,
no_invalidate   BOOLEAN DEFAULTto_no_invalidate_type(
get_param('NO_INVALIDATE')),
force           BOOLEAN DEFAULT FALSE,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-63 IMPORT_SCHEMA_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

オブジェクト(表)のレベルでロックされている統計情報を上書きします。

- TRUE: 統計情報のロックを無視して統計情報をインポートします。

- FALSE: 統計情報は、ロックされていない場合のみインポートされます。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

IMPORT_SYSTEM_STATSプロシージャ

このプロシージャは、stattabで識別されるユーザー統計表からシステムの統計情報を取り出し、ディクショナリに格納します。

構文

DBMS_STATS.IMPORT_SYSTEM_STATS (
stattab       VARCHAR2,
statid        VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL);

パラメータ

表155-64 IMPORT_SYSTEM_STATSプロシージャのパラメータ

パラメータ

説明

stattab

統計情報を取り出すユーザー統計表の識別子。

statid

stattabから取り出された統計情報に関連付けられた、オプションの識別子。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

ORA-20003: システムの統計情報をエクスポートできません。

使用上の注意

このプロシージャを実行するには、GATHER_SYSTEM_STATISTICSロールが必要です。

Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

IMPORT_TABLE_PREFSプロシージャ

このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを設定するために使用されます。

構文

DBMS_STATS.IMPORT_TABLE_PREFS (
ownname    IN  VARCHAR2,
tabname    IN  VARCHAR2,
stattab    IN  VARCHAR2,
statid     IN  VARCHAR2 DEFAULT NULL,
statown    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表155-65 IMPORT_TABLE_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

tabname

表名。

stattab

統計情報のインポート元の統計表の名前

statid

(オプション)stattab内の統計情報を関連付ける識別子。

statown

stattabが含まれているスキーマ(ownname以外の場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

使用上の注意

- このプロシージャを実行するには、その表の所有者として接続するか、またはANALYZE ANYシステム権限を持っている必要があります。

- すべての引数はVARCHAR2タイプです。値は引用符で囲みます。

- Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

例

DBMS_STATS.IMPORT_TABLE_PREFS('SH', 'SALES', 'STAT');

IMPORT_TABLE_STATSプロシージャ

このプロシージャは、stattabで識別されるユーザー統計表から特定の表に関する統計情報を取得し、ディクショナリに格納します。cascadeを使用すると、指定した表に関連付けられているすべての索引統計情報もインポートされます。

構文

DBMS_STATS.IMPORT_TABLE_STATS (
ownname         VARCHAR2,
tabname         VARCHAR2,
partname        VARCHAR2 DEFAULT NULL,
stattab         VARCHAR2,
statid          VARCHAR2 DEFAULT NULL,
cascade         BOOLEAN  DEFAULT TRUE,
statown         VARCHAR2 DEFAULT NULL,
no_invalidate   BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force           BOOLEAN DEFAULT FALSE,
stat_category   VARCHAR2 DEFAULT DEFAULT_STAT_CATEGORY);

パラメータ

表155-66 IMPORT_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

表の名前。

partname

表パーティション名。表がパーティション化されていて、partnameがNULLの場合、グローバルでパーティション表統計情報がインポートされます。

stattab

統計情報を取り出す場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

cascade

TRUEの場合は、この表の列と索引の統計情報もまたインポートされます。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

表の統計情報がロックされていても、統計情報をインポートします。

stat_category

インポートする統計情報を指定し、カンマ区切りの複数の値が受け入れられます。サポートされている値は次のとおりです。

- 'OBJECT_STATS': 表、列および索引(デフォルト)の統計情報。

- SYNOPSES: 増分統計をサポートする情報

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: ユーザー統計表の値が無効または矛盾しています。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

Oracleでは、キャラクタ・セットの異なるデータベース間での統計情報のインポートおよびエクスポートはサポートされていません。

LOCK_PARTITION_STATSプロシージャ

このプロシージャによって、ユーザーはパーティションの統計情報をロックできます。

構文

DBMS_STATS.LOCK_PARTITION_STATS (
ownname    VARCHAR2,
tabname    VARCHAR2,
partname   VARCHAR2);

パラメータ

表155-67 LOCK_PARTITION_STATSプロシージャのパラメータ

パラメータ

説明

ownname

ロックするスキーマの名前。

tabname

表の名前。

partname

(サブ・)パーティション名。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

LOCK_SCHEMA_STATSプロシージャ

このプロシージャは、スキーマのすべての表の統計情報をロックします。

構文

DBMS_STATS.LOCK_SCHEMA_STATS (
ownname    VARCHAR2);

パラメータ

表155-68 LOCK_SCHEMA_STATSプロシージャのパラメータ

パラメータ

説明

ownname

ロックするスキーマの名前。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- 表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。

- 個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*、DELETE_*、IMPORT_*、GATHER_*の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。

- 複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATSなど)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。

- このプロシージャは、現在の統計情報セットを制限するか、または統計情報を空(未収集)のままにして、動的統計情報を使用します。

- EXPORT_*_STATSプロシージャを使用する場合、ロックまたはロック解除の状態は、表の統計情報とともにエクスポートされません。

- UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。

LOCK_TABLE_STATSプロシージャ

このプロシージャは、表の統計情報をロックします。

構文

DBMS_STATS.LOCK_TABLE_STATS (
ownname    VARCHAR2,
tabname    VARCHAR2);

パラメータ

表155-69 LOCK_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

表の名前。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- 表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。

- 個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*、DELETE_*、IMPORT_*、GATHER_*の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。

- 複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATSなど)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。

- このプロシージャは、現在の統計情報セットを制限するか、または統計情報を空(未収集)のままにして、動的統計情報を使用します。

- EXPORT_*_STATSプロシージャを使用する場合、ロックまたはロック解除の状態は、表の統計情報とともにエクスポートされません。

- UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。

MERGE_COL_USAGEプロシージャ

このプロシージャは、dblinkを使用して、列使用情報をソース・データベースからローカル・データベースにマージします。列使用情報が指定した表または列にすでに存在する場合は、MERGE_COL_USAGEはローカルとリモートの両方の情報をマージします。

構文

DBMS_STATS.MERGE_COL_USAGE (
dblink    IN    VARCHAR2);

パラメータ

表155-70 MERGE_COL_USAGEプロシージャのパラメータ

パラメータ

説明

dblink

dblinkの名前

使用上の注意

このプロシージャを実行するには、ユーザーはSYSである必要があります。また、dblinkの作成中に指定されたユーザーは、SYSスキーマの表で選択した権限を持っていることが予期されます。

例外

ORA-20000: 権限が不十分です。

ORA-20001: パラメータdblinkにはNULLを指定できません。

ORA-20002: TEMP表を作成できません。

PREPARE_COLUMN_VALUESプロシージャ

これらのプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点の実際の値を、SET_COLUMN_STATSを使用して将来格納するためにOracleの内部表記に変換します。

構文

DBMS_STATS.PREPARE_COLUMN_VALUES (
srec     IN OUT StatRec,
charvals        CHARARRAY);

DBMS_STATS.PREPARE_COLUMN_VALUES (
srec      IN OUT StatRec,
datevals         DATEARRAY);

DBMS_STATS.PREPARE_COLUMN_VALUES (
srec     IN OUT StatRec,
dblvals         DBLARRAY);

DBMS_STATS.PREPARE_COLUMN_VALUES (
srec     IN OUT StatRec,
fltvals         FLTARRAY);

DBMS_STATS.PREPARE_COLUMN_VALUES (
srec     IN OUT StatRec,
numvals         NUMARRAY);

DBMS_STATS.PREPARE_COLUMN_VALUES (
srec     IN OUT StatRec,
rawvals         RAWARRAY);

パラメータ

表155-71 PREPARE_COLUMN_VALUESプロシージャのパラメータ

パラメータ

説明

srec.epc

charvals、datevals、dblvals、fltvals、numvalsまたはrawvalsで指定される値の数。この値は2から2050の範囲で指定し、ヒストグラム情報を認めないプロシージャ(nvarcharとrowid)では2を設定する必要があります。

最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、SET_COLUMN_STATSへのコールに対して現状のままになります。

srec.bkvals

頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、charvals、datevals、dblvals、fltvals、numvalsまたはrawvalsで指定されている各個別値の発生回数が含まれます。そうでない場合、この配列は単なる出力パラメータであり、このプロシージャのコール時にはNULLが設定されている必要があります。

srec.rpcnts

ハイブリッド・ヒストグラムが必要な場合、この配列には、charvals、datevals、numvalsまたはrawvalsで指定されている各個別値に等しいか、それよりも小さい値の合計頻度が含まれます。そうでない場合、この配列は単なる出力引数であり、このプロシージャのコール時にはNULLが設定されている必要があります。

たとえば、ある配列でnumvals(numvals(i)=4, rpcnts(i)=13)は、4列以下に13行あることを意味します。

注意:

- srec.rpcntsを入力した場合には、前述のようにsrec.bkvalsを入力する必要があります。

- bkvalsまたはrpcnts(あるいはその両方)を入力した場合、charvals、datevals、numvalsまたはrawvalsに重複があってはいけません。

表155-72に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。

表155-72 データ・タイプ固有の入力パラメータ

タイプ

説明

charvals

列のタイプが文字ベースの場合の値の配列。各文字列の最初の64バイトまでが使用されます。配列のエントリ数は、2から2050の範囲内である必要があります。データ・タイプが固定のCHARである場合、適切な正規化を行うには、文字列にスペースを追加して15文字にする必要があります。

datevals

列のタイプが日付ベースの場合の値の配列。

dblvals

列のタイプがdoubleベースの場合の値の配列。

fltvals

列のタイプがfloatベースの場合の値の配列。

numvals

列のタイプが数値ベースの場合の値の配列。

rawvals

列のタイプがRAWの場合の値の配列。各値の最初の64バイトまでが使用されます。

nvmin、nvmax

列のタイプが各国語キャラクタ・セット・ベースの場合の最大値と最小値。このタイプの列について、ヒストグラム情報は提供できません。データ・タイプが固定のCHARである場合、適切な正規化を行うには、文字列にスペースを追加して15文字にする必要があります。

rwmin、rwmax

列タイプがROWIDの場合の最大値と最小値。このタイプの列に、ヒストグラム情報は提供されません。

出力パラメータ

表155-73 PREPARE_COLUMN_VALUESプロシージャの出力パラメータ

パラメータ

説明

srec.minval

SET_COLUMN_STATSへのコールでの使用に適した最小値の内部表記。

srec.maxval

SET_COLUMN_STATSへのコールでの使用に適した最大値の内部表記。

srec.bkvals

SET_COLUMN_STATSへのコールでの使用に適した配列。

srec.novals

SET_COLUMN_STATSへのコールでの使用に適した配列。

srec.eavals

SET_COLUMN_STATSへのコールでの使用に適した配列。

srec.rpcnts

SET_COLUMN_STATSへのコールでの使用に適した配列。

例外

ORA-20001: 入力値が無効または矛盾しています。

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

PREPARE_COLUMN_VALUES_NVARCHARプロシージャ

このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点の実際の値を、SET_COLUMN_STATSプロシージャを使用して将来格納するためにOracleの内部表記に変換します。

構文

DBMS_STATS.PREPARE_COLUMN_VALUES_NVARCHAR (
srec     IN OUT StatRec,
nvmin           NVARCHAR2,
nvmax           NVARCHAR2);

パラメータ

表155-74 PREPARE_COLUMN_VALUES_NVARCHARプロシージャのパラメータ

パラメータ

説明

srec.epc

charvals、datevals、dblvals、fltvals、numvalsまたはrawvalsで指定される値の数。この値は2から2050の範囲で指定し、ヒストグラム情報を認めないプロシージャ(nvarcharとrowid)では2を設定する必要があります。

最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、SET_COLUMN_STATSへのコールに対して現状のままになります。

srec.bkvals

頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、charvals、datevals、dblvals、fltvals、numvalsまたはrawvalsで指定されている各個別値の発生回数が含まれます。そうでない場合、この配列は単なる出力パラメータであり、このプロシージャのコール時にはNULLが設定されている必要があります。

srec.rpcnts

ハイブリッド・ヒストグラムが必要な場合、この配列には、charvals、datevals、numvalsまたはrawvalsで指定されている各個別値に等しいか、それよりも小さい値の合計頻度が含まれます。そうでない場合、この配列は単なる出力引数であり、このプロシージャのコール時にはNULLが設定されている必要があります。

たとえば、ある配列でnumvals(numvals(i)=4, rpcnts(i)=13)は、4列以下に13行あることを意味します。

注意:

- srec.rpcntsを入力した場合には、前述のようにsrec.bkvalsを入力する必要があります。

- bkvalsまたはrpcnts(あるいはその両方)を入力した場合、charvals、datevals、numvalsまたはrawvalsに重複があってはいけません。

表155-72に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。

表155-75 PREPARE_COLUMN_VALUES_NVARCHARデータ・タイプ固有の入力パラメータ

タイプ

説明

nvmin、nvmax

列のタイプが各国語キャラクタ・セット・ベースの場合の最大値と最小値。このタイプの列について、ヒストグラム情報は提供できません。データ・タイプが固定のCHARである場合、適切な正規化を行うには、文字列にスペースを追加して15文字にする必要があります。

出力パラメータ

表155-76 PREPARE_COLUMN_VALUES_NVARCHARプロシージャの出力パラメータ

パラメータ

説明

srec.minval

SET_COLUMN_STATSへのコールでの使用に適した最小値の内部表記。

srec.maxval

SET_COLUMN_STATSへのコールでの使用に適した最大値の内部表記。

srec.bkvals

SET_COLUMN_STATSへのコールでの使用に適した配列。

srec.novals

SET_COLUMN_STATSへのコールでの使用に適した配列。

srec.eavals

SET_COLUMN_STATSへのコールでの使用に適した配列。

srec.rpcnts

SET_COLUMN_STATSへのコールでの使用に適した配列。

例外

ORA-20001: 入力値が無効または矛盾しています。

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

PREPARE_COLUMN_VALUES_ROWIDプロシージャ

このプロシージャは、ユーザー指定の最小値、最大値およびヒストグラム終点のデータ・タイプ固有の値を、SET_COLUMN_STATSを使用して将来格納するためにOracleの内部表記に変換します。

構文

DBMS_STATS.PREPARE_COLUMN_VALUES_ROWID (
srec  IN OUT StatRec,
rwmin        ROWID,
rwmax        ROWID);

プラグマ

pragma restrict_references(prepare_column_values_rowid, WNDS, RNDS, WNPS, RNPS);

パラメータ

表155-77 PREPARE_COLUMN_VALUES_ROWIDプロシージャのパラメータ

パラメータ

説明

srec

値(IN):

- epc

- bkvals

- rpcnts

値(OUT):

- minval

- maxval

- bkvals

- novals

- eavals

- rpcnts

epc (IN) -

charvals、datevals、dblvals、fltvals、numvalsまたはrawvalsで指定される値の数。この値は2から2050の範囲で指定し、ヒストグラム情報を認めないプロシージャ(nvarcharとrowid)では2を設定する必要があります。

最初に対応する配列のエントリは列の最小値を含み、最後のエントリは最大値を含みます。2つを超えるエントリがある場合、その他のエントリは、残りの高さ調整ヒストグラムまたは頻度ヒストグラムのエンドポイント値(小さい値から大きい値に順序立てられた中間値を持つ)を含みます。この値は圧縮のために調整できるため、戻り値は、SET_COLUMN_STATSへのコールに対して現状のままになります。

bkvals (IN) -

頻度またはハイブリッド・ヒストグラムが必要な場合、この配列には、charvals、datevals、dblvals、fltvals、numvalsまたはrawvalsで指定されている各個別値の発生回数が含まれます。そうでない場合、この配列は単なる出力パラメータであり、このプロシージャのコール時にはNULLが設定されている必要があります。

rpcnts (IN) -

ハイブリッド・ヒストグラムが必要な場合、この配列には、charvals、datevals、numvalsまたはrawvalsで指定されている各個別値に等しいか、それよりも小さい値の合計頻度が含まれます。そうでない場合、この配列は単なる出力引数であり、このプロシージャのコール時にはNULLが設定されている必要があります。

たとえば、ある配列でnumvals(numvals(i)=4, rpcnts(i)=13)は、4列以下に13行あることを意味します。

注意:

- srec.rpcntsを入力した場合には、前述のようにsrec.bkvalsを入力する必要があります。

- bkvalsまたはrpcnts(あるいはその両方)を入力した場合、charvals、datevals、numvalsまたはrawvalsに重複があってはいけません。

minval (OUT) -

SET_COLUMN_STATSへのコールでの使用に適した最小値の内部表記。

maxval (OUT) -

SET_COLUMN_STATSへのコールでの使用に適した最大値の内部表記。

bkvals (OUT) -

SET_COLUMN_STATSへのコールでの使用に適した配列。

novals (OUT) -

SET_COLUMN_STATSへのコールでの使用に適した配列。

eavals (OUT) -

SET_COLUMN_STATSへのコールでの使用に適した配列。

rpcnts (OUT) -

SET_COLUMN_STATSへのコールでの使用に適した配列。

表155-72に、データ・タイプ固有の入力パラメータ(1つを使用)を示します。

表155-78 データ・タイプ固有の入力パラメータ

タイプ

説明

rwmin、rwmax

列タイプがROWIDの場合の最大値と最小値。このタイプの列に、ヒストグラム情報は提供されません。

使用上の注意

このプロシージャを起動するために特別な権限やロールは必要ありません。

PUBLISH_PENDING_STATSプロシージャ

このプロシージャは、保留中として収集および格納された統計情報をパブリッシュするために使用されます。

構文

DBMS_STATS.PUBLISH_PENDING_STATS (
ownname         IN  VARCHAR2 DEFAULT USER,
tabname         IN  VARCHAR2,
no_invalidate   BOOLEAN DEFAULT
to_no_invalidate_type(get_param('NO_INVALIDATE')),
force      IN  BOOLEAN DEFAULT FALSE);

パラメータ

表155-79 PUBLISH_PENDING_STATSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

tabname

表名。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

TRUEの場合、ロックを無効にします。

例外

ORA-20000: 権限が不十分です。

使用上の注意

- パラメータtabnameがNULLの場合、指定したスキーマのすべての表にパブリッシュが適用されます。

- デフォルトの所有者/スキーマは、このプロシージャを実行するユーザーです。

- このプロシージャを実行するには、このプロシージャによって処理される表の統計情報を収集する権限と同じ権限を持っている必要があります。

例

DBMS_STATS.PUBLISH_PENDING_STATS ('SH', null);

PURGE_STATSプロシージャ

このプロシージャは、ディクショナリに保存されている統計情報の古いバージョンをパージします。このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

構文

DBMS_STATS.PURGE_STATS(
before_timestamp       TIMESTAMP WITH TIME ZONE);

パラメータ

表155-80 PURGE_STATSプロシージャのパラメータ

パラメータ

説明

before_timestamp

このタイムスタンプがパージされる前に保存された統計情報のバージョン。NULLの場合、自動パージによるパージ・ポリシーを使用します。自動パージでは、(現在の時間 - 統計履歴のリテンション値)と(システムでの最近の分析時間 - 1)のうちで古いほうの時間を基準として、それよりも古いすべての履歴を削除します。この統計履歴のリテンション値は、ALTER_STATS_HISTORY_RETENTIONプロシージャを使用して変更できます。デフォルトは31日です。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 値が無効または矛盾しています。

使用上の注意

このプロシージャを呼び出すには、ANALYZE ANY権限とANALYZE ANY DICTIONARY権限が必要です。

REMAP_STAT_TABLEプロシージャ

このプロシージャは、ユーザー統計表のオブジェクトの名前を再マップします。これにより、同じ定義の異なる名前を持つオブジェクトに統計情報をインポートできます。

構文

DBMS_STATS.REMAP_STAT_TABLE (
ownname    IN    VARCHAR2,
stattab    IN    VARCHAR2,
src_own    IN    VARCHAR2,
src_tab    IN    VARCHAR2,
tgt_own    IN    VARCHAR2,
tgt_tab    IN    VARCHAR2);

パラメータ

表155-81 REMAP_STAT_TABLEプロシージャのパラメータ

パラメータ

説明

ownname

統計表の所有者。NULLは、現行のスキーマを意味します。

stattab

ユーザー統計表の識別子。

src_own

名前を変更する表の所有者。この引数は、NULLにはできません。

src_tab

名前を変更する表の名前。NULLの場合、すべての表の所有者がsrc_ownになります。

tgt_own

表の所有者の新しい名前。列や索引などの依存オブジェクトの所有者の名前も更新されます。src_ownによって所有されていないsrc_tabの索引は名前変更されません。この引数は、NULLにできません。

tgt_tab

表の新しい名前。この引数は、src_tabがNULLではない場合のみ有効です。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 無効な入力です。

例

次の文は、ユーザー統計表sh.ustatで、shのすべてのオブジェクトをshsaveに再マップします。

DBMS_STATS.REMAP_STAT_TABLE ('sh', 'ustat', 'sh', NULL, 'shsave', NULL);

前述の再マップ・プロシージャが完了したら、次の文を使用して、統計情報をshsaveのオブジェクトにインポートできます。

DBMS_STATS.IMPORT_SCHEMA_STATS ('shsave', 'ustat', statown => 'sh');

次の文は、sh.customersをshsave.customers_savに再マップします。

DBMS_STATS.REMAP_STAT_TABLE ('sh', 'ustat', 'sh', 'customers','shsave', 'customers_sav');

REPORT_COL_USAGEファンクション

このファンクションは、記録された列(グループ)の使用方法の情報を報告します。

構文

DBMS_STATS.REPORT_COL_USAGE (
ownname    IN    VARCHAR2,
tabname    IN    VARCHAR2)
RETURN CLOB;

パラメータ

表155-82 REPORT_COL_USAGEファンクションのパラメータ

パラメータ

説明

ownname

所有者名。NULLの場合、データベース内のすべてのスキーマの表で列の使用情報がレポートされます。

tabname

表名。NULLの場合、ownnameのすべての表で列の使用情報がレポートされます。

使用上の注意

このプロシージャを実行するには、SYSDBA管理権限、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

REPORT_GATHER_AUTO_STATSファンクション

このファンクションは、自動統計情報収集ジョブをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、自動統計情報収集が起動されたときに影響を受けるすべてのオブジェクトがレポートされます。

構文

DBMS_STATS.REPORT_GATHER_AUTO_STATS (
detail_level      VARCHAR2  DEFAULT 'TYPICAL',
format            VARCHAR2  DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表155-83 REPORT_GATHER_AUTO_STATSファンクションのパラメータ

パラメータ

説明

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)

ターゲット・オブジェクトに関するものは次のとおりです。

- 各ターゲット・オブジェクトの所有者および名前

- ターゲット・オブジェクト・タイプ(表、索引など)

- 開始時刻

- 終了時刻

- 完了ステータス

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名

- セッションID

- パラメータ値

- 操作が失敗した場合のエラー・メッセージ

ターゲット・オブジェクトに関するものは次のとおりです。

- ジョブ名

- バッチ詳細

- 推定コスト

- ターゲット・リスト内のランク

- ヒストグラムが収集された列

- 収集された拡張統計情報のリスト(ある場合)

- ターゲット・リストにオブジェクトを含める理由

- タスクが失敗した場合の追加のエラー詳細

レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合(CONCURRENTプリファレンスがオンの場合)のみ入力されます。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- テキスト(デフォルト)

使用上の注意

ユーザーSYSのみがREPORT_GATHER_AUTO_STATSファンクションを実行できます。

REPORT_GATHER_DATABASE_STATSファンクション

このファンクションは、GATHER_DATABASE_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_DATABASE_STATSが起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_DATABASE_STATS内のものとまったく同じです。

構文

DBMS_STATS.REPORT_GATHER_DATABASE_STATS (
estimate_percent     IN    NUMBER     DEFAULT to_estimate_percent_type (
GET_PARAM('ESTIMATE_PERCENT')),
block_sample         IN    BOOLEAN    DEFAULT FALSE,
method_opt           IN    VARCHAR2   DEFAULT GET_PARAM('METHOD_OPT'),
degree               IN    NUMBER     DEFAULT TO_DEGREE_TYPE(
GET_PARAM('DEGREE')),
granularity          IN    VARCHAR2   DEFAULT GET_PARAM('GRANULARITY'),
cascade              IN    BOOLEAN    DEFAULT to_cascade_type (
GET_PARAM('CASCADE')),
stattab              IN    VARCHAR2   DEFAULT NULL,
statid               IN    VARCHAR2   DEFAULT NULL,
options              IN    VARCHAR2   DEFAULT 'GATHER',
objlist              OUT   ObjectTab,
statown              IN    VARCHAR2   DEFAULT NULL,
gather_sys           IN    BOOLEAN    DEFAULT TRUE,
no_invalidate        IN    BOOLEAN    DEFAULT TO_NO_INVALIDATE_TYPE (
GET_PARAM('NO_INVALIDATE')),
obj_filter_list      IN    ObjectTab  DEFAULT NULL,
detail_level         IN    VARCHAR2   DEFAULT 'TYPICAL',
format               IN    VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

DBMS_STATS.REPORT_GATHER_DATABASE_STATS (
estimate_percent     IN    NUMBER     DEFAULT to_estimate_percent_type (
GET_PARAM('ESTIMATE_PERCENT')),
block_sample         IN    BOOLEAN    DEFAULT FALSE,
method_opt           IN    VARCHAR2   DEFAULT GET_PARAM('METHOD_OPT'),
degree               IN    NUMBER     DEFAULT TO_DEGREE_TYPE(
GET_PARAM('DEGREE')),
granularity          IN    VARCHAR2   DEFAULT GET_PARAM('GRANULARITY'),
cascade              IN    BOOLEAN    DEFAULT to_cascade_type (
GET_PARAM('CASCADE')),
stattab              IN    VARCHAR2   DEFAULT NULL,
statid               IN    VARCHAR2   DEFAULT NULL,
options              IN    VARCHAR2   DEFAULT 'GATHER',
statown              IN    VARCHAR2   DEFAULT NULL,
gather_sys           IN    BOOLEAN    DEFAULT TRUE,
no_invalidate        IN    BOOLEAN    DEFAULT TO_NO_INVALIDATE_TYPE (
GET_PARAM('NO_INVALIDATE')),
obj_filter_list      IN    ObjectTab  DEFAULT NULL,
detail_level         IN    VARCHAR2   DEFAULT 'TYPICAL',
format               IN    VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表155-84 REPORT_GATHER_DATABASE_STATSファンクションのパラメータ

パラメータ

説明

estimate_percent

推定する行のパーセント(NULLは計算を意味します)で、有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。

method_opt

次を受け入れます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、データベース内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

統計表は、分析するオブジェクトと同じスキーマに常駐するとみなされるので、各スキーマにこのオプションを使用するための表が1つ必要です。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

GATHER: スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

GATHER AUTO: 必要な統計情報をすべて自動的に収集します。Oracleは、新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別します。GATHER AUTOが指定された場合、有効な追加パラメータはstattab、statid、objlistおよびstatownのみで、その他のパラメータ設定はすべて無視されます。処理されたオブジェクトのリストを戻します。

GATHER STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集します。また、失効と判別されたオブジェクトのリストも戻します。

GATHER EMPTY: 現在統計情報がないオブジェクトの統計情報を収集します。統計情報がないオブジェクトのリストを戻します。

LIST AUTO: GATHER AUTOを使用して処理されるオブジェクトのリストを戻します。

LIST STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトのリストを戻します。

LIST EMPTY: 現在統計情報がないオブジェクトのリストを戻します。

objlist

失効または空と判別されたオブジェクトのリスト。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

gather_sys

SYSユーザーが所有するオブジェクトの統計情報を収集します。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

obj_filter_list

オブジェクト・フィルタのリスト。指定された場合、GATHER_DATABASE_STATSは、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対してNULL以外の値s1、s2、...が指定されているとします。(o.a1 like s1)、(o.a2 like s2)、...がTRUEの場合、オブジェクトoはこのオブジェクト・フィルタを満たすとみなされます。詳細は、「オブジェクト・フィルタ・リストの適用」を参照してください。

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)

ターゲット・オブジェクトに関するものは次のとおりです。

- 各ターゲット・オブジェクトの所有者および名前

- ターゲット・オブジェクト・タイプ(表、索引など)

- 開始時刻

- 終了時刻

- 完了ステータス

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名

- セッションID

- パラメータ値

- 操作が失敗した場合のエラー・メッセージ

ターゲット・オブジェクトに関するものは次のとおりです。

- ジョブ名

- バッチ詳細

- 推定コスト

- ターゲット・リスト内のランク

- ヒストグラムが収集された列

- 収集された拡張統計情報のリスト(ある場合)

- タスクが失敗した場合の追加のエラー詳細

レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合(CONCURRENTプリファレンスがオンの場合)のみ入力されます。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- テキスト(デフォルト)

戻り値

レポートを含むCLOBオブジェクト。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

REPORT_GATHER_DICTIONARY_STATSファンクション

このファンクションは、GATHER_DICTIONARY_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_DICTIONARY_STATSが起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_DICTIONARY_STATS内のものとまったく同じです。

構文

DBMS_STATS.REPORT_GATHER_DICTIONARY_STATS (
comp_id               IN    VARCHAR2   DEFAULT NULL,
estimate_percent      IN    NUMBER     DEFAULT TO_ESTIMATE_PERCENT_TYPE
(GET_PARAM('ESTIMATE_PERCENT')),
block_sample          IN    BOOLEAN    DEFAULT FALSE,
method_opt            IN    VARCHAR2   DEFAULT GET_PARAM('METHOD_OPT'),
degree                IN    NUMBER     DEFAULT TO_DEGREE_TYPE
(GET_PARAM('DEGREE')),
granularity           IN    VARCHAR2   DEFAULT GET_PARAM('GRANULARITY'),
cascade               IN    BOOLEAN    DEFAULT TO_CASCADE_TYPE
(GET_PARAM('CASCADE')),
stattab               IN    VARCHAR2   DEFAULT NULL,
statid                IN    VARCHAR2   DEFAULT NULL,
options               IN    VARCHAR2   DEFAULT 'GATHER AUTO',
objlist               OUT   ObjectTab,
statown               IN    VARCHAR2   DEFAULT NULL,
no_invalidate         IN    BOOLEAN    DEFAULT TO_NO_INVALIDATE_TYPE
(GET_PARAM('NO_INVALIDATE')),
obj_filter_list       IN    ObjectTab  DEFAULT NULL,
detail_level          IN    VARCHAR2   DEFAULT 'TYPICAL',
format                IN    VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

DBMS_STATS.REPORT_GATHER_DICTIONARY_STATS (
comp_id               IN    VARCHAR2   DEFAULT NULL,
estimate_percent      IN    NUMBER     DEFAULT TO_ESTIMATE_PERCENT_TYPE
(GET_PARAM('ESTIMATE_PERCENT')),
block_sample          IN    BOOLEAN    DEFAULT FALSE,
method_opt            IN    VARCHAR2   DEFAULT GET_PARAM('METHOD_OPT'),
degree                IN    NUMBER     DEFAULT TO_DEGREE_TYPE
(GET_PARAM('DEGREE')),
granularity           IN    VARCHAR2   DEFAULT GET_PARAM('GRANULARITY'),
cascade               IN    BOOLEAN    DEFAULT TO_CASCADE_TYPE
(GET_PARAM('CASCADE')),
stattab               IN    VARCHAR2   DEFAULT NULL,
statid                IN    VARCHAR2   DEFAULT NULL,
options               IN    VARCHAR2   DEFAULT 'GATHER AUTO',
statown               IN    VARCHAR2   DEFAULT NULL,
no_invalidate         IN    BOOLEAN    DEFAULT TO_NO_INVALIDATE_TYPE
(GET_PARAM('NO_INVALIDATE')),
detail_level          IN    VARCHAR2   DEFAULT 'TYPICAL',
format                IN    VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表155-85 REPORT_GATHER_DICTIONARY_STATSファンクションのパラメータ

パラメータ

説明

comp_id

分析するスキーマのコンポーネントID(NULLを指定すると、すべてのRDBMSコンポーネントのスキーマが分析される)。DBA_REGISTRYビューのcomp_id列を参照してください。このプロシージャでは、引数の指定内容に関係なく、'SYS'スキーマと'SYSTEM'スキーマの統計情報を常に収集します。

estimate_percent

推定する行のパーセント(NULLは計算を意味します)。有効な範囲は、0.000001から100([0.000001,100])です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトで、デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを決定します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を実行した場合にのみ該当します。

method_opt

次を受け入れます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

索引についても統計情報を収集します。索引統計情報の収集はパラレル化されません。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

- 'GATHER': スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

- 'GATHER AUTO': 必要な統計情報をすべて自動的に収集します。Oracleは、新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別します。'GATHER AUTO'が指定された場合、有効な追加パラメータはcomp_id、stattab、statidおよびstatownのみで、その他のパラメータ設定はすべて無視されます。また、処理されたオブジェクトのリストも戻します。

- 'GATHER STALE': *_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集します。また、失効と判別されたオブジェクトのリストも戻します。

- 'GATHER EMPTY': 現在統計情報がないオブジェクトの統計情報を収集します。また、統計情報がないオブジェクトのリストも戻します。

- 'LIST AUTO': 'GATHER AUTO'を使用して処理されるオブジェクトのリストを戻します。

- 'LIST STALE': *_tab_modificationsビューを調べて判別した失効オブジェクトのリストを戻します。

- 'LIST EMPTY': 現在統計情報がないオブジェクトのリストを戻します。

objlist

失効または空と判別されたオブジェクトのリスト。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

obj_filter_list

オブジェクト・フィルタのリスト。指定された場合、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対してNULL以外の値s1、s2、...が指定されているとします。(o.a1 like s1)、(o.a2 like s2)、...がTRUEの場合、オブジェクトoはこのオブジェクト・フィルタを満たすとみなされます。

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)

ターゲット・オブジェクトに関するものは次のとおりです。

- 各ターゲット・オブジェクトの所有者および名前

- ターゲット・オブジェクト・タイプ(表、索引など)

- 開始時刻

- 終了時刻

- 完了ステータス

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名

- セッションID

- パラメータ値

- 操作が失敗した場合のエラー・メッセージ

ターゲット・オブジェクトに関するものは次のとおりです。

- ジョブ名

- バッチ詳細

- 推定コスト

- ターゲット・リスト内のランク

- ヒストグラムが収集された列

- 収集された拡張統計情報のリスト(ある場合)

- タスクが失敗した場合の追加のエラー詳細

レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合(CONCURRENTプリファレンスがオンの場合)のみ入力されます。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- テキスト(デフォルト)

戻り値

レポートを含むCLOBオブジェクト。

使用上の注意

このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

例外

ORA-20000: 索引が存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

REPORT_GATHER_FIXED_OBJ_STATSファンクション

このファンクションは、GATHER_FIXED_OBJECTS_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_FIXED_OBJ_STATSが起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_FIXED_OBJ_STATS内のものとまったく同じです。

構文

DBMS_STATS.REPORT_GATHER_FIXED_OBJ_STATS (
stattab          IN  VARCHAR2 DEFAULT NULL,
statid           IN  VARCHAR2 DEFAULT NULL,
statown          IN  VARCHAR2 DEFAULT NULL,
no_invalidate    IN  BOOLEAN  DEFAULT TO_NO_INVALIDATE_TYPE (
GET_PARAM('NO_INVALIDATE')),
detail_level     IN  VARCHAR2   DEFAULT 'TYPICAL',
format           IN  VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表155-86 REPORT_GATHER_FIXED_OBJ_STATSプロシージャのパラメータ

パラメータ

説明

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)

ターゲット・オブジェクトに関するものは次のとおりです。

- 各ターゲット・オブジェクトの所有者および名前

- ターゲット・オブジェクト・タイプ(表、索引など)

- 開始時刻

- 終了時刻

- 完了ステータス

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名

- セッションID

- パラメータ値

- 操作が失敗した場合のエラー・メッセージ

ターゲット・オブジェクトに関するものは次のとおりです。

- ジョブ名

- バッチ詳細

- 推定コスト

- ターゲット・リスト内のランク

- ヒストグラムが収集された列

- 収集された拡張統計情報のリスト(ある場合)

- タスクが失敗した場合の追加のエラー詳細

レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合(CONCURRENTプリファレンスがオンの場合)のみ入力されます。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- テキスト(デフォルト)

戻り値

レポートを含むCLOBオブジェクト。

使用上の注意

このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

REPORT_GATHER_SCHEMA_STATSファンクション

このファンクションは、GATHER_SCHEMA_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_SCHEMA_STATSが起動されたときに影響を受けるすべてのオブジェクトがレポートされます。入力パラメータ・セットは、2つのパラメータが追加されている点を除けば、GATHER_SCHEMA_STATS内のものとまったく同じです。

構文

DBMS_STATS.REPORT_GATHER_SCHEMA_STATS (
ownname           IN   VARCHAR2,
estimate_percent  IN   NUMBER     DEFAULT TO_ESTIMATE_PERCENT_TYPE (
GET_PARAM ('ESTIMATE_PERCENT')),
block_sample      IN   BOOLEAN    DEFAULT FALSE,
method_opt        IN   VARCHAR2   DEFAULT GET_PARAM ('METHOD_OPT'),
degree            IN   NUMBER     DEFAULT TO_DEGREE_TYPE (
GET_PARAM('DEGREE')),
granularity       IN   VARCHAR2   DEFAULT GET_PARAM('GRANULARITY'),
cascade           IN   BOOLEAN    DEFAULT TO_CASCADE_TYPE (
GET_PARAM ('CASCADE')),
stattab           IN   VARCHAR2    DEFAULT NULL,
statid            IN   VARCHAR2    DEFAULT NULL,
options           IN   VARCHAR2    DEFAULT 'GATHER',
objlist           OUT  ObjectTab,
statown           IN   VARCHAR2    DEFAULT NULL,
no_invalidate     IN   BOOLEAN     DEFAULT TO_NO_INVALIDATE_TYPE (
GET_PARAM ('NO_INVALIDATE')),
force             IN   BOOLEAN     DEFAULT FALSE,
obj_filter_list   IN   ObjectTab   DEFAULT NULL,
detail_level      IN    VARCHAR2   DEFAULT 'TYPICAL',
format            IN    VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

DBMS_STATS.REPORT_GATHER_SCHEMA_STATS (
ownname           IN   VARCHAR2,
estimate_percent  IN   NUMBER     DEFAULT TO_ESTIMATE_PERCENT_TYPE (
GET_PARAM ('ESTIMATE_PERCENT')),
block_sample      IN   BOOLEAN    DEFAULT FALSE,
method_opt        IN   VARCHAR2   DEFAULT GET_PARAM ('METHOD_OPT'),
degree            IN   NUMBER     DEFAULT TO_DEGREE_TYPE (
GET_PARAM('DEGREE')),
granularity       IN   VARCHAR2   DEFAULT GET_PARAM('GRANULARITY'),
cascade           IN   BOOLEAN    DEFAULT TO_CASCADE_TYPE (
GET_PARAM ('CASCADE')),
stattab           IN   VARCHAR2    DEFAULT NULL,
statid            IN   VARCHAR2    DEFAULT NULL,
options           IN   VARCHAR2    DEFAULT 'GATHER',
statown           IN   VARCHAR2    DEFAULT NULL,
no_invalidate     IN   BOOLEAN     DEFAULT TO_NO_INVALIDATE_TYPE (
GET_PARAM ('NO_INVALIDATE')),
force             IN   BOOLEAN     DEFAULT FALSE,
obj_filter_list   IN   ObjectTab   DEFAULT NULL,
detail_level      IN    VARCHAR2   DEFAULT 'TYPICAL',
format            IN    VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表155-87 REPORT_GATHER_SCHEMA_STATSファンクションのパラメータ

パラメータ

説明

ownname

分析するスキーマ(NULLは現行のスキーマを意味します)。

estimate_percent

推定する行のパーセント(NULLは計算を意味します)で、有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。

method_opt

次を受け入れます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

索引についても統計情報を収集します。このオプションを使用することは、表と列の統計情報の収集に加えて、スキーマ内の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

options

統計情報を収集するオブジェクトの詳細は、次のように指定します。

GATHER: スキーマ内のすべてのオブジェクトに関する統計情報を収集します。

GATHER AUTO: 必要な統計情報をすべて自動的に収集します。Oracleは、新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別します。GATHER AUTOが指定された場合、有効な追加パラメータはownname、stattab、statid、objlistおよびstatownのみで、その他のパラメータ設定はすべて無視されます。処理されたオブジェクトのリストを戻します。

GATHER STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集します。また、失効と判別されたオブジェクトのリストも戻します。

GATHER EMPTY: 現在統計情報がないオブジェクトについて統計情報を収集し、統計情報なしと判別されたオブジェクトのリストも戻します。

LIST AUTO: GATHER AUTOを使用して処理されるオブジェクトのリストを戻します。

LIST STALE: *_tab_modificationsビューを調べて判別した失効オブジェクトのリストを戻します。

LIST EMPTY: 現在統計情報がないオブジェクトのリストを戻します。

objlist

失効または空と判別されたオブジェクトのリスト。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

ロックされている場合でも、オブジェクトの統計情報を収集します。

obj_filter_list

オブジェクト・フィルタのリスト。指定された場合、GATHER_SCHEMA_STATSは、必要に応じて、リスト内の1つ以上のオブジェクト・フィルタを満たすオブジェクトについてのみ統計情報を収集します。1つのオブジェクト・フィルタで、オブジェクト属性に対する制約を指定できます。オブジェクト・フィルタに指定する属性値は、二重引用符で囲まないかぎり、大/小文字が区別されません。属性値には、ワイルドカードを使用できます。1つのオブジェクト・フィルタで、属性a1、a2、...に対してNULL以外の値s1、s2、...が指定されているとします。(o.a1 like s1)、(o.a2 like s2)、...がTRUEの場合、オブジェクトoはこのオブジェクト・フィルタを満たすとみなされます。詳細は、「オブジェクト・フィルタ・リストの適用」を参照してください。

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)

ターゲット・オブジェクトに関するものは次のとおりです。

- 各ターゲット・オブジェクトの所有者および名前

- ターゲット・オブジェクト・タイプ(表、索引など)

- 開始時刻

- 終了時刻

- 完了ステータス

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名

- セッションID

- パラメータ値

- 操作が失敗した場合のエラー・メッセージ

ターゲット・オブジェクトに関するものは次のとおりです。

- ジョブ名

- バッチ詳細

- 推定コスト

- ターゲット・リスト内のランク

- ヒストグラムが収集された列

- 収集された拡張統計情報のリスト(ある場合)

- タスクが失敗した場合の追加のエラー詳細

レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合(CONCURRENTプリファレンスがオンの場合)のみ入力されます。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- テキスト(デフォルト)

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

サンプリングのパーセント指定には特定の値を使用できますが、次の場合は、DBMS_STATSでその値が有効ではなくなります。

- 結果が2500行未満の場合(サンプルとしてはデータ量が非常に少ない)。

- 指定のパーセントが特定のパーセントを超えた場合。

例外

ORA-20000: スキーマが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

例

オブジェクト・フィルタ・リストの適用

次の例では、SAMPLEスキーマ内の接頭辞がTの表およびSYSスキーマ内のいずれかの表が失効している場合、それらの表に対する統計情報が収集されるように指定します。

DECLARE
filter_lst  DBMS_STATS.OBJECTTAB := DBMS_STATS.OBJECTTAB();
BEGIN
filter_lst.extend(2);
filter_lst(1).ownname := 'SAMPLE';
filter_lst(1).objname := 'T%';
filter_lst(2).ownname := 'SYS';
DBMS_STATS.GATHER_SCHEMA_STATS(NULL, obj_filter_list => filter_lst,
options => 'GATHER STALE');
END;

REPORT_GATHER_TABLE_STATSファンクション

このプロシージャは、GATHER_TABLE_STATSプロシージャをレポート・モードで実行します。つまり、統計情報は、実際には収集されませんが、GATHER_TABLE_STATSが起動されたときに影響を受けるすべてのオブジェクトがレポートされます。

構文

DBMS_STATS.REPORT_GATHER_TABLE_STATS (
ownname          VARCHAR2,
tabname          VARCHAR2,
partname         VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER   DEFAULT to_estimate_percent_type
(get_param('ESTIMATE_PERCENT')),
block_sample     BOOLEAN  DEFAULT FALSE,
method_opt       VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree           NUMBER   DEFAULT to_degree_type(get_param('DEGREE')),
granularity      VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade          BOOLEAN  DEFAULT to_cascade_type(get_param('CASCADE')),
stattab          VARCHAR2 DEFAULT NULL,
statid           VARCHAR2 DEFAULT NULL,
statown          VARCHAR2 DEFAULT NULL,
no_invalidate    BOOLEAN  DEFAULT  to_no_invalidate_type (
get_param('NO_INVALIDATE')),
stattype         VARCHAR2 DEFAULT 'DATA',
force            BOOLEAN  DEFAULT FALSE)
detail_level     VARCHAR2 DEFAULT 'TYPICAL',   format           VARCHAR2 DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表155-88 REPORT_GATHER_TABLE_STATSファンクションのパラメータ

パラメータ

説明

ownname

分析する表のスキーマ。

tabname

表の名前。

partname

パーティションの名前。

estimate_percent

推定する行のパーセント(NULLは計算を意味します)で、有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

block_sample

ランダム行サンプリングのかわりにランダム・ブロック・サンプリングを使用するかどうかを示します。ランダム・ブロック・サンプリングがより効率的ですが、データがディスク上にランダムに分散していない場合、サンプル値はある程度相関があります。統計情報の推定を行った場合にのみ該当します。

method_opt

次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

- FOR COLUMNS [column_clause] [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

column_clauseは、column_clause := column_name | extension name | extensionのように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
- column_name: 列の名前。
- extension:(column_name, Colume_name [, ...])の書式の列グループまたは式。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

degree

並列度。degreeのデフォルトはNULLです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。NULLの場合、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づいてデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。値にAUTO_DEGREEを指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)からDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)までの間の値になります。DEGREE=>NULL、DEGREE=>nまたはDEGREE=>DBMS_STATS.DEFAULT_DEGREEの使用時にオブジェクトのサイズがパラレル実行に適さない場合は、DBMS_STATSの現行の実装ではシリアル実行が使用される場合があります。

granularity

収集する統計情報の細分化(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'APPROX_GLOBAL AND PARTITION' - 'GLOBAL AND PARTITION'に似ていますが、この場合、グローバルな統計情報がパーティション・レベルの統計情報から集計されます。このオプションでは、列の個別値の数および索引の個別キーの数を除く、すべての統計情報が集計されます。表レベルの列の既存ヒストグラムも集計されます。集計には統計のあるパーティションのみが使用され、正確なグローバル統計情報を取得するために、ユーザーはすべてのパーティションの統計情報があることを確認する必要があります。グローバルな統計情報は、partnameがNULLの場合または集計を実行できない場合(いずれかのパーティションの統計情報がない場合など)に収集されます。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

cascade

表の索引について統計情報を収集します。このオプションを使用することは、表の各索引でGATHER_INDEX_STATSプロシージャを実行するのと同じです。索引の統計情報を収集するかどうかをOracleが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これがデフォルトです。デフォルト値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattab

現在の統計情報の保存場所を示すユーザー統計表の識別子。

statid

stattab内の統計情報を関連付ける識別子(オプション)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

stattype

統計タイプ。許可されている値は、DATAのみです。

force

ロックされている場合でも、表の統計情報を収集します。

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)

ターゲット・オブジェクトに関するものは次のとおりです。

- 各ターゲット・オブジェクトの所有者および名前

- ターゲット・オブジェクト・タイプ(表、索引など)

- 開始時刻

- 終了時刻

- 完了ステータス

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名

- セッションID

- パラメータ値

- 操作が失敗した場合のエラー・メッセージ

ターゲット・オブジェクトに関するものは次のとおりです。

- ジョブ名

- バッチ詳細

- 推定コスト

- ターゲット・リスト内のランク

- ヒストグラムが収集された列

- 収集された拡張統計情報のリスト(ある場合)

- タスクが失敗した場合の追加のエラー詳細

レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合(CONCURRENTプリファレンスがオンの場合)のみ入力されます。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- テキスト(デフォルト)

戻り値

レポートを含むCLOBオブジェクト。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

REPORT_SINGLE_STATS_OPERATIONファンクション

このファンクションはマルチテナント環境で特定のプラガブル・データベース(PDB)の指定された操作のレポートを生成します(オプション)。

構文

DBMS_STATS.REPORT_SINGLE_STATS_OPERATIONS (
opid              NUMBER,
detail_level      VARCHAR2  DEFAULT 'TYPICAL',
format            VARCHAR2  DEFAULT 'TEXT'
container_id      NUMBER    DEFAULT NULL)
RETURN CLOB;

パラメータ

表155-89 REPORT_SINGLE_STATS_OPERATIONファンクションのパラメータ

パラメータ

説明

opid

操作ID

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)

ターゲット・オブジェクトに関するものは次のとおりです。

- 各ターゲット・オブジェクトの所有者および名前

- ターゲット・オブジェクト・タイプ(表、索引など)

- 開始時刻

- 終了時刻

- 完了ステータス

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名

- セッションID

- パラメータ値

- 操作が失敗した場合のエラー・メッセージ

ターゲット・オブジェクトに関するものは次のとおりです。

- ジョブ名

- バッチ詳細

- 推定コスト

- ターゲット・リスト内のランク

- ヒストグラムが収集された列

- 収集された拡張統計情報のリスト(ある場合)

- ターゲット・リストにオブジェクトを含める理由(自動統計情報収集操作タスクにのみ適用される)。

- タスクが失敗した場合の追加のエラー詳細

レポートのいくつかのフィールド(ジョブ名、推定タスク・コストなど)は、操作が同時実行された場合(CONCURRENTプリファレンスがオンの場合)のみ入力されます。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- TEXT (デフォルト)

container_id

この操作が実行されたプラガブル・データベース(PDB)のID。マルチテナント環境では、操作IDによって操作が一意に識別されません。つまり、各PDBの異なる操作に同じ操作IDが割り当てられている場合があります。したがって、マルチテナント環境では、PDB IDが指定されない場合、レポートに複数の操作が含まれる場合があります。通常の(CDBではない)データベース環境では、操作IDは操作ごとに一意です。

使用上の注意

このプロシージャを呼び出すには、ANALYZE ANY権限とANALYZE ANY DICTIONARY権限が必要です。

REPORT_STATS_OPERATIONSファンクション

このファンクションは、2つのタイムスタンプ(指定されている場合と指定されていない場合がある)の間に実行されるすべての統計操作のレポートを生成します。これを使用するとレポートの範囲を狭め、レポートに自動統計情報収集の実行のみを含めることができます。さらに、マルチテナント環境では、オプションとしてプラガブル・データベース(PDB)のIDを指定して、指定されたプラガブル・データベースからの統計操作のみが報告されるようにすることもできます。

構文

DBMS_STATS.REPORT_STATS_OPERATIONS (
detail_level       VARCHAR2 DEFAULT 'TYPICAL',
format             VARCHAR2 DEFAULT 'TEXT',
latestN            NUMBER DEFAULT NULL,
since              TIMESTAMP WITH TIME ZONE DEFAULT NULL,
until              TIMESTAMP WITH TIME ZONE DEFAULT NULl,
auto_only          BOOLEAN DEFAULT FALSE,
container_ids      DBMS_UTILITY.NUMBER_ARRAY DEFAULT DBMS_STATS.NULL_NUMTAB)
RETURN CLOB;

パラメータ

表155-90 REPORT_STATS_OPERATIONSファンクションのパラメータ

パラメータ

説明

detail_level

レポートの内容の詳細レベル

- BASIC: レポートには次のものが含まれます。
- 操作ID

- 操作名

- 操作のターゲット・オブジェクト

- 開始時刻

- 終了時刻

- 完了ステータス(成功、失敗など)

- TYPICAL: BASICレベルで提供される情報に加えて、レポートにはこの操作で統計情報が収集される個別ターゲット・オブジェクトが含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ターゲット・オブジェクトの合計数

- 正常に完了したオブジェクトの合計数

- 失敗したオブジェクトの合計数

- タイムアウトになったオブジェクトの合計数(自動統計情報収集にのみ適用される)。

- ALL: TYPICALレベルで提供される情報に加えて、レポートには各ターゲット・オブジェクトに関する追加情報が含まれています。具体的には、次のような操作関連の詳細情報が含まれます。
- ジョブ名(操作がジョブで実行された場合)。

- セッションID

- パラメータ値

- 操作が失敗した場合の追加のエラー詳細。

format

レポート・フォーマットは次のとおりです。

- XML

- HTML

- テキスト(デフォルト)

latestN

指定された時間ポイント(開始と終了)の間に実行された最新のN個の操作のみが含まれるようにレポートを制限します。デフォルト値はNULLで、当てはまるすべての操作がレポートされることを意味します。

since

レポートには、このタイムスタンプ後に開始された統計操作のみが含まれます。

until

レポートには、このタイムスタンプ前に終了した統計操作のみが含まれます。

auto_only

TRUEの場合、レポートには、自動統計情報収集ジョブのみが含まれます。

container_ids

マルチテナント環境では、1つ以上のプラガブル・データベース(PDB)が含まれています。container_idsはPDBの1組のIDを表し、指定されたPDBからの統計操作のみが報告されるようにします(マルチテナント環境のみに適用されます)。

使用上の注意

このプロシージャを呼び出すには、ANALYZE ANY権限とANALYZE ANY DICTIONARY権限が必要です。

例

container_ids入力パラメータのタイプはDBMS_UTILITY.NUMBER_ARRAYで、これはPL/SQL連想配列コレクションです。連想配列タイプでは、より柔軟性な、harvals表のように編成されたエントリが許可されていますが、このファンクションは、container_idsを正規表コレクション(最初のIDが索引1にあり、最後のIDが索引container_ids.countにある。2つのID間に空の配列スロットは存在しない)として処理します。3つのコンテナIDの例を次に示します。

DECLARE
conid_tab  DBMS_UTILITY.NUMBER_ARRAY;
report clob;
BEGIN
conid_tab(1) := 124;
conid_tab(2) := 63;
conid_tab(3) := 98;
report := DBMS_STATS.REPORT_STATS_OPERATIONS (container_ids => conid_tab);
END;

RESET_GLOBAL_PREF_DEFAULTSプロシージャ

このプロシージャは、グローバル・プリファレンス(CASCADE、ESTIMATE_PERCENT、GRANULARITYなど)をデフォルト値に設定します。また、SET_GLOBAL_PREFSプロシージャによって設定されたグローバル・プリファレンスを元に戻します。

構文

DBMS_STATS.RESET_GLOBAL_PREF_DEFAULTS;

使用上の注意

このプロシージャを呼び出すには、ANALYZE ANY権限とANALYZE ANY DICTIONARY権限が必要です。

RESET_PARAM_DEFAULTSプロシージャ

注意:
テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、RESET_GLOBAL_PREF_DEFAULTSプロシージャを使用してください。
「推奨されないサブプログラム」も参照してください。

このプロシージャは、すべてのパラメータのデフォルト値をOracleの推奨値にリセットします。

構文

DBMS_STATS.RESET_PARAM_DEFAULTS;

RESTORE_DATABASE_STATSプロシージャ

このプロシージャは、データベース内のすべての表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。

構文

DBMS_STATS.RESTORE_DATABSE_STATS(
as_of_timestamp        TIMESTAMP WITH TIME ZONE,
force                  BOOLEAN DEFAULT FALSE,
no_invalidate          BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));

パラメータ

表155-91 RESTORE_DATABASE_STATSプロシージャのパラメータ

パラメータ

説明

as_of_timestamp

統計情報をリストアするタイムスタンプ。

force

統計情報は、ロックされていてもリストアされます。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 値が無効または矛盾しています。

ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。

RESTORE_DICTIONARY_STATSプロシージャ

このプロシージャは、すべてのディクショナリ表('SYS'、'SYSTEM'およびRDBMSコンポーネントのスキーマ)の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。

構文

DBMS_STATS.RESTORE_DICTIONARY_STATS(
as_of_timestamp        TIMESTAMP WITH TIME ZONE,
force                  BOOLEAN DEFAULT FALSE,
no_invalidate          BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));

パラメータ

表155-92 RESTORE_DICTIONARY_STATSプロシージャのパラメータ

パラメータ

説明

as_of_timestamp

統計情報をリストアするタイムスタンプ。

force

統計情報は、ロックされていてもリストアされます。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

使用上の注意

このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 値が無効または矛盾しています。

ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。

RESTORE_FIXED_OBJECTS_STATSプロシージャ

このプロシージャは、すべての固定表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。

構文

DBMS_STATS.RESTORE_FIXED_OBJECTS_STATS(
as_of_timestamp        TIMESTAMP WITH TIME ZONE,
force                  BOOLEAN DEFAULT FALSE,
no_invalidate          BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));

パラメータ

表155-93 RESTORE_FIXED_OBJECTS_STATSプロシージャのパラメータ

パラメータ

説明

as_of_timestamp

統計情報をリストアするタイムスタンプ。

force

統計情報は、ロックされていてもリストアされます。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

使用上の注意

このプロシージャを実行するには、SYSDBAまたはANALYZE ANY DICTIONARYシステム権限が必要です。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 値が無効または矛盾しています。

ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。

RESTORE_SCHEMA_STATSプロシージャ

このプロシージャは、スキーマ内のすべての表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。

構文

DBMS_STATS.RESTORE_SCHEMA_STATS(
ownname                VARCHAR2,
as_of_timestamp        TIMESTAMP WITH TIME ZONE,
force                  BOOLEAN DEFAULT FALSE,
no_invalidate          BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));

パラメータ

表155-94 RESTORE_SCHEMA_STATSプロシージャのパラメータ

パラメータ

説明

ownname

統計情報をリストアする表のスキーマ。

as_of_timestamp

統計情報をリストアするタイムスタンプ。

force

統計情報は、ロックされていてもリストアされます。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 値が無効または矛盾しています。

ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

RESTORE_SYSTEM_STATSプロシージャ

このプロシージャは、システムの統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。

構文

DBMS_STATS.RESTORE_SCHEMA_STATS(
as_of_timestamp        TIMESTAMP WITH TIME ZONE);

パラメータ

表155-95 RESTORE_SYSTEM_STATSプロシージャのパラメータ

パラメータ

説明

as_of_timestamp

統計情報をリストアするタイムスタンプ。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 値が無効または矛盾しています。

ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。

使用上の注意

このプロシージャを実行するには、GATHER_SYSTEM_STATISTICSロールが必要です。

RESTORE_TABLE_STATSプロシージャ

このプロシージャは、表の統計情報を、指定したタイムスタンプ(as_of_timestamp)でリストアします。このプロシージャは、索引および列に関連付けられた統計情報もリストアします。指定したタイムスタンプでの表の統計情報がロックされている場合、プロシージャはその統計情報をロックします。プロシージャは、ユーザー定義の統計情報をリストアしません。

構文

DBMS_STATS.RESTORE_TABLE_STATS (
ownname                   VARCHAR2,
tabname                   VARCHAR2,
as_of_timestamp           TIMESTAMP WITH TIME ZONE,
restore_cluster_index     BOOLEAN DEFAULT FALSE,
force                     BOOLEAN DEFAULT FALSE,
no_invalidate             BOOLEAN DEFAULT to_no_invalidate_type
(GET_PARAM('NO_INVALIDATE')));

パラメータ

表155-96 RESTORE_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

統計情報をリストアする表のスキーマ。

tabname

表の名前。

as_of_timestamp

統計情報をリストアするタイムスタンプ。

restore_cluster_index

表がクラスタの一部であるときに、このパラメータがTRUEに設定されている場合は、クラスタ索引の統計情報をリストアします。

force

統計情報は、表の統計情報がロックされていてもリストアされます。指定したタイムスタンプでの表の統計情報がロックされていない場合は、その統計情報をロック解除します。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 値が無効または矛盾しています。

ORA-20006: 統計情報をリストアできません。統計履歴を使用できません。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

SEED_COL_USAGEプロシージャ

このプロシージャは、指定したSQLチューニング・セットで列使用情報を文からシードします。指定したSQLチューニング・セットでSQL文を繰り返し、それらをコンパイルして、その文に表示される列に関する列使用情報をシードします。システムのワークロードを指定の時間にわたって監視し、監視ウィンドウでの処理中に実行された文に表示される列に基づいて、列の使用方法の情報をシードできます。

構文

DBMS_STATS.SEED_COL_USAGE (
sqlset_name    IN    VARCHAR2,
owner_name     IN    VARCHAR2,
time_limit     IN    POSITIVE DEFAULT NULL);

パラメータ

表155-97 SEED_COL_USAGEプロシージャのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

owner_name

SQLチューニング・セットの所有者。

time_limit

時間制限(分)。

例外

ORA-20000: 権限が不十分です。

使用上の注意

このプロシージャを呼び出すには、ANALYZE ANY権限とANALYZE ANY DICTIONARY権限が必要です。

このプロシージャは、列のグループもレポートします。記録される列のグループの拡張子は、CREATE_EXTENDED_STATSファンクションのプロシージャを使用して作成できます。sqlset_nameおよびowner_nameがNULLの場合、次のtime_limit秒にシステムで実行される文に関する列(グループ)使用情報が記録されます。

例

次の例では、5分または300秒にわたって監視が実行されます。

BEGIN
DBMS_STATS.SEED_COL_USAGE (null,null,300);
END;

SET_COLUMN_STATSプロシージャ

このプロシージャは、列に関連する情報を設定します。ユーザー定義の統計情報を処理するこのバージョンでは、指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプがNULLの場合は、索引または列に関連付けられている統計タイプが格納されます。

構文

DBMS_STATS.SET_COLUMN_STATS (
ownname       VARCHAR2,
tabname       VARCHAR2,
colname       VARCHAR2,
partname      VARCHAR2 DEFAULT NULL,
stattab       VARCHAR2 DEFAULT NULL,
statid        VARCHAR2 DEFAULT NULL,
distcnt       NUMBER DEFAULT NULL,
density       NUMBER DEFAULT NULL,
nullcnt       NUMBER DEFAULT NULL,
srec          StatRec DEFAULT NULL,
avgclen       NUMBER DEFAULT NULL,
flags         NUMBER DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force         BOOLEAN DEFAULT FALSE);

ユーザー定義統計情報には、次の構文を使用します。

DBMS_STATS.SET_COLUMN_STATS (
ownname       VARCHAR2,
tabname       VARCHAR2,
colname       VARCHAR2,
partname      VARCHAR2 DEFAULT NULL,
stattab       VARCHAR2 DEFAULT NULL,
statid        VARCHAR2 DEFAULT NULL,
ext_stats     RAW,
stattypown    VARCHAR2 DEFAULT NULL,
stattypname   VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
force         BOOLEAN DEFAULT FALSE);

パラメータ

表155-98 SET_COLUMN_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

列が所属している表の名前。

colname

列または拡張の名前。

partname

統計情報を格納する表パーティションの名前。表がパーティション化されていて、partnameがNULLの場合、統計情報はグローバルな表レベルで格納されます。

stattab

統計情報の格納場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリ内に直接格納されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

ext_stats

ユーザー定義の統計情報

stattypown

統計タイプのスキーマ。

stattypname

統計タイプの名前。

distcnt

個別値の数。

density

列密度。この値がNULLで、distcntがNULLでない場合、密度はdistcntから導出されます。

nullcnt

NULLの数

srec

PREPARE_COLUMN_VALUESまたはGET_COLUMN_STATSへのコールで入力されたStatRec構造。

avgclen

列の平均長(バイト単位)。

flags

Oracle内部で使用(NULLのままにします)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

force

列の統計情報がロックされている場合でも、この値を設定します。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効または矛盾しています。

ORA-20005: オブジェクト統計はロックされています

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

SET_DATABASE_PREFSプロシージャ

このプロシージャは、Oracleによって所有されている表を除き、すべての表の統計プリファレンスを設定するために使用されます。これらの表は、add_sysパラメータにTRUEを渡すことによって含めることができます。

構文

DBMS_STATS.SET_DATABASE_PREFS (
pname            IN   VARCHAR2,
pvalue           IN   VARCHAR2,
add_sys          IN   BOOLEAN DEFAULT FALSE);

パラメータ

表155-99 SET_DATABASE_PREFSプロシージャのパラメータ

パラメータ

説明

pname

プリファレンスの名前。次のプリファレンスの既存の値は削除でき、デフォルトのプリファレンス値が使用されます。

- CASCADE

- DEGREE

- ESTIMATE_PERCENT

- METHOD_OPT

- NO_INVALIDATE

- GRANULARITY

- PUBLISH

- INCREMENTAL

- INCREMENTAL_STALENESS

- INCREMENTAL_LEVEL

- STALE_PERCENT

- GLOBAL_TEMP_TABLE_STATS

- TABLE_CACHED_BLOCKS

- OPTIONS

.

CASCADE - 指定した値によって、索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

.

DEGREE - 指定した値によって、統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 指定した値によって、推定する行のパーセントが決定されます。有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。

method_opt

グローバル、スキーマ、データベース、またはディクショナリの各レベルでプリファレンスを設定する場合は、'FOR ALL'構文のみが使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。値を変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

.

NO_INVALIDATE - 指定した値によって、統計情報を収集する表の依存カーソルの無効化が制御されます。TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。

.

GRANULARITY - 指定した値によって、収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

.

PUBLISH - 指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。Oracle Database 11gリリース1(11.1)より前のバージョンでは、統計情報収集ジョブが完了すると、新しい統計情報は自動的にディクショナリ表にパブリッシュされます。現在、ユーザーは、統計情報を収集し、すぐにはパブリッシュしないようにできるようになりました。これによって、DBAは新しい統計情報をパブリッシュする前にテストできます。

.

INCREMENTAL - 指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。パーティション表では、多くの場合、新しいデータを新しいパーティションにロードします。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。Oracleでは、次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。

- パーティション表のINCREMENTALの値がTRUEに設定されている場合

- パーティション表のPUBLISHの値がTRUEに設定されている場合

- 表で統計情報を収集する際に、ユーザーがESTIMATE_PERCENTにAUTO_SAMPLE_SIZE、GRANULARITYにAUTOを指定した場合

パーティション表のINCREMENTALの値がFALSE(デフォルト値)に設定されている場合は、リソースが集中的に使用され、時間がかかる操作を大きい表に対して行うグローバルな統計情報のメンテナンスに、全表スキャンが使用されます。

INCREMENTAL_LEVEL: INCREMENTALプリファレンスがTRUEに設定されいている場合、この値はどのシノプシスを収集するかを制御します。これは、次の2つの値を取ります。

- TABLE: 表レベルのシノプシスが収集されます。これは、この表をパーティションと交換する場合に使用されます。この表でGATHER_TABLE_STATSを実行(INCREMENTALをTRUEに、INCREMENTAL_LEVELをTABLEに設定)してから交換できます。その結果、表レベルのシノプシスがこの表で収集されます(現在、事前に宛先指定されていない表の表レベルのシノプシスのみがサポートされている)。交換が発生すると、パーティションに、交換前の表の表レベルのシノプシスが存在するようになります。このプリファレンス値は、SET_TABLE_PREFSプロシージャでのみ使用できます。SET_GLOBAL/DATABASE/SCHEMA_PREFSプロシージャでは使用できません。

- PARTITION: パーティション・レベルのシノプシスが収集されます。これがデフォルト値です。PARTITIONがパーティション化されていない表で設定された場合、シノプシスは収集されません。

INCREMENTAL_STALENESS: この値は、パーティションまたはサブパーティションを失効として決定する方法を制御します。これは、'USE_STALE_PERCENT'、'USE_LOCKED_STATS'などの複数の列挙値を取ります。

- USE_STALE_PERCENT: DMLの変更がSTALE_PERCENTプリファレンスの値を下回る場合、パーティション/サブパーティションが失効しているとはみなされません。

- USE_LOCKED_STATS: DML変更に関係なく、ロックされたパーティションまたはサブパーティションの統計情報は失効とみなされません。

- NULL: これはデフォルト値です。パーティションまたはサブパーティションにDML変更があるかぎり、これらが失効とみなされることを意味します。デフォルト値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報と必ず同じになります。デフォルト値以外の値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報より精度が劣る場合があります。

.

STALE_PERCENT - 指定した値によって、表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。stale_percentの有効なドメインは、負数以外の数です。デフォルト値は10で、10%を超える変更がある表が失効とみなされることを意味します。

GLOBAL_TEMP_TABLE_STATS: グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。これは次の2つの値を取ります。

- SHARED: すべてのセッションで同じ統計セットが参照されます。

- SESSION: グローバルな一時表でGATHER_TABLE_STATSプロシージャにより収集された統計はセッション固有であるため、統計収集プロセスと同じセッションで発行された問合せのみで使用されます。セッション固有の統計情報は、セッション終了時に削除されます。

TABLE_CACHED_BLOCKS: 索引のクラスタリング要因の収集時に表のバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)。

OPTIONS: GATHER_TABLE_STATSプロシージャで使用されるoptionsパラメータを判別します。プリファレンスの値は、次の2つです。

- GATHER (デフォルト): 表中のすべてのオブジェクトの統計を収集します。

- GATHER AUTO: 必要な統計をすべて自動的に収集します。バルク・ロードが実行される表にGATHER AUTOを設定することをお薦めします。バルク・ロードの間に統計が収集されます。これは、INCREMENTALが動作していない表のみに当てはまります。これらの表のGATHER_TABLE_STATSプロシージャにGATHER AUTOオプションを指定すると、すでに新規の統計の再収集はスキップされます。

pvalue

プリファレンスの値。NULLが指定されている場合は、Oracleのデフォルト値が設定されます。

add_sys

値TRUEを指定すると、Oracle所有の表が含まれます。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- 引数は両方ともVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲みます。

例

DBMS_STATS.SET_DATABASE_PREFS('CASCADE', 'DBMS_STATS.AUTO_CASCADE');
DBMS_STATS.SET_DATABASE_PREFS('ESTIMATE_PERCENT','9');
DBMS_STATS.SET_DATABASE_PREFS('DEGREE','99');

SET_GLOBAL_PREFSプロシージャ

このプロシージャは、グローバルな統計プリファレンスを設定するために使用されます。

構文

DBMS_STATS.SET_GLOBAL_PREFS (
pname     IN   VARCHAR2,
pvalue    IN   VARCHAR2);

パラメータ

表155-100 SET_GLOBAL_PREFSプロシージャのパラメータ

パラメータ

説明

pname

プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。

- AUTOSTATS_TARGET

- CASCADE

- CONCURRENT

- DEGREE

- ESTIMATE_PERCENT

- GLOBAL_TEMP_TABLE_STATS

- GRANULARITY

- INCREMENTAL

- INCREMENTAL_LEVEL

- INCREMENTAL_STALENESS

- METHOD_OPT

- NO_INVALIDATE

- PUBLISH

- STALE_PERCENT

- TABLE_CACHED_BLOCKS

- OPTIONS

AUTOSTATS_TARGET: このプリファレンスは、自動統計情報収集にのみ適用されます。このパラメータの値は、統計情報収集に必要なオブジェクトを制御します。値は次のいずれかとなります。

- 'ALL': システム内のすべてのオブジェクトに関して収集された統計情報

- 'ORACLE': Oracle所有のすべてのオブジェクトに関して収集された統計情報

- 'AUTO': 統計情報を収集するオブジェクトをOracleが指定します。

.

CASCADE - 索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

CONCURRENT: このプリファレンスは、統計情報が複数のオブジェクトで同時に収集されるか、一度に1オブジェクトずつ順次収集されるかを決定します。

- 'MANUAL': 並行性は、手動統計情報収集に対してのみオンになります。

- 'AUTOMATIC': 並行性は、自動統計情報収集に対してのみオンになります。

- 'ALL': 並行性は、自動と手動の両方の統計情報収集に対してオンになります。

- 'OFF': 並行性は、手動と自動の両方の統計情報に対してオフになります。

.

DEGREE - 統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 推定する行のパーセントが決定されます。有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。

GLOBAL_TEMP_TABLE_STATS: このプリファレンスは、SHAREDまたはSESSION(デフォルト)の2つの値を取ります。

- SHARED: すべてのセッションで同じ統計セットが参照されます。

- SESSION: グローバルな一時表でGATHER_TABLE_STATSプロシージャにより収集された統計はセッション固有であるため、統計収集プロセスと同じセッションで発行された問合せのみで使用されます。セッション固有の統計情報は、セッション終了時に削除されます。

.

GRANULARITY - 収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

.

INCREMENTAL - 指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。パーティション表では、多くの場合、新しいデータを新しいパーティションにロードします。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。Oracleでは、次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。

- パーティション表のINCREMENTALの値がTRUEに設定されている場合

- パーティション表のPUBLISHの値がTRUEに設定されている場合

- 表で統計情報を収集する際に、ユーザーがESTIMATE_PERCENTにAUTO_SAMPLE_SIZE、GRANULARITYにAUTOを指定した場合

パーティション表のINCREMENTALの値がFALSE(デフォルト値)に設定されている場合は、リソースが集中的に使用され、時間がかかる操作を大きい表に対して行うグローバルな統計情報のメンテナンスに、全表スキャンが使用されます。

.

METHOD_OPT - 指定した値によって、列統計収集およびヒストグラムの作成が制御されます。次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
- column_name: 列の名前。
- extension: (column_name, colume_name [, ...])の書式の列グループまたは式。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。

.

NO_INVALIDATE - 統計情報を収集する表の依存カーソルの無効化が制御されます。TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。

.

PUBLISH - 指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。Oracle Database 11gリリース1(11.1)より前のバージョンでは、統計情報収集ジョブが完了すると、新しい統計情報は自動的にディクショナリ表にパブリッシュされます。現在、ユーザーは、統計情報を収集し、すぐにはパブリッシュしないようにできるようになりました。これによって、DBAは新しい統計情報をパブリッシュする前にテストできます。

.

STALE_PERCENT - 表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。stale_percentの有効なドメインは、負数以外の数です。デフォルト値は10%です。stale_percentを0(ゼロ)に設定すると、表内の行が変更されるたびに、AUTO STATS収集ジョブによって、この表の統計情報が収集されることに注意してください。

TABLE_CACHED_BLOCKS: 索引のクラスタリング要因の収集時に表のバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)。

OPTIONS: GATHER_TABLE_STATSプロシージャで使用されるoptionsパラメータを判別します。プリファレンスの値は、次の2つです。

- GATHER (デフォルト): 表中のすべてのオブジェクトの統計を収集します。

- GATHER AUTO: 必要な統計をすべて自動的に収集します。バルク・ロードが実行される表にGATHER AUTOを設定することをお薦めします。バルク・ロードの間に統計が収集されます。これは、INCREMENTALが動作していない表のみに当てはまります。これらの表のGATHER_TABLE_STATSプロシージャにGATHER AUTOオプションを指定すると、すでに新規の統計の再収集はスキップされます。

pvalue

プリファレンスの値。NULLが指定されている場合は、Oracleのデフォルト値が設定されます。

例外

ORA-20000: 権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

- この設定は、分析する表に対してプリファレンスが指定されていない場合にのみ有効です。

- このプロシージャを実行するには、SYSDBAロールまたはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- 引数は両方ともVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲みます。

例

DBMS_STATS.SET_GLOBAL_PREFS('ESTIMATE_PERCENT','9');
DBMS_STATS.SET_GLOBAL_PREFS('DEGREE','99');

SET_INDEX_STATSプロシージャ

このプロシージャは、索引に関連する情報を設定します。ユーザー定義の統計情報を処理するこのバージョンでは、指定の統計タイプは、実際のユーザー定義の統計情報に加え、ディクショナリに格納されるタイプでもあります。この統計タイプがNULLの場合は、索引または列に関連付けられている統計タイプが格納されます。

構文

DBMS_STATS.SET_INDEX_STATS (
ownname       VARCHAR2,
indname       VARCHAR2,
partname      VARCHAR2  DEFAULT NULL,
stattab       VARCHAR2  DEFAULT NULL,
statid        VARCHAR2  DEFAULT NULL,
numrows       NUMBER    DEFAULT NULL,
numlblks      NUMBER    DEFAULT NULL,
numdist       NUMBER    DEFAULT NULL,
avglblk       NUMBER    DEFAULT NULL,
avgdblk       NUMBER    DEFAULT NULL,
clstfct       NUMBER    DEFAULT NULL,
indlevel      NUMBER    DEFAULT NULL,
flags         NUMBER    DEFAULT NULL,
statown       VARCHAR2  DEFAULT NULL,
no_invalidate BOOLEAN   DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
guessq        NUMBER    DEFAULT NULL,
cachedblk     NUMBER    DEFAULT NULL,
cachehit      NUMBER    DEFUALT NULL,
force         BOOLEAN   DEFAULT FALSE);

ユーザー定義統計情報には、次の構文を使用します。

DBMS_STATS.SET_INDEX_STATS (
ownname       VARCHAR2,
indname       VARCHAR2,
partname      VARCHAR2  DEFAULT NULL,
stattab       VARCHAR2  DEFAULT NULL,
statid        VARCHAR2  DEFAULT NULL,
ext_stats     RAW,
stattypown    VARCHAR2 DEFAULT NULL,
stattypname   VARCHAR2 DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type(
get_param('NO_INVALIDATE')),
cachedblk     NUMBER    DEFAULT NULL,
cachehit      NUMBER    DEFUALT NULL,
force         BOOLEAN   DEFAULT FALSE);

パラメータ

表155-101 SET_INDEX_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

indname

索引の名前。

partname

統計情報を格納する索引パーティションの名前。索引がパーティション化されていて、partnameがNULLの場合、統計情報はグローバルな索引レベルで格納されます。

stattab

統計情報の格納場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリ内に直接格納されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

ext_stats

ユーザー定義の統計情報

stattypown

統計タイプのスキーマ。

stattypname

統計タイプの名前。

numrows

索引(パーティション)内の行数。

numlblks

索引(パーティション)内のリーフ・ブロックの数。

numdist

索引(パーティション)内の個別キーの数。

avglblk

この索引(パーティション)について各個別キーが出現するリーフ・ブロックの平均整数値。この値が提供されない場合、この値はnumlblksとnumdistから導出されます。

avgdblk

この索引(パーティション)について個別キーが指す表内のデータ・ブロックの平均整数値。この値が提供されない場合、この値はclstfctとnumdistから導出されます。

clstfct

all_indexesビューのclustering_factor列の説明を参照してください。

indlevel

索引(パーティション)の高さ。

flags

Oracle内部で使用(NULLのままにします)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

guessq

推測品質。all_indexesビューのpct_direct_access列の説明を参照してください。

cachedblk

セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。

cachehit

セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。

force

索引の統計情報がロックされている場合でも、この値を設定します。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。

- Oracleは常にcachedblkおよびcachehitを維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。

- オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。

- 自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。

- オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。

- システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です

ORA-20005: オブジェクト統計はロックされています

SET_PARAMプロシージャ

注意:
テクノロジが改良されたため、このサブプログラムは使用されなくなりました(このサブプログラムは、下位互換性を維持する目的でのみ保持されています)。この場合は、SET_GLOBAL_PREFSプロシージャを使用してください。
「推奨されないサブプログラム」も参照してください。

このプロシージャは、DBMS_STATSプロシージャのパラメータのデフォルト値を設定します。GET_PARAM ファンクションを使用して、パラメータの現在のデフォルト値を取得できます。

構文

DBMS_STATS.SET_PARAM (
pname      IN    VARCHAR2,
pval       IN    VARCHAR2);

パラメータ

表155-102 SET_PARAMプロシージャのパラメータ

パラメータ

説明

pname

パラメータ名。次のパラメータのデフォルト値を設定できます。

- CASCADE: SET_PARAMで設定したCASCADEのデフォルト値は、プロシージャのエクスポート/インポートでは使用しません。収集プロシージャのみが使用します。

- DEGREE

- ESTIMATE_PERCENT

- METHOD_OPT

- NO_INVALIDATE

- GRANULARITY

- AUTOSTATS_TARGET: このパラメータは、自動統計情報収集にのみ適用されます。このパラメータの値は、統計情報収集に必要なオブジェクトを制御します(「pval」を参照)。

pval

パラメータ値。NULLが指定されている場合は、Oracle指定のデフォルト値が設定されます。pnameがAUTOSTATS_TARGETの場合、有効な値は次のとおりです。

- 'ALL': システム内のすべてのオブジェクトに関する統計情報を収集します。

- 'ORACLE': Oracle所有のすべてのオブジェクトに関する統計情報を収集します。

- 'AUTO': 統計情報を収集するオブジェクトをOracleが指定します。

使用上の注意

- このプロシージャを実行するには、SYSDBA、またはANALYZE ANY DICTIONARYとANALYZE ANYの両方のシステム権限が必要です。

- 引数は両方ともVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲む必要があることに注意してください。

- NULLと'NULL'の違いにも注意してください。

- 引用符なしのNULLの場合、パラメータはOracle推奨の値に設定されます。

- 引用符で囲んだ'NULL'の場合、パラメータの値はNULLに設定されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

例

DBMS_STATS.SET_PARAM('CASCADE','DBMS_STATS.AUTO_CASCADE');
DBMS_STATS.SET_PARAM('ESTIMATE_PERCENT','5');
DBMS_STATS.SET_PARAM('DEGREE','NULL');

SET_PROCESSING_RATEプロシージャ

このプロシージャは、指定した操作の処理速度の値を設定します。

構文

DBMS_STATS.SET_PROCESSING_RATE (
opname      IN    VARCHAR2,
procrate    IN    NUMBER);

パラメータ

表155-103 SET_PROCESSING_RATEプロシージャのパラメータ

パラメータ

説明

opname

操作の名前。

procrate

処理速度。有効な値は次のとおりです。ALL、CPU、CPU_ACCESS、CPU_AGGR、CPU_BYTES_PER_SEC、CPU_FILTER、CPU_GBY、CPU_HASH_JOIN、CPU_JOIN、CPU_NL_JOIN、CPU_RANDOM_ACCESS、CPU_SEQUENTIAL_ACCESS、CPU_SM_JOIN、CPU_SORT、IO、IO_ACCESS、IO_BYTES_PER_SEC、IO_RANDOM_ACCESS、IO_SEQUENTIAL_ACCESS、HASH、AGGR、MEMCMP、MEMCPY

使用上の注意

- このプロシージャを実行するには、OPTIMIZER_PROCESSING_RATEロールが必要です。

- AUTO DOPは、これらの処理率を使用して、SQL文の最適な並列度を決定します。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

SET_SCHEMA_PREFSプロシージャ

このプロシージャは、指定した所有者名で所有されているすべての表の統計プリファレンスを設定するために使用されます。

構文

DBMS_STATS.SET_SCHEMA_PREFS (
ownname   IN   VARCHAR2,
pname     IN   VARCHAR2,
pvalue    IN   VARCHAR2);

パラメータ

表155-104 SET_SCHEMA_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

pname

プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。

- CASCADE

- DEGREE

- ESTIMATE_PERCENT

- GLOBAL_TEMP_TABLE_STATS

- GRANULARITY

- INCREMENTAL

- INCREMENTAL_LEVEL

- INCREMENTAL_STALENESS

- METHOD_OPT

- NO_INVALIDATE

- PUBLISH

- STALE_PERCENT

- TABLE_CACHED_BLOCKS

- OPTIONS

.

CASCADE - 索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

.

DEGREE - 統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 推定する行のパーセントが決定されます。有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。

GLOBAL_TEMP_TABLE_STATS: このプリファレンスは、SHAREDまたはSESSION(デフォルト)の2つの値を取ります。

- SHARED: すべてのセッションで同じ統計セットが参照されます。

- SESSION: グローバルな一時表でGATHER_TABLE_STATSプロシージャにより収集された統計はセッション固有であるため、統計収集プロセスと同じセッションで発行された問合せのみで使用されます。セッション固有の統計情報は、セッション終了時に削除されます。

.

GRANULARITY - 収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

.

INCREMENTAL - 指定した値によって、全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどうかが決定されます。パーティション表では、多くの場合、新しいデータを新しいパーティションにロードします。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。Oracleでは、次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。

- パーティション表のINCREMENTALの値がTRUEに設定されている場合

- パーティション表のPUBLISHの値がTRUEに設定されている場合

- 表で統計情報を収集する際に、ユーザーがESTIMATE_PERCENTにAUTO_SAMPLE_SIZE、GRANULARITYにAUTOを指定した場合

パーティション表のINCREMENTALの値がFALSE(デフォルト値)に設定されている場合は、リソースが集中的に使用され、時間がかかる操作を大きい表に対して行うグローバルな統計情報のメンテナンスに、全表スキャンが使用されます。

INCREMENTAL_LEVEL: INCREMENTALプリファレンスがTRUEに設定されいている場合、この値はどのシノプシスを収集するかを制御します。これは、次の2つの値を取ります。

- TABLE: 表レベルのシノプシスが収集されます。これは、この表をパーティションと交換する場合に使用されます。この表でGATHER_TABLE_STATSを実行(INCREMENTALをTRUEに、INCREMENTAL_LEVELをTABLEに設定)してから交換できます。その結果、表レベルのシノプシスがこの表で収集されます(現在、事前に宛先指定されていない表の表レベルのシノプシスのみがサポートされている)。交換が発生すると、パーティションに、交換前の表の表レベルのシノプシスが存在するようになります。このプリファレンス値は、SET_TABLE_PREFSプロシージャでのみ使用できます。SET_GLOBAL/DATABASE/SCHEMA_PREFSプロシージャでは使用できません。

- PARTITION: パーティション・レベルのシノプシスが収集されます。これがデフォルト値です。PARTITIONがパーティション化されていない表で設定された場合、シノプシスは収集されません。

INCREMENTAL_STALENESS: この値は、パーティションまたはサブパーティションを失効として決定する方法を制御します。これは、'USE_STALE_PERCENT'、'USE_LOCKED_STATS'などの複数の列挙値を取ります。

- USE_STALE_PERCENT: DMLの変更がSTALE_PERCENTプリファレンスの値を下回る場合、パーティション/サブパーティションが失効しているとはみなされません。

- USE_LOCKED_STATS: DML変更に関係なく、ロックされたパーティションまたはサブパーティションの統計情報は失効とみなされません。

- NULL: これはデフォルト値です。パーティションまたはサブパーティションにDML変更があるかぎり、これらが失効とみなされることを意味します。デフォルト値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報と必ず同じになります。デフォルト値以外の値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報より精度が劣る場合があります。

.

METHOD_OPT - 指定した値によって、列統計収集およびヒストグラムの作成が制御されます。次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
- column_name: 列の名前。
- extension: (column_name, colume_name [, ...])の書式の列グループまたは式。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。

.

NO_INVALIDATE - 統計情報を収集する表の依存カーソルの無効化が制御されます。TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。

.

PUBLISH - 指定した値によって、収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。Oracle Database 11gリリース1(11.1)より前のバージョンでは、統計情報収集ジョブが完了すると、新しい統計情報は自動的にディクショナリ表にパブリッシュされます。現在、ユーザーは、統計情報を収集し、すぐにはパブリッシュしないようにできるようになりました。これによって、DBAは新しい統計情報をパブリッシュする前にテストできます。

.

STALE_PERCENT - 表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。stale_percentの有効なドメインは、負数以外の数です。デフォルト値は10%です。stale_percentを0(ゼロ)に設定すると、表内の行が変更されるたびに、AUTO STATS収集ジョブによって、この表の統計情報が収集されることに注意してください。

TABLE_CACHED_BLOCKS: 索引のクラスタリング要因の収集時に表のバッファ・キャッシュにキャッシュされる平均ブロック数(予測値)。

OPTIONS: GATHER_TABLE_STATSプロシージャで使用されるoptionsパラメータを判別します。プリファレンスの値は、次の2つです。

- GATHER (デフォルト): 表中のすべてのオブジェクトの統計を収集します。

- GATHER AUTO: 必要な統計をすべて自動的に収集します。バルク・ロードが実行される表にGATHER AUTOを設定することをお薦めします。バルク・ロードの間に統計が収集されます。これは、INCREMENTALが動作していない表のみに当てはまります。これらの表のGATHER_TABLE_STATSプロシージャにGATHER AUTOオプションを指定すると、すでに新規の統計の再収集はスキップされます。

pvalue

プリファレンスの値。NULLが指定されている場合は、Oracleのデフォルト値が設定されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、所有者として接続するか、あるいはSYSDBA権限またはANALYZE ANYシステム権限を持っている必要があります。

- 引数は両方ともVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲みます。

例

DBMS_STATS.SET_SCHEMA_PREFS('SH','CASCADE', 'DBMS_STATS.AUTO_CASCADE');
DBMS_STATS.SET_SCHEMA_PREFS('SH' 'ESTIMATE_PERCENT','9');
DBMS_STATS.SET_SCHEMA_PREFS('SH', 'DEGREE','99');

SET_SYSTEM_STATSプロシージャ

このプロシージャは、システムの統計情報を設定します。

構文

DBMS_STATS.SET_SYSTEM_STATS (
pname          VARCHAR2,
pvalue         NUMBER,
stattab   IN   VARCHAR2 DEFAULT NULL,
statid    IN   VARCHAR2 DEFAULT NULL,
statown   IN   VARCHAR2 DEFAULT NULL);

パラメータ

表155-105 SET_SYSTEM_STATSプロシージャのパラメータ

パラメータ

説明

pname

取得するパラメータ名。次の値の1つが入ります。

- iotfrspeed - I/O転送速度(ミリ秒当たりのバイト数単位)

- ioseektim - シーク時間+待機時間+オペレーティング・システムのオーバーヘッド時間(ミリ秒単位)

- sreadtim - シングル・ブロックの読込み(ランダム読込み)平均時間(ミリ秒単位)

- mreadtim - mbrcブロックを1回に読み込む(順次読取り)平均時間(ミリ秒単位)

- cpuspeed - 1秒当たりの平均CPUサイクル数(100万単位)であり、ワークロードの統計情報('INTERVAL'か、'START'と'STOP'の両方のオプションを使用して収集)に対して取得したもの

- cpuspeednw: 1秒当たりの平均CPUサイクル数(100万単位)であり、noworkloadの統計情報('NOWORKLOAD'オプションを使用して収集)に対して取得したもの。

- mbrc - 順次読取りのマルチブロック読込み平均数(ブロック単位)

- maxthr - 最大I/Oシステム・スループット(1秒当たりのバイト数単位)

- slavethr - 平均スレーブI/Oスループット(1秒当たりのバイト数単位)

pvalue

取得するパラメータ値。

stattab

統計情報を取得するユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリから取得されます。

statid

stattabに保存された統計情報に関連付けられた、オプションの識別子。

statown

stattabを含んだスキーマ(現在のスキーマと異なる場合)。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です

ORA-20002: ユーザー統計表が不正です。アップグレードする必要があります。

ORA-20003: システムの統計情報を設定できません。

ORA-20004: パラメータが存在しません。

使用上の注意

このプロシージャを実行するには、GATHER_SYSTEM_STATISTICSロールが必要です。

SET_TABLE_PREFSプロシージャ

このプロシージャは、指定したスキーマ内の指定した表の統計プリファレンスを設定するために使用されます。

構文

DBMS_STATS.SET_TABLE_PREFS (
ownname    IN  VARCHAR2,
tabname    IN  VARCHAR2,
pname      IN  VARCHAR2,
pvalue     IN  VARCHAR2);

パラメータ

表155-106 SET_TABLE_PREFSプロシージャのパラメータ

パラメータ

説明

ownname

所有者名。

tabname

表名。

pname

プリファレンスの名前。次のプリファレンスのデフォルト値を設定できます。

- CASCADE

- DEGREE

- ESTIMATE_PERCENT

- GRANULARITY

- INCREMENTAL

- INCREMENTAL_LEVEL

- INCREMENTAL_STALENESS

- METHOD_OPT

- NO_INVALIDATE

- PUBLISH

- STALE_PERCENT

- TABLE_CACHED_BLOCKS

- OPTIONS

.

CASCADE - 索引の統計情報が表の統計情報の収集の一環として収集されるかどうかが決定されます。

CONCURRENT: このプリファレンスは、統計情報が複数のオブジェクトで同時に収集されるか、一度に1オブジェクトずつ順次収集されるかを決定します。

- 'MANUAL': 並行性は、手動統計情報収集に対してのみオンになります。

- 'AUTOMATIC': 並行性は、自動統計情報収集に対してのみオンになります。

- 'ALL': 並行性は、自動と手動の両方の統計情報収集に対してオンになります。

- 'OFF': 並行性は、手動と自動の両方の統計情報に対してオフになります。

.

DEGREE - 統計情報を収集する場合に使用される並列度が決定されます。

.

ESTIMATE_PERCENT - 推定する行のパーセントが決定されます。有効な範囲は、0.000001から100です。適切な統計を行うために最適なサンプル・サイズをOracleで決定するには、定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用します。これがデフォルトです。

GLOBAL_TEMP_TABLE_STATS: グローバル一時表に対して収集された統計情報を共有統計情報として格納するか、セッション統計情報として格納するかを制御します。これは次の2つの値を取ります。

- SHARED: すべてのセッションで同じ統計セットが参照されます。

- SESSION: グローバルな一時表でGATHER_TABLE_STATSプロシージャにより収集された統計はセッション固有であるため、統計収集プロセスと同じセッションで発行された問合せのみで使用されます。セッション固有の統計情報は、セッション終了時に削除されます。

.

GRANULARITY - 収集する統計情報の粒度が決定されます(表がパーティション化されている場合にのみ該当します)。

'ALL' - すべての統計情報(サブパーティション、パーティションおよびグローバル)を収集します。

'AUTO' - パーティション化のタイプに基づいて細分化を決定します。これがデフォルト値です。

'DEFAULT' - グローバルおよびパーティション・レベルの統計情報を収集します。現在サポートされているこのオプションは今後使用されなくなりますが、下位互換性を保持する理由からこのドキュメントに含まれています。この機能には、'GLOBAL AND PARTITION'を使用する必要があります。現在のデフォルト値は、'AUTO'であることに注意してください。

'GLOBAL' - グローバルな統計情報を収集します。

'GLOBAL AND PARTITION' - グローバルおよびパーティション・レベルの統計情報を収集します。サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されません。

'PARTITION' - パーティション・レベルの統計情報を収集します。

'SUBPARTITION' - サブパーティション・レベルの統計情報を収集します。

.

INCREMENTAL - 全表スキャンを実行することなく、パーティション表のグローバルな統計情報をメンテナンスできるかどかが決定されます。パーティション表では、多くの場合、新しいデータを新しいパーティションにロードします。新しいパーティションが追加され、データがロードされるため、表のグローバルな統計情報を最新に保つ必要があります。Oracleでは、次の条件が満たされている場合、表全体ではなく、変更されたパーティションのみをスキャンすることによって、表のグローバルな統計情報が更新されます。

- パーティション表のINCREMENTALの値がTRUEに設定されている場合

- パーティション表のPUBLISHの値がTRUEに設定されている場合

- 表で統計情報を収集する際に、ユーザーがESTIMATE_PERCENTにAUTO_SAMPLE_SIZE、GRANULARITYにAUTOを指定した場合

パーティション表のINCREMENTALの値がFALSE(デフォルト値)に設定されている場合は、リソースが集中的に使用され、時間がかかる操作を大きい表に対して行うグローバルな統計情報のメンテナンスに、全表スキャンが使用されます。

INCREMENTAL_LEVEL: INCREMENTALプリファレンスがTRUEに設定されいている場合、この値はどのシノプシスを収集するかを制御します。これは、次の2つの値を取ります。

- TABLE: 表レベルのシノプシスが収集されます。これは、この表をパーティションと交換する場合に使用されます。この表でGATHER_TABLE_STATSを実行(INCREMENTALをTRUEに、INCREMENTAL_LEVELをTABLEに設定)してから交換できます。その結果、表レベルのシノプシスがこの表で収集されます(現在、事前に宛先指定されていない表の表レベルのシノプシスのみがサポートされている)。交換が発生すると、パーティションに、交換前の表の表レベルのシノプシスが存在するようになります。このプリファレンス値は、SET_TABLE_PREFSプロシージャでのみ使用できます。SET_GLOBAL/DATABASE/SCHEMA_PREFSプロシージャでは使用できません。

- PARTITION: パーティション・レベルのシノプシスが収集されます。これがデフォルト値です。PARTITIONがパーティション化されていない表で設定された場合、シノプシスは収集されません。

INCREMENTAL_STALENESS: この値は、パーティションまたはサブパーティションを失効として決定する方法を制御します。これは、'USE_STALE_PERCENT'、'USE_LOCKED_STATS'などの複数の列挙値を取ります。

- USE_STALE_PERCENT: DMLの変更がSTALE_PERCENTプリファレンスの値を下回る場合、パーティション/サブパーティションが失効しているとはみなされません。

- USE_LOCKED_STATS: DML変更に関係なく、ロックされたパーティションまたはサブパーティションの統計情報は失効とみなされません。

- NULL: これはデフォルト値です。パーティションまたはサブパーティションにDML変更があるかぎり、これらが失効とみなされることを意味します。デフォルト値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報と必ず同じになります。デフォルト値以外の値が使用される場合、増分モードで収集される統計情報は、非増分モードで収集される統計情報より精度が劣る場合があります。

.

METHOD_OPT - 指定した値によって、列統計収集およびヒストグラムの作成が制御されます。次のオプションのいずれかを使用するか、または両方を組み合せて使用できます。

- FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}のように定義されます。

- integer: ヒストグラム・バケット数。1から2048の範囲です。
- REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。
- AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。
- SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。
- column_name: 列の名前。
- extension: (column_name, colume_name [, ...])の書式の列グループまたは式。
デフォルトはFOR ALL COLUMNS SIZE AUTOです。

.

NO_INVALIDATE - 指定した値によって、統計情報を収集する表の依存カーソルの無効化が制御されます。TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。

.

PUBLISH - 収集ジョブが完了した後、新しく収集された統計情報をパブリッシュするかどうかが決定されます。Oracle Database 11gリリース1(11.1)より前のバージョンでは、統計情報収集ジョブが完了すると、新しい統計情報は自動的にディクショナリ表にパブリッシュされます。現在、ユーザーは、統計情報を収集し、すぐにはパブリッシュしないようにできるようになりました。これによって、DBAは新しい統計情報をパブリッシュする前にテストできます。

.

STALE_PERCENT - 表の統計情報が失効しているとみなされ、再度収集される前に変更する必要がある、その表内の行のパーセントが決定されます。stale_percentの有効なドメインは、負数以外の数です。デフォルト値は10%です。

OPTIONS: GATHER_TABLE_STATSプロシージャで使用されるoptionsパラメータを判別します。プリファレンスの値は、次の2つです。

- GATHER (デフォルト): 表中のすべてのオブジェクトの統計を収集します。

- GATHER AUTO: 必要な統計をすべて自動的に収集します。バルク・ロードが実行される表にGATHER AUTOを設定することをお薦めします。バルク・ロードの間に統計が収集されます。これは、INCREMENTALが動作していない表のみに当てはまります。これらの表のGATHER_TABLE_STATSプロシージャにGATHER AUTOオプションを指定すると、すでに新規の統計の再収集はスキップされます。

pvalue

プリファレンスの値。NULLが指定されている場合は、Oracleのデフォルト値が設定されます。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です。

使用上の注意

- このプロシージャを実行するには、その表の所有者として接続するか、またはANALYZE ANYシステム権限を持っている必要があります。

- すべての引数はVARCHAR2タイプであり、数値を表している場合でも値を引用符で囲みます。

例

DBMS_STATS.SET_TABLE_PREFS('SH', 'SALES', 'CASCADE', 'DBMS_STATS.AUTO_CASCADE');
DBMS_STATS.SET_TABLE_PREFS('SH', 'SALES','ESTIMATE_PERCENT','9');
DBMS_STATS.SET_TABLE_PREFS('SH', 'SALES', 'DEGREE','99');

SET_TABLE_STATSプロシージャ

このプロシージャは、表に関連する情報を設定します。

構文

DBMS_STATS.SET_TABLE_STATS (
ownname       VARCHAR2,
tabname       VARCHAR2,
partname      VARCHAR2 DEFAULT NULL,
stattab       VARCHAR2 DEFAULT NULL,
statid        VARCHAR2 DEFAULT NULL,
numrows       NUMBER   DEFAULT NULL,
numblks       NUMBER   DEFAULT NULL,
avgrlen       NUMBER   DEFAULT NULL,
flags         NUMBER   DEFAULT NULL,
statown       VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN  DEFAULT to_no_invalidate_type (
get_param('NO_INVALIDATE')),
cachedblk     NUMBER    DEFAULT NULL,
cachehit      NUMBER    DEFUALT NULL,
force         BOOLEAN   DEFAULT FALSE);

パラメータ

表155-107 SET_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

表の名前。

partname

統計情報を格納する表パーティションの名前。表がパーティション化されていて、partnameがNULLの場合、統計情報はグローバルな表レベルで格納されます。

stattab

統計情報の格納場所を示すユーザー統計表の識別子。stattabがNULLの場合、統計情報はディクショナリ内に直接格納されます。

statid

stattab内の統計情報を関連付ける識別子(オプション)(stattabがNULLでない場合にのみ該当します)。

numrows

表(パーティション)内の行数。

numblks

表(パーティション)が占有するブロックの数。

avgrlen

表(パーティション)の行の平均長。

flags

Oracle内部で使用(NULLのままにします)。

statown

stattabを含んだスキーマ(ownnameと異なる場合)。

no_invalidate

TRUEに設定されている場合は、依存カーソルを無効化しません。FALSEに設定されている場合は、すぐに依存カーソルを無効化します。依存カーソルの無効化の時機をOracleが決定できるようにするには、DBMS_STATS.AUTO_INVALIDATEを使用します。これがデフォルトです。デフォルトを変更する場合は、SET_DATABASE_PREFSプロシージャ、SET_GLOBAL_PREFSプロシージャ、SET_SCHEMA_PREFSプロシージャおよびSET_TABLE_PREFSプロシージャを使用します。

cachedblk

セグメント(索引/表/索引パーティション/表パーティション)に対するバッファ・キャッシュ内の平均ブロック数。

cachehit

セグメント(索引/表/索引パーティション/表パーティション)に対する平均キャッシュ・ヒット率。

force

表の統計情報がロックされている場合でも、この値を設定します。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- オプティマイザは、キャッシュ・データを使用して、索引または統計表にアクセスするためのキャッシュ・ブロック数を見積もります。操作の合計コストは、ディスクの未キャッシュ・ブロック読込み時のI/Oコストに、バッファ・キャッシュ内のキャッシュ・ブロック取得時のCPUコスト、さらにデータ処理にかかるCPUコストを組み合せた合計値です。

- Oracleは常にcachedblkおよびcachehitを維持しますが、自動モードのDBMS_STATS.GATHER_[TABLE/INDEX/SCHEMA/DATABASE]_STATSプロシージャまたは手動モードのDBMS_STATS.GATHER_SYSTEM_STATSをユーザーがコールした場合のみ、対応するキャッシング統計情報を表および索引の統計情報の一部として最適化に使用します。精度や信頼性に乏しいデータをユーザーに使用させないようにするため、オプティマイザは、オブジェクトごとにcachehitおよびcachedblkに対する'信頼度要素'を計算します。値の'信頼度要素'が信頼度の基準に達している場合はこの値を使用し、基準に達しない場合はデフォルト値を使用します。

- オブジェクト・キャッシング統計情報の自動メンテナンス・アルゴリズムは、システム専用のメジャー・ワークロードを1つのみ想定し、他のマイナーなワークロードは無視してこのワークロードに統計情報が適合するように調整します。これに当てはまらない場合は、手動モードを使用してオブジェクト・キャッシング統計情報を維持する必要があります。

- 自動モードのオブジェクト・キャッシング統計情報のメンテナンス・アルゴリズムは、次の状況で統計情報が使用されることを防ぎます。

- オブジェクトが最近作成されたなどの理由で十分なデータ分析ができていない場合。

- システムにメジャー・ワークロードがないために平均値が実際の値と対応していない場合。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 入力値が無効です

ORA-20005: オブジェクト統計はロックされています

SHOW_EXTENDED_STATS_NAMEファンクション

このファンクションは、ユーザー指定の拡張に対して作成された統計情報エントリの名前を戻します。拡張が作成されなかった場合は、エラーが発生します。

構文

DBMS_STATS.SHOW_EXTENDED_STATS_NAME (
ownname    VARCHAR2,
tabname    VARCHAR2,
extension  VARCHAR2)
RETURN VARCHAR2;

パラメータ

表155-108 SHOW_EXTENDED_STATS_NAMEファンクションのパラメータ

パラメータ

説明

ownname

表の所有者名。

tabname

表の名前。

extension

列グループまたは式を指定できます。指定した表に、列c1およびc2があるとします。たとえば、列グループは"(c1, c2)"、式は"(c1 + c2)"のようになります。

例外

ORA-20000: オブジェクトが存在しないか、権限が不十分です。

ORA-20001: 拡張の処理中にエラーが発生しました。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

TRANSFER_STATSプロシージャ

このプロシージャは、指定した表の統計情報を、dblinkによって指定されたリモート・データベースからローカル・データベースに転送します。ソース・データベースの統計は保持されます。これは、シノプシスやDML監視情報などの統計関連構造も転送します。

構文

DBMS_STATS.TRANSFER_STATS (
ownname     IN     VARCHAR2,
tabname     IN     VARCHAR2,
dblink      IN     VARCHAR2,   options     IN     NUMBER DEFAULT NULL);

パラメータ

表155-109 TRANSFER_STATSプロシージャのパラメータ

パラメータ

説明

ownname

表の所有者名。NULLの場合、データベース内のすべてのスキーマ。NULLの場合、プロシージャはグローバル・プリファレンスも転送します。

tabname

表の名前。NULLの場合、OWNNAME内のすべての表。

dblink

データベース・リンク名。

options

デフォルトでは、プロシージャはグローバル・プリファレンスを転送しません。ADD_GLOBAL_PREFSを指定すると、グローバル・プリファレンスがコピーされます。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

UNLOCK_PARTITION_STATSプロシージャ

このプロシージャによって、ユーザーはパーティションの統計情報をロック解除できます。

構文

DBMS_STATS.UNLOCK_PARTITION_STATS (
ownname    VARCHAR2,
tabname    VARCHAR2,
partname   VARCHAR2);

パラメータ

表155-110 UNLOCK_PARTITION_STATSプロシージャのパラメータ

パラメータ

説明

ownname

ロック解除するスキーマの名前。

tabname

表の名前。

partname

(サブ・)パーティション名。

使用上の注意

このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

UNLOCK_SCHEMA_STATSプロシージャ

このプロシージャは、スキーマ内のすべての表の統計情報をロック解除します。

構文

DBMS_STATS.UNLOCK_SCHEMA_STATS (
ownname    VARCHAR2);

パラメータ

表155-111 UNLOCK_SCHEMA_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- 表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。

- 個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*、DELETE_*、IMPORT_*、GATHER_*の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。

- 複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATSなど)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。

- UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。

UNLOCK_TABLE_STATSプロシージャ

このプロシージャは、表の統計情報をロック解除します。

構文

DBMS_STATS.UNLOCK_TABLE_STATS (
ownname    VARCHAR2,
tabname    VARCHAR2);

パラメータ

表155-112 UNLOCK_TABLE_STATSプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

tabname

表の名前。

使用上の注意

- このプロシージャを起動するには、表の所有者であるか、ANALYZE ANY権限が必要です。SYSが所有しているオブジェクトの場合、表の所有者であるか、ANALYZE ANY DICTIONARY権限またはSYSDBA権限が必要です。

- 表の統計情報がロックされている場合は、表の統計情報、列の統計情報、ヒストグラムおよびすべての依存索引の統計情報を含む表に依存する、すべての統計情報がロックされているとみなされます。

- 個々の表、索引または列のディクショナリ内の統計情報を修正するSET_*、DELETE_*、IMPORT_*、GATHER_*の各プロシージャは、オブジェクトの統計情報がロックされている場合はエラーになります。

- 複数のオブジェクト上で動作するプロシージャ(GATHER_SCHEMA_STATSなど)は、オブジェクトの統計情報がロックされている場合、統計情報の変更をスキップします。多くのプロシージャには、ロックを無視するforce引数があります。

- UNLOCK_SCHEMA_STATSプロシージャもUNLOCK_TABLE_STATSプロシージャも対応するパーティションの統計情報をロック解除するようには設定されていません。LOCK_TABLE_STATSプロシージャを起動すると、統計情報のロック・ビットが表レベルで設定されます。この場合、パーティションや索引などの依存オブジェクトの統計情報を収集できません。同様に、表の統計情報がロックされると、依存がロックされるため、LOCK_PARTITION_STATSプロシージャを明示的に起動する必要がなくなります。

UPGRADE_STAT_TABLEプロシージャ

このプロシージャは、古いバージョンのユーザー統計表をアップグレードします。

構文

DBMS_STATS.UPGRADE_STAT_TABLE (
ownname    VARCHAR2,
stattab    VARCHAR2);

パラメータ

表155-113 UPGRADE_STAT_TABLEプロシージャのパラメータ

パラメータ

説明

ownname

スキーマの名前。

stattab

表の名前。

例外

ORA-20000: 表をアップグレードできません。

使用上の注意

このプロシージャを起動するには、表を削除および作成する権限が必要です。

156 DBMS_STAT_FUNCS

DBMS_STAT_FUNCSパッケージは、統計のファンクションを提供します。

この章では、次の項目について説明します。

- DBMS_STAT_FUNCSサブプログラムの要約

DBMS_STAT_FUNCSサブプログラムの要約

表156-1 DBMS_STAT_FUNCSパッケージのサブプログラム

サブプログラム

説明

EXPONENTIAL_DIST_FITプロシージャ

指数分布におけるサンプル値の適合性をテストします。

NORMAL_DIST_FITプロシージャ

正規分布におけるサンプル値の適合性をテストします。

POISSON_DIST_FITプロシージャ

Poisson分布におけるサンプル値の適合性をテストします。

SUMMARYプロシージャ

表の数値列を集約します。

UNIFORM_DIST_FITプロシージャ

一様分布におけるサンプル値の適合性をテストします。

WEIBULL_DIST_FITプロシージャ

Weibull分布におけるサンプル値の適合性をテストします。

EXPONENTIAL_DIST_FITプロシージャ

このプロシージャは、指数分布におけるサンプル値の適合性をテストします。

構文

DBMS_STAT_FUNCS.EXPONENTIAL_DIST_FIT (
ownername    IN    VARCHAR2,
tablename    IN    VARCHAR2,
columnname   IN    VARCHAR2,
test_type    IN    VARCHAR2 DEFAULT 'KOLMOGOROV_SMIRNOV',
lambda       IN    NUMBER,
mu           IN    NUMBER,
sig          OUT   NUMBER);

パラメータ

表156-2 EXPONENTIAL_DIST_FITプロシージャのパラメータ

パラメータ

説明

ownername

表が存在するスキーマ。

tablename

列が存在する表。

columnname

テストの実行対象となる表の列。

test_type

使用するテスト・タイプ('CHI_SQUARED'、'KOLMOGOROV_SMIRNOV'または'ANDERSON_DARLING')。

lambda

スケール・パラメータ。

mu

ロケーション・パラメータ。

sig

テスト・タイプに基づく、適合値の適正さ。値が小さい場合は、サンプルと指数分布との間に大きな差があることを示します。1に近い値は、ほぼ一致していることを示します。

NORMAL_DIST_FITプロシージャ

このプロシージャは、正規分布におけるサンプル値の適合性をテストします。

構文

DBMS_STAT_FUNCS.NORMAL_DIST_FIT (
ownername    IN    VARCHAR2,
tablename    IN    VARCHAR2,
columnname   IN    VARCHAR2,
test_type    IN    VARCHAR2 DEFAULT 'SHAPIRO_WILKS',
mean         IN    NUMBER,
stdev        IN    NUMBER,
sig          OUT   NUMBER);

パラメータ

表156-3 NORMAL_DIST_FITプロシージャのパラメータ

パラメータ

説明

ownername

表が存在するスキーマ。

tablename

列が存在する表。

columnname

テストの実行対象となる表の列。

test_type

使用するテスト・タイプ('CHI_SQUARED'、'KOLMOGOROV_SMIRNOV'、'ANDERSON_DARLING'または'SHAPIRO_WILKS')。

mean

比較の対象となる分布の平均。

stdev

比較の対象となる分布の標準偏差。

sig

テスト・タイプに基づく、適合値の適正さ。値が小さい場合は、サンプルと正規分布との間に大きな差があることを示します。1に近い値は、ほぼ一致していることを示します。

POISSON_DIST_FITプロシージャ

このプロシージャは、Poisson分布におけるサンプル値の適合性をテストします。

構文

DBMS_STAT_FUNCS.POISSON_DIST_FIT (
ownername    IN    VARCHAR2,
tablename    IN    VARCHAR2,
columnname   IN    VARCHAR2,
test_type    IN    VARCHAR2 DEFAULT 'KOLMOGOROV_SMIRNOV',
lambda       IN    NUMBER,
sig          OUT   NUMBER);

パラメータ

表156-4 POISSON_DIST_FITプロシージャのパラメータ

パラメータ

説明

ownername

表が存在するスキーマ。

tablename

列が存在する表。

columnname

テストの実行対象となる表の列。

test_type

使用するテスト・タイプ('KOLMOGOROV_SMIRNOV'または'ANDERSON_DARLING')。

lambda

lambdaパラメータは形状パラメータです。

sig

テスト・タイプに基づく、適合値の適正さ。値が小さい場合は、サンプルとPoisson分布との間に大きな差があることを示します。1に近い値は、ほぼ一致していることを示します。

SUMMARYプロシージャ

このプロシージャは、tablenameのcolumnnameで指定されている数値列を集約します。このサマリーは、SummaryTypeとして戻されます。SUMMARYの出力は、多くの場合、現在使用しているSQLで取得できるので、覚えておいてください。

構文

DBMS_STAT_FUNCS.SUMMARY (
ownername    IN    VARCHAR2,
tablename    IN    VARCHAR2,
columnname   IN    VARCHAR2,
sigma_value  IN    NUMBER DEFAULT 3,
s           OUT    SummaryType);

パラメータ

表156-5 SUMMARYプロシージャのパラメータ

パラメータ

説明

ownername

表が存在するスキーマ。

tablename

列が存在する表。

columnname

サマリー作成の対象とする表の列。

sigma_value

極値セットのsigma数。デフォルト値は3です。

s

特定の列のサマリー情報を含むレコード。

SummaryTypeの定義

TYPE n_arr IS VARRAY(5) of NUMBER;
TYPE num_table IS TABLE of NUMBER;
TYPE summaryType IS RECORD (
count             NUMBER,
min               NUMBER,
max               NUMBER,
range             NUMBER,
mean              NUMBER,
cmode             num_table,
variance          NUMBER,
stddev            NUMBER,
quantile_5        NUMBER,
quantile_25       NUMBER,
median            NUMBER,
quantile_75       NUMBER,
quantile_95       NUMBER,
plus_x_sigma      NUMBER,
minus_x_sigma     NUMBER,
extreme_values    num_table,
top_5_values      n_arr,
bottom_5_values   n_arr);

UNIFORM_DIST_FITプロシージャ

このプロシージャは、一様分布におけるサンプル値の適合性をテストします。

構文

DBMS_STAT_FUNCS.UNIFORM_DIST_FIT (
ownername    IN    VARCHAR2,
tablename    IN    VARCHAR2,
columnname   IN    VARCHAR2,
var_type     IN    VARCHAR2 DEFAULT 'CONTINUOUS',
test_type    IN    VARCHAR2 DEFAULT 'KOLMOGOROV_SMIRNOV',
paramA       IN    NUMBER,
paramB       IN    NUMBER,
sig          OUT   NUMBER);

パラメータ

表156-6 UNIFORM_DIST_FITプロシージャのパラメータ

パラメータ

説明

ownername

表が存在するスキーマ。

tablename

列が存在する表。

columnname

テストの実行対象となる表の列。

var_type

分布のタイプ('CONTINUOUS'(デフォルト)または'DISCRETE')。

test_type

使用するテスト・タイプ('CHI_SQUARED'、'KOLMOGOROV_SMIRNOV'または'ANDERSON_DARLING')。

paramA

パラメータA。サンプル(ロケーション・パラメータ)から見積もる。

paramB

パラメータB。サンプル(スケール・パラメータ)から見積もる。

sig

テスト・タイプに基づく、適合値の適正さ。値が小さい場合は、サンプルと一様分布との間に大きな差があることを示します。1に近い値は、ほぼ一致していることを示します。

WEIBULL_DIST_FITプロシージャ

このプロシージャは、Weibull分布におけるサンプル値の適合性をテストします。

構文

DBMS_STAT_FUNCS.WEIBULL_DIST_FIT (
ownername    IN    VARCHAR2,
tablename    IN    VARCHAR2,
columnname   IN    VARCHAR2,
test_type    IN    VARCHAR2 DEFAULT 'KOLMOGOROV_SMIRNOV',
alpha        IN    NUMBER,
mu           IN    NUMBER,
beta         IN    NUMBER,
sig          OUT   NUMBER);

パラメータ

表156-7 WEIBULL_DIST_FITプロシージャのパラメータ

パラメータ

説明

ownername

表が存在するスキーマ。

tablename

列が存在する表。

columnname

テストの実行対象となる表の列。

test_type

使用するテスト・タイプ('CHI_SQUARED'、'KOLMOGOROV_SMIRNOV'または'ANDERSON_DARLING')。

alpha

スケール・パラメータ。

mu

ロケーション・パラメータ。

beta

傾き/形状のパラメータ。

sig

テスト・タイプに基づく、適合値の適正さ。値が小さい場合は、サンプルとWeibull分布との間に大きな差があることを示します。1に近い値は、ほぼ一致していることを示します。

157 DBMS_STORAGE_MAP

DBMS_STORAGE_MAPパッケージを使用すると、Oracleバックグラウンド・プロセスのFMONと通信して、マッピング・ビューを移入するマッピング操作を起動できます。FMONは、オペレーティング・システムやストレージ・システムのベンダーが供給するマッピング・ライブラリと通信します。

この章では、次の項目について説明します。

- DBMS_STORAGE_MAPの使用方法

- 概要

- 使用上の注意

- DBMS_STORAGE_MAPサブプログラムの要約

DBMS_STORAGE_MAPの使用方法

- 概要

- 使用上の注意

概要

次に、DBMS_STORAGE_MAP APIを理解する上で役に立つ用語と解説を示します。

- マッピング・ライブラリ
マッピング・ライブラリは、I/O処理スタック要素のコンポーネントのマッピングに役立ちます。I/O処理コンポーネントの例には、ファイル、論理ボリュームおよびストレージ・アレイI/Oターゲットなどがあります。マッピング・ライブラリは、filemap.oraで識別されます。

- マッピング・ファイル
マッピング・ファイルは、ファイルを記述するマッピング構造です。ファイル・サイズ、ファイルを構成するエクステント数、ファイル・タイプなどの一連の属性を提供します。

- マッピング要素とマッピング副要素
マッピング要素は、I/Oスタック内の記憶域コンポーネントを示す抽象的なマッピング構造です。要素の例には、その構造がマッピングの基本要素である、ミラー化、ストライプ化、パーティション、RAID5、連結要素およびディスクなどがあります。マッピング副要素は、I/Oマッピング・スタック内の1つの要素と次の要素との間のリンクを示します。

- マッピング・ファイル・エクステント
マッピング・ファイル・エクステントは、1つの要素に常駐する連続的なブロックの集合を示します。これには、デバイス・オフセット、エクステント・サイズ、ファイル・オフセット、タイプ(データまたはパリティ)およびエクステントが常駐する要素の名前が含まれます。RAWデバイスまたはRAWボリュームの場合、ファイルは1つのファイル・エクステント・コンポーネントのみで構成されます。マッピング・ファイル・エクステントは、Oracleエクステントとは異なります。

関連項目:

- 詳細は、『Oracle Database管理者ガイド』を参照してください。

- V$MAP_FILE、V$MAP_ELEMENT、V$MAP_SUBELEMENT、V$MAP_FILE_EXTENTなどのV$MAPビューについては、『Oracle Databaseリファレンス』を参照してください。

使用上の注意

MAP_ELEMENT、MAP_FILEおよびMAP_ALLの場合: 構成IDがサポートされている場合は、情報のマッピングがすでに存在するときにこれらのファンクションを起動すると、マッピングがリフレッシュされます。構成情報IDがサポートされていない場合は、これらのファンクションの再起動によって、マッピングが再作成されます。

関連項目:
構成ID、変更される要素またはファイルの属性については、『Oracle Database管理者ガイド』を参照してください。

DBMS_STORAGE_MAPサブプログラムの要約

表157-1 DBMS_STORAGE_MAPパッケージのサブプログラム

サブプログラム

説明

DROP_ALLファンクション

インスタンスの共有メモリー内にあるマッピング情報をすべて削除します。

DROP_ELEMENTファンクション

elemnameによって定義された要素のマッピング情報を削除します。

DROP_FILEファンクション

filenameによって定義されたマッピング情報を削除します。

LOCK_MAPプロシージャ

インスタンスの共有メモリー内にあるマッピング情報をロックします。

MAP_ALLファンクション

すべてのタイプのOracleファイルに関する完全なマッピング情報を作成します(アーカイブ・ログを除く)。これには、すべての有向非巡回グラフ(DAG)要素が含まれます。

MAP_ELEMENTファンクション

elemnameで識別される要素のマッピング情報を作成します。

MAP_FILEファンクション

filenameで識別されるファイルのマッピング情報を作成します。

MAP_OBJECTファンクション

オブジェクト名、所有者およびタイプで識別されるOracleオブジェクトのマッピング情報を作成します。

RESTOREファンクション

データ・ディクショナリからインスタンスの共有メモリーに、完全なマッピング情報をロードします。

SAVEファンクション

データ・ディクショナリへの完全なマッピングの再生成に必要な情報を保存します。

UNLOCK_MAPプロシージャ

インスタンスの共有メモリー内にあるマッピング情報のロックを解除します。

DROP_ALLファンクション

このファンクションは、インスタンスの共有メモリー内にあるマッピング情報をすべて削除します。

構文

DBMS_STORAGE_MAP.DROP_ALL(
dictionary_update IN BOOLEAN DEFAULT TRUE);

パラメータ

表157-2 DROP_ALLファンクションのパラメータ

パラメータ

説明

dictionary_update

TRUEの場合、データ・ディクショナリ内のマッピング情報が更新され、変更が反映されます。デフォルト値はTRUEで、dictionary_updateは、オーバーロードされた引数です。

DROP_ELEMENTファンクション

このファンクションは、elemnameによって定義された要素のマッピング情報を削除します。

構文

DBMS_STORAGE_MAP.DROP_ELEMENT(
elemname          IN VARCHAR2,
cascade           IN BOOLEAN,
dictionary_update IN BOOLEAN DEFAULT TRUE);

パラメータ

表157-3 DROP_ELEMENTファンクションのパラメータ

パラメータ

説明

elemname

マッピング情報を削除する要素。

cascade

TRUEの場合は、elemnameによって定義されたDAGの全要素に対して、DROP_ELEMENTが必要に応じて再帰的に起動されます。

dictionary_update

TRUEの場合、データ・ディクショナリ内のマッピング情報が更新され、変更が反映されます。デフォルト値はTRUEで、dictionary_updateは、オーバーロードされた引数です。

DROP_FILEファンクション

このファンクションは、filenameによって定義されたマッピング情報を削除します。

構文

DBMS_STORAGE_MAP.DROP_FILE(
filename          IN VARCHAR2,
cascade           IN BOOLEAN,
dictionary_update IN BOOLEAN DEFAULT TRUE);

パラメータ

表157-4 DROP_FILEファンクションのパラメータ

パラメータ

説明

filename

マッピング情報を削除するファイル。

cascade

TRUEの場合は、ファイルが常駐している要素のマッピングDAGも、必要に応じて削除されます。

dictionary_update

TRUEの場合、データ・ディクショナリ内のマッピング情報が更新され、変更が反映されます。デフォルト値はTRUEで、dictionary_updateは、オーバーロードされた引数です。

LOCK_MAPプロシージャ

このプロシージャは、インスタンスの共有メモリー内にあるマッピング情報をロックします。V$MAP表の一貫したスナップショットが必要な場合に便利です。マッピング情報をロックしないと、V$MAP_ELEMENTやV$MAP_SUBELEMENTなどの一貫性が失われる可能性があります。

構文

DBMS_STORAGE_MAP.LOCK_MAP;

MAP_ALLファンクション

このファンクションは、すべてのタイプのOracleファイルに関する完全なマッピング情報を作成し(アーカイブ・ログを除く)、これには、すべての有向非巡回グラフ(DAG)要素が含まれます。これは、すべてのマッピング・ライブラリを明示的に同期するため、最新のマッピング情報を取得します。

構文

DBMS_STORAGE_MAP.MAP_ALL(
max_num_fileext   IN NUMBER DEFAULT 100,
dictionary_update IN BOOLEAN DEFAULT TRUE);

パラメータ

表157-5 MAP_ALLファンクションのパラメータ

パラメータ

説明

max_num_fileext

マップするファイル・エクステントの最大数を定義します。この指定によって、ファイル・エクステントのマッピング時に使用するメモリー量が制限されます。デフォルト値は、100で、max_num_fileextentは、オーバーロードされた引数です。

dictionary_update

TRUEの場合、データ・ディクショナリ内のマッピング情報が更新され、変更が反映されます。デフォルト値はTRUEで、dictionary_updateは、オーバーロードされた引数です。

使用上の注意

MAP_ALLは、コールド・スタートの際に明示的にコールする必要があります。

MAP_ELEMENTファンクション

このファンクションは、filenameで識別される要素のマッピング情報を作成します。明示的な同期化を必要とするライブラリが、マップする要素またはそのI/Oスタック内のいずれか1つの要素を所有している場合(cascadeがTRUEの場合)は、最新のマッピング情報を取得できない可能性があります。

構文

DBMS_STORAGE_MAP.MAP_ELEMENT(
elemname          IN VARCHAR2,
cascade           IN BOOLEAN,
dictionary_update IN BOOLEAN DEFAULT TRUE);

パラメータ

表157-6 MAP_ELEMENTファンクションのパラメータ

パラメータ

説明

elemname

マッピング情報を作成する要素。

cascade

TRUEの場合は、elemnameのI/OスタックDAG内の全要素がマップされます。

dictionary_update

TRUEの場合、データ・ディクショナリ内のマッピング情報が更新され、変更が反映されます。デフォルト値はTRUEで、dictionary_updateは、オーバーロードされた引数です。

MAP_FILEファンクション

このファンクションは、filenameで識別されるファイルのマッピング情報を作成します。このファンクションは、ある特定のファイルのマッピングが変更された場合に使用します。Oracle Databaseサーバーでは完全なマッピングを再作成する必要はありません。

構文

DBMS_STORAGE_MAP.MAP_FILE(
filename           IN VARCHAR2,
filetype           IN VARCHAR2,
cascade            IN BOOLEAN,
max_num_fileextent IN NUMBER DEFAULT 100,
dictionary_update  IN BOOLEAN DEFAULT TRUE);

パラメータ

表157-7 MAP_FILEファンクションのパラメータ

パラメータ

説明

filename

マッピング情報を作成するファイル。

filetype

マップするファイルのタイプ。"DATAFILE"、"SPFILE"、"TEMPFILE"、"CONTROLFILE"、"LOGFILE"または"ARCHIVEFILE"を指定できます。

cascade

記憶域の再構成が発生する場合にのみ、TRUEを指定してください。ファイル・サイズの変更(ALTER SYSTEMコマンドまたは拡張ファイルのDML操作のいずれかを使用した)など、他のすべてのインスタンスの場合は、マッピング変更がファイル・エクステントのみに制限されるため、cascadeをFALSEに設定できます。

TRUEの場合は、ファイルが常駐している要素に対してもマッピングDAGが作成されます。

max_num_fileextent

マップするファイル・エクステントの最大数を定義します。この指定によって、ファイル・エクステントのマッピング時に使用するメモリー量が制限されます。デフォルト値は、100で、max_num_fileextentは、オーバーロードされた引数です。

dictionary_update

TRUEの場合、データ・ディクショナリ内のマッピング情報が更新され、変更が反映されます。デフォルト値はTRUEで、dictionary_updateは、オーバーロードされた引数です。

使用上の注意

このファンクションは、明示的な同期化を必要とするライブラリが、マップするファイルまたはそのI/Oスタック内のいずれか1つの要素を所有している場合(cascadeがTRUEの場合)は、最新のマッピング情報を取得できない可能性があります。

MAP_OBJECTファンクション

このファンクションは、オブジェクト名、所有者およびタイプで識別されるOracleオブジェクトのマッピング情報を作成します。

構文

DBMS_STORAGE_MAP.MAP_OBJECT(
objname  IN  VARCHAR2,
owner    IN  VARCHAR2,
objtype  IN  VARCHAR2);

パラメータ

表157-8 MAP_OBJECTファンクションのパラメータ

パラメータ

説明

objname

オブジェクトの名前。

owner

オブジェクトの所有者。

objtype

オブジェクトのタイプ。

RESTOREファンクション

このファンクションは、データ・ディクショナリからインスタンスの共有メモリーに、完全なマッピング情報をロードします。RESTOREを起動できるのは、SAVE操作を実行した後のみです。RESTOREは、ウォーム・スタートの際に明示的にコールする必要があります。

構文

DBMS_STORAGE_MAP.RESTORE;

SAVEファンクション

このファンクションは、データ・ディクショナリへの完全なマッピングの再生成に必要な情報を保存します。

構文

DBMS_STORAGE_MAP.SAVE;

UNLOCK_MAPプロシージャ

このプロシージャは、インスタンスの共有メモリー内にあるマッピング情報のロックを解除します。

構文

DBMS_STORAGE_MAP.UNLOCK_MAP;

158 DBMS_STREAMS

DBMS_STREAMSパッケージ(Oracle Streamsパッケージのセットの1つ)は、ANYDATAオブジェクトを論理変更レコード(LCR)に変換し、Oracle Streams属性およびOracle Streamsクライアントに関する情報を戻し、セッションで生成されたREDOエントリにバイナリ・タグで注釈を付けるためのサブプログラムを提供します。このタグは、REDOエントリまたはLCRのバイナリ・タグに対する仕様を含んだルールを持つ、取得プロセス、伝播または適用プロセスの動作に影響を与えます。

この章では、次の項目について説明します。

- DBMS_STREAMSの使用方法

- 概要

- セキュリティ・モデル

- DBMS_STREAMSサブプログラムの要約

DBMS_STREAMSの使用方法

この項では、DBMS_STREAMSパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージは、ANYDATAオブジェクトを論理変更レコード(LCR)に変換し、Oracle Streams属性およびOracle Streamsクライアントに関する情報を戻し、セッションで生成されたREDOエントリにバイナリ・タグで注釈を付けるためのサブプログラムを提供します。このタグは、REDOエントリまたはLCRのバイナリ・タグに対する仕様を含んだルールを持つ、取得プロセス、伝播または適用プロセスの動作に影響を与えます。

関連項目:
このパッケージおよびOracle Streamsの詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

セキュリティ・モデル

PUBLICには、このパッケージのEXECUTE権限が付与されます。

関連項目:
ユーザー・グループPUBLICの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

DBMS_STREAMSサブプログラムの要約

表158-1 DBMS_STREAMSパッケージのサブプログラム

サブプログラム

説明

COMPATIBLE_12_1ファンクション

DBMS_STREAMS.COMPATIBLE_12_1定数を戻します。

COMPATIBLE_11_2ファンクション

DBMS_STREAMS.COMPATIBLE_11_2定数を戻します。

COMPATIBLE_11_1ファンクション

DBMS_STREAMS.COMPATIBLE_11_1定数を戻します。

COMPATIBLE_10_2ファンクション

DBMS_STREAMS.COMPATIBLE_10_2定数を戻します。

COMPATIBLE_10_1ファンクション

DBMS_STREAMS.COMPATIBLE_10_1定数を戻します。

COMPATIBLE_9_2ファンクション

DBMS_STREAMS.COMPATIBLE_9_2定数を戻します。

CONVERT_ANYDATA_TO_LCR_DDLファンクション

ANYDATAオブジェクトをSYS.LCR$_DDL_RECORDオブジェクトに変換します。

CONVERT_ANYDATA_TO_LCR_ROWファンクション

ANYDATAオブジェクトをSYS.LCR$_ROW_RECORDオブジェクトに変換します。

CONVERT_LCR_TO_XMLファンクション

ANYDATAオブジェクト内でカプセル化された論理変更レコード(LCR)を、LCR用のXMLスキーマに準拠するXMLオブジェクトに変換します。

CONVERT_XML_TO_LCRファンクション

論理変更レコード(LCR)用のXMLスキーマに準拠するXMLオブジェクトを、ANYDATAオブジェクト内でカプセル化されたLCRに変換します。

GET_INFORMATIONファンクション

様々なOracle Streams属性に関する情報を戻します。

GET_STREAMS_NAMEファンクション

実行者の名前を戻します。

GET_STREAMS_TYPEファンクション

実行者のタイプを戻します。

GET_TAGファンクション

現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

MAX_COMPATIBLEファンクション

Oracle Databaseの現行リリースに対して可能な最大互換性定数よりも大きい整数を戻します。

SET_TAGプロシージャ

現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。

注意:
このパッケージのサブプログラムはコミットしません。

COMPATIBLE_12_1ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_12_1定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_12_1
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの12.1.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

関連項目:

- GET_COMPATIBLEメンバー・ファンクション

- Oracle Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

- COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。

COMPATIBLE_11_2ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_11_2定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_11_2
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの11.2.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

関連項目:

- GET_COMPATIBLEメンバー・ファンクション

- Oracle Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

- COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。

COMPATIBLE_11_1ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_11_1定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_11_1
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの11.1.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

関連項目:

- GET_COMPATIBLEメンバー・ファンクション

- Oracle Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

- COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。

COMPATIBLE_10_2ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_10_2定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_10_2
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの10.2.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

関連項目:

- GET_COMPATIBLEメンバー・ファンクション

- Oracle Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

- COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。

COMPATIBLE_10_1ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_10_1定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_10_1
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの10.1.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

関連項目:

- GET_COMPATIBLEメンバー・ファンクション

- Oracle Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

- COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。

COMPATIBLE_9_2ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_9_2定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_9_2
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの9.2.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

関連項目:

- GET_COMPATIBLEメンバー・ファンクション

- Oracle Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

- COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。

CONVERT_ANYDATA_TO_LCR_DDLファンクション

このファンクションは、ANYDATAオブジェクトをSYS.LCR$_DDL_RECORDオブジェクトに変換します。

構文

DBMS_STREAMS.CONVERT_ANYDATA_TO_LCR_DDL(
source  IN  ANYDATA)
RETURN SYS.LCR$_DDL_RECORD;

パラメータ

表158-2 CONVERT_ANYDATA_TO_LCR_DDLファンクションのパラメータ

パラメータ

説明

source

変換するANYDATAオブジェクト。このオブジェクトがDDL論理変更レコード(DDL LCR)でない場合は、例外が発生します。

使用上の注意

DBMS_TRANSFORMパッケージのCREATE_TRANSFORMATIONプロシージャで作成される変換で、このファンクションを使用することもできます。ANYDATAキューからSYS.LCR$_DDL_RECORDタイプのキューにDDLのLCRを伝播するサブスクライバを追加するときに作成する変換を使用してください。

関連項目:
『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』

CONVERT_ANYDATA_TO_LCR_ROWファンクション

このファンクションは、ANYDATAオブジェクトをSYS.LCR$_ROW_RECORDオブジェクトに変換します。

構文

DBMS_STREAMS.CONVERT_ANYDATA_TO_LCR_ROW(
source  IN  ANYDATA)
RETURN SYS.LCR$_ROW_RECORD;

パラメータ

表158-3 CONVERT_ANYDATA_TO_LCR_ROWファンクションのパラメータ

パラメータ

説明

source

変換するANYDATAオブジェクト。このオブジェクトが行論理変更レコード(行LCR)でない場合は、例外が発生します。

使用上の注意

DBMS_TRANSFORMパッケージのCREATE_TRANSFORMATIONプロシージャで作成される変換で、このファンクションを使用することもできます。ANYDATAキューからSYS.LCR$_ROW_RECORDタイプのキューに行LCRを伝播するサブスクライバを追加するときに作成する変換を使用してください。

関連項目:
『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』

CONVERT_LCR_TO_XMLファンクション

このファンクションは、ANYDATAオブジェクト内でカプセル化された論理変更レコード(LCR)を、LCR用のXMLスキーマに準拠するXMLオブジェクトに変換します。LCRには、行LCRまたはDDL LCRを指定できます。

関連項目:
LCR用のXMLスキーマの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS.CONVERT_LCR_TO_XML(
anylcr  IN  ANYDATA)
RETURN SYS.XMLTYPE;

パラメータ

表158-4 CONVERT_LCR_TO_XMLファンクションのパラメータ

パラメータ

説明

anylcr

ANYDATAにカプセル化された変換するLCR。このオブジェクトがANYDATAにカプセル化されたLCRでない場合は、例外が発生します。

CONVERT_XML_TO_LCRファンクション

このファンクションは、論理変更レコード(LCR)用のXMLスキーマに準拠するXMLオブジェクトを、ANYDATAオブジェクト内でカプセル化されたLCRに変換します。LCRには、行またはDDL LCRを指定できます。

関連項目:
LCR用のXMLスキーマの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS.CONVERT_XML_TO_LCR(
xmldat  IN  SYS.XMLTYPE)
RETURN ANYDATA;

パラメータ

表158-5 CONVERT_XML_TO_LCRファンクションのパラメータ

パラメータ

説明

xmldat

変換するXML LCRオブジェクト。このオブジェクトがLCR用のXMLスキーマに準拠しない場合は、例外が発生します。

GET_INFORMATIONファンクション

このファンクションは、様々なOracle Streams属性に関する情報を戻します。

構文

DBMS_STREAMS.GET_INFORMATION(
name  IN  VARCHAR2)
RETURN ANYDATA;

パラメータ

表158-6 GET_INFORMATIONファンクションのパラメータ

パラメータ

説明

name

取得する情報のタイプ。現在、次の指定が可能です。

- SENDER: 現行の論理変更レコード(LCR)の送信者名を戻します(そのAQメッセージのプロパティから)。このファンクションは、プロシージャDMLハンドラ、DDLハンドラ、エラー・ハンドラまたはメッセージ・ハンドラの内部でコールされます。適用ハンドラの外部からコールされた場合は、NULLが戻ります。戻り値は、VARCHAR2として解析されます。

- CONSTRAINT_NAME: エラーが発生したLCRについて、違反した制約名を戻します。このファンクションは、適用プロセスのプロシージャDMLハンドラまたはエラー・ハンドラの内部でコールされます。プロシージャDMLハンドラまたはエラー・ハンドラの外部からコールされた場合は、NULLが戻ります。戻り値は、VARCHAR2として解析されます。

GET_STREAMS_NAMEファンクション

実行者が次のOracle Streamsタイプのいずれかである場合、このファンクションは実行者のOracle Streams名を取得します。

- CAPTURE

- APPLY

- ERROR_EXECUTION

実行者がこれらのタイプに該当しない場合、このファンクションはNULLを返します。

構文

DBMS_STREAMS.GET_STREAMS_NAME
RETURN VARCHAR2;

使用上の注意

ルール条件、ルール・ベースの変換、適用ハンドラおよびエラー・ハンドラにおいて、このファンクションを使用できます。たとえば、複数の適用プロセスに1つのエラー・ハンドラを使用する場合、GET_STREAMS_NAMEファンクションを使用して、エラーを発生する適用プロセスの名前を指定できます。

GET_STREAMS_TYPEファンクション

このファンクションは実行者のOracle Streamsタイプを取得し、次のタイプのいずれかを返します。

- CAPTURE

- APPLY

- ERROR_EXECUTION

実行者がこれらのタイプに該当しない場合、このファンクションはNULLを返します。

構文

DBMS_STREAMS.GET_STREAMS_TYPE
RETURN VARCHAR2;

使用上の注意

ルール条件、ルール・ベースの変換、適用ハンドラおよびエラー・ハンドラにおいて、このファンクションを使用できます。たとえば、適用プロセスのキュー(APPLYタイプ)ではなく、エラー・キュー(ERROR_EXECUTIONタイプ)のメッセージを処理している場合、GET_STREAMS_TYPEファンクションを使用して、プロシージャDMLハンドラの操作内容を変更できます。

GET_TAGファンクション

このファンクションは、現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

注意:

- このファンクションを実行するには、DBMS_STREAMS_ADMパッケージに対するEXECUTE_CATALOG_ROLEまたはEXECUTE権限をユーザーに付与する必要があります。

- DBMS_STREAMS.GET_TAGファンクションを使用するかわりに、DBMS_STREAMS_ADM.GET_TAGファンクションを使用することをお薦めします。GET_TAGファンクションを参照してください。

関連項目:
タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS.GET_TAG
RETURN RAW;

例

次の例は、現行の論理変更レコード(LCR)タグを出力として表示する方法を示しています。

SET SERVEROUTPUT ON
DECLARE
raw_tag RAW(2000);
BEGIN
raw_tag := DBMS_STREAMS.GET_TAG();
DBMS_OUTPUT.PUT_LINE('Tag Value = ' || RAWTOHEX(raw_tag));
END;
/

DUALビューを問い合せて値を表示することもできます。

SELECT DBMS_STREAMS.GET_TAG FROM DUAL;

MAX_COMPATIBLEファンクション

このファンクションは、Oracle Databaseの現行リリースに対して可能な最大互換性定数よりも大きい整数を戻します。

構文

DBMS_STREAMS.MAX_COMPATIBLE
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

MAX_COMPATIBLEファンクションは常に、このファンクションが実行されるOracle Databaseのリリースに対する最大互換性を戻します。そのため、ルール条件でこのファンクションを使用する場合は、Oracle Databaseの最新リリースにアップグレードする際にルール条件を変更する必要がありません。

関連項目:

- GET_COMPATIBLEメンバー・ファンクション

- Oracle Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

- COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。

SET_TAGプロシージャ

このプロシージャは、現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。現行セッションのDML文またはDDL文によって生成される各REDOエントリには、このタグが含まれます。このプロシージャの影響があるのは、現行のセッションのみです。

注意:

- このプロシージャを実行するには、DBMS_STREAMS_ADMパッケージに対するEXECUTE_CATALOG_ROLEまたはEXECUTE権限をユーザーに付与する必要があります。

- DBMS_STREAMS.SET_TAGプロシージャを使用するかわりに、DBMS_STREAMS_ADM.SET_TAGプロシージャを使用することをお薦めします。SET_TAGプロシージャを参照してください。

関連項目:
タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS.SET_TAG(
tag  IN  RAW  DEFAULT NULL);

パラメータ

表158-7 SET_TAGプロシージャのパラメータ

パラメータ

説明

tag

現行のセッションで継続して生成されるREDOエントリすべてに対するバイナリ・タグ。RAW値は一連のバイトで、バイトは一連のビットです。

デフォルトでは、セッションのタグはNULLです。

タグ値のサイズ制限は、2000バイトです。

使用上の注意

現行のセッションでタグを16進数値の'17'に設定するには、次のプロシージャを実行します。

EXEC DBMS_STREAMS.SET_TAG(tag => HEXTORAW('17'));

SET_TAGプロシージャでは、次の点に注意してください。

- このプロシージャはトランザクション型ではありません。つまり、SET_TAGの結果はロールバックできません。

- データベースでデータ・ディクショナリの構築を実行する前に、SET_TAGプロシージャを実行してNULL以外のセッション・タグを設定した場合、ディクショナリの構築前に開始したトランザクションのREDOエントリに、セッションに指定したタグ値が含まれないことがあります。そのため、データ・ディクショナリの構築は、セッションでSET_TAGプロシージャを使用する前に実行します。データ・ディクショナリは、DBMS_CAPTURE_ADM.BUILDプロシージャを実行すると構築されます。BUILDプロシージャは、取得プロセスの作成時に自動的に実行できます。

関連項目:
BUILDプロシージャ

159 DBMS_STREAMS_ADM

DBMS_STREAMS_ADMパッケージは、Oracle Streamsパッケージの1つであり、Oracle Streams環境を構成するためのサブプログラムを提供します。また、このパッケージには、取得、伝播、適用およびデキューに関する簡単なルールの追加と削除を、表、スキーマおよびデータベースのレベルで実行するためのサブプログラムもあります。このパッケージには、XStreamアウトバウンド・サーバーおよびインバウンド・サーバーを構成および管理するためのサブプログラムも含まれます。

この章では、次の項目について説明します。

- DBMS_STREAMS_ADMの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

- DBMS_STREAMS_ADMサブプログラムの要約

DBMS_STREAMS_ADMの使用方法

この項では、DBMS_STREAMS_ADMパッケージの使用に関連する項目について説明します。

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 使用上の注意

概要

DBMS_STREAMS_ADMパッケージは、Oracle Streamsパッケージの1つであり、Oracle Streams環境を構成するためのサブプログラムを提供します。また、このパッケージには、取得、伝播、適用およびデキューに関する簡単なルールの追加と削除を、表、スキーマおよびデータベースのレベルで実行するためのサブプログラムもあります。これらのルールでは、論理変更レコード(LCR)がサポートされ、LCRには、行のLCRとデータ定義言語(DDL)のLCRがあります。このパッケージには、特定のメッセージ・タイプのメッセージ・ルールを作成するサブプログラムが用意されています。また、キューの作成およびOracle Streamsメタデータ(データ・ディクショナリ情報など)の管理を実行するサブプログラムもあります。

より複雑なルールが必要な場合は、第138章「DBMS_RULE」パッケージを参照してください。

関連項目:

- このパッケージおよびOracle Streamsの詳細は、『Oracle Streamsレプリケーション管理者ガイド』のOracle Streams概要および管理に関する項を参照してください。

- 第138章「DBMS_RULE」

推奨されないサブプログラム

注意:
推奨されないサブプログラムは、使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 10g リリース2(10.2)以上では、次のサブプログラムの使用は推奨されていません。

- MAINTAIN_SIMPLE_TABLESPACE
このプロシージャのかわりにMAINTAIN_SIMPLE_TTSプロシージャを使用してください。

関連項目:
MAINTAIN_SIMPLE_TTSプロシージャ

- MAINTAIN_TABLESPACES
このプロシージャのかわりにMAINTAIN_TTSプロシージャを使用してください。

関連項目:
MAINTAIN_TTSプロシージャ

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

ユーザーは各Oracle Streamsクライアントと関連付けられます。次の各項では、これらのユーザーについて説明します。

- Oracle Streams管理者

- 取得ユーザー

- 伝播ユーザー

- Oracle Streams適用プロセスの適用ユーザー

- XStreamインバウンド・サーバーの適用ユーザー

- メッセージ・クライアント・ユーザー

注意:
ユーザーには、このパッケージ内のサブプログラムを使用して複数の管理タスク(同期取得の作成など)を実行するための追加の権限を付与する必要があります。サブプログラムのために追加の権限が必要な場合、その権限は、サブプログラムを説明する項に記載されています。

Oracle Streams管理者

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、Oracle Streams管理者を構成し、このパッケージを使用するときにOracle Streams管理者として接続します。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

取得ユーザー

次のプロシージャを使用すると、取得プロセスを作成できます。

- ADD_GLOBAL_RULESプロシージャ

- ADD_SCHEMA_RULESプロシージャ

- ADD_SUBSET_RULESプロシージャ

- ADD_TABLE_RULESプロシージャ

次のプロシージャを使用すると、同期取得を作成できます。

- ADD_SUBSET_RULESプロシージャ

- ADD_TABLE_RULESプロシージャ

これらのプロシージャの1つによって取得プロセスまたは同期取得が作成されると、現行のユーザーが取得ユーザーとして設定されます。取得ユーザーとは、そのユーザーのセキュリティ・ドメイン内で、取得プロセスまたは同期取得が、そのルール・セットを満たす変更を取得し、これらのルールに対して構成されているカスタム・ルールベースの変換を実行するユーザーのことです。このユーザーには、変更を取得するためのいくつかの権限が必要です。前述のプロシージャを実行すると、取得プロセスまたは同期取得で使用されるキューに対するENQUEUE権限が取得ユーザーに付与され、その取得ユーザーがキューの保護キュー・ユーザーとして構成されます。

関連項目:
変更の取得に必要な権限は、「CREATE_CAPTUREプロシージャ」および「CREATE_SYNC_CAPTUREプロシージャ」を参照してください(「capture_userパラメータ」を参照)。

伝播ユーザー

次のプロシージャを使用すると、伝播を作成できます。

- ADD_GLOBAL_PROPAGATION_RULESプロシージャ

- ADD_MESSAGE_PROPAGATION_RULEプロシージャ

- ADD_SCHEMA_PROPAGATION_RULESプロシージャ

- ADD_SUBSET_PROPAGATION_RULESプロシージャ

- ADD_TABLE_PROPAGATION_RULESプロシージャ

伝播の作成時には、伝播ジョブも作成されることがあります。前述のプロシージャの1つを実行するときに伝播ジョブが作成されると、そのプロシージャを実行するユーザーが伝播ジョブの所有者になります。各伝播ジョブはOracle Schedulerジョブです。Oracle Schedulerを使用して、伝播ジョブのスケジュールを調整できます。

注意:

- ソース・キューの所有者は伝播を実行するユーザーであり、伝播ジョブの所有者は伝播ジョブを作成したユーザーです。これらのユーザーは、同一のユーザーの場合も、別のユーザーの場合もあります。

- 伝播を正しく動作させるには、メッセージを伝播するのに必要な権限をソース・キューの所有者に付与する必要があります。

関連項目:

- 必要な権限の詳細は、「CREATE_PROPAGATIONプロシージャ」を参照してください。

- 伝播ジョブが作成されるタイミングについては、「LCRに関する伝播ルール」を参照してください。

Oracle Streams適用プロセスの適用ユーザー

次のプロシージャを使用すると、適用プロセスを作成できます。

- ADD_GLOBAL_RULESプロシージャ

- ADD_MESSAGE_RULEプロシージャ

- ADD_SCHEMA_RULESプロシージャ

- ADD_SUBSET_RULESプロシージャ

- ADD_TABLE_RULESプロシージャ

これらのプロシージャの1つによって適用プロセスが作成されると、現行のユーザーが適用ユーザーとして設定されます。適用プロセスにおける適用ユーザーとは、そのセキュリティ・ドメイン内で、適用プロセスが、そのルール・セットを満たすメッセージをデキューするユーザーのことです。

適用ユーザーは、データベース・オブジェクトにメッセージを直接適用し、適用プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行し、適用プロセスに対して構成されている適用ハンドラを実行します。このユーザーには、変更を適用できる権限が必要です。前述のプロシージャを実行すると、適用プロセスで使用されるキューに対するDEQUEUE権限が適用ユーザーに付与され、その適用ユーザーがキューの保護キュー・ユーザーとして構成されます。

関連項目:
変更の適用に必要な権限は、「CREATE_APPLYプロシージャ」を参照してください(「apply_userパラメータ」を参照)。

XStreamインバウンド・サーバーの適用ユーザー

次のプロシージャを使用すると、XStreamインバウンド・サーバーを作成できます。

- ADD_GLOBAL_RULESプロシージャ

- ADD_SCHEMA_RULESプロシージャ

- ADD_SUBSET_RULESプロシージャ

- ADD_TABLE_RULESプロシージャ

注意:

- DBMS_XSTREAM_ADMパッケージのプロシージャを使用して、ルールを作成したり、ルールをXStreamインバウンド・サーバーに追加することをお薦めします。第204章「DBMS_XSTREAM_ADM」を参照してください。

- これらのプロシージャでは、アウトバウンド・サーバーは作成できません。

streams_nameパラメータの設定がNULLで、関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

適用プロセスは、取得プロセスから取得された論理変更レコード(LCR)を受信する場合は、適用プロセスのままです。適用プロセスは、取得プロセスから取得されたLCRを受信する前にXStreamクライアント・アプリケーションに連結されると、インバウンド・サーバーになることができます。初期接続の後では、適用プロセスがインバウンド・サーバーに変更されることはなく、インバウンド・サーバーが適用プロセスに変更されることもありません。

これらのプロシージャの1つによってインバウンド・サーバーが作成されると、現行のユーザーが適用ユーザーとして設定されます。適用ユーザーとは、そのセキュリティ・ドメイン内で、XStreamクライアント・アプリケーションがOracle Databaseに連結されるユーザーのことです。

適用ユーザーは、データベース・オブジェクトに変更を直接適用し、インバウンド・サーバー・ルールに対して構成されているカスタム・ルールベースの変換を実行し、インバウンド・サーバーに対して構成されている適用ハンドラを実行します。このユーザーには、変更を適用できる権限が必要です。前述のプロシージャを実行すると、インバウンド・サーバーで使用されるキューに対するDEQUEUE権限が適用ユーザーに付与され、その適用ユーザーが保護キュー・ユーザーとして構成されます。

各インバウンド・サーバーは、それぞれが一意の名前を持つ必要があります。この名前は、同じデータベースの適用プロセス、アウトバウンド・サーバーまたはメッセージ・クライアントでは使用できず、また、同じデータベースの別のインバウンド・サーバーでも使用できません。

関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが存在する場合、プロシージャではインバウンド・サーバーは作成されません。かわりに、プロシージャではその関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが使用されます。streams_nameパラメータで既存の適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが指定されている場合、その指定のクライアントが使用されます。

streams_nameパラメータがNULLで、streams_typeパラメータがapplyに設定されている場合、関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが次のいずれかの方法で特定されます。

- source_databaseパラメータで指定されるソース・データベースを使用し、queue_nameパラメータで指定されるキューを使用する既存の適用プロセスまたはアウトバウンド・サーバーが1つ存在する場合は、その適用プロセスまたはアウトバウンド・サーバーが選択されます。

- source_databaseパラメータの設定がNULLで、queue_nameパラメータで指定されるキューを使用する既存の適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが1つ存在する場合は、その適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが選択されます。

streams_nameパラメータの設定がNULLで、関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが複数存在する場合は、エラーが発生します。

注意:
XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

メッセージ・クライアント・ユーザー

次のプロシージャを使用すると、メッセージ・クライアントを作成できます。

- ADD_GLOBAL_RULESプロシージャ

- ADD_MESSAGE_RULEプロシージャ

- ADD_SCHEMA_RULESプロシージャ

- ADD_SUBSET_RULESプロシージャ

- ADD_TABLE_RULESプロシージャ

これらのプロシージャの1つによってメッセージ・クライアントが作成された場合は、メッセージ・クライアントを使用してキューからデキューする権限が、プロシージャを実行するユーザーに付与されます。前述のプロシージャを実行すると、このユーザーがキューの保護キュー・ユーザーとして構成され、このユーザーのみがメッセージ・クライアントを使用できます。

使用上の注意

このパッケージには、Oracle StreamsクライアントおよびXStreamクライアントのルールを作成するプロシージャやOracle Streams環境を構成するプロシージャがあります。次の各項では、これらのプロシージャの使用方法について説明します。

- Oracle StreamsクライアントおよびXStreamクライアントのルールを作成するプロシージャ

- Oracle Streams環境を構成するプロシージャ

Oracle StreamsクライアントおよびXStreamクライアントのルールを作成するプロシージャ

Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。XStreamクライアントには、XStreamアウトバウンド・サーバーおよびインバウンド・サーバーがあります。DBMS_STREAMS_ADMパッケージのプロシージャの中には、Oracle StreamsクライアントおよびXStreamクライアントのルール・セットにルールを追加するものがあります。ルールは、REDOログ内の変更に関するルール、表に対するデータ操作言語(DML)変更に関するルール、論理変更レコード(LCR)に関するルール、ユーザー・メッセージに関するルールに分類することができます。

論理変更レコード(LCR)は、データ操作言語(DML)の操作によって生じる行の変更を表すか、データ定義言語(DDL)の変更を表します。行の変更を表すLCRは行LCRと呼ばれ、DDLの変更を表すLCRはDDL LCRと呼ばれます。つまり、LCRは、取得プロセスまたは同期取得によって収集された変更を表すか、ユーザーまたはアプリケーションによって行われる変更を表すことができます。ユーザー・メッセージは、ユーザーが定義したタイプに基づくカスタム・メッセージで、ユーザーまたはアプリケーションによって作成されます。

取得プロセス、伝播、適用プロセス、メッセージ・クライアント、アウトバウンド・サーバーまたはインバウンド・サーバーには、ポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定できます。同期取得には、ポジティブ・ルール・セットのみを指定できます。

サブセット・ルールを作成するプロシージャ以外のすべてのプロシージャ、および同期取得以外のすべてのクライアントでは、作成したルールに対してルール・セットのタイプ(ポジティブまたはネガティブ)を指定するため、inclusion_ruleパラメータを使用します。指定されたタイプのルール・セットがクライアントに存在しない場合は、ルール・セットが自動的に作成され、そのルール・セットにルールが追加されます。クライアントの既存のルール・セット内にある他のルールは、この影響を受けません。ルール・セットに新しいルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。ポジティブ・ルール・セットとネガティブ・ルール・セットの両方がクライアントに存在する場合は、常にネガティブ・ルール・セットが先に評価されます。

次の各項では、各タイプのルールを詳しく説明します。

- REDOログ内の変更に関する取得プロセス・ルール

- 表に対するDML変更に関する同期取得ルール

- LCRに関する伝播ルール

- ユーザー・メッセージに関する伝播ルール

- LCRに関する適用プロセス・ルール

- ユーザー・メッセージに関する適用プロセス・ルール

- LCRに関するメッセージ・クライアント・ルール

- ユーザー・メッセージに関するメッセージ・クライアント・ルール

- LCRに関するXStreamアウトバウンド・サーバー・ルール

- LCRに関するXStreamインバウンド・サーバー・ルール

注意:
XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

関連項目:
Oracle Streamsでのルールの使用方法は、『Oracle Streams概要および管理』を参照してください。

REDOログ内の変更に関する取得プロセス・ルール

次に示すプロシージャでstreams_typeパラメータにcaptureを指定すると、取得プロセスのルール・セットにルールが追加されます。

- ADD_GLOBAL_RULESプロシージャは、ソース・データベースに対するすべての変更に関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_GLOBAL_RULESプロシージャ」を参照してください。

- ADD_SCHEMA_RULESプロシージャは、指定したスキーマに対する変更に関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SCHEMA_RULESプロシージャ」を参照してください。

- ADD_SUBSET_RULESプロシージャは、指定した表の行のサブセットに対するDMLの変更に関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。

- ADD_TABLE_RULESプロシージャは、指定した表に対する変更に関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。

前述のプロシージャの1つによって取得プロセスのポジティブ・ルール・セットにルールが追加されると、取得プロセスは、DMLの変更から生じる行の変更、またはDDLの変更(あるいはその両方)をソース・データベースから取得し、指定されたキューにそれらの変更をエンキューします。前述のプロシージャの1つによって取得プロセスのネガティブ・ルール・セットにルールが追加されると、取得プロセスは、行の変更、またはDDLの変更(あるいはその両方)をソース・データベースから削除します。

取得プロセスは、変更をソース・データベース上でローカルに取得するか、ダウンストリーム・データベース上でリモートに取得します。したがって、取得プロセス・ルールの場合は、ソース・データベース上またはダウンストリーム・データベース上でプロシージャを実行する必要があります。

取得プロセスがローカル取得プロセス、またはソース・データベースに対するデータベース・リンクを使用するダウンストリーム取得プロセスである場合は、インスタンス化に適したデータベース・オブジェクトが前述のプロシージャによって自動的に準備されます。

- ADD_GLOBAL_RULESは、DBMS_CAPTURE_ADMパッケージのPREPARE_GLOBAL_INSTANTIATIONプロシージャをソース・データベースで起動します。

- ADD_SCHEMA_RULESは、DBMS_CAPTURE_ADMパッケージのPREPARE_SCHEMA_INSTANTIATIONプロシージャをソース・データベースで起動します。

- ADD_SUBSET_RULESおよびADD_TABLE_RULESは、DBMS_CAPTURE_ADMパッケージのPREPARE_TABLE_INSTANTIATIONプロシージャをソース・データベースで起動します。

また、これらのプロシージャによって、インスタンス化用に用意される表の主キー、一意キー、外部キーおよびビットマップ索引の列でのサプリメンタル・ロギングも可能になります。主キー列のログは、無条件に記録されます。一意キー、外部キーおよびビットマップ索引の列のログは、条件付きで記録されます。

取得プロセスがソース・データベースに対するデータベース・リンクを使用しないダウンストリーム取得プロセスの場合は、インスタンス化に適したデータベース・オブジェクトの準備、および必要なサプリメンタル・ロギングの指定をソース・データベースでユーザーが手動で行う必要があります。

前述のプロシージャの1つをダウンストリーム・データベース上で実行する場合は、ユーザーがsource_databaseパラメータを使用してソース・データベースを指定し、あらかじめ存在する取得プロセスを指定する必要があります。このプロシージャがダウンストリーム・データベース上で実行される場合、プロシージャでは新たに取得プロセスを作成できません。ダウンストリーム・データベース上で取得プロセスを作成する場合は、DBMS_CAPTURE_ADMパッケージのCREATE_CAPTUREプロシージャを使用します。

関連項目:
CREATE_CAPTUREプロシージャ、およびインスタンス化するデータベース・オブジェクトを準備するプロシージャの詳細は、第34章「DBMS_CAPTURE_ADMサブプログラムの要約」を参照してください。

表に対するDML変更に関する同期取得ルール

次に示すプロシージャでstreams_typeパラメータにsync_captureを指定すると、同期取得のルール・セットにルールが追加されます。

- ADD_SUBSET_RULESプロシージャは、指定した表の行のサブセットに対するDMLの変更に関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。

- ADD_TABLE_RULESプロシージャは、指定した表に対するDML変更に関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。

前述のプロシージャの1つによって同期取得のポジティブ・ルール・セットにルールが追加されると、同期取得はソース・データベースでの表に対するDMLの変更から生じる行の変更を取得し、指定されたキューにそれらの変更をエンキューします。同期取得には、ネガティブ・ルール・セットを指定できません。

同期取得では、変更は同期取得が構成されたデータベースでローカルに取得されます。このデータベースは、同期取得によって取得される変更のソース・データベースです。したがって、同期取得ルールの場合は、ソース・データベース上でプロシージャを実行する必要があります。

これらのプロシージャでは、DBMS_CAPTURE_ADMパッケージのPREPARE_SYNC_INSTANTIATIONファンクションをソース・データベースで起動することによって、適切な表のインスタンス化が自動的に準備されます。

注意:

- 同期取得では、ADD_SUBSET_RULESまたはADD_TABLE_RULES以外のプロシージャによって作成された、ルール・セット内のルールは無視されます。

- ADD_TABLE_RULESまたはADD_SUBSET_RULESプロシージャによって同期取得ルール・セットにルールを追加する場合、プロシージャは指定された表で排他ロックを取得する必要があります。指定された表に未処理のトランザクションがある場合、プロシージャはロックを取得できるまで待機します。

LCRに関する伝播ルール

次のプロシージャは、LCRに関する伝播ルールを伝播のルール・セットに追加します。

- ADD_GLOBAL_PROPAGATION_RULESプロシージャは、ソース・キューのすべてのLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_GLOBAL_PROPAGATION_RULESプロシージャ」を参照してください。

- ADD_SCHEMA_PROPAGATION_RULESプロシージャは、ソース・キュー内のLCRのうち、指定したスキーマに対する変更が記録されるLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SCHEMA_PROPAGATION_RULESプロシージャ」を参照してください。

- ADD_SUBSET_PROPAGATION_RULESプロシージャは、ソース・キュー内の行LCRのうち、指定した表の行のサブセットに対するDMLの変更結果が記録される行LCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SUBSET_PROPAGATION_RULESプロシージャ」を参照してください。

- ADD_TABLE_PROPAGATION_RULESプロシージャは、ソース・キュー内のLCRのうち、指定した表に対する変更が記録されるLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_TABLE_PROPAGATION_RULESプロシージャ」を参照してください。

前述のプロシージャの1つによって伝播のポジティブ・ルール・セットに伝播ルールが追加される場合、追加された伝播ルールに従い、ソース・キューのLCRが宛先キューに伝播されます。前述のプロシージャの1つによって伝播のネガティブ・ルール・セットに伝播ルールが追加される場合、追加された伝播ルールに従い、ソース・キューのLCRが破棄されます。前述のプロシージャの1つを使用してルールを追加するときに、source_databseパラメータに値を指定すると、指定したソース・データベースに関する条件がルールに組み込まれます。

ユーザー・メッセージに関する伝播ルール

ADD_MESSAGE_PROPAGATION_RULEプロシージャは、伝播のルール・セットに対してメッセージ・ルールを追加します。このプロシージャによって伝播のポジティブ・ルール・セットにルールが追加される場合、追加された伝播ルールに従い、特定タイプのユーザー・メッセージのうち、ルール条件がTRUEと評価されるメッセージがソース・キューから宛先キューに伝播されます。このプロシージャによって伝播のネガティブ・ルール・セットにルールが追加される場合、追加された伝播ルールに従い、ソース・キュー内の特定タイプのユーザー・メッセージのうち、ルール条件がTRUEと評価されるメッセージが伝播によって破棄されます。このプロシージャによって作成されるルールには自動的にルール名が割り当てられます。

関連項目:
「ADD_MESSAGE_PROPAGATION_RULEプロシージャ」

LCRに関する適用プロセス・ルール

次に示すプロシージャでstreams_typeパラメータにapplyを指定し、streams_nameパラメータに適用プロセスを指定すると、適用プロセスのルール・セットにルールが追加されます。

- ADD_GLOBAL_RULESプロシージャは、適用プロセス・キュー内のすべてのLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_GLOBAL_RULESプロシージャ」を参照してください。

- ADD_SCHEMA_RULESプロシージャは、適用プロセス・キュー内のLCRのうち、指定したスキーマに対する変更が記録されるLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SCHEMA_RULESプロシージャ」を参照してください。

- ADD_SUBSET_RULESプロシージャは、適用プロセス・キュー内の行LCRのうち、指定した表の行のサブセットに対するDMLの変更結果が記録される行LCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。

- ADD_TABLE_RULESプロシージャは、適用プロセス・キュー内のLCRのうち、指定した表に対する変更が記録されるLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。

前述のプロシージャの1つによって適用プロセスのポジティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、適用プロセスのキュー内のLCRが適用されます。前述のプロシージャの1つによって適用プロセスのネガティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、適用プロセスのキュー内のLCRが破棄されます。適用プロセス・ルールの場合、これらのプロシージャを接続先データベースで実行する必要があります。

前述のプロシージャの1つで作成した適用プロセスによって変更を適用すると、値が'00'(2桁のゼロ)のタグが接続先データベースのREDOログ内に作成されます。DBMS_APPLY_ADMパッケージのALTER_APPLYプロシージャを使用すると、適用プロセスの作成後に必要に応じてタグの値を変更できます。

適用プロセスは、単一のソース・データベースから取得したLCRを適用できます。前述のプロシージャの1つによって適用プロセスが作成される場合は、source_databaseパラメータを使用して、適用プロセスにソース・データベースを指定する必要があります。source_databaseパラメータがNULLで、前述のプロシージャの1つによって適用プロセスが作成される場合は、適用プロセスに渡される最初のLCRのソース・データベース名が適用プロセス用のソース・データベースとして使用されます。

適用プロセス・ルール・セットのルールによって、適用プロセスがデキューするメッセージが決まります。前述のプロシージャの1つを使用してルールを追加するときに、source_databaseパラメータに値を指定すると、指定したソース・データベースに関する条件がルールに組み込まれます。適用プロセスのソース・データベースとは異なるソース・データベースで、適用プロセスによるLCRのデキューを行うと、エラーが発生します。また、既存の適用プロセスにルールを追加する場合は、適用プロセス用のソース・データベースと異なるデータベースをsource_databaseパラメータに指定できません。適用プロセスのソース・データベースを特定する場合は、DBA_APPLY_PROGRESSデータ・ディクショナリ・ビューへの問合せを行います。

前述のプロシージャの1つで作成した適用プロセスによって適用できるのは、ローカル・データベース上のメッセージと、取得済のメッセージに限られます。リモート・データベース上のメッセージを適用する適用プロセス、またはユーザー・メッセージを適用する適用プロセスを作成するには、DBMS_APPLY_ADMパッケージのCREATE_APPLYプロシージャを使用します。

また、DBMS_APPLY_ADM.CREATE_APPLYプロシージャを実行するときは、apply_captured、apply_user、apply_database_link、apply_tagの各パラメータに対してデフォルト以外の値を指定できます。作成済の適用プロセスのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージ内のいずれかのプロシージャを使用します。

関連項目:

- 「ALTER_APPLYプロシージャ」

- 「CREATE_APPLYプロシージャ」

ユーザー・メッセージに関する適用プロセス・ルール

ADD_MESSAGE_RULEプロシージャのstreams_typeパラメータにapplyを指定すると、適用プロセスのルール・セットに対してメッセージ・ルールが追加されます。適用プロセス・ルールの場合は、このプロシージャを接続先データベースで実行する必要があります。

このプロシージャによって適用プロセスのポジティブ・ルール・セットにルールが追加される場合、ユーザー・メッセージのうち、適用プロセス・ルールを満たす特定タイプのメッセージが適用プロセスによってデキューされ、メッセージ・ハンドラに送信されます。適用プロセス用のメッセージ・ハンドラが指定されていない場合は、DBMS_APPLY_ADMパッケージのALTER_APPLYプロシージャを使用して、メッセージ・ハンドラを設定する必要があります。このプロシージャによって適用プロセスのネガティブ・ルール・セットにルールが追加される場合、ユーザー・メッセージのうち、適用プロセス・ルールを満たす特定タイプのメッセージが適用プロセスによって破棄されます。

関連項目:

- ADD_MESSAGE_RULEプロシージャ

- ALTER_APPLYプロシージャ

LCRに関するメッセージ・クライアント・ルール

次に示すプロシージャでstreams_typeパラメータにdequeueを指定すると、メッセージ・クライアントのルール・セットにルールが追加されます。

- ADD_GLOBAL_RULESプロシージャは、メッセージ・クライアント・キュー内のすべてのLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_GLOBAL_RULESプロシージャ」を参照してください。

- ADD_SCHEMA_RULESプロシージャは、メッセージ・クライアント・キュー内のLCRのうち、指定したスキーマに対する変更が記録されるLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SCHEMA_RULESプロシージャ」を参照してください。

- ADD_SUBSET_RULESプロシージャは、メッセージ・クライアント・キュー内の行LCRのうち、指定した表の行のサブセットに対するDMLの変更結果が記録される行LCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。

- ADD_TABLE_RULESプロシージャは、メッセージ・クライアント・キュー内のLCRのうち、指定した表に対する変更が記録されるLCRに関してルール条件がTRUEと評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。

前述のプロシージャの1つによってメッセージ・クライアントのポジティブ・ルール・セットにルールが追加されると、メッセージ・クライアントは、source_databaseパラメータで指定したソース・データベースで作成された永続的な行LCRまたはDDL LCR(あるいはその両方)をデキューできます。前述のプロシージャの1つによってメッセージ・クライアントのネガティブ・ルール・セットにルールが追加されると、メッセージ・クライアントは、source_databaseパラメータで指定されるソース・データベース上で作成された永続的な行LCRまたはDDL LCR(あるいはその両方)を破棄します。これらのプロシージャは、メッセージ・クライアントによってメッセージをデキューするデータベース上で実行する必要があります。

ユーザー・メッセージに関するメッセージ・クライアント・ルール

ADD_MESSAGE_RULEプロシージャではstreams_typeパラメータにdequeueを指定すると、メッセージ・クライアントのルール・セットに対してメッセージ・ルールが追加されます。このプロシージャは、メッセージをデキューするデータベース上で実行する必要があります。

このプロシージャによってメッセージ・クライアントのポジティブ・ルール・セットにルールが追加された場合、ユーザー・メッセージのうち、メッセージ・ルールを満たす特定タイプのメッセージがメッセージ・クライアントによってデキューされます。このプロシージャによってメッセージ・クライアントのネガティブ・ルール・セットにルールが追加された場合、ユーザー・メッセージのうち、メッセージ・ルールを満たす特定タイプのメッセージがメッセージ・クライアントによって破棄されます。

関連項目:
「ADD_MESSAGE_RULEプロシージャ」

LCRに関するXStreamアウトバウンド・サーバー・ルール

次に示すプロシージャでstreams_typeパラメータにapplyを指定し、streams_nameパラメータにXStreamアウトバウンド・サーバーを指定すると、指定したアウトバウンド・サーバーのルール・セットにルールが追加されます。

- ADD_GLOBAL_RULESプロシージャは、すべてのLCRに関してルール条件がTRUEと評価されるルールを追加します。

- ADD_SCHEMA_RULESプロシージャは、指定したスキーマに対する変更が含まれるLCRに関してルール条件がTRUEと評価されるルールを追加します。

- ADD_SUBSET_RULESプロシージャは、指定した表の行のサブセットに対するDMLの変更結果が含まれる行LCRに関してルール条件がTRUEと評価されるルールを追加します。

- ADD_TABLE_RULESプロシージャは、指定した表に対する変更が含まれるLCRに関してルール条件がTRUEと評価されるルールを追加します。

これらのルールは、アウトバウンド・サーバーのキュー内のLCRに対して評価されます。

前述のプロシージャの1つによってアウトバウンド・サーバーのポジティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、アウトバウンド・サーバーのキュー内のLCRがXStreamクライアント・アプリケーションに送信されます。前述のプロシージャの1つによってアウトバウンド・サーバーのネガティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、アウトバウンド・サーバーのキュー内のLCRが破棄されます。アウトバウンド・サーバー・ルールの場合、XStreamクライアント・アプリケーションの連結先のデータベースで前述のプロシージャを実行してください。

アウトバウンド・サーバーは、単一のソース・データベースから取得したLCRを処理できます。ソース・データベースは、変更が発生したデータベースです。前述のプロシージャの1つによってアウトバウンド・サーバーのルール・セットにルールが追加される場合は、source_databaseパラメータを使用して、アウトバウンド・サーバーにソース・データベースを指定する必要があります。

アウトバウンド・サーバーのルール・セットのルールによって、アウトバウンド・サーバーがデキューするLCRが決まります。前述のプロシージャの1つを使用してルールを追加するときに、source_databaseパラメータに値を指定すると、指定したソース・データベースに関する条件がルールに組み込まれます。アウトバウンド・サーバーのソース・データベースとは異なるソース・データベースで、アウトバウンド・サーバーによるLCRのデキューを行うと、エラーが発生します。また、既存のアウトバウンド・サーバーにルールを追加する場合は、アウトバウンド・サーバー用のソース・データベースと異なるデータベースをsource_databaseパラメータに指定できません。アウトバウンド・サーバーのソース・データベースを特定する場合は、DBA_XSTREAM_OUTBOUNDデータ・ディクショナリ・ビューへの問合せを行います。

注意:
これらのプロシージャでは、XStreamアウトバウンド・サーバーを作成できません。作成済のアウトバウンド・サーバーのルール・セットにルールを追加するには、DBMS_STREAMS_ADMパッケージ内のいずれかのプロシージャを使用します。

関連項目:
アウトバウンド・サーバーの作成の詳細は、Oracle DatabaseのXStreamガイドを参照してください。

LCRに関するXStreamインバウンド・サーバー・ルール

次に示すプロシージャでstreams_typeパラメータにapplyを指定し、streams_nameパラメータにXStreamインバウンド・サーバーを指定すると、指定したインバウンド・サーバーのルール・セットにルールが追加されます。

- ADD_GLOBAL_RULESプロシージャは、インバウンド・サーバーに送信されたすべてのLCRに関してルール条件がTRUEと評価されるルールを追加します。

- ADD_SCHEMA_RULESプロシージャは、インバウンド・サーバーに送信された、指定したスキーマに対する変更が含まれるLCRに関してルール条件がTRUEと評価されるルールを追加します。

- ADD_SUBSET_RULESプロシージャは、インバウンド・サーバーに送信された、指定した表の行のサブセットに対するデータ定義言語(DML)の変更結果が含まれる行LCRに関してルール条件がTRUEと評価されるルールを追加します。

- ADD_TABLE_RULESプロシージャは、インバウンド・サーバーに送信された、指定した表に対する変更が含まれるLCRに関してルール条件がTRUEと評価されるルールを追加します。

前述のプロシージャの1つによってインバウンド・サーバーのポジティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、XStreamクライアント・アプリケーションによってインバウンド・サーバーに送信されたLCRが適用されます。前述のプロシージャの1つによってインバウンド・サーバーのネガティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、XStreamクライアント・アプリケーションによってインバウンド・サーバーに送信されたLCRが破棄されます。インバウンド・サーバー・ルールの場合、XStreamクライアント・アプリケーションの連結先のデータベースで前述のプロシージャを実行してください。インバウンド・サーバーにルール・セットが存在しない場合、XStreamクライアント・アプリケーションによってインバウンド・サーバーに送信されたすべてのLCRが適用されます。

前述のプロシージャの1つで作成したインバウンド・サーバーによって変更を適用すると、値が'00'(2桁のゼロ)のタグが接続先データベースのREDOログ内に作成されます。DBMS_APPLY_ADMパッケージのALTER_APPLYプロシージャを使用すると、インバウンド・サーバーの作成後に必要に応じてタグの値を変更できます。

XStreamインバウンド・サーバーのルール・セットのルールによって、XStreamクライアント・アプリケーションからLCRを受信した後にどのLCRが適用され、どのLCRが破棄されるかが決まります。インバウンド・サーバーでは、XStreamクライアント・アプリケーションから送信されたLCRのみが処理されます。

前述のプロシージャの1つによってインバウンド・サーバーのルールが作成される場合、source_databaseパラメータは無視されます。

注意:
streams_nameパラメータに指定された名前が存在しない場合、前述のプロシージャでは常に適用プロセスが作成されます。適用プロセスは、取得プロセスから取得されたLCRを受信する場合は、適用プロセスのままです。適用プロセスは、取得プロセスからLCRを受信する前にXStreamクライアント・アプリケーションに連結されると、インバウンド・サーバーになることができます。初期接続の後では、適用プロセスがインバウンド・サーバーに変更されることはなく、インバウンド・サーバーが適用プロセスに変更されることもありません。

関連項目:
インバウンド・サーバーの作成の詳細は、Oracle DatabaseのXStreamガイドを参照してください。

Oracle Streams環境を構成するプロシージャ

このパッケージの次のプロシージャは、Oracle Streamsで管理される環境を構成します。

- MAINTAIN_CHANGE_TABLEプロシージャは、ソース・テーブルに対して行われたデータ操作言語(DML)の変更をチェンジ・テーブルに記録する、Oracle Streams環境を構成します。このプロシージャは、オプションで、表の一方向レプリケーション(ソース・データベースから接続先データベースへ)を構成することもできます。

- MAINTAIN_GLOBALプロシージャは、データベース・レベルの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。

- MAINTAIN_SCHEMASプロシージャは、指定されたスキーマへの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。

- MAINTAIN_SIMPLE_TTSプロシージャは、ソース・データベース内の単一表領域のクローンを接続先データベースに作成し、指定された表領域への変更をこれらの2つのデータベース間でレプリケートするOracle Streams環境を構成します。

- MAINTAIN_TABLESプロシージャは、指定された表への変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。

- MAINTAIN_TTSプロシージャは、ソース・データベース内の表領域セットのクローンを接続先データベースに作成し、指定された表領域への変更をこれらの2つのデータベース間でレプリケートするOracle Streams環境を構成します。

- PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャ

Oracle Streamsレプリケーションの構成を完了するには、PRE_INSTANTIATION_SETUPプロシージャとPOST_INSTANTIATION_SETUPプロシージャの両方を組み合せて使用する必要があります。通常、PRE_INSTANTIATION_SETUPプロシージャとPOST_INSTANTIATION_SETUPプロシージャは、データベースの保守操作に使用されます(停止時間はほとんど生じません)。詳細は、『Oracle Streams概要および管理』を参照してください。

次の各項では、これらのプロシージャの使用方法について説明します。

- 自動プラットフォーム変換

- これらのプロシージャで実行される処理

- 構成の進行状況およびリカバリ機能

- これらのプロシージャの実行要件

- 構成プロシージャの共通パラメータ

関連項目:
これらのプロシージャの使用方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

自動プラットフォーム変換

ソース・データベースと接続先データベースを異なるプラットフォームで実行する場合は、転送されるデータファイルが、これらのプロシージャまたはこれらのプロシージャで生成されるスクリプトによって適切なプラットフォームに自動的に変換されます。

これらのプロシージャで実行される処理

これらのいずれかのプロシージャによって実行されるすべての処理の詳細を確認するには、そのプロシージャを使用してスクリプトを生成し、テキスト・エディタでそのスクリプトを表示します。

構成の進行状況およびリカバリ機能

perform_actionsパラメータをTRUEに設定して、これらのいずれかのプロシージャを実行すると、その構成処理に関するメタデータがデータ・ディクショナリ・ビューのDBA_RECOVERABLE_SCRIPT、DBA_RECOVERABLE_SCRIPT_PARAMS、DBA_RECOVERABLE_SCRIPT_BLOCKSおよびDBA_RECOVERABLE_SCRIPT_ERRORSに記録されます。エラーが発生したためプロシージャが停止した場合は、エラーの原因となった状況を解消してからRECOVER_OPERATIONプロシージャを使用すると、構成を完了できます。

注意:
perform_actionsパラメータをFALSEに設定して、これらのいずれかのプロシージャを実行した場合は、前述のビューにデータが格納されません。また、これらのいずれかのプロシージャで生成されたスクリプトを実行した場合も、データはビューに格納されません。

関連項目:
「RECOVER_OPERATIONプロシージャ」

これらのプロシージャの実行要件

これらのいずれかのプロシージャを使用する場合は、次の要件を満たすように注意してください。

- プロシージャは、取得データベースで実行します。取得データベースとは、ソース・データベースに加えられた変更を取得する取得プロセスを含むデータベースのことです。取得データベースがソース・データベースと同一の場合は、ローカル取得プロセスが構成されます。取得データベースがソース・データベースと異なる場合は、ダウンストリーム取得プロセスが構成されます。取得データベースの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

- プロシージャを実行するユーザーは、ソース・データベースから接続先データベースへのデータベース・リンクを使用できる必要があります。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。

- プロシージャでダウンストリーム取得を構成する場合は、取得データベース上の対応するユーザーが、データベース・リンクを使用してソース・データベースにアクセスできる必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。

- プロシージャでダウンストリーム取得を構成し、取得データベースが接続先データベースと異なる場合は、取得データベース上の対応するユーザーが、データベース・リンクを使用して接続先データベースにアクセスできる必要があります。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。

- 構成時に、両方のデータベースがオープンしている必要があります。プロシージャでスクリプトの生成のみを行う場合は、プロシージャの実行時に、destination_databaseパラメータで指定されるデータベースが開いている必要はありませんが、生成されたスクリプトを実行するときは、両方のデータベースをオープンしておく必要があります。

- プロシージャを実行するユーザーには、DBAロールを付与してください。また、次の処理を実行するための権限も必要です。

- ANYDATAキュー、取得プロセス、伝播および適用プロセスを作成する権限。

- サプリメンタル・ロギングを指定する権限。

- DBMS_STREAMS_ADMおよびDBMS_AQADMパッケージのサブプログラムを実行する権限。

- destination_databaseパラメータで指定されたデータベースにデータベース・リンクを通じてアクセスする権限。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。

通常、DBAロールは、構成の完了後に必要に応じてユーザーから取り消します。

- プロシージャまたはこれらのプロシージャによって生成されるスクリプトは、Oracle Database 10gリリース2以上のデータベースで実行する必要があります。

- プロシージャでperform_actionsパラメータをTRUEに設定してOracle Streams環境を直接構成する場合は、そのプロシージャで構成されるすべてのデータベースがOracle Database 10gリリース2以上のデータベースである必要があります。

- プロシージャでperform_actionsパラメータをFALSEに設定し、生成されたスクリプトで環境を構成する場合は、そのスクリプトで構成されるデータベースがOracle Database 10gリリース1以上である必要があります。スクリプトを使用してOracle Database 10g リリース1のデータベースを構成する場合は、Oracle Database 10g リリース2以上のみで使用可能な機能(キューからキューへの伝播など)が構成されないように、スクリプトを変更する必要があります。

- 指定する各ディレクトリ・オブジェクトは、SQL文のCREATE DIRECTORYを使用して作成する必要があります。このプロシージャを起動するユーザーには、それぞれのディレクトリ・オブジェクトに対するREAD権限およびWRITE権限が必要です。

- プロシージャにbi_directionalパラメータが含まれており、そのbi_directionalパラメータがTRUEに設定されている場合、またはソース・データベースが取得データベースでない場合は、共有するデータベース・オブジェクトが含まれているデータベースをsource_databaseパラメータで指定する必要があります。destination_databaseパラメータで指定するデータベースには、これらのデータベース・オブジェクトが含まれない場合があります。接続先データベースに共有データベース・オブジェクトが含まれていない場合、プロシージャ(PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャは除く)は、接続先データベースのデータベース・オブジェクトをインスタンス化します。

- プロシージャにbi_directionalパラメータが含まれており、そのbi_directionalパラメータがTRUEに設定されている場合、またはネットワークのインスタンス化を実行する場合は、接続先データベース上の対応するユーザーが、データベース・リンクを使用してソース・データベースにアクセスできる必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。

これらのプロシージャを実行するユーザーが、必要な権限を所有するには、各データベースにOracle Streams管理者を構成し、そのOracle Streams管理者のスキーマ内に各データベース・リンクを作成する必要があります。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構成プロシージャの共通パラメータ

表159-1に、Oracle Streams環境を構成する、このパッケージのプロシージャに共通のパラメータを示します。表159-1のパラメータの一部のみを含むプロシージャもあります。

表159-1 構成プロシージャの共通パラメータ

パラメータ

説明

perform_actions

TRUEに設定すると、環境を直接構成するために必要な処理が実行されます。

FALSEに設定すると、環境を直接構成するために必要な処理が実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、perform_actionsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、環境の構成に使用するすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、perform_actionsパラメータがTRUEの場合は、指定したスクリプトが生成され、環境を直接構成する処理が実行されます。

このパラメータがNULLで、perform_actionsパラメータがTRUEの場合は、環境を直接構成する処理が実行され、スクリプトは生成されません。

このパラメータがNULLで、perform_actionsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

capture_name

変更を取得するように構成する各取得プロセスの名前。所有者を指定しないでください。bi_directionalパラメータの設定をTRUEに設定すると、指定した名前で各取得プロセスが作成されます。

指定した名前が既存の取得プロセスの名前と一致した場合は、その既存の取得プロセスが使用され、データベースへの変更を取得するためのルールが取得プロセスのポジティブ・ルール・セットに追加されます。

NULLに設定すると、作成される個々の取得プロセスの名前が自動的に生成されます。

注意: 取得プロセスは、作成した後で名前を変更することはできません。

capture_queue_table

取得プロセスで使用する各キューのキュー表の名前で、[schema_name.]queue_table_nameという形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLに設定すると、取得プロセスで使用する各キューのキュー表の名前が自動的に生成され、現行のユーザーが各キュー表の所有者になります。

capture_queue_name

取得プロセスで使用する各キューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

NULLに設定すると、取得プロセスで使用する各キューの名前が自動的に生成されます。

capture_queue_user

ソース・データベース内のキューに対するENQUEUE権限とDEQUEUE権限を必要とするユーザーの名前。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

propagation_name

変更を転送するように構成する各伝播の名前。所有者を指定しないでください。

指定した名前が既存の伝播の名前と一致した場合は、その既存の伝播が使用され、変更を転送するためのルールが伝播のポジティブ・ルール・セットに追加されます。

NULLに設定すると、作成される個々の伝播の名前が自動的に生成されます。

注意: 伝播は、作成した後で名前を変更することは変更できません。

apply_name

変更を適用するように構成する各適用プロセスの名前。所有者を指定しないでください。

指定した名前が既存の適用プロセスの名前と一致した場合は、その既存の適用プロセスが使用され、変更を適用するためのルールが適用プロセスのポジティブ・ルール・セットに追加されます。

指定する適用プロセス名が、接続先データベースにある既存のメッセージ・クライアントの名前と同じにならないように注意してください。

NULLに設定すると、作成される個々の適用プロセスの名前が自動的に生成されます。NULLに設定した場合、ソース・データベースからの変更を適用する適用プロセスは接続先データベース上に存在できません。ソース・データベースからの変更を適用する適用プロセスが接続先データベースに存在する場合は、このパラメータにNULL以外の値を指定します。

注意: 適用プロセスは、作成した後で名前を変更することはできません。

apply_queue_table

適用プロセスで使用する各キューのキュー表の名前で、[schema_name.]queue_table_nameという形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLに設定すると、適用プロセスで使用する各キューのキュー表の名前が自動的に生成され、現行のユーザーが各キュー表の所有者になります。

apply_queue_name

適用プロセスで使用する各キューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

NULLに設定すると、適用プロセスで使用する各キューの名前が自動的に生成されます。

apply_queue_user

接続先データベース内のキューに対するENQUEUE権限とDEQUEUE権限を必要とするユーザーの名前。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

bi_directional

source_databaseで指定されるデータベースと、destination_databaseで指定されるデータベースとの間で、双方向のレプリケーションを構成する場合は、TRUEを指定します。両方のデータベースがソース・データベースおよび接続先データベースとして構成され、両方のデータベースへの変更を取得するための取得プロセスと適用プロセスが構成されて、それらの変更を転送するための伝播が構成されます。TRUEの場合は、ソース・データベースと同じグローバル名を持つ、接続先データベースからソース・データベースへのデータベース・リンクが存在する必要があります。

source_databaseで指定されるデータベースと、destination_databaseで指定されるデータベースとの間で、一方向のレプリケーションを構成する場合は、FALSEを指定します。取得プロセスは現行のデータベース上に構成され、適用プロセスは接続先データベース上に構成されます。伝播は、必要に応じて構成されます。

関連項目: 伝播が構成される場合については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

include_ddl

DMLとDDLの両方の変更を管理するOracle Streamsレプリケーション環境を構成する場合は、TRUEに設定します。

DML変更のみを管理するOracle Streamsレプリケーション環境を構成する場合は、FALSEに設定します。このパラメータをFALSEに設定すると、ALTER TABLEなどのDDL変更はレプリケートされません。

DBMS_STREAMS_ADMサブプログラムの要約

表159-2 DBMS_STREAMS_ADMパッケージのサブプログラム

サブプログラム

説明

ADD_COLUMNプロシージャ

指定されたルールを満たす行論理変更レコード(行LCR)に列を追加する宣言ルールベースの変換を追加または削除します。

ADD_GLOBAL_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_GLOBAL_RULESプロシージャ

取得プロセス、適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。

ADD_MESSAGE_PROPAGATION_RULEプロシージャ

伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにメッセージ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_MESSAGE_RULEプロシージャ

適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットまたはネガティブ・ルール・セットにメッセージ・ルールを追加します。指定された適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。

ADD_SCHEMA_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_SCHEMA_RULESプロシージャ

取得プロセス、適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。

ADD_SUBSET_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットにサブセット・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_SUBSET_RULESプロシージャ

取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットにサブセット・ルールを追加します。指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。

ADD_TABLE_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットに表ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_TABLE_RULESプロシージャ

取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントのルール・セットに表ルールを追加します。指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。

CLEANUP_INSTANTIATION_SETUPプロシージャ

このパッケージのPRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって設定されたOracle Streamsレプリケーション構成を削除します。

DELETE_COLUMNプロシージャ

指定されたルールを満たす行LCRから列を削除する宣言ルールベースの変換を追加または削除します。

GET_MESSAGE_TRACKINGファンクション

現在のセッションの追跡ラベルを戻します。

GET_SCN_MAPPINGプロシージャ

Oracle Streamsレプリケーション環境内のOracle Streamsの取得プロセスと適用プロセスで使用するために、システム変更番号(SCN)に関する情報を取り出します。

GET_TAGファンクション

現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

KEEP_COLUMNSプロシージャ

指定されたルールを満たす行LCR内の列のリストを保持する宣言ルールベースの変換を追加または削除します。

MAINTAIN_CHANGE_TABLEプロシージャ

ソース・テーブルに対して行われたデータ操作言語(DML)の変更をチェンジ・テーブルに記録する、Oracle Streams環境を構成します。このプロシージャは、オプションで、表の一方向レプリケーション(ソース・データベースから接続先データベースへ)を構成することもできます。

MAINTAIN_GLOBALプロシージャ

データベース・レベルの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。

MAINTAIN_SCHEMASプロシージャ

指定されたスキーマへの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。

MAINTAIN_SIMPLE_TABLESPACEプロシージャ

ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。このプロシージャの使用は推奨されていません。

MAINTAIN_SIMPLE_TTSプロシージャ

ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。

MAINTAIN_TABLESプロシージャ

指定された表への変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。

MAINTAIN_TABLESPACESプロシージャ

ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。このプロシージャの使用は推奨されていません。

MAINTAIN_TTSプロシージャ

ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。

MERGE_STREAMSプロシージャ

1つの取得プロセスからのストリームを別の取得プロセスからのストリームとマージします。

MERGE_STREAMS_JOBプロシージャ

元の取得プロセスおよびクローニングされた取得が、指定されたマージしきい値内にあるかどうかを判別し、マージしきい値内にある場合は、MERGE_STREAMSプロシージャを実行して2つのストリームをマージします。

POST_INSTANTIATION_SETUPプロシージャ

Oracle Streamsレプリケーション環境を構成するために、インスタンス化後に必要な処理を実行します。

PRE_INSTANTIATION_SETUPプロシージャ

Oracle Streamsレプリケーション環境を構成するために、インスタンス化前に必要な処理を実行します。

PURGE_SOURCE_CATALOGプロシージャ

指定されたオブジェクトに属するすべてのOracle Streamsデータ・ディクショナリ情報をローカル・データベースから削除します。

RECOVER_OPERATIONプロシージャ

エラーが発生したため停止したOracle Streamsレプリケーション構成の操作に対するオプションを提供します。このプロシージャは、操作のロールフォワード、操作のロールバック、操作に関するすべてのメタデータのパージのいずれかの処理を実行します。

REMOVE_QUEUEプロシージャ

指定されたANYDATAキューを削除します。

REMOVE_RULEプロシージャ

指定された取得プロセス、同期取得、伝播、適用プロセスまたはメッセージ・クライアントに関連付けられたルール・セットから、特定のルールまたはすべてのルールを削除します。

REMOVE_STREAMS_CONFIGURATIONプロシージャ

ローカル・データベースからOracle Streams構成を削除します。

RENAME_COLUMNプロシージャ

指定されたルールを満たす行LCR内の列の名前を変更する宣言ルールベースの変換を追加または削除します。

RENAME_SCHEMAプロシージャ

指定されたルールを満たす行LCR内のスキーマの名前を変更する宣言ルールベースの変換を追加または削除します。

RENAME_TABLEプロシージャ

指定されたルールを満たす行LCR内の表の名前を変更する宣言ルールベースの変換を追加または削除します。

SET_MESSAGE_NOTIFICATIONプロシージャ

指定されたOracle Streamsメッセージ・クライアントによって特定のキューからデキュー可能なメッセージに関する通知を設定します。

SET_MESSAGE_TRACKINGプロシージャ

現在のセッションで生成された論理変更レコード(LCR)の追跡ラベルを設定します。

SET_RULE_TRANSFORM_FUNCTIONプロシージャ

ルールベースの変換に関する変換ファンクション名を設定または削除します。

SET_TAGプロシージャ

現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。

SET_UP_QUEUEプロシージャ

Oracle Streamsの取得機能、伝播機能および適用機能で使用するキュー表とキューを作成します。

SPLIT_STREAMSプロシージャ

取得プロセスからの1つのストリームを、その取得プロセスからの他のすべてのストリームから分割します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

ADD_COLUMNプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(行LCR)に列を追加する宣言ルールベースの変換を追加または削除します。

指定されたルールがTRUEに評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。

このプロシージャはオーバーロードされています。column_valueパラメータとcolumn_functionパラメータは、両方同時には指定できません。

注意:

- ADD_COLUMN変換では、BLOB、CLOB、NCLOB、BFILE、LONG、LONG RAW、ROWID、ユーザー定義タイプ(オブジェクト・タイプ、REF、VARRAY、ネストした表)およびオラクル社提供のタイプ(任意のタイプ、XMLタイプ、空間タイプ、メディア・タイプ)などは追加できません。

- 宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。

関連項目:
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS_ADM.ADD_COLUMN(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_name   IN  VARCHAR2,
column_value  IN  ANYDATA,
value_type    IN  VARCHAR2     DEFAULT 'NEW',
step_number   IN  NUMBER       DEFAULT 0,
operation     IN  VARCHAR2     DEFAULT 'ADD');

DBMS_STREAMS_ADM.ADD_COLUMN(
rule_name        IN  VARCHAR2,
table_name       IN  VARCHAR2,
column_name      IN  VARCHAR2,
column_function  IN  VARCHAR2,
value_type       IN  VARCHAR2     DEFAULT 'NEW',
step_number      IN  NUMBER       DEFAULT 0,
operation        IN  VARCHAR2     DEFAULT 'ADD');

パラメータ

表159-3 ADD_COLUMNプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列を追加する表の名前で、[schema_name.]object_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

column_name

ルールを満たす各行LCRに追加する列の名前。

column_value

追加する列の値。列のデータ・タイプおよび値に適したANYDATAファンクションを指定します。たとえば、追加する列のデータ・タイプがNUMBERで、値がNULLの場合は、ANYDATA.ConvertNumber(NULL)ファンクションを指定します。

column_functionパラメータが指定されている場合、このパラメータは指定できません。

column_function

'SYSDATE'または'SYSTIMESTAMP'のいずれかのSQLファンクション。

'SYSDATE'SQLファンクションは、データベースが存在するオペレーティング・システムの現在の日付と時刻のセットを戻します。戻り値のデータ・タイプはDATEです。戻り値の書式は、NLS_DATE_FORMAT初期化パラメータの値によって異なります。

'SYSTIMESTAMP' SQLファンクションは、データベースが存在するオペレーティング・システムの日時(小数秒およびタイムゾーンを含む)を戻します。戻りタイプは、TIMESTAMP WITH TIME ZONEです。

このファンクションは、ルールの評価結果がTRUEの場合に実行されます。

column_valueパラメータが指定されている場合、このパラメータは指定できません。

value_type

行LCRの新しい値に列を追加する場合は、'NEW'を指定します。

行LCRの古い値に列を追加する場合は、'OLD'を指定します。

step_number

変換の実行順序。

関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列追加の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_nameおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合のADD_COLUMNプロシージャの動作を示します。

table_name

column_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての列追加変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されているstep_numberのすべての列追加変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているcolumn_nameおよびstep_numberのすべての列追加変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているtable_nameおよびstep_numberのすべての列追加変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているcolumn_nameのすべての列追加変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているtable_nameおよびcolumn_nameのすべての列追加変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameのすべての列追加変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているtable_name、column_nameおよびstep_numberのすべての列追加変換が削除されます。

ADD_GLOBAL_PROPAGATION_RULESプロシージャ

このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES(
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
dml_rule_name           OUT  VARCHAR2,
ddl_rule_name           OUT  VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES(
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

パラメータ

表159-4 ADD_GLOBAL_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、論理変更レコード(LCR)にNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。伝播のポジティブ・ルール・セットにルールが追加される場合、NULL以外のタグがLCRにあるかどうかに関係なく、LCRは常に伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRのタグの値に関係なく、LCRが破棄されます。

FALSEに設定すると、LCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。伝播のポジティブ・ルール・セットにルールが追加される場合、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRにNULLのタグがあるときにかぎり、LCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、伝播のポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、伝播のネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるグローバル・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(データベース名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。データベース名と順序番号を組み合せた名前が長すぎる場合は、データベース名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。

関連項目:

- このプロシージャによって作成されるルールの詳細は、「使用上の注意」および「LCRに関する伝播ルール」を参照してください。

- 「伝播ユーザー」

例

次に、DMLの変更に関して作成されるグローバル・ルール条件の例を示します。

(:dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_GLOBAL_RULESプロシージャ

このプロシージャは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、データベース全体に対する変更を取得する取得プロセス・ルールを追加します。このルールの詳細は、「REDOログ内の変更に関する取得プロセス・ルール」を参照してください。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内のすべての論理変更レコード(LCR)を適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関する適用プロセス・ルール」を参照してください。

- streams_typeパラメータをdequeueに設定すると、このプロシージャは、すべての永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関するメッセージ・クライアント・ルール」を参照してください。

指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

注意:
グローバル・ルールを取得プロセスのポジティブ・ルールセットに追加する場合は、Oracle Streamsでサポートされていないデータベース・オブジェクトを除外するルールを、取得プロセスのネガティブ・ルールセットに追加してください。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

注意:
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。

構文

DBMS_STREAMS_ADM.ADD_GLOBAL_RULES(
streams_type        IN   VARCHAR2,
streams_name        IN   VARCHAR2  DEFAULT NULL,
queue_name          IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml         IN   BOOLEAN   DEFAULT TRUE,
include_ddl         IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr  IN   BOOLEAN   DEFAULT FALSE,
source_database     IN   VARCHAR2  DEFAULT NULL,
dml_rule_name       OUT  VARCHAR2,
ddl_rule_name       OUT  VARCHAR2,
inclusion_rule      IN   BOOLEAN   DEFAULT TRUE,
and_condition       IN   VARCHAR2  DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_GLOBAL_RULES(
streams_type        IN   VARCHAR2,
streams_name        IN   VARCHAR2  DEFAULT NULL,
queue_name          IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml         IN   BOOLEAN   DEFAULT TRUE,
include_ddl         IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr  IN   BOOLEAN   DEFAULT FALSE,
source_database     IN   VARCHAR2  DEFAULT NULL,
inclusion_rule      IN   BOOLEAN   DEFAULT TRUE,
and_condition       IN   VARCHAR2  DEFAULT NULL);

パラメータ

表159-5 ADD_GLOBAL_RULESプロシージャのパラメータ

パラメータ

説明

streams_type

Oracle Streamsクライアントのタイプを次のように指定します。

- 取得プロセスの場合は、capture。

- 適用プロセスの場合は、apply。

- メッセージ・クライアントの場合は、dequeue。

streams_name

取得プロセス、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。

このパラメータがNULLで、streams_typeパラメータがcaptureまたはdequeueであり、キューに関連する取得プロセスまたはメッセージ・クライアントが1つ存在する場合は、そのOracle Streamsクライアントが使用されます。キューに関連するOracle Streamsクライアントが存在しない場合は、システム生成の名前でOracle Streamsクライアントが自動的に作成されます。このパラメータがNULLで、指定したstreams_typeのOracle Streamsクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、REDOエントリは常に取得の対象とみなされ、LCRは常に適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、タグの値に関係なく、REDOエントリまたはLCRが破棄されます。

FALSEに設定すると、REDOエントリまたはLCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリが取得の対象とみなされ、LCRが適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリまたはLCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。

メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、NULLを指定します。このプロシージャによって作成されるルールにソース・データベースに関する条件を付加する場合は、そのソース・データベースを指定します。ソース・データベースはLCRに記録される情報の一部ですが、ユーザーが作成するLCRには、ソース・データベースの情報が記録されない場合もあります。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、Oracle Streamsクライアントのポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、Oracle Streamsクライアントのネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるグローバル・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

使用上の注意

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(データベース名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。データベース名と順序番号を組み合せた名前が長すぎる場合は、データベース名が切り捨てられます。取得プロセス、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

例

次に、DMLの変更に関して作成されるグローバル・ルール条件の例を示します。

(:dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_MESSAGE_PROPAGATION_RULEプロシージャ

このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにメッセージ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンではOUTパラメータrule_nameを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_STREAMS_ADM.ADD_MESSAGE_PROPAGATION_RULE(
message_type            IN   VARCHAR2,
rule_condition          IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
rule_name               OUT  VARCHAR2,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_MESSAGE_PROPAGATION_RULE(
message_type            IN   VARCHAR2,
rule_condition          IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

パラメータ

表159-6 ADD_MESSAGE_PROPAGATION_RULEプロシージャのパラメータ

パラメータ

説明

message_type

メッセージのタイプ。このタイプには、VARCHAR2、NUMBERなどのOracle組込みタイプまたはユーザー定義のタイプを指定できます。

メッセージのタイプがOracle組込みタイプでない場合は、[schema_name.]type_nameという形式で指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

たとえば、VARCHAR2を指定するには、VARCHAR2(n)と入力し、nにはサイズを指定します。strmadminスキーマ内のusr_msgというタイプを指定するには、このパラメータにstrmadmin.usr_msgと入力します。

VARCHAR2、NVARCHAR2またはRAWデータ・タイプには、サイズの指定が必要です。

関連項目: データ・タイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

rule_condition

メッセージのタイプに適用されるルール条件。ルール条件に指定されるルール変数名は、次のように指定する必要があります。

:msg

関連項目: 「例」

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

inclusion_rule

inclusion_ruleをTRUEに設定すると、伝播のポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、伝播のネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

rule_name

ルール名が出力されます。

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャを使用してメッセージ・ルール用の新しいルール・セットを作成する場合、新しいルール・セットには評価コンテキストがありません。指定したメッセージ・タイプに評価コンテキストが存在しない場合は、このプロシージャによって新しい評価コンテキストが作成され、新しいルールと関連付けられます。新しい評価コンテキストには、システム生成の名前が付けられます。既存のメッセージ・タイプを使用する新しいルールを作成した場合は、そのメッセージ・タイプ用の既存の評価コンテキストが新しいルールで使用されます。

関連項目:

- このプロシージャによって作成されるルールの詳細は、「使用上の注意」および「ユーザー・メッセージに関する伝播ルール」を参照してください。

- 「伝播ユーザー」

例

メッセージ・タイプがVARCHAR2(128)であるとします。このタイプでは、次のようなルール条件を指定できます。

':msg = ''HQ'''

VARCHAR2(128)タイプのユーザー・メッセージの値がHQの場合、このルール条件はTRUEと評価されます。

usr_msgというメッセージ・タイプに、source_dbname、owner、nameおよびmessageの属性が設定されているとします。このタイプでは、次のようなルール条件を指定できます。

':msg.source_dbname = ''DBS1.NET'' AND ' || ':msg.owner = ''HR'' AND  ' ||
':msg.name = ''EMPLOYEES'''

このルール条件がTRUEと評価されるのは、usr_msgタイプのユーザー・メッセージのsource_dbname属性がDBS1.NET、owner属性がHR、およびname属性がEMPLOYEESの場合です。

注意:
前述の例の引用符は、すべて一重引用符です。

ADD_MESSAGE_RULEプロシージャ

このプロシージャは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してメッセージ・ルールを追加します。

- streams_typeパラメータをapplyに設定すると、このプロシージャは、特定のメッセージ・タイプのユーザー・メッセージをキューからデキューする適用プロセス・ルールを追加します。このようなルールの詳細は、「ユーザー・メッセージに関する適用プロセス・ルール」を参照してください。

- streams_typeパラメータをdequeueに設定すると、このプロシージャは、特定のメッセージ・タイプのユーザー・メッセージをキューからデキューするメッセージ・クライアント・ルールを追加します。このようなルールの詳細は、「ユーザー・メッセージに関するメッセージ・クライアント・ルール」を参照してください。

このプロシージャは、指定されたOracle Streamsクライアントが存在しない場合、そのOracle Streamsクライアントも作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンではOUTパラメータrule_nameを使用しますが、もう一方のバージョンでは使用しません。

注意:
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。

構文

DBMS_STREAMS_ADM.ADD_MESSAGE_RULE(
message_type    IN   VARCHAR2,
rule_condition  IN   VARCHAR2,
streams_type    IN   VARCHAR2,
streams_name    IN   VARCHAR2  DEFAULT NULL,
queue_name      IN   VARCHAR2  DEFAULT 'streams_queue',
inclusion_rule  IN   BOOLEAN   DEFAULT TRUE,
rule_name       OUT  VARCHAR2);

DBMS_STREAMS_ADM.ADD_MESSAGE_RULE(
message_type    IN   VARCHAR2,
rule_condition  IN   VARCHAR2,
streams_type    IN   VARCHAR2,
streams_name    IN   VARCHAR2  DEFAULT NULL,
queue_name      IN   VARCHAR2  DEFAULT 'streams_queue',
inclusion_rule  IN   BOOLEAN   DEFAULT TRUE);

パラメータ

表159-7 ADD_MESSAGE_RULEプロシージャのパラメータ

パラメータ

説明

message_type

メッセージのタイプ。このタイプには、VARCHAR2、NUMBERなどのOracle組込みタイプまたはユーザー定義のタイプを指定できます。

メッセージのタイプがOracle組込みタイプでない場合は、[schema_name.]type_nameという形式で指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

たとえば、VARCHAR2を指定するには、VARCHAR2(n)と入力し、nにはサイズを指定します。strmadminスキーマ内のusr_msgというタイプを指定するには、このパラメータにstrmadmin.usr_msgと入力します。

VARCHAR2、NVARCHAR2またはRAWデータ・タイプには、サイズの指定が必要です。

関連項目: データ・タイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

rule_condition

メッセージのタイプに適用されるルール条件。ルール条件に指定されるルール変数名は、次のように指定する必要があります。

:msg

関連項目: 「例」

streams_type

メッセージ・コンシューマのタイプ。apply(適用プロセスの場合)またはdequeue(メッセージ・クライアントの場合)のどちらかを指定します。

streams_name

Oracle Streams適用プロセスまたはメッセージ・クライアントの名前。

streams_typeとしてapplyを指定した場合は、適用プロセスの名前を指定します。所有者を指定しないでください。指定された適用プロセスが存在しない場合は、システム生成の名前で自動的に作成されます。

streams_typeとしてdequeueを指定した場合は、メッセージ・クライアントの名前を指定します。たとえば、ユーザーstrmadminがメッセージ・クライアントである場合、strmadminと指定します。

このパラメータがNULLで、キューに関連する適用プロセスまたはメッセージ・クライアントが1つ存在する場合は、関連する適用プロセスまたはメッセージ・クライアントの名前が使用されます。このパラメータがNULLで、キューに関連する適用プロセスまたはメッセージ・クライアントが複数存在する場合は、エラーが発生します。

このパラメータがNULLで、指定したstreams_typeのOracle Streamsクライアントがキューに存在しない場合は、システム生成の名前で適用プロセスまたはメッセージ・クライアントが自動的に作成されます。

適用プロセスとメッセージ・クライアントに同じ名前を付けることはできません。

queue_name

メッセージをデキューするローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

inclusion_rule

inclusion_ruleをTRUEに設定すると、適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、適用プロセスまたはメッセージ・クライアントのネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

rule_name

ルール名が出力されます。

使用上の注意

適用プロセス・ルールを追加するときに、適用プロセスが存在しない場合は、このプロシージャによって作成されます。このプロシージャによって作成される適用プロセスは、ユーザー・メッセージのみを適用可能であり、デキューされたメッセージは、適用プロセス用のメッセージ・ハンドラに送信します。メッセージ・クライアント・ルールを追加するときに、メッセージ・クライアントが存在しない場合は、このプロシージャによって作成されます。

このプロシージャを使用してメッセージ・ルール用の新しいルール・セットを作成する場合、新しいルール・セットには評価コンテキストがありません。指定したメッセージ・タイプに評価コンテキストが存在しない場合は、このプロシージャによって新しい評価コンテキストが作成され、新しいルールと関連付けられます。新しい評価コンテキストには、システム生成の名前が付けられます。既存のメッセージ・タイプを使用する新しいルールを作成した場合は、そのメッセージ・タイプ用の既存の評価コンテキストが新しいルールで使用されます。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

- 適用プロセス用のメッセージ・ハンドラの設定方法は、「ALTER_APPLYプロシージャ」を参照してください。

例

メッセージ・タイプがVARCHAR2(128)であるとします。このタイプでは、次のようなルール条件を指定できます。

':msg = ''HQ'''

VARCHAR2(128)タイプのユーザー・メッセージの値がHQの場合、このルール条件はTRUEと評価されます。

usr_msgというメッセージ・タイプに、source_dbname、owner、nameおよびmessageの属性が設定されているとします。このタイプでは、次のようなルール条件を指定できます。

':msg.source_dbname = ''DBS1.NET'' AND ' || ':msg.owner = ''HR'' AND  ' ||
':msg.name = ''EMPLOYEES'''

このルール条件がTRUEと評価されるのは、usr_msgタイプのユーザー・メッセージのsource_dbname属性がDBS1.NET、owner属性がHR、およびname属性がEMPLOYEESの場合です。

注意:
前述の例の引用符は、すべて一重引用符です。

ADD_SCHEMA_PROPAGATION_RULESプロシージャ

このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name             IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
dml_rule_name           OUT  VARCHAR2,
ddl_rule_name           OUT  VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name             IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

パラメータ

表159-8 ADD_SCHEMA_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。たとえば、hrのように指定します。

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、論理変更レコード(LCR)にNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。伝播のポジティブ・ルール・セットにルールが追加される場合、NULL以外のタグがLCRにあるかどうかに関係なく、LCRは常に伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRのタグの値に関係なく、LCRが破棄されます。

FALSEに設定すると、LCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。伝播のポジティブ・ルール・セットにルールが追加される場合、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRにNULLのタグがあるときにかぎり、LCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、伝播のポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、伝播のネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるスキーマ・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(スキーマ名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。スキーマ名と順序番号を組み合せた名前が長すぎる場合は、スキーマ名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。

関連項目:

- このプロシージャによって作成されるルールの詳細は、「使用上の注意」および「LCRに関する伝播ルール」を参照してください。

- 「伝播ユーザー」

例

次に、DMLの変更に関して作成されるスキーマ・ルール条件の例を示します。

((:dml.get_object_owner() = 'HR') and :dml.is_null_tag() = 'Y'
and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_SCHEMA_RULESプロシージャ

このプロシージャは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、指定したスキーマに対する変更を取得する取得プロセス・ルールを追加します。このルールの詳細は、「REDOログ内の変更に関する取得プロセス・ルール」を参照してください。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内の論理変更レコード(LCR)のうち、指定したスキーマに対する変更が記録されるLCRを適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関する適用プロセス・ルール」を参照してください。

- streams_typeパラメータをdequeueに設定すると、このプロシージャは、指定したスキーマに対する変更が記録される永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関するメッセージ・クライアント・ルール」を参照してください。

指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

注意:
スキーマ・ルールを取得プロセスのポジティブ・ルールセットに追加する場合は、Oracle Streamsでサポートされていない、スキーマ内のデータベース・オブジェクトを除外するルールを、取得プロセスのネガティブ・ルールセットに必ず追加するようにしてください。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

注意:
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。

構文

DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
schema_name         IN   VARCHAR2,
streams_type        IN   VARCHAR2,
streams_name        IN   VARCHAR2  DEFAULT NULL,
queue_name          IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml         IN   BOOLEAN   DEFAULT TRUE,
include_ddl         IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr  IN   BOOLEAN   DEFAULT FALSE,
source_database     IN   VARCHAR2  DEFAULT NULL,
dml_rule_name       OUT  VARCHAR2,
ddl_rule_name       OUT  VARCHAR2,
inclusion_rule      IN   BOOLEAN   DEFAULT TRUE,
and_condition       IN   VARCHAR2  DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
schema_name         IN   VARCHAR2,
streams_type        IN   VARCHAR2,
streams_name        IN   VARCHAR2  DEFAULT NULL,
queue_name          IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml         IN   BOOLEAN   DEFAULT TRUE,
include_ddl         IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr  IN   BOOLEAN   DEFAULT FALSE,
source_database     IN   VARCHAR2  DEFAULT NULL,
inclusion_rule      IN   BOOLEAN   DEFAULT TRUE,
and_condition       IN   VARCHAR2  DEFAULT NULL);

パラメータ

表159-9 ADD_SCHEMA_RULESプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。たとえば、hrのように指定します。

Oracle Streamsではスキーマの有無がチェックされないため、まだ存在しないスキーマも指定できます。

streams_type

Oracle Streamsクライアントのタイプを次のように指定します。

- 取得プロセスの場合は、capture。

- 適用プロセスの場合は、apply。

- メッセージ・クライアントの場合は、dequeue。

streams_name

取得プロセス、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。

このパラメータがNULLで、streams_typeパラメータがcaptureまたはdequeueであり、キューに関連する取得プロセスまたはメッセージ・クライアントが1つ存在する場合は、そのOracle Streamsクライアントが使用されます。キューに関連するOracle Streamsクライアントが存在しない場合は、システム生成の名前でOracle Streamsクライアントが自動的に作成されます。このパラメータがNULLで、指定したstreams_typeのOracle Streamsクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、REDOエントリは常に取得の対象とみなされ、LCRは常に適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、タグの値に関係なく、REDOエントリまたはLCRが破棄されます。

FALSEに設定すると、REDOエントリまたはLCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリが取得の対象とみなされ、LCRが適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリまたはLCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。

メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、NULLを指定します。このプロシージャによって作成されるルールにソース・データベースに関する条件を付加する場合は、そのソース・データベースを指定します。ソース・データベースはLCRに記録される情報の一部ですが、ユーザーが作成するLCRには、ソース・データベースの情報が記録されない場合もあります。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、Oracle Streamsクライアントのポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、Oracle Streamsクライアントのネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるスキーマ・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

使用上の注意

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(スキーマ名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。スキーマ名と順序番号を組み合せた名前が長すぎる場合は、スキーマ名が切り捨てられます。取得プロセス、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

例

次に、DMLの変更に関して作成されるスキーマ・ルール条件の例を示します。

((:dml.get_object_owner() = 'HR') and :dml.is_null_tag() = 'Y'
and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_SUBSET_PROPAGATION_RULESプロシージャ

このプロシージャは、ソース・キュー内の論理変更レコード(LCR)のうち、指定した表の行のサブセットに関連するLCRを宛先キューに伝播するための伝播ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは3つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES(
table_name               IN   VARCHAR2,
dml_condition            IN   VARCHAR2,
streams_name             IN   VARCHAR2  DEFAULT NULL,
source_queue_name        IN   VARCHAR2,
destination_queue_name   IN   VARCHAR2,
include_tagged_lcr       IN   BOOLEAN   DEFAULT FALSE,
source_database          IN   VARCHAR2  DEFAULT NULL,
insert_rule_name         OUT  VARCHAR2,
update_rule_name         OUT  VARCHAR2,
delete_rule_name         OUT  VARCHAR2,
queue_to_queue           IN   BOOLEAN   DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES(
table_name               IN   VARCHAR2,
dml_condition            IN   VARCHAR2,
streams_name             IN   VARCHAR2  DEFAULT NULL,
source_queue_name        IN   VARCHAR2,
destination_queue_name   IN   VARCHAR2,
include_tagged_lcr       IN   BOOLEAN   DEFAULT FALSE,
source_database          IN   VARCHAR2  DEFAULT NULL,
queue_to_queue           IN   BOOLEAN   DEFAULT NULL);

パラメータ

表159-10 ADD_SUBSET_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定した表は、伝播と同じデータベースに存在する必要があります。また、指定した表では、現在および将来にわたり、LOB列、LONG列、LONG RAW列またはXMLType列を使用できません。

dml_condition

サブセット条件。SQLのWHERE句に条件を指定する場合と同じ方法で、サブセット条件を指定します。

たとえば、salaryが4000を超え、かつjob_idがSA_MANである行をhr.employees表で指定するには、次のように条件を入力します。

' salary > 4000 and job_id = ''SA_MAN'' '

注意: 前述の例の引用符は、すべて一重引用符です。

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_tagged_lcr

TRUEの場合は、LCRにNULL以外のタグがあるかどうかに関係なく、LCRが常に伝播の対象とみなされます。データベースの完全なコピー(スタンバイなど)を作成するときには、この設定をお薦めします。

FALSEの場合は、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、FALSEの設定が有効です。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

insert_rule_name

システムによって生成されたINSERTルール名が出力されます。このルールによって、挿入と、挿入に変換する必要がある更新が制御されます。

update_rule_name

システムによって生成されたUPDATEルール名が出力されます。このルールによって、更新のまま変換されない更新が制御されます。

delete_rule_name

システムによって生成されたDELETEルール名が出力されます。このルールによって、削除と、削除に変換する必要がある更新が制御されます。

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャを実行すると、指定された伝播に対して3つのルール(INSERT文に関するルール、UPDATE文に関するルール、DELETE文に関するルール)が生成されます。INSERT文とDELETE文については、dml_conditionパラメータで指定された条件を満たす行LCRのみが伝播されます。UPDATE文については、次のバリエーションがあります。

- 行LCRの新旧の値が両方とも指定のdml_conditionを満たす場合、その行LCRは変更なしで伝播されます。

- 行LCRの新旧の値が両方とも指定のdml_conditionを満たさない場合、その行LCRは伝播されません。

- 行LCRの古い値が指定のdml_conditionを満たし、新しい値が満たさない場合、更新行LCRは削除行LCRに変換されます。

- 行LCRの新しい値が指定のdml_conditionを満たし、古い値が満たさない場合、更新行LCRは挿入行LCRに変換されます。

更新が挿入または削除に変換されることを行の移行と呼びます。

伝播では、これらのルールがフィルタ処理に使用されます。伝播にポジティブ・ルール・セットがない場合は、ポジティブ・ルール・セットが自動的に作成され、表に変更を伝播するためのルールがポジティブ・ルール・セットに追加されます。サブセット・ルールはポジティブ・ルール・セットのみに追加可能で、ネガティブ・ルール・セットには追加できません。伝播の既存のポジティブ・ルール・セット内にある他のルールは、この影響を受けません。新しいルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

このプロシージャを実行すると、INSERT文、UPDATE文およびDELETE文のルールが自動的に作成され、これらのルールには、システム生成のルール名が指定されます。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。ADD_SUBSET_RULESプロシージャがオーバーロードされているため、INSERT文、UPDATE文およびDELETE文に対するシステム生成のルール名が戻されます。

表のサブセット・ルールを作成する場合は、表のすべての列を保持するソース・データベースで、無条件のサプリメンタル・ログ・グループを作成してください。サプリメンタル・ロギングは、更新を挿入に変換する必要がある場合に必要です。この変換を正しく実行するには、伝播ルールに列値がすべて設定されている必要があります。

注意:
サブセット・ルールはポジティブ・ルール・セットの内部のみで使用できます。ネガティブ・ルール・セットにはサブセット・ルールを追加できません。ネガティブ・ルール・セットにサブセット・ルールを追加すると、ネガティブ・ルール・セットによって破棄されないLCRに対して行の移行が実行されないため、予期しない結果が発生する場合があります。

関連項目:

- このプロシージャによって作成されるルールの詳細は、「使用上の注意」および「LCRに関する伝播ルール」を参照してください。

- 「伝播ユーザー」

例

次に、行LCRのフィルタ処理に関して作成されるルール条件の例を示します。このルール条件では、dml_conditionがregion_id = 2、table_nameがhr.regions、およびsource_databaseがdbs1.netである場合の更新操作を示します。

:dml.get_object_owner()='HR' AND :dml.get_object_name()='REGIONS'
AND :dml.is_null_tag()='Y' AND :dml.get_source_database_name()='DBS1.NET'
AND :dml.get_command_type()='UPDATE'
AND (:dml.get_value('NEW','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"').AccessNumber()=2)
AND (:dml.get_value('NEW','"REGION_ID"').AccessNumber()=2)

ADD_SUBSET_RULESプロシージャ

このプロシージャは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、指定した表の行のサブセットに対する変更を取得する取得プロセス・ルールを追加します。このルールの詳細は、「REDOログ内の変更に関する取得プロセス・ルール」を参照してください。

- streams_typeパラメータをsync_captureに設定すると、このプロシージャは、指定した表の行のサブセットに対する変更を取得するルールを追加します。このルールの詳細は、「表に対するDML変更に関する同期取得ルール」を参照してください。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内の論理変更レコード(LCR)のうち、指定した表の行のサブセットに対する変更が記録されるLCRを適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関する適用プロセス・ルール」を参照してください。

- streams_typeパラメータをdequeueに設定すると、このプロシージャは、指定した表の行のサブセットに対する変更が記録される永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関するメッセージ・クライアント・ルール」を参照してください。

指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは3つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

注意:

- 現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。

- 起動ユーザーには、同期取得を作成するためのDBAロールを付与する必要があります。

構文

DBMS_STREAMS_ADM.ADD_SUBSET_RULES(
table_name          IN   VARCHAR2,
dml_condition       IN   VARCHAR2,
streams_type        IN   VARCHAR2 DEFAULT 'apply',
streams_name        IN   VARCHAR2 DEFAULT NULL,
queue_name          IN   VARCHAR2 DEFAULT 'streams_queue',
include_tagged_lcr  IN   BOOLEAN  DEFAULT FALSE,
source_database     IN   VARCHAR2 DEFAULT NULL,
insert_rule_name    OUT  VARCHAR2,
update_rule_name    OUT  VARCHAR2,
delete_rule_name    OUT  VARCHAR2);

DBMS_STREAMS_ADM.ADD_SUBSET_RULES(
table_name          IN   VARCHAR2,
dml_condition       IN   VARCHAR2,
streams_type        IN   VARCHAR2 DEFAULT 'apply',
streams_name        IN   VARCHAR2 DEFAULT NULL,
queue_name          IN   VARCHAR2 DEFAULT 'streams_queue',
include_tagged_lcr  IN   BOOLEAN  DEFAULT FALSE,
source_database     IN   VARCHAR2 DEFAULT NULL);

パラメータ

表159-11 ADD_SUBSET_RULESプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定する表は、取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントと同じデータベース内に存在する必要があります。また、指定した表では、現在および将来にわたり、LOB列、LONG列、LONG RAW列またはXMLType列を使用できません。

dml_condition

サブセット条件。SQLのWHERE句に条件を指定する場合と同じ方法で、サブセット条件を指定します。

たとえば、salaryが4000を超え、かつjob_idがSA_MANである行をhr.employees表で指定するには、次のように条件を入力します。

' salary > 4000 and job_id = ''SA_MAN'' '

注意: 前述の例の引用符は、すべて一重引用符です。

streams_type

Oracle Streamsクライアントのタイプを次のように指定します。

- 取得プロセスの場合は、capture。

- 同期取得の場合は、sync_capture。

- 適用プロセスの場合は、apply。

- メッセージ・クライアントの場合は、dequeue。

streams_name

取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。

このパラメータがNULLで、streams_typeパラメータがcapture、sync_captureまたはdequeueであり、キューに関連する取得プロセス、同期取得またはメッセージ・クライアントが1つ存在する場合は、そのOracle Streamsクライアントが使用されます。キューに関連するOracle Streamsクライアントが存在しない場合は、システム生成の名前でOracle Streamsクライアントが自動的に作成されます。このパラメータがNULLで、指定したstreams_typeのOracle Streamsクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールまたは同期取得ルールの場合は、取得プロセスまたは同期取得によってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。

include_tagged_lcr

TRUEの場合、Oracle Streamsクライアントはタグに関係なくそのアクションを実行します。

- REDOエントリは、NULL以外のタグがあるかどうかに関係なく、常に取得プロセスによる取得の対象とみなされます。

- 変更は、変更を行うセッションにNULL以外のタグがあるかどうかに関係なく、常に同期取得による取得の対象とみなされます。

- LCRは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、常にメッセージ・クライアントによる適用プロセスまたはデキューの適用対象とみなされます。

FALSEの場合、Oracle Streamsクライアントは、タグがNULLの場合にのみ、そのアクションを実行します。

- REDOエントリは、NULLタグがある場合にのみ、取得プロセスによる取得の対象とみなされます。

- 変更は、変更を行うセッションにNULLタグがある場合にのみ、同期取得による取得の対象とみなされます。

- LCRは、NULLタグがある場合にのみ、メッセージ・クライアントによる適用プロセスまたはデキューの適用対象とみなされます。

通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、FALSEの設定が有効です。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

同期取得ルールの場合は、ローカル・データベースの名前を指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。

メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、NULLを指定します。このプロシージャによって作成されるルールにソース・データベースに関する条件を付加する場合は、そのソース・データベースを指定します。ソース・データベースはLCRに記録される情報の一部ですが、ユーザーが作成するLCRには、ソース・データベースの情報が記録されない場合もあります。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

insert_rule_name

システムによって生成されたINSERTルール名が出力されます。このルールによって、挿入と、挿入に変換する必要がある更新が制御されます。

update_rule_name

システムによって生成されたUPDATEルール名が出力されます。このルールによって、更新のまま変換されない更新が制御されます。

delete_rule_name

システムによって生成されたDELETEルール名が出力されます。このルールによって、削除と、削除に変換する必要がある更新が制御されます。

使用上の注意

このプロシージャを実行すると、指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントに対して3つのルール(INSERT文に関するルール、UPDATE文に関するルール、DELETE文に関するルール)が生成されます。INSERT文とDELETE文については、dml_conditionパラメータで指定された条件を満たすDML変更のみが取得、適用、デキューの対象となります。UPDATE文については、次のバリエーションがあります。

- DML変更の新旧の値が両方とも指定のdml_conditionを満たす場合、そのDML変更は変更なしでそのまま取得、適用、デキューの対象となります。

- DML変更の新旧の値が両方とも指定のdml_conditionを満たさない場合、そのDML変更は取得、適用、デキューの対象となりません。

- DML変更の古い値が指定のdml_conditionを満たし、新しい値が満たさない場合、DML変更は削除に変換されます。

- DML変更の新しい値が指定のdml_conditionを満たし、古い値が満たさない場合、DML変更は挿入に変換されます。

更新が挿入または削除に変換されることを行の移行と呼びます。

取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。Oracle Streamsクライアントにポジティブ・ルール・セットがない場合は、ポジティブ・ルール・セットが自動的に作成され、表に関するルールがポジティブ・ルール・セットに追加されます。サブセット・ルールはポジティブ・ルール・セットのみに追加可能で、ネガティブ・ルール・セットには追加できません。プロセスの既存のルール・セット内にある他のルールは、この影響を受けません。新しいルールを追加するには、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用します。

このプロシージャを実行すると、INSERT文、UPDATE文およびDELETE文のルールが自動的に作成され、これらのルールには、システム生成のルール名が指定されます。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。ADD_SUBSET_RULESプロシージャがオーバーロードされているため、INSERT文、UPDATE文およびDELETE文に対するシステム生成のルール名が戻されます。

注意:
サブセット・ルールはポジティブ・ルール・セットの内部のみで使用できます。ネガティブ・ルール・セットにはサブセット・ルールを追加できません。ネガティブ・ルール・セットにサブセット・ルールを追加すると、ネガティブ・ルール・セットによって破棄されないLCRに対して行の移行が実行されないため、予期しない結果が発生する場合があります。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

例

次に、DML変更のフィルタ処理に関して作成されるルール条件の例を示します。このルール条件では、dml_conditionがregion_id = 2、table_nameがhr.regions、かつsource_databaseがdbs1.netである場合の更新操作を示します。

:dml.get_object_owner()='HR' AND :dml.get_object_name()='REGIONS'
AND :dml.is_null_tag()='Y' AND :dml.get_source_database_name()='DBS1.NET'
AND :dml.get_command_type()='UPDATE'
AND (:dml.get_value('NEW','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"').AccessNumber()=2)
AND (:dml.get_value('NEW','"REGION_ID"').AccessNumber()=2)

ADD_TABLE_PROPAGATION_RULESプロシージャ

このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットに表ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name              IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
dml_rule_name           OUT  VARCHAR2,
ddl_rule_name           OUT  VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name              IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

パラメータ

表159-12 ADD_TABLE_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

table_name

表の名前で、[schema_name.]table_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

生成されるルールは、表で動作するDDL変更または表内のオブジェクト(表の索引、トリガーなど)で動作するDDL変更に対してはTRUEと評価されます。また、表を参照しないDDL変更または下位の表を参照するDDL変更に対してはFALSEと評価されます。たとえば、表に基づいてシノニムまたはビューを作成する変更に対してはFALSEと評価されます。また、表を参照するPL/SQLサブプログラムへの変更に対してもFALSEと評価されます。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、論理変更レコード(LCR)にNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。伝播のポジティブ・ルール・セットにルールが追加される場合、NULL以外のタグがLCRにあるかどうかに関係なく、LCRは常に伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRのタグの値に関係なく、LCRが破棄されます。

FALSEに設定すると、LCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。伝播のポジティブ・ルール・セットにルールが追加される場合、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRにNULLのタグがあるときにかぎり、LCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、伝播のポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、伝播のネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成される表ルールをTRUEと評価するには、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。

関連項目:

- このプロシージャによって作成されるルールの詳細は、「使用上の注意」および「LCRに関する伝播ルール」を参照してください。

- 「セキュリティ・モデル」

例

次に、DML文のフィルタ処理に関して作成される表ルール条件の例を示します。

(((:dml.get_object_owner() = 'HR' and :dml.get_object_name() = 'LOCATIONS'))
and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_TABLE_RULESプロシージャ

このプロシージャは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、指定した表に対する変更を取得する取得プロセス・ルールを追加します。このルールの詳細は、「REDOログ内の変更に関する取得プロセス・ルール」を参照してください。

- streams_typeパラメータをsync_captureに設定すると、このプロシージャは、指定した表に対する変更を取得するルールを追加します。このルールの詳細は、「表に対するDML変更に関する同期取得ルール」を参照してください。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内の論理変更レコード(LCR)のうち、指定した表に対する変更が記録されるLCRを適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関する適用プロセス・ルール」を参照してください。

- streams_typeパラメータをdequeueに設定すると、このプロシージャは、指定した表に対する変更が記録される永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。このルールの詳細は、「LCRに関するメッセージ・クライアント・ルール」を参照してください。

指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

注意:

- 現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。

- 起動ユーザーには、同期取得を作成するためのDBAロールを付与する必要があります。

構文

DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name          IN   VARCHAR2,
streams_type        IN   VARCHAR2,
streams_name        IN   VARCHAR2 DEFAULT NULL,
queue_name          IN   VARCHAR2 DEFAULT 'streams_queue',
include_dml         IN   BOOLEAN  DEFAULT TRUE,
include_ddl         IN   BOOLEAN  DEFAULT FALSE,
include_tagged_lcr  IN   BOOLEAN  DEFAULT FALSE,
source_database     IN   VARCHAR2 DEFAULT NULL,
dml_rule_name       OUT  VARCHAR2,
ddl_rule_name       OUT  VARCHAR2,
inclusion_rule      IN   BOOLEAN   DEFAULT TRUE,
and_condition       IN   VARCHAR2  DEFAULT NULL);

DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name          IN   VARCHAR2,
streams_type        IN   VARCHAR2,
streams_name        IN   VARCHAR2 DEFAULT NULL,
queue_name          IN   VARCHAR2 DEFAULT 'streams_queue',
include_dml         IN   BOOLEAN  DEFAULT TRUE,
include_ddl         IN   BOOLEAN  DEFAULT FALSE,
include_tagged_lcr  IN   BOOLEAN  DEFAULT FALSE,
source_database     IN   VARCHAR2 DEFAULT NULL,
inclusion_rule      IN   BOOLEAN   DEFAULT TRUE,
and_condition       IN   VARCHAR2  DEFAULT NULL);

パラメータ

表159-13 ADD_TABLE_RULESプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

Oracle Streamsでは表の有無がチェックされないため、まだ存在しない表も指定できます。

streams_type

Oracle Streamsクライアントのタイプを次のように指定します。

- 取得プロセスの場合は、capture。

- 同期取得の場合は、sync_capture。

- 適用プロセスの場合は、apply。

- メッセージ・クライアントの場合は、dequeue。

streams_name

取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。

このパラメータがNULLで、streams_typeパラメータがcapture、sync_captureまたはdequeueであり、キューに関連する取得プロセス、同期取得またはメッセージ・クライアントが1つ存在する場合は、そのOracle Streamsクライアントが使用されます。キューに関連するOracle Streamsクライアントが存在しない場合は、システム生成の名前でOracle Streamsクライアントが自動的に作成されます。このパラメータがNULLで、指定したstreams_typeのOracle Streamsクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールまたは同期取得ルールの場合は、取得プロセスまたは同期取得によってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。

include_dml

TRUEに設定すると、DMLの変更に関するDMLルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するDDLルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

生成されるルールは、表で動作するDDL変更または表内のオブジェクト(表の索引、トリガーなど)で動作するDDL変更に対してはTRUEと評価されます。また、表を参照しないDDL変更または下位の表を参照するDDL変更に対してはFALSEと評価されます。たとえば、表に基づいてシノニムまたはビューを作成する変更に対してはFALSEと評価されます。また、表を参照するPL/SQLサブプログラムへの変更に対してもFALSEと評価されます。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、REDOエントリ、セッションまたはLCRにNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。Oracle Streamsクライアントのポジティブ・ルール・セットにルールが追加される場合は、Oracle Streamsクライアントはタグに関係なくそのアクションを実行します。

- REDOエントリは、NULL以外のタグがあるかどうかに関係なく、常に取得プロセスによる取得の対象とみなされます。

- 変更は、変更を行うセッションにNULL以外のタグがあるかどうかに関係なく、常に同期取得による取得の対象とみなされます。

- LCRは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、常にメッセージ・クライアントによる適用プロセスまたはデキューの適用対象とみなされます。

ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。Oracle Streamsクライアントのネガティブ・ルール・セットにルールが追加される場合は、タグの値に関係なく、データベース変更が破棄されます。

FALSEに設定すると、REDOエントリ、セッションまたはLCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。Oracle Streamsクライアントのポジティブ・ルール・セットにルールが追加される場合は、Oracle Streamsクライアントは、タグがNULLの場合にのみ、そのアクションを実行します。

- REDOエントリは、NULLタグがある場合にのみ、取得プロセスによる取得の対象とみなされます。

- 変更は、変更を行うセッションにNULLタグがある場合にのみ、同期取得による取得の対象とみなされます。

- LCRは、NULLタグがある場合にのみ、メッセージ・クライアントによる適用プロセスまたはデキューの適用対象とみなされます。

ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。Oracle Streamsクライアントのネガティブ・ルール・セットにルールが追加される場合は、NULLのタグがあるときにかぎり、データベース変更を破棄できます。

通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、FALSEの設定が有効です。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

同期取得ルールの場合は、ローカル・データベースの名前を指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。

メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、NULLを指定します。このプロシージャによって作成されるルールにソース・データベースに関する条件を付加する場合は、そのソース・データベースを指定します。ソース・データベースはLCRに記録される情報の一部ですが、ユーザーが作成するLCRには、ソース・データベースの情報が記録されない場合もあります。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、Oracle Streamsクライアントのポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、Oracle Streamsクライアントのネガティブ・ルール・セットにルールが追加されます。同期取得には、ネガティブ・ルール・セットを指定できません。同期取得にFALSEを指定すると、エラーが発生します。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成される表ルールをTRUEと評価するには、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

使用上の注意

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

例

次に、DMLの変更に関して作成される表ルール条件の例を示します。

(((:dml.get_object_owner() = 'HR' and :dml.get_object_name() = 'LOCATIONS'))
and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

CLEANUP_INSTANTIATION_SETUPプロシージャ

このプロシージャは、このパッケージのPRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって設定されたOracle Streamsレプリケーション構成を削除します。このプロシージャは、構成を直接削除するか、または構成を削除するスクリプトを生成できます。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

注意:
CLEANUP_INSTANTIATION_SETUPプロシージャの実行時、パラメータの値は、対応するPRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャの実行時に指定したパラメータ(perform_actions、script_nameおよびscript_directory_objectを除く)の値と一致している必要があります。

関連項目:

- 「PRE_INSTANTIATION_SETUPプロシージャ」

- 「POST_INSTANTIATION_SETUPプロシージャ」

- このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

構文

DBMS_STREAMS_ADM.CLEANUP_INSTANTIATION_SETUP(
maintain_mode           IN VARCHAR2,
tablespace_names        IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,
source_database         IN VARCHAR2,
destination_database    IN VARCHAR2,
perform_actions         IN BOOLEAN   DEFAULT TRUE,
script_name             IN VARCHAR2  DEFAULT NULL,
script_directory_object IN VARCHAR2  DEFAULT NULL,
capture_name            IN VARCHAR2  DEFAULT NULL,
capture_queue_table     IN VARCHAR2  DEFAULT NULL,
capture_queue_name      IN VARCHAR2  DEFAULT NULL,
capture_queue_user      IN VARCHAR2  DEFAULT NULL,
propagation_name        IN VARCHAR2  DEFAULT NULL,
apply_name              IN VARCHAR2  DEFAULT NULL,
apply_queue_table       IN VARCHAR2  DEFAULT NULL,
apply_queue_name        IN VARCHAR2  DEFAULT NULL,
apply_queue_user        IN VARCHAR2  DEFAULT NULL,
bi_directional          IN BOOLEAN   DEFAULT FALSE,
change_global_name      IN BOOLEAN   DEFAULT FALSE);

パラメータ

表159-14 CLEANUP_INSTANTIATION_SETUPプロシージャのパラメータ

パラメータ

説明

maintain_mode

次のいずれかを指定します。

- GLOBALを指定すると、ソース・データベースと接続先データベースの両方でデータベース全体を維持していたOracle Streams構成がクリーンアップされます。

- TRANSPORTABLE TABLESPACESを指定すると、ソース・データベースと接続先データベースの両方で表領域セットを維持していたOracle Streams構成がクリーンアップされます。

tablespace_names

maintain_modeをTRANSPORTABLE TABLESPACESに設定した場合は、Oracle Streamsによって接続先データベースにクローンが作成され保守されるローカル表領域セットを指定します。

表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。

この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対するREAD権限が必要です。

maintain_modeをGLOBALに設定した場合は、空の表領域セットを指定します。

maintain_modeの設定に関係なく、tablespace_namesパラメータが設定されていない場合またはNULLに設定されている場合は、エラーが発生します。

関連項目: 「TABLESPACE_SET表タイプ」

source_database

ソース・データベースのグローバル名。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

perform_actions

TRUEに設定すると、Oracle Streams構成を直接クリーンアップするために必要な処理が実行されます。

FALSEに設定すると、Oracle Streams構成を直接クリーンアップするために必要な処理は実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、perform_actionsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、Oracle Streams構成のクリーンアップに使用するすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、perform_actionsパラメータがTRUEの場合は、指定したスクリプトが生成され、Oracle Streams構成を直接クリーンアップする処理が実行されます。

このパラメータがNULLで、perform_actionsパラメータがTRUEの場合は、Oracle Streams構成を直接クリーンアップする処理が実行され、スクリプトは生成されません。

このパラメータがNULLで、perform_actionsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

capture_name

Oracle Streams構成内の変更を取得するように構成する取得プロセスの名前。所有者を指定しないでください。

NULLに設定すると、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって作成され、システム生成の名前が付けられた取得プロセスが自動的に指定されます。

capture_queue_table

取得プロセスで使用する各キューのキュー表の名前で、[schema_name.]queue_table_nameという形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLに設定すると、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって作成され、システム生成の名前が付けられた取得キュー表が自動的に指定されます。

capture_queue_name

取得プロセスで使用する各キューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

NULLに設定すると、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって作成され、システム生成の名前が付けられた取得キューが自動的に指定されます。

capture_queue_user

ソース・データベース内のキューに対するENQUEUE権限とDEQUEUE権限を持っているユーザーの名前。このユーザーは、キューの保護キュー・ユーザーです。

propagation_name

Oracle Streams構成内の変更を転送するように構成する伝播の名前。所有者を指定しないでください。

NULLに設定すると、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって作成され、システム生成の名前が付けられた伝播が自動的に指定されます。

apply_name

Oracle Streams構成内の変更を適用するように構成する適用プロセスの名前。所有者を指定しないでください。

NULLに設定すると、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって作成され、システム生成の名前が付けられた適用プロセスが自動的に指定されます。

apply_queue_table

適用プロセスで使用する各キューのキュー表の名前で、[schema_name.]queue_table_nameという形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLに設定すると、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって作成され、システム生成の名前が付けられた適用キュー表が自動的に指定されます。

apply_queue_name

適用プロセスで使用する各キューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

NULLに設定すると、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャによって作成され、システム生成の名前が付けられた適用キューが自動的に指定されます。

apply_queue_user

接続先データベース内のキューに対するENQUEUE権限とDEQUEUE権限を持っているユーザーの名前。このユーザーは、キューの保護キュー・ユーザーです。

bi_directional

source_databaseで指定するデータベースとdestination_databaseで指定するデータベースとの間のOracle Streamsレプリケーション構成が双方向の場合は、TRUEを指定します。

Oracle Streamsレプリケーションの構成が、現行のデータベースからdestination_databaseで指定するデータベースへの一方向レプリケーションの場合は、FALSEを指定します。

change_global_name

TRUEに設定すると、destination_databaseで指定したデータベースのグローバル名が、現行のデータベースのグローバル名に一致するように変更されます。

FALSEに設定すると、destination_databaseで指定したデータベースのグローバル名は変更されません。

DELETE_COLUMNプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)から列を削除する宣言ルールベースの変換を追加または削除します。

指定されたルールがTRUEに評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。

注意:

- DELETE_COLUMNプロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。

- DELETE_COLUMNプロシージャは、行LCR内の比較的少ない数の列を削除する場合に役立ちます。行LCR内のほとんどの列を削除し、比較的少ない数の列を保持するには、このパッケージのKEEP_COLUMNSプロシージャの使用を検討してください。

- 宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。

関連項目:

- 宣言ルールベースの変換の詳細およびOracle Streams取得プロセスでサポートされているデータ・タイプの詳細は、『Oracle Streams概要および管理』を参照してください。

- 「KEEP_COLUMNSプロシージャ」

構文

DBMS_STREAMS_ADM.DELETE_COLUMN(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_name   IN  VARCHAR2,
value_type    IN  VARCHAR2   DEFAULT '*',
step_number   IN  NUMBER     DEFAULT 0,
operation     IN  VARCHAR2   DEFAULT 'ADD');

パラメータ

表159-15 DELETE_COLUMNプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列を削除する表の名前で、[schema_name.]object_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

column_name

ルールを満たす各行LCRから削除する列の名前。

value_type

行LCRの新しい値から列を削除する場合は、'NEW'を指定します。

行LCRの古い値から列を削除する場合は、'OLD'を指定します。

行LCRの新しい値と古い値の両方から列を削除する場合は、'*'を指定します。

step_number

変換の実行順序。

関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

このパラメータの詳細は、「使用上の注意」を参照してください。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列削除の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_nameおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、DELETE_COLUMNプロシージャの動作を示します。

table_name

column_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての列削除変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されているstep_numberのすべての列削除変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているcolumn_nameおよびstep_numberのすべての列削除変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているtable_nameおよびstep_numberのすべての列削除変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているcolumn_nameのすべての列削除変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているtable_nameおよびcolumn_nameのすべての列削除変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameのすべての列削除変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているtable_name、column_nameおよびstep_numberのすべての列削除変換が削除されます。

GET_MESSAGE_TRACKINGファンクション

現在のセッションの追跡ラベルを戻します。

関連項目:
SET_MESSAGE_TRACKINGプロシージャ

構文

DBMS_STREAMS_ADM.GET_MESSAGE_TRACKING
RETURN VARCHAR2;

GET_SCN_MAPPINGプロシージャ

このプロシージャは、Oracle Streamsレプリケーション環境内のOracle Streamsの取得プロセスと適用プロセスで使用するために、システム変更番号(SCN)に関する情報を取り出します。取り出した情報は、次の目的で使用できます。

- マルチ・ソースOracle Streams構成のソース・データベース上でPoint-in-Timeリカバリを実行した後、トランザクションを復元する。

- 単一ソースOracle Streamsレプリケーション構成のソース・データベースまたは接続先データベースにおいて、対応するSCNに対してフラッシュバック問合せを実行する。

関連項目:
Oracle Streamsレプリケーション環境内でのPoint-in-Timeリカバリおよびフラッシュバック問合せに関する説明は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS_ADM.GET_SCN_MAPPING(
apply_name             IN  VARCHAR2,
src_pit_scn            IN  NUMBER,
dest_instantiation_scn OUT NUMBER,
dest_start_scn         OUT NUMBER,
dest_skip_txn_ids      OUT DBMS_UTILITY.NAME_ARRAY);

パラメータ

表159-16 GET_SCN_MAPPINGプロシージャのパラメータ

パラメータ

説明

apply_name

ソース・データベースから取得した論理変更レコード(LCR)を適用する適用プロセスの名前。指定した適用プロセスが存在しない場合は、エラーが発生します。

src_pit_scn

ソース・データベースにおけるSCN。

Point-in-Timeリカバリの場合は、ソース・データベースにおけるPoint-in-TimeリカバリSCNを指定します。

指定したSCNが最後に適用されたトランザクションのソース・コミットSCNよりも大きい場合は、dest_start_scnとdest_instantiation_scnの2つのパラメータにNULLが戻されます。この場合、接続先データベースに対して対応するトランザクションがまだ適用されていないため、これら2つのパラメータに値を戻すことはできません。

dest_instantiation_scn

ソース・データベースに指定したsrc_pit_scnに対応する、接続先データベースのSCN。

Point-in-Timeリカバリの実行中は、このSCNをソース・データベースにおけるインスタンス化SCNとして使用します。

dest_start_scn

Point-in-Timeリカバリにおいて、リカバリ取得プロセス用のstart_scnパラメータとして使用するSCN。

dest_skip_txn_ids

適用プロセスが非依存トランザクションを順不同に適用したため、dest_instantiation_scnでスキップされたトランザクションのトランザクションID。

Point-in-Timeリカバリの場合、これらのトランザクションIDはリカバリ適用プロセスによって無視されます。

このパラメータは、これらのトランザクションを適用した適用プロセスに対してcommit_serializationパラメータがDEPENDENT_TRANSACTIONSに設定され、トランザクションが順不同に適用された場合にのみ関連します。

GET_TAGファンクション

このファンクションは、現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

関連項目:

- 「SET_TAGプロシージャ」

- タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS_ADM.GET_TAG
RETURN RAW;

例

次の例は、現行の論理変更レコード(LCR)タグを出力として表示する方法を示しています。

SET SERVEROUTPUT ON
DECLARE
raw_tag RAW(2000);
BEGIN
raw_tag := DBMS_STREAMS_ADM.GET_TAG();
DBMS_OUTPUT.PUT_LINE('Tag Value = ' || RAWTOHEX(raw_tag));
END;
/

DUALビューを問い合せて値を表示することもできます。

SELECT DBMS_STREAMS_ADM.GET_TAG FROM DUAL;

KEEP_COLUMNSプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内の列のリストを保持する宣言ルールベースの変換を追加または削除します。リストに含まれていない列は、変換によって行LCRから削除されません。

指定されたルールがTRUEに評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。

このプロシージャはオーバーロードされています。column_listパラメータは、VARCHAR2タイプで、column_tableパラメータは、DBMS_UTILITY.LNAME_ARRAYタイプです。これらのパラメータによって、列のリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。

注意:

- KEEP_COLUMNSプロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。

- KEEP_COLUMNSプロシージャは、行LCR内の比較的少ない数の列を保持する場合に役立ちます。行LCR内のほとんどの列を保持し、比較的少ない数の列を削除するには、このパッケージのDELETE_COLUMNプロシージャの使用を検討してください。

- 宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。

関連項目:

- 宣言ルールベースの変換の詳細およびOracle Streams取得プロセスでサポートされているデータ・タイプの詳細は、『Oracle Streams概要および管理』を参照してください。

- 「DELETE_COLUMNプロシージャ」

構文

DBMS_STREAMS_ADM.KEEP_COLUMNS(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_list   IN  VARCHAR2,
value_type    IN  VARCHAR2 DEFAULT '*',
step_number   IN  NUMBER DEFAULT 0,
operation     IN  VARCHAR2 DEFAULT 'ADD');

DBMS_STREAMS_ADM.KEEP_COLUMNS(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_table  IN  DBMS_UTILITY.LNAME_ARRAY,
value_type    IN  VARCHAR2 DEFAULT '*',
step_number   IN  NUMBER DEFAULT 0,
operation     IN  VARCHAR2 DEFAULT 'ADD');

パラメータ

表159-17 KEEP_COLUMNSプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列を保存する表の名前で、[schema_name.]object_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

column_list

ルールを満たす各行LCRで保持される列の名前。VARCHAR2タイプのカンマ区切りリストを指定します。リストに含まれていない列は、変換によって行LCRから削除されません。

このパラメータがNULLに設定され、column_tableパラメータもNULLに設定されている場合は、エラーが発生します。

column_table

ルールを満たす各行LCRで保持される列の名前。DBMS_UTILITY.LNAME_ARRAYタイプのPL/SQL連想配列を指定し、この場合、各要素は表の名前です。最初のスキーマの位置は1です。最後の位置はNULLにする必要があります。

表に含まれていない列は、変換によって行LCRから削除されません。

このパラメータがNULLに設定され、column_listパラメータもNULLに設定されている場合は、エラーが発生します。

value_type

行LCRの新しい値に列を保持する場合は、'NEW'を指定します。

行LCRの古い値に列を保持する場合は、'OLD'を指定します。

行LCRの新しい値と古い値の両方に列を保持する場合は、'*'を指定します。

step_number

変換の実行順序。

関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

このパラメータの詳細は、「使用上の注意」を参照してください。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列保持の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_list、column_tableおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、KEEP_COLUMNSプロシージャの動作を示します。

table_name

column_list/column_table

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての列保持変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されているstep_numberのすべての列保持変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているcolumn_list/column_tableおよびstep_numberのすべての列保持変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているtable_nameおよびstep_numberのすべての列保持変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているcolumn_list/column_tableのすべての列保持変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているtable_nameおよびcolumn_list/column_tableのすべての列保持変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameのすべての列保持変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているtable_name、column_list/column_tableおよびstep_numberのすべての列保持変換が削除されます。

MAINTAIN_CHANGE_TABLEプロシージャ

このプロシージャは、ソース・テーブルに対して行われたデータ操作言語(DML)の変更を変更ハンドラを使用してチェンジ・テーブルに記録する、Oracle Streams環境を構成します。このプロシージャは、オプションで、表の一方向レプリケーション(ソース・データベースから接続先データベースへ)を構成することもできます。このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。

変更ハンドラは、表の変更を追跡する特別なタイプの文DMLハンドラであり、このMAINTAIN_CHANGE_TABLEプロシージャまたはDBMS_APPLY_ADM.SET_CHANGE_HANDLERプロシージャのいずれかによって作成されました。変更ハンドラに関する情報は、ALL_APPLY_CHANGE_HANDLERSおよびDBA_APPLY_CHANGE_HANDLERSビューに格納されています。

チェンジ・テーブルは、ソース・テーブルと同じデータベースまたは異なるデータベースに存在することができます。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

注意:
このプロシージャによって構成された環境は、ソース・テーブルに対して行われたデータ定義言語(DDL)の変更について、記録もレプリケートも行いません。

関連項目:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

構文

DBMS_STREAMS_ADM.MAINTAIN_CHANGE_TABLE(
change_table_name        IN VARCHAR2,
source_table_name        IN VARCHAR2,
column_type_list         IN VARCHAR2,
extra_column_list        IN VARCHAR2  DEFAULT 'command_type, value_type',
capture_values           IN VARCHAR2,
options_string           IN VARCHAR2  DEFAULT NULL,
script_name              IN VARCHAR2  DEFAULT NULL,
script_directory_object  IN VARCHAR2  DEFAULT NULL,
perform_actions          IN BOOLEAN   DEFAULT TRUE,
capture_name             IN VARCHAR2  DEFAULT NULL,
propagation_name         IN VARCHAR2  DEFAULT NULL,
apply_name               IN VARCHAR2  DEFAULT NULL,
source_database          IN VARCHAR2  DEFAULT NULL,
destination_database     IN VARCHAR2  DEFAULT NULL,
keep_change_columns_only IN BOOLEAN   DEFAULT TRUE,
execute_lcr              IN BOOLEAN   DEFAULT FALSE);

パラメータ

表159-18 MAINTAIN_CHANGE_TABLEプロシージャのパラメータ

パラメータ

説明

change_table_name

ソース・テーブルの変更を記録する表。この表は、構成後にOracle Streamsによって保持されます。

表は、[schema_name.]table_nameという形式で指定します。たとえば、hr.jobs_change_tableとなります。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLの場合は、エラーが発生します。

指定した表がdestination_databaseパラメータで指定したデータベースに存在する場合は、エラーが発生します。

source_table_name

変更が記録されるソース・データベースの表。

表は、[schema_name.]table_nameという形式で指定します。たとえば、hr.jobsとなります。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLの場合は、エラーが発生します。

column_type_list

変更が記録されるソース・テーブルの列のリスト。列とそのデータ・タイプごとにカンマ区切りリストを指定します。

たとえば、hr.jobs表に対して次のように指定します。

job_id VARCHAR2(10), job_title VARCHAR2(35), min_salary NUMBER(6), max_salary NUMBER(6)

プロシージャは、ソース・データベースの列と同じ名前を持つ列を無条件のサプリメンタル・ログ・グループに自動的に配置します。

NULLの場合は、エラーが発生します。

extra_column_list

チェンジ・テーブルに格納するメタデータ属性のカンマ区切りリスト。メタデータ属性の列名は、属性名の後に$記号を付けた形式で示されます。たとえば、source_database_name属性は、チェンジ・テーブルのsource_database_name$列に格納されます。

次のメタデータ属性を含めることができます。

- value_type

- source_database_name

- command_type

- object_owner

- object_name

- tag

- transaction_id

- scn

- commit_scn

- compatible

- instance_number

- message_number

- row_text

- row_id

- serial#

- session#

- source_time

- thread#

- tx_name

- username

これらのすべてのメタデータ属性は、value_typeとmessage_numberを除き、行LCRに格納できる行LCR属性です。LCR属性の詳細は、『Oracle Streams概要および管理』を参照してください。

チェンジ・テーブルのvalue_type$列には、列の値が元の列の値であるか新しい列の値であるかに応じて、OLDまたはNEWが含まれます。

チェンジ・テーブルのmessage_number$列には、トランザクション内の各行LCRの識別番号が含まれます。メッセージ番号は、トランザクション内の各行LCRに対して段階的に増分され、トランザクション内での行LCRの順序を示します。

プロシージャはソース・データベースを自動的に構成して、追加属性(serial#など)に関する情報をREDOログに格納し、その情報を取得および記録できるようにします。

capture_values

ソース・テーブルに対する更新操作の実行時に取得する値を指定します。

- old: ソース・テーブルで更新された列の元の値を取得します。

- new: ソース・テーブルで更新された列の新しい値を取得します。

- *: ソース・テーブルで更新された列の元の値と新しい値の両方を取得します。

NULLの場合は、エラーが発生します。

注意: 挿入操作では、新しい列値のみを取得できます。削除操作では、古い列値のみを取得できます。

options_string

チェンジ・テーブルを作成するCREATE TABLE文に渡されるオプションの文字列。この文字列は、作成されたCREATE TABLE文において、表の列を定義するカッコの後に追加されます。文字列は構文的に正確である必要があります。

script_name

このパラメータがNULL以外の値で、perform_actionsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、環境の構成に使用するすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、perform_actionsパラメータがTRUEの場合は、指定したスクリプトが生成され、レプリケーション環境を直接構成する処理が実行されます。

このパラメータがNULLで、perform_actionsパラメータがTRUEの場合は、レプリケーション環境を直接構成する処理が実行され、スクリプトは生成されません。

このパラメータがNULLで、perform_actionsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

perform_actions

TRUEに設定すると、環境を直接構成するために必要な処理が実行されます。

FALSEに設定すると、環境を直接構成するために必要な処理が実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

capture_name

変更を取得するように構成する各取得プロセスの名前。所有者を指定しないでください。

指定した名前が既存の取得プロセスの名前と一致した場合は、その既存の取得プロセスが使用され、データベースへの変更を取得するためのルールが取得プロセスのポジティブ・ルール・セットに追加されます。

NULLに設定すると、作成される個々の取得プロセスの名前が自動的に生成されます。

注意: 取得プロセスは、作成した後で名前を変更することはできません。

propagation_name

ソース・データベースから接続先データベースに変更を伝播するように構成された伝播の名前。所有者を指定しないでください。

指定した名前が既存の伝播の名前と一致した場合は、その既存の伝播が使用され、変更を転送するためのルールが伝播のポジティブ・ルール・セットに追加されます。

NULLの場合は、システムによって伝播の名前が生成されます。

NULL以外の場合にsource_databaseとdestination_databaseを同じ値に設定すると、エラーが発生します。取得プロセスと適用プロセスが同じデータベースに存在する場合、それらは同じキューを使用できるため、伝播は不要です。

注意: 伝播は、作成した後で名前を変更することは変更できません。

apply_name

変更を適用するように構成する各適用プロセスの名前。所有者を指定しないでください。

指定した名前が既存の適用プロセスの名前と一致した場合は、その既存の適用プロセスが使用され、変更を適用するためのルールが適用プロセスのポジティブ・ルール・セットに追加されます。

指定する適用プロセス名が、接続先データベースにある既存のメッセージ・クライアントの名前と同じにならないように注意してください。

NULLの場合は、システムによって適用プロセスの名前が生成されます。NULLに設定した場合、ソース・データベースからの変更を適用する適用プロセスは接続先データベース上に存在できません。ソース・データベースからの変更を適用する適用プロセスが接続先データベースに存在する場合は、このパラメータにNULL以外の値を指定します。

注意: 適用プロセスは、作成した後で名前を変更することはできません。

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

keep_change_columns_only

TRUEに設定すると、このプロシージャは、column_type_listパラメータで指定した列のリストを保持する宣言ルールベースの変換を追加します。column_type_listパラメータで指定されていない列は、取得プロセスで取得された各行LCRから削除されます。

FALSEに設定すると、このプロシージャは宣言ルールベースの変換を作成せず、行LCR内のすべての列が保持されます。

column_type_listパラメータに含まれない列の情報が接続先データベースで必要な場合は、FALSEを設定します。たとえば、execute_lcrパラメータがTRUEに設定され、構成がソース・テーブルのすべての列をレプリケートしても、column_type_listパラメータにそれらの列のサブセットが含まれている場合は、keep_change_columns_onlyパラメータをFALSEに設定する必要があります。

注意: このパラメータをTRUEに設定すると、column_type_listにソース・テーブルのすべての列が含まれている場合でも、常に宣言ルールベースの変換が作成されます。

execute_lcr

TRUEに設定すると、このプロシージャは、接続先データベースの各行LCRを実行する変更ハンドラを作成します。

FALSEに設定すると、接続先データベースで行LCRは実行されません。

使用上の注意

次の各項では、このプロシージャの使用上の注意について説明します。

プロシージャによって構成されるOracle Streams環境のタイプ

このプロシージャは、次のタイプのOracle Streams環境を構成できます。

- Local capture and apply on one database: source_databaseパラメータとdestination_databaseパラメータに同じグローバル名を指定します。

- Local capture and remote apply: source_databaseパラメータにローカル・データベースのグローバル名を指定し、destination_databaseパラメータにリモート・データベースのグローバル名を指定します。

- Downstream capture and local apply: source_databaseパラメータにリモート・データベースを指定し、destination_databaseパラメータにローカル・データベースを指定します。

- Downstream capture and remote apply: source_databaseパラメータにリモート・データベースを指定し、destination_databaseパラメータにリモート・データベースを指定します。

このプロシージャによる一方向レプリケーション(オプション)

表の一方向レプリケーションを構成するには、変更内容を表に記録し、さらにexecute_lcrパラメータをTRUEに設定します。適用プロセスは、各行LCRを実行し、行LCRでの変更内容を接続先データベースのレプリカ表に適用します。この場合、プロシージャを実行する前に、接続先データベースでソース表がインスタンス化されていることを確認します。具体的には、インスタンス化のためにソース表が作成されていること、インスタンス化SCNが接続先データベースでレプリカ表に設定されていることが必要であり、通常は、ソース表とレプリカ表が一致している必要があります。

関連項目:
『Oracle Streamsレプリケーション管理者ガイド』

文DMLハンドラ、チェンジ・テーブル、行LCRの実行

このプロシージャは、次のアクションを実行する1つ以上の文DMLハンドラを構成します。

- 行LCRの情報を使用して、チェンジ・テーブルの変更を記録する。

- execute_lcrパラメータがTRUEに設定されている場合に、行LCRを実行する。

このプロシージャによって、capture_type_list、extra_column_listおよびcapture_valuesパラメータで指定された変更を記録するために必要な属性が、行LCRに確実に含まれるようになります。このプロシージャは、apply_nameパラメータで指定された適用プロセスに文DMLハンドラを追加します。

関連項目:
第162章「DBMS_STREAMS_HANDLER_ADM」

MAINTAIN_GLOBALプロシージャ

このプロシージャは、データベース・レベルの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

注意:

- このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていないデータベース・オブジェクトをレプリケーション環境から自動的に除外します。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

- bi_directionalパラメータをTRUEに設定する場合、MAINTAIN_GLOBALプロシージャまたはプロシージャが作成するスクリプトを実行している間は、データ操作言語(DML)またはデータ定義言語(DDL)を接続先データベースに変更できません。この制限は、ソース・データベースには適用されません。

- 取得プロセスでは、SYS、SYSTEM、CTXSYSの各スキーマへの変更は取得されません。このプロシージャは、これらのスキーマに対するレプリケーションは構成しません。

関連項目:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

構文

DBMS_STREAMS_ADM.MAINTAIN_GLOBAL(
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
source_database              IN VARCHAR2,
destination_database         IN VARCHAR2,
perform_actions              IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
dump_file_name               IN VARCHAR2  DEFAULT NULL,
capture_name                 IN VARCHAR2  DEFAULT NULL,
capture_queue_table          IN VARCHAR2  DEFAULT NULL,
capture_queue_name           IN VARCHAR2  DEFAULT NULL,
capture_queue_user           IN VARCHAR2  DEFAULT NULL,
propagation_name             IN VARCHAR2  DEFAULT NULL,
apply_name                   IN VARCHAR2  DEFAULT NULL,
apply_queue_table            IN VARCHAR2  DEFAULT NULL,
apply_queue_name             IN VARCHAR2  DEFAULT NULL,
apply_queue_user             IN VARCHAR2  DEFAULT NULL,
log_file                     IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE,
include_ddl                  IN BOOLEAN   DEFAULT FALSE,
instantiation                IN INTEGER   DEFAULT
DBMS_STREAMS_ADM.INSTANTIATION_FULL);

パラメータ

関連項目:
このプロシージャのパラメータについては、「構成プロシージャの共通パラメータ」を参照してください。

表159-19 MAINTAIN_GLOBALプロシージャのパラメータ

パラメータ

説明

source_directory_object

生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの格納先となる、ソース・データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。プロシージャの実行後も、このファイルはこのディレクトリ内に残ります。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。この場合、source_directory_objectパラメータにはNULLを指定します。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

destination_directory_object

接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルが転送されます。

ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。これらの場合は、destination_directory_objectパラメータをNULLに設定してください。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

dump_file_name

データ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、source_directory_objectまたはdestination_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、エラーが発生します。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULLの場合は、エクスポート・ダンプ・ファイル名が自動的に生成されます。この場合、エクスポート・ダンプ・ファイル名はexpatnn.dmp(nnは順序番号)になります。ソース・ディレクトリ内で生成されるエクスポート・ダンプ・ファイル名が一意になるように、順序番号はファイルごとに増分されます。

log_file

データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_FULLの場合、ログ・ファイル名は、エクスポート・ダンプ・ファイルの拡張子を.clgにした名前になります。

instantiation

インスタンス化を実行するかどうか、および実行する場合はインスタンス化のタイプを次のように指定します。

DBMS_STREAMS_ADM.INSTANTIATION_FULLを指定すると、ソース・データベースで完全なデータ・ポンプ・エクスポートが実行され、接続先データベースでそのエクスポート・ダンプ・ファイルのデータ・ポンプ・インポートが実行されます。インスタンス化SCNは、インポート時に共有データベース・オブジェクトに対して設定されます。instantiationパラメータにこの値を設定する場合は、このプロシージャを実行するユーザーにDBMS_FILE_TRANSFERパッケージのEXECUTE権限が必要です。

DBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORKは、ネットワーク全体からのデータ・ポンプ・インポートを実行します。ネットワーク・インポートとは、エクスポート・ダンプ・ファイルを使用せずにデータ・ポンプでインポートを実行することを意味します。インスタンス化SCNは、インポート時に共有データベース・オブジェクトに対して設定されます。instantiationパラメータをこの値に設定している場合、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

DBMS_STREAMS_ADM.INSTANTIATION_NONEを指定すると、インスタンス化は実行されません。この設定は、perform_actionsパラメータがFALSEに設定され、プロシージャによって構成スクリプトが生成される場合にのみ有効です。この場合、構成スクリプトによって、インスタンス化、および各共有データベース・オブジェクトのインスタンス化SCNの設定は実行されません。かわりに、ユーザーがインスタンス化を実行し、インスタンス化SCNの値を適切に設定する必要があります。RMANのDUPLICATEコマンドまたはCONVERT DATABASEコマンドを使用してデータベースをインスタンス化する場合は、接続先データベースを取得データベースにすることはできません。

このパラメータをDBMS_STREAMS_ADM.INSTANTIATION_FULLまたはDBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORKに設定する場合は、インスタンス化するデータベース・オブジェクトがソース・データベースに存在する必要があります。

接続先データベースにインスタンス化されたデータベース・オブジェクトがない場合は、ソース・データベースからのサプリメンタル・ロギング指定および索引やトリガーなどのサポート・データベース・オブジェクトとともにインポートされます。ただし、インスタンス化の実行前に接続先データベースにデータベース・オブジェクトがある場合は、インポートされません。このため、ソース・データベースからのサプリメンタル・ロギング指定は接続先データベースのデータベース・オブジェクトに指定されず、サポート・データベース・オブジェクトはインポートされません。

MAINTAIN_SCHEMASプロシージャ

このプロシージャは、指定されたスキーマへの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

このプロシージャはオーバーロードされています。1つのschema_namesパラメータは、VARCHAR2タイプで、もう1つのschema_namesパラメータは、DBMS_UTILITY.UNCL_ARRAYタイプです。これらのパラメータによって、スキーマのリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。

注意:

- このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていない、スキーマ内のデータベース・オブジェクトをレプリケーション環境から自動的に除外します。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

- bi_directionalパラメータをTRUEに設定している場合、MAINTAIN_SCHEMASプロシージャまたはプロシージャが作成するスクリプトを実行している間は、データ操作言語(DML)またはデータ定義言語(DDL)を、接続先データベースの共有データベース・オブジェクトに変更できません。この制限は、ソース・データベースには適用されません。

関連項目:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

構文

DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(
schema_names                 IN VARCHAR2,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
source_database              IN VARCHAR2,
destination_database         IN VARCHAR2,
perform_actions              IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
dump_file_name               IN VARCHAR2  DEFAULT NULL,
capture_name                 IN VARCHAR2  DEFAULT NULL,
capture_queue_table          IN VARCHAR2  DEFAULT NULL,
capture_queue_name           IN VARCHAR2  DEFAULT NULL,
capture_queue_user           IN VARCHAR2  DEFAULT NULL,
propagation_name             IN VARCHAR2  DEFAULT NULL,
apply_name                   IN VARCHAR2  DEFAULT NULL,
apply_queue_table            IN VARCHAR2  DEFAULT NULL,
apply_queue_name             IN VARCHAR2  DEFAULT NULL,
apply_queue_user             IN VARCHAR2  DEFAULT NULL,
log_file                     IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE,
include_ddl                  IN BOOLEAN   DEFAULT FALSE,
instantiation                IN INTEGER   DEFAULT
DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA);

DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(
schema_names                 IN DBMS_UTILITY.UNCL_ARRAY,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
source_database              IN VARCHAR2,
destination_database         IN VARCHAR2,
perform_actions              IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
dump_file_name               IN VARCHAR2  DEFAULT NULL,
capture_name                 IN VARCHAR2  DEFAULT NULL,
capture_queue_table          IN VARCHAR2  DEFAULT NULL,
capture_queue_name           IN VARCHAR2  DEFAULT NULL,
capture_queue_user           IN VARCHAR2  DEFAULT NULL,
propagation_name             IN VARCHAR2  DEFAULT NULL,
apply_name                   IN VARCHAR2  DEFAULT NULL,
apply_queue_table            IN VARCHAR2  DEFAULT NULL,
apply_queue_name             IN VARCHAR2  DEFAULT NULL,
apply_queue_user             IN VARCHAR2  DEFAULT NULL,
log_file                     IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE,
include_ddl                  IN BOOLEAN   DEFAULT FALSE,
instantiation                IN INTEGER   DEFAULT
DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA);

パラメータ

関連項目:
このプロシージャのパラメータで表159-20に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。

表159-20 MAINTAIN_SCHEMASプロシージャのパラメータ

パラメータ

説明

schema_names

レプリケーションを行うように構成し、構成後はOracle Streamsによって保守されるスキーマ。スキーマは、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、スキーマの名前が各要素になります。最初のスキーマの位置は1です。最後の位置はNULLにする必要があります。

このプロシージャでは、次のいずれかの場合にエラーが発生します。

- 指定したスキーマがソース・データベースに存在しない場合

- schema_namesパラメータをNULLに設定した場合

source_directory_object

生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの格納先となる、ソース・データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。プロシージャの実行後も、このファイルはこのディレクトリ内に残ります。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。この場合、source_directory_objectパラメータにはNULLを指定します。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMAの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

destination_directory_object

接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルが転送されます。

ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。この場合は、destination_directory_objectパラメータをNULLに設定してください。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMAの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

dump_file_name

データ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、source_directory_objectまたはdestination_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、エラーが発生します。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMAの場合は、エクスポート・ダンプ・ファイルの名前が自動的に生成されます。この場合、エクスポート・ダンプ・ファイル名はexpatnn.dmp(nnは順序番号)になります。ソース・ディレクトリ内で生成されるエクスポート・ダンプ・ファイル名が一意になるように、順序番号はファイルごとに増分されます。

capture_queue_user

ソース・データベース内のキューに対するENQUEUE権限とDEQUEUE権限を必要とするユーザーの名前。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

log_file

データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_SCHEMAの場合、ログ・ファイル名は、エクスポート・ダンプ・ファイルの拡張子を.clgにした名前になります。

instantiation

インスタンス化を実行するかどうか、および実行する場合はインスタンス化のタイプを次のように指定します。

DBMS_STREAMS_ADM.INSTANTIATION_SCHEMAを指定すると、ソース・データベースで完全なデータ・ポンプ・エクスポートが実行され、接続先データベースでそのエクスポート・ダンプ・ファイルのデータ・ポンプ・インポートが実行されます。インスタンス化SCNは、インポート時に共有データベース・オブジェクトに対して設定されます。instantiationパラメータにこの値を設定する場合は、このプロシージャを実行するユーザーにDBMS_FILE_TRANSFERパッケージのEXECUTE権限が必要です。

DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORKは、ネットワーク全体からのデータ・ポンプ・インポートを実行します。ネットワーク・インポートとは、エクスポート・ダンプ・ファイルを使用せずにデータ・ポンプでインポートを実行することを意味します。インスタンス化SCNは、インポート時に共有データベース・オブジェクトに対して設定されます。instantiationパラメータをこの値に設定している場合、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

DBMS_STREAMS_ADM.INSTANTIATION_NONEを指定すると、インスタンス化は実行されません。この設定は、perform_actionsパラメータがFALSEに設定され、プロシージャによって構成スクリプトが生成される場合にのみ有効です。この場合、構成スクリプトによって、インスタンス化、および各共有データベース・オブジェクトのインスタンス化SCNの設定は実行されません。かわりに、ユーザーがインスタンス化を実行し、インスタンス化SCNの値を適切に設定する必要があります。

このパラメータをDBMS_STREAMS_ADM.INSTANTIATION_SCHEMAまたはDBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORKに設定する場合は、インスタンス化するデータベース・オブジェクトがソース・データベースに存在する必要があります。また、スキーマの格納されている表領域が接続先データベースに存在する必要もあります。

接続先データベースにインスタンス化されたデータベース・オブジェクトがない場合は、ソース・データベースからのサプリメンタル・ロギング指定および索引やトリガーなどのサポート・データベース・オブジェクトとともにインポートされます。ただし、インスタンス化の実行前に接続先データベースにデータベース・オブジェクトがある場合は、インポートされません。このため、ソース・データベースからのサプリメンタル・ロギング指定は接続先データベースのデータベース・オブジェクトに指定されず、サポート・データベース・オブジェクトはインポートされません。

MAINTAIN_SIMPLE_TABLESPACEプロシージャ

このプロシージャは、ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。このプロシージャは、ソース・データベースで実行します。

注意:
このプロシージャの使用は推奨されていません。かわりにMAINTAIN_SIMPLE_TTSプロシージャを使用してください。

関連項目:

- 「推奨されないサブプログラム」

- MAINTAIN_SIMPLE_TTSプロシージャ

構文

DBMS_STREAMS_ADM.MAINTAIN_SIMPLE_TABLESPACE(
tablespace_name              IN VARCHAR2,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_database         IN VARCHAR2,
setup_streams                IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE);

パラメータ

表159-21 MAINTAIN_SIMPLE_TABLESPACEプロシージャのパラメータ

パラメータ

説明

tablespace_name

Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル単一表領域。

この表領域は、ソース・データベースには存在している必要がありますが、接続先データベースには存在しないようにする必要があります。

この表領域のデータファイルを格納するディレクトリには、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、そのディレクトリ・オブジェクトに対するREAD権限が必要です。ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

NULLの場合は、エラーが発生します。

source_directory_object

ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

destination_directory_object

接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが転送されます。

ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

destination_database

接続先データベースのグローバル名。接続先データベースのグローバル名と同じ名前を持つ、ソース・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。

NULLの場合は、エラーが発生します。

setup_streams

TRUEに設定すると、表領域を直接保守するために必要な処理が実行されます。

FALSEに設定すると、表領域を直接保守するために必要な処理は実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、setup_streamsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、指定された表領域を保守するために必要なすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、setup_streamsパラメータがTRUEの場合は、指定のスクリプトが生成され、指定の表領域を直接保守する処理が実行されます。

このパラメータがNULLで、setup_streamsパラメータがTRUEの場合は、スクリプトは生成されず、指定の表領域を直接保守する処理が実行されます。

このパラメータがNULLで、setup_streamsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

bi_directional

現行のデータベースと、destination_databaseで指定されるデータベースとの間で、双方向のレプリケーションを構成する場合は、TRUEを指定します。両方のデータベースがソース・データベースおよび接続先データベースとして構成され、両方のデータベースで取得プロセスおよび適用プロセスが構成されて、データベース間でメッセージを転送する伝播が構成されます。

現行のデータベースと、destination_databaseで指定されるデータベースとの間で、一方向のレプリケーションを構成する場合は、FALSEを指定します。現行のデータベースで取得プロセスが構成され、現行のデータベースから接続先データベースにメッセージを転送する伝播が構成され、接続先データベースで適用プロセスが構成されます。

使用上の注意

指定する表領域は単一表領域である必要があります。単一表領域とは、1つのデータファイルのみを使用する自己完結型の単一表領域です。自己完結型表領域には、表領域の外部をポイントする表領域からの参照がありません。たとえば、表領域の索引が別の表領域の表に対するものである場合、その表領域は自己完結型ではありません。このプロシージャは、単一でない表領域、つまり表領域セットに対しては使用できません。

保守されないDDL変更

このプロシージャのOracle Streams環境構成では、表領域に対するDDL変更または表領域内のデータベース・オブジェクトに対するDDL変更は保守されません。たとえば、このプロシージャによって構成されるOracle Streams環境では、表領域に関するALTER TABLESPACE文や、表領域内の表に関するALTER TABLE文がレプリケートされません。DDL変更が保守されるようにするには、Oracle Streams環境を手作業で構成するか、このプロシージャによって生成されたスクリプトを編集する必要があります。

このプロシージャの関連項目

MAINTAIN_SIMPLE_TABLESPACEプロシージャについては、次の説明を参照してください。

- 自動プラットフォーム変換

- 『Oracle Streamsレプリケーション管理者ガイド』

このプロシージャの実行要件

MAINTAIN_SIMPLE_TABLESPACEプロシージャを実行するには、次の要件を満たしている必要があります。

- このプロシージャは、ソース・データベースで実行します。

- 構成時に、両方のデータベースがオープンしている必要があります。プロシージャでスクリプトの生成のみを行う場合は、プロシージャの実行時に、destination_databaseパラメータで指定されるデータベースが開いている必要はありませんが、生成されたスクリプトを実行するときは、両方のデータベースをオープンしておく必要があります。

- このプロシージャを実行するユーザーには、DBAロールを付与してください。また、次の処理を実行するための権限も必要です。

- ANYDATAキュー、取得プロセス、伝播および適用プロセスを作成する権限。

- サプリメンタル・ロギングを指定する権限。

- DBMS_STREAMS_ADMおよびDBMS_AQADMパッケージのサブプログラムを実行する権限。

- destination_databaseパラメータで指定されたデータベースにデータベース・リンクを通じてアクセスする権限。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのサブプログラムを実行する権限。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのCLONE_SIMPLE_TABLESPACEプロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_SIMPLE_TABLESPACEプロシージャ」を参照してください。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのATTACH_SIMPLE_TABLESPACEプロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_SIMPLE_TABLESPACEプロシージャ」を参照してください。

このプロシージャを実行するユーザーが、必要な権限を所有するには、各データベースにOracle Streams管理者を構成し、そのOracle Streams管理者のスキーマ内に各データベース・リンクを作成する必要があります。

通常、DBAロールは、構成の完了後に必要に応じてユーザーから取り消します。

- bi_directionalパラメータをTRUEに設定した場合は、接続先データベース上の対応するユーザーが、データベース・リンクを通じてソース・データベースにアクセスできるようにする必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。

- 指定する各ディレクトリ・オブジェクトは、SQL文のCREATE DIRECTORYを使用して作成する必要があります。このプロシージャを起動するユーザーには、それぞれのディレクトリ・オブジェクトに対するREAD権限およびWRITE権限が必要です。

- このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース2以上のデータベースである必要があります。

- このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。

- Oracle Streamsレプリケーション環境を直接構成するためにsetup_streamsパラメータがTRUEに設定されている場合。

- このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース1以上のデータベースである必要があります。

- このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。

- このプロシージャのsetup_streamsパラメータがFALSEに設定され、生成されたスクリプトでレプリケーション環境が構成されている場合。

スクリプトを使用してOracle Database 10g リリース1のデータベースを構成する場合は、Oracle Database 10g リリース2以上のみで使用可能な機能(キューからキューへの伝播など)が構成されないように、スクリプトを変更する必要があります。

- このプロシージャをOracle Database 10g リリース1のデータベースで実行する場合、このプロシージャで構成するデータベースは、Oracle Database 10g リリース1以上のデータベースである必要があります。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

MAINTAIN_SIMPLE_TABLESPACEプロシージャから除外されたパラメータのデフォルト値

このプロシージャは、MAINTAIN_SIMPLE_TABLESPACEプロシージャに存在しない、MAINTAIN_TABLESPACESプロシージャのパラメータのデフォルト値を使用します。たとえば、このプロシージャは、MAINTAIN_TABLESPACESプロシージャ内のcapture_nameパラメータのデフォルト値がcaptureであるため、captureという名前の取得プロセスをソース・データベースで作成します。

関連項目:
MAINTAIN_TABLESPACESプロシージャ

構成の進行状況およびリカバリ機能

setup_streamsパラメータをTRUEに設定して、このプロシージャを実行すると、その構成処理に関するメタデータがデータ・ディクショナリ・ビューのDBA_RECOVERABLE_SCRIPT、DBA_RECOVERABLE_SCRIPT_PARAMS、DBA_RECOVERABLE_SCRIPT_BLOCKSおよびDBA_RECOVERABLE_SCRIPT_ERRORSに記録されます。エラーが発生したためプロシージャが停止した場合は、エラーの原因となった状況を解消してからRECOVER_OPERATIONプロシージャを使用すると、構成を完了できます。

注意:
setup_streamsパラメータをFALSEに設定して、このプロシージャを実行した場合は、前述のビューにデータが格納されません。また、このプロシージャで生成されたスクリプトを実行した場合も、データはビューに格納されません。

関連項目:
「RECOVER_OPERATIONプロシージャ」

MAINTAIN_SIMPLE_TTSプロシージャ

このプロシージャは、ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

注意:

- このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていない、表領域内のデータベース・オブジェクトをレプリケーション環境から自動的に除外します。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

- このプロシージャは、推奨されないMAINTAIN_SIMPLE_TABLESPACEプロシージャのかわりに使用します。

関連項目:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

構文

DBMS_STREAMS_ADM.MAINTAIN_SIMPLE_TTS(
tablespace_name              IN VARCHAR2,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
source_database              IN VARCHAR2,
destination_database         IN VARCHAR2,
perform_actions              IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE);

パラメータ

関連項目:
このプロシージャのパラメータで表159-22に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。

表159-22 MAINTAIN_SIMPLE_TTSプロシージャのパラメータ

パラメータ

説明

tablespace_name

Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル単一表領域。

この表領域は、ソース・データベースには存在している必要がありますが、接続先データベースには存在しないようにする必要があります。

この表領域のデータファイルを格納するディレクトリには、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、そのディレクトリ・オブジェクトに対するREAD権限が必要です。ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

NULLの場合は、エラーが発生します。

source_directory_object

ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

destination_directory_object

接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが転送されます。

ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

使用上の注意

指定する表領域は単一表領域である必要があります。単一表領域とは、1つのデータファイルのみを使用する自己完結型の単一表領域です。自己完結型表領域には、表領域の外部をポイントする表領域からの参照がありません。たとえば、表領域の索引が別の表領域の表に対するものである場合、その表領域は自己完結型ではありません。このプロシージャは、単一でない表領域、つまり表領域セットに対しては使用できません。

保守されないDDL変更

このプロシージャのOracle Streams環境構成では、表領域に対するDDL変更または表領域内のデータベース・オブジェクトに対するDDL変更は保守されません。たとえば、このプロシージャによって構成されるOracle Streams環境では、表領域に関するALTER TABLESPACE文や、表領域内の表に関するALTER TABLE文がレプリケートされません。DDL変更が保守されるようにするには、Oracle Streams環境を手作業で構成するか、このプロシージャによって生成されたスクリプトを編集する必要があります。

MAINTAIN_SIMPLE_TTSプロシージャで必要なその他の権限

MAINTAIN_SIMPLE_TTSプロシージャを実行するユーザーには、「これらのプロシージャの実行要件」で説明した権限の他に、次の処理を実行するための権限も必要です。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのサブプログラムを実行する権限。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのCLONE_SIMPLE_TABLESPACEプロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_SIMPLE_TABLESPACEプロシージャ」を参照してください。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのATTACH_SIMPLE_TABLESPACEプロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_SIMPLE_TABLESPACEプロシージャ」を参照してください。

MAINTAIN_SIMPLE_TTSプロシージャから除外されたパラメータのデフォルト値

このプロシージャは、MAINTAIN_SIMPLE_TTSプロシージャに存在しない、MAINTAIN_TTSプロシージャのパラメータのデフォルト値を使用します。たとえば、このプロシージャは、取得プロセス名を自動的に生成しますが、これは、MAINTAIN_TTSプロシージャのcapture_nameパラメータのデフォルト値がNULLであるためです(MAINTAIN_TTSプロシージャは、capture_nameがNULLに指定されている場合、取得プロセス名を自動的に生成します)。

関連項目:
MAINTAIN_TTSプロシージャ

MAINTAIN_TABLESプロシージャ

このプロシージャは、指定された表への変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

このプロシージャはオーバーロードされています。1つのtable_namesパラメータは、VARCHAR2タイプで、もう1つのtable_namesパラメータは、DBMS_UTILITY.UNCL_ARRAYタイプです。これらのパラメータによって、スキーマのリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。

注意:
bi_directionalパラメータをTRUEに設定した場合、MAINTAIN_TABLESプロシージャまたはプロシージャによって生成されたスクリプトの実行中に、接続先データベースの共有データベース・オブジェクトに対するデータ操作言語(DML)変更またはデータ定義言語(DDL)変更を許可しないでください。この制限は、ソース・データベースには適用されません。

関連項目:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

構文

DBMS_STREAMS_ADM.MAINTAIN_TABLES(
table_names                  IN VARCHAR2,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
source_database              IN VARCHAR2,
destination_database         IN VARCHAR2,
perform_actions              IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
dump_file_name               IN VARCHAR2  DEFAULT NULL,
capture_name                 IN VARCHAR2  DEFAULT NULL,
capture_queue_table          IN VARCHAR2  DEFAULT NULL,
capture_queue_name           IN VARCHAR2  DEFAULT NULL,
capture_queue_user           IN VARCHAR2  DEFAULT NULL,
propagation_name             IN VARCHAR2  DEFAULT NULL,
apply_name                   IN VARCHAR2  DEFAULT NULL,
apply_queue_table            IN VARCHAR2  DEFAULT NULL,
apply_queue_name             IN VARCHAR2  DEFAULT NULL,
apply_queue_user             IN VARCHAR2  DEFAULT NULL,
log_file                     IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE,
include_ddl                  IN BOOLEAN   DEFAULT FALSE,
instantiation                IN INTEGER   DEFAULT
DBMS_STREAMS_ADM.INSTANTIATION_TABLE);

DBMS_STREAMS_ADM.MAINTAIN_TABLES(
table_names                  IN DBMS_UTILITY.UNCL_ARRAY,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
source_database              IN VARCHAR2,
destination_database         IN VARCHAR2,
perform_actions              IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
dump_file_name               IN VARCHAR2  DEFAULT NULL,
capture_name                 IN VARCHAR2  DEFAULT NULL,
capture_queue_table          IN VARCHAR2  DEFAULT NULL,
capture_queue_name           IN VARCHAR2  DEFAULT NULL,
capture_queue_user           IN VARCHAR2  DEFAULT NULL,
propagation_name             IN VARCHAR2  DEFAULT NULL,
apply_name                   IN VARCHAR2  DEFAULT NULL,
apply_queue_table            IN VARCHAR2  DEFAULT NULL,
apply_queue_name             IN VARCHAR2  DEFAULT NULL,
apply_queue_user             IN VARCHAR2  DEFAULT NULL,
log_file                     IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE,
include_ddl                  IN BOOLEAN   DEFAULT FALSE,
instantiation                IN INTEGER   DEFAULT
DBMS_STREAMS_ADM.INSTANTIATION_TABLE);

パラメータ

関連項目:
このプロシージャのパラメータで表159-23に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。

表159-23 MAINTAIN_TABLESプロシージャのパラメータ

パラメータ

説明

table_names

レプリケーションを行うように構成し、構成後はOracle Streamsによって保守される表。表は、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、表の名前が各要素になります。最初の表の位置は1です。最後の位置はNULLにする必要があります。

それぞれの表は、[schema_name.]table_nameという形式で指定する必要があります。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

このプロシージャでは、次のいずれかの場合にエラーが発生します。

- 指定した表がソース・データベースに存在しない場合

- table_namesパラメータをNULLに設定した場合

source_directory_object

生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの格納先となる、ソース・データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。このファイルは、プロシージャの実行後も指定のディレクトリ内に残ります。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。この場合、source_directory_objectパラメータにはNULLを指定します。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLEの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

destination_directory_object

接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルが転送されます。

ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。この場合は、destination_directory_objectパラメータをNULLに設定してください。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLEの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

dump_file_name

データ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、source_directory_objectまたはdestination_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、エラーが発生します。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLEの場合は、エクスポート・ダンプ・ファイルの名前が自動的に生成されます。この場合、エクスポート・ダンプ・ファイル名はexpatnn.dmp(nnは順序番号)になります。ソース・ディレクトリ内で生成されるエクスポート・ダンプ・ファイル名が一意になるように、順序番号はファイルごとに増分されます。

capture_queue_user

ソース・データベース内のキューに対するENQUEUE権限とDEQUEUE権限を必要とするユーザーの名前。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

log_file

データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。

instantiationの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORKまたはDBMS_STREAMS_ADM.INSTANTIATION_NONEの場合、このパラメータは無視されます。

このパラメータがNULLで、instantiationパラメータの設定がDBMS_STREAMS_ADM.INSTANTIATION_TABLEの場合、ログ・ファイル名は、エクスポート・ダンプ・ファイルの拡張子を.clgにした名前になります。

instantiation

インスタンス化を実行するかどうか、および実行する場合はインスタンス化のタイプを次のように指定します。

DBMS_STREAMS_ADM.INSTANTIATION_TABLEを指定すると、ソース・データベースで完全なデータ・ポンプ・エクスポートが実行され、接続先データベースでそのエクスポート・ダンプ・ファイルのデータ・ポンプ・インポートが実行されます。instantiationパラメータにこの値を設定する場合は、このプロシージャを実行するユーザーにDBMS_FILE_TRANSFERパッケージのEXECUTE権限が必要です。

DBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORKを指定すると、完全なネットワーク・データ・ポンプ・インポートが実行されます。ネットワーク・インポートとは、エクスポート・ダンプ・ファイルを使用せずにデータ・ポンプでインポートを実行することを意味します。instantiationパラメータをこの値に設定している場合、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

DBMS_STREAMS_ADM.INSTANTIATION_NONEを指定すると、インスタンス化は実行されません。この設定は、perform_actionsパラメータがFALSEに設定され、プロシージャによって構成スクリプトが生成される場合にのみ有効です。この場合、構成スクリプトによって、インスタンス化、および各共有データベース・オブジェクトのインスタンス化SCNの設定は実行されません。かわりに、ユーザーがインスタンス化を実行し、インスタンス化SCNの値を適切に設定する必要があります。

このパラメータをDBMS_STREAMS_ADM.INSTANTIATION_TABLEまたはDBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORKに設定する場合は、インスタンス化する表がソース・データベースに存在する必要があります。また、表の格納されている表領域が接続先データベースに存在する必要もあります。

接続先データベースにインスタンス化されたデータベース・オブジェクトがない場合は、ソース・データベースからのサプリメンタル・ロギング指定および索引やトリガーなどのサポート・データベース・オブジェクトとともにインポートされます。ただし、インスタンス化の実行前に接続先データベースにデータベース・オブジェクトがある場合は、インポートされません。このため、ソース・データベースからのサプリメンタル・ロギング指定は接続先データベースのデータベース・オブジェクトに指定されず、サポート・データベース・オブジェクトはインポートされません。

また、インスタンス化する表が接続先データベースに存在しない場合、このプロシージャは表のインスタンス化SCNを設定します。ただし、インスタンス化する表がインスタンス化の前に接続先データベースに存在する場合は、このプロシージャは表のインスタンス化SCNを設定しません。この場合は、プロシージャの完了後に表のインスタンス化SCNを手動で設定する必要があります。

MAINTAIN_TABLESPACESプロシージャ

このプロシージャは、ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。このプロシージャは、ソース・データベースで実行します。

注意:
このプロシージャの使用は推奨されていません。かわりにMAINTAIN_TTSプロシージャを使用してください。

関連項目:

- 「推奨されないサブプログラム」

- MAINTAIN_TTSプロシージャ

構文

DBMS_STREAMS_ADM.MAINTAIN_TABLESPACES(
tablespace_names             IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
destination_database         IN VARCHAR2,
setup_streams                IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
dump_file_name               IN VARCHAR2  DEFAULT NULL,
source_queue_table           IN VARCHAR2  DEFAULT 'streams_queue_table',
source_queue_name            IN VARCHAR2  DEFAULT 'streams_queue',
source_queue_user            IN VARCHAR2  DEFAULT NULL,
destination_queue_table      IN VARCHAR2  DEFAULT 'streams_queue_table',
destination_queue_name       IN VARCHAR2  DEFAULT 'streams_queue',
destination_queue_user       IN VARCHAR2  DEFAULT NULL,
capture_name                 IN VARCHAR2  DEFAULT 'capture',
propagation_name             IN VARCHAR2  DEFAULT NULL,
apply_name                   IN VARCHAR2  DEFAULT NULL,
log_file                     IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE,
include_ddl                  IN BOOLEAN   DEFAULT FALSE);

パラメータ

表159-24 MAINTAIN_TABLESPACESプロシージャのパラメータ

パラメータ

説明

tablespace_names

Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル表領域セット。

表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。

この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対するREAD権限が必要です。ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

NULLの場合は、エラーが発生します。

関連項目: 「TABLESPACE_SET表タイプ」

source_directory_object

ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクトで、このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

destination_directory_object

接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが転送されます。

ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

destination_database

接続先データベースのグローバル名。接続先データベースのグローバル名と同じ名前を持つ、ソース・データベースから接続先データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

setup_streams

TRUEに設定すると、表領域を直接保守するために必要な処理が実行されます。

FALSEに設定すると、表領域を直接保守するために必要な処理は実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、setup_streamsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、指定された表領域セットを保守するために必要なすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、setup_streamsパラメータがTRUEの場合は、指定のスクリプトが生成され、指定の表領域を直接保守する処理が実行されます。

このパラメータがNULLで、setup_streamsパラメータがTRUEの場合は、スクリプトは生成されず、指定の表領域セットを直接保守する処理が実行されます。

このパラメータがNULLで、setup_streamsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

dump_file_name

指定した表領域セットが保存されるデータ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、source_directory_objectまたはdestination_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、エラーが発生します。

NULLに設定すると、エクスポート・ダンプ・ファイル名が自動的に生成されます。この場合、エクスポート・ダンプ・ファイル名はexpatnn.dmp(nnは順序番号)になります。ソース・ディレクトリ内で生成されるエクスポート・ダンプ・ファイル名が一意になるように、順序番号はファイルごとに増分されます。

source_queue_table

ソース・データベースにあるキューのキュー表の名前で、[schema_name.]queue_table_nameという形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

source_queue_name

ソース・データベースでANYDATAキューとして機能するキューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

source_queue_user

ソース・データベース内のキューに対するENQUEUE権限とDEQUEUE権限を必要とするユーザーの名前。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

destination_queue_table

接続先データベースにあるキューのキュー表の名前で、[schema_name.]queue_table_nameという形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

接続先データベースでANYDATAキューとして機能するキューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

destination_queue_user

接続先データベース内のキューに対するENQUEUE権限とDEQUEUE権限を必要とするユーザーの名前。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

capture_name

表領域セット内のデータベース・オブジェクトへの変更を取得するように構成する各取得プロセスの名前。所有者を指定しないでください。

指定した名前が既存の取得プロセスの名前と一致した場合は、その既存の取得プロセスが使用され、データベース・セット内のデータベース・オブジェクトへの変更を取得するためのルールが取得プロセスのポジティブ・ルール・セットに追加されます。

注意: 取得プロセスは、作成した後で名前を変更することはできません。

propagation_name

表領域セット内のデータベース・オブジェクトへの変更を転送するように構成する各伝播の名前。所有者を指定しないでください。

指定した名前が既存の伝播の名前と一致した場合は、その既存の伝播が使用され、表領域セット内のデータベース・オブジェクトに対する変更を転送するためのルールが、伝播のポジティブ・ルール・セットに追加されます。

NULLに設定すると、作成される個々の伝播の名前が自動的に生成されます。

注意: 伝播は、作成した後で名前を変更することは変更できません。

apply_name

表領域セット内のデータベース・オブジェクトへの変更を適用するように構成する各適用プロセスの名前。所有者を指定しないでください。

指定した名前が既存の適用プロセスの名前と一致した場合は、その既存の適用プロセスが使用され、データベース・セット内のデータベース・オブジェクトへの変更を適用するためのルールが適用プロセスのポジティブ・ルール・セットに追加されます。

指定する適用プロセス名が、接続先データベースにある既存のメッセージ・クライアントの名前と同じにならないように注意してください。

NULLに設定すると、作成される個々の適用プロセスの名前が自動的に生成されます。

注意: 適用プロセスは、作成した後で名前を変更することはできません。

log_file

データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。

このパラメータにNULLを指定すると、エクスポート・ダンプ・ファイルの名前の拡張子を .clgで置き換えた名前が、エクスポート・ログ・ファイルの名前として使用されます。

bi_directional

現行のデータベースと、destination_databaseで指定されるデータベースとの間で、双方向のレプリケーションを構成する場合は、TRUEを指定します。両方のデータベースがソース・データベースおよび接続先データベースとして構成され、両方のデータベースで取得プロセスおよび適用プロセスが構成されて、データベース間でメッセージを転送する伝播が構成されます。

現行のデータベースと、destination_databaseで指定されるデータベースとの間で、一方向のレプリケーションを構成する場合は、FALSEを指定します。現行のデータベースで取得プロセスが構成され、現行のデータベースから接続先データベースにメッセージを転送する伝播が構成され、接続先データベースで適用プロセスが構成されます。

include_ddl

DMLとDDLの両方の変更を管理するOracle Streamsレプリケーション環境を構成する場合は、TRUEに設定します。

DML変更のみを管理するOracle Streamsレプリケーション環境を構成する場合は、FALSEに設定します。このパラメータをFALSEに設定すると、ALTER TABLEなどのDDL変更はレプリケートされません。

使用上の注意

指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。

関連項目:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。

このプロシージャの関連項目

MAINTAIN_TABLESPACESプロシージャについては、次の説明を参照してください。

- 自動プラットフォーム変換

- 『Oracle Streamsレプリケーション管理者ガイド』

このプロシージャの実行要件

MAINTAIN_TABLESPACESプロシージャを実行するには、次の要件を満たしている必要があります。

- このプロシージャは、ソース・データベースで実行します。

- 構成時に、両方のデータベースがオープンしている必要があります。プロシージャでスクリプトの生成のみを行う場合は、プロシージャの実行時に、destination_databaseパラメータで指定されるデータベースが開いている必要はありませんが、生成されたスクリプトを実行するときは、両方のデータベースをオープンしておく必要があります。

- このプロシージャを実行するユーザーには、DBAロールが付与されている必要があります。また、次の処理を実行するための権限も必要です。

- ANYDATAキュー、取得プロセス、伝播および適用プロセスを作成する権限。

- サプリメンタル・ロギングを指定する権限。

- DBMS_STREAMS_ADMおよびDBMS_AQADMパッケージのサブプログラムを実行する権限。

- destination_databaseパラメータで指定されたデータベースにデータベース・リンクを通じてアクセスする権限。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのサブプログラムを実行する権限。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのCLONE_TABLESPACESプロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_TABLESPACESプロシージャ」を参照してください。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのATTACH_TABLESPACESプロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_TABLESPACESプロシージャ」を参照してください。

このプロシージャを実行するユーザーが、必要な権限を所有するには、各データベースにOracle Streams管理者を構成し、そのOracle Streams管理者のスキーマ内に各データベース・リンクを作成する必要があります。

- bi_directionalパラメータをTRUEに設定した場合は、接続先データベース上の対応するユーザーが、データベース・リンクを通じてソース・データベースにアクセスできるようにする必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。

- 指定する各ディレクトリ・オブジェクトは、SQL文のCREATE DIRECTORYを使用して作成する必要があります。このプロシージャを起動するユーザーには、それぞれのディレクトリ・オブジェクトに対するREAD権限およびWRITE権限が必要です。

- このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース2以上のデータベースである必要があります。

- このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。

- Oracle Streamsレプリケーション環境を直接構成するためにsetup_streamsパラメータがTRUEに設定されている場合。

- このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース1以上のデータベースである必要があります。

- このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。

- このプロシージャのsetup_streamsパラメータがFALSEに設定され、生成されたスクリプトでレプリケーション環境が構成されている場合。

スクリプトを使用してOracle Database 10g リリース1のデータベースを構成する場合は、Oracle Database 10g リリース2以上のみで使用可能な機能(キューからキューへの伝播など)が構成されないように、スクリプトを変更する必要があります。

- このプロシージャをOracle Database 10g リリース1のデータベースで実行する場合、このプロシージャで構成するデータベースは、Oracle Database 10g リリース1以上のデータベースである必要があります。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構成の進行状況およびリカバリ機能

setup_streamsパラメータをTRUEに設定して、このプロシージャを実行すると、その構成処理に関するメタデータがデータ・ディクショナリ・ビューのDBA_RECOVERABLE_SCRIPT、DBA_RECOVERABLE_SCRIPT_PARAMS、DBA_RECOVERABLE_SCRIPT_BLOCKSおよびDBA_RECOVERABLE_SCRIPT_ERRORSに記録されます。エラーが発生したためプロシージャが停止した場合は、エラーの原因となった状況を解消してからRECOVER_OPERATIONプロシージャを使用すると、構成を完了できます。

注意:
setup_streamsパラメータをFALSEに設定して、このプロシージャを実行した場合は、前述のビューにデータが格納されません。また、このプロシージャで生成されたスクリプトを実行した場合も、データはビューに格納されません。

関連項目:
「RECOVER_OPERATIONプロシージャ」

MAINTAIN_TTSプロシージャ

このプロシージャは、ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

注意:

- このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていない、表領域内のデータベース・オブジェクトをレプリケーション環境から自動的に除外します。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

- このプロシージャは、推奨されないMAINTAIN_TABLESPACESプロシージャのかわりに使用します。

関連項目:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

構文

DBMS_STREAMS_ADM.MAINTAIN_TTS(
tablespace_names             IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,
source_directory_object      IN VARCHAR2,
destination_directory_object IN VARCHAR2,
source_database              IN VARCHAR2,
destination_database         IN VARCHAR2,
perform_actions              IN BOOLEAN   DEFAULT TRUE,
script_name                  IN VARCHAR2  DEFAULT NULL,
script_directory_object      IN VARCHAR2  DEFAULT NULL,
dump_file_name               IN VARCHAR2  DEFAULT NULL,
capture_name                 IN VARCHAR2  DEFAULT NULL,
capture_queue_table          IN VARCHAR2  DEFAULT NULL,
capture_queue_name           IN VARCHAR2  DEFAULT NULL,
capture_queue_user           IN VARCHAR2  DEFAULT NULL,
propagation_name             IN VARCHAR2  DEFAULT NULL,
apply_name                   IN VARCHAR2  DEFAULT NULL,
apply_queue_table            IN VARCHAR2  DEFAULT NULL,
apply_queue_name             IN VARCHAR2  DEFAULT NULL,
apply_queue_user             IN VARCHAR2  DEFAULT NULL,
log_file                     IN VARCHAR2  DEFAULT NULL,
bi_directional               IN BOOLEAN   DEFAULT FALSE,
include_ddl                  IN BOOLEAN   DEFAULT FALSE);

パラメータ

関連項目:
このプロシージャのパラメータで表159-25に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。

表159-25 MAINTAIN_TTSプロシージャのパラメータ

パラメータ

説明

tablespace_names

Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル表領域セット。

表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。

この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対するREAD権限が必要です。ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

NULLの場合は、エラーが発生します。

関連項目: 「TABLESPACE_SET表タイプ」

source_directory_object

ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクトで、このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

destination_directory_object

接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが転送されます。

ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。

NULLの場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

dump_file_name

指定した表領域セットが保存されるデータ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、source_directory_objectまたはdestination_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、エラーが発生します。

NULLに設定すると、エクスポート・ダンプ・ファイル名が自動的に生成されます。この場合、エクスポート・ダンプ・ファイル名はexpatnn.dmp(nnは順序番号)になります。ソース・ディレクトリ内で生成されるエクスポート・ダンプ・ファイル名が一意になるように、順序番号はファイルごとに増分されます。

log_file

データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。

このパラメータにNULLを指定すると、エクスポート・ダンプ・ファイルの名前の拡張子を .clgで置き換えた名前が、エクスポート・ログ・ファイルの名前として使用されます。

使用上の注意

指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。

関連項目:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。

MAINTAIN_TTSプロシージャで必要なその他の権限

MAINTAIN_TTSプロシージャを実行するユーザーには、「これらのプロシージャの実行要件」で説明した権限の他に、次の処理を実行するための権限も必要です。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのサブプログラムを実行する権限。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのCLONE_TABLESPACESプロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_TABLESPACESプロシージャ」を参照してください。

- DBMS_STREAMS_TABLESPACES_ADMパッケージのATTACH_TABLESPACESプロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_TABLESPACESプロシージャ」を参照してください。

MERGE_STREAMSプロシージャ

このプロシージャは、1つの取得プロセスからのストリームを別の取得プロセスからのストリームとマージします。

このプロシージャは、通常、このパッケージのSPLIT_STREAMSプロシージャを使用して分割された2つのストリームのマージに使用します。SPLIT_STREAMSプロシージャは、ストリームの分割時に元のストリームのコンポーネントをクローニングします。このため、この項では次の用語が使用されています。

- 分割前のストリームには、元のキュー、元の取得プロセスおよび元の伝播があります。

- SPLIT_STREAMSプロシージャによって分割されたストリームには、クローニングされたキュー、クローニングされた取得プロセスおよびクローニングされた伝播があります。

このプロシージャは、MERGE_STREAMS_JOBプロシージャによってコールされます。MERGE_STREAMS_JOBプロシージャは、安全にマージできるようにストリームがユーザー指定のマージしきい値内にあるかどうかを判別します。ストリームがマージしきい値内にない場合、MERGE_STREAMS_JOBプロシージャは何も行いません。通常、MERGE_STREAMSプロシージャを直接実行するのではなく、MERGE_STREAMS_JOBプロシージャを実行することをお薦めします。

ただし、次の条件を満たす場合は、MERGE_STREAMSプロシージャを直接実行することを選択できます。

- 分割ストリームの宛先での問題が修正されており、宛先キューが変更を受け入れることができる。

- 分割ストリームによって使用されるクローニングされた取得プロセスが開始され、変更を取得している。

- 接続先データベースにある適用プロセスが、クローニングされた取得プロセスによって取得された変更を適用している。

- クローニングされた取得プロセスのGV$STREAMS_CAPTUREビューのCAPTURE_MESSAGE_CREATE_TIMEが、元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEに追いついているか、ほとんど追いついている。クローニングされた取得プロセスは、元の取得プロセスに完全には追いつかない場合があります。そのため、クローニングされた取得プロセスが元の取得プロセスにほとんど追いついている場合、分割ストリームをマージできます。

MERGE_STREAMSプロシージャは、次の操作を実行します。

1. クローニングされた取得プロセスを停止します。

2. 元の取得プロセスを停止します。

3. クローニングされた伝播を元の伝播にコピーして戻します。コピーして戻した後の伝播の名前は、元の伝播と同じ名前です。

4. 次の2つのSCN値の小さいほうのSCN値から元の取得プロセスを開始します。

- クローニングされた伝播の確認済SCN

- 元の取得プロセスによって取得された変更を伝播する他の伝播の、一番小さい確認済SCN

元の取得プロセスを開始すると、すでに取得されている変更が再取得されたり、クローニングされた取得プロセスによってすでに取得されている変更が取得される場合があります。どちらの場合も、重複する変更は、それらを受け取る適用プロセスによって破棄されます。

5. クローニングされた伝播を削除します。

6. クローニングされた取得プロセスを削除します。

7. クローニングされたキューを削除します。

関連項目:

- MERGE_STREAMS_JOBプロシージャ

- SPLIT_STREAMSプロシージャ

構文

DBMS_STREAMS_ADM.MERGE_STREAMS(
cloned_propagation_name  IN  VARCHAR2,
propagation_name         IN  VARCHAR2  DEFAULT NULL,
queue_name               IN  VARCHAR2  DEFAULT NULL,
perform_actions          IN  BOOLEAN   DEFAULT TRUE,
script_name              IN  VARCHAR2  DEFAULT NULL,
script_directory_object  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表159-26 MERGE_STREAMSプロシージャのパラメータ

パラメータ

説明

cloned_propagation_name

SPLIT_STREAMSプロシージャを使用して元のストリームから分割されたストリームによって使用されるクローニングされた伝播の名前。クローニングされた伝播の名前により、クローニングされた伝播によって使用されるクローニングされたキューおよびクローニングされた取得プロセスも識別されます。

既存の伝播名を指定する必要があります。所有者を指定しないでください。

propagation_name

元のストリームにマージされて戻される伝播の名前。

NULLの場合、元のストリーム内の元の伝播の名前が使用されます。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

元の伝播名とは異なる名前を使用する場合、またはSPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合は、NULL以外の値を指定します。詳細は、「使用上の注意」を参照してください。

NULL以外の値を指定した場合、次の条件のいずれかに該当するとエラーが発生します。

- queue_nameパラメータで指定したキューが存在しない。

- queue_nameパラメータで指定したキューが存在するが、取得プロセスによって使用されていない。

queue_name

マージされて戻される伝播のソース・キューであるキューの名前。

NULLの場合、既存の元のキューが、マージされて戻される伝播のソース・キューとなります。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

SPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合、NULL以外の値を指定します。マージされたストリームの変更を取得する取得プロセスによって使用される既存のキューの名前を指定します。詳細は、「使用上の注意」を参照してください。

perform_actions

TRUEに設定すると、ストリームを直接マージするために必要な処理が実行されます。

FALSEに設定すると、ストリームを直接マージするために必要な処理は実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、perform_actionsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、ストリームをマージするために必要なすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、perform_actionsパラメータがTRUEの場合は、指定のスクリプトが生成され、ストリームを直接分割する処理が実行されます。

このパラメータがNULLで、perform_actionsパラメータがTRUEの場合は、ストリームを直接マージする処理が実行され、スクリプトは生成されません。

このパラメータがNULLで、perform_actionsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

使用上の注意

MERGE_STREAMSプロシージャを使用して、SPLIT_STREAMSプロシージャを使用して分割されなかった2つのストリームをマージできます。この方法でストリームをマージすることによって、1つのデータベースで複数の取得プロセスを実行しているときに、リソースを節約してパフォーマンスを向上させることができます。

DBA_STREAMS_SPLIT_MERGEビューは、分割およびマージ操作に関する情報を示します。

MERGE_STREAMS_JOBプロシージャ

このプロシージャは、元の取得プロセスおよびクローニングされた取得プロセスが、指定されたマージしきい値内にあるかどうかを判別します。マージしきい値内にある場合、このプロシージャはMERGE_STREAMSプロシージャを実行して2つのストリームをマージします。

このプロシージャは、通常、このパッケージのSPLIT_STREAMSプロシージャを使用して分割された2つのストリームのマージに使用します。SPLIT_STREAMSプロシージャは、ストリームの分割時に元のストリームのコンポーネントをクローニングします。このため、この項では次の用語が使用されています。

- 分割前のストリームには、元のキュー、元の取得プロセスおよび元の伝播があります。

- SPLIT_STREAMSプロシージャによって分割されたストリームには、クローニングされたキュー、クローニングされた取得プロセスおよびクローニングされた伝播があります。

ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータが正数に設定された場合、マージ・ジョブはスケジュールに従ってMERGE_STREAMS_JOBプロシージャを自動的に実行します。MERGE_STREAMS_JOBプロシージャが自動的に実行される場合、schedule_nameパラメータにスケジュール名を、merge_job_nameパラメータにマージ・ジョブ名を指定します。マージ・ジョブおよびそのスケジュールは、SPLIT_STREAMSプロシージャによって作成されました。

ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータがNULLまたは0(ゼロ)に設定された場合は、MERGE_STREAMS_JOBプロシージャを手動で実行できます。この場合は、自動的には実行されません。

関連項目:

- MERGE_STREAMSプロシージャ

- SPLIT_STREAMSプロシージャ

- MERGE_STREAMS_JOBプロシージャの使用方法は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS_ADM.MERGE_STREAMS_JOB(
cloned_propagation_name        IN VARCHAR2,
propagation_name               IN VARCHAR2 DEFAULT NULL,
queue_name                     IN VARCHAR2 DEFAULT NULL,
merge_threshold                IN NUMBER,
schedule_name                  IN VARCHAR2 DEFAULT NULL,
merge_job_name                 IN VARCHAR2 DEFAULT NULL);

パラメータ

表159-27 MERGE_STREAMS_JOBプロシージャのパラメータ

パラメータ

説明

cloned_propagation_name

SPLIT_STREAMSプロシージャを使用して元のストリームから分割されたストリームによって使用されるクローニングされた伝播の名前。クローニングされた伝播の名前により、クローニングされた伝播によって使用されるクローニングされたキューおよびクローニングされた取得プロセスも識別されます。

既存の伝播名を指定する必要があります。所有者を指定しないでください。

propagation_name

元のストリームにマージされて戻される伝播の名前。

NULLの場合、元のストリーム内の元の伝播の名前が使用されます。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

元の伝播名とは異なる名前を使用する場合、またはSPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合は、NULL以外の値を指定します。詳細は、「使用上の注意」を参照してください。

NULL以外の値を指定した場合、次の条件のいずれかに該当するとエラーが発生します。

- queue_nameパラメータで指定したキューが存在しない。

- queue_nameパラメータで指定したキューが存在するが、取得プロセスによって使用されていない。

queue_name

マージされて戻される伝播のソース・キューであるキューの名前。

NULLの場合、既存の元のキューが、マージされて戻される伝播のソース・キューとなります。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

SPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合、NULL以外の値を指定します。マージされたストリームの変更を取得する取得プロセスによって使用される既存のキューの名前を指定します。詳細は、「使用上の注意」を参照してください。

merge_threshold

マージしきい値(秒単位)。

GV$STREAMS_CAPTURE動的パフォーマンス・ビューの各取得プロセスのCAPTURE_MESSAGE_CREATE_TIME列の値によって、ストリームがマージされるかどうかが判別されます。

具体的には、クローニングされた取得プロセスと元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEの差(秒数)がこのパラメータに指定された値以下の場合、このプロシージャはMERGE_STREAMSプロシージャを実行してストリームをマージします。差がこのパラメータで指定された値よりも大きい場合、このプロシージャは何も行いません。

schedule_name

マージ・ジョブのスケジュールの名前。

NULLに設定すると、スケジュール名は指定されません。通常は、ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータがNULLまたは0(ゼロ)に設定されている場合に、このパラメータをNULLに設定します。

このプロシージャを手動で実行する場合は、NULLを指定します。

merge_job_name

ストリームをマージするジョブの名前。

NULLに設定すると、マージ・ジョブ名は指定されません。通常は、ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータがNULLまたは0(ゼロ)に設定されている場合に、このパラメータをNULLに設定します。

このプロシージャを手動で実行する場合は、NULLを指定します。

使用上の注意

MERGE_STREAMS_JOBプロシージャを使用して、SPLIT_STREAMSプロシージャを使用して分割されなかった2つのストリームをマージできます。この方法でストリームをマージすることによって、1つのデータベースで複数の取得プロセスを実行しているときに、リソースを節約してパフォーマンスを向上させることができます。

MERGE_STREAMS_JOBプロシージャの完了後、DBA_CAPTUREビューおよびDBA_PROPAGATIONビューを問い合せて、ストリームがマージされたかどうかを判別できます。ストリームがマージされた場合、クローニングされた取得プロセスおよびクローニングされた伝播はこれらのビューに表示されません。

ストリームがマージされ、schedule_nameパラメータおよびmerge_job_nameパラメータがNULL以外の場合、指定されたスケジュールおよびマージ・ジョブは自動的に削除されます。

DBA_STREAMS_SPLIT_MERGEビューは、分割およびマージ操作に関する情報を示します。

POST_INSTANTIATION_SETUPプロシージャ

このプロシージャはOracle Streamsレプリケーション環境を構成するために、インスタンス化後に必要な処理を実行します。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

Oracle Streamsレプリケーションの構成を完了するには、次の手順を実行します。

1. ソース・データベースでPRE_INSTANTIATION_SETUPプロシージャを実行します。

2. 必要なインスタンス化処理を実行します。

3. ソース・データベースでPOST_INSTANTIATION_SETUPプロシージャを実行します。

通常、この手順で構成したOracle Streamsレプリケーション環境は、次のいずれかの目的に使用されます。

- 共有データベース・オブジェクトへの変更をレプリケートして、異なるデータベースでデータベース・オブジェクトの同期を維持するため。

- データベースの保守操作時(別のプラットフォームへのデータベースの移行時など)に、データベース・オブジェクトへの変更をレプリケートするため。この場合は、保守操作の完了後にCLEANUP_INSTANTIATION_SETUPプロシージャを使用してレプリケーション環境を削除します。

注意:
POST_INSTANTIATION_SETUPプロシージャの実行時、パラメータの値は、対応するPRE_INSTANTIATION_SETUPプロシージャの実行時に指定したパラメータ(perform_actions、script_name, script_directory_objectおよびstart_processesを除く)の値と一致している必要があります。

注意:
取得プロセスでは、SYS、SYSTEM、CTXSYSの各スキーマへの変更は取得されません。このプロシージャは、これらのスキーマに対するレプリケーションは構成しません。

関連項目:

- 「PRE_INSTANTIATION_SETUPプロシージャ」

- 「CLEANUP_INSTANTIATION_SETUPプロシージャ」

- このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

- Oracle Streamsレプリケーション環境の設定については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

- データベースの保守操作を実行する方法については、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS_ADM.POST_INSTANTIATION_SETUP(
maintain_mode           IN VARCHAR2,
tablespace_names        IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,
source_database         IN VARCHAR2,
destination_database    IN VARCHAR2,
perform_actions         IN BOOLEAN         DEFAULT TRUE,
script_name             IN VARCHAR2        DEFAULT NULL,
script_directory_object IN VARCHAR2        DEFAULT NULL,
capture_name            IN VARCHAR2        DEFAULT NULL,
capture_queue_table     IN VARCHAR2        DEFAULT NULL,
capture_queue_name      IN VARCHAR2        DEFAULT NULL,
capture_queue_user      IN VARCHAR2        DEFAULT NULL,
propagation_name        IN VARCHAR2        DEFAULT NULL,
apply_name              IN VARCHAR2        DEFAULT NULL,
apply_queue_table       IN VARCHAR2        DEFAULT NULL,
apply_queue_name        IN VARCHAR2        DEFAULT NULL,
apply_queue_user        IN VARCHAR2        DEFAULT NULL,
bi_directional          IN BOOLEAN         DEFAULT FALSE,
include_ddl             IN BOOLEAN         DEFAULT FALSE,
start_processes         IN BOOLEAN         DEFAULT FALSE,
instantiation_scn       IN NUMBER          DEFAULT NULL,
exclude_schemas         IN VARCHAR2        DEFAULT NULL,
exclude_flags           IN BINARY_INTEGER  DEFAULT NULL);

パラメータ

関連項目:
このプロシージャのパラメータで表159-28に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。

表159-28 POST_INSTANTIATION_SETUPプロシージャのパラメータ

パラメータ

説明

maintain_mode

次のいずれかを指定します。

- ローカル・データベースと、destination_databaseパラメータで指定するデータベースとの間にレプリケーションを構成して、データベース全体を保守する場合は、GLOBALを指定します。

- ローカル・データベースと、destination_databaseパラメータで指定するデータベースとの間にレプリケーションを構成して、表領域セットを保守する場合は、TRANSPORTABLE TABLESPACESを指定します。

tablespace_names

maintain_modeをTRANSPORTABLE TABLESPACESに設定した場合は、Oracle Streamsによって接続先データベースにクローンが作成され保守されるローカル表領域セットを指定します。

表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。

また、この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対するREAD権限が必要です。

maintain_modeをGLOBALに設定した場合は、空の表領域セットを指定します。

maintain_modeの設定に関係なく、tablespace_namesパラメータが設定されていない場合またはNULLに設定されている場合は、エラーが発生します。

関連項目: 「TABLESPACE_SET表タイプ」

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

start_processes

TRUEに設定すると、各取得プロセスおよび適用プロセスが開始されます。PRE_INSTANTITAION_SETUPプロシージャによって作成され、無効になっている取得プロセスまたは適用プロセスがある場合は、そのプロセスも開始されます。

FALSEに設定すると、取得プロセスも適用プロセスも開始されません。

instantiation_scn

インスタンス化の実行時にインスタンス化SCNが設定されなかった場合は、接続先データベース上のデータベース・オブジェクトのインスタンス化SCNを指定します。RMANを使用したインスタンス化では、インスタンス化SCNは自動的には設定されませんが、適切なインスタンス化SCN値が指定されます。詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

接続先データベース上のデータベース・オブジェクトのインスタンス化SCNがインスタンス化の実行時に設定された場合は、NULLを指定します。インスタンス化SCNは、エクスポート/インポートのインスタンス化の実行時に設定できます。

exclude_schemas

Oracle Streams構成から除外するスキーマのカンマ区切りリスト。これらのスキーマを除外するために、各取得プロセスのネガティブ・ルール・セットにスキーマ・ルールが追加されます。

データベース内のすべてのスキーマを除外する場合は、アスタリスク(*)を指定します。

NULLに設定すると、データベース内のスキーマは除外されません。

このパラメータは、maintain_modeパラメータがGLOBALに設定されている場合にのみ有効です。maintain_modeパラメータがTRANSPORTABLE TABLESPACESに設定されている場合、このパラメータは無視されます。

exclude_flags

exclude_schemasパラメータで指定されたスキーマ内のレプリケーション構成から除外する対象を指定します。このパラメータは、PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャと同様に動作します。詳細は、「PRE_INSTANTIATION_SETUPプロシージャ」の「使用上の注意」を参照してください。

使用上の注意

次の各項では、このプロシージャの使用上の注意について説明します。

自己完結型の表領域セット

maintain_modeパラメータをTRANSPORTABLE TABLESPACESに設定した場合、指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。

関連項目:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。

RMANによるデータベースのインスタンス化の実行時に名前が変更された接続先データベース

maintain_modeパラメータをGLOBALに設定した場合は、POST_INSTANTIATION_SETUPプロシージャを実行する前に、データベースをインスタンス化する必要があります。RMANのDUPLICATEコマンドまたはCONVERT DATABASEコマンドを使用してデータベースをインスタンス化する場合は、インスタンス化の実行時に、接続先データベースのグローバル名をソース・データベースのグローバル名に変更できます。この場合は、POST_INSTANTIATION_SETUPプロシージャを実行する前に、次の手順を実行します。

1. 接続先データベースのグローバル名を変更して、destination_databaseパラメータで指定する名前に戻します。

2. ソースに存在していて、接続先データベースにクローニングされたすべてのループバック・データベース・リンクを、接続先データベースで削除し、再作成します。たとえば、ソース・データベースdbs1.netに、そのソース・データベース自体を参照するデータベース・リンクがあるとします。接続先データベースは、dbs2.netであるとします。接続先データベースで、このデータベース・リンクを削除し、接続先データベース自体(dbs2.net)を参照するループバック・データベース・リンクとして再作成します。

3. ソース・データベースから接続先データベースにクローニングされた、ソース・データベースから接続先データベースへのすべてのデータベース・リンクを削除します。たとえば、ソース・データベースがdbs1.net、接続先データベースがdbs2.netである場合は、接続先データベース上のdbs1.netからdbs2.netへのすべてのデータベース・リンクを削除します。

4. 接続先データベースからソース・データベースへのデータベース・リンクを、ソース・データベースのグローバル名と同じ名前で作成します。データベース・リンクは、接続先データベース上のOracle Streams管理者がアクセスできる必要があります。
このデータベース・リンクは、POST_INSTANTIATION_SETUPプロシージャによって、宛先データベースでDBMS_APPLY_ADMパッケージのSET_GLOBAL_INSTANTIATION_SCNプロシージャが実行されるために必要です。SET_GLOBAL_INSTANTIATION_SCNプロシージャには、データベース・リンクが必要です。インスタンス化SCNは、POST_INSTANTIATION_SETUPプロシージャのinstantiation_scnパラメータで指定する値に設定されます。

注意:
RMANのDUPLICATEコマンドまたはCONVERT DATABASEコマンドを使用してデータベースをインスタンス化する場合、接続先データベースを取得データベースにすることはできません。

接続先データベースから削除されるOracle Streamsコンポーネント

maintain_modeパラメータをGLOBALに設定した場合は、POST_INSTANTIATION_SETUPプロシージャを実行する前に、データベースをインスタンス化する必要があります。データベースのインスタンス化の実行時に、PRE_INSTANTIATION_SETUPプロシージャによって作成されたOracle Streamsコンポーネント(Oracle Streamsのクライアント、キューなど)がソース・データベースから接続先データベースにコピーされる場合があります。POST_INSTANTIATION_SETUPプロシージャは、PRE_INSTANTIATION_SETUPプロシージャによって作成されたStreamsコンポーネントを接続先データベースから削除します。

PRE_INSTANTIATION_SETUPプロシージャによって作成されたルール・セットおよびルールが接続先データベースから削除されない場合があります。POST_INSTANTIATION_SETUPプロシージャは、これらのルール・セットおよびルールを接続先データベースのStreamsクライアントには関連付けません。これらのルール・セットおよびルールは、POST_INSTANTIATION_SETUPプロシージャまたはこのプロシージャで生成されたスクリプトの実行完了後、ユーザーが接続先データベースから削除できます(オプション)。

注意:
POST_INSTANTIATION_SETUPプロシージャは、PRE_INSTANTIATION_SETUPプロシージャで作成されたOracle Streamsコンポーネントのみを削除します。他の方法で作成されたOracle Streamsコンポーネントは削除しません。

PRE_INSTANTIATION_SETUPプロシージャ

このプロシージャは、Oracle Streamsレプリケーション環境を構成するために、インスタンス化前に必要な処理を実行します。

このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。

Oracle Streamsレプリケーションの構成を完了するには、次の手順を実行します。

1. Streamsレプリケーション環境内のソース・データベースとなるデータベースで、PRE_INSTANTIATION_SETUPプロシージャを実行します。

2. 必要なインスタンス化処理を実行します。

3. ソース・データベースでPOST_INSTANTIATION_SETUPプロシージャを実行します。

通常、この手順で構成したOracle Streamsレプリケーション環境は、次のいずれかの目的に使用されます。

- 共有データベース・オブジェクトへの変更をレプリケートして、異なるデータベースでデータベース・オブジェクトの同期を維持するため。

- データベースの保守操作時(別のプラットフォームへのデータベースの移行時など)に、データベース・オブジェクトへの変更をレプリケートするため。この場合は、保守操作の完了後にCLEANUP_INSTANTIATION_SETUPプロシージャを使用してレプリケーション環境を削除します。

注意:

- 取得プロセスでは、SYS、SYSTEM、CTXSYSの各スキーマへの変更は取得されません。このプロシージャは、これらのスキーマに対するレプリケーションは構成しません。

- RMANのDUPLICATEコマンドまたはCONVERT DATABASEコマンドを使用してデータベースをインスタンス化する場合、接続先データベースを取得データベースにすることはできません。

関連項目:

- 「POST_INSTANTIATION_SETUPプロシージャ」

- 「CLEANUP_INSTANTIATION_SETUPプロシージャ」

- このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。

- Oracle Streamsレプリケーション環境の設定については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

- データベースの保守操作を実行する方法については、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS_ADM.PRE_INSTANTIATION_SETUP(
maintain_mode           IN VARCHAR2,
tablespace_names        IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,
source_database         IN VARCHAR2,
destination_database    IN VARCHAR2,
perform_actions         IN BOOLEAN         DEFAULT TRUE,
script_name             IN VARCHAR2        DEFAULT NULL,
script_directory_object IN VARCHAR2        DEFAULT NULL,
capture_name            IN VARCHAR2        DEFAULT NULL,
capture_queue_table     IN VARCHAR2        DEFAULT NULL,
capture_queue_name      IN VARCHAR2        DEFAULT NULL,
capture_queue_user      IN VARCHAR2        DEFAULT NULL,
propagation_name        IN VARCHAR2        DEFAULT NULL,
apply_name              IN VARCHAR2        DEFAULT NULL,
apply_queue_table       IN VARCHAR2        DEFAULT NULL,
apply_queue_name        IN VARCHAR2        DEFAULT NULL,
apply_queue_user        IN VARCHAR2        DEFAULT NULL,
bi_directional          IN BOOLEAN         DEFAULT FALSE,
include_ddl             IN BOOLEAN         DEFAULT FALSE,
start_processes         IN BOOLEAN         DEFAULT FALSE,
exclude_schemas         IN VARCHAR2        DEFAULT NULL,
exclude_flags           IN BINARY_INTEGER  DEFAULT NULL);

パラメータ

関連項目:
このプロシージャのパラメータで表159-29に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。

表159-29 PRE_INSTANTIATION_SETUPプロシージャのパラメータ

パラメータ

説明

maintain_mode

次のいずれかを指定します。

- ローカル・データベースと、destination_databaseパラメータで指定するデータベースとの間にレプリケーションを構成して、データベース全体を保守する場合は、GLOBALを指定します。

- ローカル・データベースと、destination_databaseパラメータで指定するデータベースとの間にレプリケーションを構成して、表領域セットを保守する場合は、TRANSPORTABLE TABLESPACESを指定します。

tablespace_names

maintain_modeをTRANSPORTABLE TABLESPACESに設定した場合は、Oracle Streamsによって接続先データベースにクローンが作成され保守されるローカル表領域セットを指定します。

表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。

また、この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対するREAD権限が必要です。

maintain_modeをGLOBALに設定した場合は、空の表領域セットを指定します。

maintain_modeの設定に関係なく、tablespace_namesパラメータが設定されていない場合またはNULLに設定されている場合は、エラーが発生します。

関連項目: 「TABLESPACE_SET表タイプ」

source_database

ソース・データベースのグローバル名。

ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。

ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、ローカル・データベースのグローバル名が使用されます。

destination_database

接続先データベースのグローバル名。

接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。

NULLの場合は、エラーが発生します。

capture_queue_table

取得プロセスで使用する各キューのキュー表の名前で、[schema_name.]queue_table_nameという形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLに設定すると、取得プロセスで使用する各キューのキュー表の名前が自動的に生成され、現行のユーザーが各キュー表の所有者になります。

start_processes

TRUEに設定すると、各取得プロセスおよび適用プロセスが開始されます。

FALSEに設定すると、取得プロセスも適用プロセスも開始されません。

exclude_schemas

Oracle Streams構成から除外するスキーマのカンマ区切りリスト。これらのスキーマを除外するために、各取得プロセスのネガティブ・ルール・セットにスキーマ・ルールが追加されます。

データベース内のすべてのスキーマを除外する場合は、アスタリスク(*)を指定します。

NULLに設定すると、データベース内のスキーマは除外されません。

このパラメータは、maintain_modeパラメータがGLOBALに設定されている場合にのみ有効です。maintain_modeパラメータがTRANSPORTABLE TABLESPACESに設定されている場合、このパラメータは無視されます。

exclude_flags

exclude_schemasパラメータで指定されたスキーマ内のレプリケーション構成から除外する対象を指定します。詳細は、「使用上の注意」を参照してください。

使用上の注意

次の各項では、このプロシージャの使用上の注意について説明します。

自己完結型の表領域セット

maintain_modeパラメータをTRANSPORTABLE TABLESPACESに設定した場合、指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。

関連項目:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。

exclude_flagsパラメータ

次のいずれかの値を指定します。

- スキーマおよびスキーマ内のすべてのデータベース・オブジェクトへの変更を除外する場合は、DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULLを指定します。

- スキーマ内のOracle Streamsでサポートされていないデータベース・オブジェクトへの変更を除外する場合は、DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTEDを指定します。

これらの値を両方とも指定すると、エラーが発生します。

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULLまたはDBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTEDに加えて、次の値のいずれか(または両方)を指定してください。

- 除外するデータベース・オブジェクトに行ったデータ操作言語(DML)変更を除外する場合は、DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DMLを指定します。

- 除外するデータベース・オブジェクトに行ったデータ定義言語(DDL)変更を除外する場合は、DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULLを指定します。

これらの値を複数指定するには、プラス記号(+)を使用します。たとえば、exclude_schemasパラメータで指定するスキーマ内の表へのDML変更を保守し、そのスキーマおよびそのスキーマ内のデータベース・オブジェクトへのDDL変更を除外するには、このパラメータを次のように指定します。

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL +
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL

exclude_schemasパラメータで指定するスキーマ内のサポートされていないデータベース・オブジェクトへのDML変更およびDDL変更を除外するには、このパラメータを次のように指定します。

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED +
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DML +
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL

除外するデータベース・オブジェクトのルールは、各取得プロセスのネガティブ・ルール・セットに追加されます。したがって、除外するデータベース・オブジェクトへの変更は取得およびレプリケートされません。

このパラメータは、maintain_modeパラメータがGLOBALに設定され、exclude_schemasパラメータがNULL値以外に設定されている場合にのみ有効です。maintain_modeパラメータがGLOBALに設定され、exclude_schemasパラメータがNULLに設定されている場合、このパラメータは無視されます。maintain_modeパラメータがTRANSPORTABLE TABLESPACESに設定されている場合、このパラメータは無視され、指定した表領域セット内のOracle Streamsでサポートされていないすべてのデータベース・オブジェクトがOracle Streams構成から自動的に除外されます。

また、exclude_schemasパラメータでスキーマが指定されていても、exclude_flagsパラメータがNULLに設定されている場合は、取得プロセスのネガティブ・ルール・セットにルールは追加されず、exclude_schemasパラメータで指定されたスキーマはレプリケーション環境に含められます。

PURGE_SOURCE_CATALOGプロシージャ

このプロシージャは、指定されたオブジェクトに属するすべてのOracle Streamsデータ・ディクショナリ情報をローカル・データベースから削除します。このプロシージャを使用すると、現在および将来にわたり不要なOracle Streamsメタデータを削除できます。

構文

DBMS_STREAMS_ADM.PURGE_SOURCE_CATALOG(
source_database     IN  VARCHAR2,
source_object_name  IN  VARCHAR2,
source_object_type  IN  VARCHAR2);

パラメータ

表159-30 PURGE_SOURCE_CATALOGプロシージャのパラメータ

パラメータ

説明

source_database

オブジェクトが含まれるソース・データベースのグローバル名。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

source_object_name

オブジェクトの名前で、[schema_name.]table_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

source_object_type

オブジェクトのタイプ。現在、使用できるオブジェクトのタイプは、TABLEのみです。

使用上の注意

オブジェクトが存在するソース・データベースのグローバル名をsource_databaseパラメータに指定する必要があります。現行のデータベースがオブジェクトのソース・データベースでない場合、そのオブジェクトに関するデータ・ディクショナリ情報は、ソース・データベースではなく現行のデータベースから削除されます。

たとえば、ソース・データベースdbs1.netのhr.employees表への変更が、接続先データベースdbs2.netのhr.employees表に適用されると仮定します。また、dbs2.netのhr.employeesは、ソース・データベースではないとします。この場合、この表にdbs2.netをsource_databaseとして指定すると、エラーが発生します。ただし、dbs2.netデータベースでのPURGE_SOURCE_CATALOGプロシージャの実行時に、この表にdbs1.netをsource_databaseとして指定すると、dbs2.netにある表に関するデータ・ディクショナリ情報が削除されます。

次の条件のいずれかに当てはまる場合は、データベースでこのプロシージャを実行しないでください。

- オブジェクトの取得プロセスで取得した論理変更レコード(LCR)が、オブジェクトの再インスタンス化を行わずにローカルで適用される場合(またはその可能性がある場合)。

- オブジェクトの取得プロセスで取得したLCRが、オブジェクトの再インスタンス化を行わずにデータベースによって転送される場合(またはその可能性がある場合)。

注意:
これらの条件は、取得プロセスで作成されていないLCRには適用されません。つまり、これらの条件は、ユーザーが作成したLCRには適用されません。

RECOVER_OPERATIONプロシージャ

このプロシージャは、エラーの発生により停止した操作に対するオプションを提供します。これらの操作には、分割およびマージ操作、Oracle Streamsレプリケーション構成操作、Oracle Streamsチェンジ・テーブル構成操作が含まれます。このプロシージャは、操作のロールフォワード、操作のロールバック、操作に関するすべてのメタデータのパージのいずれかの処理を実行します。

このプロシージャは、次の操作に対してのみアクションを実行できます。

- 次のものを使用する分割およびマージ操作

- split_thresholdおよびmerge_threshold取得プロセス・パラメータ(自動的な分割およびマージを有効にするために、NULL以外の値に設定)

- SPLIT_STREAMSプロシージャ

- MERGE_STREAMS_JOBプロシージャ

- MAINTAIN_CHANGE_TABLEプロシージャによるチェンジ・テーブル構成操作

- 次のプロシージャによって実行されるレプリケーション構成操作

- MAINTAIN_GLOBALプロシージャ

- MAINTAIN_SCHEMASプロシージャ

- MAINTAIN_SIMPLE_TABLESPACEプロシージャ

- MAINTAIN_SIMPLE_TTSプロシージャ

- MAINTAIN_TABLESプロシージャ

- MAINTAIN_TABLESPACESプロシージャ

- MAINTAIN_TTSプロシージャ

- PRE_INSTANTIATION_SETUPプロシージャ

- POST_INSTANTIATION_SETUPプロシージャ

操作に関する情報は、操作の進行中に次のデータ・ディクショナリ・ビューに格納されます。

- DBA_RECOVERABLE_SCRIPT

- DBA_RECOVERABLE_SCRIPT_PARAMS

- DBA_RECOVERABLE_SCRIPT_BLOCKS

- DBA_RECOVERABLE_SCRIPT_ERRORS

分割およびマージ操作の場合、データ・ディクショナリ・ビューは取得プロセスを含むデータベースに移入されます。構成操作の場合、データ・ディクショナリ・ビューはレプリケーション構成プロシージャが実行されたデータベースに移入されます。

操作が正常に完了すると、操作に関するメタデータはDBA_RECOVERABLE_SCRIPTビューからDBA_RECOVERABLE_SCRIPT_HISTビューに移動されます。その他のビュー(DBA_RECOVERABLE_SCRIPT_PARAMS、DBA_RECOVERABLE_SCRIPT_BLOCKS、DBA_RECOVERABLE_SCRIPT_ERRORS)は、30日後に自動的に消去されるまで、操作に関する情報を保持します。

これらのいずれかの操作でエラーが発生して操作が停止した場合、操作に関するメタデータはこれらのビューに残ります。この場合、操作に関するメタデータは、RECOVER_OPERATIONプロシージャを使用してロールフォワード、ロールバックまたはパージできます。操作のロールフォワードを選択した場合は、処理を行う前にDBA_RECOVERABLE_SCRIPT_ERRORSに記録されたエラーの原因を解消します。

分割およびマージ操作の場合は、取得プロセスを含むデータベースでRECOVER_OPERATIONプロシージャを実行します。構成操作の場合は、レプリケーション構成プロシージャが実行されたデータベースでRECOVER_OPERATIONを実行します。

注意:

- 構成操作の場合、プロシージャは、リカバリ可能なビューに格納される操作情報およびRECOVER_OPERATIONプロシージャにより管理される操作に対して、スクリプトを生成して環境を構成するのではなく、直接環境を構成する必要があります(perform_actions => TRUE)。

- RECOVER_OPERATIONプロシージャを実行するには、両方のデータベースがOracle Database 10g リリース2以上のデータベースである必要があります。

関連項目:
『Oracle Streamsレプリケーション管理者ガイド』

構文

DBMS_STREAMS_ADM.RECOVER_OPERATION(
script_id       IN  RAW,
operation_mode  IN  VARCHAR2  DEFAULT 'FORWARD');

パラメータ

表159-31 RECOVER_OPERATIONプロシージャのパラメータ

パラメータ

説明

script_id

ロールフォワード中、ロールバック中またはパージ中の操作の操作ID。操作IDを確認するには、DBA_RECOVERABLE_SCRIPTデータ・ディクショナリ・ビューのSCRIPT_ID列を問い合せます。

operation_mode

FORWARDを指定すると、操作がロールフォワードされます。FORWARDは、操作の完了を試行する場合に指定します。

ROLLBACKを指定すると、操作で行われたすべての処理がロールバックされます。ロールバックが成功すると、このオプションは操作に関するメタデータをDBA_RECOVERABLE_SCRIPTビューからDBA_RECOVERABLE_SCRIPT_HISTビューに移動します。その他のビューは、操作に関する情報を30日間保持します。

PURGEが設定されている場合、プロシージャは、操作をロールバックすることなく、操作に関するメタデータをDBA_RECOVERABLE_SCRIPTビューからDBA_RECOVERABLE_SCRIPT_HISTビューに移動します。その他のビューは、操作に関する情報を30日間保持します。

REMOVE_QUEUEプロシージャ

このプロシージャは、指定されたANYDATAキューを削除します。

具体的には、このプロシージャは次の操作を実行します。

1. 現行のエンキュー・トランザクションとデキュー・トランザクションがすべてコミットされるのを待ちます。

2. キューを停止します。キューを停止すると、それ以降、キューに対するエンキュー操作とキューからのデキュー操作が禁止されます。

3. キューを削除します。

4. drop_unused_queue_tableパラメータがTRUEに設定されている場合、キュー表が空で、他のキューによって使用されていなければ、キュー表を削除します。

5. cascadeパラメータがTRUEに設定されている場合は、キューを使用しているすべてのOracle Streamsクライアントを削除します。

注意:
必ずANYDATAキューを指定してください。

構文

DBMS_STREAMS_ADM.REMOVE_QUEUE(
queue_name               IN  VARCHAR2,
cascade                  IN  BOOLEAN  DEFAULT FALSE,
drop_unused_queue_table  IN  BOOLEAN  DEFAULT TRUE);

パラメータ

表159-32 REMOVE_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

削除するキューの名前で、[schema_name.]queue_nameの形式で指定します。たとえば、strmadmin.streams_queueのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

cascade

TRUEの場合は、キューを使用しているすべてのOracle Streamsクライアントが削除されます。

FALSEの場合は、キューを使用しているOracle Streamsクライアントが存在すると、エラーが発生します。cascadeパラメータをFALSEに設定してこのプロシージャを実行する場合は、キューを使用しているOracle Streamsクライアントが存在しないことを事前に確認してください。

drop_unused_queue_table

キューのキュー表が空の場合にTRUEに設定すると、キュー表が削除されます。キュー表にメッセージが残っている場合、または他のキューによって使用されている場合、キュー表は削除されません。

FALSEに設定すると、キュー表は削除されません。

REMOVE_RULEプロシージャ

このプロシージャは、特定のルールまたはすべてのルールを、指定の取得プロセス、同期取得、適用プロセス、伝播またはメッセージ・クライアントに関連付けられたルール・セットから削除します。

このプロシージャを実行した結果、メッセージ・クライアントのポジティブ・ルール・セットが空になる場合は、そのメッセージ・クライアントは自動的に削除されます。

注意:
自動的に作成されたルールを削除する場合は、DBMS_RULE_ADM.DROP_RULEプロシージャではなく、このプロシージャを使用してルールを削除してください。DBMS_RULE_ADM.DROP_RULEプロシージャを使用すると、ルールに関するメタデータの一部が残存する可能性があります。

構文

DBMS_STREAMS_ADM.REMOVE_RULE(
rule_name         IN  VARCHAR2,
streams_type      IN  VARCHAR2,
streams_name      IN  VARCHAR2,
drop_unused_rule  IN  BOOLEAN  DEFAULT TRUE,
inclusion_rule    IN  BOOLEAN  DEFAULT TRUE);

パラメータ

表159-33 REMOVE_RULEプロシージャのパラメータ

パラメータ

説明

rule_name

削除するルールの名前で、[schema_name.]rule_nameの形式で指定します。NULLの場合は、指定された取得プロセス、同期取得、適用プロセス、伝播またはメッセージ・クライアントのルール・セットからすべてのルールが削除されます。

たとえば、hrスキーマ内のprop_rule1というルールを指定するには、hr.prop_rule1と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

streams_type

Oracle Streamsクライアントのタイプを次のように指定します。

- 取得プロセスの場合は、capture。

- 同期取得の場合は、sync_capture。

- 伝播の場合は、propagation。

- 適用プロセスの場合は、apply。

- メッセージ・クライアントの場合は、dequeue。

streams_name

Oracle Streamsクライアント(取得プロセス、同期取得、伝播、適用プロセスまたはメッセージ・クライアント)の名前。所有者を指定しないでください。

指定されたOracle Streamsクライアントは存在しないが、そのクライアントのルールに関連するメタデータがデータ・ディクショナリに残っている場合は、そのメタデータが削除されます。

指定されたOracle Streamsクライアントが存在せず、そのクライアントのルールに関連するメタデータもデータ・ディクショナリに残っていない場合は、エラーが発生します。

drop_unused_rule

ルールがルール・セットに属していない場合にTRUEに設定すると、そのルールがデータベースから削除されます。

ルールがいずれかのルール・セットに属している場合にTRUEに設定すると、そのルールはデータベースから削除されません。

FALSEに設定すると、ルールはデータベースから削除されません。

inclusion_rule

inclusion_ruleをTRUEに設定すると、Oracle Streamsクライアントのポジティブ・ルール・セットからルールが削除されます。

inclusion_ruleをFALSEに設定すると、Oracle Streamsクライアントのネガティブ・ルール・セットからルールが削除されます。

REMOVE_STREAMS_CONFIGURATIONプロシージャ

このプロシージャは、ローカル・データベースからOracle Streams構成を削除します。

構文

DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION;

使用上の注意

このプロシージャは、ローカル・データベース上で次の処理を実行します。

- すべての取得プロセスを削除します。

- インスタンス化のために表が準備されている場合は、DBMS_CAPTURE_ADMパッケージのABORT_TABLE_INSTANTIATIONプロシージャを使用すると、表のインスタンス化の準備が中断されます。

- インスタンス化のためにスキーマが準備されている場合は、DBMS_CAPTURE_ADMパッケージのABORT_SCHEMA_INSTANTIATIONプロシージャを使用すると、スキーマのインスタンス化の準備が中断されます。

- インスタンス化のためにデータベースが準備されている場合は、DBMS_CAPTURE_ADMパッケージのABORT_GLOBAL_INSTANTIATIONプロシージャを使用すると、データベースのインスタンス化の準備が中断されます。

- DBMS_STREAMS_ADMパッケージまたはDBMS_PROPAGATION_ADMパッケージを使用して作成された伝播を削除します。伝播を削除する前に、伝播ジョブを無効にします。DBMS_AQADMパッケージを使用して作成された伝播は削除しません。

- 伝播で使用されるすべての伝播ジョブを無効にします。

- すべての適用プロセスを削除します。適用プロセスのエラー・キューに適用エラーがある場合は、すべての適用エラーを削除してから、適用プロセスを削除します。

- 適用プロセスで使用されるDDLハンドラの定義を削除します。DDLハンドラによって使用されるPL/SQLプロシージャは削除しません。

- 適用プロセスで使用されるメッセージ・ハンドラの定義を削除します。メッセージ・ハンドラによって使用されるPL/SQLプロシージャは削除しません。

- 適用プロセスで使用されるプリコミット・ハンドラの定義を削除します。プリコミット・ハンドラによって使用されるPL/SQLプロシージャは削除しません。

- 個々の適用オブジェクト用、個々のスキーマ用およびデータベース全体用の、初期化SCNと無視SCNを削除します。

- メッセージ・クライアントを削除します。

- DBMS_STREAMS_ADMパッケージのSET_MESSAGE_NOTIFICATIONプロシージャを使用して設定されたメッセージ通知定義を解除します。

- プロシージャDMLハンドラとエラー・ハンドラの定義を削除します。この削除では、これらのハンドラによって使用されるPL/SQLプロシージャは削除されません。

- 更新競合ハンドラを削除します。

- 適用表の代替キー列の定義を削除します。

- DBMS_STREAMS_ADMパッケージを使用して作成されたルール・セットおよびルールを削除します。

- 取得プロセス、伝播、適用プロセスおよびメッセージ・クライアントによって使用されなかったルール・セットを削除し、それぞれのルール・セット内のルールを削除します。これらのルールとルール・セットは、DBMS_STREAMS_ADMパッケージまたはDBMS_RULE_ADMパッケージのどちらを使用して作成されたかに関係なく削除されます。

このプロシージャは、取得プロセスと適用プロセスを停止してから、それらのプロセスを削除します。

次の両方の条件を満たす場合は、このプロシージャはルール・セットまたはルールを削除しません。

- ルール・セットまたはルールがDBMS_RULE_ADMパッケージを使用して作成された。

- ルール・セットまたはルールが、取得プロセス、伝播、適用プロセスまたはメッセージ・クライアントによって使用されていない。

注意:
このプロシージャの実行には危険が伴います。データベースからOracle Streams構成全体を削除するかどうかを必ず確認してから、このプロシージャを実行してください。

注意:

- このプロシージャを繰り返し実行しても、エラーは発生しません。プロシージャが途中で失敗した場合は再実行できます。

- このプロシージャは複数回コミットされます。

関連項目:

- 「DBMS_CAPTURE_ADMパッケージ」の「STOP_CAPTUREプロシージャ」

- 「DBMS_APPLY_ADMパッケージ」の「STOP_APPLYプロシージャ」

- 「DBMS_STREAMS_ADMパッケージ」の「REMOVE_RULEプロシージャ」

RENAME_COLUMNプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内の列の名前を変更する宣言ルールベースの変換を追加または削除します。

指定されたルールがTRUEに評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。

注意:

- RENAME_COLUMNプロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。

- 宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。

関連項目:
宣言ルールベースの変換の詳細およびOracle Streams取得プロセスでサポートされているデータ・タイプの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS_ADM.RENAME_COLUMN(
rule_name         IN  VARCHAR2,
table_name        IN  VARCHAR2,
from_column_name  IN  VARCHAR2,
to_column_name    IN  VARCHAR2,
value_type        IN  VARCHAR2  DEFAULT '*',
step_number       IN  NUMBER    DEFAULT 0,
operation         IN  VARCHAR2  DEFAULT 'ADD');

パラメータ

表159-34 RENAME_COLUMNプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列の名前を変更する表の名前で、[schema_name.]object_nameという形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

from_column_name

ルールを満たす各行LCR内の名前を変更する列の名前。

to_column_name

ルールを満たす各行LCR内の列の新しい名前。

value_type

行LCRの新しい値の列の名前を変更する場合は、'NEW'を指定します。

行LCRの古い値の列の名前を変更する場合は、'OLD'を指定します。

行LCRの新しい値と古い値の両方の列の名前を変更する場合は、'*'を指定します。

step_number

変換の実行順序。

関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列名変更の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_nameおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、RENAME_COLUMNプロシージャの動作を示します。

table_name

from_column_name

to_column_name

step_number

結果

NULL

NULL

NULL

NULL

指定したルールに対するすべての列名変更変換が削除されます。

NULL

NULL

NULL

NULL以外

指定したルールに対して指定されたstep_numberの値を持つすべての列名変更変換が削除されます。

NULL

NULL

NULL以外

NULL以外

指定したルールに対して指定されたto_column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されたtable_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL

NULL

NULL以外

NULL

指定したルールに対して指定されたcolumn_nameの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL

NULL以外

NULL

指定したルールに対して指定されたtable_nameおよびcolumn_nameの値を持つすべての列名変更変換が削除されます。

NULL

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameの値を持つすべての列名変更変換が削除されます。

NULL

NULL以外

NULL以外

NULL

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL

NULL以外

NULL

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

NULL

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

RENAME_SCHEMAプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内のスキーマの名前を変更する宣言ルールベースの変換を追加または削除します。

指定されたルールがTRUEに評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。

注意:
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。

関連項目:
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS_ADM.RENAME_SCHEMA(
rule_name         IN  VARCHAR2,
from_schema_name  IN  VARCHAR2,
to_schema_name    IN  VARCHAR2,
step_number       IN  NUMBER    DEFAULT 0,
operation         IN  VARCHAR2  DEFAULT 'ADD');

パラメータ

表159-35 RENAME_SCHEMAプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

from_schema_name

ルールを満たす各行LCR内の名前を変更するスキーマの名前。

to_schema_name

ルールを満たす各行LCR内のスキーマの新しい名前。

step_number

変換の実行順序。

関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対するスキーマ名変更の宣言ルールベースの変換のうち、指定したパラメータ(from_schema_name、to_schema_nameおよびstep_number)に一致する変換がすべて削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、RENAME_SCHEMAプロシージャの動作を示します。

from_schema_name

to_schema_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべてのスキーマ名変更変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されたstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されたto_schema_nameおよびstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されたfrom_schema_nameおよびstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されたto_schema_nameの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されたfrom_schema_nameおよびto_schema_nameの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されたfrom_schema_nameの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されたfrom_schema_name、to_schema_nameおよびstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

RENAME_TABLEプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(行LCR)内の表の名前を変更する宣言ルールベースの変換を追加または削除します。

指定されたルールがTRUEに評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。

注意:
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。

関連項目:
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS_ADM.RENAME_TABLE(
rule_name        IN  VARCHAR2,
from_table_name  IN  VARCHAR2,
to_table_name    IN  VARCHAR2,
step_number      IN  NUMBER    DEFAULT 0,
operation        IN  VARCHAR2  DEFAULT 'ADD');

パラメータ

表159-36 RENAME_TABLEプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

from_table_name

ルールを満たす各行LCR内の名前を変更する表の名前で、[schema_name.]object_nameという形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

to_table_name

ルールを満たす各行LCR内の表の新しい名前で、[schema_name.]object_nameという形式で指定します。たとえば、humres.staffのように指定します。

この変換では、表のみ、スキーマのみ、または両方の名前を変更できます。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

step_number

変換の実行順序。

関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する表名変更の宣言ルールベースの変換のうち、指定したパラメータ(from_table_name、to_table_nameおよびstep_number)に一致する変換がすべて削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、RENAME_TABLEプロシージャの動作を示します。

from_table_name

to_table_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての表名変更変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されたstep_numberの値を持つすべての表名変更変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているto_table_nameおよびstep_numberのすべての表名変更変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているfrom_table_nameおよびstep_numberのすべての表名変更変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているto_table_nameのすべての表名変更変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているfrom_table_nameおよびto_table_nameのすべての表名変更変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているfrom_table_nameのすべての表名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているfrom_table_name、to_table_nameおよびstep_numberのすべての表名変更変換が削除されます。

SET_MESSAGE_NOTIFICATIONプロシージャ

このプロシージャは、指定されたOracle Streamsメッセージ・クライアントによって特定のキューからデキュー可能なメッセージに関する通知を設定します。指定されたキューにメッセージがエンキューされ、このメッセージがルール・セットを満たすため、特定のメッセージ・クライアントによってキューからデキュー可能である場合に、通知が送信されます。

注意:

- 現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。

- DBMS_AQパッケージは通知を構成することもできます。DBMS_AQパッケージでは、バッファに入れたメッセージの通知や時間による通知のグループ化など、DBMS_STREAMS_ADMパッケージでは使用できない一部の通知機能を提供しています。

構文

DBMS_STREAMS_ADM.SET_MESSAGE_NOTIFICATION(
streams_name          IN  VARCHAR2,
notification_action   IN  VARCHAR2,
notification_type     IN  VARCHAR2     DEFAULT 'PROCEDURE',
notification_context  IN  ANYDATA      DEFAULT NULL,
include_notification  IN  BOOLEAN      DEFAULT TRUE,
queue_name            IN  VARCHAR2     DEFAULT 'streams_queue');

パラメータ

表159-37 SET_MESSAGE_NOTIFICATIONプロシージャのパラメータ

パラメータ

説明

streams_name

Oracle Streamsメッセージ・クライアントの名前。所有者を指定しないでください。

たとえば、ユーザーstrmadminがメッセージ・クライアントの場合は、strmadminと指定します。

notification_action

メッセージの通知を送信する方法を指定します。次のいずれかを指定します。

- URLによる通知の場合は、接頭辞http://なしのURLを指定します。
たとえば、http://www.company.com:8080というURLを指定する場合は、次のように入力します。

www.company.com:8080

- 電子メールによる通知の場合は、電子メール・アドレスを指定します。
たとえば、xyz@company.comという電子メール・アドレスを指定する場合は、次のように入力します。

xyz@company.com

- PL/SQLプロシージャによる通知の場合は、既存のユーザー定義PL/SQLプロシージャの名前を[schema_name.]procedure_nameという形式で指定します。schema_nameを指定しない場合は、SET_MESSAGE_NOTIFICATIONプロシージャを起動するユーザーの名前がデフォルトで使用されます。このプロシージャは、PLSQLCALLBACKデータ構造である必要があります。
たとえば、oeスキーマ内のnotify_ordersという名前のプロシージャを指定するには、次のように入力します。

oe.notify_orders

関連項目: メッセージ通知プロシージャの詳細は、「例」を参照してください。

notification_type

通知のタイプ。次のいずれかを指定します。

- HTTP - notification_actionパラメータにURLを指定した場合

- MAIL - notification_actionパラメータに電子メール・アドレスを指定した場合

- PROCEDURE - notification_actionパラメータにユーザー定義プロシージャを指定した場合

通知のタイプは、notification_actionパラメータの指定と一致する必要があります。

notification_context

通知のコンテキスト。コンテキストはRAWデータ・タイプの情報で指定する必要があります。たとえば、16進数'FF'に相当する値を指定するには、次のように入力します。

ANYDATA.ConvertRaw(HEXTORAW('FF'))

通知コンテキストはプロシージャによる通知でPL/SQLプロシージャに渡され、HTTPおよび電子メールによる通知では使用されません。

include_notification

TRUEに設定すると、指定されたstreams_nameおよびqueue_nameに対するこの通知が追加されます。つまり、TRUEに設定すると、streams_nameおよびqueue_nameに対して通知がオンになります。

FALSEに設定すると、指定されたstreams_nameおよびqueue_nameに対するこの通知が削除されます。つまり、FALSEに設定すると、streams_nameおよびqueue_nameに対して通知がオフになります。FALSEに設定した場合、notification_actionパラメータまたはnotification_contextパラメータに指定された値は無視されます。

queue_name

ローカルANYDATAキューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があります。必ずANYDATAキューを指定してください。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

使用上の注意

次のいずれかのタイプの通知を指定できます。

- メッセージ通知が送信される電子メール・アドレス。適切なメッセージがキューにエンキューされると、電子メールがメッセージ・プロパティとともに指定の電子メール・アドレスに送信されます。

- メッセージを通知するために起動されるPL/SQLプロシージャ。適切なメッセージがキューにエンキューされると、指定したPL/SQLプロシージャがメッセージ・プロパティによって起動されます。このPL/SQLプロシージャによって、メッセージをデキューできます。

- メッセージ通知が転送されるHTTP URL。適切なメッセージがキューにエンキューされると、通知がメッセージ・プロパティとともに指定のURLに転送されます。

クライアントはデータベースに接続していなくても、通知を受信できます。

電子メールによる通知を登録する場合は、DBMS_AQELMパッケージを使用し、データベースで電子メール通知の送信に使用されるSMTPサーバーのホスト名およびポート名を設定する必要があります。必要な場合は、データベースのsent fromフィールドを使用して、発信元の電子メール・アドレスを設定します。この機能を使用するには、Java対応のデータベースが必要です。

HTTPによる通知を登録する場合は、DBMS_AQELMパッケージを使用し、データベースでHTTP通知の転送に使用されるプロキシ・サーバーのホスト名とポート番号、および非プロキシ・ドメインのリストを設定する必要があります。

各通知は次の構造を持つAQXmlNotificationです。

- 次の要素からなるnotification_options。

- destination - メッセージがデキューされる宛先キュー

- consumer_name - メッセージをデキューしたメッセージ・クライアントの名前

- message_set - メッセージ・プロパティのセット

関連項目:

- 電子メール通知とHTTP通知の詳細は、DBMS_AQELMパッケージのドキュメントを参照してください。

- メッセージ通知およびXMLの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』および『Oracle XML DB開発者ガイド』を参照してください。

- Oracle Streamsでのルールの使用方法は、『Oracle Streams概要および管理』を参照してください。

例

メッセージ通知プロシージャを使用する場合は、次のシグネチャを持つPL/SQLプロシージャを定義する必要があります。

PROCEDURE procedure_name(
context  IN  ANYDATA,
reginfo  IN  SYS.AQ$_REG_INFO,
descr    IN  SYS.AQ$_DESCRIPTOR);

procedure_nameはプロシージャの名前を表します。このプロシージャは、メッセージ通知について起動されるユーザー定義PL/SQLプロシージャを指定するPLSQLCALLBACKデータ構造です。

次の簡単な例では、通知で送信されるメッセージ識別子とコンシューマ名に基づいて、oe.user_msgタイプのメッセージをデキューする通知プロシージャを示します。この例を実行するには、まずタイプを作成します。

CREATE TYPE oe.user_msg AS OBJECT(
object_name    VARCHAR2(30),
object_owner   VARCHAR2(30),
message        VARCHAR2(50));
/

次に、プロシージャを作成します。

CREATE OR REPLACE PROCEDURE oe.notification_dequeue(
context  ANYDATA,
reginfo  SYS.AQ$_REG_INFO,
descr    SYS.AQ$_DESCRIPTOR)
AS
dequeue_options     DBMS_AQ.DEQUEUE_OPTIONS_T;
message_properties  DBMS_AQ.MESSAGE_PROPERTIES_T;
message_handle      RAW(16);
message             ANYDATA;
oe_message          oe.user_msg;
rc                  PLS_INTEGER;
BEGIN
-- Get the message identifier and consumer name from the descriptor
dequeue_options.msgid := descr.msg_id;
dequeue_options.consumer_name := descr.consumer_name;
-- Dequeue the message
DBMS_AQ.DEQUEUE(
queue_name         => descr.queue_name,
dequeue_options    => dequeue_options,
message_properties => message_properties,
payload            => message,
msgid              => message_handle);
rc := message.getobject(oe_message);
COMMIT;
END;
/

関連項目:
PLSQLCALLBACKデータ構造の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

SET_MESSAGE_TRACKINGプロシージャ

現在のセッションで生成された論理変更レコード(LCR)の追跡ラベルを設定します。このプロシージャの影響があるのは、現行のセッションのみです。取得されたLCRや永続LCRなど、現在のセッションで生成されたLCRが追跡されます。

注意:
このプロシージャで設定される追跡ラベルは、非LCRメッセージを追跡しません。

関連項目:
GET_MESSAGE_TRACKINGファンクション

構文

DBMS_STREAMS_ADM.SET_MESSAGE_TRACKING(
tracking_label IN VARCHAR2  DEFAULT 'Streams_tracking',
actions        IN NUMBER    DEFAULT DBMS_STREAMS_ADM.ACTION_MEMORY);

パラメータ

表159-38 SET_MESSAGE_TRACKINGプロシージャのパラメータ

パラメータ

説明

tracking_label

セッションで生成されたLCRを追跡するために使用されるラベル。

現在のセッションでメッセージ追跡を停止するには、このパラメータをNULLに設定します。

ラベルのサイズ制限は、4,000バイトです。

actions

DBMS_STREAMS_ADM.ACTION_MEMORYを指定すると、LCRがメモリー内で追跡され、V$STREAMS_MESSAGE_TRACKING動的パフォーマンス・ビューにLCRに関する情報が格納されます。

現在、このパラメータで有効な設定は、DBMS_STREAMS_ADM.ACTION_MEMORYのみです。

このパラメータに指定する値は、列挙定数です。列挙定数にはパッケージ名を接頭辞として付加する必要があります。

SET_RULE_TRANSFORM_FUNCTIONプロシージャ

このプロシージャは、カスタム・ルールベースの変換に関する変換ファンクション名を設定または削除します。

構文

DBMS_STREAMS_ADM.SET_RULE_TRANSFORM_FUNCTION(
rule_name           IN  VARCHAR2,
transform_function  IN  VARCHAR2);

パラメータ

表159-39 SET_RULE_TRANSFORM_FUNCTIONプロシージャのパラメータ

パラメータ

説明

rule_name

設定または削除するルールベース変換ファンクションを持つルールの名前で、[schema_name.]rule_nameという形式で指定します。

たとえば、hrスキーマ内のprop_rule1というルールを指定するには、hr.prop_rule1と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

transform_function

ルールのルールベース変換で使用される変換ファンクションの名前を入力するか、NULLを指定します。

変換ファンクションの名前を指定する場合は、次のいずれかの形式で既存の変換ファンクションを指定します。

- [schema_name.]function_name

- [schema_name.]package_name.function_name

ファンクションがパッケージ内にある場合は、package_nameを指定する必要があります。たとえば、hrスキーマ内のtransform_pkgパッケージにあるexecutive_to_managementという名前のファンクションを指定するには、hr.transform_pkg.executive_to_managementと入力します。指定したプロシージャが存在しない場合はエラーが戻されます。

schema_nameが指定されない場合は、ルールベースの変換ファンクションを起動するユーザー名がデフォルトで使用されます。

NULLを指定すると、SET_RULE_TRANSFORM_FUNCTIONプロシージャは、現行のカスタム・ルールベースの変換をルールから削除します。

使用上の注意

次の各項では、このプロシージャの使用上の注意について説明します。

- 変換ファンクションのシグネチャ

- ルール・アクション・コンテキスト

- 変換ファンクションをコールするユーザー

- ファンクションの検証

変換ファンクションのシグネチャ

カスタム・ルールベースの変換ファンクションは、常に1つのメッセージに対して動作しますが、1つ以上のメッセージを戻すことができます。メッセージを1つ戻すカスタム・ルールベースの変換ファンクションは、1対1の変換ファンクションです。1対1の変換ファンクションには、次のシグネチャが含まれている必要があります。

FUNCTION user_function (
parameter_name   IN  ANYDATA)
RETURN ANYDATA;

user_functionはファンクション名で、parameter_nameはファンクションに渡されるパラメータの名前です。ファンクションに渡されるパラメータはメッセージをANYDATAにカプセル化したもので、ファンクションではANYDATAにカプセル化したメッセージを戻す必要があります。

複数のメッセージを戻すカスタム・ルールベースの変換ファンクションは、1対多の変換ファンクションです。1対多の変換ファンクションには、次のシグネチャが含まれている必要があります。

FUNCTION user_function (
parameter_name  IN  ANYDATA)
RETURN STREAMS$_ANYDATA_ARRAY;

user_functionはファンクション名で、parameter_nameはファンクションに渡されるパラメータの名前です。ファンクションに渡されるパラメータはメッセージをANYDATAにカプセル化したもので、ファンクションはカプセル化したANYDATAメッセージを0個以上含む配列を戻す必要があります。配列に含まれるカプセル化したANYDATAメッセージが0個の場合､元のメッセージは廃棄されます。

STREAMS$_ANYDATA_ARRAYタイプは、オラクル社が提供するタイプで、次のように定義されています。

CREATE OR REPLACE TYPE SYS.STREAMS$_ANYDATA_ARRAY
AS VARRAY(2147483647) of ANYDATA
/

1対多ファンクションを使用するカスタム・ルールベースの変換には、次の制限があります。

- 1対多ファンクションに関連付けられているルールは、Oracle Streams取得プロセスのみでサポートされます。これらのルールは、他のOracle Streamsクライアント(伝播、適用プロセス、メッセージ・クライアントなど)で使用されるルール・セットに追加しないでください。

- 1対多ファンクションは、行論理変更レコード(行LCR)のみを操作できます。DDL LCRは操作できません。

- 1対多ファンクションが戻す行LCRに、ピース単位のLOB、LONGまたはLONG RAWの操作を含めることはできません。

- 1対多ファンクションは、正しい順序で行LCRを戻す必要があります。行LCRは、配列(索引1から開始)内の行LCRの順序に従って、トランザクション内で実行されます。

1対多ファンクションによる変換結果である行LCRを適用プロセスでデキューする場合は、すべての行LCRに対する1対多ファンクションに渡されたLCRのインスタンス化SCNが使用されます。

注意:

- 1対1または1対多変換ファンクションがNULLを戻すと、エラーが発生します。

- 1つのルールに対しては、1つのみのカスタム・ルールベースの変換を指定できます。同じルールに対して、1対1と1対多の両方の変換ファンクションを指定することはできません。

- カスタム・ルールベースの変換によって作成され戻されるLCRでは、source_database_name、transaction_id、scnの各パラメータの値が元のLCRと一致している必要があります。これらのパラメータでは、他の値でLCRを作成しようとした場合でも、元のLCRの値が自動的に指定されます。

ルール・アクション・コンテキスト

このプロシージャは、変換を指定するため、指定されたルールのアクション・コンテキストを修正します。ルールのアクション・コンテキストは、ルールがメッセージに対してTRUEに評価された後、ルール・エンジンのクライアントが解析するルールに関連付けられているオプションの情報です。ルール・エンジンのクライアントには、ユーザーが作成するアプリケーションや、Oracle StreamsなどのOracleの内部機能があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。アクション・コンテキスト内の情報はSYS.RE$NV_LISTタイプのオブジェクトであり、名前/値ペアで構成されています。

Oracle Streamsのカスタム・ルールベースの変換は、常にアクション・コンテキスト内の次の名前/値ペアで構成されます。

- ファンクションが1対1の変換ファンクションの場合、その名前はSTREAMS$_TRANSFORM_FUNCTIONです。ファンクションが1対多の変換ファンクションの場合、その名前はSTREAMS$_ARRAY_TRANS_FUNCTIONです。

- 値は、VARCHAR2として指定されたPL/SQLファンクション名を含むANYDATAインスタンスです。このファンクションによって変換が実行されます。

変換ファンクションをコールするユーザー

変換ファンクションをコールするユーザーには、そのファンクションに対するEXECUTE権限が必要です。次のリストに、変換ファンクションをコールするユーザーのタイプを示します。

- 取得プロセスで使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、取得プロセスの取得ユーザーです。

- 同期取得で使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、同期取得の取得ユーザーです。

- 伝播で使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、伝播のソース・キューの所有者です。

- 適用プロセスで使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、適用プロセスの適用ユーザーです。

- メッセージ・クライアントで使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、メッセージ・クライアントを起動するユーザーです。

ファンクションの検証

このプロシージャでは、指定された変換ファンクションが存在するかどうかは確認されません。変換ファンクションが存在しない場合は、Oracle Streamsクライアントが変換ファンクションを起動しようとしたときにエラーが発生します。

SET_TAGプロシージャ

このプロシージャは、現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。現行セッションのDML文またはDDL文によって生成される各REDOエントリには、このタグが含まれます。このプロシージャの影響があるのは、現行のセッションのみです。

関連項目:

- 「GET_TAGファンクション」

- タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS_ADM.SET_TAG(
tag  IN RAW  DEFAULT NULL);

パラメータ

表159-40 SET_TAGプロシージャのパラメータ

パラメータ

説明

tag

現行のセッションで継続して生成されるREDOエントリすべてに対するバイナリ・タグ。RAW値は一連のバイトで、バイトは一連のビットです。

デフォルトでは、セッションのタグはNULLです。

タグ値のサイズ制限は、2000バイトです。

使用上の注意

現行のセッションでタグを16進数値の'17'に設定するには、次のプロシージャを実行します。

EXEC DBMS_STREAMS_ADM.SET_TAG(tag => HEXTORAW('17'));

SET_TAGプロシージャでは、次の点に注意してください。

- このプロシージャはトランザクション型ではありません。つまり、SET_TAGの結果はロールバックできません。

- データベースでデータ・ディクショナリの構築を実行する前に、SET_TAGプロシージャを実行してNULL以外のセッション・タグを設定した場合、ディクショナリの構築前に開始したトランザクションのREDOエントリに、セッションに指定したタグ値が含まれないことがあります。そのため、データ・ディクショナリの構築は、セッションでSET_TAGプロシージャを使用する前に実行します。データ・ディクショナリは、DBMS_CAPTURE_ADM.BUILDプロシージャを実行すると構築されます。BUILDプロシージャは、取得プロセスの作成時に自動的に実行できます。

関連項目:
BUILDプロシージャ

SET_UP_QUEUEプロシージャ

このプロシージャは、キュー表およびANYDATAキューを作成します。

構文

DBMS_STREAMS_ADM.SET_UP_QUEUE(
queue_table     IN  VARCHAR2  DEFAULT 'streams_queue_table',
storage_clause  IN  VARCHAR2  DEFAULT NULL,
queue_name      IN  VARCHAR2  DEFAULT 'streams_queue',
queue_user      IN  VARCHAR2  DEFAULT NULL,
comment         IN  VARCHAR2  DEFAULT NULL);

パラメータ

表159-41 SET_UP_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_table

キュー表の名前で、[schema_name.]queue_table_nameの形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

キュー表の所有者を指定しない場合は、このプロシージャを実行するユーザーがキュー表の所有者として自動的に指定されます。

キュー表の名前の最大長は24バイトです。

storage_clause

キュー表に対すSTORAGE句。

記憶域パラメータは、キュー表の作成時に、CREATE TABLE文に組み込まれます。有効な表のSTORAGE句を任意に指定できます。

ここで表領域を指定しない場合は、キュー表およびそのすべての関連オブジェクトが、このプロシージャを実行しているユーザーのデフォルトのユーザー表領域に作成されます。ここで表領域を指定した場合は、キュー表およびそのすべての関連オブジェクトが、STORAGE句で指定された表領域に作成されます。

NULLの場合は、キュー表が作成された表領域の記憶特性が使用されます。

関連項目: STORAGE句の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

queue_name

ANYDATAキューとして機能するキューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者が使用されます。キュー表の所有者は、キューの所有者でもある必要があります。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

このパラメータにスキーマが指定されず、queue_tableパラメータにキュー表の所有者が指定されていない場合は、現行のユーザーがデフォルトで使用されます。

キューの名前の最大長は24バイトです。

queue_user

キューに対するENQUEUE権限とDEQUEUE権限が必要なユーザー名。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

comment

キューに対するコメント。

使用上の注意

設定には、次のアクションが含まれます。

- 指定のキュー表が存在していない場合、このプロシージャは、DBMS_AQADMパッケージのCREATE_QUEUE_TABLEプロシージャを実行し、指定のSTORAGE句でキュー表を作成します。このプロシージャでキュー表が作成される場合は、保護キューでありトランザクション・キューでもある、ANYDATAのマルチ・コンシューマ・キューが作成されます。
また、データベースがOracle Database 10g リリース 2以上の場合、CREATE_QUEUE_TABLEのsort_list設定はcommit_timeに設定されます。データベースがOracle Database 10g リリース2より前の場合、CREATE_QUEUE_TABLEのsort_list値はenq_timeに設定されます。

- 指定したキュー表が存在する場合は、そのキュー表のプロパティがキューで使用されます。

- 指定したキューの名前が存在していない場合、このプロシージャは、DBMS_AQADMパッケージのCREATE_QUEUEプロシージャを実行して、キューを作成します。

- このプロシージャは、キューを開始します。

- キュー・ユーザーが指定されている場合、このプロシージャは、このユーザーをキューの保護キュー・ユーザーとして構成し、キューに対するENQUEUE権限とDEQUEUE権限を指定のキュー・ユーザーに付与します。
キュー・ユーザーを保護キュー・ユーザーとして構成するために、このプロシージャは、ユーザー名と同名のアドバンスト・キューイング・エージェントを作成します(エージェントが存在していない場合)。この名前のエージェントが存在し、キュー・ユーザーのみに関連付けられている場合は、そのエージェントが使用されます。SET_UP_QUEUEプロシージャは、次に、DBMS_AQADMパッケージのENABLE_DB_ACCESSプロシージャを実行して、エージェントとユーザーを指定します。

注意:

- キューに対するメッセージのエンキューおよびデキューを実行するには、DBMS_STREAMS_MESSAGINGパッケージまたはDBMS_AQパッケージに対するEXECUTE権限がキュー・ユーザーに必要です。この権限は、SET_UP_QUEUEプロシージャでは付与されません。

- SET_UP_QUEUEで作成を試みたエージェントが存在し、そのエージェントがqueue_userで指定されているユーザー以外のユーザーに関連付けられている場合は、エラーが発生します。この場合は、既存のエージェントを変更または削除してから、SET_UP_QUEUEを再試行してください。

関連項目:
保護キュー・ユーザーの詳細は、『Oracle Streams概要および管理』を参照してください。

SPLIT_STREAMSプロシージャ

このプロシージャは、取得プロセスからの1つのストリームをその取得プロセスからの他のすべてのストリームから分割します。

このプロシージャの対象は、複数の接続先データベースに伝播された変更を取得プロセスが取得するOracle Streamsレプリケーション環境です。伝播の接続先の1つが取得された変更の受入れを停止した場合、変更は取得プロセス・キューに残ります。キューが大きくなってメッセージのハード・ディスクへの書込みが開始されると、Oracle Streams環境のパフォーマンスが低下する可能性があります。接続先はいくつかの理由で変更の受入れを停止する場合があります。たとえば、接続先データベースが停止する場合などです。

具体的には、このプロシージャは次の操作を実行します。

1. 取得プロセスを実行しているデータベースで新しいキューを作成します。新しいキューは元のストリームで使用されているキューのクローンであるため、クローニングされたキューと呼ばれます。新しいキューはクローニングされた新しい取得プロセスによって使用され、クローニングされた新しい伝播のソース・キューとなります。

2. 手順1で作成したソース・キューから既存の宛先キューにメッセージを伝播する新しい伝播を作成します。新しい伝播は元のストリームで使用されている伝播のクローンであるため、クローニングされた伝播と呼ばれます。クローニングされた伝播は、元の伝播と同じルール・セットを使用します。

3. 取得プロセスを停止します。

4. 元の伝播の確認済SCNを問い合せます。確認済SCNとは、伝播によって送信された変更を適用する適用プロセスによって確認された最後のSCNです。

5. 新しい取得プロセスを作成します。新しい取得プロセスは元のストリームで使用されている取得プロセスのクローンであるため、クローニングされた取得プロセスと呼ばれます。プロシージャによって、クローニングされた取得プロセスの開始SCNが、手順4で問い合せた確認済SCNの値に設定されます。クローニングされた取得プロセスは、元の取得プロセスと同じルール・セットを使用します。

6. 元の伝播を削除します。

7. 手順4で問い合せた確認済SCNに設定された開始SCNで元の取得プロセスを開始します。

8. auto_merge_thresholdパラメータが正数に設定されている場合、スケジュールに従って設定された間隔でMERGE_STREAMS_JOBプロシージャを実行するOracle Schedulerジョブを作成します。2つのストリームが指定されたマージしきい値内にある場合、MERGE_STREAMS_JOBプロシージャはMERGE_STREAMSを実行して、ストリームを自動的にマージします。

SPLIT_STREAMSプロシージャの実行が終了すると、クローニングされた取得プロセスは無効化されます。接続先データベースで問題が解決され、宛先キューで変更を受け入れることができる場合は、DBMS_CAPTURE_ADMパッケージのSTART_CAPTUREプロシージャを使用して、クローニングされた取得プロセスを開始する必要があります。

DBA_STREAMS_SPLIT_MERGEビューは、各クローン・コンポーネントの名前と、分割およびマージ操作に関する情報を示します。

注意:
元の取得プロセスがダウンストリーム取得プロセスである場合は、クローニングされた取得プロセスを開始する前に、ソース・データベースからREDOログを読み取るようにクローニングされた取得プロセスを構成する必要があります。

関連項目:

- 「MERGE_STREAMSプロシージャ」

- 「MERGE_STREAMS_JOBプロシージャ」

- SPLIT_STREAMSプロシージャの使用方法は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS_ADM.SPLIT_STREAMS(
propagation_name         IN      VARCHAR2,
cloned_propagation_name  IN      VARCHAR2  DEFAULT NULL,
cloned_queue_name        IN      VARCHAR2  DEFAULT NULL,
cloned_capture_name      IN      VARCHAR2  DEFAULT NULL,
perform_actions          IN      BOOLEAN   DEFAULT TRUE,
script_name              IN      VARCHAR2  DEFAULT NULL,
script_directory_object  IN      VARCHAR2  DEFAULT NULL,
auto_merge_threshold     IN      NUMBER    DEFAULT NULL,
schedule_name            IN OUT  VARCHAR2,
merge_job_name           IN OUT  VARCHAR2);

パラメータ

表159-42 SPLIT_STREAMSプロシージャのパラメータ

パラメータ

説明

propagation_name

宛先キューにメッセージを送信できない伝播の名前。指定する伝播は、他のストリームから分割されるストリームの伝播です。既存の伝播名を指定する必要があります。所有者を指定しないでください。

cloned_propagation_name

分割されるストリームに対して、このプロシージャで作成される新しい伝播の名前。NULLの場合、システムによって伝播名が生成されます。

cloned_queue_name

分割されるストリームに対して、このプロシージャで作成される新しいキューの名前。NULLの場合、システムによってキュー名が生成されます。

cloned_capture_name

分割されるストリームに対して、このプロシージャで作成される新しい取得プロセスの名前。NULLの場合、システムによって取得プロセス名が生成されます。

perform_actions

TRUEに設定すると、ストリームを直接分割するために必要な処理が実行されます。

FALSEに設定すると、ストリームを直接分割するために必要な処理は実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、perform_actionsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、ストリームを分割するために必要なすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、perform_actionsパラメータがTRUEの場合は、指定のスクリプトが生成され、ストリームを直接分割する処理が実行されます。

このパラメータがNULLで、perform_actionsパラメータがTRUEの場合は、ストリームを直接分割する処理が実行され、スクリプトは生成されません。

このパラメータがNULLで、perform_actionsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

auto_merge_threshold

正数を指定した場合、分割されたストリームは、Oracle Schedulerジョブによって、取得プロセスからの他のすべてのストリームに自動的にマージされて戻されます。このジョブによって、スケジュールに従って設定された間隔でMERGE_STREAMS_JOBプロシージャが実行されます。GV$STREAMS_CAPTURE動的パフォーマンス・ビューの各取得プロセスのCAPTURE_MESSAGE_CREATE_TIME列の値によって、ストリームがいつマージされるかが判別されます。具体的には、クローニングされた取得プロセスと元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEの差(秒数)がauto_merge_thresholdパラメータに指定された値以下の場合、2つのストリームは自動的にマージされます。分割されたストリームが元のストリームとマージされて戻されるには、クローニングされた取得プロセスが開始されている必要があります。

NULLまたは0(ゼロ)を指定した場合、分割されたストリームは自動的に元のストリームとマージされて戻されません。分割されたストリームを元のストリームとマージするには、クローニングされた取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEが、元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEに追いついているか、またはほとんど追いついているときに、MERGE_STREAMプロシージャを手動で実行します。

CAPTURE_MESSAGE_CREATE_TIMEは、取得された変更がREDOログに記録された時間を記録します。

schedule_name

Oracle Schedulerスケジュール名で、[schema_name.]schedule_nameの形式で指定します。たとえば、strmadmin.merge_scheduleのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

auto_merge_thresholdがNULL以外の正数の場合、スケジュールは、適切な時間にストリームを自動的にマージするジョブによって使用されます。命名規則に従うか、またはスケジュールの追跡を簡単にするには、スケジュール名を指定します。

NULLの場合で、auto_merge_thresholdがNULL以外の正数の場合、システムによってスケジュール名が生成されます。

auto_merge_thresholdがNULLまたは0(ゼロ)の場合、このパラメータはNULLに設定する必要があります。

このプロシージャによってスケジュールが作成された場合、スケジュールはプロシージャが完了したときに開始されます。スケジュールを変更して、マージ・ジョブの実行頻度を制御できます。

既存のスケジュール名を指定すると、エラーが発生します。

merge_job_name

Oracle Schedulerジョブ名で、[schema_name.]merge_job_nameの形式で指定します。たとえば、strmadmin.merge_jobのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

auto_merge_thresholdがNULL以外の正数の場合、ジョブは、適切な時間にストリームを自動的にマージします。命名規則に従う場合やジョブの追跡を簡単にする場合には、マージ・ジョブ名を指定します。

NULLの場合で、auto_merge_thresholdがNULL以外の正数の場合、システムによってジョブ名が生成されます。

auto_merge_thresholdがNULLまたは0(ゼロ)の場合、このパラメータはNULLに設定する必要があります。

既存のジョブ名を指定すると、エラーが発生します。

関連項目:
Oracle Schedulerの詳細は、『Oracle Database管理者ガイド』を参照してください。

160 DBMS_STREAMS_ADVISOR_ADM

Oracle Streamsパッケージの1つであるDBMS_STREAMS_ADVISOR_ADMパッケージでは、Oracle Streams環境に関する情報を収集し、収集した情報に基づいてデータベース管理者をサポートするインタフェースが提供されています。このパッケージは、Oracle Streamsパフォーマンス・アドバイザの一部です。

この章では、次の項目について説明します。

- DBMS_STREAMS_ADVISOR_ADMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- DBMS_STREAMS_ADVISOR_ADMサブプログラムの要約

関連項目:
このパッケージの使用方法は、『Oracle Streams概要および管理』を参照してください。

DBMS_STREAMS_ADVISOR_ADMの使用方法

この項では、DBMS_STREAMS_ADVISOR_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

- ビュー

概要

DBMS_STREAMS_ADVISOR_ADMパッケージによって、Oracle Streams環境に関する情報を収集および分析できます。この情報は、次の方法で使用できます。

- 1つ以上のデータベースでのOracle Streamsコンポーネントに関する情報を含むOracle Streamsトポロジを、データ・ディクショナリ・ビューに移入します。

- 環境内の1つ以上のデータベースでのOracle Streamsコンポーネント、およびこれらのコンポーネントが含まれているストリームでの情報の流れ方を調べます。

- 環境内のOracle Streamsコンポーネントのパフォーマンスを分析します。

- Oracle Streamsコンポーネントのパフォーマンスの問題を検出し、それらの問題を修正します。

関連項目:
このパッケージの使用方法は、『Oracle Streams概要および管理』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、Oracle Streams管理者を構成し、このパッケージを使用するときにOracle Streams管理者として接続します。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

定数

DBMS_STREAMS_ADVISOR_ADMパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります。たとえば、DBMS_DBMS_ADVISOR_ADM.CAPTURE_TYPEのように定義します。

表160-1 DBMS_STREAMS_ADVISOR_ADMパラメータおよび列挙定数

パラメータ

オプション

タイプ

説明

component_type

- CAPTURE_TYPE

- PROPAGATION_SENDER_TYPE

- PROPAGATION_RECEIVER_TYPE

- APPLY_TYPE

- QUEUE_TYPE

NUMBER

CAPTURE_TYPEは、Oracle Streamsコンポーネントが取得プロセスであることを示します。このオプションの定数は1です。

PROPAGATION_SENDER_TYPEは、Oracle Streamsコンポーネントが伝播の送信者であることを示します。このオプションの定数は2です。

PROPAGATION_RECEIVER_TYPEは、Oracle Streamsコンポーネントが伝播の受信者であることを示します。このオプションの定数は3です。

APPLY_TYPEは、Oracle Streamsコンポーネントが適用プロセスであることを示します。このオプションの定数は4です。

QUEUE_TYPEは、Oracle Streamsコンポーネントがキューであることを示します。このオプションの定数は5です。

ビュー

DBMS_STREAMS_ADVISOR_ADMパッケージでは、次のビューを使用します。

- DBA_STREAMS_TP_COMPONENTには、各データベースでの各Oracle Streamsコンポーネントに関する情報が含まれています。

- DBA_STREAMS_TP_COMPONENT_LINKには、Oracle Streamsコンポーネント間をメッセージがどのように流れるかに関する情報が含まれています。

- DBA_STREAMS_TP_COMPONENT_STATには、各Oracle Streamsコンポーネントに関する一時的なパフォーマンス統計情報が含まれています。

- DBA_STREAMS_TP_DATABASEには、各Oracle Streamsコンポーネントを格納する各データベースに関する情報が含まれています。

- DBA_STREAMS_TP_PATH_BOTTLENECKには、ストリームの流れを遅くしている可能性があるOracle Streamsコンポーネントに関する一時的な情報が含まれています。

- DBA_STREAMS_TP_PATH_STATには、Oracle Streamsトポロジ内に存在する各ストリーム・パスに関する一時的なパフォーマンス統計情報が含まれています。

トポロジ情報は、データ・ディクショナリ・ビューDBA_STREAMS_TP_DATABASE、DBA_STREAMS_TP_COMPONENTおよびDBA_STREAMS_TP_COMPONENT_LINKに永続的に格納されます。

ただし、ビューDBA_STREAMS_TP_COMPONENT_STAT、DBA_STREAMS_TP_PATH_BOTTLENECKおよびDBA_STREAMS_TP_PATH_STATに、一時的な情報が含まれています。これらのビュー内のデータの一部は、ANALYZE_CURRENT_PERFORMANCEプロシージャを実行するユーザー・セッションについてのみ保持されます。このユーザー・セッションが終了すると、この一時的な情報はパージされます。

関連項目:

- 『Oracle Databaseリファレンス』

- これらのビューを使用するサンプル問合せについては、『Oracle Streams概要および管理』を参照してください。

使用上の注意

この項では、DBMS_STREAMS_ADVISOR_ADMパッケージの次の使用上の注意について説明します。

- DBMS_STREAMS_ADVISOR_ADMパッケージによって分析されるOracle Streamsコンポーネント

- Oracle Streamsパフォーマンス・アドバイザの実行および情報分析の一般的な手順

DBMS_STREAMS_ADVISOR_ADMパッケージによって分析されるOracle Streamsコンポーネント

DBMS_STREAMS_ADVISOR_ADMによって、指定されたデータベースで次のOracle Streamsコンポーネントが分析されます。

- 取得プロセス

- 伝播

- 適用プロセス

- キュー

DBMS_STREAMS_ADVISOR_ADMパッケージによって、次のOracle Streamsコンポーネントは分析されません。

- 同期取得

- メッセージ・クライアント

Oracle Streamsパフォーマンス・アドバイザの実行および情報分析の一般的な手順

DBMS_STREAMS_ADVISOR_ADMパッケージを使用するには、次の一般的な手順を実行します。

1. 情報の収集に使用するデータベースを特定します。

このデータベースの管理ユーザーは、次の要件を満たす必要があります。

- ユーザーは、Oracle Streamsコンポーネントを含む各データベースへのデータベース・リンクにアクセスできる必要があります。

- ユーザーは、DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGEプロシージャを使用して権限が付与されている必要があります。各データベース・リンクは、DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGEプロシージャを使用して権限が付与されているリモート・データベースのユーザーに接続する必要があります。

Oracle Streams環境では、Oracle Streams管理者がこのパッケージを使用します。

環境内のデータベースが前述の要件を満たさない場合は中断し、データベースを選択して必要なデータベース・リンクを構成した後、ユーザーに必要な権限を付与します。

2. 手順1で識別したデータベースに管理ユーザーとして接続し、残りの手順を実行する間、セッションに接続したままにします。

3. ANALYZE_CURRENT_PERFORMACEプロシージャを実行します。

4. オプションで、しばらくの間、メッセージが環境内を流れるのを許可します。

5. オプションで、ANALYZE_CURRENT_PERFORMACEプロシージャを1回以上再実行します。

6. 「ビュー」にリストされているデータ・ディクショナリ・ビューを問い合せて、Oracle Streams環境を分析します。

7. データ・ディクショナリ・ビューの情報を更新する場合または環境内のデータベースに新しいOracle Streamsコンポーネントを追加する場合は、手順2から6を繰り返します。

注意:
ユーザー・セッションを終了すると、レート、帯域幅、イベントおよびフロー制御統計情報がデータ・ディクショナリ・ビューからパージされます。

DBMS_STREAMS_ADVISOR_ADMサブプログラムの要約

表160-2 DBMS_STREAMS_ADVISOR_ADMパッケージのサブプログラム

サブプログラム

説明

ANALYZE_CURRENT_PERFORMANCEプロシージャ

環境内の1つ以上のデータベースでOracle Streamsコンポーネントに関する情報を収集し、収集した情報に基づいてOracle Streamsのパフォーマンスを分析します。

ANALYZE_CURRENT_PERFORMANCEプロシージャ

このプロシージャは、環境内の1つ以上のデータベースでOracle Streamsコンポーネントに関する情報を収集し、収集した情報に基づいてOracle Streamsのパフォーマンスを分析します。

パフォーマンス分析には、次の項目があります。

- 各ストリームのボトルネック・コンポーネントの計算

- 各Oracle Streamsコンポーネントのスループットの計算

- 各Oracle Streamsコンポーネントの待機時間の計算

- 各Oracle Streamsコンポーネントの最も多い待機イベントの計算

- 各ストリームのメッセージ・レートの計算

- 各ストリームのトランザクション・レートの計算

収集された情報は、データ・ディクショナリ・ビューに配置されます。

注意:
このプロシージャのパラメータは、すべてNULL以外か、またはすべてNULLである必要があります。

関連項目:

- このプロシージャの使用方法は、『Oracle Streams概要および管理』を参照してください。

- 「ビュー」

構文

DBMS_STREAMS_ADVISOR_ADM.ANALYZE_CURRENT_PERFORMANCE(
component_name  IN  VARCHAR2  DEFAULT NULL,
component_db    IN  VARCHAR2  DEFAULT NULL,
component_type  IN  NUMBER    DEFAULT NULL);

パラメータ

表160-3 ANALYZE_CURRENT_PERFORMANCEプロシージャのパラメータ

パラメータ

説明

component_name

分析するOracle Streamsコンポーネントの名前。たとえば、capture01という取得プロセスを分析するには、capture01と指定します。

NULLの場合は、Oracle Streamsのすべてのコンポーネントが分析され、他の2つのパラメータもNULLに設定する必要があります。

component_db

component_nameパラメータで指定したコンポーネントが含まれているデータベースのグローバル名。たとえば、コンポーネントがdb.netデータベースに含まれている場合は、db.netと指定します。

NULLの場合は、Oracle Streamsのすべてのコンポーネントが分析され、他の2つのパラメータもNULLに設定する必要があります。

component_type

component_nameパラメータで指定したコンポーネントのタイプ。component_nameパラメータがNULL以外の場合は、次のいずれかを指定します。

- DBMS_STREAMS_ADVISOR_ADM.CAPTURE_TYPE

- DBMS_STREAMS_ADVISOR_ADM.PROPAGATION_SENDER_TYPE

- DBMS_STREAMS_ADVISOR_ADM.PROPAGATION_RECEIVER_TYPE

- DBMS_STREAMS_ADVISOR_ADM.APPLY_TYPE

- DBMS_STREAMS_ADVISOR_ADM.QUEUE_TYPE

これらの定数の詳細は、「定数」を参照してください。

NULLの場合は、Oracle Streamsのすべてのコンポーネントが分析され、他の2つのパラメータもNULLに設定する必要があります。

161 DBMS_STREAMS_AUTH

DBMS_STREAMS_AUTHパッケージは、Oracle Streamsパッケージ・セットの1つであり、Oracle Streams管理者に権限を付与し、Oracle Streams管理者から権限を取り消すためのサブプログラムを提供しています。

この章では、次の項目について説明します。

- DBMS_STREAMS_AUTHの使用方法

- 概要

- セキュリティ・モデル

- DBMS_STREAMS_AUTHサブプログラムの要約

DBMS_STREAMS_AUTHの使用方法

この項では、DBMS_STREAMS_AUTHパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージは、Oracle Streams管理者への権限付与およびOracle Streams管理者からの権限取消しを行うサブプログラムを提供します。

関連項目:
このパッケージおよびOracle Streams管理者の詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、このパッケージを使用するときに、ユーザーの作成、権限の付与および表領域の作成を行うことができる管理ユーザーとして接続します。

DBMS_STREAMS_AUTHサブプログラムの要約

表161-1 DBMS_STREAMS_AUTHパッケージのサブプログラム

サブプログラム

説明

GRANT_ADMIN_PRIVILEGEプロシージャ

ユーザーにOracle Streams管理者になるために必要な権限を直接付与するか、またはこれらの権限を付与するために使用できるスクリプトを生成します。

GRANT_REMOTE_ADMIN_ACCESSプロシージャ

データベース・リンクを使用して、権限受領者に接続することによって、リモートOracle Streams管理者が、ローカル・データベースで管理操作を実行できるようにします。

REVOKE_ADMIN_PRIVILEGEプロシージャ

ユーザーから直接Oracle Streams管理者の権限を取り消すか、これらの権限を取り消すために使用できるスクリプトを生成します。

REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

データベース・リンクを使用して、権限受領者に接続することによって、リモートOracle Streams管理者が管理操作を実行できないようにします。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

GRANT_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、ユーザーにOracle Streams管理者になるために必要な権限を直接付与するか、またはこれらの権限を付与するために使用できるスクリプトを生成します。

構文

DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee           IN  VARCHAR2,
grant_privileges  IN  BOOLEAN   DEFAULT TRUE,
file_name         IN  VARCHAR2  DEFAULT NULL,
directory_name    IN  VARCHAR2  DEFAULT NULL);

パラメータ

表161-2 GRANT_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

grantee

権限を付与するユーザー。

grant_privileges

TRUEに設定すると、指定した権限受領者に権限が直接付与され、DBA_STREAMS_ADMINISTRATORデータ・ディレクトリ・ビューに、LOCAL_PRIVILEGES列とACCESS_FROM_REMOTE列の両方がYESで指定されて権限受領者が追加されます。このデータ・ディクショナリ・ビューにユーザーのエントリがある場合、他のエントリは作成されず、エラーも発生しません。TRUEに設定すると、権限付与文が失敗した場合、エラーが発生します。

FALSEに設定すると、指定した権限受領者に権限は直接付与されず、権限受領者はDBA_STREAMS_ADMINISTRATORデータ・ディレクトリ・ビューに追加されません。

編集して実行するファイルをこのプロシージャで生成する場合は、FALSEに設定します。FALSEを指定し、file_nameパラメータまたはdirectory_nameパラメータがNULLの場合、エラーが発生します。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を付与するすべての文が格納されます。指定したファイル名のファイルが、指定したディレクトリ名にすでに存在する場合、既存のファイルに権限付与文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、プロシージャはファイルを生成しません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

使用上の注意

このプロシージャを実行するユーザーは他のユーザーに権限を付与できる管理ユーザーである必要があります。

特に、このプロシージャは指定したユーザーに次の権限を付与します。

- RESTRICTED SESSIONシステム権限。

- 次のパッケージに対するEXECUTE権限。

- DBMS_APPLY_ADM

- DBMS_AQ

- DBMS_AQADM

- DBMS_AQIN

- DBMS_AQELM

- DBMS_CAPTURE_ADM

- DBMS_FLASHBACK

- DBMS_LOCK

- DBMS_PROPAGATION_ADM

- DBMS_RULE_ADM

- DBMS_STREAMS_ADM

- DBMS_STREAMS_ADVISOR_ADM

- DBMS_STREAMS_HANDLER_ADM

- DBMS_STREAMS_MESSAGING

- DBMS_TRANSFORM

- キューにメッセージをエンキューし、キューからメッセージをデキューする権限。

- キューを管理する権限。

- ユーザー固有のスキーマおよびその他のスキーマの次のタイプのオブジェクトを作成、変更、実行する権限。

- 評価コンテキスト

- ルール・セット

- ルール

さらに、権限受領者は次の権限を他のユーザーに付与できます。

- SELECT_CATALOG_ROLE

- Oracle Streamsに関連するデータ・ディクショナリ・ビューに対するSELECTまたはREAD権限。

- リモートOracle Streams管理者が、権限受領者に接続することによって、データベース・リンクを介して、管理操作を実行できるようにする機能。この機能は、このパッケージのGRANT_REMOTE_ADMIN_ACCESSプロシージャを実行することによって可能になります。

注意:

- このプロシージャによって実行されるすべての文を詳しく参照するには、このプロシージャを使用してスクリプトを生成した後、テキスト・エディタでこのスクリプトを開きます。

- このプロシージャは、権限受領者にロールを付与しません。

- このプロシージャは、Oracle Streams環境の構成および管理に必要な権限のみを付与します。必要に応じて、他の権限を権限受領者に付与できます。

関連項目:

- GRANT_REMOTE_ADMIN_ACCESSプロシージャ

- Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

GRANT_REMOTE_ADMIN_ACCESSプロシージャ

このプロシージャは、リモートOracle Streams管理者が、データベース・リンクを使用して、権限受領者に接続することによって、ローカル・データベースでの管理操作を実行できるようにします。

構文

DBMS_STREAMS_AUTH.GRANT_REMOTE_ADMIN_ACCESS(
grantee  IN  VARCHAR2);

パラメータ

表161-3 GRANT_REMOTE_ADMIN_ACCESSプロシージャのパラメータ

パラメータ

説明

grantee

リモート・アクセスを許可するユーザー。ACCESS_FROM_REMOTE列がYESに指定されたDBA_STREAMS_ADMINISTRATORデータ・ディレクトリ・ビューに権限受領者が追加されます。このデータ・ディクショナリ・ビューにユーザーのエントリがある場合、別のエントリは作成されません。かわりに、ACCESS_FROM_REMOTE列がYESに更新されます。

使用上の注意

一般に、ダウンストリーム取得プロセスで、ローカル・ソース・データベースで発生した変更を取得した場合に、このプロシージャを実行して、ローカル・ソース・データベースの権限受領者を指定します。ダウンストリーム取得データベースのOracle Streams管理者は、この接続を利用して、ソース・データベースを管理します。さらに、適用プロセスを実行するデータベースでこのプロシージャを実行し、リモートOracle Streams管理者がローカル・データベースでインスタンス化SCNを設定できるようにします。

注意:
GRANT_ADMIN_PRIVILEGEプロシージャがこのプロシージャを実行します。

関連項目:
GRANT_ADMIN_PRIVILEGEプロシージャ

REVOKE_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、ユーザーから直接Oracle Streams管理者の権限を取り消すか、またはこれらの権限を取り消すために使用できるスクリプトを生成します。

構文

DBMS_STREAMS_AUTH.REVOKE_ADMIN_PRIVILEGE(
grantee            IN  VARCHAR2,
revoke_privileges  IN  BOOLEAN   DEFAULT TRUE,
file_name          IN  VARCHAR2  DEFAULT NULL,
directory_name     IN  VARCHAR2  DEFAULT NULL);

パラメータ

表161-4 REVOKE_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

grantee

権限を取り消すユーザー。

revoke_privileges

TRUEに設定すると、指定したユーザーから権限が直接取り消され、DBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーが削除されます。このデータ・ディクショナリ・ビューにユーザーのレコードがない場合、ビューからレコードは削除されず、エラーも発生しません。TRUEに設定すると、権限取消し文が失敗した場合、エラーが発生します。取り消そうとしている権限がユーザーに付与されていない場合、権限取消し文は失敗します。

FALSEに設定すると、指定したユーザーの権限は直接取り消されず、DBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーは削除されません。

編集して実行するファイルをこのプロシージャで生成する場合は、FALSEに設定します。FALSEに設定すると、file_nameまたはdirectory_nameパラメータのいずれかがNULLの場合、エラーは発生しません。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を取り消すすべての文が格納されます。指定したファイル名のファイルが指定したディレクトリ名にすでに存在する場合、既存のファイルに権限取消し文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、ファイルは生成されません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

使用上の注意

このプロシージャを実行するユーザーは他のユーザーから権限を取り消せる管理ユーザーである必要があります。特に、このプロシージャは、このパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを実行して付与された権限を取り消します。

注意:
このプロシージャによって実行されるすべての文を詳しく参照するには、このプロシージャを使用してスクリプトを生成した後、テキスト・エディタでこのスクリプトを開きます。

関連項目:
GRANT_ADMIN_PRIVILEGEプロシージャ

REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

このプロシージャは、リモートOracle Streams管理者がデータベース・リンクを使用して、権限受領者に接続することによって、管理操作を実行できないようにします。

注意:
REVOKE_ADMIN_PRIVILEGEプロシージャがこのプロシージャを実行します。

関連項目:
REVOKE_ADMIN_PRIVILEGEプロシージャ

構文

DBMS_STREAMS_AUTH.REVOKE_REMOTE_ADMIN_ACCESS(
grantee  IN  VARCHAR2);

パラメータ

表161-5 REVOKE_REMOTE_ADMIN_ACCESSプロシージャのパラメータ

パラメータ

説明

grantee

リモートOracle Streams管理者からのアクセスを無効にするユーザー。

権限受領者の列がDBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューに存在する場合、権限受領者のACCESS_FROM_REMOTE列はNOに更新されます。この更新後、LOCAL_PRIVILEGES列およびACCESS_FROM_REMOTE列がともに権限受領者に対してNOである場合は、ビューから権限受領者が削除されます。

DBA_STREAMS_ADMINISTRATORデータ・ディクショナリ・ビューに権限受領者の列が存在しない場合、ビューは更新されず、エラーも発生しません。

162 DBMS_STREAMS_HANDLER_ADM

DBMS_STREAMS_HANDLER_ADMパッケージは、Oracle Streamsパッケージの1つであり、文DMLハンドラを管理するインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_STREAMS_HANDLER_ADMの使用方法

- 概要

- セキュリティ・モデル

- ビュー

- 使用上の注意

- DBMS_STREAMS_HANDLER_ADMサブプログラムの要約

DBMS_STREAMS_HANDLER_ADMの使用方法

この項では、DBMS_STREAMS_HANDLER_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- ビュー

- 使用上の注意

概要

文DMLハンドラは、適用プロセスでデキューされた行論理変更レコード(行LCR)に対して、1つ以上のデータ操作言語(DML)文を実行します。単一の文DMLハンドラに複数の文を含めることができ、それらの文の実行順序は制御できます。

文DMLハンドラは、適用プロセスのプロシージャDMLハンドラに類似しています。文DMLハンドラとプロシージャDMLハンドラはどちらも、行LCRにカプセル化されている行変更のカスタム処理を提供します。また、文DMLハンドラとプロシージャDMLハンドラはどちらも、適用プロセスが行LCRをデキューするときに実行されます。ただし、プロシージャDMLハンドラに対して、文DMLハンドラには次のような利点があります。

- 文DMLハンドラはPL/SQL処理を必要としないため、一般的に、プロシージャDMLハンドラよりもパフォーマンスが優れています。

- 文DMLハンドラの構文はDML構文と同じです。文DMLハンドラはPL/SQLプログラミングを必要としません。プロシージャDMLハンドラの場合は、PL/SQLプログラミングが必要です。

- 文DMLハンドラでは、行LCRの情報にアクセスするためにANYDATAの値を操作する必要はありません。通常、プロシージャDMLハンドラではANYDATAの値の操作が必要です。

- 文DMLハンドラは、同じデータベース・オブジェクトへの同じ操作に対して、エラー・ハンドラと共存できます。一方、同じデータベース・オブジェクトへの同じ操作に対して、プロシージャDMLハンドラとエラー・ハンドラの両方を指定することはできません。

注意:
同じデータベース・オブジェクトへの同じ操作に対して、複数の文DMLハンドラを指定できます。その場合、任意の順序で文DMLハンドラを実行でき、各文DMLハンドラは、適用プロセスでデキューされた元の行LCRのコピーを受け取ることができます。

関連項目:
『Oracle Streams概要および管理』

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、Oracle Streams管理者を構成し、このパッケージを使用するときにOracle Streams管理者として接続します。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

ビュー

DBMS_STREAMS_HANDLER_ADMパッケージは、『Oracle Databaseリファレンス』にリストされているビューを使用します。

- DBA_APPLY_DML_HANDLERS

- DBA_STREAMS_STMTS

- DBA_STREAMS_STMT_HANDLERS

使用上の注意

次の各項では、DBMS_STREAMS_HANDLER_ADMパッケージの使用上の注意について説明します。

- 文の実行順序

- サポートされているSQL文

- サポートされている行LCRの列属性

- サポートされている行LCRの属性

- サポートされている行LCRの追加属性

- サポートされている行LCRのメソッド

文の実行順序

文DMLハンドラの各文には、固有の実行順序番号が付いています。文DMLハンドラは起動されると、実行順序番号が最も小さい文から最も大きい文へと文を実行します。

サポートされているSQL文

文DMLハンドラは、行論理変更レコード(行LCR)に対する任意の有効なDML操作に使用できます。たとえば、文DMLハンドラは表に加えられたDML変更を監査できます。

文DMLハンドラでは、次のSQL文がサポートされています。

- INSERT

- UPDATE

- DELETE

- MERGE

なお、文DMLハンドラのSQL文では定義変数をサポートしていません。

ただし、文DMLハンドラのSQL文には、行LCRタイプ(LCR$_ROW_RECORD)に対するメンバー・サブプログラムのコールを含めることができます(ADD_COLUMN、DELETE_COLUMN、KEEP_COLUMNSおよびRENAME_COLUMNなど)。

注意:
文DMLハンドラは、行LCRの列の値を変更できません。

関連項目:
「LCR$_ROW_RECORDタイプ」

サポートされている行LCRの列属性

文DMLハンドラの文には、表162-1に示す、行LCRの列属性を含めることができます。

表162-1 行LCRの列属性

属性

説明

new

行LCRの新しい列の値を戻します。新しい値が存在しない場合、この属性は古い値を戻します。

new_exists

行LCRに新しい列の値が存在する場合は、TRUEを戻します。

行LCRに新しい列の値が存在しない場合は、FALSEを戻します。

new_only

行LCRの新しい列の値を戻します。新しい値が存在しない場合、この属性はNULLを戻し、古い値を戻しません。

old

行LCRの古い列の値を戻します。

old_exists

行LCRに古い列の値が存在する場合は、TRUEを戻します。

行LCRに古い列の値が存在しない場合は、FALSEを戻します。

次の方法で文に属性を指定します。

:attribute.column_name

たとえば、salary列に対してnew_only属性を指定する場合は、文に次のように入力します。

:new_only.salary

サポートされている行LCRの属性

文DMLハンドラの文には、表162-2に示す、行LCRの属性を含めることができます。

表162-2 行LCRの属性

属性

説明

command_type

変更を行ったDML文のタイプ(INSERT、UPDATEまたはDELETE)を戻します。DBMS_LOBピース単位のLOB操作は、文DMLハンドラではサポートされていません。

commit_scn

LCRが属するトランザクションのコミットSCN(システム変更番号)を戻します。

compatible

LCRのサポートに最小限必要なデータベース互換性を戻します。

instance_number

LCRにカプセル化されている変更を行ったデータベース・インスタンスのインスタンス番号を戻します。通常、インスタンス番号はOracle Real Application Clusters(Oracle RAC)構成で使用されます。

object_owner

変更された行がある表を含むスキーマ名を戻します。

object_name

変更された行がある表の名前を戻します。

scn

変更が行われた時点のSCNを戻します。

source_database_name

行の変更が発生したソース・データベースの名前を戻します。

source_time

取得プロセスで取得されたLCRの変更がソース・データベースのREDOログで生成された時刻、または永続LCRが作成された時刻を戻します。

tag

LCRの追跡に使用可能なRAWタグを戻します。

transaction_id

DML文が実行されたトランザクションの識別子を戻します。

次の方法で文に属性を指定します。

:attribute_name

たとえば、行LCRにsource_database_name属性を指定する場合は、文に次のように入力します。

:source_database_name

サポートされている行LCRの追加属性

文DMLハンドラの文には、表162-3に示す、行LCRの追加属性を含めることができます。

表162-3 行LCRの追加属性

属性

説明

row_id

行LCRで変更された行のROWIDを戻します。

serial#

LCRに取得された変更を実行したセッションのシリアル番号を戻します。

session#

LCRに取得された変更を実行したセッションの識別子を戻します。

thread#

LCRに取得された変更が実行されたインスタンスのスレッド番号を戻します。通常、スレッド番号はOracle RAC構成でのみ使用されます。

tx_name

LCRが属するトランザクションの名前を戻します。

username

LCRに取得された変更を実行した現行のユーザーの名前を戻します。

次の方法で文に属性を指定します。

:extra_attribute.attribute_name

たとえば、行LCRにrow_id追加属性を指定する場合は、文に次のように入力します。

:extra_attribute.row_id

サポートされている行LCRのメソッド

文DMLハンドラの文には、行LCRに対するEXECUTEメンバー・プロシージャのコールを含めることができます。EXECUTEメンバー・プロシージャは、現行ユーザーのセキュリティ・ドメイン下で行LCRを実行します。

EXECUTEメンバー・プロシージャを実行する文は、文DMLハンドラの何番目の実行順序番号に配置することもできます。行LCRは、文DMLハンドラ内のその他のSQL文実行以外に、行LCRの変更を特定の表に適用する場合以外は実行する必要はありません。

文でEXECUTEメンバー・プロシージャをコールする場合は、LCRの実行によって生じた競合の解消に対して、DBMS_APPLY_ADMパッケージのSET_UPDATE_CONFLICT_HANDLERプロシージャで表に定義した競合解消を使用するかどうかを、conflict_resolutionパラメータによって制御します。

:lcr.execute TRUE|FALSE

引数TRUEは、競合解消を使用することを示します。引数FALSEは、競合解消を使用しないことを示します。

たとえば、競合解消を使用するには、文に次のように入力します。

:lcr.execute TRUE

このパラメータが指定されていない場合またはNULLに設定されている場合は、エラーが発生します。

関連項目:

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』

- 『Oracle Streamsレプリケーション管理者ガイド』

DBMS_STREAMS_HANDLER_ADMサブプログラムの要約

表162-4 DBMS_STREAMS_HANDLER_ADMパッケージのサブプログラム

サブプログラム

説明

ADD_STMT_TO_HANDLERプロシージャ

文DMLハンドラに文を追加します。

CREATE_STMT_HANDLERプロシージャ

文DMLハンドラを作成します。

DROP_STMT_HANDLERプロシージャ

文DMLハンドラを削除します。

REMOVE_STMT_FROM_HANDLERプロシージャ

文DMLハンドラから文を削除します。

注意:
このパッケージのサブプログラムはコミットしません。

ADD_STMT_TO_HANDLERプロシージャ

このプロシージャは、文DMLハンドラに文を追加します。

構文

DBMS_STREAMS_HANDLER_ADM.ADD_STMT_TO_HANDLER(
handler_name       IN VARCHAR2,
statement          IN CLOB,
execution_sequence IN NUMBER  DEFAULT NULL);

パラメータ

表162-5 ADD_STMT_TO_HANDLERプロシージャのパラメータ

パラメータ

説明

handler_name

文DMLハンドラの名前。

statement

文DMLハンドラに追加するSQL文のテキスト。

NULLの場合は、エラーが発生します。

execution_sequence

SQL文の実行順序を設定するための、文DMLハンドラにおける文の順位。文は、最も小さい実行順序番号から最も大きい実行順序番号へと実行されます。

正の整数、負の整数、小数を指定できます。また、0(ゼロ)を指定することもできます。

文DMLハンドラ内の既存の文で使用されている実行順序番号を指定すると、statementパラメータ内の文がその既存の文に置き換わります。

NULLの場合は、文DMLハンドラに文と実行順序番号が追加されます。この順序番号は、文DMLハンドラのすべての文の実行順序番号よりも大きな番号です。

CREATE_STMT_HANDLERプロシージャ

このプロシージャは、文DMLハンドラを作成します。

構文

DBMS_STREAMS_HANDLER_ADM.CREATE_STMT_HANDLER(
handler_name IN VARCHAR2,
comment      IN VARCHAR2  DEFAULT NULL);

パラメータ

表162-6 CREATE_STMT_HANDLERプロシージャのパラメータ

パラメータ

説明

handler_name

文DMLハンドラの名前。

comment

文DMLハンドラのコメント。

NULLの場合、文DMLハンドラに対するコメントは記録されません。

DROP_STMT_HANDLERプロシージャ

このプロシージャは、文DMLハンドラを削除します。

構文

DBMS_STREAMS_HANDLER_ADM.DROP_STMT_HANDLER(
handler_name IN VARCHAR2);

パラメータ

表162-7 DROP_STMT_HANDLERプロシージャのパラメータ

パラメータ

説明

handler_name

文DMLハンドラの名前。

REMOVE_STMT_FROM_HANDLERプロシージャ

このプロシージャは、文DMLハンドラから文を削除します。

構文

DBMS_STREAMS_HANDLER_ADM.REMOVE_STMT_FROM_HANDLER(
handler_name       IN VARCHAR2,
execution_sequence IN NUMBER  DEFAULT NULL);

パラメータ

表162-8 REMOVE_STMT_FROM_HANDLERプロシージャのパラメータ

パラメータ

説明

handler_name

文DMLハンドラの名前。

execution_sequence

削除する文の順位。

正の整数、負の整数、小数を指定できます。また、0(ゼロ)を指定することもできます。

NULLの場合、プロシージャは文DMLハンドラの最後の文を削除します。

指定した実行順序番号が文DMLハンドラに存在しない場合は、エラーが発生します。

163 DBMS_STREAMS_MESSAGING

DBMS_STREAMS_MESSAGINGパッケージは、Oracle Streamsパッケージ・セットの1つであり、ANYDATAキューにメッセージをエンキューおよびデキューするインタフェースを提供しています。

この章では、次の項目について説明します。

- DBMS_STREAMS_MESSAGINGの使用方法

- 概要

- セキュリティ・モデル

- DBMS_STREAMS_MESSAGINGサブプログラムの要約

DBMS_STREAMS_MESSAGINGの使用方法

この項では、DBMS_CAPTURE_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージは、ANYDATAキューへのメッセージのエンキューおよびデキューを行うインタフェースを提供します。

注意:
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。また、DBMS_STREAMS_MESSAGINGパッケージを使用して、バッファに入れられたキューにメッセージをエンキューまたはデキューすることはできません。ただし、DBMS_AQパッケージを使用して、バッファに入れられたメッセージをエンキューおよびデキューできます。

関連項目:
キュー、メッセージおよびDBMS_AQパッケージの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、Oracle Streams管理者を構成し、このパッケージを使用するときにOracle Streams管理者として接続します。

関連項目:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

DBMS_STREAMS_MESSAGINGサブプログラムの要約

表163-1 DBMS_STREAMS_MESSAGINGパッケージのサブプログラム

サブプログラム

説明

DEQUEUEプロシージャ

指定したOracle Streamsメッセージ・クライアントを使用して、指定したキューからメッセージをデキューします。

ENQUEUEプロシージャ

現在のユーザーが指定したキューにメッセージをエンキューします。

注意:
このパッケージのサブプログラムはコミットしません。

DEQUEUEプロシージャ

このプロシージャは、指定したOracle Streamsメッセージ・クライアントを使用して、指定したキューからメッセージをデキューします。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンには、msgid OUTパラメータがあり、他方のバージョンにはこのパラメータがありません。

構文

DBMS_STREAMS_MESSAGING.DEQUEUE(
queue_name    IN   VARCHAR2,
streams_name  IN   VARCHAR2,
payload       OUT  ANYDATA,
dequeue_mode  IN   VARCHAR2        DEFAULT 'REMOVE',
navigation    IN   VARCHAR2        DEFAULT 'NEXT MESSAGE',
wait          IN   BINARY_INTEGER  DEFAULT FOREVER,
msgid         OUT  RAW);

DBMS_STREAMS_MESSAGING.DEQUEUE(
queue_name    IN   VARCHAR2,
streams_name  IN   VARCHAR2,
payload       OUT  ANYDATA,
dequeue_mode  IN   VARCHAR2        DEFAULT 'REMOVE',
navigation    IN   VARCHAR2        DEFAULT 'NEXT MESSAGE',
wait          IN   BINARY_INTEGER  DEFAULT FOREVER);

パラメータ

表163-2 DEQUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

メッセージをデキューするローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースにキューが含まれていて、そのキューはANYDATAタイプの保護キューである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

streams_name

Oracle Streamsメッセージ・クライアントの名前。たとえば、ユーザーstrmadminがメッセージ・クライアントである場合、strmadminと指定します。

このパラメータがNULLで、キューの関連メッセージ・クライアントが1つ存在する場合は、関連メッセージ・クライアントが使用されます。このパラメータがNULLで、キューの関連メッセージ・クライアントが複数存在する場合は、エラーが発生します。

payload

デキューするペイロード。

dequeue_mode

次のいずれかの設定を指定します。

REMOVE: メッセージを読み取り、削除します。この設定がデフォルトです。メッセージは保存プロパティに基づいてキュー表に保存されます。

LOCKED: メッセージを読み取り、その書込みロックを取得します。ロックはトランザクションの継続中有効です。この設定は、SELECT FOR UPDATE文と同じです。

BROWSE: メッセージのロックを取得せずにメッセージを読み取ります。この仕様は、SELECT文と同じです。

navigation

取り出されるメッセージの位置。最初に、位置が判断されます。次に、検索基準が適用されます。最後に、メッセージが取り出されます。

次のいずれかの設定を指定します。

NEXT MESSAGE: 使用可能で検索基準と一致する次のメッセージを取り出します。前のメッセージがメッセージ・グループに属している場合は、検索基準と一致し、そのメッセージ・グループに属している次の使用可能メッセージが取り出されます。この設定がデフォルトです。

NEXT TRANSACTION: 現行メッセージ・グループの残り(ある場合)をスキップし、次のメッセージ・グループの最初のメッセージを取り出します。この設定は、現行キューに対してメッセージ・グループが使用可能な場合にのみ使用できます。

FIRST MESSAGE: 使用可能で検索基準と一致する最初のメッセージを取り出します。この設定により、位置がキューの先頭に再設定されます。

注意: 各メッセージ・グループには、単一のトランザクションのメッセージが含まれます。

関連項目: デキュー・オプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

wait

FOREVERまたはNO_WAIT。

FOREVERの場合、キュー内のメッセージが使用可能になるまで、タイムアウトなしで、デキュー・コールがブロックされます。

NO_WAITの場合、0(ゼロ)秒の待機時間が使用されます。この場合、キュー内にメッセージがない場合でも、デキューはただちに戻ります。

msgid

デキューするメッセージのメッセージID。

例外

表163-3 DEQUEUEプロシージャの例外

例外

説明

ENDOFCURTRANS

デキューは現在のトランザクションの最後のメッセージに達しました。この例外は次のように指定します。

SYS.DBMS_STREAMS_MESSAGING.ENDOFCURTRANS

すべてのデキュー・プロシージャに、この例外を処理する例外ハンドラを含める必要があります。

NOMOREMSGS

キュー内にデキュー操作の対象となるメッセージがありません。この例外は次のように指定します。

SYS.DBMS_STREAMS_MESSAGING.NOMOREMSGS

waitパラメータにNO_WAITを指定するデキュー・プロシージャには、この例外を処理する例外ハンドラを含める必要があります。

ENQUEUEプロシージャ

このプロシージャを使用して、現在のユーザーが指定したキューにメッセージをエンキューできます。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンには、msgid OUTパラメータがあり、他方のバージョンにはこのパラメータがありません。

構文

DBMS_STREAMS_MESSAGING.ENQUEUE(
queue_name  IN   VARCHAR2,
payload     IN   ANYDATA,
msgid       OUT  RAW);

DBMS_STREAMS_MESSAGING.ENQUEUE(
queue_name  IN   VARCHAR2,
payload     IN   ANYDATA);

パラメータ

表163-4 ENQUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

メッセージをエンキューするローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースにキューが含まれていて、そのキューはANYDATAタイプの保護キューである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

payload

エンキューするペイロード。

msgid

エンキューするメッセージのメッセージID。

使用上の注意

メッセージを正しくキューにエンキューするには、現在のユーザーを現在のユーザーと同じ名前で、一意のアドバンスト・キューイング・エージェントにマップする必要があります。DBMS_STREAMS_ADM.SET_UP_QUEUEプロシージャを実行し、ユーザーをキュー・ユーザーとして指定して、エンキューの実行に必要な権限をユーザーに付与できます。SET_UP_QUEUEを実行し、キュー・ユーザーを指定すると、アドバンスト・キューイング・エージェントが自動的に作成されます。

関連項目:
SET_UP_QUEUEプロシージャ

164 DBMS_STREAMS_TABLESPACE_ADM

DBMS_STREAMS_TABLESPACE_ADMパッケージは、Oracle Streamsパッケージ・セットの1つであり、データベース間で表領域をコピーおよび移動する管理インタフェースを提供しています。このパッケージは、トランスポータブル表領域、データ・ポンプ、DBMS_FILE_TRANSFERパッケージおよびDBMS_FILE_GROUPパッケージを使用します。

この章では、次の項目について説明します。

- DBMS_STREAMS_TABLESPACE_ADMの使用方法

- 概要

- セキュリティ・モデル

- データ構造

- DBMS_STREAMS_TABLESPACE_ADMサブプログラムの要約

関連項目:
このパッケージおよびOracle Streamsの詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

DBMS_STREAMS_TABLESPACE_ADMの使用方法

この項では、DBMS_STREAMS_TABLESPACE_ADMパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

このパッケージの各プロシージャでは、単純な表領域または自己完結型表領域セットを指定する必要があります。

自己完結型の表領域には、表領域の外部をポイントする表領域からの参照がありません。たとえば、表領域の索引が別の表領域の表に対するものである場合、その表領域は自己完結型ではありません。単純な表領域は、1つのデータファイルのみを使用する自己完結型表領域です。

次のプロシージャでは、単純な表領域を指定する必要があります。

- ATTACH_SIMPLE_TABLESPACEプロシージャ

- CLONE_SIMPLE_TABLESPACEプロシージャ

- DETACH_SIMPLE_TABLESPACEプロシージャ

- PULL_SIMPLE_TABLESPACEプロシージャ

自己完結型表領域セットには、表領域セットの外部をポイントする表領域セット内部からの参照がありません。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。

次のプロシージャでは、自己完結型表領域セットを指定する必要があります。

- ATTACH_TABLESPACESプロシージャ

- CLONE_TABLESPACESプロシージャ

- DETACH_TABLESPACESプロシージャ

- PULL_TABLESPACESプロシージャ

表領域セットが自己完結型であるかどうかを判別するには、オラクル社が提供するDBMS_TTSパッケージのTRANSPORT_SET_CHECKプロシージャを使用します。

関連項目:
自己完結型の表領域および表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

データ構造

DBMS_STREAMS_TABLESPACE_ADMパッケージは、RECORDタイプおよびTABLEタイプを定義します。

レコード・タイプ

- FILEレコード・タイプ

表タイプ

- DIRECTORY_OBJECT_SET表タイプ

- FILE_SET表タイプ

- TABLESPACE_SET表タイプ

DIRECTORY_OBJECT_SET表タイプ

1つ以上のディレクトリ・オブジェクトの名前を格納します。名前はそれぞれSQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。

構文

TYPE DIRECTORY_OBJECT_SET IS TABLE OF VARCHAR2(32)
INDEX BY BINARY_INTEGER;

FILEレコード・タイプ

ディレクトリに関連付けられたディレクトリ・オブジェクトおよびディレクトリのファイル名を格納します。

構文

TYPE FILE IS RECORD(
directory_object VARCHAR2(32),
file_name        VARCHAR2(4000));

フィールド

表164-1 FILEのフィールド

フィールド

説明

directory_object

ディレクトリ・オブジェクトの名前。SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトの名前を指定する必要があります。

file_name

ディレクトリ・オブジェクトに関連付けられた対応するディレクトリのファイルの名前。

FILE_SET表タイプ

1つ以上のファイルを格納します。

構文

TYPE FILE_SET IS TABLE OF FILE
INDEX BY BINARY_INTEGER;

TABLESPACE_SET表タイプ

1つ以上の表領域の名前を格納します。

構文

TYPE TABLESPACE_SET IS TABLE OF VARCHAR2(32)
INDEX BY BINARY_INTEGER;

DBMS_STREAMS_TABLESPACE_ADMサブプログラムの要約

表164-2 DBMS_STREAMS_TABLESPACE_ADMパッケージのサブプログラム

サブプログラム

説明

ATTACH_SIMPLE_TABLESPACEプロシージャ

データ・ポンプを使用して、以前にDBMS_STREAMS_TABLESPACE_ADMパッケージまたはデータ・ポンプ・エクスポートを使用してエクスポートされた単純な表領域をインポートします。

ATTACH_TABLESPACESプロシージャ

データ・ポンプを使用して、以前にDBMS_STREAMS_TABLESPACE_ADMパッケージ、データ・ポンプ・エクスポート、またはRecovery Manager (RMAN)のTRANSPORT TABLESPACEコマンドを使用してエクスポートした自己完結型表領域セットをインポートします。

CLONE_SIMPLE_TABLESPACEプロシージャ

単純な表領域をクローニングします。後でこの表領域をデータベースに連結できます。

CLONE_TABLESPACESプロシージャ

自己完結型表領域セットをクローニングします。後でこの表領域をデータベースに連結できます。

DETACH_SIMPLE_TABLESPACEプロシージャ

単純な表領域の連結を解除します。後でこの表領域をデータベースに連結できます。

DETACH_TABLESPACESプロシージャ

自己完結型表領域セットの連結を解除します。後でこの表領域をデータベースに連結できます。

PULL_SIMPLE_TABLESPACEプロシージャ

リモート・データベースから単純な表領域をコピーし、現在のデータベースに連結します。

PULL_TABLESPACESプロシージャ

リモート・データベースから自己完結型表領域のセットをコピーし、現在のデータベースに連結します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

ATTACH_SIMPLE_TABLESPACEプロシージャ

このプロシージャは、データ・ポンプを使用して、以前にDBMS_STREAMS_TABLESPACE_ADMパッケージ、データ・ポンプ・エクスポート、またはRecovery Manager (RMAN)のTRANSPORT TABLESPACEコマンドを使用してエクスポートした単純な表領域をインポートします。

構文

DBMS_STREAMS_TABLESPACE_ADM.ATTACH_SIMPLE_TABLESPACE(
directory_object      IN  VARCHAR2,
tablespace_file_name  IN  VARCHAR2,
converted_file_name   IN  VARCHAR2  DEFAULT NULL,
datafile_platform     IN  VARCHAR2  DEFAULT NULL,
tablespace_name       OUT VARCHAR2);

パラメータ

表164-3 ATTACH_SIMPLE_TABLESPACEプロシージャのパラメータ

パラメータ

説明

directory_object

データ・ポンプ・ダンプ・ファイルおよび表領域のデータファイルを格納するディレクトリ。SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトの名前を指定する必要があります。

データ・ポンプ・エクスポート・ダンプ・ファイルの名前は、.dmp拡張子が付くことを除き、表領域のデータファイル名と同じにする必要があります。converted_file_nameがNULL以外の場合、変換後のファイル名ではなく、エクスポート・データベースによって生成されたダンプ・ファイルを指定します。

データ・ポンプ・インポート・ログ・ファイルはこのディレクトリに書き込まれます。ログ・ファイルの名前は、.alg拡張子が付くことを除いて、表領域のデータファイル名と同じです。ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

NULLの場合は、エラーが発生します。

tablespace_file_name

表領域をインポートするデータファイルの名前。

NULLの場合は、エラーが発生します。

converted_file_name

datafile_platformパラメータがNULL以外で、ローカル・インポート・データベースのプラットフォームと異なる場合、変換するデータファイルのファイル名を指定します。データファイルは、ローカル・インポート・データベースのプラットフォームに変換され、新しいファイル名にコピーされます。既存のデータファイルは変更も削除もされません。

datafile_platformパラメータがNULLの場合にNULL以外に設定すると、このパラメータは無視されます。

datafile_platformパラメータでローカル・インポート・データベースと同じプラットフォームを指定している場合にNULL以外に設定すると、このパラメータは無視されます。

このパラメータがNULLで、datafile_platformパラメータがNULL以外の場合は、エラーが発生します。

datafile_platform

プラットフォームがエクスポート・データベースおよび現在のインポート・データベースと同じ場合、NULLを指定します。

プラットフォームがエクスポート・データベースおよび現在のインポート・データベースと異なる場合、エクスポート・データベースのプラットフォームを指定します。

データベースのプラットフォームを判別するには、V$DATABASE動的パフォーマンス・ビューのPLATFORM_NAME列を問い合せます。V$TRANSPORTABLE_PLATFORM動的パフォーマンス・ビューに、プラットフォーム間トランスポータブル表領域をサポートするすべてのプラットフォームが表示されます。

tablespace_name

連結する表領域の名前を格納します。連結する表領域は読取り専用です。必要に応じて、ALTER TABLESPACE文を使用して、表領域を読取り/書込みにできます。

使用上の注意

このプロシージャを実行するには、ユーザーが次の要件を満たしている必要があります。

- IMP_FULL_DATABASEロールを持っている。

- directory_objectパラメータに指定された、データ・ポンプ・エクスポート・ダンプ・ファイルおよびセット内の表領域のデータファイルを格納するディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている。

自動ストレージ管理(ASM)ディレクトリは、このプロシージャでは使用できません。

関連項目:
概要

ATTACH_TABLESPACESプロシージャ

このプロシージャは、データ・ポンプを使用して、以前にDBMS_STREAMS_TABLESPACE_ADMパッケージ、データ・ポンプ・エクスポート、またはRecovery Manager (RMAN)のTRANSPORT TABLESPACEコマンドを使用してエクスポートした自己完結型表領域セットをインポートします。

このプロシージャはオーバーロードされていて、次のバージョンで構成されています。

- このプロシージャの一方のバージョンは、datapump_job_nameパラメータ内でデータ・ポンプ・ジョブ名を使用します。このジョブは、連結操作を完了するためのデータ・ポンプ・インポートを実行します。さらに、このプロシージャはオプションで、エクスポート・データベースのプラットフォームがローカル・データベース・プラットフォームと異なる場合に、ローカル・プラットフォームで使用できる表領域セットのデータファイルを作成できます。

- このプロシージャの他方のバージョンは、表領域リポジトリ内の複数バージョンの表領域セットで構成可能なファイル・グループを使用します。表領域リポジトリは、ファイル・グループ・リポジトリ内の表領域セットのコレクションです。このバージョンのプロシージャを実行すると、データ・ポンプ・インポートが実行されます。このバージョンのプロシージャは、ファイル・グループ・バージョン内のファイルを使用して、エクスポート・ダンプ・ファイル、エクスポート・ログ・ファイル、および表領域セットで構成されるデータファイルを指定のディレクトリにコピーできます。ファイル・グループおよびバージョンは、それぞれfile_group_nameパラメータおよびversion_nameパラメータを使用して指定します。このバージョンのプロシージャでは、エクスポート・データベースのプラットフォームがローカル・データベース・プラットフォームと異なる場合、データファイル・プラットフォームを指定する必要はありません。かわりに、表領域セットは、連結時に正しいプラットフォームに自動的に移行します。

構文

DBMS_STREAMS_TABLESPACE_ADM.ATTACH_TABLESPACES(
datapump_job_name          IN OUT VARCHAR2,
dump_file                  IN     FILE,
tablespace_files           IN     FILE_SET,
converted_files            IN     FILE_SET,
datafiles_platform         IN     VARCHAR2  DEFAULT NULL,
log_file                   IN     FILE      DEFAULT NULL,
tablespace_names           OUT    TABLESPACE_SET);

DBMS_STREAMS_TABLESPACE_ADM.ATTACH_TABLESPACES(
file_group_name            IN   VARCHAR2,
version_name               IN   VARCHAR2  DEFAULT NULL,
datafiles_directory_object IN   VARCHAR2  DEFAULT NULL,
logfile_directory_object   IN   VARCHAR2  DEFAULT NULL,
repository_db_link         IN   VARCHAR2  DEFAULT NULL,
tablespace_names           OUT  TABLESPACE_SET);

パラメータ

表164-4 ATTACH_TABLESPACESプロシージャのパラメータ

パラメータ

説明

data_pump_job_name

データ・ポンプ・ジョブ名。命名規則に従う場合やジョブの追跡を簡単にする場合には、データ・ポンプ・ジョブ名を指定します。

NULLの場合、システムによってデータ・ポンプ・ジョブ名が生成されます。

dump_file

インポートするデータ・ポンプ・ダンプ・ファイルのファイル名。

設定がNULL、またはファイル属性がNULLの場合、エラーが発生します。

tablespace_files

インポートする表領域セットのデータファイルを格納するファイル・セット。

NULLの場合は、エラーが発生します。

converted_files

datafiles_platformパラメータがNULL以外で、ローカル・インポート・データベースのプラットフォームと異なる場合、変換するデータファイルの名前を持つファイル・セットを指定します。データファイルは、ローカル・インポート・データベースのプラットフォームに変換され、新しいファイル名にコピーされます。この場合、指定したファイル・セットのファイル数が、tablespace_filesパラメータに指定したファイル・セットのファイル数と一致している必要があります。既存のデータファイルは変更も削除もされません。

datafiles_platformパラメータがNULLの場合にNULL以外に設定すると、このパラメータは無視されます。

datafiles_platformパラメータでローカル・インポート・データベースと同じプラットフォームを指定している場合にNULL以外に設定すると、このパラメータは無視されます。

このパラメータがNULLで、datafiles_platformパラメータがNULL以外の場合は、エラーが発生します。

datafiles_platform

プラットフォームがエクスポート・データベースおよび現在のインポート・データベースと同じ場合、NULLを指定します。

プラットフォームがエクスポート・データベースおよび現在のインポート・データベースと異なる場合、エクスポート・データベースのプラットフォームを指定します。

データベースのプラットフォームを判別するには、V$DATABASE動的パフォーマンス・ビューのPLATFORM_NAME列を問い合せます。V$TRANSPORTABLE_PLATFORM動的パフォーマンス・ビューに、プラットフォーム間トランスポータブル表領域をサポートするすべてのプラットフォームが表示されます。

log_file

データ・ポンプ・インポート用のログ・ファイル名を指定します。

設定がNULL、または1つ以上のファイル・パラメータがNULLの場合、システムは拡張子.algでログ・ファイル名を作成し、それをデータ・ポンプ・エクスポート・ダンプ・ファイル・ディレクトリに配置します。

ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

file_group_name

[schema_name.]file_group_nameの形式で指定したファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsalesの場合は、hq_dba.salesと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

version_name

連結するファイル・グループ・バージョンの名前。

NULLに設定すると、このプロシージャはファイル・グループの最新バージョンを使用します。

datafiles_directory_object

データファイルおよびデータ・ポンプ・エクスポート・ダンプ・ファイルのコピー先のディレクトリ・オブジェクト。ファイルは、表領域リポジトリ・ディレクトリからこのディレクトリにコピーされます。

NULL以外に設定すると、連結された表領域は、指定したディレクトリ内のファイルを使用します。ただし、version_nameパラメータで指定したファイル・グループ・バージョンは、このdatafiles_directory_objectパラメータで指定したディレクトリ内ではなく、元のディレクトリ内のファイルで構成されます。

NULLに設定すると、データファイルおよびダンプ・ファイルはコピーされません。

logfile_directory_object

データ・ポンプ・インポート・ログ・ファイルを配置するディレクトリ・オブジェクト。システムによって、拡張子.algを持つログ・ファイル名が作成されます。

NULLに設定すると、インポート・ログ・ファイルがダンプ・ファイルと同じディレクトリに配置されます。

repository_db_link

ファイル・グループが異なるデータベースにある場合は、そのファイル・グループが含まれているデータベースへのデータベース・リンクの名前を指定します。データベース・リンクは、このプロシージャを実行するユーザーがアクセスできる必要があります。

このパラメータをNULL以外に設定する場合は、次の要件を満たしている必要があります。

- 連結されているバージョン内にファイルが含まれている各ディレクトリ・オブジェクトが、両方のデータベースに存在している必要があります。

- 対応するディレクトリ・オブジェクトの名前が、両方のデータベースで同じである必要があります。

NULLに設定すると、データベース・リンクは使用されず、ローカル・データベース内のファイル・グループが使用されます。

tablespace_names

連結する表領域の名前を格納します。連結する表領域は読取り専用です。必要に応じて、ALTER TABLESPACE文を使用して、表領域を読取り/書込みにできます。

使用上の注意

次の各項では、このプロシージャの使用上の注意について説明します。

- ユーザー要件

- 表領域セットのクローニングまたは連結解除に使用するプロシージャ

- 連結するデータベースがクローニングまたは連結解除するデータベースと異なる場合

- 自動ストレージ管理ディレクトリ

関連項目:

- 概要

- 『Oracle Streams概要および管理』

ユーザー要件

このプロシージャのいずれかのバージョンを実行するには、ユーザーが次の要件を満たしている必要があります。

- IMP_FULL_DATABASEロールを持っている。

- dump_fileパラメータおよびtablespace_filesパラメータ、またはdatafiles_directory_objectパラメータに指定された、データ・ポンプ・エクスポート・ダンプ・ファイルおよびセット内の表領域のデータファイルを格納するディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている。

- log_fileパラメータまたはlogfile_directory_objectパラメータがNULL以外の場合に、そのパラメータに指定された、データ・ポンプ・インポート・ログ・ファイルを保持するディレクトリ・オブジェクトに対するWRITE権限を持っている。

このプロシージャのデータ・ポンプ・ジョブ・バージョンを実行するユーザーは、プラットフォームの変換が必要な場合に、セット内の表領域の変換済データファイルを保持するディレクトリ・オブジェクトに対してWRITE権限を持っている必要があります。これらのディレクトリ・オブジェクトは、converted_filesパラメータがNULL以外の場合に、このパラメータに指定します。

このプロシージャのファイル・グループ・バージョンを実行する場合、ユーザーはファイル・グループの管理に必要な権限を持っている必要があります。

表領域セットのクローニングまたは連結解除に使用するプロシージャ

表領域セットが、CLONE_TABLESPACESプロシージャまたはDETACH_TABLESPACESプロシージャによってそれぞれクローニングまたは連結解除された後に、ATTACH_TABLESPACESプロシージャを使用して表領域セットをデータベースに連結できます。CLONE_TABLESPACESプロシージャまたはDETACH_TABLESPACESプロシージャのデータ・ポンプ・ジョブ・バージョンを使用した場合は、ATTACH_TABLESPACESプロシージャのデータ・ポンプ・ジョブ・バージョンを使用します。CLONE_TABLESPACESプロシージャまたはDETACH_TABLESPACESプロシージャのファイル・グループ・バージョンを使用した場合は、ATTACH_TABLESPACESプロシージャのファイル・グループ・バージョンを使用します。

関連項目:

- CLONE_TABLESPACESプロシージャ

- DETACH_TABLESPACESプロシージャ

連結するデータベースがクローニングまたは連結解除するデータベースと異なる場合

表領域セットは、その表領域セットがクローニングまたは連結解除されたデータベースと異なるデータベースに連結できます。これらの2つのデータベースでは、ファイル・システムが共有されない場合があります。2つのデータベースでファイル・システムが共有されない場合は、DBMS_FILE_TRANSFERパッケージ、FTPまたはその他の方法で、ダンプ・ファイルおよびデータファイルをリモート・システムに転送する必要があります。使用するATTACH_TABLESPACESプロシージャのバージョンに応じて、次のいずれかの方法で表領域セットを連結できます。

- このプロシージャのデータ・ポンプ・ジョブ・バージョンを使用する場合は、ファイル・システムで関連するファイルを指定します。データベース内でディレクトリ・オブジェクトの名前が異なる場合があります。

- このプロシージャのファイル・グループ・バージョンを使用する場合は、repository_db_linkパラメータを使用して、表領域リポジトリが存在するデータベースを指定できます。ファイルのディレクトリ・オブジェクトが存在し、データベース内で一致している必要があります。

関連項目:

- CLONE_TABLESPACESプロシージャ

- DETACH_TABLESPACESプロシージャ

- ファイル・グループの詳細は、第68章「DBMS_FILE_GROUP」を参照してください。

自動ストレージ管理ディレクトリ

自動ストレージ管理(ASM)ディレクトリは、データファイルおよびエクスポート・ダンプ・ファイルを格納するディレクトリ・オブジェクトには指定できますが、ログ・ファイルを格納するディレクトリ・オブジェクトには指定できません。

関連項目:
ディレクトリ・オブジェクトへのASMディレクトリの指定の詳細は、『Oracle Databaseユーティリティ』を参照してください。

CLONE_SIMPLE_TABLESPACEプロシージャ

このプロシージャは、単純な表領域をクローニングします。指定する表領域はオンラインである必要があります。

具体的には、このプロシージャは次の操作を実行します。

1. 指定する表領域が読取り専用でない場合、読取り専用にします。

2. データ・ポンプを使用して、表領域のメタデータをエクスポートし、指定したディレクトリにダンプ・ファイルを配置します。

3. 指定済ディレクトリに表領域を指定してデータファイルを配置します。

4. このプロシージャによって表領域を読取り専用にした場合、表領域を読取り/書込みにします。

さらに、このプロシージャはオプションで、ローカル・データベース・プラットフォームと異なるプラットフォームで使用できる表領域のデータファイルを作成できます。

構文

DBMS_STREAMS_TABLESPACE_ADM.CLONE_SIMPLE_TABLESPACE(
tablespace_name      IN  VARCHAR2,
directory_object     IN  VARCHAR2,
destination_platform IN  VARCHAR2  DEFAULT NULL,
tablespace_file_name OUT VARCHAR2);

パラメータ

表164-5 CLONE_SIMPLE_TABLESPACEプロシージャのパラメータ

パラメータ

説明

tablespace_name

クローニングする表領域。

NULLの場合は、エラーが発生します。

directory_object

データ・ポンプ・エクスポート・ダンプ・ファイル、データ・ポンプ・エクスポート・ログ・ファイルおよび表領域のデータファイルを配置するディレクトリ。SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトの名前を指定する必要があります。

データ・ポンプ・エクスポート・ダンプ・ファイルの名前は、.dmp拡張子が付くことを除き、表領域のデータファイル名と同じです。ディレクトリにダンプ・ファイルと同じ名前のファイルが存在する場合は、エラーが発生します。

ログ・ファイルの名前は、.clg拡張子が付くことを除いて、表領域のデータファイル名と同じです。ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

NULLの場合は、エラーが発生します。

destination_platform

プラットフォームが現在のエクスポート・データベースおよび目的のインポート・データベースと同じ場合、NULLを指定します。

プラットフォームがエクスポート・データベースおよびインポート・データベースと異なる場合、目的のインポート・データベースのプラットフォームを指定します。

データベースのプラットフォームを判別するには、V$DATABASE動的パフォーマンス・ビューのPLATFORM_NAME列を問い合せます。V$TRANSPORTABLE_PLATFORM動的パフォーマンス・ビューに、プラットフォーム間トランスポータブル表領域をサポートするすべてのプラットフォームが表示されます。

tablespace_file_name

クローニングする表領域データファイルの名前を格納します。データファイルは、directory_objectパラメータに指定したディレクトリに配置します。

使用上の注意

このプロシージャを実行するには、ユーザーが次の要件を満たしている必要があります。

- EXP_FULL_DATABASEロールを持っている。

- 表領域に関する情報を含む、1つ以上のデータ・ディクショナリ・ビューへのアクセス権限を持っている。これらのビューには、DBA_TABLESPACESおよびUSER_TABLESPACESが含まれます。

- 表領域を読取り専用にする必要がある場合に、表領域に対するMANAGE TABLESPACEまたはALTER TABLESPACEを持っている。

- 表領域のデータファイルを格納するディレクトリのディレクトリ・オブジェクトに対するREAD権限を持っている。この表領域の名前はtablespace_nameパラメータに指定します。このディレクトリにディレクトリ・オブジェクトが存在しない場合、このプロシージャを実行する前にディレクトリ・オブジェクトを作成し、必要な権限を付与します。

- directory_objectパラメータに指定した、データ・ポンプ・エクスポート・ダンプ・ファイルを格納するディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている。

- このプロシージャのファイル・グループ・バージョンを実行する場合、ユーザーはファイル・グループの管理に必要な権限を持っている必要があります。

このプロシージャを使用して表領域をクローニングした後に、ATTACH_SIMPLE_TABLESPACEプロシージャを使用して別のデータベースに表領域を追加できます。データベースがリモート・データベースで、ATTACH_SIMPLE_TABLESPACEプロシージャを使用する場合、DBMS_FILE_TRANSFERパッケージ、FTPまたはその他の方法で、ダンプ・ファイルおよびデータファイルをリモート・システムに転送できます。

自動ストレージ管理(ASM)ディレクトリは、このプロシージャでは使用できません。

関連項目:

- 概要

- 「ATTACH_SIMPLE_TABLESPACEプロシージャ」および「PULL_SIMPLE_TABLESPACEプロシージャ」

CLONE_TABLESPACESプロシージャ

このプロシージャは、自己完結型表領域セットをクローニングします。指定した表領域セットのすべての表領域がオンラインである必要があります。

具体的には、このプロシージャは次の操作を実行します。

1. 指定した表領域セットの読取り/書込み表領域を読取り専用にします。

2. データ・ポンプを使用して、表領域セットの表領域のメタデータをエクスポートし、指定したディレクトリにダンプ・ファイルを配置します。

3. 指定した表領域セットを構成するデータファイルを指定したディレクトリに配置します。

4. このプロシージャによって表領域を読取り専用にした場合、表領域を読取り/書込みにします。

このプロシージャはオーバーロードされていて、次のバージョンで構成されています。

- このプロシージャの一方のバージョンは、datapump_job_nameパラメータ内でデータ・ポンプ・ジョブ名を使用します。このジョブは、データ・ポンプ・エクスポートを実行します。このバージョンのプロシージャは、エクスポート・ダンプ・ファイル、エクスポート・ログ・ファイル、および表領域セットで構成されるデータファイルを指定のディレクトリに配置することによってクローニング操作を完了しますが、これらのファイルはファイル・グループ・バージョンには追加されません。さらに、このバージョンのプロシージャは、オプションでローカル・データベース・プラットフォームと異なるプラットフォームで使用できる表領域セットのデータファイルを作成できます。

- このプロシージャの他方のバージョンは、表領域リポジトリ内の複数バージョンの表領域セットで構成可能なファイル・グループを使用します。表領域リポジトリは、ファイル・グループ・リポジトリ内の表領域セットのコレクションです。このバージョンのプロシージャを実行すると、データ・ポンプ・エクスポートが実行され、また、このバージョンのプロシージャは、エクスポート・ダンプ・ファイル、エクスポート・ログ・ファイル、および表領域セットを構成するデータファイルを適切なファイル・グループ・バージョンに配置することによってクローニング操作を完了します。ファイル・グループおよびバージョンは、それぞれfile_group_nameパラメータおよびversion_nameパラメータを使用して指定します。このバージョンのプロシージャでは、接続先プラットフォームが異なる場合は、接続先プラットフォームを指定する必要はありません。かわりに、ATTACH_TABLESPACESプロシージャのファイル・グループ・バージョンを使用して接続先データベースに連結する際に、表領域セットが正しいプラットフォームに自動的に移行します。

構文

DBMS_STREAMS_TABLESPACE_ADM.CLONE_TABLESPACES(
datapump_job_name            IN OUT VARCHAR2,
tablespace_names             IN     TABLESPACE_SET,
dump_file                    IN     FILE,
tablespace_directory_objects IN     DIRECTORY_OBJECT_SET,
destination_platform         IN     VARCHAR2  DEFAULT NULL,
log_file                     IN     FILE      DEFAULT NULL,
tablespace_files             OUT    FILE_SET);

DBMS_STREAMS_TABLESPACE_ADM.CLONE_TABLESPACES(
tablespace_names             IN  TABLESPACE_SET,
tablespace_directory_object  IN  VARCHAR2  DEFAULT NULL,
log_file_directory_object    IN  VARCHAR2  DEFAULT NULL,
file_group_name              IN  VARCHAR2,
version_name                 IN  VARCHAR2  DEFAULT NULL,
repository_db_link           IN  VARCHAR2  DEFAULT NULL);

パラメータ

表164-6 CLONE_TABLESPACESプロシージャのパラメータ

パラメータ

説明

data_pump_job_name

データ・ポンプ・ジョブ名。命名規則に従う場合やジョブの追跡を簡単にする場合には、データ・ポンプ・ジョブ名を指定します。

NULLの場合、システムによってデータ・ポンプ・ジョブ名が生成されます。

tablespace_names

クローニングする表領域セット。

NULLの場合は、エラーが発生します。

dump_file

エクスポートするデータ・ポンプ・ダンプ・ファイルのファイル名。

設定がNULL、またはファイル属性がNULLの場合、エラーが発生します。

指定したファイルが存在する場合は、エラーが発生します。

tablespace_directory_objects

表領域のデータファイルをコピーするディレクトリ・オブジェクトのセット。セット内に複数のディレクトリ・オブジェクトがある場合、データファイルはセット内の各ディレクトリ・オブジェクトに順番にコピーされます。この場合、ディレクトリ・オブジェクト・セットの最後のディレクトリ・オブジェクトに達すると、セット内の先頭のディレクトリ・オブジェクトから、データファイルのコピーが再開されます。

NULLに設定すると、表領域セットのデータファイルがダンプ・ファイル・ディレクトリにコピーされます。

destination_platform

プラットフォームが現在のエクスポート・データベースおよび目的のインポート・データベースと同じ場合、NULLを指定します。

プラットフォームがエクスポート・データベースおよびインポート・データベースと異なる場合、目的のインポート・データベースのプラットフォームを指定します。

データベースのプラットフォームを判別するには、V$DATABASE動的パフォーマンス・ビューのPLATFORM_NAME列を問い合せます。V$TRANSPORTABLE_PLATFORM動的パフォーマンス・ビューに、プラットフォーム間トランスポータブル表領域をサポートするすべてのプラットフォームが表示されます。

log_file

データ・ポンプ・エクスポート用のログ・ファイル名を指定します。

設定がNULL、または1つ以上のファイル・パラメータがNULLの場合、システムは拡張子.clgでログ・ファイル名を作成し、それをダンプ・ファイル・ディレクトリに配置します。

ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

tablespace_directory_object

データファイルのコピー先、およびデータ・ポンプ・エクスポート・ダンプ・ファイルの配置先のディレクトリ・オブジェクト。システムによって、拡張子.dmpを持つダンプ・ファイル名が作成されます。

NULLに設定すると、このバージョンのデフォルトのディレクトリ・オブジェクトが、データファイルのコピー先、ダンプ・ファイルの配置先になります。このバージョンにデフォルトのディレクトリ・オブジェクトが存在しない場合は、ファイル・グループのデフォルトのディレクトリ・オブジェクトが使用されます。

バージョンおよびファイル・グループのいずれのデフォルトのディレクトリ・オブジェクトも存在しない場合にNULLに設定すると、エラーが発生します。

log_file_directory_object

データ・ポンプ・エクスポート・ログ・ファイルを配置するディレクトリ・オブジェクト。システムによって、拡張子.clgを持つログ・ファイル名が作成されます。

NULLに設定すると、tablespace_directory_objectで指定するディレクトリ・オブジェクトが使用されます。

file_group_name

[schema_name.]file_group_nameの形式で指定したファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsalesの場合は、hq_dba.salesと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定されたファイル・グループが存在しない場合は、プロシージャによって作成されます。

version_name

クローニングする表領域セットを配置するバージョンの名前。バージョン名に、正の整数は指定できません。

指定されたバージョンが存在しない場合は、プロシージャによって作成されます。

指定されたバージョンが存在する場合は、そのバージョンに表領域セットが追加されます。1つのバージョンに存在可能なデータ・ポンプ・エクスポート・ダンプ・ファイルは1つのみです。

NULLに設定すると、新しいバージョンが作成されます。このバージョンは、バージョン番号を使用して管理できます。

repository_db_link

ファイル・グループがリモート・データベースにある場合は、そのファイル・グループが含まれているデータベースへのデータベース・リンクの名前を指定します。データベース・リンクは、このプロシージャを実行するユーザーがアクセスできる必要があります。

このパラメータがNULL以外の場合、tablespace_directory_objectで指定するディレクトリ・オブジェクトは、ローカル・データベースおよびリモート・データベースに存在する必要があります。tablespace_directory_objectがNULLの場合は、両方のデータベースにデフォルトのディレクトリ・オブジェクトが存在する必要があります。ディレクトリ・オブジェクトは各データベースで同じ名前を持ち、共有ファイル・システムで同じディレクトリに対応している必要があります。

NULLに設定すると、データベース・リンクは使用されず、ローカル・データベース内のファイル・グループが使用されます。

tablespace_files

クローニングする表領域セットのデータファイルを格納します。これらのデータファイルは、パラメータtablespace_directory_objectsのディレクトリ・オブジェクトによって指定されたディレクトリに配置されます。

使用上の注意

このプロシージャのいずれかのバージョンを実行するには、ユーザーが次の要件を満たしている必要があります。

- EXP_FULL_DATABASEロールを持っている。

- 表領域に関する情報を含む、1つ以上のデータ・ディクショナリ・ビューへのアクセス権限を持っている。これらのビューには、DBA_TABLESPACESおよびUSER_TABLESPACESが含まれます。

- 表領域を読取り専用にする必要がある場合に、表領域に対するMANAGE TABLESPACEまたはALTER TABLESPACEを持っている。

- 表領域セットのデータファイルを格納するディレクトリのディレクトリ・オブジェクトに対するREAD権限を持っている。これらの表領域の名前はtablespace_namesパラメータに指定します。これらのいずれかのディレクトリにディレクトリ・オブジェクトが存在しない場合、このプロシージャを実行する前にディレクトリ・オブジェクトを作成し、必要な権限を付与します。

- dump_fileパラメータまたはtablespace_directory_objectパラメータに指定された、データ・ポンプ・エクスポート・ダンプ・ファイルを格納するディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている。

- tablespace_directory_objectsパラメータ(NULL以外)またはtablespace_directory_objectパラメータに指定された、セット内に表領域のコピー済データファイルを格納するディレクトリ・オブジェクトに対するWRITE権限を持っている。

- log_fileパラメータ(NULL以外)またはlog_file_directory_objectパラメータ(NULL以外)に指定された、データ・ポンプ・エクスポート・ログ・ファイルを格納するディレクトリ・オブジェクトに対するWRITE権限を持っている。

このプロシージャのファイル・グループ・バージョンを実行する場合、ユーザーはファイル・グループの管理に必要な権限を持っている必要があります。

自動ストレージ管理(ASM)ディレクトリは、データファイルおよびエクスポート・ダンプ・ファイルを格納するディレクトリ・オブジェクトには指定できますが、ログ・ファイルを格納するディレクトリ・オブジェクトには指定できません。

このプロシージャを使用して表領域セットをクローニングした後に、ATTACH_TABLESPACESプロシージャを使用して別のデータベースに表領域を連結できます。

関連項目:

- 概要

- ATTACH_TABLESPACESプロシージャ

- ファイル・グループの詳細は、第68章「DBMS_FILE_GROUP」を参照してください。

- 『Oracle Streams概要および管理』

DETACH_SIMPLE_TABLESPACEプロシージャ

このプロシージャは、単純な表領域の連結を解除します。指定する表領域はオンラインである必要があります。

具体的には、このプロシージャは次の操作を実行します。

1. 指定する表領域が読取り専用でない場合、読取り専用にします。

2. データ・ポンプを使用して、表領域のメタデータをエクスポートし、表領域データファイルを格納するディレクトリにダンプ・ファイルを配置します。

3. 表領域およびその内容をデータベースから削除します。

構文

DBMS_STREAMS_TABLESPACE_ADM.DETACH_SIMPLE_TABLESPACE(
tablespace_name       IN  VARCHAR2,
directory_object      OUT VARCHAR2,
tablespace_file_name  OUT VARCHAR2);

パラメータ

表164-7 DETACH_SIMPLE_TABLESPACEプロシージャのパラメータ

パラメータ

説明

data_pump_job_name

データ・ポンプ・ジョブ名。命名規則に従う場合やジョブの追跡を簡単にする場合には、データ・ポンプ・ジョブ名を指定します。

NULLの場合、システムによってデータ・ポンプ・ジョブ名が生成されます。

directory_object

データ・ポンプ・エクスポート・ダンプ・ファイルおよびデータ・ポンプ・エクスポート・ログ・ファイルを配置するディレクトリを格納します。このプロシージャは、表領域のデータファイルのディレクトリを使用します。そのため、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトがこのディレクトリに存在することを確認してください。

データ・ポンプ・エクスポート・ダンプ・ファイルの名前は、.dmp拡張子が付くことを除き、表領域のデータファイル名と同じです。ディレクトリにダンプ・ファイルと同じ名前のファイルが存在する場合は、エラーが発生します。

ログ・ファイルの名前は、.dlg拡張子が付くことを除いて、表領域のデータファイル名と同じです。ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

tablespace_file_name

連結を解除した表領域データファイルの名前を格納します。

使用上の注意

このプロシージャを実行するには、ユーザーが次の要件を満たしている必要があります。

- EXP_FULL_DATABASEロールを持っている。

- 表領域に関する情報を含む、1つ以上のデータ・ディクショナリ・ビューへのアクセス権限を持っている。これらのビューには、DBA_TABLESPACESおよびUSER_TABLESPACESが含まれます。

- DROP TABLESPACE権限を持っている。

- 表領域を読取り専用にする必要がある場合に、表領域に対するMANAGE TABLESPACEまたはALTER TABLESPACEを持っている。

- 表領域データファイルを格納するディレクトリのディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている。この表領域の名前はtablespace_nameパラメータに指定します。このディレクトリにディレクトリ・オブジェクトが存在しない場合、このプロシージャを実行する前にディレクトリ・オブジェクトを作成し、必要な権限を付与します。このディレクトリには、このプロシージャによって生成されるデータ・ポンプ・エクスポート・ダンプ・ファイルも格納されます。

このプロシージャを使用して表領域の連結を解除した後に、ATTACH_SIMPLE_TABLESPACEプロシージャを使用して別のデータベースに表領域を追加できます。データベースがリモート・データベースで、ATTACH_SIMPLE_TABLESPACEプロシージャを使用する場合、DBMS_FILE_TRANSFERパッケージ、FTPまたはその他の方法で、ダンプ・ファイルおよびデータファイルをリモート・システムに転送できます。このプロシージャの2つのOUTパラメータを使用して、連結またはプル操作を実行できます。

自動ストレージ管理(ASM)ディレクトリは、このプロシージャでは使用できません。

注意:
表領域でOracle Managed Files機能を使用している場合、表領域に対して、DETACH_SIMPLE_TABLESPACEプロシージャを使用しないでください。このプロシージャを使用すると、表領域の削除時に、表領域のデータファイルが自動的に削除されます。

関連項目:

- 概要

- 「ATTACH_SIMPLE_TABLESPACEプロシージャ」および「PULL_SIMPLE_TABLESPACEプロシージャ」

- Oracle Managed Files機能の詳細は、『Oracle Database管理者ガイド』を参照してください。

DETACH_TABLESPACESプロシージャ

このプロシージャは、自己完結型表領域セットの連結を解除します。指定した表領域セットのすべての表領域がオンラインで、表パーティションが表領域セットの表領域にまたがらないようにする必要があります。

具体的には、このプロシージャは次の操作を実行します。

1. 指定した表領域セットの読取り/書込み表領域を読取り専用にします。

2. データ・ポンプを使用して、表領域セットのメタデータをエクスポートし、指定したディレクトリにダンプ・ファイルを配置します。

3. 指定した表領域セットの表領域およびそれらの内容をデータベースから削除します。

このプロシージャは、指定した表領域セットで構成されるデータファイルの移動またはコピーは行いません。

このプロシージャはオーバーロードされていて、次のバージョンで構成されています。

- このプロシージャの一方のバージョンは、datapump_job_nameパラメータ内でデータ・ポンプ・ジョブ名を使用します。このジョブは、データ・ポンプ・エクスポートを実行します。このバージョンのプロシージャは、エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを指定のディレクトリに配置することによって連結操作を完了しますが、これらのファイルはファイル・グループ・バージョンには追加されません。

- このプロシージャの他方のバージョンは、表領域リポジトリ内の複数バージョンの表領域セットで構成可能なファイル・グループを使用します。表領域リポジトリは、ファイル・グループ・リポジトリ内の表領域セットのコレクションです。このバージョンのプロシージャを実行すると、データ・ポンプ・エクスポートが実行され、また、このバージョンのプロシージャは、エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを適切なファイル・グループ・バージョンに配置することによってクローニング操作を完了します。表領域セットで構成されるデータファイルは、移動またはコピーはされませんが、連結解除されたバージョンで参照されます。ファイル・グループおよびバージョンは、それぞれfile_group_nameパラメータおよびversion_nameパラメータを使用して指定します。また、接続先プラットフォームが異なる場合は、ATTACH_TABLESPACESプロシージャのファイル・グループ・バージョンを使用して接続先データベースに連結される際に、表領域セットが正しいプラットフォームに自動的に移行します。

注意:
表領域セットのいずれかの表領域で、Oracle Managed Files機能を使用している場合、DETACH_TABLESPACESプロシージャを使用しないでください。このプロシージャを使用すると、これらの表領域の削除時に、表領域のデータファイルが自動的に削除されます。

構文

DBMS_STREAMS_TABLESPACE_ADM.DETACH_TABLESPACES(
datapump_job_name         IN OUT VARCHAR2,
tablespace_names          IN     TABLESPACE_SET,
dump_file                 IN     FILE,
log_file                  IN     FILE  DEFAULT NULL,
tablespace_files          OUT    FILE_SET);

DBMS_STREAMS_TABLESPACE_ADM.DETACH_TABLESPACES(
tablespace_names          IN TABLESPACE_SET,
export_directory_object   IN VARCHAR2  DEFAULT NULL,
log_file_directory_object IN VARCHAR2  DEFAULT NULL,
file_group_name           IN VARCHAR2,
version_name              IN VARCHAR2  DEFAULT NULL,
repository_db_link        IN VARCHAR2  DEFAULT NULL);

パラメータ

表164-8 DETACH_TABLESPACESプロシージャのパラメータ

パラメータ

説明

data_pump_job_name

データ・ポンプ・ジョブ名。命名規則に従う場合やジョブの追跡を簡単にする場合には、データ・ポンプ・ジョブ名を指定します。

NULLの場合、システムによってデータ・ポンプ・ジョブ名が生成されます。

tablespace_names

連結解除する表領域セット。

NULLの場合は、エラーが発生します。

dump_file

エクスポートするデータ・ポンプ・ダンプ・ファイルのファイル名。

設定がNULL、またはファイル属性がNULLの場合、エラーが発生します。

指定したファイルが存在する場合は、エラーが発生します。

log_file

データ・ポンプ・エクスポート用のログ・ファイル名を指定します。

設定がNULL、または1つ以上のファイル・パラメータがNULLの場合、システムは拡張子.dlgでログ・ファイル名を作成し、それをダンプ・ファイル・ディレクトリに配置します。

ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

tablespace_files

連結を解除する表領域セットのデータファイルの名前を格納します。

export_directory_object

データ・ポンプ・エクスポート・ダンプ・ファイルを配置するディレクトリ・オブジェクト。システムによって、拡張子.dmpを持つダンプ・ファイル名が作成されます。

NULLに設定すると、バージョンのデフォルトのディレクトリ・オブジェクトにダンプ・ファイルが配置されます。このバージョンにデフォルトのディレクトリ・オブジェクトが存在しない場合は、ファイル・グループのデフォルトのディレクトリ・オブジェクトが使用されます。

バージョンおよびファイル・グループのいずれのデフォルトのディレクトリ・オブジェクトも存在しない場合にNULLに設定すると、エラーが発生します。

log_file_directory_object

データ・ポンプ・エクスポート・ログ・ファイルを配置するディレクトリ・オブジェクト。システムによって、拡張子.dlgを持つログ・ファイル名が作成されます。

NULLに設定すると、エクスポート・ログ・ファイルがダンプ・ファイルと同じディレクトリに配置されます。

file_group_name

[schema_name.]file_group_nameの形式で指定したファイル・グループの名前。たとえば、スキーマがhq_dbaで、ファイル・グループ名がsalesの場合は、hq_dba.salesと指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定されたファイル・グループが存在しない場合は、プロシージャによって作成されます。

version_name

連結解除する表領域セットを配置するバージョンの名前。バージョン名に、正の整数は指定できません。

指定されたバージョンが存在しない場合は、プロシージャによって作成されます。

指定されたバージョンが存在する場合は、そのバージョンに表領域セットが追加されます。1つのバージョンに存在可能なデータ・ポンプ・エクスポート・ダンプ・ファイルは1つのみです。

NULLに設定すると、新しいバージョンが作成されます。このバージョンは、バージョン番号を使用して管理できます。

repository_db_link

ファイル・グループがリモート・データベースにある場合は、そのファイル・グループが含まれているデータベースへのデータベース・リンクの名前を指定します。データベース・リンクは、このプロシージャを実行するユーザーがアクセスできる必要があります。

このパラメータがNULL以外の場合、export_directory_objectで指定するディレクトリ・オブジェクトは、ローカル・データベースおよびリモート・データベースに存在する必要があります。export_directory_objectがNULLの場合は、両方のデータベースにデフォルトのディレクトリ・オブジェクトが存在する必要があります。ディレクトリ・オブジェクトは各データベースで同じ名前を持ち、共有ファイル・システムで同じディレクトリに対応している必要があります。

NULLに設定すると、データベース・リンクは使用されず、ローカル・データベース内のファイル・グループが使用されます。

使用上の注意

このプロシージャのいずれかのバージョンを実行するには、ユーザーが次の要件を満たしている必要があります。

- EXP_FULL_DATABASEロールを持っている。

- 表領域に関する情報を含む、1つ以上のデータ・ディクショナリ・ビューへのアクセス権限を持っている。これらのビューには、DBA_TABLESPACESおよびUSER_TABLESPACESが含まれます。

- DROP TABLESPACE権限を持っている。

- 表領域を読取り専用にする必要がある場合に、表領域に対するMANAGE TABLESPACEまたはALTER TABLESPACEを持っている。

- 表領域セットのデータファイルを格納するディレクトリのディレクトリ・オブジェクトに対するREAD権限を持っている。これらの表領域の名前はtablespace_namesパラメータに指定します。これらのいずれかのディレクトリにディレクトリ・オブジェクトが存在しない場合、このプロシージャを実行する前にディレクトリ・オブジェクトを作成し、必要な権限を付与します。

- dump_fileパラメータまたはexport_directory_objectパラメータに指定された、データ・ポンプ・エクスポート・ダンプ・ファイルを格納するディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている。

- log_fileパラメータ(NULL以外)またはlog_file_directory_objectパラメータ(NULL以外)に指定された、データ・ポンプ・エクスポート・ログ・ファイルを格納するディレクトリ・オブジェクトに対するWRITE権限を持っている。

このプロシージャのファイル・グループ・バージョンを実行する場合、ユーザーはファイル・グループの管理に必要な権限を持っている必要があります。

自動ストレージ管理(ASM)ディレクトリは、データファイルおよびエクスポート・ダンプ・ファイルを格納するディレクトリ・オブジェクトには指定できますが、ログ・ファイルを格納するディレクトリ・オブジェクトには指定できません。

このプロシージャを使用して表領域セットを連結解除した後に、ATTACH_TABLESPACESプロシージャを使用して別のデータベースに表領域を連結できます。

関連項目:

- 概要

- ATTACH_TABLESPACESプロシージャ

- ファイル・グループの詳細は、第68章「DBMS_FILE_GROUP」を参照してください。

- 『Oracle Streams概要および管理』

- Oracle Managed Files機能の詳細は、『Oracle Database管理者ガイド』を参照してください。

PULL_SIMPLE_TABLESPACEプロシージャ

このプロシージャは、リモート・データベースから単純な表領域をコピーし、現在のデータベースに連結します。リモート・データベースの指定する表領域はオンラインである必要があります。

具体的には、このプロシージャは次の操作を実行します。

1. リモート・データベースの指定する表領域が読取り専用でない場合、読取り専用にします。

2. データ・ポンプを使用して、表領域のメタデータをエクスポートします。

3. データベース・リンクおよびDBMS_FILE_TRANSFERパッケージを使用して、表領域のデータファイルおよびデータ・ポンプ・エクスポートのログ・ファイルを現在のデータベースに転送します。

4. 指定した表領域のデータファイルおよびデータ・ポンプ・エクスポートのログ・ファイルをローカル・データベースの指定したディレクトリに配置します。

5. このプロシージャによって表領域を読取り専用にした場合、表領域を読取り/書込みにします。

6. データ・ポンプを使用して、表領域のメタデータをローカル・データベースの表領域にインポートします。

さらに、このプロシージャは、リモート・データベースのプラットフォームがローカル・データベース・プラットフォームと異なる場合に、ローカル・プラットフォームで使用できる表領域のデータファイルをオプションで作成できます。

構文

DBMS_STREAMS_TABLESPACE_ADM.PULL_SIMPLE_TABLESPACE(
tablespace_name          IN VARCHAR2,
database_link            IN VARCHAR2,
directory_object         IN VARCHAR2  DEFAULT NULL,
conversion_extension     IN VARCHAR2  DEFAULT NULL,
convert_directory_object IN VARCHAR2  DEFAULT NULL);

パラメータ

表164-9 PULL_SIMPLE_TABLESPACEプロシージャのパラメータ

パラメータ

説明

tablespace_name

プルする表領域。

NULLの場合は、エラーが発生します。

database_link

プルする表領域を格納するデータベースへのデータベース・リンクの名前。データベース・リンクは、このプロシージャを実行するユーザーがアクセスできる必要があります。

NULLの場合は、エラーが発生します。

directory_object

表領域のデータファイルをコピーするローカル・データベース上のディレクトリ・オブジェクト。SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトの名前を指定する必要があります。

データ・ポンプ・インポート・ログ・ファイルはこのディレクトリに書き込まれます。ログ・ファイルの名前は、.plg拡張子が付くことを除いて、表領域のデータファイル名と同じです。ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

NULLの場合は、エラーが発生します。

conversion_extension

プラットフォームがリモート・エクスポート・データベースおよび現在のインポート・データベースと同じ場合、NULLを指定します。

エクスポート・データベースとインポート・データベースのプラットフォームが異なる場合、リモート・データベースの表領域データファイルの拡張子と異なる表領域データファイルの拡張子を指定します。この場合、プロシージャはデータファイルをインポート・データベースに転送し、現在のインポート・データベース・プラットフォームと互換性のある形式に自動的に変換します。変換が完了すると、インポート・データベースの元のデータファイルは削除されます。

convert_directory_object

プラットフォームがリモート・エクスポート・データベースおよび現在のインポート・データベースと同じ場合、NULLを指定します。

エクスポート・データベースとインポート・データベースでプラットフォームが異なる場合は、ローカル・エクスポート・データベースのディレクトリ・オブジェクトを指定します。このプロシージャは、ディレクトリ・オブジェクトを使用してプラットフォーム変換を行った後、リモート・データベースにファイルを転送します。SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトの名前を指定する必要があります。

使用上の注意

このプロシージャを実行するには、ユーザーはリモート・データベースの次の要件を満たしている必要があります。

- EXP_FULL_DATABASEロールを持っている。

- DBMS_STREAMS_TABLESPACE_ADMパッケージに対するEXECUTE権限を持っている。

- 表領域に関する情報を含む、1つ以上のデータ・ディクショナリ・ビューへのアクセス権限を持っている。これらのビューには、DBA_TABLESPACESおよびUSER_TABLESPACESが含まれます。

- 表領域を読取り専用にする必要がある場合に、表領域に対してMANAGE TABLESPACEまたはALTER TABLESPACE権限を持っている。

- 表領域のデータファイルを格納するディレクトリのディレクトリ・オブジェクトに対するREAD権限を持っている。この表領域の名前はtablespace_nameパラメータに指定します。このディレクトリにディレクトリ・オブジェクトが存在しない場合、このプロシージャを実行する前にディレクトリ・オブジェクトを作成し、必要な権限を付与します。

このプロシージャを実行するには、ユーザーはローカル・データベースの次の要件を満たしている必要があります。

- IMP_FULL_DATABASEロールおよびEXECUTE_CATALOG_ROLEロールを持っている。

- log_fileパラメータがNULL以外の場合に、そのパラメータに指定されたデータ・ポンプ・エクスポート・ログ・ファイルを格納するディレクトリ・オブジェクトに対するWRITE権限を持っている。

- directory_objectパラメータに指定された、表領域のデータファイルを保持するディレクトリ・オブジェクトに対するWRITE権限を持っている。

自動ストレージ管理(ASM)ディレクトリは、このプロシージャでは使用できません。

関連項目:
概要

PULL_TABLESPACESプロシージャ

このプロシージャは、リモート・データベースから自己完結型表領域セットをコピーし、現在のデータベースに表領域を連結します。リモート・データベースの指定した表領域セットのすべての表領域がオンラインである必要があります。

具体的には、このプロシージャは次の操作を実行します。

1. リモート・データベースに指定した表領域セットの読取り/書込み表領域を読取り専用にします。

2. データ・ポンプを使用して、表領域セットの表領域のメタデータをエクスポートします。

3. データベース・リンクおよびDBMS_FILE_TRANSFERパッケージを使用して、表領域セットのデータファイルおよびデータ・ポンプ・エクスポートのログ・ファイルを現在のデータベースに転送します。

4. 指定した表領域セットを構成するデータファイルを、ローカル・データベースの指定したディレクトリに配置します。

5. データ・ポンプ・エクスポートのログ・ファイルをローカル・データベースの指定したディレクトリに配置します。

6. このプロシージャによって表領域を読取り専用にした場合、表領域を読取り/書込みにします。

7. データ・ポンプ・を使用して、表領域のメタデータをローカル・データベースの表領域セットにインポートします。

さらに、このプロシージャはオプションで、リモート・データベースのプラットフォームが、ローカル・データベース・プラットフォームと異なる場合に、ローカル・プラットフォームで使用できる表領域セットのデータファイルを作成できます。

構文

DBMS_STREAMS_TABLESPACE_ADM.PULL_TABLESPACES(
datapump_job_name            IN OUT VARCHAR2,
database_link                IN     VARCHAR2,
tablespace_names             IN     TABLESPACE_SET,
tablespace_directory_objects IN     DIRECTORY_OBJECT_SET,
log_file                     IN     FILE,
conversion_extension         IN     VARCHAR2  DEFAULT NULL,
convert_directory_object     IN     VARCHAR2  DEFAULT NULL);

パラメータ

表164-10 PULL_TABLESPACESプロシージャのパラメータ

パラメータ

説明

data_pump_job_name

データ・ポンプ・ジョブ名。命名規則に従う場合やジョブの追跡を簡単にする場合には、データ・ポンプ・ジョブ名を指定します。

NULLの場合、システムによってデータ・ポンプ・ジョブ名が生成されます。

database_link

プルする表領域セットを格納するデータベースへのデータベース・リンクの名前。データベース・リンクは、このプロシージャを実行するユーザーがアクセスできる必要があります。

NULLの場合は、エラーが発生します。

tablespace_names

プルする表領域セット。

NULLの場合は、エラーが発生します。

tablespace_directory_objects

表領域のデータファイルをコピーするディレクトリ・オブジェクトのセット。セット内に複数のディレクトリ・オブジェクトがある場合、データファイルはセット内の各ディレクトリ・オブジェクトに順番にコピーされます。この場合、ディレクトリ・オブジェクト・セットの最後のディレクトリ・オブジェクトに達すると、セット内の先頭のディレクトリ・オブジェクトから、データファイルのコピーが再開されます。

NULLの場合は、エラーが発生します。

log_file

データ・ポンプ・エクスポート用のログ・ファイル名を指定します。

設定NULL、または1つ以上のファイル・パラメータがNULLの場合、システムは拡張子.plgでログ・ファイル名を作成し、それをいずれかのデータファイル・ディレクトリに配置します。

ディレクトリにログ・ファイルと同じ名前のファイルが存在する場合、ファイルは上書きされます。

conversion_extension

プラットフォームがリモート・エクスポート・データベースおよび現在のインポート・データベースと同じ場合、NULLを指定します。

エクスポート・データベースとインポート・データベースのプラットフォームが異なる場合、リモート・データベースの表領域データファイルの拡張子と異なる表領域データファイルの拡張子を指定します。この場合、プロシージャはデータファイルをインポート・データベースに転送し、現在のインポート・データベース・プラットフォームと互換性のある形式に自動的に変換します。変換が完了すると、インポート・データベースの元のデータファイルは削除されます。

convert_directory_object

プラットフォームがリモート・エクスポート・データベースおよび現在のインポート・データベースと同じ場合、NULLを指定します。

エクスポート・データベースとインポート・データベースでプラットフォームが異なる場合は、ローカル・エクスポート・データベースのディレクトリ・オブジェクトを指定します。このプロシージャは、ディレクトリ・オブジェクトを使用してプラットフォーム変換を行った後、リモート・データベースにファイルを転送します。SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトの名前を指定する必要があります。

使用上の注意

このプロシージャを実行するには、ユーザーはリモート・データベースの次の要件を満たしている必要があります。

- EXP_FULL_DATABASEロールを持っている。

- DBMS_STREAMS_TABLESPACE_ADMパッケージに対するEXECUTE権限を持っている。

- 表領域に関する情報を含む、1つ以上のデータ・ディクショナリ・ビューへのアクセス権限を持っている。これらのビューには、DBA_TABLESPACESおよびUSER_TABLESPACESが含まれます。

- 表領域を読取り専用にする必要がある場合に、表領域に対してMANAGE TABLESPACEまたはALTER TABLESPACE権限を持っている。

- 表領域セットのデータファイルを格納するディレクトリのディレクトリ・オブジェクトに対するREAD権限を持っている。これらの表領域の名前はtablespace_namesパラメータに指定します。これらのいずれかのディレクトリにディレクトリ・オブジェクトが存在しない場合、このプロシージャを実行する前にディレクトリ・オブジェクトを作成し、必要な権限を付与します。

このプロシージャを実行するには、ユーザーはローカル・データベースの次の要件を満たしている必要があります。

- IMP_FULL_DATABASEロールおよびEXECUTE_CATALOG_ROLEロールを持っている。

- log_fileパラメータがNULL以外の場合に、そのパラメータに指定されたデータ・ポンプ・エクスポート・ログ・ファイルを格納するディレクトリ・オブジェクトに対するWRITE権限を持っている。

- tablespace_directory_objectsパラメータに指定された、セット内の表領域のデータファイルを保持するディレクトリ・オブジェクトに対するWRITE権限を持っている。

自動ストレージ管理(ASM)ディレクトリは、データファイルおよびエクスポート・ダンプ・ファイルを格納するディレクトリ・オブジェクトには指定できますが、ログ・ファイルを格納するディレクトリ・オブジェクトには指定できません。

関連項目:
概要

165 DBMS_SYNC_REFRESH

DBMS_SYNC_REFRESHパッケージは、マテリアライズド・ビューの同期リフレッシュを実行するためのインタフェースを提供します。

関連項目:
DBMS_SYNC_REFRESHの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_SYNC_REFRESHの使用

- 概要

- セキュリティ・モデル

- DBMS_SYNC_REFRESHサブプログラムの要約

DBMS_SYNC_REFRESHの使用

- 概要

- セキュリティ・モデル

概要

同期リフレッシュは、Oracle Databaseリリース12cで導入されたリフレッシュ方法で、一連の表およびその上に定義されたマテリアライズド・ビューを常に同期状態に保つことができます。

関連項目:
同期リフレッシュの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

セキュリティ・モデル

このパッケージの実行権限はPUBLICに付与されるため、すべてのユーザーがこのパッケージのプロシージャを実行して、所有するオブジェクトに対する同期リフレッシュを実行できます。データベース管理者は、データベース内のすべての表およびマテリアライズド・ビューに対して同期リフレッシュ操作を実行できます。

通常、DBA権限のないユーザーが別のユーザーの表に対して同期リフレッシュを使用する場合、その表からの読取りおよびその表への書込みの完全な権限を持っている必要があります。つまり、ユーザーは、その表またはマテリアライズド・ビューに対してSELECT、READ、INSERT、UPDATEおよびDELETEの権限を持っている必要があります。次に例外を示します。

- PURGE_REFRESH_STATSファンクションとALTER_REFRESH_STATS_RETENTIONファンクション
これら2つのファンクションは、パージ・ポリシーを実装し、デフォルトのリテンション期間を変更するために使用できます。これらのファンクションは、データベース管理者のみが実行できます。

- CAN_SYNCREF_TABLEファンクション
これは、指定した表に関連付けられたすべてのマテリアライズド・ビューの同期リフレッシュの適格性を検査するアドバイザ・ファンクションです。したがって、このファンクションでは、指定された表に関連付けられたすべてのマテリアライズド・ビューでSELECTまたはREAD権限が必要です。

DBMS_SYNC_REFRESHサブプログラムの要約

表165-1 DBMS_SYNC_REFRESHパッケージのサブプログラム

サブプログラム

説明

ABORT_REFRESHプロシージャ

リフレッシュを中断します。

ALTER_REFRESH_STATS_RETENTIONプロシージャ

日数で指定されたリフレッシュ履歴のリテンション値を変更します。

CAN_SYNCREF_TABLEプロシージャ

表およびその依存マテリアライズド・ビューの同期リフレッシュを処理できるかどうかをアドバイスします。

EXECUTE_REFRESHプロシージャ

同期リフレッシュ・グループの同期リフレッシュを実行します。

GET_ALL_GROUP_IDSファンクション

データベースのすべての同期リフレッシュ・グループのグループIDを戻します。

GET_GROUP_IDファンクション

表またはマテリアライズド・ビューのグループIDを戻します。

GET_GROUP_ID_LISTファンクション

オブジェクト(表またはマテリアライズド・ビュー)の指定したリスト内にある表のグループIDを戻します。

PREPARE_REFRESHプロシージャ

リフレッシュする同期リフレッシュ・グループを準備します。

PREPARE_STAGING_LOGプロシージャ

ステージング・ログのデータに関する統計情報を検証して収集します。

PURGE_REFRESH_STATSプロシージャ

タイムスタンプ・パラメータで指定した時間内に実行した同期リフレッシュのリフレッシュ履歴をパージします。

REGISTER_MVIEWS

同期リフレッシュ用にマテリアライズド・ビューを登録します。

REGISTER_PARTITION_OPERATIONプロシージャ

元表のパーティションに対するパーティション・メンテナンス操作を登録します。

UNREGISTER_MVIEWS

同期リフレッシュからマテリアライズド・ビューを登録解除します。

UNREGISTER_PARTITION_OPERATIONプロシージャ

元表のパーティションに対するパーティション・メンテナンス操作の登録を解除します。

ABORT_REFRESHプロシージャ

このプロシージャは、指定した同期リフレッシュ・グループに対してPREPARE_REFRESHまたはEXECUTE_REFRESHで行ったすべての変更を元に戻します。これは、予期しないエラーが発生した場合に、表およびマテリアライズド・ビューを使用可能で整合性のある状態に戻す際に役立ちます。

このプロシージャはオーバーロードされています。

構文

DBMS_SYNC_REFRESH.ABORT_REFRESH (
group_id      IN NUMBER);

DBMS_SYNC_REFRESH.ABORT_REFRESH (
group_id_list IN DBMS_UTILITY.NUMBER_ARRAY);

パラメータ

表165-2 ABORT_REFRESHプロシージャのパラメータ

パラメータ

説明

group_id

同期リフレッシュ・グループのグループID。

group_id_list

同期リフレッシュが中断される同期リフレッシュ・グループのグループIDの配列。

使用上の注意

PREPARE_REFRESHの後に呼び出された場合、このプロシージャは、これによって作成された外部表を削除し、同期リフレッシュ・グループ内の表およびマテリアライズド・ビューをロック解除します。

EXECUTE_REFRESHが失敗した後に呼び出された場合、このプロシージャは、正常に終了したパーティション交換をすべて元に戻すことによって、表の状態をEXECUTE_REFRESHの前に戻します。

このプロシージャは、PREPARE_REFRESHプロシージャによって同期リフレッシュ・グループ内の表にかけられたロックを解放します。これらのロックの説明は、「PREPARE_REFRESHプロシージャ」を参照してください。

ABORT_REFRESHは、PREPARE_REFRESH文またはEXECUTE_REFRESH文が失敗した場合のみ機能します。これらのコマンドが正常に実行した後では使用できません。その場合に使用すると、エラーがスローされます。

ALTER_REFRESH_STATS_RETENTIONプロシージャ

このプロシージャは、日数で指定されたリフレッシュ履歴のリテンション値を変更します。これは、PURGE_REFRESH_HISTORYと組み合せて使用されることを想定しています。これを実行する権限に加えて、SYSDBA権限も必要です。

構文

DBMS_SYNC_REFRESH.ALTER_REFRESH_STATS_RETENTION (
retention   IN NUMBER);

パラメータ

表165-3 ALTER_REFRESH_STATS_RETENTIONプロシージャのパラメータ

パラメータ

説明

retention

リテンション期間を日数で指定します。少なくともこの日数は、リフレッシュ履歴が保持されます。有効範囲は1から365,000です。

次の値を特定の目的に使用できます。

- -1: リフレッシュ履歴はPREPARE_REFRESHによってパージされません。

- 0: 古いリフレッシュ履歴は保存されません。PREPARE_REFRESHは、リフレッシュ履歴をすべて削除します。

- NULL: リフレッシュ履歴のリテンションをデフォルト値に変更します。

CAN_SYNCREF_TABLEプロシージャ

このプロシージャは、表およびその依存マテリアライズド・ビューの同期リフレッシュを処理できるかどうかをアドバイスします。これは、その分析の説明を示します。処理できない場合、その理由を調べて、可能な場合は適切なアクションを実行できます。

このプロシージャは、表のすべての依存マテリアライズド・ビューと、それらが同期リフレッシュ可能かどうかを表示します。元表の同期リフレッシュが不可能な場合でも、マテリアライズド・ビューの同期リフレッシュは可能な場合があります。

同期リフレッシュにおけるマテリアライズド・ビューの適格性ルールの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

CAN_SYNCREF_TABLEは、2つの方法で起動できます。1つは表を使用する方法、もう1つはVARRAYを作成する方法です。

構文

DBMS_SYNC_REFRESH.CAN_SYNCREF_TABLE (
schema_name    IN VARCHAR2,
table_name     IN VARCHAR2,
statement_id   IN VARCHAR2);

DBMS_SYNC_REFRESH.CAN_SYNCREF_TABLE (
schema_name    IN VARCHAR2,
table_name     IN VARCHAR2,
output_array   IN OUT Sys.CanSyncRefTypeArray);

CAN_SYNCREF_TABLEに渡す必要があるのは、statement_idとoutput_arrayのどちらか一方であることに注意してください。

パラメータ

表165-4 CAN_SYNCREF_TABLEプロシージャのパラメータ

パラメータ

説明

schema_name

元表のスキーマの名前。

table_name

元表の名前。

statement_id

ユーザーのスキーマ内にあるSYNCREF_TABLE表への出力の送信時に、CAN_SYNCREF_TABLEの起動に関する行を識別する文字列(VARCHAR2(30))。

output_array

同期リフレッシュにおける元表およびその依存マテリアライズド・ビューの適格性に関する情報を含む出力配列(CAN_SYNCREF_TABLEによって記録される)。

SYNCREF_TABLEの使用

CAN_SYNCREF_TABLEの出力は、表SYNCREF_TABLEに送信できます。SYNCREF_TABLEは、ユーザーが作成する必要があります。これは不要になったら削除できます。その構造は次のとおりです。

CREATE TABLE SYNCREF_TABLE (
statement_id    VARCHAR2(30),
schema_name     VARCHAR2(30),
table_name      VARCHAR2(30),
mv_schema_name  VARCHAR2(30),
mv_name         VARCHAR2(30),
eligible        VARCHAR2(1),
seq_num         NUMBER,
msg_number      NUMBER,
message         VARCHAR2(4000));

VARRAYの使用

CAN_SYNCREF_TABLEの出力はPL/SQLのVARRAYに保存できます。この配列の要素はCanSyncRefMessageタイプで、SYSスキーマで次のように事前定義されています。

TYPE CanSyncRefMessage IS OBJECT (
schema_name     VARCHAR2(30),
table_name      VARCHAR2(30),
mv_schema_name  VARCHAR2(30),
mv_name         VARCHAR2(30),
eligible        VARCHAR2(1),
seq_num         NUMBER,
msg_number      NUMBER,
message         VARCHAR2(4000));

配列タイプCanSyncRefArrayTypeは、CanSyncRefMessageオブジェクトのVARRAYで、SYSスキーマで次のように事前定義されています。

TYPE CanSyncRefArrayType AS VARRAY(256) OF CanSyncRefMessage;

各CanSyncRefMessageレコードは、同期リフレッシュにおける元表またはマテリアライズド・ビューの適格性に関するメッセージを提供します。フィールドのセマンティクスは、SYNCREF_TABLEの対応するフィールドと同じです。ただし、SYNCREF_TABLEには、CanSyncRefMessageにはないstatement_idフィールドがあります。これは、CAN_SYNCREF_TABLEがVARRAYパラメータを指定して呼び出されたときにstatement_idが提供されない(不要であるため)からです。

EXECUTE_REFRESHプロシージャ

このプロシージャは、DBMS_SYNC_REFRESH.PREPARE_REFRESHによって準備された同期リフレッシュ・グループに対して同期リフレッシュを実行します。これらのグループは、そのグループIDで識別されます。このプロシージャは、同期リフレッシュ用に登録されたマテリアライズド・ビューのみでリフレッシュを実行します。その他のマテリアライズド・ビューは、このプロシージャの終了後に失効します。

2つの同期リフレッシュ操作、PREPARE_REFRESHとEXECUTE_REFRESHのステータスを監視する方法および発生したエラーをカタログ・ビューの情報を使用してトラブルシューティングする方法は、『Oracle Databaseデータ・ウェアハウス・ガイド』の同期リフレッシュ操作のトラブルシューティングに関する項を参照してください。

このプロシージャはオーバーロードされています。

構文

DBMS_SYNC_REFRESH.EXECUTE_REFRESH (
group_id   IN NUMBER);

DBMS_SYNC_REFRESH.EXECUTE_REFRESH (
group_id_list  IN DBMS_UTILITY.NUMBER_ARRAY);

パラメータ

表165-5 EXECUTE_REFRESHプロシージャのパラメータ

パラメータ

説明

group_id

同期リフレッシュ・グループのグループID。

group_id_list

同期リフレッシュが実行される同期リフレッシュ・グループのグループIDの配列。

使用上の注意

このプロシージャは、PREPARE_REFRESHプロシージャによって同期リフレッシュ・グループ内の表にかけられたロックも解放します。これらのロックの説明は、「PREPARE_REFRESHプロシージャ」を、 DBMS_SYNC_REFRESH.EXECUTE_REFRESH実行後のリフレッシュ操作のステータスの詳細は、『Oracle Databaseリファレンス』をそれぞれ参照してください。

GET_ALL_GROUP_IDSファンクション

このファンクションは、データベース内のすべての同期リフレッシュ・グループのグループIDを戻します。

構文

FUNCTION DBMS_SYNC_REFRESH.GET_ALL_GROUP_IDS
RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表165-6 GET_ALL_GROUP_IDSファンクションのパラメータ

パラメータ

説明

get_all_group_ids

データベース内のすべての同期リフレッシュ・グループのグループIDを戻します。

GET_GROUP_IDファンクション

このファンクションは、マテリアライズド・ビューのグループIDを戻します。グループIDは、表が属している同期リフレッシュ・グループを識別します。同期リフレッシュ・グループとは、整合性と正確性を確保するために一緒にリフレッシュする必要がある、関連表とその依存マテリアライズド・ビューのグループのことです。

構文

DBMS_SYNC_REFRESH.GET_GROUP_ID (
object_name_list   IN VARCHAR2)
RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表165-7 GET_GROUP_IDファンクションのパラメータ

パラメータ

説明

object_name_list

マテリアライズド・ビューの名前。この名前はスキーマで修飾できます。

GET_GROUP_ID_LISTファンクション

このファンクションは、オブジェクト(マテリアライズド・ビュー)の指定したリストにある表のグループIDを戻します。

構文

DBMS_SYNC_REFRESH.GET_GROUP_ID_LIST (
object_name_list   IN VARCHAR2)
RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表165-8 GET_GROUP_ID_LISTファンクションのパラメータ

パラメータ

説明

object_name_list

オブジェクト名(マテリアライズド・ビュー)のカンマ区切りリスト。それぞれの名前はスキーマで修飾できます。

PREPARE_REFRESHプロシージャ

このプロシージャは、入力のグループIDにより識別された同期リフレッシュ・グループをリフレッシュするための準備をします。同期リフレッシュ・グループは、一連の関連表およびそれらの元表に依存するすべてのマテリアライズド・ビューから構成されます。このプロシージャは、同期リフレッシュ用に登録済の依存マテリアライズド・ビューのみをリフレッシュのために準備することに注意してください。

2つの同期リフレッシュ操作、PREPARE_REFRESHとEXECUTE_REFRESHのステータスを監視する方法および発生したエラーをカタログ・ビューの情報を使用してトラブルシューティングする方法は、『Oracle Databaseデータ・ウェアハウス・ガイド』の同期リフレッシュ操作のトラブルシューティングに関する項を参照してください。

構文

DBMS_SYNC_REFRESH.PREPARE_REFRESH (
group_id   IN NUMBER)
RETURN DBMS_UTILITY.NUMBER_ARRAY;

パラメータ

表165-9 PREPARE_REFRESHプロシージャのパラメータ

パラメータ

説明

group_id

同期リフレッシュが準備される同期リフレッシュ・グループのグループID。

使用上の注意

このプロシージャは、同期リフレッシュ操作の3つのフェーズを計画し、準備フェーズ自体に関連付けられた手順を実行します。これらの手順には、ファクト表とマテリアライズド・ビューの変更された各パーティションの識別、および変更結果を反映した新しい値の計算が含まれます。パーティションの新しい値は、EXECUTE_REFRESHの実行時に対応するパーティションに交換される外側の表と呼ばれる表に格納されます。

このプロシージャを実行する前に、ユーザーは、グループのすべての表に対してPREPARE_STAGING_LOGを実行する必要があります。これは、変更がないステージング・ログに対しても必須です。ユーザーは、REGISTER_PARTITION_OPERATIONを使用して、グループの表に対するパーティション操作を登録する必要もあります。

このプロシージャの副作用の1つは、準備される表が次のようにロックされてしまうことです。すなわち、表のステージング・ログは、DMLの発生を防ぐためにロックされます。その結果、パーティション操作の登録が無効になります。これらのロックは、EXECUTE_REFRESH文が発行されるまで有効です。または、ABORT_REFRESH操作を発行してこれらのロックを解除することもできます。このプロシージャの別の副作用は、以前の同期リフレッシュ操作のカタログ・レコードをパージすることです。カタログ・レコードは、リテンション期間より古いときにパージされます。

リフレッシュ準備ジョブの並列性の程度は、ALTER SESSION文によって制御可能なセッション・パラメータから継承されます。

表のグループIDは、GET_GROUP_ID(table_name)を使用して検出できます。表のリストのグループIDは、GET_GROUP_ID_LIST(table_name_list)を使用して検出できます。表のすべてのリストのグループIDは、GET_ALL_GROUP_IDSを使用して取得できます。

デフォルトの同期リフレッシュでは、同期リフレッシュ・グループの表およびマテリアライズド・ビューに属しているグローバル索引は保持されません。保持するには、イベント31904、レベル64を設定してからPREPARE_REFRESHを実行します。これにより、PREPARE_REFRESHによって生成されるパーティション交換DDL文にUPDATE INDEXES句が追加されます。この句をEXECUTE_REFRESHで実行すると、グローバル索引が保持されます。

PREPARE_STAGING_LOGプロシージャ

このプロシージャは、元表のステージング・ログのデータに関する統計情報を収集し、ログのデータを検証します。これは、データの厳格なチェックが行われる強制モードからチェックが行われない信頼モードまで、いくつかの異なるモードで実行できます。このプロシージャは、ステージング・ログのロード後、およびPREPARE_REFRESHの実行前に実行する必要があります。

強制モード(デフォルト)では、このプロシージャは、削除または更新される行の列の欠落値を入力します。ステージング・ログ・ルールの違反が見つかった場合、エラーがスローされます。ビューUSER_SR_STLOG_EXCEPTIONSを問い合せることで、例外の詳細を取得できます。

ステージング・ログ・キーの概念については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

強制モードでは、ステージング・ログの行の削除または更新が、次のように処理されます。

- キーを使用して元表に行があるかどうかを確認します。

- 削除される行では(DMLTYPE$$が'D')、このキーを持つ行が元表にあることを確認します。NULLではないキー以外の値がステージング・ログに提供された場合、この値が元表の対応する列と一致していることを確認します。そうでない場合は、例外が例外表に記録されます。キー以外の列の値が欠落している場合、元表の行からその値が入力されます。

- 更新される行では(DMLTYPE$$が'UO'または'UN')、このキーを持つ行が元表に存在することを確認します。古い値の行では(DMLTYPE$$が'UO')、削除される行と同様のチェックおよび処理が実行されます。新しい値の行では(DMLTYPE$$が'UN')、少なくとも1つの列の値がその古い値とは異なることをチェックします。そうでない場合は、例外が記録されます。

- 新しい値の行では(DMLTYPE$$が'UN')、列のNULL値は、列の古い値と同じ値であると解釈されます。ただし、古い値がNULL以外で新しい値がNULLの場合は、例外的に列の新しい値がNULLであると解釈されます。ユーザーは、NULLに更新される列の古い値を提供する必要があります。

デフォルトの強制モードでは、削除操作または更新操作で各キーが1回のみ指定されていることが確認されます。したがって、ユーザーは、変更を統合する際に、同じ行の削除-挿入を 'UO'行と'UN'行を使用して更新操作に統合し、複数の更新を1つの更新に統合し、同じ行の挿入-更新-削除のようなNull変更がステージング・ログに表示されないようにする必要があります。

強制モードで実行されるチェックには時間がかかる場合があります。データの整合性を確信できる場合は、低いレベルのチェックを選択できます。次のいずれかを選択できます。

- DBMS_SYNC_REFRESH.INSERT_TRUSTEDのpsl_modeを選択して、すべての挿入行(DMLTYPE$$が'I')を信頼する

- DBMS_SYNC_REFRESH.DELETE_TRUSTEDのpsl_modeを選択して、すべての削除行(DMLTYPE$$が'D')を信頼する

- DBMS_SYNC_REFRESH.UPDATE_TRUSTEDのpsl_modeを選択して、すべての更新行(DMLTYPE$$が'UO'または'UN')を信頼する

- DBMS_SYNC_REFRESH.TRUSTEDのpsl_modeを選択して、DMLの3つのタイプすべてを信頼する

さらに、psl_modeを前述のフラグのビットマスクとして指定できます。たとえば、DBMS_SYNC_REFRESH.INSERT_TRUSTED + DBMS_SYNC_REFRESH_DELETE_TRUSTEDは、挿入と削除を信頼して処理しますが、更新は信頼して処理しません。

構文

DBMS_SYNC_REFRESH.PREPARE_STAGING_LOG (
schema_name      IN VARCHAR2,
base_table_name  IN VARCHAR2,
psl_mode         IN NUMBER DEFAULT
DBMS_SYNC_REFRESH.ENFORCED);

パラメータ

表165-10 PREPARE_STAGING_LOGプロシージャのパラメータ

パラメータ

説明

schema_name

元表のスキーマの名前。

base_table_name

元表の名前。

psl_mode

ステージング・ログの準備を実行する必要があるモード。有効な値は、次のとおりです。

- DBMS_SYNC_REFRESH.ENFORCED(デフォルト)

- DBMS_SYNC_REFRESH.INSERT_TRUSTED

- DBMS_SYNC_REFRESH.DELETE_TRUSTED

- DBMS_SYNC_REFRESH.UPDATE_TRUSTED

- DBMS_SYNC_REFRESH.TRUSTED

PURGE_REFRESH_STATSプロシージャ

このプロシージャは、BEFORE_TIMESTAMPパラメータで指定した値の前に実行した同期リフレッシュのリフレッシュ履歴をパージします。このプロシージャでは、これを実行する権限に加えてSYSDBA権限が必要です。

構文

DBMS_SYNC_REFRESH.PURGE_REFRESH_STATS (
before_timestamp IN TIMESTAMP WITH TIME ZONE);

パラメータ

表165-11 PURGE_REFRESH_STATSプロシージャのパラメータ

パラメータ

説明

before_timestamp

このタイムスタンプの前に保存された同期リフレッシュのレコードがパージされます。NULLの場合、自動パージによるパージ・ポリシーを使用します。自動パージによって、(現在の時刻-リフレッシュ-履歴リテンション)よりも古いすべての履歴が削除されます。リフレッシュ履歴のリテンション値は、ALTER_REFRESH_STATS_RETENTIONを使用して変更できます。デフォルトは31日です。

REGISTER_MVIEWS

このプロシージャは、同期リフレッシュ用にマテリアライズド・ビューのリストを登録します。これは、リスト内のマテリアライズド・ビューを個別にチェックして、それぞれが属する同期リフレッシュ・グループに配置します。同期リフレッシュ・グループは、関連する表とその上に定義されたマテリアライズド・ビューのセットです。2つの表の間に参照制約が存在する場合、その2つの表は関連するとみなされます。

同期リフレッシュ用のマテリアライズド・ビューの適格性ルールについては、『Oracle Databaseデータ・ウェアハウス・ガイド』で詳しく説明しています。主要な要件として、マテリアライズド・ビューはパーティション化されていて、そのパーティション・キーがファクト表のパーティション・キーから導出可能である必要があります。同期リフレッシュは外部キーと主キーのリレーションシップを信頼して様々なリフレッシュ最適化を行うため、マテリアライズド・ビューの定義ではUSING TRUSTED CONSTRAINTS句を指定する必要があります。マテリアライズド・ビューのリフレッシュ・ポリシーはON DEMANDとして指定する必要があります。

表に関連付けられているマテリアライズド・ビューの一部のみを登録し、その他を未登録にするオプションもあります。オラクル社ではこれをお薦めしておりません。このオプションを使用する場合、ユーザーはPCTを使用して未登録のビューのメンテナンスを行うか、リフレッシュ・メソッドを完了する必要があります。

マテリアライズド・ビュー・リスト(mv_list)の各マテリアライズド・ビューのベース表ごとに、ステージング表を作成しておく必要があります。そうしない場合、エラーがスローされます。

マテリアライズド・ビューのなかに同期リフレッシュに適格でないものがある場合、エラーがスローされて、マテリアライズド・ビュー・リストのすべてのマテリアライズド・ビューの登録が失敗します。

構文

DBMS_SYNC_REFRESH.REGISTER_MVIEWS (
mv_list   IN VARCHAR2);

パラメータ

表165-12 REGISTER_MVIEWSプロシージャのパラメータ

パラメータ

説明

mv_list

登録するマテリアライズド・ビューのカンマ区切りリスト。これらの名前はオプションとしてスキーマで修飾されます。

REGISTER_PARTITION_OPERATIONプロシージャ

このプロシージャは、元表のパーティションのパーティション・メンテナンス操作(PMOP)を登録します。

構文

DBMS_SYNC_REFRESH.REGISTER_PARTITION_OPERATION (
partition_op                IN VARCHAR2,
schema_name                 IN VARCHAR2,
base_table_name             IN VARCHAR2,
partition_name              IN VARCHAR2,
outside_partn_table_schema  IN VARCHAR2,
outside_partn_table_name    IN VARCHAR2);

パラメータ

表165-13 REGISTER_PARTITION_OPERATIONプロシージャのパラメータ

パラメータ

説明

partition_op

パーティション操作(DROP、EXCHANGEまたはTRUNCATE)の名前。

schema_name

元表のスキーマの名前。

base_table_name

元表の名前。

partition_name

変更するパーティションの名前。外部パーティション表と交換されるか、削除または切捨ての対象になります。

outside_partn_table_schema

外部パーティション表のスキーマの名前(EXCHANGEの場合にのみ必要)。

outside_partn_table_name

外部パーティション表の名前(EXCHANGEの場合にのみ必要)。

使用上の注意

パーティションに対して指定される3種類の変更操作は、DROP、TRUNCATEおよびEXCHANGEです。

DROPが指定された場合、パーティションはEXECUTE_REFRESHのときに元表から削除されます。TRUNCATEが指定された場合、パーティションのデータは削除されますが、パーティション自体は削除されません。これらの操作では、ステージング・ログで行を個別に指定するよりも効率的にパーティションのすべての行の削除を指定できます。

EXCHANGEが指定された場合、外部表の内容がEXECUTE_REFRESHで指定したパーティションの内容と交換されます。これにより、元表に変更を適用する別の方法(ステージング・ログにデータを移入する以外)が提供されます。

UNREGISTER_MVIEWS

このプロシージャは、マテリアライズド・ビューのリストを同期リフレッシュから登録解除します。マテリアライズド・ビューが登録解除されると、ユーザーはcomplete、PCT、refreshなどの標準的なリフレッシュ・メソッドを使用して、そのマテリアライズド・ビューのメンテナンスを行うことができます。

構文

DBMS_SYNC_REFRESH.UNREGISTER_MVIEWS (
mv_list   IN VARCHAR20;

パラメータ

表165-14 UNREGISTER_MVIEWSパラメータ

パラメータ

説明

mv_list

登録解除するマテリアライズド・ビューのカンマ区切りリスト。これらの名前はオプションとしてスキーマで修飾されます。

UNREGISTER_PARTITION_OPERATIONプロシージャ

このプロシージャは、REGISTER_PARTITION_OPERATIONで以前に元表に登録されたパーティション・メンテナンス操作(PMOP)を登録解除します。パーティションで指定可能な3種類の変更操作は、DROP、TRUNCATEおよびEXCHANGEです。

構文

DBMS_SYNC_REFRESH.UNREGISTER_PARTITION_OPERATION (
partition_op     IN VARCHAR2,
schema_name      IN VARCHAR2,
base_table_name  IN VARCHAR2,
partition_name   IN VARCHAR2);

パラメータ

表165-15 UNREGISTER_PARTITION_OPERATIONプロシージャのパラメータ

パラメータ

説明

partition_op

パーティション操作(DROP、EXCHANGEまたはTRUNCATE)の名前。

schema_name

元表のスキーマの名前。

base_table_name

元表の名前。

partition_name

変更するパーティションの名前。外部パーティション表と交換されるか、削除または切捨ての対象になります。

166 DBMS_TDB

DBMS_TDBパッケージは、RMANのCONVERT DATABASEコマンドを使用してプラットフォーム間でデータベースを転送できるかどうかをレポートします。このパッケージは、現在のホスト・プラットフォーム上のデータベースのエンディアン形式が転送先プラットフォームと同じであること、および現在のデータベースの状態によってデータベースの転送が妨げられないことを検証します。

関連項目:
CONVERT DATABASEを使用したデータベース転送については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_TDBの使用方法

- 概要

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_TDBサブプログラムの要約

DBMS_TDBの使用方法

この項では、DBMS_TDBの使用に関連する項目について説明します。

- 概要

- 定数

- ビュー

- 使用上の注意

概要

多くの場合、Oracleは、同じエンディアン形式のプラットフォーム間のデータベース転送をサポートしています。ただし、エンディアン形式が同じ場合でも、データベースをプラットフォームから別のプラットフォームに移動するには変換処理が必要です。また、データベース転送のプロセスでは、転送するデータベースを読取り専用モードでオープンするなどの事前条件を満たす必要もあります。

DBMS_TDBパッケージは、次の2つの役割を果たします。

- 指定したソース・プラットフォームから指定したターゲット・プラットフォームへのデータベース転送がサポートされていることの確認。

- 転送するデータベースが転送用に正しく準備されているかの確認。正しく準備されていない場合は、データベース転送を妨げている条件を識別します。

実際の変換は、Recovery ManagerのCONVERT DATABASEコマンドを使用して実行されます。データベース転送の要件、プラットフォーム間の転送に必要なデータベース変換のプロセス、および変換プロセスにおけるDBMS_TDBサブプログラムの使用例の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

セキュリティ・モデル

このパッケージを使用するには、DBA権限が必要です。

定数

DBMS_TDBパッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります(DBMS_TDB.SKIP_NONEなど)。

DBMS_TDBパッケージでは、表166-1に示す定数が使用されます。

表166-1 DBMS_TDBの定数

名前

タイプ

値

説明

SKIP_NONE

NUMBER

0

データベースの転送の準備ができているかどうかを確認する際に、すべてのファイルをチェックします。

SKIP_OFFLINE

NUMBER

2

データベースの転送の準備ができているかどうかを確認する際に、オフラインの表領域内のファイルをスキップします。

SKIP_READONLY

NUMBER

3

データベースの転送の準備ができているかどうかを確認する際に、読取り専用の表領域内のファイルをスキップします。

ビュー

DBMS_TDBパッケージは、次のビューを使用します。このビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

- V$DB_TRANSPORTABLE_PLATFORM: データベース転送をサポートするソース・プラットフォームとターゲット・プラットフォームの組合せを指定します。

使用上の注意

- このパッケージのサブプログラムは、目的のプラットフォーム間のデータベース変換が可能かどうかの確認、およびデータベースが変換可能かどうかの確認の両方で有効です。変換プロセスで使用するこれらのサブプログラムの様々な使用方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

- このパッケージのサブプログラムは、単純にTRUEまたはFALSEを結果として戻し、データベース転送が可能かどうかを示します。転送できない原因を示すメッセージを受け取るには、SERVEROUTPUT ONを指定してサブプログラムを使用します。

DBMS_TDBサブプログラムの要約

表166-2 DBMS_TDBパッケージのサブプログラム

サブプログラム

説明

CHECK_DBファンクション

データベースをターゲット・プラットフォームに転送できるかどうかを確認します。

CHECK_EXTERNALファンクション

データベースに外部表、ディレクトリまたはBFILEが含まれているかどうかを確認します。

CHECK_DBファンクション

このファンクションは、データベースをターゲット・プラットフォームに転送できるかどうかを確認します。指定したソース・プラットフォームおよび宛先プラットフォームに対して転送が完全にサポートされているかどうか、またデータベースが現在転送に適切な状態にあるかどうかがテストされます。

データベースの読取り専用またはオフラインの部分を転送しない場合、これらをスキップするかどうかを指定できます。

このファンクションはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

DBMS_TDB.CHECK_DB (
target_platform_name   IN VARCHAR2,
skip_option            IN  NUMBER)
RETURN BOOLEAN;

DBMS_TDB.CHECK_DB (
target_platform_name   IN VARCHAR2)
RETURN BOOLEAN;

DBMS_TDB.CHECK_DB
RETURN BOOLEAN;

パラメータ

表166-3 CHECK_DBファンクションのパラメータ

パラメータ

説明

target_platform_name

接続先プラットフォームの名前。V$DB_TRANSPORTABLE_PLATFORMに表示される名前と同じ名前にします。

skip_option

データベース転送が可能かどうかを確認する際に、スキップするデータベースの部分がある場合は、そのスキップする部分を指定します。このプロパティに指定できる値は、表166-1「DBMS_TDBの定数」を参照してください。

戻り値

データベースをターゲット・プラットフォームに転送できない場合、またはデータベースが転送可能な状態でない場合は、FALSEを戻します。データベースが転送可能な状態の場合は、TRUEを戻します。

使用上の注意

- SERVEROUTPUTがONの場合、データベースが転送できない原因とその問題を修正する方法が出力に含まれます。考えられる原因および修正の詳細は、表166-4「CHECK_DBファンクションでFALSEが戻される原因」を参照してください。

表166-4 CHECK_DBファンクションでFALSEが戻される原因

原因

処置

ターゲット・プラットフォーム名が認識されません。

認識可能なプラットフォーム名をV$DB_TRANSPORTABLE_PLATFORM内で検索します。

ターゲット・プラットフォームのエンディアン形式が異なります。

変換はサポートされていません。

データベースが読取り専用でオープンしていません。

データベースを読取り専用モードでオープンし、再試行します。

データベース内にアクティブまたはインダウトなトランザクションが存在します。

データベースを読取り/書込みモードでオープンします。アクティブなトランザクションがロールバックされた後に、データベースを読取り専用モードでオープンし、操作を再試行します。

これは、ユーザーがデータベースをフラッシュバックし、読取り専用モードで開いた場合に発生します。データベースを読取り/書込みモードでオープンすると、アクティブなトランザクションはロールバックされます。

遅延トランザクション・ロールバックを実行する必要があります。

データベースを読取り/書込みモードでオープンし、必要な表領域をオンラインにします。遅延トランザクションのロールバックが完了した後に、データベースを読取り専用モードでオープンし、操作を再試行します。

データベースの互換性バージョンが10.0.0より低くなっています。

COMPATIBLE初期化パラメータを10.0.0以上に変更し、データベースを読取り専用モードでオープンして操作を再試行します。

互換性バージョンが10.0.0以上の読取り/書込みモードでオープンされていない表領域があります。

COMPATIBLE初期化パラメータを10.0.0以上に変更し、影響を受ける表領域を読取り/書込みモードでオープンします。データベースを停止し、読取り専用モードでオープンして操作を再試行します。

例

次の例では、読取り/書込みモードでオープンしているデータベースでのCHECK_DBの使用方法を示します。

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
db_ready BOOLEAN;
BEGIN
db_ready := DBMS_TDB.CHECK_DB('Microsoft Windows IA (32-bit)');
END;
/

Database is not open READ ONLY. Please open database READ ONLY and retry.

PL/SQL procedure successfully completed.

CHECK_EXTERNALファンクション

このファンクションは、データベースに外部表、ディレクトリまたはBFILEが含まれているかどうかを確認します。

構文

DBMS_TDB.CHECK_EXTERNAL
RETURN BOOLEAN;

戻り値

データベースに外部表、ディレクトリまたはBFILEが含まれている場合は、TRUEを戻します。それ以外の場合はFALSEを戻します。

使用上の注意

- SERVEROUTPUTがONの場合、データベース内の外部表、ディレクトリまたはBFILEの名前が出力されます。

- データベースは読取り/書込みモードでオープンしている必要があります。

例

次の例では、外部表、ディレクトリまたはBFILEを含むデータベースでのCHECK_EXTERNALの使用方法を示します。

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
external BOOLEAN;
BEGIN
external := DBMS_TDB.CHECK_EXTERNAL;
END;
/
The following external tables exist in the database:
SH.SALES_TRANSACTIONS_EXT
The following directories exist in the database:
SYS.MEDIA_DIR, SYS.DATA_FILE_DIR, SYS.LOG_FILE_DIR, SYS.DATA_PUMP_DIR
The following BFILEs exist in the database:
PM.PRINT_MEDIA

PL/SQL procedure successfully completed.

167 DBMS_TRACE

DBMS_TRACEパッケージには、PL/SQLファンクション、プロシージャ、例外をトレースするインタフェースが含まれます。

この章では、次の項目について説明します。

- DBMS_TRACEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 制限事項

- 使用上の注意

- DBMS_TRACEサブプログラムの要約

DBMS_TRACEの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 制限事項

- 使用上の注意

概要

DBMS_TRACEは、セッションでPL/SQLトレースを開始および停止するサブプログラムを提供します。トレース・データはプログラムの実行時に収集され、データベース表に書き込まれます。

一般的なセッションには、次の処理が含まれます。

- セッションでPL/SQLトレースを開始します(DBMS_TRACE.SET_PLSQL_TRACE)。

- トレースするアプリケーションを実行します。

- セッションでPL/SQLトレースを停止します(DBMS_TRACE.CLEAR_PLSQL_TRACE)。

セキュリティ・モデル

このパッケージは、SYSの下に作成する必要があります。

定数

DBMS_TRACEパッケージでは、表167-1「DBMS_TRACEのイベント定数」に示す定数が使用されます。

表167-1 DBMS_TRACEのイベント定数

名前

タイプ

値

説明

TRACE_ALL_CALLS

INTEGER

1

コールまたは戻り値をトレースします。

TRACE_ENABLED_CALLS

INTEGER

2

TRACE_ALL_EXCEPTIONS

INTEGER

4

例外をトレースします。

TRACE_ENABLED_EXCEPTIONS

INTEGER

8

例外およびハンドラをトレースします。

TRACE_LIMIT

INTEGER

16

最新の数レコードのみを保存します。これにより、大量の無関係な情報でデータベースをいっぱいにすることなく、問題領域までトレースできます。イベント10940を設定した場合の制限は、1023*(イベント10940の値)です。この制限は、"TRACE_LIMIT"フラグを使用して上書きできます。

TRACE_ALL_SQL

INTEGER

32

SQL文をトレースします。

TRACE_ENABLED_SQL

INTEGER

64

SQL文をPL/SQLレベルでトレースします。これによりSQLトレースが起動されることはありません。

TRACE_ALL_LINES

INTEGER

128

各行をトレースします。

TRACE_ENABLED_LINES

INTEGER

256

TRACE_PAUSE

INTEGER

4096

トレースを一時停止します。

TRACE_RESUME

INTEGER

8192

トレースを再開します。

TRACE_STOP

INTEGER

16384

トレースを停止します。

NO_TRACE_ADMINISTRATIVE

INTEGER

32768

次のような管理イベントのトレースを抑制します。

- PL/SQLトレースツールが起動した

- トレース・フラグが変更された

- PL/SQL仮想マシンが起動した

- PL/SQL仮想マシンが停止した

NO_TRACE_HANDLED_EXCEPTIONS

INTEGER

65536

処理済の例外のトレースを抑制します。

表167-2 DBMS_TRACEのバージョン定数

名前

タイプ

値

説明

TRACE_MINOR_VERSION

INTEGER

0

TRACE_MAJOR_VERSION

INTEGER

1

これらの定数についてはすべて記号形式(定数名)を使用することをお薦めします。

制限事項

PL/SQLトレースは、共有サーバー環境では使用できません。

使用上の注意

- データ量の制御

- DBMS_TRACE出力を収集するデータベース表の作成

- トレース・データの収集

- 収集されたデータ

- トレース管理

データ量の制御

大規模なアプリケーションをプロファイルすると、データ量が膨大になる可能性があります。トレース・データの収集に関する特定のプログラム・ユニットを使用可能にして、収集するデータ量を制御できます。

プログラム・ユニットは、コンパイルとデバッグを行って使用可能にできます。次のいずれかの方法で行います。

alter session set plsql_debug=true;
create or replace ... /* create the library units - debug information will be generated */

または

/* recompile specific library unit with debug option */
alter [PROCEDURE | FUNCTION | PACKAGE BODY]  <libunit-name> compile debug;

注意:
2番目の方法は、無名ブロックに対しては使用できません。

SET_PLSQL_TRACEプロシージャのTRACE_LEVELパラメータにTRACE_LIMITを指定することにより、最新の8,192レコード(概算)のみを保持して、データベースで使用する記憶域量を制限できます。

DBMS_TRACE出力を収集するデータベース表の作成

DBMS_TRACEパッケージで出力を書き込むためのデータベース表を作成する必要があります。作成しないと、データが収集されません。このような表を作成するには、TRACETAB.SQLスクリプトを実行してください。このスクリプトで作成した表の所有者は、SYSです。

トレース・データの収集

トレース可能なPL/SQL機能は、DBMSPBT.SQLスクリプトに記述されています。主なトレース機能は次のとおりです。

- コールのトレース

- 例外のトレース

- SQLのトレース

- 行のトレース

DBMS_TRACEの追加機能として、トレースの解析と再開および出力の制限もできます。

コールのトレース

使用可能なコールのトレースには、次の2つのレベルがあります。

- レベル1: すべてのコールをトレースします。これは、定数TRACE_ALL_CALLSに対応します。

- レベル2: 使用可能なプログラム・ユニットのみ、コールをトレースします。これは、定数TRACE_ENABLED_CALLSに対応します。

リモート・プロシージャ・コール(RPC)については、使用可能かどうかを検出できないため、RPCではレベル1でのみトレースできます。

例外のトレース

使用可能な例外のトレースには、次の2つのレベルがあります。

- レベル1: すべての例外をトレースします。これは、定数TRACE_ALL_EXCEPTIONSに対応します。

- レベル2: 使用可能なプログラム・ユニットのみ、発生した例外をトレースします。これは、定数TRACE_ENABLED_EXCEPTIONSに対応します。

SQLのトレース

使用可能なSQLのトレースには、次の2つのレベルがあります。

- レベル1: すべてのSQLをトレースします。これは、定数TRACE_ALL_SQLに対応します。

- レベル2: 使用可能なプログラム・ユニットでのみ、SQLをトレースします。これは、定数TRACE_ENABLED_SQLに対応します。

行のトレース

使用可能な行のトレースには、次の2つのレベルがあります。

- レベル1: すべての行をトレースします。これは、定数TRACE_ALL_LINESに対応します。

- レベル2: 使用可能なプログラム・ユニットでのみ、行をトレースします。これは、定数TRACE_ENABLED_LINESに対応します。

行のトレース時には、行番号が変わるたびにレコードがデータベースに追加されます。プロシージャのコールおよびその戻り値によって行番号が変わる場合も、トレースの対象に含まれます。

注意:
すべてのタイプのトレースでは、レベル1がレベル2を上書きします。たとえば、レベル1とレベル2の両方が使用可能な場合は、レベル1が優先されます。

収集されたデータ

使用可能なプログラム・ユニットについてのみトレースが要求されていて、現行のプログラム・ユニットが使用可能ではない場合、トレース・データは書き込まれません。

コールをトレースする場合は、コールと戻り値の両方がトレースされます。トレースが使用可能であるかどうかのチェックは、コールされるルーチンまたはコールするルーチンのいずれか一方が使用可能な場合に、トレース実施と判断されます。

コールのトレースでは、必ずコール元とコール先の両方のプログラム・ユニットのタイプ、プログラム・ユニット名、および行番号が出力されます。これにより、コール元のスタックの深さが出力されます。コール元が使用可能な場合は、コール元の名前も出力されます。コールされる側が使用可能な場合は、コールされる側の名前も出力されます。

例外トレースでは、行番号が書き込まれます。例外が発生すると、その例外がユーザー定義か事前定義のいずれかであるかが示されます。事前定義の例外の場合は例外番号も出力されます。例外が発生した場所とそのハンドラの両方がトレースされます。トレースが使用可能であるかどうかのチェックは、例外が発生した場所と例外がハンドルされた場所で個別に行われます。NO_TRACE_HANDLED_EXCEPTIONSを有効にすると、データ収集の対象が未処理の例外のみに制限されます。

DBMS_TRACE.SET_PLSQL_TRACEおよびDBMS_TRACE.CLEAR_PLSQL_TRACEへのコールによって、データベースに特別なトレース・レコードが配置されます。したがって、トレース設定が変更された時点を常に確認できます。

トレース管理

収集した項目を確認するのみではなく、トレース処理を一時停止したり、再開することもできます。トレースが一時停止されてから再開されるまでの間、情報は収集されません。一時停止および再開には、それぞれ定数TRACE_PAUSEおよびTRACE_RESUMEを使用します。トレースが一時停止または再開したことを示すためにトレース・レコードが生成されます。

定数TRACE_LIMITを使用すると、最新の8,192トレース・イベントのみを保持できます。これにより、データベースをいっぱいにすることなくトレースを繰り返すことができます。トレースの停止時には、最新の8,192レコードが保存されています。この制限はトレース・レコードごとにチェックされないため概算です。少なくとも要求されたトレース・レコードの数は生成され、1,000レコードまでは追加生成できます。少なくとも要求されたトレース・レコードの数は生成され、1,000レコードまでは追加生成できます。8,192というレコード数の制限は変更できます。イベント10940をレベルnに設定すると、レコード制限は1024 * nに変更されます。

NO_TRACE_ADMINISTRATIVEを有効にすると、PL/SQLトレース・ツールが起動した、トレース・フラグが変更された、PL/SQL仮想マシンが起動した、PL/SQL仮想マシンが停止したなどの管理イベント・レコードが生成されなくなります。

DBMS_TRACEサブプログラムの要約

表167-3 DBMS_TRACEパッケージのサブプログラム

サブプログラム

説明

CLEAR_PLSQL_TRACEプロシージャ

セッションでのトレース・データのダンプを停止します。

GET_PLSQL_TRACE_LEVELファンクション

トレース・レベルを取得します。

PLSQL_TRACE_VERSIONプロシージャ

トレース・パッケージのバージョン番号を取得します。

SET_PLSQL_TRACEプロシージャ

現行のセッションでトレースを開始します。

CLEAR_PLSQL_TRACEプロシージャ

このプロシージャは、トレース・データ収集を使用禁止にします。

構文

DBMS_TRACE.CLEAR_PLSQL_TRACE;

GET_PLSQL_TRACE_LEVELファンクション

このプロシージャは、表167-1「DBMS_TRACEのイベント定数」に示されている1つ以上の定数の和として現行トレース・レベルを戻します。

構文

DBMS_TRACE.GET_PLSQL_TRACE_LEVEL
RETURN BINARY_INTEGER;

PLSQL_TRACE_VERSIONプロシージャ

このプロシージャは、トレース・パッケージのバージョン番号を取得します。DBMS_TRACEパッケージのバージョン番号とリリース番号を戻します。

構文

DBMS_TRACE.PLSQL_TRACE_VERSION (
major OUT BINARY_INTEGER,
minor OUT BINARY_INTEGER);

パラメータ

表167-4 PLSQL_TRACE_VERSIONプロシージャのパラメータ

パラメータ

説明

major

DBMS_TRACEのバージョン番号。

minor

DBMS_TRACEのリリース番号。

SET_PLSQL_TRACEプロシージャ

このプロシージャは、PL/SQLのトレース・データ収集を可能にします。

構文

DBMS_TRACE.SET_PLSQL_TRACE (
trace_level INTEGER);

パラメータ

表167-5 SET_PLSQL_TRACEプロシージャのパラメータ

パラメータ

説明

trace_level

表167-1「DBMS_TRACEのイベント定数」にリストされている1つ以上の定数を指定する必要があります。定数を合計することにより、複数のPL/SQL言語機能のトレースを同時に使用可能にできます。制御定数TRACE_PAUSE、TRACE_RESUMEおよびTRACE_STOPは、他の定数と組み合せて使用しないでください。

詳細は、「トレース・データの収集」を参照してください。

168 DBMS_TRANSACTION

DBMS_TRANSACTIONパッケージは、ストアド・プロシージャからSQLトランザクション文へのアクセスを提供します。

関連項目:
『Oracle Database SQL言語リファレンス』

この章では、次の項目について説明します。

- DBMS_TRANSACTIONの使用方法

- セキュリティ・モデル

- DBMS_TRANSACTIONサブプログラムの要約

DBMS_TRANSACTIONの使用方法

- セキュリティ・モデル

セキュリティ・モデル

このパッケージは、パッケージ所有者SYSではなく、コール・ユーザーの権限で実行されます。

DBMS_TRANSACTIONサブプログラムの要約

表168-1 DBMS_TRANSACTIONパッケージのサブプログラム

サブプログラム

説明

ADVISE_COMMITプロシージャ

次のSQL文と同じです。

ALTER SESSION ADVISE COMMIT

ADVISE_NOTHINGプロシージャ

次のSQL文と同じです。

ALTER SESSION ADVISE NOTHING

ADVISE_ROLLBACKプロシージャ

次のSQL文と同じです。

ALTER SESSION ADVISE ROLLBACK

COMMITプロシージャ

次のSQL文と同じです。

COMMIT

COMMIT_COMMENTプロシージャ

次のSQL文と同じです。

COMMIT COMMENT <text>

COMMIT_FORCEプロシージャ

次のSQL文と同じです。

COMMIT FORCE <text>, <number>"

LOCAL_TRANSACTION_IDファンクション

現行のトランザクションのローカルな(インスタンスに対する)一意の識別子を戻します。

PURGE_LOST_DB_ENTRYプロシージャ

リカバリが完了する前に、リモート・データベースが破損したか、再作成された場合に、不完全なトランザクションをローカル・サイトから削除できます。

PURGE_MIXEDプロシージャ

特定の混合出力トランザクションの情報を削除します。

READ_ONLYプロシージャ

次のSQL文と同じです。

SET TRANSACTION READ ONLY

READ_WRITEプロシージャ

次のSQL文と同じです。

SET TRANSACTION READ WRITE

ROLLBACKプロシージャ

次のSQL文と同じです。

ROLLBACK

ROLLBACK_FORCEプロシージャ

次のSQL文と同じです。

ROLLBACK FORCE <text>

ROLLBACK_SAVEPOINTプロシージャ

次のSQL文と同じです。

ROLLBACK TO SAVEPOINT <savepoint_name>

SAVEPOINTプロシージャ

次のSQL文と同じです。

SAVEPOINT <savepoint_name>

STEP_IDファンクション

トランザクションのDML操作を順序付ける、ローカルな(ローカル・トランザクションに対して)一意の正の整数を戻します。

USE_ROLLBACK_SEGMENTプロシージャ

次のSQL文と同じです。

SET TRANSACTION USE ROLLBACK SEGMENT <rb_seg_name>

ADVISE_COMMITプロシージャ

このプロシージャは、次のSQL文と同じです。

ALTER SESSION ADVISE COMMIT

構文

DBMS_TRANSACTION.ADVISE_COMMIT;

ADVISE_NOTHINGプロシージャ

このプロシージャは、次のSQL文と同じです。

ALTER SESSION ADVISE NOTHING

構文

DBMS_TRANSACTION.ADVISE_NOTHING;

ADVISE_ROLLBACKプロシージャ

このプロシージャは、次のSQL文と同じです。

ALTER SESSION ADVISE ROLLBACK

構文

DBMS_TRANSACTION.ADVISE_ROLLBACK;

COMMITプロシージャ

このプロシージャは、次のSQL文と同じです。

COMMIT

このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。

構文

DBMS_TRANSACTION.COMMIT;

COMMIT_COMMENTプロシージャ

このプロシージャは、次のSQL文と同じです。

COMMIT COMMENT <text>

構文

DBMS_TRANSACTION.COMMIT_COMMENT (
cmnt VARCHAR2);

パラメータ

表168-2 COMMIT_COMMENTプロシージャのパラメータ

パラメータ

説明

cmnt

このコミットに関連するコメント。

COMMIT_FORCEプロシージャ

このプロシージャは、次のSQL文と同じです。

COMMIT FORCE <text>, <number>"

構文

DBMS_TRANSACTION.COMMIT_FORCE (
xid VARCHAR2,
scn VARCHAR2 DEFAULT NULL);

パラメータ

表168-3 COMMIT_FORCEプロシージャのパラメータ

パラメータ

説明

xid

ローカルまたはグローバルなトランザクションID。

scn

システム変更番号。

LOCAL_TRANSACTION_IDファンクション

このファンクションは、現行のトランザクションのローカルな(インスタンスに対する)一意の識別子を戻します。現行のトランザクションがない場合は、NULLを戻します。

構文

DBMS_TRANSACTION.LOCAL_TRANSACTION_ID (
create_transaction BOOLEAN := FALSE)
RETURN VARCHAR2;

パラメータ

表168-4 LOCAL_TRANSACTION_IDファンクションのパラメータ

パラメータ

説明

create_transaction

TRUEに設定すると、トランザクションが現在アクティブでない場合は、トランザクションを開始します。

PURGE_LOST_DB_ENTRYプロシージャ

コミット処理中に障害が発生すると、自動リカバリ機能によって、そのトランザクションに関連しているすべてのサイトでの結果が一貫して解決されます。ただし、リカバリの完了前にリモート・データベースが破損または再作成されると、DBA_2PC_PENDING内のリカバリを制御するために使用するエントリとそれに関連する表が削除されずに、リカバリ処理が定期的に再試行されます。プロシージャPURGE_LOST_DB_ENTRYでは、このようなトランザクションをローカル・サイトから削除できます。

構文

DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY (
xid VARCHAR2);

パラメータ

表168-5 PURGE_LOST_DB_ENTRYプロシージャのパラメータ

パラメータ

説明

xid

DBA_2PC_PENDING表にあるLOCAL_TRAN_ID列の値に設定する必要があります。

使用上の注意

警告:

PURGE_LOST_DB_ENTRYは、他のデータベースが失われたり、再作成された場合にのみ使用してください。他の目的で使用すると、他のデータベースをリカバリ不能にしたり一貫性のない状態にする可能性があります。

自動リカバリの実行前に、トランザクションは、DBA_2PC_PENDINGをCollecting、CommittedまたはPreparedの状態で表示できます。DBAがCOMMIT_FORCEまたはROLLBACK_FORCEを使用して、インダウト・トランザクションに特定の結果を強制した場合は、Forced commitまたはForced rollbackの状態も表示できます。自動リカバリは通常、このような状態のエントリを削除します。唯一の例外は、トランザクション内の他のサイトとの間で整合性がとられていない状態の強制トランザクションがリカバリ処理で見つかった場合で、この場合、エントリは表内に残り、MIXED列の値が'yes'になります。

ただし、状態によっては、自動リカバリの実行が不可能な場合があります。たとえば、リモート・データベースが完全に破損した場合です。たとえ再作成しても、新規のデータベースIDを取得するため、リカバリ処理では元のデータベースと同じとは認識できません(起こり得るエラーは、ORA-02062です)。このような場合、DBAはプロシージャPURGE_LOST_DB_ENTRYを使用して、Prepared以外の状態にあるエントリをクリーンアップできます。これらのエントリはデータベース・リソースを保持していないため、DBAは特に急いでこれらのエントリを解決する必要はありません。

次の表は、トランザクションについての様々な状態の内容およびDBAに必要とされるアクションを示します。

表168-6 PURGE_LOST_DB_ENTRYプロシージャの状態

列の状態

グローバル・トランザクションの状態

ローカル・トランザクションの状態

通常のDBAアクション

代替のDBAアクション

Collecting

Rolled back

Rolled back

None

PURGE_LOST_DB_ENTRY(注意1参照)

Committed

Committed

Committed

None

PURGE_LOST_DB_ENTRY(注意1参照)

Prepared

Unknown

Prepared

None

FORCE COMMITまたはROLLBACK

Forced commit

Unknown

Committed

None

PURGE_LOST_DB_ENTRY(注意1参照)

Forced rollback

Unknown

Rolled back

None

PURGE_LOST_DB_ENTRY(注意1参照)

Forced commit (mixed)

Mixed

Committed

(注意2参照)

Forced rollback (mixed)

Mixed

Rolled back

(注意2参照)

注意1:
重要な再構成が発生して自動リカバリではトランザクションを解決できない場合のみ使用します。例としては、リモート・データベース全体が破損し、ソフトウェアでの再構成によって2フェーズ・コミット機能を失う結果になった場合やTPモニターのような外部トランザクション・コーディネータからの情報を失った場合などがあります。

注意2:
不整合を取り除くために調査したり手動で作業を行い、プロシージャPURGE_MIXEDを使用します。

PURGE_MIXEDプロシージャ

インダウト・トランザクションにコミットまたはロールバックを強制実行すると(自動リカバリで結果を解決するのではなく)、トランザクションでは、コミットするサイトとロールバックするサイトが混在する結果が得られる可能性があります。このような矛盾はOracleで自動的に解決できませんが、Oracleは、MIXED列を値'yes'に設定して、DBA_2PC_PENDINGにあるエントリにフラグ付けを行います。

Oracleでは、混合出力トランザクションの情報が自動的に削除されることはありません。混合トランザクションの結果として発生したすべての不整合が解決されたことを、アプリケーションまたはDBAで確認した後、このプロシージャを使用して、指定した混合出力トランザクションの情報を削除できます。

構文

DBMS_TRANSACTION.PURGE_MIXED (
xid VARCHAR2);

パラメータ

表168-7 PURGE_MIXEDプロシージャのパラメータ

パラメータ

説明

xid

DBA_2PC_PENDING表にあるLOCAL_TRAN_ID列の値に設定する必要があります。

READ_ONLYプロシージャ

このプロシージャは、次のSQL文と同じです。

SET TRANSACTION READ ONLY

構文

DBMS_TRANSACTION.READ_ONLY;

READ_WRITEプロシージャ

このプロシージャは、次のSQL文と同じです。

SET TRANSACTION READ WRITE

構文

DBMS_TRANSACTION.READ_WRITE;

ROLLBACKプロシージャ

このプロシージャは、次のSQL文と同じです。

ROLLBACK

このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。

構文

DBMS_TRANSACTION.ROLLBACK;

ROLLBACK_FORCEプロシージャ

このプロシージャは、次のSQL文と同じです。

ROLLBACK FORCE <text>

構文

DBMS_TRANSACTION.ROLLBACK_FORCE (
xid VARCHAR2);

パラメータ

表168-8 ROLLBACK_FORCEプロシージャのパラメータ

パラメータ

説明

xid

ローカルまたはグローバルなトランザクションID。

ROLLBACK_SAVEPOINTプロシージャ

このプロシージャは、次のSQL文と同じです。

ROLLBACK TO SAVEPOINT <savepoint_name>

このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。

構文

DBMS_TRANSACTION.ROLLBACK_SAVEPOINT (
savept VARCHAR2);

パラメータ

表168-9 ROLLBACK_SAVEPOINTプロシージャのパラメータ

パラメータ

説明

savept

セーブポイントの識別子。

SAVEPOINTプロシージャ

このプロシージャは、次のSQL文と同じです。

SAVEPOINT <savepoint_name>

このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。

構文

DBMS_TRANSACTION.SAVEPOINT (
savept VARCHAR2);

パラメータ

表168-10 SAVEPOINTプロシージャのパラメータ

パラメータ

説明

savept

セーブポイントの識別子。

STEP_IDファンクション

このファンクションは、トランザクションのDML操作を順序付ける、ローカルな(ローカル・トランザクションに対して)一意の正の整数を戻します。

構文

DBMS_TRANSACTION.STEP_ID
RETURN NUMBER;

USE_ROLLBACK_SEGMENTプロシージャ

このプロシージャは、次のSQL文と同じです。

SET TRANSACTION USE ROLLBACK SEGMENT <rb_seg_name>

構文

DBMS_TRANSACTION.USE_ROLLBACK_SEGMENT (
rb_name VARCHAR2);

パラメータ

表168-11 USE_ROLLBACK_SEGMENTプロシージャのパラメータ

パラメータ

説明

rb_name

使用するロールバック・セグメントの名前。

169 DBMS_TRANSFORM

DBMS_TRANSFORMパッケージは、Oracle Advanced Queuingのメッセージ形式の変換機能へのインタフェースを提供します。

関連項目:
メッセージ形式の変換の詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_TRANSFORMサブプログラムの要約

DBMS_TRANSFORMサブプログラムの要約

表169-1 DBMS_TRANSFORMパッケージのサブプログラム

サブプログラム

説明

CREATE_TRANSFORMATIONプロシージャ

ソース・タイプのオブジェクトをターゲット・タイプのオブジェクトにマップする変換を作成します。

DROP_TRANSFORMATIONプロシージャ

指定した変換を削除します。

MODIFY_TRANSFORMATIONプロシージャ

既存の変換を変更します。

CREATE_TRANSFORMATIONプロシージャ

このプロシージャは、ソース・タイプのオブジェクトをターゲット・タイプのオブジェクトにマップする変換を作成します。変換式は、SQL式またはPL/SQLファンクションのどちらでも作成できます。ターゲット・タイプのオブジェクトを戻す必要があります。

構文

DBMS_TRANSFORM.CREATE_TRANSFORMATION (
schema               VARCHAR2(30),
name                 VARCHAR2(30),
from_schema          VARCHAR2(30),
from_type            VARCHAR2(30),
to_schema            VARCHAR2(30),
to_type              VARCHAR2(30),
transformation       VARCHAR2(4000));

パラメータ

表169-2 CREATE_TRANSFORMATIONプロシージャのパラメータ

パラメータ

説明

schema

変換のスキーマを指定します。

name

変換名を指定します。

from_schema

ソース・タイプのスキーマを指定します。

from_type

ソース・タイプを指定します。

to_schema

ターゲット・タイプのスキーマを指定します。

to_type

ターゲット・タイプを指定します。

transformation

ターゲット・タイプのオブジェクトを戻す変換式を指定します。式は、ターゲット・タイプのオブジェクトを戻すファンクションまたはターゲット・タイプのコンストラクタ式にする必要があります。変換式を指定せずに、MODIFY_TRANSFORMATIONを使用してターゲット・タイプの属性の変換を指定することも可能です。

使用上の注意

- 変換式は、ターゲット・タイプの指定した属性のタイプを戻すSQL式またはPL/SQLファンクションにする必要があります。

- 変換を作成、変更または削除するには、ユーザーがDBMS_TRANSFORMの実行権限を付与されている必要があります。さらに、ユーザーは変換のソース・タイプおよびターゲット・タイプであるユーザー定義タイプに対する実行権限も必要です。また、変換ファンクションで使用されるPLSQLファンクションの実行権限も必要です。

- 変換では、データベース状態の書込み(DML実行)、現在の変換のコミットおよびロールバックを実行できません。

- 変換は、ソース・タイプを入力タイプとし、ターゲット・タイプのオブジェクトを戻すSQLファンクションにする必要があります。さらに、ソース・タイプを参照するターゲット・タイプのSQL式でも可能です。ソース・タイプのすべての参照は、source.user_dataの形式にする必要があります。

- ソース・タイプとターゲット・タイプはともに非スカラー・データベース・タイプである必要があります。NULL変換式はNULLターゲット・オブジェクトにマップします。

エンキューおよびデキュー時に変換を使用する場合、操作を起動するログイン・ユーザーは変換で使用されるPL/SQLファンクションの実行権限が必要です。伝播のため、キューの所有スキーマにはこれらの権限が必要です。

DROP_TRANSFORMATIONプロシージャ

このプロシージャは、指定した変換を削除します。

構文

DBMS_TRANSFORM.DROP_TRANSFORMATION (

schema VARCHAR2(30),

name        VARCHAR2(30));

パラメータ

表169-3 DROP_TRANSFORMATIONプロシージャのパラメータ

パラメータ

説明

schema

変換のスキーマを指定します。

name

変換名を指定します。

MODIFY_TRANSFORMATIONプロシージャ

このプロシージャは、指定した変換の変換式を変更します。

構文

DBMS_TRANSFORM.MODIFY_TRANSFORMATION (
schema             VARCHAR2(30),
name               VARCHAR2(30),
attribute_number   INTEGER,
transformation     VARCHAR2(4000));

パラメータ

表169-4 MODIFY_TRANSFORMATIONプロシージャのパラメータ

パラメータ

説明

schema

変換のスキーマを指定します。

name

変換名を指定します。

attribute_number

新しい変換式を指定するターゲット・タイプの属性。ターゲット・タイプの単一の式として、新しい変換を指定する場合、0(ゼロ)の値を指定します。

transformation

変換式は、ターゲット・タイプの指定した属性のタイプを戻すSQL式またはPL/SQLファンクションにする必要があります。attribute_numberが0(ゼロ)の場合、式は、ターゲット・タイプのオブジェクトを戻すPL/SQLファンクションまたはターゲット・タイプのコンストラクタ式にする必要があります。

使用上の注意

- 新しい変換がターゲット・タイプの単一式である場合、attribute_numberを0(ゼロ)で指定できます。さらに、ターゲット・タイプの属性ごとに新しい変換を指定できます。

- このプロシージャを使用して、ターゲット・タイプの各属性に対する個別の式として、変換を定義できます。大規模な変換の場合、この表現は読み取りやすく、アプリケーションで変換をより厳密に制御できます。ターゲット・タイプの特定の属性に対し、変換式を指定しないと、それらは変換の適用時にNULLと評価されます。

170 DBMS_TSDP_MANAGE

DBMS_TSDP_MANAGEパッケージは、データベース内の機密列および機密列タイプのインポートおよび管理を行うためのインタフェースを提供します。また、DBMS_TSDP_PROTECTパッケージを組み合せて使用することで、透過的機密データ保護(TSDP)ポリシーを実装できます。DBMS_TSDP_MANAGEは、Enterprise Editionでのみ使用できます。

関連項目:
『Oracle Databaseセキュリティ・ガイド』

この章では、次の項目について説明します。

- DBMS_TSDP_MANAGEの使用

- 概要

- セキュリティ・モデル

- DBMS_TSDP_MANAGEサブプログラムの要約

DBMS_TSDP_MANAGEの使用

- 概要

- セキュリティ・モデル

概要

DBMS_TSDP_MANAGEパッケージでは、Oracleデータベース内の機密列および機密タイプを管理できます。識別される機密列は、機密タイプに基づいて分類されます。DBMS_TSDP_PROTECTパッケージを使用して、データ自体ではなく列タイプに基づいて指定されたクラスのデータを保護するポリシーを作成することによって、これらのタイプのセキュリティを一律に管理し、変化する法規制に合せて設定を変更できます。

また、データ・ポンプを使用した完全エクスポートを実行するときに、ポリシーを他のデータベースにエクスポートできます。ポリシー自体のエクスポートはできませんが、データベースのエクスポートにはTSDPポリシーが含まれます。

セキュリティ・モデル

すべてのプロシージャは、実行者の権限で実行されます。DBMS_TSDP_MANAGEパッケージの所有者はSYSです。このパッケージのEXECUTE権限は、必要に応じて付与する必要があります。通常、このパッケージのEXECUTE権限はアプリケーション・データベース管理者に付与し、DBMS_TSDP_PROTECTパッケージはセキュリティ管理者が管理する必要があります。

DBMS_TSDP_MANAGEサブプログラムの要約

表170-1 DBMS_TSDP_MANAGEパッケージのサブプログラム

サブプログラム

説明

ADD_SENSITIVE_COLUMNプロシージャ

機密列リストに列を追加します。

ADD_SENSITIVE_TYPEプロシージャ

機密列タイプを作成して、これをデータベース内の機密列タイプのリストに追加します。

ALTER_SENSITIVE_COLUMNプロシージャ

機密タイプまたは機密列リストの列のコメント(あるいはその両方)を変更します。

DROP_SENSITIVE_COLUMNプロシージャ

機密列リストから列を削除します。

DROP_SENSITIVE_TYPEプロシージャ

機密列タイプを、データベース内の機密列タイプのリストから削除します。

DROP_SENSITIVE_TYPE_SOURCEプロシージャ

ソースに対応する機密列タイプを、データベース内の機密列タイプのリストから削除します。

IMPORT_DISCOVERY_RESULTプロシージャ

機密列を外部ソースからインポートします。これは、Oracle Enterprise Manager Cloud Controlインスタンスのアプリケーション・データ・モデル(ADM)である可能性があります。

IMPORT_SENSITIVE_TYPESプロシージャ

機密列タイプのリストをソースからインポートします。

REMOVE_DISCOVERY_RESULTプロシージャ

Oracle Enterprise Manager Cloud Controlインスタンスのアプリケーション・データ・モデル(ADM)に対応する機密列を削除します。

ADD_SENSITIVE_COLUMNプロシージャ

このプロシージャは、機密列リストに列を追加します。

構文

DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN (
schema_name        IN VARCHAR2,
table_name         IN VARCAHR2,
column_name        IN VARCAHR2,
sensitive_type     IN VARCAHR2,
user_comment       IN VARCAHR2 DEFAULT NULL);

パラメータ

表170-2 ADD_SENSITIVE_COLUMNプロシージャのパラメータ

パラメータ

説明

schema_name

列が属するスキーマ。

table_name

列を含む表。

column_name

機密列名。

sensitive_type

機密列タイプの識別子。

user_comment

機密列に関するユーザー・コメント。

例

SCOTT.EMPの列SALを追加します。

DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN (
schema_name        => 'SCOTT',
table_name         => 'EMP',
column_name        => 'SAL',
sensitive_type     => 'SALARY_TYPE',
user_comment       => 'Salary column');

ALTER_SENSITIVE_COLUMNプロシージャ

このプロシージャは、機密タイプまたは機密列リストの列のコメント(あるいはその両方)を変更します。

構文

DBMS_TSDP_MANAGE.ALTER_SENSITIVE_COLUMN (
schema_name        IN VARCHAR2,
table_name         IN VARCAHR2,
column_name        IN VARCAHR2,
sensitive_type     IN VARCAHR2,
user_comment       IN VARCAHR2 DEFAULT NULL);

パラメータ

表170-3 ALTER_SENSITIVE_COLUMNプロシージャのパラメータ

パラメータ

説明

schema_name

列が属するスキーマ。

table_name

列を含む表。

column_name

機密列名。

sensitive_type

機密列タイプの識別子。

user_comment

機密列に関するユーザー・コメント。

例

機密列リストにリストされているSCOTT.EMPの列SALを変更します。

DBMS_TSDP_MANAGE.ALTER_SENSITIVE_COLUMN (
schema_name        => 'SCOTT',
table_name         => 'EMP',
column_name        => 'SAL',
sensitive_type     => 'FINANCE_Type',
user_comment       => 'Finance Type. Earlier categorized as Salary Type');

ADD_SENSITIVE_TYPEプロシージャ

このプロシージャは、機密列タイプを作成して、これをデータベース内の機密列タイプのリストに追加します。

構文

DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE (
sensitive_type     IN  VARCHAR2,
user_comment       IN  VARCAHR2 DEFAULT NULL);

パラメータ

表170-4 ADD_SENSITIVE_TYPEプロシージャのパラメータ

パラメータ

説明

sensitive_type

機密列タイプの名前。

user_comment

機密列に関するユーザー・コメント。

例

給与データを含む列に関連付けられる、機密列タイプSALARY_TYPEを追加します。

DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE (
sensitive_type     => 'SALARY_TYPE',
user_comment       => 'Salary data');

DROP_SENSITIVE_COLUMNプロシージャ

このプロシージャは、機密列リストから列を削除します。

構文

DBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN (
schema_name        IN VARCHAR2 DEFAULT '%',
table_name         IN VARCAHR2 DEFAULT '%',
column_name        IN VARCAHR2 DEFAULT '%');

パラメータ

表170-5 DROP_SENSITIVE_COLUMNプロシージャのパラメータ

パラメータ

説明

schema_name

列が属するスキーマ。

table_name

列を含む表。

column_name

機密列名。

例

機密列リストからSCOTT.EMPの列SALを削除します。

DBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN (
schema_name        => 'SCOTT',
table_name         => 'EMP',
column_name        => 'SAL');

DROP_SENSITIVE_TYPEプロシージャ

このプロシージャは、機密列タイプをデータベース内の機密列タイプのリストから削除します。

構文

DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE (
sensitive_type     IN VARCHAR2);

パラメータ

表170-6 DROP_SENSITIVE_TYPEプロシージャのパラメータ

パラメータ

説明

sensitive_type

削除する機密列タイプの名前。

例

SALARY_TYPEを削除する例を次に示します。

DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE (
sensitive_type     => 'SALARY_TYPE');

DROP_SENSITIVE_TYPE_SOURCEプロシージャ

このプロシージャは、ソースに対応する機密列タイプをデータベース内の機密列タイプのリストから削除します。

構文

DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE_SOURCE (
source      IN VARCHAR2);

パラメータ

表170-7 DROP_SENSITIVE_TYPE_SOURCEプロシージャのパラメータ

パラメータ

説明

source

ソース名。

例

Oracle Enterprise Manager Cloud Controlインスタンスのアプリケーション・データ・モデル(ADM)(ADM_DEMO)に対応するすべての機密列タイプを削除するには、次のように実行します。

DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE_SOURCE (
source      =>  'ADM_DEMO');

IMPORT_DISCOVERY_RESULTプロシージャ

このプロシージャを使用して、外部ソースから機密列を関連機密タイプとともにインポートできます。この外部ソースは、Oracle Enterprise Manager Cloud Controlのアプリケーション・データ・モデル(ADM)インスタンスである可能性があります。

構文

DBMS_TSDP_MANAGE.IMPORT_DISCOVERY_RESULT (
discovery_result         IN  CLOB,
discovery_source         IN  VARCHAR2,
force                    IN  FORCE DEFAULT FALSE);

DBMS_TSDP_MANAGE.IMPORT_DISCOVERY_RESULT (
discovery_result         IN  XMLTYPE,
discovery_source         IN  VARCHAR2,
force                    IN  FORCE DEFAULT FALSE);

パラメータ

表170-8 IMPORT_DISCOVERY_RESULTプロシージャのパラメータ

パラメータ

説明

discovery_result

機密列のリストと、XML形式の機密列タイプを定義したオプションのリスト(CLOBタイプの場合がある)。

discovery_source

インポート元。discovery_source名は、インポートされる機密列のリストを識別します。ADMの場合、これはADM名である必要があります。

force

別のソースによって機密であるとすでに識別されている機密列が検出結果に含まれる場合、この検出結果をインポートするかどうかを指定します。

- FALSE(デフォルト): 列の競合がある場合、検出結果はインポートされません。列および機密タイプはインポートされません。

- TRUE: 検出結果がインポートされ、競合列の属性が受信した検出結果に基づいて設定されます。

例

ADMインスタンス(ADM_Demo)の機密列のリストをインポートします。

DBMS_TSDP_MANAGE.IMPORT_DISCOVERY_RESULT (
discovery_results        =>  xml_adm_result,
discovery_source         => 'ADM_Demo');

IMPORT_SENSITIVE_TYPESプロシージャ

このプロシージャは、機密列タイプのリストをソースからインポートします。

構文

DBMS_TSDP_MANAGE.IMPORT_SENSITIVE_TYPES (
sensitive_types        IN CLOB,
source                 IN VARCHAR2);

DBMS_TSDP_MANAGE.IMPORT_SENSITIVE_TYPES (
sensitive_types        IN XMLTYPE,
source                 IN VARCHAR2);

パラメータ

表170-9 IMPORT_SENSITIVE_TYPESプロシージャのパラメータ

パラメータ

説明

sensitive_types

XML形式の機密列タイプのリスト(CLOBの場合がある)。

source

インポート元。ソースは、インポートされる機密列タイプのリストを識別します。Oracle Enterprise Manager Cloud Controlインスタンスのアプリケーション・データ・モデル(ADM)の場合、これはADM名である必要があります。

例

ADMインスタンス(ADM_Demo)の機密列タイプのリストをインポートします。

DBMS_TSDP_MANAGE.IMPORT_SENSITIVE_TYPES (
sensitive_types        =>  xml_adm_result,
source                 => 'ADM_Demo');

REMOVE_DISCOVERY_RESULTプロシージャ

このプロシージャは、Oracle Enterprise Manager Cloud Controlインスタンスのアプリケーション・データ・モデル(ADM)に対応する機密列を削除します。

構文

DBMS_TSDP_MANAGE.REMOVE_DISCOVERY_RESULT (
discovery_source     IN  VARCHAR2);

パラメータ

表170-10 REMOVE_DISCOVERY_RESULTプロシージャのパラメータ

パラメータ

説明

discovery_source

インポート元。ADMの場合、これはADM名である必要があり、その結果は削除されます。

例

ADMインスタンス(ADM_Demo)に対応する機密列を削除します。

DBMS_TSDP_MANAGE.REMOVE_DISCOVERY_RESULT (
discovery_source    => 'ADM_Demo');

171 DBMS_TSDP_PROTECT

DBMS_TSDP_PROTECTパッケージは、DBMS_TSDP_MANAGEパッケージと組み合せて透過的機密データ保護(TSDP)ポリシーを構成するインタフェースを提供します。DBMS_TSDP_PROTECTは、Enterprise Editionでのみ使用できます。

関連項目:
『Oracle Databaseセキュリティ・ガイド』

この章では、次の項目について説明します。

- DBMS_TSDP_PROTECTの使用

- 概要

- セキュリティ・モデル

- 定数

- データ構造

- DBMS_TSDP_PROTECTサブプログラムの要約

DBMS_TSDP_PROTECTの使用

- 概要

- セキュリティ・モデル

- 定数

概要

DBMS_TSDP_PROTECTパッケージを使用して、透過的機密データ保護ポリシーを作成し、そのポリシーを機密タイプに関連付けることによって保護を構成し、構成した保護を有効または無効にします。機密タイプは、DBMS_TSDP_MANAGEパッケージを使用して追加できます。

セキュリティ・モデル

すべてのプロシージャは、実行者の権限で実行されます。通常、セキュリティ管理者がこのパッケージのEXECUTE権限を持っている必要があります。

定数

DBMS_TSDP_PROTECTパッケージでは、表171-1「DBMS_TDSP_PROTECTの定数: 圧縮タイプ」に示す定数が使用されます。

表171-1 DBMS_TDSP_PROTECTの定数: 圧縮タイプ

定数

タイプ

値

説明

TSDP_PARAM_MAX

INTEGER

4000

FEATURE_OPTIONSで指定できるパラメータ値の最大長

データ構造

DBMS_COMPRESSIONパッケージは、次のTABLEタイプを定義します。

表タイプ

- FEATURE_OPTIONS表タイプ

- POLICY_CONDITION表タイプ

FEATURE_OPTIONS表タイプ

次のタイプはVARCHAR2(TSDP_PARAM_MAX)の連想配列で、これはVARCHAR2(M_IDEN)で索引付けされています。

構文

TYPE FEATURE_OPTIONS IS TABLE OF VARCHAR2(TSDP_PARAM_MAX)
INDEX BY VARCHAR2(M_IDEN);

POLICY_CONDITION表タイプ

次のタイプはVARCHAR2(TSDP_PARAM_MAX)の連想配列で、これはPLS_INTEGERで索引付けされています。

構文

TYPE POLICY_CONDITION IS TABLE OF VARCHAR2(TSDP_PARAM_MAX)
INDEX BY PLS_INTEGER;

DBMS_TSDP_PROTECTサブプログラムの要約

表171-2 DBMS_TSDP_PROTECTパッケージのサブプログラム

サブプログラム

説明

ADD_POLICYプロシージャ

TSDPポリシーを作成します。

ALTER_POLICYプロシージャ

TDSPポリシーを変更します。

ASSOCIATE_POLICYプロシージャ

TSDPポリシーを機密列タイプに関連付けるか、関連付けを解除します。

DISABLE_PROTECTION_COLUMNプロシージャ

列の保護を無効にします。

DISABLE_PROTECTION_SOURCEプロシージャ

機密列の真実のソースに基づいて保護を無効にします。

DISABLE_PROTECTION_TYPEプロシージャ

機密列タイプの保護を無効にします。

DROP_POLICYプロシージャ

TDSPポリシーを削除します。

ENABLE_PROTECTION_COLUMNプロシージャ

列の保護を有効にします。

ENABLE_PROTECTION_SOURCEプロシージャ

機密列の真実のソースに基づいて保護を有効にします。

ENABLE_PROTECTION_TYPEプロシージャ

機密列タイプの保護を有効にします。

ADD_POLICYプロシージャ

このプロシージャはTDSPポリシーを作成します。

構文

DBMS_TSDP_PROTECT.ADD_POLICY (
policy_name              IN VARCHAR2,
security_feature         IN PLS_INTEGER,
policy_enable_options    IN FEATURE_OPTIONS,
policy_apply_condition   IN POLICY_CONDITION DEFAULT TSDP$null_condition);

パラメータ

表171-3 ADD_POLICYプロシージャのパラメータ

パラメータ

説明

policy_name

作成するポリシーの名前。この識別子の最大長はM_IDENです。Oracleのネーミング規則に従います。

security_feature

ポリシーが関連付けられているOracleのセキュリティ機能。指定できる値は次のとおりです。

- DBMS_TSDP_PROTECT.REDACT

policy_enable_options

セキュリティ機能に対応するパラメータと値のペアによって初期化されます。

policy_apply_condition

対応するpolicy_enable_optionsを適用するために満たす必要がある、プロパティと値のペアによって初期化されます。これは、キー(PLS_INTEGER)としてプロパティを指定した連想配列です。

例: example_policy_condition(Property)= property_value。プロパティに設定可能な値は次のとおりです。

- DBMS_TSDP_PROPERTY.DATATYPE

- DBMS_TSDP_PROPERTY.LENGTH

- DBMS_TSDP_PROPERTY.PARENT_SCHEMA

- DBMS_TSDP_PROPERTY.PARENT_TABLE

使用上の注意

TDSPポリシーを作成するには、プロシージャを無名ブロックに含める必要があります。この無名ブロックは、ポリシーが有効になっているときに、テストでポリシーおよび条件を使用するセキュリティ機能のタイプを定義します。詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

例

ポリシーPARTIAL_MASK_POLICYを作成します。

DECLARE
redact_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONS;
policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
redact_feature_options ('expression') :=
'SYS_CONTEXT(''USERENV'',''SESSION_USER'')      =''APPUSER''';
redact_feature_options ('function_type')        := 'DBMS_REDACT.PARTIAL';
redact_feature_options ('function_parameters')  := 'STR, VVVVVVVVV,VVVVVVVVV, *,  1, 6';
policy_conditions(DBMS_TSDP_PROTECT.DATATYPE)   := 'VARCHAR2';
DBMS_TSDP_PROTECT.ADD_POLICY
('PARTIAL_MASK_POLICY',  DBMS_TSDP_PROTECT.REDACT, redact_feature_options, policy_conditions);
END;

ALTER_POLICYプロシージャ

このプロシージャは、既存のTDSPポリシーを変更します。

構文

DBMS_TSDP_PROTECT.ALTER_POLICY (
policy_name              IN VARCHAR2,
policy_enable_options    IN FEATURE_OPTIONS,
policy_apply_condition   IN POLICY_CONDITION default TSDP$null_condition);

パラメータ

表171-4 ALTER_POLICYプロシージャのパラメータ

パラメータ

説明

policy_name

変更するポリシーの名前。

policy_enable_options

セキュリティ機能に対応するパラメータと値のペアによって初期化されます。

policy_apply_condition

対応するpolicy_enable_optionsを適用するために満たす必要がある、プロパティと値のペアによって初期化されます。これは、キー(PLS_INTEGER)としてプロパティを指定した連想配列です。

例: example_policy_condition(Property)= property_value。プロパティに設定可能な値は次のとおりです。

- DBMS_TSDP_PROPERTY.DATATYPE

- DBMS_TSDP_PROPERTY.LENGTH

- DBMS_TSDP_PROPERTY.PARENT_SCHEMA

- DBMS_TSDP_PROPERTY.PARENT_TABLE

使用上の注意

- policy_apply_conditionがポリシーの既存の条件と一致する場合、対応する有効オプションはpolicy_enable_optionsで更新されます。

- policy_apply_conditionがポリシーの既存のどの条件とも一致しない場合、policy_enable_optionsとpolicy_apply_conditionの組合せがポリシーに追加されます。

例

policy_apply_conditionとpolicy_enable_optionsの新しい組合せを、既存のポリシーPARTIAL_MASK_POLICYに追加します。

DECLARE
redact_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONS;
policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
redact_feature_options ('expression') :=
'SYS_CONTEXT(''USERENV'',''SESSION_USER'')=''APPUSER''';
redact_feature_options ('function_type') := 'DBMS_REDACT.PARTIAL';
redact_feature_options ('function_parameters') := 'STR, VVVVVVVVV,VVVVVVVVV, *,
1, 6';
policy_conditions (DBMS_TSDP_PROTECT.DATATYPE) := 'VARCHAR2';
DBMS_TSDP_PROTECT.ALTER_POLICY ('PARTIAL_MASK_POLICY',  redact_feature_options, policy_conditions);
END;

ASSOCIATE_POLICYプロシージャ

このプロシージャは、TSDPポリシーを機密列タイプに関連付けるか、関連付けを解除します。

構文

DBMS_TSDP_PROTECT.ASSOCIATE_POLICY (
policy_name        IN  VARCHAR2,
sensitive_type     IN  VARCHAR2,
associate          IN  BOOLEAN DEFAULT TRUE);

パラメータ

表171-5 ASSOCIATE_POLICYプロシージャのパラメータ

パラメータ

説明

policy_name

TDSPポリシー名。

sensitive_type

機密列タイプの名前。

associate

関連付けまたは関連解除。TRUEは関連付けを示します。

使用上の注意

ポリシーと機密列タイプの両方がデータベースに存在する必要があります。

例

PARTIAL_MASK_POLICYをSSN_TYPEに関連付けます。

DBMS_TSDP_PROTECT.ASSOCIATE_POLICY ('PARTIAL_MASK_POLICY', 'SSN_TYPE');

DISABLE_PROTECTION_COLUMNプロシージャ

このプロシージャは、列の保護を無効にします。

構文

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN (
schema_name        IN  VARCHAR2 DEFAULT '%',
table_name         IN  VARCHAR2 DEFAULT '%',
column_name        IN  VARCHAR2 DEFAULT '%',
policy_name        IN  VARCHAR2 DEFAULT NULL);

パラメータ

表171-6 DISABLE_PROTECTION_COLUMNプロシージャのパラメータ

パラメータ

説明

schema_name

列を含むスキーマの名前。

table_name

列を含む表。

column_name

列名。

policy_name

ポリシー名(オプション)。指定すると、このポリシーのみが無効になります。

例

名前が%PAYROLL%、表名がEMP%、列名がSAL%のスキーマにある、列の対応する機密列タイプに関連付けられたTSDPポリシーを無効にします。

EXEC DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN ('%PAYROLL%', 'EMP%', 'SAL%');

DISABLE_PROTECTION_SOURCEプロシージャ

このプロシージャは、機密列の真実のソースに基づいて保護を無効にします。

構文

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_SOURCE (
discovery_sourcename      IN  VARCHAR2);

パラメータ

表171-7 DISABLE_PROTECTION_SOURCEプロシージャのパラメータ

パラメータ

説明

discovery_sourcename

検出ソース名。これはアプリケーション・データ・モデル(ADM)名またはデータベース・ユーザーです。

例

ADM_Demoに対応するすべての列の保護を無効にします。

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_SOURCE ('ADM_Demo');

DISABLE_PROTECTION_TYPEプロシージャ

このプロシージャは、機密列タイプの保護を無効にします。

構文

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_TYPE (
sensitive_type         IN VARCHAR2);

パラメータ

表171-8 DISABLE_PROTECTION_TYPEプロシージャのパラメータ

パラメータ

説明

sensitive_type

機密列タイプの名前。

例

SSN_TYPEで識別されたすべての列の保護を無効にします。

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_TYPE ('SSN_TYPE');

DROP_POLICYプロシージャ

このプロシージャは、TDSPポリシーまたはそのconditionとenable_optionsの組合せの1つを削除します。

構文

DBMS_TSDP_PROTECT.DROP_POLICY (
policy_name              IN VARCHAR2,
policy_apply_condition   IN POLICY_CONDITION default TSDP$null_condition);

DBMS_TSDP_PROTECT.DROP_POLICY (
policy_name              IN VARCHAR2);

パラメータ

表171-9 DROP_POLICYプロシージャのパラメータ

パラメータ

説明

policy_name

削除するポリシーの名前。

policy_apply_condition

関連条件で初期化されます。

使用上の注意

- policy_conditionとpolicy_enable_optionsの組合せは、policy_apply_conditionパラメータを指定することによってTSDPポリシーから削除できます。デフォルトのconditionとデフォルトのoptionsの組合せも削除できます(ポリシーに存在する場合)。そのためには、DBMS_TSDP_PROTECT.POLICY_CONDITIONタイプの空の連想配列を渡します。

- 削除するconditionとenable_optionsの組合せがポリシーの最後のconditionとenable_optionsの組合せの場合、ポリシー自体が削除されます。

- ポリシーは、policy_nameのみを取るプロシージャのオーバーロードを使用することによって完全に削除できます。

- ポリシーまたはそのconditionの1つは、ポリシーがどの機密列タイプにも関連付けられていない場合にのみ削除できます。これは、削除されるポリシーがどの列(オブジェクト)でも有効になっていないことも意味します。

例

特定のconditionに基づいたconditionとenable_optionsの組合せの削除:

DECLARE
policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
policy_conditions (DBMS_TSDP_PROTECT.DATATYPE) := 'VARCHAR2';
DBMS_TSDP_PROTECT.DROP_POLICY ('PARTIAL_MASK_POLICY', policy_conditions);
END;

デフォルトのconditionとenable_optionsの組合せは、DBMS_TSDP_PROTECT.POLICY_CONDITIONSタイプの連想配列をpolicy_apply_conditionパラメータに渡すことによって削除できます。

DECLARE
policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
DBMS_TSDP_PROTECT.DROP_POLICY ('redact_partial_cc', policy_conditions);
END;

TSDPポリシーの削除:

BEGIN
DBMS_TSDP_PROTECT.DROP_POLICY(
policy_name => 'PARTIAL_MASK_POLICY');
END;

ENABLE_PROTECTION_COLUMNプロシージャ

このプロシージャは、列の保護を有効にします。

構文

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMN (
schema_name        IN  VARCHAR2 DEFAULT '%',
table_name         IN  VARCHAR2 DEFAULT '%',
column_name        IN  VARCHAR2 DEFAULT '%',
policy_name        IN  VARCHAR2 DEFAULT NULL);

パラメータ

表171-10 ENABLE_PROTECTION_COLUMNプロシージャのパラメータ

パラメータ

説明

schema_name

列を含むスキーマの名前。

table_name

列を含む表。

column_name

列名。

policy_name

ポリシー名(オプション)。指定すると、このポリシーのみが有効になります。

使用上の注意

- このプロシージャを使用して有効にできるのは、機密列の機密列タイプに関連付けられたTSDPポリシーのみです。

- LIKE条件は、schema_name、table_nameおよびcolumn_nameで使用されます。ANDセマンティクスが続きます。

例

名前が%PAYROLL%、表名がEMP%、列名がSAL%のスキーマにある、列の対応する機密列タイプに関連付けられたTSDPポリシーを有効にします。

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMN ('%PAYROLL%', 'EMP%', 'SAL%');

ENABLE_PROTECTION_SOURCEプロシージャ

このプロシージャは、機密列の真実のソースに基づいて保護を有効にします。

構文

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_SOURCE (
discovery_sourcename      IN  VARCHAR2);

パラメータ

表171-11 ENABLE_PROTECTION_SOURCEプロシージャのパラメータ

パラメータ

説明

discovery_sourcename

検出ソース名。これはアプリケーション・データ・モデル(ADM)名またはデータベース・ユーザーです。

例

ADM_Demoに対応するすべての列の保護を有効にします。

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_SOURCE ('ADM_Demo');

ENABLE_PROTECTION_TYPEプロシージャ

このプロシージャは、機密列タイプの保護を有効にします。

構文

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPE (
sensitive_type         IN VARCHAR2);

パラメータ

表171-12 ENABLE_PROTECTION_TYPEプロシージャのパラメータ

パラメータ

説明

sensitive_type

機密列タイプの名前。

例

SSN_TYPEで識別されたすべての列の保護を有効にします。

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPE ('SSN_TYPE');

172 DBMS_TTS

DBMS_TTSパッケージは、トランスポータブル・セットが自己完結型かどうかをチェックします。すべての違反が、ビューTRANSPORT_SET_VIOLATIONSから選択できる一時表に挿入されます。

関連項目:

- 『Oracle Database管理者ガイド』

- 『Oracle Databaseアップグレード・ガイド』

この章では、次の項目について説明します。

- DBMS_TTSの使用方法

- セキュリティ・モデル

- 例外

- 使用上の注意

- DBMS_TTSサブプログラムの要約

DBMS_TTSの使用方法

- セキュリティ・モデル

- 例外

- 使用上の注意

セキュリティ・モデル

このプロシージャは、execute_catalog_roleを付与されているユーザーのみが実行できます。このロールは、初期段階ではユーザーSYSにのみ割り当てられています。

例外

ts_not_found  EXCEPTION;
PRAGMA exception_init(ts_not_found, -29304);
ts_not_found_num NUMBER := -29304;

invalid_ts_list  EXCEPTION;
PRAGMA exception_init(invalid_ts_list, -29346);
invalid_ts_list_num NUMBER := -29346;

sys_or_tmp_ts     EXCEPTION;
PRAGMA exception_init(sys_or_tmp_ts, -29351);
sys_or_tmp_ts_num NUMBER := -29351;

使用上の注意

トランスポータブル表領域に関しては、参照整合性制約の有効化および無効化の処理が異なります。

- 無効化された参照整合性制約は、トランスポータビリティ・ルールに違反せず、インポート・フェーズ時に削除されます。

- 有効化された参照整合性制約は、トランスポータブル・セット外の表領域の表を参照する場合に、トランスポータビリティ・ルールに違反します。

DBMS_TTSサブプログラムの要約

この2つのプロシージャは、データベース管理者がコールするように設計されています。

表172-1 DBMS_TTSパッケージのサブプログラム

サブプログラム

説明

DOWNGRADEプロシージャ

トランスポータブル表領域関連のデータをダウングレードします。

TRANSPORT_SET_CHECKプロシージャ

表領域(トランスポート可能)のセットが自己完結型かどうかをチェックします。

DOWNGRADEプロシージャ

このプロシージャは、データに関連するトランスポータブル表領域をダウングレードします。

構文

DBMS_TTS.DOWNGRADE;

TRANSPORT_SET_CHECKプロシージャ

このプロシージャは、表領域(トランスポート可能)のセットが自己完結型かどうかをチェックします。このプロシージャのコール後、ユーザーはビューから選択して、違反があればそのリストを調べることができます。

構文

DBMS_TTS.TRANSPORT_SET_CHECK (
ts_list          IN CLOB,
incl_constraints IN BOOLEAN DEFAULT FALSE,
full_check       IN BOOLEAN DEFAULT FALSE);

パラメータ

表172-2 TRANSPORT_SET_CHECKプロシージャのパラメータ

パラメータ

説明

ts_list

1つ以上の表領域のカンマ区切りリスト。

incl_constraints

表領域が自己完結型かどうかを調べるときに、参照整合性制約を考慮する場合はTRUEを設定します(ts_list引数のみでコールされた場合はTRANSPORT_SET_CHECKが動作するように、incl_constraintsパラメータがデフォルトで設定されています)。

full_check

完全または部分的な依存性チェックが必要かどうかを示します。TRUE,の場合、INおよびOUTポインタ(依存性)のすべてを処理し、トランスポータブル・セット内で自己完結していないものを違反として取得します。TSPITRの場合またはトランスポータブルの厳密なバージョンが必要な場合にも、パラメータをTRUEに設定してください。デフォルトでは、パラメータはFALSEに設定されます。この場合、OUTポインタのみが違反とみなされます。

例

ビューで行が戻らない場合、表領域のセットは自己完結型です。次に例を示します。

SQLPLUS> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('foo,bar', TRUE);
SQLPLUS> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

173 DBMS_TYPES

DBMS_TYPESパッケージは、組込みおよびユーザー定義のタイプを表す定数で構成されます。

この章では、次の項目について説明します。

- DBMS_TYPESの使用方法

- 定数

- 例外

DBMS_TYPESの使用方法

- 定数

- 例外

定数

次の表に、DBMS_TYPESパッケージの定数を示します。

表173-1 DBMS_TYPESの定数

定数

説明

NO_DATA

コレクションまたは任意のデータ・セットに対し、PieceWiseがコールされた場合にのみ関係します。すべての要素がアクセスされた場合、コレクション/任意のデータ・セットの終了を示します。

SUCCESS

操作は成功しました。

TYPECODE_BDOUBLE

NUMBERタイプ

TYPECODE_BFILE

BFILEタイプ

TYPECODE_BFLOAT

NUMBERタイプ

TYPECODE_BLOB

BLOBタイプ

TYPECODE_CFILE

CFILEタイプ

TYPECODE_CHAR

CHARタイプ

TYPECODE_CLOB

CLOBタイプ

TYPECODE_DATE

DATEタイプ

TYPECODE_INTERVAL_DS

INTERVAL_DSタイプ。

TYPECODE_INTERVAL_YM

INTERVAL_YMタイプ。

TYPECODE_MLSLABEL

MLSLABELタイプ

TYPECODE_NAMEDCOLLECTION

名前付きコレクション(VARRAY/ネストした表)タイプ。

TYPECODE_NCHAR

NCHARタイプ

TYPECODE_NCLOB

NCLOBタイプ

TYPECODE_NUMBER

NUMBERタイプ

TYPECODE_NVARCHAR2

NVARCHAR2タイプ

TYPECODE_OBJECT

OBJECTタイプ

TYPECODE_OPAQUE

OPAQUEタイプ

TYPECODE_RAW

RAWタイプ

TYPECODE_REF

REFタイプ

TYPECODE_TABLE

ネストした表のコレクション・タイプ。

TYPECODE_TIMESTAMP

TIMESTAMPタイプ

TYPECODE_TIMESTAMP_LTZ

TIMESTAMP_LTZタイプ。

TYPECODE_TIMESTAMP_TZ

TIMESTAMP_TZタイプ。

TYPECODE_UROWID

UROWIDタイプ

TYPECODE_VARCHAR2

VARCHAR2タイプ

TYPECODE_VARCHAR

VARCHARタイプ

TYPECODE_VARRAY

VARRAYコレクション・タイプ。

例外

- INVALID_PARAMETERS

- INCORRECT_USAGE

- TYPE_MISMATCH

174 DBMS_UTILITY

DBMS_UTILITYパッケージは、各種のユーティリティ・サブプログラムを提供します。

この章では、次の項目について説明します。

- DBMS_UTILITYの使用方法

- セキュリティ・モデル

- 定数

- 例外

- データ構造

- レコード・タイプ

- 表タイプ

- DBMS_UTILITYサブプログラムの要約

DBMS_UTILITYの使用方法

- セキュリティ・モデル

- 定数

- 例外

セキュリティ・モデル

DBMS_UTILITYは、NAME_RESOLVEプロシージャおよびCOMPILE_SCHEMAプロシージャのコール・ユーザーの権限で実行されます。これは、SQLが正しく動作するために必要です。

このパッケージは、SYSとして実行されません。権限は、DBMS_DDLを使用してチェックされます。

定数

DBMS_UTILITYパッケージでは、表174-1「DBMS_UTILITYの定数」に示す定数が使用されます。

表174-1 DBMS_UTILITYの定数

名前

タイプ

値

説明

INV_ERROR_ON_RESTRICTIONS

PLS_INTEGER

1

この定数は、INVALIDATEサブプログラムのp_option_flagsパラメータに対して唯一有効な値です。

例外

次の表に、DBMS_UTILITYで発生する例外を示します。

表174-2 DBMS_UTILITYで発生する例外

例外

エラー・コード

説明

INV_NOT_EXIST_OR_NO_PRIV

-24237

object_id引数がNULLまたは無効な値の場合、あるいは無効化されているオブジェクトのCREATE権限をコール元が持っていない場合に、INVALIDATEサブプログラムによって発行されます。

INV_MALFORMED_SETTINGS

-24238

コンパイラの設定がp_plsql_object_settingsパラメータで複数回指定された場合に、INVALIDATEサブプログラムによって発行されます。

INV_RESTRICTED_OBJECT

-24239

p_object_idパラメータに関連する条件の様々な組合せが互いに矛盾する場合に、INVALIDATEサブプログラムによって発行されます。

データ構造

DBMS_UTILITYパッケージでは、単一のレコード・タイプと複数の表タイプを定義します。

レコード・タイプ

- INSTANCE_RECORDレコード・タイプ

表タイプ

- DBLINK_ARRAY表タイプ

- INDEX_TABLE_TYPE表タイプ

- INSTANCE_TABLE表タイプ

- LNAME_ARRAY表タイプ

- NAME_ARRAY表タイプ

- NUMBER_ARRAY表タイプ

- UNCL_ARRAY表タイプ

INSTANCE_RECORDレコード・タイプ

このタイプは、アクティブなインスタンス番号とインスタンス名のペアのリストを示します。

構文

TYPE INSTANCE_RECORD IS RECORD (
inst_number   NUMBER,
inst_name     VARCHAR2(60));

フィールド

表174-3 INSTANCE_RECORDレコード・タイプのフィールド

フィールド

説明

inst_number

アクティブなインスタンス番号

inst_name

インスタンス名

DBLINK_ARRAY表タイプ

このタイプは、データベース・リンクのリストを格納します。

構文

TYPE DBLINK_ARRAY IS TABLE OF VARCHAR2(128) INDEX BY BINARY_INTEGER;

INDEX_TABLE_TYPE表タイプ

このタイプは、生成されたオブジェクトがユーザーに戻される順序を示します。

構文

TYPE INDEX_TABLE_TYPE IS TABLE OF BINARY_INTEGER INDEX BY BINARY_INTEGER;

INSTANCE_TABLE表タイプ

このタイプは、INSTANCE_RECORDレコード・タイプの表を示します。

構文

TYPE INSTANCE_TABLE IS TABLE OF INSTANCE_RECORD INDEX BY BINARY_INTEGER;

使用上の注意

INSTANCE_TABLEの索引の開始は1で、INSTANCE_TABLEは稠密です。

LNAME_ARRAY表タイプ

このタイプは、完全修飾属性名を含むLONG NAMEのリストを格納します。

構文

TYPE LNAME_ARRAY IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;

NAME_ARRAY表タイプ

このタイプは、NAMEのリストを格納します。

構文

TYPE NAME_ARRAY IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;

NUMBER_ARRAY表タイプ

このタイプは、生成されたオブジェクトがユーザーに戻される順序を示します。

構文

TYPE NUMBER_ARRAY IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

UNCL_ARRAY表タイプ

このタイプは、"user"."name"."column"@linkのリストを格納します。

構文

TYPE UNCL_ARRAY IS TABLE OF VARCHAR2(227) INDEX BY BINARY_INTEGER;

DBMS_UTILITYサブプログラムの要約

表174-4 DBMS_UTILITYパッケージのサブプログラム

サブプログラム

説明

ACTIVE_INSTANCESプロシージャ

アクティブなインスタンスを戻します。

ANALYZE_DATABASEプロシージャ

データベース内のすべての表、クラスタおよび索引を分析します。

ANALYZE_PART_OBJECTプロシージャ

指定した表および索引を分析します。

ANALYZE_SCHEMAプロシージャ

スキーマ内のすべての表、クラスタおよび索引を分析します。

CANONICALIZEプロシージャ

指定した文字列を正規化します。

COMMA_TO_TABLEプロシージャ

カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。

COMPILE_SCHEMAプロシージャ

指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージ、ビューおよびトリガーをコンパイルします。

CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ

ALTER TYPE文のEXCEPTION句で使用するためのエラー表を作成します。

CURRENT_INSTANCEファンクション

現在接続しているインスタンス番号を戻します。

DATA_BLOCK_ADDRESS_BLOCKファンクション

データ・ブロック・アドレスのブロック番号部分を取得します。

DATA_BLOCK_ADDRESS_FILEファンクション

データ・ブロック・アドレスのファイル番号部分を取得します。

DB_VERSIONプロシージャ

データベースに関するバージョン情報を戻します。

EXEC_DDL_STATEMENTプロシージャ

parse_stringでDDL文を実行します。

EXPAND_SQL_TEXTプロシージャ

入力SQL問合せのすべてのビュー参照を対応するビュー副問合せと再帰的に置き換えます。

FORMAT_CALL_STACKファンクション

現行のコール・スタックをフォーマットします。

FORMAT_ERROR_BACKTRACEファンクション

現行のエラーのポイントから、エラーが捕捉された例外ハンドラまでのバックトレースをフォーマットします。

FORMAT_ERROR_STACKファンクション

現行のエラー・スタックをフォーマットします。

GET_CPU_TIMEファンクション

現在のCPU時間を100分の1秒単位で戻します。

GET_DEPENDENCYプロシージャ

渡されたオブジェクトの依存関係を示します。

GET_ENDIANNESSファンクション

データベース・プラットフォームのエンディアンを取得します。

GET_HASH_VALUEファンクション

指定した文字列についてハッシュ値を計算します。

GET_PARAMETER_VALUEファンクション

指定したinit.oraパラメータの値を取得します。

GET_SQL_HASHファンクション

MD5アルゴリズムを使用して、指定した文字列についてハッシュ値を計算します。

GET_TIMEファンクション

現在の時間を100分の1秒単位で戻します。

GET_TZ_TRANSITIONSプロシージャ

timezone.datファイルのregionidに基づいてタイムゾーンの遷移が戻されます。

INVALIDATEプロシージャ

データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。

IS_BIT_SETファンクション

指定のRAW値の、指定のビットのビット設定をチェックします。

IS_CLUSTER_DATABASEファンクション

データベースがクラスタ・データベース・モードで実行されているかどうかを判別します。

MAKE_DATA_BLOCK_ADDRESSファンクション

ファイル番号とブロック番号を指定して、データ・ブロック・アドレスを作成します。

NAME_RESOLVEプロシージャ

指定した名前を解決します。

NAME_TOKENIZEプロシージャ

指定した名前を解析するためにパーサーをコールします。

OLD_CURRENT_SCHEMAファンクション

SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA')からのセッション値を戻します。

OLD_CURRENT_USERファンクション

SYS_CONTEXT ('USERENV', 'CURRENT_USER')からのセッション値を戻します。

PORT_STRINGファンクション

Oracleのバージョンおよびオペレーティング・システムを一意に識別する文字列を戻します。

SQLID_TO_SQLHASHファンクション

SQL IDをハッシュ値に変換します。

TABLE_TO_COMMAプロシージャ

名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。

VALIDATEプロシージャ

無効なデータベース・オブジェクトを有効にします。

WAIT_ON_PENDING_DMLファンクション

表示された表にロックがあり、指定したSCNより前に開始されたすべてのトランザクション(コール元自体のトランザクションを除く)がコミットされるか、またはロールバックされるまで待機します。

ACTIVE_INSTANCESプロシージャ

このプロシージャは、アクティブなインスタンスを戻します。

構文

DBMS_UTILITY.ACTIVE_INSTANCES (
instance_table   OUT INSTANCE_TABLE,
instance_count   OUT NUMBER);

パラメータ

表174-5 ACTIVE_INSTANCESプロシージャのパラメータ

プロシージャ

説明

instance_table

アクティブなインスタンス番号と名前のリストが含まれます。進行中のインスタンスがない場合、リストは空になります。

instance_count

アクティブなインスタンスの数。

ANALYZE_DATABASEプロシージャ

このプロシージャは、データベース内のすべての表、クラスタおよび索引を分析します。

構文

DBMS_UTILITY.ANALYZE_DATABASE (
method             IN  VARCHAR2,
estimate_rows      IN  NUMBER DEFAULT NULL,
estimate_percent   IN  NUMBER DEFAULT NULL,
method_opt         IN  VARCHAR2 DEFAULT NULL);

パラメータ

表174-6 ANALYZE_DATABASEプロシージャのパラメータ

パラメータ

説明

method

ESTIMATE、COMPUTEまたはDELETEのいずれか。ESTIMATEの場合は、estimate_rowsまたはestimate_percentが0(ゼロ)以外である必要があります。

estimate_rows

推定する行の数。

estimate_percent

推定する行のパーセント。estimate_rowsが指定されている場合、このパラメータは無視されます。

method_opt

次の形式のメソッド・オプション:

[ FOR TABLE ]

[ FOR ALL [INDEXED] COLUMNS] [SIZE n]

[ FOR ALL INDEXES ]

例外

ORA-20000: このデータベース内のいずれかのオブジェクトに対する権限が不十分です。

ANALYZE_PART_OBJECTプロシージャ

このプロシージャは、次のSQLと同じです。

"ANALYZE TABLE|INDEX [<schema>.]<object_name> PARTITION <pname> [<command_type>] [<command_opt>] [<sample_clause>]

構文

DBMS_UTILITY.ANALYZE_PART_OBJECT (
schema        IN VARCHAR2 DEFAULT NULL,
object_name   IN VARCHAR2 DEFAULT NULL,
object_type   IN CHAR     DEFAULT 'T',
command_type  IN CHAR     DEFAULT 'E',
command_opt   IN VARCHAR2 DEFAULT NULL,
sample_clause IN VARCHAR2 DEFAULT 'sample 5 percent ');

パラメータ

表174-7 ANALYZE_PART_OBJECTプロシージャのパラメータ

パラメータ

説明

schema

object_nameのスキーマ

object_name

分析するオブジェクトの名前。パーティション化されている必要があります。

object_type

オブジェクトのタイプ。T(表)またはI(索引)である必要があります。

command_type

V(構造の検証)を指定する必要があります。

command_opt

command_typeのその他のオプション。

CとEについては、FOR表、FORのすべてのLOCAL索引、FORのすべての列、または分析統計(表)の'FOR'オプションをいくつか組み合せることが可能です。Vについては、object_typeがTのときにCASCADEが可能です。

sample_clause

command_typeが'E'の場合に使用するサンプル句。

使用上の注意

オブジェクトの各パーティションについて、ジョブ・キューを使用して並列に実行します。

ANALYZE_SCHEMAプロシージャ

このプロシージャは、スキーマ内のすべての表、クラスタおよび索引を分析します。

構文

DBMS_UTILITY.ANALYZE_SCHEMA (
schema             IN  VARCHAR2,
method             IN  VARCHAR2,
estimate_rows      IN  NUMBER DEFAULT NULL,
estimate_percent   IN  NUMBER DEFAULT NULL,
method_opt         IN  VARCHAR2 DEFAULT NULL);

パラメータ

表174-8 ANALYZE_SCHEMAプロシージャのパラメータ

パラメータ

説明

schema

スキーマの名前。

method

ESTIMATE、COMPUTEまたはDELETEのいずれか。ESTIMATEの場合は、estimate_rowsまたはestimate_percentが0(ゼロ)以外である必要があります。

estimate_rows

推定する行の数。

estimate_percent

推定する行のパーセント。estimate_rowsが指定されている場合、このパラメータは無視されます。

method_opt

次の形式のメソッド・オプション:

[ FOR TABLE ]

[ FOR ALL [INDEXED] COLUMNS] [SIZE n]

[ FOR ALL INDEXES ]

例外

ORA-20000: このスキーマ内のいずれかのオブジェクトに対する権限が不十分です。

CANONICALIZEプロシージャ

このプロシージャは、指定した文字列を正規化します。このプロシージャは単一の予約語またはキーワード('table'など)を処理し、' table 'がTABLEになるように単一の識別子の空白を取り除きます。

構文

DBMS_UTILITY.CANONICALIZE(
name           IN    VARCHAR2,
canon_name     OUT   VARCHAR2,
canon_len      IN    BINARY_INTEGER);

パラメータ

表174-9 CANONICALIZEプロシージャのパラメータ

パラメータ

説明

name

正規化する文字列。

canon_name

正規化された文字。

canon_len

正規化する文字列の長さ(バイト単位)。

戻り値

canon_nameの先頭のcanon_lenバイトを戻します。

使用上の注意

- nameがNULLの場合、canon_nameはNULLになります。

- nameがドットの付いた名前でない場合、およびnameが二重引用符で囲まれている場合、二重引用符を削除します。または、NLS_UPPERで大文字に変換します。この例には、スペースなどの特殊文字が使用されていても、二重引用符で囲まれていない名前は含まれません。

- 名前がドット付きの名前(a."b".cなど)の場合、ドット付きの名前の各要素の中に二重引用符で囲まれている要素がある場合、このコンポーネントに対する変換は行われません。かわりに、NLS_UPPERによって大文字に変換し、この要素の大文字の形式を二重引用符で囲みます。そのような場合、正規化された各要素は、"."で区切られて、入力位置に連結されます。

- a[.b]*の後の他の文字は無視されます。

- このプロシージャでは、'A B'のような例は処理されません。

例

- aはAに変換されます。

- "a"はaに変換されます。

- "a".bは"a"."B"に変換されます。

- "a".b,c.fは"a"."B"に変換され、",c.f"が無視されます。

COMMA_TO_TABLEプロシージャ

これらのプロシージャは、カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。2番目のバージョンでは、完全修飾属性名をサポートしています。

構文

DBMS_UTILITY.COMMA_TO_TABLE (
list   IN  VARCHAR2,
tablen OUT BINARY_INTEGER,
tab    OUT uncl_array);

DBMS_UTILITY.COMMA_TO_TABLE (
list   IN  VARCHAR2,
tablen OUT BINARY_INTEGER,
tab    OUT lname_array);

パラメータ

表174-10 COMMA_TO_TABLEプロシージャのパラメータ

パラメータ

説明

list

カンマで区切られた名前のリスト。最初のオーバーロードの場合、名前はa [. b [. c ]][ @ d ]の書式にする必要があります。

2番目のオーバーロードでは、a [. b]*の書式にする必要があります。

a、b、c、dは単純な識別子です(引用符あり、または引用符なし)。

tablen

PL/SQL表にある表の数。

tab

名前のリストを含んだPL/SQL表。

戻り値

PL/SQL表が、値1..nとn+1 is nullとともに戻されます。

使用上の注意

- listは、空ではないカンマで区切られたリストであることが必要で、カンマ区切りのリスト以外の場合は拒否されます。二重引用符内のカンマは無視されます。

- カンマで区切られたリストに、マルチバイト・キャラクタを含めることはできません。

- tabにある値は、変換されずに元のリストからコピーされます。

- 区切り文字間の文字列の長さが30バイトを超えると、このプロシージャは失敗します。

COMPILE_SCHEMAプロシージャ

このプロシージャは、指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージ、ビューおよびトリガーをコンパイルします。

構文

DBMS_UTILITY.COMPILE_SCHEMA (
schema          IN VARCHAR2,
compile_all     IN BOOLEAN DEFAULT TRUE,
reuse_settings  IN BOOLEAN DEFAULT FALSE);

パラメータ

表174-11 COMPILE_SCHEMAプロシージャのパラメータ

パラメータ

説明

schema

スキーマの名前。

compile_all

TRUEに設定すると、VALIDであるかどうかに関係なく、スキーマ内のすべてをコンパイルします。

FALSEに設定すると、INVALIDオブジェクトのみをコンパイルします。

reuse_settings

オブジェクトのセッション設定を再利用するかどうか、または現在のセッション設定を採用するかどうかを指定します。

例外

表174-12 COMPILE_SCHEMAプロシージャの例外

例外

説明

ORA-20000

このスキーマ内のいずれかのオブジェクトに対して権限が不十分です。

ORA-20001

SYSオブジェクトを再コンパイルできません。

ORA-20002

最大反復数を超えています。一部のオブジェクトが再コンパイルされていない可能性があります。

使用上の注意

- このサブプログラムは、UTL_RECOMPパッケージのRECOMP_SERIALプロシージャのラッパーであることに注意してください。

- このプロシージャのコール後、ステータスがINVALIDの項目をビューALL_OBJECTSから選択して、すべてのオブジェクトが正常にコンパイルされたかどうかを調べます。

- Enterprise Managerのコマンドを使用すると、INVALIDのオブジェクトに関連するエラーを表示できます。

SHOW ERRORS <type> <schema>.<name>

CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ

このプロシージャは、ALTER TYPE文のEXCEPTION句で使用するためのエラー表を作成します。

構文

DBMS_UTILITY.CREATE_ALTER_TYPE_ERROR_TABLE(
schema_name     IN     VARCHAR2,
table_name      IN     VARCHAR2);

パラメータ

表174-13 CREATE_ALTER_TYPE_ERROR_TABLEプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。

table_name

作成する表名。

例外

表がすでに存在する場合、エラーが戻されます。

CURRENT_INSTANCEファンクション

このファンクションは、現在接続しているインスタンス番号を戻します。接続しているインスタンスが停止している場合、NULLを戻します。

構文

DBMS_UTILITY.CURRENT_INSTANCE
RETURN NUMBER;

DATA_BLOCK_ADDRESS_BLOCKファンクション

このファンクションは、データ・ブロック・アドレスのブロック番号部分を取得します。

構文

DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK (
dba NUMBER)
RETURN NUMBER;

パラメータ

表174-14 DATA_BLOCK_ADDRESS_BLOCKファンクションのパラメータ

パラメータ

説明

dba

データ・ブロック・アドレス。

プラグマ

pragma restrict_references(data_block_address_block, WNDS, RNDS, WNPS, RNPS);

戻り値

ブロックのブロック・オフセット。

使用上の注意

このファンクションは、bigfile表領域に属するデータブロックには使用しないでください。

DATA_BLOCK_ADDRESS_FILEファンクション

このファンクションは、データ・ブロック・アドレスのファイル番号部分を取得します。

構文

DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE (
dba NUMBER)
RETURN NUMBER;

パラメータ

表174-15 DATA_BLOCK_ADDRESS_FILEファンクションのパラメータ

パラメータ

説明

dba

データ・ブロック・アドレス。

プラグマ

pragma restrict_references (data_block_address_file, WNDS, RNDS, WNPS, RNPS);

戻り値

ブロックを含むファイル。

使用上の注意

このファンクションは、bigfile表領域に属するデータブロックには使用しないでください。

DB_VERSIONプロシージャ

このプロシージャは、データベースに関するバージョン情報を戻します。

構文

DBMS_UTILITY.DB_VERSION (
version       OUT VARCHAR2,
compatibility OUT VARCHAR2);

パラメータ

表174-16 DB_VERSIONプロシージャのパラメータ

パラメータ

説明

version

データベースの内部ソフトウェア・バージョンを表す文字列(例: 7.1.0.0.0)。

この文字列の長さは可変なので、データベース・バージョンによって決定されます。

compatibility

COMPATIBLEがあるinit.oraパラメータによって決定する、データベースの互換性設定。

このパラメータがinit.oraファイルで指定されていない場合は、NULLが戻されます。

EXEC_DDL_STATEMENTプロシージャ

このプロシージャは、parse_stringでDDL文を実行します。

構文

DBMS_UTILITY.EXEC_DDL_STATEMENT (
parse_string IN VARCHAR2);

パラメータ

表174-17 EXEC_DDL_STATEMENTプロシージャのパラメータ

パラメータ

説明

parse_string

実行するDDL文。

EXPAND_SQL_TEXTプロシージャ

このプロシージャは、入力SQL問合せのすべてのビュー参照を対応するビュー副問合せと再帰的に置き換えます。

構文

DBMS_UTILITY.EXPAND_SQL_TEXT (
input_sql_text     IN           CLOB,
output_sql_text    OUT NOCOPY   CLOB);

パラメータ

表174-18 EXPAND_SQL_TEXTプロシージャのパラメータ

パラメータ

説明

input_sql_text

入力SQL問合せのテキスト

output_sql_text

ビューが展開された問合せのテキスト

例外

表174-19 EXPAND_SQL_TEXTプロシージャの例外

例外

説明

ORA-00942

現在のユーザーには、input_sql_textで再帰的に参照されるすべてのビューおよび表を選択する権限がありません。

ORA-24251

input_sql_textはSELECT文ではありません。

ORA-00900

入力が無効です。

ORA-29477

入力LOBサイズが最大サイズの4GB -1を超えています。

使用上の注意

拡張され、マージされたSQL文テキストは、正常完了時にoutput_sql_textにコピーされます。結果として得られる問合せのテキストは、基礎となる表への参照のみを含み、意味的には同等です。ただし、次の点に注意してください。

- いずれかのビューで実行者権限のファンクションが呼び出されたときに、ビュー所有者が拡張SQLテキストのコンパイル・ユーザーまたは実行ユーザーと異なる場合、実行者権限のファンクションが、作成される問合せのテキストで別のユーザーで呼び出されることがあります。

- 動的WHERE句を生成するファンクションが提供されると、VPDポリシーは別の方法で拡張されます。たとえば、ユーザーIDによって別の拡張が引き起こされた場合、このファンクションは別の方法で戻されます。

- リモート・オブジェクトへの参照がある場合、結果は未定義になります。

FORMAT_CALL_STACKファンクション

このファンクションは、現行のコール・スタックをフォーマットします。このファンクションは、コール・スタックにアクセスするための任意ストアド・プロシージャまたはトリガーで使用できます。このファンクションは、デバッグ時に役立ちます。

構文

DBMS_UTILITY.FORMAT_CALL_STACK
RETURN VARCHAR2;

プラグマ

pragma restrict_references(format_call_stack,WNDS);

戻り値

最大2000バイトまでのコール・スタックを戻します。

FORMAT_ERROR_BACKTRACEファンクション

このファンクションは、サブプログラムが範囲外の例外ハンドラから呼び出されているとしても、例外の発生場所にコール・スタックを表示します。出力は、SQLERRMファンクションの出力と似ていますが、サイズ制限が異なります。

構文

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
RETURN VARCHAR2;

戻り値

バックトレース文字列。現在処理されているエラーがない場合、NULL文字列が返されます。

例

CREATE OR REPLACE PROCEDURE Log_Errors ( i_buff in varchar2 ) IS
g_start_pos integer := 1;
g_end_pos  integer;

FUNCTION Output_One_Line RETURN BOOLEAN IS
BEGIN
g_end_pos := Instr ( i_buff, Chr(10), g_start_pos );

CASE g_end_pos > 0
WHEN true THEN
DBMS_OUTPUT.PUT_LINE ( Substr ( i_buff, g_start_pos,
g_end_pos-g_start_pos ) );
g_start_pos := g_end_pos+1;
RETURN TRUE;

WHEN FALSE THEN
DBMS_OUTPUT.PUT_LINE ( Substr ( i_buff, g_start_pos,
(Length(i_buff)-g_start_pos)+1 ) );
RETURN FALSE;
END CASE;
END Output_One_Line;

BEGIN
WHILE Output_One_Line() LOOP NULL;
END LOOP;
END Log_Errors;
/

Set Doc Off
Set Feedback off
Set Echo Off

CREATE OR REPLACE PROCEDURE P0 IS
e_01476 EXCEPTION; pragma exception_init ( e_01476, -1476 );
BEGIN
RAISE e_01476;
END P0;
/
Show Errors

CREATE OR REPLACE PROCEDURE P1 IS
BEGIN
P0();
END P1;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P2 IS
BEGIN
P1();
END P2;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P3 IS
BEGIN
P2();
END P3;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P4 IS
BEGIN P3(); END P4;
/
CREATE OR REPLACE PROCEDURE P5 IS
BEGIN P4(); END P5;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE Top_Naive IS
BEGIN
P5();
END Top_Naive;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE Top_With_Logging IS
-- NOTE: SqlErrm in principle gives the same info as Format_Error_Stack.
-- But SqlErrm is subject to some length limits,
-- while Format_Error_Stack is not.
BEGIN
P5();
EXCEPTION
WHEN OTHERS THEN
Log_Errors ( 'Error_Stack...' || Chr(10) ||
DBMS_UTILITY.FORMAT_ERROR_STACK() );
Log_Errors ( 'Error_Backtrace...' || Chr(10) ||
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() );
DBMS_OUTPUT.PUT_LINE ( '----------' );
END Top_With_Logging;
/
SHOW ERRORS

--------------------------------------------------------------------------------

Set ServerOutput On
call Top_Naive()
/*
ERROR at line 1:
ORA-01476: divisor is equal to zero
ORA-06512: at "U.P0", line 4
ORA-06512: at "U.P1", line 3
ORA-06512: at "U.P2", line 3
ORA-06512: at "U.P3", line 3
ORA-06512: at "U.P4", line 2
ORA-06512: at "U.P5", line 2
ORA-06512: at "U.TOP_NAIVE", line 3
*/
;

Set ServerOutput On
call Top_With_Logging()
/*
Error_Stack...
ORA-01476: divisor is equal to zero
Error_Backtrace...
ORA-06512: at "U.P0", line 4
ORA-06512: at "U.P1", line 3
ORA-06512: at "U.P2", line 3
ORA-06512: at "U.P3", line 3
ORA-06512: at "U.P4", line 2
ORA-06512: at "U.P5", line 2
ORA-06512: at "U.TOP_WITH_LOGGING", line 6
----------
*/
;

/*
ORA-06512:
Cause:
Backtrace message as the stack is
unwound by unhandled exceptions.
Action:
Fix the problem causing the exception
or write an exception handler for this condition.
Or you may need to contact your application administrator
or database administrator.
*/

FORMAT_ERROR_STACKファンクション

このファンクションは、現行のエラー・スタックをフォーマットします。このファンクションは、全エラー・スタックを表示するための例外ハンドラで使用できます。

構文

DBMS_UTILITY.FORMAT_ERROR_STACK
RETURN VARCHAR2;

戻り値

最大2000バイトまでのエラー・スタックを戻します。

GET_CPU_TIMEファンクション

このファンクションは、現在のCPU処理時間を100分の1秒単位で戻します。2つのコールが戻す時間の差分によって、2つのポイント間のCPU処理時間(経過時間の合計ではない)を測定します。

構文

DBMS_UTILITY.GET_CPU_TIME
RETURN NUMBER;

戻り値

任意の時点からの時間を100分の1秒の数で戻します。

使用上の注意

実行された作業の量は、特定の操作の開始ポイントと終了ポイントの差分を測定することによって計算されます。

GET_DEPENDENCYプロシージャ

このプロシージャは、渡されたオブジェクトの依存関係を示します。

構文

DBMS_UTILITY.GET_DEPENDENCY
type      IN     VARCHAR2,
schema    IN     VARCHAR2,
name      IN     VARCHAR2);

パラメータ

表174-20 GET_DEPENDENCYプロシージャのパラメータ

パラメータ

説明

type

オブジェクトのタイプ。たとえば、オブジェクトが表の場合、タイプに'TABLE'を指定します。

schema

オブジェクトのスキーマ名。

name

オブジェクト名。

使用上の注意

このプロシージャは、DBMS_OUTPUTパッケージを使用して結果を表示するため、依存性を表示したい場合は、SET SERVEROUTPUT ONを宣言する必要があります。また、DBMS_OUTPUT出力バッファをチェックするアプリケーションでこのサブプログラムを起動し、DBMS_OUTPUTなどのGET_LINESサブプログラムを使用して出力を取得することもできます。

GET_ENDIANNESSファンクション

このファンクションは、データベース・プラットフォームのエンディアンを取得します。

構文

DBMS_UTILITY.GET_ENDIANNESS
RETURN NUMBER;

戻り値

データベース・プラットフォームのエンディアンを示すNUMBER値(big-endianの場合は1、little-endianの場合は2)。

GET_HASH_VALUEファンクション

このファンクションは、指定した文字列についてハッシュ値を計算します。

構文

DBMS_UTILITY.GET_HASH_VALUE (
name      VARCHAR2,
base      NUMBER,
hash_size NUMBER)
RETURN NUMBER;

パラメータ

表174-21 GET_HASH_VALUEファンクションのパラメータ

パラメータ

説明

name

ハッシュする文字列。

base

戻されるハッシュ値が始まるベース値。

hash_size

必要とするハッシュ表のサイズ。

プラグマ

pragma restrict_references(get_hash_value, WNDS, RNDS, WNPS, RNPS);

戻り値

ハッシュ値は、入力文字列に基づいています。たとえば、ハッシュ値が1000から3047の範囲にある文字列についてハッシュ値を取得するには、ベース値として1000、hash_size値として2048を使用します。hash_sizeパラメータは、2の累乗を使用すると動作が最適になります。

GET_PARAMETER_VALUEファンクション

このファンクションは、指定したinit.oraパラメータの値を取得します。

構文

DBMS_UTILITY.GET_PARAMETER_VALUE (
parnam     IN        VARCHAR2,
intval     IN OUT    BINARY_INTEGER,
strval     IN OUT    VARCHAR2,
listno     IN        BINARY_INTEGER DEFAULT 1)
RETURN BINARY_INTEGER;

パラメータ

表174-22 GET_PARAMETER_VALUEファンクションのパラメータ

パラメータ

説明

parnam

パラメータ名。

intval

整数パラメータの値、または文字列パラメータの値の長さ。

strval

文字列パラメータの値。

listno

リスト項目番号。複数回指定して複数の値を蓄積可能なパラメータからパラメータ値を取得する場合は、このパラメータを使用して個別にそれぞれのパラメータを取得します。

戻り値

パラメータ・タイプ

- パラメータがINTEGER/BOOLEANパラメータの場合は0(ゼロ)

- パラメータが文字列またはファイル・パラメータの場合は1

使用上の注意

- このファンクションを実行するには、V$PARAMETER動的ビューに対するSELECT権限が必要です。

- DBMS_UTILITY.GET_PARAMETER_VALUEを使用すると、init.oraに次のように設定されている場合、先頭のパラメータ設定の/dir1のみが戻されます。

utl_file_dir = /dir1
utl_file_dir = /dir2

ただし、次のように指定すると、完全なカンマ区切り文字列が戻されます。

utl_file_dir = /dir1, /dir2

例

DECLARE
parnam VARCHAR2(256);
intval BINARY_INTEGER;
strval VARCHAR2(256);
partyp BINARY_INTEGER;
BEGIN
partyp := dbms_utility.get_parameter_value('max_dump_file_size',
intval, strval);
dbms_output.put('parameter value is: ');
IF partyp = 1 THEN
dbms_output.put_line(strval);
ELSE
dbms_output.put_line(intval);
END IF;
IF partyp = 1 THEN
dbms_output.put('parameter value length is: ');
dbms_output.put_line(intval);
END IF;
dbms_output.put('parameter type is: ');
IF partyp = 1 THEN
dbms_output.put_line('string');
ELSE
dbms_output.put_line('integer');
END IF;
END;

GET_SQL_HASHファンクション

このファンクションは、MD5アルゴリズムを使用して、指定した文字列についてハッシュ値を計算します。

構文

Dbms_utility.get_sql_hash (
name          IN   VARCHAR2,
hash          OUT  RAW,
pre10ihash    OUT  NUMBER)
RETURN NUMBER;

プラグマ

Pragma Restrict_references(Get_sql_hash, Wnds, Rnds, Wnps, Rnps);

パラメータ

表174-23 GET_SQL_HASHプロシージャのパラメータ

パラメータ

説明

name

ハッシュする文字列。

hash

戻されるハッシュ値の16バイトすべてを格納するフィールド(オプション)。

pre10ihash

10iより前のデータベース・バージョンのハッシュ値を格納するフィールド(オプション)。

戻り値

ハッシュ値(最後の4バイト)は、入力文字列に基づいています。MD5ハッシュ・アルゴリズムでは16バイトのハッシュ値が計算されますが、実際の数値を戻すことができるように最後の4バイトのみを戻します。オプションのRAWパラメータを使用し、16バイトすべてを取得して、10iより前の4バイトのハッシュ値をオプションのpre10i hashパラメータに格納できます。

GET_TIMEファンクション

このファンクションは、現在の時間を100分の1秒単位で判別します。このサブプログラムは、主に経過時間を確認するために使用します。このサブプログラムは、2回(プロセスの開始時と終了時)コールされ、2つ目の(後の)数から1つ目の(先の)数を引くことで経過時間を判別します。

構文

DBMS_UTILITY.GET_TIME
RETURN NUMBER;

戻り値

このサブプログラムが起動された時点からの時間を100分の1秒の数で戻します。

使用上の注意

プラットフォームおよびマシンに応じて、-2147483648から2147483647の範囲の数が戻されるため、アプリケーションによる間隔の判別では、数に付加される記号(マイナス記号)を考慮する必要があります。たとえば2つの数が負である場合、アプリケーション・ロジックで、1つ目の(先の)数が、よりゼロに近い2つ目の(後の)数よりも大きいことが許可される必要があります。同様に、アプリケーションでは、1つ目の(先の)数が負で2つ目の(後の)数が正であることも許可される必要があります。

GET_TZ_TRANSITIONSプロシージャ

このプロシージャは、timezone.datファイルのregionidに基づいてタイムゾーンの遷移を戻します。

構文

DBMS_UTILITY.GET_TZ_TRANSITIONS
regionid      IN     NUMBER,
transitions   OUT    MAXRAW);

パラメータ

表174-24 GET_TZ_TRANSITIONSプロシージャのパラメータ

パラメータ

説明

regionid

リージョンに対応する番号。

transitions

timezone.datファイルのRAWバイト。

例外

表174-25 GET_TZ_TRANSITIONSプロシージャの例外

例外

説明

ORA-6502: PL/SQL: 数値または値のエラーが発生しました

regionidが無効です。

INVALIDATEプロシージャ

このプロシージャは、データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。また、無効化されるオブジェクトに(直接的または間接的に)依存するすべてのオブジェクトも無効化します。

構文

DBMS_UTILITY.INVALIDATE (
p_object_id              NUMBER,
p_plsql_object_settings  VARCHAR2 DEFAULT NULL,
p_option_flags           PLS_INTEGER DEFAULT 0);

パラメータ

表174-26 INVALIDATEプロシージャのパラメータ

パラメータ

説明

p_object_id

無効化するオブジェクトのID番号。これは、ALL_OBJECTSのOBJECT_ID列の値と同じです。object_id引数がNULLまたは無効な値の場合は、例外inv_not_exist_or_no_privが発生します。このプロシージャのコール元は、無効化されるオブジェクトのCREATE権限を持っている必要があり、そうでない場合は、例外inv_not_exist_or_no_privが発生します。

p_plsql_object_settings

p_object_idによって指定されるオブジェクトがPL/SQLオブジェクトでない場合、無視されるこのオプションのパラメータ。このパラメータに値を指定しないと、PL/SQLコンパイラの設定は変更されず、REUSE SETTINGSと同じになります。値を指定した場合は、1つ以上の空白で区切られたPL/SQLコンパイラ設定の値を指定する必要があります。各設定は一度だけ指定でき、それ以外の場合は、例外inv_malformed_settingsが発生します。設定値は、p_object_idで指定したオブジェクトに関してのみ変更され、無効化されている可能性のある依存オブジェクトには影響しません。設定名および設定値では、大/小文字は区別されません。設定を省略し、REUSE SETTINGSを指定した場合、このライブラリ・ユニットの以前のコンパイルでのコンパイラ設定で値が指定されていると、Oracle Databaseは以前の値を使用します。設定を省略し、REUSE SETTINGSを指定しなかったか、または以前のコンパイルでパラメータを指定していなかった場合、データベースはセッション環境からこの設定のための値を取得します。

p_option_flags

このオプション・パラメータのデフォルト値はゼロ(フラグなし)です。INVALIDATEによってサポートされるオプション・フラグです。

- inv_error_on_restrictions(「定数」を参照): このサブプログラムは、無効化が可能なオブジェクトに様々な制限を課します。たとえば、p_object_idによって指定されたオブジェクトは表にできません。デフォルトでは、これらの条件に対してINVALIDATEが暗黙的に戻されます(例外は発生しません)。コール元がこのフラグを設定した場合は、例外inv_restricted_objectが発生します。

例外

表174-27 INVALIDATEの例外

例外

説明

INV_NOT_EXIST_OR_NO_PRIV

object_id引数がNULLまたは無効な値の場合、あるいは無効化されているオブジェクトのCREATE権限をコール元が持っていない場合に発生します。

INV_MALFORMED_SETTINGS

コンパイラの設定がp_plsql_object_settingsパラメータで複数回指定された場合に発生します。

INV_RESTRICTED_OBJECT

p_object_idパラメータに関連する条件の様々な組合せが互いに矛盾する場合に発生します。

使用上の注意

p_object_idによって指定されるオブジェクトのオブジェクト・タイプ(ALL_OBJECTSのobject_type列)は、PROCEDURE、FUNCTION、PACKAGE、PACKAGE BODY、TRIGGER、TYPE、TYPE BODY、LIBRARY、VIEW、OPERATOR、SYNONYM、またはJAVA CLASSである必要があります。オブジェクトがこれらのタイプのいずれでもなく、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生しますが、そうでない場合は、何も実行されません。

p_object_idによって指定されるオブジェクトがSTANDARDのパッケージ仕様部、DBMS_STANDARDのパッケージ仕様部、あるいはDBMS_UTILITYのパッケージ仕様部または本体であり、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生します。そうでない場合は、何も実行されません。

p_object_idによって指定されるオブジェクトがオブジェクト・タイプ仕様部であり、そのタイプに依存する表が存在し、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生します。そうでない場合は、何も実行されません。

例

例1

DBMS_UTILITY.INVALIDATE (1232, 'PLSQL_OPTIMIZE_LEVEL = 2 REUSE SETTINGS');

object_id 1232がHRスキーマのremove_empプロシージャを参照するとします。この場合、前述のコールはremove_empプロシージャを無効とマークし、そのPLSQL_OPTIMIZE_LEVELコンパイラ設定を2に変更します。REUSE SETTINGSが指定されているため、他のコンパイラ設定の値は変更されません。

hr.remove_empに依存するオブジェクトも無効とマークされます。これらのコンパイラのパラメータは変更されません。

例2

DBMS_UTILITY.INVALIDATE (40775, 'plsql_code_type = native');

object_id 40775がOEスキーマのタイプ本体leaf_category_typを参照するとします。この場合、前述のコールは、このタイプ本体を無効とマークし、そのPLSQL_CODE_TYPEコンパイラ設定をNATIVEに変更します。REUSE SETTINGSが指定されているため、他のコンパイラ設定の値は現行のセッション環境から取得されます。

本体に依存できるオブジェクトはないため、無効化の伝達はありません。

例3

DBMS_UTILITY.INVALIDATE (40796);

object_id 40796がOEスキーマのビューoc_ordersを参照するとします。この場合、前述のコールはoc_ordersビューを無効とマークします。

oe.oc_ordersに依存するオブジェクトも無効とマークされます。

IS_BIT_SETファンクション

このファンクションは、指定のRAW値の、指定のビットのビット設定をチェックします。

構文

DBMS_UTILITY.IS_BIT_SET (
r     IN    RAW,   n     IN    NUMBER)
RETURN NUMBER;

パラメータ

表174-28 IS_BET_SETファンクションのパラメータ

パラメータ

説明

r

RAWソース。

n

チェック対象のr内のビット。

戻り値

このファンクションは、raw rでビットnが設定されている場合は1を、それ以外の場合は0(ゼロ)を戻します。ビットは、ビット番号1以上の値が番号付けられます。

IS_CLUSTER_DATABASEファンクション

このファンクションは、このデータベースがクラスタ・データベース・モードで実行されているかどうかを検出します。

構文

DBMS_UTILITY.IS_CLUSTER_DATABASE
RETURN BOOLEAN;

戻り値

インスタンスがクラスタ・データベース・モードで起動されている場合はTRUEを戻し、それ以外の場合はFALSEを戻します。

MAKE_DATA_BLOCK_ADDRESSファンクション

このファンクションは、ファイル番号とブロック番号を指定したデータ・ブロック・アドレスを作成します。データ・ブロック・アドレスは、データベース内のブロックを識別するために使用する内部構造です。このファンクションは、データ・ブロック・アドレスを含んだ特定の固定表にアクセスするときに役立ちます。

構文

DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS (
file  NUMBER,
block NUMBER)
RETURN NUMBER;

パラメータ

表174-29 MAKE_DATA_BLOCK_ADDRESSファンクションのパラメータ

パラメータ

説明

file

ブロックを含むファイル。

block

ブロック増分値に基づくファイル内でのブロックのオフセット。

プラグマ

pragma restrict_references (make_data_block_address, WNDS, RNDS, WNPS, RNPS);

戻り値

データ・ブロック・アドレス。

NAME_RESOLVEプロシージャ

このプロシージャは、指定した名前を解決します。必要に応じてシノニム変換と認可チェックが含まれます。

構文

DBMS_UTILITY.NAME_RESOLVE (
name          IN  VARCHAR2,
context       IN  NUMBER,
schema        OUT VARCHAR2,
part1         OUT VARCHAR2,
part2         OUT VARCHAR2,
dblink        OUT VARCHAR2,
part1_type    OUT NUMBER,
object_number OUT NUMBER);

パラメータ

表174-30 NAME_RESOLVEプロシージャのパラメータ

パラメータ

説明

name

オブジェクト名。

これは、[[a.]b.]c[@d]の形式で指定でき、この場合、a、b、cはSQL識別子、dは、dblinkです。dblinkでは、構文チェックは実行されません。dblinkが指定されている場合や名前がdblinkの一部に変換される場合、オブジェクトは解決されませんが、schema、part1、part2およびdblink OUTの各パラメータには値が入力されます。

a、bおよびcは、デリミタ付き識別子の場合があり、グローバリゼーション・サポート(NLS)文字(シングルおよびマルチバイト)を含む場合があります。

context

0から9の範囲の整数を指定します。

- 0 - 表

- 1 - PL/SQL(2つの部分の名前の場合)

- 2 - 順序

- 3 - トリガー

- 4 - Javaソース

- 5 - Javaリソース

- 6 - Javaクラス

- 7 - タイプ

- 8 - Java共有データ

- 9 - 索引

schema

オブジェクトのスキーマ。nameパラメータにスキーマが指定されていない場合、schemaは、名前を解決することによって決定されます。

part1

名前の最初の部分。この名前のタイプは、part1_typeに指定されます(シノニムまたはパッケージ)。

part2

NULL以外に設定すると、これがサブプログラム名となります。part1がNULL以外の場合、このサブプログラムはpart1が示すパッケージ内に配置されます。part1がNULLの場合、このサブプログラムはトップ・レベルのサブプログラムになります。

dblink

このパラメータがNULL以外の場合、データベース・リンクは、nameの一部として指定されたか、またはnameがデータベース・リンクの一部に変換されるシノニムとして指定されたかのいずれかです。名前変換がさらに必要な場合は、このリモート・ノードでDBMS_UTILITY.NAME_RESOLVEプロシージャをコールする必要があります。

part1_type

part1のタイプは、次のとおりです。

- 5 シノニム

- 7 プロシージャ(トップレベル)

- 8 ファンクション(トップレベル)

- 9 パッケージ

object_number

オブジェクト識別子。

例外

すべてのエラーは、例外を呼び出すことによって処理されます。オブジェクト名の指定時に起こり得る各種の構文エラーに基づいて、広範囲にわたる例外が用意されています。

NAME_TOKENIZEプロシージャ

このプロシージャは、次のように指定した名前を解析するパーサーをコールします。

a [. b [. c ]][@ dblink ]

二重引用符を削除するか、または引用符がない場合は大文字に変換します。ソートに関するすべてのコメントは無視し、意味的な分析は行いません。不明な値はNULLのまま残ります。

構文

DBMS_UTILITY.NAME_TOKENIZE (
name    IN  VARCHAR2,
a       OUT VARCHAR2,
b       OUT VARCHAR2,
c       OUT VARCHAR2,
dblink  OUT VARCHAR2,
nextpos OUT BINARY_INTEGER);

パラメータ

表174-31 NAME_RESOLVEプロシージャのパラメータ

パラメータ

説明

name

SQL識別子で構成された入力名(scott.foo@dblinkなど)。

a

名前の1番目のトークンに対応する出力。

b

名前の2番目のトークンに対応する出力(該当する場合)。

c

名前の3番目のトークンに対応する出力(該当する場合)。

dblink

名前のdblinkに対応する出力。

nextpos

入力名解析後の次の位置。

OLD_CURRENT_SCHEMAファンクション

このファンクションは、sys_context ('userenv', 'current_schema')からのセッション値を戻します。

構文

DBMS_UTILITY.OLD_CURRENT_SCHEMA
RETURN VARCHAR2;

OLD_CURRENT_USERファンクション

このファンクションは、sys_context ('userenv', 'current_user')からのセッション値を戻します。

構文

DBMS_UTILITY.OLD_CURRENT_USER
RETURN VARCHAR2;

PORT_STRINGファンクション

このファンクションは、オペレーティング・システムと、TWO TASK PROTOCOLバージョンのデータベースを識別する文字列を戻します。たとえば、VAX/VMX-7.1.0.0が戻ります。

最大長はポート固有の長さです。

構文

DBMS_UTILITY.PORT_STRING
RETURN VARCHAR2;

プラグマ

pragma restrict_references(port_string, WNDS, RNDS, WNPS, RNPS);

SQLID_TO_SQLHASHファンクション

このファンクションは、SQL IDをハッシュ値に変換します。

構文

DBMS_UTILITY.SQLID_TO_SQLHASH (
sql_id    IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表174-32 SQLID_TO_SQLHASHファンクションのパラメータ

パラメータ

説明

sql_id

SQL文のSQL ID。VARCHAR2(13)である必要があります。

TABLE_TO_COMMAプロシージャ

このプロシージャは、名前のPL/SQL表を名前のカンマ区切りリストに変換します。PL/SQL表を1..nに変換してn+1 nullで終了します。2番目のバージョンでは、完全修飾属性名をサポートしています。

構文

DBMS_UTILITY.TABLE_TO_COMMA (
tab    IN  UNCL_ARRAY,
tablen OUT BINARY_INTEGER,
list   OUT VARCHAR2);

DBMS_UTILITY.TABLE_TO_COMMA (
tab    IN  lname_array,
tablen OUT BINARY_INTEGER,
list   OUT VARCHAR2);

パラメータ

表174-33 TABLE_TO_COMMAプロシージャのパラメータ

パラメータ

説明

tab

表名のリストを含んだPL/SQL表。

tablen

PL/SQL表にある表の数。

list

表名のカンマで区切られたリスト。

戻り値

カンマで区切られたリストおよび表内で検出された要素の数。

VALIDATEプロシージャ

このプロシージャは、無効なデータベース・オブジェクトを有効にします。

構文

DBMS_UTILITY.VALIDATE(
object_id       NUMBER);

DBMS_UTILITY.VALIDATE(
owner          VARCHAR2,
objname        VARCHAR2,
namespace      NUMBER,   edition_name   := SYS_CONTEXT ('USERENV', 'CURRENT_EDITION'));

パラメータ

表174-34 VALIDATEプロシージャのパラメータ

パラメータ

説明

owner

オブジェクトを所有するユーザーの名前。ALL_OBJECTSのOWNERフィールドと同じです。

objname

検証するオブジェクトの名前。ALL_OBJECTSのOBJECT_NAMEフィールドと同じです。

namespace

オブジェクトのネームスペース。obj$のネームスペースフィールドと同じです。同等の数値は次のとおりです。

- 1 = TABLE/PROCEDURE/TYPE

- 2 = BODY

- 3 = TRIGGER

- 4 = INDEX

- 5 = CLUSTER

- 8 = LOB

- 9 = DIRECTORY

- 10 = QUEUE

- 11 = REPLICATION OBJECT GROUP

- 12 = REPLICATION PROPAGATOR

- 13 = JAVA SOURCE

- 14 = JAVA RESOURCE

- 58 =(データ・マイニング)MODEL

edition_name

(注意: 現在使用不可。将来使用するために予約されています。)

使用上の注意

- オブジェクトが、存在しないか、すでに有効か、検証不可能な場合、エラーは発生しません。

- 検証されるオブジェクトが指定したエディションに実在しない場合、サブプログラムは検証前にオブジェクトが実在するエディションに自動的に切り替わります。つまり、VALIDATEをコールしても、指定したエディションではオブジェクトは実体化されません。

- INVALIDATEプロシージャはデータベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。無効化するオブジェクトはそのobject_idで指定します。無効化の前に、サブプログラムは自動的にオブジェクトが実在するエディションに切り替わります。つまり、INVALIDATEをコールしても、現行のエディションではオブジェクトは実体化されません。

WAIT_ON_PENDING_DMLファンクション

このファンクションは、リストされた表にロックをかけていて、指定したscnより前に開始されているすべてのトランザクション(コール元自体のトランザクションを除く)がコミットされるか、またはロールバックされるまで待機します。

構文

DBMS_UTILITY.WAIT_ON_PENDING_DML (
tables     IN       VARCHAR2,
timeout    IN       BINARY_INTEGER,
scn        IN OUT   NUMBER)
RETURN BOOLEAN;

パラメータ

表174-35 WAIT_ON_PENDING_DMLファンクションのパラメータ

パラメータ

説明

tables

1つ以上の表の名前のカンマ区切りリスト。このリストは、COMMA_TO_TABLEプロシージャに対して有効である必要があり、各項目がNAME_RESOLVEプロシージャに対して有効である必要があります。名前には、列指定子またはDBLINK(データベース・リンク)指定子いずれも使用できず、それぞれの名前がローカル・データベースの既存の表に解決される必要があります。

timeout

待機する最大秒数(すべての表およびトランザクションでの合計)。NULLまたは負の値を指定すると、待機時間が非常に長くなります。

scn

SCNで、トランザクションがこの要求に関連するとみなされるには、このSCNより前に開始されている必要があります。値がNULLか、または入力時に意味のあるSCNとして認識されない場合、すべてのインスタンスで最新のSCNが使用され、渡される引数に出力として設定されます。意味のある値が渡された場合は、その値は出力に保持されます。

戻り値

関連するすべてのトランザクションがコミットされたか、またはロールバックされた場合はTRUE、関連するすべてのトランザクションがコミットまたはロールバックする前にタイムアウトが発生した場合はFALSEとなります。

175 DBMS_WARNING

DBMS_WARNINGパッケージは、PL/SQL警告メッセージの動作を操作する方法を提供します。特に、PLSQL_WARNINGS初期化パラメータの設定を読み取って変更することによって、表示しない、表示する、またはエラーとして処理する警告の種類を制御できます。このパッケージは、現在のシステムまたはセッション設定の問合せ、変更、削除のためのインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_WARNINGの使用方法

- セキュリティ・モデル

- DBMS_WARNINGサブプログラムの要約

DBMS_WARNINGの使用方法

- セキュリティ・モデル

セキュリティ・モデル

次のすべてのインタフェースで、scopeパラメータの値がSYSTEMの場合、ユーザーはALTER SYSTEM権限が必要です。

DBMS_WARNINGサブプログラムの要約

表175-1 DBMS_WARNINGパッケージのサブプログラム

サブプログラム

説明

ADD_WARNING_SETTING_CATプロシージャ

以前に指定したwarning_categoryの現在のsessionまたはsystemの警告設定を変更します。

ADD_WARNING_SETTING_NUMプロシージャ

以前に指定したwarning_numberの現在のsessionまたはsystemの警告設定を変更します。

GET_CATEGORYファンクション

メッセージ番号を指定し、カテゴリ名を戻します。

GET_WARNING_SETTING_CATファンクション

セッションの特定の警告カテゴリを戻します。

GET_WARNING_SETTING_NUMファンクション

セッションの特定の警告番号を戻します。

GET_WARNING_SETTING_STRINGファンクション

現在のセッションのすべての警告文字列を戻します。

SET_WARNING_SETTING_STRINGプロシージャ

以前の設定を新しい値と置換します。

ADD_WARNING_SETTING_CATプロシージャ

現在のセッションまたはシステムの警告設定を指定した値で変更できます。この値は、warning_categoryまたはwarning_valueの値が設定されていない場合、既存のパラメータに追加されるか、既存の値が上書きされます。このファンクションをコールする効果は、現在のセッションまたはシステム設定の最後に指定したカテゴリに修飾子(ENABLE/DISABLE/ERROR)を追加するのと同じです。

構文

DBMS_WARNING.ADD_WARNING_SETTING_CAT (
warning_category    IN    VARCHAR2,
warning_value       IN    VARCHAR2,
scope               IN    VARCHAR2);

パラメータ

表175-2 ADD_WARNING_SETTING_CATプロシージャのパラメータ

パラメータ

説明

warning_category

カテゴリの名前。有効な値は、ALL、INFORMATIONAL、SEVEREおよびPERFORMANCEです。

warning_value

カテゴリの値。有効な値は、ENABLE、DISABLEおよびERRORです。

scope

変更をセッション・コンテキストで実行するか、システム・コンテキストで実行するかを指定します。有効な値は、SESSIONまたはSYSTEMです。

ADD_WARNING_SETTING_NUMプロシージャ

現在のsessionまたはsystemの警告設定を、指定した値で変更できます。値がすでに設定されている場合、既存の値が上書きされます。このファンクションをコールする効果は、現在のセッションまたはシステム設定の最後に指定したカテゴリに修飾子(ENABLE/DISABLE/ERROR)を追加するのと同じです。

構文

DBMS_WARNING.ADD_WARNING_SETTING_NUM (
warning_number      IN    NUMBER,
warning_value       IN    VARCHAR2,
scope               IN    VARCHAR2);

パラメータ

表175-3 ADD_WARNING_SETTING_NUMプロシージャのパラメータ

パラメータ

説明

warning_number

警告番号。有効な値はすべての有効な警告番号です。

warning_value

カテゴリの値。有効な値は、ENABLE、DISABLEおよびERRORです。

scope

変更をセッション・コンテキストで実行するか、システム・コンテキストで実行するかを指定します。有効な値は、SESSIONまたはSYSTEMです。

GET_CATEGORYファンクション

このファンクションは、メッセージ番号を指定し、カテゴリ名を戻します。

構文

DBMS_WARNING.GET_CATEGORY (
warning_number  IN   pls_integer)
RETURN VARCHAR2;

パラメータ

表175-4 GET_CATEGORYファンクションのパラメータ

パラメータ

説明

warning_number

警告メッセージ番号。

GET_WARNING_SETTING_CATファンクション

このファンクションは、現在のセッションの特定の警告カテゴリ設定を戻します。

構文

DBMS_WARNING.GET_WARNING_SETTING_CAT (
warning_category    IN    VARCHAR2)
RETURN warning_value;

パラメータ

表175-5 GET_WARNING_SETTING_CATファンクションのパラメータ

パラメータ

説明

warning_category

カテゴリの名前。有効な値は、すべての有効なカテゴリ名(ALL、INFORMATIONAL、SEVEREおよびPERFORMANCE)です。

GET_WARNING_SETTING_NUMファンクション

このファンクションは、現在のセッションの特定の警告番号設定を戻します。

構文

DBMS_WARNING.GET_WARNING_SETTING_NUM (
warning_number      IN    NUMBER)
RETURN warning_value;

パラメータ

表175-6 GET_WARNING_SETTING_NUMファンクションのパラメータ

パラメータ

説明

warning_number

警告番号。有効な値はすべての有効な警告番号です。

GET_WARNING_SETTING_STRINGファンクション

このファンクションは、現在のセッションのすべての警告文字列を戻します。

構文

DBMS_WARNING.GET_WARNING_SETTING_STRING
RETURN VARCHAR2;

使用上の注意

v$parameterまたはv$paramater2固定表に対するSELECTまたは READ権限を持たない場合、またはユーザー自身で警告文字列を解析し、変更して、SET_WARNING_SETTING_STRINGを使用して新しい値を設定する場合に、このファンクションを使用します。

SET_WARNING_SETTING_STRINGプロシージャ

このプロシージャは、以前の設定を新しい値に置き換えます。警告文字列には、ALTER SESSIONまたはSYSTEM SET PLSQL_WARNINGSコマンドの発行時に、'='の右側に使用される同じ構文を使用して、カテゴリおよび警告番号が混在して含まれていてもかまいません。これはALTER SESSIONまたはALTER SYSTEMコマンドと同じ効果です。

構文

DBMS_WARNING.SET_WARNING_SETTING_STRING (
warning_value   IN   VARCHAR2,
scope           IN   VARCHAR2);

パラメータ

表175-7 SET_WARNING_SETTING_STRINGプロシージャのパラメータ

パラメータ

説明

warning_value

新しい値を構成する新しい文字列。

scope

変更をセッション・コンテキストで実行するか、システム・コンテキストで実行するかを指定します。有効な値は、SESSIONまたはSYSTEMです。

176 DBMS_WM

DBMS_WMパッケージはOracle Database Workspace Manager(Workspace Managerとも呼ばれる)へのインタフェースを提供します。

- DBMS_WMのドキュメント

DBMS_WMのドキュメント

このパッケージの詳細は、『Oracle Database Workspace Manager開発者ガイド』のDBMS_WMに関する項を参照してください。

177 DBMS_WORKLOAD_CAPTURE

DBMS_WORKLOAD_CAPTUREパッケージでは、ワークロード取得システムを構成し、ワークロード取得データを生成します。この取得のリプレイは、DBMS_WORKLOAD_REPLAYパッケージによって実装されます。

関連項目:
データベース・リプレイの詳細は、『Oracle Database Testingガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_WORKLOAD_CAPTUREの使用方法

- 概要

- セキュリティ・モデルDBMS_WORKLOAD_CAPTUREサブプログラムの要約

DBMS_WORKLOAD_CAPTUREの使用方法

- 概要

- セキュリティ・モデル

概要

取得インフラストラクチャはインスタンス全体(およびOracle Real Application Clusters(Oracle RAC)内)にわたるため、いずれの時点でも生成されるワークロード取得は1つのみです。したがって、いずれかの時点で1つの状態が存在するため、取得インタフェースにステート・オブジェクトをパラメータとして渡す必要はありません。つまり、すべてのサブプログラムはオブジェクトのメソッドにはできませんが、パッケージ全体のPL/SQLサブプログラムとなります。

セキュリティ・モデル

この項で示すコードには、次の操作に必要な最小限の権限が記述されています。

- ディレクトリ・オブジェクトの作成

- DBMS_WORKLOAD_CAPTUREおよびDBMS_WORKLOAD_REPLAYパッケージで提供されるインタフェースの操作

- リプレイ・クライアント・ユーザー(wrc someuser/somepasswordまたはwrc USER=someuser PASSWORD=somepassword)としての動作

DROP USER rom1 CASCADE;
CREATE USER rom1 IDENTIFIED BY rom1;

GRANT EXECUTE ON DBMS_WORKLOAD_CAPTURE TO rom1;
GRANT EXECUTE ON DBMS_WORKLOAD_REPLAY TO rom1;

GRANT CREATE SESSION TO rom1;
GRANT CREATE ANY DIRECTORY TO rom1;
GRANT SELECT_CATALOG_ROLE TO rom1;
GRANT BECOME USER TO rom1;

取得システムとリプレイ・システムの両方にあるファイルおよびディレクトリに対してアクセスおよび操作を行うには、適切なOS権限が必要です。つまり、取得またはリプレイを実行しているOracleプロセスおよびOSユーザーは、インスタンスが実行されているホストからアクセス可能な1つ以上の共通ディレクトリに対してアクセスおよび操作を行うことができる必要があります。また、リプレイを実行しているOSユーザーは、必要に応じてリプレイ・クライアントのホストに取得データをコピーできるように、リプレイ・クライアントで使用されるホスト上でのwrcの実行およびファイル・システムへの適切なアクセスを行うことができる必要があります。

DBMS_WORKLOAD_CAPTUREサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表177-1 DBMS_WORKLOAD_CAPTUREパッケージのサブプログラム

サブプログラム

説明

ADD_FILTERプロシージャ

指定したフィルタを追加します。

DELETE_CAPTURE_INFOプロシージャ

特定のワークロード取得IDに対応するDBA_WORKLOAD_CAPTURESビューおよびDBA_WORKLOAD_FILTERSビュー内の行を削除します。

DELETE_FILTERプロシージャ

指定したフィルタを削除します。

EXPORT_AWRプロシージャ

特定の取得IDに関連付けられたAWRスナップショットをエクスポートします。

FINISH_CAPTUREプロシージャ

接続されたすべてのセッションに対して取得を停止するように信号を送信し、これ以降にデータベースへの要求が取得されないようにすることによって、ワークロード取得を終了します。

GET_CAPTURE_INFOファンクション

規定のディレクトリに存在するワークロード取得に関するすべての情報を取得して、DBA_WORKLOAD_CAPTURESビューおよびDBA_WORKLOAD_FILTERSビューにインポートし、適切なDBA_WORKLOAD_CAPTURES.IDを戻します。

IMPORT_AWRファンクション

特定の取得IDに関連付けられたAWRスナップショットをインポートします。

REPORTファンクション

1つ以上の異なるソースを使用して、対象とするワークロード取得に関するレポートを戻します。

START_CAPTUREプロシージャ

すべてのインスタンスでワークロード取得を開始します。

ADD_FILTERプロシージャ

このプロシージャは、ワークロードのサブセットを取得するフィルタを追加します。

構文

DBMS_WORKLOAD_CAPTURE.ADD_FILTER (
fname           IN   VARCHAR2 NOT NULL,
fattribute      IN   VARCHAR2 NOT NULL,
fvalue          IN   VARCHAR2 NOT NULL);

DBMS_WORKLOAD_CAPTURE.ADD_FILTER (
fname           IN   VARCHAR2 NOT NULL,
fattribute      IN   VARCHAR2 NOT NULL,
fvalue          IN   NUMBER NOT NULL);

パラメータ

表177-2 ADD_FILTERプロシージャのパラメータ

パラメータ

説明

fname

追加するフィルタの名前。後でフィルタが不要になった場合、削除するときに使用できます。(必須)

fattribute

フィルタを適用する必要がある属性を指定します(必須)。有効な値は、次のとおりです。

- INSTANCE_NUMBER - NUMBER型

- USER - STRING型

- MODULE - STRING型

- ACTION - STRING型

- PROGRAM - STRING型

- SERVICE - STRING型

- PDB_NAME - STRING型

fvalue

フィルタがアクティブであるとみなされるようにするために、特定の属性と同じとなる値を指定します。STRINGタイプのすべての属性について%のようなワイルドカードを使用できます。つまり、NUMBER属性のフィルタは属性=値として解析され、STRING属性のフィルタは属性と同様の値として解析されます(必須)。

使用上の注意

- ワークロード取得フィルタは、START_CAPTUREプロシージャへのdefault_action入力に従って、DEFAULT INCLUSIONモードまたはDEFAULT EXCLUSIONモードのいずれかで機能します。

- ADD_FILTERでは、次のワークロード取得に影響する新しいフィルタを追加します。フィルタがINCLUSIONフィルタまたはEXCLUSIONフィルタのいずれとみなされるかは、START_CAPTUREプロシージャへのdefault_action入力の値によって決まります。

- 一度指定したフィルタは、次のワークロード取得でのみ有効です。後続の取得に同じ一連のフィルタを使用する必要がある場合は、START_CAPTUREプロシージャの実行前に、毎回それらのフィルタを指定する必要があります。

- すべてのフィルタは、DBA_WORKLOAD_FILTERSビューに示されています。

- PDBタイプのフィルタを指定することによって、特定のPDBのワークロードを取得できます。

例

- デフォルトでは、取得はINCLUSIONモードで動作し、指定のフィルタの条件を満たすリクエストを除くすべてが記録されます。たとえば、SCOTTからのリクエストをすべて除外する場合は、取得を開始する前に次のようなフィルタを追加できます。

EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter user1', 'USER', 'SCOTT');

- 複数のフィルタは、論理和演算子ORに従って評価されます。このため、SCOTTとJOHNの両方のワークロードを記録する必要がある場合は、さらにフィルタを追加します。

EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter user2', 'USER', 'JOHN');

- CDBでは、次のようなフィルタによって特定のPDBのワークロードを除外します。

EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter pdb workload', 'PDB_NAME', 'CDB1_PDB1');

- DBMS_APPLICATION_INFOを使用して、データベースに対して発行されたワークロードを識別するには、次のようにします。

DBMS_APPLICATION_INFO.SET_MODULE('ORDER_ENTRY', NULL);
-- run some SQL here
DBMS_APPLICATION_INFO.SET_ACTION('ORDER_ENTRY_LOG');
-- run logging SQL

- ワークロードを取得した後、取得内容からロギングSQLを除外する場合は、次のように取得のフィルタを指定します。

DBMS_WORKLOAD_CAPTURE.ADD_FILTER('filter logging operations', 'ACTION', 'ORDER_ENTRY_LOG');

- 受注トランザクションの全体をフィルタによって除外するには、次のようなフィルタを定義します。

DBMS_WORKLOAD_CAPTURE.ADD_FILTER('filter order entry', 'MODULE', 'ORDER_ENTRY');

DELETE_CAPTURE_INFOプロシージャ

このプロシージャは、特定のワークロード取得IDに対応するDBA_WORKLOAD_CAPTURESビューおよびDBA_WORKLOAD_FILTERSビュー内の行を削除します。

構文

DBMS_WORKLOAD_CAPTURE.DELETE_CAPTURE_INFO
capture_id     IN   NUMBER);

パラメータ

表177-3 DELETE_CAPTURE_INFOプロシージャのパラメータ

パラメータ

説明

capture_id

削除する必要があるワークロード取得のID。DBA_WORKLOAD_CAPTURES.IDに対応します。(必須)

使用上の注意

進行中の取得のIDを渡すと、まず最初に、その取得が自動的に停止します。

DELETE_FILTERプロシージャ

このプロシージャは、指定したフィルタを削除します。

構文

DBMS_WORKLOAD_CAPTURE.DELETE_FILTER (
filter_name           IN   VARCHAR2(40) NOT NULL);

パラメータ

表177-4 DELETE_FILTERプロシージャのパラメータ

パラメータ

説明

filter_name

削除するフィルタ。

使用上の注意

DELETE_FILTERプロシージャは、以前の取得で使用されなかったフィルタにのみ影響します。したがって、フィルタを削除できるのは、そのフィルタがすべての取得の完了後にADD_FILTERプロシージャによって追加された場合のみです。START_CAPTUREおよびFINISH_CAPTUREよりも前にADD_FILTERによって追加されたフィルタは、このサブプログラムによって削除できません。

EXPORT_AWRプロシージャ

このプロシージャは、特定の取得IDに関連付けられたAWRスナップショットをエクスポートします。

構文

DBMS_WORKLOAD_CAPTURE.EXPORT_AWR (
capture_id     IN NUMBER);

パラメータ

表177-5 EXPORT_AWRプロシージャのパラメータ

パラメータ

説明

capture_id

AWRスナップショットがエクスポートされる取得のID。(必須)

使用上の注意

このプロシージャは対応するワークロード取得が現行のデータベースで実行され(このことは、DBA_WORKLOAD_CAPTURES内の対応する行がGET_CAPTURE_INFOファンクションのコールによって作成されていないことを意味します)、元の取得時間に対応するAWRスナップショットが使用可能である場合にのみ機能します。

FINISH_CAPTUREプロシージャ

このプロシージャでは、接続されたすべてのセッションに対してワークロード取得を停止するように信号を送信し、これ以降にデータベースへの要求が取得されないようにします。

構文

DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE
timeout     IN   NUMBER  DEFAULT 30
reason       IN   VARCHAR2 DEFAULT NULL);

パラメータ

表177-6 FINISH_CAPTUREプロシージャのパラメータ

パラメータ

説明

timeout

プロシージャがタイムアウトになるまでの待機時間を秒単位で指定します。現行のワークロード取得を取り消し、セッションによる取得バッファのフラッシュの実行を待機しない場合は、0を指定します。デフォルト値は30秒です。

reason

プロシージャをコールする理由を指定します。理由は、DBA_WORKLOAD_CAPTURESビューのERROR_MESSAGE列に表示されます。

使用上の注意

- デフォルトでは、FINISH_CAPTUREは、タイムアウトになる前に、データベース・クラスタ内のすべてのセッションから正常であることの確認応答を受け取るために30秒待機します。

- FINISH_CAPTUREが確認応答を待機しているときに、ユーザーの要求を実行しているセッションまたは新しいユーザーの要求を受け取ったセッションは、いずれもバッファをフラッシュし、FINISH_CAPTUREに確認応答を返信します。

- FINISH_CAPTUREの継続期間中、データベース・セッションがアイドル状態になったままの場合(次のユーザー要求を待機している場合)、そのセッションは取得バッファをフラッシュしていない可能性があるため、FINISH_CAPTUREに確認応答を送信しません。
これを回避するには、FINISH_CAPTUREの起動中にアイドル状態になったままのセッション(次のユーザー要求を待機しているセッション)をなくします。FINISH_CAPTUREを実行する前にデータベース・セッションをクローズするか、またはFINISH_CAPTUREの期間中にそれらのセッションに新しいデータベース要求を送信します。

GET_CAPTURE_INFOファンクション

このプロシージャは、規定のディレクトリに存在するワークロード取得に関するすべての情報を取得してDBA_WORKLOAD_CAPTURESビューおよびDBA_WORKLOAD_FILTERSビューにインポートし、適切なDBA_WORKLOAD_CAPTURES.IDを戻します。

構文

DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO
dir     IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表177-7 GET_CAPTURE_INFOファンクションのパラメータ

パラメータ

説明

dir

すべてのワークロード取得ファイルが保存されるDIRECTORYオブジェクトの名前(大/小文字が区別される)(必須)。

使用上の注意

規定のディレクトリでの取得を記述した適切な行がDBA_WORKLOAD_CAPTURESにすでに存在する場合、GET_CAPTURE_INFOファンクションは、その行のDBA_WORKLOAD_CAPTURES.IDを戻します。規定のディレクトリに存在する取得と一致する既存の行が存在しない場合は、DBA_WORKLOAD_CAPTURESに新しい行が挿入され、その行のIDが戻されます。

IMPORT_AWRファンクション

EXPORT_AWRプロシージャを使用して元の取得システムからすでにAWRスナップショットがエクスポートされている場合、このプロシージャでは、特定の取得IDに関連付けられたAWRスナップショットがインポートされます。

構文

DBMS_WORKLOAD_CAPTURE.IMPORT_AWR (
capture_id       IN   NUMBER,
staging_schema   IN   VARCHAR2,
force_cleanup    IN   BOOLEAN DEFAULT FALSE)
RETURN NUMBER;

パラメータ

表177-8 IMPORT_AWRファンクションのパラメータ

パラメータ

説明

capture_id

AWRスナップショットがインポートされる取得のID。(必須)

staging_schema

取得ディレクトリからSYS AWRスキーマにAWRスナップショットをインポートする間に、ステージング領域として使用できる現行データベース内の有効なスキーマの名前。SYSスキーマは有効な入力ではありません(必須。大/小文字が区別される)。

force_cleanup

値は次のとおりです。

- TRUE: 特定のstaging_schemaに存在するAWRデータを、実際のインポート操作の前にすべて削除します。AWR内のいずれかの表と一致する名前を持つ表は、実際のインポートより前に、すべて削除されます。通常、これは、次のSQLによって戻されるすべての表の削除と同等です。

SELECT table_name FROM dba_tables
WHERE owner = staging_schema
AND table_name like 'WR_$%';

このオプションは、staging_schema内の該当する表に重要なデータがないことが確実な場合にのみ使用してください。

- FALSE: (デフォルト)インポート操作の前にstaging_schemaから表を削除しません。

戻り値

AWRスナップショットをインポートするときに使用した、ランダムに生成された新しいデータベースIDを戻します。DBA_WORKLOAD_CAPTURESビューのAWR_DBID列に同じ値があります。

使用上の注意

入力として指定したstaging_schemaに、任意のAWR表と同じ名前(WRM$_SNAPSHOT、WRH$_PARAMETERなど)を持つ表が含まれている場合、IMPORT_AWRは失敗します。このような表をstaging_schemaから削除してから、IMPORT_AWRを起動します。

REPORTファンクション

このファンクションは、規定のワークロード取得に関するレポートを生成します。

構文

DBMS_WORKLOAD_CAPTURE.REPORT (
capture_id      IN   NUMBER,
format          IN   VARCHAR2)
RETURN CLOB;

パラメータ

表177-9 REPORTファンクションのパラメータ

パラメータ

説明

capture_id

取得レポートが必要なワークロード取得のID。(必須)

これは、レポートを生成する必要があるワークロード取得を含むディレクトリに関連します。ワークロード取得を含む、ホスト・システム内の有効なディレクトリを示す有効なDIRECTORYオブジェクトである必要があります。

format

レポートの書式を指定します。有効な値は、DBMS_WORKLOAD_CAPTURE.TYPE_TEXTおよびDBMS_WORKLOAD_CAPTURE.TYPE_HTMLです。(必須)

戻り値

指定した形式で表示されたレポート本文。CLOBとして戻されます。

表177-10 Reportファンクションで使用される定数

定数

タイプ

値

説明

TYPE_HTML

VARCHAR2(4)

'HTML'

HTMLバージョンのレポートを生成します。

TYPE_TEXT

VARCHAR2(4)

'TEXT'

format引数への入力として使用し、テキスト・バージョンのレポートを生成します。

START_CAPTUREプロシージャ

このプロシージャは、すべてのインスタンスでワークロード取得を開始します。

構文

DBMS_WORKLOAD_CAPTURE.START_CAPTURE (
name              IN  VARCHAR2,
dir               IN  VARCHAR2,
duration          IN  NUMBER   DEFAULT NULL,
default_action    IN  VARCHAR2 DEFAULT 'INCLUDE',
auto_unrestrict   IN  BOOLEAN  DEFAULT TRUE,
capture_sts       IN  BOOLEAN  DEFAULT FALSE,
sts_cap_interval  IN  NUMBER   DEFAULT 300);

パラメータ

表177-11 START_CAPTUREプロシージャのパラメータ

パラメータ

説明

name

ワークロード取得の名前。後で参照するために、「感謝祭の週末」や「クリスマスの最盛期のワークロード」など、ワークロード取得にラベルを付けることができます。ワークロード取得の名前は、取得されたワークロード・アクションとともに保存されます。(必須)

dir

すべてのワークロード取得ファイルが保存されるDIRECTORYオブジェクトの名前(大/小文字が区別される)。すべてのワークロード取得ファイルを格納するのに十分な領域が必要です。(必須)

duration

ワークロードを取得する必要がある期間(秒単位)を指定するオプションの入力。DEFAULTはNULLで、これは、ユーザーがDBMS_WORKLOAD_CAPTURE.FINISH_CAPTUREを実行するまでワークロード取得が続行されることを意味します。

default_action

INCLUDEまたはEXCLUDEに設定できます。デフォルトですべてのユーザー要求を取得するか、または取得しないかが決定されます。また、指定したワークロード・フィルタをINCLUSIONフィルタとみなすか、またはEXCLUSIONフィルタとみなすかも決定されます。

- INCLUDEの場合、フィルタで定義されたワークロードの部分以外は、データベースへのすべてのユーザー要求がデフォルトで取得されます。この場合、ADD_FILTERプロシージャを使用して指定したフィルタはすべてEXCLUSIONフィルタとして処理され、取得しないワークロードが決定されます。(DEFAULTおよび指定したすべてのフィルタは、EXCLUSIONフィルタとみなされます。)

- EXCLUDEの場合、フィルタで定義されたワークロードの部分以外は、データベースへのユーザー要求はデフォルトでは取得されません。この場合、ADD_FILTERプロシージャを使用して指定したフィルタはすべてINCLUSIONフィルタとして処理され、取得するワークロードが決定されます。

auto_unrestrict

TRUEまたはFALSEに設定できます。

- TRUEの場合、STARTUP RESTRICTを使用してRESTRICTEDモードで起動したすべてのインスタンスは、START_CAPTUREの実行によって自動的に制限解除されます。(DEFAULT)

- FALSEの場合、データベース・インスタンスが自動的に制限解除されることはありません。

capture_sts

このパラメータがTRUEの場合、ワークロード取得と並行してSQLチューニング・セット取得も開始されます。取得されたSQLチューニング・セットは、EXPORT_AWRプロシージャを使用してAWRデータとともにエクスポートできます。現在、Oracle RAC環境でパラレルSTS取得はサポートされていないため、このパラメータをOracle RAC環境で使用しても効果は得られません。DBMS_WORKLOAD_REPLAYインタフェースを使用して定義された取得フィルタは、SQLチューニング・セット取得に適用されません。コール・ユーザーは、適切な権限('ADMINISTER SQL TUNING SET')を持っている必要があります。

SQLセット取得の開始に失敗した場合、ワークロード取得も停止されます。その理由は、DBA_WORKLOAD_CAPTURES.ERROR_MESSAGEに格納されます。デフォルト値はFALSEです。

sts_cap_interval

カーソル・キャッシュからのSQLセット取得の取得間隔を秒単位で指定します。デフォルト値は300です。

使用上の注意

- START_CAPTUREの正常な起動後にデータベースに送信されるすべてのユーザー要求は、期間を指定されている場合、その特定の期間特定のdirディレクトリに記録されます。期間が指定されていない場合は、取得はFINISH_CAPTUREプロシージャが実行されるまで無制限に続行されます。

- 開始されたワークロード取得では、指定された期間の終了(データベース・インスタンスの停止および起動をまたぐ)、またはFINISH_CAPTUREの実行のいずれかが先に発生するまで、ユーザー要求を記録し続けます。

- ワークロード・フィルタ(ADD_FILTERプロシージャを参照)を使用すると、データベースに送信されたユーザー要求のサブセットのみを取得できます。デフォルトでは、ワークロード・フィルタが定義されていないと、すべてのユーザー要求が取得されます。

- Oracle Databaseのバックグラウンド・プロセス(SMON、PMON、MMONなど)およびOracle Database Schedulerジョブ(DBMS_SCHEDULERパッケージを参照)から開始されたワークロードは、ワークロード・フィルタの定義に関係なく取得されません。これらのアクティビティは、適切に構成されたリプレイ・システムで自動的に行われる必要があります。

- STARTUP RESTRICTを使用してRESTRICTEDモードで起動されたすべてのデータベース・インスタンスは、デフォルトでは、START_CAPTUREが正常に起動すると、UNRESTRICTEDになります。このように動作させない場合は、auto_unrestrict入力パラメータにFALSEを使用します。

- 取得されたワークロードのリプレイを開始する前にリプレイ・システムを開始ポイントにリストアできるように、適切に定義されたワークロードの開始ポイントを取得することが重要です。ワークロードの取得の開始ポイントを適切に定義するには、START_CAPTUREを実行したときにアクティブなユーザー・セッションが存在しないことが理想的です。継続中のセッションでトランザクションが実行されている場合、それらのトランザクションはその後のデータベース・リプレイで適切にリプレイされませんが、これは、トランザクションのうち、START_CAPTUREの後に実行されたコールの部分しかリプレイされないためです。

178 DBMS_WORKLOAD_REPLAY

DBMS_WORKLOAD_REPLAYパッケージは、ワークロード取得をリプレイするためのインタフェースを提供します。

関連項目:
データベース・リプレイの詳細は、『Oracle Database Testingガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_WORKLOAD_REPLAYの使用方法

- 概要

- セキュリティ・モデル

- DBMS_WORKLOAD_REPLAYサブプログラムの要約

DBMS_WORKLOAD_REPLAYの使用方法

- 概要

- セキュリティ・モデル

概要

DBMS_WORKLOAD_REPLAYパッケージでは、DBMS_WORKLOAD_CAPTUREパッケージによって最初に作成されたワークロード取得をリプレイするために使用されるインタフェースが提供されます。通常、DBMS_WORKLOAD_CAPTUREパッケージは、本番システムで本番ワークロードを取得する場合に使用され、DBMS_WORKLOAD_REPLAYパッケージは、その後、取得された本番ワークロードをテストするためにテスト・システムでリプレイする場合に使用されます。

セキュリティ・モデル

この項で示すコードには、次の操作に必要な最小限の権限が記述されています。

- ディレクトリ・オブジェクトの作成

- DBMS_WORKLOAD_CAPTUREおよびDBMS_WORKLOAD_REPLAYパッケージで提供されるインタフェースの操作

- リプレイ・クライアント・ユーザー(wrc someuser/somepasswordまたはwrc USER=someuser PASSWORD=somepassword)としての動作

DROP USER rom1 CASCADE;
CREATE USER rom1 IDENTIFIED BY rom1;

GRANT EXECUTE ON DBMS_WORKLOAD_CAPTURE TO rom1;
GRANT EXECUTE ON DBMS_WORKLOAD_REPLAY TO rom1;

GRANT CREATE SESSION TO rom1;
GRANT CREATE ANY DIRECTORY TO rom1;
GRANT SELECT_CATALOG_ROLE TO rom1;
GRANT BECOME USER TO rom1;

取得システムとリプレイ・システムの両方にあるファイルおよびディレクトリに対してアクセスおよび操作を行うには、適切なOS権限が必要です。取得またはリプレイを実行しているOracleプロセスおよびOSユーザーは、インスタンスが実行されているホストからアクセス可能な1つ以上の共通ディレクトリに対してアクセスおよび操作を行うことができる必要があります。

リプレイ・クライアントはマルチスレッド化されたプログラム($ORACLE_HOME/binディレクトリにあるwrcという名の実行可能ファイル)で、スレッドごとに取得済セッションからワークロードを発行します。リプレイを実行しているOSユーザーは、必要に応じてリプレイ・クライアントのホストに取得データをコピーできるように、リプレイ・クライアントで使用されるホスト上でのwrcの実行およびファイル・システムへの適切なアクセスを行うことができる必要があります。

DBMS_WORKLOAD_REPLAYサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表178-1 DBMS_WORKLOAD_REPLAYパッケージのサブプログラム

サブプログラム

説明

ADD_CAPTUREファンクション

特定の取得を現在のスケジュールに追加します。

ADD_FILTERプロシージャ

取得されたワークロードのサブセットのみをリプレイするフィルタを追加します。

ADD_SCHEDULE_ORDERINGファンクション

2つの取得間のスケジュール順序を追加します。

BEGIN_REPLAY_SCHEDULEプロシージャ

再使用可能なリプレイ・スケジュールの作成を開始します。

CALIBRATEファンクション

処理されたワークロード取得ディレクトリで動作し、指定したワークロードを正確にリプレイするために必要とされるホストおよびワークロード・リプレイ・クライアントの数を見積もります。

CANCEL_REPLAYプロシージャ

進行中のワークロードのリプレイを取り消します。

COMPARE_PERIOD_REPORTプロシージャ

リプレイとその取得、またはリプレイと同じ取得の別のリプレイを比較するレポートを生成します。

COMPARE_SQLSET_REPORTファンクション

リプレイ中に取得されたsqlsetと、ワークロード取得中に取得されたsqlsetまたは同じ取得の別のリプレイ中に取得されたsqlsetを比較するレポートを生成します。

CREATE_FILTER_SETプロシージャ

追加されたリプレイ・フィルタを使用して、replay_dirのリプレイに対して使用するフィルタ・セットを作成します。

DELETE_FILTERプロシージャ

指定されたフィルタを削除します。

DELETE_REPLAY_INFOプロシージャ

指定したワークロード・リプレイIDに対応するDBA_WORKLOAD_REPLAYS内の行を削除します。

END_REPLAY_SCHEDULEプロシージャ

現在のスケジュールの作成を完了します。

EXPORT_AWRプロシージャ

指定されたリプレイIDに関連付けられている自動ワークロード・リポジトリ(AWR)のスナップショットをエクスポートします。

GENERATE_CAPTURE_SUBSETプロシージャ

既存のワークロード取得から新しい取得を作成します。

GET_DIVERGING_STATEMENTファンクション

指定されたリプレイIDに関連付けられている自動ワークロード・リポジトリ(AWR)のスナップショットをエクスポートします。

GET_REPLAY_DIRECTORYファンクション

SET_REPLAY_DIRECTORYプロシージャによって設定された現在のリプレイ・ディレクトリを戻します。

GET_REPLAY_INFOファンクション

ワークロード取得に関する情報と、関連ディレクトリからのすべてのワークロード・リプレイ試行の履歴に関する情報を取得します。

GET_REPLAY_TIMEOUTプロシージャ

リプレイのタイムアウト設定を取得します。

IMPORT_AWRファンクション

指定されたリプレイIDに関連付けられている自動ワークロード・リポジトリ(AWR)のスナップショットをインポートします。

INITIALIZE_CONSOLIDATED_REPLAYプロシージャ

複数の取得リプレイに対してデータベースの状態をINITに設定します。

INITIALIZE_REPLAYプロシージャ

リプレイを初期化し、処理中に生成された特定のデータをデータベースにロードします。

IS_REPLAY_PAUSEDファンクション

リプレイが一時停止中かどうかをレポートします。

PAUSE_REPLAYプロシージャ

進行中のワークロードのリプレイを一時停止します。

POPULATE_DIVERGENCEプロシージャ

特定のコール、ストリームまたはリプレイ全体の相違情報を事前計算して、GET_DIVERGING_STATEMENTファンクションが事前計算されたコールに可能な限り迅速に戻ることができるようにします。

PREPARE_REPLAYプロシージャ

データベースを特別な「準備」モードにします。

PREPARE_CONSOLIDATED_REPLAYプロシージャ

複数の取得リプレイに対してデータベースを特別な「準備」モードにします。

PROCESS_CAPTUREプロシージャ

capture_dir内で検出されたワークロード取得を処理します。

REMAP_CONNECTIONプロシージャ

ワークロードのリプレイ中にユーザー・セッションが希望の方法でデータベースに接続できるように、取得された接続を新しい接続に再マップします。

REMOVE_CAPTUREプロシージャ

現在のスケジュールから特定の取得を削除します。

REMOVE_SCHEDULE_ORDERINGプロシージャ

現在のリプレイ・スケジュールから既存のスケジュール順序を削除します。

REPORTファンクション

特定のワークロードのリプレイに関するレポートを生成します。

RESUME_REPLAYプロシージャ

一時停止しているワークロードのリプレイを再開します。

REUSE_REPLAY_FILTER_SETプロシージャ

指定されたフィルタ・セットの各フィルタを、ADD_SCHEDULE_ORDERINGプロシージャを使用して追加する場合と同じように再利用します。

SET_ADVANCED_PARAMETERプロシージャ

PREPARE_REPLAYプロシージャで使用されるパラメータ以外に、リプレイに対して詳細なパラメータを設定します。

SET_REPLAY_DIRECTORYプロシージャ

複数のワークロード取得を含むディレクトリを現在のリプレイ・ディレクトリとして設定します。

SET_REPLAY_TIMEOUTプロシージャ

リプレイのタイムアウト設定を指定します。

SET_USER_MAPPINGプロシージャ

取得されたユーザーのかわりに、リプレイ中に使用する新規スキーマまたはユーザー名を設定します。

START_CONSOLIDATED_REPLAYプロシージャ

複数の取得のリプレイを開始します。

START_REPLAYプロシージャ

ワークロードのリプレイを開始します。

USE_FILTER_SETプロシージャ

CREATE_FILTER_SETプロシージャをコールして作成された特定のフィルタ・セットを使用して、現行のリプレイをフィルタ処理します。

ADD_CAPTUREファンクション

このファンクションは、特定の取得を現在のスケジュールに追加します。ディレクトリは、現行データベースのバージョンで処理された、有効な取得である必要があります。このスケジュール内の取得を識別する一意のIDを戻します。

構文

DBMS_WORKLOAD_REPLAY.ADD_CAPTURE (
capture_dir_name      IN    VARCHAR2,
start_delay_seconds   IN    NUMBER  DEFAULT 0,
stop_replay           IN    BOOLEAN FALSE,
take_begin_snapshot   IN    BOOLEAN TRUE,
take_end_snapshot     IN    BOOLEAN TRUE,
query_only            IN    BOOLEAN DEFAULT FALSE)
RETURN NUMBER;

DBMS_WORKLOAD_REPLAY.ADD_CAPTURE (
capture_dir_name      IN    VARCHAR2,
start_delay_seconds   IN    NUMBER  DEFAULT 0,
stop_replay           IN    BOOLEAN FALSE,
take_begin_snapshot   IN    BOOLEAN TRUE,
take_end_snapshot     IN    BOOLEAN TRUE,
query_only            IN    VARCHAR2 DEFAULT 'N')
RETURN NUMBER;

パラメータ

表178-2 ADD_CAPTUREファンクションのパラメータ

パラメータ

説明

capture_dir_name

リプレイの最上位のディレクトリの下に取得を含むOSディレクトリの名前。

start_delay_seconds

この取得のリプレイが開始されるまでの遅延時間(秒単位)。

stop_replay

リプレイを終了後に停止します。

take_begin_snapshot

この取得のリプレイが開始されるときにAWRスナップショットを取ります。

take_end_snapshot

この取得のリプレイが終了するときにAWRスナップショットを取ります。

query_only

このワークロード取得の読取り専用問合せのみをリプレイします。

使用上の注意

SET_REPLAY_DIRECTORYプロシージャがすでにコールされている必要があります。

ADD_FILTERプロシージャ

このプロシージャは、取得されたワークロードのサブセットのみをリプレイするフィルタを追加します。

プロシージャによって追加される新しいフィルタは、CREATE_FILTER_SETプロシージャで作成される次のリプレイ・フィルタ・セットで使用されます。このフィルタは、フィルタ・セットの作成時にCREATE_FILTER_SETに渡される引数に応じて、「INCLUSION」または「EXCLUSION」フィルタとみなされます。

構文

DBMS_WORKLOAD_REPLAY.ADD_FILTER (
fname          IN VARCHAR2,
fattribute     IN VARCHAR2,
fvalue         IN VARCHAR2);

DBMS_WORKLOAD_REPLAY.ADD_FILTER (
fname          IN VARCHAR2,
fattribute     IN VARCHAR2,
fvalue         IN NUMBER);

パラメータ

表178-3 ADD_FILTERプロシージャのパラメータ

パラメータ

説明

fname

フィルタ名(必須)。後でフィルタが不要になった場合、削除するときに使用できます。

fattribute

STRINGタイプの次のいずれかの値によって、フィルタを定義する属性を指定します(必須)。

- USER

- MODULE

- ACTION

- PROGRAM

- SERVICE

- CONNECTION_STRING

fvalue

フィルタがアクティブであるとみなされるようにするために、特定の属性と同じにする必要のある値を指定します(必須)。STRINGタイプのすべての属性について%のようなワイルドカードを使用できます。現在、fattributeのリストされた値のタイプはすべてSTRINGです。INSTANCE_NUMBERはNUMBER属性です。これは現在、取得のみでサポートされています。

ADD_SCHEDULE_ORDERINGファンクション

このファンクションは、2つの取得間のスケジュール順序を追加します。schedule_capture_idとwaitfor_capture_idを同時に指定することで、以前はADD_SCHEDULE_ORDERINGファンクションにより追加されていたスケジュール順序が構成されます。この順序では、waiting_for_capture_idにより指定された取得のリプレイが終了しないかぎり、schedule_capture_idにより指定された取得のリプレイは開始しません。

構文

DBMS_WORKLOAD_REPLAY.ADD_SCHEDULE_ORDERING (
schedule_capture_id     IN VARCHAR2,
waitfor_capture_id      IN VARCHAR2)
RETURN NUMBER;

パラメータ

表178-4 ADD_SCHEDULE_ORDERINGファンクションのパラメータ

パラメータ

説明

schedule_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします。このサブプログラムにより追加された新規のスケジュール順序によると、そのリプレイは、waitfor_capture_idにより指定された別の取得のリプレイが完了するまで開始しません。

waitfor_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします。このサブプログラムにより追加された新規のスケジュール順序によると、schedule_capture_idにより指定された取得のリプレイは、この取得のリプレイが完了するまで開始しません。

戻り値

この制約を追加できない場合、ゼロ以外のエラー・コードを返します。

使用上の注意

2つの取得は、リプレイ・スケジュールにすでに追加されている必要があります。

BEGIN_REPLAY_SCHEDULEプロシージャ

このプロシージャは、再使用可能なリプレイ・スケジュールの作成を開始します。

構文

DBMS_WORKLOAD_REPLAY.BEGIN_REPLAY_SCHEDULE  (
replay_dir_obj     IN     VARCHAR2,
schedule_name      IN     VARCHAR2);

パラメータ

表178-5 BEGIN_REPLAY_SCHEDULEプロシージャのパラメータ

パラメータ

説明

replay_dir_obj

スケジュールに関連するすべての取得ディレクトリを含むリプレイ・ディレクトリを指すディレクトリ・オブジェクト。

schedule_name

リプレイするスケジュールの名前。

使用上の注意

- 作成モードにできるスケジュールは、一度に1つのみです。end_replay_scheduleの前にこのサブプログラムを再度コールすると、エラーが発生します。

- 前提条件は次のとおりです。

- 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、ワークロード取得がすでに処理されています。

- 取得ディレクトリを適切にコピーしておく必要があります。

- データベースがリプレイ・モードではありません。

- SET_REPLAY_DIRECTORYプロシージャがすでにコールされています。

CALIBRATEファンクション

このファンクションは、処理されたワークロード取得ディレクトリで動作し、指定したワークロードを正確にリプレイするために必要とされるホストおよびワークロード・リプレイ・クライアントの数を見積もります。このファンクションは、結果をXML CLOBとして戻します。

構文

DBMS_WORKLOAD_REPLAY.CALIBRATE (
capture_dir          IN VARCHAR2,
process_per_cpu      IN BINARY_INTEGER DEFAULT 4,
threads_per_process  IN BINARY_INTEGER DEFAULT 50)
RETURN CLOB;

パラメータ

表178-6 CALIBRATEファンクションのパラメータ

パラメータ

説明

capture_dir

処理済の取得データが格納されたOSディレクトリを指すディレクトリ・オブジェクトの名前(大/小文字が区別される)。

process_per_cpu

CPUごとに許可される処理の最大数(デフォルトは4)。

threads_per_process

処理ごとに許可されるスレッドの最大数(デフォルトは50)。

戻り値

次の情報が含まれているXML形式のCLOBを戻します。

- 取得に関する情報

- 現行のデータベース・バージョン

- このファンクションへの入力パラメータ

- 指定したワークロードのリプレイに必要なCPUおよびリプレイ・クライアントの数

- 取得されたセッションに関する情報(合計数および最大同時実行)

使用上の注意

- 前提条件: 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、入力ワークロード取得がすでに処理されています。

- このプロシージャは、calibrateモードでのワークロード・リプレイ・クライアントと同じ結果を戻します。calibrateモードは、次のように実行できます。

$ wrc mode=calibrate replaydir=

CANCEL_REPLAYプロシージャ

このプロシージャは、進行中のワークロードのリプレイを取り消します。すべての外部リプレイ・クライアント(WRC)は、取得したワークロードの発行を停止し、終了するように自動的に通知されます。

構文

DBMS_WORKLOAD_REPLAY.CANCEL_REPLAY (
error_msg    IN VARCHAR2 DEFAULT NULL);

パラメータ

表178-7 CANCEL_REPLAYプロシージャのパラメータ

パラメータ

説明

error_msg

リプレイを取り消すオプションの理由を渡すことができ、この理由はDBA_WORKLOAD_REPLAYS.ERROR_MESSAGEに記録されます。

使用上の注意

前提条件: INITIALIZE_REPLAYプロシージャ、PREPARE_REPLAYプロシージャまたはSTART_REPLAYプロシージャに対するコールがすでに発行されていること。

COMPARE_PERIOD_REPORTプロシージャ

このプロシージャは、リプレイとその取得、またはリプレイと同じ取得の別のリプレイを比較するレポートを生成します。

構文

DBMS_WORKLOAD_REPLAY.COMPARE_PERIOD_REPORT (
replay_id1   IN   NUMBER,
replay_id2   IN   NUMBER,
format       IN   VARCHAR2,
result       OUT  CLOB );

パラメータ

表178-8 COMPARE_PERIOD_REPORTプロシージャのパラメータ

パラメータ

説明

replay_id1

レポートが必要なワークロード・リプレイの最初のID

replay_id2

レポートが必要なワークロード・リプレイの2番目のID。これがNULLの場合は、取得との比較が実行されます。

format

レポートの書式を指定します。有効な値は、DBMS_WORKLOAD_CAPTURE.TYPE_HTMLおよびDBMS_WORKLOAD_CAPTURE.TYPE_XMLです。

result

レポートの出力(CLOB)

COMPARE_SQLSET_REPORTファンクション

このプロシージャは、リプレイ中に取得されたsqlsetと、ワークロード取得中に取得されたsqlsetまたは同じ取得の別のリプレイ中に取得されたsqlsetを比較するレポートを生成します。

構文

DBMS_WORKLOAD_REPLAY.COMPARE_SQLSET_REPORT (
replay_id1    IN NUMBER,
replay_id2    IN NUMBER,
format        IN VARCHAR2,
r_level       IN VARCHAR2 DEFAULT 'ALL',
r_sections    IN VARCHAR2 DEFAULT 'ALL',
result        OUT CLOB )
RETURN VARCHAR2;

パラメータ

表178-9 COMPARE_SQLSET_REPORTファンクションのパラメータ

パラメータ

説明

replay_id1

変更後のワークロード・リプレイを示す1番目のID。

replay_id2

変更前のワークロード・リプレイを示す2番目のID。これがNULLの場合は、取得との比較が実行されます。

format

レポートの書式を指定します。有効な値は、DBMS_WORKLOAD_CAPTURE.TYPE_HTML、DBMS_WORKLOAD_CAPTURE.TYPE_XMLおよびDBMS_WORKLOAD_CAPTURE.TYPE_TEXTです。

r_level

DBMS_SQLPAパッケージのREPORT_ANALYSIS_TASKファンクションのlevelパラメータを参照してください。

r_sections

DBMS_SQLPAパッケージのREPORT_ANALYSIS_TASKファンクションのsectionパラメータを参照してください。

result

レポートの出力(CLOB)

CREATE_FILTER_SETプロシージャ

このプロシージャは、replay_dirでリプレイに対してフィルタ・セットを新規に作成します。これには、すでにADD_FILTER Procedureによって追加されたリプレイ・フィルタがすべて含まれます。プロシージャが完了してリプレイが開始された後、新規作成されたフィルタ・セットを使用して、USE_FILTER_SETプロシージャをコールすることでreplay_dirのリプレイをフィルタ処理できます。

構文

DBMS_WORKLOAD_REPLAY.CREATE_FILTER_SET(
replay_dir       IN  VARCHAR2,
filter_set       IN  VARCHAR2,
default_action   IN  VARCHAR2 DEFAULT 'INCLUDE');

パラメータ

表178-10 CREATE_FILTER_SETプロシージャのパラメータ

パラメータ

説明

replay_dir

フィルタ処理するリプレイのオブジェクト・ディレクトリ

filter_set

作成するフィルタ・セットの名前(USE_FILTER_SETプロシージャで使用されます)。

default_action

INCLUDEまたはEXCLUDEに設定できます。デフォルトですべての取得コールをリプレイする必要があるかどうかを決定します。また、指定したワークロード・フィルタをINCLUSIONフィルタとみなすか、またはEXCLUSIONフィルタとみなすかも決定されます。

INCLUDEの場合は、フィルタで定義されたワークロードの一部を除き、取得されたすべてのコールがデフォルトでリプレイされます。この場合、ADD_SCHEDULE_ORDERINGファンクションを使用して指定されたすべてのフィルタは、EXCLUSIONフィルタとして処理され、リプレイしないワークロードが決定されます。

EXCLUDEの場合は、フィルタで定義されたワークロードの一部を除き、データベースへの取得コールはデフォルトでリプレイされません。この場合、ADD_SCHEDULE_ORDERINGファンクションを使用して指定されたすべてのフィルタは、INCLUSIONフィルタとして処理され、リプレイされるワークロードが決定されます。

デフォルト: INCLUDE。指定したすべてのフィルタは、EXCLUSIONフィルタとみなされます。

使用上の注意

この操作は、初期化および準備されたリプレイがなく、進行中のリプレイもないときに起動する必要があります。

DELETE_FILTERプロシージャ

このプロシージャは、指定されたフィルタを削除します。

構文

DBMS_WORKLOAD_REPLAY.DELETE_FILTER(
fname    IN  VARCHAR2);

パラメータ

表178-11 DELETE_FILTERプロシージャのパラメータ

パラメータ

説明

fname

削除する必要のあるフィルタの名前(必須)。

DELETE_REPLAY_INFOプロシージャ

このプロシージャは、指定したワークロード・リプレイIDに対応するDBA_WORKLOAD_REPLAYS内の行を削除します。

構文

DBMS_WORKLOAD_REPLAY.DELETE_REPLAY_INFO (
replay_id    IN  NUMBER);

パラメータ

表178-12 DELETE_REPLAY_INFOプロシージャのパラメータ

パラメータ

説明

replay_id

削除する必要のあるワークロード・リプレイのID(必須)。DBA_WORKLOAD_REPLAYS.IDに対応します。

END_REPLAY_SCHEDULEプロシージャ

このプロシージャは、現在のスケジュールの作成を完了します。スケジュールが保存され、リプレイ・ディレクトリに関連付けられ、リプレイに使用できるようになります。

構文

DBMS_WORKLOAD_REPLAY.END_REPLAY_SCHEDULE;

使用上の注意

BEGIN_REPLAY_SCHEDULEプロシージャがすでにコールされている必要があります。

EXPORT_AWRプロシージャ

このプロシージャは、規定のリプレイIDに関連付けられたAWRスナップショットをエクスポートします。

構文

DBMS_WORKLOAD_REPLAY.EXPORT_AWR (
replay_id    IN  NUMBER);

パラメータ

表178-13 EXPORT_AWRファンクションのパラメータ

パラメータ

説明

replay_id

AWRスナップショットがエクスポートされるリプレイのID(必須)。

使用上の注意

- 各リプレイの最後に、対応するAWRスナップショットが自動的にエクスポートされます。そのため、EXPORT_AWRの自動起動が失敗しないかぎり、ワークロードのリプレイが完了した後に手動でエクスポートする必要はありません。

- このプロシージャは対応するワークロードのリプレイが現行のデータベースで実行され(このことは、DBA_WORKLOAD_REPLAYS内の対応する行がGET_REPLAY_INFOファンクションのコールによって作成されていないことを意味します)、そのリプレイ時間に対応するAWRスナップショットが使用可能である場合にのみ機能します。

GENERATE_CAPTURE_SUBSETプロシージャ

このプロシージャは、既存のワークロード取得から新しい取得を作成します。

構文

DBMS_WORKLOAD_REPLAY.GENERATE_CAPTURE_SUBSET (
input_capture_dir          IN   VARCHAR2,
output_capture_dir         IN   VARCHAR2,
new_capture_name           IN   VARCHAR2,
begin_time                 IN   NUMBER,
begin_include_incomplete   IN   BOOLEAN DEFAULT TRUE,
end_time                   IN   NUMBER,
end_include_incomplete     IN   BOOLEAN DEFAULT FALSE,
parallel_level             IN   NUMBER DEFAULT NULL);

パラメータ

表178-14 GENERATE_CAPTURE_SUBSETプロシージャのパラメータ

パラメータ

説明

input_capture_dir

既存のワークロード取得を指すディレクトリ・オブジェクトの名前(必須)。

output_capture_dir

新しい取得を指すディレクトリ・オブジェクトの名前(必須)。

new_capture_name

新しい取得の名前(必須)。

begin_time

時間範囲の開始: ワークロード取得の開始からの時間オフセット(秒単位)。

begin_include_incomplete

begin_timeが原因の未完了コールを含む列。

end_time

時間範囲の終了: ワークロード取得の開始からの時間オフセット(秒単位)。end_timeがゼロまたはend_timeがbegin_time以下の場合、この時間範囲は無効です。新しい取得は、入力取得の全期間を使用します。

end_include_incomplete

end_timeが原因の未完了コールを含む列。

parallel_level

入力取得を並行処理するために使用されるOracleプロセスの数。NULL(デフォルト値)ではCPU数に基づいて並列度が自動的に計算され、値が1の場合はシリアル実行が強制的に行われます。

GET_DIVERGING_STATEMENTファンクション

このファンクションは、相違コールに関する情報(文のテキスト、SQL ID、バインドなど)を取得します。記録されたユーザー・コールのリプレイにデータまたはエラーの相違がある場合は、相違コールになります。

構文

DBMS_WORKLOAD_REPLAY.GET_DIVERGING_STATEMENT (
replay_id    IN NUMBER,
stream_id    IN NUMBER,
call_counter IN NUMBER)
RETURN CLOB;

パラメータ

表178-15 GET_DIVERGING_STATEMENTファンクションのパラメータ

パラメータ

説明

replay_id

コールが異なったリプレイのID

stream_id

相違コールのストリームID

call_counter

相違コールのコール・カウンタ

使用上の注意

- 次の情報が含まれているXML形式のCLOBを戻します。

- SQL ID

- SQLテキスト

- バインド情報(位置、名前、値)

- このファンクションは、POPULATE_DIVERGENCEプロシージャを黙示的に起動して、取得ファイルから情報を読み取ります。そのため、相違が移入されていない場合には、特定の相違コールに対してこのファンクションを最初にコールする際に時間がかかることがあります(特に、取得が大規模な場合には時間がかかる可能性があります)。

GET_REPLAY_DIRECTORYファンクション

このファンクションは、SET_REPLAY_DIRECTORYプロシージャによって設定された現在のリプレイ・ディレクトリを戻します。リプレイ・ディレクトリが設定されていない場合、NULLが戻されます。

構文

DBMS_WORKLOAD_REPLAY.GET_REPLAY_DIRECTORY
RETURN VARCHAR2;

GET_REPLAY_INFOファンクション

このファンクションは、ワークロード取得に関する情報と、規定のディレクトリからのすべてのワークロード・リプレイ試行の履歴に関する情報を取得します。

構文

DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO (
dir    IN VARCHAR2)
RETURN NUMBER;

パラメータ

表178-16 GET_REPLAY_INFOファンクションのパラメータ

パラメータ

説明

dir

ワークロード・リプレイ・ディレクトリ・オブジェクトの名前(大/小文字が区別される)(必須)。

戻り値

このプロシージャは、インポートされた情報にアクセスするためにDBA_WORKLOAD_CAPTURES.IDとDBA_WORKLOAD_REPLAYS.CAPTURE_IDの両方に関連付けることのできるCAPTURE_IDを返します。

使用上の注意

- このプロシージャはまず、取得に関する情報が含まれるDBA_WORKLOAD_CAPTURESを行にインポートします。次に、リプレイ試行が指定されたリプレイ・ディレクトリから取得されるたびに、DBA_WORKLOAD_REPLAYSに行をインポートします。

- 指定したディレクトリに存在する取得およびリプレイの履歴について記述する行が、DBA_WORKLOAD_CAPTURESおよびDBA_WORKLOAD_REPLAYSにすでに含まれている場合、このプロシージャはこれらのビューに新しい行を挿入しません。

GET_REPLAY_TIMEOUTプロシージャ

このプロシージャは、リプレイのタイムアウト設定を取得します。

構文

DBMS_WORKLOAD_REPLAY.GET_REPLAY_TIMEOUT (
enabled       OUT  BOOLEAN,
min_delay     OUT  NUMBER,
max_delay     OUT  NUMBER,
delay_factor  OUT  NUMBER);

パラメータ

表178-17 GET_REPLAY_TIMEOUTプロシージャのパラメータ

パラメータ

説明

enabled

タイムアウト・アクションが有効にされている場合はTRUE、そうでない場合はFALSEです。

min_delay

コール遅延の下限(分単位)。リプレイ・アクションは、遅延がmin_delay以上の場合にのみアクティブ化されます。

max_delay

コール遅延の上限(分単位)。遅延がmax_delayを超えると、タイムアウト・アクションによってORA-15569がスローされます。

delay_factor

min_delayとmax_delayの間にあるコール遅延の係数。現行のリプレイの経過時間が取得の経過時間とdelay_factorの積を超えると、タイムアウト・アクションによってORA-15569がスローされます。

使用上の注意

このプロシージャは、リプレイ中にいつでもコールできます。

IMPORT_AWRファンクション

このプロシージャは、指定したリプレイからAWRスナップショットをインポートします。

構文

DBMS_WORKLOAD_REPLAY.IMPORT_AWR (
replay_id       IN   NUMBER,
staging_schema  IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表178-18 IMPORT_AWRファンクションのパラメータ

パラメータ

説明

replay_id

(必須)AWRスナップショットをインポートする必要のあるリプレイのID。

staging_schema

リプレイ・ディレクトリからSYS AWRスキーマにAWRスナップショットをインポートする間に、ステージング領域として使用できる現行データベース内の有効なスキーマの名前(必須)。SYSスキーマは有効な入力ではありません。

戻り値

AWRスナップショットをインポートするときに使用した、ランダムに生成された新しいデータベースIDを戻します。DBA_WORKLOAD_REPLAYSビューのAWR_DBID列に同じ値があります。

使用上の注意

- このプロシージャは、それらのAWRスナップショットがEXPORT_AWRプロシージャを使用して、元のリプレイ・システムから事前にエクスポートされていた場合に機能します。

- 入力として指定したstaging_schemaに、任意のAWR表と同じ名前(WRM$_SNAPSHOT、WRH$_PARAMETERなど)を持つ表が含まれている場合、IMPORT_AWRは失敗します。このような表をstaging_schemaから削除してから、IMPORT_AWRを起動します。

INITIALIZE_CONSOLIDATED_REPLAYプロシージャ

このプロシージャは、複数の取得リプレイに対してデータベースの状態をINITに設定します。SET_REPLAY_DIRECTORYプロシージャによって定義されたreplay_dirを使用し、スケジュール関連のすべての取得ディレクトリを含むディレクトリを指します。スケジュールschedule_nameに関するデータをディレクトリから読み取り、必要な接続データをリプレイ・システムにロードします。

構文

DBMS_WORKLOAD_REPLAY.INITIALIZE_CONSOLIDATED_REPLAY (
replay_name        IN    VARCHAR2,
schedule_name      IN    VARCHAR2);

パラメータ

表178-19 INITIALIZE_CONSOLIDATED_REPLAYプロシージャのパラメータ

パラメータ

説明

replay_name

ワークロード・リプレイの名前(必須)。処理済のワークロード取得のすべてのリプレイに名前を付けることができます。

schedule_name

リプレイするスケジュールの名前。これは、リプレイ・ディレクトリreplay_dirのBEGIN_REPLAY_SCHEDULEプロシージャを使用して作成されている必要があります。

使用上の注意

前提条件は次のとおりです。

- 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、ワークロード取得がすでに処理されています。

- データベースの状態は、元のワークロード取得の開始時点の状態に論理的にリストアされています。

- SET_REPLAY_DIRECTORYプロシージャがコールされています。

INITIALIZE_REPLAYプロシージャ

このプロシージャはデータベースの状態をREPLAYモードのINITに設定し、(PAUSE_REPLAYプロシージャを実行して)リプレイの準備をする前に、必要なリプレイ・システムにデータをロードします。

構文

DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY (
replay_name     IN  VARCHAR2,
replay_dir      IN  VARCHAR2);

パラメータ

表178-20 INITIALIZE_REPLAYプロシージャのパラメータ

パラメータ

説明

replay_name

ワークロード・リプレイの名前(必須)。処理済のワークロード取得のすべてのリプレイに名前を付けることができます。

replay_dir

処理済の取得データが格納されたOSディレクトリを指すディレクトリ・オブジェクトの名前(大/小文字が区別される)。

使用上の注意

- 前提条件は次のとおりです。

- 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、ワークロード取得がすでに処理されています。

- データベースの状態は、元のワークロード取得の開始時点の状態に論理的にリストアされています。

- サブプログラムは、PAUSE_REPLAYプロシージャをコールしてリプレイの準備をする前に、必要なリプレイ・システムにデータをロードします。
たとえば、取得中に、ユーザーは各セッションでサーバーへの接続に使用された接続文字列を記録することがあります。INITIALIZE_REPLAYプロシージャはこのデータをロードして、記録された接続文字列を、ユーザーが新しい接続文字列やサービス・ポイントに再マップできるようにします。

ユーザーは、PROCESS_CAPTUREプロシージャに示した例を詳細に指定して、次のようなコマンドを起動できます。

DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY('replay foo #1', 'rec_dir');

このコマンドは接続マップをロードし、デフォルトで、リプレイ時接続文字列をすべてNULLと同じに設定します。NULLのリプレイ時接続文字列は、ワークロード・リプレイ・クライアント(WRC)が、リプレイ・クライアントのランタイム環境設定によって決定されるデフォルトのホストに接続することを意味します。ユーザーは、REMAP_CONNECTIONプロシージャを使用して、特定の接続文字列をリプレイ用の新しい接続文字列(または新しいサービス・ポイント)に変更できます。

IS_REPLAY_PAUSEDファンクション

このファンクションは、リプレイが一時停止中かどうかをレポートします。

構文

DBMS_WORKLOAD_REPLAY.IS_REPLAY_PAUSED
RETURN BOOLEAN;

戻り値

PAUSE_REPLAYプロシージャが正常にコールされ、RESUME_REPLAYプロシージャがまだコールされていない場合は、TRUEが戻されます。

使用上の注意

前提条件として、START_REPLAYプロシージャに対するコールが発行されている必要があります。

PAUSE_REPLAYプロシージャ

このプロシージャは、進行中のワークロードのリプレイを一時停止します。リプレイ・クライアントからの後続のすべてのコールは、RESUME_REPLAYプロシージャへのコールが発行されるか、またはリプレイが取り消されるまで停止状態になります。

構文

DBMS_WORKLOAD_REPLAY.PAUSE_REPLAY;

使用上の注意

- 前提条件: START_REPLAYプロシージャに対するコールがすでに発行されています。

- このプロシージャを起動したときにすでに進行中であるユーザー・コールは、完了するまで実行できます。後続のユーザー・コールのみが、発行された場合に一時停止されます。

POPULATE_DIVERGENCEプロシージャ

このプロシージャは特定のコール、ストリームまたはリプレイ全体の相違情報を事前計算して、GET_DIVERGING_STATEMENTファンクションが事前計算されたコールに可能な限り迅速に戻ることができるようにします。

構文

DBMS_WORKLOAD_REPLAY.POPULATE_DIVERGENCE (
replay_id    IN   NUMBER,
stream_id    IN   NUMBER DEFAULT NULL,
call_counter IN   NUMBER DEFAULT NULL);

パラメータ

表178-21 POPULATE_DIVERGENCEプロシージャのパラメータ

パラメータ

説明

replay_id

リプレイのID

stream_id

相違コールのストリームID。NULLの場合は、特定のリプレイにおけるすべての相違コールについて相違情報が事前計算されます。

call_counter

相違コールのコール・カウンタ。NULLの場合は、特定のストリームにおけるすべての相違コールについて相違情報が事前計算されます。

PREPARE_REPLAYプロシージャ

このプロシージャは、データベースの状態をPREPARE FOR REPLAYモードに設定します。

構文

DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY (
synchronization           IN BOOLEAN   DEFAULT TRUE,
connect_time_scale        IN NUMBER    DEFAULT 100,
think_time_scale          IN NUMBER    DEFAULT 100,
think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
scale_up_multiplier       IN NUMBER    DEFAULT 1,
capture_sts               IN BOOLEAN   DEFAULT FALSE,
sts_cap_interval          IN NUMBER    DEFAULT 300);

DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY (
synchronization           IN VARCHAR2  DEFAULT 'OBJECT_ID',
connect_time_scale        IN NUMBER    DEFAULT 100,
think_time_scale          IN NUMBER    DEFAULT 100,
think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
scale_up_multiplier       IN NUMBER    DEFAULT 1,
capture_sts               IN BOOLEAN   DEFAULT FALSE,
sts_cap_interval          IN NUMBER    DEFAULT 300);

パラメータ

表178-22 PREPARE_REPLAYプロシージャのパラメータ

パラメータ

説明

synchronization

ワークロードのリプレイ中に、同期化をONまたはOFFにします。

- OFF: ワークロード・リプレイが非同期に実行します。

- SCN: 元のワークロード取得時に遵守されたCOMMITの順序が、リプレイ中にも維持されます。リプレイされるすべてのアクションは、従属するすべてのCOMMIT(元のワークロード取得で指定したアクションの前に発行されたすべてのCOMMIT)の実行が完了した後にのみ実行されます。

- OBJECT_ID: これはデフォルトであり、より高度な同期化スキームを使用します。リプレイされるすべてのアクションは、関連するCOMMITの実行が完了した後にのみ実行されます。関連するCOMMITとは、元のワークロード取得で指定したアクションの前に発行され、そのアクションが(明示的または黙示的に)参照している1つ以上のデータベース・オブジェクトを事前に変更したCOMMITのことです。このOBJECT_IDスキームは同じロジカル・プロパティによって、アクションが取得中に接したデータと同じデータに接するようにするとともに、リプレイ中にアクションが同じオブジェクトまたは表に接しない他のアクションに対してより多くの同時実行を認めるようにします。

下位互換性を保つために、このプロシージャにはブール・バージョンがあります。

- TRUEは'OBJECT_ID'を意味します。

- FALSEは'OFF'を意味します。

connect_time_scale

ワークロード取得が開始されてから、指定した値でセッションが接続されるまでの経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。「connect_time_scaleパラメータの適用」を参照してください。

think_time_scale

同じセッションからの2つの連続したユーザー・コール間の経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。「think_time_scaleパラメータの適用」を参照してください。

think_time_auto_correct

元の取得時よりもリプレイ時にユーザー・コールの完了に時間がかかる場合、コール間の思考時間を適切に自動修正します。DEFAULTのTRUEでは、リプレイが取得よりも遅くなった場合に思考時間が短縮されます。「think_time_auto_correctパラメータの適用」を参照してください。

scale_up_multiplier

リプレイ中に問合せワークロードを拡大する回数を定義します。取得された各セッションは、scale_up_multiplierの値と同じ回数だけ同時にリプレイされます。ただし、各同一リプレイ・セッション・セット内の1つのセッションのみが問合せと更新の両方を実行できます。その他のセッションは問合せのみを実行できます。

capture_sts

このパラメータがTRUEの場合、ワークロード・リプレイと並行してSQLチューニング・セット取得も開始されます。取得されたSQLチューニング・セットは、EXPORT_AWRプロシージャを使用してAWRデータとともにエクスポートできます。現在、Oracle RAC環境でパラレルSQLチューニング・セット(STS)取得はサポートされていません。そのため、このパラメータをそのような状況で使用しても効果は得られません。コール・ユーザーは、適切な権限('ADMINISTER SQL TUNING SET')を持っている必要があります。デフォルト値はFALSEです。

sts_cap_interval

カーソル・キャッシュからのSQLセット取得の取得間隔を秒単位で指定します。デフォルト値は300です。

使用上の注意

- 前提条件は次のとおりです。

- データベースは、リプレイに備えてINITIALIZE_REPLAYプロシージャを使用して初期化されています。

- 再マッピングが必要なすべての取得時接続文字列が、REMAP_CONNECTIONプロシージャを使用して、すでに再マッピングされています。

- PREPARE_REPLAYプロシージャを実行すると、1つ以上の外部リプレイ・クライアント(WRC)を開始できます。

- scale_up_multiplierの関連事項:

- 各同一セッション・セットの1つのリプレイ・セッション(ベース・セッション)が、通常どおり取得からすべてのコールをリプレイします。

- その他のセッション(拡大セッション)は、読取り専用のコールのみをリプレイします。したがって、データベースを変更したDDL、DMLおよびPL/SQLコールは省略されます。SELECT FOR UPDATE文も省略されます。

- 拡大セッションの読取り専用コールは適切に同期化され、think_time_scale、connect_time_scaleおよびthink_time_auto_correctによって定義されたタイミングに従います。また、問合せは適切なコミットを待機します。

- 拡大セッションに対しては、リプレイ・データもエラー相違記録も生成されません。

- 同じ取得ファイルをリプレイするベース・セッションや拡大セッションはすべて、同じワークロード・リプレイ・クライアントから接続します。

例

connect_time_scaleパラメータの適用

元のワークロード取得中に次のことが確認されたとします。

12:00 : Capture was started
12:10 : First session connect  (10m after)
12:30 : Second session connect (30m after)
12:42 : Third session connect  (42m after)

connect_time_scaleが50の場合、セッション接続は次のようになります。

12:00 : Replay was started with 50% connect time scale
12:05 : First session connect  ( 5m after)
12:15 : Second session connect (15m after)
12:21 : Third session connect  (21m after)

connect_time_scaleが200の場合、セッション接続は次のようになります。

12:00 : Replay was started with 200% connect time scale
12:20 : First session connect  (20m after)
13:00 : Second session connect (60m after)
13:24 : Third session connect  (84m after)

think_time_scaleパラメータの適用

元のワークロード取得中に次のことが確認されたとします。

12:00 : User SCOTT connects
12:10 : First user call issued (10m after completion of prevcall)
12:14 : First user call completes in 4mins
12:30 : Second user call issued (16m after completion of prevcall)
12:40 : Second user call completes in 10m
12:42 : Third user call issued ( 2m after completion of prevcall)
12:50 : Third user call completes in 8m

ワークロードのリプレイ時にthink_time_scaleが50の場合、ユーザー・コールは次のようになります。

12:00 : User SCOTT connects
12:05 : First user call issued 5 mins (50% of 10m) after the completion of
previous call
12:10 : First user call completes in 5m (takes a minute longer)
12:18 : Second user call issued 8 mins (50% of 16m) after the completion of prev
call
12:25 : Second user call completes in 7m (takes 3 minutes less)
12:26 : Third user call issued 1 min  (50% of 2m) after the completion of prev
call
12:35 : Third user call completes in 9m (takes a minute longer)

think_time_auto_correctパラメータの適用

元のワークロード取得中に次のことが確認されたとします。

12:00 : User SCOTT connects
12:10 : First user call issued (10m after completion of prevcall)
12:14 : First user call completes in 4m
12:30 : Second user call issued (16m after completion of prevcall)
12:40 : Second user call completes in 10m
12:42 : Third user call issued ( 2m after completion of prevcall)
12:50 : Third user call completes in 8m

ワークロードのリプレイ時にthink_time_scaleが100で、think_time_auto_correctがTRUEの場合、ユーザー・コールは次のようになります。

12:00 : User SCOTT connects
12:10 : First user call issued 10 mins after the completion of prev call
12:15 : First user call completes in 5m (takes 1 minute longer)
12:30 : Second user call issued 15 mins (16m minus the extra time of 1m the prev
call took) after the completion of prev call
12:44 : Second user call completes in 14m (takes 4 minutes longer)
12:44 : Third user call issued immediately (2m minus the extra time of 4m the prev
call took) after the completion of prev call
12:52 : Third user call completes in 8m

PREPARE_CONSOLIDATED_REPLAYプロシージャ

PREPARE_REPLAYプロシージャと同様に、このプロシージャは、複数の取得リプレイに対してデータベースを特別な「準備」モードにします。このサブプログラムは統合されたリプレイのみに使用される点が異なります。

構文

DBMS_WORKLOAD_REPLAY.PREPARE_CONSOLIDATED_REPLAY (
synchronization           IN BOOLEAN,
connect_time_scale        IN NUMBER    DEFAULT 100,
think_time_scale          IN NUMBER    DEFAULT 100,
think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
capture_sts               IN BOOLEAN   DEFAULT FALSE,
sts_cap_interval          IN NUMBER    DEFAULT 300);

DBMS_WORKLOAD_REPLAY.PREPARE_CONSOLIDATED_REPLAY (
synchronization           IN VARCHAR2  DEFAULT 'OBJECT_ID',,
connect_time_scale        IN NUMBER    DEFAULT 100,
think_time_scale          IN NUMBER    DEFAULT 100,
think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
capture_sts               IN BOOLEAN   DEFAULT FALSE,
sts_cap_interval          IN NUMBER    DEFAULT 300);

パラメータ

表178-23 PREPARE_CONSOLIDATED_REPLAYプロシージャのパラメータ

パラメータ

説明

synchronization

ワークロードのリプレイ中に、同期化をONまたはOFFにします。同期化がONの場合、元のワークロード取得時に確認されたCOMMITの順序は、リプレイ時にも維持されます。リプレイされるすべてのアクションは、従属するすべてのCOMMIT(元のワークロード取得で指定したアクションの前に発行されたすべてのCOMMIT)の実行が完了した後にのみ(ONLYAFTER)、実行されます。DEFAULTのTRUEでは、コミットの順序が維持されます。

同期がOBJECT_IDの場合は、より高度な同期スキームが使用されます。リプレイされるすべてのアクションは、関連するCOMMITの実行が完了した後にのみ実行されます。関連するCOMMITとは、元のワークロード取得で指定したアクションの前に発行され、そのアクションが(明示的または黙示的に)参照している1つ以上のデータベース・オブジェクトを事前に変更したCOMMITのことです。このOBJECT_IDスキームは同じロジカル・プロパティによって、アクションが取得中に接したデータと同じデータに接するようにするとともに、リプレイ中にアクションが同じオブジェクトまたは表に接しない他のアクションに対してより多くの同時実行を認めるようにします。DEFAULT VALUE: SCNでは、コミットの順序が保持されます。下位互換性を保つために、このプロシージャにはブール・バージョンがあります。

- TRUEは'SCN'を意味します。

- FALSEは'OFF'を意味します。

connect_time_scale

ワークロード取得が開始されてから、指定した値でセッションが接続されるまでの経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。「connect_time_scaleパラメータの適用」を参照してください。

think_time_scale

同じセッションからの2つの連続したユーザー・コール間の経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。「think_time_auto_correctパラメータの適用」を参照してください。

think_time_auto_correct

リプレイでのユーザー・コールの完了にかかる時間が、元の取得でかかった時間よりも長くなる場合に、コール間の思考時間を適切に自動修正します。DEFAULTのTRUEでは、リプレイが取得よりも遅くなった場合に思考時間が短縮されます。「think_time_auto_correctパラメータの適用」を参照してください。

capture_sts

このパラメータがTRUEの場合、ワークロード・リプレイと並行してSQLチューニング・セット取得も開始されます。取得されたSQLチューニング・セットは、EXPORT_AWRプロシージャを使用して、自動ワークロード・リポジトリ(AWR)データとともにエクスポートできます。現在、Oracle RAC環境でパラレルSQLチューニング・セット(STS)取得はサポートされていません。そのため、このパラメータをそのような状況で使用しても効果は得られません。コール・ユーザーは、適切な権限('ADMINISTER SQL TUNING SET')を持っている必要があります。デフォルト値はFALSEです。

sts_cap_interval

カーソル・キャッシュからのSQLセット取得の取得間隔を秒単位で指定します。デフォルト値は300です。

使用上の注意

統合されたリプレイでは、1回のリプレイで複数の取得がリプレイされます。取得ごとに異なるシステムの変更番号(SCN)値が記録されます。このため、統合されたリプレイではSCNベースの同期化はサポートされていません。統合されたリプレイでは、非同期モードとオブジェクトIDベースの同期化のみがサポートされていて、SCNベースの同期化は現在はサポートされていません。

PROCESS_CAPTUREプロシージャ

このプロシージャは、capture_dir内で検出されたワークロード取得を処理します。

構文

DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE (
capture_dir            IN   VARCHAR2,
parallel_level         IN   NUMBER DEFAULT NULL);

パラメータ

表178-24 PROCESS_CAPTUREプロシージャのパラメータ

パラメータ

説明

capture_dir

ワークロード取得ディレクトリ・オブジェクトの名前(大/小文字が区別される)(必須)。ディレクトリ・オブジェクトは、適切な権限を持つ有効なOSディレクトリを指している必要があります。このディレクトリに新しいファイルが追加されます。

parallel_level

取得を並行処理するために使用されるOracleプロセスの数。NULL(デフォルト値)では並列度が自動的に計算され、値が1の場合はシリアル実行が強制的に行われます。

使用上の注意

- このサブプログラムは、capture_dirにあるワークロードの取得を分析し、指定したワークロード取得のリプレイに必要となる新しいワークロード・リプレイ固有のメタデータ・ファイルを作成します。これは新しいファイルを作成するだけであり、ワークロード取得中に最初に作成されたファイルは変更しません。したがって、このプロシージャは、プロシージャに予期しないエラーが発生したり、ユーザーによって取り消された場合などに、同じ取得ディレクトリで複数回実行できます。

- このプロシージャが正常に実行されると、capture_dirに存在する取得済ワークロードをリプレイするために、capture_dirをINITIALIZE_REPLAYプロシージャへの入力として使用できます。

- 特定のデータベース・バージョンでワークロード取得をリプレイする前に、PROCESS_CAPTUREを使用して、同じデータベース・バージョンで取得を処理しておく必要があります。処理済のワークロード取得を作成すると、取得されたワークロードを同じデータベース・バージョンでリプレイする場合に複数回使用できます。
たとえば、ワークロードfooがOracle Databaseバージョン10.2.0.5のrec_dirで取得されたとします。ワークロードfooをバージョン11.1.0.1でリプレイするには、このワークロードをバージョン11.1.0.1で処理する必要があります。取得ディレクトリrec_dirを処理するには、次のプロシージャを11.1.0.1のデータベースで実行する必要があります。

DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE('rec_dir');

これで、rec_dirに有効な11.1.0.1の処理済ワークロード取得が含まれます。この処理済ワークロード取得を使用して、ワークロードfooを11.1.0.1のデータベースで必要な回数だけリプレイできます。

REMAP_CONNECTIONプロシージャ

このプロシージャは、ワークロードのリプレイ中にユーザー・セッションが希望の方法でデータベースに接続できるように、取得された接続を新しい接続に再マップします。

構文

DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (
connection_id         IN  NUMBER,
replay_connection     IN  VARCHAR2);

DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (
capture_number        IN  VARCHAR2,
connection_id         IN  NUMBER,
replay_connection     IN  VARCHAR2);

パラメータ

表178-25 REMAP_CONNECTIONプロシージャのパラメータ

パラメータ

説明

capture_number

現在のリプレイ・スケジュールの取得を指定します。

connection_id

再マップする接続のID。DBA_WORKLOAD_CONNECTION_MAP.CONN_IDに対応します。

replay_connection

リプレイ中に使用する新しい接続文字列。

使用上の注意

- REMAP_CONNECTIONをコールする前に、すべてのリプレイ接続文字列がデフォルトでNULLに設定されます。replay_connectionがNULLの場合、リプレイ・セッションは、リプレイ・クライアントのランタイム環境によって決定される接続先に接続されます。たとえば、環境変数TNS_ADMINが定義され、ユーザーがREMAP_CONNECTIONプロシージャをコールしない場合、wrc実行可能ファイルは、TNS_ADMINが指すtnsnames.oraファイルで指定されたサーバーに接続します。

- 有効なreplay_connectionは、接続識別子またはサービス・ポイントを指定する必要があります。接続識別子(ネット・サービス名、データベース・サービス名、ネット・サービスの別名など)を指定する方法、および接続識別子を接続記述子に解決する場合に使用できる命名方法については、『Oracle Database Net Servicesリファレンス』を参照してください。

- 指定したconnection_idに一致する行がない場合、エラーが戻されます。

- 後続のワークロード・リプレイで使用されるすべての接続文字列を確認したり、以前のワークロード・リプレイに使用された接続文字列の再マッピングを調べるには、DBA_WORKLOAD_CONNECTION_MAPビューを使用します。

REMOVE_CAPTUREプロシージャ

このプロシージャは、現在のスケジュールから特定の取得を削除します。

構文

DBMS_WORKLOAD_REPLAY.REMOVE_CAPTURE (
schedule_capture_number    IN     NUMBER);

パラメータ

表178-26 REMOVE_CAPTUREプロシージャのパラメータ

パラメータ

説明

schedule_capture_number

このスケジュール内の取得を識別する一意のID。

REMOVE_SCHEDULE_ORDERINGプロシージャ

このプロシージャは、現在のリプレイ・スケジュールから既存のスケジュール順序を削除します。schedule_capture_idとwaitfor_capture_idを同時に指定することで、以前はADD_SCHEDULE_ORDERINGファンクション(schedule_capture_id、waitfor_capture_id)により追加されたスケジュール順序が構成されます。この順序では、waiting_for_capture_idにより指定された取得のリプレイが終了しないかぎり、schedule_capture_idにより指定された取得のリプレイは開始しません。

構文

DBMS_WORKLOAD_REPLAY.REMOVE_SCHEDULE_ORDERING (
schedule_capture_id     IN         NUMBER,
waitfor_capture_id      IN         NUMBER);

パラメータ

表178-27 REMOVE_SCHEDULE_ORDERINGプロシージャのパラメータ

パラメータ

説明

schedule_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします(プロシージャの説明を参照してください)。

waitfor_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします。

使用上の注意

前提条件は次のとおりです。

- BEGIN_REPLAY_SCHEDULEプロシージャがコールされている必要があります。

- リプレイ・スケジュールの順序は、ADD_SCHEDULE_ORDERINGファンクションを使用して追加済である必要があります。

REPORTファンクション

このファンクションは、規定のワークロード・リプレイに関するレポートを生成します。

構文

DBMS_WORKLOAD_REPLAY.REPORT (
replay_id          IN NUMBER,
format             IN VARCHAR2)
RETURN CLOB;

パラメータ

表178-28 REPORTファンクションのパラメータ

パラメータ

説明

replay_id

レポートが必要なワークロード・リプレイのIDを指定します(必須)。

format

レポートの書式を指定します(必須)。有効な値は、次のとおりです。

- HTML: HTMLバージョンのレポートを生成します。

- XML: - XMLバージョンのレポートを生成します。

- TEXT: テキスト・バージョンのレポートを生成します。

戻り値

指定した形式で表示されたレポート本文。CLOBとして戻されます。

RESUME_REPLAYプロシージャ

このプロシージャは、一時停止しているワークロードのリプレイを再開します。

構文

DBMS_WORKLOAD_REPLAY.RESUME_REPLAY;

使用上の注意

前提条件: PAUSE_REPLAYプロシージャに対するコールがすでに発行されています。

REUSE_REPLAY_FILTER_SETプロシージャ

このプロシージャは、指定されたフィルタ・セットの各フィルタを、ADD_SCHEDULE_ORDERINGプロシージャを使用して追加する場合と同じように再利用します。1回のコールで1つのフィルタ・セットが追加されますが、このフィルタ・セットは、様々な属性に対する個別フィルタのコレクションです。また、新規フィルタ・ルールを追加することや、CREATE_FILTER_SETプロシージャを起動して新規フィルタ・セットを作成する前に既存のフィルタを削除することもできます。

構文

DBMS_WORKLOAD_REPLAY.REUSE_REPLAY_FILTER_SET(
replay_dir  IN VARCHAR2,
filter_set  IN VARCHAR2);

パラメータ

表178-29 REUSE_REPLAY_FILTER_SETプロシージャのパラメータ

パラメータ

説明

replay_dir

関連付けられている既存のフィルタ・セットの取得ID。

filter_set

再利用するフィルタ・セットの名前。

SET_ADVANCED_PARAMETERプロシージャ

このプロシージャは、PREPARE_REPLAYプロシージャで使用されるパラメータ以外に、リプレイに対して詳細なパラメータを設定します。この詳細パラメータによって、リプレイのより特殊な側面を制御できます。詳細パラメータは、リプレイの完了後にデフォルト値にリセットされます。

構文

DBMS_WORKLOAD_REPLAY.SET_ADVANCED_PARAMETER(
pname    IN   VARCHAR2,
pvalue   IN   VARCHAR2);

DBMS_WORKLOAD_REPLAY.SET_ADVANCED_PARAMETER(
pname    IN   VARCHAR2,
pvalue   IN   NUMBER);

DBMS_WORKLOAD_REPLAY.SET_ADVANCED_PARAMETER(
pname    IN   VARCHAR2,
pvalue   IN   BOOLEAN);

パラメータ

表178-30 SET_ADVANCED_PARAMETERプロシージャのパラメータ

パラメータ

説明

pname

パラメータ名(大/小文字区別)

pvalue

パラメータの値。

使用上の注意

使用可能な現行のパラメータおよび値:

'DO_NO_WAIT_COMMITS': (default: FALSE)

このパラメータは、リプレイ・セッションにより発行されるCOMMITがNOWAITかどうかを制御します。このパラメータのデフォルト値はFALSEです。その場合、COMMITは取得されたモードで発行されます(wait、no-wait、batch、no-batch)。このパラメータをTRUEに設定すると、COMMITはno-waitモードで発行されます。これは、同時COMMITの量が多いためリプレイが非常に遅くなっている場合に役立ちます。パラメータをTRUEに設定すると、取得に関するリプレイ中に'log file sync'イベントでの待機を大幅に短縮できます。

SET_REPLAY_DIRECTORYプロシージャ

このプロシージャは、複数のワークロード取得を含むディレクトリを現在のリプレイ・ディレクトリとして設定します。

構文

DBMS_WORKLOAD_REPLAY.SET_REPLAY_DIRECTORY (
replay_dir    IN    VARCHAR2);

パラメータ

表178-31 SET_REPLAY_DIRECTORYプロシージャのパラメータ

パラメータ

説明

replay_dir

ワークロード統合のための取得を含むOSディレクトリの名前。

SET_REPLAY_TIMEOUTプロシージャ

このプロシージャは、リプレイのタイムアウト設定を指定します。リプレイを極度に遅くしたり、リプレイをハングさせる可能性のあるユーザー・コールを中断する目的で使用します。

構文

DBMS_WORKLOAD_REPLAY.SET_REPLAY_TIMEOUT (
enabled       OUT  BOOLEAN DEFAULT TRUE,
min_delay     OUT  NUMBER DEFAULT 10,
max_delay     OUT  NUMBER DEFAULT 120,
delay_factor  OUT  NUMBER DEFAULT 8);

パラメータ

表178-32 SET_REPLAY_TIMEOUTプロシージャのパラメータ

パラメータ

説明

enabled

タイムアウト・アクションを有効にする場合はTRUE、無効にする場合はFALSE。

min_delay

コール遅延の下限(分単位)。リプレイ・アクションは、遅延がmin_delay以上の場合にのみアクティブ化されます。デフォルトは10です。

max_delay

コール遅延の上限(分単位)。遅延がmax_delayを超えると、タイムアウト・アクションによってORA-15569がスローされます。デフォルトは120です。

delay_factor

min_delayとmax_delayの間にあるコール遅延の係数。現行のリプレイの経過時間が取得の経過時間とdelay_factorの積を超えると、タイムアウト・アクションによってORA-15569がスローされます。デフォルトは8です。

使用上の注意

- このプロシージャは、リプレイ中にいつでもコールできます。

- コール遅延は、リプレイの経過時間がコールの経過時間より長い場合に、リプレイと取得の間の差異として定義されます。

- リプレイのタイムアウト・アクションが有効になると、ユーザー・コールは、リプレイ・アクションによって指定された条件を超えて遅延した場合、ORA-15569が発生して終了します。コールとそのエラーは、エラーの相違として報告されます。

- リプレイのタイムアウトは、次のように動作します。

- タイムアウト・アクションは、有効にしないと効果はありません。

- コール遅延(分単位)がmin_delayパラメータで指定された下限未満の場合、タイムアウト・アクションは動作しません。

- 遅延(分単位)がmax_delayパラメータで指定された上限を超えると、タイムアウト・アクションによってユーザー・コールが中断され、ORA-15569がスローされます。

- 遅延が下限と上限の間にある状態では、現行のリプレイの経過時間が取得の経過時間とdelay_factorパラメータの積を超える場合にのみ、ORA-15569が発生してユーザー・コールは中断されます。

SET_USER_MAPPINGプロシージャ

このプロシージャは、取得されたユーザーのかわりに、リプレイ中に使用する新規スキーマまたはユーザー名を設定します。

構文

DBMS_WORKLOAD_REPLAY.SET_USER_MAPPING (
schedule_cap_id      IN NUMBER,
capture_user         IN VARCHAR2,
replay_user          IN VARCHAR2);

DBMS_WORKLOAD_REPLAY.SET_USER_MAPPING (
capture_user         IN VARCHAR2,
replay_user          IN VARCHAR2);

パラメータ

表178-33 SET_USER_MAPPINGプロシージャのパラメータ

パラメータ

説明

schedule_cap_id

予定されている取得のID

capture_user

ワークロード取得時のユーザー名

replay_user

取得されたユーザーがリプレイ時に再マッピングされるユーザー名

使用上の注意

- NULLのschedule_cap_idは、通常の非統合リプレイに使用されます。

- リプレイは初期化が必要ですが、このサブプログラムを使用するために準備する必要はありません。

- replay_userがNULLに設定されている場合、マッピングは無効になります。

- 同じcapture_userを使用して複数回コールした後、常に最後のコールが有効になります。

- 後続のリプレイ中に有効になるマッピングをすべてリストするには、次のように実行します。

SELECT * FROM DBA_WORKLOAD_ACTIVE_USER_MAP

- schedule_cap_idを指定しないオーバーロードのバージョンでは、NULLを渡すことによってschedule_cap_id引数のあるものがコールされます。

- マッピングは、ビューDBA_WORKLOAD_USER_MAPを介して公開された表に格納されます。古いマッピングを削除するには、次のように実行します。

DELETE * FROM DBA_WORKLOAD_USER_MAP

START_CONSOLIDATED_REPLAYプロシージャ

このプロシージャは、複数の取得のリプレイを開始します。これは、統合されたリプレイのみに使用してください。

構文

DBMS_WORKLOAD_REPLAY.START_CONSOLIDATED_REPLAY;

使用上の注意

前提条件は次のとおりです。

- PREPARE_REPLAYプロシージャに対するコールがすでに発行されています。

- 取得されたワークロードを正確にリプレイできる十分な数の外部リプレイ・クライアント(WRC)が、すでに起動されています。このような外部リプレイ・クライアントのステータスは、V$WORKLOAD_REPLAY_CLIENTSを使用して監視できます。

START_REPLAYプロシージャ

このプロシージャは、ワークロードのリプレイを開始します。現在リプレイ・データベースに接続されているすべての外部リプレイ・クライアント(WRC)が自動的に通知され、それらのリプレイ・クライアント(WRC)は取得されたワークロードの発行を開始します。これは、統合されたリプレイのみに使用してください。

構文

DBMS_WORKLOAD_REPLAY.START_REPLAY;

使用上の注意

- 前提条件は次のとおりです。

- PREPARE_REPLAYプロシージャに対するコールがすでに発行されています。

- 取得されたワークロードを正確にリプレイできる十分な数の外部リプレイ・クライアント(WRC)が、すでに起動されています。このような外部リプレイ・クライアントのステータスは、V$WORKLOAD_REPLAY_CLIENTSを使用して監視できます。

- 取得されたワークロードを正確にリプレイするために必要なリプレイ・クライアントの数を決定するには、WRCのCALIBRATEモードを使用します。次に例を示します。

$ wrc mode=calibrate replaydir=.

USE_FILTER_SETプロシージャ

このプロシージャは、フィルタ・セットを現在のリプレイ・スケジュールの取得に適用します。このフィルタは、CREATE_FILTER_SETプロシージャをコールして作成されている必要があります。

構文

DBMS_WORKLOAD_REPLAY.USE_FILTER_SET(
capture_number   IN    VARCHAR2,
filter_set       IN    VARCHAR2);

DBMS_WORKLOAD_REPLAY.USE_FILTER_SET(
filter_set       IN    VARCHAR2);

パラメータ

表178-34 USE_FILTER_SETプロシージャのパラメータ

パラメータ

説明

capture_number

現在のリプレイ・スケジュールの取得を指定します。

filter_set

フィルタ・セットの名前。

使用上の注意

このフィルタは、CREATE_FILTER_SETプロシージャをコールして作成されている必要があります。

179 DBMS_WORKLOAD_REPOSITORY

DBMS_WORKLOAD_REPOSITORYパッケージを使用して、ワークロード・リポジトリを管理し、スナップショットやベースラインの管理などの操作を実行できます。

関連項目:
自動ワークロード・リポジトリの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_WORKLOAD_REPOSITORYの使用方法

- 例

- データ構造

- オブジェクト・タイプ

- 表タイプ

- DBMS_WORKLOAD_REPOSITORYサブプログラムの要約

DBMS_WORKLOAD_REPOSITORYの使用方法

この項では、DBMS_WORKLOAD_REPOSITORYパッケージの使用に関連する項目について説明します。

- 例

例

次の例では、データベースID 1557521192、インスタンスID 1、スナップショットID 5390と5391、およびデフォルト・オプションを指定し、DBMS_WORKLOAD_REPOSITORYパッケージを使用してAWRテキスト・レポートを生成する方法を示します。

-- make sure to set line size appropriately
-- set linesize 152
SELECT output FROM TABLE(
DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(
1557521192,  1, 5390, 5392) ) ;

この例のように、DBMS_WORKLOAD_REPOSITORYパッケージ・ファンクションを直接コールすることもできますが、パッケージ・ファンクション用に提供された、対応するSQLスクリプト(この場合はawrrpt.sql)を使用することをお薦めします。このスクリプトを使用すると、必要な情報の入力を求められます。

データ構造

DBMS_WORKLOAD_REPOSITORYパッケージは、オブジェクト・タイプおよび関連する表タイプを定義します。

オブジェクト・タイプ

- AWR_BASELINE_METRIC_TYPEオブジェクト・タイプ

表タイプ

- AWR_BASELINE_METRIC_TYPE_TABLE表タイプ

- AWRRPT_INSTANCE_LIST_TYPE表タイプ

AWR_BASELINE_METRIC_TYPEオブジェクト・タイプ

このタイプは、ベースラインに対応するメトリックの値を示します。

構文

TYPE breakpoint_info AS OBJECT (
baseline_name      VARCHAR2(64),
dbid               NUMBER NOT NULL,
instance_number    NUMBER NOT NULL,
beg_time           DATE NOT NULL,
end_time           DATE NOT NULL,
metric_id          NUMBER NOT NULL,
metric_name        VARCHAR2(64) NOT NULL,
metric_unit        VARCHAR2(64) NOT NULL,
num_interval       NUMBER NOT NULL,
interval_size      NUMBER NOT NULL,
average            NUMBER NOT NULL,
minimum            NUMBER NOT NULL,
maximum            NUMBER NOT NULL);

フィールド

表179-1 RUNTIME_INFOのフィールド

フィールド

説明

baseline_name

ベースラインの名前

dbid

スナップショットのデータベースID

instance_number

スナップショットのインスタンス番号

beg_time

その間隔の開始時間

end_time

その間隔の終了時間

metric_id

メトリックID

metric_name

メトリック名

metric_unit

測定の単位

num_interval

確認された間隔の数

interval_size

間隔の長さ(100分の1秒単位)

average

その期間の平均

minimum

確認された最小値

maximum

確認された最大値

AWR_BASELINE_METRIC_TYPE_TABLE表タイプ

このタイプは、SELECT_BASELINE_METRICファンクションで使用されます。

構文

CREATE TYPE awr_baseline_metric_type_table AS TABLE OF awr_baseline_metric_type;

AWRRPT_INSTANCE_LIST_TYPE表タイプ

この表タイプは、カンマ区切りリストのかわりに使用できます。

構文

CREATE TYPE awrrpt_instance_list_type AS TABLE OF NUMBER;

DBMS_WORKLOAD_REPOSITORYサブプログラムの要約

表179-2 DBMS_WORKLOAD_REPOSITORYパッケージのサブプログラム

サブプログラム

説明

ADD_COLORED_SQLプロシージャ

色の付いたSQL IDを追加します。

ASH_GLOBAL_REPORT_HTMLファンクション

グローバルまたはOracle Real Application Clusters(Oracle RAC)のASHスポット・レポートをHTML形式で表示します。

ASH_GLOBAL_REPORT_TEXTファンクション

グローバルまたはOracle Real Application Clusters(Oracle RAC)のASHスポット・レポートをテキスト形式で表示します。

ASH_REPORT_HTMLファンクション

ASHレポートをHTMLで表示します。

ASH_REPORT_TEXTファンクション

ASHレポートをテキストで表示します。

AWR_DIFF_REPORT_HTMLファンクション

AWR Diff-DiffレポートをHTMLで表示します。

AWR_DIFF_REPORT_TEXTファンクション

AWR Diff-Diffレポートをテキストで表示します。

AWR_GLOBAL_DIFF_REPORT_HTMLファンクション

グローバルAWR期間の比較レポートをHTMLで表示します。

AWR_GLOBAL_DIFF_REPORT_TEXTファンクション

グローバルAWR期間の比較レポートをテキストで表示します。

AWR_GLOBAL_REPORT_HTMLファンクション

グローバルAWRレポートをHTMLで表示します。

AWR_GLOBAL_REPORT_TEXTファンクション

グローバルAWRレポートをテキストで表示します。

AWR_REPORT_HTMLファンクション

AWRレポートをHTMLで表示します。

AWR_REPORT_TEXTファンクション

AWRレポートをテキストで表示します。

AWR_SET_REPORT_THRESHOLDSプロシージャ

レポートの行数などの指定されたレポートのしきい値を構成します。

AWR_SQL_REPORT_HTMLファンクション

AWR SQLレポートをHTML形式で表示します。

AWR_SQL_REPORT_TEXTファンクション

AWR SQLレポートをテキスト形式で表示します。

CREATE_BASELINEファンクションおよびプロシージャ

単一のベースラインを作成します。

CREATE_BASELINE_TEMPLATEプロシージャ

ベースライン・テンプレートを作成します。

CREATE_SNAPSHOTファンクションおよびプロシージャ

マニュアル・スナップショットを即時に作成します。

DROP_BASELINEプロシージャ

以前に定義したベースラインを削除します。

DROP_BASELINE_TEMPLATEプロシージャ

不要になったベースライン・テンプレートを削除します。

DROP_SNAPSHOT_RANGEプロシージャ

スナップショットの範囲を削除します。

MODIFY_SNAPSHOT_SETTINGSプロシージャ

スナップショット設定を変更します。

MODIFY_BASELINE_WINDOW_SIZEプロシージャ

デフォルトの変動ウィンドウ・ベースラインのウィンドウ・サイズを変更します。

PURGE_SQL_DETAILSプロシージャ

SQL詳細をパージします。具体的には、WRH$_SQLSTATに対応する行(DBID、SQL_ID)がないWRH$_SQLTEXTおよびWRH$_SQL_PLANの行です。

REMOVE_COLORED_SQLプロシージャ

色の付いたSQL IDを削除します。

RENAME_BASELINEプロシージャ

ベースラインの名前を変更します。

SELECT_BASELINE_METRICファンクション

ベースラインに対応するメトリックの値を示します。

UPDATE_OBJECT_INFOプロシージャ

ローカル・データベースのオブジェクトを表すWRH$_SEG_STAT_OBJ表の行を更新します。

ADD_COLORED_SQLプロシージャ

このプロシージャでは色の付いたSQL IDを追加します。SQL IDに色が付いている場合、そのSQL IDはアクティビティのレベルに関係なく、すべてのスナップショットで取得され、必ずしもTOP SQLである必要はなくなります。スナップショット・タイムにカーソル・キャッシュでこのSQLが検出された場合、取得が発生します。このSQLの色を解除するには、REMOVE_COLORED_SQLプロシージャをコールします。

構文

DBMS_WORKLOAD_REPOSITORY.ADD_COLORED_SQL(
sql_id         IN VARCHAR2,
dbid           IN NUMBER DEFAULT NULL);

パラメータ

表179-3 ADD_COLORED_SQLプロシージャのパラメータ

パラメータ

説明

sql_id

13文字の外部SQL ID。

dbid

オプションのDBID (デフォルトはローカルDBID)。

ASH_GLOBAL_REPORT_HTMLファンクション

このテーブル・ファンクションは、グローバルまたはOracle Real Application Clusters(Oracle RAC)のASHスポット・レポートをHTML形式で表示します。

構文

DBMS_WORKLOAD_REPOSITORY.ASH_GLOBAL_REPORT_HTML(
l_dbid          IN NUMBER,
l_inst_num      IN VARCHAR2((1023),
l_btime         IN DATE,
l_etime         IN DATE,
l_options       IN NUMBER    DEFAULT 0,
l_slot_width    IN NUMBER    DEFAULT 0,
l_sid           IN NUMBER    DEFAULT NULL,
l_sql_id        IN VARCHAR2  DEFAULT NULL,
l_wait_class    IN VARCHAR2  DEFAULT NULL,
l_service_hash  IN NUMBER    DEFAULT NULL,
l_module        IN VARCHAR2  DEFAULT NULL,
l_action        IN VARCHAR2  DEFAULT NULL,
l_client_id     IN VARCHAR2  DEFAULT NULL,
l_plsql_entry   IN VARCHAR2  DEFAULT NULL,
l_data_src      IN NUMBER    DEFAULT 0,
l_container     IN VARCHAR2  DEFAULT NULL)
RETURN awrrpt_html_type_table PIPELINED;

パラメータ

表179-4 ASH_GLOBAL_REPORT_HTMLのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

インスタンスのリスト('1,2,3'など)またはNULL(データベースのすべてのインスタンスについてレポートします)。

l_btime

開始時間。

l_etime

終了時間。

l_options

レポート・レベル(現在は使用されていません)。

l_slot_width

レポートの「トップ・アクティビティ」セクションで使用するスロットの幅(秒)を指定します。この引数はオプションで、これを指定しない場合、l_btimeとl_etimeの間の間隔は、10スロット以下に適切に分けられます。

l_sid

セッションID(「使用上の注意」を参照)。

l_sql_id

SQL ID(「使用上の注意」を参照)。

l_wait_class

待機クラス名(「使用上の注意」を参照)。

l_service_hash

サービス名のハッシュ(「使用上の注意」を参照)。

l_module

モジュール名(「使用上の注意」を参照)。

l_action

アクション名(「使用上の注意」を参照)。

l_client_id

エンドツーエンドのバックトレースのクライアントID(「使用上の注意」を参照)。

l_plsql_entry

PL/SQLエントリ・ポイント(「使用上の注意」を参照)。

l_data_src

レポートはディスク上のデータからのみ成り立っているため、無視されます。

l_container

レポート・アクティビティを制限する対象のコンテナの名前。NULL (デフォルト)以外の有効な値は、V$CONTAINERSに含まれるコンテナ名から得られます。動作は次のとおりです。

- NULLの場合: ルート・コンテナに接続されている場合、レポートはすべてのコンテナを対象とします。PDBに接続されている場合、レポートはそのPDBのみを対象とします。

- NULLでない場合: ルート・コンテナに接続されている場合、レポートは指定されたコンテナからのアクティビティを対象とします。PDBに接続されている場合、レポートは接続されたPDBに関するl_containerにNULL値を指定した場合と同じです。

注意: PDBへの接続時に別のPDBからの情報を要求すると、空のレポートが作成されます。

戻り値

出力はVARCHAR2(1500)の1列です。

使用上の注意

- このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるashrpti.sqlスクリプトを使用することをお薦めします。

- 指定されていないオプションの引数は、レポート対象(SQL文、セッション、特定のサービス名/モジュール名の組合せなど)を指定するASHレポートを生成するために使用します。これらの引数は、レポートの生成に使用されるASH行を制限するために指定します。たとえば、特定のSQL文(SQL_ID 'abcdefghij123'など)に関するASHレポートを生成するには、次のように、そのsql_id値をl_sql_id引数に渡します。

l_sql_id =>  'abcdefghij123'

これらのオプションの引数はいずれの組合せでも渡すことができ、また、これらのすべてのレポート対象を満たすASHの行のみが使用されます。複数のレポート対象が指定されている場合は、条件ロジックのANDを使用してこれらの対象を連結します。たとえば、MODULE "PAYROLL"およびACTION "PROCESS"に関するASHレポートを生成するには、次の条件を使用します。

l_module =>  'PAYROLL', l_action =>  'PROCESS'

VARCHAR2タイプのすべての引数で、有効なSQLワイルドカードを使用できます。

表179-5 ASH_REPORT_HTML: 引数でのワイルドカードの使用

引数名

コメント

ワイルドカードを使用できるかどうか

l_sid

セッションID(V$SESSION.SIDなど)。

いいえ

l_sql_id

SQL ID(V$SQL.SQL_IDなど)。

はい

l_wait_class

待機クラス名(V$EVENT_NAME.WAIT_CLASSなど)。

はい

l_service_hash

サービス名のハッシュ(V$ACTIVE_SERVICES.NAME_HASHなど)。

いいえ

l_module

モジュール名(V$SESSION.MODULEなど)。

はい

l_action

アクション名(V$SESSION.ACTIONなど)。

はい

l_client_id

エンドツーエンドのバックトレースのクライアントID(V$SESSION.CLIENT_IDENTIFIERなど)。

はい

l_data_src

l_data_srcは数値データ・タイプであるため、ワイルドカードは使用できません。

いいえ

ASH_GLOBAL_REPORT_TEXTファンクション

このテーブル・ファンクションは、グローバルまたはOracle Real Application Clusters(Oracle RAC)のASHスポット・レポートをテキスト形式で表示します。

構文

DBMS_WORKLOAD_REPOSITORY.ASH_GLOBAL_REPORT_TEXT(
l_dbid          IN VARCHAR2(1023),
l_inst_num      IN NUMBER,
l_btime         IN DATE,
l_etime         IN DATE,
l_options       IN NUMBER    DEFAULT 0,
l_slot_width    IN NUMBER    DEFAULT 0,
l_sid           IN NUMBER    DEFAULT NULL,
l_sql_id        IN VARCHAR2  DEFAULT NULL,
l_wait_class    IN VARCHAR2  DEFAULT NULL,
l_service_hash  IN NUMBER    DEFAULT NULL,
l_module        IN VARCHAR2  DEFAULT NULL,
l_action        IN VARCHAR2  DEFAULT NULL,
l_client_id     IN VARCHAR2  DEFAULT NULL,
l_plsql_entry   IN VARCHAR2  DEFAULT NULL,
l_data_src      IN NUMBER    DEFAULT 0,
l_container     IN VARCHAR2  DEFAULT NULL)
RETURN awrrpt_text_type_table PIPELINED;

パラメータ

表179-6 ASH_GLOBAL_REPORT_TEXTのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

インスタンスのリスト('1,2,3'など)またはNULL(データベースのすべてのインスタンスについてレポートします)。

l_btime

開始時間。

l_etime

終了時間。

l_options

レポート・レベル(現在は使用されていません)。

l_slot_width

レポートの「トップ・アクティビティ」セクションで使用するスロットの幅(秒)を指定します。この引数はオプションで、これを指定しない場合、l_btimeとl_etimeの間の間隔は、10スロット以下に適切に分けられます。

l_sid

セッションID(「使用上の注意」を参照)。

l_sql_id

SQL ID(「使用上の注意」を参照)。

l_wait_class

待機クラス名(「使用上の注意」を参照)。

l_service_hash

サービス名のハッシュ(「使用上の注意」を参照)。

l_module

モジュール名(「使用上の注意」を参照)。

l_action

アクション名(「使用上の注意」を参照)。

l_client_id

エンドツーエンドのバックトレースのクライアントID(「使用上の注意」を参照)。

l_plsql_entry

PL/SQLエントリ・ポイント(「使用上の注意」を参照)。

l_data_src

レポートはディスク上のデータからのみ成り立っているため、無視されます。

l_container

レポート・アクティビティを制限する対象のコンテナの名前。NULL (デフォルト)以外の有効な値は、V$CONTAINERSに含まれるコンテナ名から得られます。動作は次のとおりです。

- NULLの場合: ルート・コンテナに接続されている場合、レポートはすべてのコンテナを対象とします。PDBに接続されている場合、レポートはそのPDBのみを対象とします。

- NULLでない場合: ルート・コンテナに接続されている場合、レポートは指定されたコンテナからのアクティビティを対象とします。PDBに接続されている場合、レポートは接続されたPDBに関するl_containerにNULL値を指定した場合と同じです。

注意: PDBへの接続時に別のPDBからの情報を要求すると、空のレポートが作成されます。

戻り値

出力はVARCHAR2(320)の1列です。

使用上の注意

- このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるashrpti.sqlスクリプトを使用することをお薦めします。

- 指定されていないオプションの引数は、レポート対象(SQL文、セッション、特定のサービス名/モジュール名の組合せなど)を指定するASHレポートを生成するために使用します。これらの引数は、レポートの生成に使用されるASH行を制限するために指定します。たとえば、特定のSQL文(SQL_ID 'abcdefghij123 'など)に関するASHレポートを生成するには、次のように、そのSQL_ID値をl_sql_id引数に渡します。

l_sql_id =>  'abcdefghij123'

表179-7 ASH_GLOBAL_REPORT_TEXT: 引数でのワイルドカードの使用

引数名

コメント

ワイルドカードを使用できるかどうか

l_sid

セッションID(V$SESSION.SIDなど)。

いいえ

l_sql_id

SQL ID(V$SQL.SQL_IDなど)。

はい

l_wait_class

待機クラス名(V$EVENT_NAME.WAIT_CLASSなど)。

はい

l_service_hash

サービス名のハッシュ(V$ACTIVE_SERVICES.NAME_HASHなど)。

いいえ

l_module

モジュール名(V$SESSION.MODULEなど)。

はい

l_action

アクション名(V$SESSION.ACTIONなど)。

はい

l_client_id

エンドツーエンドのバックトレースのクライアントID(V$SESSION.CLIENT_IDENTIFIERなど)。

はい

l_plsql_entry

PL/SQLエントリ・ポイント("SYS.DBMS_LOB.*"など)。

はい

l_data_src

l_data_srcは数値データ・タイプであるため、ワイルドカードは使用できません。

いいえ

- これらのオプションの引数はいずれの組合せでも渡すことができ、また、これらのすべてのレポート対象を満たすASHの行のみが使用されます。複数のレポート対象が指定されている場合は、条件ロジックのANDを使用してこれらの対象を連結します。たとえば、MODULE "PAYROLL"およびACTION "PROCESS"に関するASHレポートを生成するには、次の条件を使用します。

l_module =>  'PAYROLL', l_action =>  'PROCESS'

VARCHAR2タイプのすべての引数で、有効なSQLワイルドカードを使用できます。

ASH_REPORT_HTMLファンクション

このテーブル・ファンクションは、ASHスポット・レポートをHTMLで表示します。

構文

DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_HTML(
l_dbid          IN NUMBER,
l_inst_num      IN NUMBER,
l_btime         IN DATE,
l_etime         IN DATE,
l_options       IN NUMBER    DEFAULT 0,
l_slot_width    IN NUMBER    DEFAULT 0,
l_sid           IN NUMBER    DEFAULT NULL,
l_sql_id        IN VARCHAR2  DEFAULT NULL,
l_wait_class    IN VARCHAR2  DEFAULT NULL,
l_service_hash  IN NUMBER    DEFAULT NULL,
l_module        IN VARCHAR2  DEFAULT NULL,
l_action        IN VARCHAR2  DEFAULT NULL,
l_client_id     IN VARCHAR2  DEFAULT NULL,
l_plsql_entry   IN VARCHAR2  DEFAULT NULL,
l_data_src      IN NUMBER    DEFAULT 0,
l_container     IN VARCHAR2  DEFAULT NULL)
RETURN awrrpt_html_type_table PIPELINED;

パラメータ

表179-8 ASH_REPORT_HTMLのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

インスタンス番号。

l_btime

開始時間。

l_etime

終了時間。

l_options

レポート・レベル(現在は使用されていません)。

l_slot_width

レポートの「トップ・アクティビティ」セクションで使用するスロットの幅(秒)を指定します。この引数はオプションで、これを指定しない場合、l_btimeとl_etimeの間の間隔は、10スロット以下に適切に分けられます。

l_sid

セッションID(「使用上の注意」を参照)。

l_sql_id

SQL ID(「使用上の注意」を参照)。

l_wait_class

待機クラス名(「使用上の注意」を参照)。

l_service_hash

サービス名のハッシュ(「使用上の注意」を参照)。

l_module

モジュール名(「使用上の注意」を参照)。

l_action

アクション名(「使用上の注意」を参照)。

l_client_id

エンドツーエンドのバックトレースのクライアントID(「使用上の注意」を参照)。

l_plsql_entry

PL/SQLエントリ・ポイント(「使用上の注意」を参照)。

l_data_src

データ・ソースの指定に使用可能(「使用上の注意」を参照)。

- 1 =>メモリー(V$ACTIVE_SESION_HISTORY)

- 2 =>ディスク(DBA_HIST_ACTIVE_SESS_HISTORY)

- 0 =>両方。これがデフォルト値です。開始時間パラメータと終了時間パラメータを使用して、適切なデータ・ソース(メモリー、ディスクまたはその両方)からサンプルを取得します。

l_container

レポート・アクティビティを制限する対象のコンテナの名前。NULL (デフォルト)以外の有効な値は、V$CONTAINERSに含まれるコンテナ名から得られます。動作は次のとおりです。

- NULLの場合: ルート・コンテナに接続されている場合、レポートはすべてのコンテナを対象とします。PDBに接続されている場合、レポートはそのPDBのみを対象とします。

- NULLでない場合: ルート・コンテナに接続されている場合、レポートは指定されたコンテナからのアクティビティを対象とします。PDBに接続されている場合、レポートは接続されたPDBに関するl_containerにNULL値を指定した場合と同じです。

注意: PDBへの接続時に別のPDBからの情報を要求すると、空のレポートが作成されます。

戻り値

出力はVARCHAR2(500)の1列です。

使用上の注意

- このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるashrpti.sqlスクリプトを使用することをお薦めします。

- デフォルトでは、レポートは開始時間パラメータと終了時間パラメータ(l_btimeとl_etime)を使用して、その時間範囲にあるすべての列をメモリー、ディスクまたはその両方から検索します。ただし、l_data_srcを使用すると、それらのデータ・ソースのいずれかを明示的に指定できます。たとえば、l_btimeとl_timeの間にあるメモリー内のすべての列に関するASHレポートを生成するには、次の条件を使用します。

l_data_src =>  1

同様に、ディスク上のみにあるサンプルに関するレポートを生成するには、次の条件を使用します。

l_data_src => 2

- 指定されていないオプションの引数は、レポート対象(SQL文、セッション、特定のサービス名/モジュール名の組合せなど)を指定するASHレポートを生成するために使用します。これらの引数は、レポートの生成に使用されるASH行を制限するために指定します。たとえば、特定のSQL文(SQL_ID 'abcdefghij123'など)に関するASHレポートを生成するには、次のように、そのsql_id値をl_sql_id引数に渡します。

l_sql_id =>  'abcdefghij123'

これらのオプションの引数はいずれの組合せでも渡すことができ、また、これらのすべてのレポート対象を満たすASHの行のみが使用されます。複数のレポート対象が指定されている場合は、条件ロジックのANDを使用してこれらの対象を連結します。たとえば、MODULE "PAYROLL"およびACTION "PROCESS"に関するASHレポートを生成するには、次の条件を使用します。

l_module =>  'PAYROLL', l_action =>  'PROCESS'

VARCHAR2タイプのすべての引数で、有効なSQLワイルドカードを使用できます。

表179-9 ASH_REPORT_HTML: 引数でのワイルドカードの使用

引数名

コメント

ワイルドカードを使用できるかどうか

l_sid

セッションID(V$SESSION.SIDなど)。

いいえ

l_sql_id

SQL ID(V$SQL.SQL_IDなど)。

はい

l_wait_class

待機クラス名(V$EVENT_NAME.WAIT_CLASSなど)。

はい

l_service_hash

サービス名のハッシュ(V$ACTIVE_SERVICES.NAME_HASHなど)。

いいえ

l_module

モジュール名(V$SESSION.MODULEなど)。

はい

l_action

アクション名(V$SESSION.ACTIONなど)。

はい

l_client_id

エンドツーエンドのバックトレースのクライアントID(V$SESSION.CLIENT_IDENTIFIERなど)。

はい

ASH_REPORT_TEXTファンクション

このテーブル・ファンクションは、ASHスポット・レポートをテキストで表示します。

構文

DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_TEXT(
l_dbid          IN NUMBER,
l_inst_num      IN NUMBER,
l_btime         IN DATE,
l_etime         IN DATE,
l_options       IN NUMBER    DEFAULT 0,
l_slot_width    IN NUMBER    DEFAULT 0,
l_sid           IN NUMBER    DEFAULT NULL,
l_sql_id        IN VARCHAR2  DEFAULT NULL,
l_wait_class    IN VARCHAR2  DEFAULT NULL,
l_service_hash  IN NUMBER    DEFAULT NULL,
l_module        IN VARCHAR2  DEFAULT NULL,
l_action        IN VARCHAR2  DEFAULT NULL,
l_client_id     IN VARCHAR2  DEFAULT NULL,
l_plsql_entry   IN VARCHAR2  DEFAULT NULL,
l_data_src      IN NUMBER    DEFAULT 0,
l_container     IN VARCHAR2  DEFAULT NULL)
RETURN awrrpt_text_type_table PIPELINED;

パラメータ

表179-10 ASH_REPORT_TEXTのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

インスタンス番号。

l_btime

開始時間。

l_etime

終了時間。

l_options

レポート・レベル(現在は使用されていません)。

l_slot_width

レポートの「トップ・アクティビティ」セクションで使用するスロットの幅(秒)を指定します。この引数はオプションで、これを指定しない場合、l_btimeとl_etimeの間の間隔は、10スロット以下に適切に分けられます。

l_sid

セッションID(「使用上の注意」を参照)。

l_sql_id

SQL ID(「使用上の注意」を参照)。

l_wait_class

待機クラス名(「使用上の注意」を参照)。

l_service_hash

サービス名のハッシュ(「使用上の注意」を参照)。

l_module

モジュール名(「使用上の注意」を参照)。

l_action

アクション名(「使用上の注意」を参照)。

l_client_id

エンドツーエンドのバックトレースのクライアントID(「使用上の注意」を参照)。

l_plsql_entry

PL/SQLエントリ・ポイント(「使用上の注意」を参照)。

l_data_src

データ・ソースの指定に使用可能(「使用上の注意」を参照)。

- 1 =>メモリー(V$ACTIVE_SESION_HISTORY)

- 2 =>ディスク(DBA_HIST_ACTIVE_SESS_HISTORY)

- 0 =>両方。これがデフォルト値です。開始時間パラメータと終了時間パラメータを使用して、適切なデータ・ソース(メモリー、ディスクまたはその両方)からサンプルを取得します。

l_container

レポート・アクティビティを制限する対象のコンテナの名前。NULL (デフォルト)以外の有効な値は、V$CONTAINERSに含まれるコンテナ名から得られます。動作は次のとおりです。

- NULLの場合: ルート・コンテナに接続されている場合、レポートはすべてのコンテナを対象とします。PDBに接続されている場合、レポートはそのPDBのみを対象とします。

- NULLでない場合: ルート・コンテナに接続されている場合、レポートは指定されたコンテナからのアクティビティを対象とします。PDBに接続されている場合、レポートは接続されたPDBに関するl_containerにNULL値を指定した場合と同じです。

注意: PDBへの接続時に別のPDBからの情報を要求すると、空のレポートが作成されます。

戻り値

出力はVARCHAR2(80)の1列です。

使用上の注意

- このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるashrpti.sqlスクリプトを使用することをお薦めします。

- デフォルトでは、レポートは開始時間パラメータと終了時間パラメータ(l_btimeとl_etime)を使用して、その時間範囲にあるすべての列をメモリー、ディスクまたはその両方から検索します。ただし、l_data_srcを使用すると、それらのデータ・ソースのいずれかを明示的に指定できます。たとえば、l_btimeとl_timeの間にあるメモリー内のすべての列に関するASHレポートを生成するには、次の条件を使用します。

l_data_src =>  1

同様に、ディスク上のみにあるサンプルに関するレポートを生成するには、次の条件を使用します。

l_data_src => 2

- 指定されていないオプションの引数は、レポート対象(SQL文、セッション、特定のサービス名/モジュール名の組合せなど)を指定するASHレポートを生成するために使用します。これらの引数は、レポートの生成に使用されるASH行を制限するために指定します。たとえば、特定のSQL文(SQL_ID 'abcdefghij123'など)に関するASHレポートを生成するには、次のように、そのSQL_ID値をl_sql_id引数に渡します。

l_sql_id =>  'abcdefghij123'

表179-11 ASH_REPORT_TEXT: 引数でのワイルドカードの使用

引数名

コメント

ワイルドカードを使用できるかどうか

l_sid

セッションID(V$SESSION.SIDなど)。

いいえ

l_sql_id

SQL ID(V$SQL.SQL_IDなど)。

はい

l_wait_class

待機クラス名(V$EVENT_NAME.WAIT_CLASSなど)。

はい

l_service_hash

サービス名のハッシュ(V$ACTIVE_SERVICES.NAME_HASHなど)。

いいえ

l_module

モジュール名(V$SESSION.MODULEなど)。

はい

l_action

アクション名(V$SESSION.ACTIONなど)。

はい

l_client_id

エンドツーエンドのバックトレースのクライアントID(V$SESSION.CLIENT_IDENTIFIERなど)。

はい

l_plsql_entry

PL/SQLエントリ・ポイント("SYS.DBMS_LOB.*"など)。

はい

l_data_src

l_data_srcは数値データ・タイプであるため、ワイルドカードは使用できません。

いいえ

- これらのオプションの引数はいずれの組合せでも渡すことができ、また、これらのすべてのレポート対象を満たすASHの行のみが使用されます。複数のレポート対象が指定されている場合は、条件ロジックのANDを使用してこれらの対象を連結します。たとえば、MODULE "PAYROLL"およびACTION "PROCESS"に関するASHレポートを生成するには、次の条件を使用します。

l_module =>  'PAYROLL', l_action =>  'PROCESS'

VARCHAR2タイプのすべての引数で、有効なSQLワイルドカードを使用できます。

AWR_DIFF_REPORT_HTMLファンクション

このテーブル・ファンクションは、AWR期間の比較レポートをHTMLで表示します。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML(
dbid1     IN NUMBER,
inst_num1 IN NUMBER,
bid1      IN NUMBER,
eid1      IN NUMBER,
dbid2     IN NUMBER,
inst_num2 IN NUMBER,
bid2      IN NUMBER,
eid2      IN NUMBER)
RETURN awrdrpt_text_type_table PIPELINED;

パラメータ

表179-12 AWR_DIFF_REPORT_HTMLのパラメータ

パラメータ

説明

dbid1

1番目のデータベース識別子。

inst_num1

1番目のインスタンス番号。

bid1

1番目の開始スナップショットID。

eid1

1番目の終了スナップショットID。

dbid2

2番目のデータベース識別子。

inst_num2

2番目のインスタンス番号。

bid2

2番目の開始スナップショットID。

eid2

2番目の終了スナップショットID。

戻り値

出力はVARCHAR2(500)の1列です。

使用上の注意

このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるawrddrpt.sqlスクリプトを使用することをお薦めします。

AWR_DIFF_REPORT_TEXTファンクション

このテーブル・ファンクションは、AWR期間の比較レポートをテキストで表示します。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_TEXT(
dbid1     IN NUMBER,
inst_num1 IN NUMBER,
bid1      IN NUMBER,
eid1      IN NUMBER,
dbid2     IN NUMBER,
inst_num2 IN NUMBER,
bid2      IN NUMBER,
eid2      IN NUMBER)
RETURN awrdrpt_text_type_table PIPELINED;

パラメータ

表179-13 AWR_DIFF_REPORT_TEXTのパラメータ

パラメータ

説明

dbid1

1番目のデータベース識別子。

inst_num1

1番目のインスタンス番号。

bid1

1番目の開始スナップショットID。

eid1

1番目の終了スナップショットID。

dbid2

2番目のデータベース識別子。

inst_num2

2番目のインスタンス番号。

bid2

2番目の開始スナップショットID。

eid2

2番目の終了スナップショットID。

戻り値

出力はVARCHAR2(500)の1列です。

使用上の注意

このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるawrddrpt.sqlスクリプトを使用することをお薦めします。

AWR_GLOBAL_DIFF_REPORT_HTMLファンクション

このテーブル・ファンクションは、グローバルAWR期間の比較レポートをHTML形式で表示します。

最初のオーバーロードでは、inst_num1およびinst_num2に対してインスタンス番号のカンマ区切りリストが受け入れられます。先頭に0 (ゼロ)は使用できず、また、1023文字以内という制限があります。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_DIFF_REPORT_HTML (
dbid1        IN    NUMBER,
inst_num1    IN    AWRRPT_INSTANCE_LIST_TYPE,
bid1         IN    NUMBER,
eid1         IN    NUMBER,
dbid2        IN    NUMBER,
inst_num2    IN    AWRRPT_INSTANCE_LIST_TYPE,
bid2         IN    NUMBER,
eid2         IN    NUMBER)
RETURN awrrpt_html_type_table PIPELINED;

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_DIFF_REPORT_HTML (
dbid1        IN    NUMBER,
inst_num1    IN    VARCHAR2,
bid1         IN    NUMBER,
eid1         IN    NUMBER,
dbid2        IN    NUMBER,
inst_num2    IN    VARCHAR2,
bid2         IN    NUMBER,
eid2         IN    NUMBER)
RETURN awrrpt_html_type_table PIPELINED;

パラメータ

表179-14 AWR_GLOBAL_DIFF_REPORT_HTMLファンクションのパラメータ

パラメータ

説明

dbid1

1番目のデータベース識別子。

inst_num1

インスタンス番号の1番目のリスト。NULLに設定した場合、開始スナップショットと終了スナップショットが使用可能となり、スナップショット間で再起動されていないすべてのインスタンスがレポートに含まれます。

bid1

1番目の開始スナップショットID。

eid1

1番目の終了スナップショットID。

dbid2

2番目のデータベース識別子。

inst_num2

レポートに含まれるインスタンス番号の2番目のリスト。NULLに設定した場合、開始スナップショットと終了スナップショットが使用可能となり、スナップショット間で再起動されていないすべてのインスタンスがレポートに含まれます。

bid2

2番目の開始スナップショットID。

eid2

2番目の終了スナップショットID。

戻り値

出力はVARCHAR2(1500)の1列です。

AWR_GLOBAL_DIFF_REPORT_TEXTファンクション

このテーブル・ファンクションは、グローバルAWR期間の比較レポートをテキスト形式で表示します。

最初のオーバーロードでは、inst_num1およびinst_num2に対してインスタンス番号のカンマ区切りリストが受け入れられます。先頭に0 (ゼロ)は使用できず、また、1023文字以内という制限があります。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_DIFF_REPORT_TEXT (
dbid1        IN    NUMBER,
inst_num1    IN    AWRRPT_INSTANCE_LIST_TYPE,
bid1         IN    NUMBER,
eid1         IN    NUMBER,
dbid2        IN    NUMBER,
inst_num2    IN    AWRRPT_INSTANCE_LIST_TYPE,
bid2         IN    NUMBER,
eid2         IN    NUMBER)
RETURN awrdrpt_text_type_table PIPELINED;

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_DIFF_REPORT_TEXT (
dbid1        IN    NUMBER,
inst_num1    IN    VARCHAR2,
bid1         IN    NUMBER,
eid1         IN    NUMBER,
dbid2        IN    NUMBER,
inst_num2    IN    VARCHAR2,
bid2         IN    NUMBER,
eid2         IN    NUMBER)
RETURN awrdrpt_text_type_table PIPELINED;

パラメータ

表179-15 AWR_GLOBAL_DIFF_REPORT_TEXTファンクションのパラメータ

パラメータ

説明

dbid1

1番目のデータベース識別子。

inst_num1

インスタンス番号の1番目のリスト。NULLに設定した場合、開始スナップショットと終了スナップショットが使用可能となり、スナップショット間で再起動されていないすべてのインスタンスがレポートに含まれます。

bid1

1番目の開始スナップショットID。

eid1

1番目の終了スナップショットID。

dbid2

2番目のデータベース識別子。

inst_num2

レポートに含まれるインスタンス番号の2番目のリスト。NULLに設定した場合、開始スナップショットと終了スナップショットが使用可能となり、スナップショット間で再起動されていないすべてのインスタンスがレポートに含まれます。

bid2

2番目の開始スナップショットID。

eid2

2番目の終了スナップショットID。

戻り値

出力はVARCHAR2(320)の1列です。

AWR_GLOBAL_REPORT_HTMLファンクション

このテーブル・ファンクションは、グローバルAWRレポートをHTMLで表示します。

最初のオーバーロードでは、インスタンス番号のカンマ区切りリストが受け入れられます。先頭に0 (ゼロ)は使用できず、また、1023文字以内という制限があります。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_REPORT_HTML (
l_dbid        IN    NUMBER,
l_inst_num    IN    AWRRPT_INSTANCE_LIST_TYPE,   l_bid         IN    NUMBER,
l_eid         IN    NUMBER,
l_options     IN    NUMBER DEFAULT 0)
RETURN awrrpt_html_type_table PIPELINED;

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_REPORT_HTML (
l_dbid       IN    NUMBER,
l_inst_num   IN    VARCHAR2,   l_bid        IN    NUMBER,
l_eid        IN    NUMBER,
l_options    IN    NUMBER DEFAULT 0)
RETURN awrrpt_html_type_table PIPELINED;

パラメータ

表179-16 AWR_GLOBAL_REPORT_HTMLファンクションのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

レポートに含まれるインスタンス番号のリスト。NULLに設定した場合、開始スナップショットと終了スナップショットが使用可能となり、スナップショット間で再起動されていないすべてのインスタンスがレポートに含まれます。

l_bid

開始スナップショットID。

l_eid

終了スナップショットID。

l_options

レポート・レベル(現在は使用されていません)。

戻り値

出力はVARCHAR2(1500)の1列です。

AWR_GLOBAL_REPORT_TEXTファンクション

このテーブル・ファンクションは、グローバルAWRレポートをテキストで表示します。

最初のオーバーロードでは、インスタンス番号のカンマ区切りリストが受け入れられます。先頭に0 (ゼロ)は使用できず、また、1023文字以内という制限があります。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_REPORT_TEXT(
l_dbid        IN    NUMBER,
l_inst_num    IN    AWRRPT_INSTANCE_LIST_TYPE,
l_bid         IN    NUMBER,
l_eid         IN    NUMBER,
l_options     IN    NUMBER DEFAULT 0)
RETURN awrdrpt_text_type_table PIPELINED;

DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_REPORT_TEXT(
l_dbid       IN    NUMBER,
l_inst_num   IN    VARCHAR2,
l_bid        IN    NUMBER,
l_eid        IN    NUMBER,
l_options    IN    NUMBER DEFAULT 0)
RETURN awrdrpt_text_type_table PIPELINED;

パラメータ

表179-17 AWR_GLOBAL_REPORT_TEXTファンクションのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

レポートに含まれるインスタンス番号のリスト。NULLに設定した場合、開始スナップショットと終了スナップショットが使用可能となり、スナップショット間で再起動されていないすべてのインスタンスがレポートに含まれます。

l_bid

開始スナップショットID。

l_eid

終了スナップショットID。

l_options

レポートの出力を制御するために指定するフラグ。現在は使用されていません。

戻り値

出力はVARCHAR2(320)の1列です。

AWR_REPORT_HTMLファンクション

このテーブル・ファンクションは、AWRレポートをHTMLで表示します。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(
l_dbid       IN    NUMBER,
l_inst_num   IN    NUMBER,
l_bid        IN    NUMBER,
l_eid        IN    NUMBER,
l_options    IN    NUMBER DEFAULT 0)
RETURN awrrpt_text_type_table PIPELINED;

パラメータ

表179-18 AWR_REPORT_HTMLのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

インスタンス番号。

l_bid

開始スナップショットID。

l_eid

終了スナップショットID。

l_options

レポートの出力を制御するために指定するフラグ。現在、Oracleでは次の1つの値をサポートしています。

- l_options - 8。レポートのADDM固有部分を表示します。これらのセクションには、バッファ・プール・アドバイス、共有プール・アドバイス、およびPGAターゲット・アドバイスが含まれます。

戻り値

出力はVARCHAR2(1500)の1列です。

使用上の注意

このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるawrrpt.sqlスクリプトを使用することをお薦めします。

AWR_REPORT_TEXTファンクション

このテーブル・ファンクションは、AWRレポートをテキストで表示します。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(
l_dbid       IN    NUMBER,
l_inst_num   IN    NUMBER,
l_bid        IN    NUMBER,
l_eid        IN    NUMBER,
l_options    IN    NUMBER DEFAULT 0)
RETURN awrrpt_text_type_table PIPELINED;

パラメータ

表179-19 AWR_REPORT_TEXTのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_insT_num

インスタンス番号。

l_bid

開始スナップショットID。

l_eid

終了スナップショットID。

l_options

レポートの出力を制御するために指定するフラグ。現在、Oracleでは次の1つの値をサポートしています。

- l_options - 8。レポートのADDM固有部分を表示します。これらのセクションには、バッファ・プール・アドバイス、共有プール・アドバイス、およびPGAターゲット・アドバイスが含まれます。

戻り値

出力はVARCHAR2(80)の1列です。

使用上の注意

このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるawrrpt.sqlスクリプトを使用することをお薦めします。

AWR_SET_REPORT_THRESHOLDSプロシージャ

このプロシージャは、レポートの行数などの指定されたレポートのしきい値を構成します。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_SET_REPORT_THRESHOLDS(
top_n_events         IN   NUMBER DEFAULT NULL,
top_n_files          IN   NUMBER DEFAULT NULL,
top_n_segments       IN   NUMBER DEFAULT NULL,
top_n_services       IN   NUMBER DEFAULT NULL,
top_n_sql            IN   NUMBER DEFAULT NULL,
top_n_sql_max        IN   NUMBER DEFAULT NULL,
top_sql_pct          IN   NUMBER DEFAULT NULL,
shmem_threshold      IN   NUMBER DEFAULT NULL,
versions_threshold   IN   NUMBER DEFAULT NULL);

パラメータ

表179-20 AWR_SET_REPORT_THRESHOLDSプロシージャのパラメータ

パラメータ

説明

top_n_events

組み込まれる最も重大な待機イベント数

top_n_files

組み込まれる最もアクティブなファイル数

top_n_segments

組み込まれる最もアクティブなセグメント数

top_n_services

組み込まれる最もアクティブなサービス数

top_n_sql

組み込まれる最も重大なSQL文の数

top_n_sql_max

SQL文のアクティビティがtop_sql_pctで指定されたものより大きい場合に組み込まれるSQL文の数。

top_sql_pct

top_n_sqlとtop_n_sql_maxの間のSQL文の重要度しきい値。

shmem_threshold

共有メモリーの低しきい値。

versions_threshold

計画バージョン・カウントの低しきい値。

ユーザーへの注意

- 各設定の影響は、生成されるレポートのタイプおよび基礎となるAWRデータによって異なります。各レポート・タイプに対してすべての設定が意味を持つわけではありません。無効な設定(負の数など)は無視されます。

- 設定は、AWR_SET_REPORT_THRESHOLDSプロシージャを実行するセッションのコンテキストでのみ有効です。たとえば、デフォルトと比較して上位12個のセグメントを示すレポートを取得するには、次のようにプロシージャを起動できます。

DBMS_WORKLOAD_REPOSITORY.AWR_SET_REPORT_THRESHOLDS (top_n_segments=>12);

AWR_SQL_REPORT_HTMLファンクション

このテーブル・ファンクションは、AWR SQLレポートをHTML形式で表示します。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_SQL_REPORT_HTML(
l_dbid       IN    NUMBER,
l_inst_num   IN    NUMBER,
l_bid        IN    NUMBER,
l_eid        IN    NUMBER,
l_sqlid      IN    VARCHAR2,
l_options    IN    NUMBER DEFAULT 0)
RETURN awrrpt_html_type_table PIPELINED;

パラメータ

表179-21 AWR_SQL_REPORT_HTMLのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

インスタンス番号。

l_bid

開始スナップショットID。

l_eid

終了スナップショットID。

l_sqlid

分析する文のSQL ID。

l_options

レポートの出力を制御するために指定するフラグ。現在は使用されていません。

戻り値

出力はVARCHAR2(500)の1列です。

使用上の注意

このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるawrsqrpt.sqlスクリプトを使用することをお薦めします。

AWR_SQL_REPORT_TEXTファンクション

このテーブル・ファンクションは、AWR SQLレポートをテキスト形式で表示します。

構文

DBMS_WORKLOAD_REPOSITORY.AWR_SQL_REPORT_TEXT(
l_dbid       IN    NUMBER,
l_inst_num   IN    NUMBER,
l_bid        IN    NUMBER,
l_eid        IN    NUMBER,
l_sqlid      IN    VARCHAR2,
l_options    IN    NUMBER DEFAULT 0)
RETURN awrrpt_text_type_table PIPELINED;

パラメータ

表179-22 AWR_SQL_REPORT_TEXTのパラメータ

パラメータ

説明

l_dbid

データベース識別子。

l_inst_num

インスタンス番号。

l_bid

開始スナップショットID。

l_eid

終了スナップショットID。

l_sqlid

分析する文のSQL ID。

l_options

レポートの出力を制御するために指定するフラグ。現在は使用されていません。

戻り値

出力はVARCHAR2(120)の1列です。

使用上の注意

このファンクションを直接コールすることもできますが、ユーザーに必要な情報の入力を求めるawrsqrpt.sqlスクリプトを使用することをお薦めします。

CREATE_BASELINEファンクションおよびプロシージャ

このファンクションおよびプロシージャは、ベースラインを作成します。

構文

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
start_snap_id    IN  NUMBER,
end_snap_id      IN  NUMBER,
baseline_name    IN  VARCHAR2,
dbid             IN  NUMBER DEFAULT NULL,
expiration       IN  NUMBER DEFAULT NULL);

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
start_snap_id    IN  NUMBER,
end_snap_id      IN  NUMBER,
baseline_name    IN  VARCHAR2,
dbid             IN  NUMBER DEFAULT NULL,
expiration       IN  NUMBER DEFAULT NULL)
RETURN NUMBER;

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
start_time       IN  DATE,
end_time         IN  DATE,
baseline_name    IN  VARCHAR2,
dbid             IN  NUMBER DEFAULT NULL,
expiration       IN  NUMBER DEFAULT NULL);

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
start_time       IN  DATE,
end_time         IN  DATE,
baseline_name    IN  VARCHAR2,
dbid             IN  NUMBER DEFAULT NULL,
expiration       IN  NUMBER DEFAULT NULL);
RETURN NUMBER;

パラメータ

表179-23 CREATE_BASELINEファンクションおよびプロシージャのパラメータ

パラメータ

説明

start_snap_id

ベースラインの開始スナップショット順序番号。

end_snap_id

ベースラインの終了スナップショット順序番号。

start_time

ベースラインの開始時間。

end_time

ベースラインの終了時間。

baseline_name

ベースラインの名前。

dbid

ベースラインのデータベースID。NULLの場合は、ローカル・データベースのデータベースIDになります。デフォルトはNULLです。

expiration

ベースラインの有効期限日数。NULLの場合、有効期限は無期限になり、ベースラインは削除されません。デフォルトはNULLです。

例外

- システム内にすでにこのベースライン名が存在する場合は、エラーが戻されます。

- このインタフェースに指定するスナップショットの範囲は、データベース内の既存の2つのスナップショットである必要があります。入力したスナップショットがシステムに存在しない場合は、エラーが戻されます。

例

次の例では、ローカル・データベースのスナップショット105から107までのベースライン('oltp_peakload_bl'という名前で)を作成します。

EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 105,
end_snap_id => 107,
baseline_name => 'oltp_peakload_bl');

CREATE BASELINE操作後にDBA_HIST_BASELINEビューを問い合せると、ワークロード・リポジトリに新しく作成したベースラインが表示されます。

CREATE_BASELINE_TEMPLATEプロシージャ

このプロシージャでは、将来の期間でどのようにベースラインを作成するかを示すテンプレートを指定します。

構文

将来の単一の期間に基づいてベースラインを生成するためのテンプレートを指定します。

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(
start_time              IN DATE,
end_time                IN DATE,
baseline_name           IN VARCHAR2,
template_name           IN VARCHAR2,
expiration              IN NUMBER,
dbid                    IN NUMBER DEFAULT NULL);

繰返し期間に基づいてベースラインを作成および削除するためのテンプレートは、次のように指定します。

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(
day_of_week             IN VARCHAR2,
hour_in_day             IN NUMBER,
duration                IN NUMBER,
start_time              IN DATE,
end_time                IN DATE,
baseline_name_prefix    IN VARCHAR2,
template_name           IN VARCHAR2,
expiration              IN NUMBER,
dbid                    IN NUMBER DEFAULT NULL);

パラメータ

表179-24 CREATE_BASELINE_TEMPLATEプロシージャのパラメータ

パラメータ

説明

start_time

作成するベースラインの開始時間。

end_time

作成するベースラインの終了時間。

baseline_name

作成するベースラインの名前。

template_name

テンプレートの名前。

expiration

ベースラインの有効期限日数。NULLの場合、有効期限は無期限になり、ベースラインは削除されません。デフォルトはNULLです。

dbid

ベースラインのデータベースID。NULLの場合は、ローカル・データベースのデータベースIDになります。デフォルトはNULLです。

day_of_week

ベースラインを繰り返す曜日。SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAYのいずれかの値を指定します。

hour_in_day

ベースラインを開始する日中の時間を指定する0から23の値。

duration

日中の時間後にベースラインを継続させる期間(時間数)。

baseline_name_prefix

ベースライン接頭辞の名前。ベースライン作成時には、このベースライン名が接頭辞となり、日付情報が追加されます。

CREATE_SNAPSHOTファンクションおよびプロシージャ

このファンクションおよびプロシージャは、スナップショットを作成します。ファンクションの場合、スナップショットIDが戻されます。

構文

DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(
flush_level IN VARCHAR2 DEFAULT 'TYPICAL');

DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(
flush_level IN VARCHAR2 DEFAULT 'TYPICAL')
RETURN NUMBER;

パラメータ

表179-25 CREATE_SNAPSHOTのパラメータ

パラメータ

説明

flush_level

スナップショットが'TYPICAL'または'ALL'の場合のフラッシュ・レベル。

例

この例では、TYPICALレベルでマニュアル・スナップショットを作成します。

EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

CREATE_SNAPSHOT操作後にDBA_HIST_SNAPSHOTビューを問い合せると、ワークロード・リポジトリにもう1つスナップショットIDが追加されているのが確認できます。

DROP_BASELINEプロシージャ

このプロシージャは、以前に定義したベースラインを削除します。

構文

DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(
baseline_name  IN  VARCHAR2,
cascade        IN  BOOLEAN DEFAULT FALSE,
dbid           IN  NUMBER DEFAULT NULL);

パラメータ

表179-26 DROP_BASELINEのパラメータ

パラメータ

説明

baseline_name

システムから削除するベースラインの名前。

cascade

TRUEに設定すると、ベースラインに関連付けられたスナップショットの組合せも削除されます。それ以外の場合、ベースラインのみが削除されます。

dbid

ベースラインのデータベースID。NULLの場合は、ローカル・データベースのデータベースIDになります。デフォルトはNULLです。

例

この例では、元のスナップショットを削除せずに、ベースライン'oltp_peakload_bl'を削除します。

EXECUTE DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (
baseline_name => 'oltp_peakload_bl');

DROP_BASELINE操作後にDBA_HIST_BASELINEビューを問い合せると、指定したベースライン定義が削除されているのが確認できます。DBA_HIST_SNAPSHOTビューを問い合せて、元のスナップショットが変更されていないことを確認できます。

DROP_BASELINE_TEMPLATEプロシージャ

このプロシージャは、不要になったテンプレートを削除します。

構文

DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE(
template_name           IN VARCHAR2,   dbid                    IN NUMBER DEFAULT NULL);

パラメータ

表179-27 DROP_BASELINE_TEMPLATEプロシージャのパラメータ

パラメータ

説明

template_name

削除するテンプレートの名前。

dbid

ベースラインのデータベースID。NULLの場合は、ローカル・データベースのデータベースIDになります。デフォルトはNULLです。

DROP_SNAPSHOT_RANGEプロシージャ

このプロシージャは、一定の範囲のスナップショットを削除します。

構文

DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
low_snap_id    IN  NUMBER,
high_snap_id   IN  NUMBER
dbid           IN  NUMBER DEFAULT NULL);

パラメータ

表179-28 DROP_SNAPSHOT_RANGEプロシージャのパラメータ

パラメータ

説明

low_snap_id

削除するスナップショットの最低のスナップショットID。

high_snap_id

削除するスナップショットの最高のスナップショットID。

dbid

データベースID(デフォルトはローカルDBID)。

例

この例では、ローカル・データベースのスナップショットID102から105までのスナップショットの範囲を削除します。

EXECUTE DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(102, 105);

Drop Snapshot操作後にdba_hist_snapshotビューを問い合せると、ワークロード・リポジトリからスナップショット102から105が削除されているのが確認できます。

MODIFY_SNAPSHOT_SETTINGSプロシージャ

このプロシージャは、スナップショット生成の3つの側面を制御します。

- INTERVAL設定は、スナップショットが自動的に取得される間隔に影響を与えます。

- RETENTION設定は、ワークロード・リポジトリにスナップショットが保持される期間に影響を与えます。

- Top基準ごとに取得されるSQLの数。ユーザーがTop N SQLの値を手動で指定すると、AWR SQLコレクションは、自動および手動によるスナップショットの両方に対して、ユーザー指定の数を使用します。

2つのオーバーロードがあります。最初のオーバーロードはtopnsql引数のNUMBERを使用し、2番目のオーバーロードはVARCHAR2を使用します。これらの違いについては、パラメータの説明を参照してください。

構文

DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention   IN  NUMBER    DEFAULT NULL,
interval    IN  NUMBER    DEFAULT NULL,
topnsql     IN  NUMBER    DEFAULT NULL,
dbid        IN  NUMBER    DEFAULT NULL);

DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention   IN  NUMBER    DEFAULT NULL,
interval    IN  NUMBER    DEFAULT NULL,
topnsql     IN  VARCHAR2,
dbid        IN  NUMBER    DEFAULT NULL);

パラメータ

表179-29 MODIFY_SNAPSHOT_SETTINGSプロシージャのパラメータ

パラメータ

説明

retention

新しい保存期間(分単位)。値は、MIN_RETENTION(1日)からMAX_RETENTION(100年)の範囲で指定する必要があります。

ZEROを指定した場合、スナップショットは永久に保持されます。システム定義の大きい値が保存期間設定として使用されます。

NULLを指定した場合、古い保存期間の値が維持されます。

注意: 保存期間設定は、SYSTEM_MOVING_WINDOWベースラインのウィンドウ・サイズ以上にする必要があります。保存期間をウィンドウ・サイズ以下にする必要がある場合は、MODIFY_BASELINE_WINDOW_SIZEプロシージャを使用してウィンドウ・サイズを調整できます。

interval

スナップショット間の新しい間隔設定(分単位)。値はMIN_INTERVAL(10分)からMAX_INTERVAL(1年)の範囲で指定する必要があります。

ZEROを指定した場合、自動および手動によるスナップショットは無効になります。システム定義の大きい値が保存期間設定として使用されます。

NULLを指定した場合、現在の値が維持されます。

topnsql

- NUMBERの場合: Top N SQLのサイズ。SQL基準(経過時間、CPU時間、解析コール、共有可能メモリー、バージョン・カウント)ごとにフラッシュするTop SQLの数。この設定の値は、統計レベルまたはフラッシュ・レベルによる影響を受けず、AWR SQLコレクションに対するシステムのデフォルト動作より優先されます。この設定の最小値は30で、最大値は50,000です。NULLを指定すると、現在の設定が維持されます。

- VARCHAR2の場合: ユーザーは(DEFAULT、MAXIMUM、N)の値を指定でき、ここでNは、SQL基準ごとにフラッシュするTop SQLの数です。DEFAULTを指定すると、システムは統計レベルTYPICALのTop 30および統計レベルALLLのTop 100のデフォルト動作に戻ります。MAXIMUMを指定すると、システムはカーソル・キャッシュ内のSQLの完全なセットを取得します。数値Nを指定することは、NUMBERタイプを使用してTop N SQLを設定することと同じです。この引数にNULLを指定すると、現在の設定が維持されます。

dbid

スナップショット設定を変更するAWR内のデータベース識別子。NULLを指定した場合、ローカルのdbidが使用されます。デフォルトはNULLです。

例

この例では、ローカル・データベースのinterval設定を1時間に変更し、retention設定を2週間に変更します。

EXECUTE DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
interval  =>  60,
retention =>  20160);

このプロシージャの実行後にDBA_HIST_WR_CONTROL表を問い合せると、これらの設定の変更を確認できます。

MODIFY_BASELINE_WINDOW_SIZEプロシージャ

このプロシージャは、デフォルトの変動ウィンドウ・ベースラインのウィンドウ・サイズを変更します。

構文

DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE(
window_size    IN   NUMBER,
dbid           IN   NUMBER DEFAULT NULL);

パラメータ

表179-30 MODIFY_BASELINE_WINDOW_SIZEプロシージャのパラメータ

パラメータ

説明

window_size

デフォルトの変動ウィンドウ・ベースラインの新しいウィンドウ・サイズ(日数)。

dbid

データベースID(デフォルトはローカルDBID)。

使用上の注意

ウィンドウ・サイズは、AWR保存期間の設定以下にする必要があります。ウィンドウ・サイズを保存期間以上にする必要がある場合は、MODIFY_SNAPSHOT_SETTINGSプロシージャを使用してウィンドウ・サイズを調整できます。変動ウィンドウは、最大13週間に設定できます。

PURGE_SQL_DETAILSプロシージャ

このプロシージャは、SQL詳細をパージします。具体的には、WRH$_SQLSTATに対応する行(DBID、SQL_ID)がないWRH$_SQLTEXT、WRH$_SQL_PLANおよびWRH$_SQL_BIND_METADATAの行です。

このサブプログラムは、パージを実行するDBIDをコールします。DBIDが指定されていない場合、データベースのDBIDが使用されます。表ごとにパージする行の最大数を指定することによって、ランタイムを制限できます。最大値が指定されていない場合、サブプログラムは、適用可能な行をすべてパージしようとします。

構文

DBMS_WORKLOAD_REPOSITORY.PURGE_SQL_DETAILS(
numrows IN NUMBER DEFAULT NULL,
dbid    IN NUMBER DEFAULT NULL);

パラメータ

表179-31 PURGE_SQL_DETAILSプロシージャのパラメータ

パラメータ

説明

numrows

行数。

dbid

データベースID(デフォルトはローカルDBID)。

REMOVE_COLORED_SQLプロシージャ

このプロシージャでは色の付いたSQL IDを削除します。SQLを色なしにすると、そのSQLがTOPリストを作成しないかぎり、スナップショットに自動的に取得されることはありません。

構文

DBMS_WORKLOAD_REPOSITORY.REMOVE_COLORED_SQL(
sql_id         IN VARCHAR2,
dbid           IN NUMBER DEFAULT NULL);

パラメータ

表179-32 REMOVE_COLORED_SQLプロシージャのパラメータ

パラメータ

説明

sql_id

13文字の外部SQL ID。

dbid

オプションのdbid(デフォルトはローカルDBID)。

RENAME_BASELINEプロシージャ

このプロシージャは、ベースラインの名前を変更します。

構文

DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE(
old_baseline_name     IN   VARCHAR2,
new_baseline_name     IN VARCHAR2,
dbid                  IN NUMBER DEFAULT NULL);

パラメータ

表179-33 RENAME_BASELINEプロシージャのパラメータ

パラメータ

説明

old_baseline_name

旧ベースライン名。

new_baseline_name

新規ベースライン名。

dbid

データベースID(デフォルトはローカルDBID)。

SELECT_BASELINE_METRICファンクション

このテーブル・ファンクションは、ベースラインに対応するメトリックの値を示します。このテーブル・ファンクションは、AWR_BASELINE_METRIC_TYPEオブジェクト・タイプのオブジェクトを戻します。

構文

DBMS_WORKLOAD_REPOSITORY.SELECT_BASELINE_METRIC(
baseline_name     IN VARCHAR2,
dbid              IN NUMBER DEFAULT NULL,
instance_num      IN NUMBER DEFAULT NULL)
RETURN awr_metric_type_table PIPELINED;

パラメータ

表179-34 SELECT_BASELINE_METRICファンクションのパラメータ

パラメータ

説明

baseline_name

メトリックを表示するベースラインの名前。

dbid

ベースラインのデータベースID。NULLの場合は、ローカル・データベースのデータベースIDを使用します。デフォルトはNULLです。

instance_num

ユーザーが統計を表示するインスタンスの番号。NULLの場合は、ローカル・インスタンスの統計を表示します。デフォルトはNULLです。

UPDATE_OBJECT_INFOプロシージャ

このプロシージャは、ローカル・データベースのオブジェクトを表すWRH$_SEG_STAT_OBJ表の行を更新します。これは、ローカル・データベースに属しているすべてのオブジェクトの現在の名前を判別しようとします。ただし、名前列に'MISSING'値または'TRANSIENT'値(あるいはその両方)を含むものは除きます。このルーチンの起動ごとに実行される作業の量は、入力パラメータを設定することによって制御できます。

構文

DBMS_WORKLOAD_REPOSITORY.UPDATE_OBJECT_INFO(
maxrows   IN  NUMBER  DEFAULT 0);

パラメータ

表179-35 UPDATE_OBJECT_INFOプロシージャのパラメータ

パラメータ

説明

maxrows

更新する最大行数。デフォルトは0で、制限がないことを意味します。

180 DBMS_XA

DBMS_XAパッケージには、PL/SQLでXAインタフェースをコールするアプリケーション用のXA/Openインタフェースが含まれています。このパッケージによって、アプリケーション開発者は、PL/SQLを使用してSQL*Plusセッションまたはプロセス間でトランザクションの切替えまたは共有を実行できます。

関連項目:
Oracle XAによるアプリケーションの開発の詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_XAの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

- データ構造

- オブジェクト・タイプ

- 表タイプ

- DBMS_XAサブプログラムの要約

DBMS_XAの使用方法

- 概要

- セキュリティ・モデル

- 定数

- 使用上の注意

概要

これらのサブプログラムを使用すると、PL/SQLアプリケーションでグローバル・トランザクション・ブランチID(XID)を定義し、現行のセッションをトランザクション・ブランチに関連付けたり、関連付けを解除できます。

その後、2フェーズ・コミット・プロトコルに従って、これらのトランザクション・ブランチを準備およびコミットできます。含まれるリソース・マネージャが1つの場合にのみ、1フェーズ・コミット・プロトコルもサポートされます。

また、現行セッションで開始する可能性のある新しいグローバル・トランザクション・ブランチのタイムアウト値を設定するPL/SQLアプリケーションのインタフェースも提供されています。

セキュリティ・モデル

このパッケージは、SYSの下に作成されます。このパッケージが提供する操作は、パッケージ所有者SYSではなく、現行のコール・ユーザーのもとで実行されます。無名PL/SQLブロックからコールされたDBMS_XAサブプログラムは、現在のユーザーの権限を使用して実行されます。ストアド・プロシージャからコールされたDBMS_XAサブプログラムは、そのストアド・プロシージャの所有者の権限を使用して実行されます。

XA_RECOVERサブプログラムを実行する必要があるユーザーには、SYS.DBA_PENDING_TRANSACTIONSに関するSELECTまたはREAD権限が必要です。

他のユーザーによって作成されたXAトランザクションを操作する必要があるユーザーには、FORCE ANY TRANSACTION権限が必要です。

定数

DBMS_XAパッケージでは、XA_STARTファンクションおよびXA_ENDファンクションのフラグ・フィールドに、表180-1に示す定数が使用されます。

表180-1 XA_STARTおよびXA_ENDファンクションのフラグ・フィールドのDBMS_XA定数

名前

タイプ

値

説明

TMNOFLAGS

PLS_INTEGER

00000000

フラグ値が選択されていないことを示します。

TMSUCCESS

PLS_INTEGER

UTL_RAW.CAST_TO_BINARY_INTEGER ('04000000')

コール元をトランザクション・ブランチから分離します。

TMJOIN

PLS_INTEGER

UTL_RAW.CAST_TO_BINARY_INTEGER ('00200000')

コール元は既存のトランザクション・ブランチを結合しています。

TMSUSPEND

PLS_INTEGER

UTL_RAW.CAST_TO_BINARY_INTEGER ('02000000')

コール元は関連付けを終了せずに、中断しています。

TMRESUME

PLS_INTEGER

UTL_RAW.CAST_TO_BINARY_INTEGER ('08000000')

コール元は中断したトランザクション・ブランチとの関連付けを再開しています。

DBMS_XAパッケージでは、有効な戻り値に対して表180-2に示す定数が使用されます。

表180-2 有効な戻り値に対するDBMS_XA定数

名前

タイプ

値

説明

XA_RBBASE

PLS_INTEGER

100

ロールバック・コードの下限(下限値を含む)。

XA_RBROLLBACK

PLS_INTEGER

XA_RBBASE

詳細不明の理由によってロールバックが行われました。

XA_RBCOMMFAIL

PLS_INTEGER

XA_RBBASE+1

通信障害によってロールバックが行われました。

XA_RBDEADLOCK

PLS_INTEGER

XA_RBBASE+2

デッドロックが検出されました。

XA_RBINTEGRITY

PLS_INTEGER

XA_RBBASE+3

リソースの整合性に違反する状態が検出されました。

XA_RBOTHER

PLS_INTEGER

XA_RBBASE+4

リストにない理由によって、リソース・マネージャがトランザクションをロールバックしました。

XA_RBPROTO

PLS_INTEGER

XA_RBBASE+5

リソース・マネージャでプロトコル・エラーが発生しました。

XA_RBTIMEOUT

PLS_INTEGER

XA_RBBASE+6

トランザクション・ブランチに時間がかかりすぎました。

XA_RBTRANSIENT

PLS_INTEGER

XA_RBBASE+7

トランザクション・ブランチを再試行する場合があります。

XA_RBEND

PLS_INTEGER

XA_RBTRANSIENT

ロールバック・コードの上限(上限値を含む)。

XA_NOMIGRATE

PLS_INTEGER

9

トランザクション・ブランチがヒューリスティックに完了した可能性があります。

XA_HEURHAZ

PLS_INTEGER

8

トランザクション・ブランチがヒューリスティックに完了した可能性があります。

XA_HEURCOM

PLS_INTEGER

7

トランザクション・ブランチがヒューリスティックにコミットされました。

XA_HEURRB

PLS_INTEGER

6

トランザクション・ブランチがヒューリスティックにロールバックされました。

XA_HEURMIX

PLS_INTEGER

5

一部のトランザクション・ブランチはヒューリスティックにコミットされ、その他はロールバックされました。

XA_RETRY

PLS_INTEGER

4

ルーチンが効果なしに戻され、再発行される場合があります。

XA_RDONLY

PLS_INTEGER

3

トランザクションは読取り専用であり、コミットされています。

XA_OK

PLS_INTEGER

0

正常実行。

XAER_ASYNC

PLS_INTEGER

-2

すでに未処理となった非同期操作です。

XAER_RMERR

PLS_INTEGER

-3

トランザクション・ブランチでリソース・マネージャ・エラーが発生しました。

XAER_NOTA

PLS_INTEGER

-4

XIDは有効ではありません。

XAER_INVAL

PLS_INTEGER

-5

無効な引数が指定されました。

XAER_PROTO

PLS_INTEGER

-6

誤ったコンテキストでルーチンが起動されました。

XAER_RMFAIL

PLS_INTEGER

-7

リソース・マネージャは使用不可です。

XAER_DUPID

PLS_INTEGER

-8

XIDはすでに存在します。

XAER_OUTSIDE

PLS_INTEGER

-9

リソース・マネージャはグローバル・トランザクション外で処理を実行しています。

使用上の注意

分散トランザクション処理におけるX/Open CAE標準のXA仕様に従い、トランザクションが現行セッションに関連付けられている場合、XA_PREPARE/COMMIT/ROLLBACK/FORGETはコールされない場合があります。現行セッションに関連付けられたトランザクションがなくなるようにXA_ENDがコールされた後にのみ、アプリケーションはXA_PREPARE/COMMIT/ROLLBACK/FORGETをコールできます。

トランザクションが現行セッションに関連付けられている場合、XA_PREPARE/COMMIT/ROLLBACK/FORGETからXAER_PROTOエラーが戻されます。

パッケージのサブプログラムをコールする前に、Oracle Databaseサーバーのバックエンド(リソース・マネージャ)に対して接続/セッションを確立しておく必要があります。リソース・マネージャの識別子はサポートされていません。複数のリソース・マネージャが含まれている場合は、パッケージのサブプログラムをコールする前に、各リソース・マネージャに対して接続/セッションをあらかじめ確立しておく必要があります。グローバル・トランザクション処理の過程で複数の接続/セッションが確立された場合、コール元は特定のグローバル・トランザクション・ブランチの識別子(XID)に関連付けられたそれらのすべての接続/セッションが、同じリソース・マネージャに対して確立されていることを確認する必要があります。

データ構造

DBMS_XAパッケージは、次のオブジェクト・タイプおよび関連する表タイプを使用します。

オブジェクト・タイプ

- DBMS_XA_XIDオブジェクト・タイプ

表タイプ

- DBMS_XA_XID_ARRAY表タイプ

DBMS_XA_XIDオブジェクト・タイプ

PL/SQL XAインタフェースを使用すると、PL/SQLアプリケーションでグローバル・トランザクション・ブランチID(XID)を定義し、現行のセッションをトランザクション・ブランチに関連付けたり、関連付けを解除できます。XIDは、PL/SQLオブジェクト・タイプとして定義されます。

関連項目:
詳細は、公開されているXA標準の『Distributed Transaction Processing: The XA Specification』を参照してください。

構文

TYPE DBMS_XA_XID IS OBJECT(
formatid      NUMBER,
gtrid         RAW(64),
bqual         RAW(64),
constructor function DBMS_XA_XID(
gtrid     IN   NUMBER)
RETURN SELF AS RESULT,
constructor function DBMS_XA_XID (
gtrid     IN   RAW,
bqual     IN   RAW)
RETURN SELF AS RESULT,
constructor function DBMS_XA_XID(
formatid  IN   NUMBER,
gtrid     IN   RAW,
bqual     IN   RAW DEFAULT HEXTORAW('00000000000000000000000000000001'))
RETURN SELF AS RESULT)

属性

表180-3 DBMS_XA_XIDオブジェクト・タイプ

属性

説明

formatid

形式識別子。異なるトランザクション・マネージャ(TM)を識別する数値。

gtrid

グローバル・トランザクションを一意に識別するグローバル・トランザクション識別子。最大サイズは64バイト。

bqual

ブランチ修飾子。最大サイズは64バイト。

DBMS_XA_XID_ARRAY表タイプ

このタイプは、グローバル・トランザクション・ブランチのリストに相当するxidの配列を定義する場合に使用します。

構文

TYPE DBMS_XA_XID_ARRAY as TABLE of DBMS_XA_XID

DBMS_XAサブプログラムの要約

表180-4 DBMS_XAパッケージのサブプログラム

サブプログラム

説明

DIST_TXN_SYNCプロシージャ

Oracle Real Application Clusters(Oracle RAC)の利用時に同期化のリカバリで使用します。

XA_COMMITファンクション

xidで指定したグローバル・トランザクションをコミットします。

XA_ENDファンクション

xidで指定したトランザクション・ブランチから、現行セッションの関連付けを解除します。

XA_FORGETファンクション

ヒューリスティックにコミットまたはロールバックされたトランザクション・ブランチについての情報を消去するよう、リソース・マネージャに通知します。

XA_GETLASTOERファンクション

前のXAコールが失敗した場合に、最後のOracleエラー・コードを取得します。

XA_PREPAREファンクション

xidで指定したトランザクション・ブランチを準備して、可能な場合に続けてトランザクションをコミットできるようにします。

XA_RECOVERファンクション

準備されたか、またはヒューリスティックに完了したトランザクション・ブランチのリストをリソース・マネージャから取得します。

XA_ROLLBACKファンクション

実行された処理をトランザクション・ブランチにかわってロールバックするよう、リソース・マネージャに通知します。

XA_SETTIMEOUTファンクション

現行セッションのトランザクション・タイムアウトを秒単位で設定します。

XA_STARTファンクション

xidで指定したトランザクション・ブランチに、現行セッションを関連付けます。

DIST_TXN_SYNCプロシージャ

このプロシージャを使用すると、Oracle Real Application Clusters(Oracle RAC)インスタンスが失敗した場合に、インダウト・トランザクションを同期化できます。

構文

DBMS_XA.DIST_TXN_SYNC;

XA_COMMITファンクション

このファンクションは、xidで指定したグローバル・トランザクションをコミットします。

構文

DBMS_XA.XA_COMMIT (
xid       IN  DBMS_XA_XID,
onePhase  IN  BOOLEAN)
RETURN PLS_INTEGER;

パラメータ

表180-5 XA_COMMITファンクションのパラメータ

パラメータ

説明

xid

詳細は、「DBMS_XA_XIDオブジェクト・タイプ」を参照してください。

onePhase

TRUEの場合、1フェーズ・コミットを適用します。

戻り値

詳細は、表180-2「有効な戻り値に対するDBMS_XA定数」を参照してください。エラーを示す有効な戻り値は、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVALまたはXAER_PROTOです。その他にも有効な戻り値として、XA_OK、XA_RB*、XA_HEURHAZ、XA_HEURCOM、XA_HEURRB、XA_HEURMIXなどがあります。

使用上の注意

- アプリケーションは、COMMITではなく、XA_COMMITをコールして、xidで指定したグローバル・トランザクションをコミットする必要があります。他のユーザーによって作成されたトランザクション・ブランチをコミットする必要があるユーザーには、FORCE ANY TRANSACTIONを付与する必要があります。

- onePhaseがTRUEの場合、リソース・マネージャは1フェーズ・コミット・プロトコルを使用して、実行された処理をxidのかわりにコミットする必要があります。そうでない場合は、グローバル・トランザクションのすべてのブランチが正常に準備され、先行のXA_PREPAREコールがXA_OKを戻した場合にのみ、XA_COMMITがコールされます。

- アプリケーションは、XA_PREPAREがXA_OKを戻したグローバル・トランザクションの各トランザクション・ブランチに対して、個別のXA_COMMITコールを行う必要があります。

- リソース・マネージャがトランザクションをコミットせず、onePhaseパラメータがTRUEに設定されている場合、リソース・マネージャはXA_RB*コードの1つを戻します。コードを戻すと、リソース・マネージャはブランチの処理をロールバックし、保持しているすべてのリソースを解放します。

XA_ENDファンクション

このファンクションは、xidで指定したトランザクション・ブランチから、現行セッションの関連付けを解除します。

コントロールのスレッドがトランザクション・ブランチを終了したか、または処理を中断する必要がある場合、トランザクション・マネージャはXA_ENDをコールします。これは、アプリケーションが動作の一部を部分的または完全に完了する場合に発生します(たとえば、コントロールの他のスレッドがブランチで機能させるために、一部のイベントをブロックする前など)。XA_ENDが正常に値を戻されると、コントロールのコール元のスレッドとブランチとの関連付けはアクティブではなくなりますが、ブランチは引き続き存在します。

構文

DBMS_XA.XA_END (
xid   IN  DBMS_XA_XID,
flag  IN  PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表180-6 XA_ENDファンクションのパラメータ

パラメータ

説明

xid

詳細は、「DBMS_XA_XIDオブジェクト・タイプ」を参照してください。

flag

詳細は、表180-1「XA_STARTおよびXA_ENDファンクションのフラグ・フィールドのDBMS_XA定数」を参照してください。

戻り値

詳細は、表180-2「有効な戻り値に対するDBMS_XA定数」を参照してください。エラーにおける有効な戻り値は、XAER_RMERR、XAER_RMFAILED、XAER_NOTA、XAER_INVAL、XAER_PROTOまたはXA_RB*です。

使用上の注意

- フラグにTMSUCCESSまたはTMSUSPENDを指定でき、戻り値がXA_OKの場合、トランザクション・ブランチは連結解除の状態で現行セッションとの関連付けを解除されます。TMFAILはサポートされていません。TMSUCCESSまたはTMSUSPENDを指定してXA_ENDをコールし、xidで識別されたトランザクション・ブランチの関連付けを現行セッションから解除することがあります。

- XA_ENDが成功すると、XA_OKが戻されます。アプリケーションは、戻り値をチェックしてエラーを処理する必要があります。XA_OKが戻された場合にのみ、アプリケーションはその他の通常の処理を続行する必要があります。

- 最初にXA_ENDをコールしないでROLLBACK文を実行すると、現行のトランザクションで行われた変更がロールバックされます。ただし、トランザクション・コンテキストは、XA_ENDがコールされるまで現行セッションに関連付けられています。

- 最初にXA_ENDをコールしないでCOMMIT文を実行すると、「ORA-02089: 下位セッションにCOMMITは使用できません。」が発生します。

- XA_ENDの後にCOMMITまたはROLLBACK文を実行しても、このトランザクションは現在のセッションとの関連付けがなくなっているため、xidが特定するトランザクションに影響はありません。xidで指定したトランザクションをコミットまたはロールバックするには、トランザクションIDまたはXA_ROLLBACKファンクションをコミットします。

XA_FORGETファンクション

このファンクションは、ヒューリスティックにコミットまたはロールバックされたトランザクション・ブランチについての情報を消去するよう、リソース・マネージャに通知します。

構文

DBMS_XA.XA_FORGET (
xid       IN  DBMS_XA_XID)
RETURN PLS_INTEGER;

パラメータ

表180-7 XA_FORGETファンクションのパラメータ

パラメータ

説明

xid

詳細は、「DBMS_XA_XIDオブジェクト・タイプ」を参照してください。

戻り値

詳細は、表180-2「有効な戻り値に対するDBMS_XA定数」を参照してください。有効な戻り値は、XA_OK、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVALまたはXAER_PROTOです。

XA_GETLASTOERファンクション

このファンクションは、前のXAコールが失敗した場合に、最後のOracleエラー・コードを取得します。

構文

DBMS_XA.XA_GETLASTOER
RETURN PLS_INTEGER;

戻り値

戻り値には、最後のOracleエラー・コードが示されます。

XA_PREPAREファンクション

このファンクションは、xidで指定したトランザクション・ブランチを準備して、可能な場合に続けてトランザクションをコミットできるようにします。

構文

DBMS_XA.XA_PREPARE (
xid   IN  DBMS_XA_XID)
RETURN PLS_INTEGER;

パラメータ

表180-8 XA_PREPAREファンクションのパラメータ

パラメータ

説明

xid

詳細は、「DBMS_XA_XIDオブジェクト・タイプ」を参照してください。

戻り値

詳細は、表180-2「有効な戻り値に対するDBMS_XA定数」を参照してください。有効なリターン・コードは、XA_OK、XA_RDONLY、XA_RB*、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVALまたはXAER_PROTOです。

使用上の注意

- 他のユーザーによって作成されたトランザクション・ブランチを準備する必要があるユーザーには、FORCE ANY TRANSACTIONを付与する必要があります。

- アプリケーションは、1つのグローバル・トランザクションのすべてのブランチを追跡し、各トランザクション・ブランチを準備する必要があります。グローバル・トランザクションのすべてのブランチが正常に準備され、XA_PREPAREがXA_OKを戻した場合にのみ、アプリケーションは、XA_COMMITのコールを続行できます。

XA_RECOVERファンクション

このファンクションは、準備されたか、またはヒューリスティックに完了したトランザクション・ブランチのリストをリソース・マネージャから取得します。

構文

DBMS_XA.XA_RECOVER
RETURN DBMS_XA_XID_ARRAY;

戻り値

「DBMS_XA_XID_ARRAY表タイプ」を参照してください。

使用上の注意

- TMSTARTSCAN、TMENDSCAN、TMNOFLAGSフラグはサポートされていません。

- XA_RECOVERをコールする必要があるユーザーに、SELECT ON DBA_PENDING_TRANSACTIONS権限を付与する必要があります。

XA_ROLLBACKファンクション

このファンクションは、実行された処理をトランザクション・ブランチにかわってロールバックするよう、リソース・マネージャに通知します。

構文

DBMS_XA.XA_ROLLBACK (
xid       IN  DBMS_XA_XID)
RETURN PLS_INTEGER;

パラメータ

表180-9 XA_ROLLBACKファンクションのパラメータ

パラメータ

説明

xid

詳細は、「DBMS_XA_XIDオブジェクト・タイプ」を参照してください。

戻り値

詳細は、表180-2「有効な戻り値に対するDBMS_XA定数」を参照してください。有効な戻り値は、XA_OK、XA_RB*、XA_HEURHAZ、XA_HEURCOM、XA_HEURRBまたはXA_HEURMIXです。

使用上の注意

他のユーザーによって作成されたトランザクション・ブランチをロールバックする必要があるユーザーには、FORCE ANY TRANSACTION権限を付与する必要があります。

XA_SETTIMEOUTファンクション

このファンクションは、現行セッションのトランザクション・タイムアウトを秒単位で設定します。

構文

DBMS_XA.XA_SETTIMEOUT (
seconds  IN  PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表180-10 XA_SETTIMEOUTファンクションのパラメータ

パラメータ

説明

seconds

タイムアウト値は、トランザクションがシステムによって自動的に終了される前に、トランザクション・ブランチの関連付けがセッションから解除される可能性がある最大時間(秒)を示します。デフォルト値は60秒です。

戻り値

詳細は、表180-2「有効な戻り値に対するDBMS_XA定数」を参照してください。有効な戻り値は、XA_OK、XAER_RMERR、XAER_RMFAILまたはXAER_INVALです。

使用上の注意

戻り値がXA_OKの場合にのみ、タイムアウト値は正常に設定されます。

XA_STARTファンクション

このファンクションは、xidで指定したトランザクション・ブランチに現行セッションを関連付けます。

構文

DBMS_XA.XA_START (
xid   IN  DBMS_XA_XID,    flag  IN  PLS_INTEGER)  RETURN PLS_INTEGER;

パラメータ

表180-11 XA_STARTファンクションのパラメータ

パラメータ

説明

xid

詳細は、「DBMS_XA_XIDオブジェクト・タイプ」を参照してください。

flag

詳細は、表180-1「XA_STARTおよびXA_ENDファンクションのフラグ・フィールドのDBMS_XA定数」を参照してください。

戻り値

詳細は、表180-2「有効な戻り値に対するDBMS_XA定数」を参照してください。

使用上の注意

- フラグにTMJOINまたはTMRESUMEを指定すると、xidで識別された既存のトランザクション・ブランチが結合されます。TMJOINフラグは、トランザクションがTMSUCCESSフラグによって連結解除された場合に使用する必要があります。TMRESUMEは、トランザクション・ブランチがTMSUSPENDフラグによって連結解除された場合に使用する必要があります。XA_STARTは、既存のトランザクション・ブランチを結合するために、どちらかのフラグが指定されてコールされることがあります。

- フラグにTMNOFLAGSを指定し、TMJOINおよびTMRESUMEのいずれも指定しないと、新しいトランザクション・ブランチが開始されます。xidで指定したトランザクション・ブランチがすでに存在すると、XA_STARTはXAER_DUPIDエラー・コードを戻します。

- エラーにおける有効な戻り値は、XAER_RMERR、XAER_RMFAIL、XAER_DUPID、XAER_OUTSIDE、XAER_NOTA、XAER_INVALおよびXAER_PROTOです。

- XA_STARTが成功すると、XA_OKが戻されます。アプリケーションは、戻り値をチェックしてエラーを処理する必要があります。XA_OKが戻された場合にのみ、PL/SQLアプリケーションはその他の通常の処理を続行する必要があります。トランザクション スタッキングはサポートされていません。現行セッションに関連付けられたアクティブなトランザクションがあると、別のトランザクションの開始または結合のためのコールは行われないことがあります。セッションに関連付けられたアクティブなグローバル・トランザクション・ブランチによってXA_STARTがコールされた場合には、XAER_PROTOが戻されます。現行セッションに関連付けられたローカル・トランザクションによってXA_STARTがコールされた場合には、XAER_OUTSIDEが戻されます。

181 DBMS_XDB

注意:
DBMS_XDBパッケージ・サブプログラムおよび定数の使用は、Oracle Database 12cでは推奨されていません。すべての機能は下位互換性のために引き続きサポートされますが、それぞれで提供されている代替プロシージャを使用することをお薦めします。詳細は、「推奨されないサブプログラム」および「定数」を参照してください。

DBMS_XDBパッケージは次の機能をサポートしています。

- リソース・ビューを補完するリソース管理サブプログラム

- アクセス制御リスト(ACL)ベースのセキュリティ・メカニズム

- 構成セッション管理

- XDBユーザー名の作成

関連項目:

- 『Oracle XML DB開発者ガイド』

- 『Oracle Database新機能ガイド』

この章では、次の項目について説明します。

- DBMS_XDBの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- DBMS_XDBサブプログラムの要約

DBMS_XDBの使用方法

この項では、DBMS_XDBパッケージの使用に関連する項目について説明します。

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

概要

DBMS_XDBパッケージは次の機能をサポートしています。

- リソース管理機能は、LINKプロシージャ、EXISTSRESOURCEファンクション、LOCKRESOURCEファンクション、GETLOCKTOKENプロシージャ、UNLOCKRESOURCEファンクション、CREATERESOURCEファンクション、RENAMERESOURCEプロシージャ、DELETERESOURCEプロシージャ、GETRESOIDファンクション、CREATEOIDPATHファンクション、およびCREATEFOLDERファンクションの各サブプログラムを提供して、リソース・ビューを補完しています。

- アクセス制御リスト(ACL)ベースのセキュリティ・メカニズムは、データベースによって保存された階層内ACLまたはデータベース外から保存されたインメモリーACLで使用できます。これらのメソッドの一部は、Oracleリソースおよび任意のデータベース・オブジェクトの両方に使用できます。Oracleリソースには、CHECKPRIVILEGESファンクション、GETACLDOCUMENTファンクションおよびCHANGEPRIVILEGESファンクションを使用します。ACLCHECKPRIVILEGESファンクションは、階層内にオブジェクトを格納せずに、OracleのACLベースのセキュリティ・メカニズムへのアクセスを提供します。

- 構成セッション管理は、CFG_REFRESHプロシージャ、CFG_GETファンクションおよびCFG_UPDATEプロシージャのメソッドでサポートされています。

- XDBユーザー名はXDBインストール時に作成されます。このユーザーは一連のデフォルトの表およびパッケージを所有します。GETXDB_TABLESPACEファンクションおよびDBMS_XDB_ADMIN.MOVEXDB_TABLESPACEプロシージャは、指定した表領域にスキーマを移動でき、デフォルトのSYSAUX表領域の導入をサポートしています。

推奨されないサブプログラム

注意:
新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされており、今後のバージョンでは終了する場合があります。

DBMS_XDBパッケージのすべてのサブプログラムはOracle Database 12cでは推奨されておらず、表に示すDBMS_XDB_CONFIGパッケージまたはDBMS_XDB_REPOSパッケージのいずれかで同名の代替サブプログラムに置換されています。

表181-1 DBMS_XDBの非推奨サブプログラムとその代替

DBMS_XDB(非推奨)

DBMS_XDB_CONFIG

DBMS_XDB_REPOS

ACLCHECKPRIVILEGESファンクション

ACLCHECKPRIVILEGESファンクション

ADDHTTPEXPIREMAPPINGプロシージャ

ADDHTTPEXPIREMAPPINGプロシージャ

ADDMIMEMAPPINGプロシージャ

ADDMIMEMAPPINGプロシージャ

ADDSCHEMALOCMAPPINGプロシージャ

ADDSCHEMALOCMAPPINGプロシージャ

ADDSERVLETプロシージャ

ADDSERVLETプロシージャ

ADDSERVLETMAPPINGプロシージャ

ADDSERVLETMAPPINGプロシージャ

ADDSERVLETSECROLEプロシージャ

ADDSERVLETSECROLEプロシージャ

ADDXMLEXTENSIONプロシージャ

ADDXMLEXTENSIONプロシージャ

APPENDRESOURCEMETADATAプロシージャ

APPENDRESOURCEMETADATAプロシージャ

CFG_GETファンクション

CFG_GETファンクション

CFG_REFRESHプロシージャ

CFG_REFRESHプロシージャ

CFG_UPDATEプロシージャ

CFG_UPDATEプロシージャ

CHANGEOWNERプロシージャ

CHANGEOWNERプロシージャ

CHANGEPRIVILEGESファンクション

CHANGEPRIVILEGESファンクション

CHECKPRIVILEGESファンクション

CHECKPRIVILEGESファンクション

CREATEFOLDERファンクション

CREATEFOLDERファンクション

CREATEOIDPATHファンクション

CREATEOIDPATHファンクション

CREATERESOURCEファンクション

CREATERESOURCEファンクション

DELETEHTTPEXPIREMAPPINGプロシージャ

DELETEHTTPEXPIREMAPPINGプロシージャ

DELETEMIMEMAPPINGプロシージャ

DELETEMIMEMAPPINGプロシージャ

DELETERESOURCEプロシージャ

DELETERESOURCEプロシージャ

DELETERESOURCEMETADATAプロシージャ

DELETERESOURCEMETADATAプロシージャ

DELETESCHEMALOCMAPPINGプロシージャ

DELETESCHEMALOCMAPPINGプロシージャ

DELETESERVLETプロシージャ

DELETESERVLETプロシージャ

DELETESERVLETMAPPINGプロシージャ

DELETESERVLETMAPPINGプロシージャ

DELETESERVLETSECROLEプロシージャ

DELETESERVLETSECROLEプロシージャ

DELETEXMLEXTENSIONプロシージャ

DELETEXMLEXTENSIONプロシージャ

ENABLEDIGESTAUTHENTICATIONプロシージャ

ENABLEDIGESTAUTHENTICATIONプロシージャ

EXISTSRESOURCEファンクション

EXISTSRESOURCEファンクション

GETACLDOCUMENTファンクション

GETACLDOCUMENTファンクション

GETCONTENTBLOBファンクション

GETCONTENTBLOBファンクション

GETCONTENTCLOBファンクション

GETCONTENTCLOBファンクション

GETCONTENTVARCHAR2ファンクション

GETCONTENTVARCHAR2ファンクション

GETCONTENTXMLREFファンクション

GETCONTENTXMLREFファンクション

GETCONTENTXMLTYPEファンクション

GETCONTENTXMLTYPEファンクション

GETFTPPORTファンクション

GETFTPPORTファンクション

GETHTTPPORTファンクション

GETHTTPPORTファンクション

GETLISTENERENDPOINTプロシージャ

GETLISTENERENDPOINTプロシージャ

GETLOCKTOKENプロシージャ

GETLOCKTOKENプロシージャ

GETRESOIDファンクション

GETRESOIDファンクション

GETXDB_TABLESPACEファンクション

GETXDB_TABLESPACEファンクション

HASBLOBCONTENTファンクション

HASBLOBCONTENTファンクション

HASCHARCONTENTファンクション

HASCHARCONTENTファンクション

HASXMLCONTENTファンクション

HASXMLCONTENTファンクション

HASXMLREFERENCEファンクション

HASXMLREFERENCEファンクション

ISFOLDERファンクション

ISFOLDERファンクション

LINKプロシージャ

LINKプロシージャ

LOCKRESOURCEファンクション

LOCKRESOURCEファンクション

PROCESSLINKSプロシージャ

PROCESSLINKSプロシージャ

PURGERESOURCEMETADATAプロシージャ

PURGERESOURCEMETADATAプロシージャ

RENAMERESOURCEプロシージャ

RENAMERESOURCEプロシージャ

SETACLプロシージャ

SETACLプロシージャ

SETFTPPORTプロシージャ

SETFTPPORTプロシージャ

SETHTTPPORTプロシージャ

SETHTTPPORTプロシージャ

SETLISTENERENDPOINTプロシージャ

SETLISTENERENDPOINTプロシージャ

SETLISTENERLOCALACCESSプロシージャ

SETLISTENERLOCALACCESSプロシージャ

SPLITPATHプロシージャ

SPLITPATHプロシージャ

TOUCHRESOURCEプロシージャ

TOUCHRESOURCEプロシージャ

UNLOCKRESOURCEファンクション

UNLOCKRESOURCEファンクション

UPDATERESOURCEMETADATAプロシージャ

UPDATERESOURCEMETADATAプロシージャ

セキュリティ・モデル

DBMS_XDBパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。XDB構成で動作するサブプログラムは、現行のユーザーがSYSまたはXDBである場合、または現行のユーザーがXDBADMINロールまたはDBAロールを持つ場合にのみ成功します。

定数

表181-2「DBMS_XDBの定数」に記述したすべての定数は、DBMS_XDB_CONFIGパッケージまたはDBMS_XDB_REPOSパッケージのいずれかに再配置されたため、Oracle Release 12cでは推奨されていません。ケースごとの転送の詳細は、再配置済の列に記載されています。

定数は、新規アプリケーションのDBMS_XDBコンテキストで使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされており、今後のバージョンでは終了する場合があります。

表181-2 DBMS_XDBの定数

定数

タイプ

値

説明

再配置済

DELETE_RESOURCE

NUMBER

1

リソースを削除します。リソースに子がある場合失敗します。

DBMS_XDB_REPOS

DELETE_RECURSIVE

NUMBER

2

リソースと子がある場合それを削除します。

DBMS_XDB_REPOS

DELETE_FORCE

NUMBER

3

含まれるオブジェクトが無効な場合でも、リソースを削除します。

DBMS_XDB_REPOS

DELETE_RECURSIVE_FORCE

NUMBER

4

含まれるオブジェクトが無効な場合でも、リソースと子がある場合それを削除します。

DBMS_XDB_REPOS

DELETE_RES_METADATA_CASCADE

NUMBER

1

メタデータ表内の対応する行を削除します。

DBMS_XDB_REPOS

DELETE_RES_METADATA_NOCASCADE

NUMBER

2

メタデータ表内の行を削除しません。

DBMS_XDB_REPOS

DEFAULT_LOCK_TIMEOUT CONSTANT

PLS_INTEGER

(60*60)

ロックが期限切れになるまでのデフォルト時間(秒)。

DBMS_XDB_REPOS

LINK_TYPE_HARD

NUMBER

1

作成するリンクのタイプ(デフォルト)。

DBMS_XDB_REPOS

LINK_TYPE_WEAK

NUMBER

2

作成するリンクのタイプ。

DBMS_XDB_REPOS

LINK_TYPE_SYMBOLIC

NUMBER

3

作成するリンクのタイプ。

DBMS_XDB_REPOS

ON_DENY_NEXT_CUSTOM

NUMBER

1

アクセスが拒否された場合、次のカスタム認可が試行されます。

DBMS_XDB_CONFIG

ON_DENY_BASIC

NUMBER

2

アクセスが拒否された場合、Basic認証が使用されます。

DBMS_XDB_CONFIG

XDB_ENDPOINT_HTTP

NUMBER

1

最初のHTTPポートのリスナーの定義

DBMS_XDB_CONFIG

XDB_ENDPOINT_HTTP2

NUMBER

2

2番目のHTTPポートのリスナーの定義

DBMS_XDB_CONFIG

XDB_PROTOCOL_TCP

NUMBER

1

HTTPプロトコルのリスナーの定義

DBMS_XDB_CONFIG

XDB_PROTOCOL_TCPS

NUMBER

2

HTTPSプロトコルのリスナーの定義

DBMS_XDB_CONFIG

DBMS_XDBサブプログラムの要約

表181-3 DBMS_XDBパッケージのサブプログラム

サブプログラム

説明

ACLCHECKPRIVILEGESファンクション

指定のACLドキュメントで指定されている現行ユーザーに付与されたアクセス権限をチェックします。このアクセス権限は、所有者が'owner'パラメータで指定されているリソースに対するものです。

ADDHTTPEXPIREMAPPINGプロシージャ

有効期限に対するURLパターンのマッピングをxdb$configに追加します。これによって、パターンに一致するURLのExpireヘッダーを制御します。

ADDMIMEMAPPINGプロシージャ

XDB構成にMIMEマッピングを追加します。

ADDSCHEMALOCMAPPINGプロシージャ

XDB構成にスキーマ位置マッピングを追加します。

ADDSERVLETプロシージャ

XDB構成にサーブレットを追加します。

ADDSERVLETMAPPINGプロシージャ

XDB構成にサーブレット・マッピングを追加します。

ADDSERVLETSECROLEプロシージャ

XDB構成内の指定したサーブレットにセキュリティ・ロールREFを追加します。

ADDXMLEXTENSIONプロシージャ

XDB構成にXML拡張子を追加します。

APPENDRESOURCEMETADATAプロシージャ

ユーザー定義のメタデータをXMLTYPEへのREFまたはXMLTYPEとして使用し、目的のリソースに追加します。

CFG_GETファンクション

セッションの構成情報を取得します。

CFG_REFRESHプロシージャ

セッションの最新の構成情報をデータベースに反映します。

CFG_UPDATEプロシージャ

構成情報を更新します。

CHANGEOWNERプロシージャ

リソースの所有者を指定した所有者に変更します。

CHANGEPRIVILEGESファンクション

指定したACEを、指定したリソースのACLに追加します。

CHECKPRIVILEGESファンクション

指定したリソースに対して現行ユーザーに付与されているアクセス権限をチェックします。

CREATEFOLDERファンクション

階層内に新規フォルダ・リソースを作成します。

CREATEOIDPATHファンクション

オブジェクトIDに基づいたリソースの仮想パスを作成します。

CREATERESOURCEファンクション

新規リソースを作成します。

DELETEHTTPEXPIREMAPPINGプロシージャ

有効期限に対するURLパターンのすべてのマッピングをxdb$configから削除します。

DELETEMIMEMAPPINGプロシージャ

XDB構成からMIMEマッピングを削除します。

DELETERESOURCEプロシージャ

階層からリソースを削除します。

DELETERESOURCEMETADATAプロシージャ

リソースからメタデータを削除します(スキーマ・ベースまたは非スキーマ・ベースのメタデータに使用できます)。

DELETESCHEMALOCMAPPINGプロシージャ

指定したスキーマURLのスキーマ位置マッピングをXDB構成から削除します。

DELETESERVLETプロシージャ

XDB構成からサーブレットを削除します。

DELETESERVLETMAPPINGプロシージャ

指定したサーブレット名のサーブレット・マッピングをXDB構成から削除します。

DELETESERVLETSECROLEプロシージャ

XDB構成内のサーブレットから指定したロールを削除します。

DELETEXMLEXTENSIONプロシージャ

指定したXML拡張子をXDB構成から削除します。

ENABLEDIGESTAUTHENTICATIONプロシージャ

Digest認証を有効にします。

EXISTSRESOURCEファンクション

リソースの絶対パスに基づいて、リソースが階層であるかどうかを判別します。

GETACLDOCUMENTファンクション

パス名を指定して、リソースを保護するACLドキュメントを取得します。

GETCONTENTBLOBファンクション

BLOBとして戻されたリソースの内容を取り出します。

GETCONTENTCLOBファンクション

CLOBとして戻されたリソースの内容を取り出します。

GETCONTENTVARCHAR2ファンクション

文字列として戻されたリソースの内容を取り出します。

GETCONTENTXMLREFファンクション

XMLTYPEへのREFとして戻されたリソースの内容を取り出します。

GETCONTENTXMLTYPEファンクション

XMLTYPEとして戻されたリソースの内容を取り出します。

GETFTPPORTファンクション

現在のFTPポートの値を取得します。

GETHTTPPORTファンクション

現在のHTTPポートの値を取得します。

GETHTTPREQUESTHEADERファンクション

渡されたヘッダーの値を取得します。

GETLISTENERENDPOINTプロシージャ

XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを取得します。

GETLOCKTOKENプロシージャ

リソースへのパスを指定して、現行ユーザーのリソースのロック・トークンを戻します。

GETPRIVILEGESファンクション

指定したリソース上の現在のユーザーに付与された権限をすべて取得します。

GETRESOIDファンクション

リソースの絶対パスからオブジェクトIDを戻します。

GETXDB_TABLESPACEファンクション

XDB(ユーザー)の現行の表領域を戻します。

HASBLOBCONTENTファンクション

リソースにBLOBコンテンツがある場合はTRUEを戻します。

HASCHARCONTENTファンクション

リソースに文字コンテンツがある場合はTRUEを戻します。

HASXMLCONTENTファンクション

リソースにXMLコンテンツがある場合はTRUEを戻します。

HASXMLREFERENCEファンクション

リソースにXMLコンテンツへのREFがある場合は、TRUEを戻します。

ISFOLDERファンクション

リソースがフォルダまたはコンテナの場合は、TRUEを戻します。

LINKプロシージャ

既存のリソースへのリンクを作成します。

LOCKRESOURCEファンクション

リソースへのパスを指定して、リソースに対するWebDAVスタイルのロックを取得します。

PROCESSLINKSプロシージャ

指定したリソース内のドキュメント・リンクを処理します。

PURGERESOURCEMETADATAプロシージャ

リソースからすべてのユーザー・メタデータを削除します。

RENAMERESOURCEプロシージャ

XDBリソースの名前を変更します。

SETACLプロシージャ

指定したリソースにACLを設定します。

SETFTPPORTプロシージャ

FTPポートを新しい値に設定します。

SETHTTPPORTプロシージャ

HTTPポートに新しい値を設定します。

SETLISTENERENDPOINTプロシージャ

XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを設定します。

SETLISTENERLOCALACCESSプロシージャ

XML DB HTTPサーバーのすべてのリスナーのエンド・ポイントを、ローカルホスト・インタフェースでのみリスニングするか、ローカルホスト・インタフェースと非ローカルホスト・インタフェースの両方でリスニングするかのどちらかに制限します。

SPLITPATHプロシージャ

パスを親のパスと子のパスに分割します。

TOUCHRESOURCEプロシージャ

リソースの変更時刻を現在の時刻に変更します。

UNLOCKRESOURCEファンクション

ロック・トークンおよびリソース・パスを指定して、リソースのロックを解除します。

UPDATERESOURCEMETADATAプロシージャ

リソースのメタデータを更新します。

ACLCHECKPRIVILEGESファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(ACLCHECKPRIVILEGESファンクション)を使用してください。

このファンクションは、リソースのOWNERによる指定したACLドキュメントによって、現在のユーザーに付与されたアクセス権限をチェックします。すべての権限が付与されている場合は、正の整数を戻します。

構文

DBMS_XDB.ACLCHECKPRIVILEGES(
acl_path  IN  VARCHAR2,
owner     IN  VARCHAR2,
privs     IN  xmltype)
RETURN PLS_INTEGER;

パラメータ

表181-4 ACLCHECKPRIVILEGESファンクションのパラメータ

パラメータ

説明

acl_path

ACLドキュメントの階層内の絶対パス。

owner

リソースの所有者名。疑似ユーザー「DAV:owner」は、ACL権限の解決時にこのユーザーに置き換えられます。

privs

privilege要素のXMLTypeインスタンスで、要求された一連のアクセス権限を指定します。CHECKPRIVILEGESファンクションを参照してください。

ADDHTTPEXPIREMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ADDHTTPEXPIREMAPPINGプロシージャ)を使用してください。

このプロシージャは、有効期限に対するURLパターンのマッピングをxdb$configに追加します。これによって、パターンに一致するURLのExpireヘッダーを制御します。

構文

DBMS_XDB.ADDHTTPEXPIREMAPPING (
pattern    IN    VARCHAR2,
expire     IN    VARCHAR2);

パラメータ

表181-5 ADDHTTPEXPIREMAPPINGプロシージャのパラメータ

パラメータ

説明

pattern

URLパターン(ワイルドカードとして*のみ使用可能)。

expire

Apacheのmod_expiresのExpireDefaultに続く次のような有効期限ディレクティブ。

base [plus] (num type)*
-- base: now | modification
-- type: year|years|month|months|week|weeks|day|days|
minute|minutess|second|seconds

例

DBMS_XDB.ADDHTTPEXPIREMAPPING ('/public/test1/*', 'now plus 4 weeks');
DBMS_XDB.ADDHTTPEXPIREMAPPING (
'/public/test2/*', 'modification plus 1 day 30 seconds');

ADDMIMEMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ADDMIMEMAPPINGプロシージャ)を使用してください。

このプロシージャは、XDB構成に次のMIMEマッピングを追加します。

<mime-mapping>
<extension>extension</extension>
<mime-type>mimetype</mime-type>
</mime-mapping>

構文

DBMS_XDB.ADDMIMEMAPPING(
extension    IN   VARCHAR2,
mimetype     IN   VARCHAR2);

パラメータ

表181-6 ADDMIMEMAPPINGプロシージャのパラメータ

パラメータ

説明

extension

MIMEタイプが追加される拡張子。

mimetype

MIMEタイプ。

ADDSCHEMALOCMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ADDMIMEMAPPINGプロシージャ)を使用してください。

このプロシージャは、XDB構成に次のスキーマ位置マッピングを追加します。

<schemaLocation-mapping>
<namespace>namespace</namespace>
<element>element</element>
<schemaURL>schemaURL</schemaURL>
</schemaLocation-mapping>

構文

DBMS_XDB.ADDSCHEMALOCMAPPING(
namespace    IN   VARCHAR2,
element      IN   VARCHAR2,
schemaURL    IN   VARCHAR2);

パラメータ

表181-7 ADDSCHEMALOCMAPPINGプロシージャのパラメータ

パラメータ

説明

namespace

名前空間。

element

要素

schemaURL

スキーマURL。

ADDSERVLETプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ADDSERVLETプロシージャ)を使用してください。

このプロシージャは、XDB構成に次のサーブレットを追加します。

<servlet>
<servlet-name>name</servlet-name>     <servlet-language>language</servlet-language>
<display-name>dispname</display-name>
<description>descript</description>
<servlet-class>class</servlet-class>
<servlet-schema>schema</servlet-schema>
</servlet>

構文

DBMS_XDB.ADDSERVLET(
name       IN   VARCHAR2,
language    IN   VARCHAR2,
dispname    IN   VARCHAR2,
icon        IN   VARCHAR2 := NULL,
descript    IN   VARCHAR2 := NULL,
class       IN   VARCHAR2 := NULL,
jspfile     IN   VARCHAR2 := NULL,
plsql       IN   VARCHAR2 := NULL);

パラメータ

表181-8 ADDSERVLETプロシージャのパラメータ

パラメータ

説明

name

サーブレット名。

language

C、Java、PL/SQLのいずれかを指定する必要があります。

dispname

表示名。

icon

アイコン。

descript

説明

class

このサーブレットに対応するclass / jspfile / plsqlファンクション。これら3つの引数のうち最初のNULL以外の引数が選択され、その他の引数はNULLとして処理されます。

jspfile

このサーブレットに対応するclass / jspfile / plsqlファンクション。これら3つの引数のうち最初のNULL以外の引数が選択され、その他の引数はNULLとして処理されます。

plsql

このサーブレットに対応するclass / jspfile / plsqlファンクション。これら3つの引数のうち最初のNULL以外の引数が選択され、その他の引数はNULLとして処理されます。

schema

スキーマ

ADDSERVLETMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ADDSERVLETMAPPINGプロシージャ)を使用してください。

このプロシージャは、XDB構成に次のサーブレット・マッピングを追加します。

<servlet-mapping>     <servlet-pattern>pattern</servlet-pattern>     <servlet-name>name</servlet-name></servlet-mapping>

構文

DBMS_XDB.ADDSERVLETMAPPING(
pattern   IN   VARCHAR2,     name      IN   VARCHAR2);

パラメータ

表181-9 ADDSERVLETMAPPINGプロシージャのパラメータ

パラメータ

説明

pattern

サーブレットのパターン。

name

サーブレット名。

ADDSERVLETSECROLEプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ADDSERVLETSECROLEプロシージャ)を使用してください。

このプロシージャは、XDB構成内の指定したサーブレットに次のセキュリティ・ロールREFを追加します。

<security-role-ref>
<role-name>rolename</role-name>
<role-link>rolelink</role-link>
<description>descript</description>
</security-role-ref>

構文

DBMS_XDB.ADDSERVLETSECROLE(
servname    IN   VARCHAR2,     rolename    IN   VARCHAR2,     rolelink    IN   VARCHAR2,     descript    IN   VARCHAR2 := NULL);

パラメータ

表181-10 ADDSERVLETSECROLEプロシージャのパラメータ

パラメータ

説明

servname

サーブレット名。

rolename

ロール名。

rolelink

ロール・リンク。

descript

説明

ADDXMLEXTENSIONプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ADDXMLEXTENSIONプロシージャ)を使用してください。

このプロシージャは、<xml-extensions>で、XDB構成に次のXML拡張子を追加します。

<extension>extension</extension>

構文

DBMS_XDB.ADDXMLEXTENSION(
extension    IN   VARCHAR2);

パラメータ

表181-11 ADDXMLEXTENSIONプロシージャのパラメータ

パラメータ

説明

extension

追加するXML拡張子。

APPENDRESOURCEMETADATAプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(APPENDRESOURCEMETADATAプロシージャ)を使用してください。

このプロシージャは、ユーザー定義のメタデータをXMLTYPEへのREFまたはXMLTYPEとして使用し、目的のリソースに追加します。

構文

DBMS_XDB.APPENDRESOURCEMETADATA (
abspath   IN  VARCHAR2,
metadata  IN  XMLTYPE);

DBMS_XDB.APPENDRESOURCEMETADATA (
abspath   IN  VARCHAR2,
metadata  IN  REF SYS.XMLTYPE);

パラメータ

表181-12 APPENDRESOURCEMETADATAプロシージャ

パラメータ

説明

abspath

リソースの絶対パス。

metadata

メタデータには、スキーマ・ベースまたは非スキーマ・ベースのメタデータを使用できます。スキーマ・ベースのメタデータは、独自の表に格納されます。

使用上の注意

- REFが渡された場合、プロシージャは、REFをリソースに、メタデータは別の表に格納します。この場合は、メタデータ表のRESID列に移入する必要があります。渡されるREFは一意である必要があることに注意してください。つまり、リソース・メタデータに同じ値を持つREFが存在していると、プロパティの一意性に違反するため、同じにしないでください。ユーザーが、すでに存在するREFを追加しようとすると、エラーが発生します。

- XMLTYPEが渡された場合、データを解析してスキーマ・ベースかどうかを判断し、その結果に応じてデータを格納します。

CFG_GETファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(CFG_GETファンクション)を使用してください。

このファンクションは、セッションの構成情報をXMLTypeインスタンスとして取得します。

構文

DBMS_XDB.CFG_GET
RETURN SYS.XMLType;

CFG_REFRESHプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(CFG_REFRESHプロシージャ)を使用してください。

このプロシージャは、セッションの最新の構成情報を反映します。

構文

DBMS_XDB.CFG_REFRESH;

CFG_UPDATEプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(CFG_UPDATEプロシージャ)を使用してください。

このプロシージャは、構成情報を更新して、変更をコミットします。

構文

DBMS_XDB.CFG_UPDATE(
xdbconfig   IN  SYS.XMLTYPE);

パラメータ

表181-13 CFG_UPDATEプロシージャのパラメータ

パラメータ

説明

xdbconfig

新規の構成データ。

CHANGEOWNERプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(CHANGEOWNERプロシージャ)を使用してください。

このプロシージャは、リソースの所有者を指定した所有者に変更します。

構文

DBMS_XDB.CHANGEOWNER(
abspath    IN   VARCHAR2,
owner      IN   VARCHAR2,
recurse    IN   BOOLEAN := FALSE);

パラメータ

表181-14 CHANGEOWNERプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

owner

リソースの新しい所有者。

recurse

TRUEの場合は、フォルダ・ツリー内のすべてのリソースの所有者を再帰的に変更します。

CHANGEPRIVILEGESファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(CHANGEPRIVILEGESファンクション)を使用してください。

このファンクションは、指定したACEを指定したリソースのACLに追加します。

構文

DBMS_XDB.CHANGEPRIVILEGES(
res_path   IN    VARCHAR2,
ace        IN    xmltype)
RETURN PLS_INTEGER;

パラメータ

表181-15 CHANGEPRIVILEGESファンクションのパラメータ

パラメータ

説明

res_path

権限を変更する必要があるリソースのパス名。

ace

<ace>要素のXMLTypeインスタンス。この要素は、<principal>、<grant>操作および権限リストを指定します。

戻り値

ACLが正常に変更された場合は、正の整数。

使用上の注意

同じprincipalおよび同じ操作(grant/deny)を持つACEがACLに存在しない場合、新規のACEがACLの最後に追加されます。

CHECKPRIVILEGESファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(CHECKPRIVILEGESファンクション)を使用してください。

このファンクションは、指定したリソースに対して現行ユーザーに付与されているアクセス権限をチェックします。

構文

DBMS_XDB.CHECKPRIVILEGES(
res_path   IN  VARCHAR2,
privs      IN  xmltype)
RETURN PLS_INTEGER;

パラメータ

表181-16 CHECKPRIVILEGESファンクションのパラメータ

パラメータ

説明

res_path

リソースの階層内の絶対パス。

privs

privilege要素のXMLTypeインスタンス。要求された一連のアクセス権限を指定します。

戻り値

要求された権限がすべて付与されている場合は、正の整数。

CREATEFOLDERファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(CREATEFOLDERファンクション)を使用してください。

このファンクションは階層内に新規フォルダ・リソースを作成します。

構文

DBMS_XDB.CREATEFOLDER(
path   IN  VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-17 CREATEFOLDERファンクションのパラメータ

パラメータ

説明

path

新規フォルダのパス名。

戻り値

操作が成功した場合はTRUE。そうでない場合はFALSE。

使用上の注意

指定したパス名の親フォルダは、階層内にすでに存在している必要があります。たとえば、pathパラメータに'/folder1/folder2'を指定する場合は、'/folder1'がすでに存在している必要があります。

CREATEOIDPATHファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(CREATEOIDPATHファンクション)を使用してください。

このファンクションは、オブジェクトIDに基づいたリソースの仮想パスを作成します。

構文

DBMS_XDB.CREATEOIDPATH(
oid    IN   RAW)
RETURN VARCHAR2;

パラメータ

表181-18 CREATEOIDPATHファンクションのパラメータ

パラメータ

説明

oid

リソースのオブジェクトID。

CREATERESOURCEファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(CREATERESOURCEファンクション)を使用してください。

このファンクションは新しいリソースを作成します。オーバーロード・オプションの記述は各バージョンの構文の前に配置します。

構文

既存のXMLType行にREFを指定し、その行を指す内容を持つリソースを作成します。この行は、別のリソース内に事前に存在させることはできません。

DBMS_XDB.CREATERESOURCE(
abspath        IN  VARCHAR2,
datarow        IN  REF SYS.XMLTYPE,
createfolders  IN  BOOLEAN := FALSE)
RETURN BOOLEAN;

内容として指定したBLOBを使用して、リソースを作成し、ソースBLOBのキャラクタ・セットを指定します。

DBMS_XDB.CREATERESOURCE(
abspath        IN  VARCHAR2,
data           IN  BLOB,
csid           IN  NUMBER :=0,
createfolders  IN  BOOLEAN := FALSE)
RETURN BOOLEAN;

内容として指定したBFILEを使用して、リソースを作成し、ソースBFILEのキャラクタ・セットを指定します。

DBMS_XDB.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  BFILE,
csid           IN  NUMBER :=0,
createfolders  IN  BOOLEAN := FALSE)
RETURN BOOLEAN;

指定したCLOBを内容として使用し、リソースを作成します。

DBMS_XDB.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  CLOB,
createfolders  IN  BOOLEAN := FALSE)
RETURN BOOLEAN;

文字列を指定すると、その文字列を内容として持つ新規リソースを階層に挿入します。

DBMS_XDB.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  VARCHAR2,
schemaurl      IN  VARCHAR2 := NULL,
elem           IN  VARCHAR2 := NULL)
RETURN BOOLEAN;

XMLTYPEおよびスキーマURLを指定すると、XMLTYPEを内容として持つ新規リソースを階層に挿入します。

DBMS_XDB.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  SYS.XMLTYPE,
schemaurl      IN  VARCHAR2 := NULL,
elem           IN  VARCHAR2 := NULL)
RETURN BOOLEAN;

パラメータ

表181-19 CREATERESOURCEファンクションのパラメータ

パラメータ

説明

abspath

作成するリソースの絶対パス。パス名の親フォルダは、階層内にすでに存在している必要があります。たとえば、/foo/bar.txtと指定する場合は、フォルダ/fooがすでに存在している必要があります。

data

新規リソースの内容が含まれている文字列バッファ。データは解析され、スキーマに基づいたXML文書が含まれているかどうかがチェックされ、含まれている場合、内容はスキーマのデフォルト表にスキーマに基づいたものとして格納されます。含まれていない場合は、バイナリ・データとして保存されます。

datarow

内容として使用するXMLType行へのREF。

csid

ドキュメントのキャラクタ・セットID。有効なOracle IDである必要があり、無効な場合、エラーが戻されます。

CSIDを指定しない場合またはCSIDに0(ゼロ)を指定した場合、ドキュメントのキャラクタ・セットIDは次のように判断されます。

- abspath拡張子から、リソースのMIMEタイプを判断します。

- MIMEタイプが*/xmlの場合、エンコードはhttp://www.w3.org/TR/2000/REC-xml-20001006のW3C XML 1.0 ReferenceのAppendix Fに基づいて検出されます。

- それ以外の場合、デフォルトでデータベースのキャラクタ・セットに設定されます。

createfolders

TRUEの場合、親フォルダが存在しないときには作成します。

schemaurl

XMLデータの場合、データが準拠するスキーマURL(デフォルトはNULL)。

elem

要素名(デフォルトはNULL)。

戻り値

操作が成功した場合はTRUE。そうでない場合はFALSE。

DELETEHTTPEXPIREMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(DELETEHTTPEXPIREMAPPINGプロシージャ)を使用してください。

このプロシージャは、有効期限に対するURLパターンのすべてのマッピングをxdb$configから削除します。

構文

DBMS_XDB.DELETEHTTPEXPIREMAPPING(
pattern  IN   VARCHAR2);

パラメータ

表181-20 DELETEHTTPEXPIREMAPPINGプロシージャのパラメータ

パラメータ

説明

pattern

URLパターン(ワイルドカードとして*のみ使用可能)。

DELETEMIMEMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(CFG_GETファンクション)を使用してください。

このプロシージャは、指定した拡張子のMIMEマッピングをXDB構成から削除します。

構文

DBMS_XDB.DELETEMIMEMAPPING(
extension    IN   VARCHAR2);

パラメータ

表181-21 DELETEMIMEMAPPINGプロシージャのパラメータ

パラメータ

説明

extension

MIMEタイプを削除する拡張子。

DELETERESOURCEプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(DELETERESOURCEプロシージャ)を使用してください。

このプロシージャは、階層からリソースを削除します。

構文

DBMS_XDB.DELETERESOURCE(
path          IN      VARCHAR2,
delete_option IN      PLS_INTEGER);

パラメータ

表181-22 DELETERESOURCEプロシージャのパラメータ

パラメータ

説明

path

削除するリソースのパス名。

delete_option

表181-2で定義されたリソースの削除方法を制御するオプション:

- DELETE_RESOURCE

- DELETE_RECURSIVE

- DELETE_FORCE

- DELETE_RECURSIVE_FORCE

DELETERESOURCEMETADATAプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(DELETERESOURCEMETADATAプロシージャ)を使用してください。

このプロシージャは、絶対パスでリソースを使用し、REFで識別されるスキーマ・ベースのメタデータ、またはネームスペースと名前の組合せで識別されるメタデータ(スキーマ・ベースまたは非スキーマ・ベースのメタデータ)を削除します。また、メタデータの削除方法を指定する追加のパラメータ(オプション)も使用できます。このパラメータは、削除する必要のあるスキーマ・ベースのリソース・メタデータにのみ関連しています。非スキーマ・ベースのメタデータの場合、このパラメータは無視されます。

構文

次の構文は、スキーマ・ベースのメタデータにのみ使用できます。

DBMS_XDB.DELETERESOURCEMETADATA (
abspath        IN  VARCHAR2,
metadata       IN  REF SYS.XMLTYPE,
delete_option  IN  pls_integer := dbms_xdb.DELETE_RESOURCE_METADATA_CASCADE);

次の構文は、スキーマ・ベースまたは非スキーマ・ベースのメタデータに使用できます。

DBMS_XDB.DELETERESOURCEMETADATA (
abspath        IN VARCHAR2,
metadatans     IN VARCHAR2,
metadataname   IN VARCHAR2,
delete_option  IN pls_integer := dbms_xdb.DELETE_RESOURCE_METADATA_CASCADE);

パラメータ

表181-23 DELETERESOURCEMETADATAプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

metadata

削除する(スキーマ・ベースの)メタデータの一部へのREF。

mettadatans

削除するメタデータの断片のネームスペース。

mettadataname

削除するメタデータの断片のローカル名。

delete_option

スキーマ・ベースのメタデータにのみ適用できます。このパラメータは次のいずれかになります。

- DELETE_RES_METADATA_CASCADE: メタデータ表内の対応する行を削除します。

- DELETE_RES_METADATA_NOCASCADE: メタデータ表内の行を削除しません。

DELETESCHEMALOCMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(DELETESCHEMALOCMAPPINGプロシージャ)を使用してください。

このプロシージャは、指定したスキーマURLのスキーマ位置マッピングをXDB構成から削除します。

構文

DBMS_XDB.DELETESCHEMALOCMAPPING(
schemaURL    IN   VARCHAR2);

パラメータ

表181-24 DELETESCHEMALOCMAPPINGプロシージャのパラメータ

パラメータ

説明

schemaURL

スキーマURL。

DELETESERVLETプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(DELETESERVLETプロシージャ)を使用してください。

このプロシージャは、XDB構成からサーブレットを削除します。

構文

DBMS_XDB.DELETESERVLET(
name        IN   VARCHAR2);

パラメータ

表181-25 DELETESERVLETプロシージャのパラメータ

パラメータ

説明

name

サーブレット名。

DELETESERVLETMAPPINGプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(DELETESERVLETMAPPINGプロシージャ)を使用してください。

このプロシージャは、指定したサーブレット名のサーブレット・マッピングをXDB構成から削除します。

構文

DBMS_XDB.DELETESERVLETMAPPING(
name      IN   VARCHAR2);

パラメータ

表181-26 DELETESERVLETMAPPINGプロシージャのパラメータ

パラメータ

説明

name

サーブレット名。

DELETESERVLETSECROLEプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(DELETESERVLETSECROLEプロシージャ)を使用してください。

このプロシージャは、XDB構成内のサーブレットから指定したロールを削除します。

構文

DBMS_XDB.DELETESERVLETSECROLE(
servname    IN   VARCHAR2,     rolename    IN   VARCHAR2);

パラメータ

表181-27 DELETESERVLETSECROLEプロシージャのパラメータ

パラメータ

説明

servname

サーブレット名。

rolename

削除するロールの名前。

DELETEXMLEXTENSIONプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(DELETEXMLEXTENSIONプロシージャ)を使用してください。

このプロシージャは、指定したXML拡張子をXDB構成から削除します。

構文

DBMS_XDB.DELETEXMLEXTENSION(
extension    IN   VARCHAR2);

パラメータ

表181-28 DELETEXMLEXTENSIONプロシージャのパラメータ

パラメータ

説明

extension

削除するXML拡張子。

ENABLEDIGESTAUTHENTICATIONプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(ENABLEDIGESTAUTHENTICATIONプロシージャ)を使用してください。

このプロシージャはDigest認証を有効にします。DigestがXML DB HTTPサーバーで使用される最初の認証メカニズムとしてリストされます。

構文

DBMS_XDB.ENABLEDIGESTAUTHENTICATION;

EXISTSRESOURCEファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(EXISTSRESOURCEファンクション)を使用してください。

このファンクションは、リソースが階層内にあるかどうかを示します。絶対パスを表す文字列によってリソースを照合します。

構文

DBMS_XDB.EXISTSRESOURCE(
abspath    IN    VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-29 EXISTSRESOURCEファンクションのパラメータ

パラメータ

説明

abspath

ACLドキュメントが必要なリソースのパス名。

戻り値

リソースが見つかった場合はTRUE。

GETACLDOCUMENTファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETACLDOCUMENTファンクション)を使用してください。

このファンクションは、パス名を指定して、リソースを保護するACLドキュメントを取得します。

構文

DBMS_XDB.GETACLDOCUMENT(
abspath  IN  VARCHAR2)
RETURN sys.xmltype;

パラメータ

表181-30 GETACLDOCUMENTファンクションのパラメータ

パラメータ

説明

abspath

ACLドキュメントが必要なリソースのパス名。

戻り値

ACLドキュメントのXMLType。

GETCONTENTBLOBファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETCONTENTBLOBファンクション)を使用してください。

このファンクションは、BLOBとして戻されたリソースの内容を取り出します。

構文

DBMS_XDB.GETCONTENTBLOB(
abspath    IN     VARCHAR2,
csid       OUT    PLS_INTEGER,
locksrc    IN     BOOLEAN := FALSE)
RETURN BLOB;

パラメータ

表181-31 GETCONTENTBLOBファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

csid

TRUEの場合、ソースLOBをロックして戻します。FALSEの場合、一時LOBコピーを戻します。

locksrc

BLOBとしてのリソースの内容。

戻り値

BLOBとしてのリソースの内容。

GETCONTENTCLOBファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETCONTENTCLOBファンクション)を使用してください。

このファンクションは、CLOBとして戻されたリソースの内容を取得します。

構文

DBMS_XDB.GETCONTENTCLOB(
abspath    IN     VARCHAR2,
RETURN CLOB;

パラメータ

表181-32 GETCONTENTCLOBファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

CLOBとしてのリソースの内容。

GETCONTENTVARCHAR2ファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETCONTENTVARCHAR2ファンクション)を使用してください。

このファンクションは、文字列として戻されたリソースの内容を取得します。

構文

DBMS_XDB.GETCONTENTVARCHAR2(
abspath    IN     VARCHAR2,
RETURN BLOB;

パラメータ

表181-33 GETCONTENTVARCHAR2ファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

文字列としてのリソースの内容。

GETCONTENTXMLREFファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETCONTENTXMLREFファンクション)を使用してください。

このファンクションは、XMLTYPEへのREFとして戻されたリソースの内容を取り出します。

構文

DBMS_XDB.GETCONTENTXMLREF(
abspath    IN     VARCHAR2,
RETURN SYS.XMLTYPE;

パラメータ

表181-34 GETCONTENTXMLREFファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

XMLTYPEへのREFとしてのリソースの内容。

GETCONTENTXMLTYPEファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETCONTENTXMLTYPEファンクション)を使用してください。

このファンクションは、XMLTYPEとして戻されたリソースの内容を取り出します。

構文

DBMS_XDB.GETCONTENTXMLTYPE(
abspath    IN     VARCHAR2,
RETURN SYS.XMLTYPE;

パラメータ

表181-35 GETCONTENTXMLTYPEファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

XMLTYPEとしてのリソースの内容。

GETFTPPORTファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(GETFTPPORTファンクション)を使用してください。

このプロシージャは、現在のFTPポートの値を取得します。

構文

DBMS_XDB.GETFTPPORT
RETURN NUMBER;

GETHTTPPORTファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(GETHTTPPORTファンクション)を使用してください。

このプロシージャは、現在のHTTPポートの値を取得します。

構文

DBMS_XDB.GETHTTPPORT
RETURN NUMBER;

GETHTTPREQUESTHEADERファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。

このファンクションは、XDBによるHTTPリクエストの処理中にコールされた場合、渡されたヘッダーの値を戻します。これは、カスタム認証を実装するルーチンによって使用されます。

構文

DBMS_XDB.GETHTTPREQUESTHEADER(
header_name    IN   VARCHAR2)
RETURN VARCHAR2;

パラメータ

表181-36 GETHTTPREQUESTHEADERファンクションのパラメータ

パラメータ

説明

header_name

渡されたヘッダー。

戻り値

ヘッダーがリクエストに含まれていない場合、またはセキュリティ上の理由でAUTHENTICATIONを実行する場合は、NULLを戻します。

GETLISTENERENDPOINTプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(GETLISTENERENDPOINTプロシージャ)を使用してください。

このプロシージャは、XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを取得します。このプロシージャでは、HTTPとHTTP2の両方のエンド・ポイントのパラメータを取得できます。

構文

DBMS_XDB.GETLISTENERENDPOINT (
endpoint  IN   NUMBER,
host      OUT  VARCHAR2,    port      OUT  NUMBER,
protocol  OUT  NUMBER);

パラメータ

表181-37 GETLISTENERENDPOINTプロシージャのパラメータ

パラメータ

説明

endpoint

取得するエンド・ポイント。この値は、XDB_ENDPOINT_HTTPまたはXDB_ENDPOINT_HTTP2に指定できます。

host

リスナーのエンド・ポイントがリスニングするインタフェース。

port

リスナーのエンド・ポイントがリスニングするポート。

protocol

リスナーのエンド・ポイントによって受け入れられた転送プロトコル。

GETLOCKTOKENプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETLOCKTOKENプロシージャ)を使用してください。

リソースへのパスを指定して、現行ユーザーのリソースのロック・トークンを戻します。

構文

DBMS_XDB.GETLOCKTOKEN(
path         IN      VARCHAR2,
locktoken    OUT     VARCHAR2);

パラメータ

表181-38 GETLOCKTOKENプロシージャのパラメータ

パラメータ

説明

path

リソースへのパス名。

locktoken

ログインしたユーザーのリソースに対するロック・トークン。

使用上の注意

ユーザーには、リソースに対するREADPROPERTIES権限が必要です。

GETPRIVILEGESファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETPRIVILEGESファンクション)を使用してください。

このファンクションは、指定したリソースに対して現行ユーザーに付与されている権限をすべて取得します。

構文

DBMS_XDB.GETPRIVILEGES(
res_path    IN     VARCHAR2)
RETURN sys.xmltype;

パラメータ

表181-39 GETPRIVILEGESファンクションのパラメータ

パラメータ

説明

res_path

リソースの階層内の絶対パス。

戻り値

<privilege>要素のXMLTypeインスタンス。これには、このリソースに対して現行のユーザーに付与されたすべてのリーフ権限のリストが含まれています。

GETRESOIDファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETRESOIDファンクション)を使用してください。

リソースの絶対パスからオブジェクトIDを戻します。

構文

DBMS_XDB.GETRESOID(
abspath IN VARCHAR2)
RETURN RAW;

パラメータ

表181-40 GETRESOIDファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースが存在しない場合はNULL。

GETXDB_TABLESPACEファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(GETXDB_TABLESPACEファンクション)を使用してください。

このファンクションは、XDB(ユーザー)の現行の表領域を戻します。

構文

DBMS_XDB.GETXDB_TABLESPACE
RETURN VARCHAR2;

HASBLOBCONTENTファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(HASBLOBCONTENTファンクション)を使用してください。

このファンクションは、リソースにBLOBコンテンツがある場合はTRUEを戻します。

構文

DBMS_XDB.HASBLOBCONTENT
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-41 HASBLOBCONTENTファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースにBOBコンテンツがある場合はTRUE。

HASCHARCONTENTファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(HASCHARCONTENTファンクション)を使用してください。

このファンクションは、リソースに文字コンテンツがある場合はTRUEを戻します。

構文

DBMS_XDB.HASCHARCONTENT
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-42 HASCHARCONTENTファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースに文字コンテンツがある場合はTRUE。

HASXMLCONTENTファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(HASXMLCONTENTファンクション)を使用してください。

このファンクションは、リソースにXMLコンテンツがある場合はTRUEを戻します。

構文

DBMS_XDB.HASXMLCONTENT
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-43 HASXMLCONTENTファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースにXMLコンテンツがある場合はTRUE。

HASXMLREFERENCEファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(HASXMLREFERENCEファンクション)を使用してください。

このファンクションは、リソースにXMLコンテンツへのREFがある場合はTRUEを戻します。

構文

DBMS_XDB.HASXMLREFERENCE
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-44 HASXMLREFERENCEファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースにXMLコンテンツへのREFがある場合はTRUE。

ISFOLDERファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(ISFOLDERファンクション)を使用してください。

このファンクションは、リソースがフォルダまたはコンテナの場合はTRUEを戻します。

構文

DBMS_XDB.ISFOLDER
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-45 DBMS_XDB.ISFOLDERファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースがフォルダまたはコンテナの場合はTRUE。

LINKプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(LINKプロシージャ)を使用してください。

このプロシージャは、指定したフォルダから指定したリソースに作成します。

構文

DBMS_XDB.LINK(
srcpath      IN   VARCHAR2,
linkfolder   IN   VARCHAR2,
linkname     IN   VARCHAR2);

DBMS_XDB.LINK(
srcpath      IN   VARCHAR2,
linkfolder   IN   VARCHAR2,
linkname     IN   VARCHAR2,
linktype     IN   PLS_INTEGER := DBMS_XDB.LINK_TYPE_HARD);

パラメータ

表181-46 LINKプロシージャのパラメータ

パラメータ

説明

srcpath

リンクを作成するリソースのパス名。

linkfolder

新規リンクを格納するフォルダ。

linkname

新規リンクの名前。

linktype

作成するリンクのタイプ。

- DBMS_XDB.LINK_TYPE_HARD(デフォルト)

- DBMS_XDB.LINK_TYPE_WEAK

- DBMS_XDB.LINK_TYPE_SYMBOLIC

LOCKRESOURCEファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(LOCKRESOURCEファンクション)を使用してください。

リソースへのパスを指定して、リソースに対するWebDAVスタイルのロックを取得します。

構文

DBMS_XDB.LOCKRESOURCE(
path      IN  VARCHAR2,
depthzero IN  BOOLEAN,
shared    IN  boolean)
RETURN BOOLEAN;

パラメータ

表181-47 LOCKRESOURCEファンクションのパラメータ

パラメータ

説明

path

ロックするリソースのパス名。

depthzero

現在サポートされていません。

shared

TRUEを設定すると、共有書込みロックを取得します。

戻り値

成功した場合はTRUE。

使用上の注意

ユーザーには、リソースに対するUPDATE権限が必要です。

PROCESSLINKSプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(PROCESSLINKSプロシージャ)を使用してください。

このプロシージャは、指定したリソース内のドキュメント・リンクを処理します。

構文

DBMS_XDB.PURGERESOURCEMETADATA(
abspath  IN  VARCHAR2,
recurse  IN  BOOLEAN := FALSE);

パラメータ

表181-48 PROCESSLINKSプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。パスがフォルダの場合は、recurseフラグを使用します。

recurse

abspathがフォルダを指定する場合にのみ使用します。TRUEの場合、指定したリソースをルートとするフォルダ階層内のすべてのリソースのリンクを処理します。FALSEの場合、このフォルダ内のみのすべてのドキュメントのリンクを処理します。

PURGERESOURCEMETADATAプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(PURGERESOURCEMETADATAプロシージャ)を使用してください。

このプロシージャは、リソースからすべてのユーザー・メタデータを削除します。スキーマ・ベースのメタデータはカスケード・モードで削除され、対応するメタデータ表から行が削除されます。

構文

DBMS_XDB.PURGERESOURCEMETADATA(
abspath  IN  VARCHAR2);

パラメータ

表181-49 PURGERESOURCEMETADATAプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

RENAMERESOURCEプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(RENAMERESOURCEプロシージャ)を使用してください。

このプロシージャは、XDBリソースの名前を変更します。

構文

DBMS_XDB.RENAMERESOURCE(
srcpath    IN  VARCHAR2,
destfolder IN  CARCHAR2,
newname    IN  VARCHAR2);

パラメータ

表181-50 RENAMERESOURCEプロシージャのパラメータ

パラメータ

説明

srcpath

ソース・リソース宛先フォルダの階層内の絶対パス。

destfolder

宛先フォルダの階層内の絶対パス。

newname

宛先フォルダ内の子の名前。

SETACLプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(SETACLプロシージャ)を使用してください。

このプロシージャは、指定のリソースに対するACLを、パスで指定したACLに設定します。

構文

DBMS_XDB.SETACL(
res_path   IN  VARCHAR2,
acl_path   IN  VARCHAR2);

パラメータ

表181-51 SETACLプロシージャのパラメータ

パラメータ

説明

res_path

リソースの階層内の絶対パス。

acl_path

ACLの階層内の絶対パス。

使用上の注意

ユーザーには、リソースに対する<write-acl>権限が必要です。

SETFTPPORTプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(SETFTPPORTプロシージャ)を使用してください。

このプロシージャは、FTPポートを新しい値に設定します。

構文

DBMS_XDB.SETFTPPORT(
new_port  IN  NUMBER);

パラメータ

表181-52 SETFTPPORTプロシージャのパラメータ

パラメータ

説明

new_port

FTPポートが設定される値。

SETHTTPPORTプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(SETHTTPPORTプロシージャ)を使用してください。

このプロシージャは、HTTPポートを新しい値に設定します。

構文

DBMS_XDB.SETHTTPPORT(
new_port  IN  NUMBER);

パラメータ

表181-53 SETHTTPPORTプロシージャのパラメータ

パラメータ

説明

new_port

HTTPポートが設定される値。

SETLISTENERENDPOINTプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(SETLISTENERENDPOINTプロシージャ)を使用してください。

このプロシージャは、XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを設定します。このプロシージャでは、HTTPとHTTP2の両方のエンド・ポイントを設定できます。

構文

DBMS_XDB.SETLISTENERENDPOINT (
endpoint  IN  NUMBER,
host      IN  VARCHAR2,    port      IN  NUMBER,
protocol  IN  NUMBER);

パラメータ

表181-54 SETLISTENERENDPOINTプロシージャのパラメータ

パラメータ

説明

endpoint

設定するエンド・ポイント。この値は、XDB_ENDPOINT_HTTPまたはXDB_ENDPOINT_HTTP2に指定できます。

host

リスナーのエンド・ポイントがリスニングするインタフェース。この値は、'LOCALHOST'、NULLまたはホスト名に指定できます。この値が'LOCALHOST'の場合、リスナーのエンド・ポイントはローカルホスト・インタフェースでのみリスニングできます。この値がNULLまたはホスト名の場合、リスナーのエンド・ポイントは、ローカルホスト・インタフェースと非ローカルホスト・インタフェースの両方でリスニングできます。

port

リスナーのエンド・ポイントがリスニングするポート。

protocol

リスナーのエンド・ポイントが受け入れる転送プロトコル。この値は、XDB_PROTOCOL_TCPまたはXDB_PROTOCOL_TCPSに指定できます。

SETLISTENERLOCALACCESSプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_CONFIGパッケージの同じ名前のサブプログラム(SETLISTENERLOCALACCESSプロシージャ)を使用してください。

このプロシージャは、XML DB HTTPサーバーのすべてのリスナーのエンド・ポイントを、ローカルホスト・インタフェースでのみリスニングするか(l_accessの設定がTRUEの場合)、またはローカルホスト・インタフェースと非ローカルホスト・インタフェースの両方でリスニングするか(l_accessの設定がFALSEの場合)のどちらかに制限します。

構文

DBMS_XDB.SETLISTENERLOCALACCESS (
l_access   BOOLEAN);

パラメータ

表181-55 SETLISTENERLOCALACCESSプロシージャのパラメータ

パラメータ

説明

l_access

TRUEまたはFALSE。

SPLITPATHプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(SPLITPATHプロシージャ)を使用してください。

このプロシージャは、パスを親のパスと子のパスに分割します。

構文

DBMS_XDB.SPLITPATH(
abspath     IN  VARCHAR2,
parentpath  OUT VARCHAR2,
childpath    OUT VARCHAR2);

パラメータ

表181-56 SPLITPATHプロシージャのパラメータ

パラメータ

説明

abspath

分割する絶対パス。

parentpath

親のパス。

childpath

子のパス。

TOUCHRESOURCEプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(TOUCHRESOURCEプロシージャ)を使用してください。

このプロシージャは、リソースの変更時間を現在の時間に変更します。

構文

DBMS_XDB.TOUCHRESOURCE
abspath    IN     VARCHAR2);

パラメータ

表181-57 DBMS_XDB.TOUCHRESOURCEプロシージャのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

UNLOCKRESOURCEファンクション

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(UNLOCKRESOURCEファンクション)を使用してください。

このファンクションは、ロック・トークンとリソースへのパスを指定して、リソースのロックを解除します。

構文

DBMS_XDB.UNLOCKRESOURCE(
path     IN  VARCHAR2,
deltoken IN  VARCHAR2)
RETURN BOOLEAN;

パラメータ

表181-58 UNLOCKRESOURCEファンクションのパラメータ

パラメータ

説明

path

リソースへのパス名。

deltoken

削除するロック・トークン。

戻り値

操作が成功した場合はTRUE。

使用上の注意

ユーザーには、リソースに対するUPDATE権限が必要です。

UPDATERESOURCEMETADATAプロシージャ

注意:
リリース12cでは、このプロシージャの使用は推奨されていません。この機能のかわりに、DBMS_XDB_REPOSパッケージの同じ名前のサブプログラム(UPDATERESOURCEMETADATAプロシージャ)を使用してください。

このプロシージャは、リソースのメタデータを更新します。このプロシージャは、絶対パスで識別されるリソースおよび、そのREFで識別されて置き換えられる、そのリソース内のメタデータを使用します。メタデータの一部をユーザー定義のメタデータ(XMLTYPEへのREFまたはXMLTYPEのいずれかの形式)に置き換えます。

構文

次の構文は、スキーマ・ベースのメタデータの更新にのみ使用できます。新しいメタデータは、スキーマ・ベースである必要があります。

DBMS_XDB.UPDATERESOURCEMETADATA(
abspath  IN VARCHAR2,
oldmetadata    IN   REF SYS.XMLTYPE,
newmetadata    IN   REF SYS.XMLTYPE)

次の構文は、スキーマ・ベースのメタデータの更新にのみ使用できます。新しいメタデータは、スキーマ・ベースまたは非スキーマ・ベースである必要があります。

DBMS_XDB.UPDATERESOURCEMETADATA(
abspath        IN   VARCHAR2,
oldmetadata    IN   REF SYS.XMLTYPE,
newmetadata    IN   XMLTYPE);

次の構文は、スキーマ・ベースおよび非スキーマ・ベースの両方のメタデータに使用できます。

DBMS_XDB.UPDATERESOURCEMETADATA(
abspath        IN   VARCHAR2,
oldns          IN   VARCHAR2,
oldname IN VARCHAR,
newmetadata IN XMLTYPE);

次の構文は、スキーマ・ベースおよび非スキーマ・ベースの両方のメタデータに使用できます。新しいメタデータは、スキーマ・ベースである必要があります。

DBMS_XDB.UPDATERESOURCEMETADATA(
abspath       IN   VARCHAR2,
oldns         IN   VARCHAR2,
oldname       IN   VARCHAR,
newmetadata   IN   REF SYS.XMLTYPE);

パラメータ

表181-59 UPDATERESOURCEMETADATAプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

oldmetadata

古いメタデータへのREF。

newmetadata

新しい置換メタデータへのREF(オーバーロードに応じてスキーマ・ベースまたは非スキーマ・ベースのメタデータを使用できます)。

oldns

古いメタデータを識別するネームスペース。

oldname

古いメタデータを識別するローカル名。

使用上の注意

REFの場合、このプロシージャは、REFをリソースに、メタデータは別の表に格納します。REFの一意性が維持されます。XMLTYPEが渡された場合、データを解析してスキーマ・ベースかどうかを判断し、その結果に応じてデータを格納します。

182 DBMS_XDB_ADMIN

DBMS_XDB_ADMINパッケージは、Oracle XML DBリポジトリを管理するインタフェースを提供します。

関連項目:
Oracle XML DBリポジトリの詳細は、『Oracle XML DB開発者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_XDB_ADMINの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- DBMS_XDB_ADMINサブプログラムの要約

DBMS_XDB_ADMINの使用方法

- 推奨されないサブプログラム

- セキュリティ・モデル

推奨されないサブプログラム

注意:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされており、今後のバージョンでは終了する場合があります。

Oracle Database 11gでは、次のサブプログラムの使用は推奨されていません。

- CREATEREPOSITORYXMLINDEXプロシージャ

- DROPREPOSITORYXMLINDEXプロシージャ

- XMLINDEXADDPATHプロシージャ

- XMLINDEXREMOVEPATHプロシージャ

セキュリティ・モデル

DBMS_XDB_ADMINパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、SYS、XDBまたはDBAに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XDB_ADMINサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表182-1 DBMS_XDB_ADMパッケージのサブプログラム

サブプログラム

説明

CREATENONCEKEYプロシージャ

Digest認証で使用するNonce値を生成します。

CREATEREPOSITORYXMLINDEXプロシージャ

(非推奨)XML DBリポジトリにXMLIndexを作成します。

DROPREPOSITORYXMLINDEXプロシージャ

(非推奨)XML DBリポジトリのXMLIndexを削除します。

INSTALLDEFAULTWALLETプロシージャ

デフォルトのXDBウォレット・ディレクトリにデフォルトのXDBウォレットをインストールします。

MOVEXDB_TABLESPACEプロシージャ

XDB(ユーザー)を指定した表領域に移動します。

REBUILDHIERARCHICALINDEXプロシージャ

インポートまたはエクスポート操作後に、階層の索引を再作成します。

XMLINDEXADDPATHプロシージャ

(非推奨)XML DBリポジトリ内のパスを入力として使用し、この指定されたパスの下のすべてのリソースの索引を作成します。

XMLINDEXREMOVEPATHプロシージャ

(非推奨)指定したパスの索引を削除します。

CREATENONCEKEYプロシージャ

このプロシージャは、Digest認証で使用するNonce値を生成します。

構文

DBMS_XDB_ADMIN.CREATENONCEKEY;

CREATEREPOSITORYXMLINDEXプロシージャ

注意:
Oracle Database 11gでは、このプロシージャの使用は推奨されていません。

このプロシージャは、XML DBリポジトリにXMLIndexを作成します。

構文

DBMS_XDB_ADMIN.CREATEREPOSITORYXMLINDEX;

DROPREPOSITORYXMLINDEXプロシージャ

注意:
Oracle Database 11gでは、このプロシージャの使用は推奨されていません。

このプロシージャは、XML DBリポジトリのXMLIndexを削除します。

構文

DBMS_XDB_ADMIN.DROPREPOSITORYXMLINDEX;

INSTALLDEFAULTWALLETプロシージャ

このプロシージャは、デフォルトのXDBウォレット・ディレクトリにデフォルトのXDBウォレットをインストールします。XDBウォレットが格納されているディレクトリ名には、ORACLE_BASE(定義されている場合)によって、またはORACLE_HOMEのいずれかによって接頭辞が設定されます。その後ろに/admin/db_name/xdb_walletが続きます。ここで、db_nameは一意のデータベース名です。

構文

DBMS_XDB_ADMIN.INSTALLDEFAULTWALLET;

使用上の注意

SYSのみが、デフォルトのウォレットをインストールまたは再配置できます。

MOVEXDB_TABLESPACEプロシージャ

このプロシージャは、指定した表領域にXDB(ユーザー)を移動します。

構文

DBMS_XDB_ADMIN.MOVEXDB_TABLESPACE(
new_tablespace   IN  VARCHAR2);

パラメータ

表182-2 MOVEXDB_TABLESPACEプロシージャのパラメータ

パラメータ

説明

new_tablespace

XDBを移動する表領域の名前。

使用上の注意

- この処理は、すべての同時XDBセッションの終了を待機します。

- MOVEXDB_TABLESPACEが失敗した場合は、さらにコマンドを発行する前に、データベースを再起動する必要があります。そうしないと、データベースの動作が予期しないものになります。

- デフォルトでは、XDBリポジトリはSYSAUX表領域に常駐しています。このプロシージャを使用して、別の表領域に移動させることができます。ベスト・プラクティスとして、XDBリポジトリに専用の表領域を作成し、それを他のオブジェクト(表など)と共有しないことをお薦めします。XDBリポジトリが含まれている表領域をREAD ONLYに設定しないでください。このように設定すると、実行中の様々なXML操作に影響することがあるためです。

REBUILDHIERARCHICALINDEXプロシージャ

このプロシージャは、インポートまたはエクスポート操作後に、階層の索引を再作成します。これは、データを索引表からエクスポートできないため必要です。

構文

DBMS_XDB_ADMIN.REBUILDHIERARCHICALINDEX;

XMLINDEXADDPATHプロシージャ

注意:
Oracle Database 11gでは、このプロシージャの使用は推奨されていません。

このプロシージャは、リポジトリxmlindexにパスで識別されたリソースを追加するか(recurseがFALSEの場合)、またはリポジトリxmlindexにパスをルートとするリソースのサブツリーを追加します(recurseがTRUEの場合)。recurseのデフォルト値はTRUEです。

構文

DBMS_XDB_ADMIN.XMLINDEXADDPATH(
path         IN  VARCHAR2,
recurse      IN  BOOLEAN);

パラメータ

表182-3 XMLINDEXADDPATHプロシージャのパラメータ

パラメータ

説明

path

リソースへのパス。

recurse

TRUEまたはFALSE

XMLINDEXREMOVEPATHプロシージャ

注意:
Oracle Database 11gでは、このプロシージャの使用は推奨されていません。

このプロシージャは、リポジトリxmlindexからパスで識別されたリソースを削除するか(recurseがFALSEの場合)、またはリポジトリxmlindexからパスをルートとするリソースのサブツリーを削除します(recurseがTRUEの場合)。recurseのデフォルト値はTRUEです。

構文

DBMS_XDB_ADMIN.XMLINDEXREMOVEPATH(
path              IN  VARCHAR2,
isrecursive       IN  BOOLEAN);

パラメータ

表182-4 XMLINDEXREMOVEPATHプロシージャのパラメータ

パラメータ

説明

path

リソースへのパス。

recurse

TRUEまたはFALSE

183 DBMS_XDB_CONFIG

DBMS_XDB_CONFIGパッケージは、Oracle XML DBとそのリポジトリを構成するインタフェースを提供します。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XDB_CONFIGの使用

- 概要

- セキュリティ・モデル

- 定数

- DBMS_XDB_CONFIGサブプログラムの要約

DBMS_XDB_CONFIGの使用

- 概要

- セキュリティ・モデル

- 定数

概要

PL/SQLパッケージDBMS_XDB_CONFIGは、DBAがシステムを構成するためのPL/SQL向けOracle XML DBリソースのアプリケーション・プログラム・インタフェース(API)です。このAPIは、PL/SQLを使用して、Oracle XML DBリポジトリ・リソースにアクセスして管理するためのファンクションとプロシージャを提供します。また、リソースのセキュリティおよびOracle XML DBの構成の管理方法も説明します。

Oracle XML DBリポジトリはXMLでモデル化されており、すべてのデータに対するデータベース・ファイル・システムを提供します。リポジトリは、XMLTypeのデータベース・オブジェクトにパス名(またはURL)をマップし、これらのオブジェクトの管理機能を提供します。

PL/SQLパッケージDBMS_XDB_CONFIGは、次のすべての管理に使用できるAPIです。

- Oracle XML DBリソース

- Oracle XML DBセキュリティは、アクセス制御リスト(ACL)に基づいています。ACLは、どのリソースへのアクセス権をどのプリンシパル(ユーザーまたはロール)が持つかを決定するアクセス制御エントリ(ACE)のリストです。

- Oracle XML DBの構成

セキュリティ・モデル

DBMS_XDB_CONFIGパッケージは、XDBが所有しているため、SYSまたはXDBで作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

DBMS_XDB_CONFIGパッケージでは、表183-1「DBMS_XDB_CONFIGの定数」に示す定数が使用されます。

表183-1 DBMS_XDB_CONFIGの定数

定数

タイプ

値

説明

XDB_ENDPOINT_HTTP

NUMBER

1

最初のHTTPポートのリスナーの定義

XDB_ENDPOINT_HTTP2

NUMBER

2

2番目のHTTPポートのリスナーの定義

XDB_PROTOCOL_TCP

NUMBER

1

HTTPプロトコルのリスナーの定義

XDB_PROTOCOL_TCPS

NUMBER

2

HTTPSプロトコルのリスナーの定義

DBMS_XDB_CONFIGサブプログラムの要約

表183-2 DBMS_XDB_CONFIGパッケージのサブプログラム

サブプログラム

説明

ADDHTTPEXPIREMAPPINGプロシージャ

有効期限に対するURLパターンのマッピングをXDB$CONFIGに追加します。これによって、パターンに一致するURLのExpireヘッダーを制御します。

ADDMIMEMAPPINGプロシージャ

XDB構成にMIMEマッピングを追加します。

ADDSCHEMALOCMAPPINGプロシージャ

XDB構成にスキーマ位置マッピングを追加します。

ADDSERVLETプロシージャ

XDB構成にサーブレットを追加します。

ADDSERVLETMAPPINGプロシージャ

XDB構成にサーブレット・マッピングを追加します。

ADDSERVLETSECROLEプロシージャ

XDB構成内の指定したサーブレットにセキュリティ・ロールREFを追加します。

ADDXMLEXTENSIONプロシージャ

次のXML拡張子を<xml-extensions>: <extension>extension</extension>下のXDB構成に追加します。

CFG_GETファンクション

セッションの構成情報をXMLTypeインスタンスとして取得します。

CFG_REFRESHプロシージャ

セッションの最新の構成情報をデータベースに反映します。

CFG_UPDATEプロシージャ

構成情報を更新し、変更をコミットします。

DELETEHTTPEXPIREMAPPINGプロシージャ

有効期限に対するURLパターンのすべてのマッピングをXDB$CONFIGから削除します。

DELETEMIMEMAPPINGプロシージャ

指定した拡張子のMIMEマッピングをXDB構成から削除します。

DELETESCHEMALOCMAPPINGプロシージャ

指定したスキーマURLのスキーマ位置マッピングをXDB構成から削除します。

DELETESERVLETプロシージャ

サーブレットをXDB構成から削除します。

DELETESERVLETMAPPINGプロシージャ

指定したサーブレット名のサーブレット・マッピングをXDB構成から削除します。

DELETESERVLETSECROLEプロシージャ

XDB構成内のサーブレットから指定したロールを削除します。

DELETEXMLEXTENSIONプロシージャ

指定したXML拡張子をXDB構成から削除します。

ENABLEDIGESTAUTHENTICATIONプロシージャ

Digest認証を有効にします。

GETFTPPORTファンクション

現在のFTPポートの値を取得します。

GETHTTPPORTファンクション

現在のHTTPポートの値を取得します。

GETHTTPCONFIGREALMファンクション

レルム名を取得します。

GETHTTPSPORTファンクション

現在のHTTPSポートの値を取得します。

GETLISTENERENDPOINTプロシージャ

XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを取得します。

SETFTPPORTプロシージャ

FTPポートを新しい値に設定します。

SETHTTPPORTプロシージャ

HTTPポートに新しい値を設定します。

SETHTTPCONFIGREALMプロシージャ

レルムに新しい値を設定します。

SETHTTPSPORTプロシージャ

HTTPSポートに新しい値を設定します。

SETLISTENERENDPOINTプロシージャ

XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを設定します。

SETLISTENERLOCALACCESSプロシージャ

XML DB HTTPサーバーのすべてのリスナーのエンド・ポイントを、ローカルホスト・インタフェースでのみリスニングするか(l_accessがTRUEに設定されている場合)、ローカルホスト・インタフェースと非ローカルホスト・インタフェースの両方でリスニングするか(l_accessがFALSEに設定されている場合)のどちらかに制限します。

USEDPORTプロシージャ

同じ統合データベース内の他のプラガブル・データベースで使用されるポート番号を取得します。

ADDHTTPEXPIREMAPPINGプロシージャ

このプロシージャは、有効期限に対するURLパターンのマッピングをXDB$CONFIGに追加します。これによって、パターンに一致するURLのExpireヘッダーを制御します。

構文

DBMS_XDB_REPOS.ADDHTTPEXPIREMAPPING (
pattern    IN    VARCHAR2,
expire     IN    VARCHAR2);

パラメータ

表183-3 ADDHTTPEXPIREMAPPINGプロシージャのパラメータ

パラメータ

説明

pattern

URLパターン(ワイルドカードとして*のみ使用可能)。

expire

Apacheのmod_expiresのExpireDefaultに続く次のような有効期限ディレクティブ。

base [plus] (num type)*
-- base: now | modification
-- type: year|years|month|months|week|weeks|day|days|
minute|minutess|second|seconds

例

DBMS_XDB_REPOS.ADDHTTPEXPIREMAPPING ('/public/test1/*', 'now plus 4 weeks');
DBMS_XDB_REPOS.ADDHTTPEXPIREMAPPING (
'/public/test2/*', 'modification plus 1 day 30 seconds');

ADDMIMEMAPPINGプロシージャ

このプロシージャは、XDB構成に次のMIMEマッピングを追加します。

<mime-mapping>
<extension>extension</extension>
<mime-type>mimetype</mime-type>
</mime-mapping>

構文

DBMS_XDB_CONFIG.ADDMIMEMAPPING(
extension    IN   VARCHAR2,
mimetype     IN   VARCHAR2);

パラメータ

表183-4 ADDMIMEMAPPINGプロシージャのパラメータ

パラメータ

説明

extension

MIMEタイプが追加される拡張子。

mimetype

MIMEタイプ。

ADDSCHEMALOCMAPPINGプロシージャ

このプロシージャは、XDB構成に次のスキーマ位置マッピングを追加します。

<schemaLocation-mapping>
<namespace>namespace</namespace>
<element>element</element>
<schemaURL>schemaURL</schemaURL>
</schemaLocation-mapping>

構文

DBMS_XDB_CONFIG.ADDSCHEMALOCMAPPING(
namespace    IN   VARCHAR2,
element      IN   VARCHAR2,
schemaURL    IN   VARCHAR2);

パラメータ

表183-5 ADDSCHEMALOCMAPPINGプロシージャのパラメータ

パラメータ

説明

namespace

名前空間。

element

要素

schemaURL

スキーマURL。

ADDSERVLETプロシージャ

このプロシージャは、XDB構成に次のサーブレットを追加します。

<servlet>
<servlet-name>name</servlet-name>     <servlet-language>language</servlet-language>
<display-name>dispname</display-name>
<description>descript</description>
<servlet-class>class</servlet-class>
<servlet-schema>schema</servlet-schema>
</servlet>

構文

DBMS_XDB_CONFIG.ADDSERVLET(
name       IN   VARCHAR2,
language    IN   VARCHAR2,
dispname    IN   VARCHAR2,
icon        IN   VARCHAR2 := NULL,
descript    IN   VARCHAR2 := NULL,
class       IN   VARCHAR2 := NULL,
jspfile     IN   VARCHAR2 := NULL,
plsql       IN   VARCHAR2 := NULL);

パラメータ

表183-6 ADDSERVLETプロシージャのパラメータ

パラメータ

説明

name

サーブレット名。

language

C、Java、PL/SQLのいずれかを指定する必要があります。

dispname

表示名。

icon

アイコン。

descript

説明

class

このサーブレットに対応するclass / jspfile / plsqlファンクション。これら3つの引数のうち最初のNULL以外の引数が選択され、その他の引数はNULLとして処理されます。

jspfile

このサーブレットに対応するclass / jspfile / plsqlファンクション。これら3つの引数のうち最初のNULL以外の引数が選択され、その他の引数はNULLとして処理されます。

plsql

このサーブレットに対応するclass / jspfile / plsqlファンクション。これら3つの引数のうち最初のNULL以外の引数が選択され、その他の引数はNULLとして処理されます。

schema

スキーマ

ADDSERVLETMAPPINGプロシージャ

このプロシージャは、XDB構成に次のサーブレット・マッピングを追加します。

<servlet-mapping>     <servlet-pattern>pattern</servlet-pattern>     <servlet-name>name</servlet-name></servlet-mapping>

構文

DBMS_XDB_CONFIG.ADDSERVLETMAPPING(
pattern   IN   VARCHAR2,     name      IN   VARCHAR2);

パラメータ

表183-7 ADDSERVLETMAPPINGプロシージャのパラメータ

パラメータ

説明

pattern

サーブレットのパターン。

name

サーブレット名。

ADDSERVLETSECROLEプロシージャ

このプロシージャは、XDB構成内の指定したサーブレットに次のセキュリティ・ロールREFを追加します。

<security-role-ref>
<role-name>rolename</role-name>
<role-link>rolelink</role-link>
<description>descript</description>
</security-role-ref>

構文

DBMS_XDB_CONFIG.ADDSERVLETSECROLE(
servname    IN   VARCHAR2,     rolename    IN   VARCHAR2,     rolelink    IN   VARCHAR2,     descript    IN   VARCHAR2 := NULL);

パラメータ

表183-8 ADDSERVLETSECROLEプロシージャのパラメータ

パラメータ

説明

servname

サーブレット名。

rolename

ロール名。

rolelink

ロール・リンク。

descript

説明

ADDXMLEXTENSIONプロシージャ

このプロシージャは、<xml-extensions>で、XDB構成に次のXML拡張子を追加します。

<extension>extension</extension>

構文

DBMS_XDB_CONFIG.ADDXMLEXTENSION(
extension    IN   VARCHAR2);

パラメータ

表183-9 ADDXMLEXTENSIONプロシージャのパラメータ

パラメータ

説明

extension

追加するXML拡張子。

CFG_GETファンクション

このファンクションは、セッションの構成情報をXMLTypeインスタンスとして取得します。

構文

DBMS_XDB_CONFIG.CFG_GET
RETURN SYS.XMLType;

CFG_REFRESHプロシージャ

このプロシージャは、セッションの最新の構成情報を反映します。

構文

DBMS_XDB_CONFIG.CFG_REFRESH;

CFG_UPDATEプロシージャ

このプロシージャは、構成情報を更新して、変更をコミットします。

構文

DBMS_XDB_CONFIG.CFG_UPDATE(
xdbconfig   IN  SYS.XMLTYPE);

パラメータ

表183-10 CFG_UPDATEプロシージャのパラメータ

パラメータ

説明

xdbconfig

新規の構成データ。

DELETEHTTPEXPIREMAPPINGプロシージャ

このプロシージャは、有効期限に対するURLパターンのすべてのマッピングをXDB$CONFIGから削除します。

構文

DBMS_XDB_REPOS.DELETEHTTPEXPIREMAPPING(
pattern  IN   VARCHAR2);

パラメータ

表183-11 DELETEHTTPEXPIREMAPPINGプロシージャのパラメータ

パラメータ

説明

pattern

URLパターン(ワイルドカードとして*のみ使用可能)。

DELETEMIMEMAPPINGプロシージャ

このプロシージャは、指定した拡張子のMIMEマッピングをXDB構成から削除します。

構文

DBMS_XDB_CONFIG.DELETEMIMEMAPPING(
extension    IN   VARCHAR2);

パラメータ

表183-12 DELETEMIMEMAPPINGプロシージャのパラメータ

パラメータ

説明

extension

MIMEタイプを削除する拡張子。

DELETESCHEMALOCMAPPINGプロシージャ

このプロシージャは、指定したスキーマURLのスキーマ位置マッピングをXDB構成から削除します。

構文

DBMS_XDB_CONFIG.DELETESCHEMALOCMAPPING(
schemaURL    IN   VARCHAR2);

パラメータ

表183-13 DELETESCHEMALOCMAPPINGプロシージャのパラメータ

パラメータ

説明

schemaURL

スキーマURL。

DELETESERVLETプロシージャ

このプロシージャは、XDB構成からサーブレットを削除します。

構文

DBMS_XDB_CONFIG.DELETESERVLET(
name        IN   VARCHAR2);

パラメータ

表183-14 DELETESERVLETプロシージャのパラメータ

パラメータ

説明

name

サーブレット名。

DELETESERVLETMAPPINGプロシージャ

このプロシージャは、指定したサーブレット名のサーブレット・マッピングをXDB構成から削除します。

構文

DBMS_XDB_CONFIG.DELETESERVLETMAPPING(
name      IN   VARCHAR2);

パラメータ

表183-15 DELETESERVLETMAPPINGプロシージャのパラメータ

パラメータ

説明

name

サーブレット名。

DELETESERVLETSECROLEプロシージャ

このプロシージャは、XDB構成内のサーブレットから指定したロールを削除します。

構文

DBMS_XDB_CONFIG.DELETESERVLETSECROLE(
servname    IN   VARCHAR2,     rolename    IN   VARCHAR2);

パラメータ

表183-16 DELETESERVLETSECROLEプロシージャのパラメータ

パラメータ

説明

servname

サーブレット名。

rolename

削除するロールの名前。

DELETEXMLEXTENSIONプロシージャ

このプロシージャは、指定したXML拡張子をXDB構成から削除します。

構文

DBMS_XDB_CONFIG.DELETEXMLEXTENSION(
extension    IN   VARCHAR2);

パラメータ

表183-17 DELETEXMLEXTENSIONプロシージャのパラメータ

パラメータ

説明

extension

削除するXML拡張子。

ENABLEDIGESTAUTHENTICATIONプロシージャ

このプロシージャは、Digest認証を有効にします。DigestがXML DB HTTPサーバーで使用される最初の認証メカニズムとしてリストされます。

構文

DBMS_XDB_CONFIG.ENABLEDIGESTAUTHENTICATION;

GETFTPPORTファンクション

このプロシージャは、現在のFTPポートの値を取得します。

構文

DBMS_XDB_CONFIG.GETFTPPORT
RETURN NUMBER;

GETHTTPPORTファンクション

このファンクションは現在のHTTPポートの値を取得します。

構文

DBMS_XDB_CONFIG.GETHTTPPORT
RETURN NUMBER;

GETHTTPCONFIGREALMファンクション

このファンクションは、レルム名を取得します。レルムの定義はIETFのRFC2617で参照されます。

構文

DBMS_XDB_CONFIG.GETHTTPCONFIGREALM
RETURN VARCHAR2;

GETHTTPSPORTファンクション

このプロシージャは、現在のHTTPSポートの値を取得します。

構文

DBMS_XDB_CONFIG.GETHTTPPORT
RETURN NUMBER;

使用上の注意

ポートが構成されなかった場合、NULLを返します。

GETLISTENERENDPOINTプロシージャ

このプロシージャは、XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを取得します。このプロシージャでは、HTTPとHTTP2の両方のエンド・ポイントのパラメータを取得できます。

構文

DBMS_XDB_CONFIG.GETLISTENERENDPOINT (
endpoint  IN   NUMBER,
host      OUT  VARCHAR2,    port      OUT  NUMBER,
protocol  OUT  NUMBER);

パラメータ

表183-18 GETLISTENERENDPOINTプロシージャのパラメータ

パラメータ

説明

endpoint

取得するエンド・ポイント。この値は、XDB_ENDPOINT_HTTPまたはXDB_ENDPOINT_HTTP2に指定できます。

host

リスナーのエンド・ポイントがリスニングするインタフェース。

port

リスナーのエンド・ポイントがリスニングするポート。

protocol

リスナーのエンド・ポイントによって受け入れられた転送プロトコル。

SETFTPPORTプロシージャ

このプロシージャは、FTPポートを新しい値に設定します。

構文

DBMS_XDB_CONFIG.SETFTPPORT(
new_port  IN  NUMBER);

パラメータ

表183-19 SETFTPPORTプロシージャのパラメータ

パラメータ

説明

new_port

FTPポートが設定される値。

SETHTTPPORTプロシージャ

このプロシージャは、HTTPポートを新しい値に設定します。

構文

DBMS_XDB_CONFIG.SETHTTPPORT(
new_port  IN  NUMBER);

パラメータ

表183-20 SETHTTPPORTプロシージャのパラメータ

パラメータ

説明

new_port

HTTPポートが設定される値。

SETHTTPCONFIGREALMプロシージャ

このプロシージャはレルム値を変更します。

構文

DBMS_XDB_CONFIG.SETHTTPCONFIGREALM(
realm IN VARCHAR2);

パラメータ

表183-21 SETHTTPPORTプロシージャのパラメータ

パラメータ

説明

realm

IETFのRFC2617で定義されたレルム。

SETHTTPSPORTプロシージャ

このプロシージャは、HTTPポートを新しい値に設定します。

構文

DBMS_XDB_CONFIG.SETHTTPSPORT(
new_port  IN  NUMBER);

パラメータ

表183-22 SETHTTPSPORTプロシージャのパラメータ

パラメータ

説明

new_port

HTTPSポートに設定される値。

SETLISTENERENDPOINTプロシージャ

このプロシージャは、XML DB HTTPサーバーに対応するリスナーのエンド・ポイントのパラメータを設定します。このプロシージャでは、HTTPとHTTP2の両方のエンド・ポイントを設定できます。

構文

DBMS_XDB_CONFIG.SETLISTENERENDPOINT (
endpoint  IN  NUMBER,
host      IN  VARCHAR2,    port      IN  NUMBER,
protocol  IN  NUMBER);

パラメータ

表183-23 SETLISTENERENDPOINTプロシージャのパラメータ

パラメータ

説明

endpoint

設定するエンド・ポイント。この値は、XDB_ENDPOINT_HTTPまたはXDB_ENDPOINT_HTTP2に指定できます。

host

リスナーのエンド・ポイントがリスニングするインタフェース。この値は、'LOCALHOST'、NULLまたはホスト名に指定できます。この値が'LOCALHOST'の場合、リスナーのエンド・ポイントはローカルホスト・インタフェースでのみリスニングできます。この値がNULLまたはホスト名の場合、リスナーのエンド・ポイントは、ローカルホスト・インタフェースと非ローカルホスト・インタフェースの両方でリスニングできます。

port

リスナーのエンド・ポイントがリスニングするポート。

protocol

リスナーのエンド・ポイントが受け入れる転送プロトコル。この値は、XDB_PROTOCOL_TCPまたはXDB_PROTOCOL_TCPSに指定できます。

SETLISTENERLOCALACCESSプロシージャ

このプロシージャは、XML DB HTTPサーバーのすべてのリスナーのエンド・ポイントを、ローカルホスト・インタフェースでのみリスニングするか(l_accessの設定がTRUEの場合)、またはローカルホスト・インタフェースと非ローカルホスト・インタフェースの両方でリスニングするか(l_accessの設定がFALSEの場合)のどちらかに制限します。

構文

DBMS_XDB_CONFIG.SETLISTENERLOCALACCESS (
l_access   BOOLEAN);

パラメータ

表183-24 SETLISTENERLOCALACCESSプロシージャのパラメータ

パラメータ

説明

l_access

TRUEまたはFALSE。

USEDPORTプロシージャ

このプロシージャは、同じ統合データベース内の他のプラガブル・データベースで使用されるポート番号を取得します。

構文

DBMS_XDB_CONFIG.USEDPORT;

184 DBMS_XDB_CONSTANTS

DBMS_XDB_CONSTANTSパッケージは、一般的に使用される定数のインタフェースを提供します。入力エラーを避けるため、動的文字列のかわりに定数を使用してください。

この章では、次の項目について説明します。

- DBMS_XDB_CONSTANTSの使用

- セキュリティ・モデル

- DBMS_XDB_CONSTANTSサブプログラムの要約

DBMS_XDB_CONSTANTSの使用

- セキュリティ・モデル

セキュリティ・モデル

DBMS_XDB_CONSTANTSパッケージは、XDBが所有しているため、SYSまたはXDBで作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XDB_CONSTANTSサブプログラムの要約

表184-1 DBMS_XDB_CONSTANTSパッケージのサブプログラム

サブプログラム

説明

ENCODING_DEFAULTファンクション

戻り値'AL32UTF8'

ENCODING_ISOLATIN1ファンクション

戻り値'WE8ISO8859P1'

ENCODING_UTF8ファンクション

戻り値'AL32UTF8'

ENCODING_WIN1252ファンクション

戻り値'WE8MSWIN1252'

NAMESPACE_ACLファンクション

戻り値'http://xmlns.oracle.com/xdb/acl.xsd'

NAMESPACE_METADATAファンクション

戻り値'http://xmlns.oracle.com/xdbuserMetaData'

NAMESPACE_ORACLEファンクション

戻り値'http://xmlns.oracle.com'

NAMESPACE_ORACLE_XDBファンクション

戻り値'http://xmlns.oracle.com/xdb'

NAMESPACE_RESOURCEファンクション

戻り値'http://xmlns.oracle.com/xdb/XDBResource.xsd'

NAMESPACE_RESOURCE_EVENTファンクション

戻り値'http://xmlns.oracle.com/resourceEvent'

NAMESPACE_RESOURCE_CONFIGファンクション

戻り値'http://xmlns.oracle.com/XDBResConfig.xsd'

NAMESPACE_XDBSCHEMAファンクション

戻り値'http://xmlns.oracle.com/xdb/XDBSchema.xsd'

NAMESPACE_XMLDIFFファンクション

戻り値'http://xmlns.oracle.com/xdb/xdiff.xsd'

NAMESPACE_XMLINSTANCEファンクション

戻り値'http://www.w3.org/2001/XMLSchema-instance'

NAMESPACE_XMLSCHEMAファンクション

戻り値'http://www.w3.org/2001/XMLSchema'

NSPREFIX_ACL_ACLファンクション

戻り値'xmlns:acl= 'http://xmlns.oracle.com/acs.xsd'

NSPREFIX_RESCONFIG_RCファンクション

戻り値'xmlns:rc="http://xmlns.oracle.com/xdb/XDBResConfig.xsd"'

NSPREFIX_RESOURCE_Rファンクション

戻り値'xmlns:r="http://xmlns.oracle.com/XDBResource.xsd'

NSPREFIX_XDB_XDBファンクション

戻り値'http://xmlns.oracle.com/xdb'

NSPREFIX_XMLINSTANCE_XSIファンクション

戻り値'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'

NSPREFIX_XMLDIFF_XDファンクション

戻り値'xmlns:xd="http://xmlns.oracle.com/xdb/xdiff.xsd"'

NSPREFIX_XMLSCHEMA_XSDファンクション

戻り値'xmlns:xsd="http://www.w3.org/2001/XMLSchema"'

SCHEMAURL_ACLファンクション

戻り値'http://xmlns.oracle.com/xdb/acl.xsd'

SCHEMAELEM_RES_ACLファンクション

戻り値'http://xmlns.oracle.com/xdb/acl.xsd#acl'

SCHEMAELEM_RESCONTENT_BINARYファンクション

戻り値'http://xmlns.oracle.com/xdb/XDBSchema.xsd#binary'

SCHEMAELEM_RESCONTENT_TEXTファンクション

戻り値'http://xmlns.oracle.com/xdb/XDBSchema.xsd#text'

SCHEMAURL_RESOURCEファンクション

戻り値'http://xmlns.oracle.com/xdb/XDBResource.xsd'

SCHEMAURL_XDBSCHEMAファンクション

戻り値'http://xmlns.oracle.com/xdb/XDBSchema.xsd'

XDBSCHEMA_PREFIXESファンクション

戻り値'xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb'

XSD_ATTRIBUTEファンクション

戻り値'attribute'

XSD_COMPLEX_TYPEファンクション

戻り値'complexType'

XSD_ELEMENTファンクション

戻り値'element'

XSD_GROUPファンクション

戻り値'group'

ENCODING_DEFAULTファンクション

このファンクションは、'AL32UTF8'を戻します。

構文

DBMS_XDB_CONSTANTS.ENCODING_DEFAULT
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'AL32UTF8'

ENCODING_ISOLATIN1ファンクション

このファンクションは、'WE8ISO8859P1'を戻します。

構文

DBMS_XDB_CONSTANTS.ENCODING_ISOLATIN1
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'WE8ISO8859P1'

ENCODING_UTF8ファンクション

このファンクションは、'AL32UTF8'を戻します。

構文

DBMS_XDB_CONSTANTS.ENCODING_UTF8
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'AL32UTF8'

ENCODING_WIN1252ファンクション

このファンクションは、'WE8MSWIN1252'を戻します。

構文

DBMS_XDB_CONSTANTS.ENCODING_WIN1252
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'WE8MSWIN1252'

NAMESPACE_ACLファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/acl.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_ACL
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/acl.xsd'

NAMESPACE_METADATAファンクション

このファンクションは、'http://xmlns.oracle.com/xdbuserMetaData'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_METADATA
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdbuserMetaData'

NAMESPACE_ORACLEファンクション

このファンクションは、'http://xmlns.oracle.com'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_ORACLE
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com'

NAMESPACE_ORACLE_XDBファンクション

このファンクションは、'http://xmlns.oracle.com/xdb'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_ORACLE_XDB
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb'

NAMESPACE_RESOURCEファンクション

このファンクションは、'/XDBResource.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_RESOURCE
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/XDBResource.xsd

NAMESPACE_RESOURCE_EVENTファンクション

このファンクションは、'http://xmlns.oracle.com/resourceEvent'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_RESOURCE_EVENT
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/resourceEvent'

NAMESPACE_RESOURCE_CONFIGファンクション

このファンクションは、'http://xmlns.oracle.com/XDBResConfig.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_RESOURCE_CONFIG
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/XDBResConfig.xsd'

NAMESPACE_XDBSCHEMAファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/XDBSchema.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_XDBSCHEMA
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/XDBSchema.xsd'

NAMESPACE_XMLDIFFファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/xdiff.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_XMLDIFF
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/xdiff.xsd'

NAMESPACE_XMLINSTANCEファンクション

このファンクションは、'http://www.w3.org/2001/XMLSchema-instance'を戻します。

構文

DBMS_XDB_CONSTANTS.NAMESPACE_XMLINSTANCE
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://www.w3.org/2001/XMLSchema-instance'

NAMESPACE_XMLSCHEMAファンクション

このファンクションは、'http://www.w3.org/2001/XMLSchema'を戻します。

構文

DBMS_XDB_CONSTANTS. NAMESPACE_XMLSCHEMA
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://www.w3.org/2001/XMLSchema'

NSPREFIX_ACL_ACLファンクション

このファンクションは、'xmlns:acl= 'http://xmlns.oracle.com/acs.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.NSPREFIX_ACL_ACL
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'xmlns:acl= 'http://xmlns.oracle.com/acs.xsd'

NSPREFIX_RESCONFIG_RCファンクション

このファンクションは、''xmlns:rc="http://xmlns.oracle.com/xdb/XDBResConfig.xsd"'を戻します。

構文

DBMS_XDB_CONSTANTS.NSPREFIX_RESCONFIG_RC
RETURN VARCHAR2 DETERMINISTIC;

戻り値

戻り値''xmlns:rc="http://xmlns.oracle.com/xdb/XDBResConfig.xsd"'

NSPREFIX_RESOURCE_Rファンクション

このファンクションは、'xmlns:r="http://xmlns.oracle.com/XDBResource.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.NSPREFIX_RESOURCE_R
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'xmlns:r="http://xmlns.oracle.com/XDBResource.xsd'

NSPREFIX_XDB_XDBファンクション

このファンクションは、'http://xmlns.oracle.com/xdb'を戻します。

構文

DBMS_XDB_CONSTANTS.NSPREFIX_XDB_XDB
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb'

NSPREFIX_XMLINSTANCE_XSIファンクション

このファンクションは、'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'を戻します。

構文

DBMS_XDB_CONSTANTS.NSPREFIX_XMLINSTANCE_XSI
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'

NSPREFIX_XMLDIFF_XDファンクション

このファンクションは、'xmlns:xd="http://xmlns.oracle.com/xdb/xdiff.xsd"'を戻します。

構文

DBMS_XDB_CONSTANTS.NSPREFIX_XMLDIFF_XD
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'xmlns:xd="http://xmlns.oracle.com/xdb/xdiff.xsd"'

NSPREFIX_XMLSCHEMA_XSDファンクション

このファンクションは、'xmlns:xsd="http://www.w3.org/2001/XMLSchema"'を戻します。

構文

DBMS_XDB_CONSTANTS.NSPREFIX_XMLSCHEMA_XSD
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'xmlns:xsd="http://www.w3.org/2001/XMLSchema"'

SCHEMAURL_ACLファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/acl.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.SCHEMAURL_ACL
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/acl.xsd'

SCHEMAELEM_RES_ACLファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/acl.xsd#acl'を戻します。

構文

DBMS_XDB_CONSTANTS.SCHEMAELEM_RES_ACL
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/acl.xsd#acl'

SCHEMAELEM_RESCONTENT_BINARYファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/XDBSchema.xsd#binary'を戻します。

構文

DBMS_XDB_CONSTANTS.SCHEMAELEM_RESCONTENT_BINARY
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/XDBSchema.xsd#binary'

SCHEMAELEM_RESCONTENT_TEXTファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/XDBSchema.xsd#text'を戻します。

構文

DBMS_XDB_CONSTANTS.SCHEMAELEM_RESCONTENT_TEXT
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/XDBSchema.xsd#text'

SCHEMAURL_RESOURCEファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/XDBResource.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.SCHEMAURL_RESOURCE
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/XDBResource.xsd'

SCHEMAURL_XDBSCHEMAファンクション

このファンクションは、'http://xmlns.oracle.com/xdb/XDBSchema.xsd'を戻します。

構文

DBMS_XDB_CONSTANTS.SCHEMAURL_XDBSCHEMA
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'http://xmlns.oracle.com/xdb/XDBSchema.xsd'

XDBSCHEMA_PREFIXESファンクション

このファンクションは、'xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb'を戻します。

構文

DBMS_XDB_CONSTANTS.XDBSCHEMA_PREFIXES
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb'

XSD_ATTRIBUTEファンクション

このファンクションは、'attribute'を戻します。

構文

DBMS_XDB_CONSTANTS.XSD_ATTRIBUTE
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'attribute'

XSD_COMPLEX_TYPEファンクション

このファンクションは、'complexType'を戻します。

構文

DBMS_XDB_CONSTANTS.XSD_COMPLEX_TYPE
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'complexType'

XSD_ELEMENTファンクション

このファンクションは、'element'を戻します。

構文

DBMS_XDB_CONSTANTS. XSD_ELEMENT
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'element'

XSD_GROUPファンクション

このファンクションは、'group'を戻します。

構文

DBMS_XDB_CONSTANTS.XSD_GROUP
RETURN VARCHAR2 DETERMINISTIC;

戻り値

'group'

185 DBMS_XDB_REPOS

DBMS_XDB_REPOSパッケージは、Oracle XMLデータベース・リポジトリで動作するインタフェースを提供します。

関連項目:
次のトピックに関する詳細は、『Oracle XML DB開発者ガイド』を参照してください。

- リポジトリ・リソースの使用と管理

- ACLベースのセキュリティ管理(リポジトリ・リソースへのアクセス権の制御)

- XLinkリンクおよびXIncludeリンクの管理

- ドキュメントのリポジトリへのロード

- リソース・メタデータの作成、削除、および管理

この章では、次の項目について説明します。

- DBMS_XDB_REPOSの使用

- 概要

- セキュリティ・モデル

- 定数

- DBMS_XDB_REPOSサブプログラムの要約

DBMS_XDB_REPOSの使用

- 概要

- セキュリティ・モデル

- 定数

概要

DBMS_XDB_REPOSパッケージをOracle XML DBリポジトリで操作して、リソースの作成、変更および削除を行えます。これには、アクセス制御リスト(ACL)に基づくセキュリティの管理も含まれます。このインタフェースには、問合せとDMLの両方の機能が備わっています。PL/SQLパッケージ(DBMS_XDB_REPOS、DBMS_XDBZおよびDBMS_XDB_VERSION)の組合せを使用すると、ドキュメントとフォルダの作成、削除および名前変更、フォルダ階層内でのファイルまたはフォルダの移動、ファイルまたはフォルダに対するアクセス権限の設定および変更、バージョニングの開始および管理を実行できます。

セキュリティ・モデル

XDBによって所有されているため、DBMS_XDB_REPOSパッケージはSYSまたはXDBで作成する必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。XDB構成で動作するサブプログラムは、現在のユーザーがSYSまたはXDBである場合、または現在のユーザーがXDBADMINロールまたはDBAロールを持つ場合にのみ成功します。

定数

DBMS_XDB_REPOSパッケージでは、表185-1「DBMS_XDB_REPOSの定数」に示す定数が使用されます。

表185-1 DBMS_XDB_REPOSの定数

定数

タイプ

値

説明

DELETE_RESOURCE

NUMBER

1

リソースを削除します。リソースに子がある場合失敗します。

DELETE_RECURSIVE

NUMBER

2

リソースと子がある場合それを削除します。

DELETE_FORCE

NUMBER

3

含まれているオブジェクトが無効な場合でも、リソースを削除します。

DELETE_RECURSIVE_FORCE

NUMBER

4

含まれているオブジェクトが無効な場合でも、リソースと子がある場合にそれを削除します。

DELETE_RES_METADATA_CASCADE

NUMBER

1

メタデータの行を削除します。

DELETE_RES_METADATA_NOCASCADE

NUMBER

2

行を削除しません。

DEFAULT_LOCK_TIMEOUT

PLS_INTEGER

(60*60)

WebDAVロックのタイムアウト値(秒数)

LINK_TYPE_HARD

NUMBER

1

フォルダのリソースへの強いリンク

LINK_TYPE_WEAK

NUMBER

2

フォルダのリソースへの弱いリンク

LINK_TYPE_SYMBOLIC

NUMBER

3

フォルダのリソースへのシンボリック・リンク

DBMS_XDB_REPOSサブプログラムの要約

表185-2 DBMS_XDB_REPOSパッケージのサブプログラム

サブプログラム

説明

ACLCHECKPRIVILEGESファンクション

指定のACLドキュメントで指定されている現行ユーザーに付与されたアクセス権限をチェックします。このアクセス権限は、所有者が'owner'パラメータで指定されているリソースに対するものです。

APPENDRESOURCEMETADATAプロシージャ

ユーザー定義のメタデータをXMLTYPEへのREFまたはXMLTYPEとして使用し、目的のリソースに追加します。

CHANGEOWNERプロシージャ

リソースの所有者を指定した所有者に変更します。

CHANGEPRIVILEGESファンクション

指定したACEを、指定したリソースのACLに追加します。

CHECKPRIVILEGESファンクション

指定したリソースに対して現行ユーザーに付与されているアクセス権限をチェックします。

CREATEFOLDERファンクション

階層内に新規フォルダ・リソースを作成します。

CREATEOIDPATHファンクション

オブジェクトIDに基づいたリソースの仮想パスを作成します。

CREATERESOURCEファンクション

新規リソースを作成します。

DELETERESOURCEプロシージャ

階層からリソースを削除します。

DELETERESOURCEMETADATAプロシージャ

リソースからメタデータを削除します(スキーマ・ベースまたは非スキーマ・ベースのメタデータに使用できます)。

EXISTSRESOURCEファンクション

リソースの絶対パスに基づいて、リソースが階層であるかどうかを判別します。

GETACLDOCUMENTファンクション

パス名を指定して、リソースを保護するACLドキュメントを取得します。

GETCONTENTBLOBファンクション

BLOBとして戻されたリソースの内容を取り出します。

GETCONTENTCLOBファンクション

CLOBとして戻されたリソースの内容を取り出します。

GETCONTENTVARCHAR2ファンクション

文字列として戻されたリソースの内容を取り出します。

GETCONTENTXMLREFファンクション

XMLTYPEへのREFとして戻されたリソースの内容を取り出します。

GETCONTENTXMLTYPEファンクション

XMLTYPEとして戻されたリソースの内容を取り出します。

GETLOCKTOKENプロシージャ

リソースへのパスを指定して、現行ユーザーのリソースのロック・トークンを戻します。

GETPRIVILEGESファンクション

指定したリソース上の現在のユーザーに付与された権限をすべて取得します。

GETRESOIDファンクション

リソースの絶対パスからオブジェクトIDを戻します。

GETXDB_TABLESPACEファンクション

XDB(ユーザー)の現行の表領域を戻します。

HASBLOBCONTENTファンクション

リソースにBLOBコンテンツがある場合はTRUEを戻します。

HASCHARCONTENTファンクション

リソースに文字コンテンツがある場合はTRUEを戻します。

HASXMLCONTENTファンクション

リソースにXMLコンテンツがある場合はTRUEを戻します。

HASXMLREFERENCEファンクション

リソースにXMLコンテンツへのREFがある場合は、TRUEを戻します。

ISFOLDERファンクション

リソースがフォルダまたはコンテナの場合は、TRUEを戻します。

LINKプロシージャ

既存のリソースへのリンクを作成します。

LOCKRESOURCEファンクション

リソースへのパスを指定して、リソースに対するWebDAVスタイルのロックを取得します。

PROCESSLINKSプロシージャ

指定したリソース内のドキュメント・リンクを処理します。

PURGERESOURCEMETADATAプロシージャ

リソースからすべてのユーザー・メタデータを削除します。

RENAMERESOURCEプロシージャ

XDBリソースの名前を変更します。

SETACLプロシージャ

指定したリソースにACLを設定します。

SPLITPATHプロシージャ

パスを親のパスと子のパスに分割します。

TOUCHRESOURCEプロシージャ

リソースの変更時刻を現在の時刻に変更します。

UNLOCKRESOURCEファンクション

ロック・トークンおよびリソース・パスを指定して、リソースのロックを解除します。

UPDATERESOURCEMETADATAプロシージャ

リソースのメタデータを更新します。

ACLCHECKPRIVILEGESファンクション

このファンクションは、リソースのOWNERによる指定したACLドキュメントによって、現在のユーザーに付与されたアクセス権限をチェックします。すべての権限が付与されている場合は、正の整数を戻します。

構文

DBMS_XDB_REPOS.ACLCHECKPRIVILEGES(
acl_path  IN  VARCHAR2,
owner     IN  VARCHAR2,
privs     IN  xmltype)
RETURN PLS_INTEGER;

パラメータ

表185-3 ACLCHECKPRIVILEGESファンクションのパラメータ

パラメータ

説明

acl_path

ACLドキュメントの階層内の絶対パス。

owner

リソースの所有者名。疑似ユーザー「DAV:owner」は、ACL権限の解決時にこのユーザーに置き換えられます。

privs

privilege要素のXMLTypeインスタンスで、要求された一連のアクセス権限を指定します。CHECKPRIVILEGESファンクションを参照してください。

APPENDRESOURCEMETADATAプロシージャ

このプロシージャは、ユーザー定義のメタデータをXMLTYPEへのREFまたはXMLTYPEとして使用し、目的のリソースに追加します。

構文

DBMS_XDB_REPOS.APPENDRESOURCEMETADATA (
abspath   IN  VARCHAR2,
metadata  IN  XMLTYPE);

DBMS_XDB_REPOS.APPENDRESOURCEMETADATA (
abspath   IN  VARCHAR2,
metadata  IN  REF SYS.XMLTYPE);

パラメータ

表185-4 APPENDRESOURCEMETADATAプロシージャ

パラメータ

説明

abspath

リソースの絶対パス。

metadata

メタデータには、スキーマ・ベースまたは非スキーマ・ベースのメタデータを使用できます。スキーマ・ベースのメタデータは、独自の表に格納されます。

使用上の注意

- REFが渡された場合、プロシージャは、REFをリソースに、メタデータは別の表に格納します。この場合は、メタデータ表のRESID列に移入する必要があります。渡されるREFは一意である必要があることに注意してください。つまり、リソース・メタデータに同じ値を持つREFが存在していると、プロパティの一意性に違反するため、同じにしないでください。ユーザーが、すでに存在するREFを追加しようとすると、エラーが発生します。

- XMLTYPEが渡された場合、データを解析してスキーマ・ベースかどうかを判断し、その結果に応じてデータを格納します。

CHANGEOWNERプロシージャ

このプロシージャは、リソースの所有者を指定した所有者に変更します。

構文

DBMS_XDB_REPOS.CHANGEOWNER(
abspath    IN   VARCHAR2,
owner      IN   VARCHAR2,
recurse    IN   BOOLEAN := FALSE);

パラメータ

表185-5 CHANGEOWNERプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

owner

リソースの新しい所有者。

recurse

TRUEの場合は、フォルダ・ツリー内のすべてのリソースの所有者を再帰的に変更します。

CHANGEPRIVILEGESファンクション

このファンクションは、指定したACEを指定したリソースのACLに追加します。

構文

DBMS_XDB_REPOS.CHANGEPRIVILEGES(
res_path   IN    VARCHAR2,
ace        IN    xmltype)
RETURN PLS_INTEGER;

パラメータ

表185-6 CHANGEPRIVILEGESファンクションのパラメータ

パラメータ

説明

res_path

権限を変更する必要があるリソースのパス名。

ace

<ace>要素のXMLTypeインスタンス。この要素は、<principal>、<grant>操作および権限リストを指定します。

戻り値

ACLが正常に変更された場合は、正の整数。

使用上の注意

同じprincipalおよび同じ操作(grant/deny)を持つACEがACLに存在しない場合、新規のACEがACLの最後に追加されます。

CHECKPRIVILEGESファンクション

このファンクションは、指定したリソースに対して現行ユーザーに付与されているアクセス権限をチェックします。

構文

DBMS_XDB_REPOS.CHECKPRIVILEGES(
res_path   IN  VARCHAR2,
privs      IN  xmltype)
RETURN PLS_INTEGER;

パラメータ

表185-7 CHECKPRIVILEGESファンクションのパラメータ

パラメータ

説明

res_path

リソースの階層内の絶対パス。

privs

privilege要素のXMLTypeインスタンス。要求された一連のアクセス権限を指定します。

戻り値

要求された権限がすべて付与されている場合は、正の整数。

CREATEFOLDERファンクション

このファンクションは階層内に新規フォルダ・リソースを作成します。

構文

DBMS_XDB_REPOS.CREATEFOLDER(
path   IN  VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-8 CREATEFOLDERファンクションのパラメータ

パラメータ

説明

path

新規フォルダのパス名。

戻り値

操作が成功した場合はTRUE。そうでない場合はFALSE。

使用上の注意

指定したパス名の親フォルダは、階層内にすでに存在している必要があります。たとえば、pathパラメータに'/folder1/folder2'を指定する場合は、'/folder1'がすでに存在している必要があります。

CREATEOIDPATHファンクション

このファンクションは、オブジェクトIDに基づいたリソースの仮想パスを作成します。

構文

DBMS_XDB_REPOS.CREATEOIDPATH(
oid    IN   RAW)
RETURN VARCHAR2;

パラメータ

表185-9 CREATEOIDPATHファンクションのパラメータ

パラメータ

説明

oid

リソースのオブジェクトID。

CREATERESOURCEファンクション

このファンクションは新しいリソースを作成します。オーバーロード・オプションの記述は各バージョンの構文の前に配置します。

構文

指定した文字列を内容として使用し、新規リソースを作成します。

DBMS_XDB_REPOS.CREATERESOURCE(
abspath        IN  VARCHAR2,
data           IN  VARCHAR2)
RETURN BOOLEAN;

指定したXMLTypeデータを内容として使用し、新規リソースを作成します。

DBMS_XDB_REPOS.CREATERESOURCE(
abspath        IN  VARCHAR2,
data           IN  SYS.XMLTYPE)
RETURN BOOLEAN;

既存のXMLType行にREFを指定し、その行を指す内容を持つリソースを作成します。この行は、別のリソース内に事前に存在させることはできません。

DBMS_XDB_REPOS.CREATERESOURCE(
abspath        IN  VARCHAR2,
datarow        IN  REF SYS.XMLTYPE)
RETURN BOOLEAN;

内容として指定したBLOBを使用して、リソースを作成し、ソースBLOBのキャラクタ・セットを指定します。

DBMS_XDB_REPOS.CREATERESOURCE(
abspath        IN  VARCHAR2,
data           IN  BLOB,
csid           IN  NUMBER :=0)
RETURN BOOLEAN;

内容として指定したBFILEを使用して、リソースを作成し、ソースBFILEのキャラクタ・セットを指定します。

DBMS_XDB_REPOS.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  BFILE,
csid           IN  NUMBER :=0)
RETURN BOOLEAN;

指定したCLOBを内容として使用し、リソースを作成します。

DBMS_XDB_REPOS.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  CLOB)
RETURN BOOLEAN;

文字列を指定すると、その文字列を内容として持つ新規リソースを階層に挿入します。

DBMS_XDB_REPOS.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  VARCHAR2,
schemaurl      IN  VARCHAR2 := NULL,
elem           IN  VARCHAR2 := NULL)
RETURN BOOLEAN;

XMLTYPEおよびスキーマURLを指定すると、XMLTYPEを内容として持つ新規リソースを階層に挿入します。

DBMS_XDB_REPOS.CREATERESOURCE (
abspath        IN  VARCHAR2,
data           IN  SYS.XMLTYPE,
schemaurl      IN  VARCHAR2 := NULL,
elem           IN  VARCHAR2 := NULL)
RETURN BOOLEAN;

パラメータ

表185-10 CREATERESOURCEファンクションのパラメータ

パラメータ

説明

abspath

作成するリソースの絶対パス。パス名の親フォルダは、階層内にすでに存在している必要があります。たとえば、/foo/bar.txtと指定する場合は、フォルダ/fooがすでに存在している必要があります。

data

新規リソースの内容が含まれている文字列バッファ。データは解析され、スキーマに基づいたXML文書が含まれているかどうかがチェックされ、含まれている場合、内容はスキーマのデフォルト表にスキーマに基づいたものとして格納されます。含まれていない場合は、バイナリ・データとして保存されます。

datarow

内容として使用するXMLType行へのREF。

csid

ドキュメントのキャラクタ・セットID。有効なOracle IDである必要があり、無効な場合、エラーが戻されます。

CSIDを指定しない場合またはCSIDに0(ゼロ)を指定した場合、ドキュメントのキャラクタ・セットIDは次のように判断されます。

- abspath拡張子から、リソースのMIMEタイプを判断します。

- MIMEタイプが*/xmlの場合、エンコードはhttp://www.w3.org/TR/2000/REC-xml-20001006のW3C XML 1.0 ReferenceのAppendix Fに基づいて検出されます。

- それ以外の場合、デフォルトでデータベースのキャラクタ・セットに設定されます。

schemaurl

XMLデータの場合、データが準拠するスキーマURL(デフォルトはNULL)。

elem

要素名(デフォルトはNULL)。

戻り値

操作が成功した場合はTRUE。そうでない場合はFALSE。

DELETERESOURCEプロシージャ

このプロシージャは、階層からリソースを削除します。

構文

DBMS_XDB_REPOS.DELETERESOURCE(
path          IN      VARCHAR2,
delete_option IN      PLS_INTEGER);

パラメータ

表185-11 DELETERESOURCEプロシージャのパラメータ

パラメータ

説明

path

削除するリソースのパス名。

delete_option

リソースの削除方法を制御する次のオプションです。

- DELETE_RESOURCE

- DELETE_RECURSIVE

- DELETE_FORCE

- DELETE_RECURSIVE_FORCE

DELETERESOURCEMETADATAプロシージャ

このプロシージャは、絶対パスでリソースを使用し、REFで識別されるスキーマ・ベースのメタデータ、またはネームスペースと名前の組合せで識別されるメタデータ(スキーマ・ベースまたは非スキーマ・ベースのメタデータ)を削除します。また、メタデータの削除方法を指定する追加のパラメータ(オプション)も使用できます。このパラメータは、削除する必要のあるスキーマ・ベースのリソース・メタデータにのみ関連しています。非スキーマ・ベースのメタデータの場合、このパラメータは無視されます。

構文

次の構文は、スキーマ・ベースのメタデータにのみ使用できます。

DBMS_XDB_REPOS.DELETERESOURCEMETADATA (
abspath        IN  VARCHAR2,
metadata       IN  REF SYS.XMLTYPE,
delete_option  IN  pls_integer := DBMS_XDB_REPOS.DELETE_RESOURCE_METADATA_CASCADE);

次の構文は、スキーマ・ベースまたは非スキーマ・ベースのメタデータに使用できます。

DBMS_XDB_REPOS.DELETERESOURCEMETADATA (
abspath        IN VARCHAR2,
metadatans     IN VARCHAR2,
metadataname   IN VARCHAR2,
delete_option  IN pls_integer := DBMS_XDB_REPOS.DELETE_RESOURCE_METADATA_CASCADE);

パラメータ

表185-12 DELETERESOURCEMETADATAプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

metadata

削除する(スキーマ・ベースの)メタデータの一部へのREF。

mettadatans

削除するメタデータの断片のネームスペース。

mettadataname

削除するメタデータの断片のローカル名。

delete_option

スキーマ・ベースのメタデータにのみ適用できます。このパラメータは次のいずれかになります。

- DELETE_RES_METADATA_CASCADE: メタデータ表内の対応する行を削除します。

- DELETE_RES_METADATA_NOCASCADE: メタデータ表内の行を削除しません。

EXISTSRESOURCEファンクション

このファンクションは、リソースが階層内にあるかどうかを示します。絶対パスを表す文字列によってリソースを照合します。

構文

DBMS_XDB_REPOS.EXISTSRESOURCE(
abspath    IN    VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-13 EXISTSRESOURCEファンクションのパラメータ

パラメータ

説明

abspath

ACLドキュメントが必要なリソースのパス名。

戻り値

リソースが見つかった場合はTRUE。

GETACLDOCUMENTファンクション

このファンクションは、パス名を指定して、リソースを保護するACLドキュメントを取得します。

構文

DBMS_XDB_REPOS.GETACLDOCUMENT(
abspath  IN  VARCHAR2)
RETURN sys.xmltype;

パラメータ

表185-14 GETACLDOCUMENTファンクションのパラメータ

パラメータ

説明

abspath

ACLドキュメントが必要なリソースのパス名。

戻り値

ACLドキュメントのXMLType。

GETCONTENTBLOBファンクション

このファンクションは、BLOBとして戻されたリソースの内容を取り出します。

構文

DBMS_XDB_REPOS.GETCONTENTBLOB(
abspath    IN     VARCHAR2,
csid       OUT    PLS_INTEGER,
locksrc    IN     BOOLEAN := FALSE)
RETURN BLOB;

パラメータ

表185-15 GETCONTENTBLOBファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

csid

TRUEの場合、ソースLOBをロックして戻します。FALSEの場合、一時LOBコピーを戻します。

locksrc

BLOBとしてのリソースの内容。

戻り値

BLOBとしてのリソースの内容。

GETCONTENTCLOBファンクション

このファンクションは、CLOBとして戻されたリソースの内容を取得します。

構文

DBMS_XDB_REPOS.GETCONTENTCLOB(
abspath    IN     VARCHAR2,
RETURN CLOB;

パラメータ

表185-16 GETCONTENTCLOBファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

CLOBとしてのリソースの内容。

GETCONTENTVARCHAR2ファンクション

このファンクションは、文字列として戻されたリソースの内容を取得します。

構文

DBMS_XDB_REPOS.GETCONTENTVARCHAR2(
abspath    IN     VARCHAR2,
RETURN BLOB;

パラメータ

表185-17 GETCONTENTVARCHAR2ファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

文字列としてのリソースの内容。

GETCONTENTXMLREFファンクション

このファンクションは、XMLTYPEへのREFとして戻されたリソースの内容を取り出します。

構文

DBMS_XDB_REPOS.GETCONTENTXMLREF(
abspath    IN     VARCHAR2,
RETURN SYS.XMLTYPE;

パラメータ

表185-18 GETCONTENTXMLREFファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

XMLTYPEへのREFとしてのリソースの内容。

GETCONTENTXMLTYPEファンクション

このファンクションは、XMLTYPEとして戻されたリソースの内容を取り出します。

構文

DBMS_XDB_REPOS.GETCONTENTXMLTYPE(
abspath    IN     VARCHAR2,
RETURN SYS.XMLTYPE;

パラメータ

表185-19 GETCONTENTXMLTYPEファンクションのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

戻り値

XMLTYPEとしてのリソースの内容。

GETLOCKTOKENプロシージャ

リソースへのパスを指定して、現行ユーザーのリソースのロック・トークンを戻します。

構文

DBMS_XDB_REPOS.GETLOCKTOKEN(
path         IN      VARCHAR2,
locktoken    OUT     VARCHAR2);

パラメータ

表185-20 GETLOCKTOKENプロシージャのパラメータ

パラメータ

説明

path

リソースへのパス名。

locktoken

ログインしたユーザーのリソースに対するロック・トークン。

使用上の注意

ユーザーには、リソースに対するREADPROPERTIES権限が必要です。

GETPRIVILEGESファンクション

このファンクションは、指定したリソースに対して現行ユーザーに付与されている権限をすべて取得します。

構文

DBMS_XDB_REPOS.GETPRIVILEGES(
res_path    IN     VARCHAR2)
RETURN sys.xmltype;

パラメータ

表185-21 GETPRIVILEGESファンクションのパラメータ

パラメータ

説明

res_path

リソースの階層内の絶対パス。

戻り値

<privilege>要素のXMLTypeインスタンス。これには、このリソースに対して現行のユーザーに付与されたすべてのリーフ権限のリストが含まれています。

GETRESOIDファンクション

リソースの絶対パスからオブジェクトIDを戻します。

構文

DBMS_XDB_REPOS.GETRESOID(
abspath IN VARCHAR2)
RETURN RAW;

パラメータ

表185-22 GETRESOIDファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースが存在しない場合はNULL。

GETXDB_TABLESPACEファンクション

このファンクションは、XDB(ユーザー)の現行の表領域を戻します。

構文

DBMS_XDB_REPOS.GETXDB_TABLESPACE
RETURN VARCHAR2;

HASBLOBCONTENTファンクション

このファンクションは、リソースにBLOBコンテンツがある場合はTRUEを戻します。

構文

DBMS_XDB_REPOS.HASBLOBCONTENT
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-23 HASBLOBCONTENTファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースにBOBコンテンツがある場合はTRUE。

HASCHARCONTENTファンクション

このファンクションは、リソースに文字コンテンツがある場合はTRUEを戻します。

構文

DBMS_XDB_REPOS.HASCHARCONTENT
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-24 HASCHARCONTENTファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースに文字コンテンツがある場合はTRUE。

HASXMLCONTENTファンクション

このファンクションは、リソースにXMLコンテンツがある場合はTRUEを戻します。

構文

DBMS_XDB_REPOS.HASXMLCONTENT
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-25 HASXMLCONTENTファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースにXMLコンテンツがある場合はTRUE。

HASXMLREFERENCEファンクション

このファンクションは、リソースにXMLコンテンツへのREFがある場合はTRUEを戻します。

構文

DBMS_XDB_REPOS.HASXMLREFERENCE
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-26 HASXMLREFERENCEファンクションのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースにXMLコンテンツへのREFがある場合はTRUE。

ISFOLDERファンクション

このファンクションは、リソースがフォルダまたはコンテナの場合はTRUEを戻します。

構文

DBMS_XDB_REPOS.ISFOLDER
abspath    IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-27 ISFOLDERファンクションのパラメータ

のパラメータについて説明しています。" title="ISFOLDERファンクションのパラメータ" width="100%">

パラメータ

説明

abspath_path

リソースの絶対パス。

戻り値

リソースがフォルダまたはコンテナの場合はTRUE。

LINKプロシージャ

このプロシージャは、指定したフォルダから指定したリソースに作成します。

構文

DBMS_XDB_REPOS.LINK(
srcpath      IN   VARCHAR2,
linkfolder   IN   VARCHAR2,
linkname     IN   VARCHAR2);

DBMS_XDB_REPOS.LINK(
srcpath      IN   VARCHAR2,
linkfolder   IN   VARCHAR2,
linkname     IN   VARCHAR2,
linktype     IN   PLS_INTEGER := DBMS_XDB_REPOS.LINK_TYPE_HARD);

パラメータ

表185-28 LINKプロシージャのパラメータ

パラメータ

説明

srcpath

リンクを作成するリソースのパス名。

linkfolder

新規リンクを格納するフォルダ。

linkname

新規リンクの名前。

linktype

作成するリンクのタイプ。

- DBMS_XDB.LINK_TYPE_HARD(デフォルト)

- DBMS_XDB.LINK_TYPE_WEAK

- DBMS_XDB.LINK_TYPE_SYMBOLIC

LOCKRESOURCEファンクション

リソースへのパスを指定して、リソースに対するWebDAVスタイルのロックを取得します。

構文

DBMS_XDB_REPOS.LOCKRESOURCE(
path      IN  VARCHAR2,
depthzero IN  BOOLEAN,
shared    IN  boolean)
RETURN BOOLEAN;

パラメータ

表185-29 LOCKRESOURCEファンクションのパラメータ

パラメータ

説明

path

ロックするリソースのパス名。

depthzero

現在サポートされていません。

shared

TRUEを設定すると、共有書込みロックを取得します。

戻り値

成功した場合はTRUE。

使用上の注意

ユーザーには、リソースに対するUPDATE権限が必要です。

PROCESSLINKSプロシージャ

このプロシージャは、指定したリソース内のドキュメント・リンクを処理します。

構文

DBMS_XDB_REPOS.PURGERESOURCEMETADATA(
abspath  IN  VARCHAR2,
recurse  IN  BOOLEAN := FALSE);

パラメータ

表185-30 PROCESSLINKSプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。パスがフォルダの場合は、recurseフラグを使用します。

recurse

abspathがフォルダを指定する場合にのみ使用します。TRUEの場合、指定したリソースをルートとするフォルダ階層内のすべてのリソースのリンクを処理します。FALSEの場合、このフォルダ内のみのすべてのドキュメントのリンクを処理します。

PURGERESOURCEMETADATAプロシージャ

このプロシージャは、リソースからすべてのユーザー・メタデータを削除します。スキーマ・ベースのメタデータはカスケード・モードで削除され、対応するメタデータ表から行が削除されます。

構文

DBMS_XDB_REPOS.PURGERESOURCEMETADATA(
abspath  IN  VARCHAR2);

パラメータ

表185-31 PURGERESOURCEMETADATAプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

RENAMERESOURCEプロシージャ

このプロシージャは、XDBリソースの名前を変更します。

構文

DBMS_XDB_REPOS.RENAMERESOURCE(
srcpath    IN  VARCHAR2,
destfolder IN  CARCHAR2,
newname    IN  VARCHAR2);

パラメータ

表185-32 RENAMERESOURCEプロシージャのパラメータ

パラメータ

説明

srcpath

ソース・リソース宛先フォルダの階層内の絶対パス。

destfolder

宛先フォルダの階層内の絶対パス。

newname

宛先フォルダ内の子の名前。

SETACLプロシージャ

このプロシージャは、指定のリソースに対するACLを、パスで指定したACLに設定します。

構文

DBMS_XDB_REPOS.SETACL(
res_path   IN  VARCHAR2,
acl_path   IN  VARCHAR2);

パラメータ

表185-33 SETACLプロシージャのパラメータ

パラメータ

説明

res_path

リソースの階層内の絶対パス。

acl_path

ACLの階層内の絶対パス。

使用上の注意

ユーザーには、リソースに対する<write-acl>権限が必要です。

SPLITPATHプロシージャ

このプロシージャは、パスを親のパスと子のパスに分割します。

構文

DBMS_XDB_REPOS.SPLITPATH(
abspath     IN  VARCHAR2,
parentpath  OUT VARCHAR2,
childpath    OUT VARCHAR2);

パラメータ

表185-34 SPLITPATHプロシージャのパラメータ

パラメータ

説明

abspath

分割する絶対パス。

parentpath

親のパス。

childpath

子のパス。

TOUCHRESOURCEプロシージャ

このプロシージャは、リソースの変更時間を現在の時間に変更します。

構文

DBMS_XDB_REPOS.TOUCHRESOURCE
abspath    IN     VARCHAR2);

パラメータ

表185-35 TOUCHRESOURCEプロシージャのパラメータ

パラメータ

説明

abspath_path

リソースの絶対パス。

UNLOCKRESOURCEファンクション

このファンクションは、ロック・トークンとリソースへのパスを指定して、リソースのロックを解除します。

構文

DBMS_XDB_REPOS.UNLOCKRESOURCE(
path     IN  VARCHAR2,
deltoken IN  VARCHAR2)
RETURN BOOLEAN;

パラメータ

表185-36 UNLOCKRESOURCEファンクションのパラメータ

パラメータ

説明

path

リソースへのパス名。

deltoken

削除するロック・トークン。

戻り値

操作が成功した場合はTRUE。

使用上の注意

ユーザーには、リソースに対するUPDATE権限が必要です。

UPDATERESOURCEMETADATAプロシージャ

このプロシージャは、リソースのメタデータを更新します。このプロシージャは、絶対パスで識別されるリソースおよび、そのREFで識別されて置き換えられる、そのリソース内のメタデータを使用します。メタデータの一部をユーザー定義のメタデータ(XMLTYPEへのREFまたはXMLTYPEのいずれかの形式)に置き換えます。

構文

次の構文は、スキーマ・ベースのメタデータの更新にのみ使用できます。新しいメタデータは、スキーマ・ベースである必要があります。

DBMS_XDB_REPOS.UPDATERESOURCEMETADATA(
abspath  IN VARCHAR2,
oldmetadata    IN   REF SYS.XMLTYPE,
newmetadata    IN   REF SYS.XMLTYPE)

次の構文は、スキーマ・ベースのメタデータの更新にのみ使用できます。新しいメタデータは、スキーマ・ベースまたは非スキーマ・ベースである必要があります。

DBMS_XDB_REPOS.UPDATERESOURCEMETADATA(
abspath        IN   VARCHAR2,
oldmetadata    IN   REF SYS.XMLTYPE,
newmetadata    IN   XMLTYPE);

次の構文は、スキーマ・ベースおよび非スキーマ・ベースの両方のメタデータに使用できます。

DBMS_XDB_REPOS.UPDATERESOURCEMETADATA(
abspath        IN   VARCHAR2,
oldns          IN   VARCHAR2,
oldname IN VARCHAR,
newmetadata IN XMLTYPE);

次の構文は、スキーマ・ベースおよび非スキーマ・ベースの両方のメタデータに使用できます。新しいメタデータは、スキーマ・ベースである必要があります。

DBMS_XDB_REPOS.UPDATERESOURCEMETADATA(
abspath       IN   VARCHAR2,
oldns         IN   VARCHAR2,
oldname       IN   VARCHAR,
newmetadata   IN   REF SYS.XMLTYPE);

パラメータ

表185-37 UPDATERESOURCEMETADATAプロシージャのパラメータ

パラメータ

説明

abspath

リソースの絶対パス。

oldmetadata

古いメタデータへのREF。

newmetadata

新しい置換メタデータへのREF(オーバーロードに応じてスキーマ・ベースまたは非スキーマ・ベースのメタデータを使用できます)。

oldns

古いメタデータを識別するネームスペース。

oldname

古いメタデータを識別するローカル名。

使用上の注意

REFの場合、このプロシージャは、REFをリソースに、メタデータは別の表に格納します。REFの一意性が維持されます。XMLTYPEが渡された場合、データを解析してスキーマ・ベースかどうかを判断し、その結果に応じてデータを格納します。

186 DBMS_XDB_VERSION

Oracle XML DBバージョニング・インタフェースは、DBMS_XBD_VERSIONパッケージに含まれています。DBMS_XDB_VERSIONのファンクションとプロシージャは、バージョン履歴内のVCRの作成とバージョンの管理に役立ちます。

この章では、次の項目について説明します。

- DBMS_XDB_VERSIONの使用方法

- セキュリティ・モデル

- DBMS_XDB_VERSIONサブプログラムの要約

関連項目:
『Oracle XML DB開発者ガイド』

DBMS_XDB_VERSIONの使用方法

- セキュリティ・モデル

セキュリティ・モデル

DBMS_XDB_VERSIONパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XDB_VERSIONサブプログラムの要約

表186-1 DBMS_XDB_VERSIONパッケージのサブプログラム

メソッド

説明

CHECKINファンクション

チェックアウトされたVCRをチェックインし、新規作成されたバージョンのリソースIDを戻します。

CHECKOUTプロシージャ

VCRを更新または削除する前にチェックアウトします。

GETCONTENTSBLOBBYRESIDファンクション

内容をBLOBとして取得します。

GETCONTENTSCLOBBYRESIDファンクション

内容をCLOBとして取得します。

GETCONTENTSXMLBYRESIDファンクション

内容をXMLTypeとして取得します。

GETPREDECESSORSファンクション

先行リソースのリストをパス名を指定することによって取得します。

GETPREDSBYRESIDファンクション

先行リソースのリストをリソースIDを指定することによって取得します。

GETRESOURCEBYRESIDファンクション

リソース・オブジェクトIDを指定して、リソースをXMLTypeとして取得します。

GETSUCCESSORSファンクション

後続リソースのリストをパス名を指定することによって取得します。

GETSUCCSBYRESIDファンクション

後続リソースのリストをリソースIDを指定することによって取得します。

MAKEVERSIONEDファンクション

パス名を指定した標準リソースをバージョン管理されたリソースに変換します。

UNCHECKOUTファンクション

チェックアウトされたリソースをチェックインし、リソースがチェックアウトされる前にバージョンのリソースIDを戻します。

CHECKINファンクション

このファンクションは、チェックアウトされたVCRをチェックインし、新規作成されたバージョンのリソースIDを戻します。

構文

DBMS_XDB_VERSION.CHECKIN(
pathname VARCHAR2)
RETURN DBMS_XDB.resid_type;

パラメータ

表186-2 CHECKINファンクションのパラメータ

パラメータ

説明

pathname

チェックアウトされたリソースのパス名。

使用上の注意

これは、自動コミットのSQL操作ではありません。CHECKINファンクションには、CHECKOUTプロシージャ操作で渡したパス名と同じパス名を取る必要はありません。ただし、操作が正しく行われるには、CHECKINファンクションとCHECKOUTプロシージャのパス名が同じリソースのパス名であることが必要です。リソースの名前が変更されている場合、変更前の名前はすでに無効になっているか、現在は別のリソースにバインドされているため、CHECKINファンクションでは新規の名前を使用する必要があります。パス名が存在しない場合は、例外が発生します。パス名が変更されている場合、リソースのCHECKINファンクションでは新規のパス名を使用する必要があります。

CHECKOUTプロシージャ

このプロシージャは、VCRを更新または削除する前にチェックアウトします。

構文

DBMS_XDB_VERSION.Checkout(
pathname    VARCHAR2);

パラメータ

表186-3 CHECKOUTプロシージャのパラメータ

パラメータ

説明

pathname

チェックアウトするVCRのパス名。

使用上の注意

これは、自動コミットのSQL操作ではありません。同じ作業領域の2名のユーザーが、CHECKOUTプロシージャを使用して同時に同じVCRをチェックアウトすることはできません。同時にチェックアウトすると、いずれかのユーザーはロールバックする必要があります。このため、リソースの更新前にCHECKOUTプロシージャ操作をコミットし、トランザクションがロールバックされた場合の更新内容の消失を回避することをお薦めします。指定したリソースがVCRでない場合、VCRがすでにチェックアウトされている場合、またはリソースが存在しない場合は、例外が発生します。

GETCONTENTSBLOBBYRESIDファンクション

このファンクションは、内容をBLOBとして取得します。

構文

DBMS_XDB_VERSION.GETCONTENTSBLOBYRESID(
resid      DBMS_XDB.resid_type)
RETURN BLOB;

パラメータ

表186-4 GETCONTENTSBLOBYRESIDファンクションのパラメータ

パラメータ

説明

resid

リソースID。

GETCONTENTSCLOBBYRESIDファンクション

このファンクションは、内容をCLOBとして取得します。

構文

DBMS_XDB_VERSION.GETCONTENTSCLOBYRESID(
resid     DBMS_XDB.resid_type)
RETURN CLOB;

パラメータ

表186-5 GETCONTENTSCLOBYRESIDファンクションのパラメータ

パラメータ

説明

resid

リソースID。

GETCONTENTSXMLBYRESIDファンクション

このファンクションは、内容をXMLTypeとして取得します。

構文

DBMS_XDB_VERSION.GETCONTENTSXMLBYRESID(
resid      DBMS_XDB.resid_type)
RETURN XMLType;

パラメータ

表186-6 GETCONTENTSXMLBYRESIDファンクションのパラメータ

パラメータ

説明

resid

リソースID。

戻り値

内容が有効なXMLでない場合、NULLを戻します。

GETPREDECESSORSファンクション

このファンクションは、パス名を指定することによって先行リソースのリストを取得します。

構文

DBMS_XDB_VERSION.GETPREDECESSORS(
pathname       VARCHAR2)
RETURN resid_list_type;

パラメータ

表186-7 GETPREDECESSORSファンクションのパラメータ

パラメータ

説明

pathname

リソースのパス名。

戻り値

pathnameが無効の場合は、例外が発生します。

GETPREDSBYRESIDファンクション

このファンクションは、リソースIDを指定することによって先行リソースのリストを取得します。

構文

DBMS_XDB_VERSION.GETPREDSBYRESID(
resid      resid_type)
RETURN resid_list_type;

パラメータ

表186-8 GETPREDSBYRESIDファンクションのパラメータ

パラメータ

説明

resid

リソースID。

使用上の注意

先行リソースの取得は、pathname別よりRESID別の方が効率的です。

例外

RESIDが無効の場合は、例外が発生します。

GETRESOURCEBYRESIDファンクション

このファンクションは、リソース・オブジェクトIDを指定して、リソースをXMLTypeとして取得します。システムではバージョン用のパス名を作成しないため、このファンクションは、リソースIDを使用してリソースを取得するときに役立ちます。

構文

DBMS_XDB_VERSION.GETRESOURCEBYRESID(
resid      resid_type)
RETURN XMLType;

パラメータ

表186-9 GETRESOURCEBYRESIDファンクションのパラメータ

パラメータ

説明

resid

リソースID。

GETSUCCESSORSファンクション

バージョン・リソースまたはVCRを指定して、後続リソースのリストをパス名別に取得します。

構文

DBMS_XDB_VERSION.GETSUCCESSORS(
pathname VARCHAR2)
RETURN resid_list_type;

パラメータ

表186-10 GETSUCCESSORSファンクションのパラメータ

パラメータ

説明

pathname

リソースのパス名。

使用上の注意

後続リソースの取得は、pathname別よりRESID別の方が効率的です。

例外

pathnameが無効の場合は、例外が発生します。

GETSUCCSBYRESIDファンクション

このファンクションは、バージョン・リソースまたはVCRを指定して、後続リソースのリストをリソースID別に取得します。

構文

DBMS_XDB_VERSION.GETSUCCSBYRESID(
resid    resid_type)
RETURN resid_list_type;

パラメータ

表186-11 GETSUCCSBYRESIDファンクションのパラメータ

パラメータ

説明

resid

リソースID。

使用上の注意

後続リソースの取得は、pathname別よりRESID別の方が効率的です。

例外

pathnameが無効の場合は、例外が発生します。

MAKEVERSIONEDファンクション

このファンクションは、指定されたパス名の標準リソースをバージョン管理されたリソースに変換します。これによって、この新規リソースはバージョン管理の対象になります。他のすべてのパス名は、元のリソースを参照し続けます。

構文

DBMS_XDB_VERSION.MAKEVERSIONED(
pathname   VARCHAR2)
RETURN DBMS_XDB.resid_type;

パラメータ

表186-12 MAKEVERSIONEDファンクションのパラメータ

パラメータ

説明

pathname

バージョン管理の対象にするリソースのパス名。

戻り値

このファンクションは、VCRの最初のバージョン(ルート)のリソースIDを戻します。

使用上の注意

複数のパス名が同じリソースにバインドされている場合は、リソースのコピーが作成され、指定したパス名が、新たに作成されたコピーにバインドされます。

これは、自動コミットのSQL操作ではありません。リソースが存在しない場合は、例外が発生します。

- このコールはVCRに対して有効で、例外や警告は発生しません。

- このコールは、フォルダ、バージョン履歴、バージョン・リソースおよびACLに対しては無効です。

- スキーマに基づいたリソースはサポートされていません。

UNCHECKOUTファンクション

このファンクションは、チェックアウトされたリソースをチェックインし、リソースがチェックアウトされる前にバージョンのリソースIDを戻します。

構文

DBMS_XDB_VERSION.UNCHECKOUT(
pathname    VARCHAR2)
RETURN DBMS_XDB.resid_type;

パラメータ

表186-13 UNCHECKOUTファンクションのパラメータ

パラメータ

説明

pathname

チェックアウトされたリソースのパス名。

使用上の注意

これは、自動コミットのSQL操作ではありません。UNCHECKOUTファンクションでは、CHECKOUTプロシージャによって操作に渡したパス名と同じパス名を使用する必要はありません。ただし、操作が正しく行われるには、UNCHECKOUTファンクションとCHECKOUTプロシージャのパス名が同じリソースのパス名であることが必要です。リソースの名前が変更されている場合、変更前の名前はすでに無効になっているか、現在は別のリソースにバインドされているため、UNCHECKOUTファンクションでは新規の名前を使用する必要があります。パス名が変更されている場合、リソースのUNCHECKOUTファンクションでは新規のパス名を使用する必要があります。

例外

パス名が存在しない場合は、例外が発生します。

187 DBMS_XDBRESOURCE

DBMS_XDBRESOURCEパッケージは、リソースのメタデータと内容を操作するインタフェースを提供します。

関連項目:
DBMS_XDBRESOURCEの使用方法の例は、『Oracle XML DB開発者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_XDBRESOURCEの使用方法

- 概要

- セキュリティ・モデル

- DBMS_XDBRESOURCEサブプログラムの要約

DBMS_XDBRESOURCEの使用方法

- 概要

- セキュリティ・モデル

概要

DBMS_XDBRESOURCEパッケージでは、リソースのメタデータと内容を取得および設定するルーチンが提供されています。DBMS_XMLDOMパッケージに用意されているDOMトラバース機能を利用するには、DBMS_XDBRESOURCE.MAKEDOCUMENTルーチンを使用して、XDBResourceインスタンスをDOMDocumentタイプに変換します。

セキュリティ・モデル

DBMS_XDBRESOURCEパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XDBRESOURCEサブプログラムの要約

表187-1 DBMS_XDBRESOURCEパッケージのサブプログラム

サブプログラム

説明

FREERESOURCEプロシージャ

XDBResourceに使用されているすべてのメモリーを解放します。

GETACLファンクション

XDBResourceを指定すると、そのACLを文字列として戻します。

GETACLDOCFROMRESファンクション

指定したリソースのACLドキュメントをXMLTypeとして戻します。

GETAUTHORファンクション

XDBResourceを指定すると、その作成者を戻します。

GETCHARACTERSETファンクション

XDBResourceを指定すると、そのキャラクタ・セットを戻します。

GETCOMMENTファンクション

XDBResourceを指定すると、そのコメントを戻します。

GETCONTENTBLOBファンクション

リソースの内容をBLOBとして戻します。

GETCONTENTCLOBファンクション

リソースの内容をCLOBとして戻します。

GETCONTENTREFファンクション

リソースの内容をXMLTypeRefとして戻します。

GETCONTENTTYPEファンクション

XDBResourceを指定すると、そのコンテンツ・タイプを戻します。

GETCONTENTXMLファンクション

リソースの内容をXMLとして戻します。

GETCONTENTVARCHAR2ファンクション

リソースの内容を文字列として戻します。

GETCREATIONDATEファンクション

XDBResourceを指定すると、その作成日を戻します。

GETCREATORファンクション

XDBResourceを指定すると、その作成者を戻します。

GETCUSTOMMETADATAファンクション

メタデータにxpathと名前空間を指定すると、要求されたカスタム・メタデータを戻します。

GETDISPLAYNAMEファンクション

XDBResourceを指定すると、その表示名を戻します。

GETLANGUAGEファンクション

XDBResourceを指定すると、その言語を戻します。

GETLASTMODIFIERファンクション

XDBResourceを指定すると、その最終変更者を戻します。

GETMODIFICATIONDATEファンクション

XDBResourceを指定すると、その変更日を戻します。

GETOWNERファンクション

XDBResourceを指定すると、その所有者を戻します。

GETREFCOUNTファンクション

XDBResourceを指定すると、その参照数を戻します。

GETVERSIONIDファンクション

XDBResourceを指定すると、そのバージョンIDを戻します。

HASACLCHANGEDファンクション

特定のリソースのACLが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASAUTHORCHANGEDファンクション

特定のリソースのACLが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCHANGEDファンクション

特定のXPathで示される要素または属性が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCHARACTERSETCHANGEDファンクション

特定のリソースのキャラクタ・セットが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCOMMENTCHANGEDファンクション

特定のリソースのコメントが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCONTENTCHANGEDファンクション

特定のリソースの内容が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCONTENTTYPECHANGEDファンクション

特定のリソースのコンテンツ・タイプが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCREATIONDATECHANGEDファンクション

特定のリソースの作成日が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCREATORCHANGEDファンクション

特定のリソースの作成者が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASCUSTOMMETADATACHANGEDファンクション

このXPathのカスタム・メタデータが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASDISPLAYNAMECHANGEDファンクション

特定のリソースの表示名が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASLANGUAGECHANGEDファンクション

特定のリソースの言語が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASLASTMODIFIERCHANGEDファンクション

特定のリソースの最終変更者が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASMODIFICATIONDATECHANGEDファンクション

特定のリソースの変更日が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASOWNERCHANGEDファンクション

特定のリソースの所有者が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASREFCOUNTCHANGEDファンクション

特定のリソースの参照数が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

HASVERSIONIDCHANGEDファンクション

特定のリソースのバージョンIDが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

ISFOLDERファンクション

特定のリソースがフォルダの場合はTRUE、それ以外の場合はFALSEを戻します。

ISNULLファンクション

入力したリソースがNULLの場合はTRUE、それ以外の場合はFALSEを戻します。

MAKEDOCUMENTファンクション

XDBResourceをXMLDOMインタフェースを使用して処理できるDOMDocumentに変換します。

SAVEプロシージャ

リソースを任意の変更で更新します。

SETACLプロシージャ

特定のXDBResourceのACLを指定したパスに設定します。

SETAUTHORプロシージャ

特定のXDBResourceの作成者を指定した文字列に設定します。

SETCHARACTERSETプロシージャ

特定のXDBResourceのキャラクタ・セットを指定したキャラクタ・セットに設定します。

SETCOMMENTプロシージャ

特定のXDBResourceに対応するコメントを設定します。

SETCONTENTプロシージャ

特定のリソースの内容を特定のCLOBに置き換えます。

SETCONTENTTYPEプロシージャ

特定のXDBResourceのコンテンツ・タイプを設定します。

SETCUSTOMMETADATAプロシージャ

XPathと名前空間で指定したカスタム・メタデータを新規データに設定します。

SETDISPLAYNAMEプロシージャ

特定のXDBResourceの表示名を設定します。

SETLANGUAGEプロシージャ

特定のXDBResourceの言語を設定します。

SETOWNERプロシージャ

特定のXDBResourceの所有者を設定します。

FREERESOURCEプロシージャ

このプロシージャは、XDBResourceに使用されているすべてのメモリーを解放します。

構文

DBMS_XDBRESEROUCE.FREERESOURCE (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-2 FREERESOURCEプロシージャのパラメータ

パラメータ

説明

res

解放するXDBResource。

GETACLファンクション

XDBResourceを指定すると、このファンクションはそのACLを文字列として戻します。

構文

DBMS_XDBRESEROUCE.GETACL (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-3 GETACLファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETACLDOCFROMRESファンクション

このファンクションは、指定したリソースのACLドキュメントをXMLTypeとして戻します。

構文

DBMS_XDBRESEROUCE.GETACLDOCFROMRES (
res   IN    XDBResource)
RETURN SYS.XMLTYPE;

パラメータ

表187-4 GETACLファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETAUTHORファンクション

XDBResourceを指定すると、このファンクションはその作成者を戻します。

構文

DBMS_XDBRESEROUCE.GETAUTHOR (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-5 GETAUTHORファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCHARACTERSETファンクション

XDBResourceを指定すると、このファンクションはそのキャラクタ・セットを戻します。

構文

DBMS_XDBRESEROUCE.GETCHARACTERSET (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-6 GETCHARACTERSETファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCOMMENTファンクション

XDBResourceを指定すると、このファンクションはそのコメントを戻します。

構文

DBMS_XDBRESEROUCE.GETCOMMENT (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-7 GETCOMMENTファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCONTENTBLOBファンクション

このファンクションは、リソースの内容をBLOBとして戻します。

構文

DBMS_XDBRESEROUCE.GETCONTENTBLOB (
res    IN     XDBResource,
csid   OUT    PLS_INTEGER)
RETURN BLOB;

パラメータ

表187-8 GETCONTENTBLOBファンクションのパラメータ

パラメータ

説明

res

XDBResource。

csid

戻されたBLOBのキャラクタ・セットID。

GETCONTENTCLOBファンクション

このファンクションは、リソースの内容をCLOBとして戻します。

構文

DBMS_XDBRESEROUCE.GETCONTENTCLOB (
res   IN    XDBResource)
RETURN CLOB;

パラメータ

表187-9 GETCONTENTCLOBファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCONTENTREFファンクション

このファンクションは、リソースの内容をXMLTypeRefとして戻します。

構文

DBMS_XDBRESEROUCE.GETCONTENTREF (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-10 GETCONTENTREFファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCONTENTTYPEファンクション

XDBResourceを指定すると、このファンクションはそのコンテンツ・タイプを戻します。

構文

DBMS_XDBRESEROUCE.GETCONTENTTYPE (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-11 GETCONTENTTYPEファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCONTENTXMLファンクション

このファンクションは、リソースの内容をXMLTypeRefとして戻します。

構文

DBMS_XDBRESEROUCE.GETCONTENTXML (
res   IN    XDBResource)
RETURN XMLType;

パラメータ

表187-12 GETCONTENTXMLファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCONTENTVARCHAR2ファンクション

このファンクションは、リソースの内容を文字列として戻します。

構文

DBMS_XDBRESEROUCE.GETCONTENTVARCHAR2 (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-13 GETCONTENTVARCHAR2ファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCREATIONDATEファンクション

XDBResourceを指定すると、このファンクションはその作成日を戻します。

構文

DBMS_XDBRESEROUCE.GETCREATIONDATE (
res   IN    XDBResource)
RETURN TIMESTAMP;

パラメータ

表187-14 GETCREATIONDATEファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCREATORファンクション

XDBResourceを指定すると、このファンクションはその作成者を戻します。

構文

DBMS_XDBRESEROUCE.GETCREATOR (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-15 GETCREATORファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETCUSTOMMETADATAファンクション

メタデータにxpathと名前空間を指定すると、このファンクションは要求されたカスタム・メタデータを戻します。

構文

DBMS_XDBRESEROUCE.GETCUSTOMMETADATA (
res        IN    XDBResource,
xpath      IN    VARCHAR2,    namespace  IN    VARCHAR2)
RETURN XMLType;

パラメータ

表187-16 GETCUSTOMMETADATAファンクションのパラメータ

パラメータ

説明

res

XDBResource。

xpath

カスタム・メタデータのXPath。

namespace

名前空間。

使用上の注意

XPath式の1番目の要素は"Resource"である必要があります。

GETDISPLAYNAMEファンクション

XDBResourceを指定すると、このファンクションはその表示名を戻します。

構文

DBMS_XDBRESEROUCE.GETDISPLAYNAME (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-17 GETDISPLAYNAMEファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETLANGUAGEファンクション

XDBResourceを指定すると、このファンクションはその言語を戻します。

構文

DBMS_XDBRESEROUCE.GETLANGUAGE (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-18 GETLANGUAGEファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETLASTMODIFIERファンクション

XDBResourceを指定すると、このファンクションはその最終変更者を戻します。

構文

DBMS_XDBRESEROUCE.GETLASTMODIFIER (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-19 GETLASTMODIFIERファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETMODIFICATIONDATEファンクション

XDBResourceを指定すると、このファンクションはその変更日を戻します。

構文

DBMS_XDBRESEROUCE.GETMODIFICATIONDATE (
res   IN    XDBResource)
RETURN TIMESTAMP;

パラメータ

表187-20 GETMODIFICATIONDATEファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETOWNERファンクション

XDBResourceを指定すると、このファンクションはその所有者を戻します。

構文

DBMS_XDBRESEROUCE.GETOWNER (
res   IN    XDBResource)
RETURN VARCHAR2;

パラメータ

表187-21 GETOWNERファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETREFCOUNTファンクション

XDBResourceを指定すると、このファンクションはその参照数を戻します。

構文

DBMS_XDBRESEROUCE.GETREFCOUNT (
res   IN    XDBResource)
RETURN PLS_INTEGER;

パラメータ

表187-22 GETREFCOUNTファンクションのパラメータ

パラメータ

説明

res

XDBResource。

GETVERSIONIDファンクション

XDBResourceを指定すると、このファンクションはそのバージョンIDを戻します。

構文

DBMS_XDBRESEROUCE.GETVERSIONID (
res   IN    XDBResource)
RETURN PLS_INTEGER;

パラメータ

表187-23 GETVERSIONIDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASACLCHANGEDファンクション

このファンクションは、特定のリソースのACLが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASACLCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-24 GETACLファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASAUTHORCHANGEDファンクション

このファンクションは、特定のリソースの作成者が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASAUTHORCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-25 HASAUTHORCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASCHANGEDファンクション

XPathを指定すると、このファンクションはXPathで示される要素または属性が変更されているかどうかを判別します。

構文

DBMS_XDBRESEROUCE.HASCHANGED (
res         IN    XDBResource,
xpath       IN    VARCHAR2,
namespace   IN    VARCHAR2)
RETURN BOOLEAN;

パラメータ

表187-26 HASCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

xpath

チェックするXPath。

bnamespace

使用する名前空間。

HASCHARACTERSETCHANGEDファンクション

このファンクションは、特定のリソースのキャラクタ・セットが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASCHARACTERSETCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-27 HASCHARACTERSETCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASCOMMENTCHANGEDファンクション

このファンクションは、特定のリソースのコメントが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASCOMMENTCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-28 HASCOMMENTCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASCONTENTCHANGEDファンクション

このファンクションは、特定のリソースの内容が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASCONTENTCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-29 HASCONTENTCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASCONTENTTYPECHANGEDファンクション

このファンクションは、特定のリソースのコンテンツ・タイプが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASCONTENTTYPECHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-30 HASCONTENTTYPECHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASCREATIONDATECHANGEDファンクション

このファンクションは、特定のリソースの作成日が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASCREATIONDATECHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-31 HASCREATIONDATECHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASCREATORCHANGEDファンクション

このファンクションは、特定のリソースの作成者が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASCREATORCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-32 HASCREATORCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASCUSTOMMETADATACHANGEDファンクション

このファンクションは、特定のリソースのカスタム・メタデータが変更されているかどうかをチェックします。

構文

DBMS_XDBRESEROUCE.HASCUSTOMMETADATACHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-33 HASCUSTOMMETADATACHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASDISPLAYNAMECHANGEDファンクション

このファンクションは、特定のリソースの表示名が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASDISPLAYNAMECHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-34 HASDISPLAYNAMECHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASLANGUAGECHANGEDファンクション

このファンクションは、特定のリソースの言語が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASLANGUAGECHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-35 HASLANGUAGECHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASLASTMODIFIERCHANGEDファンクション

このファンクションは、特定のリソースの最終変更者が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASLASTMODIFIERCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-36 HASLASTMODIFIERCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASMODIFICATIONDATECHANGEDファンクション

このファンクションは、特定のリソースの変更日が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASMODIFICATIONDATECHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-37 HASMODIFICATIONDATECHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASOWNERCHANGEDファンクション

このファンクションは、特定のリソースの所有者が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASOWNERCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-38 HASOWNERCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASREFCOUNTCHANGEDファンクション

このファンクションは、特定のリソースの参照数が変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASREFCOUNTCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-39 HASREFCOUNTCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

HASVERSIONIDCHANGEDファンクション

このファンクションは、特定のリソースのバージョンIDが変更された場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.HASVERSIONIDCHANGED (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-40 HASVERSIONIDCHANGEDファンクションのパラメータ

パラメータ

説明

res

XDBResource。

ISFOLDERファンクション

このファンクションは、特定のリソースがフォルダの場合はTRUE、それ以外の場合はFALSEを戻します。

構文

DBMS_XDBRESEROUCE.ISFOLDER (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-41 ISFOLDERファンクションのパラメータ

パラメータ

説明

res

XDBResource。

ISNULLファンクション

このファンクションは、入力したリソースがNULLの場合にTRUEを戻します。

構文

DBMS_XDBRESEROUCE.ISNULL (
res   IN    XDBResource)
RETURN BOOLEAN;

パラメータ

表187-42 ISNULLファンクションのパラメータ

パラメータ

説明

res

入力リソース

MAKEDOCUMENTファンクション

このファンクションは、XDBResourceを、XMLDOMインタフェースを使用して処理できるDOMDocumentに変換します。

関連項目:
DBMS_XMLDOMパッケージ

構文

DBMS_XDBRESEROUCE.MAKEDOCUMENT (
res   IN    XDBResource)
RETURN DBMS_XMLDOM.DOMDocument;

パラメータ

表187-43 MAKEDOCUMENTファンクションのパラメータ

パラメータ

説明

res

XDBResource。

SAVEプロシージャ

このプロシージャは、リソースを任意の変更で更新します。

構文

DBMS_XDBRESEROUCE.SAVE (
res   IN    XDBResource);

パラメータ

表187-44 SAVEプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

SETACLプロシージャ

このプロシージャは、特定のXDBResourceのACLを指定したパスに設定します。

構文

DBMS_XDBRESEROUCE.SETACL (
res      IN OUT  XDBResource,
ACLPath  IN      VARCHAR2);

パラメータ

表187-45 SETACLプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

ACLPath

新規ACLの絶対パス

SETAUTHORプロシージャ

このプロシージャは、特定のXDBResourceの作成者を指定した文字列に設定します。

構文

DBMS_XDBRESEROUCE.SETAUTHOR (
res     IN OUT  XDBResource,
author  IN      VARCHAR2);

パラメータ

表187-46 SETAUTHORプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

author

作成者

SETCHARACTERSETプロシージャ

このプロシージャは、特定のXDBResourceのキャラクタ・セットを指定したキャラクタ・セットに設定します。

構文

DBMS_XDBRESEROUCE.SETCHARACTERSET (
res      IN OUT  XDBResource,
charSet  IN      VARCHAR2);

パラメータ

表187-47 SETCHARACTERSETプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

charset

新しいキャラクタ・セット

SETCOMMENTプロシージャ

このプロシージャは、特定のXDBResourceに対応するコメントを設定します。

構文

DBMS_XDBRESEROUCE.SETCOMMENT (
res      IN OUT  XDBResource,
comment  IN      VARCHAR2);

パラメータ

表187-48 SETCOMMENTプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

comment

新しいコメント

SETCONTENTプロシージャ

このプロシージャは、特定のリソースの内容を指定したデータ・タイプに置き換えます。

構文

DBMS_XDBRESEROUCE.SETCONTENT (
res      IN OUT  XDBResource,
data     IN      BFILE,
csid     IN      NUMBER);

DBMS_XDBRESEROUCE.SETCONTENT (
res      IN OUT  XDBResource,
data     IN      BLOB,
csid     IN      PLS_INTEGER);

DBMS_XDBRESEROUCE.SETCONTENT (
res      IN OUT  XDBResource,
data     IN      CLOB);

DBMS_XDBRESEROUCE.SETCONTENT (
res      IN OUT  XDBResource,
data     IN      REF SYS.XMLType,
sticky   IN      BOOLEAN := TRUE);

DBMS_XDBRESEROUCE.SETCONTENT (
res      IN OUT  XDBResource,
data     IN      VARCHAR2);

DBMS_XDBRESEROUCE.SETCONTENT (
res      IN OUT  XDBResource,
data     IN      SYS.XMLType);

パラメータ

表187-49 SETCONTENTプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

data

BFILE、BLOB、CLOB、文字列、XMLTypeとして入力されるデータ。

csid

BFILE、BLOBのキャラクタ・セットID。

sticky

TRUEの場合はスティッキーな、それ以外の場合はスティッキーでないREFが作成されます。

SETCONTENTTYPEプロシージャ

このプロシージャは、特定のXDBResourceのコンテンツ・タイプを設定します。

構文

DBMS_XDBRESEROUCE.SETCONTENTTYPE (
res         IN OUT  XDBResource,
conttype    IN      VARCHAR2);

パラメータ

表187-50 SETCONTENTTYPEプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

conttype

新しいコンテンツ・タイプ

SETCUSTOMMETADATAプロシージャ

このプロシージャは、XPathと名前空間で指定したカスタム・メタデータを新規データに設定します。

構文

DBMS_XDBRESEROUCE.SETCUSTOMMETADATA (
res          IN OUT  XDBResource,
xpath        IN      VARCHAR2,
namespace    IN      VARCHAR2,
newMetadata  IN      XMLType);

パラメータ

表187-51 SETCUSTOMMETADATAプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

xpath

変更するXPath。

namespace

使用する名前空間。

newMetadata

特定のXPathのメタデータを置き換える必要がある新規データ。

使用上の注意

XPath式の1番目の要素は"Resource"である必要があります。

SETDISPLAYNAMEプロシージャ

このプロシージャは、特定のXDBResourceの表示名を設定します。

構文

DBMS_XDBRESEROUCE.SETDISPLAYNAME (
res      IN OUT  XDBResource,
name     IN      VARCHAR2);

パラメータ

表187-52 SETDISPLAYNAMEプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

name

新しい表示名。

SETLANGUAGEプロシージャ

このプロシージャは、特定のXDBResourceの言語を設定します。

構文

DBMS_XDBRESEROUCE.SETLANGUAGE (
res      IN OUT  XDBResource,
ACLPath  IN      VARCHAR2);

パラメータ

表187-53 SETLANGUAGEプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

ACLPath

新しいパス。

SETOWNERプロシージャ

このプロシージャは、特定のXDBResourceの所有者を設定します。

構文

DBMS_XDBRESEROUCE.SETOWNER (
res      IN OUT  XDBResource,
owner    IN      VARCHAR2);

パラメータ

表187-54 SETOWNERプロシージャのパラメータ

パラメータ

説明

res

XDBResource。

owner

新しい所有者。

使用上の注意

このサブプログラムをコールするには、XDBADMIN権限が必要です。

188 DBMS_XDBT

DBMS_XDBTパッケージは、管理者に対して、Oracle XML DB階層にCONTEXT索引を設定するための便利なメカニズムを提供します。このパッケージには、デフォルトのプリファレンスの作成、索引の作成、およびCONTEXT索引の自動同期化の設定を行うためのプロシージャが含まれています。

また、DBMS_XDBTパッケージには、索引の構成設定を指定する一連のパッケージ変数も含まれています。これらのパッケージ変数は、インストールに必要な基本カスタマイズで使用されますが、完全なセットではありません。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XDBTの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_XDBTサブプログラムの要約

DBMS_XDBTの使用方法

- 概要

- セキュリティ・モデル

- 使用上の注意

概要

DBMS_XDBTパッケージは、次のように使用できます。

- パッケージをカスタマイズして、適切な構成を設定します。

- DROPPREFERENCESプロシージャを使用して、既存の索引のプリファレンスを削除します。

- CREATEPREFERENCESプロシージャを使用して、索引の新規のプリファレンスを作成します。

- CREATEINDEXプロシージャを使用して、CONTEXT索引を作成します。

- CONFIGUREAUTOSYNCプロシージャを使用して、索引の自動同期化を設定します。

セキュリティ・モデル

DBMS_XDBTパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、SYSまたはXDBに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

使用上の注意

DBMS_XDBTパッケージは、PL/SQLプロシージャまたは無名ブロックを使用してカスタマイズし、関連するパッケージ変数、構成設定を設定してから、プロシージャを実行できます。より一般的な方法として、このパッケージを設定環境に応じて、またはコピーとして変更し、適切なカスタマイズを導入します。システムは、ジョブ・キューを使用するように構成されている必要があり、USER_JOBSカタログ・ビューを使用してジョブを表示できます。ここでは、DBMS_XDBTパッケージのカスタマイズに使用できる構成設定(パッケージ変数)について説明します。

表188-1 DBMS_XDBTのカスタマイズのための一般的な索引付け設定

パラメータ

デフォルト値

説明

IndexName

XDB$CI

CONTEXT索引の名前。

IndexTablespace

XDB$RESINFO

CONTEXT索引を構成する表と索引で使用する表領域。

IndexMemory

128M

索引作成および同期化で使用されるメモリー。MAX_INDEX_MEMORYシステム・パラメータ以下になります(CTX_ADMINパッケージを参照してください)。

LogFile

'XdbCtxLog'

索引付けでROWID に使用されるログ・ファイル。LOG_DIRECTORYシステム・パラメータは設定済であることが必要です。NULLに設定すると、ROWID ロギングはオフになります。

表188-2 DBMS_XDBTのカスタマイズのフィルタ設定

パラメータ

デフォルト値

説明

SkipFilter_Types

image/%、audio/%、video/%、model/%

索引付けが必要なMIMEタイプのリスト。

NullFilter_Types

text/plain、text/html、text/xml

INSOフィルタを使用する必要がないMIMEタイプのリスト。このパラメータは、テキストベースのドキュメントで使用します。

FilterPref

XDB$CI_FILTER

フィルタ・プリファレンスの名前。

表188-3 DBMS_XDBTのカスタマイズのストップリスト設定

パラメータ

デフォルト値

説明

StoplistPref

XDB$CI_STOPLIST

ストップリストの名前。

StopWords

0から9、'a'から'z'、'Aから'Z'

CTXSYS.DEFAULT_STOPLISTを超えるストップワードのリスト。

表188-4 DBMS_XDBTのカスタマイズのセクションとセクション・グループ設定

パラメータ

デフォルト値

説明

SectionGroup

HTML_SECTION_GROUP

デフォルトのセクショナ。リポジトリに格納されているのが主にXML文書の場合は、PATH_SECTION_GROUPまたはAUTO_SECTION_GROUPを使用します。

SectiongroupPref

XDB$CI_SECTIONGROUP

セクション・グループの名前。

表188-5 DBMS_XDBTのカスタマイズのためのその他の索引付けプリファレンス設定

パラメータ

デフォルト値

説明

DatastorePref

XDB$CI_DATASTORE

データストア・プリファレンスの名前。

StoragePref

XDB$CI_STORAGE

記憶域プリファレンスの名前。

WordlistPref

XDB$CI_WORDLIST

ワードリスト・プリファレンスの名前。

DefaultLexerPref

XDB$CI_DEFAULT_LEXER

デフォルトのレクサー・プリファレンスの名前。

表188-6 DBMS_XDBTのカスタマイズのための同期化(CONTEXT同期)設定

パラメータ

デフォルト値

説明

AutoSyncPolicy

SYNC_BY_PENDING_COUNT

索引を同期化する時期を指定します。SYNC_BY_PENDING_COUNT、SYNC_BY_TIMEまたはSYNC_BY_PENDING_COUNT_AND_TIMEのいずれかです。

MaxPendingCount

2

索引の同期化がトリガーされる前に、この索引のCTX_USER_PENDINGキューに含まれるドキュメントの最大数。AutoSyncPolicyがSYNC_BY_PENDING_COUNTまたはSYNC_BY_PENDING_COUNT_AND_TIMEの場合のみ。

CheckPendingCountInterval

10分間

ペンディング・キューのチェック頻度を分単位で指定します。AutoSyncPolicyがSYNC_BY_PENDING_COUNTまたはSYNC_BY_PENDING_COUNT_AND_TIMEの場合のみ。

SyncInterval

60分間

索引を同期化する頻度を分単位で指定します。AutoSyncPolicyがSYNC_BY_TIMEまたはSYNC_BY_PENDING_COUNT_AND_TIMEの場合のみ。

DBMS_XDBTサブプログラムの要約

表188-7 DBMS_XDBTパッケージのサブプログラム

サブプログラム

説明

CONFIGUREAUTOSYNCプロシージャ

自動メンテナンス(同期化)用のCONTEXT索引を構成します。

CREATEDATASTOREPREFプロシージャ

CONTEXT索引用のUSERデータストア・プリファレンスを作成します。

CREATEFILTERPREFプロシージャ

CONTEXT索引用のフィルタ・プリファレンスを作成します。

CREATEINDEXプロシージャ

XML DB階層のCONTEXT索引を作成します。

CREATELEXERPREFプロシージャ

CONTEXT索引用のレクサー・プリファレンスを作成します。

CREATEPREFERENCESプロシージャ

XML DB階層のCONTEXT索引に必要なプリファレンスを作成します。

CREATESECTIONGROUPPREFプロシージャ

CONTEXT索引用の記憶域プリファレンスを作成します。

CREATESTOPLISTPREFプロシージャ

CONTEXT索引用のセクション・グループを作成します。

CREATESTORAGEPREFプロシージャ

CONTEXT索引用のワードリスト・プリファレンスを作成します。

CREATEWORLDLISTPREFプロシージャ

CONTEXT索引用のストップリストを作成します。

DROPPREFERENCESプロシージャ

既存のプリファレンスを削除します。

CONFIGUREAUTOSYNCプロシージャ

このプロシージャは、CONTEXT索引の自動同期化を行うためのジョブを設定します。

構文

DBMS_XDBT.CONFIGUREAUTOSYNC;

使用上の注意

- システムは、自動同期化のジョブ・キュー用に構成する必要があります。ジョブは、USER_JOBSカタログ・ビューを使用して表示できます。

- AutoSyncPolicy構成パラメータを設定して、適切な同期ポリシーを選択できます。

同期化は、次のいずれかを基準にして実行できます。

同期化の基準

説明

SYNC_BY_PENDING_COUNT

同期化は、ペンディング・キュー内のドキュメント数がしきい値を超えるとトリガーされます(「MaxPendingCount」の構成設定を参照)。ペンディング・キューは定期的にポーリングされ(「CheckPendingCountInterval」の構成パラメータを参照)、ドキュメント数がしきい値を超えているかどうかが判別されます。

SYNC_BY_TIME

同期化は定期的にトリガーされます(SyncInterval構成パラメータを参照してください)。

SYNC_BY_PENDING_COUNT_AND_TIME

前述の2つのオプションの組合せ。

CREATEDATASTOREPREFプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用のユーザー・データストア・プリファレンスを作成します。

構文

DBMS_XDBT.CREATEDATASTOREPREF;

使用上の注意

- データストア・プリファレンスの名前は変更できます(DatastorePref構成設定を参照してください)。

- デフォルトのUSERデータストア・プロシージャは、渡されたドキュメントのフィルタ処理も行います。DBMS_XDBTパッケージは、フィルタ処理を制御する一連の構成設定を提供します。

- SkipFilter_Types配列には、正規表現のリストが含まれています。いずれかの式と一致するMIMEタイプのドキュメントは、索引付けされません。ドキュメント・メタデータの一部のプロパティ(作成者など)も索引付けされません。

- NullFilter_Types配列には、正規表現のリストが含まれています。いずれかの式と一致するMIMEタイプのドキュメントは、フィルタ処理は行われませんが、索引付けは行われます。これは、HTML、XML、プレーン・テキストなど、テキストベースのドキュメントで使用するためです。

- 他のすべてのドキュメントでは、IFILTER APIを経由してINSOフィルタが使用されます。

CREATEFILTERPREFプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用のNULLフィルタ・プリファレンスを作成します。

構文

DBMS_XDBT.CREATEFILTERPREF;

使用上の注意

- フィルタ・プリファレンスの名前は変更できます。FilterPref構成設定を参照してください。

- USERデータストア・プロシージャは、渡されるドキュメントのフィルタを行います。詳細は、「CREATEDATASTOREPREFプロシージャ」を参照してください。

CREATEINDEXプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引を作成します。

構文

DBMS_XDBT.CREATEINDEX;

使用上の注意

- 索引の名前は変更できます。IndexName構成設定を参照してください。

- LogFile構成パラメータを設定すると、索引作成時にROWIDロギングが使用可能になります。

- IndexMemory構成パラメータを設定すると、索引作成および後の同期化で使用するメモリー量を判断できます。

CREATELEXERPREFプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用の基本lexerプリファレンスを作成します。

構文

DBMS_XDBT.CREATELEXERPREF;

使用上の注意

- lexerプリファレンスの名前は変更できます。LexerPref構成設定を参照してください。これ以外の構成設定はありません。

- MultiLexerプリファレンスはサポートされていません。

- デフォルトでは、ベース文字変換はオンになっています。

CREATEPREFERENCESプロシージャ

このプロシージャは、構成設定に基づいて、一連のデフォルトのプリファレンスを作成します。

構文

DBMS_XDBT.CREATEPREFERENCES;

CREATESECTIONGROUPPREFプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用のセクション・グループを作成します。

構文

DBMS_XDBT.CREATESECTIONGROUPPREF;

使用上の注意

- セクション・グループの名前は変更できます。SectiongroupPref構成設定を参照してください。

- デフォルトでは、HTMLセクショナが使用されます。デフォルトでは、ゾーン・セクションは作成されません。大部分のドキュメントがXMLの場合は、AUTO_SECTION_GROUPまたはPATH_SECTION_GROUPの使用を検討してください。SectionGroup構成設定を参照してください。

CREATESTOPLISTPREFプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用のストップリストを作成します。

構文

DBMS_XDBT.CREATESTOPLISTPREF;

使用上の注意

- ストップリストの名前は変更できます。StoplistPref構成設定を参照してください。

- 数値は索引付けされません。

- StopWords配列は、ストップワードの構成可能なリストです。このリストには、CTXSYS.DEFAULT_STOPLISTの一連のストップワード以外のストップワードが含まれます。

CREATESTORAGEPREFプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用のBASIC_STORAGEプリファレンスを作成します。

構文

DBMS_XDBT.CREATESTORAGEPREF;

使用上の注意

- 記憶域プリファレンスの名前は変更できます。StoragePref構成設定を参照してください。

- CONTEXT索引を構成する表と索引用の表領域を指定できます。IndexTablespace構成設定を参照してください。

- デフォルトでは、接頭辞とサブストリングの索引付けはオンになっていません。

- I_INDEX_CLAUSEでは、キー圧縮が使用されます。

CREATEWORLDLISTPREFプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用のワールドリスト・プリファレンスを作成します。

構文

DBMS_XDBT.CREATEWORDLISTPREF;

使用上の注意

- ワードリスト・プリファレンスの名前は変更できます。WordlistPref構成設定を参照してください。これ以外の構成設定はありません。

- FUZZY_MATCH属性とSTEMMER属性は、AUTO(自動言語検出)に設定されます。

DROPPREFERENCESプロシージャ

このプロシージャは、XML DB階層のCONTEXT索引用に以前に作成されたプリファレンスを削除します。

構文

DBMS_XDBT.DROPPREFERENCES;

189 DBMS_XDBZ

DBMS_XDBZパッケージは、アクセス制御リスト(ACL)に基づいて、Oracle XML DBリポジトリのセキュリティを制御します。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XDBZの使用方法

- セキュリティ・モデル

- 定数

- DBMS_XDBZサブプログラムの要約

DBMS_XDBZの使用方法

この項では、DBMS_XDBZパッケージの使用に関連する項目について説明します。

- セキュリティ・モデル

- 定数

セキュリティ・モデル

DBMS_XDBZパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

DBMS_XDBZパッケージでは、次の表に示す定数が使用されます。

- DBMS_XDBZの定数: 名前の形式

- DBMS_XDBZの定数: 有効化オプション

- DBMS_XDBZの定数: 実行されている有効化オプション

表189-1 DBMS_XDBZの定数: 名前の形式

定数

タイプ

値

説明

NAME_FORMAT_SHORT

PLS_INTEGER

1

DBユーザー名またはLDAPニックネーム。

NAME_FORMAT_DISTINGUISHED

PLS_INTEGER

2

LDAP識別名。

表189-2 DBMS_XDBZの定数: 有効化オプション

定数

タイプ

値

説明

ENABLE_CONTENTS

PLS_INTEGER

1

内容の階層を有効化します。この階層は、ユーザーによってENABLE_HIERARCHYプロシージャのコール時に使用されます。

ENABLE_RESMETADATA

PLS_INTEGER

2

リソース・メタデータの階層を有効化します。つまり、この表は、リソースのスキーマ・ベースのカスタム・メタデータを格納します。

表189-3 DBMS_XDBZの定数: 実行されている有効化オプション

定数

タイプ

値

説明

IS_ENABLED_CONTENTS

PLS_INTEGER

1

内容に対して階層が有効化された場合、つまり、hierarchy_typeにENABLE_CONTENTSを指定してENABLE_HIERARCHYプロシージャがコールされた場合。

IS_ENABLED_RESMETADATA

PLS_INTEGER

2

リソース・メタデータに対して階層が有効化された場合、つまり、hierarchy_typeにENABLE_RESMETADATAを指定してENABLE_HIERARCHYプロシージャがコールされた場合。

DBMS_XDBZサブプログラムの要約

表189-4 DBMS_XDBZパッケージのサブプログラム

メソッド

説明

DISABLE_HIERARCHYプロシージャ

指定したXMLTYPE表またはビューのリポジトリのサポートを無効にします。

ENABLE_HIERARCHYプロシージャ

指定したXMLType表またはビューのリポジトリのサポートを有効にします。

GET_ACLOIDファンクション

指定したリソースのACLオブジェクトIDを取得します。

GET_USERIDファンクション

指定したユーザーのユーザーIDを取得します。

IS_HIERARCHY_ENABLEDファンクション

指定したXMLType表またはビューのリポジトリのサポートが有効であるかどうかを判別します。

PURGELDAPCACHEファンクション

LDAPニックネーム・キャッシュをパージします。

CREATENONCEKEYプロシージャ

このプロシージャは、Digest認証で使用するNonce値を生成します。

構文

DBMS_XDBZ.CREATENONCEKEY;

DISABLE_HIERARCHYプロシージャ

このプロシージャは、特定のXMLType表またはビューのリポジトリのサポートを無効にします。

構文

DBMS_XDBZ.DISABLE_HIERARCHY(
object_schema IN VARCHAR2,
object_name   IN VARCHAR2);

パラメータ

表189-5 DISABLE_HIERARCHYプロシージャのパラメータ

パラメータ

説明

object_schema

XMLType表またはビューのスキーマ名

object_name

XMLType表またはビューの名前

ENABLE_HIERARCHYプロシージャ

このプロシージャは、特定のXMLType表またはビューのリポジトリのサポートを有効にします。このプロシージャを使用して、リポジトリのすべてのドキュメントで統一されたACLベースのセキュリティ・モデルを使用できるようになります。

関連項目:
詳細は、『Oracle XML DB開発者ガイド』を参照してください。

構文

DBMS_XDBZ.ENABLE_HIERARCHY(
object_schema   IN   VARCHAR2,
object_name     IN   VARCHAR2,
hierarchy_type  IN   PLS_INTEGER := DBMS_XDBZ.ENABLE_CONTENTS);

パラメータ

表189-6 ENABLE_HIERARCHYプロシージャのパラメータ

パラメータ

説明

object_schema

XMLType表またはビューのスキーマ名

object_name

XMLType表またはビューの名前

hierarchy_type

階層を有効化する方法。

- ENABLE_CONTENTS: 内容の階層を有効化します。つまり、この表はリソースの内容をリポジトリに格納します。

- ENABLE_RESMETADATA: リソース・メタデータの階層を有効化します。つまり、この表はリソースのスキーマ・ベースのカスタム・メタデータを格納します。

表でこのサブプログラムをコールした場合、別のコールは無効になります。内容とリソース・メタデータの両方の階層を有効化することはできないことに注意してください。

GET_ACLOIDファンクション

このファンクションは、リポジトリ・パスが既知の場合に、指定したリソースのACLオブジェクトIDを取得します。

構文

DBMS_XDBZ.GET_ACLOID(
aclpath   IN   VARCHAR2,
acloid    OUT  RAW)
RETURN BOOLEAN;

パラメータ

表189-7 GET_ACLOIDファンクションのパラメータ

パラメータ

説明

aclpath

リポジトリのACLリソース・パス。

acloid

戻されたオブジェクトID

戻り値

成功した場合、TRUEを戻します。

GET_USERIDファンクション

このファンクションは、指定したユーザー名のユーザーIDを取得します。ローカル・データベースが最初に検索され、ユーザーIDが見つかった場合、USERIDは4バイトのデータベース形式で戻されます。ユーザーIDが見つからなかった場合、LDAPディレクトリが検索され、そこで見つかった場合、USERIDは4バイトのデータベース形式で戻されます。

構文

DBMS_XDBZ.GET_USERID(
username IN  VARCHAR2,
userid   OUT RAW,
format   IN  BINARY_INTEGER := NAME_FORMAT_SHORT)
RETURN BOOLEAN;

パラメータ

表189-8 GET_USERIDファンクションのパラメータ

パラメータ

説明

username

データベースまたはLDAPユーザーの名前。

userid

一致したユーザーIDのパラメータを戻します。

format

指定したユーザー名の形式。有効なオプションは次のとおりです。

- DBMS_XDBZ.NAME_FORMAT_SHORT(デフォルト): DBユーザー名またはLDAPニックネーム。

- DBMS_XDBZ.NAME_FORMAT_DISTINGUISHIED: LDAP識別名。

戻り値

成功した場合、TRUEを戻します。

IS_HIERARCHY_ENABLEDファンクション

このファンクションは、指定したXMLType表またはビューのリポジトリのサポートが有効であるかどうかを判別します。

構文

DBMS_XDBZ.IS_HIERARCHY_ENABLED(
object_schema   IN  VARCHAR2,
object_name     IN  VARCHAR2,
hierarchy_type  IN  PLS_INTEGER := IS_ENABLED_CONTENTS)
RETURN BOOLEAN;

パラメータ

表189-9 IS_HIERARCHY_ENABLEDファンクションのパラメータ

パラメータ

説明

object_schema

XMLType表またはビューのスキーマ名

object_name

XMLType表またはビューの名前

hierarchy_type

チェックする階層のタイプ:

- IS_ENABLED_CONTENTS: 内容に対して階層が有効化された場合、つまり、hierarchy_typeにENABLE_CONTENTSを指定してENABLE_HIERARCHYプロシージャがコールされた場合。

- IS_ENABLED_RESMETADATA: リソース・メタデータに対して階層が有効化された場合、つまり、hierarchy_typeにENABLE_RESMETADATAを指定してENABLE_HIERARCHYプロシージャがコールされた場合。

戻り値

特定のXMLTYPE表またはビューで、指定したタイプでXDB階層が有効化されている場合は、TRUEを戻します。

PURGELDAPCACHEファンクション

このファンクションはLDAPニックネーム・キャッシュをパージします。成功した場合、TRUEを戻します。

構文

DBMS_XDBZ.PURGELDAPCACHE
RETURN BOOLEAN;

190 DBMS_XEVENT

DBMS_XEVENTパッケージは、イベント関連のタイプおよびサポートするサブプログラムを提供します。

関連項目:
Oracle XML DBリポジトリ・イベントの詳細は、『Oracle XML DB開発者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_XEVENTの使用方法

- セキュリティ・モデル

- 定数

- サブプログラム・グループ

- XDBEventタイプのサブプログラム

- XDBRepositoryEventタイプのサブプログラム

- XDBHandlerListタイプのサブプログラム

- XDBHandlerタイプのサブプログラム

- XDBPathタイプのサブプログラム

- XDBLinkタイプのサブプログラム

- DBMS_XEVENTサブプログラムの要約

DBMS_XEVENTの使用方法

- セキュリティ・モデル

- 定数

セキュリティ・モデル

DBMS_XEVENTパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

DBMS_XEVENTパッケージでは、表190-1に示す定数が使用されます。

表190-1 DBMS_XEVENTの定数

名前

タイプ

値

説明

RENDER_EVENT

PLS_INTEGER

1

PRE_CREATE_EVENT

PLS_INTEGER

2

POST_CREATE_EVENT

PLS_INTEGER

3

PRE_DELETE_EVENT

PLS_INTEGER

4

POST_DELETE_EVENT

PLS_INTEGER

5

PRE_UPDATE_EVENT

PLS_INTEGER

6

POST_UPDATE_EVENT

PLS_INTEGER

7

PRE_LOCK_EVENT

PLS_INTEGER

8

POST_LOCK_EVENT

PLS_INTEGER

9

PRE_UNLOCK_EVENT

PLS_INTEGER

10

POST_UNLOCK_EVENT

PLS_INTEGER

11

PRE_LINKIN_EVENT

PLS_INTEGER

12

POST_LINKIN_EVENT

PLS_INTEGER

13

PRE_LINKTO_EVENT

PLS_INTEGER

14

POST_LINKTO_EVENT

PLS_INTEGER

15

PRE_UNLINKIN_EVENT

PLS_INTEGER

16

POST_UNLINKIN_EVENT

PLS_INTEGER

17

PRE_UNLINKFROM_EVENT

PLS_INTEGER

18

POST_UNLINKFROM_EVENT

PLS_INTEGER

19

PRE_CHECKIN_EVENT

PLS_INTEGER

20

POST_CHECKIN_EVENT

PLS_INTEGER

21

PRE_CHECKOUT_EVENT

PLS_INTEGER

22

POST_CHECKOUT_EVENT

PLS_INTEGER

23

PRE_UNCHECKOUT_EVENT

PLS_INTEGER

24

POST_UNCHECKOUT_EVENT

PLS_INTEGER

25

PRE_VERSIONCONTROL_EVENT

PLS_INTEGER

26

POST_VERSIONCONTROL_EVENT

PLS_INTEGER

27

PRE_OPEN_EVENT

PLS_INTEGER

28

POST_OPEN_EVENT

PLS_INTEGER

29

PRE_INCONSISTENT_UPDATE_EVENT

PLS_INTEGER

30

POST_INCONSISTENT_UPDATE_EVENT

PLS_INTEGER

21

POST_CHECKIN_EVENT

PLS_INTEGER

21

サブプログラム・グループ

- XDBEventタイプのサブプログラム

- XDBRepositoryEventタイプのサブプログラム

- XDBHandlerListタイプのサブプログラム

- XDBHandlerタイプのサブプログラム

- XDBPathタイプのサブプログラム

- XDBLinkタイプのサブプログラム

XDBEventタイプのサブプログラム

このサブプログラム・グループでは、XDBEventタイプと一緒に使用するインタフェースを提供しています。

表190-2 XDBEventのサブプログラム

サブプログラム

説明

GETCURRENTUSERファンクション

イベントをトリガーする操作を実行するユーザーの名前を戻します。

GETEVENTファンクション

トリガーするイベントを識別する値を戻します。

ISNULLファンクション

入力した引数がNULLの場合にTRUEを戻します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_XEVENTサブプログラムの要約」を参照してください。

XDBRepositoryEventタイプのサブプログラム

このサブプログラム・グループでは、XDBRepositoryEventタイプと一緒に使用するインタフェースが提供されています。

表190-3 XDBRepositoryEventのサブプログラム

サブプログラム

説明

GETAPPLICATIONDATAファンクション

起動するハンドラを定義するリソース構成から抽出された<applicationData>要素を戻します。

GETHANDLERLISTファンクション

現在実行中のハンドラの後に実行されるハンドラのリストを含むXDBHandlerListオブジェクトを戻します。

GETINTERFACEファンクション

イベントをトリガーする操作を開始するときに使用するトップレベルのインタフェースを戻します。

GETLINKファンクション

ターゲット・リソースのXDBLinkオブジェクトを戻します。

GETLOCKファンクション

現在の操作に対応するロック・オブジェクトを戻します。

GETOLDRESOURCEファンクション

操作が実行される前の元のXDBResourceオブジェクトを戻します。

GETOPENACCESSMODEファンクション

オープン操作のアクセス・モードを戻します。

GETOPENDENYMODEファンクション

オープン操作の拒否モードを戻します。

GETOUTPUTSTREAMファンクション

表示されるデータをハンドラが書き込むことができる出力BLOBを戻します。

GETPARAMETERファンクション

要求固有またはセッション固有のパラメータの値を戻します。

GETPARENTファンクション

ターゲット・リソースの親フォルダに対応するリソース・オブジェクトを戻します。

GETPATHファンクション

イベントが起動されたリソースのパスを表すXDBPathオブジェクトを戻します。

GETRESOURCEファンクション

ターゲット・リソースの内容やメタデータにアクセスして変更するための手段を提供するXDBResourceオブジェクトを戻します。

GETUPDATEBYTECOUNTファンクション

現在の操作がバイト範囲書込みの場合、バイト数を戻します。

GETUPDATEBYTEOFFSETファンクション

現在の操作がバイト範囲書込みの場合、ファンクションは範囲の開始点となるバイト・オフセットを戻します。

GETXDBEVENTファンクション

XDBRepositoryEventオブジェクトをXDBEventタイプに変換します。

ISNULLファンクション

入力した引数がNULLの場合にTRUEを戻します。

SETRENDERPATHプロシージャ

表示された内容を含むリソースのパスを指定します。

SETRENDERSTREAMプロシージャ

表示される内容を読み取ることができるBLOBを設定します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_XEVENTサブプログラムの要約」を参照してください。

XDBHandlerListタイプのサブプログラム

このサブプログラム・グループでは、XDBHandlerListタイプと一緒に使用するインタフェースが提供されています。

表190-4 XDBHandlerListのサブプログラム

サブプログラム

説明

CLEARプロシージャ

ハンドラ・リストをクリアします。

GETFIRSTファンクション

リスト内の最初のハンドラを戻します。

GETNAMEファンクション

リスト内の次のハンドラを戻します。

ISNULLファンクション

入力した引数がNULLの場合にTRUEを戻します。

REMOVEプロシージャ

指定のハンドラをハンドラ・リストから削除します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_XEVENTサブプログラムの要約」を参照してください。

XDBHandlerタイプのサブプログラム

このサブプログラム・グループでは、XDBHandlerタイプと一緒に使用するインタフェースが提供されています。

表190-5 XDBHandlerタイプのサブプログラム

サブプログラム

説明

GETLANGUAGEファンクション

ハンドラの実装言語を戻します。

GETSCHEMAファンクション

ハンドラのソースのスキーマを戻します。

GETSOURCEファンクション

ハンドラを実装するJavaクラス、PL/SQLパッケージまたはオブジェクト・タイプの名前を戻します。

ISNULLファンクション

入力した引数がNULLの場合にTRUEを戻します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_XEVENTサブプログラムの要約」を参照してください。

XDBPathタイプのサブプログラム

このサブプログラム・グループでは、XDBPathタイプと一緒に使用するインタフェースが提供されています。

表190-6 XDBPathタイプのサブプログラム

サブプログラム

説明

GETNAMEファンクション

パスの文字列表現を戻します。

GETPARENTPATHファンクション

親のパスを戻します。

ISNULLファンクション

入力した引数がNULLの場合にTRUEを戻します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_XEVENTサブプログラムの要約」を参照してください。

XDBLinkタイプのサブプログラム

このサブプログラム・グループでは、XDBLinkタイプと一緒に使用するインタフェースが提供されています。

表190-7 XDBLinkタイプのサブプログラム

サブプログラム

説明

GETCHILDOIDファンクション

リンクが指しているリソースのOIDを戻します。

GETPARENTNAMEファンクション

リンクの親フォルダの名前を戻します。

GETPARENTOIDファンクション

リンクの親フォルダのOIDを戻します。

ISNULLファンクション

入力した引数がNULLの場合にTRUEを戻します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_XEVENTサブプログラムの要約」を参照してください。

DBMS_XEVENTサブプログラムの要約

表190-8 DBMS_XEVENTパッケージのサブプログラム

サブプログラム

説明

グループ

CLEARプロシージャ

ハンドラ・リストをクリアします。

XDBHandlerListタイプのサブプログラム

GETAPPLICATIONDATAファンクション

起動するハンドラを定義するリソース構成から抽出された<applicationData>要素を戻します。

XDBRepositoryEventタイプのサブプログラム

GETCHILDOIDファンクション

リンクが指しているリソースのOIDを戻します。

XDBLinkタイプのサブプログラム

GETCURRENTUSERファンクション

イベントをトリガーする操作を実行するユーザーの名前を戻します。

XDBEventタイプのサブプログラム

GETEVENTファンクション

トリガーするイベントを識別する値を戻します。

XDBEventタイプのサブプログラム

GETFIRSTファンクション

リスト内の最初のハンドラを戻します。

XDBHandlerListタイプのサブプログラム

GETHANDLERLISTファンクション

現在実行中のハンドラの後に実行されるハンドラのリストを含むXDBHandlerListオブジェクトを戻します。

XDBRepositoryEventタイプのサブプログラム

GETINTERFACEファンクション

イベントをトリガーする操作を開始するときに使用するトップレベルのインタフェースを戻します。

XDBRepositoryEventタイプのサブプログラム

GETLANGUAGEファンクション

ハンドラの実装言語を戻します。

XDBHandlerタイプのサブプログラム

GETLINKファンクション

ターゲット・リソースのXDBLinkオブジェクトを戻します。

XDBRepositoryEventタイプのサブプログラム

GETLOCKファンクション

現在の操作に対応するロック・オブジェクトを戻します。

XDBRepositoryEventタイプのサブプログラム

GETNAMEファンクション

パスの文字列表現を戻します。

XDBPathタイプのサブプログラム

GETNAMEファンクション

リスト内の次のハンドラを戻します。

XDBHandlerListタイプのサブプログラム

GETOLDRESOURCEファンクション

操作が実行される前の元のXDBResourceオブジェクトを戻します。

XDBRepositoryEventタイプのサブプログラム

GETOPENACCESSMODEファンクション

オープン操作のアクセス・モードを戻します。

XDBRepositoryEventタイプのサブプログラム

GETOPENDENYMODEファンクション

オープン操作の拒否モードを戻します。

XDBRepositoryEventタイプのサブプログラム

GETOUTPUTSTREAMファンクション

表示されるデータをハンドラが書き込むことができる出力BLOBを戻します。

XDBRepositoryEventタイプのサブプログラム

GETPARAMETERファンクション

要求固有またはセッション固有のパラメータの値を戻します。

XDBRepositoryEventタイプのサブプログラム

GETPARENTファンクション

ターゲット・リソースの親フォルダに対応するリソース・オブジェクトを戻します。

XDBRepositoryEventタイプのサブプログラム

GETPARENTNAMEファンクション

リンクの親フォルダの名前を戻します。

XDBLinkタイプのサブプログラム

GETPARENTOIDファンクション

リンクの親フォルダのOIDを戻します。

XDBLinkタイプのサブプログラム

GETPARENTNAMEファンクション

親のパスを戻します。

XDBPathタイプのサブプログラム

GETPATHファンクション

イベントが起動されたリソースのパスを表すXDBPathオブジェクトを戻します。

XDBRepositoryEventタイプのサブプログラム

GETRESOURCEファンクション

ターゲット・リソースの内容やメタデータにアクセスして変更するための手段を提供するXDBResourceオブジェクトを戻します。

XDBRepositoryEventタイプのサブプログラム

GETSCHEMAファンクション

ハンドラのソースのスキーマを戻します。

XDBHandlerタイプのサブプログラム

GETSOURCEファンクション

ハンドラを実装するJavaクラス、PL/SQLパッケージまたはオブジェクト・タイプの名前を戻します。

XDBHandlerタイプのサブプログラム

GETUPDATEBYTECOUNTファンクション

現在の操作がバイト範囲書込みの場合、バイト数を戻します。

XDBRepositoryEventタイプのサブプログラム

GETUPDATEBYTEOFFSETファンクション

現在の操作がバイト範囲書込みの場合、ファンクションは範囲の開始点となるバイト・オフセットを戻します。

XDBRepositoryEventタイプのサブプログラム

GETXDBEVENTファンクション

XDBRepositoryEventオブジェクトをXDBEventタイプに変換します。

XDBRepositoryEventタイプのサブプログラム

ISNULLファンクション

入力した引数がNULLの場合にTRUEを戻します。

XDBEventタイプのサブプログラム

XDBRepositoryEventタイプのサブプログラム

XDBHandlerListタイプのサブプログラム

XDBHandlerタイプのサブプログラム

XDBPathタイプのサブプログラム

REMOVEプロシージャ

指定のハンドラをハンドラ・リストから削除します。

XDBHandlerListタイプのサブプログラム

SETRENDERPATHプロシージャ

表示された内容を含むリソースのパスを指定します。

XDBRepositoryEventタイプのサブプログラム

SETRENDERSTREAMプロシージャ

表示される内容を読み取ることができるBLOBを設定します。

XDBRepositoryEventタイプのサブプログラム

CLEARプロシージャ

このプロシージャは、ハンドラ・リストをクリアします。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerListタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.CLEAR (
hl       IN OUT   XDBHandlerList);

パラメータ

表190-9 CLEARプロシージャのパラメータ

パラメータ

説明

hl

ハンドラのリスト。

GETAPPLICATIONDATAファンクション

このファンクションは、起動するハンドラを定義するリソース構成から抽出された<applicationData>要素を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETAPPLICATIONDATA (
ev   IN   XDBRepositoryEvent)
RETURN XMLType;

パラメータ

表190-10 GETAPPLICATIONDATAファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETCHILDOIDファンクション

このファンクションは、リンクが指しているリソースのOIDを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBLinkタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETCHILDOID (
link   IN   XDBLink)
RETURN RAW;

パラメータ

表190-11 GETCHILDOIDファンクションのパラメータ

パラメータ

説明

link

リンク。

GETCURRENTUSERファンクション

このファンクションは、イベントをトリガーする操作を実行するユーザーの名前を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETCURRENTUSER (
ev   IN   XDBEvent)
RETURN VARCHAR2;

パラメータ

表190-12 GETCURRENTUSERファンクションのパラメータ

パラメータ

説明

ev

XDBEventタイプのイベント。

GETEVENTファンクション

このファンクションは、イベントをトリガーする操作を実行するユーザーの名前を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETEVENT (
ev   IN   XDBEvent)
RETURN XDBEventID;

パラメータ

表190-13 GETEVENTファンクションのパラメータ

パラメータ

説明

ev

XDBEventタイプのイベント。

GETFIRSTファンクション

このファンクションは、リスト内の最初のハンドラを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerListタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETFIRST (
hl   IN   XDBHandlerList)
RETURN XDBHandler;

パラメータ

表190-14 GETFIRSTファンクションのパラメータ

パラメータ

説明

hl

ハンドラのリスト。

GETHANDLERLISTファンクション

このファンクションは、現在実行中のハンドラの後に実行されるハンドラのリストが含まれているXDBHandlerListオブジェクトを戻します。その後、現在のハンドラはセキュリティ・チェックに従い、必要に応じて後続の一部のハンドラを除外できます。リスト内のハンドラに関連するリソース構成のいずれかに対して必要なアクセス権限が実行ユーザーにない場合、不十分な権限例外が発生します。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETHANDLERLIST (
ev   IN   XDBRepositoryEvent)
RETURN XDBHandlerList;

パラメータ

表190-15 GETHANDLERLISTファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETINTERFACEファンクション

このファンクションは、イベントをトリガーする操作を開始するときに使用するトップレベルのインタフェースを戻します。これは、HTTP、FTPまたはSQLです。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETINTERFACE (
ev   IN   XDBRepositoryEvent)
RETURN VARCHAR2;

パラメータ

表190-16 GETINTERFACEファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETLANGUAGEファンクション

このファンクションは、ハンドラの実装言語を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETLANGUAGE (
handler   IN   XDBHandler)
RETURN VARCHAR2;

パラメータ

表190-17 GETLANGUAGEファンクションのパラメータ

パラメータ

説明

handler

ハンドラ。

GETLINKファンクション

このファンクションは、ターゲット・リソースのXDBLinkオブジェクトを戻します。リンク*またはリンク解除*イベントの場合、これは操作に関連するリンクとなります。その他のイベントの場合は、エラーが戻されます。このオブジェクトを使用して、ハンドラは、ParentName、ParentOID、ChildOID、LinkNameなどのリンク・プロパティにアクセスできます。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETLINK (
ev   IN   XDBRepositoryEvent)
RETURN XDBLink;

パラメータ

表190-18 GETLINKファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETLINKNAMEファンクション

このファンクションは、リンクの名前を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBLinkタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETLINKNAME (
link   IN   XDBLink)
RETURN VARCHAR2;

パラメータ

表190-19 GETLINKNAMEファンクションのパラメータ

パラメータ

説明

link

リンク。

GETLOCKファンクション

このファンクションは、現在の操作に対応するロック・オブジェクトを戻し、ロック・イベントおよびロック解除イベントに対してのみ有効となります。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETLOCK  (
ev   IN   XDBRepositoryEvent)
RETURN XDBLock;

パラメータ

表190-20 GETLOCKファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETLANGUAGEファンクション

このファンクションは、ハンドラの実装言語を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETLANGUAGE (
handler   IN   XDBHandler)
RETURN VARCHAR2;

パラメータ

表190-21 GETLANGUAGEファンクションのパラメータ

パラメータ

説明

handler

ハンドラ。

GETNAMEファンクション

このファンクションは、パスの文字列表現を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBPathタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETNAME (
path   IN   XDBPath)
RETURN VARCHAR2;

パラメータ

表190-22 GETNAMEファンクションのパラメータ

パラメータ

説明

path

パス。

GETNEXTファンクション

このファンクションは、リスト内の次のハンドラを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerListタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETNEXT (
hl   IN   XDBHandlerList)
RETURN XDBHandler;

パラメータ

表190-23 GETNEXTファンクションのパラメータ

パラメータ

説明

hl

ハンドラのリスト。

GETOLDRESOURCEファンクション

このファンクションは、操作が実行される前の元のXDBResourceオブジェクトを戻します。このメソッドは、更新イベントのみに適用されます。その他のイベントの場合は、エラーが戻されます。これは読取り専用オブジェクトであるため、このオブジェクトに対してはいずれの修飾子メソッドも機能しません。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETOLDRESOURCE (
ev   IN   XDBRepositoryEvent)
RETURN XDBResource;

パラメータ

表190-24 GETOLDRESOURCEファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETOPENACCESSMODEファンクション

このファンクションは、オープン操作のアクセス・モードを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETOPENACCESSMODE (
ev   IN   XDBRepositoryEvent)
RETURN PLS_INTEGER;

パラメータ

表190-25 GETOPENACCESSMODEファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

戻り値

- XDBRepositoryEvent.OPEN_ACCESS_READ(値1)

- XDBRepositoryEvent.OPEN_ACCESS_WRITE(値2)

- XDBRepositoryEvent.OPEN_ACCESS_READ_WRITE(値3)

GETOPENDENYMODEファンクション

このファンクションは、オープン操作の拒否モードを戻します。このファンクションは、オープン・イベントに対してのみ有効です。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETOPENDENYMODE (
ev   IN   XDBRepositoryEvent)
RETURN PLS_INTEGER;

パラメータ

表190-26 GETOPENDENYMODEファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

戻り値

- XDBRepositoryEvent.OPEN_DENY_NONE(値0)

- XDBRepositoryEvent.OPEN_DENY_READ(値1)

- XDBRepositoryEvent.OPEN_DENY_READ_WRITE(値2)

GETOUTPUTSTREAMファンクション

このファンクションは、表示されるデータをハンドラが書き込むことができる出力BLOBを戻します。このファンクションは、表示イベントに対してのみ有効です。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETOUTPUTSTREAM (
ev   IN   XDBRepositoryEvent)
RETURN BLOB;

パラメータ

表190-27 GETOUTPUTSTREAMファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETPARAMETERファンクション

このファンクションは、要求固有またはセッション固有のパラメータの値を戻します。keyパラメータの定義は、RFC 2616(HTTP/1.1)にあります。この定義は、同等のSQLセッションのパラメータ(ある場合)にマップされます。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETPARAMETER (
ev   IN   XDBRepositoryEvent,
key  IN   VARCHAR2)
RETURN VARCHAR2;

パラメータ

表190-28 GETPARAMETERファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

key

次のパラメータがサポートされています。

- ACCEPT

- ACCEPT-LANGUAGE

- ACCEPT-CHARSET

- ACCEPT_ENCODING

GETPARENTファンクション

このファンクションは、ターゲット・リソースの親フォルダに対応するリソース・オブジェクトを戻します。このリソース・オブジェクトは、ターゲット・リソースへのリンクが含まれている任意のフォルダである可能性があることに注意してください。これは読取り専用オブジェクトであるため、このオブジェクトに対してはいずれの修飾子メソッドも機能しません。リンク*またはリンク解除*イベントでは、このメソッドはリンクの親フォルダを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETPARENT (
ev   IN   XDBRepositoryEvent)
RETURN XDBResource;

パラメータ

表190-29 GETPARENTファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETPARENTNAMEファンクション

このファンクションは、リンクの親フォルダの名前を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBLinkタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETPARENTNAME (
link   IN   XDBLink)
RETURN VARCHAR2;

パラメータ

表190-30 GETPARENTNAMEファンクションのパラメータ

パラメータ

説明

link

リンク。

GETPARENTOIDファンクション

このファンクションは、リンクの親フォルダのOIDを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBLinkタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETPARENTOID (
link   IN   XDBLink)
RETURN RAW;

パラメータ

表190-31 GETPARENTOIDファンクションのパラメータ

パラメータ

説明

link

リンク。

GETPARENTPATHファンクション

このファンクションは、親のパスを戻します。レベルは、階層までのレベルの数を示します。この値は0(ゼロ)より大きい必要があります。レベル1は直接の親を示します。レベルがツリーの高さを超える場合、NULLが戻されます。

関連項目:
このグループの他のサブプログラムについては、「XDBPathタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETPARENTPATH (
path   IN   XDBPath,
level   IN   INTEGER)
RETURN XDBPath;

パラメータ

表190-32 GETPARENTPATHファンクションのパラメータ

パラメータ

説明

path

パス。

level

階層までのレベルの数。

GETPATHファンクション

このファンクションは、イベントが起動されたリソースのパスを表すXDBPathオブジェクトを戻します。このオブジェクトから、異なるパス・セグメントの取得にファンクションが使用されます。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETPATH (
ev   IN   XDBRepositoryEvent)
RETURN XDBPath;

パラメータ

表190-33 GETPATHファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETRESOURCEファンクション

このファンクションは、ターゲット・リソースの内容やメタデータにアクセスして変更するための手段を提供するXDBResourceオブジェクトを戻します。このオブジェクトは、以前のハンドラがリソースに対して行ったすべての変更を反映します。

修飾子メソッドは、事前作成イベント・ハンドラおよび事前更新イベント・ハンドラでのみ機能します。リンク*またはリンク解除*イベントでは、このメソッドはリンクが指すリソースを戻します。作成イベントでは、このメソッドは作成するリソースを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETRESOURCE (
ev   IN   XDBRepositoryEvent)
RETURN XDBResource;

パラメータ

表190-34 GETRESOURCEファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETSCHEMAファンクション

このファンクションは、ハンドラのソースのスキーマを戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETSCHEMA (
handler   IN   XDBHandler)
RETURN VARCHAR2;

パラメータ

表190-35 GETSCHEMAファンクションのパラメータ

パラメータ

説明

handler

ハンドラ。

GETSOURCEファンクション

このファンクションは、ハンドラを実装するJavaクラス、PL/SQLパッケージまたはオブジェクト・タイプの名前を戻します。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETSOURCE (
handler   IN   XDBHandler)
RETURN VARCHAR2;

パラメータ

表190-36 GETSOURCEファンクションのパラメータ

パラメータ

説明

handler

ハンドラ。

GETUPDATEBYTECOUNTファンクション

現在の操作がバイト範囲書込みの場合、このファンクションはバイト数を戻します。これは整合性がない更新イベントに対してのみ有効です。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETUPDATEBYTECOUNT (
ev   IN   XDBRepositoryEvent)
RETURN NUMBER;

パラメータ

表190-37 GETUPDATEBYTECOUNTファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETUPDATEBYTEOFFSETファンクション

現在の操作がバイト範囲書込みの場合、ファンクションは範囲の開始点となるバイト・オフセットを戻します。これは整合性がない更新イベントに対してのみ有効です。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETUPDATEBYTEOFFSET (
ev   IN   XDBRepositoryEvent)
RETURN NUMBER;

パラメータ

表190-38 GETUPDATEBYTEOFFSETファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

GETXDBEVENTファンクション

このファンクションは、XDBRepositoryEventオブジェクトをXDBEventタイプに変換します。

関連項目:
このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.GETXDBETEVENT (
ev   IN   XDBRepositoryEvent)
RETURN XDBEvent;

パラメータ

表190-39 GETXDBEVENTファンクションのパラメータ

パラメータ

説明

ev

XDBRepositoryEventタイプのイベント。

ISNULLファンクション

このファンクションは、入力した引数がNULLの場合、TRUEを戻します。

関連項目:

- このグループの他のサブプログラムについては、「XDBEventタイプのサブプログラム」を参照してください。

- このグループの他のサブプログラムについては、「XDBRepositoryEventタイプのサブプログラム」を参照してください。

- このグループの他のサブプログラムについては、「XDBHandlerListタイプのサブプログラム」を参照してください。

- このグループの他のサブプログラムについては、「XDBHandlerタイプのサブプログラム」を参照してください。

- このグループの他のサブプログラムについては、「XDBPathタイプのサブプログラム」を参照してください。

- このグループの他のサブプログラムについては、「XDBLinkタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.ISNULL (
ev         IN   XDBEvent)
RETURN BOOLEAN;

DBMS_XEVENT.ISNULL (
ev         IN   XDBRepositoryEvent)
RETURN BOOLEAN;

DBMS_XEVENT.ISNULL (
hl         IN   XDBHandlerList)
RETURN BOOLEAN;

DBMS_XEVENT.ISNULL (
handler    IN   XDBHandler)
RETURN BOOLEAN;
RETURN BOOLEAN;

DBMS_XEVENT.ISNULL (
path       IN   XDBPath)
RETURN BOOLEAN;

DBMS_XEVENT.ISNULL (
link       IN   XDBLink)
RETURN BOOLEAN;

パラメータ

表190-40 ISNULLファンクションのパラメータ

パラメータ

説明

ev

指定したタイプのイベント。

hl

ハンドラのリスト。

handler

ハンドラ。

path

パス。

REMOVEプロシージャ

このプロシージャは、指定のハンドラをハンドラ・リストから削除します。

関連項目:
このグループの他のサブプログラムについては、「XDBHandlerListタイプのサブプログラム」を参照してください。

構文

DBMS_XEVENT.REMOVE (
hl       IN OUT   XDBHandlerList,
handler  IN       XDBHandler);

パラメータ

表190-41 REMOVEプロシージャのパラメータ

パラメータ

説明

hl

ハンドラのリスト。

handler

ハンドラ。

SETRENDERPATHプロシージャ

このプロシージャは、表示された内容を含むリソースのパスを指定します。GETOUTPUTSTREAMファンクションによって戻されたストリームが書き込まれた後、またはSETRENDERSTREAMプロシージャがコールされた後に、このプロシージャをコールするとエラーが発生するので、これは行わないでください。これは表示イベントに対してのみ有効です。

構文

DBMS_XEVENT.SETRENDERPATH (
ev     IN   XDBRepositoryEvent,
path   IN   VARCHAR2);

パラメータ

表190-42 SETRENDERPATHプロシージャのパラメータ

パラメータ

説明

ev

XDBリポジトリ・イベントのオブジェクト。

path

表示された内容を含むリソースのパス。

SETRENDERSTREAMプロシージャ

このプロシージャは、表示される内容を読み取ることができるBLOBを設定します。GETOUTPUTSTREAMによって戻されたストリームが書き込まれた後、またはSETRENDERPATHがコールされた後に、このプロシージャをコールするとエラーが発生するので、これは行わないでください。これは表示イベントに対してのみ有効です。

構文

DBMS_XEVENT.SETRENDERSTREAM (
ev    IN   XDBRepositoryEvent,
istr  IN   BLOB);

パラメータ

表190-43 SETRENDERSTREAMプロシージャのパラメータ

パラメータ

説明

ev

XDBRepositoryEventのオブジェクト。

istr

表示された内容を取得する入力ストリーム。

191 DBMS_XMLDOM

DBMS_XMLDOMパッケージは、XMLTypeオブジェクトへのアクセスに使用されます。また、このパッケージによって、HTMLドキュメントとXML文書用のアプリケーション・プログラミング・インタフェースであるDocument Object Model(DOM)が実装されます。

関連項目:
『Oracle XML Developer's Kitプログラマーズ・ガイド』

この章では、次の項目について説明します。

- DBMS_XMLDOMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- タイプ

- 例外

- サブプログラム・グループ

- DOMNodeサブプログラム

- DOMAttrサブプログラム

- DOMCDataSectionサブプログラム

- DOMCharacterDataサブプログラム

- DOMCommentサブプログラム

- DOMDocumentサブプログラム

- DOMDocumentFragmentサブプログラム

- DOMDocumentTypeサブプログラム

- DOMElementサブプログラム

- DOMEntityサブプログラム

- DOMEntityReferenceサブプログラム

- DOMImplementationサブプログラム

- DOMNamedNodeMapサブプログラム

- DOMNodeListサブプログラム

- DOMNotationサブプログラム

- DOMProcessingInstructionサブプログラム

- DOMTextサブプログラム

- DBMS_XMLDOMサブプログラムの要約

DBMS_XMLDOMの使用方法

- 概要

- セキュリティ・モデル

- 定数

- タイプ

- 例外

- サブプログラム・グループ

概要

Document Object Model (DOM)は、HTMLドキュメントとXML文書用のApplication Program Interface (API)です。ドキュメントの論理構造、およびドキュメントへのアクセスと操作の方法を定義します。DOM仕様では、「ドキュメント」という用語が広い意味で使用されます。XMLは、様々なシステムに保存される数多くの種類の情報を表す言語として、急速に普及してきました。これらの情報は従来「データ」と呼ばれていますが、XMLではこのデータをドキュメント(文書)として表現し、DBMS_XMLDOMパッケージでは、スキーマ・ベースのドキュメントと、非スキーマ・ベースのドキュメントの両方を操作できます。

注意:

- データベースの起動前には、読込みディレクトリと書込みディレクトリをinit.ORAファイルに指定する必要があります。次に例を示します。UTL_FILE_DIR=/mypath/insidemypath

- 読込みおよび書込みを行うファイルは、サーバー・ファイル・システム上に存在する必要があります。

DOMを使用すると、HTMLまたはXML文書の内容へのアクセス、変更、削除または追加を行うことができますが、いくつかの例外があります。特に、XMLの内部および外部のサブセットに対するDOMインタフェースは、まだ仕様化されていません。

DOMのW3C仕様の重要な目的の1つは、広範な環境、プログラミング言語、アプリケーションで使用できる標準的なプログラミング・インタフェースを提供することです。DOM標準はオブジェクト指向ですが、PL/SQLは本質的に手続き型言語であるため、次の変更が必要でした。

- 各種のDOMインタフェース(Node、Elementなど)には、同等のPL/SQLタイプ(それぞれ、DOMNode、DOMElementなど)があります。

- 各種のDOMExceptionコード(WRONG_DOCUMENT_ERR、HIERARCHY_REQUEST_ERRなど)には、同じ名前のPL/SQL例外があります。

- 各種のDOMノード・タイプ・コード(ELEMENT_NODE、ATTRIBUTE_NODEなど)には、同じ名前のPL/SQL定数があります。

- DOMタイプに対して定義されたサブプログラムは、そのDOMタイプをパラメータとして受け取るファンクションまたはプロシージャになります。たとえば、DOMNode nに対してAPPENDCHILDファンクションを実行するために、PL/SQLファンクション(APPENDCHILDファンクション)が用意されています。

- DOMElement elemに対してsetAttributeを実行するには、PL/SQLプロシージャ(SETATTRIBUTEプロシージャ)を使用します。

DOMでは、継承の階層が定義されています。たとえば、Document、ElementおよびAttrは、Nodeのサブタイプとして定義されています(図191-1を参照)。したがって、Nodeインタフェースで定義されているメソッドは、これらのサブタイプでも使用できます。PL/SQLではこのような継承がサポートされないため、MAKENODEファンクションを直接コールすることによって継承が実現されています。様々なDOMタイプに対してMAKENODEをコールすると、それらのDOMタイプがDOMNodeに変換されます。次に、DOMNodeを受け取る適切なファンクションまたはプロシージャをコールすれば、これらのDOMNodeを操作できます。その後、各DOMタイプに固有の機能が必要な場合は、makeXXXファンクション(DOMXXXは目的のDOMタイプ)をコールすれば、DOMNodeを元のDOMタイプに再変換できます。

図191-1 DOMタイプの継承階層図

このインタフェースは、REC-DOM-Level-1-19981001に基づいて実装されています。

セキュリティ・モデル

DBMS_XMLDOMパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

表191-1に、DBMS_XMLDOMで定義されている定数を示します。

表191-1 DBMS_XMLDOMの事前定義定数

定数

タイプ

値

説明

ELEMENT_NODE

PLS_INTEGER

1

ノードは要素です。

ATTRIBUTE_NODE

PLS_INTEGER

2

ノードは属性です。

TEXT_NODE

PLS_INTEGER

3

ノードはテキスト・ノードです。

CDATA_SECTION_NODE

PLS_INTEGER

4

ノードはCDataSectionです。

ENTITY_REFERENCE_NODE

PLS_INTEGER

5

ノードは実体参照です。

ENTITY_NODE

PLS_INTEGER

6

ノードはエンティティです。

PROCESSING_INSTRUCTION_NODE

PLS_INTEGER

7

ノードは処理命令です。

COMMENT_NODE

PLS_INTEGER

8

ノードはコメントです。

DOCUMENT_NODE

PLS_INTEGER

9

ノードはドキュメントです。

DOCUMENT_TYPE_NODE

PLS_INTEGER

10

ノードはDocument Type Definitionです。

DOCUMENT_FRAGMENT_NODE

PLS_INTEGER

11

ノードはドキュメント・フラグメントです。

NOTATION_NODE

PLS_INTEGER

12

ノードは表記法です。

タイプ

表191-2に、DBMS_XMLDOM.DOMTYPEで定義されているタイプを示します。

表191-2 XDB_XMLDOMタイプ

タイプ

説明

DOMATTR

DOMのAttrインタフェースを実装します。

DOMCDATASECTION

DOMのCDataSectionインタフェースを実装します。

DOMCHARACTERDATA

DOMのCharacterDataインタフェースを実装します。

DOMCOMMENT

DOMのCommentインタフェースを実装します。

DOMDOCUMENT

DOMのDocumentインタフェースを実装します。

DOMDOCUMENTFRAGMENT

DOMのDocumentFragmentインタフェースを実装します。

DOMDOCUMENTTYPE

DOMのDocumentTypeインタフェースを実装します。

DOMELEMENT

DOMのElementインタフェースを実装します。

DOMENTITY

DOMのEntityインタフェースを実装します。

DOMENTITYREFERENCE

DOMのEntityReferenceインタフェースを実装します。

DOMIMPLEMENTATION

DOMのImplementationインタフェースを実装します。

DOMNAMEDNODEMAP

DOMのNamedNodeMapインタフェースを実装します。

DOMNODE

DOMのNodeインタフェースを実装します。

DOMNODELIST

DOMのNodeListインタフェースを実装します。

DOMNOTATION

DOMのNotationインタフェースを実装します。

DOMPROCESSINGINSTRUCTION

DOMのProcessingInstructionインタフェースを実装します。

DOMTEXT

DOMのTextインタフェースを実装します。

例外

表191-3に、DBMS_XMLDOMで定義されている例外を示します。

表191-3 DBMS_XMLDOMの例外

例外

説明

DOMSTRING_SIZE_ERR

指定したテキスト範囲がDOMStringに適合しない場合。

HIERARCHY_REQUEST_ERR

ノードが属していない場所にノードが挿入された場合。

INDEX_SIZE_ERR

索引またはサイズが負数か、許容値を超えている場合。

INUSE_ATTRIBUTE_ERR

すでに他で使用中の属性を追加しようとした場合。

INVALID_CHARACTER_ERR

名前などに指定した文字が無効な場合。有効な文字の定義についてはXML Specificationのproduction 2を、有効な名前文字の定義についてはproduction 5を参照してください。

NO_DATA_ALLOWED_ERROR

データをサポートしないノードにデータが指定された場合。

NOT_FOUND_ERR

ノードが存在しないコンテキストでノードを参照しようとした場合。

NO_MODIFICATION_ALLOWED_ERR

変更不可のオブジェクトを変更しようとした場合。

NOT_SUPPORTED_ERR

要求されたタイプのオブジェクトまたは操作が実装でサポートされていない場合。

WRONG_DOCUMENT_ERR

ノードを作成したドキュメント以外のドキュメント(そのノードをサポートしていない)でそのノードが使用された場合。

サブプログラム・グループ

DBMS_XMLDOMサブプログラムは、W3Cインタフェースに従って複数のグループに分割されます。

- DOMNodeサブプログラム

- DOMAttrサブプログラム

- DOMCDataSectionサブプログラム

- DOMCharacterDataサブプログラム

- DOMCommentサブプログラム

- DOMDocumentサブプログラム

- DOMDocumentFragmentサブプログラム

- DOMDocumentTypeサブプログラム

- DOMElementサブプログラム

- DOMEntityサブプログラム

- DOMEntityReferenceサブプログラム

- DOMImplementationサブプログラム

- DOMNamedNodeMapサブプログラム

- DOMNodeListサブプログラム

- DOMNotationサブプログラム

- DOMProcessingInstructionサブプログラム

- DOMTextサブプログラム

DOMNodeサブプログラム

表191-4 DBMS_XMLDOM - DOMNodeサブプログラムの要約

サブプログラム

説明

ADOPTNODEファンクション

別のドキュメントからノードを採用します。

APPENDCHILDファンクション

新規の子をノードに追加します。

CLONENODEファンクション

ノードをクローニングします。

FREENODEプロシージャ

ノードに関連付けられたすべてのリソースを解放します。

GETATTRIBUTESファンクション

ノードの属性を取得します。

GETCHILDNODESファンクション

ノードの子を取得します。

GETEXPANDEDNAMEプロシージャ/ファンクション

ノードの拡張名を取得します。

GETFIRSTCHILDファンクション

ノードの最初の子を取得します。

GETLASTCHILDファンクション

ノードの最後の子を取得します。

GETLOCALNAMEプロシージャ/ファンクション

修飾名のローカル部分を取得します。

GETNAMESPACEプロシージャ/ファンクション

ノードの名前空間URIを取得します。

GETNEXTSIBLINGファンクション

ノードの次の兄弟関係を取得します。

GETNODENAMEファンクション

ノードの名前を取得します。

GETNODETYPEファンクション

ノードのタイプを取得します。

GETNODEVALUEファンクション

ノードの値を取得します。

GETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

ノード値をバイナリ・ストリームとして取得します。

GETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

ノード値を文字ストリームとして取得します。

GETOWNERDOCUMENTファンクション

ノードの所有者ドキュメントを取得します。

GETPARENTNODEファンクション

ノードの親を取得します。

GETPREFIXファンクション

名前空間の接頭辞を取得します。

GETPREVIOUSSIBLINGファンクション

ノードの直前の兄弟関係を取得します。

GETSCHEMANODEファンクション

関連付けられたスキーマURIを取得します。

HASATTRIBUTESファンクション

ノードに属性が存在するかどうかをテストします。

HASCHILDNODESファンクション

ノードに子ノードが存在するかどうかをテストします。

IMPORTNODEファンクション

別のドキュメントからノードをインポートします。

INSERTBEFOREファンクション

参照先の子の前に子を挿入します。

ISNULLファンクション

ノードがNULLかどうかをテストします。

MAKEATTRファンクション

ノードをAttrに変換します。

MAKECDATASECTIONファンクション

ノードをCDataSectionに変換します。

MAKECHARACTERDATAファンクション

ノードをCharacterDataに変換します。

MAKECOMMENTファンクション

ノードをCommentに変換します。

MAKEDOCUMENTファンクション

ノードをDOMDocumentに変換します。

MAKEDOCUMENTFRAGMENTファンクション

ノードをDOMDocumentFragmentに変換します。

MAKEDOCUMENTTYPEファンクション

ノードをDOMDcumentTypeに変換します。

MAKEELEMENTファンクション

ノードをDOMElementに変換します。

MAKEENTITYファンクション

ノードをDOMEntityに変換します。

MAKEENTITYREFERENCEファンクション

ノードをDOMEntityReferenceに変換します。

MAKENOTATIONファンクション

ノードをDOMNotationに変換します。

MAKEPROCESSINGINSTRUCTIONファンクション

ノードをDOMProcessingInstructionに変換します。

MAKETEXTファンクション

ノードをDOMTextに変換します。

REMOVECHILDファンクション

指定した子をノードから削除します。

REPLACECHILDファンクション

既存の子ノードを新規の子ノードで置き換えます。

SETNODEVALUEプロシージャ

ノードの値を設定します。

SETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

ノード値をバイナリ・ストリームとして設定します。

SETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

ノード値を文字ストリームとして設定します。

SETPREFIXプロシージャ

名前空間の接頭辞を設定します。

USEBINARYSTREAMファンクション

ストリームが有効であることを確認します。

WRITETOBUFFERプロシージャ

ノードの内容をバッファに書き込みます。

WRITETOCLOBプロシージャ

ノードの内容をCLOBに書き込みます。

WRITETOFILEプロシージャ

ノードの内容をファイルに書き込みます。

DOMAttrサブプログラム

表191-5 DBMS_XMLDOM - DOMAttrサブプログラムの要約

メソッド

説明

GETEXPANDEDNAMEプロシージャ/ファンクション

属性の拡張名を取得します。

GETLOCALNAMEプロシージャ/ファンクション

属性のローカル名を取得します。

GETNAMEファンクション

属性の名前を取得します。

GETNAMESPACEプロシージャ/ファンクション

属性の名前空間URIを取得します。

GETOWNERELEMENTファンクション

属性の親である要素ノードを取得します。

GETQUALIFIEDNAMEファンクション

属性の修飾名を取得します。

GETSPECIFIEDファンクション

要素に属性が指定されているかどうかをテストします。

GETVALUEファンクション

属性の値を取得します。

ISNULLファンクション

属性ノードがNULLかどうかをテストします。

MAKENODEファンクション

属性をノードに変換します。

SETVALUEプロシージャ

属性の値を設定します。

DOMCDataSectionサブプログラム

表191-6 DBMS_XMLDOM - DOMCdataサブプログラムの要約

メソッド

説明

ISNULLファンクション

CDataSectionがNULLかどうかをテストします。

MAKENODEファンクション

CDataSectionをノードに変換します。

DOMCharacterDataサブプログラム

表191-7 DBMS_XMLDOM - DOMCharacterDataサブプログラムの要約

メソッド

説明

APPENDDATAプロシージャ

指定したデータをノード・データに追加します。

DELETEDATAプロシージャ

指定したオフセットからデータを削除します。

GETDATAファンクション

ノードのデータを取得します。

GETLENGTHファンクション

データの長さを取得します。

INSERTDATAプロシージャ

指定したオフセットでノード内にデータを挿入します。

ISNULLファンクション

CharacterDataがNULLかどうかをテストします。

MAKENODEファンクション

CharacterDataをノードに変換します。

REPLACEDATAプロシージャ

ノード内の特定範囲の文字列を新しい文字列で置き換えます。

SETDATAプロシージャ

データをノードに設定します。

SUBSTRINGDATAファンクション

データのサブストリングを取得します。

DOMCommentサブプログラム

表191-8 DBMS_XMLDOM - DOMCommentサブプログラムの要約

メソッド

説明

ISNULLファンクション

コメントがNULLかどうかをテストします。

MAKENODEファンクション

コメントをノードに変換します。

DOMDocumentサブプログラム

表191-9 DBMS_XMLDOM - DOMDocumentサブプログラムの要約

メソッド

説明

CREATEATTRIBUTEファンクション

属性を作成します。

CREATECDATASECTIONファンクション

CDataSectionノードを作成します。

CREATECOMMENTファンクション

コメント・ノードを作成します。

CREATEDOCUMENTファンクション

新規ドキュメントを作成します。

CREATEDOCUMENTFRAGMENTファンクション

新規のドキュメント・フラグメントを作成します。

CREATEELEMENTファンクション

新規の要素を作成します。

CREATEENTITYREFERENCEファンクション

実体参照を作成します。

CREATEPROCESSINGINSTRUCTIONファンクション

処理命令を作成します。

CREATETEXTNODEファンクション

テキスト・ノードを作成します。

FREEDOCFRAGプロシージャ

ドキュメント・フラグメントを解放します。

FREEDOCUMENTプロシージャ

ドキュメントを解放します。

GETCHARSETファンクション

DOMドキュメントのキャラクタ・セットを取得します。

GETDOCTYPEファンクション

ドキュメントのDTDを取得します。

GETDOCUMENTELEMENTファンクション

ドキュメントのルート要素を取得します。

GETELEMENTSBYTAGNAMEファンクション

次のものを取得します。

- 指定したタグ名を持つDOMNODELIST内の要素

- 指定したタグ名を持つDOMNODELISTのサブツリー内の要素

GETIMPLEMENTATIONファンクション

DOMの実装を取得します。

GETSTANDALONEファンクション

ドキュメントのスタンドアロン・プロパティを取得します。

GETVERSIONファンクション

ドキュメントのバージョンを取得します。

GETXMLTYPEファンクション

DOMDocumentに関連付けられたXMLTypeを取得します。

ISNULLファンクション

ドキュメントがNULLかどうかをテストします。

MAKENODEファンクション

ドキュメントをノードに変換します。

NEWDOMDOCUMENTファンクション

新規ドキュメントを作成します。

SETCHARSETプロシージャ

DOM文書のキャラクタ・セットを設定します。

SETDOCTYPEプロシージャ

ドキュメントのDTDを設定します。

SETSTANDALONEプロシージャ

ドキュメントのスタンドアロン・プロパティを設定します。

SETVERSIONプロシージャ

ドキュメントのバージョンを設定します。

WRITETOBUFFERプロシージャ

ドキュメントをバッファに書き込みます。

WRITETOCLOBプロシージャ

ドキュメントをCLOBに書き込みます。

WRITETOFILEプロシージャ

ドキュメントをファイルに書き込みます。

DOMDocumentFragmentサブプログラム

表191-10 DBMS_XMLDOM - DOMDocumentFragmentサブプログラムの要約

メソッド

説明

FREEDOCFRAGプロシージャ

指定したドキュメント・フラグメントを解放します。

ISNULLファンクション

ドキュメント・フラグメントがNULLかどうかをテストします。

MAKENODEファンクション

ドキュメント・フラグメントをノードに変換します。

WRITETOBUFFERプロシージャ

ドキュメント・フラグメントの内容をバッファに書き込みます。

DOMDocumentTypeサブプログラム

表191-11 DBMS_XMLDOM - DOMDocumentTypeサブプログラムの要約

メソッド

説明

FINDENTITYファンクション

ドキュメント・タイプで指定のエンティティを検索します。

FINDNOTATIONファンクション

ドキュメント・タイプで指定の表記法を検索します。

GETENTITIESファンクション

ドキュメント・タイプのエンティティのノードマップを取得します。

GETNAMEファンクション

ドキュメント・タイプの名前を取得します。

GETNOTATIONSファンクション

ドキュメント・タイプの表記法のノードマップを取得します。

GETPUBLICIDファンクション

ドキュメント・タイプの公開識別子を取得します。

GETSYSTEMIDファンクション

ドキュメント・タイプのシステム識別子を取得します。

ISNULLファンクション

ドキュメント・タイプがNULLかどうかをテストします。

MAKENODEファンクション

ドキュメント・タイプをノードに変換します。

DOMElementサブプログラム

表191-12 DBMS_XMLDOM - DOMElementサブプログラムの要約

メソッド

説明

FREEELEMENTプロシージャ

DOMElementハンドルに割り当てられているメモリーを解放します。

GETATTRIBUTEファンクション

指定した名前の属性ノードを取得します。

GETATTRIBUTENODEファンクション

指定した名前の属性ノードを取得します。

GETCHILDRENBYTAGNAMEファンクション

タグ名を指定して要素の子を取得します。

GETELEMENTSBYTAGNAMEファンクション

次のものを取得します。

- 指定したタグ名を持つDOMNODELIST内の要素

- 指定したタグ名を持つDOMNODELISTのサブツリー内の要素

GETEXPANDEDNAMEプロシージャ/ファンクション

要素の拡張名を取得します。

GETLOCALNAMEプロシージャ/ファンクション

要素のローカル名を取得します。

GETNAMESPACEプロシージャ/ファンクション

要素の名前空間URIを取得します。

GETQUALIFIEDNAMEファンクション

要素の修飾名を取得します。

GETTAGNAMEファンクション

要素のタグ名を取得します。

HASATTRIBUTEファンクション

指定した属性が定義されているかどうかをテストします。

ISNULLファンクション

要素がNULLかどうかをテストします。

MAKENODEファンクション

要素をノードに変換します。

NORMALIZEプロシージャ

要素のテキストの子を正規化します。

REMOVEATTRIBUTEプロシージャ

指定した名前の属性を削除します。

REMOVEATTRIBUTENODEファンクション

要素内の属性ノードを削除します。

RESOLVENAMESPACEPREFIXファンクション

指定した名前空間URIの接頭辞を解決します。

SETATTRIBUTEプロシージャ

指定した名前の属性を設定します。

SETATTRIBUTENODEファンクション

属性ノードを要素に追加します。

DOMEntityサブプログラム

表191-13 DBMS_XMLDOM - DOMEntityサブプログラムの要約

メソッド

説明

GETNOTATIONNAMEファンクション

エンティティの表記法の名前を取得します。

GETPUBLICIDファンクション

エンティティの公開識別子を取得します。

GETSYSTEMIDファンクション

エンティティのシステム識別子を取得します。

ISNULLファンクション

エンティティがNULLかどうかをテストします。

MAKENODEファンクション

エンティティをノードに変換します。

DOMEntityReferenceサブプログラム

表191-14 DBMS_XMLDOM - DOMEntityReferenceサブプログラムの要約

メソッド

説明

ISNULLファンクション

DOMEntityReferenceがNULLかどうかをテストします。

MAKENODEファンクション

DOMEntityReferenceをNULLに変換します。

DOMImplementationサブプログラム

表191-15 DBMS_XMLDOM - DOMImplementationサブプログラムの要約

メソッド

説明

ISNULLファンクション

DOMImplementationノードがNULLかどうかをテストします。

HASFEATUREファンクション

DOMImplementationが特定の機能を実装しているかどうかをテストします。

DOMNamedNodeMapサブプログラム

表191-16 DBMS_XMLDOM - DOMNamedNodeMapサブプログラムの要約

メソッド

説明

GETLENGTHファンクション

マップ内の項目の数を取得します。

GETNAMEDITEMファンクション

指定した名前の項目を取得します。

ISNULLファンクション

NamedNodeMapがNULLかどうかをテストします。

ITEMファンクション

索引を指定してマップ内の項目を取得します。

REMOVENAMEDITEMファンクション

指定した名前の項目を削除します。

SETNAMEDITEMファンクション

指定した名前の項目をマップに追加します。

DOMNodeListサブプログラム

表191-17 DBMS_XMLDOM - DOMNodeListサブプログラムの要約

メソッド

説明

FREENODELISTプロシージャ

ノード・リストに関連付けられたすべてのリソースを解放します。

GETLENGTHファンクション

リスト内の項目の数を取得します。

ISNULLファンクション

NodeListがNULLかどうかをテストします。

ITEMファンクション

索引を指定してリスト内の項目を取得します。

DOMNotationサブプログラム

表191-18 DBMS_XMLDOM - DOMNotationサブプログラムの要約

メソッド

説明

GETPUBLICIDファンクション

表記法の公開識別子を取得します。

GETSYSTEMIDファンクション

表記法のシステム識別子を取得します。

ISNULLファンクション

表記法がNULLかどうかをテストします。

MAKENODEファンクション

表記法をノードに変換します。

DOMProcessingInstructionサブプログラム

表191-19 DBMS_XMLDOM - DOMProcessingInstructionサブプログラムの要約

メソッド

説明

GETDATAファンクション

処理命令のデータを取得します。

GETTARGETファンクション

処理命令のターゲットを取得します。

ISNULLファンクション

処理命令がNULLかどうかをテストします。

MAKENODEファンクション

処理命令をノードに変換します。

SETDATAプロシージャ

処理命令のデータを設定します。

DOMTextサブプログラム

表191-20 DBMS_XMLDOM - DOMTextサブプログラムの要約

メソッド

説明

ISNULLファンクション

テキストがNULLかどうかをテストします。

MAKENODEファンクション

テキストをノードに変換します。

SPLITTEXTファンクション

テキスト・ノードの内容を2つのテキスト・ノードに分割します。

DBMS_XMLDOMサブプログラムの要約

表191-21 DBMS_XMLDOMパッケージのサブプログラムの要約

サブプログラム

説明

グループ

ADOPTNODEファンクション

別のドキュメントからノードを採用します。

DOMNodeサブプログラム

APPENDCHILDファンクション

新規の子をノードに追加します。

DOMNodeサブプログラム

APPENDDATAプロシージャ

指定したデータをノード・データに追加します。

DOMCharacterDataサブプログラム

CLONENODEファンクション

ノードをクローニングします。

DOMNodeサブプログラム

CREATEATTRIBUTEファンクション

属性を作成します。

DOMDocumentサブプログラム

CREATECDATASECTIONファンクション

CDataSectionノードを作成します。

DOMDocumentサブプログラム

CREATECOMMENTファンクション

コメント・ノードを作成します。

DOMDocumentサブプログラム

CREATEDOCUMENTファンクション

新規ドキュメントを作成します。

DOMDocumentサブプログラム

CREATEDOCUMENTFRAGMENTファンクション

新規のドキュメント・フラグメントを作成します。

DOMDocumentサブプログラム

CREATEELEMENTファンクション

新規の要素を作成します。

DOMDocumentサブプログラム

CREATEENTITYREFERENCEファンクション

実体参照を作成します。

DOMDocumentサブプログラム

CREATEPROCESSINGINSTRUCTIONファンクション

処理命令を作成します。

DOMDocumentサブプログラム

CREATETEXTNODEファンクション

テキスト・ノードを作成します。

DOMDocumentサブプログラム

DELETEDATAプロシージャ

指定したオフセットからデータを削除します。

DOMCharacterDataサブプログラム

FINDENTITYファンクション

ドキュメント・タイプで指定のエンティティを検索します。

DOMDocumentTypeサブプログラム

FINDNOTATIONファンクション

ドキュメント・タイプで指定の表記法を検索します。

DOMDocumentTypeサブプログラム

FREEDOCFRAGプロシージャ

ドキュメント・フラグメントを解放します。

DOMDocumentサブプログラムおよびDOMDocumentFragmentサブプログラム

FREEDOCUMENTプロシージャ

ドキュメントを解放します。

DOMDocumentサブプログラム

FREEELEMENTプロシージャ

DOMElementハンドルに割り当てられているメモリーを解放します。

DOMElementサブプログラム

FREENODEプロシージャ

ノードに関連付けられたすべてのリソースを解放します。

DOMNodeサブプログラム

FREENODELISTプロシージャ

ノード・リストに関連付けられたすべてのリソースを解放します。

DOMNodeListサブプログラム

GETATTRIBUTEファンクション

指定した名前の属性ノードを取得します。

DOMElementサブプログラム

GETATTRIBUTENODEファンクション

指定した名前の属性ノードを取得します。

DOMElementサブプログラム

GETATTRIBUTESファンクション

ノードの属性を取得します。

DOMNodeサブプログラム

GETCHARSETファンクション

DOMドキュメントのキャラクタ・セットを取得します。

DOMDocumentサブプログラム

GETCHILDNODESファンクション

ノードの子を取得します。

DOMNodeサブプログラム

GETCHILDRENBYTAGNAMEファンクション

タグ名を指定して要素の子を取得します。

DOMCharacterDataサブプログラム

GETDATAファンクション

次のものを取得します。

- ノードのデータ

- 処理命令のデータ

- DOMCharacterDataサブプログラム

- DOMProcessingInstructionサブプログラム

GETDOCTYPEファンクション

ドキュメントのDTDを取得します。

DOMDocumentサブプログラム

GETDOCUMENTELEMENTファンクション

ドキュメントのルート要素を取得します。

DOMDocumentサブプログラム

GETELEMENTSBYTAGNAMEファンクション

次のものを取得します。

- 指定したタグ名を持つDOMNODELIST内の要素

- 指定したタグ名を持つDOMNODELISTのサブツリー内の要素

- DOMDocumentサブプログラム

- DOMElementサブプログラム

GETENTITIESファンクション

ドキュメント・タイプのエンティティのノードマップを取得します。

DOMDocumentTypeサブプログラム

GETEXPANDEDNAMEプロシージャ/ファンクション

次のものを取得します。

- ノードの拡張名

- 属性の拡張名

- 要素の拡張名

- DOMNodeサブプログラム

- DOMAttrサブプログラム

- DOMElementサブプログラム

GETFIRSTCHILDファンクション

ノードの最初の子を取得します。

DOMNodeサブプログラム

GETIMPLEMENTATIONファンクション

DOMの実装を取得します。

DOMDocumentサブプログラム

GETLASTCHILDファンクション

ノードの最後の子を取得します。

DOMNodeサブプログラム

GETLENGTHファンクション

次のものを取得します。

- データの長さ

- マップ内の項目の数

- リスト内の項目の数

- DOMCharacterDataサブプログラム

- DOMNamedNodeMapサブプログラム

- DOMNodeListサブプログラム

GETLOCALNAMEプロシージャ/ファンクション

次のものを取得します。

- 修飾名のローカル部分

- 属性のローカル名

- 要素のローカル名

- DOMNodeサブプログラム

- DOMAttrサブプログラム

- DOMElementサブプログラム

GETNAMEファンクション

次のものを取得します。

- 属性の名前

- ドキュメント・タイプの名前

- DOMAttrサブプログラム

- DOMDocumentTypeサブプログラム

GETNAMEDITEMファンクション

次のものを取得します。

- 指定した名前を持つ項目

- 名前空間URI

- DOMNamedNodeMapサブプログラム

- DOMNamedNodeMapサブプログラム

GETNAMESPACEプロシージャ/ファンクション

次のものを取得します。

- ノードの名前空間URI

- 属性の名前空間URI

- 要素の名前空間URI

- DOMNodeサブプログラム

- DOMAttrサブプログラム

- DOMElementサブプログラム

GETNEXTSIBLINGファンクション

ノードの次の兄弟関係を取得します。

DOMNodeサブプログラム

GETNODENAMEファンクション

ノードの名前を取得します。

DOMNodeサブプログラム

GETNODETYPEファンクション

ノードのタイプを取得します。

DOMNodeサブプログラム

GETNODEVALUEファンクション

ノードの値を取得します。

DOMNodeサブプログラム

GETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

ノード値をバイナリ・ストリームとして取得します。

DOMNodeサブプログラム

GETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

ノード値を文字ストリームとして取得します。

DOMNodeサブプログラム

GETNOTATIONNAMEファンクション

エンティティの表記法の名前を取得します。

DOMEntityサブプログラム

GETNOTATIONSファンクション

ドキュメント・タイプの表記法のノードマップを取得します。

DOMDocumentTypeサブプログラム

GETTARGETファンクション

処理命令のターゲットを取得します。

DOMProcessingInstructionサブプログラム

GETOWNERDOCUMENTファンクション

ノードの所有者ドキュメントを取得します。

DOMNodeサブプログラム

GETOWNERELEMENTファンクション

属性の親である要素ノードを取得します。

DOMAttrサブプログラム

GETPARENTNODEファンクション

ノードの親を取得します。

DOMNodeサブプログラム

GETPREFIXファンクション

名前空間の接頭辞を取得します。

)

DOMNodeサブプログラム

GETPREVIOUSSIBLINGファンクション

ノードの直前の兄弟関係を取得します。

DOMNodeサブプログラム

GETPUBLICIDファンクション

次のものを取得します。

- ドキュメント・タイプの公開識別子

- エンティティの公開識別子

- 表記法の公開識別子

- DOMDocumentTypeサブプログラム

- DOMEntityサブプログラム

- DOMNotationサブプログラム

GETQUALIFIEDNAMEファンクション

次のものを取得します。

- 属性の修飾名

- 要素の修飾名

- DOMAttrサブプログラム

- DOMElementサブプログラム

GETSCHEMANODEファンクション

関連付けられたスキーマURIを取得します。

DOMNodeサブプログラム

GETSPECIFIEDファンクション

要素に属性が指定されているかどうかをテストします。

DOMAttrサブプログラム

GETSTANDALONEファンクション

ドキュメントのスタンドアロン・プロパティを取得します。

DOMDocumentサブプログラム

GETSYSTEMIDファンクション

次のものを取得します。

- ドキュメント・タイプのシステム識別子

- エンティティのシステム識別子

- 表記法のシステム識別子

- DOMDocumentTypeサブプログラム

- DOMEntityサブプログラム

- DOMNotationサブプログラム

GETTAGNAMEファンクション

要素のタグ名を取得します。

DOMElementサブプログラム

GETVALUEファンクション

属性の値を取得します。

DOMAttrサブプログラム

GETVERSIONファンクション

ドキュメントのバージョンを取得します。

DOMDocumentサブプログラム

GETXMLTYPEファンクション

DOMDocumentに関連付けられたXMLTypeを取得します。

DOMDocumentサブプログラム

HASATTRIBUTESファンクション

ノードに属性が存在するかどうかをテストします。

DOMNodeサブプログラム

HASATTRIBUTEファンクション

指定した属性が定義されているかどうかをテストします。

DOMElementサブプログラム

HASCHILDNODESファンクション

ノードに子ノードが存在するかどうかをテストします。

DOMNodeサブプログラム

HASFEATUREファンクション

DOMImplementationが特定の機能を実装しているかどうかをテストします。

DOMImplementationサブプログラム

IMPORTNODEファンクション

別のドキュメントからノードをインポートします。

DOMNodeサブプログラム

INSERTBEFOREファンクション

参照先の子の前に子を挿入します。

DOMNodeサブプログラム

INSERTDATAプロシージャ

指定したオフセットでノード内にデータを挿入します。

DOMCharacterDataサブプログラム

ISNULLファンクション

次のテストを実行します。

- ノードがNULLかどうかのテスト

- 属性ノードがNULLかどうかのテスト

- CDataSectionがNULLかどうかのテスト

- CharacterDataがNULLかどうかのテスト

- コメントがNULLかどうかのテスト

- ドキュメントがNULLかどうかのテスト

- ドキュメント・フラグメントがNULLかどうかのテスト

- ドキュメント・タイプがNULLかどうかのテスト

- 要素がNULLかどうかのテスト

- エンティティがNULLかどうかのテスト

- DOMEntityReferenceがNULLかどうかのテスト

- DOMImplementationノードがNULLかどうかのテスト

- NamedNodeMapがNULLかどうかのテスト

- NodeListがNULLかどうかのテスト

- 表記法がNULLかどうかのテスト

- 処理命令がNULLかどうかのテスト

- テキストがNULLかどうかのテスト

- DOMNodeサブプログラム

- DOMAttrサブプログラム

- DOMCDataSectionサブプログラム

- DOMCharacterDataサブプログラム

- DOMCommentサブプログラム

- DOMDocumentサブプログラム

- DOMDocumentFragmentサブプログラム

- DOMDocumentTypeサブプログラム

- DOMElementサブプログラム

- DOMEntityサブプログラム

- DOMEntityReferenceサブプログラム

- DOMImplementationサブプログラム

- DOMNamedNodeMapサブプログラム

- DOMNodeListサブプログラム

- DOMNotationサブプログラム

- DOMProcessingInstructionサブプログラム

- DOMTextサブプログラム

ITEMファンクション

次のものを取得します。

- 索引が指定された、マップ内の項目

- 索引が指定された、NodeList内の項目

- DOMNamedNodeMapサブプログラム

- DOMNodeListサブプログラム

MAKEATTRファンクション

ノードをAttrに変換します。

DOMNodeサブプログラム

MAKECDATASECTIONファンクション

ノードをCDataSectionに変換します。

DOMNodeサブプログラム

MAKECHARACTERDATAファンクション

ノードをCharacterDataに変換します。

DOMNodeサブプログラム

MAKECOMMENTファンクション

ノードをCommentに変換します。

DOMNodeサブプログラム

MAKEDOCUMENTファンクション

ノードをDOMDocumentに変換します。

DOMNodeサブプログラム

MAKEDOCUMENTFRAGMENTファンクション

ノードをDOMDocumentFragmentに変換します。

DOMNodeサブプログラム

MAKEDOCUMENTTYPEファンクション

ノードをDOMDcumentTypeに変換します。

DOMNodeサブプログラム

MAKEELEMENTファンクション

ノードをDOMElementに変換します。

DOMNodeサブプログラム

MAKEENTITYファンクション

ノードをDOMEntityに変換します。

DOMNodeサブプログラム

MAKEENTITYREFERENCEファンクション

ノードをDOMEntityReferenceに変換します。

DOMNodeサブプログラム

MAKENODEファンクション

次の変換を実行します。

- 属性からノードへの変換

- CDataSectionからノードへの変換

- CharacterDataからノードへの変換

- コメントからノードへの変換

- ドキュメントからノードへの変換

- ドキュメント・フラグメントからノードへの変換

- ドキュメント・タイプからノードへの変換

- 要素からノードへの変換

- エンティティからノードへの変換

- DOMEntityReferenceからNULLへの変換

- 表記法からノードへの変換

- 処理命令からノードへの変換

- テキストからノードへの変換

- DOMAttrサブプログラム

- DOMCDataSectionサブプログラム

- DOMCharacterDataサブプログラム

- DOMCommentサブプログラム

- DOMDocumentサブプログラム

- DOMDocumentFragmentサブプログラム

- DOMDocumentTypeサブプログラム

- DOMElementサブプログラム

- DOMEntityサブプログラム

- DOMEntityReferenceサブプログラム

- DOMNotationサブプログラム

- DOMProcessingInstructionサブプログラム

- DOMTextサブプログラム

MAKENOTATIONファンクション

ノードをDOMNotationに変換します。

DOMNodeサブプログラム

MAKEPROCESSINGINSTRUCTIONファンクション

ノードをDOMProcessingInstructionに変換します。

DOMNodeサブプログラム

MAKETEXTファンクション

ノードをDOMTextに変換します。

DOMNodeサブプログラム

NEWDOMDOCUMENTファンクション

新規ドキュメントを作成します。

DOMDocumentサブプログラム

NORMALIZEプロシージャ

要素のテキストの子を正規化します。

DOMElementサブプログラム

REMOVEATTRIBUTEプロシージャ

指定した名前の属性を削除します。

DOMElementサブプログラム

REMOVEATTRIBUTENODEファンクション

要素内の属性ノードを削除します。

DOMElementサブプログラム

REMOVECHILDファンクション

指定した子をノードから削除します。

DOMNodeサブプログラム

REMOVENAMEDITEMファンクション

指定した名前の項目を削除します。

DOMNamedNodeMapサブプログラム

REPLACECHILDファンクション

既存の子ノードを新規の子ノードで置き換えます。

DOMNodeサブプログラム

REPLACEDATAプロシージャ

ノード内の特定範囲の文字列を新しい文字列で置き換えます。

DOMCharacterDataサブプログラム

RESOLVENAMESPACEPREFIXファンクション

指定した名前空間URIの接頭辞を解決します。

DOMElementサブプログラム

SETATTRIBUTEプロシージャ

指定した名前の属性を設定します。

DOMElementサブプログラム

SETATTRIBUTENODEファンクション

属性ノードを要素に追加します。

DOMElementサブプログラム

SETCHARSETプロシージャ

DOM文書のキャラクタ・セットを設定します。

DOMDocumentサブプログラム

SETDATAプロシージャ

次のデータを設定します。

- ノードのデータ

- 処理命令のデータ

- DOMCharacterDataサブプログラム

- DOMProcessingInstructionサブプログラム

SETDOCTYPEプロシージャ

ドキュメントのDTDを設定します。

DOMDocumentサブプログラム

SETNAMEDITEMファンクション

指定した名前の項目をマップに追加します。

DOMNamedNodeMapサブプログラム

SETNODEVALUEプロシージャ

ノードの値を設定します。

DOMNodeサブプログラム

SETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

ノード値をバイナリ・ストリームとして設定します。

DOMNodeサブプログラム

SETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

ノード値を文字ストリームとして設定します。

DOMNodeサブプログラム

SETPREFIXプロシージャ

名前空間の接頭辞を設定します。

DOMNodeサブプログラム

SETSTANDALONEプロシージャ

ドキュメントのスタンドアロン・プロパティを設定します。

DOMDocumentサブプログラム

SETVALUEプロシージャ

属性の値を設定します。

DOMAttrサブプログラム

SETVERSIONプロシージャ

ドキュメントのバージョンを設定します。

DOMDocumentサブプログラム

SPLITTEXTファンクション

テキスト・ノードの内容を2つのテキスト・ノードに分割します。

DOMTextサブプログラム

SUBSTRINGDATAファンクション

データのサブストリングを取得します。

DOMCharacterDataサブプログラム

USEBINARYSTREAMファンクション

ストリームが使用に有効であることを確認します。

DOMNodeサブプログラム

WRITETOBUFFERプロシージャ

次の書込み処理を実行します。

- バッファへのノードの内容の書込み

- バッファへのドキュメントの書込み

- バッファへのドキュメント・フラグメントの内容の書込み

- DOMNodeサブプログラム

- DOMDocumentサブプログラム

- DOMDocumentFragmentサブプログラム

WRITETOCLOBプロシージャ

次の書込み処理を実行します。

- CLOBへのノードの内容の書込み

- CLOBへのドキュメントの書込み

- DOMNodeサブプログラム

- DOMDocumentサブプログラム

WRITETOFILEプロシージャ

次の書込み処理を実行します。

- ファイルへのノードの内容の書込み

- ファイルへのドキュメントの書込み

- DOMNodeサブプログラム

- DOMDocumentサブプログラム

ADOPTNODEファンクション

このファンクションは、別のドキュメントからノードを採用して、この新規ノードを戻します。

関連項目:
このグループの他のサブプログラムについては、「DOMNodeサブプログラム」を参照してください。

構文

DBMS_XMLDOM.ADOPTNODE(
doc            IN   DOMDocument,
importedNode   IN   DOMNode)
RETURN DOMNODE;

パラメータ

表191-22 ADOPTNODEファンクションのパラメータ

パラメータ

説明

doc

ノードを採用するドキュメント。

importedNode

採用するノード。

使用上の注意

ADOPTNODEファンクションはソース・ドキュメントからノードを削除します。一方、IMPORTNODEファンクションはノードのクローンをソース・ドキュメント内に作成します。

APPENDCHILDファンクション

このファンクションは、ノードnewchildを、指定したノードの子ノード・リストの最後に追加し、新しく追加したノードを戻します。newchildがすでにツリーに追加されている場合は、そのノードが最初に削除されます。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.APPENDCHILD(
n          IN    DOMNode,
newchild   IN    DOMNode)
RETURN DOMNODE;

パラメータ

表191-23 APPENDCHILDファンクションのパラメータ

パラメータ

説明

n

DOMNode

newchild

ノードnの子ノード・リストに追加する子ノード。

APPENDDATAプロシージャ

このプロシージャは、ノードの文字データの最後に文字列を追加します。データが正常に追加されると、連結データと指定の文字列引数にアクセスできます。

関連項目:
DOMCharacterDataサブプログラム

構文

DBMS_XMLDOM.APPENDDATA(
cd      IN    DOMCHARACTERDATA,
arg     IN    VARCHAR2);

パラメータ

表191-24 APPENDDATAプロシージャのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

arg

既存のデータに追加するデータ。

CLONENODEファンクション

このファンクションは、指定したノードの複製を戻し、ノードの汎用コピー・コンストラクタとして機能します。複製ノードに親はないため、複製ノードの親ノードはNULLになります。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.CLONENODE(
n       IN    DOMNODE,
deep    IN    BOOLEAN)
RETURN DOMNODE;

パラメータ

表191-25 CLONENODEファンクションのパラメータ

パラメータ

説明

n

DOMNODE

deep

子がクローニング対象かどうかを指定します。

使用上の注意

- 要素のクローニングによって、すべての属性とその値(デフォルトの属性を示すためにXMLプロセッサで生成された値を含む)がコピーされます。ただし、このメソッドは、ディープ・クローンの場合を除き、格納されているテキストをコピーしません。これは、テキストが子のテキスト・ノードに格納されているためです。

- 属性の直接クローニングでは、要素のクローニング操作の一部としてクローニングする場合とは対照的に、指定した属性(TRUEに指定)が戻されます。

- 他のタイプのノードをクローニングすると、単にそのノードのコピーが戻されます。

CREATEATTRIBUTEファンクション

このファンクションは、DOMATTRノードを作成します。

関連項目:
DOMDocumentサブプログラム

構文

指定した名前を持つDOMATTRノードを作成します。

DBMS_XMLDOM.CREATEATTRIBUTE(
doc     IN    DOMDOCUMENT,
name    IN    VARCHAR2)
RETURN DOMATTR;

指定した名前と名前空間URIを持つDOMATTRノードを作成します。

DBMS_XMLDOM.CREATEATTRIBUTE(
doc     IN    DOMDOCUMENT,
qname    IN    VARCHAR2,
ns      IN     VARCHAR2)
RETURN DOMATTR;

パラメータ

表191-26 CREATEATTRIBUTEファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

qname

新規の属性修飾名。

ns

名前空間。

CREATECDATASECTIONファンクション

このファンクションは、DOMCDATASECTIONノードを作成します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.CREATECDATASECTION(
doc     IN      DOMDOCUMENT,
data    IN      VARCHAR2)
RETURN DOMCDATASECTION;

パラメータ

表191-27 CREATECDATASECTIONファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

data

DOMCDATASECTIONノードの内容。

CREATECOMMENTファンクション

このファンクションは、DOMCOMMENTノードを作成します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.CREATECOMMENT(
doc      IN      DOMDOCUMENT,
data     IN      VARCHAR2)
RETURN DOMCOMMENT;

パラメータ

表191-28 CREATECOMMENTファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

data

DOMCommentノードの内容。

CREATEDOCUMENTファンクション

このファンクションは、指定した名前空間URI、ルート要素名、DTDを持つDOMDOCUMENTノードを作成します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.CREATEDOCUMENT(
namespaceURI      IN     VARCHAR2,
qualifiedName     IN     VARCHAR2,
doctype           IN     DOMTYPE := NULL)
RETURN DOMDOCUMENT;

パラメータ

表191-29 CREATEDOCUMENTファンクションのパラメータ

パラメータ

説明

namespaceURI

名前空間URI。

qualifiedName

ルート要素名。

doctype

ドキュメント・タイプ。

CREATEDOCUMENTFRAGMENTファンクション

このファンクションは、DOMDOCUMENTFRAGMENTを作成します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.CREATEDOCUMENTFRAGMENT(
doc      IN     DOMDOCUMENT)
RETURN DOMDOCUMENTFRAGMENT;

パラメータ

表191-30 CREATEDOCUMENTFRAGMENTファンクションのパラメータ

パラメータ

説明

doc

DOMDocument

CREATEELEMENTファンクション

このファンクションは、DOMELEMENTを作成します。

関連項目:
DOMDocumentサブプログラム

構文

指定した名前を持つDOMElementを作成します。

DBMS_XMLDOM.CREATEELEMENT(
doc        IN      DOMDOCUMENT,
tagName    IN      VARCHAR2)
RETURN DOMELEMENT;

指定した名前と名前空間URIを持つDOMElementを作成します。

DBMS_XMLDOM.CREATEELEMENT(
doc        IN     DOMDOCUMENT,
tagName    IN     VARCHAR2,
ns         IN     VARCHAR2)
RETURN DOMELEMENT;

パラメータ

表191-31 CREATEELEMENTファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

tagName

新しいDOMELEMENTのタグ名。

ns

名前空間。

CREATEENTITYREFERENCEファンクション

このファンクションは、DOMENTITYREFERENCEノードを作成します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.CREATEENTITYREFERENCE(
doc        IN     DOMDOCUMENT,
name       IN     VARCHAR2)
RETURN DOMENTITYREFERENCE;

パラメータ

表191-32 CREATEENTITYREFERENCEファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

name

新規の実体参照の名前。

CREATEPROCESSINGINSTRUCTIONファンクション

このファンクションは、DOMPROCESSINGINSTRUCTIONノードを作成します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.CREATEPROCESSINGINSTRUCTION(
doc       IN      DOMDocument,
target    IN      VARCHAR2,
data      IN      VARCHAR2)
RETURN DOMPROCESSINGINSTRUCTION;

パラメータ

表191-33 CREATEPROCESSINGINSTRUCTIONファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

target

新規の処理命令のターゲット。

data

新規の処理命令のコンテンツ・データ。

CREATETEXTNODEファンクション

このファンクションは、DOMTEXTノードを作成します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.CREATETEXTNODE(
doc      IN     DOMDocument,
data     IN     VARCHAR2)
RETURN DOMTEXT;

パラメータ

表191-34 CREATETEXTNODEファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

data

DOMTextノードの内容。

DELETEDATAプロシージャ

このプロシージャは、特定範囲の文字をノードから削除します。正常に削除されると、データと長さに変更が反映されます。

関連項目:
DOMCharacterDataサブプログラム

構文

DBMS_XMLDOM.DELETEDATA(
cd        IN     DOMCHARACTERDATA,
offset    IN     NUMBER,
cnt       IN     NUMBER);

パラメータ

表191-35 DELETEDATAプロシージャのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

offset

データを削除するオフセット。

cnt

削除する(オフセット以降の)文字数。

FINDENTITYファンクション

このファンクションは、指定のDTDでエンティティを検索し、見つかった場合はそのエンティティを戻します。

関連項目:
DOMDocumentTypeサブプログラム

構文

DBMS_XMLDOM.FINDENTITY(
dt     IN     DOMDOCUMENTTYPE,
name   IN     VARCHAR2,
par    IN     BOOLEAN)
RETURN  DOMENTITY;

パラメータ

表191-36 FINDENTITYファンクションのパラメータ

パラメータ

説明

dt

DTD。

name

検索するエンティティ。

par

エンティティのタイプを示すフラグ。パラメータ・エンティティの場合はTRUE、通常のエンティティの場合はFALSEになります。

FINDNOTATIONファンクション

このファンクションは、指定のDTDで表記法を検索し、見つかった場合はその表記法を戻します。

関連項目:
DOMDocumentTypeサブプログラム

構文

DBMS_XMLDOM.FINDNOTATION(
dt        IN     DOMDocumentType,
name      IN     VARCHAR2)
RETURN DOMNOTATION;

パラメータ

表191-37 FINDNOTATIONファンクションのパラメータ

パラメータ

説明

dt

DTD。

name

検索する表記法。

FREEDOCFRAGプロシージャ

このプロシージャは、指定したドキュメント・フラグメントを解放します。

関連項目:
DOMDocumentサブプログラムおよびDOMDocumentFragmentサブプログラム

構文

DBMS_XMLDOM.FREEDOCFRAG(
df    IN    DOMDOCUMENTFRAGMENT);

パラメータ

表191-38 FREEDOCFRAGプロシージャのパラメータ

パラメータ

説明

df

DOMDocumentFragment。

FREEDOCUMENTプロシージャ

このプロシージャは、DOMDOCUMENTオブジェクトを解放します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.FREEDOCUMENT(
doc     IN     DOMDOCUMENT);

パラメータ

表191-39 FREEDOCUMENTプロシージャのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

FREEELEMENTプロシージャ

このプロシージャは、DOMElementハンドルに割り当てられているメモリーを解放します。

関連項目:
DOMElementサブプログラム

構文

DBMS_XMLDOM.FREENODE(
elem      IN     DOMELEMENT);

パラメータ

表191-40 FREENODEプロシージャのパラメータ

パラメータ

説明

elem

DOMELEMENTタイプ

FREENODEプロシージャ

このプロシージャは、DOMNODEに関連付けられたすべてのリソースを解放します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.FREENODE(
n      IN     DOMNODE);

パラメータ

表191-41 FREENODEプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

FREENODELISTプロシージャ

このプロシージャは、ノード・リストに関連付けられたすべてのリソースを解放します。

関連項目:
DOMNodeListサブプログラム

構文

DBMS_XMLDOM.FREENODE(
nl    IN    DOMNodeList);

パラメータ

表191-42 FREENODEプロシージャのパラメータ

パラメータ

説明

nl

DOMNODELISTタイプ

GETATTRIBUTEファンクション

このファンクションは、指定した名前のDOMELEMENTの属性値を戻します。

関連項目:
DOMElementサブプログラム

構文

指定した名前のDOMELEMENTの属性値を戻します。

DBMS_XMLDOM.GETATTRIBUTE(
elem       IN      DOMELEMENT,
name       IN      VARCHAR2)
RETURN VARCHAR2;

指定した名前と名前空間URIのDOMELEMENTの属性値を戻します。

DBMS_XMLDOM.GETATTRIBUTE(
elem      IN     DOMELEMENT,
name      IN     VARCHAR2,
ns        IN     VARCHAR2)
RETURN VARCHAR2;

パラメータ

表191-43 GETATTRIBUTEファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT。

name

属性名。

ns

名前空間。

GETATTRIBUTENODEファンクション

このファンクションは、指定した名前のDOMELEMENTの属性ノードを戻します。このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

関連項目:
DOMElementサブプログラム

構文

指定した名前のDOMELEMENTの属性ノードを戻します。

DBMS_XMLDOM.GETATTRIBUTENODE(
elem      IN     DOMElement,
name      IN     VARCHAR2)
RETURN DOMATTR;

指定した名前と名前空間URIのDOMELEMENTの属性ノードを戻します。

DBMS_XMLDOM.GETATTRIBUTENODE(
elem      IN     DOMElement,
name      IN     VARCHAR2,
ns        IN     VARCHAR2)
RETURN DOMATTR;

パラメータ

表191-44 GETATTRIBUTENODEファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT。

name

属性名。ワイルドカード(*)を使用すると、すべての属性が指定されます。

ns

名前空間。

GETATTRIBUTESファンクション

このファンクションは、指定したノードが要素の場合はその要素の属性を含むNAMEDNODEMAPを取得し、それ以外の場合はNULLになります。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETATTRIBUTES(
n      IN      DOMNode)
RETURN DOMNAMEDNODEMAP;

パラメータ

表191-45 GETATTRIBUTESファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETCHARSETファンクション

このファンクションは、DOM文書のキャラクタ・セットを取得します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.GETCHARSET(
doc IN    DOMDocument)
RETURN VARCHAR2;

パラメータ

表191-46 GETCHARSETファンクションのパラメータ

パラメータ

説明

doc

DOM文書

使用上の注意

新しく解析されたドキュメントについては、データベースのキャラクタ・セットを戻します。charsetにNULL以外の値を指定してSETCHARSETプロシージャがコールされると、そのcharsetが戻されます。

GETCHILDNODESファンクション

このファンクションは、指定したノードのすべての子ノードを含むDOMNODELISTを取得します。子ノードが存在しない場合は、ノードを含まないDOMNODELISTになります。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETCHILDNODES(
n      IN    DOMNode)
RETURN DOMNodeList;

パラメータ

表191-47 GETCHILDNODESファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETCHILDRENBYTAGNAMEファンクション

このファンクションは、DOMELEMENTの子を戻します。

関連項目:
DOMElementサブプログラム

構文

タグ名を指定して、DOMELEMENTの子を戻します。

DBMS_XMLDOM.GETCHILDRENBYTAGNAME(
elem      IN      DOMElement,
name      IN      VARCHAR2)
RETURN DOMNODELIST;

タグ名と名前空間を指定して、DOMELEMENTの子を戻します。

DBMS_XMLDOM.GETCHILDRENBYTAGNAME(
elem      IN      DOMElement,
name      IN      VARCHAR2,
ns        IN      VARCHAR2)
RETURN DOMNODELIST;

パラメータ

表191-48 GETCHILDRENBYTAGNAMEファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT

name

タグ名。

ns

名前空間。

GETDATAファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

インタフェースを実装するノードの文字データを取得します(関連項目: 「DOMCharacterDataサブプログラム」)。

DBMS_XMLDOM.GETDATA(
cd      IN    DOMCHARACTERDATA)
RETURN VARCHAR2;

DOMProcessingInstructionのコンテンツ・データを戻します(関連項目: 「DOMProcessingInstructionサブプログラム」)。

DBMS_XMLDOM.GETDATA(
pi      IN    DOMPROCESSINGINSTRUCTION)
RETURN VARCHAR2;

パラメータ

表191-49 GETDATAファンクションのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

pi

DOMPROCESSINGINSTRUCTION

GETDOCTYPEファンクション

このファンクションは、DOMDOCUMENTに関連付けられたDTDを戻します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.GETDOCTYPE(
doc      IN     DOMDOCUMENT)
RETURN DOMDOCUMENTTYPE;

パラメータ

表191-50 GETDOCTYPEファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

GETDOCUMENTELEMENTファンクション

このファンクションは、DOMDOCUMENTのルート要素を戻します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.GETDOCUMENTELEMENT(
doc      IN      DOMDOCUMENT)
RETURN DOMELEMENT;

パラメータ

表191-51 GETDOCUMENTELEMENTファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

GETELEMENTSBYTAGNAMEファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

タグ名を指定して、すべての要素のDOMNODELISTを戻します(関連項目: 「DOMDocumentサブプログラム」)。

DBMS_XMLDOM.GETELEMENTSBYTAGNAME(
doc         IN      DOMDOCUMENT,
tagname     IN      VARCHAR2)
RETURN DOMNODELIST;

タグ名を指定して、DOMELEMENTの要素の子を戻します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.GETELEMENTSBYTAGNAME(
elem      IN     DOMELEMENT,
name      IN     VARCHAR2)
RETURN DOMNODELIST;

タグ名と名前空間を指定して、DOMELEMENTの要素の子を戻します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.GETELEMENTSBYTAGNAME(
elem      IN     DOMELEMENT,
name      IN     VARCHAR2,
ns        IN     VARCHAR2)
RETURN DOMNODELIST;

パラメータ

表191-52 GETELEMENTSBYTAGNAMEファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

tagname

一致させるタグの名前。

elem

DOMELEMENT。

name

タグ名。ワイルドカード(*)を使用すると、すべてのタグが指定されます。

ns

名前空間。

GETENTITIESファンクション

このファンクションは、DTDで宣言された一般的なエンティティ(外部と内部の両方)を含むDOMNAMEDNODEMAPを取得します。

関連項目:
DOMDocumentTypeサブプログラム

構文

DBMS_XMLDOM.GETENTITIES(
dt      IN     DOMDocumentType)
RETURN DOMNAMEDNODEMAP;

パラメータ

表191-53 GETENTITIESファンクションのパラメータ

パラメータ

説明

dt

DOMDOCUMENTTYPE

GETEXPANDEDNAMEプロシージャ/ファンクション

このサブプログラムは、1つのプロシージャおよび2つのファンクションとしてオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

NodeがElementタイプまたはAttributeタイプである場合は、そのノードの拡張名を取得し、それ以外の場合はNULLを戻します(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.GETEXPANDEDNAME(
n       IN      DOMNODE
data    OUT     VARCHAR);

DOMAttrの拡張名を戻します(関連項目: 「DOMAttrサブプログラム」)。

DBMS_XMLDOM.GETEXPANDEDNAME(
a       IN     DOMAttr)
RETURN VARCHAR2;

DOMElementの拡張名を戻します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.GETEXPANDEDNAME(
elem      IN    DOMELEMENT)
RETURN VARCHAR2;

パラメータ

表191-54 GETEXPANDEDNAMEプロシージャ/ファンクションのパラメータ

パラメータ

説明

n

DOMNODE

data

戻されるNodeの拡張名。

a

DOMATTR

elem

DOMELEMENT

GETFIRSTCHILDファンクション

このファンクションは、ノードの最初の子を取得します。該当するノードがない場合は、NULLを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETFIRSTCHILD(
n      IN      DOMNODE)
RETURN DOMNODE;

パラメータ

表191-55 GETFIRSTCHILDファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETIMPLEMENTATIONファンクション

このファンクションは、指定したDOMDOCUMENTを処理するDOMIMPLEMENTATIONオブジェクトを戻します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.GETIMPLEMENTATION(
doc      IN     DOMDOCUMENT)
RETURN DOMIMPLEMENTATION;

パラメータ

表191-56 GETIMPLEMENTATIONファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

GETLASTCHILDファンクション

このファンクションは、ノードの最後の子を取得します。該当するノードがない場合は、NULLを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETLASTCHILD(
n     IN   DOMNODE)
RETURN DOMNODE;

パラメータ

表191-57 GETLASTCHILDファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETLENGTHファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

データの文字数を取得します。CharacterDataノードが空の場合は、ゼロが戻されます(関連項目: 「DOMCharacterDataサブプログラム」)。

DBMS_XMLDOM.GETLENGTH(
cd     IN     DOMCHARACTERDATA)
RETURN NUMBER;

指定したマップ内のノード数を取得します。子ノードの索引の有効範囲は、0以上かつlength-1以下です(関連項目: 「DOMNamedNodeMapサブプログラム」)。

DBMS_XMLDOM.GETLENGTH(
nnm      IN     DOMNAMEDNODEMAP)
RETURN NUMBER;

リスト内のノード数を取得します。子ノードの索引の有効範囲は、0以上かつlength-1以下です(関連項目: 「DOMNodeListサブプログラム」)。

DBMS_XMLDOM.GETLENGTH(
nl     IN    DOMNODELIST)
RETURN NUMBER;

パラメータ

表191-58 GETLENGTHファンクションのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

nnm

DOMNAMEDNODEMAP

nl

DOMNODELIST

GETLOCALNAMEプロシージャ/ファンクション

このファンクションは、1つのプロシージャおよび2つのファンクションとしてオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

ノードの修飾名のうちローカル部分を取得します(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.GETLOCALNAME(
n       IN     DOMNODE,
data    OUT    VARCHAR2);

DOMAttrのローカル名を戻します(関連項目: 「DOMAttrサブプログラム」)。

DBMS_XMLDOM.GETLOCALNAME(
a       IN     DOMATTR)
RETURN VARCHAR2;

DOMElementのローカル名を戻します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.GETLOCALNAME(
elem       IN     DOMELEMENT)
RETURN VARCHAR2;

パラメータ

表191-59 GETLOCALNAMEプロシージャ/ファンクションのパラメータ

パラメータ

説明

n

DOMNode

data

戻されるローカル名。

a

DOMAttr。

elem

DOMElement。

GETNAMEファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

属性の名前を戻します(関連項目: 「DOMAttrサブプログラム」)。

DBMS_XMLDOM.GETNAME(
a       IN     DOMATTR)
RETURN VARCHAR2;

DTDの名前、またはDOCTYPEキーワードの直後の名前を取得します(関連項目: 「DOMDocumentTypeサブプログラム」)。

DBMS_XMLDOM.GETNAME(
dt       IN     DOMDOCUMENTTYPE)
RETURN VARCHAR2;

パラメータ

表191-60 GETNAMEファンクションのパラメータ

パラメータ

説明

a

DOMATTR

dt

DOMDOCUMENTTYPE

GETNAMEDITEMファンクション

このファンクションは、指定した名前のノードを取得します。

関連項目:
DOMNamedNodeMapサブプログラム

構文

指定した名前のノードを取得します。

DBMS_XMLDOM.GETNAMEDITEM(
nnm    IN  DOMNAMEDNODEMAP,
name   IN  VARCHAR2)
RETURN DOMNODE;

指定した名前と名前空間URIのノードを取得します。

DBMS_XMLDOM.GETNAMEDITEM(
nnm    IN  DOMNAMEDNODEMAP,
name   IN  VARCHAR2,
ns     IN  VARCHAR2)
RETURN DOMNODE;

パラメータ

表191-61 GETNAMEDITEMファンクションのパラメータ

パラメータ

説明

nnm

DOMNAMEDNODEMAP

name

取得する項目の名前。

ns

名前空間。

GETNAMESPACEプロシージャ/ファンクション

このサブプログラムは、1つのプロシージャおよび2つのファンクションとしてオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

ノードに関連付けられた名前空間URIを取得します(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.GETNAMESPACE(
n       IN     DOMNODE,
data    OUT    VARCHAR2);

DOMATTRの名前空間を取得します(関連項目: 「DOMAttrサブプログラム」)。

DBMS_XMLDOM.GETNAMESPACE(
a       IN     DOMATTR)
RETURN VARCHAR2;

DOMELEMENTの名前空間を取得します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.GETNAMESPACE(
elem       IN     DOMELEMENT)
RETURN VARCHAR2;

パラメータ

表191-62 GETNAMESPACEプロシージャ/ファンクションのパラメータ

パラメータ

説明

n

DOMNODE

data

戻される名前空間URI。

a

DOMATTR

elem

DOMELEMENT

GETNEXTSIBLINGファンクション

このファンクションは、指定したノードの直後に続くノードを取得します。該当するノードがない場合は、NULLを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETNEXTSIBLING(
n       IN     DOMNODE)
RETURN DOMNode;

パラメータ

表191-63 GETNEXTSIBLINGファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETNODETYPEファンクション

このファンクションは、ノードの基礎となるオブジェクトのタイプを表すコードを取得します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETNODETYPE(
n       IN     DOMNODE)
RETURN NUMBER;

パラメータ

表191-64 GETNODETYPEファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETNODENAMEファンクション

このファンクションは、ノードのタイプに応じてノード名を取得します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETNODENAME(
n       IN     DOMNODE)
RETURN VARCHAR2;

パラメータ

表191-65 GETNODENAMEファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETNODEVALUEファンクション

このファンクションは、ノードのタイプに応じてノードの値を取得します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETNODEVALUE(
n       IN     DOMNODE)
RETURN VARCHAR2;*

パラメータ

表191-66 GETNODEVALUEファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

これらのサブプログラムの操作は、各構文の実装で説明されています。

関連項目:
DOMNodeサブプログラム

構文

このファンクションは、PL/SQL XMLBinaryInputStreamのインスタンスを戻します。ノードのデータ・タイプは、RAWまたはBLOBである必要があり、それ以外の場合は、例外が発生します。

DBMS_XMLDOM.GETNODEVALUEASBINARYSTREAM (
n      IN     DOMNODE)
RETURN SYS.UTL_BINARYINPUTSTREAM;

このプロシージャを使用して、アプリケーションは、XDBがノードの内容を書き込むSYS.UTL_BINARYOUTPUTSTREAMの実装を渡します。ノードのデータ・タイプは、RAWまたはCLOBである必要があり、それ以外の場合は、例外が発生します。

DBMS_XMLDOM.GETNODEVALUEASBINARYSTREAM (
n        in   DOMNODE,
value    in   SYS.UTL_BINARYOUTPUTSTREAM);

パラメータ

表191-67 GETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

value

BINARYOUTPUTSTREAM

GETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

これらのサブプログラムの操作は、各構文の実装で説明されています。

関連項目:
DOMNodeサブプログラム

構文

このファンクションは、PL/SQL XMLCharacterInputStreamのインスタンスを戻します。ノード・データが文字の場合は、現行セッションのキャラクタ・セットに変換されます。ノード・データが文字データでない場合は、最初に文字データに変換されます。

DBMS_XMLDOM.GETNODEVALUEASCHARACTERSTREAM  (
n        IN     DOMNODE)
RETURN SYS.UTL_CHARACTERINPUTSTREAM;

このプロシージャを使用して、ノード・データは必要に応じてセッションのキャラクタ・セットに変換され、次にSYS.UTL_CHARACTEROUTPUTSTREAMに送信されます。

DBMS_XMLDOM.GETNODEVALUEASCHARACTERSTREAM  (
n        IN   DOMNODE,
value    IN   SYS.UTL_CHARACTEROUTPUTSTREAM);

パラメータ

表191-68 GETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

value

CHARACTEROUTPUTSTREAM

GETNOTATIONNAMEファンクション

このファンクションは、DOMENTITYの表記法の名前を戻します。

関連項目:
DOMEntityサブプログラム

構文

DBMS_XMLDOM.GETNOTATIONNAME(
ent       IN     DOMENTITY)
RETURN VARCHAR2;

パラメータ

表191-69 GETNOTATIONNAMEファンクションのパラメータ

パラメータ

説明

ent

DOMENTITY

GETNOTATIONSファンクション

このファンクションは、DTDで宣言された表記法を含むDOMNAMEDNODEMAPを取得します。

関連項目:
DOMDocumentTypeサブプログラム

構文

DBMS_XMLDOM.GETNOTATIONS(
dt       IN     DOMDOCUMENTTYPE)
RETURN DOMNAMEDNODEMAP;

パラメータ

表191-70 GETNOTATIONSファンクションのパラメータ

パラメータ

説明

dt

DOMDOCUMENTTYPE

GETTARGETファンクション

このファンクションは、DOMPROCESSINGINSTRUCTIONのターゲットを戻します。

関連項目:
DOMProcessingInstructionサブプログラム

構文

DBMS_XMLDOM.GETTARGET(
pi       IN     DOMPROCESSINGINSTRUCTION)
RETURN VARCHAR2;

パラメータ

表191-71 GETTARGETファンクションのパラメータ

パラメータ

説明

pi

DOMPROCESSINGINSTRUCTION

GETOWNERDOCUMENTファンクション

このファンクションは、指定したノードに関連付けられたドキュメント・オブジェクトを取得します。このドキュメント・オブジェクトは、新規ノードの作成にも使用されます。指定したノードがドキュメントによってまだ使用されていないドキュメント・タイプまたはドキュメントの場合は、NULLが戻されます。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETOWNERDOCUMENT(
n       IN     DOMNODE)
RETURN DOMDOCUMENT;

パラメータ

表191-72 GETOWNERDOCUMENTファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETOWNERELEMENTファンクション

このファンクションは、指定した属性が接続される要素ノードを取得します。

関連項目:
DOMAttrサブプログラム

構文

DBMS_XMLDOM.GETOWNERELEMENT(
a       IN     DOMATTR)
RETURN DOMElement;

パラメータ

表191-73 GETOWNERELEMENTファンクションのパラメータ

パラメータ

説明

a

属性

GETPARENTNODEファンクション

このファンクションは、指定したノードの親を取得します。すべてのノード(Attr、Document、DocumentFragment、EntityおよびNotationを除く)は親を持つことができます。ただし、作成したノードがツリーに追加されていない場合、またはノードがツリーから削除された場合は、NULLが戻されます。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETPARENTNODE(
n       IN     DOMNODE)
RETURN DOMNODE;

パラメータ

表191-74 GETPARENTNODEファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETPREFIXファンクション

このファンクションは、ノードの名前空間の接頭辞を取得します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETPREFIX(
n       IN     DOMNODE)
RETURN VARCHAR2;

パラメータ

表191-75 GETPREFIXファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETPREVIOUSSIBLINGファンクション

このファンクションは、指定したノードの直前にあるノードを取得します。該当するノードがない場合は、NULLを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETPREVIOUSSIBLING(
n       IN     DOMNODE)
RETURN DOMNODE;

パラメータ

表191-76 GETPREVIOUSSIBLINGファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETPUBLICIDファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

指定したDTDの公開識別子を戻します(関連項目: 「DOMDocumentTypeサブプログラム」)。

DBMS_XMLDOM.GETPUBLICID(
dt       IN     DOMDOCUMENTTYPE)
RETURN VARCHAR2;

DOMENTITYの公開識別子を戻します(関連項目: 「DOMEntityサブプログラム」)。

DBMS_XMLDOM.GETPUBLICID(
ent      IN     DOMENTITY)
RETURN VARCHAR2;

DOMNOTATIONの公開識別子を戻します(関連項目: 「DOMNotationサブプログラム」)。

DBMS_XMLDOM.GETPUBLICID(
n        IN     DOMNOTATION)
RETURN VARCHAR2;

パラメータ

表191-77 GETPUBLICIDファンクションのパラメータ

パラメータ

説明

dt

DTD。

ent

DOMENTITY

n

DOMNOTATION

GETQUALIFIEDNAMEファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

DOMATTRの修飾名を戻します(関連項目: 「DOMAttrサブプログラム」)。

DBMS_XMLDOM.GETQUALIFIEDNAME(
a        IN     DOMATTR)
RETURN VARCHAR2;

DOMElementの修飾名を戻します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.GETQUALIFIEDNAME(
elem     IN     DOMELEMENT)
RETURN VARCHAR2;

パラメータ

表191-78 GETQUALIFIEDNAMEファンクションのパラメータ

パラメータ

説明

a

DOMATTR

elem

DOMELEMENT

GETSCHEMANODEファンクション

このファンクションは、ノードに関連付けられたスキーマURIを取得します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.GETSCHEMANODE(
n       IN     DOMNODE)
RETURN DOMNODE;

パラメータ

表191-79 GETSCHEMANODEファンクションのパラメータ

パラメータ

説明

n

DOMNODE

GETSPECIFIEDファンクション

元のドキュメントで属性の値が明示的に指定されている場合はTRUE、それ以外の場合はFALSEを戻します。

関連項目:
DOMAttrサブプログラム

構文

DBMS_XMLDOM.GETSPECIFIED(
a       IN     DOMATTR)
RETURN BOOLEAN;

パラメータ

表191-80 GETSPECIFIEDファンクションのパラメータ

パラメータ

説明

a

DOMATTR

GETSTANDALONEファンクション

このファンクションは、DOMDOCUMENTに関連付けられたスタンドアロン・プロパティを戻します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.GETSTANDALONE(
doc       IN     DOMDOCUMENT)
RETURN VARCHAR2;

パラメータ

表191-81 GETSTANDALONEファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

GETSYSTEMIDファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

指定したDTDのシステム識別子を戻します(関連項目: 「DOMDocumentTypeサブプログラム」)。

DBMS_XMLDOM.GETSYSTEMID(
dt       IN     DOMDOCUMENTTYPE)
RETURN VARCHAR2;

DOMENTITYのシステム識別子を戻します(関連項目: 「DOMEntityサブプログラム」)。

DBMS_XMLDOM.GETSYSTEMID(
ent      IN     DOMENTITY)
RETURN VARCHAR2;

DOMNOTATIONのシステム識別子を戻します(関連項目: 「DOMNotationサブプログラム」)。

DBMS_XMLDOM.GETSYSTEMID(
n        IN     DOMNOTATION)
RETURN VARCHAR2;

パラメータ

表191-82 GETSYSTEMIDファンクションのパラメータ

パラメータ

説明

dt

DTD。

ent

DOMEntity。

n

DOMNotation。

GETTAGNAMEファンクション

このファンクションは、DOMELEMENTの名前を戻します。

関連項目:
DOMElementサブプログラム

構文

DBMS_XMLDOM.GETTAGNAME(
elem       IN     DOMELEMENT)
RETURN VARCHAR2;

パラメータ

表191-83 GETTAGNAMEファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT。

GETVALUEファンクション

このファンクションは、属性の値を取得します。

関連項目:
DOMAttrサブプログラム

構文

DBMS_XMLDOM.GETVALUE(
a       IN     DOMATTR)
RETURN VARCHAR2;

パラメータ

表191-84 GETVALUEファンクションのパラメータ

パラメータ

説明

a

DOMATTR

GETVERSIONファンクション

このファンクションは、DOMDOCUMENTのバージョンを戻します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.GETVERSION(
doc       IN     DOMDOCUMENT)
RETURN VARCHAR2;

パラメータ

表191-85 GETVERSIONファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

GETXMLTYPEファンクション

このファンクションは、DOMDOCUMENTに関連付けられたXMLTypeを戻します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.GETXMLTYPE(
doc       IN     DOMDOCUMENT)
RETURN SYS.XMLTYPE;

パラメータ

表191-86 GETXMLTYPEファンクションのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

HASATTRIBUTEファンクション

指定した属性がDOMELEMENTで定義されているかどうか、またはデフォルト値が存在するかどうかをテストします。

関連項目:
DOMElementサブプログラム

構文

指定した名前を持つ属性がDOMElementで定義されているかどうかをテストします。

DBMS_XMLDOM.HASATTRIBUTE(
elem     IN  DOMELEMENT,
name     IN  VARCHAR2)
RETURN VARCHAR2;

指定した名前と名前空間URIを持つ属性がDOMELEMENTで定義されているかどうかをテストし、名前空間を有効にします。

DBMS_XMLDOM.HASATTRIBUTE(
elem     IN  DOMELEMENT,
name     IN  VARCHAR2,
ns       IN  VARCHAR2)
RETURN VARCHAR2;

パラメータ

表191-87 HASATTRIBUTEファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT。

name

属性名。ワイルドカード(*)を使用すると、すべての属性が指定されます。

ns

名前空間。

HASATTRIBUTESファンクション

このファンクションは、ノードに属性が存在するかどうかをテストします。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.HASATTRIBUTES(
n       IN     DOMNODE)
RETURN BOOLEAN;

パラメータ

表191-88 HASATTRIBUTESファンクションのパラメータ

パラメータ

説明

n

DOMNODE

HASCHILDNODESファンクション

このファンクションは、ノードに子ノードが存在するかどうかをテストします。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.HASCHILDNODES(
n       IN     DOMNODE)
RETURN BOOLEAN;

パラメータ

表191-89 HASCHILDNODESファンクションのパラメータ

パラメータ

説明

n

DOMNODE

HASFEATUREファンクション

このファンクションは、DOMIMPLEMENTATIONで特定の機能が実装されているかどうかをテストします。

関連項目:
DOMImplementationサブプログラム

構文

DBMS_XMLDOM.HASFEATURE(
di       IN     DOMIMPLEMENTATION,
feature  IN     VARCHAR2,
version  IN     VARCHAR2)
RETURN BOOLEAN;

パラメータ

表191-90 HASFEATUREファンクションのパラメータ

パラメータ

説明

di

DOMIMPLEMENTATION

feature

チェックする機能。

version

チェックするDOMのバージョン。

IMPORTNODEファンクション

このファンクションは外部のドキュメントからノードをインポートして、その新規ノードを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.IMPORTNODE(
doc            IN  DOMDOCUMENT,
importedNode   IN  DOMNODE,
deep           IN  BOOLEAN)
RETURN DOMNODE;

パラメータ

表191-91 IMPORTNODEファンクションのパラメータ

パラメータ

説明

doc

ノードをインポートする元のドキュメント。

importedNode

インポートするノード。

deep

再帰的インポートに関する設定。

- この値をTRUEに設定すると、指定したノードとともに、そのノードのサブツリー全体がインポートされます。

- この値をFALSEに設定すると、指定したノードのみがインポートされます。

使用上の注意

ADOPTNODEファンクションはソース・ドキュメントからノードを削除します。一方、IMPORTNODEファンクションはノードのクローンをソース・ドキュメント内に作成します。

INSERTBEFOREファンクション

このファンクションは、ノードnewchildを、既存の子ノードrefchildの前に挿入します。refchildがNULLの場合、newchildは子リストの最後に挿入されます。

newchildがDOCUMENTFRAGMENTオブジェクトの場合は、newchildのすべての子が同じ順序でrefchild.の前に挿入されます。newchildがすでにツリーに追加されている場合は、そのノードが最初に削除されます。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.INSERTBEFORE(
n          IN     DOMNODE,
newchild   IN     DOMNODE,
refchild   IN     DOMNODE)
RETURN DOMNode;

パラメータ

表191-92 INSERTBEFOREファンクションのパラメータ

パラメータ

説明

n

DOMNODE

newChild

DOMNODEに挿入される子。

refChild

newchildが挿入される直前の参照ノード。

INSERTDATAプロシージャ

このプロシージャは、文字数単位で指定されたオフセット位置に文字列データを挿入します。

関連項目:
DOMCharacterDataサブプログラム

構文

DBMS_XMLDOM.INSERTDATA(
cd       IN     DOMCHARACTERDATA,
offset   IN     NUMBER,
arg      IN     VARCHAR2);

パラメータ

表191-93 INSERTDATAプロシージャのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

offset

データを挿入するオフセット。

arg

挿入する値。

ISNULLファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

指定したDOMNODEがNULLかどうかをチェックします。NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.ISNULL(
n        IN     DOMNODE)
RETURN BOOLEAN;

指定したDOMATTRがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMAttrサブプログラム」)。

DBMS_XMLDOM.ISNULL(
a       IN     DOMATTR)
RETURN BOOLEAN;

指定したDOMCDATASECTIONがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMCDataSectionサブプログラム」)。

DBMS_XMLDOM.ISNULL(
cds      IN     DOMCDATASECTION)
RETURN BOOLEAN;

指定したDOMCHARACTERDATAがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMCharacterDataサブプログラム」)。

DBMS_XMLDOM.ISNULL(
cd       IN     DOMCHARACTERDATA)
RETURN BOOLEAN;

指定したDOMCOMMENTがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMCommentサブプログラム」)。

DBMS_XMLDOM.ISNULL(
com       IN     DOMCOMMENT)
RETURN BOOLEAN;

指定したDOMDOCUMENTがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMDocumentサブプログラム」)。

DBMS_XMLDOM.ISNULL(
doc       IN     DOMDOCUMENT)
RETURN BOOLEAN;

指定したDOMDOCUMENTFRAGMENTがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMDocumentFragmentサブプログラム」)。

DBMS_XMLDOM.ISNULL(
df       IN     DOMDOCUMENTFRAGMENT)
RETURN BOOLEAN;

指定したDOMDOCUMENTTYPEがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMDocumentTypeサブプログラム」)。

DBMS_XMLDOM.ISNULL(
dt       IN     DOMDOCUMENTTYPE)
RETURN BOOLEAN;

指定したDOMELEMENTがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.ISNULL(
elem     IN     DOMELEMENT)
RETURN BOOLEAN;

指定したDOMENTITYがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMEntityサブプログラム」)。

DBMS_XMLDOM.ISNULL(
ent       IN     DOMENTITY)
RETURN BOOLEAN;

指定したDOMENTITYREFERENCEがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMEntityReferenceサブプログラム」)。

DBMS_XMLDOM.ISNULL(
EREF       IN     DOMENTITYREFERENCE)
RETURN BOOLEAN;

指定したDOMIMPLEMENTATIONがNULLかどうかをチェックし、NULLの場合はTRUEを戻します(関連項目: 「DOMImplementationサブプログラム」)。

DBMS_XMLDOM.ISNULL(
di       IN     DOMIMPLEMENTATION)
RETURN BOOLEAN;

指定したDOMNAMEDNODEMAPがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMNamedNodeMapサブプログラム」)。

DBMS_XMLDOM.ISNULL(
nnm       IN     DOMNAMEDNODEMAP)
RETURN BOOLEAN;

指定したDOMNODELISTがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMNodeListサブプログラム」)。

DBMS_XMLDOM.ISNULL(
nl       IN     DOMNODELIST)
RETURN BOOLEAN;

指定したDOMNOTATIONがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMNotationサブプログラム」)。

DBMS_XMLDOM.ISNULL(
n       IN     DOMNOTATION)
RETURN BOOLEAN;

指定したDOMPROCESSINGINSTRUCTIONがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMProcessingInstructionサブプログラム」)。

DBMS_XMLDOM.ISNULL(
pi       IN     DOMPROCESSINGINSTRUCTION)
RETURN BOOLEAN;

指定したDOMTEXTがNULLかどうかをチェックし、NULLの場合はTRUEを、それ以外の場合はFALSEを戻します(関連項目: 「DOMTextサブプログラム」)。

DBMS_XMLDOM.ISNULL(
t       IN     DOMTEXT)
RETURN BOOLEAN;

パラメータ

表191-94 ISNULLファンクションのパラメータ

パラメータ

説明

n

チェックするDOMNODE。

a

チェックするDOMATTR。

cds

チェックするDOMCDATASECTION。

cd

チェックするDOMCHARACTERDATA。

com

チェックするDOMCOMMENT。

doc

チェックするDOMDOCUMENT。

dF

チェックするDOMDOCUMENTFRAGMENT。

dt

チェックするDOMDOCUMENTTYPE。

elem

チェックするDOMELEMENT。

ent

チェックするDOMENTITY。

eref

チェックするDOMENTITYREFERENCE。

di

チェックするDOMIMPLEMENTATION。

nnm

チェックするDOMNAMENODEMAP。

nl

チェックするDOMNODELIST。

n

チェックするDOMNOTATION。

pi

チェックするDOMPROCESSINGINSTRUCTION。

t

チェックするDOMTEXT。

ITEMファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

マップ内の項目のうち、指定した索引(INDEXパラメータ)に対応する項目を戻します。索引(INDEX)の値がマップ内のノード数以上の場合は、NULLを戻します(関連項目: 「DOMNamedNodeMapサブプログラム」)。

DBMS_XMLDOM.ITEM(
nnm       IN     DOMNAMEDNODEMAP,
index     IN     NUMBER)
RETURN DOMNODE;

ノード・リスト内の項目のうち、指定した索引(INDEXパラメータ)に対応する項目を戻します。索引(INDEX)の値がノード・リスト内のノード数以上の場合は、NULLを戻します(関連項目: 「DOMNodeListサブプログラム」)。

DBMS_XMLDOM.ITEM(
nl       IN     DOMNODELIST,
index    IN     NUMBER)
RETURN DOMNODE;

パラメータ

表191-95 ITEMファンクションのパラメータ

パラメータ

説明

nnm

DOMNAMEDNODEMAP

index

ノード・マップ内の索引のうち、取得する項目が存在する位置の索引。

nl

DOMNODELIST

index

NodeList内の索引のうち、取得する項目が存在する位置の索引。

MAKEATTRファンクション

このファンクションは、指定したDOMNODEをDOMATTRに変換し、そのDOMATTRを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEATTR(
n       IN     DOMNODE)
RETURN DOMATTR;

パラメータ

表191-96 MAKEATTRファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKECDATASECTIONファンクション

このファンクションは、指定したDOMNODEをDOMCDATASECTIONに変換します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKECDATASECTION(
n       IN     DOMNODE)
RETURN DOMCDATASECTION;

パラメータ

表191-97 MAKECDATASECTIONファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKECHARACTERDATAファンクション

このファンクションは、指定したDOMNODEをDOMCHARACTERDATAに変換し、そのDOMCHARACTERDATAを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKECHARACTERDATA(
n       IN     DOMNode)
RETURN DOMCharacterData;

パラメータ

表191-98 MAKECHARACTERDATAファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKECOMMENTファンクション

このファンクションは、指定したDOMNODEをDOMCOMMENTに変換し、そのDOMCOMMENTを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKECOMMENT(
n       IN     DOMNODE)
RETURN DOMCOMMENT;

パラメータ

表191-99 MAKECOMMENTファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKEDOCUMENTファンクション

このファンクションは、指定したDOMNODEをDOMDOCUMENTに変換し、そのDOMDOCUMENTを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEDOCUMENT(
n       IN     DOMNODE)
RETURN DOMDocument;

パラメータ

表191-100 MAKEDOCUMENTファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKEDOCUMENTFRAGMENTファンクション

このファンクションは、指定したDOMNODEをDOMDOCUMENTFRAGMENTに変換し、そのDOMDOCUMENTFRAGMENTを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEDOCUMENTFRAGMENT(
n       IN     DOMNODE)
RETURN DOMDOCUMENTFRAGMENT;

パラメータ

表191-101 MAKEDOCUMENTFRAGMENTファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKEDOCUMENTTYPEファンクション

このファンクションは、指定したDOMNODEをDOMDOCUMENTTYPEに変換し、そのDOMDOCUMENTTYPEを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEDOCUMENTTYPE(
n       IN     DOMNODE)
RETURN DOMDOCUMENTTYPE;

パラメータ

表191-102 MAKEDOCUMENTTYPEファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKEELEMENTファンクション

このファンクションは、指定したDOMNODEをDOMELEMENTに変換し、そのDOMELEMENTを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEELEMENT(
n       IN     DOMNODE)
RETURN DOMELEMENT;

パラメータ

表191-103 MAKEELEMENTファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKEENTITYファンクション

このファンクションは、指定したDOMNODEをDOMENTITYに変換し、そのDOMENTITYを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEENTITY(
n       IN     DOMNODE)
RETURN DOMENTITY;

パラメータ

表191-104 MAKEENTITYファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKEENTITYREFERENCEファンクション

このファンクションは、指定したDOMNODEをDOMENTITYREFERENCEに変換し、そのDOMENTITYREFERENCEを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEENTITYREFERENCE(
n       IN     DOMNODE)
RETURN DOMENTITYREFERENCE;

パラメータ

表191-105 MAKEENTITYREFERENCEファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKENODEファンクション

このファンクションはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

指定したDOMATTRをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMAttrサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
a        IN     DOMATTR)
RETURN DOMNODE;

指定したDOMCDATASECTIONをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMCDataSectionサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
cds      IN     DOMCDATASECTION)
RETURN DOMNODE;

指定したDOMCHARACTERDATAをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMCharacterDataサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
cd       IN     DOMCHARACTERDATA)
RETURN DOMNODE;

指定したDOMCOMMENTをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMCommentサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
com      IN     DOMCOMMENT)
RETURN DOMNODE;

指定したDOMDOCUMENTをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMDocumentサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
doc      IN     DOMDOCUMENT)
RETURN DOMNODE;

指定したDOMDOCUMENTFRAGMENTをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMDocumentFragmentサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
df       IN     DOMDOCUMENTFRAGMENT)
RETURN DOMNode;

指定したDOMDOCUMENTTYPEをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMDocumentTypeサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
dt       IN     DOMDOCUMENTTYPE)
RETURN DOMNODE;

指定したDOMELEMENTをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMElementサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
elem       IN     DOMELEMENT)
RETURN DOMNODE;

指定したDOMENTITYをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMEntityサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
ent       IN     DOMENTITY)
RETURN DOMNODE;

指定したDOMENTITYREFERENCEをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMEntityReferenceサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
eref       IN     DOMENTITYREFERENCE)
RETURN DOMNODE;

指定したDOMNOTATIONをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMNotationサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
n       IN     DOMNOTATION)
RETURN DOMNODE;

指定したDOMPROCESSINGINSTRUCTIONをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMProcessingInstructionサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
pi       IN     DOMPROCESSINGINSTRUCTION)
RETURN DOMNODE;

指定したDOMTEXTをDOMNODEに変換し、そのDOMNODEを戻します(関連項目: 「DOMTextサブプログラム」)。

DBMS_XMLDOM.MAKENODE(
t       IN     DOMTEXT)
RETURN DOMNODE;

パラメータ

表191-106 MAKENODEファンクションのパラメータ

パラメータ

説明

a

変換するDOMATTR。

cds

変換するDOMCDATASECTION。

cd

変換するDOMCHARACTERDATA。

com

変換するDOMCOMMENT。

doc

変換するDOMDOCUMENT。

df

変換するDOMDOCUMENTFRAGMENT。

dt

変換するDOMDOCUMENTTYPE。

elem

変換するDOMELEMENT。

ent

変換するDOMENTITY。

eref

変換するDOMENTITYREFERENCE。

n

変換するDOMNOTATION。

pi

変換するDOMPROCESSINGINSTRUCTION。

t

変換するDOMTEXT。

MAKENOTATIONファンクション

このファンクションは、指定したDOMNODEをDOMNOTATIONに変換し、そのDOMNOTATIONを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKENOTATION(
n       IN     DOMNODE)
RETURN DOMNOTATION;

パラメータ

表191-107 MAKENOTATIONファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKEPROCESSINGINSTRUCTIONファンクション

このファンクションは、指定したDOMNODEをDOMPROCESSINGINSTRUCTIONに変換し、そのDomprocessinginstructionを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKEPROCESSINGINSTRUCTION(
n       IN     DOMNODE)
RETURN DOMPROCESSINGINSTRUCTION;

パラメータ

表191-108 MAKEPROCESSINGINSTRUCTIONファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

MAKETEXTファンクション

このファンクションは、指定したDOMNODEをDOMTEXTに変換し、そのDOMTEXTを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.MAKETEXT(
n       IN     DOMNODE)
RETURN DOMTEXT;

パラメータ

表191-109 MAKETEXTファンクションのパラメータ

パラメータ

説明

n

変換するDOMNODE。

NEWDOMDOCUMENTファンクション

このファンクションは、新規のDOMDOCUMENTインスタンスを戻します。

関連項目:
DOMDocumentサブプログラム

構文

新規のDOMDOCUMENTインスタンスを戻します。

DBMS_XMLDOM.NEWDOMDOCUMENT
RETURN DOMDOCUMENT;

指定したXMLTypeオブジェクトから作成された新規のDOMDOCUMENTインスタンスを戻します。

DBMS_XMLDOM.NEWDOMDOCUMENT(
xmldoc    IN SYS.XMLTYPE)
RETURN DOMDOCUMENT;

指定したCLOBから作成された新規のDOMDOCUMENTインスタンスを戻します。

DBMS_XMLDOM.NEWDOMDOCUMENT(
cl       IN    CLOB)
RETURN DOMDOCUMENT;

パラメータ

表191-110 NEWDOMDOCUMENTファンクションのパラメータ

パラメータ

説明

xmldoc

DOMDOCUMENTを作成するためのXMLTypeソース。

cl

DOMDOCUMENTを作成するためのCLOBソース。

NORMALIZEプロシージャ

このプロシージャは、DOMELEMENTのテキストの子を正規化します。

関連項目:
DOMElementサブプログラム

構文

DBMS_XMLDOM.NORMALIZE(
elem       IN     DOMELEMENT);

パラメータ

表191-111 NORMALIZEプロシージャのパラメータ

パラメータ

説明

elem

DOMELEMENT。

REMOVEATTRIBUTEプロシージャ

このプロシージャは、指定した名前の属性をDOMELEMENTから削除します。

関連項目:
DOMElementサブプログラム

構文

指定した名前のDOMELEMENTの属性値を削除します。

DBMS_XMLDOM.REMOVEATTRIBUTE(
elem     IN    DOMELEMENT,
name     IN    VARCHAR2);

指定した名前と名前空間URIのDOMELEMENTの属性値を削除します。

DBMS_XMLDOM.REMOVEATTRIBUTE(
elem     IN    DOMELEMENT,
name     IN    VARCHAR2,
ns       IN    VARCHAR2);

パラメータ

表191-112 REMOVEATTRIBUTEプロシージャのパラメータ

パラメータ

説明

elem

DOMELEMENT。

name

属性名。

ns

名前空間。

REMOVEATTRIBUTENODEファンクション

このファンクションは、指定した属性ノードをDOMELEMENTから削除します。削除された属性ノードを戻します。

関連項目:
DOMElementサブプログラム

構文

DBMS_XMLDOM.REMOVEATTRIBUTENODE(
elem       IN     DOMELEMENT,
oldAttr    IN     DOMATTR)
RETURN DOMAttr;

パラメータ

表191-113 REMOVEATTRIBUTENODEファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT

oldAttr

削除するDOMATTR。

REMOVECHILDファンクション

このファンクションは、oldchildパラメータで指定される子ノードを子ノード・リストから削除し、その子ノードを戻します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.REMOVECHILD(
n          IN     DOMNode,
oldchild   IN     DOMNode)
RETURN DOMNODE;

パラメータ

表191-114 REMOVECHILDファンクションのパラメータ

パラメータ

説明

n

DOMNODE

oldChild

削除されるノードnの子ノード。

REMOVENAMEDITEMファンクション

このファンクションは、指定した名前のノードをマップから削除し、そのノードを戻します。要素に添付した属性がこのマップに含まれ、削除した属性にデフォルト値があることが判明している場合、属性は、デフォルト値、対応する名前空間URI、ローカル名および接頭辞(該当する場合)とともに表示されます。

関連項目:
DOMNamedNodeMapサブプログラム

構文

指定した名前のノードを削除します。

DBMS_XMLDOM.REMOVENAMEDITEM(
nnm      IN     DOMNamedNodeMap,
name     IN     VARCHAR2)
RETURN DOMNode;

指定した名前と名前空間URIのノードを削除します。

DBMS_XMLDOM.REMOVENAMEDITEM(
nnm      IN     DOMNamedNodeMap,
name     IN     VARCHAR2,
ns       IN     VARCHAR2)
RETURN DOMNode;

パラメータ

表191-115 REMOVENAMEDITEMファンクションのパラメータ

パラメータ

説明

nnm

DOMNamedNodeMap

name

マップから削除する項目の名前。

ns

名前空間。

REPLACECHILDファンクション

このファンクションは、子ノード・リスト内において、既存の子ノードoldchildを新しい子ノードnewchildで置き換え、そのoldchildノードを戻します。newchildがDocumentFragmentオブジェクトの場合、oldchildは、DocumentFragmentのすべての子ノードで置き換えられます(これらの子ノードは、DocumentFragment内と同じ順序で挿入されます)。newchildがすでにツリーに追加されている場合は、そのノードが最初に削除されます。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.REPLACECHILD(
n           IN     DOMNode,
newchild    IN     DOMNode,
oldchild    IN     DOMNode)
RETURN DOMNode;

パラメータ

表191-116 REPLACECHILDファンクションのパラメータ

パラメータ

説明

n

DOMNode

newchild

既存の子ノードを置き換える新規の子ノード。

oldChild

新規の子ノードで置き換えられるノードnの子ノード。

REPLACEDATAプロシージャ

このプロシージャは、ノード内の特定範囲の文字列を新しい文字列で置き換えます。正常に削除されると、データと長さに変更が反映されます。

関連項目:
DOMCharacterDataサブプログラム

構文

DBMS_XMLDOM.REPLACEDATA(
cd        IN     DOMCHARACTERDATA,
offset    IN     NUMBER,
cnt       IN     NUMBER,
arg       IN     VARCHAR2);

パラメータ

表191-117 REPLACEDATAプロシージャのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

offset

置換するオフセット。

cnt

置換する文字数。

arg

置換に使用する新しい値。

RESOLVENAMESPACEPREFIXファンクション

このファンクションは、指定した名前空間の接頭辞を解決し、解決済の名前空間を戻します。

関連項目:
DOMElementサブプログラム

構文

DBMS_XMLDOM.RESOLVENAMESPACEPREFIX(
elem       IN     DOMELEMENT,
prefix     IN     VARCHAR2)
RETURN VARCHAR2;

パラメータ

表191-118 RESOLVENAMESPACEPREFIXファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT。

prefix

名前空間の接頭辞。

SETATTRIBUTEプロシージャ

指定した名前のDOMELEMENTの属性値を設定します。

関連項目:
DOMElementサブプログラム

構文

指定した名前のDOMELEMENTの属性値を設定します。

DBMS_XMLDOM.SETATTRIBUTE(
elem       IN  DOMELEMENT,
name       IN  VARCHAR2,
newvalue   IN  VARCHAR2);

指定した名前と名前空間URIのDOMElementの属性値を設定します。

DBMS_XMLDOM.SETATTRIBUTE(
elem       IN  DOMELEMENT,
name       IN  VARCHAR2,
newvalue   IN  VARCHAR2,
ns         IN  VARCHAR2);

パラメータ

表191-119 SETATTRIBUTEプロシージャのパラメータ

パラメータ

説明

elem

DOMELEMENT。

name

属性名。

newvalue

属性値。

ns

名前空間。

SETATTRIBUTENODEファンクション

新規の属性ノードをDOMELEMENTに追加します。

関連項目:
DOMElementサブプログラム

構文

新規の属性ノードをDOMELEMENTに追加します。

DBMS_XMLDOM.SETATTRIBUTENODE(
elem      IN  DOMELEMENT,
newAttr   IN  DOMATTR)
RETURN DOMATTR;

新規の属性ノードをDOMElementに追加し、名前空間を有効にします。

DBMS_XMLDOM.SETATTRIBUTENODE(
elem      IN  DOMELEMENT,
newAttr   IN  DOMATTR,
ns        IN  VARCHAR2)
RETURN DOMATTR;

パラメータ

表191-120 SETATTRIBUTENODEファンクションのパラメータ

パラメータ

説明

elem

DOMELEMENT。

newAttr

新規のDOMATTR。

ns

名前空間。

SETCHARSETプロシージャ

このファンクションは、DOM文書のキャラクタ・セットを設定します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.SETCHARSET(
doc      IN    DOMDocument,
charset  IN    VARCHAR2);

パラメータ

表191-121 SETCHARSETプロシージャのパラメータ

パラメータ

説明

doc

DOM文書

charset

キャラクタ・セット

使用上の注意

その時点で明示的に指定されていない場合、これはWRITETOFILEプロシージャに使用します。

SETDATAプロシージャ

このプロシージャはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

インタフェースを実装するノードの文字データを設定します(関連項目: 「DOMCharacterDataサブプログラム」)。

DBMS_XMLDOM.SETDATA(
cd       IN     DOMCHARACTERDATA,
data     IN     VARCHAR2);

DOMPROCESSINGINSTRUCTIONのコンテンツ・データを設定します(関連項目: 「DOMProcessingInstructionサブプログラム」)。

DBMS_XMLDOM.SETDATA(
pi       IN     DOMPROCESSINGINSTRUCTION,
data     IN     VARCHAR2);

パラメータ

表191-122 SETDATAプロシージャのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

data

ノードに設定するデータ。

pi

DOMPROCESSINGINSTRUCTION

data

新規の処理命令のコンテンツ・データ。

SETDOCTYPEプロシージャ

DOM文書の場合、このプロシージャは、指定した名前、システム識別子、および公開識別子を持つ新しいDTDを作成して、DOM文書に設定します。このDTDは、後でGETDOCTYPEファンクションを使用して取得できます。

構文

DBMS_XMLDOM.SETDOCTYPE(
doc     IN   DOMDocument,
name    IN   VARCHAR2,
sysid   IN   VARCHAR2,
pubid   IN   VARCHAR2);

パラメータ

表191-123 SETDOCTYPEプロシージャのパラメータ

パラメータ

説明

doc

DTDを設定するドキュメント。

name

doctypeの初期化で使用する名前。

sysid

doctypeの初期化で使用するシステム識別子。

pubid

doctypeの初期化で使用する公開識別子。

SETNAMEDITEMファンクション

このファンクションは、NodeName属性に基づいてノードを追加します。指定した名前のノードがすでにマップ内に存在する場合は、そのノードは新規のノードで置き換えられます。このような置換が発生した場合は、既存のノードが戻り値となり、置換が発生しなかった場合は、NULLが戻されます。

ノードが格納される名前は、NodeName属性に基づいて決定されるため、特定タイプの複数のノード(特殊な文字列値を持つ複数のノード)は、名前が競合するために格納できません。このため、ノードに別名を付けることをお薦めします。

関連項目:
DOMNamedNodeMapサブプログラム

構文

NodeName属性に基づいて、ノードを追加します。

DBMS_XMLDOM.SETNAMEDITEM(
nnm     IN     DOMNAMEDNODEMAP,
arg     IN     DOMNODE)
RETURN DOMNode;

NodeName属性と名前空間URIに基づいて、ノードを追加します。

DBMS_XMLDOM.SETNAMEDITEM(
nnm     IN     DOMNAMEDNODEMAP,
arg      IN    DOMNODE,
ns      IN     VARCHAR2)
RETURN DOMNode;

パラメータ

表191-124 SETNAMEDITEMファンクションのパラメータ

パラメータ

説明

nnm

DOMNAMEDNODEMAP

arg

NodeName属性に基づいて追加されるノード。

ns

名前空間。

SETNODEVALUEプロシージャ

このプロシージャは、ノードのタイプに応じて、ノードの値を設定します。ノードの値をNULLに設定した場合は、この値を設定しても無効になります。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.SETNODEVALUE(
n         IN     DOMNODE,
nodeValue IN     VARCHAR2);

パラメータ

表191-125 SETNODEVALUEプロシージャのパラメータ

パラメータ

説明

n

DOMNode

nodeValue

ノードに設定する値。

SETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャ

これらのサブプログラムの操作は、各構文の実装で説明されています。

関連項目:
DOMNodeサブプログラム

構文

このファンクションは、コール元がノード値を書き込むことができるPL/SQL XMLBINARYOUTPUTSTREAMのインスタンスを戻します。ノードのデータ・タイプは、RAWまたはBLOBである必要があり、それ以外の場合は、例外が発生します。

DBMS_XMLDOM.SETNODEVALUEASBINARYSTREAM (
n      IN     DOMNODE)
RETURN SYS.UTL_BINARYOUTPUTSTREAM;

このプロシージャを使用して、アプリケーションは、XDBがノードに移入するデータを読み込むsys.utl_BinaryInputStreamの実装を渡します。ノードのデータ・タイプは、RAWまたはBLOBである必要があり、それ以外の場合は、例外が発生します。

DBMS_XMLDOM.SETNODEVALUEASBINARYSTREAM (
n        in   DOMNODE,
value    in   SYS.UTL_BINARYINPUTSTREAM);

パラメータ

表191-126 SETNODEVALUEASBINARYSTREAMファンクションおよびプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

value

BINARYINPUTSTREAM

SETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャ

これらのサブプログラムの操作は、各構文の実装で説明されています。

関連項目:
DOMNodeサブプログラム

構文

このファンクションは、コール元がノード値を書き込むことができるPL/SQL XMLCHARACTEROUTPUTSTREAMタイプのインスタンスを戻します。ノードのデータ・タイプは、任意の有効なXDBデータ・タイプを使用できます。タイプが文字またはCLOBでない場合、ストリームに書き込まれる文字データは、ノードのデータ・タイプに変換されます。ノードのデータ・タイプが文字またはCLOBの場合、ストリームに書き込まれる文字データは、PL/SQLセッションのキャラクタ・セットからノードのキャラクタ・セットに変換されます。

DBMS_XMLDOM.SETNODEVALUEASCHARACTERSTREAM  (
n        IN     DOMNODE)
RETURN SYS.UTL_CHARACTEROUTPUTSTREAM;

このプロシージャを使用して、アプリケーションは、XDBがノードに移入するデータを読み込むSYS.UTL_CHARACTERINPUTSTREAMの実装を渡します。ノードのデータ・タイプは、XDBでサポートされている任意の有効なタイプを使用できます。文字以外のデータ・タイプの場合、ストリームから読み取られた文字データは、ノードのデータ・タイプに変換されます。ノードのデータ・タイプが文字またはCLOBの場合、変換は行われず、ノードのキャラクタ・セットがPL/SQLセッションのキャラクタ・セットとなります。

DBMS_XMLDOM.SETNODEVALUEASCHARACTERSTREAM  (
n        IN   DOMNODE,
value    IN   SYS.UTL_CHARACTERINPUTSTREAM);

パラメータ

表191-127 SETNODEVALUEASCHARACTERSTREAMファンクションおよびプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

value

CHARACTERINPUTSTREAM

SETPREFIXプロシージャ

このプロシージャは、ノードの名前空間の接頭辞を指定の値に設定します。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.SETPREFIX(
n       IN     DOMNODE,
prefix  IN     VARCHAR2);

パラメータ

表191-128 SETPREFIXプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

prefix

ノードに設定する名前空間の接頭辞の値。

SETSTANDALONEプロシージャ

このプロシージャは、DOMDOCUMENTのスタンドアロン・プロパティを設定します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.SETSTANDALONE(
doc         IN     DOMDOCUMENT,
newvalue    IN     VARCHAR2);

パラメータ

表191-129 SETSTANDALONEプロシージャのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

newvalue

ドキュメントのスタンドアロン・プロパティの値。

SETVALUEプロシージャ

このプロシージャは、属性の値を設定します。

関連項目:
DOMAttrサブプログラム

構文

DBMS_XMLDOM.SETVALUE(
a       IN     DOMATTR,
value   IN     VARCHAR2);

パラメータ

表191-130 SETVALUEプロシージャのパラメータ

パラメータ

説明

a

DOMATTR

value

属性に設定する値。

SETVERSIONプロシージャ

このプロシージャは、DOMDOCUMENTのバージョンを設定します。

関連項目:
DOMDocumentサブプログラム

構文

DBMS_XMLDOM.SETVERSION(
doc        IN     DOMDOCUMENT,
version    IN     VARCHAR2);

パラメータ

表191-131 SETVERSIONプロシージャのパラメータ

パラメータ

説明

doc

DOMDOCUMENT

version

ドキュメントのバージョン。

SPLITTEXTファンクション

このファンクションは、指定したオフセット位置で、1つのDOMTEXTノードを2つのDOMTEXTノードに分割します。

関連項目:
DOMTextサブプログラム

構文

DBMS_XMLDOM.SPLITTEXT(
t        IN     DOMTEXT,
offset   IN     NUMBER)
RETURN DOMText;

パラメータ

表191-132 SPLITTEXTファンクションのパラメータ

パラメータ

説明

t

DOMTEXT

offset

分割を行うオフセット。

SUBSTRINGDATAファンクション

このファンクションは、指定された範囲のデータ(サブストリング)をノードから抽出します。

関連項目:
DOMCharacterDataサブプログラム

構文

DBMS_XMLDOM.SUBSTRINGDATA(
cd        IN     DOMCHARACTERDATA,
offset    IN     NUMBER,
cnt       IN     NUMBER)
RETURN VARCHAR2;

パラメータ

表191-133 SUBSTRINGDATAファンクションのパラメータ

パラメータ

説明

cd

DOMCHARACTERDATA

offset

取得するデータの開始オフセット。

cnt

取得するデータの(オフセットからの)文字数。

USEBINARYSTREAMファンクション

このファンクションは、ノードのデータ・タイプがRAWまたはBLOBの場合、UTL_BINARYINPUTSTREAMまたはUTL_BINARYOUTPUTSTREAMを使用してノード値を読取りまたは書込みできるように、TRUEを戻します。FALSEの値が返された場合、ノード値はUTL_CHARACTERINPUTSTREAMまたはUTL_CHARACTEROUTPUTSTREAMでのみアクセスできます。

関連項目:
DOMNodeサブプログラム

構文

DBMS_XMLDOM.USEBINARYSTREAM   (
n        IN     DOMNODE)
RETURN BOOLEAN;

パラメータ

表191-134 USEBINARYSTREAMファンクションのパラメータ

パラメータ

説明

n

DOMNODE

WRITETOBUFFERプロシージャ

このプロシージャはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

データベース・キャラクタ・セットを使用して、XMLノードを指定のバッファに書き込みます(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.WRITETOBUFFER(
n        IN      DOMNODE,
buffer   IN OUT  VARCHAR2);

データベース・キャラクタ・セットを使用して、XML文書を指定のバッファに書き込みます(関連項目: 「DOMDocumentサブプログラム」)。

DBMS_XMLDOM.WRITETOBUFFER(
doc       IN      DOMDOCUMENT,
buffer    IN OUT  VARCHAR2);

データベース・キャラクタ・セットを使用して、指定のドキュメント・フラグメントの内容をバッファに書き込みます(関連項目: 「DOMDocumentFragmentサブプログラム」)。

DBMS_XMLDOM.WRITETOBUFFER(
df        IN      DOMDOCUMENTFRAGMENT,
buffer    IN OUT  VARCHAR2);

パラメータ

表191-135 WRITETOBUFFERプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

buffer

書込み先のバッファ。

doc

DOMDOCUMENT

df

DOMDocumentFragment。

WRITETOCLOBプロシージャ

このプロシージャはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

データベース・キャラクタ・セットを使用して、XMLノードを指定のCLOBに書き込みます(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.WRITETOCLOB(
n       IN      DOMNODE,
cl      IN OUT  CLOB);

データベース・キャラクタ・セットを使用して、XML文書を指定のCLOBに書き込みます(関連項目: 「DOMDocumentサブプログラム」)。

DBMS_XMLDOM.WRITETOCLOB(
doc     IN      DOMDOCUMENT,
cl      IN OUT  CLOB);

パラメータ

表191-136 WRITETOCLOBプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

cl

書込み先のCLOB。

doc

DOMDOCUMENT

WRITETOFILEプロシージャ

このプロシージャはオーバーロードされています。各バージョンの機能と構文宣言を次に示します。

構文

データベース・キャラクタ・セットを使用して、XMLノードを指定のファイルに書き込みます(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.WRITETOFILE(
n          IN      DOMNODE,
fileName   IN      VARCHAR2);

指定したキャラクタ・セットを使用して、XMLノードを指定のファイルに書き込みます。このキャラクタ・セットは、個別のパラメータとして渡されます(関連項目: 「DOMNodeサブプログラム」)。

DBMS_XMLDOM.WRITETOFILE(
n          IN      DOMNODE,
fileName   IN      VARCHAR2,
charset    IN      VARCHAR2);

データベース・キャラクタ・セットを使用して、XML文書を指定のファイルに書き込みます(関連項目: 「DOMDocumentサブプログラム」)。

DBMS_XMLDOM.WRITETOFILE(
doc        IN   DOMDOCUMENT,
filename   IN   VARCHAR2);

指定したキャラクタ・セットを使用して、XML文書を指定のファイルに書き込みます(関連項目: 「DOMDocumentサブプログラム」)。

DBMS_XMLDOM.WRITETOFILE(
doc       IN   DOMDOCUMENT,
fileName  IN   VARCHAR2,
charset   IN   VARCHAR2);

パラメータ

表191-137 WRITETOFILEプロシージャのパラメータ

パラメータ

説明

n

DOMNODE

fileName

書込み先のファイル。ファイル名は、たとえば/root/folder1/filenameのように、標準のディレクトリからファイル名への形式に従っている必要があります(Windowsでは、/のかわりに\を使用します)。

charset

指定したキャラクタ・セット。

doc

DOMDOCUMENT

charset

キャラクタ・セット。

192 DBMS_XMLGEN

DBMS_XMLGENパッケージは、SQL問合せの結果を標準的なXML形式に変換します。このパッケージでは、入力された任意のSQL問合せをXML形式に変換し、その結果をCLOBとして戻します。このパッケージは、Cで記述されてカーネルにコンパイルされる点を除き、DBMS_XMLQUERYパッケージに類似しています。このパッケージを実行できるのは、データベース上のみです。

この章では、次の項目について説明します。

- DBMS_XMLGENの使用方法

- DBMS_XMLGENサブプログラムの要約

関連項目:
XMLサポートの詳細およびDBMS_XMLGENの使用例については、『Oracle XML DB開発者ガイド』を参照してください。

DBMS_XMLGENの使用方法

- セキュリティ・モデル

セキュリティ・モデル

DBMS_XMLGENパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XMLGENサブプログラムの要約

表192-1 DBMS_XMLGENパッケージのサブプログラムの要約

サブプログラム

説明

CLOSECONTEXTプロシージャ

コンテキストをクローズし、リソースをすべて解放します。

CONVERTファンクション

XMLを、エスケープ済またはエスケープ解除済の同等のXMLに変換します。

GETNUMROWSPROCESSEDファンクション

GETXMLファンクションを最後にコールしたときに処理されたSQL行の数を取得します。

GETXMLファンクション

XML文書を取得します。

GETXMLTYPEファンクション

XML文書を取得し、XMLTypeとして戻します。

NEWCONTEXTファンクション

新しいコンテキスト・ハンドルを作成します。

NEWCONTEXTFROMHIERARCHYファンクション

結果から再帰的要素を含む階層XMLを生成するために、GETXMLファンクションなどのファンクションで使用されるハンドルを取得します。

RESTARTQUERYプロシージャ

問合せを再起動し、最初からフェッチを開始します。

SETCONVERTSPECIALCHARSプロシージャ

XML文字ではない$などの特殊文字をエスケープ表示に変換するかどうかを設定します。

SETMAXROWSプロシージャ

一度にフェッチされる行の最大数を設定します。

SETNULLHANDLINGプロシージャ

NULLの処理オプションを設定します。

SETROWSETTAGプロシージャ

結果全体を囲む要素の名前を設定します。

SETROWTAGプロシージャ

結果の各行を囲む要素の名前を設定します。

SETSKIPROWSプロシージャ

XMLを生成する前に毎回スキップされる行数を設定します。

USEITEMTAGSFORCOLLプロシージャ

コレクション要素には、タグ_ITEMを追加したコレクションの列名を使用するように強制できます。

USENULLATTRIBUTEINDICATORプロシージャ

NULLを示すためにXML属性を使用するか、XML文書で特定のエンティティのインクルードを省略するかを指定します。

CLOSECONTEXTプロシージャ

このプロシージャは、指定されたコンテキストをクローズし、そのコンテキストに関連付けられたすべてのリソース(SQLカーソル、バインド、定義バッファなど)を解放します。このプロシージャをコールした後はコンテキスト・ハンドルが無効になるため、後続のファンクション・コールではハンドルを使用できなくなります。

構文

DBMS_XMLGEN.CLOSECONTEXT (
ctx  IN ctxHandle);

パラメータ

表192-2 CLOSECONTEXTプロシージャのパラメータ

パラメータ

説明

ctx

クローズするコンテキスト・ハンドル

CONVERTファンクション

このファンクションは、XMLデータを、エスケープ済またはエスケープ解除済の同等のXMLに変換し、XML CLOBデータをエンコードまたはデコードされた形式で戻します。このファンクションの指定方法は、次のとおりです。

構文

文字列形式(VARCHAR2)でXMLDATAを使用します。

DBMS_XMLGEN.CONVERT (
xmlData IN VARCHAR2,
flag    IN NUMBER := ENTITY_ENCODE)
RETURN VARCHAR2;

CLOB形式でXMLDATAを使用します。

DBMS_XMLGEN.CONVERT (
xmlData IN CLOB,
flag    IN NUMBER := ENTITY_ENCODE)
RETURN CLOB;

パラメータ

表192-3 CONVERTファンクションのパラメータ

パラメータ

説明

xmlData

エンコードまたはデコードするXML CLOBデータ。

flag

フラグ設定。エンコードの場合はENTITY_ENCODE(デフォルト)、デコードの場合はENTITY_DECODEに設定します。

使用上の注意

ENTITY_ENCODEを指定すると、XMLデータがエスケープされます。たとえば、<は&lt;に変換されます。エスケープの解除では、これとは逆に変換されます。

GETNUMROWSPROCESSEDファンクション

このファンクションは、GETXMLファンクションをコールしてXML文書を生成するときに処理されたSQL行の数を取得します。この行数には、XML文書の生成前にスキップされた行は含まれません。GETXMLファンクションは行がない場合でも、常にXML文書を生成します。

構文

DBMS_XMLGEN.GETNUMROWSPROCESSED (
ctx     IN    ctxHandle)
RETURN NUMBER;

パラメータ

表192-4 GETNUMROWSPROCESSEDファンクションのパラメータ

パラメータ

説明

ctx

NEWCONTEXTファンクションをコールして取得したコンテキスト・ハンドル。

使用上の注意

このファンクションは、ループ内でGETXMLファンクションをコールしている場合に、ループ処理の終了条件を判断するために使用します。

GETXMLファンクション

このファンクションはXML文書を取得します。このファンクションはオーバーロードされています。

構文

指定した最大行数まで行をフェッチすることによって、XML文書を取得します。取得したXML文書は、入力パラメータとして渡されたCLOBに追加されます。CLOBの余分なコピーが作成されるのを回避し、後続のコールで同じCLOBを再利用する場合は、このバージョンのGETXMLファンクションを使用してください。CLOBが再利用できるため、このようにGETXMLファンクションをコールすると効果的です。

DBMS_XMLGEN.GETXML (
ctx          IN ctxHandle,
tmpclob      IN OUT NCOPY CLOB,
dtdOrSchema  IN number := NONE)
RETURN BOOLEAN;

次の例では、XML文書を生成し、一時CLOBとして戻します。このファンクションから取得した一時CLOBは、DBMS_LOB.FREETEMPORARYをコールして解放する必要があります。

DBMS_XMLGEN.GETXML (
ctx          IN ctxHandle,
dtdOrSchema  IN number := NONE)
RETURN CLOB;

次の例では、SQL問合せ文字列の実行結果をXML形式に変換し、そのXML文書を一時CLOBとして戻しますが、これについては、後でDBMS_LOB.FREETEMPORARYをコールして解放する必要があります。

DBMS_XMLGEN.GETXML (
sqlQuery     IN VARCHAR2,
dtdOrSchema  IN number := NONE)
RETURN CLOB;

パラメータ

表192-5 GETXMLファンクションのパラメータ

パラメータ

説明

ctx

newContextをコールして取得したコンテキスト・ハンドル。

tmpclob

XML文書が追加されるCLOB。

sqlQuery

SQL問合せ文字列。

dtdOrSchema

DTDとスキーマのどちらを作成するのかを指定します。現在はNONEのみがサポートされています。

使用上の注意

SETSKIPROWSプロシージャのコールで指定された行がスキップされた場合は、SETMAXROWSプロシージャのコールで指定された最大数の行(指定されていない場合は結果全体)がフェッチされ、XMLに変換されます。行が取り出されたかどうかをチェックするには、GETNUMROWSPROCESSEDファンクションを使用してください。

GETXMLTYPEファンクション

このファンクションは、XML文書を取得してその文書をXMLTYPEとして戻します。XMLTYPE操作は、結果に対して実行できます。このファンクションはオーバーロードされています。

構文

次の例では、XML文書を生成し、sys.XMLType:として戻します。

DBMS_XMLGEN.GETXMLTYPE (
ctx           IN ctxhandle,
dtdOrSchema   IN number := NONE)
RETURN sys.XMLType;

SQL問合せ文字列の実行結果をXML形式に変換し、そのXML文書をsys.XMLTypeとして戻します。

DBMS_XMLGEN.GETXMLTYPE (
sqlQuery     IN VARCHAR2,
dtdOrSchema  IN number := NONE)
RETURN sys.XMLType

パラメータ

表192-6 GETXMLTYPEファンクションのパラメータ

パラメータ

説明

ctx

newContextをコールして取得したコンテキスト・ハンドル。

sqlQuery

SQL問合せ文字列。

dtdOrSchema

DTDとスキーマのどちらを作成するのかを指定します。現在はNONEのみがサポートされています。

NEWCONTEXTファンクション

このファンクションは、新しいコンテキスト・ハンドルを生成して戻します。このコンテキスト・ハンドルは、結果からXMLを生成するために、GETXMLファンクションなどのファンクションで使用されます。このファンクションの指定方法は、次のとおりです。

構文

問合せから新しいコンテキスト・ハンドルを生成します。

DBMS_XMLGEN.NEWCONTEXT (
query     IN VARCHAR2)
RETURN ctxHandle;

PL/SQL REFカーソル形式の問合せ文字列から、新しいコンテキスト・ハンドルを生成します。

DBMS_XMLGEN.NEWCONTEXT (
queryString  IN SYS_REFCURSOR)
RETURN ctxHandle;

パラメータ

表192-7 NEWCONTEXTファンクションのパラメータ

パラメータ

説明

query

VARCHAR形式の問合せ。結果はXMLに変換する必要があります。

queryString

PL/SQL REFカーソル形式の問合せ文字列。結果はXMLに変換する必要があります。

NEWCONTEXTFROMHIERARCHYファンクション

このファンクションは、結果から再帰的要素を含む階層XMLを生成するために、GETXMLファンクションなどのファンクションで使用されるハンドルを取得します。

構文

DBMS_XMLGEN.NEWCONTEXTFROMHIERARCHY (
queryString IN VARCHAR2)
RETURN ctxHandle;

パラメータ

表192-8 NEWCONTEXTFROMHIERARCHYファンクションのパラメータ

パラメータ

説明

queryString

結果をXMLに変換する必要がある問合せ文字列。この問合せは、通常、CONNECT BY句を使用して構成された階層問合せであり、CONNECT BY問合せによって生成された結果セットと同じプロパティを持つ必要があります。結果セットの列は、レベル数およびXML値の2つのみである必要があります。レベル数は、結果のXML文書内でのXML値の階層位置を判断するために使用されます。

RESTARTQUERYプロシージャ

このプロシージャは問合せを再起動し、最初の行からXMLを生成します。新しいコンテキストを作成せずに、問合せを再度実行する場合に使用できます。

構文

DBMS_XMLGEN.RESTARTQUERY (
ctx  IN ctxHandle);

パラメータ

表192-9 RESTARTQUERYプロシージャのパラメータ

パラメータ

説明

ctx

現行の問合せに対応するコンテキスト・ハンドル。

SETCONVERTSPECIALCHARSプロシージャ

このプロシージャは、XMLデータ内の特殊文字を同等のエスケープXMLに変換するかどうかを設定します。たとえば、<符号は&lt;に変換されます。デフォルトでは、変換が実行されます。入力データに<、>、"、'などの特殊文字(エスケープが必要)を格納できない場合は、このプロシージャを使用するとXML処理のパフォーマンスが向上します。特にデータ量が多い場合、文字データをスキャンして特殊文字を置き換える作業は非効率的です。

構文

DBMS_XMLGEN.SETCONVERTSPECIALCHARS (
ctx   IN ctxHandle,
conv  IN BOOLEAN);

パラメータ

表192-10 SETCONVERTSPECIALCHARSプロシージャのパラメータ

パラメータ

説明

ctx

いずれかのNEWCONTEXTファンクションをコールして取得したコンテキスト・ハンドル。

conv

TRUEは、変換が必要であることを示します。

SETMAXROWSプロシージャ

このプロシージャでは、GETXMLファンクションをコールするたびにSQLの問合せ結果からフェッチする行の最大数を設定します。このプロシージャは、ページ番号付きの結果を生成する場合に使用します。たとえば、XMLデータやHTMLデータのページの生成時に、このmaxrowsパラメータを設定して、XMLやHTMLに変換する行の数を抑制します。

構文

DBMS_XMLGEN.SETMAXROWS (
ctx      IN ctxHandle,
maxRows  IN NUMBER);

パラメータ

表192-11 SETMAXROWSプロシージャのパラメータ

パラメータ

説明

ctx

実行した問合せに対応するコンテキスト・ハンドル。

maxRows

GETXMLファンクションをコールするたびに取得する行の最大数。

SETNULLHANDLINGプロシージャ

このプロシージャでは、flagパラメータを指定することによって、NULLに対する処理オプションを設定します。

構文

DBMS_XMLGEN.SETNULLHANDLING(
ctx  IN ctx,
flag IN NUMBER);

パラメータ

表192-12 SETNULLHANDLINGプロシージャのパラメータ

パラメータ

説明

ctx

実行した問合せに対応するコンテキスト・ハンドル。

flag

NULLの処理オプションの設定。

- DROP_NULLS CONSTANT NUMBER:= 0;(デフォルト)の場合は、NULL要素のタグを削除します。

- NULL_ATTR CONSTANT NUMBER:= 1;の場合はxsi:nil="true"と設定します。

- EMPTY_TAG CONSTANT NUMBER:= 2;の場合は、たとえば<foo/>のように設定します。

SETROWSETTAGプロシージャ

このプロシージャは、ドキュメントのルート要素名を設定します。デフォルトの名前はROWSETです。

構文

DBMS_XMLGEN.SETROWSETTAG (
ctx            IN ctxHandle,
rowSetTagName  IN VARCHAR2);

パラメータ

表192-13 SETROWSETTAGプロシージャのパラメータ

パラメータ

説明

ctx

NEWCONTEXTファンクションをコールして取得したコンテキスト・ハンドル。

rowSetTagName

ドキュメントの要素名。NULLを渡すと、ROWSET要素を表示しないことを示します。

使用上の注意

ユーザーは、rowSetTagをNULLに設定して、この要素の出力を抑制できます。ただし、行と行セットの両方がNULLで、出力に複数の列または行がある場合は、エラーが発生します。これは、生成されたXMLにトップレベルの囲みタグがないため、無効になるからです。

SETROWTAGプロシージャ

このプロシージャは、すべての行を分割する要素の名前を設定します。デフォルトの名前はROWです。

構文

DBMS_XMLGEN.SETROWTAG (
ctx         IN ctxHandle,
rowTagName  IN VARCHAR2);

パラメータ

表192-14 SETROWTAGプロシージャのパラメータ

パラメータ

説明

ctx

NEWCONTEXTファンクションをコールして取得したコンテキスト・ハンドル。

rowTagName

ROW要素の名前。NULLを渡すと、ROW要素を表示しないことを示します。

使用上の注意

ユーザーは、要素の名前をNULLに設定して、ROW要素自体を抑制できます。ただし、行と行セットの両方がNULLで、出力に複数の列または行がある場合は、エラーが発生します。これは、生成されたXMLにトップレベルの囲みタグがないため、無効になるからです。

SETSKIPROWSプロシージャ

このプロシージャでは、GETXMLファンクションをコールするたびに、任意の行数をスキップしてからXML出力を生成します。このプロシージャは、ステートレスWebページ用にページ番号付きの結果を生成する場合に使用します。たとえば、XMLまたはHTMLデータの最初のページを生成する場合は、skiprowsを0 (ゼロ)に設定します。次ページ以降の場合、skiprowsには最初のページで取得した行数を設定します。詳細は、GETNUMROWSPROCESSEDファンクションを参照してください。

構文

DBMS_XMLGEN.SETSKIPROWS (
ctx       IN ctxHandle,
skipRows  IN NUMBER);

パラメータ

表192-15 SETSKIPROWSプロシージャのパラメータ

パラメータ

説明

ctx

実行した問合せに対応するコンテキスト・ハンドル。

skipRows

getXMLをコールするたびにスキップする行数。

USEITEMTAGSFORCOLLプロシージャ

このプロシージャは、コレクション要素のデフォルト名を上書きします。コレクション要素のデフォルト名は、そのタイプ名です。

構文

DBMS_XMLGEN.USEITEMTAGSFORCOLL (
ctx  IN ctxHandle);

パラメータ

表192-16 USEITEMTAGSFORCOLLプロシージャのパラメータ

パラメータ

説明

ctx

コンテキスト・ハンドル。

使用上の注意

このプロシージャを使用すると、デフォルトに上書きして_ITEMタグを追加した列名を使用できます。NUMBERのコレクションがある場合、コレクション要素のデフォルトのタグ名はNUMBERです。

USENULLATTRIBUTEINDICATORプロシージャ

このプロシージャでは、NULLを示すためにXML属性を使用するか、XML文書で特定のエンティティのインクルードを省略するかどうかを指定します。このプロシージャは、SETNULLHANDLINGプロシージャのショートカットとして使用します。

構文

DBMS_XMLGEN.USENULLATTRIBUTEINDICATOR(
ctx       IN   ctxType,
attrind   IN   BOOLEAN := TRUE);

パラメータ

表192-17 USENULLATTRIBUTEINDICATORプロシージャのパラメータ

パラメータ

説明

ctx

コンテキスト・ハンドル。

attrind

NULLを示すために属性を使用するかどうか。

193 DBMS_XMLINDEX

DBMS_XMLINDEXパッケージでは、非同期の索引付けを実装するインタフェースが提供されています。

関連項目:
XMLIndexの詳細は、『Oracle XML DB開発者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_XMLINDEXの使用方法

- 概要

- セキュリティ・モデル

- DBMS_XMLINDEXサブプログラムの要約

DBMS_XMLINDEXの使用方法

- 概要

- セキュリティ・モデル

概要

非同期索引のメンテナンス

基本のXMLIndexは、すべてのDML操作でメンテナンスされます。ただし、計算のコストを考慮すると、多くの場合、失効した結果には十分な可用性があります。そのような場合、データベースのロードが少ないときなど、適切なときまで索引の更新を延期することが得策です。このようにして、非同期索引メンテナンスのメカニズムが提供されています。

セキュリティ・モデル

DBMS_XMLINDEXパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XMLINDEXサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表193-1 DBMS_XMLINDEXパッケージのサブプログラム

サブプログラム

説明

CREATEDATEINDEXプロシージャ

XMLIndexの記憶表であるPATH TABLEのVALUE列に、日付値の2次索引を作成します。

CREATENUMBERINDEXプロシージャ

XMLIndexの記憶表であるPATH TABLEのVALUE列に、数値の2次索引を作成します。

DROPPARAMETERプロシージャ

指定したパラメータ識別子に関連付けられているXMLIndexパラメータ文字列を削除します。

MODIFYPARAMETERプロシージャ

指定したパラメータ名に関連付けられているXMLIndexパラメータ文字列を変更します。

PROCESS_PENDINGプロシージャ

XMLIndexにあるNONBLOCKING ALTER INDEX OPERATIONの保留中の行を処理します。

REGISTERPARAMETERプロシージャ

パラメータ文字列とXMLIndexパラメータ文字列のペアをXDBに登録します。

SYNCINDEXプロシージャ

索引を手動で同期化します。

CREATEDATEINDEXプロシージャ

このプロシージャは、XMLIndexの記憶表であるPATH TABLEのVALUE列に、日付値の2次索引を作成します。プロシージャの2番目の形式を使用すると、date_index_clauseを空の文字列に設定できます。

構文

DBMS_XMLINDEX.CREATEDATEINDEX  (
xml_index_schema   IN   VARCHAR2,
xml_index_name     IN   VARCHAR2,
date_index_name    IN   VARCHAR2,
xmltypename        IN   VARCHAR2,
date_index_clause  IN   VARCHAR2);

DBMS_XMLINDEX.CREATEDATEINDEX  (
xml_index_schema   IN   VARCHAR2
xml_index_name     IN   VARCHAR2,
date_index_name    IN   VARCHAR2,
xmltypename        IN   VARCHAR2);

パラメータ

表193-2 CREATEDATEINDEXプロシージャのパラメータ

パラメータ

説明

xml_index_schema

XMLIndexの所有者の名前。

xml_index_name

XMLIndexの名前。

date_index_name

xml_index_schemaが所有するxml_index_nameという名前のXMLIndexのPATH TABLEのVALUE列に、日付値に対して作成される2次索引の名前。

xmltypename

パス表のVALUE列内の値が変換されるタイプ。指定可能な値の文字列は、DATETIME、TIME、DATE、GDAY、GMONTH、GYEAR、GYEARMONTH、GMONTHDAYです。

date_index_clause

作成時に日付索引に適用するSTORAGE句。日付索引を作成するためにCREATE INDEX文に追加される文字列引数です。

CREATENUMBERINDEXプロシージャ

このプロシージャは、XMLIndexの記憶表であるPATH TABLEのVALUE列に、数値の2次索引を作成します。

構文

DBMS_XMLINDEX.CREATENUMBERINDEX (
xml_index_schema   IN   VARCHAR2,
xml_index_name     IN   VARCHAR2,
num_index_name     IN   VARCHAR2,
num_index_clause   IN   VARCHAR2,
xmltypename        IN   VARCHAR2);

パラメータ

表193-3 CREATENUMBERINDEXプロシージャのパラメータ

パラメータ

説明

xml_index_schema

XMLIndexの所有者の名前。

xml_index_name

XMLIndexの名前。

num_index_name

xml_index_schemaが所有するxml_index_nameという名前のXMLIndexのPATH TABLEのVALUE列に、数値に対して作成される2次索引の名前。

num_index_clause

作成時に数値索引に適用するSTORAGE句。数値索引を作成するためにCREATE INDEX文に追加される文字列引数です。

xmltypename

パス表のVALUE列内の値が変換されるタイプ。指定可能な値の文字列は、FLOAT、DOUBLE、DECIMAL、INTEGER、NONPOSITIVEINTEGER、NEGATIVEINTEGER、LONG、INT、SHORT、BYTE、NONNEGATIVEINTEGER、UNSIGNEDLONG、UNSIGNEDINT、UNSIGNEDSHORT、UNSIGNEDBYTE、POSITIVEINTEGERです。

DROPPARAMETERプロシージャ

このプロシージャは、指定したパラメータ識別子に関連付けられているXMLIndexパラメータ文字列を削除します。

構文

DBMS_XMLINDEX.DROPPARAMETER (
name        IN      VARCHAR2);

パラメータ

表193-4 DROPPARAMETERプロシージャのパラメータ

パラメータ

説明

name

パラメータ文字列の識別子

例

DBMS_XMLINDEX.DROPPARAMETER (
'myIndexParam');

MODIFYPARAMETERプロシージャ

このプロシージャは、指定したパラメータ識別子に関連付けられているXMLIndexパラメータ文字列を変更します。

構文

DBMS_XMLINDEX.MODIFYPARAMETER (
name        IN      VARCHAR2,
parameter   IN      CLOB);

パラメータ

表193-5 MODIFYPARAMETERプロシージャのパラメータ

パラメータ

説明

name

パラメータ文字列の識別子

parameter

CREATE INDEXまたはALTER INDEX文で使用可能なXMLIndexパラメータ句

例

DBMS_XMLINDEX.MODIFYPARAMETER (
'myIndexParam',
'PATH TABLE po_ptab
PATH ID INDEX po_pidx
ORDER KEY INDEX po_oidx
VALUE INDEX po_vidx');

PROCESS_PENDINGプロシージャ

このプロシージャのプロセスは、XMLIndexでのNONBLOCKING ALTER INDEX ADD_GROUP/ADD_COLUMN操作の完了に必要なDMLを実行します。

構文

DBMS_XMLINDEX.PROCESS_PENDING (
xml_index_schema    IN     VARCHAR2,
xml_index_name      IN     VARCHAR2,
pending_row_count   OUT    BINARY_INTEGER,
error_row_count     OUT    BINARY_INTEGER);

パラメータ

表193-6 PROCESS_PENDINGプロシージャのパラメータ

パラメータ

説明

xml_index_schema

XMLIndexの所有者の名前。

xml_index_name

NONBLOCKING ALTER INDEX OPERATIONを使用して変更されるXMLIndexの名前。

pending_row_count

処理される保留中の行数。

error_row_count

エラーのために索引付けが失敗した可能性のある行数。

使用上の注意

- このプロシージャは、ロックされた行とエラーのために索引メンテナンスが失敗した行をスキップしながら、必要なすべての行の索引付けを小さいバッチで繰り返し試行します。したがって、保留中の行がすべて処理されるまで、XMLIndexに対して複数回実行する必要がある場合があります。保留中の行がすべて処理されたら、NONBLOCKING ALTER INDEX OPERATIONを完了できます。

- 何度か試みた後でも保留中のすべての行が処理できない場合は、SYS_AIXSXI_######_PENDINGTABで未処理の行を調べた後、SYS_AIXSXI_#####_ERRORTABでエラーを確認して、ロックおよびエラーの問題を手動でトリアージする必要があります。行とエラーを追跡しておくと、問題のトリアージを行う場合に役立ちます。

例

EXEC DBMS_XMLINDEX.PROCESS_PENDING(
'SCOTT', 'PO_XMLINDEX_IX', out_param1, out_param2);

REGISTERPARAMETERプロシージャ

このプロシージャは、パラメータ識別子とXMLIndexパラメータ文字列のペアをXDBに登録します。

構文

DBMS_XMLINDEX.REGISTERPARAMETER (
name        IN      VARCHAR2,
parameter   IN      CLOB);

パラメータ

表193-7 REGISTERPARAMETERプロシージャのパラメータ

パラメータ

説明

name

パラメータ文字列の識別子

parameter

CREATE INDEXまたはALTER INDEX文で使用可能なXMLIndexパラメータ句

例

DBMS_XMLINDEX.REGISTERPARAMETER (
'myIndexParam',
'PATH TABLE po_ptab
PATH ID INDEX po_pidx
ORDER KEY INDEX po_oidx
VALUE INDEX po_vidx
PATHS(NAMESPACE MAPPING(xmlns:p="http://www.example.com/IPO"))
GROUP MASTERGROUP XMLTABLE PO_TAB
(''/p:PurchaseOrder''
COLUMNS
REFERENCE VARCHAR2(30) PATH ''p:Reference'',
REQUESTOR VARCHAR2(30) PATH ''p:Requestor'' )
GROUP ITEMGROUP XMLTABLE ITEMGROUP_TAB
(''/p:PurchaseOrder/p:LineItems/p:LineItem''
COLUMNS
LINENUMBER NUMBER(38) PATH ''@p:ItemNumber'',
QUANTITY NUMBER(38) PATH ''@p:Quantity'',
DESCRIPTION VARCHAR2(256) PATH ''p:Description'''));

SYNCINDEXプロシージャ

このファンクションは、非同期にメンテナンスされたXMLIndexを同期化します。これは、保留中の表に記録されるXMLIndex変更に適用され、ベースXMLTYPE列を含むパス表を最新にします。

構文

DBMS_XMLINDEX.SYNCINDEX (
xml_index_schema      IN VARCHAR2,
xml_index_name        IN VARCHAR2,
partition_name        IN VARCHAR2 DEFAULT NULL,
reindex               IN BOOLEAN DEFAULT FALSE);

パラメータ

表193-8 SYNCINDEXプロシージャのパラメータ

パラメータ

説明

xml_index_schema

XMLIndexの所有者の名前。

xml_schema_name

XMLIndexの名前。

partition_name

現在サポートされていません。

reindex

デフォルトはFALSEです。TRUEに設定した場合は、2次索引が削除され、バルクロードできるように後で再作成されます。

例

EXEC DBMS_XMLINDEX.SYNCINDEX('USER1', 'SS_TAB_XMLI', REINDEX=>TRUE);

オラクルの法律上の注意点について

コピーライトについて

Copyright © 1994-2017, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

アルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のアルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが非公開の試作版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のベータ・トライアル契約のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle PartnerNetwork Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティについて

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

194 DBMS_XMLPARSER

DBMS_XMLPARSERを使用すると、XML文書の内容と構造にアクセスできます。XMLは、XML文書と呼ばれるデータ・オブジェクトのクラスを記述します。それらを処理するコンピュータ・プログラムの動作を記述する場合もあります。XML文書の構成は、SGMLドキュメントに準拠しています。

XML文書は、エンティティと呼ばれる記憶単位で構成され、このエンティティには解析済または未解析のデータが含まれています。解析済データは文字で構成され、一部は文字データを、他の一部はマークアップを形成します。マークアップは、ドキュメントの記憶域レイアウトと論理構造の記述をエンコードします。XMLによって、記憶域レイアウトと論理構造に対して制約を加えるメカニズムが提供されます。

XML文書の読込み、その内容と構造へのアクセスには、XMLプロセッサと呼ばれるソフトウェア・モジュールが使用されます。XMLプロセッサは、別のモジュール(アプリケーション)にかわって処理を実行しているとみなされます。XMLプロセッサ(またはパーサー)のPL/SQL実装は、W3C XML仕様REC-xml-19980210に準拠しており、XMLデータの読込み方法とアプリケーションに提供する情報に関して、XMLプロセッサに要求される動作が含まれています。

PL/SQL XMLパーサーのデフォルト動作は、DOM APIからアクセス可能な解析ツリーを構築すること、DTDが見つかった場合は妥当性チェックを行うこと(DTDが見つからない場合は妥当性チェックを行いません)、エラー・ログが指定されている場合はエラーを記録することです。解析に失敗すると、アプリケーション・エラーが発生します。

この章では、次の項目について説明します。

- DBMS_XMLPARSERの使用方法

- DBMS_XMLPARSERサブプログラムの要約

関連項目:
『Oracle XML DB開発者ガイド』

DBMS_XMLPARSERの使用方法

- セキュリティ・モデル

セキュリティ・モデル

DBMS_XDB_XMLPARSERパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XMLPARSERサブプログラムの要約

表194-1 DBMS_XMLPARSERパッケージのサブプログラム

メソッド

説明

FREEPARSER

パーサー・オブジェクトを解放します。

GETDOCTYPE

解析されたDTDを取得します。

GETDOCUMENT

DOM文書を取得します。

GETRELEASEVERSION

Oracle XML Parser for PL/SQLのリリース・バージョンを戻します。

GETVALIDATIONMODE

妥当性チェック・モードを戻します。

NEWPARSER

新規のパーサー・インスタンスを戻します。

PARSE

指定のURLおよびファイルに格納されたXMLを解析します。

PARSEBUFFER

指定のバッファに格納されたXMLを解析します。

PARSECLOB

指定のCLOBに格納されたXMLを解析します。

PARSEDTD

指定のURLおよびファイルに格納されたDTDを解析します。

PARSEDTDBUFFER

指定のバッファに格納されたDTDを解析します。

PARSEDTDCLOB

指定のCLOBに格納されたDTDを解析します。

SETBASEDIR

相対URLの解決に使用するベース・ディレクトリを設定します。

SETDOCTYPE

DTDを設定します。

SETERRORLOG

指定したファイルに送信するエラーを設定します。

SETPRESERVEWHITESPACE

空白の保持モードを設定します。

SETVALIDATIONMODE

妥当性チェック・モードを設定します。

SHOWWARNINGS

警告をオンまたはオフにします。

FREEPARSER

パーサー・オブジェクトを解放します。

構文

PROCEDURE freeParser(
p Parser);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

GETDOCTYPE

解析済のDTDを戻します。このファンクションをコールできるのは、DTDの解析後のみです。

構文

FUNCTION getDoctype(
p Parser)
RETURN DOMDocumentType;

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

GETDOCUMENT

パーサーによって作成されたDOMツリー・ドキュメントのドキュメント・ノードを戻します。このファンクションをコールできるのは、ドキュメントの解析後のみです。

構文

FUNCTION GETDOCUMENT(
p Parser)
RETURN DOMDocument;

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

GETRELEASEVERSION

Oracle XML Parser for PL/SQLのリリース・バージョンを戻します。

構文

FUNCTION getReleaseVersion
RETURN VARCHAR2;

GETVALIDATIONMODE

妥当性チェック・モードを取得します。妥当性チェックを行う場合はTRUE、妥当性チェックを行わない場合はFALSEになります。

構文

FUNCTION GETVALIDATIONMODE(
p Parser)
RETURN BOOLEAN;

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

NEWPARSER

新規のパーサー・インスタンスを戻します。このファンクションは、他の解析メソッドを使用する必要がある場合、パーサーのデフォルト動作の変更前にコールする必要があります。

構文

FUNCTION newParser
RETURN Parser;

PARSE

指定のURLおよびファイルに格納されたXMLを解析します。解析に失敗すると、アプリケーション・エラーが発生します。このメソッドの指定方法は、次の表のとおりです。

構文

説明

FUNCTION parse(
url VARCHAR2)

RETURN DOMDocument;

作成されたDOM文書を戻します。この構文は、パーサーのデフォルト動作が受入れ可能で、URLおよびファイルの解析のみが必要な場合に使用します。

PROCEDURE parse(
p Parser,

url VARCHAR2);

パーサーのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。

パラメータ

IN / OUT

説明

url

(IN)

解析するURLおよびファイルの完全パス。

p

(IN)

パーサー・インスタンス。

PARSEBUFFER

指定のバッファに格納されたXMLを解析します。パーサーのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。解析に失敗すると、アプリケーション・エラーが発生します。

構文

PROCEDURE PARSEBUFFER(
p   Parser,
doc VARCHAR2);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

doc

(IN)

解析するXML文書のバッファ。

PARSECLOB

指定のCLOBに格納されたXMLを解析します。パーサーのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。解析に失敗すると、アプリケーション・エラーが発生します。

構文

PROCEDURE PARSECLOB(
p   Parser,
doc CLOB);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

doc

(IN)

解析するXML文書のバッファ。

PARSEDTD

指定のURLおよびファイルに格納されたDTDを解析します。パーサーのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。解析に失敗すると、アプリケーション・エラーが発生します。

構文

PROCEDURE PARSEDTD(
p     Parser,
url   VARCHAR2,
root  VARCHAR2);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

url

(IN)

解析するURLおよびファイルの完全パス。

root

(IN)

ルート要素の名前。

PARSEDTDBUFFER

指定のバッファに格納されたDTDを解析します。パーサーのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。解析に失敗すると、アプリケーション・エラーが発生します。

構文

PROCEDURE PARSEDTDBUFFER(
p    Parser,
dtd  VARCHAR2,
root VARCHAR2);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

dtd

(IN)

解析するDTDのバッファ。

root

(IN)

ルート要素の名前。

PARSEDTDCLOB

指定のCLOBに格納されたDTDを解析します。パーサーのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。解析に失敗すると、アプリケーション・エラーが発生します。

構文

PROCEDURE PARSEDTDCLOB(
p    Parser,
dtd  CLOB,
root VARCHAR2);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

dtd

(IN)

解析するDTDのCLOB。

root

(IN)

ルート要素の名前。

SETBASEDIR

相対URLの解決に使用するベース・ディレクトリを設定します。解析に失敗すると、アプリケーション・エラーが発生します。

構文

PROCEDURE setBaseDir(
p   Parser,
dir VARCHAR2);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

dir

(IN)

ベース・ディレクトリとして使用するディレクトリ。

SETDOCTYPE

パーサーが妥当性チェックで使用するDTDを設定します。ドキュメントの解析前にコールする必要があります。

構文

PROCEDURE setDoctype(
p   Parser,
dtd DOMDocumentType);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

dtd

(IN)

設定するDTD。

SETERRORLOG

指定したファイルに送信するエラーを設定します。

構文

PROCEDURE setErrorLog(
p        Parser,
fileName VARCHAR2);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

fileName

(IN)

エラー・ログとして使用するファイルの完全パス。

SETPRESERVEWHITESPACE

空白の保持モードを設定します。

構文

PROCEDURE setPreserveWhitespace(
p   Parser,
yes BOOLEAN);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

yes

(IN)

設定するモード: 保持する場合はTRUEに、保持しない場合はFALSEに設定します。

SETVALIDATIONMODE

妥当性チェック・モードを設定します。

構文

PROCEDURE setValidationMode(
p   Parser,
yes BOOLEAN);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

yes

(IN)

設定するモード: 妥当性チェックを行う場合はTRUEに、妥当性チェックを行わない場合はFALSEに設定します。

SHOWWARNINGS

警告をオンまたはオフにします。

構文

PROCEDURE showWarnings(
p   Parser,
yes BOOLEAN);

パラメータ

IN / OUT

説明

p

(IN)

パーサー・インスタンス。

yes

(IN)

設定するモード: 警告を表示する場合はTRUEに、表示しない場合はFALSEに設定します。

195 DBMS_XMLQUERY

DBMS_XMLQUERYは、データベースからXMLTypeへの変換機能を提供します。できるだけDBMS_XMLQUERYは使用せず、C言語の組込みパッケージであるDBMS_XMLGENを使用してください。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XMLQUERYの使用方法

- セキュリティ・モデル

- 定数

- タイプ

- DBMS_XMLQUERYサブプログラムの要約

DBMS_XMLQUERYの使用方法

- セキュリティ・モデル

- 定数

- タイプ

セキュリティ・モデル

DBMS_XMLQUERYパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

表195-1 DBMS_XMLQUERYの定数

定数

説明

DB_ENCODING

DB文字エンコーディングの使用を示します。

DEFAULT_ROWSETTAG

結果セットから生成されたXMLを囲む要素のタグ名(ほとんどの場合、ルート・ノードのタグ名) -- ROWSET。

DEFAULT_ERRORTAG

発生したエラーを囲むデフォルトのタグ -- ERROR。

DEFAULT_ROWIDATTR

db.recordsに対応するXML要素のカーディナリティ属性のデフォルト名 -- NUM。

DEFAULT_ROWTAG

db.recordsに対応する要素のデフォルト・タグ名 -- ROW。

DEFAULT_DATE_FORMAT

デフォルトの日付マスク -- 'MM/dd/yyyy HH:mm:ss'。

ALL_ROWS

出力にすべての行が必要であることを示します。

NONE

出力にXMLメタデータを含めない(DTDなどがない)ことを指定します。

DTD

DTDの生成が必要であることを指定します。

SCHEMA

XML Schemaの生成が必要であることを指定します。

LOWER_CASE

小文字のタグ名を使用します。

UPPER_CASE

大文字のタグ名を使用します。

タイプ

表195-2 DBMS_XMLQUERYのタイプ

タイプ

説明

ctxType

問合せコンテキスト・ハンドルのタイプ。NEWCONTEXTの戻りタイプです。

DBMS_XMLQUERYサブプログラムの要約

表195-3 DBMS_XMLQUERYパッケージのサブプログラム

メソッド

説明

CLOSECONTEXT

特定の問合せコンテキストのクローズまたは割当て解除を行います。

GETDTD

DTDを生成します。

GETEXCEPTIONCONTENT

スローされた例外のエラー・コードおよびエラー・メッセージを戻します。

GETNUMROWSPROCESSED

問合せで処理された行の数を戻します。

GETVERSION

使用中のXSUのバージョンを出力します。

GETXML

XML文書を生成します。

NEWCONTEXT

問合せコンテキストを作成し、コンテキスト・ハンドルを戻します。

PROPAGATEORIGINALEXCEPTION

例外が発生してスローされる場合、OracleXMLSQLExceptionで例外をラップするのではなく、発生した例外自体をスローするようにXSUに指示します。

REMOVEXSLTPARAM

特定のトップレベルのスタイルシート・パラメータを削除します。

SETBINDVALUE

特定のバインド名の値を設定します。

SETCOLLIDATTRNAME

コレクション要素のセパレータ・タグのID属性名を設定します。

SETDATAHEADER

XMLデータ・ヘッダーを設定します。

SETDATEFORMAT

XML文書で生成された日付の書式を設定します。

SETENCODINGTAG

XML文書でのエンコーディング処理命令を設定します。

SETERRORTAG

XMLエラー・ドキュメントを囲むタグを設定します。

SETMAXROWS

XMLに変換される行の最大数を設定します。

SETMETAHEADER

XMLメタ・ヘッダーを設定します。

SETRAISEEXCEPTION

発生した例外をスローするようにXSUに指示します。

SETRAISENOROWSEXCEPTION

生成されたXML文書がなんらかの理由で空である場合、OracleXMLNoRowsExceptionをスローするかどうかをXSUに指示します。

SETROWIDATTRNAME

タグを囲む行のID属性名を設定します。

SETROWIDATTRVALUE

タグを囲む行のID属性に値を割り当てるスカラー列を指定します。

SETROWSETTAG

XMLデータセットを囲むタグを設定します。

SETROWTAG

XML要素を囲むタグを設定します。

SETSKIPROWS

スキップする行数を設定します。

SETSQLTOXMLNAMEESCAPING

XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。

SETSTYLESHEETHEADER

スタイルシートのヘッダーを設定します。

SETTAGCASE

生成されたXMLタグの大文字または小文字を指定します。

SETXSLT

生成されたXMLに適用されるスタイルシートを登録します。

SETXSLTPARAM

トップレベルのスタイルシート・パラメータの値を設定します。

USENULLATTRIBUTEINDICATOR

NULLを示すためにXML属性を使用するかどうかを指定します。

USETYPEFORCOLLELEMTAG

コレクション要素のタグ名としてコレクション要素のタイプ名を使用することをXSUに指示します。

CLOSECONTEXT

特定の問合せコンテキストのクローズまたは割当て解除を行います。

構文

PROCEDURE CLOSECONTEXT(
ctxHdl IN ctxType);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

GETDTD

コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成して戻します。指定できるオプションは、次の表のとおりです。

構文

説明

FUNCTION GETDTD(
ctxHdl IN ctxType,

withVer IN BOOLEAN := false)

RETURN CLOB;

コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成するファンクション。

PROCEDURE GETDTD(
ctxHdl IN ctxType,

xDoc IN CLOB,

withVer IN BOOLEAN := false);

コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成するプロシージャ。XML文書の結果に対する出力CLOBを指定します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

withVer

(IN)

バージョン情報を生成するかどうか。生成する場合はTRUEを設定します。

xDoc

(IN)

生成されたXML文書の書込み先CLOB。

GETEXCEPTIONCONTENT

スローされた例外のSQLエラー・コードとエラー・メッセージを、プロシージャのOUTパラメータを使用して戻します。このプロシージャでは、元の例外を独自の例外で隠すというJVMの機能を実行し、その結果、PL/SQLは元の例外の内容にアクセスできなくなります。

構文

PROCEDURE GETEXCEPTIONCONTENT(
ctxHdl IN ctxType,
errNo OUT NUMBER,
errMsg OUT VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

errNo

(OUT)

エラー番号。

errMsg

(OUT)

エラー・メッセージ。

GETNUMROWSPROCESSED

問合せで処理された行の数を戻します。

構文

FUNCTION GETNUMROWSPROCESSED(
ctxHdl IN ctxType)
RETURN NUMBER;

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

GETVERSION

使用中のXSUのバージョンを出力します。

構文

PROCEDURE GETVERSION();

GETXML

新規コンテキストを作成して問合せを実行し、XMLを戻してコンテキストをクローズします。これは便利なファンクションです。コンテキストは、明示的にオープンまたはクローズする必要はありません。指定できるオプションは、次の表のとおりです。

構文

説明

FUNCTION GETXML(
sqlQuery IN VARCHAR2,

metaType IN NUMBER := NONE)

RETURN CLOB;

このファンクションは、文字列形式のSQL問合せを使用します。

FUNCTION GETXML(
sqlQuery IN CLOB,

metaType IN NUMBER := NONE)

RETURN CLOB;

このファンクションは、CLOB形式のSQL問合せを使用します。

FUNCTION GETXML(
ctxHdl IN ctxType,

metaType IN NUMBER := NONE)

RETURN CLOB;

このファンクションは、コンテキストの初期化に使用するSQL問合せに基づいてXML文書を生成します。

PROCEDURE GETXML(
ctxHdl IN ctxType,

xDoc IN CLOB,

metaType IN NUMBER := NONE);

このプロシージャは、コンテキストの初期化に使用するSQL問合せに基づいてXML文書を生成します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

metaType

(IN)

XMLメタデータ・タイプ(NONE、DTD、またはSCHEMA)。

sqlQuery

(IN)

SQL問合せ。

xDoc

(IN)

生成されたXML文書の書込み先CLOB。

NEWCONTEXT

問合せコンテキストを作成し、コンテキスト・ハンドルを戻します。指定できるオプションは、次の表のとおりです。

構文

説明

FUNCTION NEWCONTEXT(
sqlQuery IN VARCHAR2)

RETURN ctxType;

文字列から問合せコンテキストを作成します。

FUNCTION NEWCONTEXT(
sqlQuery IN CLOB)

RETURN ctxType;

CLOBから問合せコンテキストを作成します。

パラメータ

IN / OUT

説明

sqlQuery

(IN)

SQL問合せ。結果はXMLに変換する必要があります。

PROPAGATEORIGINALEXCEPTION

発生した元の例外すべてをスローするか、OracleXMLSQLExceptionでラップするかどうかを指定します。

構文

PROCEDURE PROPAGATEORIGINALEXCEPTION(
ctxHdl IN ctxType,
flag IN BOOLEAN);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

元の例外を伝播するにはTRUE、OracleXMLExceptionでラップするにはFALSEを設定します。

REMOVEXSLTPARAM

トップレベルのスタイルシート・パラメータの値を削除します。登録されているスタイルシートがない場合、このメソッドは操作できません。

構文

PROCEDURE REMOVEXSLTPARAM(
ctxHdl IN ctxType,
name IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

name

(IN)

トップレベルのスタイルシート・パラメータの名前。

SETBINDVALUE

特定のバインド名の値を設定します。

構文

PROCEDURE SETBINDVALUE(
ctxHdl IN ctxType,
bindName IN VARCHAR2,
bindValue IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

bindName

(IN)

バインド名。

bindValue

(IN)

バインド値。

SETCOLLIDATTRNAME

コレクション要素のセパレータ・タグのID属性名を設定します。NULLまたは空の文字列をタグに渡すと、行のID属性が省略されます。

構文

PROCEDURE SETCOLLIDATTRNAME(
ctxHdl IN ctxType,
attrName IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

attrName

(IN)

属性名。

SETDATAHEADER

XMLデータ・ヘッダーを設定します。データ・ヘッダーとは、問合せにより生成されたXMLエンティティ(rowset)の始めに追加されるXMLエンティティです。これら2つのエンティティをdocTag引数で囲みます。最後に指定したデータ・ヘッダーが使用されます。headerパラメータにNULLを渡すと、データ・ヘッダーの設定が解除されます。

構文

PROCEDURE SETDATAHEADER(
ctxHdl IN ctxType,
header IN CLOB := null,
tag IN VARCHAR2 := null);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

header

(IN)

ヘッダー。

tag

(IN)

データ・ヘッダーおよび行セットを囲むタグ。

SETDATEFORMAT

XML文書で生成された日付の書式を設定します。日付書式パターン(日付マスク)の構文は、java.text.SimpleDateFormatクラスの要件に従う必要があります。マスクをNULLまたは空の文字列に設定すると、デフォルトのマスクであるDEFAULT_DATE_FORMATが設定されます。

構文

PROCEDURE SETDATEFORMAT(
ctxHdl IN ctxType,
mask IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

mask

(IN)

日付マスク。

SETENCODINGTAG

XML文書でのエンコーディング処理命令を設定します。

構文

PROCEDURE SETENCODINGTAG(
ctxHdl IN ctxType,
enc IN VARCHAR2 := DB_ENCODING);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

enc

(IN)

使用するエンコーディング。

SETERRORTAG

XMLエラー・ドキュメントを囲むタグを設定します。

構文

PROCEDURE SETERRORTAG(
ctxHdl IN ctxType,
tag IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

tag

(IN)

タグ名。

SETMAXROWS

XMLに変換される行の最大数を設定します。デフォルトでは、最大数は設定されていません。

構文

PROCEDURE SETMAXROWS (
ctxHdl IN ctxType,
rows IN NUMBER);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

rows

(IN)

生成する行の最大数。

SETMETAHEADER

XMLメタ・ヘッダーを設定します。設定すると、このオブジェクトにより生成された各XML文書のメタデータ・パート(DTDまたはXMLSchema)の最初の部分にヘッダーが挿入されます。最後に指定したメタ・ヘッダーが使用されます。headerパラメータにNULLを渡すと、メタ・ヘッダーの設定が解除されます。

構文

PROCEDURE SETMETAHEADER(
ctxHdl IN ctxType,
header IN CLOB := null);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

Header

(IN)

ヘッダー。

SETRAISEEXCEPTION

発生した例外をスローするかどうかを指定します。このコールが行われない場合またはflag引数にFALSEが渡された場合は、XSUによってSQL例外が捕捉され、例外メッセージからXML文書が生成されます。

構文

PROCEDURE SETRAISEEXCEPTION(
ctxHdl IN ctxType,
flag IN BOOLEAN:=true);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

発生した例外をスローするかどうか。する場合はTRUE、しない場合はFALSEを設定します。

SETRAISENOROWSEXCEPTION

生成されたXML文書が空だった場合にOracleXMLNoRowsExceptionをスローするかどうかを指定します。デフォルトでは、例外はスローされません。

構文

PROCEDURE SETRAISENOROWSEXCEPTION(
ctxHdl IN ctxType,
flag IN BOOLEAN:=false);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

TRUEが設定された場合はOracleXMLNoRowsExceptionをスローします。

SETROWIDATTRNAME

タグを囲む行のID属性名を設定します。NULLまたは空の文字列をタグに渡すと、行のID属性が省略されます。

構文

PROCEDURE SETROWIDATTRNAME(
ctxHdl IN ctxType,
attrName IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

attrName

(IN)

属性名。

SETROWIDATTRVALUE

タグを囲む行のID属性に値を割り当てるスカラー列を指定します。colNameにNULLまたは空の文字列を渡すと、行のID属性に行のカウント値(0、1、2など)が割り当てられます。

構文

PROCEDURE SETROWIDATTRVALUE(
ctxHdl IN ctxType,
colName IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

colName

(IN)

値が行のID属性に割り当てられる列。

SETROWSETTAG

XMLデータセットを囲むタグを設定します。

構文

PROCEDURE SETROWSETTAG(
ctxHdl IN ctxType,
tag IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

tag

(IN)

タグ名。

SETROWTAG

db.recordに対応するXML要素を囲むタグを設定します。

構文

PROCEDURE SETROWTAG(
ctxHdl IN ctxType,
tag IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

tag

(IN)

タグ名。

SETSKIPROWS

スキップする行数を設定します。デフォルトでは、スキップされる行はありません。

構文

PROCEDURE SETSKIPROWS(
ctxHdl IN ctxType,
rows IN NUMBER);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

rows

(IN)

スキップする行の最大数。

SETSQLTOXMLNAMEESCAPING

XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。

構文

PROCEDURE SETSQLTOXMLNAMEESCAPING(
ctxHdl IN ctxType,
flag IN BOOLEAN := true);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

エスケープをオンにするかどうか。する場合はTRUE、しない場合はFALSEを設定します。

SETSTYLESHEETHEADER

生成されたXML文書のスタイルシートのヘッダー(スタイルシート処理命令)を設定します。uri引数にNULLを渡すと、スタイルシート・ヘッダーおよびスタイルシート・タイプの設定が解除されます。

構文

PROCEDURE SETSTYLESHEETHEADER(
ctxHdl IN ctxType,
uri IN VARCHAR2,
type IN VARCHAR2 := 'text/xsl');

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

uri

(IN)

スタイルシートのURI。

type

(IN)

スタイルシート・タイプ。デフォルトは、text/xslです。

SETTAGCASE

生成されたXMLタグの大文字または小文字を指定します。

構文

PROCEDURE SETTAGCASE(
ctxHdl IN ctxType,
tCase IN NUMBER);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

tCase

(IN)

タグに大文字と小文字のどちらを使用するか。

- 0は元の文字をそのまま使用します。

- 1は小文字を使用します。

- 2は大文字を使用します。

SETXSLT

生成されたXMLに適用されるスタイルシートを登録します。スタイルシートがすでに登録されている場合は、新しいものに置換されます。指定できるオプションは、次の表のとおりです。uri引数にNULLを渡すか、stylesheet引数に空の文字列を渡すと、スタイルシート・ヘッダーおよびスタイルシート・タイプの設定が解除されます。

構文

説明

PROCEDURE SETXSLT(
ctxHdl IN ctxType,

uri IN VARCHAR2,

ref IN VARCHAR2 := null);

スタイルシートを登録解除するには、URIにNULLを渡します。

PROCEDURE SETXSLT(
ctxHdl IN ctxType,

stylesheet CLOB,

ref IN VARCHAR2 := null);

スタイルシートを登録解除するには、スタイルシートにNULLまたは空の文字列を渡します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

uri

(IN)

スタイルシートのURI。

stylesheet

(IN)

スタイルシート。

ref

(IN)

エンティティに含めたりインポートする他、外部エンティティのURL。

SETXSLTPARAM

トップレベルのスタイルシート・パラメータの値を設定します。パラメータ値には、有効なXPath式を指定します(このため、文字列リテラル値は明示的に引用されることが必要です)。登録されているスタイルシートがない場合、このメソッドは操作できません。

構文

PROCEDURE SETXSLTPARAM(
ctxHdl IN ctxType,
name IN VARCHAR2,
value IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

name

(IN)

トップレベルのスタイルシート・パラメータの名前。

value

(IN)

スタイルシート・パラメータに割り当てられる値。

USENULLATTRIBUTEINDICATOR

NULLであることを示すために、XML属性を使用するか、XML文書で特定のエンティティを省略するかどうかを指定します。

構文

PROCEDURE SETNULLATTRIBUTEINDICATOR(
ctxHdl IN ctxType,
flag IN BOOLEAN);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

TRUEの場合、属性がNULLに設定されます。FALSEの場合、XML文書では省略されます。

USETYPEFORCOLLELEMTAG

コレクション要素のタイプ名をその要素のタグ名として使用するかどうかを指定します。デフォルトでは、コレクション要素のタグ名は、コレクションのタグ名の後に_itemを付けた名前です。

構文

PROCEDURE USETYPEFORCOLLELEMTAG(
ctxHdl IN ctxType,
flag IN BOOLEAN := true);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

タイプ名の使用をオンにするかどうか。

196 DBMS_XMLSAVE

DBMS_XMLSAVEは、XMLからデータベース・タイプへの変換の機能を提供します。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XMLSAVEの使用方法

- セキュリティ・モデル

- 定数

- タイプ

- DBMS_XMLSAVEサブプログラムの要約

DBMS_XMLSAVEの使用方法

- セキュリティ・モデル

- 定数

- タイプ

セキュリティ・モデル

DBMS_XMLSAVEパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

表196-1 DBMS_XMLSAVEの定数

定数

説明

DEFAULT_ROWTAG

データベース・レコードに対応する要素のデフォルト・タグ名 -- ROW。

DEFAULT_DATE_FORMAT

デフォルトの日付マスク -- 'MM/dd/yyyy HH:mm:ss'。

MATCH_CASE

XML要素のデータベース・エンティティへのマップ時に、XSUは大/小文字区別が必要であることを指定します。

IGNORE_CASE

XML要素のデータベース・エンティティへのマップ時に、XSUは大/小文字区別が不要なことを指定します。

タイプ

表196-2 DBMS_XMLSAVEのタイプ

タイプ

説明

ctxType

問合せコンテキスト・ハンドルのタイプ。問合せコンテキスト・ハンドルのタイプ。NEWCONTEXTの戻りタイプです。

DBMS_XMLSAVEサブプログラムの要約

表196-3 DBMS_XMLSAVEパッケージのサブプログラム

メソッド

説明

CLEARKEYCOLUMNLIST

キー列リストをクリアします。

CLEARUPDATECOLUMNLIST

更新列リストをクリアします。

CLOSECONTEXT

特定の保存コンテキストのクローズまたは割当て解除を行います。

DELETEXML

XML文書のデータで指定したレコードを、コンテキスト作成時に指定した表から削除します。

GETEXCEPTIONCONTENT

スローされた例外のエラー・コードおよびエラー・メッセージを戻します。

INSERTXML

コンテキストの作成時に指定した表にXML文書を挿入します。

NEWCONTEXT

保存コンテキストを作成し、コンテキスト・ハンドルを戻します。

PROPAGATEORIGINALEXCEPTION

例外が発生してスローされる場合、OracleXMLSQLExceptionで例外をラップするのではなく、発生した例外自体をスローするようにXSUに指示します。

REMOVEXSLTPARAM

トップレベルのスタイルシート・パラメータの値を削除します。

SETBATCHSIZE

DMLの操作中に使用されたバッチ・サイズを変更します。

SETCOMMITBATCH

コミットするバッチ・サイズを設定します。

SETDATEFORMAT

XML文書で生成された日付の書式を設定します。

SETIGNORECASE

XSUがXML要素をデータベースにマップします。

SETKEYCOLUMN

このメソッドは、キー列リストに列を追加します。

SETPRESERVEWHITESPACE

空白を保持するかどうかをXSUに指示します。

SETROWTAG

XML文書で使用されたタグに名前を付け、データベースに対応するXML要素を囲みます。

SETSQLTOXMLNAMEESCAPING

XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。

SETUPDATECOLUMN

更新列リストに列を追加します。

SETXSLT

保存するXMLに適用するXSL変換を登録します。

SETXSLTPARAM

トップレベルのスタイルシート・パラメータの値を設定します。

UPDATEXML

XML文書を指定して、表を更新します。

CLEARKEYCOLUMNLIST

キー列リストをクリアします。

構文

PROCEDURE clearKeyColumnList(
ctxHdl IN ctxType);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

CLEARUPDATECOLUMNLIST

更新列リストをクリアします。

構文

PROCEDURE clearUpdateColumnList(
ctxHdl IN ctxType);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

CLOSECONTEXT

特定の保存コンテキストのクローズまたは割当て解除を行います。

構文

PROCEDURE closeContext(
ctxHdl IN ctxType);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

DELETEXML

XML文書のデータで指定したレコードを、コンテキスト作成時に指定した表から削除し、削除した行数を戻します。指定できるオプションは、次の表のとおりです。

構文

説明

FUNCTION deleteXML(
ctxHdl IN ctxPType,

xDoc IN VARCHAR2)

RETURN NUMBER;

xDocパラメータにVARCHAR2タイプを使用します。

FUNCTION deleteXML(
ctxHdl IN ctxType,

xDoc IN CLOB)

RETURN NUMBER;

xDocパラメータにCLOBタイプを使用します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

GETEXCEPTIONCONTENT

このメソッドは、引数を使用して、スローした例外のエラー・コードとエラー・メッセージ(SQLエラー・コード)を戻します。これは、何の例外が発生した場合でも、実際にJVMから例外がスローされることがないように行われ、その結果、PL/SQLは元の例外にアクセスできなくなります。

構文

PROCEDURE getExceptionContent(
ctxHdl IN ctxType,
errNo OUT NUMBER,
errMsg OUT VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

errNo

(IN)

エラー番号。

errMsg

(IN)

エラー・メッセージ。

INSERTXML

コンテキストの作成時に指定した表にXML文書を挿入し、挿入された行数を戻します。指定できるオプションは、次の表のとおりです。

構文

説明

FUNCTION insertXML(
ctxHdl IN ctxType,

xDoc IN VARCHAR2)

RETURN NUMBER;

xDocパラメータをVARCHAR2として渡します。

FUNCTION insertXML(
ctxHdl IN ctxType,

xDoc IN CLOB)

RETURN NUMBER;

xDocパラメータをCLOBとして渡します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

NEWCONTEXT

保存コンテキストを作成し、コンテキスト・ハンドルを戻します。

構文

FUNCTION newContext(
targetTable IN VARCHAR2)
RETURN ctxType;

パラメータ

IN / OUT

説明

targetTable

(IN)

XML文書のロード先となる表。

PROPAGATEORIGINALEXCEPTION

例外が発生してスローされる場合、OracleXMLSQLExceptionで例外をラップするのではなく、発生した例外自体をスローするようにXSUに指示します。

構文

PROCEDURE propagateOriginalException(
ctxHdl IN ctxType,
flag IN BOOLEAN);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

元の例外を伝播するかどうか。0=FALSE、1=TRUEです。

REMOVEXSLTPARAM

トップレベルのスタイルシート・パラメータの値を削除します。

構文

PROCEDURE removeXSLTParam(
ctxHdl IN ctxType,
name IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

name

(IN)

パラメータ名。

SETBATCHSIZE

DMLの操作中に使用されたバッチ・サイズを変更します。挿入、更新または削除を実行する場合は、複数の操作をバッチ化することで、それぞれを別の文として実行しないで、1回ですべてを実行できます。ただし、すべてのバインド値をバッファに設定するために必要なメモリー量が増加します。バッチが使用されると、バッチが実行された後にのみコミットが発生することに注意してください。したがって、バッチ内の文のいずれかが失敗した場合は、バッチ全体がロールバックされます。このロールバックは、パフォーマンス向上には少し役立ちますが、回避する場合は、バッチ・サイズを1に設定してください。

構文

PROCEDURE setBatchSize(
ctxHdl IN ctxType,
batchSize IN NUMBER);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

batchSize

(IN)

バッチ・サイズ。

SETCOMMITBATCH

コミットするバッチ・サイズを設定します。コミットするバッチ・サイズは、数値またはコミットの前に挿入されたレコードを参照します。batchSizeが1未満の場合、またはセッションが自動コミット・モードの場合、XSUを使用しても明示的なコミットは行われません。デフォルトでは、commitBatchは0(ゼロ)です。

構文

PROCEDURE setCommitBatch(
ctxHdl IN ctxType,
batchSize IN NUMBER);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

batchSize

(IN)

コミットするバッチ・サイズ。

SETDATEFORMAT

XML文書で生成された日付の書式を設定します。日付書式パターン(日付マスク)の構文は、java.text.SimpleDateFormatクラスの要件に従う必要があります。マスクを<code>null</code>または空の文字列に設定すると、日付マスクの設定が解除されます。

構文

PROCEDURE setDateFormat(
ctxHdl IN ctxType,
mask IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

mask

(IN)

日付書式パターンの構文。

SETIGNORECASE

XSUが要素名(XMLタグ)に基づいて、XML要素をデータベースの列または属性にマップします。このファンクションは、大/小文字を区別しないでマップするようにXSUに指示します。

構文

PROCEDURE setIgnoreCase(
ctxHdl IN ctxType,
flag IN NUMBER);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

XML文書でタグの大/小文字を無視するかどうか。0=FALSE、1=TRUEです。

SETKEYCOLUMN

このメソッドは、「キー列リスト」に列を追加します。列の値をNULLにはできません。更新または削除の場合、キー列リストの列が文のWHERE句を構成します。更新を実行するには、キー列リストを先に指定する必要がありますが、削除操作においては、これはオプションです。

構文

PROCEDURE setKeyColumn(
ctxHdl IN ctxType,
colName IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

colName

(IN)

キー列リストに追加される列。NULLは設定できません。

SETPRESERVEWHITESPACE

空白を保持するかどうかをXSUに指示します。

構文

PROCEDURE setPreserveWhitespace(
ctxHdl IN ctxType,
flag IN BOOLEAN := true);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

XSUが空白を保持する必要があるかどうか。

SETROWTAG

XML文書で使用されたタグに名前を付け、データベース・レコードに対応するXML要素を囲みます。

構文

PROCEDURE setRowTag(
ctxHdl IN ctxType,
tag IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

tag

(IN)

タグ名。

SETSQLTOXMLNAMEESCAPING

XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。

構文

PROCEDURE setSQLToXMLNameEscaping(
ctxHdl IN ctxType,
flag IN BOOLEAN := true);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

エスケープをオンにするかどうか。

SETUPDATECOLUMN

更新列リストに列を追加します。挿入の場合、デフォルトでは表のすべての列に値が挿入される一方、更新の場合、デフォルトではXML文書のROW要素に存在するタグに対応する列のみが更新されます。更新列リストが指定されている場合、このリストに含まれる列のみが更新または挿入の対象となります。

構文

PROCEDURE setUpdateColumn(
ctxHdl IN ctxType,
colName IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

colName

(IN)

更新列リストに追加される列。

SETXSLT

保存するXMLに追加するXSL変換を登録します。スタイルシートがすでに登録されている場合は、新しいものに置換されます。スタイルシートを登録解除するには、URIにNULLを渡します。指定できるオプションは、次の表のとおりです。

構文

説明

PROCEDURE setXSLT(
ctxHdl IN ctxType,

uri IN VARCHAR2,

ref IN VARCHAR2 := null);

URIを介してスタイルシートを渡します。

PROCEDURE setXSLT(
ctxHdl IN ctxType,

stylesheet IN CLOB,

ref IN VARCHAR2 := null);

CLOBを介してスタイルシートを渡します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

uri

(IN)

登録するスタイルシートのURI。

ref

(IN)

エンティティに含めたりインポートする他、外部エンティティのURL。

stylesheet

(IN)

登録するスタイルシートを含むCLOB。

SETXSLTPARAM

トップレベルのスタイルシート・パラメータの値を設定します。パラメータには、有効なXPath式を指定します(このため、リテラル値を明示的に引用する必要があります)。

構文

PROCEDURE setXSLTParam(
ctxHdl IN ctxType,
name IN VARCHAR2,
value IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

name

(IN)

パラメータ名。

value

(IN)

XPath式として指定するパラメータ値。

UPDATEXML

コンテキストの作成時に指定した表をXML文書のデータで更新し、更新された行数を戻します。指定できるオプションは、次の表のとおりです。

構文

説明

FUNCTION updateXML(
ctxHdl IN ctxType,

xDoc IN VARCHAR2)

RETURN NUMBER;

xDocパラメータをVARCHAR2として渡します。

FUNCTION updateXML(
ctxHdl IN ctxType,

xDoc IN CLOB)

RETURN NUMBER;

xDocパラメータをCLOBとして渡します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

197 DBMS_XMLSCHEMA

DBMS_XMLSCHEMAパッケージは、XML Schemaを管理するプロシージャを提供します。このパッケージは、Oracle Databaseのインストール中に、スクリプトdbmsxsch.sqlによって作成されます。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XMLSCHEMAの使用方法

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

- DBMS_XMLSCHEMAサブプログラムの要約

DBMS_XMLSCHEMAの使用方法

この項では、DBMS_XMLSCHEMAパッケージの使用に関連する項目について説明します。

- 概要

- 推奨されないサブプログラム

- セキュリティ・モデル

- 定数

- ビュー

- 使用上の注意

概要

このパッケージは、次の処理を行うサブプログラムを提供します。

- XML Schemaの登録

- 登録済XML Schemaの削除

- 登録済XML Schemaの再コンパイル

- XML Schemaの生成

- XML Schemaの進化

推奨されないサブプログラム

新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 12cでは、次のサブプログラムの使用は推奨されていません。

- GENERATESCHEMAファンクション

- GENERATESCHEMASファンクション

セキュリティ・モデル

DBMS_XMLSCHEMAパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

定数

DBMS_XMLSCHEMAパッケージでは、次の表に示す定数が使用されます。

- DBMS_XMLSCHEMAの定数 - 削除オプション

- DBMS_XMLSCHEMAの定数 - 階層の有効化

- DBMS_XMLSCHEMAの定数 - CSIDの登録

表197-1 DBMS_XMLSCHEMAの定数: 削除オプション

定数

タイプ

値

説明

DELETE_RESTRICT

NUMBER

1

XML Schemaに依存する表またはXML Schemaが存在する場合は、そのXML Schemaを削除できません。

DELETE_INVALIDATE

NUMBER

2

XML Schemaに依存している表またはXML Schemaが存在する場合でも、そのXML Schemaを削除できます。依存しているすべての表およびスキーマが無効化されます。

DELETE_CASCADE

NUMBER

3

XML Schemaを削除すると、そのXML Schemaに関連するすべてのSQLタイプおよびデフォルトの表も削除されます。SQLタイプは、XML Schemaの登録時にgentypes引数がTRUEに設定された場合にのみ削除されます。ただし、そのXML Schemaに準拠するインスタンス文書または依存しているXML Schemaが存在する場合は、XML Schemaを削除できません。

DELETE_CASCADE_FORCE

NUMBER

4

このオプションは、DELETE_CASCADEとほぼ同じですが、このスキーマに準拠するインスタンス文書または依存しているXML Schemaが格納されていることをチェックしません。また、すべてのエラーは無視されます。

表197-2 DBMS_XMLSCHEMAの定数: 階層の有効化

定数

タイプ

値

説明

ENABLE_HIERARCHY_NONE

PLS_INTEGER

1

そのスキーマの登録時に作成された表に対して、DBMS_XDBZパッケージのENABLE_HIERARCHYプロシージャがコールされません。

ENABLE_HIERARCHY_CONTENTS

PLS_INTEGER

2

スキーマ登録時にhierarchy_typeにDBMS_XDBZ.ENABLE_CONTENTSを指定して作成されたすべての表に対して、DBMS_XDBZパッケージのENABLE_HIERARCHYプロシージャがコールされます。

ENABLE_HIERARCHY_RESMETADATA

PLS_INTEGER

3

スキーマ登録時にhierarchy_typeにDBMS_XDBZ.ENABLE_RESMETADATAを指定して作成されたすべての表に対して、DBMS_XDBZパッケージのENABLE_HIERARCHYプロシージャがコールされます。ユーザーは、リソース・メタデータ表として使用するスキーマにDBMS_XMLSCHEMA.ENABLE_RESMETADATAを渡す必要があります。

表197-3 DBMS_XMLSCHEMAの定数: CSIDの登録

定数

タイプ

値

説明

REGISTER_NODOCID

NUMBER

1

スキーマがメタデータを使用するために(登録時にパラメータenablehierarchyに対して値ENABLE_HIER_RESMETADATAを使用して)登録されている場合は、スキーマの登録時に作成されたすべての表にDOCIDという名前の列が追加されます。この定数は、ユーザーが記憶域を最適化する場合にこのような列が作成されないようにするために、REGISTERSCHEMAのoptions引数で使用できます。

REGISTER_CSID_NULL

NUMBER

-1

REGISTERSCHEMAの起動時にユーザーが入力スキーマ・ドキュメントのキャラクタ・セットを指定しない場合は、csidパラメータでこの値を使用できます。

ビュー

DBMS_XMLSCHEMAパッケージでは、表197-4に示すビューが使用されます。これらのビューの列の詳細は、『Oracle Databaseリファレンス』を参照してください。

表197-4 DBMS_XMLSCHEMAで使用されるビューの要約

スキーマ

説明

USER_XML_SCHEMAS

ユーザーが所有するすべての登録済XML Schema。

ALL_XML_SCHEMAS

現行ユーザーが使用できるすべての登録済XML Schema。

DBA_XML_SCHEMAS

データベース内のすべての登録済XML Schema。

DBA_XML_TABLES

システム内のすべてのXMLType表。

USER_XML_TABLES

現行ユーザーが所有するすべてのXMLType表。

ALL_XML_TABLES

現行ユーザーが使用できるすべてのXMLType表。

DBA_XML_TAB_COLS

システム内のすべてのXMLType表列。

USER_XML_TAB_COLS

現行ユーザーが所有する表内のすべてのXMLType表列。

ALL_XML_TAB_COLS

現行ユーザーが使用できる表内のすべてのXMLType表列。

DBA_XML_VIEWS

システム内のすべてのXMLTypeビュー。

USER_XML_VIEWS

現行ユーザーが所有するすべてのXMLTypeビュー。

ALL_XML_VIEWS

現行ユーザーが使用できるすべてのXMLTypeビュー。

DBA_XML_VIEW_COLS

システム内のすべてのXMLTypeビュー列。

USER_XML_VIEW_COLS

現行ユーザーが所有するビュー内のすべてのXMLTypeビュー列。

ALL_XML_VIEW_COLS

現行ユーザーが使用できるビュー内のすべてのXMLTypeビュー列。

使用上の注意

インプレースXMLスキーマの進化の使用に関するガイドライン

インプレースXMLスキーマの進化を実行する前に、次の準備ステップに従う必要があります。

1. 進化させるXMLスキーマの既存のすべてのデータ(インスタンス文書)のバックアップを作成します。

2. トレースのみを使用してドライ・ランを実行し(つまり、実際にXMLスキーマを進化させたり、いずれかのインスタンス文書を更新することなく)、進化中に実行される更新操作のトレースを生成します。そのためには、フラグ・パラメータ値をINPLACE_TRACEにのみ設定します。INPLACE_EVOLVEも使用しないでください。ドライ・ランを実行した後にトレース・ファイルを調べ、一覧表示されたDDL操作が実際に意図したDDL操作であることを検証します。

DBMS_XMLSCHEMAサブプログラムの要約

表197-5 DBMS_XMLSCHEMAパッケージのサブプログラム

メソッド

説明

COMPILESCHEMAプロシージャ

登録済のXML Schemaを再コンパイルします。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。

COPYEVOLVEプロシージャ

登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。

DELETESCHEMAプロシージャ

データベースからスキーマを削除します。

GENERATESCHEMAファンクション

Oracleのタイプ名からXML Schemaを生成します。

GENERATESCHEMASファンクション

Oracleのタイプ名から複数のXML Schemaを生成します。

INPLACEEVOLVEプロシージャ

スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。

PURGESCHEMAプロシージャ

XMLスキーマを削除します。

REGISTERSCHEMAプロシージャ

Oracleで使用する指定のスキーマを登録します。このスキーマは、このスキーマに準拠するドキュメントを格納するために使用できます。

REGISTERURIプロシージャ

URI名で指定したXML Schemaを登録します。

COMPILESCHEMAプロシージャ

このプロシージャは、登録済のXML Schemaを再コンパイルするために使用できます。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。ORA-31001例外「リソース・ハンドルまたはパス名が無効です」が発生する場合があります。

構文

DBMS_XMLSCHEMA.COMPILESCHEMA(
schemaurl IN VARCHAR2);

パラメータ

表197-6 COMPILESCHEMAプロシージャのパラメータ

パラメータ

説明

schemaurl

スキーマを識別するURL。

COPYEVOLVEプロシージャ

このプロシージャは、登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。

このプロシージャの処理は、基本的には次の順序で完了します(代替アクションは、プロシージャのパラメータで制御します)。

- スキーマ・ベースのXMLType表のデータを、一時表の記憶域にコピーします。

- 古い表を削除します。

- 古いスキーマを削除します。

- スキーマを新規登録します。

- XMLType表を新規作成します。

- 一時記憶域のデータを新規の表に移入します。制約、トリガー、索引などの補助構造は保存されません。

- 一時表を削除します。

関連項目:

- 既存のスキーマを進化させる方法の例については、『Oracle XML DB開発者ガイド』のXML Schemaの拡張に関する章を参照してください。

- スキーマの進化に固有の例外(ORA-30142からORA-30946)については、『Oracle Databaseエラー・メッセージ』を参照してください。

構文

DBMS_XMLSCHEMA.COPYEVOLVE(
schemaurls       IN  XDB$STRUBG_LIST_T,
newschemas       IN  XMLSequenceType,
transforms       IN  XMLSequenceType :=NULL,
preserveolddocs  IN  BOOLEAN :=FALSE,
maptablename     IN  VARCHAR2 :=NULL,
generatetables   IN  BOOLEAN :=TRUE,
force            IN  BOOLEAN :=FALSE,
schemaowners     IN  XDB$STRING_LIST_T :=NULL
parallelDegree   IN  PLS_INTEGER := 0,
options          IN  PLS_INTEGER := 0);

パラメータ

表197-7 COPYEVOLVEプロシージャのパラメータ

パラメータ

説明

schemaurls

進化させるすべてのスキーマのURLのVARRAY。依存スキーマを含みます。FORCEパラメータがTRUEでない場合、URLの並び順は依存性に従います。

newschemas

新規スキーマ・ドキュメントのVARRAY。対応するURLと同じ順序で指定します。

transforms

スキーマ・ベースのドキュメントに適用される変換XSLドキュメントのVARRAY。対応するURLと同じ順序で指定します。変換が不要な場合は、このパラメータを指定する必要はありません。

preserveolddocs

デフォルトはFALSEで、古いデータの一時表が削除されます。TRUEの場合、スキーマの進化が完了した後でもこれらの表を使用できます。

maptabname

スキーマの進化中に永続表から一時表へのマッピングを実施する、表の名前を指定します。有効な列は次のとおりです。

- SCHEMA_URL - VARCHAR2(700) - この表が準拠するスキーマのURL。

- SCHEMA_OWNER -VARCHAR2(30) - スキーマの所有者。

- ELEMENT_NAME - VARCHAR2(256) - この表が準拠する要素。

- TAB_NAME - VARCHAR2(65) - <owner_name>.<table_name>の形式で修飾した表の名前。

- COL_NAME - VARCHAR2(4000) - 列の名前(XMLType表の場合はNULL)。

- TEMP_TABNAME - VARCHAR2(30) - この表のデータを保持する一時表の名前。

generatetables

デフォルトはTRUEで、新規の表が生成されます。

FALSEを設定する場合は、次の点に注意してください。

- 新規スキーマの登録後、新規の表は生成されません。

- preserveolddocsをTRUEに設定する必要があります。

- maptablenameをNULL以外に設定する必要があります。

force

デフォルトはFALSEです。

TRUEの場合、スキーマの進化中に生成されたエラーが無視されます。スキーマ間に循環依存がある場合、登録中にエラーが発生したとしても、すべてのスキーマを確実に保存するために使用します。

schemaowners

スキーマ所有者の名前のVARRAY。対応するURLと同じ順序で指定します。デフォルトはNULLで、すべてのスキーマは現行ユーザーが所有しているとみなされます。

paralleldegree

進化のデータ・コピー段階にPARALLELヒントで使用する並列度を指定します。0(ゼロ)(デフォルト)の場合、PARALLELヒントはデータ・コピー文で使用されません。

options

現在サポートされているオプションは、COPYEVOLVE_BINARY_XMLのみです。このオプションでは、バイナリXMLの新規スキーマを登録し、バイナリXMLを含む新規の表/列を記憶域タイプとして作成できます。

使用上の注意

COPYEVOLVEプロシージャでは、準拠するすべてのドキュメントを削除してからスキーマを進化させるため、このプロシージャを起動する場合はあらかじめスキーマとドキュメントをすべてバックアップしてください。

DELETESCHEMAプロシージャ

このプロシージャは、URLで指定したXML Schemaを削除します。

構文

DBMS_XMLSCHEMA.DELETESCHEMA(
schemaurl      IN  VARCHAR2,
delete_option  IN  PLS_INTEGER := DELETE_RESTRICT);

関連項目:
『Oracle XML DB開発者ガイド』のXMLSCHEMAの格納と問合せの基本に関する章を参照してください。

パラメータ

表197-8 DELETESCHEMAプロシージャのパラメータ

パラメータ

説明

schemaurl

削除するスキーマを識別するURL。

delete_option

次の削除オプションがあります。

- DELETE_RESTRICT - このスキーマに依存する表またはスキーマが存在する場合は、そのスキーマを削除できません。

- DELETE_INVALIDATE - 依存性がある場合、スキーマを削除できます。かわりに、すべての依存オブジェクトが無効化されるのみです。

- DELETE_CASCADE - スキーマの削除では、すべてのデフォルトSQLタイプとデフォルトの表も削除されます。ただし、このスキーマに準拠する格納されたインスタンスがある場合は、削除されません。

- DELETE_CASCADE_FORCE - このスキーマに準拠する格納されたインスタンスをチェックしないことを除いて、DELETE_CASCADEと同じです。また、すべてのエラーは無視されます。

例外

表197-9 DELETESCHEMAプロシージャの例外

例外

説明

ORA-31001

リソース・ハンドルまたはパス名が無効です。

GENERATESCHEMAファンクション

注意:
このサブプログラムの使用は、Oracle Database 12cでは推奨されていません。

このファンクションは、Oracleのタイプ名からXML Schemaを生成します。1つのスキーマ(XMLType)にすべてインラインします。

関連項目:
『Oracle XML DB開発者ガイド』のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。

構文

DBMS_XMLSCHEMA.GENERATESCHEMA(
schemaname    IN  VARCHAR2,
typename      IN  VARCHAR2,
elementname   IN  VARCHAR2 := NULL,
recurse       IN  BOOLEAN  := TRUE,
annotate      IN  BOOLEAN  := TRUE,
embedcoll     IN  BOOLEAN  := TRUE)
RETURN SYS.XMLTYPE;

パラメータ

表197-10 GENERATESCHEMAファンクションのパラメータ

パラメータ

説明

schemaname

タイプを含むデータベース・スキーマの名前。

typename

Oracleタイプの名前。

elementname

XML Schema内のトップレベル要素の名前。デフォルトはtypenameです。

recurse

指定したタイプで参照されるすべてのタイプのスキーマを生成するかどうかを指定します。

annotate

XML SchemaにSQL注釈を設定するかどうかを指定します。

embedcoll

コレクションを参照するタイプにコレクションを埋め込むか、またはcomplextypeを作成するかを判別します。注釈がオンの場合は、FALSEに設定できません。

例外

表197-11 GENERATESCHEMAファンクションの例外

例外

説明

ORA-31001

リソース・ハンドルまたはパス名が無効です。

GENERATESCHEMASファンクション

注意:
このサブプログラムの使用は、Oracle Database 12cでは推奨されていません。

このファンクションは、Oracleのタイプ名からXML Schemaを生成します。XMLTypeのコレクションを戻し、データベース・スキーマごとに1つのXML Schemaドキュメントになります。

関連項目:
『Oracle XML DB開発者ガイド』のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。

構文

DBMS_XMLSCHEMA.GENERATESCHEMAS(
schemaname   IN  VARCHAR2,
typename     IN  VARCHAR2,
elementname  IN  VARCHAR2 := NULL,
schemaurl    IN  VARCHAR2 := NULL,
annotate     IN  BOOLEAN := TRUE,
embedcoll    IN  BOOLEAN := TRUE )
RETURN SYS.XMLTYPE;

パラメータ

表197-12 GENERATESCHEMASファンクションのパラメータ

パラメータ

説明

schemaname

タイプを含むデータベース・スキーマの名前。

typename

Oracleタイプの名前。

elementname

XML Schema内のトップレベル要素の名前。デフォルトはtypeNameです。

schemaurl

インポート文のトップレベル・スキーマに必要な、スキーマの格納先となるベースURLを指定します。

annotate

XML SchemaにSQL注釈を設定するかどうかを指定します。

embedcoll

コレクションを参照するタイプにコレクションを埋め込むか、またはcomplextypeを作成するかを判別します。注釈がオンの場合は、FALSEに設定できません。

例外

表197-13 GENERATESCHEMASファンクションの例外

例外

説明

ORA-31001

リソース・ハンドルまたはパス名が無効です。

INPLACEEVOLVEプロシージャ

このプロシージャは、スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。

構文

DBMS_XMLSCHEMA.INPLACEEVOLVE(
schemaURL    IN   VARCHAR2,
diffXML      IN   XMLType,
flags        IN   NUMBER);

パラメータ

表197-14 INPLACEEVOLVEプロシージャのパラメータ

パラメータ

説明

schemaurl

進化させるスキーマのURL。

diffXML

スキーマに適用する変更。XDIFFスキーマに準拠するXML文書であり、適用する必要がある変更および変更を適用するスキーマ文書の場所を指定します。

flags

このパラメータに次のビットを設定して、このプロシージャの動作を制御できます。

- INPLACE_EVOLVE(値1。ビット1がオンであることを意味します): インプレースXMLスキーマの進化を実行します。まず、新しいXMLスキーマを構成し、(複数のXMLスキーマのXMLスキーマに対して)検証します。次に、インスタンス文書ディスク構造の進化に必要なDDL文を構成し、DDL文を実行して、古いXMLスキーマを新しいものに置き換えます。

- INPLACE_TRACE(値2。ビット2がオンであることを意味します): DDL文の実行および新しいXMLスキーマによる古いXMLスキーマの上書き以外の、インプレース進化に必要なすべてのステップを実行し、DDL文と新しいXMLスキーマの両方をトレース・ファイルに書き込みます。

つまり、各ビットは新しいXMLスキーマを構成して検証し、インスタンス文書の基礎となるディスク構造の進化に必要なステップを判別します。また、次の処理も行われます。

- ビットINPLACE_EVOLVEでは、これらの進化ステップを実行し、古いXMLスキーマを新しいものに置き換えます。

- ビットINPLACE_TRACEでは、進化ステップおよび新しいXMLスキーマがトレース・ファイルに保存されます(進化ステップは実行されません)。

例外

このプロシージャでは、次の場合に例外が発生します。

- xdiffスキーマに準拠しない無効な式XPATHとXDIFF文書に対して、エラーが発生します。

- 構文的に正しいものの、スキーマ文書内の無効ノードの原因となるパス式では、エラーが発生します。

- スキーマの変更によってスキーマが不適切なXML文書または無効なXMLスキーマになった場合、エラーが発生します。

- CREATE TYPE、ALTER TYPEおよび同様のコマンドによって発生したすべてのエラーで、エラー・メッセージが生成されます。

使用上の注意

- インプレース進化ではロールバックが行われないため、この操作を行う前にデータのバックアップを作成しておいてください。

- 進化させるスキーマのURLとは異なるスキーマURLで、REGISTERSCHEMAプロシージャおよびREGISTERURIプロシージャを使用して、データベースが含まれている新しいXMLスキーマを登録する必要があります。新しいスキーマの登録が成功し、使用可能になった場合にのみ、このサブプログラムを使用して既存スキーマを新しいスキーマへ進化させる必要があります。新しいスキーマの登録が成功した場合、古いスキーマURLにあるスキーマを進化させる前に、このスキーマ(およびそのすべての依存オブジェクト)を削除する必要があります。

PURGESCHEMAプロシージャ

このプロシージャはXMLスキーマを削除します。

関連項目:
『Oracle XML DB開発者ガイド』のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。

構文

DBMS_XMLSCHEMA.PURGESCHEMA(
schemaid   IN  RAW);

パラメータ

表197-15 PURGESCHEMAプロシージャのパラメータ

パラメータ

説明

schemaid

パージするスキーマのID。

使用上の注意

- スキーマは、最初にバイナリ・エンコーディング用に登録し、HIDEモードで削除しておく必要があります。

- スキーマをHIDEモードで削除すると、そのスキーマはXML DBディクショナリに存続し、すでにエンコードされた文書のデコードに使用されます。このスキーマを使用してエンコードされたインスタンスが格納されていない場合は、このインタフェースを呼び出します。

- スキーマをパージすると、そのスキーマによって使用されるすべての領域が再要求され、そのスキーマを使用してエンコードされた文書をデコードしようとした場合はエラーが発生します。

- スキーマIDはカタログ・ビューから取得できます。

REGISTERSCHEMAプロシージャ

このプロシージャは、データベースで使用する指定のスキーマを登録します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

注意:
Oracle Database 11gリリース2(11.2)では、genbeanパラメータの使用は推奨されていません。新しいアプリケーションでは、このパラメータは使用しないことをお薦めします。この機能は、下位互換性を維持する目的のみでサポートされています。

関連項目:
『Oracle XML DB開発者ガイド』のXMLSCHEMAの格納と問合せの基本に関する章を参照してください。

構文

VARCHAR2として指定したスキーマを登録します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  VARCHAR2,
local            IN  BOOLEAN := TRUE,
gentypes         IN  BOOLEAN := TRUE,
genbean          IN  BOOLEAN := FALSE,
gentables        IN  BOOLEAN := TRUE,
force            IN  BOOLEAN := FALSE,
owner            IN  VARCHAR2 := NULL,
enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
options          IN  PLS_INTEGER := 0);

BFILEとして指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース・キャラクタ・セット内に存在する必要があります。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  BFILE,
local            IN  BOOLEAN := TRUE,
gentypes         IN  BOOLEAN := TRUE,
genbean          IN  BOOLEAN := FALSE,
force            IN  BOOLEAN := FALSE,
owner            IN  VARCHAR2 := NULL,
enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
options          IN  PLS_INTEGER := 0);

BFILEとして指定したスキーマを登録し、そのスキーマ・ドキュメントのキャラクタ・セットIDを識別します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  BFILE,
local            IN  BOOLEAN := TRUE,
gentypes         IN  BOOLEAN := TRUE,
genbean          IN  BOOLEAN := TRUE,
gentables        IN  BOOLEAN := TRUE,
force            IN  BOOLEAN := TRUE,
owner            IN  VARCHAR2 := '',
csid             IN  NUMBER,
enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
options          IN  PLS_INTEGER := 0);

BLOBとして指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース・キャラクタ・セット内に存在する必要があります。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  BLOB,
local            IN  BOOLEAN := TRUE,
genTypes         IN  BOOLEAN := TRUE,
genBean          IN  BOOLEAN := FASLE,
force            IN  BOOLEAN := FALSE,
owner            IN  VARCHAR2 := NULL,
enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
options          IN  PLS_INTEGER := 0);

BLOBとして指定したスキーマを登録し、そのスキーマ・ドキュメントのキャラクタ・セットIDを識別します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  BLOB,
local            IN  BOOLEAN := TRUE,
gentypes         IN  BOOLEAN := TRUE,
genbean          IN  BOOLEAN := TRUE,
gentables        IN  BOOLEAN := TRUE,
force            IN  BOOLEAN := TRUE,
owner            IN  VARCHAR2 := '',
csid             IN  NUMBER,
enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
options          IN  PLS_INTEGER := 0);

CLOBとして指定したスキーマを登録します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  CLOB,
local            IN  BOOLEAN := TRUE,
gentypes         IN  BOOLEAN := TRUE,
genbean          IN  BOOLEAN := FALSE,
force            IN  BOOLEAN := FALSE,
owner            IN  VARCHAR2 := NULL,
options          IN  PLS_INTEGER := 0);

XMLTYPEとして指定したスキーマを登録します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  SYS.XMLTYPE,
local            IN  BOOLEAN := TRUE,
gentypes         IN  BOOLEAN := TRUE,
genbean          IN  BOOLEAN := FALSE,
force            IN  BOOLEAN := FALSE,
owner            IN  VARCHAR2 := NULL,
enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
options          IN  PLS_INTEGER := 0);

BLOBとして指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース・キャラクタ・セット内に存在する必要があります。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
schemaurl        IN  VARCHAR2,
schemadoc        IN  SYS.URIType,
local            IN  BOOLEAN := TRUE,
gentypes         IN  BOOLEAN := TRUE,
genbean          IN  BOOLEAN := FALSE,
force            IN  BOOLEAN := FALSE,
owner            IN  VARCHAR2 := NULL,
enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
options          IN  PLS_INTEGER := 0);

パラメータ

表197-16 REGSITERSCHEMAプロシージャのパラメータ

パラメータ

説明

schemaurl

スキーマ・ドキュメントを一意に識別するURL。この値は、データベース階層内のスキーマ・ドキュメントのパス名を導出するために使用します。XML Schemaインポート要素のschemalocation属性の中で使用できます。

schemadoc

有効なXML Schemaドキュメント。

local

スキーマがローカルかグローバルか。

- デフォルトでは、すべてのスキーマはローカル・スキーマとして、/sys/schemas/<username>/...の下に登録されます。

- グローバルとして登録されるスキーマは、/sys/schemas/PUBLIC/...の下に追加されます。

スキーマをグローバルとして登録するには、ディレクトリに対する書込み権限が必要です。

gentypes

スキーマ・コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトはTRUEで、バイナリXMLを使用する場合は、gentypesをFALSEに設定する必要があります。

genbean

スキーマ・コンパイラがJava Beansを生成するかどうかを判別します。デフォルトはFALSEです。このパラメータは常にFALSEに設定しておくことをお薦めします。

gentables

スキーマ・コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトはTRUEです。

force

このパラメータをTRUEに設定した場合、スキーマ登録でエラーは発生しません。エラーの場合は、かわりに、無効なXML Schemaオブジェクトが作成されます。このパラメータのデフォルト値はFALSEです。

owner

このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。

csid

入力スキーマ・ドキュメントのキャラクタ・セットを識別します。この値が0(ゼロ)の場合、スキーマ・ドキュメントのエンコードは、"text/xml" MIMEタイプの現行ルールで決定されます。

enablehierarchy

- ENABLE_HIERARCHY_NONE - enablehierarchyは、スキーマの登録時に作成された表に対してコールされません。

- ENABLE_HIERARCHY_CONTENTS - スキーマ登録時にhierarchy_typeにDBMS_XDBZ.ENABLE_CONTENTSを指定して作成されたすべての表に対して、enablehierarchyがコールされます。これがデフォルトです。

- ENABLE_HIERARCHY_RESMETADATA - スキーマ登録時にhierarchy_typeにDBMS_XDBZ.ENABLE_RESMETADATAを指定して作成されたすべての表に対して、enablehierarchyがコールされます。ユーザーは、リソース・メタデータ表として使用するスキーマにDBMS_XMLSCHEMA.ENABLE_RESMETADATAを渡す必要があります。

options

スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットのBITORを実行して構成する必要があります。有効なビットは、次のとおりです。

- REGISTER_NODOCID - 表外格納表のDOCID列の作成を抑制します。これは、ドキュメント表に戻って結合する必要がない場合(DOCID列を利用してリライト可能な特定の問合せをリライトする必要がない場合など)に適した記憶域の最適化です。

- REGISTER_BINARYXML - バイナリXMLのスキーマを登録します。

- REGISTER_NT_AS_IOT - スキーマ登録時に作成されたネストした表を、索引編成された表として格納します。デフォルトでは、ネストした表はヒープ表として格納されます。

REGISTERURIプロシージャ

このプロシージャは、URI名で指定したXML Schemaを登録します。

注意:
Oracle Database 11gリリース2(11.2)では、genbeanパラメータの使用は推奨されていません。新しいアプリケーションでは、このパラメータは使用しないことをお薦めします。この機能は、下位互換性を維持する目的のみでサポートされています。

構文

DBMS_XMLSCHEMA.REGISTERURI(
schemaurl      IN  VARCHAR2,
schemadocuri   IN  VARCHAR2,
local          IN  BOOLEAN := TRUE,
gentypes       IN  BOOLEAN := TRUE,
genbean        IN  BOOLEAN := FALSE,
gentables      IN  BOOLEAN := TRUE,
force          IN  BOOLEAN := FALSE,
owner          IN  VARCHAR2 := NULL,
options          IN  PLS_INTEGER := 0);

パラメータ

表197-17 REGISTERURIプロシージャのパラメータ

パラメータ

説明

schemaurl

スキーマ・ドキュメントを一意に識別します。XML Schemaインポート要素のschemaLocation属性の中で使用できます。

schemadocuri

スキーマ・ドキュメントの物理的な位置に対応するパス名(URI)。URIパスは、HTTP、FTP、DBまたはOracle XML DBプロトコルに基づく場合があります。このプロシージャは、urifactoryを使用してURITypeインスタンスを構成し、REGISTERSCHEMAプロシージャを起動します。

local

スキーマがローカルかグローバルかを判別します。デフォルトでは、すべてのスキーマはローカル・スキーマとして、/sys/schemas/<username>/...の下に登録されます。グローバルとして登録されるスキーマは、/sys/schemas/PUBLIC/...の下に追加されます。ユーザーがグローバル・スキーマを登録するには、ディレクトリに対する書込み権限が必要です。

gentypes

コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトはTRUEです。

genbean

コンパイラがJava Beansを生成するかどうかを判別します。デフォルトはFALSEです。

gentables

コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトはTRUEです。

force

TRUEの場合、スキーマ登録でエラーは発生しません。エラーの場合は、かわりに、無効なXML Schemaオブジェクトが作成されます。このパラメータのデフォルト値はFALSEです。

owner

このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。

options

スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットのBITORを実行して構成する必要があります。有効なビットは、次のとおりです。

- REGISTER_NODOCID - 表外格納表のDOCID列の作成を抑制します。これは、ドキュメント表に戻って結合する必要がない場合(DOCID列を利用してリライト可能な特定の問合せをリライトする必要がない場合など)に適した記憶域の最適化です。

198 DBMS_XMLSCHEMA_ANNOTATE

DBMS_XMLSCHEMA_ANNOTATEパッケージは、主に事前登録スキーマ注釈を使用して、構造化記憶域モデルを管理および構成するためのインタフェースを提供します。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XMLSCHEMA_ANNOTATEの使用

- 概要

- セキュリティ・モデル

- DBMS_XMLSCHEMA_ANNOTATEサブプログラムの要約

DBMS_XMLSCHEMA_ANNOTATEの使用

- 概要

- セキュリティ・モデル

概要

DBMS_XMLSCHEMA_ANNOTATEパッケージには、主に事前登録スキーマ注釈を使用して、構造化記憶域モデルを管理および構成するためのプロシージャが含まれています。スキーマ注釈は、XMLデータの格納方法に影響します。たとえば、デフォルトの表の注釈では、データベースでシステム名を生成できるようにするのではなく、ユーザー指定の名前がXML要素に割り当てられます。したがって、問合せ計画が読み取りやすくなり、表に対する制約も容易に作成できます。

セキュリティ・モデル

DBMS_XMLSCHEMA_ANNOTATEパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XMLSCHEMA_ANNOTATEサブプログラムの要約

表198-1 DBMS_XMLSCHEMA_ANNOTATEパッケージのサブプログラム

サブプログラム

説明

ADDXDBNAMESPACEプロシージャ

XDB注釈に必要なXDB名前空間を追加します。

DISABLEDEFAULTTABLECREATIONプロシージャ

空の値を持つデフォルトの表属性を最上位レベルの要素に追加することによって、その要素に表が作成されないようにします。

DISABLEMAINTAINDOMプロシージャ

DOMの忠実度属性をFALSEに設定します。

ENABLEDEFAULTTABLECREATIONプロシージャ

空のデフォルトの表名の注釈を削除することによって、最上位レベルの表をすべて(ALL)作成できるようにします。

ENABLEMAINTAINDOMプロシージャ

DOMの忠実度属性をTRUEに設定します。

GETSCHEMAANNOTATIONSファンクション

注釈付きXMLスキーマと元のXMLスキーマとの差分ドキュメントを作成します。

GETSIDXDEFFROMVIEWファンクション

XMLTABLEビュー定義をxmltype列または表に取り込み、CLOBを戻します。これをパラメータとして使用し、XMLTABLEビューをリレーショナル表としてバックアップする構造化xmlindexを作成することができます。

PRINTWARNINGSプロシージャ

XMLスキーマでノードにマップされた注釈がない場合に、ユーザーが警告を発したり、警告を非表示にできるようにします。

REMOVEANYSTORAGEプロシージャ

指定された名前を持つ複合タイプの任意(ANY)の子から、SQLタイプの設定を削除します。

REMOVEDEFAULTTABLEプロシージャ

要素に指定されたデフォルトの表属性を削除します。このプロシージャをコールした後で、表名が生成されます。

REMOVEMAINTAINDOMプロシージャ

DOMのメンテナンスに使用したすべての注釈を、指定したスキーマから削除します。

REMOVEOUTOFLINEプロシージャ

表外に格納されないようにするために、既存のすべてのSQLInline属性を削除します。

REMOVESQLCOLLTYPEプロシージャ

SQLコレクション・タイプを削除します。

REMOVESQLNAMEプロシージャ

グローバル要素からSQLNAMEを削除します。

REMOVESQLTYPEプロシージャ

SQLタイプを削除します。

REMOVESQLTYPEMAPPINGプロシージャ

指定されたスキーマ・タイプのSQLタイプのマッピングを削除します。

REMOVETABLEPROPSプロシージャ

CREATE TABLE文から表記憶域のプロパティを削除します。

REMOVETIMESTAMPWITHTIMEZONEプロシージャ

TimeStampWithTimeZoneデータ・タイプの設定を、XMLスキーマ内のすべてのdateTimeタイプの要素から削除します。

SETANYSTORAGEプロシージャ

指定された名前を持つ複合タイプの任意(ANY)の子に、SQLデータ・タイプを割り当てます。

SETDEFAULTTABLEプロシージャ

指定されたグローバル要素の表名を設定します。

SETOUTOFLINEプロシージャ

SQLInline属性をFALSEに設定します。

SETSCHEMAANNOTATATIONSプロシージャ

DBMS_XMLSCHEMA_ANNOTATE.GETSCHEMAANNOTATIONSをコールした結果として生じた注釈付き差分を取り込み、それを指定されたXMLスキーマにパッチ適用します。

SETSQLCOLLTYPEプロシージャ

コレクションのSQLタイプの名前を割り当てます。

SETSQLNAMEプロシージャ

XMLスキーマで定義された要素に対応する名前を、SQL属性に割り当てます。

SETSQLTYPEプロシージャ

グローバル・オブジェクトにSQLタイプを割り当てます。

SETSQLTYPEMAPPINGプロシージャ

スキーマ・タイプとSQLタイプのマッピングを定義します。

SETTABLEPROPSプロシージャ

デフォルトのCREATE TABLE文に追加されるTABLE記憶域の句に、プロパティを指定します。

SETTIMESTAMPWITHTIMEZONEプロシージャ

TIMESTAMPWITHTIMEZONEデータ・タイプを、XMLスキーマ内のすべてのdateTimeタイプの要素に設定します。

ADDXDBNAMESPACEプロシージャ

このプロシージャは、XDB注釈に必要なXDB名前空間を追加します。

構文

DBMS_XMLSCHEMA_ANNOTATE.ADDXDBNAMESPACE (
xmlschema      IN OUT XMLTYPE);

パラメータ

表198-2 ADDXDBNAMESPACEプロシージャのパラメータ

パラメータ

説明

xmschema

XMLスキーマをXMLTYPEとして取得し、注釈を実行してそれを戻します。

使用上の注意

このプロシージャは、スキーマの注釈を追加する別のプロシージャによって暗黙的にコールされます。他の注釈を付けずにXDB名前空間を追加する理由がないため、このプロシージャは通常、ユーザーが直接コールするのではなく、別の注釈プロシージャによってコールされます。

DISABLEDEFAULTTABLECREATIONプロシージャ

このプロシージャは、空の値を持つデフォルトの表属性を最上位レベルの要素に追加することによって、その要素に表が作成されないようにします。最初のオーバーロードは指定された最上位レベル要素に適用され、2回目のオーバーロードはすべての最上位レベル要素に適用されます。このプロシージャは常に上書きします。これは、最上位レベル要素または要素にスキーマ注釈xdb:defaultTable=""を使用するのと同じです。

構文

DBMS_XMLSCHEMA_ANNOTATE.DISABLEDEFAULTTABLECREATION (
xmlschema         IN OUT XMLType,
globalElementName IN VARCHAR2);

DBMS_XMLSCHEMA_ANNOTATE.DISABLEDEFAULTTABLECREATION (
xmlschema         IN OUT XMLType);

パラメータ

表198-3 DISABLEDEFAULTTABLECREATIONプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalElementName

スキーマ内のグローバル要素の名前

例

purchaseOrder要素には、xdb:defaultTable=""と同様の注釈が付けられます。

DECLARE
xml_schema   XMLTYPE;
BEGIN
SELECT out INTO xml_schema FROM annotation_tab;
DBMS_XMLSCHEMA_ANNOTATE.DISABLEDEFAULTTABLECREATION(xml_schema,
'purchaseOrder');
UPDATE annotation_tab SET out = xml_schema;
END;
/

DISABLEMAINTAINDOMプロシージャ

このプロシージャは、DOMの忠実度属性をFALSEに設定します。

2つのオーバーロードがあります。DOMの忠実度属性は、最初はすべての複合タイプに対してFALSEに設定され、2回目は指定された複合タイプに対してFALSEに設定されます。これは、すべての、または指定された複合タイプに対してそれぞれxdb:maintainDOM="false"を追加するのと同じです。

構文

DBMS_XMLSCHEMA_ANNOTATE.DISABLEMAINTAINDOM (
xmlschema       IN OUT XMLType,
overwrite       IN BOOLEAN default TRUE);

DBMS_XMLSCHEMA_ANNOTATE.DISABLEMAINTAINDOM (
xmlschema       IN OUT XMLType,
complexTypeName IN VARCHAR2,
overwrite       IN BOOLEAN default TRUE);

パラメータ

表198-4 DISABLEMAINTAINDOMプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

complexTypeName

複合タイプの名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

ENABLEDEFAULTTABLECREATIONプロシージャ

このプロシージャは、空のデフォルトの表名の注釈を削除することによって、最上位レベルの表をすべて作成できるようにします。

構文

DBMS_XMLSCHEMA_ANNOTATE.ENABLEDEFAULTTABLECREATION (
xmlschema            IN OUT  XMLTYPE);

DBMS_XMLSCHEMA_ANNOTATE.ENABLEDEFAULTTABLECREATION (
xmlschema            IN OUT  XMLTYPE,
globalElementName    IN      VARCHAR2););

パラメータ

表198-5 ENABLEDEFAULTTABLECREATIONプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

gloablElementName

スキーマ内のグローバル要素の名前

使用上の注意

このプロシージャは、デフォルトの表名を持つ要素には影響しません。

ENABLEMAINTAINDOMプロシージャ

このプロシージャは、DOMの忠実度属性をTRUEに設定します。

2つのオーバーロードがあります。DOMの忠実度属性は、最初はすべての複合タイプに対してTRUEに設定され、2回目は指定された複合タイプに対してTRUEに設定されます。

構文

DBMS_XMLSCHEMA_ANNOTATE.ENABLEMAINTAINDOM (
xmlschema       IN OUT XMLType,
overwrite       IN BOOLEAN default TRUE);

DBMS_XMLSCHEMA_ANNOTATE.ENABLEMAINTAINDOM (
xmlschema        IN OUT XMLType,
complexTypeName  IN VARCHAR2,
overwrite        IN BOOLEAN default TRUE);

パラメータ

表198-6 ENABLEMAINTAINDOMプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

complexTypeName

複合タイプの名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

GETSCHEMAANNOTATIONSファンクション

このファンクションは、注釈付きXMLスキーマと元のXMLスキーマとの差分ドキュメントを作成します。

構文

DBMS_XMLSCHEMA_ANNOTATE.GETSCHEMAANNOTATIONS (
xmlschema IN xmlType)
RETURN XMLType;

パラメータ

表198-7 GETSCHEMAANNOTATIONSファンクションのパラメータ

パラメータ

説明

xmlschema

元のXMLスキーマ

戻り値

このファンクションは、ドキュメントannotations.xmlをXMLTypeとして戻します。

使用上の注意

このファンクションは、すべての注釈を1つのドキュメントに保存してannotationsという名前を付け、それを戻します。このドキュメントにより、DBMS_XMLSCHEMA_ANNOTATE.GETSCHEMAANNOTATIONSを使用して、注釈のないスキーマにすべての注釈を適用することができます。

DBMS_XMLSCHEMA_ANNOTATE.GETSCHEMAANNOTATIONSは、Oracle Databaseリリース10.2では使用できません(Oracle Databaseリリース11.xのみ)。

関連項目:
SETSCHEMAANNOTATATIONSプロシージャ

例

DBMS_XMLSCHEMA_ANNOTATE.GETSCHEMAANNOTATIONSの例は、「SETSCHEMAANNOTATATIONSプロシージャ」の例を参照してください。

GETSIDXDEFFROMVIEWファンクション

このファンクションは、XMLTABLEビュー定義をxmltype列または表に取り込み、CLOBを戻します。これをパラメータとして使用し、XMLTABLEビューをリレーショナル表としてバックアップする構造化xmlindexを作成することができます。

構文

DBMS_XMLSCHEMA_ANNOTATE.GETSIDXDEFFROMVIEW (
viewName   IN xmlType)
RETURN CLOB;

パラメータ

表198-8 GETSIDXDEFFROMVIEWファンクションのパラメータ

パラメータ

説明

viewName

元のXMLスキーマ

戻り値

このファンクションはCLOBを戻します。これをパラメータとして使用して、XMLTABLEビューをリレーショナル表としてバックアップする構造化xmlindexを作成することができます。

PRINTWARNINGSプロシージャ

このプロシージャは、XMLスキーマでノードにマップされた注釈がない場合に、ユーザーが警告を発したり、警告を非表示にできるようにします。

構文

DBMS_XMLSCHEMA_ANNOTATE.PRINTWARNINGS (
value       IN   BOOLEAN DEFAULT TRUE);

パラメータ

表198-9 PRINTWARNINGSプロシージャのパラメータ

パラメータ

説明

val

NO MATCHING ELEMENTS FOUNDエラー・メッセージが表示されるには、valをTRUEに設定する必要があります。この警告を非表示にする場合は、FALSEに設定してください。

使用上の注意

注釈がXMLスキーマ内の複数のノードにマップしている場合は、エラーANNOTATION MAPS TO MULTIPLE ELEMENTSが発生します。この場合、注釈は実行されません。ユーザーは、XMLスキーマ内で一意のノードが参照されるようにプロシージャ・コールのパラメータを修正する必要があります。

REMOVEANYSTORAGEプロシージャ

このプロシージャは、指定された名前を持つ複合タイプの任意(ANY)の子から、SQLタイプの設定を削除します。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVEANYSTORAGE (
xmlschema       IN OUT XMLType,
complexTypeName IN VARCHAR2);

パラメータ

表198-10 REMOVEANYSTORAGEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

complexTypeName

複合タイプの名前

使用上の注意

このプロシージャは、SETANYSTORAGEプロシージャとは逆の処理をします。

REMOVEDEFAULTTABLEプロシージャ

このプロシージャは、要素に指定されたデフォルトの表属性をすべて削除します。このプロシージャをコールした後で、表名が生成されます。このプロシージャは常に上書きします。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVEDEFAULTTABLE (
xmlschema          IN OUT XMLTYPE,
globalElementName  IN     VARCHAR2);

パラメータ

表198-11 REMOVEDEFAULTTABLEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalElementName

スキーマ内のグローバル要素の名前

例

注釈は、"select out from annotation_tab"を使用していつでも検証できます。

--The purchaseOrder element will have no annotation for defaultTable.
DECLARE
xml_schema XMLTYPE;
BEGIN
SELECT out INTO xml_schema FROM annotation_tab;
DBMS_XMLSCHEMA_ANNOTATE.REMOVEDEFAULTTABLE(xml_schema,
'purchaseOrder');
UPDATE annotation_tab SET out = xml_schema;
END;
/

REMOVEMAINTAINDOMプロシージャ

このプロシージャは、DOMのメンテナンスに使用されたすべての注釈を、指定したスキーマから削除します。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVEMAINTAINDOM (
xmlschema    IN OUT XMLType);

パラメータ

表198-12 REMOVEMAINTAINDOMプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

REMOVEOUTOFLINEプロシージャ

このプロシージャは、表外に格納されないようにするために、既存のすべてのSQLInline属性を削除します。3回のオーバーロードが行われます。

構文

指定された要素のSQLInline属性を削除します。

DBMS_XMLSCHEMA_ANNOTATE.REMOVEOUTOFLINE (
xmlschema           IN OUT  XMLType,
elementName         IN      VARCHAR2,
elementType         IN      VARCHAR2,
overwrite           IN      BOOLEAN default TRUE);

グローバル・オブジェクトとローカル要素名によって指定されたオブジェクトのSQLInline属性を削除します。

DBMS_XMLSCHEMA_ANNOTATE.REMOVEOUTOFLINE (
xmlschema          IN OUT  XMLType,
globalObject       IN      VARCHAR2,
globalObjectName   IN      VARCHAR2,
localElementName   IN      VARCHAR2);

参照されたグローバル要素のSQLInline属性が削除されます。

DBMS_XMLSCHEMA_ANNOTATE.REMOVEOUTOFLINE (
xmlschema         IN OUT  XMLType,
reference         IN      VARCHAR2);

パラメータ

表198-13 REMOVEMAKEOUTOFLINEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

elementName

要素名

elementType

要素タイプ

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

localElementName

グローバル要素の下位のローカル要素の名前

reference

グローバル要素の参照

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

使用上の注意

このプロシージャは、SETOUTOFLINEプロシージャとは逆の処理をします。

REMOVESQLCOLLTYPEプロシージャ

このプロシージャは、SQLコレクション・タイプを削除します。最初のオーバーロードでは指定された要素に対応するSQLコレクション・タイプが削除され、2回目のオーバーロードでは複合タイプの内部にあるXML要素からそのタイプが削除されます。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLCOLLTYPE (
xmlschema   IN OUT XMLType,
elementName IN VARCHAR2);

DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLCOLLTYPE (
xmlschema        IN OUT XMLType,
globalObject     IN VARCHAR2,
globalName       IN VARCHAR2,
localElementName IN VARCHAR2);

パラメータ

表198-14 REMOVESQLCOLLTYPEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

elementName

要素名

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalName

グローバル・オブジェクトの名前

localElementName

グローバル要素の下位のローカル要素の名前

使用上の注意

このプロシージャは、SETSQLCOLLTYPEプロシージャとは逆の処理をします。

REMOVESQLNAMEプロシージャ

このプロシージャは、グローバル要素からSQLNAMEを削除します。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLNAME (
xmlschema          IN OUT  XMLType,
globalObject       IN      VARCHAR2,
globalObjectName   IN      VARCHAR2,
localObject        IN      VARCHAR2,
localObjectName    IN      VARCHAR2,
sqlName            IN      VARCHAR2,
overwrite          IN      BOOLEAN DEFAULT TRUE);

パラメータ

表198-15 REMOVESQLNAMEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

localObject

グローバル・オブジェクトの下位オブジェクト

localObjectName

ローカル・オブジェクトの名前

sqlName

XMLスキーマで定義された要素に対応するSQL属性の名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

例

shipTo要素には、xdb:SQLName="SHIPTO_SQLNAME"と同様の注釈が付けられます。

DECLARE
xml_schema   XMLTYPE;
BEGIN
SELECT out INTO xml_schema FROM annotation_tab;
DBMS_XMLSCHEMA_ANNOTATE.SETSQLNAME (xml_schema,
'element', 'purchaseOrder',
'element', 'shipTo',
'SHIPTO_SQLNAME');
UPDATE annotation_tab SET out = xml_schema;
END;
/

REMOVESQLTYPEプロシージャ

このプロシージャはSQLタイプを削除します。最初のオーバーロードではグローバル要素からSQLタイプが削除され、2回目のオーバーロードでは複合タイプの内部にあるグローバル要素からそのタイプが削除されます。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLTYPE (
xmlschema in out XMLType,
globalElementName   IN      VARCHAR2);

DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLTYPE (
xmlschema           IN OUT  XMLTYPE,
globalObject        IN      VARCHAR2,
globalObjectName    IN      VARCHAR2,
localObject         IN      VARCHAR2,
localObjectName     IN      VARCHAR2);

パラメータ

表198-16 REMOVESQLTYPEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalElementName

グローバル要素の名前

globalObjectName

グローバル・オブジェクトの名前

localObject

グローバル・オブジェクトの下位オブジェクト

localObjectName

ローカル・オブジェクトの名前

使用上の注意

このプロシージャは、SETSQLTYPEプロシージャとは逆の処理をします。

REMOVESQLTYPEMAPPINGプロシージャ

このプロシージャは、指定されたスキーマ・タイプのSQLタイプのマッピングを削除します。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLTYPEMAPPING (
xmlschema        IN OUT  XMLTYPE,
schemaTypeName   IN      VARCHAR2);

パラメータ

表198-17 REMOVESQLTYPEMAPPINGプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

schemaTypeName

スキーマ・タイプの名前

使用上の注意

このプロシージャは、SETSQLTYPEMAPPINGプロシージャとは逆の処理をします。

REMOVETABLEPROPSプロシージャ

このプロシージャは、CREATE TABLE文から表記憶域のプロパティを削除します。このプロシージャはオーバーロードされています。各オーバーロードには、それぞれ異なるパラメータ要件が指定どおりに割り当てられています。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVETABLEPROPS (
xmlschema            IN OUT  XMLTYPE,
globalElementName    IN      VARCHAR2);

DBMS_XMLSCHEMA_ANNOTATE.REMOVETABLEPROPS (
xmlschema            IN OUT  XMLTYPE,
globalObject         IN      VARCHAR2,
globalObjectName     IN      VARCHAR2,
localElementName     IN      VARCHAR2);

パラメータ

表198-18 REMOVETABLEPROPSプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalElementName

スキーマ内のグローバル要素の名前

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

localElementName

グローバル要素の下位のローカル要素の名前

使用上の注意

このプロシージャは、SETTABLEPROPSプロシージャとは逆の処理をします。

REMOVETIMESTAMPWITHTIMEZONEプロシージャ

このプロシージャは、XMLスキーマ内のすべてのdateTimeタイプの要素からTimeStampWithTimeZoneデータ・タイプの設定を削除します。

構文

DBMS_XMLSCHEMA_ANNOTATE.REMOVETIMESTAMPWITHTIMEZONE (
xmlschema          IN OUT  XMLTYPE);

DBMS_XMLSCHEMA_ANNOTATE.REMOVETIMESTAMPWITHTIMEZONE (
xmlschema         IN OUT  XMLTYPE,
schemaTypeName    IN      VARCHAR2);

パラメータ

表198-19 REMOVETIMESTAMPWITHTIMEZONEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

schemaTypeName

スキーマ・タイプの名前

使用上の注意

このプロシージャは、SETTIMESTAMPWITHTIMEZONEプロシージャとは逆の処理をします。

SETANYSTORAGEプロシージャ

このプロシージャは、指定された名前を持つ複合タイプの任意(ANY)の子に、SQLデータ・タイプを割り当てます。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETANYSTORAGE )
xmlschema       IN OUT  XMLType,
complexTypeName IN      VARCHAR2,
sqlTypeName     IN      VARCHAR2,
overwrite       IN      BOOLEAN DEFAULT TRUE);

パラメータ

表198-20 SETANYSTORAGEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

complexTypeName

複合タイプの名前

sqlTypeName

SQLタイプの名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

例

複合タイプItemsのxsd:any childに、xdb:SQLType="VARCHAR"と同様の注釈が割り当てられます。

DECLARE   xml_schema  XMLTYPE;BEGIN   SELECT out INTO xml_schema FROM annotation_tab;   DBMS_XMLSCHEMA_ANNOTATE.setAnyStorage (xml_schema,                                        'Items',                                         'VARCHAR');   UPDATE annotation_tab SET out = xml_schema;END;
/

SETDEFAULTTABLEプロシージャ

このプロシージャは、指定されたグローバル要素に表の名前を設定します。これは、最上位レベルの要素にスキーマ注釈xdb:defaultTable="<default_table_name>"を使用するのと同じです。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETDEFAULTTABLE (
xmlschema           IN  OUT  XMLTYPE,
globalElementName   IN       VARCHAR2,
tableName           IN       VARCHAR2,
overwrite           IN       BOOLEAN   DEFAULT TRUE);

パラメータ

表198-21 SETDEFAULTTABLEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalElementName

スキーマ内のグローバル要素の名前

tableName

表に割り当てられる名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

SETOUTOFLINEプロシージャ

このプロシージャは、SQLInline属性をFALSEに設定します。つまり、xdb:SQLInLine=FALSEを設定します。

これにより、XDBは、XMLドキュメントの対応する要素を別のXMLType表の行として表外に強制的に格納します。XDBは、XMLType表の各行への参照を、メイン表によりメンテナンスされるリンク表に格納します。

このプロシージャでは、表外の表が問合せのドライバとして動作する場合に、パフォーマンスを改善できることがあります。また、要素を表内および表外に格納することによって元表の列数が削減されるため、XMLスキーマ登録時に、一部の要素に複合タイプ(多数の要素からなる)が存在する場合でも、'1000 column limit'エラーを回避することができます。

関連項目:
『Oracle XML DB開発者ガイド』

3回のオーバーロードが行われます。

構文

SQLInline属性をFALSEに設定して、指定された要素の表外格納を強制します。

DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE (
xmlschema          IN OUT  XMLType,
elementName        IN      VARCHAR2,
elementType        IN      VARCHAR2,
defaultTableName   IN      VARCHAR2,
overwrite          IN      BOOLEAN DEFAULT TRUE);

SQLInline属性をFALSEに設定して、ローカル名とグローバル名によって指定された要素の表外格納を強制します。

DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE (
xmlschema          IN OUT  XMLType,
globalObject       IN      VARCHAR2,
globalObjectName   IN      VARCHAR2,
localElementName   IN      VARCHAR2,
defaultTableName   IN      VARCHAR2,
overwrite          IN      BOOLEAN DEFAULT TRUE);

SQLInline属性をFALSEに設定して表外格納を強制し、特定のグローバル要素へのすべての参照でデフォルト名を設定します。

DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE (
xmlschema         IN OUT  XMLType,
reference         IN      VARCHAR2,
defaultTableName  IN      VARCHAR2,
overwrite         IN      BOOLEAN DEFAULT TRUE);

パラメータ

表198-22 SETOUTOFLINEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

elementName

要素名

elementType

要素タイプ

defaultTableName

デフォルト表の名前。

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

localElementName

グローバル要素の下位のローカル要素の名前。

reference

グローバル要素の参照

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

使用上の注意

XMLスキーマ登録後のXMLインスタンス・データのロード前に、DBMS_XMLSTORAGE_MANAGE.SCOPEXMLREFERENCES()を使用して、参照範囲を表外の表にのみ設定してください。こうすることで、その後の問合せのパフォーマンスが向上します。

例

次の例に、3番目のオーバーロード方式を示します。要素のコメントには、xdb:defaultTable="CMMNT_DEFAULT_TABLE"と同様の注釈が付けられます。

DECLARE
xml_schema xmltype;
BEGIN
SELECT OUT INTO xml_schema FROM annotation_tab;

DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE (xml_schema,
'ipo:comment',
'CMMNT_DEFAULT_TABLE');
UPDATE annotation_tab SET OUT = xml_schema;
END;
/

SETSCHEMAANNOTATATIONSプロシージャ

このプロシージャはDBMS_XMLSCHEMA_ANNOTATE.GETSCHEMAANNOTATIONSをコールした結果として生じた注釈付き差分を取り込み、それを指定されたXMLスキーマにパッチ適用します。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETSCHEMAANNOTATIONS (
xmlschema     IN OUT xmlType,
annotations   IN VARCHAR2);

パラメータ

表198-23 SETSCHEMAANNOTATIONSプロシージャのパラメータ

パラメータ

説明

xmlschema

パッチ適用されるXMLスキーマ。

annotations

元のXMLスキーマと注釈付きXMLスキーマに対してDBMS_XMLSCHEMA_ANNOTATE.GETSCHEMAANNOTATIONSをコールすることで作成された差分ドキュメント。

使用上の注意

DBMS_XMLSCHEMA_ANNOTATE.SETSCHEMAANNOTATATIONSは、Oracle Databaseリリース10.2では使用できません(Oracle Databaseリリース11.xのみ)。

関連項目:
GETSCHEMAANNOTATIONSファンクション

例

次の例では、DBMS_XMLSCHEMA_ANNOTATE.SETSCHEMAANNOTATIONSとGETSCHEMAANNOTATIONSファンクションを示します。

-- test getannotations and apply them
declare
xml_schema xmltype;
xml_schema2 xmltype;
annotations xmltype;
begin
select out into xml_schema from annotation_tab;

-- get the annotations from the schema
annotations := DBMS_XMLSCHEMA_ANNOTATE.getSchemaAnnotations (xml_schema);

-- apply the annotations to the schema
select inp into xml_schema2 from annotation_tab;

DBMS_XMLSCHEMA_ANNOTATE.setSchemaAnnotations(xml_schema2, annotations);

update annotation_tab t set t.out = xml_schema2;
end;
/

SETSQLCOLLTYPEプロシージャ

このプロシージャは、コレクションのSQLタイプ名を割り当てます。コレクションは、maxOccurs>1のグローバル要素またはローカル要素です。XDBは、このプロシージャを使用して、指定されたユーザー定義の名前を持つSQLTypeを作成します。

2つのオーバーロードがあります。最初にXML要素に対応するSQLコレクション・タイプの名前が設定され、2番目で、指定された複合タイプの内部にあるXML要素に対応するSQLコレクション・タイプの名前が設定されます。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETSQLCOLLTYPE (
xmlschema          IN OUT   XMLTYPE,
elementName        IN       VARCHAR2,
sqlCollType        IN       VARCHAR2,
overwrite          IN       BOOLEAN DEFAULT TRUE);

DBMS_XMLSCHEMA_ANNOTATE.SETSQLCOLLTYPE (
xmlschema          IN OUT XMLType,
globalObject       IN VARCHAR2,
globalObjectName   IN VARCHAR2,
localElementName   IN VARCHAR2,
sqlCollType        IN VARCHAR2,
overwrite          IN BOOLEAN default TRUE );

パラメータ

表198-24 SETSQLCOLLTYPEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

elementName

要素名

sqlCollType

SQLコレクション・タイプ

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

localElementName

グローバル要素の下位のローカル要素の名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

例

item要素には、xdb:SQLCollType="ITEM_SQL_COL_TYPE"と同様の注釈が付けられます。

declare
xml_schema xmltype;
begin
SELECT out INTO xml_schema FROM annotation_tab;
DBMS_XMLSCHEMA_ANNOTATE.setSQLCollType (xml_schema,
'item',
'ITEM_SQL_COL_TYPE',TRUE);
UPDATE annotation_tab SET out = xml_schema;
end;

SETSQLNAMEプロシージャ

このプロシージャは、XMLスキーマで定義された要素に対応する名前をSQL属性に割り当てます。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETSQLNAME (
xmlschema          IN OUT  XMLType,
globalObject       IN      VARCHAR2,
globalObjectName   IN      VARCHAR2,
localObject        IN      VARCHAR2,
localObjectName    IN      VARCHAR2,
sqlName            IN      VARCHAR2,
overwrite          IN      BOOLEAN DEFAULT TRUE);

パラメータ

表198-25 SETSQLNAMEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

localObject

グローバル・オブジェクトの下位オブジェクト

localObjectName

ローカル・オブジェクトの名前

sqlName

XMLスキーマで定義された要素に対応するSQL属性の名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

例

shipTo要素には、xdb:SQLName="SHIPTO_SQLNAME"と同様の注釈が付けられます。

DECLARE
xml_schema   XMLTYPE;
BEGIN
SELECT out INTO xml_schema FROM annotation_tab;
DBMS_XMLSCHEMA_ANNOTATE.SETSQLNAME (xml_schema,
'element', 'purchaseOrder',
'element', 'shipTo',
'SHIPTO_SQLNAME');
UPDATE annotation_tab SET out = xml_schema;
END;
/

SETSQLTYPEプロシージャ

このプロシージャは、SQLタイプをグローバル・オブジェクトに割り当てます。

2つのオーバーロードがあります。最初のオーバーロードではSQLタイプがグローバル・オブジェクト(グローバル要素またはグローバル複合タイプなど)に割り当てられ、2回目のオーバーロードではローカル・オブジェクトに割り当てられます。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETSQLTYPE (
xmlschema            IN OUT   XMLTYPE,
globalElementName    IN       VARCHAR2,
sqlType              IN       VARCHAR2,
overwrite            IN       BOOLEAN DEFAULT TRUE);

DBMS_XMLSCHEMA_ANNOTATE.SETSQLTYPE (
xmlschema           IN OUT   XMLTYPE,
globalObject        IN       VARCHAR2,
globalObjectName    IN       VARCHAR2,
localObject         IN       VARCHAR2,
localObjectName     IN       VARCHAR2,
sqlType             IN       VARCHAR2,
overwrite           IN       BOOLEAN DEFAULT TRUE);

パラメータ

表198-26 SETSQLTYPEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

globalElementName

グローバル要素の名前

localObject

グローバル・オブジェクトの下位オブジェクト

localObjectName

ローカル・オブジェクトの名前

sqlType

指定したグローバル要素に割り当てられたSQLタイプ

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

例

purchaseOrder要素にはxdb:SQLType="PO_SQLTYPE"と同様の注釈が付けられ、shipTo要素にはxdb:SQLType="VARCHAR"と同様の注釈が付けられます。

DECLARE
xml_schema  xmltype;
BEGIN
SELECT out INTO xml_schema FROM annotation_tab;
DBMS_XMLSCHEMA_ANNOTATE.setSQLType (xml_schema,
'purchaseOrder',
'PO_SQLTYPE');
UPDATE annotation_tab SET out = xml_schema;
END;
/

DECLARE   xml_schema   xmltype;BEGIN  SELECT out INTO xml_schema FROM annotation_tab;  DBMS_XMLSCHEMA_ANNOTATE.setSQLType (xml_schema,                                         'element','purchaseOrder',                                         'element' ,'shipTo',                                        'VARCHAR');  UPDATE annotation_tab SET out = xml_schema;END;
/

SETSQLTYPEMAPPINGプロシージャ

このプロシージャは、スキーマ・タイプとSQLタイプのマッピングを定義します。

このプロシージャを使用する場合、スキーマ・タイプのすべてのインスタンスでSETSQLTYPEプロシージャをコールする必要はありません。かわりに、プロシージャがスキーマ全体を横断して、SQLタイプを自動的に割り当てます。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETSQLTYPEMAPPING (
xmlschema         IN OUT   XMLType,
schemaTypeName    IN       VARCHAR2,
sqlTypeName       IN       VARCHAR2,
overwrite         IN       BOOLEAN DEFAULT TRUE);

パラメータ

表198-27 SETSQLTYPEMAPPINGプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

schemaTypeName

スキーマ・タイプ

sqlType名

SQLタイプの名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

例

属性orderDateには、xdb:SQLType="DATE"と同様の注釈が付けられます。

declare   xml_schema xmltype;beginSELECT out INTO xml_schema FROM annotation_tab;DBMS_XMLSCHEMA_ANNOTATE.setSQLTypeMapping (xml_schema,                                         'date',                                         'DATE');UPDATE annotation_tab SET out = xml_schema;end;
/

SETTABLEPROPSプロシージャ

このプロシージャは、デフォルトのCREATE TABLE文に追加されるTABLE記憶域の句にプロパティを指定します。次のように、異なるパラメータ要件を持つ2つのオーバーロードが存在します。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETTABLEPROPS (
xmlschema            IN OUT  XMLType,
globalElementName    IN      VARCHAR2,
tableProps           IN      VARCHAR2,
overwrite            IN      BOOLEAN DEFAULT TRUE);

DBMS_XMLSCHEMA_ANNOTATE.SETTABLEPROPS (
xmlschema            IN OUT  XMLTYPE,
globalObject         IN      VARCHAR2,
globalObjectName     IN      VARCHAR2,
localElementName     IN      VARCHAR2,
tableProps           IN      VARCHAR2,
overwrite            IN      BOOLEAN DEFAULT TRUE);

パラメータ

表198-28 SETTABLEPROPSプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

globalElementName

スキーマ内のグローバル要素の名前

tableProps

表のプロパティ

globalObject

グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素)

globalObjectName

グローバル・オブジェクトの名前

localElementName

グローバル要素の下位のローカル要素の名前

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

例

purchaseOrder要素には、xdb:tableProps="CACHE"と同様の注釈が付けられます。

DECLARE   xml_schema XMLTYPE;BEGIN   SELECT out INTO xml_schema FROM annotation_tab;   DBMS_XMLSCHEMA_ANNOTATE.SETTABLEPROPS(xml_schema,                                         'purchaseOrder' ,'CACHE');   UPDATE annotation_tab SET out = xml_schema;END;
/

SETTIMESTAMPWITHTIMEZONEプロシージャ

このプロシージャは、TIMESTAMPWITHTIMEZONEデータ・タイプを、XMLスキーマ内のすべてのdateTimeタイプの要素に設定します。これは、xdb:SQLType="TIMESTAMP WITH TIME ZONE"をすべてのdateTimeオブジェクトに追加するのと同じです。

構文

DBMS_XMLSCHEMA_ANNOTATE.SETTIMESTAMPWITHTIMEZONE (
xmlschema      IN OUT   XMLTYPE,
overwrite      IN       BOOLEAN DEFAULT TRUE);

パラメータ

表198-29 SETTIMESTAMPWITHTIMEZONEプロシージャのパラメータ

パラメータ

説明

xmlschema

注釈を付けるXMLスキーマ

overwrite

プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトはTRUEです。

199 DBMS_XMLSTORAGE_MANAGE

DBMS_XMLSTORAGE_MANAGEパッケージは、スキーマ登録の完了後にXML記憶域を管理および変更するためのインタフェースを提供します。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XMLSTORAGE_MANAGEの使用

- 概要

- セキュリティ・モデル

- DBMS_XMLSTORAGE_MANAGEサブプログラムの要約

DBMS_XMLSTORAGE_MANAGEの使用

- 概要

- セキュリティ・モデル

概要

DBMS_XMLSTORAGE_MANAGEには、スキーマ登録の完了後にXML記憶域を管理および変更するためのプロシージャが含まれています。バルク・ロード操作のパフォーマンスを改善するには、このパッケージのサブプログラムを使用してください。バルク・ロード・プロセスを開始する前に索引と制約を無効化し、後でそれらを有効化することができます。

セキュリティ・モデル

DBMS_XMLSTORAGE_MANAGEパッケージはXDBによって所有されているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XMLSTORAGE_MANAGEサブプログラムの要約

表199-1 DBMS_XMLSTORAGE_MANAGEパッケージのサブプログラム

サブプログラム

説明

DISABLEINDEXESANDCONSTRAINTSプロシージャ

XMLType表およびXMLType列の索引と制約を無効化します。

ENABLEINDEXESANDCONSTRAINTSプロシージャ

すべての索引を再構築し、XMLType表(子表および表外の表も含む)に対して制約を有効化します。

EXCHANGEPOSTPROCプロシージャ

パーティションの交換後に制約を有効化してください。

EXCHANGEPREPROCプロシージャ

パーティションの交換前に制約を無効化してください。

INDEXXMLREFERENCESプロシージャ

指定されたXMLタイプの表のREF列に、または指定された表のXMLタイプの列に、一意の索引を作成します。

RENAMECOLLECTIONTABLEプロシージャ

コレクション表の名前を指定された表名に変更します。

SCOPEXMLREFERENCESプロシージャ

すべてのXML参照の有効範囲を指定します。有効範囲を指定したREFタイプは多くの記憶域領域を必要としないため、有効範囲が指定されていないREFタイプよりも効率的にアクセスできます。

XPATH2TABCOLMAPPINGファンクション

パス式を(XPath表記法またはDOT表記法で)対応する表名と列名にマップします。

DISABLEINDEXESANDCONSTRAINTSプロシージャ

このプロシージャは、XMLType表およびXMLType列の索引と制約を無効化します。

構文

DBMS_XMLSTORAGE_MANAGE.DISABLEINDEXESANDCONSTRAINTS (
owner_name    IN  VARCHAR2 DEFAULT USER,
table_name    IN  VARCHAR2,
column_name   IN  VARCHAR2 DEFAULT NULL,
clear         IN  BOOLEAN  DEFAULT FALSE);

パラメータ

表199-2 DISABLEINDEXESANDCONSTRAINTSプロシージャのパラメータ

パラメータ

説明

owner_name

所有者の名前

table_name

プロシージャが実行されているXMLType表の名前

column_name

XMLType列の名前

clear

TRUEに設定されたときに、プロシージャの実行前に表の格納済索引および制約のデータをすべて消去するブール値。デフォルトはFALSEで、消去しません。

使用上の注意

XMLTYPE表の引渡し

XMLType表の場合は、バルク・ロード操作が実行されるXMLType表の名前を渡す必要があります。XMLType列の場合は、リレーショナル表の名前と、対応するXMLType列の名前を渡す必要があります。

索引と制約を有効化および無効化するclearの使用

注意:
clearをTRUEに設定してDISABLEINDEXESANDCONTRAINTSプロシージャをコールした場合、このプロシージャを以前に実行した際に記憶されたXMLTYPEの表または列に関する索引または制約情報がすべて削除されます。

したがって、clearをTRUEに設定してDISABLEINDEXESANDCONTRAINTSプロシージャをコールする前に、この表または列で無効化された索引と制約がすべて再有効化されていることを確認する必要があります。

最初の実行では、clearをTRUEに設定しておくことをお薦めします。それ以降の実行では(索引を無効化または有効化する際にエラーが発生したため)、clearをFALSE(デフォルト値)に設定してください。バルク・ロード操作の後ですべての索引と制約を正常に再有効化できた場合は、clearをTRUEに設定してプロシージャを再度コールし、次のバルク・ロード操作を行うことができます。

例

次の例では、DISABLEINDEXESANDCONSTRAINTSプロシージャとENABLEINDEXESANDCONSTRAINTSプロシージャでのclearの使用を示しています。

まず、PURCHASEORDER_TAB表のcomment要素に対して、非NULLの制約を追加します。

ALTER TABLE PURCHASEORDER_TAB ADD CONSTRAINT c1 check            ("XMLDATA"."comment" IS NOT NULL);

次に、DISABLEINDEXESANDCONSTRAINTSプロシージャをコールして、clearをTRUEとして渡すことによって、すべての索引と制約を無効化します。

BEGIN
XDB.DBMS_XMLSTORAGE_MANAGE.DISABLEINDEXESANDCONSTRAINTS
( USER,'PURCHASEORDER_TAB',NULL,TRUE );
END;
/

さらに、ALTER表の文の制約c1に違反するバルク・ロード操作(データ・ポンプのインポートなど)を実行します。これで制約が無効化されるため、エラーは発生しません。

host impdp orexample/orexample directory=dir dumpfile=dmp.txt
tables=OREXAMPLE.PURCHASEORDER_TAB content = DATA_ONLY;

注意: 無効化された制約と索引を表示するには、次を使用します。

SELECT constraint_name,table_name,status FROM all_constraints
WHERE owner = user;

最後に、ENABLEINDEXESANDCONSTRAINTSプロシージャを使用して制約を有効化してみます。非NULL制約であるc1にバルク・ロード操作が違反したため、エラーが発生します。

BEGIN
XDB.DBMS_XMLSTORAGE_MANAGE.ENABLEINDEXESANDCONSTRAINTS
( USER,'PURCHASEORDER_TAB');
END;
/

すべての索引と制約を無効化するには、再度DISABLEINDEXESANDCONSTRAINTSを使用します。ただし、clear=はFALSEに設定します(ENABLEINDEXESANDCONSTRAINTSが正常に終了しなかったため)。注意: デフォルトでは、clear = FALSEであるため、次にコールするときは、これを明示的に渡す必要はありません。

BEGIN
xdb.DBMS_XMLSTORAGE_MANAGE.DISABLEINDEXESANDCONSTRAINTS
( USER,'PURCHASEORDER_TAB');
END;
/

さらに、表に入力された不適切な行を削除します。

DELETE FROM purchaseorder_tab p
WHERE p.xmldata."comment" IS NULL;

ENABLEINDEXESANDCONSTRAINTSを使用して、索引と制約を再有効化します。これは正常に終了します。

BEGIN
xdb.DBMS_XMLSTORAGE_MANAGE.ENABLEINDEXESANDCONSTRAINTS
( USER,'PURCHASEORDER_TAB');
END;
/

ENABLEINDEXESANDCONSTRAINTSプロシージャ

このプロシージャはすべての索引を再構築し、XMLType表(子表および表外の表も含む)に対して制約を有効化します。column_nameが渡された場合は、このXMLType列に対しても同じように作用します。

構文

DBMS_XMLSTORAGE_MANAGE.ENABLEINDEXESANDCONSTRAINTS (
owner_name   IN VARCHAR2 DEFAULT USER,
table_name   IN VARCHAR2,
column_name  IN VARCHAR2 DEFAULT NULL);

パラメータ

表199-3 ENABLEINDEXESANDCONSTRAINTSプロシージャのパラメータ

パラメータ

説明

owner_user

所有者の名前

table_name

索引と制約を削除中である表の名前

column_name

列名。

使用上の注意

このプロシージャは、DISABLEINDEXESANDCONSTRAINTSプロシージャとは逆の処理をします。

例

「DISABLEINDEXESANDCONSTRAINTSプロシージャ」を参照してください。

EXCHANGEPOSTPROCプロシージャ

このプロシージャは、パーティションの交換後に制約を有効化します。

構文

DBMS_XMLSTORAGE_MANAGE.EXCHANGEPOSTPROC (
owner_name   IN VARCHAR2 DEFAULT USER,
table_name   IN VARCHAR2);

パラメータ

表199-4 EXCHANGEPOSTPROCプロシージャのパラメータ

パラメータ

説明

owner_user

所有者の名前

table_name

索引と制約を削除中である表の名前

EXCHANGEPREPROCプロシージャ

このプロシージャは、パーティションの交換前に制約を無効化します。

構文

DBMS_XMLSTORAGE_MANAGE.EXCHANGEPREPROC (
owner_name   IN VARCHAR2 DEFAULT USER,
table_name   IN VARCHAR2);

パラメータ

表199-5 EXCHANGEPREPROCプロシージャのパラメータ

パラメータ

説明

owner_user

所有者の名前

table_name

索引と制約を削除中である表の名前

INDEXXMLREFERENCESプロシージャ

このプロシージャは、指定されたXMLタイプの表のREF列に、または指定された表のXMLタイプの列に、一意の索引を作成します。

このプロシージャで複数のREF列が作成された場合は、それぞれの名前に_1、_2、などと追加されます。

構文

DBMS_XMLSTORAGE_MANAGE.INDEXXMLREFERENCES (
owner_name    IN VARCHAR2 DEFAULT USER,
table_name    IN VARCHAR2,
column_name   IN VARCHAR2 DEFAULT NULL);

パラメータ

表199-6 INDEXXMLREFERENCESプロシージャのパラメータ

パラメータ

説明

owner_name

所有者の名前

table_name

索引付けが行われている表

column_name

列名。XMLタイプの表には不要です。

index_name

新規作成された索引の名前

使用上の注意

このプロシージャは、REFに有効範囲が指定されている場合にのみ使用します。「SCOPEXMLREFERENCESプロシージャ」を参照してください。

元表と子表の結合が問合せ計画で発生する場合、REFに索引を付けることによってパフォーマンスが向上します。

- 元表の選択性が子表よりも高い場合、REFの索引付けは不要です。

- 子表の選択性が元表よりも高く、索引が付けられていない場合は、子表の1つの行を元表に結合することによって、元表を全表スキャンすることができます。

INDEXXMLREFERENCESは、コール元の表の子表でREFを再帰的に索引付けすることはありません。そうするには、XML_OUT_OF_LINE_TABLESビューまたはXML_NESTED_TABLESビューのループ内でプロシージャをコールすることをお薦めします。これにより、ビュー内の列の現在値から索引名が作成されます。

注意:
このプロシージャは構造化記憶域モデルに限定されています。

RENAMECOLLECTIONTABLEプロシージャ

このプロシージャは、コレクション表の名前を指定された表名に変更します。

XPath式では、コレクション表の指定がXMLtype元表、またはこの元表のXMLType列から始まります。

このプロシージャは、コレクション表の名前を対応するコレクション・タイプの名前から導出する唯一の手段になります。この用途に応じた直接的なスキーマ注釈が存在しないからです。

構文

DBMS_XMLSTORAGE_MANAGE.RENAMECOLLECTIONTABLE (
owner_name             IN VARCHAR2 DEFAULT USER,
table_name             IN VARCHAR2,
column_name            IN VARCHAR2 DEFAULT NULL,
xpath                  IN VARCHAR2,
collection_table_name  IN VARCHAR2
namespaces             IN VARCHAR2 default NULL);  // For release 11.2 only

パラメータ

表199-7 RENAMECOLLECTIONTABLEプロシージャのパラメータ

パラメータ

説明

owner_name

所有者の名前

table_name

コレクション表を指定する際の開始点として使用できる元表の名前

column_name

コレクション表を指定する際の開始点として使用できるXMLType列

xpath

コレクション表を指定するXPath式

collection_table_name

コレクション表の名前

namespaces

Oracle Database 11gリリース2(11.2)以降で使用可能。XPathで使用される名前空間です。

使用上の注意

このプロシージャは、XMLスキーマの登録後にコールしてください。

表名は索引名の接頭辞として使用されます。

問合せ実行計画が読みやすくなるため、このファンクションの使用をお薦めします。

このプロシージャの実行中に発生したエラーは、プロシージャをコールしたユーザーに報告してください。

注意:
このプロシージャは構造化記憶域モデルに限定されています。

Oracle Database 11gリリース2(11.2)以降にかぎり、このファンクションではXPath表記法とDOT表記法が両方とも受け入れられます。XPath表記法を使用する場合は、namespacesパラメータが必要になる場合もあります。

例

コレクション表の名前はEMP_TAB_NAMELISTになります。これを検証するには、SELECT * FROM user_nested_tablesを使用します。

DOT表記法の使用:

call  XDB.DBMS_XMLSTORAGE_MANAGE.RENAMECOLLECTIONTABLE (
USER,
'EMP_TAB',
NULL,
'"XMLDATA"."EMPLOYEE"."NAME"',
''EMP_TAB_NAMELIST);

XPath表記法の使用:

XPath表記法は、Oracle Database 11gリリース2(11.2)以降で使用可能です。

call  XDB.DBMS_XMLSTORAGE_MANAGE.RENAMECOLLECTIONTABLE (
USER,
'EMP_TAB',
NULL,
'/e:Employee/Name',
'EMP_TAB_NAMELIST',
'''http://www.oracle.com/emp.xsd'' as "e"');

SCOPEXMLREFERENCESプロシージャ

このプロシージャは、すべてのXML参照の有効範囲を指定します。有効範囲付きREFでは、有効範囲指定なしのREFに比べて、少ない記憶域でより効率的なアクセスが可能です。

構文

DBMS_XMLSTORAGE_MANAGE.SCOPEXMLREFERENCES;

使用上の注意

- DBMS_XMLSTORAGE_MANAGEパッケージのSETOUTOFLINEプロシージャを使用した場合、XMLスキーマの登録時に'1000 column limit'エラーの発生を回避するために、SCOPEXMLREFERENCESプロシージャも使用する必要があります。

- XMLスキーマの登録後のXMLインスタンス・データのロード前にSCOPEXMLREFERENCESを使用すると、これらの参照の有効範囲が表外の表にのみ指定されます。

注意:
このプロシージャは構造化記憶域モデルに限定されています。

XPATH2TABCOLMAPPINGファンクション

このファンクションは、パス式を(XPath表記法またはDOT表記法で)対応する表名と列名にマップします。これは、ユーザーがこの表に索引を作成する場合や制約を追加する場合、または問合せ実行計画を読みやすくするために表の名前を変更する場合に必要になります。

構文

DBMS_XMLSTORAGE_MANAGE.XPATH2TABCOLMAPPING (
owner_name   IN  VARCHAR2 DEFAULT USER,
table_name   IN  VARCHAR2,
column_name  IN  VARCHAR2 DEFAULT NULL,
xpath        IN  VARCHAR2,
namespaces   IN  VARCHAR2 DEFAULT NULL)
RETURN XMLTYPE;

パラメータ

表199-8 XPATH2TABCOLMAPPINGプロシージャのパラメータ

パラメータ

説明

owner_user

所有者の名前

table_name

元表の名前

column_name

table_nameがXMLtype表でない場合のXMLtype列のオプション名。table_nameがXMLType表を参照する場合は、column_nameをNULLにしてください。

xpath

DOT表記法またはXPath表記法でのパス式(次の例を参照)

namespaces

パス式のオプション名前空間の定義

例

Xpath表記法と名前空間を指定してXMLType表で評価されたXPath2TablColMapping

SELECT XDB.DBMS_XMLSTORAGE_MANAGE.XPATH2TABCOLMAPPING (
USER, 'XML_TAB', '', '//n1:item/n1:location','''xdbXmark'' as "n1"')
FROM DUAL;

これは、次のような結果を生成します。

<Result>
<Mapping TableName="SYS_NT12345" ColumnName="location"/>
</Result>

これにより、表SYS_NT12345および列locationに対して索引または制約を定義することができます。

XMLTypeではないが、DOT表記法によるXMLType列を持つ表で評価されたXPath2TablColMapping

SELECT XDB.DBMS_XMLSTORAGE_MANAGE.XPATH2TABCOLMAPPING (
USER,'PurchaseOrderTab','XMLCOL','xmldata.LineItems.LineItem', '')
FROM DUAL;

200 DBMS_XMLSTORE

DBMS_XMLSTOREは、リレーショナル表内にXMLデータを格納する機能を提供します。

関連項目:
『Oracle XML DB開発者ガイド』

この章では、次の項目について説明します。

- DBMS_XMLSTOREの使用方法

- セキュリティ・モデル

- タイプ

- DBMS_XMLSTOREサブプログラムの要約

DBMS_XMLSTOREの使用

- セキュリティ・モデル

- タイプ

セキュリティ・モデル

DBMS_XMLSTOREパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

タイプ

表200-1 DBMS_XMLSTOREのタイプ

タイプ

説明

ctxType

問合せコンテキスト・ハンドルのタイプ。NEWCONTEXTの戻りタイプです。

DBMS_XMLSTOREサブプログラムの要約

表200-2 DBMS_XMLSTOREパッケージのサブプログラム

メソッド

説明

CLEARKEYCOLUMNLIST

キー列リストをクリアします。

CLEARUPDATECOLUMNLIST

更新列リストをクリアします。

CLOSECONTEXT

特定の保存コンテキストのクローズまたは割当て解除を行います。

DELETEXML

XML文書のデータで指定したレコードを、コンテキスト作成時に指定した表から削除します。

INSERTXML

コンテキストの作成時に指定した表にXML文書を挿入します。

NEWCONTEXT

保存コンテキストを作成し、コンテキスト・ハンドルを戻します。

SETKEYCOLUMN

このメソッドは、キー列リストに列を追加します。

SETROWTAG

XML文書で使用されたタグに名前を付け、データベースに対応するXML要素を囲みます。

SETUPDATECOLUMN

更新列リストに列を追加します。

UPDATEXML

XML文書を指定して、表を更新します。

CLEARKEYCOLUMNLIST

キー列リストをクリアします。

構文

PROCEDURE clearKeyColumnList(
ctxHdl IN ctxType);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

CLEARUPDATECOLUMNLIST

更新列リストをクリアします。

構文

PROCEDURE clearUpdateColumnList(
ctxHdl IN ctxType);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

CLOSECONTEXT

特定の保存コンテキストのクローズまたは割当て解除を行います。

構文

PROCEDURE closeContext(
ctxHdl IN ctxType);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

DELETEXML

XML文書のデータで指定したレコードを、コンテキスト作成時に指定した表から削除し、削除した行数を戻します。

構文

説明

FUNCTION deleteXML(
ctxHdl IN ctxPType,

xDoc IN VARCHAR2)

RETURN NUMBER;

xDocパラメータにVARCHAR2タイプを使用します。

FUNCTION deleteXML(
ctxHdl IN ctxType,

xDoc IN CLOB)

RETURN NUMBER;

xDocパラメータにCLOBタイプを使用します。

FUNCTION deleteXML(
ctxHdl IN ctxType,

xDoc IN XMLType)

RETURN NUMBER;

xDocパラメータにXMLTypeタイプを使用します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

INSERTXML

コンテキストの作成時に指定した表にXML文書を挿入し、挿入された行数を戻します。

ユーザーが、追加要素(表のいずれの列にも一致しない要素)を含むDBMS_XMLSTOREにinsertXMLのXMLファイルを渡した場合、OracleはSETUPDATECOLUMNが使用されていないかぎり、それらの列への挿入を試みることに注意してください。XMLファイル内の要素が表内の列と一致する場合にのみ、setUpdateColumnを使用できます。

構文

説明

FUNCTION insertXML(
ctxHdl IN ctxType,

xDoc IN VARCHAR2)

RETURN NUMBER;

xDocパラメータをVARCHAR2として渡します。

FUNCTION insertXML(
ctxHdl IN ctxType,

xDoc IN CLOB)

RETURN NUMBER;

xDocパラメータをCLOBとして渡します。

FUNCTION insertXML(
ctxHdl IN ctxType,

xDoc IN XMLType)

RETURN NUMBER;

xDocパラメータをXMLTypeとして渡します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

NEWCONTEXT

保存コンテキストを作成し、コンテキスト・ハンドルを戻します。

構文

FUNCTION newContext(
targetTable IN VARCHAR2)
RETURN ctxType;

パラメータ

IN / OUT

説明

targetTable

(IN)

XML文書のロード先となる表。

SETKEYCOLUMN

このメソッドは、「キー列リスト」に列を追加します。列の値をNULLにはできません。更新または削除の場合、キー列リストの列が文のWHERE句を構成します。更新を実行するには、キー列リストを先に指定する必要がありますが、削除操作においては、これはオプションです。

構文

PROCEDURE setKeyColumn(
ctxHdl IN ctxType,
colName IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

colName

(IN)

キー列リストに追加される列。NULLは設定できません。

SETROWTAG

XML文書で使用されたタグに名前を付け、データベース・レコードに対応するXML要素を囲みます。

構文

PROCEDURE setRowTag(
ctxHdl IN ctxType,
tag IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

tag

(IN)

タグ名。

SETUPDATECOLUMN

更新列リストに列を追加します。挿入の場合、デフォルトでは表のすべての列に値が挿入される一方、更新の場合、デフォルトではXML文書のROW要素に存在するタグに対応する列のみが更新されます。更新列リストが指定されている場合、このリストに含まれる列のみが更新または挿入の対象となります。

ユーザーが、追加要素(表のいずれの列にも一致しない要素)を含むDBMS_XMLSTOREにINSERTXMLのXMLファイルを渡した場合、Oracleは、setUpdateColumnが使用されていないかぎり、それらの列への挿入を試みることに注意してください。XMLファイル内の要素が表内の列と一致する場合にのみ、setUpdateColumnを使用できます。

構文

PROCEDURE setUpdateColumn(
ctxHdl IN ctxType,
colName IN VARCHAR2);

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

colName

(IN)

更新列リストに追加される列。

UPDATEXML

コンテキストの作成時に指定した表をXML文書のデータで更新し、更新された行数を戻します。指定できるオプションは、次の表のとおりです。

構文

説明

FUNCTION updateXML(
ctxHdl IN ctxType,

xDoc IN VARCHAR2)

RETURN NUMBER;

xDocパラメータをVARCHAR2として渡します。

FUNCTION updateXML(
ctxHdl IN ctxType,

xDoc IN CLOB)

RETURN NUMBER;

xDocパラメータをCLOBとして渡します。

FUNCTION updateXML(
ctxHdl IN ctxType,

xDoc IN XMLType)

RETURN NUMBER;

xDocパラメータをXMLTypeとして渡します。

パラメータ

IN / OUT

説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

201 DBMS_XMLTRANSLATIONS

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージの使用は推奨されていません。

DBMS_XMLTRANSLATIONSパッケージは、翻訳を実行して、文字列を各種言語で検索したり表示できるようにするインタフェースを提供します。

関連項目:
詳細は、『Oracle XML DB開発者ガイド』を参照してください。

この章では、次の項目について説明します。

- DBMS_XMLTRANSLATIONSの使用方法

- セキュリティ・モデル

- DBMS_XMLTRANSLATIONSサブプログラムの要約

DBMS_XMLTRANSLATIONSの使用方法

- セキュリティ・モデル

セキュリティ・モデル

DBMS_XMLTRANSLATIONSパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XMLTRANSLATIONSサブプログラムの要約

表201-1 DBMS_XMLSTOREパッケージのサブプログラム

メソッド

説明

DISABLETRANSLATIONプロシージャ

ベース・ドキュメントでセッションの言語値を無視して問合せまたは取得が行われるように、現行のセッションの変換を無効にします。

ENABLETRANSLATIONプロシージャ

現行のセッションで変換を有効にします。

EXTRACTXLIFFファンクションおよびプロシージャ

XMLTYPEまたはXDBリポジトリのリソースのいずれかから、XLIFF形式で変換を抽出します。

GETBASEDOCUMENTファンクション

すべての変換を含むベース・ドキュメントを戻します。

MERGEXLIFFファンクション

XMLTYPEまたはXDBリポジトリのリソースのいずれかへ、XLIFF形式で変換をマージします。

SETSOURCELANGファンクション

ソース言語を、指定したXPATHの特定の言語に設定します。

TRANSLATEXMLファンクション

指定した言語でドキュメントを戻します。

UPDATETRANSLATIONファンクション

指定したXPATHの特定の言語で変換を更新します。

DISABLETRANSLATIONプロシージャ

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このプロシージャは、ベース・ドキュメントでセッションの言語値を無視して問合せまたは取得が行われるように、現行セッションの変換を無効にします。

構文

DBMS_XMLTRANSLATIONS.DISABLETRANSLATION;

ENABLETRANSLATIONプロシージャ

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このプロシージャは、現行のセッションで変換を有効にします。この動作はデフォルトです。

構文

DBMS_XMLTRANSLATIONS.ENABLETRANSLATION;

EXTRACTXLIFFファンクションおよびプロシージャ

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このファンクションおよびプロシージャは、XMLTYPEまたはXDBリポジトリのリソースのいずれかから、XLIFF形式で変換を抽出します。

構文

DBMS_XMLTRANSLATIONS.EXTRACTXLIFF(
doc       IN  XMLTYPE,
xpath     IN  VARCHAR2,
namespace IN  VARCHAR2 := NULL)
RETURN XMLTYPE;

DBMS_XMLTRANSLATIONS.EXTRACTXLIFF(
abspath   IN  XMLTYPE,
xpath     IN  VARCHAR2,
namespace IN  VARCHAR2 := NULL)
RETURN XMLTYPE;

パラメータ

表201-2 EXTRACTXLIFFファンクションのパラメータ

パラメータ

説明

doc

XLIFFを抽出するXMLTYPE

xpath

変換を必要とする要素の位置を指定するXPATH。XPATHを指定しない場合は、ドキュメント全体が処理されます。

namespace

名前空間。

abspath

XLIFFを抽出するリソースの絶対パス。

戻り値

XLIFF形式の変換。

例

XMLTYPEからの変換の抽出

docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="fr">
Security Class Example - FR
</title>
<title xml:lang="es">
Security Class Example - ES
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

xpathを = '/securityClass/title'とします。EXTRACTXLIFFの出力は次のようになります。

<xliff version='1.1'>
<file original='' source-language='en' datatype='xml'>
<body>
<trans-unit id='/securityClass/title'>
<source>Security Class Example</source>
<alt-trans>
<target xml:lang='fr'>Security Class Example - FR</target>
<target xml:lang='es'>Security Class Example - ES</target>
</alt-trans>
</trans-unit>
</body>
</file>
</xliff>

リソースからの変換の抽出

リソース'/public/security.xml'が次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="es">
Security Class Example - ES
</title>
<title xml:lang="fr">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
<privlist>
<privilege name="privilege1"/>
<aggregatePrivilege name="iStorePOApprover">
<title>
iStore Purchase Order Approver
</title>
<privilegeRef name="is:privilege1"/>
<privilegeRef name="oa:submitPO"/>
<privilegeRef name="oa:privilege3"/>
</aggregatePrivilege>
<privilege name="privilege2">
<title xml:lang="en">
secondary privilege
</title>
<title xml:lang="fr" xdb:srclang="true">
secondary privilege - FR
</title>
<columnRef schema="APPS" table="PurchaseOrder" column="POId"/>
<columnRef schema="APPS" table="PurchaseOrder" column="Amount"/>
</privilege>
</privlist>
</securityClass>

XPATH = ''とすると、抽出されたXLIFFは、次のようになります。

<xliff version='1.1'>
<file original='/public/security.xml' source-language='en' datatype='xml'>
<body>
<trans-unit id='/securityClass/title'>
<source>Security Class Example</source>
<alt-trans>
<target xml:lang='fr'>Security Class Example - FR</target>
<target xml:lang='es'>Security Class Example - ES</target>
</alt-trans>
</trans-unit>
</body>
</file>
<file original='/public/security.xml' source-language='fr' datatype='xml'>
<body>
<trans-unit id='/securityClass/privilege[@name="privilege2"/title'>
<source>secondary privilege - FR</source>
<alt-trans>
<target xml:lang='en'>secondary privilege</target>
</alt-trans>
</trans-unit>
</body>
</file>
</xliff>

GETBASEDOCUMENTファンクション

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このファンクションは、すべての変換を含むベース・ドキュメントを戻します。

構文

DBMS_XMLTRANSLATIONS.GETBASEDOCUMENT(
doc    IN  XMLTYPE)
RETURN XMLTYPE;

パラメータ

表201-3 GETBASEDOCUMENTファンクションのパラメータ

パラメータ

説明

doc

入力するXMLTYPE。

戻り値

すべての変換があるベース・ドキュメントを含むXMLTYPE。

例

たとえば、docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="fr">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

前述のドキュメントでは、このサブプログラムは次を戻します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="fr">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

MERGEXLIFFファンクション

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このファンクションは、XMLTYPEまたはXDBリポジトリのリソースのいずれかへ、XLIFF形式で変換をマージします。

構文

DBMS_XMLTRANSLATIONS.MERGEXLIFF(
doc       IN  XMLTYPE,
xliff     IN  XMLTYPE)
RETURN XMLTYPE;

DBMS_XMLTRANSLATIONS.MERGEXLIFF(
xliff     IN  XMLTYPE);

パラメータ

表201-4 MERGEXLIFFファンクションおよびプロシージャのパラメータ

パラメータ

説明

doc

XLIFFをマージするXMLTYPE

xliff

XLIFF形式の変換

戻り値

'xpath'で'xliff'を'doc'にマージした結果。

例

変換のXMLTYPEへのマージ

次の入力するXMLTYPEについて検討します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="es">
Security Class Example - ES
</title>
<title xml:lang="fr">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
<privlist>
<privilege name="privilege1"/>
<aggregatePrivilege name="iStorePOApprover">
<title>
iStore Purchase Order Approver
</title>
<privilegeRef name="is:privilege1"/>
<privilegeRef name="oa:submitPO"/>
<privilegeRef name="oa:privilege3"/>
</aggregatePrivilege>
<privilege name="privilege2">
<title xml:lang="en">
secondary privilege
</title>
<title xml:lang="fr" xdb:srclang="true">
secondary privilege - FR
</title>
<columnRef schema="APPS" table="PurchaseOrder" column="POId"/>
<columnRef schema="APPS" table="PurchaseOrder" column="Amount"/>
</privilege>
</privlist>
</securityClass>

入力するXLIFFを次のようにします。

<xliff version='1.1'>
<file original='/public/security.xml' source-language='en' datatype='xml'>
<body>
<trans-unit id='/securityClass/title'>
<source>Security Class Example Modified</source>
<alt-trans>
<target xml:lang='fr'>Security Class Example Mod - FR</target>
<target xml:lang='es'>Security Class Example Mod - ES</target>
</alt-trans>
</trans-unit>
<trans-unit id='/securityClass/privilege[@name="privilege2"/title'>
<source>secondary privilege modified</source>
<alt-trans>
<target xml:lang='fr'>secondary privilege mod - FR</target>
</alt-trans>
</trans-unit>
</body>
</xliff>

マージの出力は次のようになります。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example Modified
</title>
<title xml:lang="es">
Security Class Example Mod - ES
</title>
<title xml:lang="fr">
Security Class Example Mod - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
<privlist>
<privilege name="privilege1"/>
<aggregatePrivilege name="iStorePOApprover">
<title>
iStore Purchase Order Approver
</title>
<privilegeRef name="is:privilege1"/>
<privilegeRef name="oa:submitPO"/>
<privilegeRef name="oa:privilege3"/>
</aggregatePrivilege>
<privilege name="privilege2">
<title xml:lang="en" xdb:srclang="true">
secondary privilege modified
</title>
<title xml:lang="fr">
secondary privilege mod - FR
</title>
<columnRef schema="APPS" table="PurchaseOrder" column="POId"/>
<columnRef schema="APPS" table="PurchaseOrder" column="Amount"/>
</privilege>
</privlist>
</securityClass>

XLIFF変換のリソースへのマージ

前述の例の入力されたドキュメントが'/public/security.xml'のリポジトリに格納された場合、前述のXLIFFのマージによって同じ効果が得られます。

SETSOURCELANGファンクション

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このファンクションは、ソース言語を、指定したXPATHの特定の言語に設定します。

構文

DBMS_XMLTRANSLATIONS.SETSOURCELANG (
doc       IN  XMLTYPE,
xpath     IN  VARCHAR2,
lang      IN  VARCHAR2,
namespace IN  VARCHAR2 := NULL)
RETURN XMLTYPE;

パラメータ

表201-5 SETSOURCELANGファンクションのパラメータ

パラメータ

説明

doc

ソース言語を設定するXMLTYPE。

xpath

ソース言語を設定するXPATH。

lang

ソース言語。

namespace

名前空間。

戻り値

更新されたドキュメント。

例

たとえば、docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="fr">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

次の文の場合、

setSourceLang ( doc, '/securityClass/title', 'fr' )

次のものを生成します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en">
Security Class Example
</title>
<title xml:lang="fr" xdb:srclang="true">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

TRANSLATEXMLファンクション

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このファンクションは、指定した言語でドキュメントを戻します。

構文

DBMS_XMLTRANSLATIONS.TRANSLATEXML(
doc    IN  XMLTYPE,
lang   IN  VARCHAR2)
RETURN XMLTYPE;

パラメータ

表201-6 TRANSLATEXMLファンクションのパラメータ

パラメータ

説明

doc

入力するXMLTYPE。

lang

言語。

戻り値

指定した言語のドキュメントを含むXMLTYPE。

例

たとえば、docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="fr">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

TRANSLATEXML (doc, 'fr')は次を戻します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="fr">
Security Class Example - FR
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

UPDATETRANSLATIONファンクション

注意:
Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

このファンクションは、指定したXPATHの特定の言語で変換を更新します。

構文

DBMS_XMLTRANSLATIONS.UPDATETRANSLATION(
doc       IN  XMLTYPE,
xpath     IN  VARCHAR2,
lang      IN  VARCHAR2,
value     IN  VARCHAR2,
namespace IN  VARCHAR2 := NULL)
RETURN XMLTYPE;

パラメータ

表201-7 UPDATETRANSLATIONファンクションのパラメータ

パラメータ

説明

doc

変換を更新するXMLTYPE。

xpath

変換を更新するXPATH。

lang

変換を更新する言語。

value

新しい変換。

namespace

名前空間。

戻り値

更新されたドキュメント。

例

次に例を示します。

updateTranslation ( doc, '/securityClass/title/text()', 'fr', 'Oracle' );

次のものを生成します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
xmlns:is="xmlns.oracle.com/iStore"
xmlns:oa="xmlns.oracle.com/OracleApps"
targetNamespace="xmlns.oracle.com/example">
<name>
securityClassExample
</name>
<title xml:lang="en" xdb:srclang="true">
Security Class Example
</title>
<title xml:lang="fr">
Oracle
</title>
<inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

202 DBMS_XPLAN

DBMS_XPLANパッケージによって、EXPLAIN PLANコマンドの出力を事前定義した複数の書式で表示する簡単な方法が提供されます。また、DBMS_XPLANパッケージを使用して、自動ワークロード・リポジトリ(AWR)またはSQLチューニング・セットに格納されている文の計画を表示することもできます。さらに、V$SQL_PLAN固定ビューおよびV$SQL_PLAN_STATISTICS_ALL固定ビューに格納されている情報に基づいてキャッシュしたSQLカーソルについて、SQL実行計画およびSQL実行ランタイム統計を表示することもできます。最後に、SQLプラン・ベースラインから計画を表示します。

関連項目:

- EXPLAIN PLANコマンド、AWR、およびSQLチューニング・セットの詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

- V$SQL_PLAN固定ビューおよびV$SQL_PLAN_STATISTICS固定ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

この章では、次の項目について説明します。

- DBMS_XPLANの使用方法

- 概要

- セキュリティ・モデル

- 例

- DBMS_XPLANサブプログラムの要約

DBMS_XPLANの使用方法

- 概要

- セキュリティ・モデル

- 例

概要

DBMS_XPLANパッケージでは、次の5つのテーブル・ファンクションを提供しています。

- DISPLAY: PLAN TABLEの内容を書式設定して表示します。

- DISPLAY_AWR: AWR内に格納されているSQL文について、その実行計画内容を書式設定して表示します。

- DISPLAY_CURSOR: ロードした任意のカーソルについて、その実行計画内容を書式設定して表示します。

- DISPLAY_SQL_PLAN_BASELINE: SQLハンドルによって識別されるSQL文の1つ以上の実行計画を表示します。

- DISPLAY_SQLSET: SQLチューニング・セット内に格納されている文について、その実行計画内容を書式設定して表示します。

セキュリティ・モデル

このパッケージは、パッケージ所有者(SYS)ではなく、コール・ユーザーの権限で実行されます。テーブル・ファンクションDISPLAY_CURSORを使用するには、V$SQL_PLAN、V$SESSIONおよびV$SQL_PLAN_STATISTICS_ALL.の各固定ビューに対するSELECTまたはREAD権限が必要です。

DISPLAY_AWRファンクションを使用する場合、ユーザーにはDBA_HIST_SQL_PLAN、DBA_HIST_SQLTEXTおよびV$DATABASEに対するSELECTまたはREAD権限が必要です。

DISPLAY_SQLSETファンクションを使用する場合、ユーザーにはALL_SQLSET_STATEMENTSおよびALL_SQLSET_PLANSに対するSELECTまたはREAD権限が必要です。

DISPLAY_SQL_PLAN_BASELINEファンクションを使用する場合、ユーザーには、ユーザーが計画を取得しようと試みるSQL文を実行する権限に加えて、DBA_SQL_PLAN_BASELINESに対するSELECTまたはREAD権限が必要です。

これらの権限は、SELECT_CATALOGロールの一部として自動的に付与されます。

例

DBMS_XPLAN.DISPLAYを使用したPLAN TABLEの表示

SELECT文でEXPLAIN PLANコマンドを実行します。

EXPLAIN PLAN FOR
SELECT * FROM emp e, dept d
WHERE e.deptno = d.deptno
AND e.ename='benoit';

DBMS_XPLAN.DISPLAYテーブル・ファンクションを使用して、計画を表示します。

SET LINESIZE 130
SET PAGESIZE 0
SELECT * FROM table(DBMS_XPLAN.DISPLAY);

この問合せによって次の出力が作成されます。

Plan hash value: 3693697075
---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |    57 |     6  (34)| 00:00:01 |
|*  1 |  HASH JOIN         |      |     1 |    57 |     6  (34)| 00:00:01 |
|*  2 |   TABLE ACCESS FULL| EMP  |     1 |    37 |     3  (34)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| DEPT |     4 |    80 |     3  (34)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("E"."DEPTNO"="D"."DEPTNO")
2 - filter("E"."ENAME"='benoit')

15 rows selected.

DBMS_XPLAN.DISPLAY_CURSORを使用したカーソル実行計画の表示

デフォルトでは、テーブル・ファンクションDISPLAY_CURSORによって、セッションで最後に実行されたSQL文の実行計画が書式設定されます。次に例を示します。

SELECT ename  FROM  emp e, dept d
WHERE   e.deptno = d.deptno
AND   e.empno=7369;

ENAME
----------
SMITH

セッションで最後に実行された文の実行計画を表示するには、次のように入力します。

SET PAGESIZE 0
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR);

この問合せによって次の出力が作成されます。

Plan hash value: 3693697075, SQL hash value: 2096952573, child number: 0
------------------------------------------------------------------
SELECT ename FROM emp e, dept d WHERE e.deptno = d.deptno
AND e.empno=7369

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |       |       |            |          |
|*  1 |  HASH JOIN         |      |     1 |    16 |     6  (34)| 00:00:01 |
|*  2 |   TABLE ACCESS FULL| EMP  |     1 |    13 |     3  (34)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| DEPT |     4 |    12 |     3  (34)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("E"."DEPTNO"="D"."DEPTNO")
2 - filter("E"."EMPNO"=7369)

21 rows selected.

テーブル・ファンクションDISPLAY_CURSORを使用して、カーソル・キャッシュに格納されている任意のロード済カーソルの実行計画を表示することもできます。その場合、子カーソルへの参照をテーブル・ファンクションに指定する必要があります。また、この指定には、文のSQL IDと子番号(オプション)も含まれます。

次のように、簡単に判別できるコメントを付けて問合せを実行します。

SELECT /* TOTO */ ename, dname
FROM dept d join emp e USING (deptno);

前の文のsql_idとchild_numberを取得します。

SELECT sql_id, child_number
FROM v$sql
WHERE sql_text LIKE '%TOTO%';

SQL_ID         CHILD_NUMBER
----------     -----------------------------
gwp663cqh5qbf   0

カーソルの実行計画を表示します。

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('gwp663cqh5qbf',0));

Plan hash value: 3693697075, SQL ID: gwp663cqh5qbf, child number: 0
--------------------------------------------------------
SELECT /* TOTO */ ename, dname
FROM dept d JOIN emp e USING (deptno);

----------------------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |       |       |     7 (100)|          |
|   1 |  SORT GROUP BY      |      |     4 |    64 |     7  (43)| 00:00:01 |
|*  2 |   HASH JOIN         |      |    14 |   224 |     6  (34)| 00:00:01 |
|   3 |    TABLE ACCESS FULL| DEPT |     4 |    44 |     3  (34)| 00:00:01 |
|   4 |    TABLE ACCESS FULL| EMP  |    14 |    70 |     3  (34)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("E"."DEPTNO"="D"."DEPTNO")

sql_idとchild_numberのペアを取得する問合せおよび計画を表示するための問合せの2つの問合せを発行するかわりに、1つの問合せにまとめることもできます。

文字列'TOTO'に一致するすべてのカーソルの実行計画を表示します。

SELECT t.*
FROM v$sql s, table(DBMS_XPLAN.DISPLAY_CURSOR(s.sql_id, s.child_number)) t WHERE sql_text LIKE '%TOTO%';

パラレル情報を含むPLAN TABLEの表示

デフォルトでは、DISPLAYおよびDISPLAY_CURSORテーブル・ファンクションでレポートされるのは関連情報のみです。「DBMS_XPLAN.DISPLAYを使用したPLAN TABLEの表示」で示した問合せは、パラレルで実行されていません。したがって、計画のパラレル化に関連する情報はレポートされません。次の例のように、問合せがパラレルで実行された場合のみ、パラレル情報がレポートされます。

ALTER TABLE emp PARALLEL;
EXPLAIN PLAN for
SELECT * FROM emp e, dept d
WHERE e.deptno = d.deptno
AND e.ename    ='hermann'
ORDER BY e.empno;

DBMS_XPLAN.DISPLAYテーブル・ファンクションを使用して、計画を表示します。

SET LINESIZE 130
SET PAGESIZE 0
SELECT * FROM table(DBMS_XPLAN.DISPLAY);
Plan hash value: 3693697345

-------------------------------------------------------------------------------------------------------------
| Id | Operation          | Name    | Rows | Bytes | Cost (%CPU)| Time     | TQ    |INOUT |PQ Distrib   |
-------------------------------------------------------------------------------------------------------------
| 0  | SELECT STATEMENT   |         | 1    | 117   | 6 (50)     | 00:00:01 |       |      |             |
| 1  | PX COORDINATOR     |         |      |       |            |          |       |      |             |
| 2  | PX SEND QC (ORDER) |:TQ10003 | 1    | 117   | 6 (50)     | 00:00:01 | Q1,03 | P->S | QC (ORDER)  |
| 3  | SORT ORDER BY      |         | 1    | 117   | 6 (50)     | 00:00:01 | Q1,03 | PCWP |             |
| 4  | PX RECEIVE         |         | 1    | 117   | 5 (40)     | 00:00:01 | Q1,03 | PCWP |             |
| 5  | PX SEND RANGE      |:TQ10002 | 1    | 117   | 5 (40)     | 00:00:01 | Q1,02 | P->P | RANGE       |
|* 6 | HASH JOIN          |         | 1    | 117   | 5 (40)     | 00:00:01 | Q1,02 | PCWP |             |
| 7  | PX RECEIVE         |         | 1    | 87    | 2 (50)     | 00:00:01 | Q1,02 | PCWP |             |
| 8  | PX SEND HASH       |:TQ10001 | 1    | 87    | 2 (50)     | 00:00:01 | Q1,01 | P->P | HASH        |
| 9  | PX BLOCK ITERATOR  |         | 1    | 87    | 2 (50)     | 00:00:01 | Q1,01 | PCWC |             |
|* 10| TABLE ACCESS FULL  | EMP     | 1    | 87    | 2 (50)     | 00:00:01 | Q1,01 | PCWP |             |
| 11 | BUFFER SORT        |         |      |       |            |          | Q1,02 | PCWC |             |
| 12 | PX RECEIVE         |         | 4    | 120   | 3 (34)     | 00:00:01 | Q1,02 | PCWP |             |
| 13 | PX SEND HASH       |:TQ10000 | 4    | 120   | 3 (34)     | 00:00:01 |       | S->P | HASH        |
| 14 | TABLE ACCESS FULL  | DEPT    | 4    | 120   | 3 (34)     | 00:00:01 |       |      |             |
-------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - access("E"."DEPTNO"="D"."DEPTNO")
10 - filter("E"."ENAME"='hermann')
---------------------------------------------------

問合せがパラレルの場合、並列性に関連する情報として、テーブル・キュー番号(TQ列)、テーブル・キュー・タイプ(INOUT)およびテーブル・キュー配布方式(PQ Distrib)がレポートされます。

デフォルトでは、PLAN TABLE内の複数の計画が、DISPLAYテーブル・ファンクションに渡されたstatement_idパラメータ(デフォルト値はNULL)と一致した場合に表示されるのは、最新のEXPLAIN PLANコマンドに対応する計画のみです。したがって、各EXPLAIN PLANの後で、PLAN TABLEをパージする必要はありません。ただし、DISPLAYテーブル・ファンクションの最適な実行パフォーマンスを確保するため、PLAN TABLEを定期的にパージする必要があります。PLAN TABLEが作成されていない場合は、グローバル一時表を使用して個々のユーザーの計画情報が格納され、その内容がセッションの存続期間中保持されます。グローバル一時表の内容は切り捨てることができないことに注意してください。

使用しやすくするため、DISPLAYテーブル・ファンクション以外にビューを定義し、そのビューを使用して、EXPLAIN PLANコマンドの出力を次のように表示できます。

最新のEXPLAIN PLANを表示するためのビューの使用方法

# define plan view
CREATE VIEW PLAN AS SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

# display the output of the last explain plan command
SELECT * FROM PLAN;

DBMS_XPLANサブプログラムの要約

表202-1 DBMS_XPLANパッケージのサブプログラム

サブプログラム

説明

DIFF_PLANファンクション

計画を比較します。

DISPLAYファンクション

PLAN TABLEの内容を表示します。

DISPLAY_AWRファンクション

AWR内に格納されている実行計画の内容を表示します。

DISPLAY_CURSORファンクション

カーソル・キャッシュ内の任意のカーソルの実行計画を表示します。

DISPLAY_PLANファンクション

CLOB出力タイプの様々な形式でPLAN TABLEの内容を表示します。

DISPLAY_SQL_PLAN_BASELINEファンクション

SQLプラン・ベースラインの指定したSQLハンドルの1つ以上の実行計画を表示します。

DISPLAY_SQLSETファンクション

SQLチューニング・セットに格納されている指定した文の実行計画を表示します。

DIFF_PLANファンクション

このファンクションは計画を比較します。

構文

DBMS_XPLAN.DIFF_PLAN(
plan1    IN   SPC_SRC,
plan2    IN   SPC_SRC)
RETURN VARCHAR2;

パラメータ

表202-2 DIFF_PLANファンクションのパラメータ

パラメータ

説明

plan_1

第1計画

plan_2

第2計画

DISPLAYファンクション

このテーブル・ファンクションは、PLAN TABLEの内容を表示します。

また、この表の列の名前がPLAN TABLE(統計情報が含まれている場合はV$SQL_PLAN_STATISTICS_ALL)の列の名前と同じである場合にかぎり、このテーブル・ファンクションを使用して、表に格納されている計画を(統計情報を含めて、または統計情報を含めずに)表示できます。指定した表に述語を適用して、表示する計画の行を選択できます。

構文

DBMS_XPLAN.DISPLAY(
table_name    IN  VARCHAR2  DEFAULT 'PLAN_TABLE',
statement_id  IN  VARCHAR2  DEFAULT  NULL,
format        IN  VARCHAR2  DEFAULT  'TYPICAL',
filter_preds  IN  VARCHAR2 DEFAULT NULL);

パラメータ

表202-3 DISPLAYファンクションのパラメータ

パラメータ

説明

table_name

計画が格納されている表の名前を指定します。このパラメータのデフォルトはPLAN_TABLE,で、これはEXPLAIN PLANコマンドに対するデフォルトのPLAN TABLEです。NULLが指定された場合も、デフォルトのPLAN_TABLEになります。

statement_id

表示する計画のstatement_idを指定します。デフォルトはNULL(EXPLAIN PLANコマンドがset statement_id句なしで実行された場合のデフォルト値)です。statement_idを指定しない場合は、説明された文のうちで直近のものについて、計画が表示されます。

format

計画の詳細レベルを制御します。次の4つの値を指定できます。

- BASIC: 計画の最小限の情報として、操作ID、操作名および操作オプションを表示します。

- TYPICAL: これがデフォルトです。計画に関する最も一般的な情報(操作ID、操作名、操作オプション、行数、バイト数およびオプティマイザ・コスト)が表示されます。プルーニング情報、パラレル情報および述語情報は、適用可能な場合にのみ表示されます。PROJECTION、ALIASおよびREMOTE SQLの情報のみが除外されます(説明の後半を参照)。

- SERIAL: TYPICALと同じですが、計画がパラレルで実行される場合でもパラレル情報は表示されません。

- ALL: 最高のユーザー・レベルです。TYPICALレベルで表示される情報に加えて、追加情報(PROJECTION、ALIAS、および分散処理が行われる場合はREMOTE SQLに関する情報)が表示されます。

表示出力をより細かく制御するために、前述の3つの標準的なformatオプションに次のキーワードを追加して、デフォルトの動作をカスタマイズできます。各キーワードは、PLAN TABLEの列の論理グループ(PARTITIONなど)または基となるPLAN TABLEの出力への論理的追加(PREDICATEなど)を表します。フォーマット・キーワードは、カンマまたはスペースで区切る必要があります。

- ROWS - 関連がある場合は、オプティマイザで推定された行数を表示します。

- BYTES - 関連がある場合は、オプティマイザで推定されたバイト数を表示します。

- COST - 関連がある場合は、オプティマイザ・コスト情報を表示します。

- PARTITION - 関連がある場合は、パーティション・プルーニング情報を表示します。

- PARALLEL - 関連がある場合は、PX情報(配布方式およびテーブル・キュー情報)を表示します。

- PREDICATE - 関連がある場合は、predicateセクションを表示します。

- PROJECTION - 関連がある場合は、projectionセクションを表示します。

- ALIAS - 関連がある場合は、Query Block Name/Object Aliasセクションを表示します。

- REMOTE - 関連がある場合は、分散問合せ(シリアル分散およびリモートSQLを使用したリモート問合せなど)に関する情報を表示します。

- NOTE - 関連がある場合は、EXPLAIN PLANのnoteセクションを表示します。

フォーマット・キーワードに-という接頭辞を付けて、指定した情報を除外することができます。たとえば、'-PROJECTION'と指定すると、投影情報が除外されます。

目的のPLAN TABLE(table_nameパラメータを参照)に計画の統計情報の列も格納する場合(PLAN TABLEがV$SQL_PLAN_STATISTICS_ALL固定ビューの内容を取得するために使用される表である場合など)は、追加のフォーマット・キーワードを使用して、DISPLAYファンクションの使用時に表示される統計情報のクラスを指定できます。追加可能なフォーマット・キーワードは、IOSTATS、MEMSTATS、ALLSTATSおよびLASTです(これら4つのキーワードの詳細は、「DISPLAY_CURSORファンクション」または「DISPLAY_SQLSETファンクション」を参照してください)。

filter_preds

計画を格納する表から選択される行のセットを制限するSQLフィルタ述語。値がNULL(デフォルト値)の場合は、最後に実行されたEXPLAIN PLANに応じて計画が表示されます。たとえば、filter_preds=>'plan_id = 10'などです。

計画を格納する表のすべての列を参照できます。また、副問合せ、ファンクション・コールなどのすべてのSQL構文(「使用上の注意」の「警告」を参照)を格納できます。

使用上の注意

formatパラメータのバリエーションの例を次に示します。

- projectionおよびnoteセクションを除くすべてを表示する場合は、'ALL -PROJECTION -NOTE'を使用します。

- TYPICALフォーマットに(TYPICALフォーマットでは通常除外されている)projectionセクションを追加して表示する場合は、'TYPICAL PROJECTION'を使用します。TYPICALはデフォルトであるため、'PROJECTION'を使用するのみで同様に表示できます。

- TYPICALフォーマットを使用して、オプティマイザ・コスト、推定バイト数およびpredicateセクションを除外して表示する場合は、'-BYTES -COST -PREDICATE'を使用します。

- BASICレベルの情報にオプティマイザによる推定バイト数を追加して表示する場合は、'BASIC ROWS'を使用します。

警告:

filter_predsパラメータを公開することによって、アプリケーションがSQLインジェクションの影響を受ける可能性があるため、アプリケーション開発者は、十分に検討した後でのみこのパラメータをエンド・ユーザーに公開してください。実際、filter_predsを使用すると、すべての表の参照、またはテーブル・ファンクションを起動するデータベース・ユーザーが権限を持つすべてのサーバー・ファンクションの実行を行うことができます。

例

PLAN TABLEに格納されている最新のEXPLAIN PLANコマンドの結果を表示するには、次のように入力します。

SELECT * FROM table (DBMS_XPLAN.DISPLAY);

デフォルトのPLAN TABLE以外のPLAN TABLE(例: "my_plan_table")から表示するには、次のように入力します。

SELECT * FROM table (DBMS_XPLAN.DISPLAY('my_plan_table'));

最小限の計画情報を表示するには、次のように入力します。

SELECT * FROM table (DBMS_XPLAN.DISPLAY('plan_table', null, 'basic'));

fooで識別される文(statement_id='foo'など)の計画を表示するには、次のように入力します。

SELECT * FROM table (DBMS_XPLAN.DISPLAY('plan_table', 'foo'));

DISPLAY_AWRファンクション

このテーブル・ファンクションは、AWR内に格納されている実行計画の内容を表示します。

構文

DBMS_XPLAN.DISPLAY_AWR(
sql_id            IN      VARCHAR2,
plan_hash_value   IN      NUMBER DEFAULT NULL,
db_id             IN      NUMBER DEFAULT NULL,
format            IN      VARCHAR2 DEFAULT TYPICAL);

パラメータ

表202-4 DISPLAY_AWRテーブル・ファンクションのパラメータ

パラメータ

説明

sql_id

SQL文のSQL_IDを指定します。DBA_HIST_SQLTEXT内の列SQL_IDを問い合せることによって、目的のSQL文に対する適切な値を取り出せます。

plan_hash_value

SQL文のPLAN_HASH_VALUEを指定します。このパラメータはオプションです。省略すると、このテーブル・ファンクションは、指定のSQL_IDに対する格納済のすべての実行計画を戻します。

db_id

SQL_IDで識別されるSQL文の計画を表示する対象となるdatabase_idを指定します。指定しない場合は、V$DATABASEに示されるようなローカル・データベースのdatabase_idが使用されます。

format

計画の詳細レベルを制御します。次の4つの値を指定できます。

- BASIC: 計画の最小限の情報として、操作ID、操作名および操作オプションを表示します。

- TYPICAL: これがデフォルトです。計画に関する最も一般的な情報(操作ID、操作名、操作オプション、行数、バイト数およびオプティマイザ・コスト)が表示されます。プルーニング情報、パラレル情報および述語情報は、適用可能な場合にのみ表示されます。PROJECTION、ALIASおよびREMOTE SQLの情報のみが除外されます(説明の後半を参照)。

- SERIAL: TYPICALと同じですが、計画がパラレルで実行される場合でもパラレル情報は表示されません。

- ALL: 最高のユーザー・レベルです。TYPICALレベルで表示される情報に加えて、追加情報(PROJECTION、ALIAS、および分散処理が行われる場合はREMOTE SQLに関する情報)が表示されます。

表示出力をより細かく制御するために、前述の3つの標準的なformatオプションに次のキーワードを追加して、デフォルトの動作をカスタマイズできます。各キーワードは、PLAN TABLEの列の論理グループ(PARTITIONなど)または基となるPLAN TABLEの出力への論理的追加(PREDICATEなど)を表します。フォーマット・キーワードは、カンマまたはスペースで区切る必要があります。

- ROWS - 関連がある場合は、オプティマイザで推定された行数を表示します。

- BYTES - 関連がある場合は、オプティマイザで推定されたバイト数を表示します。

- COST - 関連がある場合は、オプティマイザ・コスト情報を表示します。

- PARTITION - 関連がある場合は、パーティション・プルーニング情報を表示します。

- PARALLEL - 関連がある場合は、PX情報(配布方式およびテーブル・キュー情報)を表示します。

- PREDICATE - 関連がある場合は、predicateセクションを表示します。

- PROJECTION - 関連がある場合は、projectionセクションを表示します。

- ALIAS - 関連がある場合は、Query Block Name/Object Aliasセクションを表示します。

- REMOTE - 関連がある場合は、分散問合せ(シリアル分散およびリモートSQLを使用したリモート問合せなど)に関する情報を表示します。

- NOTE - 関連がある場合は、EXPLAIN PLANのnoteセクションを表示します。

フォーマット・キーワードに-という接頭辞を付けて、指定した情報を除外することができます。たとえば、'-PROJECTION'と指定すると、投影情報が除外されます。

使用上の注意

- DISPLAY_AWRファンクションを使用する場合、コール・ユーザーにはDBA_HIST_SQL_PLAN、DBA_HIST_SQLTEXTおよびV$DATABASEに対するSELECTまたはREAD権限が必要です。権限がない場合は、エラー・メッセージが表示されます。

- formatパラメータのバリエーションの例を次に示します。

- projectionおよびnoteセクションを除くすべてを表示する場合は、'ALL -PROJECTION -NOTE'を使用します。

- TYPICALフォーマットに(TYPICALフォーマットでは通常除外されている)projectionセクションを追加して表示する場合は、'TYPICAL PROJECTION'を使用します。TYPICALはデフォルトであるため、'PROJECTION'を使用するのみで同様に表示できます。

- TYPICALフォーマットを使用して、オプティマイザ・コスト、推定バイト数およびpredicateセクションを除外して表示する場合は、'-BYTES -COST -PREDICATE'を使用します。

- BASICレベルの情報にオプティマイザによる推定バイト数を追加して表示する場合は、'BASIC ROWS'を使用します。

例

SQL ID 'atfwcg8anrykp'に関連付けられた別の実行計画を表示するには、次のように入力します。

SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR('atfwcg8anrykp'));

文字列'TOTO'を含む、格納されているすべてのSQL文の実行計画をすべて表示するには、次のように入力します。

SELECT tf.* FROM DBA_HIST_SQLTEXT ht, table
(DBMS_XPLAN.DISPLAY_AWR(ht.sql_id,null, null,  'ALL' )) tf
WHERE ht.sql_text like '%TOTO%';

DISPLAY_CURSORファンクション

このテーブル・ファンクションは、カーソル・キャッシュにロードされている任意のカーソルの実行計画を表示します。実行計画に加えて、様々な計画統計(I/O、メモリー、タイミングなど)をレポートできます(V$SQL_PLAN_STATISTICS_ALL VIEWSに基づく)。

構文

DBMS_XPLAN.DISPLAY_CURSOR(
sql_id            IN  VARCHAR2  DEFAULT  NULL,
cursor_child_no   IN  NUMBER    DEFAULT  0,
format            IN  VARCHAR2  DEFAULT  'TYPICAL');

パラメータ

表202-5 DISPLAY_CURSORファンクションのパラメータ

パラメータ

説明

sql_id

カーソル・キャッシュ内のSQL文のSQL_IDを指定します。V$SQLまたはV$SQLAREA内の列SQL_IDに問い合せることによって、適切な値を取り出せます。また、V$SESSIONから特定セッションに対する列PREV_SQL_IDを選択することもできます。このパラメータのデフォルトはNULLで、この場合、セッションで最後に実行されたカーソルが表示されます。

cursor_child_no

表示するカーソルの子番号。指定しない場合は、指定のsql_idパラメータに一致するすべてのカーソルの実行計画が表示されます。child_numberは、sql_idが指定されている場合にのみ指定できます。

format

計画の詳細レベルを制御します。次の5つの値を受け入れます。

- BASIC: 計画の最小限の情報として、操作ID、操作名および操作オプションを表示します。

- TYPICAL: これがデフォルトです。計画に関する最も一般的な情報(操作ID、操作名、操作オプション、行数、バイト数およびオプティマイザ・コスト)が表示されます。プルーニング情報、パラレル情報および述語情報は、適用可能な場合にのみ表示されます。PROJECTION、ALIASおよびREMOTE SQLの情報のみが除外されます(説明の後半を参照)。

- SERIAL: TYPICALと同じですが、計画がパラレルで実行される場合でもパラレル情報は表示されません。

- ALL: 最高のユーザー・レベルです。TYPICALレベルで表示される情報に加えて、追加情報(PROJECTION、ALIAS、および分散処理が行われる場合はREMOTE SQLに関する情報)が表示されます。

- ADAPTIVE:
- 最終計画を表示します。実行が終了していない場合は、現在の計画を表示します。この項では、ネステッド・ループ結合からハッシュ結合への切替えなどの計画に影響するランタイム最適化についての注記をあげています。

- 計画の系統。このセクションでは、自動再最適化のために以前に実行された計画を示しています。また、動的計画のために計画が変更された場合には、デフォルト計画も示しています。

- 推奨される計画。レポート作成モードでは、計画は表示された実行統計に基づいて選択されます。自動再最適化の推奨計画を表示するには、子カーソルで収集されたオプティマイザ調整を使用して問合せを再コンパイルする必要があります。動的計画に推奨計画を表示する場合、これは必要ありません。

- 動的計画。これは、オプティマイザにより選択されたデフォルト計画とは異なる計画の部分を要約したものです。

表示出力をより細かく制御するために、前述の3つの標準的なformatオプションに次のキーワードを追加して、デフォルトの動作をカスタマイズできます。各キーワードは、PLAN TABLEの列の論理グループ(PARTITIONなど)または基となるPLAN TABLEの出力への論理的追加(PREDICATEなど)を表します。

フォーマット・キーワードは、カンマまたはスペースで区切る必要があります。

- ROWS - 関連がある場合は、オプティマイザで推定された行数を表示します。

- BYTES - 関連がある場合は、オプティマイザで推定されたバイト数を表示します。

- COST - 関連がある場合は、オプティマイザ・コスト情報を表示します。

- PARTITION - 関連がある場合は、パーティション・プルーニング情報を表示します。

- PARALLEL - 関連がある場合は、PX情報(配布方式およびテーブル・キュー情報)を表示します。

- PREDICATE - 関連がある場合は、predicateセクションを表示します。

- PROJECTION - 関連がある場合は、projectionセクションを表示します。

- ALIAS - 関連がある場合は、Query Block Name/Object Aliasセクションを表示します。

- REMOTE - 関連がある場合は、分散問合せ(シリアル分散およびリモートSQLを使用したリモート問合せなど)に関する情報を表示します。

- NOTE - 関連がある場合は、EXPLAIN PLANのnoteセクションを表示します。

- IOSTATS - (gather_plan_statisticsヒントを使用するか、またはstatistics_levelパラメータをALLに設定することによって)SQL文の実行時に基本的な計画の統計情報が収集されるとすると、このフォーマットによって、カーソルのALLの実行に対する(または後述するLASTの実行のみに対する)IO統計情報が表示されます。

- MEMSTATS - PGAメモリー管理が有効化されている(pga_aggregate_targetパラメータが0(ゼロ)以外の値に設定されている)とすると、このフォーマットによって、メモリー管理の統計情報(演算子の実行モード、メモリー使用量、ディスクに書き出されるバイト数など)を表示できます。これらの統計情報は、メモリーが集中的に使用される操作(ハッシュ結合、ソート、一部のビットマップ演算子など)にのみ適用されます。

- ALLSTATS - 'IOSTATS MEMSTATS'のショートカット。

- LAST - デフォルトでは、カーソルのすべての実行に対して計画の統計情報が表示されます。LASTキーワードを指定すると、最後の実行に対する統計情報のみを表示できます。

次の2つのフォーマットは非推奨となっていますが、下位互換性を維持する目的でサポートされています。

- RUNSTATS_TOT - IOSTATSと同じです。指定したカーソルのすべての実行に対してIO統計情報を表示します。

- RUNSTATS_LAST - IOSTATS LASTと同じです。カーソルの最後の実行に対するランタイム統計を表示します。

フォーマット・キーワードに-という接頭辞を付けて、指定した情報を除外することができます。たとえば、'-PROJECTION'と指定すると、投影情報が除外されます。

使用上の注意

- DISPLAY_CURSOR機能を使用する場合、コール・ユーザーには、固定ビューV$SQL_PLAN_STATISTICS_ALL、V$SQLおよびV$SQL_PLANに対するSELECTまたはREAD権限が必要です。権限がない場合は、エラー・メッセージが表示されます。

- formatパラメータのバリエーションの例を次に示します。

- projectionおよびnoteセクションを除くすべてを表示する場合は、'ALL -PROJECTION -NOTE'を使用します。

- TYPICALフォーマットに(TYPICALフォーマットでは通常除外されている)projectionセクションを追加して表示する場合は、'TYPICAL PROJECTION'を使用します。TYPICALはデフォルトであるため、'PROJECTION'を使用するのみで同様に表示できます。

- TYPICALフォーマットを使用して、オプティマイザ・コスト、推定バイト数およびpredicateセクションを除外して表示する場合は、'-BYTES -COST -PREDICATE'を使用します。

- BASICレベルの情報にオプティマイザによる推定バイト数を追加して表示する場合は、'BASIC ROWS'を使用します。

例

現行セッションで最後に実行されたSQL文の実行計画を表示するには、次のように入力します。

SELECT * FROM table (
DBMS_XPLAN.DISPLAY_CURSOR);

SQL ID 'atfwcg8anrykp'に関連付けられたすべての子の実行計画を表示するには、次のように入力します。

SELECT * FROM table (
DBMS_XPLAN.DISPLAY_CURSOR('atfwcg8anrykp'));

前の文中に指定されているカーソルに対するランタイム統計を表示するには、次のように入力します。

SELECT * FROM table (
DBMS_XPLAN.DISPLAY_CURSOR('atfwcg8anrykp', NULL, 'ALLSTATS LAST');

DISPLAY_PLANファンクション

このテーブル・ファンクションは、CLOB出力タイプの様々な形式でPLAN TABLEの内容を表示します。

構文

DBMS_XPLAN.DISPLAY_PLAN (
table_name       IN    VARCHAR2   DEFAULT 'PLAN_TABLE',
statement_id     IN    VARCHAR2   DEFAULT NULL,
format           IN    VARCHAR2   DEFAULT 'TYPICAL',
filter_preds     IN    VARCHAR2   DEFAULT NULL,
type             IN    VARCHAR2   DEFAULT 'TEXT')
RETURN CLOB;

パラメータ

表202-6 DISPLAY_PLANファンクションのパラメータ

パラメータ

説明

table_name

計画が格納されている表の名前を指定します。このパラメータのデフォルトはPLAN_TABLE,で、これはEXPLAIN PLANコマンドに対するデフォルトのPLAN TABLEです。NULLが指定された場合も、デフォルトのPLAN_TABLEになります。

statement_id

表示する計画のstatement_idを指定します。デフォルトはNULL(EXPLAIN PLANコマンドがset statement_id句なしで実行された場合のデフォルト値)です。statement_idを指定しない場合は、説明された文のうちで直近のものについて、計画が表示されます。

filter_preds

計画を格納する表から選択される行のセットを制限するSQLフィルタ述語。値がNULL(デフォルト値)の場合は、最後に実行されたEXPLAIN PLANに応じて計画が表示されます。たとえば、filter_preds=>'plan_id = 10'などです。

計画を格納する表のすべての列を参照できます。また、副問合せ、ファンクション・コールなどのすべてのSQL構文(「使用上の注意」の「警告」を参照)を格納できます。

format

計画の詳細レベルを制御します。次の5つの値を受け入れます。

- BASIC: 計画の最小限の情報として、操作ID、操作名および操作オプションを表示します。

- TYPICAL: これがデフォルトです。計画に関する最も一般的な情報(操作ID、操作名、操作オプション、行数、バイト数およびオプティマイザ・コスト)が表示されます。プルーニング情報、パラレル情報および述語情報は、適用可能な場合にのみ表示されます。PROJECTION、ALIASおよびREMOTE SQLの情報のみが除外されます(説明の後半を参照)。

- SERIAL: TYPICALと同じですが、計画がパラレルで実行される場合でもパラレル情報は表示されません。

- ALL: 最高のユーザー・レベルです。TYPICALレベルで表示される情報に加えて、追加情報(PROJECTION、ALIAS、および分散処理が行われる場合はREMOTE SQLに関する情報)が表示されます。

- ADAPTIVE: デフォルト計画を動的サブ計画ごとに(規定されている場合)表示します。
- 置換される可能性のある元の行ソース、およびそれを置換する行ソースを示したリスト

- アウトライン表示がフォーマット引数で指定されている場合は、動的サブ計画のオプション別にヒントが表示されます。

表示出力をより細かく制御するために、前述の3つの標準的なformatオプションに次のキーワードを追加して、デフォルトの動作をカスタマイズできます。各キーワードは、PLAN TABLEの列の論理グループ(PARTITIONなど)または基となるPLAN TABLEの出力への論理的追加(PREDICATEなど)を表します。フォーマット・キーワードは、カンマまたはスペースで区切る必要があります。

- ROWS - 関連がある場合は、オプティマイザで推定された行数を表示します。

- BYTES - 関連がある場合は、オプティマイザで推定されたバイト数を表示します。

- COST - 関連がある場合は、オプティマイザ・コスト情報を表示します。

- PARTITION - 関連がある場合は、パーティション・プルーニング情報を表示します。

- PARALLEL - 関連がある場合は、PX情報(配布方式およびテーブル・キュー情報)を表示します。

- PREDICATE - 関連がある場合は、predicateセクションを表示します。

- PROJECTION - 関連がある場合は、projectionセクションを表示します。

- ALIAS - 関連がある場合は、Query Block Name/Object Aliasセクションを表示します。

- REMOTE - 関連がある場合は、分散問合せ(シリアル分散およびリモートSQLを使用したリモート問合せなど)に関する情報を表示します。

- NOTE - 関連がある場合は、EXPLAIN PLANのnoteセクションを表示します。

フォーマット・キーワードに-という接頭辞を付けて、指定した情報を除外することができます。たとえば、'-PROJECTION'と指定すると、投影情報が除外されます。

目的のPLAN TABLE(table_nameパラメータを参照)に計画の統計情報の列も格納する場合(PLAN TABLEがV$SQL_PLAN_STATISTICS_ALL固定ビューの内容を取得するために使用される表である場合など)は、追加のフォーマット・キーワードを使用して、DISPLAYファンクションの使用時に表示される統計情報のクラスを指定できます。追加可能なフォーマット・キーワードは、IOSTATS、MEMSTATS、ALLSTATSおよびLASTです(これら4つのキーワードの詳細は、「DISPLAY_CURSORファンクション」または「DISPLAY_SQLSETファンクション」を参照してください)。

type

出力タイプは次のいずれかです。'TEXT'、'ACTIVE'、'HTML'または'XML'(ACTIVEタイプに関する「使用上の注意」を参照) '

戻り値

要求されたレポートをCLOBとして戻します。

使用上の注意

アクティブ・レポートには、Enterprise Managerのインタフェースと類似の豊富な対話型ユーザー・インタフェースがあります(Enterprise Managerをインストールする必要はありません)。レポート・ファイルはHTML形式で作成されるため、最近のほとんどのブラウザで解釈可能です。アクティブ・レポートに機能を付与するコードは、最初に表示したときにWebブラウザにより透過的にダウンロードされるため、表示には外部接続が必要です。

警告:

filter_predsパラメータを公開することによって、アプリケーションがSQLインジェクションの影響を受ける可能性があるため、アプリケーション開発者は、十分に検討した後でのみこのパラメータをエンド・ユーザーに公開してください。実際、filter_predsを使用すると、すべての表の参照、またはテーブル・ファンクションを起動するデータベース・ユーザーが権限を持つすべてのサーバー・ファンクションの実行を行うことができます。

DISPLAY_SQL_PLAN_BASELINEファンクション

このテーブル・ファンクションは、SQLプラン・ベースラインの指定したSQLハンドルの1つ以上の実行計画を表示します。

構文

DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE (
sql_handle      IN VARCHAR2 := NULL,
plan_name       IN VARCHAR2 := NULL,
format          IN VARCHAR2 := 'TYPICAL')
RETURN dbms_xplan_type_table;

パラメータ

表202-7 DISPLAY_SQL_PLAN_BASELINEファンクションのパラメータ

パラメータ

説明

sql_handle

SQL文のハンドル。計画を表示するSQL文を識別します。

plan_name

計画名。特定の計画を識別します。デフォルト値のNULLは、識別されたSQL文に関連付けられたすべての計画が説明され、表示されることを意味します。

format

書式文字列によって、計画に格納されている情報のうちどの情報が表示されるかが決まります。それぞれ一般的な使用例を表す3つの書式値('BASIC'、'TYPICAL'、'ALL')のいずれかを使用できます。

戻り値

PL/SQLタイプの表

使用上の注意

このプロシージャでは、プラン・ベースラインに格納された計画情報を使用して、計画の説明と表示を行います。SQL管理ベースに格納されているplan_idが、生成された計画のplan_idと一致しない場合もあります。格納されたplan_idと生成されたplan_idとの不一致は、生成された計画が再生成不可能な計画であることを意味します。このような計画は無効とみなされ、SQLコンパイル時にオプティマイザによってバイパスされます。

例

TYPICAL形式を使用して、SQLハンドル'SYS_SQL_b1d49f6074ab95af'によって識別されるSQL文のすべての計画を表示します。

SET LINESIZE 150
SET PAGESIZE 2000
SELECT t.*
FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(
'SYS_SQL_b1d49f6074ab95af')) t;

BASIC形式を使用して、文字列'HR2'を含む1つ以上のSQL文のすべての計画を表示します。

SET LINESIZE 150
SET PAGESIZE 2000
SELECT t.*
FROM (SELECT DISTINCT sql_handle FROM dba_sql_plan_baselines
WHERE sql_text like '%HR2%') pb,
TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(pb.sql_handle, NULL,
'BASIC')) t;

DISPLAY_SQLSETファンクション

このテーブル・ファンクションは、SQLチューニング・セットに格納されている指定した文の実行計画を表示します。

構文

DBMS_XPLAN.DISPLAY_SQLSET(
sqlset_name      IN  VARCHAR2,
sql_id           IN  VARCHAR2,
plan_hash_value  IN NUMBER := NULL,
format           IN  VARCHAR2  := 'TYPICAL',
sqlset_owner     IN  VARCHAR2  := NULL)
RETURN DBMS_XPLAN_TYPE_TABLE PIPELINED;

パラメータ

表202-8 DISPLAY_SQLSETファンクションのパラメータ

パラメータ

説明

sqlset_name

SQLチューニング・セットの名前。

sql_id

SQLチューニング・セットに計画を格納しているSQL文のsql_id値を指定します。テーブル・ファンクションDBMS_SQLTUNE.SELECT_SQLSETを問い合せると、格納済のすべてのSQL文を検出できます。

plan_hash_value

オプション・パラメータ。SQL文の特定の格納済実行計画を指定します。指定しない場合は、格納済のすべての実行計画が表示されます。

format

計画の詳細レベルを制御します。次の4つの値を指定できます。

- BASIC: 計画の最小限の情報として、操作ID、操作名および操作オプションを表示します。

- TYPICAL: これがデフォルトです。計画に関する最も一般的な情報(操作ID、操作名、操作オプション、行数、バイト数およびオプティマイザ・コスト)が表示されます。プルーニング情報、パラレル情報および述語情報は、適用可能な場合にのみ表示されます。PROJECTION、ALIASおよびREMOTE SQLの情報のみが除外されます(説明の後半を参照)。

- SERIAL: TYPICALと同じですが、計画がパラレルで実行される場合でもパラレル情報は表示されません。

- ALL: 最高のユーザー・レベルです。TYPICALレベルで表示される情報に加えて、追加情報(PROJECTION、ALIAS、および分散処理が行われる場合はREMOTE SQLに関する情報)が表示されます。

表示出力をより細かく制御するために、前述の3つの標準的なformatオプションに次のキーワードを追加して、デフォルトの動作をカスタマイズできます。各キーワードは、PLAN TABLEの列の論理グループ(PARTITIONなど)または基となるPLAN TABLEの出力への論理的追加(PREDICATEなど)を表します。フォーマット・キーワードは、カンマまたはスペースで区切る必要があります。

- ROWS - 関連がある場合は、オプティマイザで推定された行数を表示します。

- BYTES - 関連がある場合は、オプティマイザで推定されたバイト数を表示します。

- COST - 関連がある場合は、オプティマイザ・コスト情報を表示します。

- PARTITION - 関連がある場合は、パーティション・プルーニング情報を表示します。

- PARALLEL - 関連がある場合は、PX情報(配布方式およびテーブル・キュー情報)を表示します。

- PREDICATE - 関連がある場合は、predicateセクションを表示します。

- PROJECTION - 関連がある場合は、projectionセクションを表示します。

- ALIAS - 関連がある場合は、Query Block Name/Object Aliasセクションを表示します。

- REMOTE - 関連がある場合は、分散問合せ(シリアル分散およびリモートSQLを使用したリモート問合せなど)に関する情報を表示します。

- NOTE - 関連がある場合は、EXPLAIN PLANのnoteセクションを表示します。

- IOSTATS - (gather_plan_statisticsヒントを使用するか、またはstatistics_levelパラメータをALLに設定することによって)SQL文の実行時に基本的な計画の統計情報が収集されるとすると、このフォーマットによって、カーソルのALLの実行に対する(または後述するLASTの実行のみに対する)IO統計情報が表示されます。

- MEMSTATS - PGAメモリー管理が有効化されている(pga_aggregate_targetパラメータが0(ゼロ)以外の値に設定されている)とすると、このフォーマットによって、メモリー管理の統計情報(演算子の実行モード、メモリー使用量、ディスクに書き出されるバイト数など)を表示できます。これらの統計情報は、メモリーが集中的に使用される操作(ハッシュ結合、ソート、一部のビットマップ演算子など)にのみ適用されます。

- ALLSTATS - 'IOSTATS MEMSTATS'のショートカット。

- LAST - デフォルトでは、カーソルのすべての実行に対して計画の統計情報が表示されます。LASTキーワードを指定すると、最後の実行に対する統計情報のみを表示できます。

次の2つのフォーマットは非推奨となっていますが、下位互換性を維持する目的でサポートされています。

- RUNSTATS_TOT - IOSTATSと同じです。指定したカーソルのすべての実行に対してIO統計情報を表示します。

- RUNSTATS_LAST - IOSTATS LASTと同じです。カーソルの最後の実行に対するランタイム統計を表示します。

フォーマット・キーワードに-という接頭辞を付けて、指定した情報を除外することができます。たとえば、'-PROJECTION'と指定すると、投影情報が除外されます。

sqlset_owner

SQLチューニング・セットの所有者。デフォルトは現行のユーザーです。

使用上の注意

formatパラメータのバリエーションの例を次に示します。

- projectionおよびnoteセクションを除くすべてを表示する場合は、'ALL -PROJECTION -NOTE'を使用します。

- TYPICALフォーマットに(TYPICALフォーマットでは通常除外されている)projectionセクションを追加して表示する場合は、'TYPICAL PROJECTION'を使用します。TYPICALはデフォルトであるため、'PROJECTION'を使用するのみで同様に表示できます。

- TYPICALフォーマットを使用して、オプティマイザ・コスト、推定バイト数およびpredicateセクションを除外して表示する場合は、'-BYTES -COST -PREDICATE'を使用します。

- BASICレベルの情報にオプティマイザによる推定バイト数を追加して表示する場合は、'BASIC ROWS'を使用します。

例

'OLTP_optimization_0405'という名前のSQLチューニング・セットのSQL ID 'gwp663cqh5qbf'およびPLAN HASH 3693697075に関連付けられたSQL文の実行計画を表示するには、次のように入力します。

SELECT * FROM table (
DBMS_XPLAN.DISPLAY_SQLSET(
'OLTP_optimization_0405','gwp663cqh5qbf', 3693697075));

SQLチューニング・セットに格納されているSQL ID 'atfwcg8anrykp'のすべての実行計画を表示するには、次のように入力します。

SELECT * FROM table (
DBMS_XPLAN.DISPLAY_SQLSET(
'OLTP_optimization_0405','gwp663cqh5qbf'));

前の文中に指定されているSQL文に対するランタイム統計を表示するには、次のように入力します。

SELECT * FROM table (
DBMS_XPLAN.DISPLAY_SQLSET(
'OLTP_optimization_0405', 'gwp663cqh5qbf', NULL, 'ALLSTATS LAST');

203 DBMS_XSLPROCESSOR

DBMS_XSLPROCESSORパッケージは、XML文書の内容と構造を管理するインタフェースを提供します。

この章では、次の項目について説明します。

- DBMS_XSLPROCESSORの使用方法

- 概要

- セキュリティ・モデル

- DBMS_XSLPROCESSORサブプログラムの要約

関連項目:

- 『Oracle XML DB開発者ガイド』

DBMS_XSLPROCESSORの使用方法

この項では、DBMS_XSLPROCESSORパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

概要

DBMS_XSLPROCESSORパッケージは、XML文書の内容と構造を管理するインタフェースを提供します。

標準

XSL ProcessorのPL/SQL実装は、W3C XSLT草案(改訂WD-xslt-19990813)に準拠しています。また、XSLTスタイルシートの読込み方法と影響を与える変換に関して、XSL Processorに要求される動作が含まれています。

概念

eXtensible Stylesheet Language Transformation(XSLT)は、ソース・ツリーを結果ツリーに変換するルールを記述します。XSLTで表現する変換は、スタイルシートと呼ばれます。指定した変換は、パターンをスタイルシートで定義したテンプレートに関連付けることで実行されます。テンプレートは、結果ツリーの一部を作成するためにインスタンス化されます。

実装

このPL/SQL XSL Processorのデフォルト動作は、次のとおりです。

- DOMプログラム・インタフェースからアクセス可能な結果ツリーが作成されます。

- エラー・ログが指定されていない場合、エラーは記録されません。ただし、解析に失敗すると、アプリケーション・エラーが発生します。

セキュリティ・モデル

DBMS_XSLPROCESSORパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

DBMS_XSLPROCESSORサブプログラムの要約

表203-1 DBMS_XSLPROCESSORパッケージのサブプログラム

メソッド

説明

CLOB2FILEプロシージャ

CLOBの内容をファイルに書き込みます。

FREEPROCESSORプロシージャ

プロセッサ・オブジェクトを解放します。

FREESTYLESHEETプロシージャ

スタイルシート・オブジェクトを解放します。

NEWPROCESSORファンクション

新規のプロセッサ・インスタンスを戻します。

NEWSTYLESHEETファンクション

入力と参照URLから新規のスタイルシートを作成します。

PROCESSXSLファンクションおよびプロシージャ

入力XML文書を変換します。

READ2CLOBファンクション

ファイルの内容をCLOBに読み込みます。

REMOVEPARAMプロシージャ

トップレベルのスタイルシート・パラメータを削除します。

RESETPARAMSプロシージャ

トップレベルのスタイルシート・パラメータをリセットします。

SELECTNODESファンクション

パターンと一致するDOMツリーからノードを選択します。

SELECTSINGLENODEファンクション

パターンと一致するツリーから最初のノードを選択します。

SETERRORLOGプロシージャ

指定したファイルに送信するエラーを設定します。

SETPARAMプロシージャ

スタイルシートにトップレベルのパラメータを設定します。

SHOWWARNINGSプロシージャ

警告をオンまたはオフにします。

TRANSFORMNODEファンクション

スタイルシートを使用してDOMツリー内のノードを変換します。

VALUEOFファンクションおよびプロシージャ

パターンと一致する最初のノードの値を取得します。

CLOB2FILEプロシージャ

このプロシージャは、CLOBの内容をファイルに書き込みます。

構文

DBMS_XSLPROCESSOR.CLOB2FILE(
cl          IN  CLOB;
flocation   IN  VARCHAR2,
fname       IN  VARCHAR2,
csid        IN  NUMBER:=0);

パラメータ

表203-2 CLOB2FILEプロシージャのパラメータ

パラメータ

説明

CLOB

ファイルのディレクトリ。

flocation

ファイルのディレクトリ。

fname

ファイル名。

csid

ファイルのキャラクタ・セットID。

- Oracleの有効なIDを指定します。そうでない場合、エラーが戻されます。

- 0(ゼロ)の場合、出力ファイルの内容はデータベースのキャラクタ・セットの内容になります。

FREEPROCESSORプロシージャ

このプロシージャは、Processorオブジェクトを解放します。

構文

DBMS_XSLPROCESSOR.FREEPROCESSOR(
p  IN  Processor);

パラメータ

表203-3 FREEPROCESSORプロシージャのパラメータ

パラメータ

説明

p

プロセッサ。

FREESTYLESHEETプロシージャ

このプロシージャは、スタイルシート・オブジェクトを解放します。

構文

DBMS_XSLPROCESSOR.FREESTYLESHEET(
ss  IN  Stylesheet);

パラメータ

表203-4 FREESTYLESHEETプロシージャのパラメータ

パラメータ

説明

ss

スタイルシート。

NEWPROCESSORファンクション

このファンクションは、新規のプロセッサ・インスタンスを戻します。このファンクションは、他のプロセッサ・メソッドを使用する必要がある場合、プロセッサのデフォルト動作の変更前にコールする必要があります。

構文

DBMS_XSLPROCESSOR.NEWPROCESSOR
RETURN Processor;

NEWSTYLESHEETファンクション

このファンクションは、新規のスタイルシート・インスタンスを作成して戻します。指定できるオプションは、次の表のとおりです。

構文

指定のDOMDOCUMENTと参照URLを使用して、新規のスタイルシート・インスタンスを作成して戻します。

DBMS_XSLPROCESSOR.NEWSTYLESHEET(
xmldoc  IN   DOMDOCUMENT,
ref     IN   VARCHAR2)
RETURN Stylesheet;

指定の入力と参照URLを使用して、新規のスタイルシート・インスタンスを作成して戻します。

DBMS_XSLPROCESSOR.NEWSTYLESHEET(
inp    IN   VARCHAR2,
ref    IN   VARCHAR2)
RETURN Stylesheet;

パラメータ

表203-5 NEWSTYLESHEETファンクションのパラメータ

パラメータ

説明

xmldoc

構成に使用するDOMDocument。

inp

構成に使用する入力URL。

ref

参照URL。

PROCESSXSLファンクション/プロシージャ

このファンクションは、入力されたXMLDocumentを変換します。プロセッサのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。処理に失敗すると、アプリケーション・エラーが発生します。

構文

指定のDOMDocumentとスタイルシートを使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
p      IN   Processor,
ss     IN   Stylesheet,
xmldoc IN   DOMDOCUMENT),
RETURN DOMDOCUMENTFRAGMENT;

指定のドキュメントをURLおよびスタイルシートとして使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
p     IN   Processor,
ss    IN   Stylesheet,
url   IN   VARCHAR2,
RETURN DOMDOCUMENTFRAGMENT;

指定のドキュメントをCLOBおよびスタイルシートとして使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
p     IN   Processor,
ss    IN  Stylesheet,
clb   IN  CLOB)
RETURN DOMDOCUMENTFRAGMENT;

指定のDOMDOCUMENTとスタイルシートを使用して、入力されたXMLDocumentを変換し、指定のファイルに出力を書き込みます。

DBMS_XSLPROCESSOR.DBMS_XSLPROCESSOR.(
p           IN    Processor,
ss          IN    Stylesheet,
xmldoc      IN    DOMDOCUMENT,
dir         IN    VARCHAR2,
fileName    IN    VARCHAR2);

指定のURLとスタイルシートを使用して、入力されたXMLDocumentを変換し、指定のディレクトリ内の指定したファイルに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
p          IN    Processor,
ss         IN    Stylesheet,
url        IN    VARCHAR2,
dir        IN    VARCHAR2,
fileName   IN    VARCHAR2);

指定のDOMDOCUMENTとスタイルシートを使用して、入力されたXMLDocumentを変換し、CLOBに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
p          IN      Processor,
ss         IN      Stylesheet,
xmldoc     IN      DOMDOCUMENT,
cl         IN OUT  CLOB);

指定のDOMDOCUMENTFRAGMENTとスタイルシートを使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
p         IN    Processor,
ss        IN    Stylesheet,
xmldf     IN    DOMDOCUMENTFRAGMENT)
RETURN DOMDOCUMENTFRAGMENT;

指定のDOMDocumentFragmentとスタイルシートを使用して、入力されたXMLDocumentFragmentを変換し、指定のディレクトリ内の指定したファイルに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
p         IN    Processor,
ss        IN    Stylesheet,
xmldf     IN    DOMDOCUMENTFRAGMENT,
dir       IN    VARCHAR2,
filename  IN    VARCHAR2);

指定のDOMDOCUMENTFRAGMENTとスタイルシートを使用して、入力されたXMLDocumentFragmentを変換し、バッファに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
p          IN       Processor,
ss         IN       Stylesheet,
xmldf      IN       DOMDOCUMENTFRAGMENT,
buf        IN OUT   VARCHAR2);

指定のDOMDOCUMENTFRAGMENTとスタイルシートを使用して、入力されたXMLDocumentFragmentを変換し、CLOBに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
p          IN      Processor,
ss         IN      Stylesheet,
xmldf      IN      DOMDOCUMENTFRAGMENT,
cl         IN OUT  CLOB);

パラメータ

表203-6 PROCESSXSLファンクション/プロシージャのパラメータ

パラメータ

説明

p

プロセッサ・インスタンス。

ss

スタイルシート・インスタンス。

xmldoc

変換するXML文書。

url

変換する情報のURL。

clb

変換する情報が含まれるCLOB。

dir

処理対象の出力ファイルを保存するディレクトリ。

filename

処理対象の出力ファイル。

cl

処理対象の出力を保存するCLOB。

xmldf

変換するXMLDocumentFragment。

READ2CLOBファンクション

このファンクションは、ファイルの内容をCLOBに読み込みます。

構文

DBMS_XSLPROCESSOR.READ2CLOB(
flocation     IN   VARCHAR2,
fname         IN   VARCHAR2,
csid          IN   NUMBER:=0)
RETURN CLOB;

パラメータ

表203-7 READ2CLOBファンクションのパラメータ

パラメータ

説明

flocation

ファイルのディレクトリ。

fname

ファイル名。

csid

ファイルのキャラクタ・セットID。

- Oracleの有効なIDを指定します。そうでない場合、エラーが戻されます。

- 0(ゼロ)の場合、入力ファイルはデータベースのキャラクタ・セット内にあるものとみなされます。

REMOVEPARAMプロシージャ

このプロシージャは、トップレベルのスタイルシート・パラメータを削除します。

構文

DBMS_XSLPROCESSOR.REMOVEPARAM(
ss     IN  Stylesheet,
name   IN  VARCHAR2);

パラメータ

表203-8 REMOVEPARAMプロシージャのパラメータ

パラメータ

説明

ss

スタイルシート・インスタンス。

name

パラメータの名前。

RESETPARAMSプロシージャ

このプロシージャは、トップレベルのスタイルシート・パラメータをリセットします。

構文

DBMS_XSLPROCESSOR.RESETPARAMS(
ss  IN   Stylesheet);

パラメータ

表203-9 RESETPARAMSプロシージャのパラメータ

パラメータ

説明

ss

スタイルシート・インスタンス。

SELECTNODESファンクション

このファンクションは、入力されたパス式と一致するノードをDOMツリーから選択し、選択の結果を戻します。

構文

DBMS_XSLPROCESSOR.SELECTNODES(
n           IN   DBMS_XMLDOM.DOMNODE,
pattern     IN   VARCHAR2,
namespace   IN VARCHAR2 := NULL)
RETURN DBMS_XMLDOM.DOMNODELIST;

パラメータ

表203-10 SELECTNODESファンクションのパラメータ

パラメータ

説明

n

ツリーのルートDOMNode。

pattern

使用するパターン。

namespace

宣言されたネームスペース。

SELECTSINGLENODEファンクション

このファンクションは、入力されたパス式と一致するツリーから最初のノードを選択し、そのノードを戻します。

構文

DBMS_XSLPROCESSOR.SELECTSINGLENODE(
n           IN   DBMS_XMLDOM.DOMNODE,
pattern     IN   VARCHAR2,
namespace   IN VARCHAR2 := NULL)
RETURN DBMS_XMLDOM.DOMNODE;

パラメータ

表203-11 SELECTSINGLENODEファンクションのパラメータ

パラメータ

説明

n

ツリーのルートDOMNode。

pattern

使用するパターン。

namespace

宣言されたネームスペース。

SETERRORLOGプロシージャ

このプロシージャは、指定したファイルに送信するエラーを設定します。

注意:
このサブプログラムは非推奨となっています。ここに含まれているのは下位互換性を保つという理由のみからです。

構文

DBMS_XSLPROCESSOR.SETERRORLOG(
p         IN   Processor,
fileName  IN   VARCHAR2);

パラメータ

表203-12 SETERRORLOGプロシージャのパラメータ

パラメータ

説明

p

プロセッサ・インスタンス。

fileName

エラー・ログとして使用するファイルの完全パス。

SETPARAMプロシージャ

このプロシージャは、スタイルシートにトップレベルのパラメータを設定します。パラメータ値は、有効なXPath式であることが必要です。必ずリテラル文字列値を引用します。

構文

DBMS_XSLPROCESSOR.SETPARAM(
ss      IN   Stylesheet,
name    IN   VARCHAR2,
value   IN   VARCHAR2);

パラメータ

表203-13 SETPARAMプロシージャのパラメータ

パラメータ

説明

ss

スタイルシート・インスタンス。

name

パラメータの名前。

value

パラメータの値。

SHOWWARNINGSプロシージャ

このプロシージャは、警告をオン(TRUE)またはオフ(FALSE)にします。

構文

DBMS_XSLPROCESSOR.SHOWWARNINGS(
p     IN   Processor,
yes   IN   BOOLEAN);

パラメータ

表203-14 SHOWWARNINGSプロシージャのパラメータ

パラメータ

説明

p

プロセッサ・インスタンス。

yes

設定するモード。警告を表示する場合はTRUE、表示しない場合はFALSEを指定します。

TRANSFORMNODEファンクション

このファンクションは、指定のスタイルシートを使用してDOMツリー内のノードを変換し、変換結果をDOMDocumentFragmentとして戻します。

構文

DBMS_XSLPROCESSOR.TRANSFORMNODE(
n    IN  DOMNODE,
ss   IN  Stylesheet)
RETURN DOMDocumentFragment;

パラメータ

表203-15 TRANSFORMNODEファンクションのパラメータ

パラメータ

説明

n

変換するDOMNode。

ss

使用するスタイルシート。

VALUEOFファンクション/プロシージャ

このサブプログラムは、指定のパターンと一致するツリーから最初のノードの値を取得します。ファンクションまたはプロシージャのいずれかを使用できます。

構文

DBMS_XSLPROCESSOR.VALUEOF(
n           IN    DBMS_XMLDOM.DOMNODE,
pattern     IN    VARCHAR2,
namespace   IN    VARCHAR2 := NULL)
RETURN VARCHAR2;

DBMS_XSLPROCESSOR.VALUEOF(
n           IN    DBMS_XMLDOM.DOMNODE,
pattern     IN    VARCHAR2,
val         OUT   VARCHAR2,
namespace   IN    VARCHAR2 := NULL);

パラメータ

表203-16 VALUEOFファンクション/プロシージャのパラメータ

パラメータ

説明

n

値を取得するノード。

pattern

使用するパターン。

val

取得された値。

namespace

使用する名前空間。

204 DBMS_XSTREAM_ADM

このDBMS_XSTREAM_ADMパッケージは、Oracleデータベースと他のシステム間でデータベースの変更をストリームするためのインタフェースを提供します。XStreamを使用すると、アプリケーションでデータベースの変更をストリーム・アウトまたはストリーム・インできます。

この章では、次の項目について説明します。

- DBMS_XSTREAM_ADMの使用

- 概要

- セキュリティ・モデル

- 使用上の注意

- DBMS_XSTREAM_ADMサブプログラムの要約

関連項目:

- Oracle Database XStreamガイド

- 『Oracle Call Interfaceプログラマーズ・ガイド』

- Oracle Database XStream Java APIリファレンス

DBMS_XSTREAM_ADMの使用

このセクションには、DBMS_XSTREAM_ADMパッケージの使用に関連したトピックが含まれています。

- 概要

- セキュリティ・モデル

- 使用上の注意

概要

このパッケージは、データベースの変更をOracleデータベースから他のシステムにストリームするアウトバウンド・サーバーを構成するためのインタフェースを提供します。このパッケージは、データベースの変更を他のシステムからOracleデータベースにストリームするインバウンド・サーバーを構成するためのインタフェースも提供しています。どちらの場合でも、データベースの変更は論理変更レコード(LCR)にカプセル化されます。また、他のシステムとしてOracleシステム、または非Oracleシステム(Oracle以外のデータベースまたはファイルシステムなど)も使用できます。

XStreamアウトバウンド・サーバーでは、CまたはJavaを使用してLCRをOracleデータベースからプログラム的にストリーム・アウトできます。LCRの受信後、他のシステムは任意にカスタマイズした方法でそのLCRを処理できます。たとえば、他のシステムではLCRのコンテンツをファイルに保存したり、LCRをXstreamインバウンド・サーバー経由でOracleデータベースに送信したり、SQL文を生成して任意のOracleデータベースまたはOracle以外のデータベースで実行することができます。

XStreamインバウンド・サーバーは別のシステムからLCRを受け入れ、そのLCRをOracleデータベースに適用するか、適用ハンドラを使用してカスタマイズした方法で処理します。

XStreamは、マルチテナント・コンテナ・データベース(CDB)で使用できます。CDBは、ユーザーが作成した0以上のプラガブル・データベース(PDB)を含むOracle Databaseです。

関連項目:

- 『Oracle Database XStreamガイド』の第4章「XStream Out」

- Oracle Database XStreamガイド

- CDBおよびPDBの詳細は、『Oracle Database概要』を参照してください。

セキュリティ・モデル

このパッケージのサブプログラムを実行するユーザーが必要な権限を持っていることを確認するには、XStream管理者を構成し、このパッケージを使用する際にXStream管理者として接続します。

管理者には、次のいずれかのアクションを実行する際にDBAロールが付与される必要があります。

- アウトバウンド・サーバーに対して構成された接続ユーザーとは異なるユーザーとして接続しているときに、ADD_OUTBOUNDプロシージャを実行する

- 取得プロセスの取得ユーザーを変更、またはアウトバウンド・サーバーの接続ユーザーを変更するために、ALTER_OUTBOUNDプロシージャを実行する

- CREATE_OUTBOUNDプロシージャで取得プロセスが作成されたために、このプロシージャを実行する

- インバウンド・サーバーの適用ユーザーを変更するために、ALTER_INBOUNDプロシージャを実行する

- インバウンド・サーバーに対して構成された適用ユーザーとは異なるユーザーとして接続しているときに、ADD_INBOUNDプロシージャを実行する

管理者が前述の作業を実行する必要がない場合、DBAロールは不要です。

関連項目:

- GRANT_ADMIN_PRIVILEGEプロシージャ

- XStreamおよびセキュリティの詳細は、『Oracle Database XStreamガイド』の第4章「XStream Outおよびセキュリティ」を参照してください。

使用上の注意

DBMS_APPLY_ADMパッケージの一部のサブプログラムではXStreamアウトバウンド・サーバーを管理でき、DBMS_APPLY_ADMパッケージの一部のサブプログラムではXStreamインバウンド・サーバーを管理できます。

関連項目:
どのサブプログラムがアウトバウンド・サーバーとインバウンド・サーバーを管理できるかについて、第23章「DBMS_APPLY_ADM」を参照してください。

DBMS_XSTREAM_ADMサブプログラムの要約

表204-1 DBMS_XSTREAM_ADMパッケージのサブプログラム

サブプログラム

説明

ADD_COLUMNプロシージャ

指定されたルールを満たす行論理変更レコード(行LCR)に列を追加する宣言ルールベースの変換を追加または削除します。

ADD_GLOBAL_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_GLOBAL_RULESプロシージャ

取得プロセスまたは適用プロセスのポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加し、指定した取得プロセスまたは適用プロセスが存在しない場合は、それを作成します。

ADD_OUTBOUNDプロシージャ

指定したキューからLCRをデキューするXStreamアウトバウンド・サーバーを作成します。

ADD_SCHEMA_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_SCHEMA_RULESプロシージャ

XStreamクライアントのルール・セットにルールを追加します。

ADD_SUBSET_OUTBOUND_RULESプロシージャ

アウトバウンド・サーバーの構成にサブセット・ルールを追加します。

ADD_SUBSET_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットにサブセット・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_SUBSET_RULESプロシージャ

取得プロセスまたは適用プロセスのポジティブ・ルール・セットにサブセット・ルールを追加し、指定した取得プロセスまたは適用プロセスが存在しない場合は、それを作成します。

ADD_TABLE_PROPAGATION_RULESプロシージャ

伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットに表ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

ADD_TABLE_RULESプロシージャ

このプロシージャは、XStreamクライアントのルール・セットにルールを追加します。

ALTER_INBOUNDプロシージャ

XStreamインバウンド・サーバーを変更します。

ALTER_OUTBOUNDプロシージャ

XStreamアウトバウンド・サーバーを変更します。

CREATE_INBOUNDプロシージャ

XStreamインバウンド・サーバーとそのキューを作成します。

CREATE_OUTBOUNDプロシージャ

XStreamアウトバウンド・サーバー、キュー、および取得プロセスを作成して、XStreamクライアントのアプリケーションがLCRにカプセル化されたOracleデータベースの変更をストリーム・アウトできるようにします。

DELETE_COLUMNプロシージャ

指定されたルールを満たす行LCRから列を削除する宣言ルールベースの変換を追加または削除します。

DROP_INBOUNDプロシージャ

インバウンド・サーバーの構成を削除します。

DROP_OUTBOUNDプロシージャ

アウトバウンド・サーバーの構成を削除します。

ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ

Oracle Streamsコンポーネントに対してXStreamのパフォーマンス最適化を有効にします。

GET_MESSAGE_TRACKINGファンクション

現在のセッションの追跡ラベルを戻します。

GET_TAGファンクション

現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

IS_GG_XSTREAM_FOR_STREAMSファンクション

Oracle Streamsコンポーネントに対してXStreamのパフォーマンス最適化を有効にした場合はTRUEを返し、Oracle Streamsコンポーネントに対してXStreamのパフォーマンス最適化を無効にした場合はFALSEを返します。

KEEP_COLUMNSプロシージャ

指定されたルールを満たす行LCR内の列のリストを保持する宣言ルールベースの変換を追加または削除します。

MERGE_STREAMSプロシージャ

1つの取得プロセスからのストリームを別の取得プロセスからのストリームとマージします。

MERGE_STREAMS_JOBプロシージャ

元の取得プロセスおよびクローニングされた取得が、指定されたマージしきい値内にあるかどうかを判別し、マージしきい値内にある場合は、MERGE_STREAMSプロシージャを実行して2つのストリームをマージします。

PURGE_SOURCE_CATALOGプロシージャ

指定されたオブジェクトに属するすべてのOracle Streamsデータ・ディクショナリ情報をローカル・データベースから削除します。

RECOVER_OPERATIONプロシージャ

エラーが発生したために停止した分割およびマージ操作に対してオプションを提供します。このプロシージャは、操作のロールフォワード、操作のロールバック、操作に関するすべてのメタデータのパージのいずれかの処理を実行します。

REMOVE_QUEUEプロシージャ

指定されたANYDATAキューを削除します。

REMOVE_RULEプロシージャ

指定した取得プロセス、適用プロセス、または伝播に関連付けられたルール・セットから、指定したルールまたはすべてのルールを削除します。

REMOVE_SUBSET_OUTBOUND_RULESプロシージャ

アウトバウンド・サーバーの構成からサブセット・ルールを削除します。

REMOVE_XSTREAM_CONFIGURATIONプロシージャ

ローカル・データベースでXStreamの構成を削除します。

RENAME_COLUMNプロシージャ

指定されたルールを満たす行LCR内の列の名前を変更する宣言ルールベースの変換を追加または削除します。

RENAME_SCHEMAプロシージャ

指定されたルールを満たす行LCR内のスキーマの名前を変更する宣言ルールベースの変換を追加または削除します。

RENAME_TABLEプロシージャ

指定されたルールを満たす行LCR内の表の名前を変更する宣言ルールベースの変換を追加または削除します。

SET_MESSAGE_TRACKINGプロシージャ

現在のセッションで生成された論理変更レコード(LCR)の追跡ラベルを設定します。

SET_PARAMETERプロシージャ

アウトバウンド・サーバー、インバウンド・サーバー、またはアウトバウンド・サーバーの取得プロセスのパラメータを設定します。

SET_TAGプロシージャ

現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。

SET_UP_QUEUEプロシージャ

キュー表と、XStreamの取得、伝播、適用機能で使用するキューを作成します。

SPLIT_STREAMSプロシージャ

取得プロセスからの1つのストリームを、その取得プロセスからの他のすべてのストリームから分割します。

START_OUTBOUNDプロシージャ

XStreamアウトバウンド・サーバーを起動します。

STOP_OUTBOUNDプロシージャ

XStreamアウトバウンド・サーバーを停止します。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

ADD_COLUMNプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(行LCR)に列を追加する宣言ルールベースの変換を追加または削除します。

指定したルールがTRUEと評価されるときに変換を実行する場合、ルールはXStreamクライアントのポジティブ・ルール・セットに入っている必要があります。XStreamクライアントには、取得プロセス、伝播プロセスおよび適用プロセスがあります。

このプロシージャはオーバーロードされています。column_valueパラメータとcolumn_functionパラメータは、両方同時には指定できません。

注意:

- ADD_COLUMN変換では、BLOB、CLOB、NCLOB、BFILE、LONG、LONG RAW、ROWID、ユーザー定義タイプ(オブジェクト・タイプ、REF、VARRAY、ネストした表)およびオラクル社提供のタイプ(任意のタイプ、XMLタイプ、空間タイプ、メディア・タイプ)などは追加できません。

- 宣言的変換では、行LCRのみを変換できます。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLルールを指定した場合は、エラーが発生します。

関連項目:
宣言的なルールベースの変換の詳細は、『Oracle Database XStreamガイド』を参照してください。

構文

DBMS_XSTREAM_ADM.ADD_COLUMN(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_name   IN  VARCHAR2,
column_value  IN  ANYDATA,
value_type    IN  VARCHAR2     DEFAULT 'NEW',
step_number   IN  NUMBER       DEFAULT 0,
operation     IN  VARCHAR2     DEFAULT 'ADD');

DBMS_XSTREAM_ADM.ADD_COLUMN(
rule_name        IN  VARCHAR2,
table_name       IN  VARCHAR2,
column_name      IN  VARCHAR2,
column_function  IN  VARCHAR2,
value_type       IN  VARCHAR2     DEFAULT 'NEW',
step_number      IN  NUMBER       DEFAULT 0,
operation        IN  VARCHAR2     DEFAULT 'ADD');

パラメータ

表204-2 ADD_COLUMNプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列を追加する表の名前で、[schema_name.]object_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

column_name

ルールを満たす各行LCRに追加する列の名前。

column_value

追加する列の値。列のデータ・タイプおよび値に適したANYDATAファンクションを指定します。たとえば、追加する列のデータ・タイプがNUMBERで、値がNULLの場合は、ANYDATA.ConvertNumber(NULL)ファンクションを指定します。

column_functionパラメータが指定されている場合、このパラメータは指定できません。

column_function

'SYSDATE'または'SYSTIMESTAMP'のいずれかのSQLファンクション。

'SYSDATE'SQLファンクションは、データベースが存在するオペレーティング・システムの現在の日付と時刻のセットを戻します。戻り値のデータ・タイプはDATEです。戻り値の書式は、NLS_DATE_FORMAT初期化パラメータの値によって異なります。

'SYSTIMESTAMP' SQLファンクションは、データベースが存在するオペレーティング・システムの日時(小数秒およびタイムゾーンを含む)を戻します。戻りタイプは、TIMESTAMP WITH TIME ZONEです。

このファンクションは、ルールの評価結果がTRUEの場合に実行されます。

column_valueパラメータが指定されている場合、このパラメータは指定できません。

value_type

行LCRの新しい値に列を追加する場合は、'NEW'を指定します。

行LCRの古い値に列を追加する場合は、'OLD'を指定します。

step_number

変換の実行順序。

関連項目: 変換の順序の詳細は、『Oracle Database XStreamガイド』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列追加の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_nameおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合のADD_COLUMNプロシージャの動作を示します。

table_name

column_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての列追加変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されているstep_numberのすべての列追加変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているcolumn_nameおよびstep_numberのすべての列追加変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているtable_nameおよびstep_numberのすべての列追加変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているcolumn_nameのすべての列追加変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているtable_nameおよびcolumn_nameのすべての列追加変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameのすべての列追加変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているtable_name、column_nameおよびstep_numberのすべての列追加変換が削除されます。

ADD_GLOBAL_PROPAGATION_RULESプロシージャ

このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_XSTREAM_ADM.ADD_GLOBAL_PROPAGATION_RULES(
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
dml_rule_name           OUT  VARCHAR2,
ddl_rule_name           OUT  VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_GLOBAL_PROPAGATION_RULES(
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

パラメータ

表204-3 ADD_GLOBAL_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、論理変更レコード(LCR)にNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。伝播のポジティブ・ルール・セットにルールが追加される場合、NULL以外のタグがLCRにあるかどうかに関係なく、LCRは常に伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRのタグの値に関係なく、LCRが破棄されます。

FALSEに設定すると、LCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。伝播のポジティブ・ルール・セットにルールが追加される場合、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRにNULLのタグがあるときにかぎり、LCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、伝播のポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、伝播のネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるグローバル・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(データベース名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。データベース名と順序番号を組み合せた名前が長すぎる場合は、データベース名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。

例

次に、DMLの変更に関して作成されるグローバル・ルール条件の例を示します。

(:dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_GLOBAL_RULESプロシージャ

このプロシージャは、次のいずれかのタイプのXStreamクライアントのルール・セットにルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、データベース全体に対する変更を取得する取得プロセス・ルールを追加します。
このプロシージャは、指定した取得プロセスが存在しない場合にそれを作成します。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーの名前を指定すると、このプロシージャは、受信したすべての論理変更レコード(LCR)を適用する適用ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
このプロシージャは、指定したstreams_nameを持つ適用プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーが存在しない場合に適用プロセスを作成します。このプロシージャはアウトバウンド・サーバーまたはインバウンド・サーバーにルールを追加できますが、アウトバウンド・サーバーまたはインバウンド・サーバーを作成することはできません。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

注意:
グローバル・ルールを取得プロセスのポジティブ・ルールセットに追加する場合は、Oracle Streamsでサポートされていないデータベース・オブジェクトを除外するルールを、取得プロセスのネガティブ・ルールセットに追加してください。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

構文

DBMS_XSTREAM_ADM.ADD_GLOBAL_RULES(
streams_type           IN   VARCHAR2,
streams_name           IN   VARCHAR2  DEFAULT NULL,
queue_name             IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml            IN   BOOLEAN   DEFAULT TRUE,
include_ddl            IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr     IN   BOOLEAN   DEFAULT FALSE,
source_database        IN   VARCHAR2  DEFAULT NULL,
dml_rule_name          OUT  VARCHAR2,
ddl_rule_name          OUT  VARCHAR2,
inclusion_rule         IN   BOOLEAN   DEFAULT TRUE,
and_condition          IN   VARCHAR2  DEFAULT NULL,
source_root_name       IN   VARCHAR2  DEFAULT NULL,
source_container_name  IN   VARCHAR2  DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_GLOBAL_RULES(
streams_type           IN   VARCHAR2,
streams_name           IN   VARCHAR2  DEFAULT NULL,
queue_name             IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml            IN   BOOLEAN   DEFAULT TRUE,
include_ddl            IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr     IN   BOOLEAN   DEFAULT FALSE,
source_database        IN   VARCHAR2  DEFAULT NULL,
inclusion_rule         IN   BOOLEAN   DEFAULT TRUE,
and_condition          IN   VARCHAR2  DEFAULT NULL,
source_root_name       IN   VARCHAR2  DEFAULT NULL,
source_container_name  IN   VARCHAR2  DEFAULT NULL);

パラメータ

表204-4 ADD_GLOBAL_RULESプロシージャのパラメータ

パラメータ

説明

streams_type

XStreamクライアントのタイプ:

- 取得プロセスの場合は、capture。

- 適用プロセスの場合は、apply。

streams_name

取得プロセスまたは適用プロセスの名前。所有者を指定しないでください。

NULLの場合、streams_typeがcaptureの場合、そしてキューに関連する取得プロセスが存在する場合は、該当するXStreamクライアントが使用されます。キューに関連するXStreamクライアントが存在しない場合は、XStreamクライアントがシステム生成の名前で自動的に作成されます。NULLで、指定したstreams_typeのXStreamクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

適用プロセスには、それぞれ一意の名前を付ける必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。アウトバウンド・サーバーのルールの場合、これはアウトバウンド・サーバーがLCRをデキューするキューになります。インバウンド・サーバーのルールの場合、これはインバウンド・サーバーがエラー・トランザクションをエンキューするキューになります。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、REDOエントリは常に取得の対象とみなされ、LCRは常に適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、タグの値に関係なく、REDOエントリまたはLCRが破棄されます。

FALSEに設定すると、REDOエントリまたはLCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリが取得の対象とみなされ、LCRが適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリまたはLCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得されたLCRを適用プロセスで適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるLCRのみです。

CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、mycdb.example.comまたはhrpdb.example.comが使用できます。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleがTRUEの場合、このプロシージャはXStreamクライアントのポジティブ・ルール・セットにルールを追加します。

inclusion_ruleがFALSEの場合、ルールはXStreamクライアントのネガティブ・ルール・セットに追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるグローバル・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

source_root_name

ソースCDBのルートのグローバル名。たとえば、mycdb.example.comです。

このパラメータがNULLの場合は、ローカルCDBにあるルートのグローバル名が使用されます。ダウンストリーム取得を構成している場合、このパラメータは非NULL値である必要があり、リモート・ソースCDBにあるルートのグローバル名を指定する必要があります。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

注意: このパラメータはCDBにのみ適用されます。

source_container_name

ソース・コンテナの短縮名。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、CDB$ROOTまたはhrpdbです。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(データベース名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。データベース名と順序番号を組み合せた名前が長すぎる場合は、データベース名が切り捨てられます。取得プロセスまたは適用プロセスは、フィルタリングのためのルールを使用します。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

例

次に、DMLの変更に関して作成されるグローバル・ルール条件の例を示します。

(:dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_OUTBOUNDプロシージャ

このプロシージャは、指定したキューからLCRをデキューするXStreamアウトバウンド・サーバーを作成します。アウトバウンド・サーバーは、LCRをXStreamクライアントのアプリケーションにストリーム・アウトします。

このプロシージャは、取得プロセスまたはキューをいずれも作成しません。アウトバウンド・サーバー、取得プロセス、およびキューを1回のプロシージャ・コールで作成するには、CREATE_OUTBOUNDプロシージャを使用します。

取得プロセスを個々に作成するには、次のパッケージのいずれかを使用します。

- DBMS_XSTREAM_ADM

- DBMS_CAPTURE_ADM

キューを個々に作成するには、DBMS_XSTREAM_ADMパッケージのSET_UP_QUEUEプロシージャを使用します。

このプロシージャはオーバーロードされています。1つのtable_namesパラメータは、VARCHAR2タイプで、もう1つのtable_namesパラメータは、DBMS_UTILITY.UNCL_ARRAYタイプです。また、一方のschema_namesパラメータはVARCHAR2タイプで、もう一方のschema_namesパラメータはDBMS_UTILITY.UNCL_ARRAYタイプです。これらのパラメータを使用して、表とスキーマのリストをそれぞれ別の方法で入力することができます。これらのパラメータは相互に排他的です。

注意:

- 1つのクライアント・アプリケーションで複数のセッションを作成できます。各セッションは1つのアウトバウンド・サーバーにのみ連結でき、各アウトバウンド・サーバーは一度に1つのセッションのみを処理できます。ただし、クライアント・アプリケーションのセッションは、それぞれ異なるアウトバウンド・サーバーに接続できます。アウトバウンド・サーバーへの連結の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』およびOracle Database XStream Java APIリファレンスを参照してください。

- このプロシージャは、作成したアウトバウンド・サーバーを有効化します。

- Oracle Database 11gリリース2 (11.2.0.2)から、このプロシージャにcapture_name、start_scnおよびstart_timeの各パラメータが組み込まれています。

構文

DBMS_XSTREAM_ADM.ADD_OUTBOUND(
server_name            IN  VARCHAR2,
queue_name             IN  VARCHAR2   DEFAULT NULL,
source_database        IN  VARCHAR2   DEFAULT NULL,
table_names            IN  DBMS_UTILITY.UNCL_ARRAY,
schema_names           IN  DBMS_UTILITY.UNCL_ARRAY,
connect_user           IN  VARCHAR2   DEFAULT NULL,
comment                IN  VARCHAR2   DEFAULT NULL,
capture_name           IN  VARCHAR2   DEFAULT NULL,
start_scn              IN  NUMBER     DEFAULT NULL,
start_time             IN  TIMESTAMP  DEFAULT NULL,
include_dml            IN  BOOLEAN   DEFAULT TRUE,
include_ddl            IN  BOOLEAN   DEFAULT FALSE,
source_root_name       IN  VARCHAR2  DEFAULT NULL,
source_container_name  IN  VARCHAR2  DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_OUTBOUND(
server_name            IN  VARCHAR2,
queue_name             IN  VARCHAR2   DEFAULT NULL,
source_database        IN  VARCHAR2   DEFAULT NULL,
table_names            IN  VARCHAR2   DEFAULT NULL,
schema_names           IN  VARCHAR2   DEFAULT NULL,
connect_user           IN  VARCHAR2   DEFAULT NULL,
comment                IN  VARCHAR2   DEFAULT NULL,
capture_name           IN  VARCHAR2   DEFAULT NULL,
start_scn              IN  NUMBER     DEFAULT NULL,
start_time             IN  TIMESTAMP  DEFAULT NULL,
include_dml            IN  BOOLEAN   DEFAULT TRUE,
include_ddl            IN  BOOLEAN   DEFAULT FALSE,
source_root_name       IN  VARCHAR2  DEFAULT NULL,
source_container_name  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表204-5 ADD_OUTBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

作成中のアウトバウンド・サーバーの名前。NULL指定は許可されていません。所有者を指定しないでください。

指定した名前が既存のアウトバウンド・サーバー、インバウンド・サーバー、適用プロセス、またはメッセージ・クライアントの名前と一致しないようにしてください。

注意: server_nameの設定は30バイトを超えることはできません。また、アウトバウンド・サーバーの作成後に変更することはできません。

queue_name

アウトバウンド・サーバーがLCRをデキューするローカル・キューの名前で、[schema_name.]queue_nameと指定されます。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、xstream_queueというキューをxstrmadminスキーマに指定するには、このパラメータにxstrmadmin.xstream_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULLの場合は、エラーが発生します。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、mycdb.example.comまたはhrpdb.example.comが使用できます。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

table_names

データ操作言語(DML)とデータ定義言語(DDL)の変更がXStreamクライアント・アプリケーションにストリーム・アウトされる表。表は、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、表の名前が各要素になります。位置1の最初の表を指定します。最後の位置はNULLにする必要があります。

それぞれの表は、[schema_name.]table_nameという形式で指定する必要があります。たとえば、hr.employeesを指定できます。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

schema_names

DMLとDDLの変更がXStreamクライアント・アプリケーションにストリーム・アウトされるスキーマ。スキーマは、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、スキーマの名前が各要素になります。位置1の最初のスキーマを指定します。最後の位置はNULLにする必要があります。

注意: このプロシージャでは、schema_namesパラメータとtable_namesパラメータは連結されません。表を指定するには、完全修飾された表名をtable_namesパラメータ(schema_name.table_name)に入力します。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

connect_user

指定したアウトバウンド・サーバーに連結してLCRストリームを取得できるユーザー。クライアント・アプリケーションは、指定した接続ユーザーとしてアウトバウンド・サーバーに連結する必要があります。接続ユーザーに必要な権限の詳細は、「CREATE_OUTBOUNDプロシージャ」を参照してください。

NULLの場合は、現在のユーザーがデフォルトになります。

comment

アウトバウンド・サーバーに関連付けられたオプションのコメント。

capture_name

アウトバウンド・サーバー用の変更を取得するように構成された取得プロセスの名前。所有者を指定しないでください。

指定した名前が別のアウトバウンド・サーバーの既存の取得プロセスの名前と一致する場合、このプロシージャは既存の取得プロセスを使用して、データベースの変更の取得ルールを取得プロセスのポジティブ・ルール・セットに追加します。

指定した名前が適用プロセスの既存の取得プロセスの名前と一致する場合は、エラーが発生します。

指定した名前が既存の取得プロセスの名前と一致しない場合は、エラーが発生します。

NULLの場合は、取得プロセスなしでアウトバウンド・サーバーが作成されます。

start_scn

取得プロセスによる変更の取得の開始点である、データベースの有効なシステム変更番号(SCN)。

capture_nameパラメータがNULLの場合、このパラメータは無視されます。

NULLで、capture_nameパラメータがNULL以外の場合、取得プロセスの開始SCNは変更されません。

無効なSCNが指定された場合はエラーが戻されます。

start_scnパラメータとstart_timeパラメータは、両方同時には指定できません。

start_time

取得プロセスによる変更の取得の開始時点となる有効な時間。

capture_nameパラメータがNULLの場合、このパラメータは無視されます。

NULLで、capture_nameパラメータがNULL以外の場合、取得プロセスの開始SCNは変更されません。

start_scnパラメータとstart_timeパラメータは、両方同時には指定できません。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

source_root_name

ソースCDBのルートのグローバル名。たとえば、mycdb.example.comです。

このパラメータがNULLの場合は、ローカルCDBにあるルートのグローバル名が使用されます。ダウンストリーム取得を構成している場合、このパラメータは非NULL値である必要があり、リモート・ソースCDBにあるルートのグローバル名を指定する必要があります。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

注意: このパラメータはCDBにのみ適用されます。

source_container_name

ソース・コンテナの短縮名。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、CDB$ROOTまたはhrpdbです。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

次のリストは、table_namesおよびschema_namesパラメータの様々な組合せにおけるアウトバウンド・サーバーの動作について説明しています。

- table_namesおよびschema_namesパラメータが両方ともNULLか空の場合、アウトバウンド・サーバーはDMLとDDLのすべての変更をクライアント・アプリケーションにストリームします。
このプロシージャはオーバーロードされています。table_namesおよびschema_namesパラメータのデフォルトはNULLです。同じコールでtable_namesとschema_namesの両方にNULLを指定しないでください。指定した場合は、エラーPLS-00307が戻されます。

- table_namesおよびschema_namesパラメータを両方とも指定した場合、アウトバウンド・サーバーは指定した表とスキーマに対するDMLとDDLの変更をストリームします。

- table_namesパラメータが指定されていて、schema_namesパラメータがNULLまたは空の場合、アウトバウンド・サーバーは指定した表に対するDMLとDDLの変更をストリームします。

- table_namesパラメータがNULLまたは空で、schema_namesパラメータが指定されている場合、アウトバウンド・サーバーは指定したスキーマに対するDMLとDDLの変更をストリームします。

table_namesおよびschema_namesパラメータでDBMS_UTILITY.UNCL_ARRAYタイプを使用するプロシージャの場合、両方のパラメータを指定する必要があります。表のみを指定するには、schema_namesパラメータを指定して空にする必要があります。スキーマのみを指定するには、table_namesパラメータを指定して空にする必要があります。

注意:
空の配列には、1つのNULLエントリが含まれています。

ADD_SCHEMA_PROPAGATION_RULESプロシージャ

このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_XSTREAM_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name             IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
dml_rule_name           OUT  VARCHAR2,
ddl_rule_name           OUT  VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name             IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

パラメータ

表204-6 ADD_SCHEMA_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。たとえば、hrのように指定します。

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、論理変更レコード(LCR)にNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。伝播のポジティブ・ルール・セットにルールが追加される場合、NULL以外のタグがLCRにあるかどうかに関係なく、LCRは常に伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRのタグの値に関係なく、LCRが破棄されます。

FALSEに設定すると、LCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。伝播のポジティブ・ルール・セットにルールが追加される場合、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRにNULLのタグがあるときにかぎり、LCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、伝播のポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、伝播のネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるスキーマ・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(スキーマ名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。スキーマ名と順序番号を組み合せた名前が長すぎる場合は、スキーマ名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。

例

次に、DMLの変更に関して作成されるスキーマ・ルール条件の例を示します。

((:dml.get_object_owner() = 'HR') and :dml.is_null_tag() = 'Y'
and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_SCHEMA_RULESプロシージャ

このプロシージャは、次のいずれかのタイプのXStreamクライアントのルール・セットにルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、指定したスキーマに対する変更を取得する取得プロセス・ルールを追加します。
このプロシージャは、指定した取得プロセスが存在しない場合にそれを作成します。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーの名前を指定すると、このプロシージャは、指定したスキーマに対する変更が記録されている論理変更レコード(LCR)を適用する適用ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
このプロシージャは、指定したstreams_nameを持つ適用プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーが存在しない場合に適用プロセスを作成します。このプロシージャはアウトバウンド・サーバーまたはインバウンド・サーバーにルールを追加できますが、アウトバウンド・サーバーまたはインバウンド・サーバーを作成することはできません。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

注意:
スキーマ・ルールを取得プロセスのポジティブ・ルールセットに追加する場合は、Oracle Streamsでサポートされていない、スキーマ内のデータベース・オブジェクトを除外するルールを、取得プロセスのネガティブ・ルールセットに必ず追加するようにしてください。DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せて、Oracle Streamsでサポートされていないデータベース・オブジェクトを確認します。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。

構文

DBMS_XSTREAM_ADM.ADD_SCHEMA_RULES(
schema_name            IN   VARCHAR2,
streams_type           IN   VARCHAR2,
streams_name           IN   VARCHAR2  DEFAULT NULL,
queue_name             IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml            IN   BOOLEAN   DEFAULT TRUE,
include_ddl            IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr     IN   BOOLEAN   DEFAULT FALSE,
source_database        IN   VARCHAR2  DEFAULT NULL,
dml_rule_name          OUT  VARCHAR2,
ddl_rule_name          OUT  VARCHAR2,
inclusion_rule         IN   BOOLEAN   DEFAULT TRUE,
and_condition          IN   VARCHAR2  DEFAULT NULL,
source_root_name       IN  VARCHAR2  DEFAULT NULL,
source_container_name  IN  VARCHAR2  DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_SCHEMA_RULES(
schema_name            IN   VARCHAR2,
streams_type           IN   VARCHAR2,
streams_name           IN   VARCHAR2  DEFAULT NULL,
queue_name             IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml            IN   BOOLEAN   DEFAULT TRUE,
include_ddl            IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr     IN   BOOLEAN   DEFAULT FALSE,
source_database        IN   VARCHAR2  DEFAULT NULL,
inclusion_rule         IN   BOOLEAN   DEFAULT TRUE,
and_condition          IN   VARCHAR2  DEFAULT NULL,
source_root_name       IN  VARCHAR2  DEFAULT NULL,
source_container_name  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表204-7 ADD_SCHEMA_RULESプロシージャのパラメータ

パラメータ

説明

schema_name

スキーマの名前。たとえば、hrのように指定します。

Oracle Streamsではスキーマの有無がチェックされないため、まだ存在しないスキーマも指定できます。

streams_type

XStreamクライアントのタイプ:

- 取得プロセスの場合は、capture。

- 適用プロセスの場合は、apply。

streams_name

取得プロセスまたは適用プロセスの名前。所有者を指定しないでください。

NULLの場合、streams_typeがcaptureの場合、そしてキューに関連する取得プロセスが存在する場合は、該当するXStreamクライアントが使用されます。キューに関連するXStreamクライアントが存在しない場合は、XStreamクライアントがシステム生成の名前で自動的に作成されます。NULLで、指定したstreams_typeのXStreamクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

適用プロセスには、それぞれ一意の名前を付ける必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。アウトバウンド・サーバーのルールの場合、これはアウトバウンド・サーバーがLCRをデキューするキューになります。インバウンド・サーバーのルールの場合、これはインバウンド・サーバーがエラー・トランザクションをエンキューするキューになります。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、REDOエントリは常に取得の対象とみなされ、LCRは常に適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、タグの値に関係なく、REDOエントリまたはLCRが破棄されます。

FALSEに設定すると、REDOエントリまたはLCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。プロセスのポジティブ・ルール・セットにルールが追加される場合、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリが取得の対象とみなされ、LCRが適用の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。プロセスのネガティブ・ルール・セットにルールが追加される場合は、REDOエントリまたはLCRにNULLのタグがあるときにかぎり、REDOエントリまたはLCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得されたLCRを適用プロセスで適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるLCRのみです。

CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、mycdb.example.comまたはhrpdb.example.comが使用できます。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleがTRUEの場合、このプロシージャはXStreamクライアントのポジティブ・ルール・セットにルールを追加します。

inclusion_ruleがFALSEの場合、ルールはXStreamクライアントのネガティブ・ルール・セットに追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成されるスキーマ・ルールをTRUEと評価する場合は、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

source_root_name

ソースCDBのルートのグローバル名。たとえば、mycdb.example.comです。

このパラメータがNULLの場合は、ローカルCDBにあるルートのグローバル名が使用されます。ダウンストリーム取得を構成している場合、このパラメータは非NULL値である必要があり、リモート・ソースCDBにあるルートのグローバル名を指定する必要があります。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

注意: このパラメータはCDBにのみ適用されます。

source_container_name

ソース・コンテナの短縮名。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、CDB$ROOTまたはhrpdbです。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(スキーマ名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。スキーマ名と順序番号を組み合せた名前が長すぎる場合は、スキーマ名が切り捨てられます。取得プロセスまたは適用プロセスは、フィルタリングのためのルールを使用します。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

例

次に、DMLの変更に関して作成されるスキーマ・ルール条件の例を示します。

((:dml.get_object_owner() = 'HR') and :dml.is_null_tag() = 'Y'
and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_SUBSET_OUTBOUND_RULESプロシージャ

このプロシージャは、アウトバウンド・サーバーの構成にサブセット・ルールを追加します。サブセット・ルールは、変更のサブセットを指定した表にストリーム・アウトするようにアウトバウンド・サーバーに指示します。アウトバウンド・サーバーは、行と列のサブセットをストリーム・アウトできます。

このプロシージャはオーバーロードされています。一方のcolumn_listパラメータはVARCHAR2タイプで、もう一方のcolumn_listパラメータはDBMS_UTILITY.LNAME_ARRAYタイプです。これらのパラメータによって、列のリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。

注意:
このプロシージャでは、アウトバウンド・サーバーの取得プロセスにルールが追加されません。

構文

DBMS_XSTREAM_ADM.ADD_SUBSET_OUTBOUND_RULES(
server_name      IN VARCHAR2,
table_name       IN VARCHAR2,
condition        IN VARCHAR2  DEFAULT NULL,
column_list      IN DBMS_UTILITY.LNAME_ARRAY,
keep             IN BOOLEAN   DEFAULT TRUE,
source_database  IN VARCHAR2  DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_SUBSET_OUTBOUND_RULES(
server_name      IN VARCHAR2,
table_name       IN VARCHAR2,
condition        IN VARCHAR2  DEFAULT NULL,
column_list      IN VARCHAR2  DEFAULT NULL,
keep             IN BOOLEAN   DEFAULT TRUE,
source_database  IN VARCHAR2  DEFAULT NULL);

パラメータ

表204-8 ADD_SUBSET_OUTBOUND_RULESプロシージャのパラメータ

パラメータ

説明

server_name

ルールを追加中であるアウトバウンド・サーバーの名前。既存のアウトバウンド・サーバーを指定します。所有者を指定しないでください。

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesを指定できます。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

アウトバウンド・サーバーの構成でローカルの取得プロセスが使用される場合は、表がローカル・ソース・データベースに存在している必要があります。アウトバウンド・サーバーの構成でダウンストリーム取得プロセスが使用される場合は、表がソース・データベースとダウンストリーム取得データベースの両方に存在している必要があります。

指定した表では、現在または将来にわたってLOB、LONG、またはLONG RAW列を含めることはできません。

condition

サブセット条件。SQLのWHERE句に条件を指定する場合と同じ方法で、サブセット条件を指定します。

たとえば、salaryが4000を超え、かつjob_idがSA_MANである行をhr.employees表で指定するには、次のように条件を入力します。

' salary > 4000 and job_id = ''SA_MAN'' '

NULLの場合は、エラーが発生します。

注意: 前述の例の引用符は、すべて一重引用符です。

column_list

アウトバウンド・サーバーの構成に含める列のリスト、またはアウトバウンド・サーバーの構成から除外する列のリスト。列を含めるか除外するかは、keepパラメータの設定に依存します。

列は次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.LNAME_ARRAYタイプのPL/SQL結合配列(各要素は列の名前)。位置1の最初の列を指定します。最後の位置はNULLにする必要があります。

表中のすべての列を含めるか除外するには、リストまたは配列内の表の各列を指定します。

NULLの場合は、エラーが発生します。

keep

TRUEの場合、column_listパラメータで指定された列はアウトバウンド・サーバー構成の一部として維持されます。したがって、conditionパラメータの条件を満たす列の変更は、アウトバウンド・サーバーのクライアント・アプリケーションにストリームされます。

FALSEの場合、column_listパラメータで指定された列はアウトバウンド・サーバー構成から除外されます。したがって、これらの列の変更はアウトバウンド・サーバーのクライアント・アプリケーションにストリームされません。

関連項目: 「使用上の注意」

source_database

指定したtable_namesとschema_namesが配置されているコンテナのグローバル名。

NULL以外の場合、ソース・データベースのグローバル名に基づいてLCRをフィルタリングする条件がアウトバウンド・サーバーのルールに追加されます。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、mycdb.example.comまたはhrpdb.example.comが使用できます。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

使用上の注意

keepパラメータがTRUEに設定されている場合、このプロシージャは、column_listにリストされた列に対して、keep列の宣言的なルールベース変換を作成します。

keepパラメータがFALSEに設定されている場合、このプロシージャは、column_listにリストされた列ごとに、delete列の宣言的なルールベース変換を作成します。

関連項目:
宣言的なルールベース変換の詳細は、『Oracle Database XStreamガイド』を参照してください。

ADD_SUBSET_PROPAGATION_RULESプロシージャ

このプロシージャは、ソース・キュー内の論理変更レコード(LCR)のうち、指定した表の行のサブセットに関連するLCRを宛先キューに伝播するための伝播ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは3つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_XSTREAM_ADM.ADD_SUBSET_PROPAGATION_RULES(
table_name               IN   VARCHAR2,
dml_condition            IN   VARCHAR2,
streams_name             IN   VARCHAR2  DEFAULT NULL,
source_queue_name        IN   VARCHAR2,
destination_queue_name   IN   VARCHAR2,
include_tagged_lcr       IN   BOOLEAN   DEFAULT FALSE,
source_database          IN   VARCHAR2  DEFAULT NULL,
insert_rule_name         OUT  VARCHAR2,
update_rule_name         OUT  VARCHAR2,
delete_rule_name         OUT  VARCHAR2,
queue_to_queue           IN   BOOLEAN   DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_SUBSET_PROPAGATION_RULES(
table_name               IN   VARCHAR2,
dml_condition            IN   VARCHAR2,
streams_name             IN   VARCHAR2  DEFAULT NULL,
source_queue_name        IN   VARCHAR2,
destination_queue_name   IN   VARCHAR2,
include_tagged_lcr       IN   BOOLEAN   DEFAULT FALSE,
source_database          IN   VARCHAR2  DEFAULT NULL,
queue_to_queue           IN   BOOLEAN   DEFAULT NULL);

パラメータ

表204-9 ADD_SUBSET_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定した表は、伝播と同じデータベースに存在する必要があります。また、指定した表では、現在および将来にわたり、LOB列、LONG列、LONG RAW列またはXMLType列を使用できません。

dml_condition

サブセット条件。SQLのWHERE句に条件を指定する場合と同じ方法で、サブセット条件を指定します。

たとえば、salaryが4000を超え、かつjob_idがSA_MANである行をhr.employees表で指定するには、次のように条件を入力します。

' salary > 4000 and job_id = ''SA_MAN'' '

注意: 前述の例の引用符は、すべて一重引用符です。

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_tagged_lcr

TRUEの場合は、LCRにNULL以外のタグがあるかどうかに関係なく、LCRが常に伝播の対象とみなされます。データベースの完全なコピー(スタンバイなど)を作成するときには、この設定をお薦めします。

FALSEの場合は、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、FALSEの設定が有効です。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

insert_rule_name

システムによって生成されたINSERTルール名が出力されます。このルールによって、挿入と、挿入に変換する必要がある更新が制御されます。

update_rule_name

システムによって生成されたUPDATEルール名が出力されます。このルールによって、更新のまま変換されない更新が制御されます。

delete_rule_name

システムによって生成されたDELETEルール名が出力されます。このルールによって、削除と、削除に変換する必要がある更新が制御されます。

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャを実行すると、指定された伝播に対して3つのルール(INSERT文に関するルール、UPDATE文に関するルール、DELETE文に関するルール)が生成されます。INSERT文とDELETE文については、dml_conditionパラメータで指定された条件を満たす行LCRのみが伝播されます。UPDATE文については、次のバリエーションがあります。

- 行LCRの新旧の値が両方とも指定のdml_conditionを満たす場合、その行LCRは変更なしで伝播されます。

- 行LCRの新旧の値が両方とも指定のdml_conditionを満たさない場合、その行LCRは伝播されません。

- 行LCRの古い値が指定のdml_conditionを満たし、新しい値が満たさない場合、更新行LCRは削除行LCRに変換されます。

- 行LCRの新しい値が指定のdml_conditionを満たし、古い値が満たさない場合、更新行LCRは挿入行LCRに変換されます。

更新が挿入または削除に変換されることを行の移行と呼びます。

伝播では、これらのルールがフィルタ処理に使用されます。伝播にポジティブ・ルール・セットがない場合は、ポジティブ・ルール・セットが自動的に作成され、表に変更を伝播するためのルールがポジティブ・ルール・セットに追加されます。サブセット・ルールはポジティブ・ルール・セットのみに追加可能で、ネガティブ・ルール・セットには追加できません。伝播の既存のポジティブ・ルール・セット内にある他のルールは、この影響を受けません。追加ルールは、DBMS_XSTREAM_ADMパッケージまたはDBMS_RULE_ADMパッケージのいずれかを使用して追加できます。

このプロシージャを実行すると、INSERT文、UPDATE文およびDELETE文のルールが自動的に作成され、これらのルールには、システム生成のルール名が指定されます。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。ADD_SUBSET_RULESプロシージャがオーバーロードされているため、INSERT文、UPDATE文およびDELETE文に対するシステム生成のルール名が戻されます。

表のサブセット・ルールを作成する場合は、表のすべての列を保持するソース・データベースで、無条件のサプリメンタル・ログ・グループを作成してください。サプリメンタル・ロギングは、更新を挿入に変換する必要がある場合に必要です。この変換を正しく実行するには、伝播ルールに列値がすべて設定されている必要があります。

注意:
サブセット・ルールはポジティブ・ルール・セットの内部のみで使用できます。ネガティブ・ルール・セットにはサブセット・ルールを追加できません。ネガティブ・ルール・セットにサブセット・ルールを追加すると、ネガティブ・ルール・セットによって破棄されないLCRに対して行の移行が実行されないため、予期しない結果が発生する場合があります。

例

次に、行LCRのフィルタ処理に関して作成されるルール条件の例を示します。このルール条件では、dml_conditionがregion_id = 2、table_nameがhr.regions、およびsource_databaseがdbs1.netである場合の更新操作を示します。

:dml.get_object_owner()='HR' AND :dml.get_object_name()='REGIONS'
AND :dml.is_null_tag()='Y' AND :dml.get_source_database_name()='DBS1.NET'
AND :dml.get_command_type()='UPDATE'
AND (:dml.get_value('NEW','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"').AccessNumber()=2)
AND (:dml.get_value('NEW','"REGION_ID"').AccessNumber()=2)

ADD_SUBSET_RULESプロシージャ

このプロシージャは、次のいずれかのタイプのXStreamクライアントのルール・セットにルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、指定した表の行のサブセットに対する変更を取得する取得プロセス・ルールを追加します。
このプロシージャは、指定した取得プロセスが存在しない場合にそれを作成します。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーの名前を指定すると、このプロシージャは、指定した表の行のサブセットに対する変更が記録されている論理変更レコード(LCR)を適用する適用ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
このプロシージャは、指定したstreams_nameを持つ適用プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーが存在しない場合に適用プロセスを作成します。このプロシージャはアウトバウンド・サーバーまたはインバウンド・サーバーにルールを追加できますが、アウトバウンド・サーバーまたはインバウンド・サーバーを作成することはできません。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは3つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_XSTREAM_ADM.ADD_SUBSET_RULES(
table_name             IN   VARCHAR2,
dml_condition          IN   VARCHAR2,
streams_type           IN   VARCHAR2 DEFAULT 'apply',
streams_name           IN   VARCHAR2 DEFAULT NULL,
queue_name             IN   VARCHAR2 DEFAULT 'streams_queue',
include_tagged_lcr     IN   BOOLEAN  DEFAULT FALSE,
source_database        IN   VARCHAR2 DEFAULT NULL,
insert_rule_name       OUT  VARCHAR2,
update_rule_name       OUT  VARCHAR2,
delete_rule_name       OUT  VARCHAR2,
source_root_name       IN  VARCHAR2  DEFAULT NULL,
source_container_name  IN  VARCHAR2  DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_SUBSET_RULES(
table_name             IN   VARCHAR2,
dml_condition          IN   VARCHAR2,
streams_type           IN   VARCHAR2 DEFAULT 'apply',
streams_name           IN   VARCHAR2 DEFAULT NULL,
queue_name             IN   VARCHAR2 DEFAULT 'streams_queue',
include_tagged_lcr     IN   BOOLEAN  DEFAULT FALSE,
source_database        IN   VARCHAR2 DEFAULT NULL,
source_root_name       IN  VARCHAR2  DEFAULT NULL,
source_container_name  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表204-10 ADD_SUBSET_RULESプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

指定した表は、取得プロセスまたは適用プロセスと同じデータベースに存在している必要があります。また、指定した表では、現在および将来にわたり、LOB列、LONG列、LONG RAW列またはXMLType列を使用できません。

dml_condition

サブセット条件。SQLのWHERE句に条件を指定する場合と同じ方法で、サブセット条件を指定します。

たとえば、salaryが4000を超え、かつjob_idがSA_MANである行をhr.employees表で指定するには、次のように条件を入力します。

' salary > 4000 and job_id = ''SA_MAN'' '

注意: 前述の例の引用符は、すべて一重引用符です。

streams_type

XStreamクライアントのタイプ:

- 取得プロセスの場合は、capture。

- 適用プロセスの場合は、apply。

streams_name

取得プロセスまたは適用プロセスの名前。所有者を指定しないでください。

NULLの場合、streams_typeがcaptureの場合、そしてキューに関連する取得プロセスが存在している場合は、該当するXStreamクライアントが使用されます。キューに関連するXStreamクライアントが存在しない場合は、XStreamクライアントがシステム生成の名前で自動的に作成されます。NULLで、指定したstreams_typeのXStreamクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

適用プロセスには、それぞれ一意の名前を付ける必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。アウトバウンド・サーバーのルールの場合、これはアウトバウンド・サーバーがLCRをデキューするキューになります。インバウンド・サーバーのルールの場合、これはインバウンド・サーバーがエラー・トランザクションをエンキューするキューになります。

include_tagged_lcr

TRUEの場合、XStreamクライアントはタグに関係なく、そのアクションを実行します。

- REDOエントリは、NULL以外のタグがあるかどうかに関係なく、常に取得プロセスによる取得の対象とみなされます。

- LCRは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、常に適用プロセスによる適用の対象とみなされます。

FALSEの場合、XStreamクライアントは、タグがNULLの場合にのみアクションを実行します。

- REDOエントリは、NULLタグがある場合にのみ、取得プロセスによる取得の対象とみなされます。

- LCRは、NULLタグがある場合にのみ、適用プロセスによる適用の対象とみなされます。

通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、FALSEの設定が有効です。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得されたLCRを適用プロセスで適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるLCRのみです。

CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、mycdb.example.comまたはhrpdb.example.comが使用できます。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

insert_rule_name

システムによって生成されたINSERTルール名が出力されます。このルールによって、挿入と、挿入に変換する必要がある更新が制御されます。

update_rule_name

システムによって生成されたUPDATEルール名が出力されます。このルールによって、更新のまま変換されない更新が制御されます。

delete_rule_name

システムによって生成されたDELETEルール名が出力されます。このルールによって、削除と、削除に変換する必要がある更新が制御されます。

source_root_name

ソースCDBのルートのグローバル名。たとえば、mycdb.example.comです。

このパラメータがNULLの場合は、ローカルCDBにあるルートのグローバル名が使用されます。ダウンストリーム取得を構成している場合、このパラメータは非NULL値である必要があり、リモート・ソースCDBにあるルートのグローバル名を指定する必要があります。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

注意: このパラメータはCDBにのみ適用されます。

source_container_name

ソース・コンテナの短縮名。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、CDB$ROOTまたはhrpdbです。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

このプロシージャを実行すると、指定された取得プロセスまたは適用プロセスに対して3つのルール(INSERT文に関するルール、UPDATE文に関するルール、DELETE文に関するルール)が生成されます。INSERT文とDELETE文については、dml_conditionパラメータで指定された条件を満たすDML変更のみが取得または適用の対象となります。UPDATE文については、次のバリエーションがあります。

- DML変更の新旧の値が両方とも指定のdml_conditionを満たす場合、そのDML変更は変更なしでそのまま取得または適用されます。

- DML変更の新旧の値が両方とも指定のdml_conditionを満たさない場合、そのDML変更は取得または適用されません。

- DML変更の古い値が指定のdml_conditionを満たし、新しい値が満たさない場合、DML変更は削除に変換されます。

- DML変更の新しい値が指定のdml_conditionを満たし、古い値が満たさない場合、DML変更は挿入に変換されます。

更新が挿入または削除に変換されることを行の移行と呼びます。

取得プロセスまたは適用プロセスは、フィルタリングのためのルールを使用します。XStreamクライアントにポジティブ・ルール・セットがない場合は、ポジティブ・ルール・セットが自動的に作成され、表に関するルールがポジティブ・ルール・セットに追加されます。サブセット・ルールはポジティブ・ルール・セットのみに追加可能で、ネガティブ・ルール・セットには追加できません。プロセスの既存のルール・セット内にある他のルールは、この影響を受けません。追加ルールは、DBMS_XSTREAM_ADMパッケージまたはDBMS_RULE_ADMパッケージのいずれかを使用して追加できます。

このプロシージャを実行すると、INSERT文、UPDATE文およびDELETE文のルールが自動的に作成され、これらのルールには、システム生成のルール名が指定されます。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。ADD_SUBSET_RULESプロシージャがオーバーロードされているため、INSERT文、UPDATE文およびDELETE文に対するシステム生成のルール名が戻されます。

注意:
サブセット・ルールはポジティブ・ルール・セットの内部のみで使用できます。ネガティブ・ルール・セットにはサブセット・ルールを追加できません。ネガティブ・ルール・セットにサブセット・ルールを追加すると、ネガティブ・ルール・セットによって破棄されないLCRに対して行の移行が実行されないため、予期しない結果が発生する場合があります。

例

次に、DML変更のフィルタ処理に関して作成されるルール条件の例を示します。このルール条件では、dml_conditionがregion_id = 2、table_nameがhr.regions、かつsource_databaseがdbs1.netである場合の更新操作を示します。

:dml.get_object_owner()='HR' AND :dml.get_object_name()='REGIONS'
AND :dml.is_null_tag()='Y' AND :dml.get_source_database_name()='DBS1.NET'
AND :dml.get_command_type()='UPDATE'
AND (:dml.get_value('NEW','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"') IS NOT NULL)
AND (:dml.get_value('OLD','"REGION_ID"').AccessNumber()=2)
AND (:dml.get_value('NEW','"REGION_ID"').AccessNumber()=2)

ADD_TABLE_PROPAGATION_RULESプロシージャ

このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットに表ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_XSTREAM_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name              IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
dml_rule_name           OUT  VARCHAR2,
ddl_rule_name           OUT  VARCHAR2,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name              IN   VARCHAR2,
streams_name            IN   VARCHAR2  DEFAULT NULL,
source_queue_name       IN   VARCHAR2,
destination_queue_name  IN   VARCHAR2,
include_dml             IN   BOOLEAN   DEFAULT TRUE,
include_ddl             IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr      IN   BOOLEAN   DEFAULT FALSE,
source_database         IN   VARCHAR2  DEFAULT NULL,
inclusion_rule          IN   BOOLEAN   DEFAULT TRUE,
and_condition           IN   VARCHAR2  DEFAULT NULL,
queue_to_queue          IN   BOOLEAN   DEFAULT NULL);

パラメータ

表204-11 ADD_TABLE_PROPAGATION_RULESプロシージャのパラメータ

パラメータ

説明

table_name

表の名前で、[schema_name.]table_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

streams_name

伝播の名前。所有者を指定しないでください。

指定された伝播が存在しない場合は、自動的に作成されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播がすでに存在する場合は、その伝播が使用されます。

このパラメータがNULLで、同じソース・キューと宛先キュー(データベース・リンクを含む)を指定した伝播が存在しない場合は、システム生成の名前で伝播が自動的に作成されます。

source_queue_name

ソース・キューの名前で、[schema_name.]queue_nameの形式で指定します。現在のデータベースには、ソース・キューが含まれている必要があり、キューはANYDATAタイプである必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

destination_queue_name

宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、[schema_name.]queue_name[@dblink_name]と指定します。必ずANYDATAタイプのキューを指定してください。

たとえば、dbs2.netというデータベース・リンクを使用し、strmadminスキーマ内のstreams_queueという名前の宛先キューを指定するには、このパラメータにstrmadmin.streams_queue@dbs2.netと入力します。

スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。

注意: 接続修飾子は使用できません。

include_dml

TRUEに設定すると、DMLの変更に関するルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

生成されるルールは、表で動作するDDL変更または表内のオブジェクト(表の索引、トリガーなど)で動作するDDL変更に対してはTRUEと評価されます。また、表を参照しないDDL変更または下位の表を参照するDDL変更に対してはFALSEと評価されます。たとえば、表に基づいてシノニムまたはビューを作成する変更に対してはFALSEと評価されます。また、表を参照するPL/SQLサブプログラムへの変更に対してもFALSEと評価されます。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、論理変更レコード(LCR)にNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。伝播のポジティブ・ルール・セットにルールが追加される場合、NULL以外のタグがLCRにあるかどうかに関係なく、LCRは常に伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRのタグの値に関係なく、LCRが破棄されます。

FALSEに設定すると、LCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。伝播のポジティブ・ルール・セットにルールが追加される場合、LCRにNULLのタグがあるときにかぎり、LCRが伝播の対象とみなされます。ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。伝播のネガティブ・ルール・セットにルールが追加される場合は、LCRにNULLのタグがあるときにかぎり、LCRを破棄できます。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

伝播ルールではソース・データベースを指定することをお薦めします。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleをTRUEに設定すると、伝播のポジティブ・ルール・セットにルールが追加されます。

inclusion_ruleをFALSEに設定すると、伝播のネガティブ・ルール・セットにルールが追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成される表ルールをTRUEと評価するには、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

queue_to_queue

TRUEまたはNULLの場合、このプロシージャによって作成される新しい伝播は、キューからキューへの伝播です。キューからキューへの伝播では、常に独自の伝播ジョブが存在し、宛先キューがOracle Real Application Clusters(Oracle RAC)データベースでバッファに入れられたキューの場合、自動フェイルオーバーのサービスが使用されます。

FALSEの場合、このプロシージャによって作成される新しい伝播はキューからデータベース・リンクへの伝播です。キューからデータベース・リンクの伝播では、同じデータベース・リンクを使用する他の伝播と伝播ジョブを共有できますが、Oracle RAC環境での自動フェイルオーバーはサポートされません。

このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。

- このパラメータがTRUEで、指定した伝播がキューからキューへの伝播でない場合は、エラーが発生します。

- このパラメータがFALSEで、指定した伝播がキューからキューへの伝播の場合は、エラーが発生します。

- このパラメータがNULL場合、伝播のqueue_to_queueプロパティは変更されません。

関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。

使用上の注意

このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。

例

次に、DML文のフィルタ処理に関して作成される表ルール条件の例を示します。

(((:dml.get_object_owner() = 'HR' and :dml.get_object_name() = 'LOCATIONS'))
and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

ADD_TABLE_RULESプロシージャ

このプロシージャは、次のいずれかのタイプのXStreamクライアントのルール・セットにルールを追加します。

- streams_typeパラメータをcaptureに設定すると、このプロシージャは、指定した表に対する変更を取得する取得プロセス・ルールを追加します。
このプロシージャは、指定した取得プロセスが存在しない場合にそれを作成します。

- streams_typeパラメータをapplyに設定し、streams_nameパラメータで適用プロセス、アウトバウンド・サーバー、またはインバウンド・サーバーの名前を指定すると、このプロシージャは、指定した表の変更が記録されている論理変更レコード(LCR)を適用する適用ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
このプロシージャは、指定したstreams_nameを持つ適用プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーが存在しない場合に適用プロセスを作成します。このプロシージャはアウトバウンド・サーバーまたはインバウンド・サーバーにルールを追加できますが、アウトバウンド・サーバーまたはインバウンド・サーバーを作成することはできません。

このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUTパラメータを使用しますが、もう一方のバージョンでは使用しません。

構文

DBMS_XSTREAM_ADM.ADD_TABLE_RULES(
table_name             IN   VARCHAR2,
streams_type           IN   VARCHAR2,
streams_name           IN   VARCHAR2  DEFAULT NULL,
queue_name             IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml            IN   BOOLEAN   DEFAULT TRUE,
include_ddl            IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr     IN   BOOLEAN   DEFAULT FALSE,
source_database        IN   VARCHAR2  DEFAULT NULL,
dml_rule_name          OUT  VARCHAR2,
ddl_rule_name          OUT  VARCHAR2,
inclusion_rule         IN   BOOLEAN   DEFAULT TRUE,
and_condition          IN   VARCHAR2  DEFAULT NULL,
source_root_name       IN  VARCHAR2   DEFAULT NULL,
source_container_name  IN  VARCHAR2   DEFAULT NULL);

DBMS_XSTREAM_ADM.ADD_TABLE_RULES(
table_name             IN   VARCHAR2,
streams_type           IN   VARCHAR2,
streams_name           IN   VARCHAR2  DEFAULT NULL,
queue_name             IN   VARCHAR2  DEFAULT 'streams_queue',
include_dml            IN   BOOLEAN   DEFAULT TRUE,
include_ddl            IN   BOOLEAN   DEFAULT FALSE,
include_tagged_lcr     IN   BOOLEAN   DEFAULT FALSE,
source_database        IN   VARCHAR2  DEFAULT NULL,
inclusion_rule         IN   BOOLEAN   DEFAULT TRUE,
and_condition          IN   VARCHAR2  DEFAULT NULL,
source_root_name       IN  VARCHAR2   DEFAULT NULL,
source_container_name  IN  VARCHAR2   DEFAULT NULL);

パラメータ

表204-12 ADD_TABLE_RULESプロシージャのパラメータ

パラメータ

説明

table_name

[schema_name.]object_nameの形式で指定した表の名前。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

Oracle Streamsでは表の有無がチェックされないため、まだ存在しない表も指定できます。

streams_type

XStreamクライアントのタイプ:

- 取得プロセスの場合は、capture。

- 適用プロセスの場合は、apply。

streams_name

取得プロセスまたは適用プロセスの名前。所有者を指定しないでください。

NULLの場合、streams_typeがcaptureの場合、そしてキューに関連する取得プロセスが存在している場合は、該当するXStreamクライアントが使用されます。キューに関連するXStreamクライアントが存在しない場合は、XStreamクライアントがシステム生成の名前で自動的に作成されます。NULLで、指定したstreams_typeのXStreamクライアントがキューに対して複数存在する場合は、エラーが発生します。

このパラメータがNULLで、streams_typeパラメータがapplyであり、関連する適用プロセスが1つ存在する場合は、その適用プロセスが使用されます。関連する適用プロセスは、次のいずれかの方法で選択されます。

- source_databaseで指定されるソース・データベースを使用し、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

- source_databaseがNULLで、queue_nameで指定されるキューを使用する既存の適用プロセスが1つ存在する場合は、その適用プロセスが選択されます。

このパラメータがNULLで、関連する適用プロセスが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。

このパラメータがNULLで、関連する適用プロセスが複数存在する場合は、エラーが発生します。

適用プロセスには、それぞれ一意の名前を付ける必要があります。

queue_name

ローカル・キューの名前で、[schema_name.]queue_nameの形式で指定します。現行のデータベースにキューが含まれている必要があり、キューはANYDATAタイプを指定する必要があります。

たとえば、strmadminスキーマ内のstreams_queueという名前のキューを指定するには、このパラメータにstrmadmin.streams_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。アウトバウンド・サーバーのルールの場合、これはアウトバウンド・サーバーがLCRをデキューするキューになります。インバウンド・サーバーのルールの場合、これはインバウンド・サーバーがエラー・トランザクションをエンキューするキューになります。

include_dml

TRUEに設定すると、DMLの変更に関するDMLルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するDDLルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

生成されるルールは、表で動作するDDL変更または表内のオブジェクト(表の索引、トリガーなど)で動作するDDL変更に対してはTRUEと評価されます。また、表を参照しないDDL変更または下位の表を参照するDDL変更に対してはFALSEと評価されます。たとえば、表に基づいてシノニムまたはビューを作成する変更に対してはFALSEと評価されます。また、表を参照するPL/SQLサブプログラムへの変更に対してもFALSEと評価されます。

include_tagged_lcr

TRUEに設定すると、生成されるルールに対してOracle Streamsタグに関する条件が追加されません。したがって、これらのルールは、REDOエントリ、セッションまたはLCRにNULL以外のタグがあるかどうかに関係なく、TRUEと評価されます。XStreamクライアントのポジティブ・ルール・セットにルールが追加されている場合、XStreamクライアントはタグに関係なくそのアクションを実行します。

- REDOエントリは、NULL以外のタグがあるかどうかに関係なく、常に取得プロセスによる取得の対象とみなされます。

- LCRは、REDOエントリまたはLCRにNULL以外のタグがあるかどうかに関係なく、常に適用プロセスによる適用の対象とみなされます。

ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータをTRUEに設定することをお薦めします。XStreamクライアントのネガティブ・ルール・セットにルールが追加される場合は、タグの値に関係なく、データベース変更が破棄されます。

FALSEに設定すると、REDOエントリ、セッションまたはLCRにNULLのOracle Streamsタグがあるときにかぎり、ルールがTRUEと評価される条件が、生成される各ルールに追加されます。XStreamクライアントのポジティブ・ルール・セットにルールが追加される場合、XStreamクライアントは、タグがNULLの場合にのみ、そのアクションを実行します。

- REDOエントリは、NULLタグがある場合にのみ、取得プロセスによる取得の対象とみなされます。

- LCRは、NULLタグがある場合にのみ、適用プロセスによる適用の対象とみなされます。

ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータをFALSEに設定することをお薦めします。XStreamクライアントのネガティブ・ルール・セットにルールが追加される場合は、NULLのタグがあるときにかぎり、データベース変更を破棄できます。

通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、FALSEの設定が有効です。

inclusion_ruleパラメータをFALSEに設定する場合は、通常、このパラメータをTRUEに設定してください。

関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

source_database

ソース・データベースのグローバル名。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、NULLを指定するか、ローカル・データベースのグローバル名を指定します。ダウンストリーム・データベース上のダウンストリーム取得プロセスのルール・セットにルールを追加する場合は、変更が取得されるソース・データベースを指定します。

適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得されたLCRを適用プロセスで適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるLCRのみです。

CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、mycdb.example.comまたはhrpdb.example.comが使用できます。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

dml_rule_name

include_dmlがTRUEの場合は、このパラメータでDMLルールの名前を指定します。

include_dmlがFALSEの場合は、このパラメータをNULLに設定します。

ddl_rule_name

include_ddlがTRUEの場合は、このパラメータでDDLルールの名前を指定します。

include_ddlがFALSEの場合は、このパラメータをNULLに設定します。

inclusion_rule

inclusion_ruleがTRUEの場合、このプロシージャはXStreamクライアントのポジティブ・ルール・セットにルールを追加します。

inclusion_ruleがFALSEの場合、ルールはXStreamクライアントのネガティブ・ルール・セットに追加されます。

どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。

and_condition

このパラメータにNULL以外の文字列を指定すると、次に示すようにAND句によって、システム生成されるルール条件の後に指定した条件が追加されます。

(system_condition) AND (and_condition)

指定する条件の変数は、必ず:lcrを使用してください。たとえば、Oracle Streamsタグの16進表現が'02'の場合にかぎり、このプロシージャで生成される表ルールをTRUEと評価するには、次のように条件を指定します。

:lcr.get_tag() = HEXTORAW(''02'')

指定した条件内の:lcr変数は、生成されるルールのタイプに応じて、:dmlまたは:ddlに変換されます。特定のLCRタイプ(行LCRまたはDDL LCR)に依存するLCRメンバー・サブプログラムを指定する場合は、このプロシージャによって適切なルールのみが生成されるように確認する必要があります。

つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをTRUEに、include_ddlパラメータをFALSEに設定します。DDL LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、include_dmlパラメータをFALSEに、include_ddlパラメータをTRUEに設定します。

関連項目: 第275章「論理変更レコードのタイプ」

source_root_name

ソースCDBのルートのグローバル名。たとえば、mycdb.example.comです。

このパラメータがNULLの場合は、ローカルCDBにあるルートのグローバル名が使用されます。ダウンストリーム取得を構成している場合、このパラメータは非NULL値である必要があり、リモート・ソースCDBにあるルートのグローバル名を指定する必要があります。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

注意: このパラメータはCDBにのみ適用されます。

source_container_name

ソース・コンテナの短縮名。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、CDB$ROOTまたはhrpdbです。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

このプロシージャは、include_dmlパラメータ値とinclude_ddlパラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。取得プロセスまたは適用プロセスは、フィルタリングのためのルールを使用します。

関連項目:

- 「使用上の注意」

- 「セキュリティ・モデル」

例

次に、DMLの変更に関して作成される表ルール条件の例を示します。

(((:dml.get_object_owner() = 'HR' and :dml.get_object_name() = 'LOCATIONS'))
and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )

ALTER_INBOUNDプロシージャ

このプロシージャは、XStreamインバウンド・サーバーを変更します。

構文

DBMS_XSTREAM_ADM.ALTER_INBOUND(
server_name IN VARCHAR2,
apply_user  IN VARCHAR2  DEFAULT NULL,
comment     IN VARCHAR2  DEFAULT NULL);

パラメータ

表204-13 ALTER_INBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

変更中のインバウンド・サーバーの名前。既存のインバウンド・サーバーを指定します。所有者を指定しないでください。

apply_user

インバウンド・サーバーのルール・セットを満たすDMLおよびDDL変更をすべて適用するユーザー、ユーザー定義の適用ハンドラを実行するユーザー、およびインバウンド・サーバーのルール用に構成されたカスタムのルールベース変換を実行するユーザー。

クライアント・アプリケーションは、適用ユーザーとしてインバウンド・サーバーに連結する必要があります。

ユーザーを指定して、適用ユーザーを変更してください。この場合、ALTER_INBOUNDプロシージャを起動するユーザーにDBAロールを付与する必要があります。apply_userをSYSに設定できるのは、SYSユーザーに限られています。

NULLの場合、適用ユーザーは変更されません。

適用ユーザーに必要な権限の詳細は、「CREATE_INBOUNDプロシージャ」を参照してください。

comment

インバウンド・サーバーに関連付けられたオプションのコメント。

NULL以外の場合、既存のコメントにかわって指定されたコメントが表示されます。

NULLの場合、既存のコメントは変更されません。

ALTER_OUTBOUNDプロシージャ

このプロシージャは、XStreamアウトバウンド・サーバーの構成を変更します。

このプロシージャは、指定されたアウトバウンド・サーバーを常に変更します。また、次の条件のいずれかが満たされた場合、このプロシージャはアウトバウンド・サーバーの取得プロセスを変更することもできます。

- 取得プロセスがこのパッケージのCREATE_OUTBOUNDプロシージャによって作成されました。

- 取得プロセスで使用されたキューは、CREATE_OUTBOUNDプロシージャによって作成されました。

このプロシージャがアウトバウンド・サーバーの取得プロセスを変更できるかどうかを確認するには、ALL_XSTREAM_OUTBOUNDビューのCAPTURE_NAME列を問い合せます。取得プロセスの名前がこのビューのCAPTURE_NAME列に表示される場合、ALTER_OUTBOUNDプロシージャは取得プロセスのルールを管理するか、取得プロセスの取得ユーザーを変更することができます。このビューのCAPTURE_NAME列がNULLの場合、ALTER_OUTBOUNDプロシージャは取得プロセスを管理できません。

このプロシージャはオーバーロードされています。1つのtable_namesパラメータは、VARCHAR2タイプで、もう1つのtable_namesパラメータは、DBMS_UTILITY.UNCL_ARRAYタイプです。また、一方のschema_namesパラメータはVARCHAR2タイプで、もう一方のschema_namesパラメータはDBMS_UTILITY.UNCL_ARRAYタイプです。これらのパラメータを使用して、表とスキーマのリストをそれぞれ別の方法で入力することができます。これらのパラメータは相互に排他的です。

注意:
Oracle Database 11gリリース2 (11.2.0.2)から、このプロシージャにstart_scnおよびstart_timeの各パラメータが組み込まれています。

構文

DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name           IN VARCHAR2,
table_names           IN DBMS_UTILITY.UNCL_ARRAY,
schema_names          IN DBMS_UTILITY.UNCL_ARRAY,
add                   IN BOOLEAN    DEFAULT TRUE,
capture_user          IN VARCHAR2   DEFAULT NULL,
connect_user          IN VARCHR2    DEFAULT NULL,
comment               IN VARCHAR2   DEFAULT NULL,
inclusion_rule        IN BOOLEAN    DEFAULT TRUE,
start_scn             IN NUMBER     DEFAULT NULL,
start_time            IN TIMESTAMP  DEFAULT NULL,
include_dml           IN BOOLEAN    DEFAULT TRUE,
include_ddl           IN BOOLEAN    DEFAULT FALSE,
source_database       IN VARCHAR2   DEFAULT NULL,
source_container_name IN VARCHAR2   DEFAULT NULL);

DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name           IN VARCHAR2,
table_names           IN VARCHAR2   DEFAULT NULL,
schema_names          IN VARCHAR2   DEFAULT NULL,
add                   IN BOOLEAN    DEFAULT TRUE,
capture_user          IN VARCHAR2   DEFAULT NULL,
connect_user          IN VARCHAR2   DEFAULT NULL,
comment               IN VARCHAR2   DEFAULT NULL,
inclusion_rule        IN BOOLEAN    DEFAULT TRUE,
start_scn             IN NUMBER     DEFAULT NULL,
start_time            IN TIMESTAMP  DEFAULT NULL,
include_dml           IN BOOLEAN    DEFAULT TRUE,
include_ddl           IN BOOLEAN    DEFAULT FALSE,
source_database       IN VARCHAR2   DEFAULT NULL,
source_container_name IN VARCHAR2   DEFAULT NULL);

パラメータ

表204-14 ALTER_OUTBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

変更中のアウトバウンド・サーバーの名前。既存のアウトバウンド・サーバーを指定します。所有者を指定しないでください。

table_names

XStream Out構成に追加、またはXStream Out構成から削除される表。表が追加されるか、または変更されるかは、addパラメータの設定に依存します。

表は、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、表の名前が各要素になります。位置1の最初の表を指定します。最後の位置はNULLにする必要があります。

それぞれの表は、[schema_name.]table_nameという形式で指定する必要があります。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

schema_names

XStream Out構成に追加、またはXStream Out構成から削除されるスキーマ。スキーマが追加されるか、または削除されるかは、addパラメータの設定に依存します。

スキーマは、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、スキーマの名前が各要素になります。位置1の最初のスキーマを指定します。最後の位置はNULLにする必要があります。

注意: このプロシージャでは、schema_namesパラメータとtable_namesパラメータは連結されません。表を指定するには、完全修飾された表名をtable_namesパラメータ(schema_name.table_name)に入力します。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

add

TRUEの場合、このプロシージャは、table_namesパラメータで指定した表、またはschema_namesパラメータで指定したスキーマをXStream Out構成に追加します。

FALSEの場合、このプロシージャは、table_namesパラメータで指定した表、またはschema_namesパラメータで指定したスキーマをXStream Out構成から削除します。

capture_user

ユーザーを指定しますが、このユーザーのセキュリティ・ドメイン内で、取得プロセスは、取得プロセスのルール・セットを満たす変更を取得し、取得プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行します。

ユーザーを指定して、取得ユーザーを変更してください。この場合、ALTER_OUTBOUNDプロシージャを起動するユーザーにDBAロールを付与する必要があります。capture_userをSYSに設定できるのは、SYSユーザーに限られています。

NULLの場合、取得ユーザーは変更されません。

取得ユーザーを変更すると、取得プロセスで使用されるキューに対するエンキュー権限が新しい取得ユーザーに付与され、その取得ユーザーがセキュアなキュー・ユーザーとして構成されます。

取得ユーザーに、その他の必須権限が付与されていることを確認してください。取得ユーザーに必要な権限の詳細は、「CREATE_OUTBOUNDプロシージャ」を参照してください。

このパラメータの値を変更すると、取得プロセスは自動的に停止し、再開します。

注意: 取得プロセスの取得ユーザーがDROP USER . . . CASCADEを使用して削除されると、取得プロセスも自動的に削除されます。

connect_user

指定したアウトバウンド・サーバーに連結して変更ストリームを取得できるユーザー。XStreamクライアント・アプリケーションは、指定された接続ユーザーとしてアウトバウンド・サーバーに連結する必要があります。

ユーザーを指定して、接続ユーザーを変更してください。この場合、ALTER_OUTBOUNDプロシージャを起動するユーザーにDBAロールを付与する必要があります。SYSユーザーのみがconnect_userをSYSに設定できます。

NULLの場合、接続ユーザーは変更されません。

接続ユーザーを変更すると、アウトバウンド・サーバーで使用されるキューに対するデキュー権限が新しい接続ユーザーに付与され、そのユーザーがセキュアなキュー・ユーザーとして構成されます。

接続ユーザーにその他の必須権限が付与されていることを確認してください。接続ユーザーに必要な権限の詳細は、「CREATE_OUTBOUNDプロシージャ」を参照してください。

comment

アウトバウンド・サーバーに関連付けられたオプションのコメント。

NULL以外の場合、既存のコメントにかわって指定されたコメントが表示されます。

NULLの場合、既存のコメントは変更されません。

inclusion_rule

TRUEで、addパラメータがTRUEに設定されている場合は、table_namesパラメータで指定された表とschema_namesパラメータで指定されたスキーマに対するルールがXStream Out構成のポジティブ・ルール・セットに追加されます。表およびスキーマのルールがポジティブ・ルール・セットに含まれている場合、XStream Out構成は表とスキーマに対するDMLおよびDDL変更をクライアント・アプリケーションにストリーム・アウトします。

TRUEで、addパラメータがFALSEに設定されている場合は、table_namesパラメータで指定された表とschema_namesパラメータで指定されたスキーマに対するルールがXStream Out構成のポジティブ・ルール・セットから削除されます。

FALSEで、addパラメータがTRUEに設定されている場合は、table_namesパラメータで指定された表とschema_namesパラメータで指定されたスキーマに対するルールがXStream Out構成のネガティブ・ルール・セットに追加されます。表およびスキーマのルールがネガティブ・ルール・セットに含まれている場合、XStream Out構成は表とスキーマに対するDMLおよびDDL変更をクライアント・アプリケーションにストリーム・アウトしません。

FALSEで、addパラメータがFALSEに設定されている場合は、table_namesパラメータで指定された表とschema_namesパラメータで指定されたスキーマに対するルールがXStream Out構成のネガティブ・ルール・セットから削除されます。

start_scn

データベースの有効なSCNのうち、取得プロセスによる変更の取得の開始時に使用するSCN(開始時SCN)。SCN値を有効にするには、取得プロセスの最初のSCN値以上にする必要があります。

有効なSCNが指定された場合、取得プロセスは、再起動したときに指定のSCNから変更を取得します。

無効なSCNが指定された場合はエラーが戻されます。

NULLで、start_timeパラメータがNULLの場合、開始SCNは変更されません。

NULLで、start_timeパラメータがNULL以外の場合、開始SCNは指定された開始時間に一致するように変更されます。

start_scnパラメータとstart_timeパラメータは、両方同時には指定できません。

注意: 取得プロセスが有効な場合、ALTER_OUTBOUNDプロシージャは自動的に停止し、start_scnパラメータがNULL以外のときに取得プロセスを再起動します。取得プロセスが無効な場合、ALTER_OUTBOUNDプロシージャは、start_scnパラメータがNULL以外のときに取得プロセスを自動的に起動します。

start_time

取得プロセスによる変更の取得の開始時点となる有効な時間。時間を有効にするには、取得プロセスの最初のSCN値以上であるSCN値の時間と一致している必要があります。

有効な時間が指定された場合、取得プロセスは再起動したときに指定の時間の変更を取得します。

無効な時間が指定された場合はエラーが戻されます。

NULLで、start_scnパラメータがNULLの場合、開始時間は変更されません。

NULLで、start_scnパラメータがNULL以外の場合、開始時間は指定された開始SCNと一致するように変更されます。

start_scnパラメータとstart_timeパラメータは、両方同時には指定できません。

注意: 取得プロセスが有効な場合、ALTER_OUTBOUNDプロシージャは自動的に停止し、start_timeパラメータがNULL以外のときに取得プロセスを再起動します。取得プロセスが無効な場合、ALTER_OUTBOUNDプロシージャは、start_timeパラメータがNULL以外のときに取得プロセスを自動的に起動します。

include_dml

TRUEに設定すると、DMLの変更に関するDMLルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するDDLルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

source_database

指定したtable_namesとschema_namesが配置されているコンテナのグローバル名。

source_databaseがNULL以外の場合、ソース・データベースのグローバル名に基づいてLCRをフィルタリングする条件がアウトバウンド・サーバーのルールに追加されます。

source_container_name

ソース・コンテナの短縮名。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、CDB$ROOTまたはhrpdbです。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

次のリストは、table_namesおよびschema_namesパラメータの様々な組合せにおけるアウトバウンド・サーバーの動作について説明しています。

- table_namesパラメータとschema_namesパラメータが両方ともNULLまたは空の場合、XStream Out構成に対するルールは変更されません。
このプロシージャはオーバーロードされています。table_namesおよびschema_namesパラメータのデフォルトはNULLです。同じコールでtable_namesとschema_namesの両方にNULLを指定しないでください。指定した場合は、エラーPLS-00307が戻されます。

- table_namesパラメータとschema_namesパラメータが両方とも指定された場合、表およびスキーマのルールは、addパラメータの設定に応じてXStream Out構成に追加、またはXStream Out構成から削除されます。

- table_namesパラメータが指定されていて、schema_namesパラメータがNULLまたは空の場合、表のルールは、addパラメータの設定に応じてXStream Out構成に追加、またはXStream Out構成から削除されます。スキーマの既存ルールは、XStream Out構成に対して変更されません。

- table_namesパラメータがNULLまたは空で、schema_namesパラメータが指定されている場合、スキーマのルールは、addパラメータの設定に応じてXStream Out構成に追加、またはXStream Out構成から削除されます。表の既存ルールは、XStream Out構成に対して変更されません。

table_namesおよびschema_namesパラメータでDBMS_UTILITY.UNCL_ARRAYタイプを使用するプロシージャの場合、両方のパラメータを指定する必要があります。表のみを指定するには、schema_namesパラメータを指定して空にする必要があります。スキーマのみを指定するには、table_namesパラメータを指定して空にする必要があります。

注意:
空の配列には、1つのNULLエントリが含まれています。

CREATE_INBOUNDプロシージャ

このプロシージャは、XStreamインバウンド・サーバーとそのキューを作成します。

注意:
1つのクライアント・アプリケーションで複数のセッションを作成できます。各セッションは1つのインバウンド・サーバーにのみ連結でき、各インバウンド・サーバーは一度に1つのセッションのみを処理できます。ただし、クライアント・アプリケーションのセッションは、それぞれ異なるインバウンド・サーバーに接続できます。インバウンド・サーバーへの連結の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』およびOracle Database XStream Java APIリファレンスを参照してください。

構文

DBMS_XSTREAM_ADM.CREATE_INBOUND(
server_name IN VARCHAR2,
queue_name  IN VARCHAR2,
apply_user  IN VARCHAR2  DEFAULT NULL,
comment     IN VARCHAR2  DEFAULT NULL);

パラメータ

表204-15 CREATE_INBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

作成中のインバウンド・サーバーの名前。NULL指定は許可されていません。所有者を指定しないでください。

指定した名前が既存のアウトバウンド・サーバー、インバウンド・サーバー、適用プロセス、またはメッセージ・クライアントの名前と一致しないようにしてください。

注意: server_nameの設定が30バイトを超えることはできません。また、インバウンド・サーバーの作成後に変更することはできません。

queue_name

インバウンド・サーバーによって使用され、[schema_name.]queue_nameとして指定されたローカル・キューの名前。

指定したキューが存在する場合は、それが使用されます。指定したキューが存在しない場合は、このプロシージャによって作成されます。

たとえば、xstream_queueというキューをxstrmadminスキーマに指定するには、このパラメータにxstrmadmin.xstream_queueと入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

注意: インバウンド・サーバーのキューは、エラー・トランザクションを格納する目的でのみ使用されます。

apply_user

適用ユーザー。NULLの場合は、現在のユーザーがデフォルトになります。

クライアント・アプリケーションは、適用ユーザーとしてインバウンド・サーバーに連結する必要があります。

適用ユーザーとは、そのセキュリティ・ドメイン内で、LCRがインバウンド・サーバーのルール・セットを満たしているかどうかをインバウンド・サーバーが評価します。また、データベース・オブジェクトにDMLおよびDLLの変更を直接適用し、インバウンド・サーバーのルールに対して構成されているカスタム・ルールベースの変換を実行し、インバウンド・サーバーに対して構成されている適用ハンドラを実行するユーザーのことです。このユーザーは、これらのアクションの実行に必要な権限を持っている必要があります。このプロシージャは、インバウンド・サーバーによって使用されるキューに対するデキュー権限を適用ユーザーに付与し、ユーザーをセキュアなキュー・ユーザーとして構成します。

このプロシージャによって付与される権限だけでなく、次の権限を適用ユーザーに付与する必要があります。

- 適用オブジェクトのDML変更とDDL変更を実行する際に必要な権限

- インバウンド・サーバーで使用されるルール・セットに対するEXECUTE権限

- ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

- すべての適用ハンドラ・プロシージャのEXECUTE権限

これらの権限は適用ユーザーに直接付与することも、ロールを通して付与することもできます。

さらに、インバウンド・サーバーによって実行されるサブプログラムで起動するすべてのパッケージ(オラクル社が提供するパッケージを含む)に対するEXECUTE権限を、適用ユーザーに付与する必要もあります。これらの権限は、適用ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

注意: インバウンド・サーバーの適用ユーザーがDROP USER . . . CASCADEを使用して削除された場合は、インバウンド・サーバーも自動的に削除されます。

comment

インバウンド・サーバーに関連付けられたオプションのコメント。

使用上の注意

デフォルトでは、インバウンド・サーバーはルールまたはルール・セットを使用しません。したがって、インバウンド・サーバーは、XStreamクライアント・アプリケーションにより送信されたLCRをすべて適用します。ただし、インバウンド・サーバーに送信されたLCRをフィルタリングするために、DBMS_XSTREAM_ADMパッケージとDBMS_RULE_ADMパッケージを使用して、ルールおよびルール・セットをインバウンド・サーバーに追加できます。

CDBでは、ルートまたはPDBのどちらでもCREATE_INBOUNDプロシージャを実行できます。インバウンド・サーバーは1つのソース・データベースからのLCRの受信に限定されており、そのソース・データベースのローカル・コンテナにのみ変更を適用します。インバウンド・サーバーがルート・レベルにある場合、適用ユーザーは共通ユーザーである必要があります。

関連項目:
Oracle Database XStreamガイド

CREATE_OUTBOUNDプロシージャ

このプロシージャは、XStreamアウトバウンド・サーバー、キューおよび取得プロセスを作成して、クライアント・アプリケーションがOracleデータベースの変更をストリーム・アウトできるようにします。

このプロシージャはオーバーロードされています。1つのtable_namesパラメータは、VARCHAR2タイプで、もう1つのtable_namesパラメータは、DBMS_UTILITY.UNCL_ARRAYタイプです。また、一方のschema_namesパラメータはVARCHAR2タイプで、もう一方のschema_namesパラメータはDBMS_UTILITY.UNCL_ARRAYタイプです。これらのパラメータを使用して、表とスキーマのリストをそれぞれ別の方法で入力することができます。これらのパラメータは相互に排他的です。

注意:

- 1つのクライアント・アプリケーションで複数のセッションを作成できます。各セッションは1つのアウトバウンド・サーバーにのみ連結でき、各アウトバウンド・サーバーは一度に1つのセッションのみを処理できます。ただし、クライアント・アプリケーションのセッションは、それぞれ異なるアウトバウンド・サーバーに接続できます。アウトバウンド・サーバーへの連結の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』のOCIXStreamOutAttach()に関する項およびOracle Database XStream Java APIリファレンスを参照してください。

- capture_nameパラメータがNULLの場合は、このプロシージャによって作成される取得プロセスの名前が自動的に生成されます。

- このプロシージャは、作成したキューの名前を自動的に生成します。

- このプロシージャは、取得プロセスと、作成したアウトバウンド・サーバーの両方を有効化します。

- Oracle Database 11gリリース2 (11.2.0.2)から、このプロシージャにcapture_nameパラメータが組み込まれています。

構文

DBMS_XSTREAM_ADM.CREATE_OUTBOUND(
server_name            IN VARCHAR2,
source_database        IN VARCHAR2  DEFAULT NULL,
table_names            IN DBMS_UTILITY.UNCL_ARRAY,
schema_names           IN DBMS_UTILITY.UNCL_ARRAY,
capture_user           IN VARCHAR2  DEFAULT NULL,
connect_user           IN VARCHAR2  DEFAULT NULL,
comment                IN VARCHAR2  DEFAULT NULL,
capture_name           IN VARCHAR2  DEFAULT NULL,
include_dml            IN BOOLEAN   DEFAULT TRUE,
include_ddl            IN BOOLEAN   DEFAULT FALSE,
source_root_name       IN  VARCHAR2   DEFAULT NULL,
source_container_name  IN  VARCHAR2   DEFAULT NULL);

DBMS_XSTREAM_ADM.CREATE_OUTBOUND(
server_name            IN VARCHAR2,
source_database        IN VARCHAR2  DEFAULT NULL,
table_names            IN VARCHAR2  DEFAULT NULL,
schema_names           IN VARCHAR2  DEFAULT NULL,
capture_user           IN VARCHAR2  DEFAULT NULL,
connect_user           IN VARCHAR2  DEFAULT NULL,
comment                IN VARCHAR2  DEFAULT NULL,
capture_name           IN VARCHAR2  DEFAULT NULL,
include_dml            IN BOOLEAN   DEFAULT TRUE,
include_ddl            IN BOOLEAN   DEFAULT FALSE,
source_root_name       IN  VARCHAR2   DEFAULT NULL,
source_container_name  IN  VARCHAR2   DEFAULT NULL);

パラメータ

表204-16 CREATE_OUTBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

作成中のアウトバウンド・サーバーの名前。NULL指定は許可されていません。所有者を指定しないでください。

指定した名前が既存のアウトバウンド・サーバー、インバウンド・サーバー、適用プロセス、またはメッセージ・クライアントの名前と一致しないようにしてください。

注意: server_nameの設定は30バイトを超えることはできません。また、アウトバウンド・サーバーの作成後に変更することはできません。

source_database

ソース・データベースのグローバル名。ソース・データベースは、取得対象の変更が発生したデータベースです。

NULL以外の場合、ソース・データベースのグローバル名に基づいてLCRをフィルタリングする条件がアウトバウンド・サーバーのルールに追加されます。NULLに設定すると、生成されるルールに対してソース・データベースに関する条件が追加されません。

CDBでは、ルールに関連するコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、mycdb.example.comまたはhrpdb.example.comが使用できます。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

CDB以外では、NULL以外の場合、また指定された名前が現在のデータベースのグローバル名と異なる場合、ダウンストリーム取得が想定されます。この場合は、ソース・データベースからダウンストリーム・データベースへのREDOデータの転送を構成してから、CREATE_OUTBOUNDプロシージャを実行します。詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

table_names

DMLおよびDDLの変更がXStreamクライアント・アプリケーションにストリーム・アウトされる表。表は、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、表の名前が各要素になります。位置1の最初の表を指定します。最後の位置はNULLにする必要があります。

それぞれの表は、[schema_name.]table_nameという形式で指定する必要があります。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

schema_names

DMLとDDLの変更がXStreamクライアント・アプリケーションにストリーム・アウトされるスキーマ。スキーマは、次の方法で指定できます。

- VARCHAR2タイプのカンマ区切りリスト。

- DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列で、スキーマの名前が各要素になります。位置1の最初のスキーマを指定します。最後の位置はNULLにする必要があります。

注意: このプロシージャでは、schema_namesパラメータとtable_namesパラメータは連結されません。表を指定するには、完全修飾された表名をtable_namesパラメータ(schema_name.table_name)に入力します。

関連項目: このパラメータの詳細は、「使用上の注意」を参照してください。

capture_user

ユーザーを指定しますが、このユーザーのセキュリティ・ドメイン内で、取得プロセスは、取得プロセスのルール・セットを満たす変更を取得し、取得プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行します。NULLの場合は、現在のユーザーがデフォルトになります。

このプロシージャは、取得プロセスによって使用されるキューに対するエンキュー権限を取得ユーザーに付与し、ユーザーをセキュアなキュー・ユーザーとして構成します。

なお、取得ユーザーには次の権限が必要です。

- 取得プロセスで使用されるルール・セットのEXECUTE権限

- ポジティブ・ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

これらの権限は適用ユーザーに直接付与することも、ロールを通して付与することもできます。

また、取得ユーザーには、取得プロセスによって実行されるルールベース変換で起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)のEXECUTE権限が付与されている必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

取得ユーザーを設定できるのは、DBAロールを付与されたユーザーに限られています。capture_userをSYSに設定できるのは、SYSユーザーに限られています。

取得ユーザーは、データベース・オブジェクトに対する権限を持っていなくても、データベース・オブジェクトに対する変更を取得できます。取得プロセスでは、データベース・オブジェクトに対する変更をカスタムのルールベース変換ファンクションに渡すことができます。したがって、取得プロセスを構成するときは、セキュリティ問題に留意する必要があります。

connect_user

指定したアウトバウンド・サーバーに連結して変更ストリームを取得できるユーザー。クライアント・アプリケーションは、指定した接続ユーザーとしてアウトバウンド・サーバーに連結する必要があります。

NULLの場合は、現在のユーザーがデフォルトになります。

接続ユーザーとは、そのセキュリティ・ドメインでアウトバウント・サーバーがルール・セットを照合してLCRを評価し、アウトバウンド・サーバーのルールに対して構成されているカスタム・ルールベースの変換を実行するユーザーです。このユーザーは、これらのアクションの実行に必要な権限を持っている必要があります。このプロシージャは、アウトバウンド・サーバーによって使用されるキューに対するデキュー権限を接続ユーザーに付与し、ユーザーをセキュアなキュー・ユーザーとして構成します。

このプロシージャによって付与された権限だけでなく、次の権限も接続ユーザーに付与します。

- アウトバウンド・サーバーで使用されるルール・セットに対するEXECUTE権限

- ルール・セットで使用されるすべてのルールベース変換ファンクションのEXECUTE権限

これらの権限は接続ユーザーに直接付与することも、ロールを通して付与することもできます。

さらに、アウトバウンド・サーバーによって実行されるサブプログラムで起動するすべてのパッケージ(オラクル社が提供するパッケージを含む)に対するEXECUTE権限を、接続ユーザーに付与する必要もあります。これらの権限は、適用ユーザーに直接付与する必要があります。ロールを通して付与することはできません。

comment

アウトバウンド・サーバーに関連付けられたオプションのコメント。

capture_name

アウトバウンド・サーバー用の変更を取得するように構成された取得プロセスの名前。所有者を指定しないでください。

取得プロセスは存在してはいけません。指定した名前が既存の取得プロセスの名前と一致する場合、エラーが発生します。

名前が既存の取得プロセスの名前と一致しない場合は、指定した名前を付けた取得プロセスが新規に作成されます。

NULLの場合は、システム生成の名前を持つ取得プロセスが新規に作成されます。

注意: 取得プロセスは、作成した後で名前を変更することはできません。

include_dml

TRUEに設定すると、DMLの変更に関するDMLルールが作成されます。FALSEに設定すると、DMLルールは作成されません。NULLは許可されません。

include_ddl

TRUEに設定すると、DDLの変更に関するDDLルールが作成されます。FALSEに設定すると、DDLルールは作成されません。NULLは許可されません。

source_root_name

ソースCDBのルートのグローバル名。たとえば、mycdb.example.comです。

このパラメータがNULLの場合は、ローカルCDBにあるルートのグローバル名が使用されます。ダウンストリーム取得を構成している場合、このパラメータは非NULL値である必要があり、リモート・ソースCDBにあるルートのグローバル名を指定する必要があります。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

注意: このパラメータはCDBにのみ適用されます。

source_container_name

ソース・コンテナの短縮名。コンテナは、ルートまたはPDBのいずれでもかまいません。たとえば、CDB$ROOTまたはhrpdbです。CDBでのこのパラメータの設定の詳細は、『Oracle Database XStreamガイド』を参照してください。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

次のリストは、table_namesおよびschema_namesパラメータの様々な組合せにおけるアウトバウンド・サーバーの動作について説明しています。

- table_namesおよびschema_namesパラメータが両方ともNULLか空の場合、アウトバウンド・サーバーはDMLとDDLのすべての変更をクライアント・アプリケーションにストリームします。
このプロシージャはオーバーロードされています。table_namesおよびschema_namesパラメータのデフォルトはNULLです。同じコールでtable_namesとschema_namesの両方にNULLを指定しないでください。指定した場合は、エラーPLS-00307が戻されます。

- table_namesおよびschema_namesパラメータを両方とも指定した場合、アウトバウンド・サーバーは指定した表とスキーマに対するDMLとDDLの変更をストリームします。

- table_namesパラメータが指定されていて、schema_namesパラメータがNULLまたは空の場合、アウトバウンド・サーバーは指定した表に対するDMLとDDLの変更をストリームします。

- table_namesパラメータがNULLまたは空で、schema_namesパラメータが指定されている場合、アウトバウンド・サーバーは指定されたスキーマに対するDMLおよびDLLの変更をストリームします。

table_namesおよびschema_namesパラメータでDBMS_UTILITY.UNCL_ARRAYタイプを使用するプロシージャの場合、両方のパラメータを指定する必要があります。表のみを指定するには、schema_namesパラメータを指定して空にする必要があります。スキーマのみを指定するには、table_namesパラメータを指定して空にする必要があります。

注意:
空の配列には、1つのNULLエントリが含まれています。

DELETE_COLUMNプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)から列を削除する宣言ルールベースの変換を追加または削除します。

指定したルールがTRUEと評価されるときに変換を実行する場合、ルールはXStreamクライアントのポジティブ・ルール・セットに入っている必要があります。XStreamクライアントには、取得プロセス、伝播プロセスおよび適用プロセスがあります。

注意:

- DELETE_COLUMNプロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。

- DELETE_COLUMNプロシージャは、行LCR内の比較的少ない数の列を削除する場合に役立ちます。行LCR内のほとんどの列を削除し、比較的少ない数の列を保持するには、このパッケージのKEEP_COLUMNSプロシージャの使用を検討してください。

- 宣言的変換では、行LCRのみを変換できます。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLルールを指定した場合は、エラーが発生します。

関連項目:

- 宣言的なルールベース変換および取得プロセスでサポートされるデータ・タイプの詳細は、『Oracle Database XStreamガイド』を参照してください。

- KEEP_COLUMNSプロシージャ

構文

DBMS_XSTREAM_ADM.DELETE_COLUMN(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_name   IN  VARCHAR2,
value_type    IN  VARCHAR2   DEFAULT '*',
step_number   IN  NUMBER     DEFAULT 0,
operation     IN  VARCHAR2   DEFAULT 'ADD');

パラメータ

表204-17 DELETE_COLUMNプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列を削除する表の名前で、[schema_name.]object_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

column_name

ルールを満たす各行LCRから削除する列の名前。

value_type

行LCRの新しい値から列を削除する場合は、'NEW'を指定します。

行LCRの古い値から列を削除する場合は、'OLD'を指定します。

行LCRの新しい値と古い値の両方から列を削除する場合は、'*'を指定します。

step_number

変換の実行順序。

関連項目: 変換の順序の詳細は、『Oracle Database XStreamガイド』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列削除の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_nameおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、DELETE_COLUMNプロシージャの動作を示します。

table_name

column_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての列削除変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されているstep_numberのすべての列削除変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているcolumn_nameおよびstep_numberのすべての列削除変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているtable_nameおよびstep_numberのすべての列削除変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているcolumn_nameのすべての列削除変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているtable_nameおよびcolumn_nameのすべての列削除変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameのすべての列削除変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているtable_name、column_nameおよびstep_numberのすべての列削除変換が削除されます。

DROP_INBOUNDプロシージャ

このプロシージャは、インバウンド・サーバーの構成を削除します。

このプロシージャでは、指定されたインバウンド・サーバーが常に削除されます。また、次の条件がすべて満たされている場合は、インバウンド・サーバーのキューも削除されます。

- CREATE_INBOUNDプロシージャを1回コールして、キューが作成されました。

- インバウンド・サーバーは、このキューの唯一のサブスクライバです。

関連項目:
「CREATE_INBOUNDプロシージャ」

構文

DBMS_XSTREAM_ADM.DROP_INBOUND(
server_name IN VARCHAR2);

パラメータ

表204-18 DROP_INBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

削除中のインバウンド・サーバーの名前。既存のインバウンド・サーバーを指定します。所有者を指定しないでください。

DROP_OUTBOUNDプロシージャ

このプロシージャは、アウトバウンド・サーバーの構成を削除します。

このプロシージャでは、指定されたアウトバウンド・サーバーが常に削除されます。また、次の条件が両方とも満たされている場合は、アウトバウンド・サーバーで使用されるキューも削除されます。

- キューは、このパッケージのCREATE_OUTBOUNDプロシージャにより作成されました。

- アウトバウンド・サーバーは、このキューの唯一のサブスクライバです。

前述の条件のいずれかが満たされていない場合、DROP_OUTBOUNDプロシージャはアウトバウント・サーバーのみを削除します。キューは削除されません。

また、次の条件が両方とも満たされている場合は、アウトバウンド・サーバーの取得プロセスも削除されます。

- このプロシージャでは、アウトバウンド・サーバーのキューを削除できます。

- 取得プロセスがCREATE_OUTBOUNDプロシージャによって作成されました。

このプロシージャがキューを削除できても取得プロセスを管理できない場合には、取得プロセスを削除せずにキューが削除されます。

関連項目:

- 「ADD_OUTBOUNDプロシージャ」

- 「CREATE_OUTBOUNDプロシージャ」

構文

DBMS_XSTREAM_ADM.DROP_OUTBOUND(
server_name IN VARCHAR2);

パラメータ

表204-19 DROP_OUTBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

削除中のアウトバウンド・サーバーの名前。既存のアウトバウンド・サーバーを指定します。所有者を指定しないでください。

ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ

このプロシージャは、Oracle Streamsコンポーネントに対してXStream最適化およびパフォーマンス最適化を有効にします。

このプロシージャは、XStream最適化および最適化を有効にするOracle Streamsユーザーを対象としています。たとえば、Oracleデータベース間の変更を取得プロセスと適用プロセスを使用してレプリケートする、Oracle Streamsレプリケーション構成に対する最適化を有効にできます。

これらの機能と最適化は、アウトバウンド・サーバー、インバウンド・サーバーおよびアウトバウンド・サーバーに変更を送信する取得プロセスなどのXStreamコンポーネントに対して自動的に有効化されます。XStreamコンポーネントに対してこのプロシージャを実行する必要はありません。

XStream最適化が有効になると、Oracle StreamsコンポーネントはIDキーLCRと順序LCRをストリームすることができます。XStreamパフォーマンス最適化により、次のような様々な領域で効率を向上させることができます。

- LCRの処理

- 大規模なトランザクションの処理

- 適用時のDMLの実行

- 依存性の計算とスケジューリング

- 取得プロセスの並列性

構文

DBMS_XSTREAM_ADM.ENABLE_GG_XSTREAM_FOR_STREAMS(
enable IN BOOLEAN  TRUE);

パラメータ

表204-20 ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャのパラメータ

パラメータ

説明

enable

TRUEの場合は、Oracle Streamsコンポーネントに対するXStreamパフォーマンス最適化を有効にします。

FALSEの場合は、Oracle Streamsコンポーネントに対するXStreamパフォーマンス最適化を無効にします。

使用上の注意

このプロシージャには、次の使用上の注意が適用されます。

- このプロシージャを実行すると、すべての取得プロセスと適用プロセスが再起動します。

- このプロシージャの実行後は、次のビューのPURPOSE列にXStream Streamsが表示されます。

- ALL_APPLY

- DBA_APPLY

- ALL_CAPTURE

- DBA_CAPTURE

- Oracle Streamsコンポーネントに対してXStreamパフォーマンス最適化を有効にするには、Oracle GoldenGate製品のライセンスが必要です。

関連項目:

- IS_GG_XSTREAM_FOR_STREAMSファンクション

- 『Oracle Database XStreamガイド』の第1章「XStreamの前提条件」

GET_MESSAGE_TRACKINGファンクション

現在のセッションの追跡ラベルを戻します。

関連項目:
SET_MESSAGE_TRACKINGプロシージャ

構文

DBMS_STREAMS_ADM.GET_MESSAGE_TRACKING
RETURN VARCHAR2;

GET_TAGファンクション

このファンクションは、現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

関連項目:

- 「SET_TAGプロシージャ」

- タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS_ADM.GET_TAG
RETURN RAW;

例

次の例は、現行の論理変更レコード(LCR)タグを出力として表示する方法を示しています。

SET SERVEROUTPUT ON
DECLARE
raw_tag RAW(2000);
BEGIN
raw_tag := DBMS_STREAMS_ADM.GET_TAG();
DBMS_OUTPUT.PUT_LINE('Tag Value = ' || RAWTOHEX(raw_tag));
END;
/

DUALビューを問い合せて値を表示することもできます。

SELECT DBMS_STREAMS_ADM.GET_TAG FROM DUAL;

IS_GG_XSTREAM_FOR_STREAMSファンクション

このファンクションは、Oracle Streamsコンポーネントに対するXStreamパフォーマンス最適化が有効な場合はTRUEを戻し、Oracle Streamsコンポーネントに対するXStreamパフォーマンス最適化が無効な場合はFALSEを戻します。

関連項目:
「ENABLE_GG_XSTREAM_FOR_STREAMSプロシージャ」

構文

DBMS_XSTREAM_ADM.IS_GG_XSTREAM_FOR_STREAMS
RETURN BOOLEAN;

KEEP_COLUMNSプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内の列のリストを保持する宣言ルールベースの変換を追加または削除します。リストに含まれていない列は、変換によって行LCRから削除されません。

指定したルールがTRUEと評価されるときに変換を実行する場合、ルールはXStreamクライアントのポジティブ・ルール・セットに入っている必要があります。XStreamクライアントには、取得プロセス、伝播プロセスおよび適用プロセスがあります。

このプロシージャはオーバーロードされています。column_listパラメータは、VARCHAR2タイプで、column_tableパラメータは、DBMS_UTILITY.LNAME_ARRAYタイプです。これらのパラメータによって、列のリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。

注意:

- KEEP_COLUMNSプロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。

- KEEP_COLUMNSプロシージャは、行LCR内の比較的少ない数の列を保持する場合に役立ちます。行LCR内のほとんどの列を保持し、比較的少ない数の列を削除するには、このパッケージのDELETE_COLUMNプロシージャの使用を検討してください。

- 宣言的変換では、行LCRのみを変換できます。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLルールを指定した場合は、エラーが発生します。

関連項目:

- 宣言的なルールベースの変換とOracle Streamsの取得プロセスによってサポートされているデータ・タイプの詳細は、『Oracle Database XStreamガイド』を参照してください。

- DELETE_COLUMNプロシージャ

構文

DBMS_XSTREAM_ADM.KEEP_COLUMNS(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_list   IN  VARCHAR2,
value_type    IN  VARCHAR2 DEFAULT '*',
step_number   IN  NUMBER DEFAULT 0,
operation     IN  VARCHAR2 DEFAULT 'ADD');

DBMS_XSTREAM_ADM.KEEP_COLUMNS(
rule_name     IN  VARCHAR2,
table_name    IN  VARCHAR2,
column_table  IN  DBMS_UTILITY.LNAME_ARRAY,
value_type    IN  VARCHAR2 DEFAULT '*',
step_number   IN  NUMBER DEFAULT 0,
operation     IN  VARCHAR2 DEFAULT 'ADD');

パラメータ

表204-21 KEEP_COLUMNSプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列を保存する表の名前で、[schema_name.]object_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

column_list

ルールを満たす各行LCRで保持される列の名前。VARCHAR2タイプのカンマ区切りリストを指定します。リストに含まれていない列は、変換によって行LCRから削除されません。

このパラメータがNULLに設定され、column_tableパラメータもNULLに設定されている場合は、エラーが発生します。

column_table

ルールを満たす各行LCRで保持される列の名前。DBMS_UTILITY.LNAME_ARRAYタイプのPL/SQL連想配列を指定し、この場合、各要素は表の名前です。最初のスキーマの位置は1です。最後の位置はNULLにする必要があります。

表に含まれていない列は、変換によって行LCRから削除されません。

このパラメータがNULLに設定され、column_listパラメータもNULLに設定されている場合は、エラーが発生します。

value_type

行LCRの新しい値に列を保持する場合は、'NEW'を指定します。

行LCRの古い値に列を保持する場合は、'OLD'を指定します。

行LCRの新しい値と古い値の両方に列を保持する場合は、'*'を指定します。

step_number

変換の実行順序。

関連項目: 変換の順序の詳細は、『Oracle Database XStreamガイド』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列保持の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_list、column_tableおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、KEEP_COLUMNSプロシージャの動作を示します。

table_name

column_list/column_table

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての列保持変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されているstep_numberのすべての列保持変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているcolumn_list/column_tableおよびstep_numberのすべての列保持変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているtable_nameおよびstep_numberのすべての列保持変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているcolumn_list/column_tableのすべての列保持変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているtable_nameおよびcolumn_list/column_tableのすべての列保持変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameのすべての列保持変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているtable_name、column_list/column_tableおよびstep_numberのすべての列保持変換が削除されます。

MERGE_STREAMSプロシージャ

このプロシージャは、1つの取得プロセスからのストリームを別の取得プロセスからのストリームとマージします。

このプロシージャは、通常、このパッケージのSPLIT_STREAMSプロシージャを使用して分割された2つのストリームのマージに使用します。SPLIT_STREAMSプロシージャは、ストリームの分割時に元のストリームのコンポーネントをクローニングします。このため、この項では次の用語が使用されています。

- 分割前のストリームには、元のキュー、元の取得プロセスおよび元の伝播があります。

- SPLIT_STREAMSプロシージャによって分割されたストリームには、クローニングされたキュー、クローニングされた取得プロセスおよびクローニングされた伝播があります。

このプロシージャは、MERGE_STREAMS_JOBプロシージャによってコールされます。MERGE_STREAMS_JOBプロシージャは、安全にマージできるようにストリームがユーザー指定のマージしきい値内にあるかどうかを判別します。ストリームがマージしきい値内にない場合、MERGE_STREAMS_JOBプロシージャは何も行いません。通常、MERGE_STREAMSプロシージャを直接実行するのではなく、MERGE_STREAMS_JOBプロシージャを実行することをお薦めします。

ただし、次の条件を満たす場合は、MERGE_STREAMSプロシージャを直接実行することを選択できます。

- 分割ストリームの宛先での問題が修正されており、宛先キューが変更を受け入れることができる。

- 分割ストリームによって使用されるクローニングされた取得プロセスが開始され、変更を取得している。

- 接続先データベースにある適用プロセスが、クローニングされた取得プロセスによって取得された変更を適用している。

- クローニングされた取得プロセスのGV$STREAMS_CAPTUREビューのCAPTURE_MESSAGE_CREATE_TIMEが、元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEに追いついているか、ほとんど追いついている。クローニングされた取得プロセスは、元の取得プロセスに完全には追いつかない場合があります。そのため、クローニングされた取得プロセスが元の取得プロセスにほとんど追いついている場合、分割ストリームをマージできます。

MERGE_STREAMSプロシージャは、次の操作を実行します。

1. クローニングされた取得プロセスを停止します。

2. 元の取得プロセスを停止します。

3. クローニングされた伝播を元の伝播にコピーして戻します。コピーして戻した後の伝播の名前は、元の伝播と同じ名前です。

4. 次の2つのSCN値の小さいほうのSCN値から元の取得プロセスを開始します。

- クローニングされた伝播の確認済SCN

- 元の取得プロセスによって取得された変更を伝播する他の伝播の、一番小さい確認済SCN

元の取得プロセスを開始すると、すでに取得されている変更が再取得されたり、クローニングされた取得プロセスによってすでに取得されている変更が取得される場合があります。どちらの場合も、重複する変更は、それらを受け取る適用プロセスによって破棄されます。

5. クローニングされた伝播を削除します。

6. クローニングされた取得プロセスを削除します。

7. クローニングされたキューを削除します。

関連項目:

- MERGE_STREAMSプロシージャ

- SPLIT_STREAMSプロシージャ

構文

DBMS_XSTREAM_ADM.MERGE_STREAMS(
cloned_propagation_name  IN  VARCHAR2,
propagation_name         IN  VARCHAR2  DEFAULT NULL,
queue_name               IN  VARCHAR2  DEFAULT NULL,
perform_actions          IN  BOOLEAN   DEFAULT TRUE,
script_name              IN  VARCHAR2  DEFAULT NULL,
script_directory_object  IN  VARCHAR2  DEFAULT NULL);

パラメータ

表204-22 MERGE_STREAMSプロシージャのパラメータ

パラメータ

説明

cloned_propagation_name

SPLIT_STREAMSプロシージャを使用して元のストリームから分割されたストリームによって使用されるクローニングされた伝播の名前。クローニングされた伝播の名前により、クローニングされた伝播によって使用されるクローニングされたキューおよびクローニングされた取得プロセスも識別されます。

既存の伝播名を指定する必要があります。所有者を指定しないでください。

propagation_name

元のストリームにマージされて戻される伝播の名前。

NULLの場合、元のストリーム内の元の伝播の名前が使用されます。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

元の伝播名とは異なる名前を使用する場合、またはSPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合は、NULL以外の値を指定します。

NULL以外の値を指定した場合、次の条件のいずれかに該当するとエラーが発生します。

- queue_nameパラメータで指定したキューが存在しない。

- queue_nameパラメータで指定したキューが存在するが、取得プロセスによって使用されていない。

queue_name

マージされて戻される伝播のソース・キューであるキューの名前。

NULLの場合、既存の元のキューが、マージされて戻される伝播のソース・キューとなります。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

SPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合、NULL以外の値を指定します。マージされたストリームの変更を取得する取得プロセスによって使用される既存のキューの名前を指定します。

perform_actions

TRUEに設定すると、ストリームを直接マージするために必要な処理が実行されます。

FALSEに設定すると、ストリームを直接マージするために必要な処理は実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、perform_actionsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、ストリームをマージするために必要なすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、perform_actionsパラメータがTRUEの場合は、指定のスクリプトが生成され、ストリームを直接分割する処理が実行されます。

このパラメータがNULLで、perform_actionsパラメータがTRUEの場合は、ストリームを直接マージする処理が実行され、スクリプトは生成されません。

このパラメータがNULLで、perform_actionsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

使用上の注意

MERGE_STREAMSプロシージャを使用して、SPLIT_STREAMSプロシージャを使用して分割されなかった2つのストリームをマージできます。この方法でストリームをマージすることによって、1つのデータベースで複数の取得プロセスを実行しているときに、リソースを節約してパフォーマンスを向上させることができます。

DBA_STREAMS_SPLIT_MERGEビューは、分割およびマージ操作に関する情報を示します。

MERGE_STREAMS_JOBプロシージャ

このプロシージャは、元の取得プロセスおよびクローニングされた取得プロセスが、指定されたマージしきい値内にあるかどうかを判別します。マージしきい値内にある場合、このプロシージャはMERGE_STREAMSプロシージャを実行して2つのストリームをマージします。

このプロシージャは、通常、このパッケージのSPLIT_STREAMSプロシージャを使用して分割された2つのストリームのマージに使用します。SPLIT_STREAMSプロシージャは、ストリームの分割時に元のストリームのコンポーネントをクローニングします。このため、この項では次の用語が使用されています。

- 分割前のストリームには、元のキュー、元の取得プロセスおよび元の伝播があります。

- SPLIT_STREAMSプロシージャによって分割されたストリームには、クローニングされたキュー、クローニングされた取得プロセスおよびクローニングされた伝播があります。

ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータが正数に設定された場合、マージ・ジョブはスケジュールに従ってMERGE_STREAMS_JOBプロシージャを自動的に実行します。MERGE_STREAMS_JOBプロシージャが自動的に実行される場合、schedule_nameパラメータにスケジュール名を、merge_job_nameパラメータにマージ・ジョブ名を指定します。マージ・ジョブおよびそのスケジュールは、SPLIT_STREAMSプロシージャによって作成されました。

ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータがNULLまたは0(ゼロ)に設定された場合は、MERGE_STREAMS_JOBプロシージャを手動で実行できます。この場合は、自動的には実行されません。

関連項目:

- MERGE_STREAMSプロシージャ

- SPLIT_STREAMSプロシージャ

- MERGE_STREAMS_JOBプロシージャの使用方法は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_XSTREAM_ADM.MERGE_STREAMS_JOB(
cloned_propagation_name IN VARCHAR2,
propagation_name        IN VARCHAR2 DEFAULT NULL,
queue_name              IN VARCHAR2 DEFAULT NULL,
merge_threshold         IN NUMBER,
schedule_name           IN VARCHAR2 DEFAULT NULL,
merge_job_name          IN VARCHAR2 DEFAULT NULL);

パラメータ

表204-23 MERGE_STREAMS_JOBプロシージャのパラメータ

パラメータ

説明

cloned_propagation_name

SPLIT_STREAMSプロシージャを使用して元のストリームから分割されたストリームによって使用されるクローニングされた伝播の名前。クローニングされた伝播の名前により、クローニングされた伝播によって使用されるクローニングされたキューおよびクローニングされた取得プロセスも識別されます。

既存の伝播名を指定する必要があります。所有者を指定しないでください。

propagation_name

元のストリームにマージされて戻される伝播の名前。

NULLの場合、元のストリーム内の元の伝播の名前が使用されます。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

元の伝播名とは異なる名前を使用する場合、またはSPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合は、NULL以外の値を指定します。

NULL以外の値を指定した場合、次の条件のいずれかに該当するとエラーが発生します。

- queue_nameパラメータで指定したキューが存在しない。

- queue_nameパラメータで指定したキューが存在するが、取得プロセスによって使用されていない。

queue_name

マージされて戻される伝播のソース・キューであるキューの名前。

NULLの場合、既存の元のキューが、マージされて戻される伝播のソース・キューとなります。SPLIT_STREAMSプロシージャを使用してストリームが分割されている場合にのみ、NULLを指定します。

SPLIT_STREAMSプロシージャによって分割されなかった2つのストリームをマージする場合、NULL以外の値を指定します。マージされたストリームの変更を取得する取得プロセスによって使用される既存のキューの名前を指定します。

merge_threshold

マージしきい値(秒単位)。

GV$STREAMS_CAPTURE動的パフォーマンス・ビューの各取得プロセスのCAPTURE_MESSAGE_CREATE_TIME列の値によって、ストリームがマージされるかどうかが判別されます。

具体的には、クローニングされた取得プロセスと元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEの差(秒数)がこのパラメータに指定された値以下の場合、このプロシージャはMERGE_STREAMSプロシージャを実行してストリームをマージします。差がこのパラメータで指定された値よりも大きい場合、このプロシージャは何も行いません。

schedule_name

マージ・ジョブのスケジュールの名前。

NULLに設定すると、スケジュール名は指定されません。通常は、ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータがNULLまたは0(ゼロ)に設定されている場合に、このパラメータをNULLに設定します。

このプロシージャを手動で実行する場合は、NULLを指定します。

merge_job_name

ストリームをマージするジョブの名前。

NULLに設定すると、マージ・ジョブ名は指定されません。通常は、ストリームを分割するSPLIT_STREAMSプロシージャでauto_merge_thresholdパラメータがNULLまたは0(ゼロ)に設定されている場合に、このパラメータをNULLに設定します。

このプロシージャを手動で実行する場合は、NULLを指定します。

使用上の注意

MERGE_STREAMS_JOBプロシージャを使用して、SPLIT_STREAMSプロシージャを使用して分割されなかった2つのストリームをマージできます。この方法でストリームをマージすることによって、1つのデータベースで複数の取得プロセスを実行しているときに、リソースを節約してパフォーマンスを向上させることができます。

MERGE_STREAMS_JOBプロシージャの完了後、DBA_CAPTUREビューおよびDBA_PROPAGATIONビューを問い合せて、ストリームがマージされたかどうかを判別できます。ストリームがマージされた場合、クローニングされた取得プロセスおよびクローニングされた伝播はこれらのビューに表示されません。

ストリームがマージされ、schedule_nameパラメータおよびmerge_job_nameパラメータがNULL以外の場合、指定されたスケジュールおよびマージ・ジョブは自動的に削除されます。

DBA_STREAMS_SPLIT_MERGEビューは、分割およびマージ操作に関する情報を示します。

PURGE_SOURCE_CATALOGプロシージャ

このプロシージャは、指定されたオブジェクトに属するすべてのOracle Streamsデータ・ディクショナリ情報をローカル・データベースから削除します。このプロシージャを使用すると、現在および将来にわたり不要なOracle Streamsメタデータを削除できます。

構文

DBMS_XSTREAM_ADM.PURGE_SOURCE_CATALOG(
source_database     IN  VARCHAR2,
source_object_name  IN  VARCHAR2,
source_object_type  IN  VARCHAR2,
source_root_name    IN  VARCHAR2);

パラメータ

表204-24 PURGE_SOURCE_CATALOGプロシージャのパラメータ

パラメータ

説明

source_database

CDB以外では、データベース・オブジェクトが含まれているソース・データベースのグローバル名を指定してください。

CDBでは、データベース・オブジェクトが含まれているコンテナのグローバル名を指定してください。コンテナは、ルートまたはPDBのいずれでもかまいません。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が.NETの場合にDBS1を指定すると、自動的にDBS1.NETが指定されます。

source_object_name

オブジェクトの名前で、[schema_name.]table_nameの形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

source_object_type

オブジェクトのタイプ。現在、使用できるオブジェクトのタイプは、TABLEのみです。

source_root_name

CDBにオブジェクトが含まれているソース・ルートのグローバル名。ソース・ルートは、CDB内における取得中の変更の発生場所です。

ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、DBS1を指定し、ドメインがEXAMPLE.COMである場合、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。

source_root_nameパラメータがNULLの場合は、ローカル・ルートのグローバル名がデフォルトになります。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

オブジェクトが存在するソース・データベースのグローバル名をsource_databaseパラメータに指定する必要があります。現行のデータベースがオブジェクトのソース・データベースでない場合、そのオブジェクトに関するデータ・ディクショナリ情報は、ソース・データベースではなく現行のデータベースから削除されます。

たとえば、ソース・データベースdbs1.netのhr.employees表への変更が、接続先データベースdbs2.netのhr.employees表に適用されると仮定します。また、dbs2.netのhr.employeesは、ソース・データベースではないとします。この場合、この表にdbs2.netをsource_databaseとして指定すると、エラーが発生します。ただし、dbs2.netデータベースでのPURGE_SOURCE_CATALOGプロシージャの実行時に、この表にdbs1.netをsource_databaseとして指定すると、dbs2.netにある表に関するデータ・ディクショナリ情報が削除されます。

次のいずれかの条件がtrueの場合は、データベースでこのプロシージャを実行しないでください。

- オブジェクトの取得プロセスで取得した論理変更レコード(LCR)が、オブジェクトの再インスタンス化を行わずにローカルで適用される場合(またはその可能性がある場合)。

- オブジェクトの取得プロセスで取得したLCRが、オブジェクトの再インスタンス化を行わずにデータベースによって転送される場合(またはその可能性がある場合)。

注意:
これらの条件は、取得プロセスで作成されていないLCRには適用されません。つまり、これらの条件は、ユーザーが作成したLCRには適用されません。

RECOVER_OPERATIONプロシージャ

このプロシージャは、エラーが発生したために停止した分割およびマージ操作に対してオプションを提供します。このプロシージャは、操作のロールフォワード、操作のロールバック、操作に関するすべてのメタデータのパージのいずれかの処理を実行します。分割およびマージ操作は、複数のアウトバウンド・サーバーで同じ取得プロセスが使用されているXStream Out環境で実行される場合があります。

このプロシージャでは、split_thresholdおよびmerge_threshold取得プロセスの各パラメータをNULL値以外に設定して自動分割および自動マージを有効にした場合にのみ、分割およびマージ操作に対する前述の処理を実行できます。

操作に関する情報は、操作の進行中に次のデータ・ディクショナリ・ビューに格納されます。

- DBA_RECOVERABLE_SCRIPT

- DBA_RECOVERABLE_SCRIPT_PARAMS

- DBA_RECOVERABLE_SCRIPT_BLOCKS

- DBA_RECOVERABLE_SCRIPT_ERRORS

データ・ディクショナリ・ビューは、取得プロセスを含むデータベースで移入されます。

操作が正常に完了すると、操作に関するメタデータはDBA_RECOVERABLE_SCRIPTビューからDBA_RECOVERABLE_SCRIPT_HISTビューに移動されます。その他のビュー(DBA_RECOVERABLE_SCRIPT_PARAMS、DBA_RECOVERABLE_SCRIPT_BLOCKS、DBA_RECOVERABLE_SCRIPT_ERRORS)は、30日後に自動的に消去されるまで、操作に関する情報を保持します。

これらのいずれかの操作でエラーが発生して操作が停止した場合、操作に関するメタデータはこれらのビューに残ります。この場合、操作に関するメタデータは、RECOVER_OPERATIONプロシージャを使用してロールフォワード、ロールバックまたはパージできます。操作のロールフォワードを選択した場合は、処理を行う前にDBA_RECOVERABLE_SCRIPT_ERRORSに記録されたエラーの原因を解消します。

取得プロセスが含まれているデータベースで、RECOVER_OPERATIONプロシージャを実行してください。

注意:
RECOVER_OPERATIONプロシージャを実行するには、両方のデータベースがOracle Database 10g リリース2以上のデータベースである必要があります。

関連項目:

- 「SPLIT_STREAMSプロシージャ」

- 「MERGE_STREAMSプロシージャ」

- 「MERGE_STREAMS_JOBプロシージャ」

- 『Oracle Streamsレプリケーション管理者ガイド』

構文

DBMS_XSTREAM_ADM.RECOVER_OPERATION(
script_id       IN  RAW,
operation_mode  IN  VARCHAR2  DEFAULT 'FORWARD');

パラメータ

表204-25 RECOVER_OPERATIONプロシージャのパラメータ

パラメータ

説明

script_id

ロールフォワード中、ロールバック中またはパージ中の操作の操作ID。操作IDを確認するには、DBA_RECOVERABLE_SCRIPTデータ・ディクショナリ・ビューのSCRIPT_ID列を問い合せます。

operation_mode

FORWARDを指定すると、操作がロールフォワードされます。FORWARDは、操作の完了を試行する場合に指定します。

ROLLBACKを指定すると、操作で行われたすべての処理がロールバックされます。ロールバックが成功すると、このオプションは操作に関するメタデータをDBA_RECOVERABLE_SCRIPTビューからDBA_RECOVERABLE_SCRIPT_HISTビューに移動します。その他のビューは、操作に関する情報を30日間保持します。

PURGEが設定されている場合、プロシージャは、操作をロールバックすることなく、操作に関するメタデータをDBA_RECOVERABLE_SCRIPTビューからDBA_RECOVERABLE_SCRIPT_HISTビューに移動します。その他のビューは、操作に関する情報を30日間保持します。

REMOVE_QUEUEプロシージャ

このプロシージャは、指定されたANYDATAキューを削除します。

具体的には、このプロシージャは次の操作を実行します。

1. 現行のエンキュー・トランザクションとデキュー・トランザクションがすべてコミットされるのを待ちます。

2. キューを停止します。キューを停止すると、それ以降、キューに対するエンキュー操作とキューからのデキュー操作が禁止されます。

3. キューを削除します。

4. drop_unused_queue_tableパラメータがTRUEに設定されている場合、キュー表が空で、他のキューによって使用されていなければ、キュー表を削除します。

5. cascadeパラメータがTRUEに設定されている場合は、キューを使用しているすべてのXStreamクライアントが削除されます。

注意:
必ずANYDATAキューを指定してください。

構文

DBMS_XSTREAM_ADM.REMOVE_QUEUE(
queue_name               IN  VARCHAR2,
cascade                  IN  BOOLEAN  DEFAULT FALSE,
drop_unused_queue_table  IN  BOOLEAN  DEFAULT TRUE);

パラメータ

表204-26 REMOVE_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_name

削除するキューの名前で、[schema_name.]queue_nameの形式で指定します。たとえば、strmadmin.streams_queueのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

cascade

TRUEの場合、このプロシージャはキューを使用するすべてのXStreamクライアントを削除します。

FALSEの場合は、キューを使用するXStreamクライアントが存在すると、エラーが発生します。cascadeパラメータをFALSEに設定した状態でこのプロシージャを実行する場合は、キューを現在使用しているXStreamクライアントが存在しないことを事前に確認してください。

drop_unused_queue_table

キューのキュー表が空の場合にTRUEに設定すると、キュー表が削除されます。キュー表にメッセージが残っている場合、または他のキューによって使用されている場合、キュー表は削除されません。

FALSEに設定すると、キュー表は削除されません。

REMOVE_RULEプロシージャ

このプロシージャは、指定された取得プロセス、適用プロセスまたは伝播に関連付けられたルール・セットから、指定されたルールまたはすべてのルールを削除します。

注意:
自動的に作成されたルールを削除する場合は、DBMS_RULE_ADM.DROP_RULEプロシージャではなく、このプロシージャを使用してルールを削除してください。DBMS_RULE_ADM.DROP_RULEプロシージャを使用すると、ルールに関するメタデータの一部が残存する可能性があります。

構文

DBMS_XSTREAM_ADM.REMOVE_RULE(
rule_name         IN  VARCHAR2,
streams_type      IN  VARCHAR2,
streams_name      IN  VARCHAR2,
drop_unused_rule  IN  BOOLEAN  DEFAULT TRUE,
inclusion_rule    IN  BOOLEAN  DEFAULT TRUE);

パラメータ

表204-27 REMOVE_RULEプロシージャのパラメータ

パラメータ

説明

rule_name

削除するルールの名前で、[schema_name.]rule_nameの形式で指定します。NULLの場合は、指定された取得プロセス、適用プロセスまたは伝播のルール・セットからすべてのルールが削除されます。

たとえば、hrスキーマ内のprop_rule1というルールを指定するには、hr.prop_rule1と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

streams_type

XStreamクライアントのタイプ:

- 取得プロセスの場合は、capture。

- 伝播の場合は、propagation。

- 適用プロセスの場合は、apply。

streams_name

XStreamクライアントの名前。これは、取得プロセス、伝播または適用プロセスのいずれでもかまいません。所有者を指定しないでください。

指定したXStreamクライアントは存在しなくても、そのクライアントにルールを関連付けているメタデータがデータ・ディクショナリに存在する場合は、そのメタデータが削除されます。

指定されたXStreamクライアントが存在せず、そのクライアントにルールを関連付けているメタデータもデータ・ディクショナリに存在しない場合は、エラーが発生します。

drop_unused_rule

ルールがルール・セットに属していない場合にTRUEに設定すると、そのルールがデータベースから削除されます。

ルールがいずれかのルール・セットに属している場合にTRUEに設定すると、そのルールはデータベースから削除されません。

FALSEに設定すると、ルールはデータベースから削除されません。

inclusion_rule

inclusion_ruleがTRUEの場合は、XStreamクライアントのポジティブ・ルール・セットからルールが削除されます。

inclusion_ruleがFALSEの場合は、XStreamクライアントのネガティブ・ルール・セットからルールが削除されます。

REMOVE_SUBSET_OUTBOUND_RULESプロシージャ

このプロシージャは、アウトバウンド・サーバーの構成からサブセット・ルールを削除します。

指定された挿入、更新、削除ルールの名前は、ADD_SUBSET_OUTBOUND_RULESプロシージャによって生成された名前と一致している必要があります。サブセット・ルールの名前を表示するには、次の問合せを実行します。

SELECT RULE_OWNER, SUBSETTING_OPERATION, RULE_NAME
FROM ALL_XSTREAM_RULES
WHERE SUBSETTING_OPERATION IS NOT NULL;

注意:

- このプロシージャでは、削除する各ルールに関連付けられた宣言的なルールベース変換が削除されます。

- アウトバウンド・サーバーの取得プロセスからルールが削除されることはありません。

関連項目:
「ADD_SUBSET_OUTBOUND_RULESプロシージャ」

構文

DBMS_XSTREAM_ADM.REMOVE_SUBSET_OUTBOUND_RULES(
server_name      IN VARCHAR2,
insert_rule_name IN VARCHAR2,
update_rule_name IN VARCHAR2,
delete_rule_name IN VARCHAR2);

REMOVE_XSTREAM_CONFIGURATIONプロシージャ

このプロシージャは、XStream構成をローカル・データベースで削除します。

構文

DBMS_XSTREAM_ADM.REMOVE_XSTREAM_CONFIGURATION(
container IN VARCHAR2  DEFAULT NULL);

パラメータ

表204-28 REMOVE_XSTREAM_CONFIGURATIONプロシージャのパラメータ

パラメータ

説明

container

CURRENTの場合は、現在のコンテナからXStream構成が削除されます。CURRENTは、ルートまたはCDBのPDBに接続している間に指定できます。

ALLの場合は、CDB内のすべてのコンテナからXStream構成が削除されます。ALLを指定するには、このプロシージャをルートから起動する必要があります。

コンテナ名の場合は、指定されたコンテナからXStream構成が削除されます。ルートを指定するには、ルートへの接続中にCDB$ROOTを使用します。PDBを指定するには、プロシージャをルートから起動する必要があります。

注意: このパラメータはCDBにのみ適用されます。

使用上の注意

このプロシージャは、ローカル・データベース上で次の処理を実行します。

- すべての取得プロセスを削除します。

- インスタンス化のために表が準備されている場合は、DBMS_CAPTURE_ADMパッケージのABORT_TABLE_INSTANTIATIONプロシージャを使用すると、表のインスタンス化の準備が中断されます。

- インスタンス化のためにスキーマが準備されている場合は、DBMS_CAPTURE_ADMパッケージのABORT_SCHEMA_INSTANTIATIONプロシージャを使用すると、スキーマのインスタンス化の準備が中断されます。

- インスタンス化のためにデータベースが準備されている場合は、DBMS_CAPTURE_ADMパッケージのABORT_GLOBAL_INSTANTIATIONプロシージャを使用すると、データベースのインスタンス化の準備が中断されます。

- DBMS_XSTREAM_ADMパッケージまたはDBMS_PROPAGATION_ADMパッケージのいずれかを使用して作成された伝播を削除します。伝播を削除する前に、伝播ジョブを無効にします。DBMS_AQADMパッケージを使用して作成された伝播は削除しません。

- 伝播で使用されるすべての伝播ジョブを無効にします。

- すべての適用プロセスを削除します。適用プロセスのエラー・キューに適用エラーがある場合は、すべての適用エラーを削除してから、適用プロセスを削除します。

- 適用プロセスで使用されるDDLハンドラの定義を削除します。DDLハンドラによって使用されるPL/SQLプロシージャは削除しません。

- 適用プロセスで使用されるメッセージ・ハンドラの定義を削除します。メッセージ・ハンドラによって使用されるPL/SQLプロシージャは削除しません。

- 適用プロセスで使用されるプリコミット・ハンドラの定義を削除します。プリコミット・ハンドラによって使用されるPL/SQLプロシージャは削除しません。

- 個々の適用オブジェクト用、個々のスキーマ用およびデータベース全体用の、初期化SCNと無視SCNを削除します。

- メッセージ・クライアントを削除します。

- DBMS_XSTREAM_ADMパッケージのSET_MESSAGE_NOTIFICATIONプロシージャを使用して設定されたメッセージ通知指定を設定解除します。

- プロシージャDMLハンドラとエラー・ハンドラの定義を削除します。この削除では、これらのハンドラによって使用されるPL/SQLプロシージャは削除されません。

- 更新競合ハンドラを削除します。

- 適用表の代替キー列の定義を削除します。

- DBMS_XSTREAM_ADMパッケージを使用して作成されたルール・セットとルールを削除します。

- 取得プロセス、伝播、適用プロセスおよびメッセージ・クライアントによって使用されなかったルール・セットを削除し、それぞれのルール・セット内のルールを削除します。これらのルールおよびルール・セットは、DBMS_XSTREAM_ADMパッケージまたはDBMS_RULE_ADMパッケージを使用して作成されたかどうかに関係なく削除されます。

このプロシージャは、取得プロセスと適用プロセスを停止してから、それらのプロセスを削除します。

次の両方の条件を満たす場合は、このプロシージャはルール・セットまたはルールを削除しません。

- ルール・セットまたはルールがDBMS_RULE_ADMパッケージを使用して作成された。

- ルール・セットまたはルールが、取得プロセス、伝播、適用プロセスまたはメッセージ・クライアントによって使用されていない。

注意:
このプロシージャの実行には危険が伴います。このプロシージャは、データベースでXStream構成全体を削除する必要がある場合にのみ実行してください。Oracle Streams構成がデータベースに存在している場合は、Oracle Streams構成全体も削除されます。

注意:

- このプロシージャを繰り返し実行しても、エラーは発生しません。プロシージャが途中で失敗した場合は再実行できます。

- このプロシージャは複数回コミットされます。

RENAME_COLUMNプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内の列の名前を変更する宣言ルールベースの変換を追加または削除します。

指定したルールがTRUEと評価されるときに変換を実行する場合、ルールはXStreamクライアントのポジティブ・ルール・セットに入っている必要があります。XStreamクライアントには、取得プロセス、伝播プロセスおよび適用プロセスがあります。

注意:

- RENAME_COLUMNプロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。

- 宣言的変換では、行LCRのみを変換できます。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLルールを指定した場合は、エラーが発生します。

関連項目:
宣言的なルールベースの変換とOracle Streamsの取得プロセスによってサポートされているデータ・タイプの詳細は、『Oracle Database XStreamガイド』を参照してください。

構文

DBMS_XSTREAM_ADM.RENAME_COLUMN(
rule_name         IN  VARCHAR2,
table_name        IN  VARCHAR2,
from_column_name  IN  VARCHAR2,
to_column_name    IN  VARCHAR2,
value_type        IN  VARCHAR2  DEFAULT '*',
step_number       IN  NUMBER    DEFAULT 0,
operation         IN  VARCHAR2  DEFAULT 'ADD');

パラメータ

表204-29 RENAME_COLUMNプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_name

行LCRで列の名前を変更する表の名前で、[schema_name.]object_nameという形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

from_column_name

ルールを満たす各行LCR内の名前を変更する列の名前。

to_column_name

ルールを満たす各行LCR内の列の新しい名前。

value_type

行LCRの新しい値の列の名前を変更する場合は、'NEW'を指定します。

行LCRの古い値の列の名前を変更する場合は、'OLD'を指定します。

行LCRの新しい値と古い値の両方の列の名前を変更する場合は、'*'を指定します。

step_number

変換の実行順序。

関連項目: 変換の順序の詳細は、『Oracle Database XStreamガイド』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する列名変更の宣言ルールベースの変換のうち、指定したパラメータ(table_name、column_nameおよびstep_number)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、RENAME_COLUMNプロシージャの動作を示します。

table_name

from_column_name

to_column_name

step_number

結果

NULL

NULL

NULL

NULL

指定したルールに対するすべての列名変更変換が削除されます。

NULL

NULL

NULL

NULL以外

指定したルールに対して指定されたstep_numberの値を持つすべての列名変更変換が削除されます。

NULL

NULL

NULL以外

NULL以外

指定したルールに対して指定されたto_column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されたtable_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL

NULL

NULL以外

NULL

指定したルールに対して指定されたcolumn_nameの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL

NULL以外

NULL

指定したルールに対して指定されたtable_nameおよびcolumn_nameの値を持つすべての列名変更変換が削除されます。

NULL

NULL以外

NULL

NULL

指定したルールに対して指定されているtable_nameの値を持つすべての列名変更変換が削除されます。

NULL

NULL以外

NULL以外

NULL

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL

NULL以外

NULL

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

NULL

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されたtable_name、column_nameおよびstep_numberの値を持つすべての列名変更変換が削除されます。

RENAME_SCHEMAプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内のスキーマの名前を変更する宣言ルールベースの変換を追加または削除します。

指定したルールがTRUEと評価されるときに変換を実行する場合、ルールはXStreamクライアントのポジティブ・ルール・セットに入っている必要があります。XStreamクライアントには、取得プロセス、伝播プロセスおよび適用プロセスがあります。

注意:
宣言的変換では、行LCRのみを変換できます。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLルールを指定した場合は、エラーが発生します。

関連項目:
宣言的なルールベースの変換の詳細は、『Oracle Database XStreamガイド』を参照してください。

構文

DBMS_XSTREAM_ADM.RENAME_SCHEMA(
rule_name         IN  VARCHAR2,
from_schema_name  IN  VARCHAR2,
to_schema_name    IN  VARCHAR2,
step_number       IN  NUMBER    DEFAULT 0,
operation         IN  VARCHAR2  DEFAULT 'ADD');

パラメータ

表204-30 RENAME_SCHEMAプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

from_schema_name

ルールを満たす各行LCR内の名前を変更するスキーマの名前。

to_schema_name

ルールを満たす各行LCR内のスキーマの新しい名前。

step_number

変換の実行順序。

関連項目: 変換の順序の詳細は、『Oracle Database XStreamガイド』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対するスキーマ名変更の宣言ルールベースの変換のうち、指定したパラメータ(from_schema_name、to_schema_nameおよびstep_number)に一致する変換がすべて削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、RENAME_SCHEMAプロシージャの動作を示します。

from_schema_name

to_schema_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべてのスキーマ名変更変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されたstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されたto_schema_nameおよびstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されたfrom_schema_nameおよびstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されたto_schema_nameの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されたfrom_schema_nameおよびto_schema_nameの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されたfrom_schema_nameの値を持つすべてのスキーマ名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されたfrom_schema_name、to_schema_nameおよびstep_numberの値を持つすべてのスキーマ名変更変換が削除されます。

RENAME_TABLEプロシージャ

このプロシージャは、指定されたルールを満たす行論理変更レコード(行LCR)内の表の名前を変更する宣言ルールベースの変換を追加または削除します。

指定したルールがTRUEと評価されるときに変換を実行する場合、ルールはXStreamクライアントのポジティブ・ルール・セットに入っている必要があります。XStreamクライアントには、取得プロセス、伝播プロセスおよび適用プロセスがあります。

注意:
宣言的変換では、行LCRのみを変換できます。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLルールを指定した場合は、エラーが発生します。

関連項目:
宣言的なルールベースの変換の詳細は、『Oracle Database XStreamガイド』を参照してください。

構文

DBMS_XSTREAM_ADM.RENAME_TABLE(
rule_name        IN  VARCHAR2,
from_table_name  IN  VARCHAR2,
to_table_name    IN  VARCHAR2,
step_number      IN  NUMBER    DEFAULT 0,
operation        IN  VARCHAR2  DEFAULT 'ADD');

パラメータ

表204-31 RENAME_TABLEプロシージャのパラメータ

パラメータ

説明

rule_name

[schema_name.]rule_nameの形式で指定したルールの名前。NULLの場合は、エラーが発生します。

たとえば、hrスキーマ内のemployees12というルールを指定するには、hr.employees12と入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

from_table_name

ルールを満たす各行LCR内の名前を変更する表の名前で、[schema_name.]object_nameという形式で指定します。たとえば、hr.employeesのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

to_table_name

ルールを満たす各行LCR内の表の新しい名前で、[schema_name.]object_nameという形式で指定します。たとえば、humres.staffのように指定します。

この変換では、表のみ、スキーマのみ、または両方の名前を変更できます。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

step_number

変換の実行順序。

関連項目: 変換の順序の詳細は、『Oracle Database XStreamガイド』を参照してください。

operation

変換をルールに追加する場合は、'ADD'を指定します。

変換をルールから削除する場合は、'REMOVE'を指定します。

使用上の注意

operationパラメータに'REMOVE'を指定すると、指定したルールに対する表名変更の宣言ルールベースの変換のうち、指定したパラメータ(from_table_name、to_table_nameおよびstep_number)に一致する変換がすべて削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULLの場合の、RENAME_TABLEプロシージャの動作を示します。

from_table_name

to_table_name

step_number

結果

NULL

NULL

NULL

指定したルールに対するすべての表名変更変換が削除されます。

NULL

NULL

NULL以外

指定したルールに対して指定されたstep_numberの値を持つすべての表名変更変換が削除されます。

NULL

NULL以外

NULL以外

指定したルールに対して指定されているto_table_nameおよびstep_numberのすべての表名変更変換が削除されます。

NULL以外

NULL

NULL以外

指定したルールに対して指定されているfrom_table_nameおよびstep_numberのすべての表名変更変換が削除されます。

NULL

NULL以外

NULL

指定したルールに対して指定されているto_table_nameのすべての表名変更変換が削除されます。

NULL以外

NULL以外

NULL

指定したルールに対して指定されているfrom_table_nameおよびto_table_nameのすべての表名変更変換が削除されます。

NULL以外

NULL

NULL

指定したルールに対して指定されているfrom_table_nameのすべての表名変更変換が削除されます。

NULL以外

NULL以外

NULL以外

指定したルールに対して指定されているfrom_table_name、to_table_nameおよびstep_numberのすべての表名変更変換が削除されます。

SET_MESSAGE_TRACKINGプロシージャ

現在のセッションで生成された論理変更レコード(LCR)の追跡ラベルを設定します。このプロシージャの影響があるのは、現行のセッションのみです。取得されたLCRや永続LCRなど、現在のセッションで生成されたLCRが追跡されます。

注意:
このプロシージャで設定される追跡ラベルは、非LCRメッセージを追跡しません。

関連項目:
KAWGET_MESSAGE_TRACKING

構文

DBMS_XSTREAM_ADM.SET_MESSAGE_TRACKING(
tracking_label IN VARCHAR2  DEFAULT 'Streams_tracking',
actions        IN NUMBER    DEFAULT DBMS_XSTREAM_ADM.ACTION_MEMORY);

パラメータ

表204-32 SET_MESSAGE_TRACKINGプロシージャのパラメータ

パラメータ

説明

tracking_label

セッションで生成されたLCRを追跡するために使用されるラベル。

現在のセッションでメッセージ追跡を停止するには、このパラメータをNULLに設定します。

ラベルのサイズ制限は、4,000バイトです。

actions

DBMS_XSTREAM_ADM.ACTION_MEMORYが指定されている場合は、メモリー内でLCRが追跡され、V$STREAMS_MESSAGE_TRACKING動的パフォーマンス・ビューがLCRに関する情報とともに移入されます。

現在、DBMS_XSTREAM_ADM.ACTION_MEMORYはこのパラメータの唯一有効な設定です。

このパラメータに指定する値は、列挙定数です。列挙定数にはパッケージ名を接頭辞として付加する必要があります。

SET_PARAMETERプロシージャ

このプロシージャは、アウトバウンド・サーバー、インバウンド・サーバーまたはアウトバウンド・サーバーの取得プロセスに対してパラメータを設定します。

構文

DBMS_XSTREAM_ADM.SET_PARAMETER(
streams_name    IN  VARCHAR2,
streams_type    IN  VARCHAR2,
parameter       IN  VARCHAR2,
value           IN  VARCHAR2  DEFAULT NULL,
no_wait         IN  BOOLEAN   DEFAULT FALSE,
source_database IN  VARCHAR2  DEFAULT NULL);

パラメータ

表204-33 SET_PARAMETERプロシージャのパラメータ

パラメータ

説明

streams_type

XStreamクライアントのタイプ:

- 取得プロセスの場合は、capture。

- アウトバウンド・サーバーまたはインバウンド・サーバーに対してapplyを指定してください。

streams_name

取得プロセス、アウトバウンド・サーバーまたはインバウンド・サーバーの名前。所有者を指定しないでください。

parameter

設定するパラメータの名前。

取得プロセスのパラメータの詳細は、「取得プロセスのパラメータ」を参照してください。

アウトバウンド・サーバーおよびインバウンド・サーバーのパラメータの詳細は、「適用コンポーネントのパラメータ」を参照してください。

value

パラメータに設定する値。

NULLの場合、パラメータはデフォルト値に設定されます。

no_wait

TRUEの場合は、パラメータが即時に設定されます。

FALSEの場合、パラメータは、実行中の取得プロセス、インバウンド・サーバー、またはアウトバウンド・サーバーとの同期化の後で設定されます。

同じプロセスの複数のパラメータを連続して変更する場合、このパラメータをTRUEに設定すると、各コールがスピードアップします。ただし、プロセスが現在実行中の場合は、このパラメータをプロシージャの最後にFALSEに設定して、変更されたパラメータ値がプロセスで使用されるようにする必要があります。最後のプロシージャ・コールに対してno_waitパラメータがTRUEに設定されていると、実行中のプロセスはパラメータの変更を検出できない場合があります。

source_database

CURRENTの場合、パラメータは、プロシージャが起動されたコンテナでのみ設定されます。CURRENTは、ルートまたはPDBに接続している間に指定できます。

ALLの場合、パラメータは、プロシージャの起動後に作成されたCDB内のすべてのコンテナおよびすべてのPDBで設定されます。ALLを指定するには、このプロシージャをルートから起動する必要があります。

コンテナ名の場合、パラメータは指定されたコンテナで設定されます。ルートを指定するには、ルートへの接続中にCDB$ROOTを使用します。PDBを指定するには、プロシージャをルートから起動する必要があります。

注意: このパラメータは、CDBのみに適用されます。また、NULL以外の値を、次のパラメータにのみ指定できます。

- include_objects取得パラメータ

- excludetag取得または適用パラメータ

- excludetransはパラメータを取得および適用します。

- excludeuser取得または適用パラメータ

- excludeuserid取得または適用パラメータ

- getreplicates取得または適用パラメータ

- getapplops取得または適用パラメータ

SET_TAGプロシージャ

このプロシージャは、現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。現行セッションのDML文またはDDL文によって生成される各REDOエントリには、このタグが含まれます。このプロシージャの影響があるのは、現行のセッションのみです。

関連項目:
タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_XSTREAM_ADM.SET_TAG(
tag  IN RAW  DEFAULT NULL);

パラメータ

表204-34 SET_TAGプロシージャのパラメータ

パラメータ

説明

tag

現行のセッションで継続して生成されるREDOエントリすべてに対するバイナリ・タグ。RAW値は一連のバイトで、バイトは一連のビットです。

デフォルトでは、セッションのタグはNULLです。

タグ値のサイズ制限は、2000バイトです。

使用上の注意

現行のセッションでタグを16進数値の'17'に設定するには、次のプロシージャを実行します。

EXEC DBMS_XSTREAM_ADM.SET_TAG(tag => HEXTORAW('17'));

SET_TAGプロシージャでは、次の点に注意してください。

- このプロシージャはトランザクション型ではありません。つまり、SET_TAGの結果はロールバックできません。

- データベースでデータ・ディクショナリの構築を実行する前に、SET_TAGプロシージャを実行してNULL以外のセッション・タグを設定した場合、ディクショナリの構築前に開始したトランザクションのREDOエントリに、セッションに指定したタグ値が含まれないことがあります。そのため、データ・ディクショナリの構築は、セッションでSET_TAGプロシージャを使用する前に実行します。データ・ディクショナリは、DBMS_CAPTURE_ADM.BUILDプロシージャを実行すると構築されます。BUILDプロシージャは、取得プロセスの作成時に自動的に実行できます。

関連項目:
BUILDプロシージャ

SET_UP_QUEUEプロシージャ

このプロシージャは、キュー表およびANYDATAキューを作成します。

構文

DBMS_XSTREAM_ADM.SET_UP_QUEUE(
queue_table     IN  VARCHAR2  DEFAULT 'streams_queue_table',
storage_clause  IN  VARCHAR2  DEFAULT NULL,
queue_name      IN  VARCHAR2  DEFAULT 'streams_queue',
queue_user      IN  VARCHAR2  DEFAULT NULL,
comment         IN  VARCHAR2  DEFAULT NULL);

パラメータ

表204-35 SET_UP_QUEUEプロシージャのパラメータ

パラメータ

説明

queue_table

キュー表の名前で、[schema_name.]queue_table_nameの形式で指定します。たとえば、strmadmin.streams_queue_tableのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

キュー表の所有者を指定しない場合は、このプロシージャを実行するユーザーがキュー表の所有者として自動的に指定されます。

キュー表の名前の最大長は24バイトです。

storage_clause

キュー表に対すSTORAGE句。

記憶域パラメータは、キュー表の作成時に、CREATE TABLE文に組み込まれます。有効な表のSTORAGE句を任意に指定できます。

ここで表領域を指定しない場合は、キュー表およびそのすべての関連オブジェクトが、このプロシージャを実行しているユーザーのデフォルトのユーザー表領域に作成されます。ここで表領域を指定した場合は、キュー表およびそのすべての関連オブジェクトが、STORAGE句で指定された表領域に作成されます。

NULLの場合は、キュー表が作成された表領域の記憶特性が使用されます。

関連項目: STORAGE句の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

queue_name

ANYDATAキューとして機能するキューの名前で、[schema_name.]queue_nameという形式で指定します。たとえば、strmadmin.streams_queueのように指定します。

スキーマを指定しない場合は、キュー表の所有者が使用されます。キュー表の所有者は、キューの所有者でもある必要があります。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。

このパラメータにスキーマが指定されず、queue_tableパラメータにキュー表の所有者が指定されていない場合は、現行のユーザーがデフォルトで使用されます。

キューの名前の最大長は24バイトです。

queue_user

キューに対するENQUEUE権限とDEQUEUE権限が必要なユーザー名。このユーザーは、キューの保護キュー・ユーザーとしても構成されます。キュー・ユーザーにはGRANTオプションが付与されていないため、これらの権限を他のユーザーに付与することはできません。

NULLに設定すると、権限は付与されません。DBMS_AQADMパッケージを使用して、キューの権限を適切なユーザーに付与することもできます。

comment

キューに対するコメント。

使用上の注意

設定には、次のアクションが含まれます。

- 指定のキュー表が存在していない場合、このプロシージャは、DBMS_AQADMパッケージのCREATE_QUEUE_TABLEプロシージャを実行し、指定のSTORAGE句でキュー表を作成します。このプロシージャでキュー表が作成される場合は、保護キューでありトランザクション・キューでもある、ANYDATAのマルチ・コンシューマ・キューが作成されます。
また、データベースがOracle Database 10g リリース 2以上の場合、CREATE_QUEUE_TABLEのsort_list設定はcommit_timeに設定されます。データベースがOracle Database 10g リリース2より前の場合、CREATE_QUEUE_TABLEのsort_list値はenq_timeに設定されます。

- 指定したキュー表が存在する場合は、そのキュー表のプロパティがキューで使用されます。

- 指定したキューの名前が存在していない場合、このプロシージャは、DBMS_AQADMパッケージのCREATE_QUEUEプロシージャを実行して、キューを作成します。

- このプロシージャは、キューを開始します。

- キュー・ユーザーが指定されている場合、このプロシージャは、このユーザーをキューの保護キュー・ユーザーとして構成し、キューに対するENQUEUE権限とDEQUEUE権限を指定のキュー・ユーザーに付与します。
キュー・ユーザーを保護キュー・ユーザーとして構成するために、このプロシージャは、ユーザー名と同名のアドバンスト・キューイング・エージェントを作成します(エージェントが存在していない場合)。この名前のエージェントが存在し、キュー・ユーザーのみに関連付けられている場合は、そのエージェントが使用されます。SET_UP_QUEUEプロシージャは、次に、DBMS_AQADMパッケージのENABLE_DB_ACCESSプロシージャを実行して、エージェントとユーザーを指定します。

注意:
SET_UP_QUEUEで作成を試みたエージェントが存在し、そのエージェントがqueue_userで指定されているユーザー以外のユーザーに関連付けられている場合は、エラーが発生します。この場合は、既存のエージェントを変更または削除してから、SET_UP_QUEUEを再試行してください。

関連項目:
保護キュー・ユーザーの詳細は、『Oracle Streams概要および管理』を参照してください。

SPLIT_STREAMSプロシージャ

このプロシージャは、取得プロセスからの1つのストリームをその取得プロセスからの他のすべてのストリームから分割します。

このプロシージャの対象は、複数の接続先データベースに伝播された変更を取得プロセスが取得するOracle Streamsレプリケーション環境です。伝播の接続先の1つが取得された変更の受入れを停止した場合、変更は取得プロセス・キューに残ります。キューが大きくなってLCRのハード・ディスクへの書込みが開始されると、Oracle Streams環境のパフォーマンスが低下する可能性があります。接続先はいくつかの理由で変更の受入れを停止する場合があります。たとえば、接続先データベースが停止する場合などです。

具体的には、このプロシージャは次の操作を実行します。

1. 取得プロセスを実行しているデータベースで新しいキューを作成します。新しいキューは元のストリームで使用されているキューのクローンであるため、クローニングされたキューと呼ばれます。新しいキューはクローニングされた新しい取得プロセスによって使用され、クローニングされた新しい伝播のソース・キューとなります。

2. 手順1で作成したソース・キューから既存の宛先キューにLCRを伝播する新しい伝播を作成します。新しい伝播は元のストリームで使用されている伝播のクローンであるため、クローニングされた伝播と呼ばれます。クローニングされた伝播は、元の伝播と同じルール・セットを使用します。

3. 取得プロセスを停止します。

4. 元の伝播の確認済SCNを問い合せます。確認済SCNとは、伝播によって送信された変更を適用する適用プロセスによって確認された最後のSCNです。

5. 新しい取得プロセスを作成します。新しい取得プロセスは元のストリームで使用されている取得プロセスのクローンであるため、クローニングされた取得プロセスと呼ばれます。プロシージャによって、クローニングされた取得プロセスの開始SCNが、手順4で問い合せた確認済SCNの値に設定されます。クローニングされた取得プロセスは、元の取得プロセスと同じルール・セットを使用します。

6. 元の伝播を削除します。

7. 手順4で問い合せた確認済SCNに設定された開始SCNで元の取得プロセスを開始します。

8. auto_merge_thresholdパラメータが正数に設定されている場合、スケジュールに従って設定された間隔でMERGE_STREAMS_JOBプロシージャを実行するOracle Schedulerジョブを作成します。2つのストリームが指定されたマージしきい値内にある場合、MERGE_STREAMS_JOBプロシージャはMERGE_STREAMSを実行して、ストリームを自動的にマージします。

SPLIT_STREAMSプロシージャの実行が終了すると、クローニングされた取得プロセスは無効化されます。接続先データベースで問題が解決され、宛先キューで変更を受け入れることができる場合は、DBMS_CAPTURE_ADMパッケージのSTART_CAPTUREプロシージャを使用して、クローニングされた取得プロセスを開始する必要があります。

DBA_STREAMS_SPLIT_MERGEビューは、各クローン・コンポーネントの名前と、分割およびマージ操作に関する情報を示します。

注意:
元の取得プロセスがダウンストリーム取得プロセスである場合は、クローニングされた取得プロセスを開始する前に、ソース・データベースからREDOログを読み取るようにクローニングされた取得プロセスを構成する必要があります。

関連項目:

- 「MERGE_STREAMSプロシージャ」

- 「MERGE_STREAMS_JOBプロシージャ」

- SPLIT_STREAMSプロシージャの使用方法は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_XSTREAM_ADM.SPLIT_STREAMS(
propagation_name         IN      VARCHAR2,
cloned_propagation_name  IN      VARCHAR2  DEFAULT NULL,
cloned_queue_name        IN      VARCHAR2  DEFAULT NULL,
cloned_capture_name      IN      VARCHAR2  DEFAULT NULL,
perform_actions          IN      BOOLEAN   DEFAULT TRUE,
script_name              IN      VARCHAR2  DEFAULT NULL,
script_directory_object  IN      VARCHAR2  DEFAULT NULL,
auto_merge_threshold     IN      NUMBER    DEFAULT NULL,
schedule_name            IN OUT  VARCHAR2,
merge_job_name           IN OUT  VARCHAR2);

パラメータ

表204-36 SPLIT_STREAMSプロシージャのパラメータ

パラメータ

説明

propagation_name

宛先キューにLCRを送信できない伝播の名前。指定する伝播は、他のストリームから分割されるストリームの伝播です。既存の伝播名を指定する必要があります。所有者を指定しないでください。

cloned_propagation_name

分割されるストリームに対して、このプロシージャで作成される新しい伝播の名前。NULLの場合、システムによって伝播名が生成されます。

cloned_queue_name

分割されるストリームに対して、このプロシージャで作成される新しいキューの名前。NULLの場合、システムによってキュー名が生成されます。

cloned_capture_name

分割されるストリームに対して、このプロシージャで作成される新しい取得プロセスの名前。NULLの場合、システムによって取得プロセス名が生成されます。

perform_actions

TRUEに設定すると、ストリームを直接分割するために必要な処理が実行されます。

FALSEに設定すると、ストリームを直接分割するために必要な処理は実行されません。

このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、FALSEに設定します。次のいずれかのパラメータがNULLの場合にFALSEに設定すると、エラーが発生します。

- script_name

- script_directory_object

script_name

このパラメータがNULL以外の値で、perform_actionsパラメータがFALSEの場合は、指定された名前のスクリプトが生成されます。このスクリプトには、ストリームを分割するために必要なすべての文が記述されています。指定したスクリプト名のファイルが、script_directory_objectパラメータで指定されるディレクトリにすでに存在する場合は、その既存ファイルの末尾に文が追加されます。

このパラメータがNULL以外の値で、perform_actionsパラメータがTRUEの場合は、指定のスクリプトが生成され、ストリームを直接分割する処理が実行されます。

このパラメータがNULLで、perform_actionsパラメータがTRUEの場合は、ストリームを直接分割する処理が実行され、スクリプトは生成されません。

このパラメータがNULLで、perform_actionsパラメータがFALSEの場合は、エラーが発生します。

script_directory_object

作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。

script_nameパラメータがNULLの場合、このパラメータは無視され、スクリプトは生成されません。

このパラメータがNULLで、script_nameパラメータがNULL以外の場合は、エラーが発生します。

注意: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。

auto_merge_threshold

正数を指定した場合、分割されたストリームは、Oracle Schedulerジョブによって、取得プロセスからの他のすべてのストリームに自動的にマージされて戻されます。このジョブによって、スケジュールに従って設定された間隔でMERGE_STREAMS_JOBプロシージャが実行されます。GV$STREAMS_CAPTURE動的パフォーマンス・ビューの各取得プロセスのCAPTURE_MESSAGE_CREATE_TIME列の値によって、ストリームがいつマージされるかが判別されます。具体的には、クローニングされた取得プロセスと元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEの差(秒数)がauto_merge_thresholdパラメータに指定された値以下の場合、2つのストリームは自動的にマージされます。分割されたストリームが元のストリームとマージされて戻されるには、クローニングされた取得プロセスが開始されている必要があります。

NULLまたは0(ゼロ)を指定した場合、分割されたストリームは自動的に元のストリームとマージされて戻されません。分割されたストリームを元のストリームとマージするには、クローニングされた取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEが、元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEに追いついているか、またはほとんど追いついているときに、MERGE_STREAMプロシージャを手動で実行します。

CAPTURE_MESSAGE_CREATE_TIMEは、取得された変更がREDOログに記録された時間を記録します。

schedule_name

Oracle Schedulerスケジュール名で、[schema_name.]schedule_nameの形式で指定します。たとえば、strmadmin.merge_scheduleのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

auto_merge_thresholdがNULL以外の正数の場合、スケジュールは、適切な時間にストリームを自動的にマージするジョブによって使用されます。命名規則に従うか、またはスケジュールの追跡を簡単にするには、スケジュール名を指定します。

NULLの場合で、auto_merge_thresholdがNULL以外の正数の場合、システムによってスケジュール名が生成されます。

auto_merge_thresholdがNULLまたは0(ゼロ)の場合、このパラメータはNULLに設定する必要があります。

このプロシージャによってスケジュールが作成された場合、スケジュールはプロシージャが完了したときに開始されます。スケジュールを変更して、マージ・ジョブの実行頻度を制御できます。

既存のスケジュール名を指定すると、エラーが発生します。

merge_job_name

Oracle Schedulerジョブ名で、[schema_name.]merge_job_nameの形式で指定します。たとえば、strmadmin.merge_jobのように指定します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

auto_merge_thresholdがNULL以外の正数の場合、ジョブは、適切な時間にストリームを自動的にマージします。命名規則に従う場合やジョブの追跡を簡単にする場合には、マージ・ジョブ名を指定します。

NULLの場合で、auto_merge_thresholdがNULL以外の正数の場合、システムによってジョブ名が生成されます。

auto_merge_thresholdがNULLまたは0(ゼロ)の場合、このパラメータはNULLに設定する必要があります。

既存のジョブ名を指定すると、エラーが発生します。

関連項目:
Oracle Schedulerの詳細は、『Oracle Database管理者ガイド』を参照してください。

START_OUTBOUNDプロシージャ

このプロシージャにより、XStreamアウトバウンド・サーバーが起動します。アウトバウンド・サーバーは、LCRをXStreamクライアントのアプリケーションにストリーム・アウトします。

構文

DBMS_XSTREAM_ADM.START_OUTBOUND(
server_name      IN  VARCHAR2);

パラメータ

表204-37 START_OUTBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

起動中のアウトバウンド・サーバーの名前。NULL指定は許可されていません。所有者を指定しないでください。

STOP_OUTBOUNDプロシージャ

このプロシージャにより、XStreamアウトバウンド・サーバーが停止します。アウトバウンド・サーバーは、LCRをXStreamクライアントのアプリケーションにストリーム・アウトします。

構文

DBMS_XSTREAM_ADM.STOP_OUTBOUND(
server_name  IN  VARCHAR2,
force        IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表204-38 STOP_OUTBOUNDプロシージャのパラメータ

パラメータ

説明

server_name

停止中のアウトバウンド・サーバーの名前。NULL指定は許可されていません。所有者を指定しないでください。

force

TRUEの場合は、アウトバウンド・サーバーとその取得プロセスをできるだけ早く停止します。

FALSEの場合は、適用された一連のトランザクションに不整合がないことが確認された後で、アウトバウンド・サーバーが停止されます。

適用コンポーネントの動作は、forceパラメータに指定された設定、およびcommit_serialization適用コンポーネント・パラメータに指定された設定によって決まります。

205 DBMS_XSTREAM_AUTH

DBMS_XSTREAM_AUTHパッケージでは、XStream管理者への権限付与およびXStream管理者からの権限取消しを行うためのサブプログラムが提供されます。

この章では、次の項目について説明します。

- DBMS_XSTREAM_AUTHの使用

- 概要

- セキュリティ・モデル

- DBMS_XSTREAM_AUTHサブプログラムの要約

関連項目:
GRANT_ADMIN_PRIVILEGEプロシージャ

DBMS_XSTREAM_AUTHの使用

この項では、DBMS_XSTREAM_AUTHパッケージの使用に関連する項目について説明しています。

- 概要

- セキュリティ・モデル

概要

このパッケージでは、XStream管理者への権限付与およびXStream管理者からの権限取消しを行うためのサブプログラムが提供されます。

セキュリティ・モデル

このパッケージのセキュリティは、次のいずれかの方法で制御できます。

- 選択したユーザーまたはロールに、このパッケージのEXECUTEを付与する方法

- 選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLEを付与する方法

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、このパッケージを使用するときに、ユーザーの作成、権限の付与および表領域の作成を行うことができる管理ユーザーとして接続します。

DBMS_XSTREAM_AUTHサブプログラムの要約

表205-1 DBMS_XSTREAM_AUTHパッケージのサブプログラム

サブプログラム

説明

GRANT_ADMIN_PRIVILEGEプロシージャ

ユーザーがXStream管理者になるために必要な権限を直接付与するか、これらの権限を付与するスクリプトを生成します。

GRANT_REMOTE_ADMIN_ACCESSプロシージャ

データベース・リンクを使用して権限受領者に接続することによって、リモートXStream管理者が、ローカル・データベースで管理操作を実行できるようにします。

REVOKE_ADMIN_PRIVILEGEプロシージャ

ユーザーからXStream管理者の権限を直接取り消すか、これらの権限を取り消すスクリプトを生成します。

REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

データベース・リンクを使用して権限受領者に接続することによって、リモートXStream管理者が管理操作を実行できないようにします。

注意:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。

GRANT_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、ユーザーがXStream管理者になるために必要な権限を直接付与するか、これらの権限を付与するスクリプトを生成します。

関連項目:
「GRANT_ADMIN_PRIVILEGEプロシージャ」

構文

DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee                    IN  VARCHAR2,
privilege_type             IN  VARCHAR2  DEFAULT '*',
grant_select_privileges    IN  BOOLEAN   DEFAULT FALSE,
do_grants                  IN  BOOLEAN   DEFAULT TRUE,
file_name                  IN  VARCHAR2  DEFAULT NULL,
directory_name             IN  VARCHAR2  DEFAULT NULL
grant_optional_privileges  IN  VARCHAR2  DEFAULT NULL,
container                  IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表205-2 GRANT_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

grantee

権限を付与するユーザー。

privilege_type

次のいずれかの値を指定します。

- CAPTURE
CAPTUREを指定すると、ユーザーに取得プロセスを管理するために必要な最低限の権限が付与されます。

- APPLY
APPLYを指定すると、ユーザーにアウトバウンド・サーバー、インバウンド・サーバーおよび適用プロセスを管理するために必要な最低限の権限が付与されます。

- *
*を指定すると、ユーザーに取得プロセス、アウトバウンド・サーバー、インバウンド・サーバーおよび適用プロセスを管理するために必要な最低限の権限が付与されます。

grant_select_privileges

TRUEを指定すると、SELECT_CATALOG_ROLEを含む一連の権限がユーザーに付与されます。

FALSEを指定すると、一連の権限がユーザーに付与されません。

SELECT_CATALOG_ROLEにより、ユーザーはデータ・ディクショナリから選択できます。XStreamの信頼できるユーザー・モデルに対して、このパラメータをTRUEに設定してください。XStreamの信頼されないユーザー・モデルに対しては、このパラメータをFALSEに設定してください。

do_grants

TRUEを指定すると、指定した権限受領者に権限が直接付与され、DBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューに、LOCAL_PRIVILEGES列とACCESS_FROM_REMOTE列の両方がYESで指定されて権限受領者が追加されます。このデータ・ディクショナリ・ビューにユーザーのエントリがすでにある場合、他のエントリは作成されず、エラーも発生しません。TRUEを指定すると、権限付与文が失敗した場合、エラーが発生します。

FALSEを指定すると、指定した権限受領者に権限は直接付与されず、権限受領者はDBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューに追加されません。

後で実行するファイルをこのプロシージャで生成する場合は、FALSEを指定します。FALSEを指定し、file_nameパラメータまたはdirectory_nameパラメータがNULLの場合、エラーが発生します。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を付与するすべての文が格納されます。指定したファイル名のファイルが、指定したディレクトリ名にすでに存在する場合、既存のファイルに権限付与文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、プロシージャはファイルを生成しません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

grant_optional_privileges

DV_XSTREAM_ADMIN権限やDV_GOLDENGATE_ADMIN権限など、権限受領者に対して付与するオプション権限のカンマ区切りのリスト。

container

CURRENTを指定すると、このプロシージャが起動されるコンテナでのみ、権限受領者に権限が付与されます。CURRENTは、ルートまたはPDBに接続している間に指定できます。

ALLを指定すると、このプロシージャの起動後に作成されたCDBのすべてのコンテナおよびすべてのPDBで、権限受領者に権限が付与されます。ALLを指定するには、このプロシージャをルートから起動する必要があります。

コンテナ名を指定すると、指定したコンテナでのみ権限受領者への権限の付与が行われます。ルートを指定するには、ルートへの接続中にCDB$ROOTを使用します。PDBを指定するには、プロシージャをルートから起動する必要があります。

注意: このパラメータは、CDBのみに適用されます。

使用上の注意

このプロシージャを実行するユーザーは他のユーザーに権限を付与できる管理ユーザーである必要があります。

特に、このプロシージャは指定したユーザーに次の権限を付与します。

- RESTRICTED SESSIONシステム権限。

- 次のパッケージに対するEXECUTE権限。

- DBMS_APPLY_ADM

- DBMS_AQ

- DBMS_AQADM

- DBMS_AQIN

- DBMS_AQELM

- DBMS_CAPTURE_ADM

- DBMS_FLASHBACK

- DBMS_LOCK

- DBMS_PROPAGATION_ADM

- DBMS_RULE_ADM

- DBMS_STREAMS_ADM

- DBMS_STREAMS_ADVISOR_ADM

- DBMS_STREAMS_HANDLER_ADM

- DBMS_STREAMS_MESSAGING

- DBMS_TRANSFORM

- DBMS_XSTREAM_ADM

- キューにメッセージをエンキューし、キューからメッセージをデキューする権限。

- キューを管理する権限。

- ユーザー固有のスキーマおよびその他のスキーマの次のタイプのオブジェクトを作成、変更、実行する権限。

- 評価コンテキスト

- ルール・セット

- ルール

さらに、権限受領者は次の権限を他のユーザーに付与できます。

- SELECT_CATALOG_ROLE

- XStreamおよびOracle Streamsに関連するデータ・ディクショナリ・ビューに対するSELECTまたはREAD権限。

- リモートXStream管理者が、権限受領者に接続することによって、データベース・リンクを介して、管理操作を実行できるようにする機能。
この機能は、このパッケージのGRANT_REMOTE_ADMIN_ACCESSプロシージャを実行することによって可能になります。

注意:

- このプロシージャによって実行されるすべての文を詳しく参照するには、このプロシージャを使用してスクリプトを生成した後、テキスト・エディタでこのスクリプトを開きます。

- このプロシージャは、XStream環境の構成および管理に必要な権限のみを付与します。必要に応じて、追加権限を権限受領者に付与できます。

関連項目:

- 「GRANT_REMOTE_ADMIN_ACCESSプロシージャ」

- CREATE DIRECTORY SQL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

GRANT_REMOTE_ADMIN_ACCESSプロシージャ

このプロシージャは、リモートXStream管理者が、データベース・リンクを使用して権限受領者に接続することによって、ローカル・データベースでの管理操作を実行できるようにします。

構文

DBMS_XSTREAM_AUTH.GRANT_REMOTE_ADMIN_ACCESS(
grantee  IN  VARCHAR2);

パラメータ

表205-3 GRANT_REMOTE_ADMIN_ACCESSプロシージャのパラメータ

パラメータ

説明

grantee

リモート・アクセスを許可するユーザー。このプロシージャは、ACCESS_FROM_REMOTE列がYESに指定されたDBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューに権限受領者を追加します。このデータ・ディクショナリ・ビューにすでにユーザーのエントリがある場合、別のエントリは作成されません。かわりに、ACCESS_FROM_REMOTE列がYESに更新されます。

使用上の注意

一般に、ダウンストリーム取得プロセスで、ローカル・ソース・データベースで発生した変更を取得した場合に、このプロシージャを実行して、ローカル・ソース・データベースの権限受領者を指定します。ダウンストリーム取得データベースのXStream管理者は、この接続を利用してソース・データベースを管理します。

注意:
このパッケージのGRANT_ADMIN_PRIVILEGEプロシージャによって、このプロシージャが実行されます。

関連項目:
「GRANT_ADMIN_PRIVILEGEプロシージャ」

REVOKE_ADMIN_PRIVILEGEプロシージャ

このプロシージャは、XStream管理者の権限をユーザーから直接取り消すか、これらの権限を取り消すスクリプトを生成します。

構文

DBMS_XSTREAM_AUTH.REVOKE_ADMIN_PRIVILEGE(
grantee                     IN  VARCHAR2,
privilege_type              IN  VARCHAR2  DEFAULT '*',
revoke_select_privileges    IN  BOOLEAN   DEFAULT FALSE,
do_revokes                  IN  BOOLEAN   DEFAULT TRUE,
file_name                   IN  VARCHAR2  DEFAULT NULL,
directory_name              IN  VARCHAR2  DEFAULT NULL
revoke_optional_privileges  IN  VARCHAR2  DEFAULT NULL,
container                   IN  VARCHAR2  DEFAULT 'CURRENT');

パラメータ

表205-4 REVOKE_ADMIN_PRIVILEGEプロシージャのパラメータ

パラメータ

説明

grantee

権限を取り消すユーザー。

privilege_type

次のいずれかの値を指定します。

- CAPTURE
CAPTUREを指定すると、取得プロセスを管理するために必要な最低限の権限がユーザーから取り消されます。

- APPLY
APPLYを指定すると、アウトバウンド・サーバー、インバウンド・サーバーおよび適用プロセスを管理するために必要な最低限の権限がユーザーから取り消されます。

- *
*を指定すると、取得プロセス、アウトバウンド・サーバー、インバウンド・サーバーおよび適用プロセスを管理するために必要な最低限の権限がユーザーから取り消されます。

revoke_select_privileges

TRUEを指定すると、SELECT_CATALOG_ROLEを含む一連の権限がユーザーから取り消されます。

FALSEを指定すると、一連の権限はユーザーから取り消されません。

SELECT_CATALOG_ROLEにより、ユーザーはデータ・ディクショナリから選択できます。

do_revokes

TRUEを指定すると、指定したユーザーから権限が直接取り消され、DBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーが削除されます。このデータ・ディクショナリ・ビューにユーザーのレコードがない場合、ビューからレコードは削除されず、エラーも発生しません。TRUEを指定すると、権限取消し文が失敗した場合、エラーが発生します。取り消そうとしている権限がユーザーに付与されていない場合、権限取消し文は失敗します。

FALSEを指定すると、指定したユーザーの権限は直接取り消されず、DBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューからユーザーは削除されません。

後で実行するファイルをこのプロシージャで生成する場合は、FALSEを指定します。FALSEに設定すると、file_nameまたはdirectory_nameパラメータのいずれかがNULLの場合、エラーは発生しません。

file_name

このプロシージャによって生成されるファイルの名前。ファイルには、権限を取り消すすべての文が格納されます。指定したファイル名のファイルが指定したディレクトリ名にすでに存在する場合、既存のファイルに権限取消し文が追加されます。

NULLに設定すると、ファイルは生成されません。

directory_name

生成されたファイルを配置するディレクトリ。指定したディレクトリは、SQL文CREATE DIRECTORYを使用して作成されたディレクトリ・オブジェクトである必要があります。ディレクトリを指定した場合、このプロシージャを起動するユーザーは、ディレクトリ・オブジェクトに対してWRITE権限を持つ必要があります。

file_nameパラメータがNULLの場合、このパラメータは無視され、ファイルは生成されません。

file_nameパラメータがNULL以外の場合にNULLに設定すると、エラーが発生します。

revoke_optional_privileges

DV_XSTREAM_ADMIN権限やDV_GOLDENGATE_ADMIN権限など、権限受領者から取り消すオプション権限のカンマ区切りのリスト。

container

CURRENTを指定すると、このプロシージャが起動されるコンテナでのみ、権限受領者から権限が取り消されます。CURRENTは、ルートまたはPDBに接続している間に指定できます。

ALLを指定すると、CDBのすべてのコンテナで、権限受領者から権限が取り消されます。ALLを指定するには、このプロシージャをルートから起動する必要があります。

コンテナ名を指定すると、指定したコンテナでのみ権限受領者の権限が取り消されます。ルートを指定するには、ルートへの接続中にCDB$ROOTを使用します。PDBを指定するには、プロシージャをルートから起動する必要があります。

注意: このパラメータは、CDBのみに適用されます。

使用上の注意

このプロシージャを実行するユーザーは他のユーザーから権限を取り消せる管理ユーザーである必要があります。特に、このプロシージャは、このパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを実行して付与された権限を取り消します。

注意:
このプロシージャによって実行されるすべての文を詳しく参照するには、このプロシージャを使用してスクリプトを生成した後、テキスト・エディタでこのスクリプトを開きます。

関連項目:

- 「GRANT_ADMIN_PRIVILEGEプロシージャ」

- CREATE DIRECTORY SQL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

REVOKE_REMOTE_ADMIN_ACCESSプロシージャ

このプロシージャは、リモートXStream管理者が、データベース・リンクを使用して権限受領者に接続することによって、管理操作を実行できないようにします。

注意:
このパッケージのREVOKE_ADMIN_PRIVILEGEプロシージャによって、このプロシージャが実行されます。

関連項目:
「REVOKE_ADMIN_PRIVILEGEプロシージャ」

構文

DBMS_XSTREAM_AUTH.REVOKE_REMOTE_ADMIN_ACCESS(
grantee  IN  VARCHAR2);

パラメータ

表205-5 REVOKE_REMOTE_ADMIN_ACCESSプロシージャのパラメータ

パラメータ

説明

grantee

リモートXStream管理者からのアクセスが無効になっているユーザー。

権限受領者の行がDBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューに存在する場合、このプロシージャは権限受領者に対してACCESS_FROM_REMOTE列をNOに更新します。この更新後、LOCAL_PRIVILEGES列およびACCESS_FROM_REMOTE列がともに権限受領者に対してNOである場合は、ビューから権限受領者が削除されます。

DBA_XSTREAM_ADMINISTRATORデータ・ディクショナリ・ビューに権限受領者の列が存在しない場合、ビューは更新されず、エラーも発生しません。

206 DEBUG_EXTPROC

DEBUG_EXTPROCパッケージによって、セッション内のextprocエージェントを起動できます。このユーティリティ・パッケージは、外部プロシージャをデバッグするのに役立ちます。

この章では、次の項目について説明します。

- DEBUG_EXTPROCの使用方法

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- DEBUG_EXTPROCサブプログラムの要約

DEBUG_EXTPROCの使用方法

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

セキュリティ・モデル

Oracleアカウントに、パッケージに対するEXECUTE権限と、CREATE LIBRARY権限が必要です。

使用上の注意

パッケージをインストールするには、スクリプトDBGEXTP.SQLを実行します。

- 'extproc'プロセスをデバッグするOracle USERに、このパッケージをインストールまたはロードします。

- DEBUG_EXTPROCパッケージに対するEXECUTE権限があることを確認します。

SELECT SUBSTR(OBJECT_NAME, 1, 20)
FROM USER_OBJECTS
WHERE OBJECT_NAME = 'DEBUG_EXTPROC';

- パッケージに対してEXECUTE権限がある場合は、他のユーザーとしてこのパッケージをインストールできます。

注意:
ここでは、デバッグ処理を支援するために、デバッグ記号が付いた共有ライブラリを作成しておくことを前提としています。Cコンパイラのマニュアルをチェックして、適切なCコンパイラ・スイッチで、デバッグ記号が付いた共有ライブラリを作成してください。

パッケージをインストール後、次の操作を行います。

- ORACLEに接続して、SQL*PlusまたはOCIプログラムから新規のOracleセッションを起動します。

- プロシージャDEBUG_EXTPROC.STARTUP_EXTPROC_AGENTを実行して、このセッションでextprocエージェントを起動します。たとえば、DEBUG_EXTPROC.STARTUP_EXTPROC_AGENTを実行します。extprocエージェントが終了してしまうので、このセッションは終了しないでください。

- このセッションで起動したextprocエージェントのPIDを判別します。

- デバッガ(たとえば、gdb、dbxまたはシステム固有なデバッガ)を使用して、extproc実行ファイルをロードし、実行プロセスに連結します。

- ファンクション'pextproc'にブレーク・ポイントを設定し、デバッガが実行を継続できるようにします。

- 最初にDEBUG_EXTPROC.STARTUP_EXTPROC_AGENTを実行した同じセッションで、外部プロシージャを実行します。

- デバッガがファンクション'pextproc'でブレークします。この時点で、PL/SQL外部ファンクションで参照する共有ライブラリがロードされ、ファンクションが解決されます。Cファンクションにブレーク・ポイントを設定し、デバッガが実行を継続できるようにします。

PL/SQLは、実行時に共有ライブラリをロードするため、使用するデバッガは、共有ライブラリから新規の記号を自動的に追跡管理できる場合とできない場合があります。デバッガ・コマンドをいくつか発行して、記号をロードできます(たとえば、gdb内の'share')。

- デバッガは、Cファンクションでブレークします。デバッグ記号が付いた共有ライブラリを作成しておくことが前提です。

- デバッグを続行します。

ルールおよび制限

注意:
DEBUG_EXTPROCは、実行プロセスに連結できるデバッガを使用して、プラットフォームでのみ稼働します。

DEBUG_EXTPROCサブプログラムの要約

表206-1 DEBUG_EXTPROCパッケージのサブプログラム

サブプログラム

説明

STARTUP_EXTPROC_AGENTプロシージャ

セッション内でextprocエージェント・プロセスを起動します。

STARTUP_EXTPROC_AGENTプロシージャ

このプロシージャは、セッションでextprocエージェント・プロセスを起動します。これにより、実行プロセスのPIDを取得できます。このPIDは、デバッガを使用して実行プロセスに連結するために必要です。

構文

DEBUG_EXTPROC.STARTUP_EXTPROC_AGENT;

207 HTF

HTF(ハイパーテキスト・ファンクション)パッケージおよびHTP(ハイパーテキスト・プロシージャ)パッケージは、HTMLタグを生成します。たとえば、HTF.ANCHORファンクションは、HTMLアンカー・タグ<A>を生成します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- HTFの使用方法

- 推奨されないサブプログラム

- 使用上の注意

- ルールおよび制限

- 例

- タグの要約

- HTFサブプログラムの要約

HTFの使用方法

- 推奨されないサブプログラム

- 使用上の注意

- ルールおよび制限

- 例

推奨されないサブプログラム

注意:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

Oracle Database 10gでは、次のサブプログラムの使用は推奨されていません。

- ESCAPE_URLファンクション

使用上の注意

1つ以上のHTMLタグを生成するすべてのHTFファンクションには、次の例外と同一のパラメータを持つHTPプロシージャがあります。

- PRINTSプロシージャとPSプロシージャには、HTFファンクションに相当するものはありません。文字列変換ファンクションが必要な場合は、ESCAPE_SCファンクションまたはESCAPE_URLファンクションを使用します。PRINTSプロシージャおよびPSプロシージャと同じ操作を実行するESCAPE_SCプロシージャはありますが、ESCAPE_URLファンクションに相当するプロシージャはないことに注意してください。

- FORMAT_CELLファンクションには、HTPに相当するものはありません。このファンクションは、TABLEDATAプロシージャ内にHTPに相当するものを持つTABLEDATAファンクションを使用して、HTML表内で列の値を書式設定します。FORMAT_CELLファンクションを使用すると、HTML表を制御しやすくなります。

このファンクションのバージョンでは、Webページへの直接の出力は生成されません。かわりに、出力を呼び出し元の文に戻り値として渡します。コールをネストする必要がある場合は、ファンクションを使用します。HTFファンクションの出力を印刷するには、そのファンクションをHTF.PRINTファンクション内からコールします。これによって、生成されたWebページにパラメータが出力されます。

ルールおよび制限

HTF.PRINT、HTF.PRN、HTF.PA、OWA_UTIL.CELLSPRINTなどのLONGデータ・タイプの値をファンクションで使用する場合は、LONGデータの最初の32Kのみが使用されます。LONGデータは、ファンクションのVARCHAR2データ・タイプにバインドされています。

例

次のコマンドは、簡単なHTMLドキュメントを生成します。

CREATE OR REPLACE PROCEDURE hello AS
BEGIN
HTP.P (HTF.HTMLOPEN); -- generates <HTML>
HTP.P (HTF.HEADOPEN); -- generates <HEAD>
HTP.P (HTF.TITLE('Hello')); -- generates <TITLE>Hello</TITLE>
HTP.P (HTF.HEADCLOSE); -- generates </HEAD>
HTP.P (HTF.BODYOPEN); -- generates <BODY>
HTP.P (HTF.HEADER(1, 'Hello')); -- generates <H1>Hello</H1>
HTP.P (HTF.BODYCLOSE); -- generates </BODY>
HTP.P (HTF.HTMLCLOSE); -- generates </HTML>
END;

タグの要約

HTML、HEADおよびBODYタグ

HTMLOPENファンクション、HTMLCLOSEファンクション: <HTML>および</HTML>を生成します。

HEADOPENファンクション、HEADCLOSEファンクション: <HEAD>および</HEAD>を生成します。

BODYOPENファンクション、BODYCLOSEファンクション: <BODY>および</BODY>を生成します。

コメント・タグ

COMMENTファンクション: <!--および-->を生成します。

http://www.w3.org.BASEファンクション: <BASE>を生成します。

LINKRELファンクション: REL属性が指定された<LINK>を生成します。

LINKREVファンクション: REV属性が指定された<LINK>を生成します。

TITLEファンクション: <TITLE>を生成します。

METAファンクション: <META>を生成します。

SCRIPTファンクション: <SCRIPT>を生成します。

STYLEファンクション: <STYLE>を生成します。

ISINDEXファンクション: <ISINDEX>を生成します。

アプレット・タグ

APPLETOPENファンクション、APPLETCLOSEファンクション: <APPLET>および</APPLET>を生成します。

PARAMファンクション: <PARAM>を生成します。

リスト・タグ

OLISTOPENファンクション、OLISTCLOSEファンクション: <OL>および</OL>を生成します。

ULISTOPENファンクション、ULISTCLOSEファンクション: <UL>および</UL>を生成します。

DLISTOPENファンクション、DLISTCLOSEファンクション: <DL>および</DL>を生成します。

DLISTTERMファンクション: <DT>を生成します。

DLISTDEFファンクション: <DD>を生成します。

DIRLISTOPENファンクション、DIRLISTCLOSEファンクション: <DIR>および</DIR>を生成します。

LISTHEADERファンクション: <LH>を生成します。

LISTINGOPENファンクション、LISTINGCLOSEファンクション: <LISTING>および</LISTING>を生成します。

MENULISTOPENファンクション: <MENU>および</MENU>を生成します。

LISTITEMファンクション: <LI>を生成します。

フォーム・タグ

FORMOPENファンクション、FORMCLOSEファンクション: <FORM>および</FORM>を生成します。

FORMCHECKBOXファンクション: <INPUT TYPE="CHECKBOX">を生成します。

FORMHIDDENファンクション: <INPUT TYPE="HIDDEN">を生成します。

FORMIMAGEファンクション: <INPUT TYPE="IMAGE">を生成します。

FORMPASSWORDファンクション: <INPUT TYPE="PASSWORD">を生成します。

FORMRADIOファンクション: <INPUT TYPE="RADIO">を生成します。

FORMSELECTOPENファンクション、FORMSELECTCLOSEファンクション: <SELECT>および</SELECT>を生成します。

FORMSELECTOPTIONファンクション: <OPTION>を生成します。

FORMTEXTファンクション: <INPUT TYPE="TEXT">を生成します。

FORMTEXTAREAファンクション: <TEXTAREA>を生成します。

FORMTEXTAREAOPENファンクション、FORMTEXTAREACLOSEファンクション: <TEXTAREA>および</TEXTAREA>を生成します。

FORMRESETファンクション: <INPUT TYPE="RESET">を生成します。

FORMSUBMITファンクション: <INPUT TYPE="SUBMIT">を生成します。

テーブル・タグ

TABLEOPENファンクション、TABLECLOSEファンクション: <TABLE>および</TABLE>を生成します。

TABLECAPTIONファンクション: <CAPTION>を生成します。

TABLEROWOPENファンクション、TABLEROWCLOSEファンクション: <TR>および</TR>を生成します。

TABLEHEADERファンクション: <TH>を生成します。

TABLEDATAファンクション: <TD>を生成します。

IMG、HRおよびAタグ

HRファンクション、LINEファンクション: <HR>を生成します。

IMGファンクション、IMG2ファンクション: <IMG>を生成します。

ANCHORファンクション、ANCHOR2ファンクション: <A>を生成します。

MAPOPENファンクション、MAPCLOSEファンクション: <MAP>および</MAP>を生成します。

パラグラフ・フォーマット・タグ

HEADERファンクション: ヘッダー・タグ(<H1>から<H6>)を生成します。

PARAファンクション、PARAGRAPHファンクション: <P>を生成します。

PRNファンクション、PRINTファンクション: 渡されるすべてのテキストを生成します。

PRNファンクション、Sファンクション: 渡されるすべてのテキストを生成、HTMLの特殊文字をエスケープします。

PREOPENファンクション、PRECLOSEファンクション: <PRE>および</PRE>を生成します。

BLOCKQUOTEOPENファンクション、BLOCKQUOTECLOSEファンクション: <BLOCKQUOTE>および</BLOCKQUOTE>を生成します。

DIVファンクション: <DIV>を生成します。

NLファンクション、BRファンクション: <BR>を生成します。

NOBRファンクション: <NOBR>を生成します。

WBRファンクション: <WBR>を生成します。

PLAINTEXTファンクション: <PLAINTEXT>を生成します。

ADDRESSファンクション: <ADDRESS>を生成します。

MAILTOファンクション: MAILTO属性を指定した<A>を生成します。

AREAファンクション: <AREA>を生成します。

BGSOUNDファンクション: <BGSOUND>を生成します。

文字フォーマット・タグ

BASEFONTファンクション: <BASEFONT>を生成します。

BIGファンクション: <BIG>を生成します。

BOLDファンクション: <B>を生成します。

CENTERファンクション: <CENTER>および</CENTER>を生成します。

CENTEROPENファンクション、CENTERCLOSEファンクション: <CENTER>および</CENTER>を生成します。

CITEファンクション: <CITE>を生成します。

CODEファンクション: <CODE>を生成します。

DFNファンクション: <DFN>を生成します。

EMファンクション、EMPHASISファンクション: <EM>を生成します。

FONTOPENファンクション、FONTCLOSEファンクション: <FONT>および</FONT>を生成します。

ITALICファンクション: <I>を生成します。

KBDファンクション、KEYBOARDファンクション: <KBD>および</KBD>を生成します。

Sファンクション: <S>を生成します。

SAMPLEファンクション: <SAMP>を生成します。

SMALLファンクション: <SMALL>を生成します。

STRIKEファンクション: <STRIKE>を生成します。

STRONGファンクション: <STRONG>を生成します。

SUBファンクション: <SUB>を生成します。

SUPファンクション: <SUP>を生成します。

TELETYPEファンクション: <TT>を生成します。

UNDERLINEファンクション: <U>を生成します。

VARIABLEファンクション: <VAR>を生成します。

フレーム・タグ

FRAMEファンクション: <FRAME>を生成します。

FRAMESETOPENファンクション、FRAMESETCLOSEファンクション: <FRAMESET>および</FRAMESET>を生成します。

NOFRAMESOPENファンクション、NOFRAMESCLOSEファンクション: <NOFRAMES>および</NOFRAMES>を生成します。

HTFサブプログラムの要約

表207-1 HTFパッケージのサブプログラム

サブプログラム

説明

ADDRESSファンクション

ドキュメントのアドレス、作成者および署名を指定する<ADDRESS>および</ADDRESS>タグを生成します。

ANCHORファンクション

ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>タグを生成します。

ANCHOR2ファンクション

ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>タグを生成します。

APPLETCLOSEファンクション

</APPLET>タグでアプレットの起動をクローズします。

APPLETOPENファンクション

Javaアプレットの起動を開始する<APPLET>タグを生成します。

AREAファンクション

クライアント側のイメージ・マップを定義する<AREA>タグを生成します。

BASEファンクション

ドキュメントのURLを記録する<BASE>タグを生成します。

BASEFONTファンクション

Webページの基本フォント・サイズを指定する<BASEFONT>タグを生成します。

BGSOUNDファンクション

Webページにオーディオを組み込む<BGSOUND>タグを生成します。

BIGファンクション

ブラウザにテキストを大きいフォントで表示させる<BIG>および</BIG>タグを生成します。

BLOCKQUOTECLOSEファンクション

引用したテキスト・セクションの終了を示す</BLOCKQUOTE>タグを生成します。

BLOCKQUOTEOPENファンクション

引用したテキスト・セクションの開始を示す<BLOCKQUOTE>タグを生成します。

BODYCLOSEファンクション

HTMLドキュメントの本体セクションの終了を示す</BODY>タグを生成します。

BODYOPENファンクション

HTMLドキュメントの本体セクションの開始を示す<BODY>タグを生成します。

BOLDファンクション

ブラウザにテキストを太字で表示させる<B>および</B>タグを生成します。

BRファンクション

テキストの新しい行を開始する<BR>タグを生成します。

CENTERファンクション

Webページ内のテキスト・セクションを中央揃えする<CENTER>および</CENTER>タグを生成します。

CENTERCLOSEファンクション

中央揃えするテキスト・セクションの終了を示す</CENTER>タグを生成します。

CENTEROPENファンクション

中央揃えするテキスト・セクションの開始を示す<CENTER>タグを生成します。

CITEファンクション

ブラウザにテキストを引用として表示させる<CITE>および</CITE>タグを生成します。

CODEファンクション

テキストを等幅フォント、または定義されたスタイルでブラウザに表示させる、<CODE>および</CODE>タグを生成します。

COMMENTファンクション

コメント・タグ<!-- ctext -->を生成します。

DFNファンクション

テキストをイタリック、または定義されたスタイルでブラウザに表示させる、<DFN>および</DFN>タグを生成します。

DIRLISTCLOSEファンクション

ディレクトリ・リストのセクションを終了する</DIR>タグを生成します。

DIRLISTOPENファンクション

ディレクトリ・リストのセクションを開始する<DIR>タグを生成します。

DIVファンクション

ドキュメントの区分を作成する<DIV>タグを生成します。

DLISTCLOSEファンクション

定義リストを終了する</DL>タグを生成します。

DLISTDEFファンクション

用語の定義を挿入する<DD>タグを生成します。

DLISTOPENファンクション

定義リストを開始する<DL>タグを生成します。

DLISTTERMファンクション

定義リスト<DL>の用語を定義する<DT>タグを生成します。

EMファンクション

強調したテキストを定義する<EM>および</EM>タグを生成します。

EMPHASISファンクション

強調したテキストを定義する<EM>および</EM>タグを生成します。

ESCAPE_SCファンクション

HTMLにおいて特別な意味を持つ文字をエスケープ・シーケンスで置き換えます。

ESCAPE_URLファンクション

HTMLおよびHTTPにおいて特別な意味を持つ文字をエスケープ・シーケンスで置き換えます。

FONTCLOSEファンクション

指定されたフォント特性を持つテキスト・セクションの終了を示す</FONT>タグを生成します。

FONTOPENファンクション

指定されたフォント特性を持つテキスト・セクションの開始を示す<FONT>タグを生成します。

FORMAT_CELLファンクション

TABLEDATAファンクションを使用して、HTML表内の列の値を書式設定します。

FORMCHECKBOXファンクション

チェックボックス要素をフォームに挿入するTYPE="checkbox"を指定した<INPUT>タグを生成します。

FORMCLOSEファンクション

HTMLドキュメントのフォーム・セクションの終了を示す</FORM>タグを生成します。

FORMFILEファンクション

ファイルのフォーム要素を挿入するTYPE="file"を指定した<INPUT>タグを生成します。特定のページのファイルをアップロードする場合に使用します。

FORMHIDDENファンクション

非表示フォーム要素を挿入するTYPE="hidden"を指定した<INPUT>タグを生成します。

FORMIMAGEファンクション

イメージ・フィールドを作成するTYPE="image"を指定した<INPUT>タグを生成します。このイメージ・フィールドをクリックすると、ユーザーはフォームを即座に送信できます。

FORMOPENファンクション

HTMLドキュメントのフォーム・セクションの開始を示す<FORM>タグを生成します。

FORMPASSWORDファンクション

単一行のテキスト入力フィールドを作成するTYPE="password"を指定した<INPUT>タグを生成します。

FORMRADIOファンクション

HTMLフォーム上にラジオ・ボタンを作成するTYPE="radio"を指定した<INPUT>タグを生成します。

FORMRESETファンクション

選択するとフォーム・フィールドが初期値にリセットされるようなボタンを作成する、TYPE="reset"を指定した<INPUT>タグを生成します。

FORMSELECTCLOSEファンクション

選択フォーム要素の終了を示す</SELECT>タグを生成します。

FORMSELECTOPENファンクション

選択フォーム要素の開始を示す</SELECT>タグを生成します。

FORMSELECTOPTIONファンクション

1つの選択要素に1つの選択肢を示す<OPTION>タグを生成します。

FORMSUBMITファンクション

クリックするとフォームが送信されるようなボタンを作成する、TYPE="submit"を指定した<INPUT>タグを生成します。

FORMTEXTファンクション

単一行のテキストのフィールドを作成するTYPE="text"を指定した<INPUT>タグを生成します。

FORMTEXTAREAファンクション

テキスト領域に事前定義されたテキストを持たない、テキスト・フィールドを作成する<TEXTAREA>タグを生成します。

FORMTEXTAREA2ファンクション

テキスト領域に事前定義されたテキストを持たずにラップ・スタイル指定が可能なテキスト・フィールドを作成する<TEXTAREA>タグを生成します。

FORMTEXTAREACLOSEファンクション

テキスト領域フォーム要素を終了する</TEXTAREA>タグを生成します。

FORMTEXTAREAOPENファンクション

テキスト領域フォーム要素の開始を示す<TEXTAREA>タグを生成します。

FORMTEXTAREAOPEN2ファンクション

ラップ・スタイルを指定する機能を持つテキスト領域フォーム要素の開始を示す<TEXTAREA>を生成します。

FRAMEファンクション

<FRAMESET>タグによって作成されたフレームの特性を定義する<FRAME>タグを生成します。

FRAMESETCLOSEファンクション

フレームセット・セクションを終了する</FRAMESET>タグを生成します。

FRAMESETOPENファンクション

フレームセット・セクションを開始する</FRAMESET>タグを生成します。

HEADCLOSEファンクション

HTMLドキュメントのヘッダー・セクションの終了を示す</HEAD>タグを生成します。

HEADERファンクション

ヘッダーを開始するタグ(<H1>から<H6>)およびそれに対応するヘッダーを終了するタグ(</H1>から</H6>)を生成します。

HEADOPENファンクション

HTMLドキュメントのヘッダー・セクションの開始を示す<HEAD>タグを生成します。

HRファンクション

HTMLドキュメントに行を生成する<HR>タグを生成します。

HTMLCLOSEファンクション

HTMLドキュメントの終了を示す</HTML>タグを生成します。

HTMLOPENファンクション

HTMLドキュメントの開始を示す<HTML>タグを生成します。

IMGファンクション

HTMLページ上にイメージをロードするようにブラウザに指示する<IMG>タグを生成します。

IMG2ファンクション

HTMLページ上にイメージをロードするようにブラウザに指示する<IMG>タグを生成します。USEMAP属性の値を指定するオプションを使用できます。

ISINDEXファンクション

「値を入力してください」などのプロンプト・テキストが表示される単一の入力フィールドを作成し、その値をページまたはプログラムのURLに送信します。

ITALICファンクション

ブラウザにテキストをイタリックで表示させる<I>および</I>タグを生成します。

KBDファンクション

ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。

KEYBOARDファンクション

ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。

LINEファンクション

HTMLドキュメントに行を生成する<HR>タグを生成します。

LINKRELファンクション

アンカーからターゲットへのハイパーテキスト・リンクによって記述される関係を示す、REL属性を指定した<LINK>タグを生成します。

LINKREVファンクション

ターゲットからアンカーへのハイパーテキスト・リンクによって記述された関係を示すREV属性を指定した<LINK>タグを生成します。

LISTHEADERファンクション

リストの先頭にHTMLタグを印刷する<LH>および</LH>タグを生成します。

LISTINGCLOSEファンクション

HTMLページの本体にある固定幅テキスト・セクションの終了を示す</LISTING>タグを生成します。

LISTINGOPENファンクション

HTMLページの本体にある固定幅テキスト・セクションの開始を示す<LISTING>タグを生成します。

LISTITEMファンクション

リスト項目を示す<LI>タグを生成します。

MAILTOファンクション

メール・アドレスの引数に付加するmailtoにHREFが設定された<A>タグを生成します。

MAPCLOSEファンクション

クライアント側のイメージ・マップにおける領域セットの終了を示す</MAP>タグを生成します。

MAPOPENファンクション

クライアント側のイメージ・マップにおける領域セットの開始を示す<MAP>タグを生成します。

MENULISTCLOSEファンクション

項目ごとに行を示すリストを終了する</MENU>タグを生成します。

MENULISTOPENファンクション

項目ごとに行を示すリストを開始する<MENU>タグが生成されます。

METAファンクション

ドキュメントに関するメタ情報の埋込みとHTTPヘッダーの値の指定を行う<META>タグを生成します。

NLファンクション

テキストの新しい行を開始する<BR>タグを生成します。

NOBRファンクション

テキスト・セクションの改行をオフにする<NOBR>および</NOBR>タグを生成します。

NOFRAMESCLOSEファンクション

フレームなしセクションの終了を示す</NOFRAMES>タグを生成します。

NOFRAMESOPENファンクション

フレームなしセクションの開始を示す<NOFRAMES>タグを生成します。

OLISTCLOSEファンクション

順序付けられたリストの終了を示す</OL>タグを生成します。

OLISTOPENファンクション

順序付けられたリストの開始を示す<OL>タグを生成します。

PARAファンクション

後置テキストを1つのパラグラフとしてフォーマットする<P>タグを生成します。

PARAGRAPHファンクション

<P>タグに属性を追加します。

PARAMファンクション

Javaアプレットにパラメータ値を指定する<PARAM>タグを生成します。

PLAINTEXTファンクション

タグで囲んだテキストを固定幅でブラウザに表示させる<PLAINTEXT>および</PLAINTEXT>タグを生成します。

PRECLOSEファンクション

HTMLページの本体にある、事前フォーマットされたテキスト・セクションの終了を示す</PRE>タグを生成します。

PREOPENファンクション

HTMLページの本体にある、事前フォーマットされたテキスト・セクションの開始を示す<PRE>タグを生成します。

PRINTファンクション

指定されたパラメータを、\n改行文字で終了する文字列として生成します。

PRNファンクション

指定されたパラメータを文字列として生成します。

Sファンクション

タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<S>および</S>タグを生成します。

SAMPLEファンクション

タグで囲んだテキストを等幅フォントまたは定義されたスタイルでブラウザに表示させる、<SAMP>および</SAMP>タグを生成します。

SCRIPTファンクション

JavaScript、VBscriptなどの言語で書かれたスクリプトを含む<SCRIPT>および</SCRIPT>タグを生成します。

SMALLファンクション

タグで囲んだテキストを小さいフォントでブラウザに表示させる、<SMALL>および</SMALL>タグを生成します。

STRIKEファンクション

タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<STRIKE>および</STRIKE>タグを生成します。

STRONGファンクション

タグで囲んだテキストを太字または定義されたスタイルでブラウザに表示させる、<STRONG>および</STRONG>タグを生成します。

STYLEファンクション

Webページ内にスタイルシートを組み込む<STYLE>および</STYLE>タグを作成します。

SUBファンクション

タグで囲んだテキストを下付き文字としてブラウザに表示させる、<SUB>および</SUB>タグを生成します。

SUPファンクション

タグで囲んだテキストを上付き文字としてブラウザに表示させる、<SUP>および</SUP>タグを生成します。

TABLECAPTIONファンクション

HTML表内にキャプションを配置する<CAPTION>および</CAPTION>タグを生成します。

TABLECLOSEファンクション

HTML表の終了を示す</TABLE>タグを生成します。

TABLEDATAファンクション

HTML表内のセルにデータを挿入する<TD>および</TD>タグを生成します。

TABLEHEADERファンクション

HTML表内にヘッダー・セルを挿入する<TH>および</TH>タグを生成します。

TABLEOPENファンクション

HTML表の開始を示す<TABLE>タグを生成します。

TABLEROWCLOSEファンクション

HTML表の新しい行の終了を示す</TR>タグを生成します。

TABLEROWOPENファンクション

HTML表の新しい行の開始を示す<TR>タグを生成します。

TELETYPEファンクション

タグで囲んだテキストをクーリエなどの固定幅のタイプライター・フォントでブラウザに表示させる、<TT>および</TT>タグを生成します。

TITLEファンクション

ブラウザ・ウィンドウのタイトルバーに表示するテキストを指定する<TITLE>および</TITLE>タグを生成します。

ULISTCLOSEファンクション

順序付けられていないリストの終了を示す</UL>タグを生成します。

ULISTOPENファンクション

順序付けられていないリストの開始を示す<UL>タグを生成します。

UNDERLINEファンクション

タグで囲んだテキストを下線付きでブラウザに表示させる、<U>および</U>タグを生成します。

VARIABLEファンクション

タグで囲んだテキストをイタリックまたは定義されたスタイルでブラウザに表示させる<VAR>および</VAR>タグを生成します。

WBRファンクション

NOBRテキスト・セクション内に非強制改行を挿入する<WBR>タグを生成します。

ADDRESSファンクション

このファンクションは、ドキュメントのアドレス、作成者および署名を指定する<ADDRESS>および</ADDRESS> タグを生成します。

構文

HTF.ADDRESS (
cvalue         IN       VARCHAR2
cnowrap        IN       VARCHAR2   DEFAULT NULL
cclear         IN       VARCHAR2   DEFAULT NULL
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-2 ADDRESSファンクションのパラメータ

パラメータ

説明

cvalue

<ADDRESS>および</ADDRESS>タグ間に位置する文字列。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに組み込まれます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<ADDRESS CLEAR="cclear" NOWRAP cattributes>cvalue</ADDRESS>

ANCHORファンクション

このファンクションおよびANCHOR2ファンクションは、ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>のHTMLタグを生成します。これらのサブプログラムの違いは、ANCHOR2ファンクションではターゲットが提供され、フレームでこれを使用できることです。

構文

HTF.ANCHOR (
curl           IN       VARCHAR2,
ctext          IN       VARCHAR2,
cname          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-3 ANCHORファンクションのパラメータ

パラメータ

説明

curl

HREF属性の値。

ctext

<A>および</A>タグ間に位置する文字列。

cname

NAME属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<A HREF="curl" NAME="cname" cattributes>ctext</A>

使用上の注意

このタグでは複数の属性を指定できますが、その場合、HREFまたはNAMEは必須です。HREFはリンク先を指定します。このタグにNAMEを使用すると、ハイパーテキスト・リンクのリンク先になります。

ANCHOR2ファンクション

このファンクションおよびANCHORファンクションは、ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>のHTMLタグを生成します。これらのサブプログラムの違いは、このファンクションではターゲットが提供され、フレームでこれを使用できることです。

構文

HTF.ANCHOR2 (
curl           IN       VARCHAR2,
ctext          IN       VARCHAR2,
cname          IN       VARCHAR2   DEFAULT NULL,
ctarget        in       varchar2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-4 ANCHOR2ファンクションのパラメータ

パラメータ

説明

curl

HREF属性の値。

ctext

<A>および</A>タグ間に位置する文字列。

cname

NAME属性の値。

ctarget

TARGET属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<A HREF="curl" NAME="cname" TARGET = "ctarget" cattributes>ctext</A>

APPLETCLOSEファンクション

このファンクションは、</APPLET>タグでアプレットの起動をクローズします。まず、APPLETOPENファンクションを使用してJavaアプレットを起動する必要があります。

構文

HTF.APPLETCLOSE
RETURN VARCHAR2;

APPLETOPENファンクション

このファンクションは、Javaアプレットの起動を開始する<APPLET>タグを生成します。</APPLET>タグを生成するAPPLETCLOSEファンクションを使用して、アプレットの起動をクローズします。

構文

HTF.APPLETOPEN (
ccode          IN       VARCHAR2,
cheight        IN       NUMBER,
cwidth         IN       NUMBER,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-5 APPLETOPENファンクションのパラメータ

パラメータ

説明

ccode

アプレット・クラスの名前を指定するCODE属性の値。

cheight

HEIGHT属性の値。

cwidth

WIDTH属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<APPLET CODE=ccode HEIGHT=cheight WIDTH=cwidth cattributes>

たとえば、次のように入力したとします。

HTF.appletopen('testclass.class', 100, 200, 'CODEBASE="/ows-applets"')

生成結果は、次のようになります。

<APPLET CODE="testclass.class" height=100 width=200 CODEBASE="/ows-applets">

使用上の注意

- PARAMファンクションを使用して、Javaアプレットにパラメータを指定してください。

- CODEBASE属性を指定する場合、PL/SQLカートリッジがクラス・ファイルの場所を特定できるように、cattributesパラメータを使用します。CODEBASE属性では、クラス・ファイルを含むバーチャル・パスを指定します。

AREAファンクション

このファンクションは、クライアント側のイメージ・マップを定義する<AREA>タグを生成します。<AREA>タグは、イメージ内の領域およびその領域のリンク先を定義します。

構文

HTF.AREA (
ccoords        IN       VARCHAR2
cshape         IN       VARCHAR2   DEFAULT NULL,
chref          IN       VARCHAR2   DEFAULT NULL,
cnohref        IN       VARCHAR2   DEFAULT NULL,
ctarget        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-6 AREAファンクションのパラメータ

パラメータ

説明

ccords

COORDS属性の値。

cshape

SHAPE属性の値。

chref

HREF属性の値。

cnohref

このパラメータの値がNULLでない場合、NOHREF属性がタグに追加されます。

ctarget

TARGET属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<AREA COORDS="ccoords" SHAPE="cshape" HREF="chref" NOHREF TARGET="ctarget" cattributes>

BASEファンクション

このファンクションは、ドキュメントのURLを記録する<BASE>タグを生成します。

構文

HTF.BASE (
ctarget        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-7 BASEファンクションのパラメータ

パラメータ

説明

ctarget

TARGET属性の値。このドキュメント内に存在するすべてのリンクのリンク先となるウィンドウ名を指定します。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<BASE HREF="<current URL>" TARGET="ctarget" cattributes>

BASEFONTファンクション

このファンクションは、Webページの基本フォント・サイズを指定する<BASEFONT>タグを生成します。

構文

HTF.BASEFONT (
nsize    IN    INTEGER)
RETURN VARCHAR2;

パラメータ

表207-8 BASEFONTファンクションのパラメータ

パラメータ

説明

nsize

SIZE属性の値。

例

このファンクションでの生成結果は、次のようになります。

<BASEFONT SIZE="nsize">

BGSOUNDファンクション

このファンクションは、Webページにオーディオを組み込む<BGSOUND>タグを生成します。

構文

HTF.BGSOUND (
csrc           IN       VARCHAR2,
cloop          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-9 BGSOUNDファンクションのパラメータ

パラメータ

説明

csrc

SRC属性の値。

cloop

LOOP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<BGSOUND SRC="csrc" LOOP="cloop" cattributes>

BIGファンクション

このファンクションは、ブラウザにテキストを大きいフォントで表示させる<BIG>および</BIG>タグを生成します。

構文

HTF.BIG (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-10 BIGファンクションのパラメータ

パラメータ

説明

ctext

タグ間に位置するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<BIG cattributes>ctext</BIG>

BLOCKQUOTECLOSEファンクション

このファンクションは、引用したテキスト・セクションの終了を示す</BLOCKQUOTE>タグを生成します。テキスト・セクションの開始を示すには、BLOCKQUOTEOPENファンクションを使用します。

構文

HTF.BLOCKQUOTECLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</BLOCKQUOTE>

BLOCKQUOTEOPENファンクション

このファンクションは、引用したテキスト・セクションの開始を示す<BLOCKQUOTE>タグを生成します。テキスト・セクションの終了を示すには、BLOCKQUOTECLOSEファンクションを使用します。

構文

HTF.BLOCKQUOTEOPEN (
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-11 BLOCKQUOTEOPENファンクションのパラメータ

パラメータ

説明

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<BLOCKQUOTE CLEAR="cclear" NOWRAP cattributes>

BODYCLOSEファンクション

このファンクションは、HTMLドキュメントの本体セクションの終了を示す</BODY>タグを生成します。本体セクションの開始を示すには、BODYOPENファンクションを使用します。

構文

HTF.BODYCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</BODY>

BODYOPENファンクション

このファンクションは、HTMLドキュメントの本体セクションの開始を示す<BODY>タグを生成します。本体セクションの終了を示すには、BODYCLOSEファンクションを使用します。

構文

HTF.BODYOPEN (
cbackground    IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-12 BODYOPENファンクションのパラメータ

パラメータ

説明

cbackground

ドキュメントのバックグラウンドに使用するグラフィック・ファイルを指定する、BACKGROUND属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<BODY background="cbackground" cattributes>

たとえば、次のように入力したとします。

HTF.BODYOPEN('/img/background.gif')
RETURN VARCHAR2;

生成結果は、次のようになります。

<BODY background="/img/background.gif">

BOLDファンクション

このファンクションは、ブラウザにテキストを太字で表示させる<B>および</B>タグを生成します。

構文

HTF.BOLD (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-13 BOLDファンクションのパラメータ

パラメータ

説明

ctext

タグ間に位置するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<B cattributes>ctext</B>

BRファンクション

このファンクションは、テキストの新しい行を開始する<BR>タグを生成します。このファンクションの実行内容はNLファンクションと同じです。

構文

HTF.BR(
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-14 BRファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<BR CLEAR="cclear" cattributes>

CENTERファンクション

このファンクションは、Webページ内のテキスト・セクションを中央揃えする<CENTER>および</CENTER>タグを生成します。

構文

HTF.CENTER (
ctext          IN       VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-15 CENTERのパラメータ

パラメータ

説明

ctext

タグ間に位置するテキスト。

例

このファンクションでの生成結果は、次のようになります。

<CENTER>ctext</CENTER>

CENTERCLOSEファンクション

このファンクションは、中央揃えするテキスト・セクションの終了を示す</CENTER>タグを生成します。中央揃えするテキスト・セクションの開始を示すには、CENTEROPENファンクションを使用します。

構文

HTF.CENTERCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</CENTER>

CENTEROPENファンクション

このファンクションは、中央揃えするテキスト・セクションの開始を示す<CENTER>タグを生成します。中央揃えするテキスト・セクションの終了を示すには、CENTERCLOSEファンクションを使用します。

構文

HTF.CENTEROPEN
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<CENTER>

CITEファンクション

このファンクションは、ブラウザにテキストを引用として表示させる<CITE>および</CITE>タグを生成します。

構文

HTF.CITE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-16 CITEファンクションのパラメータ

パラメータ

説明

ctext

引用として表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<CITE cattributes>ctext</CITE>

CODEファンクション

このファンクションは、テキストを等幅フォント、または定義されたスタイルでブラウザに表示させる、<CODE>および</CODE>タグを生成します。

構文

HTF.CODE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-17 CODEファンクションのパラメータ

パラメータ

説明

ctext

コードとして表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<CODE cattributes>ctext</CODE>

COMMENTファンクション

このファンクションは、コメント・タグを生成します。

構文

HTF.COMMENT (
ctext          IN       VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-18 COMMENTファンクションのパラメータ

パラメータ

説明

ctext

コメント。

例

このファンクションでの生成結果は、次のようになります。

<!-- ctext -->

DFNファンクション

このファンクションは、テキストをイタリックまたは定義されたスタイルでブラウザに表示させる、<DFN>および</DFN>タグを生成します。

構文

HTF.DFN (
ctext          IN       VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-19 DFNファンクションのパラメータ

パラメータ

説明

ctext

イタリックで表示するテキスト。

例

このファンクションでの生成結果は、次のようになります。

<DFN>ctext</DFN>

DIRLISTCLOSEファンクション

このファンクションは、ディレクトリ・リストのセクションを終了する</DIR>タグを生成します。ディレクトリ・リストのセクションを開始するには、DIRLISTOPENファンクションを使用します。

構文

HTF.DIRLISTCLOSE
RETURN VARCHAR2;

使用上の注意

ディレクトリ・リストには、最大20文字までの項目リストが表示されます。このリストの項目は、通常、列に24文字幅で配列されます。<LI>タグを直接挿入するか、LISTITEMファンクションを起動して</DIR>タグの直後に<LI>タグが表示されるようにして、項目をリストとして定義します。

例

このファンクションでの生成結果は、次のようになります。

</DIR>

DIRLISTOPENファンクション

このファンクションは、ディレクトリ・リストのセクションを開始する<DIR>タグを生成します。ディレクトリ・リストのセクションを終了するには、DIRLISTCLOSEファンクションを使用します。

構文

HTF.DIRLISTOPEN
RETURN VARCHAR2;

使用上の注意

ディレクトリ・リストには、最大20文字までの項目リストが表示されます。このリストの項目は、通常、列に24文字幅で配列されます。<LI>タグを直接挿入するか、LISTITEMファンクションを起動して</DIR>タグの直後に<LI>タグが表示されるようにして、項目をリストとして定義します。

例

このファンクションでの生成結果は、次のようになります。

<DIR>

DIVファンクション

このファンクションは、ドキュメントの区分を作成する<DIV>タグを生成します。

構文

HTF.DIV (
calign         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-20 DIVファンクションのパラメータ

パラメータ

説明

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<DIV ALIGN="calign" cattributes>

DLISTCLOSEファンクション

このファンクションは、定義リストを終了する</DL> タグを生成します。定義リストを開始するには、DLISTOPENファンクションを使用します。

構文

HTF.DLISTCLOSE
RETURN VARCHAR2;

使用上の注意

定義リストは用語集に類似していて、用語および定義が含まれています。用語の場合はDLISTTERMファンクション、定義の場合はDLISTDEFファンクションを使用して挿入します。

例

このファンクションでの生成結果は、次のようになります。

</DL>

DLISTDEFファンクション

このファンクションは、用語の定義を挿入する<DD>タグを生成します。定義リスト<DL>には、このタグを使用します。用語の場合は<DT>タグ、定義の場合は<DD>タグを使用します。

構文

HTF.DLISTDEF (
ctext          IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-21 DLISTDEFファンクションのパラメータ

パラメータ

説明

ctext

用語の定義。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<DD CLEAR="cclear" cattributes>ctext

DLISTOPENファンクション

このファンクションは、定義リストを開始する<DL>タグを生成します。定義リストを終了するには、DLISTCLOSEファンクションを使用します。

構文

HTF.DLISTOPEN (
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-22 DLISTOPENファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

使用上の注意

定義リストは用語集に類似していて、用語および定義が含まれています。用語の場合はDLISTTERMファンクション、定義の場合はDLISTDEFファンクションを使用して挿入します。

例

このファンクションでの生成結果は、次のようになります。

<DL CLEAR="cclear" cattributes>

DLISTTERMファンクション

このファンクションは、定義リスト<DL>の用語を定義する<DT>タグを生成します。

構文

HTF.DLISTTERM (
ctext          IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-23 DLISTTERMファンクションのパラメータ

パラメータ

説明

ctext

用語。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<DT CLEAR="cclear" cattributes>ctext

EMファンクション

このファンクションは、強調したテキストを定義する<EM>および</EM>タグを生成します。このファンクションの実行内容はEMPHASISファンクションと同じです。

構文

HTF.EM(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-24 EMファンクションのパラメータ

パラメータ

説明

ctext

強調するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<EM cattributes>ctext</EM>

EMPHASISファンクション

このファンクションは、強調したテキストを定義する<EM>および</EM>タグを生成します。このファンクションの実行内容はEMファンクションと同じです。

構文

HTF.EMPHASIS(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-25 EMPHASISファンクションのパラメータ

パラメータ

説明

ctext

強調するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<EM cattributes>ctext</EM>

ESCAPE_SCファンクション

このファンクションは、HTMLにおいて特別な意味を持つ文字をエスケープ・シーケンスで置き換えます。次のように文字が変換されます。

- &は&amp;

- "は&quot:

- <は&lt;

- >は&gt;

このファンクションの実行内容は、HTP.PRINTSプロシージャやHTP.PSプロシージャと同じです。

構文

HTF.ESCAPE_SC(
ctext          IN       VARCHAR2);

パラメータ

表207-26 ESCAPE_SCファンクションのパラメータ

パラメータ

説明

ctext

変換するテキスト文字列。

ESCAPE_URLファンクション

注意:
リリース10gで非推奨になっており、このリリースでは下位互換性を維持する目的でのみ提供されているこのプロシージャは、Internet Engineering Task Force(IETF)のRequest for Comments(RFC)のURLエンコードの標準には準拠していません。URLをエンコードする必要がある場合は、UTL_URLパッケージでESCAPEファンクションを使用することをお薦めします。

このファンクションは、HTMLおよびHTTPにおいて特別な意味を持つ文字をエスケープ・シーケンスで置き換えます。次のように文字が変換されます。

- &は&amp;

- "は&quot:

- <は&lt;

- >は&gt;

- %は&25

構文

HTF.ESCAPE_URL(
p_url          IN       VARCHAR2);

パラメータ

表207-27 ESCAPE_URLファンクションのパラメータ

パラメータ

説明

p_url

変換する文字列。

FONTCLOSEファンクション

このファンクションは、指定されたフォント特性を持つテキスト・セクションの終了を示す、</FONT>タグを生成します。テキスト・セクションの開始を示すには、FONTOPENファンクションを使用します。

構文

HTF.FONTCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</FONT>

FONTOPENファンクション

このファンクションは、指定されたフォント特性を持つテキスト・セクションの開始を示す、<FONT>タグを生成します。テキスト・セクションの終了を示すには、FONTCLOSEファンクションを使用します。

構文

HTF.FONTOPEN(
ccolor         IN       VARCHAR2   DEFAULT NULL,
cface          IN       VARCHAR2   DEFAULT NULL,
csize          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-28 FONTOPENファンクションのパラメータ

パラメータ

説明

ccolor

COLOR属性の値。

cface

FACE属性の値。

csize

SIZE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<FONT COLOR="ccolor" FACE="cface" SIZE="csize" cattributes>

FORMAT_CELLファンクション

このファンクションは、TABLEDATAファンクションを使用してHTML表内の列の値を書式設定します。これにより、HTML表を管理しやすくなります。

構文

HTF.FORMAT_CELL(
columnValue          IN       VARCHAR2
format_numbers       IN       VARCHAR2   DEFAULT NULL
RETURN VARCHAR2;

パラメータ

表207-29 FORMAT_CELLファンクションのパラメータ

パラメータ

説明

columnValue

HTML表内で書式設定する必要のある値。

format_numbers

数字データが表示される書式。このパラメータの値がNULLでない場合、数字フィールドには、小数点第2位までに丸めた値が右詰めで表示されます。

例

このファンクションでの生成結果は、次のようになります。

<TD >columnValue</TD>

FORMCHECKBOXファンクション

このファンクションは、チェックボックス要素をフォームに挿入するTYPE="checkbox"を指定した<INPUT>タグを生成します。チェックボックス要素は、ユーザーがオンまたはオフに切り替えるボタンです。

構文

HTF.FORMCHECKBOX(
cname          IN       VARCHAR2,
cvalue         IN       VARCHAR2   DEFAULT 'ON',
cchecked       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-30 FORMCHECKBOXファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cchecked

このパラメータの値がNULLでない場合、CHECKED属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="checkbox" NAME="cname" VALUE="cvalue" CHECKED cattributes>

FORMCLOSEファンクション

このファンクションは、HTMLドキュメントのフォーム・セクションの終了を示す</FORM>タグを生成します。フォーム・セクションの開始を示すには、FORMOPENファンクションを使用します。

構文

HTF.FORMCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</FORM>

FORMFILEファンクション

このファンクションは、ファイルのフォーム要素を挿入するTYPE="file"を指定した<INPUT>タグを生成します。特定のページのファイルをアップロードする場合に、これを使用します。

構文

HTF.FORMFILE(
cname          IN       VARCHAR2,
caccept        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-31 FORMFILEファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

caccept

MIMEタイプのカンマ区切りのリスト(アップロード用)。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="file" NAME="cname" ACCEPT="caccept" cattributes>

FORMHIDDENファンクション

このファンクションは、非表示フォーム要素を挿入する、TYPE="hidden"を指定した<INPUT>タグを生成します。この要素は、ユーザーに対して非表示になります。スクリプトに追加の値を送信します。

構文

HTF.FORMHIDDEN(
cname          IN       VARCHAR2,
cvalue         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-32 FORMHIDDENファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="hidden" NAME="cname" VALUE="cvalue" cattributes>

FORMIMAGEファンクション

このファンクションは、イメージ・フィールドを作成するTYPE="image"を指定した<INPUT>タグを生成します。このイメージ・フィールドをクリックすると、ユーザーはフォームを即座に送信できます。選択したポイントの座標はピクセルで計算され、(フォームの他のコンテンツとともに) 2つの名前/値のペアの形式で戻されます。x座標の場合は.x、y座標の場合は.yが追加されて、フィールド名の下に送信されます。すべてのVALUE属性は無視されます。

構文

HTF.FORMIMAGE(
cname          IN       VARCHAR2,
csrc           IN       VARCHAR2,
calign         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-33 FORMIMAGEファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

csrc

イメージ・ファイルを指定するSRC属性の値。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="image" NAME="cname" SRC="csrc" ALIGN="calign" cattributes>

FORMOPENファンクション

このファンクションは、HTMLドキュメントのフォーム・セクションの開始を示す<FORM>タグを生成します。フォーム・セクションの終了を示すには、FORMCLOSEファンクションを使用します。

構文

HTF.FORMOPEN(
curl           IN       VARCHAR2,
cmethod        IN       VARCHAR2   DEFAULT 'POST',
ctarget        IN       VARCHAR2   DEFAULT NULL,
cenctype       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-34 FORMOPENファンクションのパラメータ

パラメータ

説明

curl

フォームのコンテンツの送信先である、Web Request BrokerまたはCGIスクリプトのURL。このパラメータは必須です。

cmethod

METHOD属性の値。この値は、"GET"または"POST"に指定できます。

ctarget

TARGET属性の値。

cenctype

ENCTYPE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<FORM ACTION="curl" METHOD="cmethod" TARGET="ctarget" ENCTYPE="cenctype" cattributes>

FORMPASSWORDファンクション

このファンクションは、単一行のテキスト入力フィールドを作成するTYPE="password"を指定した<INPUT>タグを生成します。ユーザーがフィールドにテキストを入力すると、各文字はアスタリスクで表示されます。これは、パスワードの入力に使用されます。

構文

HTF.FORMPASSWORD(
cname          IN       VARCHAR2,
csize          IN       VARCHAR2,
cmaxlength     IN       VARCHAR2   DEFAULT NULL,
cvalue         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-35 FORMPASSWORDファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

csize

SIZE属性の値。

cmaxlength

MAXLENGTH属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="password" NAME="cname" SIZE="csize" MAXLENGTH="cmaxlength" VALUE="cvalue" cattributes>

FORMRADIOファンクション

このファンクションは、HTMLフォーム上にラジオ・ボタンを作成するTYPE="radio"を指定した<INPUT>タグを生成します。ユーザーが選択できるラジオボタンは1つのみです。同じセットの各ラジオボタンの名前は同じですが、値は異なります。選択したラジオボタンは、名前/値ペアを生成します。

構文

HTF.FORMRADIO(
cname          IN       VARCHAR2,
cvalue         IN       VARCHAR2,
cchecked       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-36 FORMRADIOファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cchecked

このパラメータの値がNULLでない場合、CHECKED属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="radio" NAME="cname" VALUE="cvalue" CHECKED cattributes>

FORMRESETファンクション

このファンクションは、選択するとフォーム・フィールドが初期値にリセットされるようなボタンを作成する、TYPE="reset"を指定した<INPUT>タグを生成します。

構文

HTF.FORMRESET(
cvalue         IN       VARCHAR2   DEFAULT 'Reset',
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-37 FORMRESETファンクションのパラメータ

パラメータ

説明

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="reset" VALUE="cvalue" cattributes>

FORMSELECTCLOSEファンクション

このファンクションは、選択フォーム要素の終了を示す</SELECT>タグを生成します。選択フォーム要素は、ユーザーが1つ以上の値を選択するリストボックスです。選択フォーム要素の開始を示すには、FORMSELECTOPENファンクションを使用します。値を挿入する場合は、FORMSELECTOPTIONファンクションを使用します。

構文

HTF.FORMSELECTCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</SELECT>

「FORMSELECTOPENファンクション」の「例」と同様です。

FORMSELECTOPENファンクション

このファンクションは、Selectフォームの要素を開始する<SELECT>タグを生成します。選択フォーム要素は、ユーザーが1つ以上の値を選択するリストボックスです。選択フォーム要素の終了を示すには、FORMSELECTCLOSEファンクションを使用します。値を挿入する場合は、FORMSELECTOPTIONファンクションを使用します。

構文

HTF.FORMSELECTOPEN(
cname          IN       VARCHAR2,
cprompt        IN       VARCHAR2   DEFAULT NULL,
nsize          IN       INTEGER    DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-38 FORMSELECTOPENファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

cprompt

リスト・ボックスの前の文字列。

nsize

SIZE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

cprompt <SELECT NAME="cname" SIZE="nsize" cattributes>
</SELECT>

たとえば、次のように入力したとします。

HTF.FORMSELECTOPEN('greatest_player';
'Pick the greatest player:');
HTF.FORMSELECTOPTION('Messier');
HTF.FORMSELECTOPTION('Howe');
HTF.FORMSELECTOPTION('Gretzky');.
HTF.FORMSELECTCLOSE;

生成結果は、次のようになります。

Pick the greatest player:
<SELECT NAME="greatest_player">
<OPTION>Messier
<OPTION>Howe
<OPTION>Gretzky
</SELECT>

FORMSELECTOPTIONファンクション

このファンクションは、1つの選択要素に1つの選択肢を表示する<OPTION>タグを生成します。

構文

HTF.FORMSELECTOPTION(
cvalue         IN       VARCHAR2,
cselected      IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-39 FORMSELECTOPTIONファンクションのパラメータ

パラメータ

説明

cvalue

オプションのテキスト。

cvalue

このパラメータの値がNULLでない場合、SELECTED属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<OPTION SELECTED cattributes>cvalue

「FORMSELECTOPENファンクション」の「例」と同様です。

FORMSUBMITファンクション

このファンクションは、クリックするとフォームが送信されるようなボタンを作成する、TYPE="submit"を指定した<INPUT>タグを生成します。ボタンにNAME属性が指定されている場合、ボタンは送信データに名前/値ペアを与えます。

構文

HTF.FORMSUBMIT(
cname          IN       VARCHAR2   DEFAULT NULL,
cvalue         IN       VARCHAR2   DEFAULT 'Submit',
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-40 FORMSUBMITファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="submit" NAME="cname" VALUE="cvalue" cattributes>

FORMTEXTファンクション

このファンクションは、単一行のテキストのフィールドを作成するTYPE="text"を指定した<INPUT>タグを生成します。

構文

HTF.FORMTEXT(
cname          IN       VARCHAR2,
csize          IN       VARCHAR2   DEFAULT NULL,
cmaxlength     IN       VARCHAR2   DEFAULT NULL,
cvalue         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-41 FORMTEXTファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

csize

SIZE属性の値。

cmaxlength

MAXLENGTH属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<INPUT TYPE="text" NAME="cname" SIZE="csize" MAXLENGTH="cmaxlength" VALUE="cvalue" cattributes>

FORMTEXTAREAファンクション

このファンクションは、テキスト領域に事前定義されたテキストを持たないテキスト・フィールドを作成する、<TEXTAREA>タグを生成します。このフィールドには、複数のテキスト行を入力できます。FORMTEXTAREA2ファンクションの場合も実行内容は同じですが、ラップ・スタイルを指定できるcwrapパラメータが追加されています。

構文

HTF.FORMTEXTAREA(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-42 FORMTEXTAREAファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" cattributes></TEXTAREA>

FORMTEXTAREA2ファンクション

このファンクションは、テキスト領域に事前定義されたテキストを持たないテキスト・フィールドを作成する、<TEXTAREA>タグを生成します。このフィールドには、複数のテキスト行を入力できます。ラップ・スタイルは指定できませんが、それ以外の実行内容はFORMTEXTAREAファンクションと同じです。

構文

HTF.FORMTEXTAREA2(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-43 FORMTEXTAREA2ファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cwrap

WRAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" WRAP="cwrap" cattributes></TEXTAREA>

FORMTEXTAREACLOSEファンクション

このファンクションは、テキスト領域フォーム要素の終了を示す</TEXTAREA>タグを生成します。テキスト領域の要素の開始を示すには、FORMTEXTAREAOPENファンクションまたはFORMTEXTAREAOPEN2ファンクションを使用します。

構文

HTF.FORMTEXTAREACLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</TEXTAREA>

FORMTEXTAREAOPENファンクション

このファンクションは、テキスト領域フォーム要素の開始を示す<TEXTAREA>タグを生成します。FORMTEXTAREAOPEN2ファンクションの場合も実行内容は同じですが、ラップ・スタイルを指定できるcwrapパラメータが追加されています。テキスト領域フォーム要素の終了を示すには、FORMTEXTAREACLOSEファンクションを使用します。

構文

HTF.FORMTEXTAREAOPEN(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-44 FORMTEXTAREAOPENファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" cattributes>

FORMTEXTAREAOPEN2ファンクション

このファンクションは、テキスト領域フォーム要素の開始を示す<TEXTAREA>タグを生成します。ラップ・スタイルは指定できませんが、それ以外の実行内容はFORMTEXTAREAOPENファンクションと同じです。テキスト領域フォーム要素の終了を示すには、FORMTEXTAREACLOSEファンクションを使用します。

構文

HTF.FORMTEXTAREAOPEN2(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-45 FORMTEXTAREAOPEN2ファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cwrap

WRAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" WRAP = "cwrap" cattributes>

FRAMEファンクション

このファンクションは、<FRAMESET>タグで作成したフレームの特性を開始する<FRAME>タグを生成します。

構文

HTF.FRAME(
csrc           IN       VARCHAR2,
cname          IN       VARCHAR2   DEFAULT NULL,
cmarginwidth   IN       VARCHAR2   DEFAULT NULL,
cmarginheight  IN       VARCHAR2   DEFAULT NULL,
cscrolling     IN       VARCHAR2   DEFAULT NULL,
cnoresize      IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-46 FRAMEファンクションのパラメータ

パラメータ

説明

csrc

フレームに表示するURL。

cname

NAME属性の値。

cmarginwidth

MARGINWIDTH属性の値。

cscrolling

SCROLLING属性の値。

cnoresize

このパラメータの値がNULLでない場合、NORESIZE属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<FRAME SRC="csrc" NAME="cname" MARGINWIDTH="cmarginwidth" MARGINHEIGHT="cmarginheight" SCROLLING="cscrolling" NORESIZE cattributes>

FRAMESETCLOSEファンクション

このファンクションは、フレームセット・セクションを終了する</FRAMESET>タグを生成します。フレームセット・セクションの開始を示すには、FRAMESETOPENファンクションを使用します。

構文

HTF.FRAMESETCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</FRAMESET>

FRAMESETOPENファンクション

このファンクションは、フレームセット・セクションを定義する<FRAMESET>タグを生成します。フレームセット・セクションの終了を示すには、FRAMESETCLOSEファンクションを使用します。

構文

HTF.FRAMESETOPEN(
crows          IN       VARCHAR2   DEFAULT NULL,
ccols          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-47 FRAMESETOPENファンクションのパラメータ

パラメータ

説明

crows

ROWS属性の値。

ccols

COLS属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<FRAMESET ROWS="crows" COLS="ccols" cattributes>

HEADCLOSEファンクション

このファンクションは、HTMLドキュメントのヘッダー・セクションの終了を示す</HEAD>タグを生成します。HTMLドキュメントのヘッダー・セクションの開始を示すには、HEADOPENファンクションを使用します。

構文

HTF.HEADCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</HEAD>

HEADERファンクション

このファンクションは、ヘッダーを開始するタグ(<H1>から<H6>)およびそれに対応するヘッダーを終了するタグ(</H1>から</H6>)を生成します。

構文

HTF.HEADER(
nsize          IN       INTEGER,
cheader        IN       VARCHAR2,
calign         IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-48 HEADERファンクションのパラメータ

パラメータ

説明

nsize

ヘッダー・レベル。1から6の範囲の整数を指定します。

cheader

ヘッダーに表示するテキスト。

calign

ALIGN属性の値。

cnowrap

NOWRAP属性の値。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

HTF.header (1,'Overview')
RETURN VARCHAR2;

この例での生成結果は、次のようになります。

<H1>Overview</H1>

HEADOPENファンクション

このファンクションは、HTMLドキュメントのヘッダー・セクションの開始を示す<HEAD>タグを生成します。HTMLドキュメントのヘッダー・セクションの終了を示すには、HEADCLOSEファンクションを使用します。

構文

HTF.HEADOPEN
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<HEAD>

HRファンクション

このファンクションは、HTMLドキュメントに行を生成する<HR>タグを生成します。このサブプログラムの実行内容はLINEファンクションと同じです。

構文

HTF.HR(
cclear         IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-49 HRファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

csrc

カスタム・イメージを行のソースとして指定するSRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<HR CLEAR="cclear" SRC="csrc" cattributes>

HTMLCLOSEファンクション

このファンクションは、HTMLドキュメントの終了を示す</HTML>タグを生成します。HTMLドキュメントの開始を示すにはHTMLOPENファンクションを使用します。

構文

HTF.HTMLCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</HTML>

HTMLOPENファンクション

このファンクションは、HTMLドキュメントの開始を示す<HTML>タグを生成します。HTMLドキュメントの終了を示すには、HTMLCLOSEファンクションを使用します。

構文

HTF.HTMLOPEN
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<HTML>

IMGファンクション

このファンクションは、HTMLページ上にイメージをロードするようにブラウザに指示する、<IMG>タグを生成します。IMG2ファンクションでも実行内容は同じですが、その場合はcusemapパラメータも使用します。

構文

HTF.IMG(
curl           IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
calt           IN       VARCHAR2   DEFAULT NULL,
cismap         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-50 IMGファンクションのパラメータ

パラメータ

説明

curl

SRC属性の値。

calign

ALIGN属性の値。

calt

ブラウザがイメージをサポートしない場合に表示する代替テキストを指定するALT属性の値。

cismap

このパラメータの値がNULLでない場合、ISMAP属性がタグに追加されます。この属性は、イメージがイメージ・マップであることを示します。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<IMG SRC="curl" ALIGN="calign" ALT="calt" ISMAP cattributes>

IMG2ファンクション

このファンクションは、HTMLページ上にイメージをロードするようにブラウザに指示する、<IMG>タグを生成します。IMGファンクションでも実行内容は同じですが、cusemapパラメータは使用しません。

構文

HTF.IMG2(
curl           IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
calt           IN       VARCHAR2   DEFAULT NULL,
cismap         IN       VARCHAR2   DEFAULT NULL,
cusemap        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-51 IMG2ファンクションのパラメータ

パラメータ

説明

curl

SRC属性の値。

calign

ALIGN属性の値。

calt

ブラウザがイメージをサポートしない場合に表示する代替テキストを指定するALT属性の値。

cismap

このパラメータの値がNULLでない場合、ISMAP属性がタグに追加されます。この属性は、イメージがイメージ・マップであることを示します。

cusemap

クライアント側のイメージ・マップを指定するUSEMAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<IMG SRC="curl" ALIGN="calign" ALT="calt" ISMAP USEMAP="cusemap" cattributes>

ISINDEXファンクション

このファンクションは、「値を入力してください」などのプロンプト・テキストが表示される単一の入力フィールドを作成し、その値をページまたはプログラムのURLに送信します。

構文

HTF.ISINDEX(
cprompt        IN       VARCHAR2    DEFAULT NULL,
curl           IN       VARCHAR2    DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-52 ISINDEXファンクションのパラメータ

パラメータ

説明

cprompt

PROMPT属性の値。

curl

HREF属性の値。

例

このファンクションでの生成結果は、次のようになります。

<ISINDEX PROMPT="cprompt" HREF="curl">

ITALICファンクション

このファンクションは、ブラウザにテキストをイタリックで表示させる<I>および</I>タグを生成します。

構文

HTF.ITALIC(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-53 ITALICファンクションのパラメータ

パラメータ

説明

ctext

イタリックで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<I cattributes>ctext</I>

KBDファンクション

このファンクションは、ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。このサブプログラムの実行内容はKEYBOARDファンクションと同じです。

構文

HTF.KBD(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-54 KBDファンクションのパラメータ

パラメータ

説明

ctext

等幅で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<KBD cattributes>ctext</KBD>

KEYBOARDファンクション

このファンクションは、ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。このサブプログラムの実行内容はKBDファンクションと同じです。

構文

HTF.KEYBOARD(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-55 KEYBOARDファンクションのパラメータ

パラメータ

説明

ctext

等幅で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<KBD cattributes>ctext</KBD>

LINEファンクション

このファンクションは、HTMLドキュメントに行を生成する<HR>タグを生成します。このサブプログラムの実行内容はHRファンクションと同じです。

構文

HTF.LINE(
cclear         IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-56 LINEファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

csrc

カスタム・イメージを行のソースとして指定するSRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<HR CLEAR="cclear" SRC="csrc" cattributes>

LINKRELファンクション

このファンクションは、アンカーからターゲットへのハイパーテキスト・リンクによって記述された関係を示すREL属性を指定した、<LINK>タグを生成します。HREF属性が存在する場合にのみ使用されます。実行内容は、LINKREVファンクションの反対です。このタグは、ドキュメント間の関係を示しますが、リンクは作成しません。リンクを作成するには、ANCHORファンクションを使用します。

構文

HTF.LINKREL(
crel           IN       VARCHAR2,
curl           IN       VARCHAR2,
ctitle         IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-57 LINKRELファンクションのパラメータ

パラメータ

説明

crel

REL属性の値。

curl

URL属性の値。

ctitle

TITLE属性の値。

例

このファンクションでの生成結果は、次のようになります。

<LINK REL="crel" HREF="curl" TITLE="ctitle">

LINKREVファンクション

このファンクションは、ターゲットからアンカーへのハイパーテキスト・リンクによって記述された関係を示すREV属性を指定した、<LINK>タグを生成します。実行内容は、LINKRELファンクションの反対です。このタグは、ドキュメント間の関係を示しますが、リンクは作成しません。リンクを作成するには、ANCHORファンクションを使用します。

構文

HTF.LINKREV(
crev           IN       VARCHAR2,
curl           IN       VARCHAR2,
ctitle         IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-58 LINKREVファンクションのパラメータ

パラメータ

説明

crev

REV属性の値。

curl

URL属性の値。

ctitle

TITLE属性の値。

例

このファンクションでの生成結果は、次のようになります。

<LINK REV="crev" HREF="curl" TITLE="ctitle">

LISTHEADERファンクション

このファンクションは、リストの最初にHTMLタグを印刷する<LH>および</LH>タグを生成します。

構文

HTF.LISTHEADER(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-59 LISTHEADERファンクションのパラメータ

パラメータ

説明

ctext

<LH>および</LH>間に配置するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<LH cattributes>ctext</LH>

LISTINGCLOSEファンクション

このファンクションは、HTMLページの本体にある固定幅テキスト・セクションの終了を示す</LISTING>タグを生成します。HTMLページの本体にある固定幅テキスト・セクションの開始を示すには、LISTINGOPENファンクションを使用します。

構文

HTF.LISTINGCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</LISTING>

LISTINGOPENファンクション

このファンクションは、HTMLページの本体にある固定幅テキスト・セクションの開始を示す<LISTING>タグを生成します。HTMLページの本体にある固定幅テキスト・セクションの終了を示すには、LISTINGCLOSEファンクションを使用します。

構文

HTF.LISTINGOPEN
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<LISTING>

LISTITEMファンクション

このファンクションは、リスト項目を示す<LI>タグを生成します。

構文

HTF.LISTITEM(
ctext          IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cdingbat       IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-60 LISTITEMファンクションのパラメータ

パラメータ

説明

ctext

リスト項目のテキスト。

cclear

CLEAR属性の値。

cdingbat

DINGBAT属性の値。

csrc

SRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<LI CLEAR="cclear" DINGBAT="cdingbat" SRC="csrc" cattributes>ctext

MAILTOファンクション

このファンクションは、メール・アドレス引数の前にmailtoが付加されたHREFを指定した<A>タグを生成します。

構文

HTF.MAILTO(
caddress       IN       VARCHAR2,
ctext          IN       VARCHAR2,
cname          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-61 MAILTOファンクションのパラメータ

パラメータ

説明

caddress

受信者の電子メール・アドレス。

ctext

リンクのクリック可能な部分。

cname

NAME属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<A HREF="mailto:caddress" NAME="cname" cattributes>ctext</A>

たとえば、次のように入力したとします。

HTF.mailto('pres@white_house.gov','Send Email to the President');

生成結果は、次のようになります。

<A HREF="mailto:pres@white_house.gov">Send Email to the President</A>

MAPCLOSEファンクション

このファンクションは、クライアント側のイメージ・マップにおける領域セットの終了を示す</MAP>タグを生成します。クライアント側のイメージ・マップにおける領域セットの開始を示すには、MAPOPENファンクションを使用します。

構文

HTF.MAPCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</MAP>

MAPOPENファンクション

このファンクションは、クライアント側のイメージ・マップにおける領域セットの開始を示す<MAP>タグを生成します。クライアント側のイメージ・マップにおける領域セットの終了を示すには、MAPCLOSEファンクションを使用します。

構文

HTF.MAPOPEN(
cname          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-62 MAPOPENファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<MAP NAME="cname" cattributes>

MENULISTCLOSEファンクション

このファンクションは、項目ごとに行を示すリストを終了する</MENU>タグを生成します。このリストを開始するには、MENULISTOPENファンクションを使用します。このリストの項目は、順序付けられていないリストよりもコンパクトに表示されます。LISTITEMファンクションは、メニュー・リストのリスト項目を定義します。

構文

HTF.MENULISTCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</MENU>

MENULISTOPENファンクション

このファンクションは、項目ごとに行を示すリストを開始する<MENU>タグを生成します。このリストを終了するには、MENULISTCLOSEファンクションを使用します。このリストの項目は、順序付けられていないリストよりもコンパクトに表示されます。LISTITEMファンクションは、メニュー・リストのリスト項目を定義します。

構文

HTF.MENULISTOPEN
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<MENU>

METAファンクション

このファンクションは、ドキュメントに関するメタ情報の埋込みとHTTPヘッダーの値の指定を行う<META>タグを生成します。たとえば、有効期限、キーワードおよび作成者を指定できます。

構文

HTF.META(
chttp_equiv    IN       VARCHAR2,
cname          IN       VARCHAR2,
ccontent       IN       VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-63 METAファンクションのパラメータ

パラメータ

説明

chttp_equiv

CHTTP_EQUIV属性の値。

cname

NAME属性の値。

ccontent

CONTENT属性の値。

例

このファンクションでの生成結果は、次のようになります。

<META HTTP-EQUIV="chttp_equiv" NAME ="cname" CONTENT="ccontent">

たとえば、次のように入力したとします。

HTF.meta ('Refresh', NULL, 120);

生成結果は、次のようになります。

<META HTTP-EQUIV="Refresh" CONTENT=120>

これにより、一部のWebブラウザでは、現在のURLが120秒ごとに自動的に再ロードされます。

NLファンクション

このファンクションは、テキストの新しい行を開始する<BR>タグを生成します。このファンクションの実行内容はBRファンクションと同じです。

構文

HTF.NL(
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-64 NLファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<BR CLEAR="cclear" cattributes>

NOBRファンクション

このファンクションは、テキスト・セクションの改行をオフにする<NOBR>および</NOBR>タグを生成します。

構文

HTF.NOBR(
ctext        IN        VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-65 NOBRファンクションのパラメータ

パラメータ

説明

ctext

1行で表示されるテキスト。

例

このファンクションでの生成結果は、次のようになります。

<NOBR>ctext</NOBR>

NOFRAMESCLOSEファンクション

このファンクションは、フレームなしセクションの終了を示す</NOFRAMES>タグを生成します。フレームなしセクションの開始を示すには、FRAMESETOPENファンクションを使用します。「FRAMEファンクション」、「FRAMESETOPENファンクション」および「FRAMESETCLOSEファンクション」も参照してください。

構文

HTF.NOFRAMESCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</NOFRAMES>

NOFRAMESOPENファンクション

このファンクションは、フレームなしセクションの開始を示す<NOFRAMES>タグを生成します。フレームなしセクションの終了を示すには、FRAMESETCLOSEファンクションを使用します。「FRAMEファンクション」、「FRAMESETOPENファンクション」および「FRAMESETCLOSEファンクション」も参照してください。

構文

HTF.NOFRAMESOPEN
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<NOFRAMES>

OLISTCLOSEファンクション

このファンクションは、順序付けられたリストの終了を示す</OL>タグを生成します。順序付けられたリストには、番号付けされた項目リストが表示されます。このリストの開始を示すには、OLISTOPENファンクションを使用します。番号付けされた項目を追加するには、LISTITEMファンクションを使用します。

構文

HTF.OLISTCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</OL>

OLISTOPENファンクション

このファンクションは、順序付けられたリストの開始を示す<OL>タグを生成します。順序付けられたリストには、番号付けされた項目リストが表示されます。このリストの終了を示すには、OLISTCLOSEファンクションを使用します。番号付けされた項目を追加するには、LISTITEMファンクションを使用します。

構文

HTF.OLISTOPEN(
cclear         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-66 OLISTOPENファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cwrap

WRAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<OL CLEAR="cclear" WRAP="cwrap" cattributes>

PARAファンクション

このファンクションは、後置テキストを1つのパラグラフとしてフォーマットする<P>タグを生成します。このタグに属性を追加するには、PARAGRAPHファンクションを使用します。

構文

HTF.PARA
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<P>

PARAGRAPHファンクション

このファンクションは、PARAファンクションで作成した<P>タグへの属性の追加に使用できます。

構文

HTF.PARAGRAPH(
calign         IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-67 PARAGRAPHファンクションのパラメータ

パラメータ

説明

calign

ALIGN属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<P ALIGN="calign" NOWRAP CLEAR="cclear" cattributes>

PARAMファンクション

このファンクションは、Javaアプレットのパラメータ値を指定する<PARAM>タグを生成します。この値でHTML変数を参照できます。WebページからJavaアプレットを起動するには、APPLETOPENファンクションを使用します。目的の各名前/値ペアに対しては1つのPARAMファンクションを使用し、アプレットの起動を終了するにはAPPLETCLOSEファンクションを使用します。

構文

HTF.PARAM(
cname          IN       VARCHAR2
cvalue         IN       VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-68 PARAMファンクションのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

例

このファンクションでの生成結果は、次のようになります。

<PARAM NAME=cname VALUE="cvalue">

PLAINTEXTファンクション

このファンクションは、タグで囲んだテキストを固定幅タイプでブラウザに表示させる、<PLAINTEXT>および</PLAINTEXT>タグを生成します。

構文

HTF.PLAINTEXT(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-69 PLAINTEXTファンクションのパラメータ

パラメータ

説明

ctext

固定幅フォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<PLAINTEXT cattributes>ctext</PLAINTEXT>

PRECLOSEファンクション

このファンクションは、HTMLページの本体にある事前フォーマットされたテキスト・セクションの終了を示す、</PRE>タグを生成します。HTMLページの本体にある事前フォーマットされたテキスト・セクションの開始を示すには、PREOPENファンクションを使用します。

構文

HTF.PRECLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</PRE>

PREOPENファンクション

このファンクションは、HTMLページの本体にある事前フォーマットされたテキスト・セクションの開始を示す、<PRE>タグを生成します。HTMLページの本体にある事前フォーマットされたテキスト・セクションの終了を示すには、PRECLOSEファンクションを使用します。

構文

HTF.PREOPEN(
cclear         IN       VARCHAR2   DEFAULT NULL,
cwidth         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-70 PREOPENファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cwidth

WIDTH属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<PRE CLEAR="cclear" WIDTH="cwidth" cattributes>

PRINTファンクション

このファンクションは、指定されたパラメータを、\n改行文字で終了する文字列として生成します。PRNファンクションでも実行内容は同じですが、その場合は改行文字では終わりません。

構文

HTF.PRINT (
cbuf      IN       VARCHAR2)
RETURN VARCHAR2;

HTF.PRINT (
dbuf      IN       DATE)
RETURN VARCHAR2;

HTF.PRINT (
nbuf      IN       NUMBER)
RETURN VARCHAR2;

パラメータ

表207-71 PRINTファンクションのパラメータ

パラメータ

説明

cbuf

生成する文字列(改行で終了)。

dbuf

生成する文字列(改行で終了)。

nbuf

生成する文字列(改行で終了)。

使用上の注意

- \n文字は、<BR>と同じではありません。\n文字はHTMLソースの書式を設定しますが、ブラウザでのHTMLソースの表示には反映されません。ブラウザでのHTMLソースの表示を制御するには、<BR>を使用します。

- 他には、このファンクションと同様のファンクションはありません。

PRNファンクション

このファンクションは、指定されたパラメータを文字列として生成します。PRINTファンクションとは異なり、この文字列は\n改行文字で終わりません。

構文

HTF.PRN (
cbuf      IN       VARCHAR2)
RETURN VARCHAR2;

HTF.PRN (
dbuf      IN       DATE)
RETURN VARCHAR2;

HTF.PRN (
nbuf      IN       NUMBER)
RETURN VARCHAR2;

パラメータ

表207-72 PRNファンクションのパラメータ

パラメータ

説明

cbuf

生成する文字列(改行で終了しない)。

dbuf

生成する文字列(改行で終了しない)。

nbuf

生成する文字列(改行で終了しない)。

使用上の注意

他には、このファンクションと同様のファンクションはありません。

Sファンクション

このファンクションは、タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<S>および</S>タグを生成します。このファンクションの実行内容はSTRIKEファンクションと同じです。

構文

HTF.S (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-73 Sファンクションのパラメータ

パラメータ

説明

ctext

取消し線が引かれた形式で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<S cattributes>ctext</S>

SAMPLEファンクション

このファンクションは、タグで囲んだテキストを等幅フォントまたはサンプルに関して定義されたスタイルでブラウザに表示させる、<SAMP>および</SAMP>タグを生成します。

構文

HTF.SAMPLE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-74 SAMPLEファンクションのパラメータ

パラメータ

説明

ctext

等幅フォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<SAMP cattributes>ctext</SAMP>

SCRIPTファンクション

このファンクションは、JavaScript、VBscriptなどの言語で書かれたスクリプトを含む<SCRIPT>および</SCRIPT>タグを生成します。

構文

HTF.SCRIPT (
cscript        IN       VARCHAR2,
clanguage      IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-75 SCRIPTファンクションのパラメータ

パラメータ

説明

cscript

スクリプトのテキスト。これは、スクリプト自体を構成するテキストで、スクリプトを含むファイルの名前ではありません。

clanguage

スクリプトの記述に使用した言語。このパラメータを省略した場合は、ユーザーの使用するブラウザによってスクリプト記述言語が決定されます。

例

このファンクションでの生成結果は、次のようになります。

<SCRIPT LANGUAGE=clanguage>cscript</SCRIPT>

たとえば、次のように入力したとします。

HTF.script ('Erupting_Volcano', 'Javascript');

生成結果は、次のようになります。

<SCRIPT LANGUAGE=Javascript>"script text here"</SCRIPT>

この結果、タグで囲んだスクリプトをブラウザで実行できます。

SMALLファンクション

このファンクションは、タグで囲んだテキストを小さいフォントでブラウザに表示させる、<SMALL>および</SMALL>タグを生成します。

構文

HTF.SMALL (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-76 SMALLファンクションのパラメータ

パラメータ

説明

ctext

小さいフォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<SMALL cattributes>ctext</SMALL>

STRIKEファンクション

このファンクションは、タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<STRIKE>および</STRIKE>タグを生成します。このファンクションの実行内容はSファンクションと同じです。

構文

STRIKE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-77 STRIKEファンクションのパラメータ

パラメータ

説明

ctext

取消し線が引かれた形式で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<STRIKE cattributes>ctext</STRIKE>

STRONGファンクション

このファンクションは、タグで囲んだテキストを太字または定義されたスタイルでブラウザに表示させる、<STRONG>および</STRONG>タグを生成します。

構文

HTF.STRONG(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-78 STRONGファンクションのパラメータ

パラメータ

説明

ctext

強調するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<STRONG cattributes>ctext</STRONG>

STYLEファンクション

このファンクションは、Webページ内にスタイルシートを含める<STYLE>および</STYLE>タグを作成します。スタイルシートの詳細は、http://www.w3.orgを参照してください。この機能は、HTMLバージョン2.0以下のみをサポートするブラウザとの互換性はありません。これらのブラウザでは、このタグは無視されます。

構文

HTF.STYLE(
cstyle          IN       VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-79 STYLEファンクションのパラメータ

パラメータ

説明

cstyle

含めるスタイル情報。

例

このファンクションでの生成結果は、次のようになります。

<STYLE>cstyle</STYLE>

SUBファンクション

このファンクションは、タグで囲んだテキストを下付き文字としてブラウザに表示させる、<SUB>および</SUB>タグを生成します。

構文

HTF.SUB(
ctext          IN       VARCHAR2,
calign         in       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-80 SUBファンクションのパラメータ

パラメータ

説明

ctext

下付き文字で表示するテキスト。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<SUB ALIGN="calign" cattributes>ctext</SUB>

SUPファンクション

このファンクションは、タグで囲んだテキストを上付き文字としてブラウザに表示させる、<SUP>および</SUP>タグを生成します。

構文

HTF.SUP(
ctext          IN       VARCHAR2,
calign         in       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-81 SUPファンクションのパラメータ

パラメータ

説明

ctext

上付き文字で表示するテキスト。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<SUP ALIGN="calign" cattributes>ctext</SUP>

TABLECAPTIONファンクション

このファンクションは、HTML表内にキャプションを配置する<CAPTION>および</CAPTION>タグを生成します。

構文

HTF.TABLECAPTION(
ccaption       IN       VARCHAR2,
calign         in       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-82 TABLECAPTIONファンクションのパラメータ

パラメータ

説明

ctext

キャプションのテキスト。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<CAPTION ALIGN="calign" cattributes>ccaption</CAPTION>

TABLECLOSEファンクション

このファンクションは、HTML表の終了を示す</TABLE>タグを生成します。HTML表の開始を示すには、TABLEOPENファンクションを使用します。

構文

HTF.TABLECLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</TABLE>

TABLEDATAファンクション

このファンクションは、HTML表内のセルにデータを挿入する<TD>および</TD>タグを生成します。

構文

HTF.TABLEDATA(
cvalue         IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
cdp            IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
crowspan       IN       VARCHAR2   DEFAULT NULL,
ccolspan       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-83 TABLEDATAファンクションのパラメータ

パラメータ

説明

cvalue

表内のセルのデータ。

calign

ALIGN属性の値。

cdp

DP属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

ccolspan

COLSPAN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TD ALIGN="calign" DP="cdp" ROWSPAN="crowspan" COLSPAN="ccolspan" NOWRAP cattributes>cvalue</TD>

TABLEHEADERファンクション

このファンクションは、HTML表内にヘッダー・セルを挿入する<TH>および</TH>タグを生成します。行のテキストが通常は太字で表示される点を除けば、<TH>タグは<TD>タグと同様です。

構文

HTF.TABLEHEADER(
cvalue         IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
cdp            IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
crowspan       IN       VARCHAR2   DEFAULT NULL,
ccolspan       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-84 TABLEHEADERファンクションのパラメータ

パラメータ

説明

cvalue

表内のセルのデータ。

calign

ALIGN属性の値。

cdp

DP属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

crispen

ROWSPAN属性の値。

ccolspan

COLSPAN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TH ALIGN="calign" DP="cdp" ROWSPAN="crowspan" COLSPAN="ccolspan" NOWRAP cattributes>cvalue</TH>

TABLEOPENファンクション

このファンクションは、HTML表の開始を示す<TABLE>タグを生成します。HTML表の終了を示すには、TABLECLOSEファンクションを使用します。

構文

HTF.TABLEOPEN(
cborder        IN       VARCHAR2   DEFAULT NULL
calign         IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-85 TABLEOPENファンクションのパラメータ

パラメータ

説明

border

BORDER属性の値。

calign

ALIGN属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TABLE "cborder" NOWRAP ALIGN="calign" CLEAR="cclear" cattributes>

TABLEROWCLOSEファンクション

このファンクションは、HTML表の新しい行の終了を示す</TR>タグを生成します。新しい行の開始を示すには、TABLEROWOPENファンクションを使用します。

構文

HTF.TABLEROWCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</TABLE>

TABLEROWOPENファンクション

このファンクションは、HTML表の新しい行の開始を示す<TR>タグを生成します。新しい行の終了を示すには、TABLEROWCLOSEファンクションを使用します。

構文

HTF.TABLEROWOPEN(
calign         IN       VARCHAR2   DEFAULT NULL,
cvalign        IN       VARCHAR2   DEFAULT NULL,
cdp            IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-86 TABLEROWOPENファンクションのパラメータ

パラメータ

説明

calign

ALIGN属性の値。

cvalign

VALIGN属性の値。

cdp

DP属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<<TR ALIGN="calign" VALIGN="cvalign" DP="cdp" NOWRAP cattributes>

TELETYPEファンクション

このファンクションは、タグで囲んだテキストをクーリエなどの固定幅のタイプライター・フォントでブラウザに表示させる、<TT>および</TT>タグを生成します。

構文

HTF.TELETYPE(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-87 TELETYPEファンクションのパラメータ

パラメータ

説明

ctext

固定幅のタイプライター・フォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<TT cattributes>ctext</TT>

TITLEファンクション

このファンクションは、ブラウザ・ウィンドウのタイトルバーに表示するテキストを指定する、<TITLE>および</TITLE>タグを生成します。

構文

HTF.TITLE(
ctitle          IN       VARCHAR2)
RETURN VARCHAR2;

パラメータ

表207-88 TITLEファンクションのパラメータ

パラメータ

説明

ctitle

ブラウザ・ウィンドウのタイトルバーに表示するテキスト。

例

このファンクションでの生成結果は、次のようになります。

<TITLE>ctitle</TITLE>

ULISTCLOSEファンクション

このファンクションは、順序付けられていないリストの終了を示す</UL>タグを生成します。順序付けられていないリストには、ビュレット付きの項目が表示されます。順序付けられていないリストの開始を示すには、ULISTOPENファンクションを使用します。リストに項目を追加する場合は、LISTITEMファンクションを使用します。

構文

HTF.ULISTCLOSE
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

</UL>

ULISTOPENファンクション

このファンクションは、順序付けられていないリストの開始を示す<UL>タグを生成します。順序付けられていないリストには、ビュレット付きの項目が表示されます。順序付けられていないリストの終了を示すには、ULISTCLOSEファンクションを使用します。リストに項目を追加する場合は、LISTITEMファンクションを使用します。

構文

HTF.ULISTOPEN(
cclear         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cdingbat       IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-89 ULISTOPENファンクションのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cwrap

WRAP属性の値。

cdingbat

DINGBAT属性の値。

csrc

SRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<UL CLEAR="cclear" WRAP="cwrap" DINGBAT="cdingbat" SRC="csrc" cattributes>

UNDERLINEファンクション

このファンクションは、タグで囲んだテキストを下線付きでブラウザに表示させる、<U>および</U>タグを生成します。

構文

HTF.UNDERLINE(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-90 UNDERLINEファンクションのパラメータ

パラメータ

説明

ctext

下線付きで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<U cattributes>ctext</U>

VARIABLEファンクション

このファンクションは、タグで囲んだテキストをイタリックまたは定義されたスタイルでブラウザに表示させる<VAR>および</VAR>タグを生成します。

構文

HTF.VARIABLE(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL)
RETURN VARCHAR2;

パラメータ

表207-91 VARIABLEファンクションのパラメータ

パラメータ

説明

ctext

イタリックで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このファンクションでの生成結果は、次のようになります。

<VAR cattributes>ctext</VAR>

WBRファンクション

このファンクションは、NOBRテキスト・セクション内に非強制改行を挿入する<WBR>タグを生成します。

構文

HTF.WBR
RETURN VARCHAR2;

例

このファンクションでの生成結果は、次のようになります。

<WBR>

208 HTP

HTP(ハイパーテキスト・プロシージャ)およびHTF(ハイパーテキスト・ファンクション)パッケージは、HTMLタグを生成します。たとえば、HTP.ANCHORプロシージャはHTMLアンカー・タグ<A>を生成します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- HTPの使用方法

- 使用上の注意

- ルールおよび制限

- 例

- タグの要約

- HTPサブプログラムの要約

HTPの使用方法

- 使用上の注意

- ルールおよび制限

- 例

使用上の注意

1つ以上のHTMLタグを生成する各HTPプロシージャごとに対応するHTFファンクションがあり、次の例外を除いて同じパラメータを持ちます。

- PRINTSプロシージャとPSプロシージャには、HTFファンクションに相当するものはありません。文字列変換ファンクションが必要な場合は、ESCAPE_SCファンクションまたはESCAPE_URLファンクションを使用します。PRINTSプロシージャおよびPSプロシージャと同じ操作を実行するESCAPE_SCプロシージャはありますが、ESCAPE_URLファンクションに相当するプロシージャはないことに注意してください。

- FORMAT_CELLファンクションには、HTPに相当するものはありません。このファンクションは、TABLEDATAプロシージャ内にHTPに相当するものを持つTABLEDATAファンクションを使用して、HTML表内で列の値を書式設定します。FORMAT_CELLファンクションを使用すると、HTML表を制御しやすくなります。

このファンクションのバージョンでは、Webページへの直接の出力は生成されません。かわりに、出力を呼び出し元の文に戻り値として渡します。コールをネストする必要がある場合は、ファンクションを使用します。HTFファンクションの出力を印刷するには、そのファンクションをHTP.PRINTプロシージャ内からコールします。これによって、生成されたWebページにパラメータが出力されます。

ルールおよび制限

HTP.PRINT、HTP.PRN、HTP.PRINTS、HTP.PAまたはOWA_UTIL.CELLSPRINTなどのプロシージャでLONGデータ・タイプの値を使用する場合、LONGデータの最初の32Kのみが使用されます。LONGデータは、プロシージャ内でVARCHAR2データ・タイプにバインドされています。

例

次のコマンドは、簡単なHTMLドキュメントを生成します。

CREATE OR REPLACE PROCEDURE hello AS
BEGIN
HTP.HTMLOPEN;           -- generates <HTML>
HTP.HEADOPEN;           -- generates <HEAD>
HTP.TITLE('Hello');     -- generates <TITLE>Hello</TITLE>
HTP.HEADCLOSE;          -- generates </HEAD>
HTP.BODYOPEN;           -- generates <BODY>
HTP.HEADER(1, 'Hello'); -- generates <H1>Hello</H1>
HTP.BODYCLOSE;          -- generates </BODY>
HTP.HTMLCLOSE;          -- generates </HTML>
END;

タグの要約

HTML、HEADおよびBODYタグ

HTMLOPENプロシージャ、HTMLCLOSEプロシージャ: <HTML>および</HTML>を生成します。

HEADOPENプロシージャ、HEADCLOSEプロシージャ: <HEAD>および</HEAD>を生成します。

BODYOPENプロシージャ、BODYCLOSEプロシージャ: <BODY>および</BODY>を生成します。

コメント・タグ

COMMENTプロシージャ: <!--および-->を生成します。

<HEAD>領域内のタグ

BASEプロシージャ: <BASE>を生成します。

LINKRELプロシージャ: REL属性を指定した<LINK>を生成します。

LINKREVプロシージャ: REV属性を指定した<LINK>を生成します。

TITLEプロシージャ: <TITLE>を生成します。

METAプロシージャ: <META>を生成します。

SCRIPTプロシージャ: <SCRIPT>を生成します。

STYLEプロシージャ: <STYLE>を生成します。

ISINDEXプロシージャ: <ISINDEX>を生成します。

アプレット・タグ

APPLETOPENプロシージャ、APPLETCLOSEプロシージャ: <APPLET>および</APPLET>を生成します。

PARAMプロシージャ: <PARAM>を生成します。

リスト・タグ

OLISTOPENプロシージャ、OLISTCLOSEプロシージャ: <OL>および</OL>を生成します。

ULISTOPENプロシージャ、ULISTCLOSEプロシージャ: <UL>および</UL>を生成します。

DLISTOPENプロシージャ、DLISTCLOSEプロシージャ: <DL>および</DL>を生成します。

DLISTTERMプロシージャ: <DT>を生成します。

DLISTDEFプロシージャ: <DD>を生成します。

DIRLISTOPENプロシージャ、DIRLISTCLOSEプロシージャ: <DIR>および</DIR>を生成します。

LISTHEADERプロシージャ: <LH>を生成します。

LISTINGOPENプロシージャ、LISTINGCLOSEプロシージャ: <LISTING>および</LISTING>を生成します。

MENULISTOPENプロシージャ: <MENU>および</MENU>を生成します。

LISTITEMプロシージャ: <LI>を生成します。

フォーム・タグ

FORMOPENプロシージャ、FORMCLOSEプロシージャ: <FORM>および</FORM>を生成します。

FORMCHECKBOXプロシージャ: <INPUT TYPE="CHECKBOX">を生成します。

FORMHIDDENプロシージャ: <INPUT TYPE="HIDDEN">を生成します。

FORMIMAGEプロシージャ: <INPUT TYPE="IMAGE">を生成します。

FORMPASSWORDプロシージャ: <INPUT TYPE="PASSWORD">を生成します。

FORMRADIOプロシージャ: <INPUT TYPE="RADIO">を生成します。

FORMSELECTOPENプロシージャ、FORMSELECTCLOSEプロシージャ: <SELECT>および</SELECT>を生成します。

FORMSELECTOPTIONプロシージャ: <OPTION>を生成します。

FORMTEXTプロシージャ: <INPUT TYPE="TEXT">を生成します。

FORMTEXTAREAプロシージャ: <TEXTAREA>を生成します。

FORMTEXTAREAOPENプロシージャ、FORMTEXTAREACLOSEプロシージャ: <TEXTAREA>および</TEXTAREA>を生成します。

FORMRESETプロシージャ: <INPUT TYPE="RESET">を生成します。

FORMSUBMITプロシージャ: <INPUT TYPE="SUBMIT">を生成します。

テーブル・タグ

TABLEOPENプロシージャ、TABLECLOSEプロシージャ: <TABLE>および</TABLE>を生成します。

TABLECAPTIONプロシージャ: <CAPTION>を生成します。

TABLEROWOPENプロシージャ、TABLEROWCLOSEプロシージャ: <TR>および</TR>を生成します。

TABLEHEADERプロシージャ: <TH>を生成します。

TABLEDATAプロシージャ: <TD>を生成します。

IMG、HRおよびAタグ

HRプロシージャ、LINEプロシージャ: <HR>を生成します。

IMGプロシージャ、IMG2プロシージャ: <IMG>を生成します。

ANCHORプロシージャ、ANCHOR2プロシージャ: <A>を生成します。

MAPOPENプロシージャ、MAPCLOSEプロシージャ: <MAP>および</MAP>を生成します。

パラグラフ・フォーマット・タグ

HEADERプロシージャ: ヘッダー・タグ(<H1>から<H6>)を生成します。

PARAプロシージャ、PARAGRAPHプロシージャ: <P>を生成します。

PRNプロシージャ、PRINTプロシージャ: 渡されるすべてのテキストを生成します。

PRINTSプロシージャ、PSプロシージャ: 渡されるすべてのテキストを生成、HTMLの特殊文字をエスケープします。

PREOPENプロシージャ、PRECLOSEプロシージャ: <PRE>および</PRE>を生成します。

BLOCKQUOTEOPENプロシージャ、BLOCKQUOTECLOSEプロシージャ: <BLOCKQUOTE>および</BLOCKQUOTE>を生成します。

DIVプロシージャ: <DIV>を生成します。

NLプロシージャ、BRプロシージャ: <BR>を生成します。

NOBRプロシージャ: <NOBR>を生成します。

WBRプロシージャ: <WBR>を生成します。

PLAINTEXTプロシージャ: <PLAINTEXT>を生成します。

ADDRESSプロシージャ: <ADDRESS>を生成します。

MAILTOプロシージャ: MAILTO属性が指定された<A>を生成します。

AREAプロシージャ: <AREA>を生成します。

BGSOUNDプロシージャ: <BGSOUND>を生成します。

文字フォーマット・タグ

BASEFONTプロシージャ: <BASEFONT>を生成します。

BIGプロシージャ: <BIG>を生成します。

BOLDプロシージャ: <B>を生成します。

CENTERプロシージャ: <CENTER>および</CENTER>を生成します。

CENTEROPENプロシージャ、CENTERCLOSEプロシージャ: <CENTER>および</CENTER>を生成します。

CITEプロシージャ: <CITE>を生成します。

CODEプロシージャ: <CODE>を生成します。

DFNプロシージャ: <DFN>を生成します。

EMプロシージャ、EMPHASISプロシージャ: <EM>を生成します。

FONTOPENプロシージャ、FONTCLOSEプロシージャ: <FONT>および</FONT>を生成します。

ITALICプロシージャ: <I>を生成します。

KBDプロシージャ、KEYBOARDプロシージャ: <KBD>および</KBD>を生成します。

Sプロシージャ: <S>を生成します。

SAMPLEプロシージャ: <SAMP>を生成します。

SMALLプロシージャ: <SMALL>を生成します。

STRIKEプロシージャ: <STRIKE>を生成します。

STRONGプロシージャ: <STRONG>を生成します。

SUBプロシージャ: <SUB>を生成します。

SUPプロシージャ: <SUP>を生成します。

TELETYPEプロシージャ: <TT>を生成します。

UNDERLINEプロシージャ: <U>を生成します。

VARIABLEプロシージャ: <VAR>を生成します。

フレーム・タグ

FRAMEプロシージャ: <FRAME>を生成します。

FRAMESETOPENプロシージャ、FRAMESETCLOSEプロシージャ: <FRAMESET>および</FRAMESET>を生成します。

NOFRAMESOPENプロシージャ、NOFRAMESCLOSEプロシージャ: <NOFRAMES>および</NOFRAMES>を生成します。

HTPサブプログラムの要約

表208-1 HTPパッケージのサブプログラム

サブプログラム

説明

ADDRESSプロシージャ

ドキュメントのアドレス、作成者および署名を指定する<ADDRESS>および</ADDRESS>タグを生成します。

ANCHORプロシージャ

ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>タグを生成します。

ANCHOR2プロシージャ

ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>タグを生成します。

APPLETCLOSEプロシージャ

</APPLET>タグでアプレットの起動をクローズします。

APPLETOPENプロシージャ

Javaアプレットの起動を開始する<APPLET>タグを生成します。

AREAプロシージャ

クライアント側のイメージ・マップを定義する<AREA>タグを生成します。

BASEプロシージャ

ドキュメントのURLを記録する<BASE>タグを生成します。

BASEFONTプロシージャ

Webページの基本フォント・サイズを指定する<BASEFONT>タグを生成します。

BGSOUNDプロシージャ

Webページにオーディオを組み込む<BGSOUND>タグを生成します。

BIGプロシージャ

ブラウザにテキストを大きいフォントで表示させる<BIG>および</BIG>タグを生成します。

BLOCKQUOTECLOSEプロシージャ

引用したテキスト・セクションの終了を示す</BLOCKQUOTE>タグを生成します。

BLOCKQUOTEOPENプロシージャ

引用したテキスト・セクションの開始を示す<BLOCKQUOTE>タグを生成します。

BODYCLOSEプロシージャ

HTMLドキュメントの本体セクションの終了を示す</BODY>タグを生成します。

BODYOPENプロシージャ

HTMLドキュメントの本体セクションの開始を示す<BODY>タグを生成します。

BOLDプロシージャ

ブラウザにテキストを太字で表示させる<B>および</B>タグを生成します。

BRプロシージャ

テキストの新しい行を開始する<BR>タグを生成します。

CENTERプロシージャ

Webページ内のテキスト・セクションを中央揃えする<CENTER>および</CENTER>タグを生成します。

CENTERCLOSEプロシージャ

中央揃えするテキスト・セクションの終了を示す</CENTER>タグを生成します。

CENTEROPENプロシージャ

中央揃えするテキスト・セクションの開始を示す<CENTER>タグを生成します。

CITEプロシージャ

ブラウザにテキストを引用として表示させる<CITE>および</CITE>タグを生成します。

CODEプロシージャ

テキストを等幅フォント、または定義されたスタイルでブラウザに表示させる、<CODE>および</CODE>タグを生成します。

COMMENTプロシージャ

コメント・タグ<!-- ctext -->を生成するプロシージャを生成します。

DFNプロシージャ

テキストをイタリック、または定義されたスタイルでブラウザに表示させる、<DFN>および</DFN>タグを生成します。

DIRLISTCLOSEプロシージャ

ディレクトリ・リストのセクションを終了する</DIR>タグを生成します。

DIRLISTOPENプロシージャ

ディレクトリ・リストのセクションを開始する<DIR>タグを生成します。

DIVプロシージャ

ドキュメントの区分を作成する<DIV>タグを生成します。

DLISTCLOSEプロシージャ

定義リストを終了する</DL>タグを生成します。

DLISTDEFプロシージャ

用語の定義を挿入する<DD>タグを生成します。

DLISTOPENプロシージャ

定義リストを開始する<DL>タグを生成します。

DLISTTERMプロシージャ

定義リスト<DL>の用語を定義する<DT>タグを生成します。

EMプロシージャ

強調したテキストを定義する<EM>および</EM>タグを生成します。

EMPHASISプロシージャ

強調したテキストを定義する<EM>および</EM>タグを生成します。

ESCAPE_SCプロシージャ

HTMLにおいて特別な意味を持つ文字をエスケープ・シーケンスで置き換えます。

FONTCLOSEプロシージャ

指定されたフォント特性を持つテキスト・セクションの終了を示す</FONT>タグを生成します。

FONTOPENプロシージャ

指定されたフォント特性を持つテキスト・セクションの開始を示す<FONT>タグを生成します。

FORMCHECKBOXプロシージャ

チェックボックス要素をフォームに挿入するTYPE="checkbox"を指定した<INPUT>タグを生成します。

FORMCLOSEプロシージャ

HTMLドキュメントのフォーム・セクションの終了を示す</FORM>タグを生成します。

FORMOPENプロシージャ

HTMLドキュメントのフォーム・セクションの開始を示す<FORM>タグを生成します。

FORMFILEプロシージャ

ファイルのフォーム要素を挿入するTYPE="file"を指定した<INPUT>タグを生成します。特定のページのファイルをアップロードする場合に使用します。

FORMHIDDENプロシージャ

非表示フォーム要素を挿入するTYPE="hidden"を指定した<INPUT>タグを生成します。

FORMIMAGEプロシージャ

イメージ・フィールドを作成するTYPE="image"を指定した<INPUT>タグを生成します。このイメージ・フィールドをクリックすると、ユーザーはフォームを即座に送信できます。

FORMPASSWORDプロシージャ

単一行のテキスト入力フィールドを作成するTYPE="password"を指定した<INPUT>タグを生成します。

FORMRADIOプロシージャ

HTMLフォーム上にラジオ・ボタンを作成するTYPE="radio"を指定した<INPUT>タグを生成します。

FORMRESETプロシージャ

選択するとフォーム・フィールドが初期値にリセットされるようなボタンを作成する、TYPE="reset"を指定した<INPUT>タグを生成します。

FORMSELECTCLOSEプロシージャ

選択フォーム要素の終了を示す</SELECT>タグを生成します。

FORMSELECTOPENプロシージャ

選択フォーム要素の開始を示す</SELECT>タグを生成します。

FORMSELECTOPTIONプロシージャ

1つの選択要素に1つの選択肢を示す<OPTION>タグを生成します。

FORMSUBMITプロシージャ

クリックするとフォームが送信されるようなボタンを作成する、TYPE="submit"を指定した<INPUT>タグを生成します。

FORMTEXTプロシージャ

単一行のテキストのフィールドを作成するTYPE="text"を指定した<INPUT>タグを生成します。

FORMTEXTAREAプロシージャ

テキスト領域に事前定義されたテキストを持たない、テキスト・フィールドを作成する<TEXTAREA>タグを生成します。

FORMTEXTAREA2プロシージャ

テキスト領域に事前定義されたテキストを持たずにラップ・スタイル指定が可能なテキスト・フィールドを作成する<TEXTAREA>タグを生成します。

FORMTEXTAREACLOSEプロシージャ

テキスト領域フォーム要素を終了する</TEXTAREA>タグを生成します。

FORMTEXTAREAOPENプロシージャ

テキスト領域フォーム要素の開始を示す<TEXTAREA>タグを生成します。

FORMTEXTAREAOPEN2プロシージャ

ラップ・スタイルを指定する機能を持つテキスト領域フォーム要素の開始を示す<TEXTAREA>を生成します。

FRAMEプロシージャ

<FRAMESET>タグで作成したフレームの特性を開始する<FRAME>タグを生成します。

FRAMESETCLOSEプロシージャ

フレームセット・セクションを終了する</FRAMESET>タグを生成します。

FRAMESETOPENプロシージャ

フレームセット・セクションを開始する</FRAMESET>タグを生成します。

HEADCLOSEプロシージャ

HTMLドキュメントのヘッダー・セクションの終了を示す</HEAD>タグを生成します。

HEADERプロシージャ

ヘッダーを開始するタグ(<H1>から<H6>)およびそれに対応するヘッダーを終了するタグ(</H1>から</H6>)を生成します。

HEADOPENプロシージャ

HTMLドキュメントのヘッダー・セクションの開始を示す<HEAD>タグを生成します。

HRプロシージャ

HTMLドキュメントに行を生成する<HR>タグを生成します。

HTMLCLOSEプロシージャ

HTMLドキュメントの終了を示す</HTML>タグを生成します。

HTMLOPENプロシージャ

HTMLドキュメントの開始を示す<HTML>タグを生成します。

IMGプロシージャ

HTMLページ上にイメージをロードするようにブラウザに指示する<IMG>タグを生成します。

IMG2プロシージャ

HTMLページ上にイメージをロードするようにブラウザに指示する<IMG>タグを生成します。USEMAP属性の値を指定するオプションを使用できます。

ISINDEXプロシージャ

「値を入力してください」などのプロンプト・テキストが表示される単一の入力フィールドを作成し、その値をページまたはプログラムのURLに送信します。

ITALICプロシージャ

ブラウザにテキストをイタリックで表示させる<I>および</I>タグを生成します。

KBDプロシージャ

ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。

KEYBOARDプロシージャ

ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。

LINEプロシージャ

HTMLドキュメントに行を生成する<HR>タグを生成します。

LINKRELプロシージャ

アンカーからターゲットへのハイパーテキスト・リンクによって記述される関係を示す、REL属性を指定した<LINK>タグを生成します。

LINKREVプロシージャ

ターゲットからアンカーへのハイパーテキスト・リンクによって記述された関係を示すREV属性を指定した<LINK>タグを生成します。

LISTHEADERプロシージャ

リストの先頭にHTMLタグを印刷する<LH>および</LH>タグを生成します。

LISTINGCLOSEプロシージャ

HTMLページの本体にある固定幅テキスト・セクションの終了を示す</LISTING>タグを生成します。

LISTINGOPENプロシージャ

HTMLページの本体にある固定幅テキスト・セクションの開始を示す<LISTING>タグを生成します。

LISTITEMプロシージャ

リスト項目を示す<LI>タグを生成します。

MAILTOプロシージャ

メール・アドレスの引数に付加するmailtoにHREFが設定された<A>タグを生成します。

MAPCLOSEプロシージャ

クライアント側のイメージ・マップにおける領域セットの終了を示す</MAP>タグを生成します。

MAPOPENプロシージャ

クライアント側のイメージ・マップにおける領域セットの開始を示す<MAP>タグを生成します。

MENULISTCLOSEプロシージャ

項目ごとに行を示すリストを終了する</MENU>タグを生成します。

MENULISTOPENプロシージャ

項目ごとに行を示すリストを開始する<MENU>タグが生成されます。

METAプロシージャ

ドキュメントに関するメタ情報の埋込みとHTTPヘッダーの値の指定を行う<META>タグを生成します。

NLプロシージャ

テキストの新しい行を開始する<BR>タグを生成します。

NOBRプロシージャ

テキスト・セクションの改行をオフにする<NOBR>および</NOBR>タグを生成します。

NOFRAMESCLOSEプロシージャ

フレームなしセクションの終了を示す</NOFRAMES>タグを生成します。

NOFRAMESOPENプロシージャ

フレームなしセクションの開始を示す<NOFRAMES>タグを生成します。

OLISTCLOSEプロシージャ

順序付けられたリストの終了を示す</OL>タグを生成します。

OLISTOPENプロシージャ

順序付けられたリストの開始を示す<OL>タグを生成します。

PARAプロシージャ

後置テキストを1つのパラグラフとしてフォーマットする<P>タグを生成します。

PARAGRAPHプロシージャ

<P>タグに属性を追加します。

PARAMプロシージャ

Javaアプレットにパラメータ値を指定する<PARAM>タグを生成します。

PLAINTEXTプロシージャ

タグで囲んだテキストを固定幅でブラウザに表示させる<PLAINTEXT>および</PLAINTEXT>タグを生成します。

PRECLOSEプロシージャ

HTMLページの本体にある、事前フォーマットされたテキスト・セクションの終了を示す</PRE>タグを生成します。

PREOPENプロシージャ

HTMLページの本体にある、事前フォーマットされたテキスト・セクションの開始を示す<PRE>タグを生成します。

PRINTプロシージャ

指定されたパラメータを、\n改行文字で終了する文字列として生成します。

PRINTSプロシージャ

文字列を生成し、後続の文字列を対応するエスケープ・シーケンスで置き換えます。

PRNプロシージャ

指定されたパラメータを文字列として生成します。

PSプロシージャ

文字列を生成し、後続の文字列を対応するエスケープ・シーケンスで置き換えます。

Sプロシージャ

タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<S>および</S>タグを生成します。

SAMPLEプロシージャ

タグで囲んだテキストを等幅フォントまたは定義されたスタイルでブラウザに表示させる、<SAMP>および</SAMP>タグを生成します。

SCRIPTプロシージャ

JavaScript、VBscriptなどの言語で書かれたスクリプトを含む<SCRIPT>および</SCRIPT>タグを生成します。

SMALLプロシージャ

タグで囲んだテキストを小さいフォントでブラウザに表示させる、<SMALL>および</SMALL>タグを生成します。

STRIKEプロシージャ

タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<STRIKE>および</STRIKE>タグを生成します。

STRONGプロシージャ

タグで囲んだテキストを太字または定義されたスタイルでブラウザに表示させる、<STRONG>および</STRONG>タグを生成します。

STYLEプロシージャ

Webページ内にスタイルシートを組み込む<STYLE>および</STYLE>タグを作成します。

SUBプロシージャ

タグで囲んだテキストを下付き文字としてブラウザに表示させる、<SUB>および</SUB>タグを生成します。

SUPプロシージャ

タグで囲んだテキストを上付き文字としてブラウザに表示させる、<SUP>および</SUP>タグを生成します。

TABLECAPTIONプロシージャ

HTML表内にキャプションを配置する<CAPTION>および</CAPTION>タグを生成します。

TABLECLOSEプロシージャ

HTML表の終了を示す</TABLE>タグを生成します。

TABLEDATAプロシージャ

HTML表内のセルにデータを挿入する<TD>および</TD>タグを生成します。

TABLEHEADERプロシージャ

HTML表内にヘッダー・セルを挿入する<TH>および</TH>タグを生成します。

TABLEOPENプロシージャ

HTML表の開始を示す<TABLE>タグを生成します。

TABLEROWCLOSEプロシージャ

HTML表の新しい行の終了を示す</TR>タグを生成します。

TABLEROWOPENプロシージャ

HTML表の新しい行の開始を示す<TR>タグを生成します。

TELETYPEプロシージャ

タグで囲んだテキストをクーリエなどの固定幅のタイプライター・フォントでブラウザに表示させる、<TT>および</TT>タグを生成します。

TITLEプロシージャ

ブラウザ・ウィンドウのタイトルバーに表示するテキストを指定する<TITLE>および</TITLE>タグを生成します。

ULISTCLOSEプロシージャ

順序付けられていないリストの終了を示す</UL>タグを生成します。

ULISTOPENプロシージャ

順序付けられていないリストの開始を示す<UL>タグを生成します。

UNDERLINEプロシージャ

タグで囲んだテキストを下線付きでブラウザに表示させる、<U>および</U>タグを生成します。

VARIABLEプロシージャ

タグで囲んだテキストをイタリックまたは定義されたスタイルでブラウザに表示させる<VAR>および</VAR>タグを生成します。

WBRプロシージャ

NOBRテキスト・セクション内に非強制改行を挿入する<WBR>タグを生成します。

ADDRESSプロシージャ

このプロシージャは、ドキュメントのアドレス、作成者および署名を指定する<ADDRESS>および</ADDRESS>タグを生成します。

構文

HTP.ADDRESS (
cvalue         IN       VARCHAR2
cnowrap        IN       VARCHAR2   DEFAULT NULL
cclear         IN       VARCHAR2   DEFAULT NULL
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-2 ADDRESSプロシージャのパラメータ

パラメータ

説明

cvalue

<ADDRESS>および</ADDRESS>タグ間に位置する文字列。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに組み込まれます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<ADDRESS CLEAR="cclear" NOWRAP cattributes>cvalue</ADDRESS>

ANCHORプロシージャ

このプロシージャおよびANCHOR2プロシージャは、ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>のHTMLタグを生成します。これらのサブプログラムの違いは、ANCHOR2プロシージャではターゲットが提供され、フレームでこれを使用できることです。

構文

HTP.ANCHOR (
curl           IN       VARCHAR2,
ctext          IN       VARCHAR2,
cname          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-3 ANCHORプロシージャのパラメータ

パラメータ

説明

curl

HREF属性の値。

ctext

<A>および</A>タグ間に位置する文字列。

cname

NAME属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<A HREF="curl" NAME="cname" cattributes>ctext</A>

使用上の注意

このタグでは複数の属性を指定できますが、その場合、HREFまたはNAMEは必須です。HREFはリンク先を指定します。このタグにNAMEを使用すると、ハイパーテキスト・リンクのリンク先になります。

ANCHOR2プロシージャ

このプロシージャおよびANCHORプロシージャは、ハイパーテキスト・リンクのソースまたはリンク先を指定する<A>および</A>のHTMLタグを生成します。これらのサブプログラムの違いは、このプロシージャではターゲットが提供され、フレームでこれを使用できることです。

構文

HTP.ANCHOR2 (
curl           IN       VARCHAR2,
ctext          IN       VARCHAR2,
cname          IN       VARCHAR2   DEFAULT NULL,
ctarget        in       varchar2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-4 ANCHOR2プロシージャのパラメータ

パラメータ

説明

curl

HREF属性の値。

ctext

<A>および</A>タグ間に位置する文字列。

cname

NAME属性の値。

ctarget

TARGET属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<A HREF="curl" NAME="cname" TARGET = "ctarget" cattributes>ctext</A>

APPLETCLOSEプロシージャ

このプロシージャは、</APPLET>タグでアプレットの起動をクローズします。まず、APPLETOPENプロシージャを使用してJavaアプレットを起動する必要があります。

構文

HTP.APPLETCLOSE;

APPLETOPENプロシージャ

このプロシージャは、Javaアプレットの起動を開始する<APPLET>タグを生成します。</APPLET>タグを生成するAPPLETCLOSEプロシージャを使用して、アプレットの起動をクローズします。

構文

HTP.APPLETOPEN (
ccode          IN       VARCHAR2,
cheight        IN       NUMBER,
cwidth         IN       NUMBER,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-5 APPLETOPENプロシージャのパラメータ

パラメータ

説明

ccode

アプレット・クラスの名前を指定するCODE属性の値。

cheight

HEIGHT属性の値。

cwidth

WIDTH属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<APPLET CODE=ccode HEIGHT=cheight WIDTH=cwidth cattributes>

たとえば、次のように入力したとします。

HTP.appletopen('testclass.class', 100, 200, 'CODEBASE="/ows-applets"')

生成結果は、次のようになります。

<APPLET CODE="testclass.class" height=100 width=200 CODEBASE="/ows-applets">

使用上の注意

- PARAMプロシージャを使用して、Javaアプレットにパラメータを指定してください。

- CODEBASE属性を指定する場合、PL/SQLカートリッジがクラス・ファイルの場所を特定できるように、cattributesパラメータを使用します。CODEBASE属性では、クラス・ファイルを含むバーチャル・パスを指定します。

AREAプロシージャ

このプロシージャは、クライアント側のイメージ・マップを定義する<AREA>タグを生成します。<AREA>タグは、イメージ内の領域およびその領域のリンク先を定義します。

構文

HTP.AREA (
ccoords        IN       VARCHAR2
cshape         IN       VARCHAR2   DEFAULT NULL,
chref          IN       VARCHAR2   DEFAULT NULL,
cnohref        IN       VARCHAR2   DEFAULT NULL,
ctarget        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-6 AREAプロシージャのパラメータ

パラメータ

説明

ccords

COORDS属性の値。

cshape

SHAPE属性の値。

chref

HREF属性の値。

cnohref

このパラメータの値がNULLでない場合、NOHREF属性がタグに追加されます。

ctarget

TARGET属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<AREA COORDS="ccoords" SHAPE="cshape" HREF="chref" NOHREF TARGET="ctarget" cattributes>

BASEプロシージャ

このプロシージャは、ドキュメントのURLを記録する<BASE>タグを生成します。

構文

HTP.BASE (
ctarget        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-7 BASEプロシージャのパラメータ

パラメータ

説明

ctarget

TARGET属性の値。このドキュメント内に存在するすべてのリンクのリンク先となるウィンドウ名を指定します。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<BASE HREF="<current URL>" TARGET="ctarget" cattributes>

BASEFONTプロシージャ

このプロシージャは、Webページの基本フォント・サイズを指定する<BASEFONT>タグを生成します。

構文

HTP.BASEFONT (
nsize    IN    INTEGER);

パラメータ

表208-8 BASEFONTプロシージャのパラメータ

パラメータ

説明

nsize

SIZE属性の値。

例

このプロシージャでの生成結果は、次のようになります。

<BASEFONT SIZE="nsize">

BGSOUNDプロシージャ

このプロシージャは、Webページにオーディオを組み込む<BGSOUND>タグを生成します。

構文

HTP.BGSOUND (
csrc           IN       VARCHAR2,
cloop          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-9 BGSOUNDプロシージャのパラメータ

パラメータ

説明

csrc

SRC属性の値。

cloop

LOOP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<BGSOUND SRC="csrc" LOOP="cloop" cattributes>

BIGプロシージャ

このプロシージャは、ブラウザにテキストを大きいフォントで表示させる<BIG>および</BIG>タグを生成します。

構文

HTP.BIG (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-10 BIGプロシージャのパラメータ

パラメータ

説明

ctext

タグ間に位置するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<BIG cattributes>ctext</BIG>

BLOCKQUOTECLOSEプロシージャ

このプロシージャは、引用したテキスト・セクションの終了を示す</BLOCKQUOTE>タグを生成します。テキスト・セクションの開始を示すには、BLOCKQUOTEOPENプロシージャを使用します。

構文

HTP.BLOCKQUOTECLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</BLOCKQUOTE>

BLOCKQUOTEOPENプロシージャ

このプロシージャは、引用したテキスト・セクションの開始を示す<BLOCKQUOTE>タグを生成します。テキスト・セクションの終了を示すには、BLOCKQUOTECLOSEプロシージャを使用します。

構文

HTP.BLOCKQUOTEOPEN (
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-11 BLOCKQUOTEOPENプロシージャのパラメータ

パラメータ

説明

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<BLOCKQUOTE CLEAR="cclear" NOWRAP cattributes>

BODYCLOSEプロシージャ

このプロシージャは、HTMLドキュメントの本体セクションの終了を示す</BODY>タグを生成します。本体セクションの開始を示すには、BODYOPENプロシージャを使用します。

構文

HTP.BODYCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</BODY>

BODYOPENプロシージャ

このプロシージャは、HTMLドキュメントの本体セクションの開始を示す<BODY>タグを生成します。本体セクションの終了を示すには、BODYCLOSEプロシージャを使用します。

構文

HTP.BODYOPEN (
cbackground    IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-12 BODYOPENプロシージャのパラメータ

パラメータ

説明

cbackground

ドキュメントのバックグラウンドに使用するグラフィック・ファイルを指定する、BACKGROUND属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<BODY background="cbackground" cattributes>

たとえば、次のように入力したとします。

HTP.BODYOPEN('/img/background.gif');

生成結果は、次のようになります。

<BODY background="/img/background.gif">

BOLDプロシージャ

このプロシージャは、ブラウザにテキストを太字で表示させる<B>および</B>タグを生成します。

構文

HTP.BOLD (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-13 BOLDプロシージャのパラメータ

パラメータ

説明

ctext

タグ間に位置するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<B cattributes>ctext</B>

BRプロシージャ

このプロシージャは、テキストの新しい行を開始する<BR>タグを生成します。このプロシージャの実行内容はNLプロシージャと同じです。

構文

HTP.BR(
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-14 BRプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<BR CLEAR="cclear" cattributes>

CENTERプロシージャ

このプロシージャは、Webページ内のテキスト・セクションを中央揃えする<CENTER>および</CENTER>タグを生成します。

構文

HTP.CENTER (
ctext          IN       VARCHAR2);

パラメータ

表208-15 CENTERのパラメータ

パラメータ

説明

ctext

タグ間に位置するテキスト。

例

このプロシージャでの生成結果は、次のようになります。

<CENTER>ctext</CENTER>

CENTERCLOSEプロシージャ

このプロシージャは、中央揃えするテキスト・セクションの終了を示す</CENTER>タグを生成します。中央揃えするテキスト・セクションの開始を示すには、CENTEROPENプロシージャを使用します。

構文

HTP.CENTERCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</CENTER>

CENTEROPENプロシージャ

このプロシージャは、中央揃えするテキスト・セクションの開始を示す<CENTER>タグを生成します。中央揃えするテキスト・セクションの終了を示すには、CENTERCLOSEプロシージャを使用します。

構文

HTP.CENTEROPEN;

例

このプロシージャでの生成結果は、次のようになります。

<CENTER>

CITEプロシージャ

このプロシージャは、ブラウザにテキストを引用として表示させる<CITE>および</CITE>タグを生成します。

構文

HTP.CITE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-16 CITEプロシージャのパラメータ

パラメータ

説明

ctext

引用として表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<CITE cattributes>ctext</CITE>

CODEプロシージャ

このプロシージャは、テキストを等幅フォント、または定義されたスタイルでブラウザに表示させる、<CODE>および</CODE>タグを生成します。

構文

HTP.CODE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-17 CODEプロシージャのパラメータ

パラメータ

説明

ctext

コードとして表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<CODE cattributes>ctext</CODE>

COMMENTプロシージャ

このプロシージャは、コメント・タグを生成します。

構文

HTP.COMMENT (
ctext          IN       VARCHAR2);

パラメータ

表208-18 COMMENTプロシージャのパラメータ

パラメータ

説明

ctext

コメント。

例

このプロシージャでの生成結果は、次のようになります。

<!-- ctext -->

DFNプロシージャ

このプロシージャは、テキストをイタリックまたは定義されたスタイルでブラウザに表示させる、<DFN>および</DFN>タグを生成します。

構文

HTP.DFN (
ctext          IN       VARCHAR2);

パラメータ

表208-19 DFNプロシージャのパラメータ

パラメータ

説明

ctext

イタリックで表示するテキスト。

例

このプロシージャでの生成結果は、次のようになります。

<DFN>ctext</DFN>

DIRLISTCLOSEプロシージャ

このプロシージャは、ディレクトリ・リストのセクションを終了する</DIR>タグを生成します。ディレクトリ・リストのセクションを開始するには、DIRLISTOPENプロシージャを使用します。

構文

HTP.DIRLISTCLOSE;

使用上の注意

ディレクトリ・リストには、最大20文字までの項目リストが表示されます。このリストの項目は、通常、列に24文字幅で配列されます。<LI>タグを直接挿入するか、LISTITEMプロシージャを起動して</DIR>タグの直後に<LI>タグが表示されるようにして、項目をリストとして定義します。

例

このプロシージャでの生成結果は、次のようになります。

</DIR>

DIRLISTOPENプロシージャ

このプロシージャは、ディレクトリ・リストのセクションを開始する<DIR>を生成します。ディレクトリ・リストのセクションを終了するには、DIRLISTCLOSEプロシージャを使用します。

構文

HTP.DIRLISTOPEN;

使用上の注意

ディレクトリ・リストには、最大20文字までの項目リストが表示されます。このリストの項目は、通常、列に24文字幅で配列されます。<LI>タグを直接挿入するか、LISTITEMプロシージャを起動して</DIR>タグの直後に<LI>タグが表示されるようにして、項目をリストとして定義します。

例

このプロシージャでの生成結果は、次のようになります。

<DIR>

DIVプロシージャ

このプロシージャは、ドキュメントの区分を作成する<DIV>タグを生成します。

構文

HTP.DIV (
calign         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-20 DIVプロシージャのパラメータ

パラメータ

説明

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<DIV ALIGN="calign" cattributes>

DLISTCLOSEプロシージャ

このプロシージャは、定義リストを終了する</DL>タグを生成します。定義リストを開始するには、DLISTOPENプロシージャを使用します。

構文

HTP.DLISTCLOSE;

使用上の注意

定義リストは用語集に類似していて、用語および定義が含まれています。用語の場合はDLISTTERMプロシージャ、定義の場合はDLISTDEFプロシージャを使用して挿入します。

例

このプロシージャでの生成結果は、次のようになります。

</DL>

DLISTDEFプロシージャ

このプロシージャは、用語の定義を挿入する<DD>タグを生成します。定義リスト<DL>には、このタグを使用します。用語の場合は<DT>タグ、定義の場合は<DD>タグを使用します。

構文

HTP.DLISTDEF (
ctext          IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-21 DLISTDEFプロシージャのパラメータ

パラメータ

説明

ctext

用語の定義。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<DD CLEAR="cclear" cattributes>ctext

DLISTOPENプロシージャ

このプロシージャは、定義リストを開始する<DL>タグを生成します。定義リストを終了するには、DLISTCLOSEプロシージャを使用します。

構文

HTP.DLISTOPEN (
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-22 DLISTOPENプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

使用上の注意

定義リストは用語集に類似していて、用語および定義が含まれています。用語の場合はDLISTTERMプロシージャ、定義の場合はDLISTDEFプロシージャを使用して挿入します。

例

このプロシージャでの生成結果は、次のようになります。

<DL CLEAR="cclear" cattributes>

DLISTTERMプロシージャ

このプロシージャは、定義リスト<DL>の用語を定義する<DT>タグを生成します。

構文

HTP.DLISTTERM (
ctext          IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-23 DLISTTERMプロシージャのパラメータ

パラメータ

説明

ctext

用語。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<DT CLEAR="cclear" cattributes>ctext

EMプロシージャ

このプロシージャは、強調するテキストを定義する<EM>および</EM>タグを生成します。このプロシージャの実行内容はEMPHASISプロシージャと同じです。

構文

HTP.EM(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-24 EMプロシージャのパラメータ

パラメータ

説明

ctext

強調するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<EM cattributes>ctext</EM>

EMPHASISプロシージャ

このプロシージャは、強調するテキストを定義する<EM>および</EM>タグを生成します。このプロシージャの実行内容はEMプロシージャと同じです。

構文

HTP.EMPHASIS(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-25 EMPHASISプロシージャのパラメータ

パラメータ

説明

ctext

強調するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<EM cattributes>ctext</EM>

ESCAPE_SCプロシージャ

このプロシージャは、HTMLで特別な意味を持つ文字をエスケープ・シーケンスで置き換えます。次のように文字が変換されます。

- &は&amp;

- "は&quot:

- <は&lt;

- >は&gt;

このプロシージャの実行内容は、PRINTSプロシージャやPSプロシージャと同じです。

構文

HTP.ESCAPE_SC(
ctext          IN       VARCHAR2);

パラメータ

表208-26 ESCAPE_SCプロシージャのパラメータ

パラメータ

説明

ctext

変換するテキスト文字列。

FONTCLOSEプロシージャ

このプロシージャは、指定されたフォントの特性を持つテキスト・セクションの終了を示す</FONT>タグを生成します。テキスト・セクションの開始を示すには、FONTOPENプロシージャを使用します。

構文

HTP.FONTCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</FONT>

FONTOPENプロシージャ

このプロシージャは、指定されたフォントの特性を持つテキスト・セクションの開始を示す<FONT>タグを生成します。テキスト・セクションの終了を示すには、FONTCLOSEプロシージャを使用します。

構文

HTP.FONTOPEN(
ccolor         IN       VARCHAR2   DEFAULT NULL,
cface          IN       VARCHAR2   DEFAULT NULL,
csize          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-27 FONTOPENプロシージャのパラメータ

パラメータ

説明

ccolor

COLOR属性の値。

cface

FACE属性の値。

csize

SIZE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<FONT COLOR="ccolor" FACE="cface" SIZE="csize" cattributes>

FORMCHECKBOXプロシージャ

このプロシージャは、チェックボックス要素をフォームに挿入するTYPE="checkbox"を指定した<INPUT>タグを生成します。チェックボックス要素は、ユーザーがオンまたはオフに切り替えるボタンです。

構文

HTP.FORMCHECKBOX(
cname          IN       VARCHAR2,
cvalue         IN       VARCHAR2   DEFAULT 'ON',
cchecked       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-28 FORMCHECKBOXプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cchecked

このパラメータの値がNULLでない場合、CHECKED属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="checkbox" NAME="cname" VALUE="cvalue" CHECKED cattributes>

FORMCLOSEプロシージャ

このプロシージャは、HTMLドキュメントのフォーム・セクションの終了を示す</FORM>タグを生成します。フォーム・セクションの開始を示すには、FORMOPENプロシージャを使用します。

構文

HTP.FORMCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</FORM>

FORMOPENプロシージャ

このプロシージャは、HTMLドキュメントのフォーム・セクションの開始を示す<FORM>タグを生成します。フォーム・セクションの終了を示すには、FORMCLOSEプロシージャを使用します。

構文

HTP.FORMOPEN(
curl           IN       VARCHAR2,
cmethod        IN       VARCHAR2   DEFAULT 'POST',
ctarget        IN       VARCHAR2   DEFAULT NULL,
cenctype       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-29 FORMOPENプロシージャのパラメータ

パラメータ

説明

curl

フォームのコンテンツの送信先である、WRBまたはCGIスクリプトのURL。このパラメータは必須です。

cmethod

METHOD属性の値。この値は、"GET"または"POST"に指定できます。

ctarget

TARGET属性の値。

cenctype

ENCTYPE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<FORM ACTION="curl" METHOD="cmethod" TARGET="ctarget" ENCTYPE="cenctype" cattributes>

FORMFILEプロシージャ

このプロシージャは、ファイルのフォーム要素を挿入するTYPE="file"を指定した<INPUT>タグを生成します。特定のページのファイルをアップロードする場合に、これを使用します。

構文

HTP.FORMFILE(
cname          IN       VARCHAR2,
caccept        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-30 FORMFILEプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

caccept

MIMEタイプのカンマ区切りのリスト(アップロード用)。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="file" NAME="cname" ACCEPT="caccept" cattributes>

FORMHIDDENプロシージャ

このプロシージャは、非表示フォーム要素を挿入する、TYPE="hidden"を指定した<INPUT>タグを生成します。この要素は、ユーザーに対して非表示になります。スクリプトに追加の値を送信します。

構文

HTP.FORMHIDDEN(
cname          IN       VARCHAR2,
cvalue         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-31 FORMHIDDENプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="hidden" NAME="cname" VALUE="cvalue" cattributes>

FORMIMAGEプロシージャ

このプロシージャは、イメージ・フィールドを作成する、TYPE="image"を指定した<INPUT>タグを生成します。このイメージ・フィールドをクリックすることにより、ユーザーはフォームをただちに送信できます。選択したポイントの座標はピクセルで計算され、(フォームの他のコンテンツとともに) 2つの名前/値のペアの形式で戻されます。x座標の場合は.x、y座標の場合は.yが追加されて、フィールド名の下に送信されます。すべてのVALUE属性は無視されます。

構文

HTP.FORMIMAGE(
cname          IN       VARCHAR2,
csrc           IN       VARCHAR2,
calign         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-32 FORMIMAGEプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

csrc

イメージ・ファイルを指定するSRC属性の値。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="image" NAME="cname" SRC="csrc" ALIGN="calign" cattributes>

FORMPASSWORDプロシージャ

このプロシージャは、単一行のテキスト入力フィールドを作成するTYPE="password"を指定した<INPUT>タグを生成します。ユーザーがフィールドにテキストを入力すると、各文字はアスタリスクで表示されます。これは、パスワードの入力に使用されます。

構文

HTP.FORMPASSWORD(
cname          IN       VARCHAR2,
csize          IN       VARCHAR2,
cmaxlength     IN       VARCHAR2   DEFAULT NULL,
cvalue         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-33 FORMPASSWORDプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

csize

SIZE属性の値。

cmaxlength

MAXLENGTH属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="password" NAME="cname" SIZE="csize" MAXLENGTH="cmaxlength" VALUE="cvalue" cattributes>

FORMRADIOプロシージャ

このプロシージャは、HTMLフォーム上にラジオ・ボタンを作成するTYPE="radio"を指定した<INPUT>タグを生成します。ユーザーが選択できるラジオボタンは1つのみです。同じセットの各ラジオボタンの名前は同じですが、値は異なります。選択したラジオボタンは、名前/値ペアを生成します。

構文

HTP.FORMRADIO(
cname          IN       VARCHAR2,
cvalue         IN       VARCHAR2,
cchecked       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-34 FORMRADIOプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cchecked

このパラメータの値がNULLでない場合、CHECKED属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="radio" NAME="cname" VALUE="cvalue" CHECKED cattributes>

FORMRESETプロシージャ

このプロシージャは、選択するとフォーム・フィールドが初期値にリセットされるようなボタンを作成する、TYPE="reset"を指定した<INPUT>タグを生成します。

構文

HTP.FORMRESET(
cvalue         IN       VARCHAR2   DEFAULT 'Reset',
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-35 FORMRESETプロシージャのパラメータ

パラメータ

説明

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="reset" VALUE="cvalue" cattributes>

FORMSELECTCLOSEプロシージャ

このプロシージャは、選択フォーム要素の終了を示す</SELECT>タグを生成します。選択フォーム要素は、ユーザーが1つ以上の値を選択するリストボックスです。選択フォーム要素の開始を示すには、FORMSELECTOPENプロシージャを使用します。値を挿入する場合は、FORMSELECTOPTIONプロシージャを使用します。

構文

HTP.FORMSELECTCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</SELECT>

「FORMSELECTOPENプロシージャ」の「例」と同様です。

FORMSELECTOPENプロシージャ

このプロシージャは、選択フォーム要素を作成する<SELECT>タグを生成します。選択フォーム要素は、ユーザーが1つ以上の値を選択するリストボックスです。選択フォーム要素の終了を示すには、FORMSELECTCLOSEプロシージャを使用します。値を挿入する場合は、FORMSELECTOPTIONプロシージャを使用します。

構文

FORMSELECTOPEN(
cname          IN       VARCHAR2,
cprompt        IN       VARCHAR2   DEFAULT NULL,
nsize          IN       INTEGER    DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-36 FORMSELECTOPENプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

cprompt

リスト・ボックスの前の文字列。

nsize

SIZE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

cprompt <SELECT NAME="cname" SIZE="nsize" cattributes>
</SELECT>

たとえば、次のように入力したとします。

HTP.FORMSELECTOPEN('greatest_player';
'Pick the greatest player:');
HTP.FORMSELECTOPTION('Messier');
HTP.FORMSELECTOPTION('Howe');
HTP.FORMSELECTOPTION('Gretzky');.
HTP.FORMSELECTCLOSE;

生成結果は、次のようになります。

Pick the greatest player:
<SELECT NAME="greatest_player">
<OPTION>Messier
<OPTION>Howe
<OPTION>Gretzky
</SELECT>

FORMSELECTOPTIONプロシージャ

このプロシージャは、1つの選択要素に1つの選択肢を示す<OPTION>タグを生成します。

構文

HTP.FORMSELECTOPTION(
cvalue         IN       VARCHAR2,
cselected      IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-37 FORMSELECTOPTIONプロシージャのパラメータ

パラメータ

説明

cvalue

オプションのテキスト。

cvalue

このパラメータの値がNULLでない場合、SELECTED属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<OPTION SELECTED cattributes>cvalue

「FORMSELECTOPENプロシージャ」の「例」と同様です。

FORMSUBMITプロシージャ

このプロシージャは、クリックするとフォームが送信されるようなボタンを作成する、TYPE="submit"を指定した<INPUT>タグを生成します。ボタンにNAME属性が指定されている場合、ボタンは送信データに名前/値ペアを与えます。

構文

HTP.FORMSUBMIT(
cname          IN       VARCHAR2   DEFAULT NULL,
cvalue        IN       VARCHAR2   DEFAULT 'Submit',
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-38 FORMSUBMITプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="submit" NAME="cname" VALUE="cvalue" cattributes>

FORMTEXTプロシージャ

このプロシージャは、単一行のテキストのフィールドを作成するTYPE="text"を指定した<INPUT>タグを生成します。

構文

HTP.FORMTEXT(
cname          IN       VARCHAR2,
csize          IN       VARCHAR2   DEFAULT NULL,
cmaxlength     IN       VARCHAR2   DEFAULT NULL,
cvalue         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-39 FORMTEXTプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

csize

SIZE属性の値。

cmaxlength

MAXLENGTH属性の値。

cvalue

VALUE属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<INPUT TYPE="text" NAME="cname" SIZE="csize" MAXLENGTH="cmaxlength" VALUE="cvalue" cattributes>

FORMTEXTAREAプロシージャ

このプロシージャは、テキスト領域に事前定義されたテキストがないテキスト・フィールドを作成する、<TEXTAREA>タグを生成します。このフィールドには、複数のテキスト行を入力できます。FORMTEXTAREA2プロシージャの場合も実行内容は同じですが、ラップ・スタイルを指定できるcwrapパラメータが追加されています。

構文

HTP.FORMTEXTAREA(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign      , IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-40 FORMTEXTAREAプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" cattributes></TEXTAREA>

FORMTEXTAREA2プロシージャ

このプロシージャは、テキスト領域に事前定義されたテキストがないテキスト・フィールドを作成する、<TEXTAREA>タグを生成します。このフィールドには、複数のテキスト行を入力できます。ラップ・スタイルは指定できませんが、それ以外の実行内容はFORMTEXTAREAプロシージャと同じです。

構文

HTP.FORMTEXTAREA2(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-41 FORMTEXTAREA2プロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cwrap

WRAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" WRAP="cwrap" cattributes></TEXTAREA>

FORMTEXTAREACLOSEプロシージャ

このプロシージャは、テキスト領域フォーム要素を終了する</TEXTAREA>タグを生成します。テキスト領域の要素の開始を示すには、FORMTEXTAREAOPENプロシージャまたはFORMTEXTAREAOPEN2プロシージャを使用します。

構文

HTP.FORMTEXTAREACLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</TEXTAREA>

FORMTEXTAREAOPENプロシージャ

このプロシージャは、テキスト領域フォーム要素の開始を示す<TEXTAREA>タグを生成します。FORMTEXTAREAOPEN2プロシージャの場合も実行内容は同じですが、ラップ・スタイルを指定できるcwrapパラメータが追加されています。テキスト領域フォーム要素の終了を示すには、FORMTEXTAREACLOSEプロシージャを使用します。

構文

HTP.FORMTEXTAREAOPEN(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-42 FORMTEXTAREAOPENプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" cattributes>

FORMTEXTAREAOPEN2プロシージャ

このプロシージャは、テキスト領域フォーム要素の開始を示す<TEXTAREA>タグを生成します。ラップ・スタイルは指定できませんが、それ以外の実行内容はFORMTEXTAREAOPENプロシージャと同じです。テキスト領域フォーム要素の終了を示すには、FORMTEXTAREACLOSEプロシージャを使用します。

構文

HTP.FORMTEXTAREAOPEN2(
cname          IN       VARCHAR2,
nrows          IN       INTEGER,
ncolumns       IN       INTEGER,
calign         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-43 FORMTEXTAREAOPEN2プロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

nrows

ROWS属性の値。これは整数です。

ncolumns

COLS属性の値。これは整数です。

calign

ALIGN属性の値。

cwrap

WRAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TEXTAREA NAME="cname" ROWS="nrows" COLS="ncolumns" ALIGN="calign" WRAP = "cwrap" cattributes>

FRAMEプロシージャ

このプロシージャは、<FRAMESET>タグで作成したフレームの特性を開始する<FRAME>タグを生成します。

構文

HTP.FRAME(
csrc           IN       VARCHAR2,
cname          IN       VARCHAR2   DEFAULT NULL,
cmarginwidth   IN       VARCHAR2   DEFAULT NULL,
cmarginheight  IN       VARCHAR2   DEFAULT NULL,
cscrolling     IN       VARCHAR2   DEFAULT NULL,
cnoresize      IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-44 FRAMEプロシージャのパラメータ

パラメータ

説明

csrc

フレームに表示するURL。

cname

NAME属性の値。

cmarginwidth

MARGINWIDTH属性の値。

cscrolling

SCROLLING属性の値。

cnoresize

このパラメータの値がNULLでない場合、NORESIZE属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<FRAME SRC="csrc" NAME="cname" MARGINWIDTH="cmarginwidth" MARGINHEIGHT="cmarginheight" SCROLLING="cscrolling" NORESIZE cattributes>

FRAMESETCLOSEプロシージャ

このプロシージャは、フレームセット・セクションを終了する</FRAMESET>タグを生成します。フレームセット・セクションの開始を示すには、FRAMESETOPENプロシージャを使用します。

構文

HTP.FRAMESETCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</FRAMESET>

FRAMESETOPENプロシージャ

このプロシージャは、フレームセット・セクションを定義する<FRAMESET>タグを生成します。フレームセット・セクションの終了を示すには、FRAMESETCLOSEプロシージャを使用します。

構文

HTP.FRAMESETOPEN(
crows          IN       VARCHAR2   DEFAULT NULL,
ccols          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-45 FRAMESETOPENプロシージャのパラメータ

パラメータ

説明

crows

ROWS属性の値。

ccols

COLS属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<FRAMESET ROWS="crows" COLS="ccols" cattributes>

HEADCLOSEプロシージャ

このプロシージャは、HTMLドキュメントのヘッダー・セクションの終了を示す</HEAD>タグを生成します。HTMLドキュメントのヘッダー・セクションの開始を示すには、HEADOPENプロシージャを使用します。

構文

HTP.HEADCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</HEAD>

HEADERプロシージャ

このプロシージャは、ヘッダーを開始するタグ(<H1>から<H6>)およびそれに対応するヘッダーを終了するタグ(</H1>から</H6>)を生成します。

構文

HTP.HEADER(
nsize          IN       INTEGER,
cheader        IN       VARCHAR2,
calign         IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-46 HEADERプロシージャのパラメータ

パラメータ

説明

nsize

ヘッダー・レベル。1から6の範囲の整数を指定します。

cheader

ヘッダーに表示するテキスト。

calign

ALIGN属性の値。

cnowrap

NOWRAP属性の値。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

HTP.header (1,'Overview');

この例での生成結果は、次のようになります。

<H1>Overview</H1>

HEADOPENプロシージャ

このプロシージャは、HTMLドキュメントのヘッダー・セクションの開始を示す<HEAD>タグを生成します。HTMLドキュメントのヘッダー・セクションの終了を示すには、HEADCLOSEプロシージャを使用します。

構文

HTP.HEADOPEN;

例

このプロシージャでの生成結果は、次のようになります。

<HEAD>

HRプロシージャ

このプロシージャは、HTMLドキュメントに行を生成する<HR>タグを生成します。このサブプログラムの実行内容はLINEプロシージャと同じです。

構文

HTP.HR(
cclear         IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-47 HRプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

csrc

カスタム・イメージを行のソースとして指定するSRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<HR CLEAR="cclear" SRC="csrc" cattributes>

HTMLCLOSEプロシージャ

このプロシージャは、HTMLドキュメントの終了を示す</HTML>タグを生成します。HTMLドキュメントの開始を示すにはHTMLOPENプロシージャを使用します。

構文

HTP.HTMLCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</HTML>

HTMLOPENプロシージャ

このプロシージャは、HTMLドキュメントの開始を示す<HTML>タグを生成します。HTMLドキュメントの終了を示すには、HTMLCLOSEプロシージャを使用します。

構文

HTP.HTMLOPEN;

例

このプロシージャでの生成結果は、次のようになります。

<HTML>

IMGプロシージャ

このプロシージャは、HTMLページ上にイメージをロードするようにブラウザに指示する<IMG>タグを生成します。IMG2プロシージャでも実行内容は同じですが、その場合はcusemapパラメータも使用します。

構文

HTP.IMG(
curl           IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
calt           IN       VARCHAR2   DEFAULT NULL,
cismap         IN       VARCHAR2  DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-48 IMGプロシージャのパラメータ

パラメータ

説明

curl

SRC属性の値。

calign

ALIGN属性の値。

calt

ブラウザがイメージをサポートしない場合に表示する代替テキストを指定するALT属性の値。

cismap

このパラメータの値がNULLでない場合、ISMAP属性がタグに追加されます。この属性は、イメージがイメージ・マップであることを示します。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<IMG SRC="curl" ALIGN="calign" ALT="calt" ISMAP cattributes>

IMG2プロシージャ

このプロシージャは、HTMLページ上にイメージをロードするようにブラウザに指示する<IMG>タグを生成します。IMGプロシージャでも実行内容は同じですが、cusemapパラメータは使用しません。

構文

HTP.IMG2(
curl           IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
calt           IN       VARCHAR2   DEFAULT NULL,
cismap         IN       VARCHAR2  DEFAULT NULL,
cusemap        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-49 IMG2プロシージャのパラメータ

パラメータ

説明

curl

SRC属性の値。

calign

ALIGN属性の値。

calt

ブラウザがイメージをサポートしない場合に表示する代替テキストを指定するALT属性の値。

cismap

このパラメータの値がNULLでない場合、ISMAP属性がタグに追加されます。この属性は、イメージがイメージ・マップであることを示します。

cusemap

クライアント側のイメージ・マップを指定するUSEMAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<IMG SRC="curl" ALIGN="calign" ALT="calt" ISMAP USEMAP="cusemap" cattributes>

ISINDEXプロシージャ

このプロシージャは、「値を入力してください」などのプロンプト・テキストが表示される単一の入力フィールドを作成し、その値をページまたはプログラムのURLに送信します。

構文

HTP.ISINDEX(
cprompt        IN       VARCHAR2    DEFAULT NULL,
curl           IN       VARCHAR2    DEFAULT NULL);

パラメータ

表208-50 ISINDEXプロシージャのパラメータ

パラメータ

説明

cprompt

PROMPT属性の値。

curl

HREF属性の値。

例

このプロシージャでの生成結果は、次のようになります。

<ISINDEX PROMPT="cprompt" HREF="curl">

ITALICプロシージャ

このプロシージャは、ブラウザにテキストをイタリックとして表示させる<I>および</I>タグを生成します。

構文

HTP.ITALIC(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-51 ITALICプロシージャのパラメータ

パラメータ

説明

ctext

イタリックで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<I cattributes>ctext</I>

KBDプロシージャ

このプロシージャは、ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。このサブプログラムの実行内容はKEYBOARDプロシージャと同じです。

構文

HTP.KBD(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-52 KBDプロシージャのパラメータ

パラメータ

説明

ctext

等幅で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<KBD cattributes>ctext</KBD>

KEYBOARDプロシージャ

このプロシージャは、ブラウザにテキストを等幅フォントで表示させる<KBD>および</KBD>タグを生成します。このサブプログラムの実行内容はKBDプロシージャと同じです。

構文

HTP.KEYBOARD(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-53 KEYBOARDプロシージャのパラメータ

パラメータ

説明

ctext

等幅で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<KBD cattributes>ctext</KBD>

LINEプロシージャ

このプロシージャは、HTMLドキュメントに行を生成する<HR>タグを生成します。このサブプログラムの実行内容はHRプロシージャと同じです。

構文

HTP.LINE(
cclear         IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-54 LINEプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

csrc

カスタム・イメージを行のソースとして指定するSRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<HR CLEAR="cclear" SRC="csrc" cattributes>

LINKRELプロシージャ

このプロシージャは、アンカーからターゲットへのハイパーテキスト・リンクによって記述される関係を示す、REL属性を指定した<LINK>タグを生成します。HREF属性が存在する場合にのみ使用されます。実行内容は、LINKREVプロシージャの反対です。このタグは、ドキュメント間の関係を示しますが、リンクは作成しません。リンクを作成するには、ANCHORプロシージャを使用します。

構文

HTP.LINKREL(
crel           IN       VARCHAR2,
curl           IN       VARCHAR2,
ctitle         IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-55 LINKRELプロシージャのパラメータ

パラメータ

説明

crel

REL属性の値。

curl

URL属性の値。

ctitle

TITLE属性の値。

例

このプロシージャでの生成結果は、次のようになります。

<LINK REL="crel" HREF="curl" TITLE="ctitle">

LINKREVプロシージャ

このプロシージャは、ターゲットからアンカーへのハイパーテキスト・リンクによって記述された関係を示すREV属性を指定した、<LINK>タグを生成します。実行内容は、LINKRELプロシージャの反対です。このタグは、ドキュメント間の関係を示しますが、リンクは作成しません。リンクを作成するには、ANCHORプロシージャを使用します。

構文

HTP.LINKREV(
crev           IN       VARCHAR2,
curl           IN       VARCHAR2,
ctitle         IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-56 LINKREVプロシージャのパラメータ

パラメータ

説明

crel

REV属性の値。

curl

URL属性の値。

ctitle

TITLE属性の値。

例

このプロシージャでの生成結果は、次のようになります。

<LINK REV="crev" HREF="curl" TITLE="ctitle">

LISTHEADERプロシージャ

このプロシージャは、リストの先頭にHTMLタグを印刷する<LH>および</LH>タグを生成します。

構文

HTP.LISTHEADER(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-57 LISTHEADERプロシージャのパラメータ

パラメータ

説明

ctext

<LH>および</LH>間に配置するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<LH cattributes>ctext</LH>

LISTINGCLOSEプロシージャ

このプロシージャは、HTMLページの本体にある固定幅テキスト・セクションの終了を示す</LISTING>タグを生成します。HTMLページの本体にある固定幅テキスト・セクションの開始を示すには、LISTINGOPENプロシージャを使用します。

構文

HTP.LISTINGCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</LISTING>

LISTINGOPENプロシージャ

このプロシージャは、HTMLページの本体にある固定幅テキスト・セクションの開始を示す<LISTING>タグを生成します。HTMLページの本体にある固定幅テキスト・セクションの終了を示すには、LISTINGCLOSEプロシージャを使用します。

構文

HTP.LISTINGOPEN;

例

このプロシージャでの生成結果は、次のようになります。

<LISTING>

LISTITEMプロシージャ

このプロシージャは、リスト項目を示す<LI>タグを生成します。

構文

HTP.LISTITEM(
ctext          IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cdingbat       IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-58 LISTITEMプロシージャのパラメータ

パラメータ

説明

ctext

リスト項目のテキスト。

cclear

CLEAR属性の値。

cdingbat

DINGBAT属性の値。

csrc

SRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<LI CLEAR="cclear" DINGBAT="cdingbat" SRC="csrc" cattributes>ctext

MAILTOプロシージャ

このプロシージャは、メール・アドレス引数の前にmailtoが付加されたHREFを指定した<A>タグを生成します。

構文

HTP.MAILTO(
caddress       IN       VARCHAR2,
ctext          IN       VARCHAR2,
cname          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-59 MAILTOプロシージャのパラメータ

パラメータ

説明

caddress

受信者の電子メール・アドレス。

ctext

リンクのクリック可能な部分。

cname

NAME属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<A HREF="mailto:caddress" NAME="cname" cattributes>ctext</A>

たとえば、次のように入力したとします。

HTP.mailto('pres@white_house.gov','Send Email to the President');

生成結果は、次のようになります。

<A HREF="mailto:pres@white_house.gov">Send Email to the President</A>

MAPCLOSEプロシージャ

このプロシージャは、クライアント側のイメージ・マップの領域セットの終了を示す</MAP>タグを生成します。クライアント側のイメージ・マップにおける領域セットの開始を示すには、MAPOPENプロシージャを使用します。

構文

HTP.MAPCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</MAP>

MAPOPENプロシージャ

このプロシージャは、クライアント側のイメージ・マップの領域セットの開始を示す<MAP>タグを生成します。クライアント側のイメージ・マップにおける領域セットの終了を示すには、MAPCLOSEプロシージャを使用します。

構文

HTP.MAPOPEN(
cname          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-60 MAPOPENプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<MAP NAME="cname" cattributes>

MENULISTCLOSEプロシージャ

このプロシージャは、項目ごとに行を示すリストを終了する</MENU>タグを生成します。このリストを開始するには、MENULISTOPENプロシージャを使用します。このリストの項目は、順序付けられていないリストよりもコンパクトに表示されます。LISTITEMプロシージャは、メニュー・リストのリスト項目を定義します。

構文

HTP.MENULISTCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</MENU>

MENULISTOPENプロシージャ

このプロシージャは、項目ごとに行を示すリストを開始する<MENU>タグを生成します。このリストを終了するには、MENULISTCLOSEプロシージャを使用します。リストの項目は、順序付けられていないリストよりもコンパクトに表示されます。LISTITEMプロシージャは、メニュー・リストのリスト項目を定義します。

構文

HTP.MENULISTOPEN;

例

このプロシージャでの生成結果は、次のようになります。

<MENU>

METAプロシージャ

このプロシージャは、ドキュメントに関するメタ情報の埋込みとHTTPヘッダーの値の指定を行う<META>タグを生成します。たとえば、有効期限、キーワードおよび作成者を指定できます。

構文

HTP.META(
chttp_equiv    IN       VARCHAR2,
cname          IN       VARCHAR2,
ccontent       IN       VARCHAR2);

パラメータ

表208-61 METAプロシージャのパラメータ

パラメータ

説明

chttp_equiv

CHTTP_EQUIV属性の値。

cname

NAME属性の値。

ccontent

CONTENT属性の値。

例

このプロシージャでの生成結果は、次のようになります。

<META HTTP-EQUIV="chttp_equiv" NAME ="cname" CONTENT="ccontent">

たとえば、次のように入力したとします。

HTP.meta ('Refresh', NULL, 120);

生成結果は、次のようになります。

<META HTTP-EQUIV="Refresh" CONTENT=120>

これにより、一部のWebブラウザでは、現在のURLが120秒ごとに自動的に再ロードされます。

NLプロシージャ

このプロシージャは、テキストの新しい行を開始する<BR>タグを生成します。このプロシージャの実行内容はBRプロシージャと同じです。

構文

HTP.NL(
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-62 NLプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<BR CLEAR="cclear" cattributes>

NOBRプロシージャ

このプロシージャは、テキスト・セクションの改行をオフにする<NOBR>および</NOBR>タグを生成します。

構文

HTP.NOBR(
ctext        IN        VARCHAR2);

パラメータ

表208-63 NOBRプロシージャのパラメータ

パラメータ

説明

ctext

1行で表示されるテキスト。

例

このプロシージャでの生成結果は、次のようになります。

<NOBR>ctext</NOBR>

NOFRAMESCLOSEプロシージャ

このプロシージャは、フレームなしセクションの終了を示す</NOFRAMES>タグを生成します。フレームなしセクションの開始を示すには、FRAMESETOPENプロシージャを使用します。「FRAMEプロシージャ」、「FRAMESETOPENプロシージャ」および「FRAMESETCLOSEプロシージャ」も参照してください。

構文

HTP.NOFRAMESCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</NOFRAMES>

NOFRAMESOPENプロシージャ

このプロシージャは、フレームなしセクションの開始を示す<NOFRAMES>タグを生成します。フレームなしセクションの終了を示すには、FRAMESETCLOSEプロシージャを使用します。「FRAMEプロシージャ」、「FRAMESETOPENプロシージャ」および「FRAMESETCLOSEプロシージャ」も参照してください。

構文

HTP.NOFRAMESOPEN;

例

このプロシージャでの生成結果は、次のようになります。

<NOFRAMES>

OLISTCLOSEプロシージャ

このプロシージャは、順序付けられたリストの終了を示す</OL>タグを生成します。順序付けられたリストには、番号付けされた項目リストが表示されます。このリストの開始を示すには、OLISTOPENプロシージャを使用します。番号付けされた項目を追加するには、LISTITEMプロシージャを使用します。

構文

HTP.OLISTCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</OL>

OLISTOPENプロシージャ

このプロシージャは、順序付けられたリストの開始を示す<OL>タグを生成します。順序付けられたリストには、番号付けされた項目リストが表示されます。このリストの終了を示すには、OLISTCLOSEプロシージャを使用します。番号付けされた項目を追加するには、LISTITEMプロシージャを使用します。

構文

HTP.OLISTOPEN(
cclear         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-64 OLISTOPENプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cwrap

WRAP属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<OL CLEAR="cclear" WRAP="cwrap" cattributes>

PARAプロシージャ

このプロシージャは、後置テキストを1つのパラグラフとしてフォーマットする<P>タグを生成します。このタグに属性を追加するには、PARAGRAPHプロシージャを使用します。

構文

HTP.PARA;

例

このプロシージャでの生成結果は、次のようになります。

<P>

PARAGRAPHプロシージャ

このプロシージャは、PARAプロシージャで作成した<P>タグへの属性の追加に使用できます。

構文

HTP.PARAGRAPH(
calign         IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-65 PARAGRAPHプロシージャのパラメータ

パラメータ

説明

calign

ALIGN属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<P ALIGN="calign" NOWRAP CLEAR="cclear" cattributes>

PARAMプロシージャ

このプロシージャは、Javaアプレットにパラメータの値を指定する<PARAM>タグを生成します。この値でHTML変数を参照できます。WebページからJavaアプレットを起動するには、APPLETOPENプロシージャを使用します。目的の各名前/値ペアに対しては1つのPARAMプロシージャを使用し、アプレットの起動を終了するにはAPPLETCLOSEプロシージャを使用します。

構文

HTP.PARAM(
cname          IN       VARCHAR2
cvalue         IN       VARCHAR2);

パラメータ

表208-66 PARAMプロシージャのパラメータ

パラメータ

説明

cname

NAME属性の値。

cvalue

VALUE属性の値。

例

このプロシージャでの生成結果は、次のようになります。

<PARAM NAME=cname VALUE="cvalue">

PLAINTEXTプロシージャ

このプロシージャは、タグで囲んだテキストを固定幅でブラウザに表示させる、<PLAINTEXT>および</PLAINTEXT>タグを生成します。

構文

HTP.PLAINTEXT(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-67 PLAINTEXTプロシージャのパラメータ

パラメータ

説明

ctext

固定幅フォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<PLAINTEXT cattributes>ctext</PLAINTEXT>

PRECLOSEプロシージャ

このプロシージャは、HTMLページの本体にある事前フォーマットされたテキスト・セクションの終了を示す</PRE>タグを生成します。HTMLページの本体にある事前フォーマットされたテキスト・セクションの開始を示すには、PREOPENプロシージャを使用します。

構文

HTP.PRECLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</PRE>

PREOPENプロシージャ

このプロシージャは、HTMLページの本体にある事前フォーマットされたテキスト・セクションの開始を示す<PRE>タグを生成します。HTMLページの本体にある事前フォーマットされたテキスト・セクションの終了を示すには、PRECLOSEプロシージャを使用します。

構文

HTP.PREOPEN(
cclear         IN       VARCHAR2   DEFAULT NULL,
cwidth         IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-68 PREOPENプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cwidth

WIDTH属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<PRE CLEAR="cclear" WIDTH="cwidth" cattributes>

PRINTプロシージャ

これらのプロシージャは、指定されたパラメータを、\n改行文字で終了する文字列として生成します。PRNプロシージャでも実行内容は同じですが、その場合は改行文字では終わりません。

構文

HTP.PRINT (
cbuf      IN       VARCHAR2);

HTP.PRINT (
dbuf      IN       DATE);

HTP.PRINT (
nbuf      IN       NUMBER);

パラメータ

表208-69 PRINTプロシージャのパラメータ

パラメータ

説明

cbuf

生成する文字列(改行で終了)。

dbuf

生成する文字列(改行で終了)。

nbuf

生成する文字列(改行で終了)。

使用上の注意

- \n文字は、<BR>と同じではありません。\n文字はHTMLソースの書式を設定しますが、ブラウザでのHTMLソースの表示には反映されません。ブラウザでのHTMLソースの表示を制御するには、<BR>を使用します。

- これらのプロシージャは、ファンクションで同等のものがありません。

PRINTSプロシージャ

このプロシージャは、文字列を生成し、後続の文字列を対応するエスケープ・シーケンスで置き換えます。

- <は&lt;

- >は&gt;

- "は&quot;

- &は&amp;

置き換えないと、特殊文字はHTML制御文字と解釈され、文字化けして出力されます。このプロシージャおよびPSプロシージャの実行内容はPRNプロシージャと同じですが、文字が置換されます。

構文

HTP.PRINTS (
ctext      IN       VARCHAR2);

パラメータ

表208-70 PRINTSプロシージャのパラメータ

パラメータ

説明

ctext

文字の置換を実行する文字列。

使用上の注意

このプロシージャは、HTFファンクションで同等のものがありません(HTFの実装は、「使用上の注意」を参照)。

PRNプロシージャ

このプロシージャは、指定されたパラメータを文字列として生成します。PRINTプロシージャとは異なり、この文字列はn改行文字で終わりません。

構文

HTP.PRN (
cbuf      IN       VARCHAR2);

HTP.PRN (
dbuf      IN       DATE);

HTP.PRN (
nbuf      IN       NUMBER);

パラメータ

表208-71 PRNプロシージャのパラメータ

パラメータ

説明

cbuf

生成する文字列(改行で終了しない)。

dbuf

生成する文字列(改行で終了しない)。

nbuf

生成する文字列(改行で終了しない)。

使用上の注意

これらのプロシージャは、ファンクションで同等のものがありません。

PSプロシージャ

このプロシージャは、文字列を生成し、後続の文字列を対応するエスケープ・シーケンスで置き換えます。

- <は&lt;

- >は&gt;

- "は&quot;

- &は&amp;

置き換えないと、特殊文字はHTML制御文字と解釈され、文字化けして出力されます。このプロシージャおよびPRINTSプロシージャの実行内容はPRNプロシージャと同じですが、文字が置換されます。

構文

HTP.PS (
ctext      IN       VARCHAR2);

パラメータ

表208-72 PSプロシージャのパラメータ

パラメータ

説明

ctext

文字の置換を実行する文字列。

使用上の注意

このプロシージャは、HTFファンクションで同等のものがありません(HTFの実装は、「使用上の注意」を参照)。

Sプロシージャ

このプロシージャは、タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<S>および</S>タグを生成します。このファンクションの実行内容はSTRIKEプロシージャと同じです。

構文

HTP.S (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-73 Sプロシージャのパラメータ

パラメータ

説明

ctext

取消し線が引かれた形式で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<S cattributes>ctext</S>

SAMPLEプロシージャ

このプロシージャは、タグで囲んだテキストを等幅フォントまたは定義されたスタイルでブラウザに表示させる、<SAMP>および</SAMP>タグを生成します。

構文

HTP.SAMPLE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-74 SAMPLEプロシージャのパラメータ

パラメータ

説明

ctext

等幅フォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<SAMP cattributes>ctext</SAMP>

SCRIPTプロシージャ

このプロシージャは、JavaScript、VBscriptなどの言語で書かれたスクリプトを含む<SCRIPT>および</SCRIPT>タグを生成します。

構文

HTP.SCRIPT (
cscript        IN       VARCHAR2,
clanguage      IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-75 SCRIPTプロシージャのパラメータ

パラメータ

説明

cscript

スクリプトのテキスト。これは、スクリプト自体を構成するテキストで、スクリプトを含むファイルの名前ではありません。

clanguage

スクリプトの記述に使用した言語。このパラメータを省略した場合は、ユーザーの使用するブラウザによってスクリプト記述言語が決定されます。

例

このプロシージャでの生成結果は、次のようになります。

<SCRIPT LANGUAGE=clanguage>cscript</SCRIPT>

たとえば、次のように入力したとします。

HTP.script ('Erupting_Volcano', 'Javascript');

生成結果は、次のようになります。

<SCRIPT LANGUAGE=Javascript>"script text here"</SCRIPT>

この結果、タグで囲んだスクリプトをブラウザで実行できます。

SMALLプロシージャ

このプロシージャは、タグで囲んだテキストを小さいフォントでブラウザに表示させる、<SMALL>および</SMALL>タグを生成します。

構文

HTP.SMALL (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-76 SMALLプロシージャのパラメータ

パラメータ

説明

ctext

小さいフォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<SMALL cattributes>ctext</SMALL>

STRIKEプロシージャ

このプロシージャは、タグで囲んだテキストを取消し線が引かれた形式でブラウザに表示させる、<STRIKE>および</STRIKE>タグを生成します。このプロシージャの実行内容はSプロシージャと同じです。

構文

HTP.STRIKE (
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-77 STRIKEプロシージャのパラメータ

パラメータ

説明

ctext

取消し線が引かれた形式で表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<STRIKE cattributes>ctext</STRIKE>

STRONGプロシージャ

このプロシージャは、タグで囲んだテキストを太字または定義されたスタイルでブラウザに表示させる、<STRONG>および</STRONG>タグを生成します。

構文

HTP.STRONG(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-78 STRONGプロシージャのパラメータ

パラメータ

説明

ctext

強調するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<STRONG cattributes>ctext</STRONG>

STYLEプロシージャ

このプロシージャは、Webページ内にスタイルシートを含める<STYLE>および</STYLE>タグを生成します。スタイルシートの詳細は、http://www.w3.orgを参照してください。この機能は、HTMLバージョン2.0以下のみをサポートするブラウザとの互換性はありません。これらのブラウザでは、このタグは無視されます。

構文

HTP.STYLE(
cstyle          IN       VARCHAR2);

パラメータ

表208-79 STYLEプロシージャのパラメータ

パラメータ

説明

cstyle

含めるスタイル情報。

例

このプロシージャでの生成結果は、次のようになります。

<STYLE>cstyle</STYLE>

SUBプロシージャ

このプロシージャは、タグで囲んだテキストを下付き文字としてブラウザに表示させる、<SUB>および</SUB>タグを生成します。

構文

HTP.SUB(
ctext          IN       VARCHAR2,
calign         in       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-80 SUBプロシージャのパラメータ

パラメータ

説明

ctext

下付き文字で表示するテキスト。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<SUB ALIGN="calign" cattributes>ctext</SUB>

SUPプロシージャ

このプロシージャは、タグで囲んだテキストを上付き文字としてブラウザに表示させる、<SUP>および</SUP>タグを生成します。

構文

HTP.SUP(
ctext          IN       VARCHAR2,
calign         in       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-81 SUPプロシージャのパラメータ

パラメータ

説明

ctext

上付き文字で表示するテキスト。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<SUP ALIGN="calign" cattributes>ctext</SUP>

TABLECAPTIONプロシージャ

このプロシージャは、HTML表内にキャプションを配置する<CAPTION>および</CAPTION>タグを生成します。

構文

HTP.TABLECAPTION(
ccaption       IN       VARCHAR2,
calign         in       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-82 TABLECAPTIONプロシージャのパラメータ

パラメータ

説明

ctext

キャプションのテキスト。

calign

ALIGN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<CAPTION ALIGN="calign" cattributes>ccaption</CAPTION>

TABLECLOSEプロシージャ

このプロシージャは、HTML表の終了を示す</TABLE>タグを生成します。HTML表の開始を示すには、TABLEOPENプロシージャを使用します。

構文

HTP.TABLECLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</TABLE>

TABLEDATAプロシージャ

このプロシージャは、HTML表内のセルにデータを挿入する<TD>および</TD>タグを生成します。

構文

HTP.TABLEDATA(
cvalue         IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
cdp            IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
crowspan       IN       VARCHAR2   DEFAULT NULL,
ccolspan       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-83 TABLEDATAプロシージャのパラメータ

パラメータ

説明

cvalue

表内のセルのデータ。

calign

ALIGN属性の値。

cdp

DP属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

ccolspan

COLSPAN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TD ALIGN="calign" DP="cdp" ROWSPAN="crowspan" COLSPAN="ccolspan" NOWRAP cattributes>cvalue</TD>

TABLEHEADERプロシージャ

このプロシージャは、HTML表内にヘッダー・セルを挿入する<TH>および</TH>タグを生成します。行のテキストが通常は太字で表示される点を除けば、<TH>タグは<TD>タグと同様です。

構文

HTP.TABLEHEADER(
cvalue         IN       VARCHAR2   DEFAULT NULL,
calign         IN       VARCHAR2   DEFAULT NULL,
cdp            IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
crowspan       IN       VARCHAR2   DEFAULT NULL,
ccolspan       IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-84 TABLEHEADERプロシージャのパラメータ

パラメータ

説明

cvalue

表内のセルのデータ。

calign

ALIGN属性の値。

cdp

DP属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

crispen

ROWSPAN属性の値。

ccolspan

COLSPAN属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TH ALIGN="calign" DP="cdp" ROWSPAN="crowspan" COLSPAN="ccolspan" NOWRAP cattributes>cvalue</TH>

TABLEOPENプロシージャ

このプロシージャは、HTML表の開始を示す<TABLE>タグを生成します。HTML表の終了を示すには、TABLECLOSEプロシージャを使用します。

構文

HTP.TABLEOPEN(
cborder        IN       VARCHAR2   DEFAULT NULL
calign         IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cclear         IN       VARCHAR2   DEFAULT NULL
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-85 TABLEOPENプロシージャのパラメータ

パラメータ

説明

border

BORDER属性の値。

calign

ALIGN属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cclear

CLEAR属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TABLE "cborder" NOWRAP ALIGN="calign" CLEAR="cclear" cattributes>

TABLEROWCLOSEプロシージャ

このプロシージャは、HTML表の新しい行の終了を示す</TR>タグを生成します。新しい行の開始を示すには、TABLEROWOPENプロシージャを使用します。

構文

HTP.TABLEROWCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</TABLE>

TABLEROWOPENプロシージャ

このプロシージャは、HTML表の新しい行の開始を示す<TR>タグを生成します。新しい行の終了を示すには、TABLEROWCLOSEプロシージャを使用します。

構文

HTP.TABLEROWOPEN(
calign         IN       VARCHAR2   DEFAULT NULL,
cvalign        IN       VARCHAR2   DEFAULT NULL,
cdp            IN       VARCHAR2   DEFAULT NULL,
cnowrap        IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-86 TABLEROWOPENプロシージャのパラメータ

パラメータ

説明

calign

ALIGN属性の値。

cvalign

VALIGN属性の値。

cdp

DP属性の値。

cnowrap

このパラメータの値がNULLでない場合、NOWRAP属性がタグに追加されます。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<<TR ALIGN="calign" VALIGN="cvalign" DP="cdp" NOWRAP cattributes>

TELETYPEプロシージャ

このプロシージャは、タグで囲んだテキストをクーリエなどの固定幅のタイプライター・フォントでブラウザに表示させる、<TT>および</TT>タグを生成します。

構文

HTP.TELETYPE(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-87 TELETYPEプロシージャのパラメータ

パラメータ

説明

ctext

固定幅のタイプライター・フォントで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<TT cattributes>ctext</TT>

TITLEプロシージャ

このプロシージャは、ブラウザ・ウィンドウのタイトルバーに表示するテキストを指定する<TITLE>および</TITLE>タグを生成します。

構文

HTP.TITLE(
ctitle          IN       VARCHAR2);

パラメータ

表208-88 TITLEプロシージャのパラメータ

パラメータ

説明

ctitle

ブラウザ・ウィンドウのタイトルバーに表示するテキスト。

例

このプロシージャでの生成結果は、次のようになります。

<TITLE>ctitle</TITLE>

ULISTCLOSEプロシージャ

このプロシージャは、順序付けられていないリストの終了を示す</UL>タグを生成します。順序付けられていないリストには、ビュレット付きの項目が表示されます。順序付けられていないリストの開始を示すには、ULISTOPENプロシージャを使用します。リストに項目を追加する場合は、LISTITEMプロシージャを使用します。

構文

HTP.ULISTCLOSE;

例

このプロシージャでの生成結果は、次のようになります。

</TABLE>

ULISTOPENプロシージャ

このプロシージャは、順序付けられていないリストの開始を示す<UL>タグを生成します。順序付けられていないリストには、ビュレット付きの項目が表示されます。順序付けられていないリストの終了を示すには、ULISTCLOSEプロシージャを使用します。リストに項目を追加する場合は、LISTITEMプロシージャを使用します。

構文

HTP.ULISTOPEN(
cclear         IN       VARCHAR2   DEFAULT NULL,
cwrap          IN       VARCHAR2   DEFAULT NULL,
cdingbat       IN       VARCHAR2   DEFAULT NULL,
csrc           IN       VARCHAR2   DEFAULT NULL,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-89 ULISTOPENプロシージャのパラメータ

パラメータ

説明

cclear

CLEAR属性の値。

cwrap

WRAP属性の値。

cdingbat

DINGBAT属性の値。

csrc

SRC属性の値。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<UL CLEAR="cclear" WRAP="cwrap" DINGBAT="cdingbat" SRC="csrc" cattributes>

UNDERLINEプロシージャ

このプロシージャは、タグで囲んだテキストを下線付きでブラウザに表示させる、<U>および</U>タグを生成します。

構文

HTP.UNDERLINE(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-90 UNDERLINEプロシージャのパラメータ

パラメータ

説明

ctext

下線付きで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<U cattributes>ctext</U>

VARIABLEプロシージャ

このプロシージャは、タグで囲んだテキストをイタリックまたは定義されたスタイルでブラウザに表示させる、<VAR>および</VAR>タグを生成します。

構文

HTP.VARIABLE(
ctext          IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL);

パラメータ

表208-91 VARIABLEプロシージャのパラメータ

パラメータ

説明

ctext

イタリックで表示するテキスト。

cattributes

その他の属性。指定内容がそのままタグに組み込まれます。

例

このプロシージャでの生成結果は、次のようになります。

<VAR cattributes>ctext</VAR>

WBRプロシージャ

このプロシージャは、NOBRテキスト・セクション内に非強制改行を挿入する<WBR>タグを生成します。

構文

HTP.WBR;

例

このプロシージャでの生成結果は、次のようになります。

<WBR>

209 ORD_DICOM

このOracle Multimediaパッケージでは、ORDDicomオブジェクト・タイプではなく、BLOBまたはBFILEに格納されたDigital Imaging and Communications in Medicine(DICOM)コンテンツの管理および操作をサポートしています。ORDDicomオブジェクト・タイプの詳細は、『Oracle Multimedia DICOM開発者ガイド』を参照してください。

DICOM規格は、放射線の画像と通信に関する主要な規格で、放射線装置を扱う主要なメーカーはこの規格に準拠する必要があります。Oracle Multimedia DICOMでは、DICOM形式の医療イメージや、シングルフレームとマルチフレームのイメージ、波形、3-Dボリュームのスライス、ビデオ・セグメント、構造化レポートなど、その他のコンテンツのネイティブのサポートを提供しています。

Oracle Multimedia ORD_DICOMパッケージは、DICOMリレーショナル・インタフェースによって、DICOMコンテンツからカスタマイズ可能なXMLドキュメントに標準および専用のDICOMメタデータを抽出したり、形式変換やサムネイル・イメージ生成などのイメージ処理操作を実行したり、新規DICOMコンテンツを作成するファンクションとプロシージャを提供しています。また、このOracle Multimediaパッケージでは、一連のユーザー指定の適合性ルールに基づいてDICOMコンテンツの適合性をチェックしたり、ユーザー定義のルール(無名にする一連の属性、およびそれらの属性を無名にする場合に実行される処理を指定するルール)に基づいてDICOMコンテンツを無名にするファンクションとプロシージャも提供されています。

さらに、Oracle Multimedia ORD_DICOMパッケージは、DICOMデータ・モデル・ユーティリティ・インタフェースによって、DICOMデータ・モデル・リポジトリを操作するファンクションとプロシージャも提供しています。DICOMデータ・モデル・ユーティリティ・インタフェースの詳細は、『Oracle Multimedia DICOM開発者ガイド』を参照してください。

- ORD_DICOMのドキュメント

ORD_DICOMのドキュメント

Oracle Multimediaのコンテキストでのこのパッケージの詳細は、『Oracle Multimedia DICOM開発者ガイド』のORD_DICOMに関する項を参照してください。

210 ORD_DICOM_ADMIN

このOracle Multimediaパッケージは、Oracle Multimedia Digital Imaging and Communications in Medicine(DICOM)の管理者がOracle Multimedia DICOMデータ・モデル・リポジトリを保守する場合に使用します。

DICOMデータ・モデル・リポジトリは、ドキュメントのコレクションです。文書の初期設定は、インストール時にロードされます。インストール後、DICOM管理者は、Oracle Multimedia ORD_DICOM_ADMINパッケージのデータ・モデル・リポジトリAPIにあるプロシージャとファンクションを使用して、ドキュメント・コンテンツを取得し、データ・モデル・リポジトリのドキュメントを挿入、編集、削除することができます。

- ORD_DICOM_ADMINのドキュメント

ORD_DICOM_ADMINのドキュメント

Oracle Multimediaのコンテキストでのこのパッケージの詳細は、『Oracle Multimedia DICOM開発者ガイド』のORD_DICOM_ADMINに関する項を参照してください。

211 OWA_CACHE

OWA_CACHEパッケージは、PL/SQL GatewayキャッシュでPL/SQL Webアプリケーションの性能を向上できるようにするためのインタフェースを提供します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_CACHEの使用方法

- 定数

- OWA_CACHEサブプログラムの要約

OWA_CACHEの使用方法

- 定数

定数

- system_level CONSTANT VARCHAR(6) := 'SYSTEM';

- user_level CONSTANT VARCHAR(4) := 'USER';

OWA_CACHEサブプログラムの要約

表211-1 OWA_CACHEパッケージのサブプログラム

サブプログラム

説明

DISABLEプロシージャ

指定した特定の要求に対するキャッシュを使用禁止にします。

GET_ETAGファンクション

キャッシュされた内容に関連するタグを戻します(検証テクニック・モデルのみで使用)。

GET_LEVELファンクション

キャッシュ・レベルを戻します(検証テクニック・モデルのみで使用)。

SET_CACHEプロシージャ

検証モデル・キャッシュ・タイプのキャッシュ・ヘッダーを設定します。

SET_EXPIRESプロシージャ

期限切れモデル・キャッシュ・タイプのキャッシュ・ヘッダーを設定します。

SET_NOT_MODIFIEDプロシージャ

変更なしキャッシュ・ヒットのヘッダーを設定します(検証テクニック・モデルのみで使用)。

SET_SURROGATE_CONTROLプロシージャ

Webキャッシュのサロゲート制御ヘッダーに使用するヘッダーを設定します。

DISABLEプロシージャ

このプロシージャは、指定した特定の要求に対するキャッシュを使用禁止にします。

構文

OWA_CACHE.DISABLE;

GET_ETAGファンクション

キャッシュされた内容に関連するタグを戻します。検証方式でのみ使用します。

構文

OWA_CACHE.GET_ETAG
RETURN VARCHAR2;

戻り値

キャッシュ・ヒットのタグ。それ以外はNULLが戻されます。

GET_LEVELファンクション

キャッシュ・レベルを返します。検証方式モデルでのみ使用します。

構文

OWA_CACHE.GET_LEVEL
RETURN VARCHAR2;

戻り値

キャッシュ・ヒットのキャッシュ・レベル文字列('USER'または'SYSTEM')。それ以外はNULLが戻されます。

SET_CACHEプロシージャ

検証モデル・キャッシュ・タイプのキャッシュ・ヘッダーを設定します。

構文

OWA_CACHE.SET_CACHE(
p_etag        IN       VARCHAR2,
p_level       IN       VARCHAR2);

パラメータ

表211-2 SET_CACHEプロシージャのパラメータ

パラメータ

説明

p_etag

指定した内容に関連するetag。

p_level

キャッシュ・レベル('USER'または'SYSTEM')。

例外

次の場合はVALUE_ERRORがスローされます。

- p_etagが55より大きい場合

- p_levelが'USER'または'SYSTEM'ではない場合

SET_EXPIRESプロシージャ

このプロシージャは、期限切れモデル・キャッシュ・タイプのキャッシュ・ヘッダーを設定します。

構文

OWA_CACHE.SET_EXPIRES(
p_expires      IN       NUMBER,
p_level        IN       VARCHAR2);

パラメータ

表211-3 SET_EXPIRESプロシージャのパラメータ

パラメータ

説明

p_expires

指定した内容の有効期間(分)。

p_level

キャッシュ・レベル('USER'または'SYSTEM')。

例外

次の場合はVALUE_ERRORがスローされます。

- p_expiresが負の値または0の場合

- p_levelが'USER'または'SYSTEM'ではない場合

- p_expiresが525600(1年)より大きい場合

SET_NOT_MODIFIEDプロシージャ

変更なしキャッシュ・ヒットのヘッダーを設定します。検証方式でのみ使用します。

構文

OWA_CACHE.SET_NOT_MODIFIED;

例外

etagが渡されていない場合は、VALUE_ERRORがスローされます。

SET_SURROGATE_CONTROLプロシージャ

このプロシージャは、Webキャッシュのサロゲート制御ヘッダーに使用するヘッダーを設定します。

構文

OWA_CACHE.SET_SURROGATE_CONTROL(
p_value        IN       VARCHAR2);

パラメータ

表211-4 SET_SURROGATE_CONTROLプロシージャのパラメータ

パラメータ

説明

p_value

サロゲート制御ヘッダーとして渡される値。

例外

p_valueの長さが55よりも長い場合は、VALUE_ERRORがスローされます。

212 OWA_COOKIE

OWA_COOKIEパッケージでは、クライアントのブラウザからHTTP Cookieの送信および取得を行うインタフェースを提供します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_COOKIEの使用方法

- 概要

- タイプ

- ルールおよび制限

- OWA_COOKIEサブプログラムの要約

OWA_COOKIEの使用方法

- 概要

- タイプ

- ルールおよび制限

概要

Cookieとは、HTTPコール間の状態を維持するためにブラウザに送信される不透明な文字列です。状態は、クライアントのセッションの間維持されるか、または期限切れ日が含まれている場合はそれより長く維持されます。システム日は、OWA_CUSTOMパッケージで指定された情報に対して計算されます。

タイプ

このデータ・タイプには、Cookieの名前/値ペアが含まれます。HTTP標準にはオーバーロードされたCookie名を許可する(すなわち同じCookie名に複数の値を関連付けられる)ため、PL/SQL RECORDは特定のCookie名に関連するすべての値を保持します。

TYPE vc_arr IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER.

TYPE COOKIE IS RECORD (
name           VARCHAR2(4000),
vals           vc_arr,
num_vals       INTEGER);

ルールおよび制限

すべてのHTTPヘッダーは、英語およびASCII文字セットで使用する必要があります。ヘッダーがデータベースから生成された場合、それらが英語で作成されていることを確認する必要があります。

OWA_COOKIEサブプログラムの要約

表212-1 OWA_COOKIEパッケージのサブプログラム

サブプログラム

説明

GETファンクション

指定したCookieの値を取得します。

GET_ALLプロシージャ

Cookieの名前/値ペアを取得します。

REMOVEプロシージャ

指定されたCookieを削除します。

SENDプロシージャ

HTTPヘッダーのSet-Cookie行を生成します。

GETファンクション

このファンクションは、指定したCookieに関連付けられた値を戻します。値は、OWA_COOKIE.COOKIEデータ・タイプで戻されます。

構文

OWA_COOKIE.GET(
name           IN       VARCHAR2)
RETURN COOKIE;

パラメータ

表212-2 GETファンクションのパラメータ

パラメータ

説明

name

Cookieの名前。

戻り値

OWA_COOKIE.COOKIEデータ・タイプ。

GET_ALLプロシージャ

このプロシージャは、クライアントのブラウザからすべてのCookie名およびその値を戻します。値は、ブラウザから送信された順序で表示されます。

構文

OWA_COOKIE.GET_ALL(
names          OUT      vc_arr,
vals           OUT      vc_arr,
num_vals       OUT      INTEGER);

パラメータ

表212-3 GET_ALLプロシージャのパラメータ

パラメータ

説明

names

Cookieの名前。

vals

Cookieの値。

num_vals

Cookie/値ペアの数。

REMOVEプロシージャ

このプロシージャは、HTTPヘッダーのSet-Cookie行のexpiresフィールドを01-Jan-1990に設定することにより、Cookieを即時に期限切れにします。このプロシージャは、HTTPヘッダーのコンテキスト内でコールされます。

構文

OWA_COOKIE.REMOVE(
name           IN       VARCHAR2,
val            IN       VARCHAR2,
path           IN       VARCHAR2   DEFAULT NULL);

パラメータ

表212-4 REMOVEプロシージャのパラメータ

パラメータ

説明

name

期限切れするCookieの名前。

val

Cookieの値。

path

(現在は使用されていません。)

SENDプロシージャ

このプロシージャは、Cookieをクライアントに送信するSet-Cookie行を生成します。このプロシージャは、HTTPヘッダーのコンテキスト内で発生します。

構文

OWA_COOKIE.SEND(
name           in       varchar2,
value          in       varchar2,
expires        in       date       DEFAULT NULL,
path           in       varchar2   DEFAULT NULL,
domain         in       varchar2   DEFAULT NULL,
secure         in       varchar2   DEFAULT NULL);

パラメータ

表212-5 SENDプロシージャのパラメータ

パラメータ

説明

name

Cookieの名前。

value

Cookieの値。

expires

Cookieの期限が切れる日付。

path

パス・フィールドの値。

domain

ドメイン・フィールドの値。

secure

このパラメータの値がNULLでない場合、行にはsecureフィールドが追加されます。

213 OWA_CUSTOM

OWA_CUSTOMパッケージは、Global PLSQL Agent Authorizationコールバック・ファンクションを提供します。これは、上書きするOWA_CUSTOMパッケージがない場合に、PLSQL Agentの認証スキームがGLOBALまたはCUSTOMに設定されているときに使用します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_CUSTOMの使用方法

- 定数

- OWA_CUSTOMサブプログラムの要約

OWA_CUSTOMの使用方法

- 定数

定数

- dbms_server_timezone CONSTANT VARCHAR2(3) := 'PST';

- dbms_server_gmtdiff CONSTANT NUMBER := NULL;

OWA_CUSTOMサブプログラムの要約

表213-1 OWA_CUSTOMパッケージのサブプログラム

サブプログラム

説明

AUTHORIZEファンクション

Global PLSQL Agent Authorizationコールバック・ファンクションを提供します。

AUTHORIZEファンクション

このファンクションは、上書きするOWA_CUSTOMパッケージがない場合に、PLSQL Agentの認証スキームがGLOBALまたはCUSTOMに設定されているときに使用します。

構文

OWA_CUSTOM.AUTHORIZE
RETURN BOOLEAN;

214 OWA_IMAGE

OWA_IMAGEパッケージは、ユーザーがイメージ上でクリックした座標にアクセスするためのインタフェースを提供します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_IMAGEサブプログラムの要約

- 概要

- タイプ

- 変数

- 例

- OWA_IMAGEサブプログラムの要約

OWA_IMAGEの使用方法

- 概要

- タイプ

- 変数

- 例

概要

PL/SQLゲートウェイを起動する宛先リンクを持つイメージ・マップがある場合に、このパッケージを使用します。

タイプ

このデータ・タイプ(point)には座標のXおよびYの値が含まれていて、イメージ・マップ上でユーザーがクリックした座標を提供します。次のように定義されます。

TYPE POINT IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER

変数

このTYPE POINTのパッケージ変数(null_point)は、デフォルトのポイント・パラメータとして使用されます。この変数のXおよびYフィールドはいずれもNULLです。

例

CREATE OR REPLACE PROCEDURE process_image
(my_img in OWA_IMAGE.POINT)
AS
x integer := OWA_IMAGE.GET_X(my_img);
y integer := OWA_IMAGE.GET_Y(my_img);
BEGIN
/* process the coordinate */
END

OWA_IMAGEサブプログラムの要約

表214-1 OWA_IMAGEパッケージのサブプログラム

サブプログラム

説明

GET_Xファンクション

pointタイプのX値を取得します。

GET_Yファンクション

pointタイプのY値を取得します。

GET_Xファンクション

このファンクションは、ユーザーがイメージ・マップ上でクリックするポイントのX座標を戻します。

構文

OWA_IMAGE.GET_X(
p        IN        point)
RETURN INTEGER;

パラメータ

表214-2 GET_Xファンクションのパラメータ

パラメータ

説明

p

ユーザーがクリックしたポイント。

戻り値

整数としてのX座標。

GET_Yファンクション

このファンクションは、ユーザーがイメージ・マップ上でクリックするポイントのY座標を戻します。

構文

OWA_IMAGE.GET_Y(
p        IN        point)
RETURN INTEGER;

パラメータ

表214-3 GET_Yファンクションのパラメータ

パラメータ

説明

p

ユーザーがクリックしたポイント。

戻り値

整数としてのY座標。

215 OWA_OPT_LOCK

OWA_OPT_LOCKパッケージには、更新内容の消失を防ぐためのコミット時ロック方策を実行するサブプログラムが含まれています。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_OPT_LOCKの使用方法

- 概要

- タイプ

- OWA_OPT_LOCKサブプログラムの要約

OWA_OPT_LOCKの使用方法

- 概要

- タイプ

概要

OWA_OPT_LOCKパッケージには、更新内容の消失を防ぐためのコミット時ロック方策を実行するサブプログラムが含まれています。

ユーザーが更新しようとしている行が、作業中に他のユーザーによって変更されているかどうかを検査します。

HTTPはステートレス・プロトコルであるため、PL/SQLゲートウェイは、従来型のデータベースのロック構造を使用できません。OWA_OPT_LOCKパッケージには、更新内容の消失問題に対処する方法が2つあります。

- 隠しフィールド方式では、HTMLページの隠しフィールドに前の値を格納します。ユーザーが更新を要求すると、PL/SQLゲートウェイはこれらの値をデータベースの現在の状態と照合します。更新操作は、値が一致した場合にのみ実行されます。この方式を使用するには、owa_opt_lock.store_valuesプロシージャをコールします。

- チェックサム方式では、値そのものではなくチェックサムを格納します。この方式を使用するには、owa_opt_lock.checksumファンクションをコールします。

これらの方式は、コミット時に実行されます。これらの方式では、他のユーザーによる更新の実行は妨げませんが、介入更新が発生した場合に現行の更新を拒否します。

タイプ

このデータ・タイプは、ROWIDを保持するためのPL/SQL表です。

TYPE VCARRAY IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER

これは、OWA_TEXT.VC_ARRデータ・タイプと異なるので注意してください。

OWA_OPT_LOCKサブプログラムの要約

表215-1 OWA_OPT_LOCKパッケージのサブプログラム

サブプログラム

説明

CHECKSUMファンクション

チェックサム値を戻します。

GET_ROWIDファンクション

ROWID値を戻します。

STORE_VALUESプロシージャ

後で検証するために、隠しフィールドに未修正の値を格納します。

VERIFY_VALUESファンクション

格納された値を修正値と照合します。

CHECKSUMファンクション

このファンクションは、指定された文字列または表内の行についてのchecksum値を戻します。表内の行の場合、このファンクションは、行内の列の値を基にしてchecksum値を計算します。このファンクションには2つのバージョンがあります。

1番目のバージョンは、指定された文字列に基づいてchecksumを戻します。これは、データベースによって実行される、純粋な32ビットchecksumで、インターネット1プロトコルに基づいています。

2番目のバージョンは、表内の行の値に基づいてchecksumを戻します。これは、不純な32ビットchecksumで、インターネット1プロトコルに基づいています。

構文

OWA_OPT_LOCK.CHECKSUM(
p_buff        IN       VARCHAR2)
RETURN NUMBER;

OWA_OPT_LOCK.CHECKSUM(
p_owner       IN      VARCHAR2,
p_tname       IN       VARCHAR2,
p_rowid       IN       ROWID)
RETURN NUMBER;

パラメータ

表215-2 CHECKSUMファンクションのパラメータ

パラメータ

説明

p_buff

checksumを計算するnstring。

p_owner

表の所有者。

p_tname

表の名前。

p_rowid

checksum値を計算するp_tname内の行。VCARRAY値を適切なROWIDに変換するには、GET_ROWIDファンクションを使用します。

GET_ROWIDファンクション

このファンクションは、指定されたOWA_OPT_LOCK.VCARRAY DATA TYPEからのROWIDデータ・タイプを戻します。

構文

OWA_OPT_LOCK.GET_ROWID(
p_old_values      IN      vcarray)
RETURN ROWID;

パラメータ

表215-3 GET_ROWIDファンクションのパラメータ

パラメータ

説明

p_old_values

このパラメータは、通常、HTMLフォームから渡されます。

STORE_VALUESプロシージャ

このプロシージャは、後で更新する行の列の値を格納します。この値は、非表示HTMLフォーム要素内に格納されます。

構文

OWA_OPT_LOCK.STORE_VALUES(
p_owner        IN       VARCHAR2,
p_tname        IN       VARCHAR2,
p_rowid        IN       ROWID);

パラメータ

表215-4 STORE_VALUESプロシージャのパラメータ

パラメータ

説明

p_owner

表の所有者。

p_tname

表の名前。

p_rowid

値を格納する行。

使用上の注意

行を更新する前に、これらの値を現在の行の値と比較して、行の値が変更されていないことを確認してください。値が変更されている場合、そのユーザーに警告して、更新を実行するかどうかを判断してもらってください。

このプロシージャは、一連の非表示フォーム要素を生成します。

- 表の所有者に対して1つの非表示フォーム要素が作成されます。要素名は"old_p_tname"です。ここで、p_tnameは表の名前です。要素の値は、所有者名です。

- 表の名前に対して1つの非表示フォーム要素が作成されます。要素名は"old_p_tname"です。ここで、p_tnameは表の名前です。要素の値は、表の名前です。

- 行内の列ごとに1つの要素が作成されます。要素名は"old_p_tname"です。ここで、p_tnameは表の名前です。要素の値は、列の値です。

「VERIFY_VALUESファンクション」も参照してください。

VERIFY_VALUESファンクション

このファンクションは、指定された行の値が最後の問合せ以降に更新されたかどうかを検証します。このファンクションはSTORE_VALUESプロシージャとともに使用します。

構文

OWA_OPT_LOCK.VERIFY_VALUES(
p_old_values IN vcarray)
RETURN BOOLEAN;

パラメータ

表215-5 VERIFY_VALUESファンクションのパラメータ

パラメータ

説明

p_old_values

次の情報を含むPL/SQL表。

- p_old_values(1)は表の所有者を指定。

- p_old_values(2)は表を指定。

- p_old_values(3)は検証する行のROWIDを指定。

残りのインデックスには、表内の列の値が含まれます。

通常、このパラメータは、非表示フォーム要素上に行の値を格納するためにすでにSTORE_VALUESプロシージャをコール済のHTMLフォームから渡されます。

戻り値

他の更新が実行されていない場合はTRUEで、実行されている場合はFALSEになります。

216 OWA_PATTERN

OWA_PATTERNパッケージは、文字列からテキスト・パターンを検索し、一致した文字列を他の文字列と置換するためのインタフェースを提供します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_PATTERNの使用方法

- タイプ

- 使用上の注意

- OWA_PATTERNサブプログラムの要約

OWA_PATTERNの使用方法

- タイプ

- 使用上の注意

タイプ

パターンは、入力および出力パラメータの両方に使用できます。このように、同じ正規表現をOWA_PATTERNファンクション・コールに渡せるので、解析するのは一度で済みます。

- OWA_PATTERN.PATTERN

使用上の注意

OWA_PATTERNサブプログラムがオーバーロードされています。具体的には、6つのバージョンのMATCHと、AMATCHおよびCHANGEが4つずつあります。サブプログラムでは次のパラメータを使用します。

- line - 一致の検査対象となるターゲット。複数行のテキストまたはowa_text.multi_lineデータ・タイプの場合があります。

- pat - サブプログラムがline内で検出しようとするパターン。このパターンには正規表現を含めることができます。owa_pattern.changeファンクションおよびプロシージャでは、このパラメータはfrom_strと呼ばれます。

- flags - 検索で大文字小文字を区別するのか、または置換を全体に対して実行するのかを指定します。

このパッケージのサブプログラムでは正規表現を使用します。正規表現を指定する場合は、一致させる文字列を、各種ワイルドカード・トークンおよび修飾子も含めて作成します。

- ワイルドカード

- 修飾子

- フラグ

ワイルドカード

ワイルドカード・トークンは、それ以外の文字に一致します。

表216-1 OWA_PATTERNパッケージによって認識されるワイルドカード・トークン

トークン

説明

^

改行またはターゲットの先頭に一致します。

$

改行またはターゲットの末尾に一致します。

\n

改行に一致します。

.

改行以外のすべての文字に一致します。

\t

タブに一致します。

\d

数字(0から9)に一致します。

\D

数字以外(0から9以外)に一致します。

\w

言語文字(0から9、aからz、AからZ、または_)に一致します。

\W

非言語文字(0から9、aからz、AからZ、または_以外)に一致します。

\s

空白文字(ブランク、タブまたは改行)に一致します。

\S

非空白文字(ブランク、タブまたは改行以外)に一致します。

\b

単語の境界(\wから\Wの間)に一致します。

\x<HEX>

2つの16進数から構成される現在のキャラクタ・セットの値に一致します。

\<OCT>

2つまたは3つの8進数から構成される現在のキャラクタ・セットの値に一致します。

\

別のケースで使用されない任意の文字が続き、この文字に一致します。

&

CHANGEに対してのみ適用されます。これを使用すると、該当する正規表現に一致した文字列は、それを置換する文字列に組み込まれます。これは他のトークンと異なり、ターゲットに一致させる方法を指定するのではなく、ターゲットを変更する方法を指定します。この詳細は、「CHANGEファンクションおよびプロシージャ」で説明しています。

修飾子

&以外のすべてのトークンは、次の修飾子のいずれかを使用して意味を拡張させることができます。これらの修飾子は、リテラルに適用することもできます。

表216-2 修飾子

修飾子

説明

?

0または1回の出現。

*

0回以上の出現。

+

1回以上の出現。

{n}

正確にn回の出現。

(n,}

少なくともn回の出現。

{n,m}

n回以上、m回以下の出現。

フラグ

OWA_PATTERNファンクションおよびプロシージャは、ターゲットおよび正規表現の他に、フラグを使用して解釈の方法に影響を与えます。

表216-3 フラグ

フラグ

説明

i

大文字小文字を区別しない検索を示します。

g

CHANGEに対してのみ適用される。グローバルな置換を示す。つまり、正規表現と一致するターゲットのすべての部分が置換される。

OWA_PATTERNサブプログラムの要約

表216-4 OWA_PATTERNパッケージのサブプログラム

サブプログラム

説明

AMATCHファンクション

文字列に指定のパターンが含まれるかどうかを判定します。文字列内のどこに一致するかを指定できます。

CHANGEファンクションおよびプロシージャ

文字列内のパターンを置換します。ファンクションとしてコールした場合は、正規表現が検出されて置換された回数が戻されます。

GETPATプロシージャ

VARCHAR2タイプからパターン・データ・タイプを生成します。

MATCHファンクション

文字列に指定のパターンが含まれるかどうかを判定します。

AMATCHファンクション

このファンクションは、パターンが文字列内の特定の位置に出現するかどうかを指定します。このファンクションには4つのバージョンがあります。

- このファンクションの1番目および2番目のバージョンでは、一致したトークンを保存しません(これらのトークンは、3番目および4番目のバージョンにあるbackrefsパラメータに保存されます)。1番目と2番目のバージョンの違いは、patパラメータにVARCHAR2を指定できるのか、またはパターン・データ・タイプを指定できるのかという点です。

- このファンクションの3番目および4番目のバージョンでは、一致したトークンをbackrefsパラメータに保存します。3番目と4番目のバージョンの違いは、patパラメータにVARCHAR2を指定できるのか、またはパターン・データ・タイプを指定できるのかという点です。

注意:
複数のオーバーラップした文字列が正規表現に一致する場合、このファンクションは最長の一致を採用します。

構文

OWA_PATTERN.AMATCH(
line           IN       VARCHAR2,
from_loc       IN       INTEGER,
pat            IN       VARCHAR2,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN INTEGER;

OWA_PATTERN.AMATCH(
line           IN       VARCHAR2,
from_loc       IN       INTEGER,
pat            IN OUT   PATTERN,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN INTEGER;

OWA_PATTERN.AMATCH(
line           IN       VARCHAR2
from_loc       IN       INTEGER
pat            in       varchar2
backrefs       OUT      owa_text.vc_arr
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN INTEGER;

OWA_PATTERN.AMATCH(
line           IN       VARCHAR2
from_loc       IN       INTEGER
pat            IN OUT   PATTERN
backrefs       OUT      owa_text.vc_arr
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN INTEGER;

パラメータ

表216-5 AMATCHファンクションのパラメータ

パラメータ

説明

line

検索するテキスト。

from_loc

検索を開始するline内の位置(文字数)。

pat

一致させる文字列。正規表現を含めることが可能。VARCHAR2またはパターンを指定できます。patternの場合、このパラメータの出力値は一致したパターン。

backrefs

一致したテキスト。一致した各トークンは、OWA_TEXT.VC_ARRデータ・タイプのPL/SQL表のセルに配置されます。

flags

検索で大文字と小文字を区別するかどうかを指定します。このパラメータの値が"i"の場合、検索で大文字と小文字を区別しません。これを指定していない場合は、検索で大文字と小文字を区別します。

戻り値

一致したものの末尾に続く文字のインデックス。lineの先頭から計算されます。一致するものがなかった場合は、0が返されます。

CHANGEファンクションおよびプロシージャ

このファンクションまたはプロシージャは、文字列またはmulti_lineデータ・タイプを検索して置換します。複数のオーバーラップした文字列が正規表現に一致する場合、このサブプログラムは最長の一致を採用します。

構文

OWA_PATTERN.CHANGE(
line           IN OUT    VARCHAR2,
from_str       IN        VARCHAR2,
to_str         IN        VARCHAR2,
flags          IN        VARCHAR2   DEFAULT NULL)
RETURN INTEGER;

OWA_PATTERN.CHANGE(
line           IN OUT   VARCHAR2,
from_str       IN       VARCHAR2,
to_str         IN       VARCHAR2,
flags          IN       VARCHAR2   DEFAULT NULL);

owa_pattern.change(
mline          IN OUT   owa_text.multi_line,
from_str       IN       VARCHAR2,
to_str         IN       VARCHAR2,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN INTEGER;

OWA_PATTERN.CHANGE(
mline          IN OUT   owa_text.multi_line,
from_str       IN       VARCHAR2,
to_str         IN       VARCHAR2,
flags          IN       VARCHAR2   DEFAULT NULL);

パラメータ

表216-6 CHANGEプロシージャのパラメータ

パラメータ

説明

line

検索するテキスト。このパラメータの出力値は、変更された文字列です。

mline

検索するテキスト。これはowa_text.multi_lineデータ・タイプです。このパラメータの出力値は、変更された文字列です。

from_str

置換する正規表現。

to_str

置換えパターン。

flags

検索で大文字と小文字を区別するか、さらに変更を全体に対して実行するかどうかを指定します。"i"が指定されている場合、検索は大文字と小文字を区別しません。"g"が指定されている場合、変更は一致したものすべてに対して行われます。これを指定していない場合、ファンクションは最初の置換を実行した後で停止します。

戻り値

ファンクションとして使用した場合は、置換を実行した回数を戻します。フラグ"g"が使用されていない場合、この数は0または1のみで、最初に一致したもののみが置換されます。フラグ"g"が指定されると、正規表現と一致したものをすべて置換します。

例

OWA_PATTERN.CHANGE('Cats in pajamas', 'C.+in', '& red ')

この正規表現は、サブストリング"Cats in"に一致します。次に、この文字列を"& red"で置換します。アンパサンド文字"&"は、正規表現に一致するため、"Cats in"を示します。このように、このプロシージャは文字列"Cats in pajamas"を"Cats in red"で置換します。これをプロシージャではなくファンクションとしてコールした場合、戻り値は1となります。これは、置換が1回実行されたことを示します。

例2:

CREATE OR REPLACE PROCEDURE test_pattern as theline VARCHAR2(256);
num_found     INTEGER;
BEGIN
theline := 'what is the goal?';
num_found := OWA_PATTERN.CHANGE(theline, 'goal', 'idea', 'g');
HTP.PRINT(num_found); -- num_found is 1
HTP.PRINT(theline); -- theline is 'what is the idea?'
END;
/
SHOW ERRORS

GETPATプロシージャ

このプロシージャは、VARCHAR2文字列をOWA_PATTERN.PATTERNデータ・タイプに変換します。

構文

OWA_PATTERN.GETPAT(
arg      IN          VARCHAR2,
pat      IN OUT      pattern);

パラメータ

表216-7 GETPATプロシージャのパラメータ

パラメータ

説明

arg

変換する文字列。

pat

argで初期化されたOWA_PATTERN.PATTERNデータ・タイプ。

MATCHファンクション

このファンクションは、文字列に指定のパターンが含まれるかどうかを判定します。このパターンには正規表現を含めることができます。複数のオーバーラップした文字列が正規表現に一致する可能性がある場合、このファンクションは最長の一致を採用します。

構文

owa_pattern.match(
line           IN       VARCHAR2,
pat            IN       VARCHAR2,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN BOOLEAN;

owa_pattern.match(
line           IN       VARCHAR2,
pat            IN OUT   PATTERN,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN BOOLEAN;

owa_pattern.match(
line           IN       VARCHAR2,
pat            IN       VARCHAR2,
backrefs       OUT      owa_text.vc_arr,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN BOOLEAN;

OWA_PATTERN.MATCH(
line           IN       VARCHAR2,
pat            IN OUT   PATTERN,
backrefs       OUT      owa_text.vc_arr,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN BOOLEAN;

owa_pattern.match(
mline          IN       owa_text.multi_line,
pat            IN       VARCHAR2,
rlist          OUT      owa_text.row_list,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN BOOLEAN;

OWA_PATTERN.MATCH(
mline          IN       owa_text.multi_line,
pat            IN OUT   pattern,
rlist          OUT      owa_text.row_list,
flags          IN       VARCHAR2   DEFAULT NULL)
RETURN BOOLEAN;

パラメータ

表216-8 MATCHファンクションのパラメータ

パラメータ

説明

line

検索する行。

mline

検索するテキスト。これはowa_text.multi_lineデータ・タイプです。

pat

一致させるパターン。これは、VARCHAR2またはOWA_PATTERN.PATTERNデータ・タイプのいずれかです。patternの場合、このパラメータの出力値は一致したパターン。

backrefs

一致したテキスト。一致した各トークンは、OWA_TEXT.VC_ARRデータ・タイプのPL/SQL表のセルに配置されます。このパラメータはrow_listで、ターゲット内で正規表現の一連のトークンが一致した各文字列を含みます。

rlist

一致のリストを含む出力パラメータ。

flags

検索で大文字と小文字を区別するかどうかを指定します。このパラメータの値が"i"の場合、検索で大文字と小文字を区別しません。これを指定していない場合は、検索で大文字と小文字を区別します。

戻り値

一致するものが検出された場合はTRUE、検出されない場合はFALSEです。

例

KAZOOは、zoo.*という正規表現を検索するターゲットです。ピリオドは改行以外のすべての文字を表し、アスタリスクは0個以上の先行の文字に一致します。この場合、改行以外のすべての文字に一致します。

そのため、この正規表現は、一致ターゲットがzooおよび後続の任意の文字列から構成され、改行で終わったり改行を含んだりしない(ピリオドと一致しないため)ものであることを示します。iフラグは、検索時に大文字小文字の区別を無視することを示します。この場合、このファンクションはTRUEを戻し、一致するものが検出されたことを示します。

boolean foundMatch;
foundMatch := owa_pattern.match('KAZOO', 'zoo.*', 'i');

次の例では、sometext内で"goal"の後にいくつかの文字が続く文字列を検索します。検出された場合は、次のようになります。

sometext  VARCHAR2(256);
pat       VARCHAR2(256);

sometext    := 'what is the goal?'
pat         := 'goal.*';
IF OWA_PATTERN.MATCH(sometext, pat)
THEN
HTP.PRINT('Match found');
ELSE
HTP.PRINT('Match not found');
END IF;

使用上の注意

- このファンクションの正規表現には、VARCHAR2またはOWA_PATTERN.PATTERNデータ・タイプのいずれかを使用できます。OWA_PATTERN.GETPATプロシージャを使用して、文字列からAN OWA_PATTERN.PATTERNデータ・タイプを作成します。

- OWA_TEXT.STREAM2MULTIプロシージャを使用して、長い文字列からMULTI_LINEデータ・タイプを作成します。multi_lineを使用する場合、rlistパラメータには一致するものが検出されたチャンクのリストを指定します。

- 行がmulti_lineではなく文字列の場合、backrefsと呼ばれるオプションの出力パラメータを追加できます。このパラメータはrow_listで、ターゲット内で正規表現の一連のトークンが一致した各文字列を含みます。

217 OWA_SEC

OWA_SECパッケージは、カスタム認証のためのインタフェースを提供します。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_SECの使用方法

- 使用上の注意

- OWA_SECサブプログラムの要約

OWA_SECの使用方法

- 使用上の注意

使用上の注意

デフォルト値を持つパラメータはオプションです。

OWA_SECサブプログラムの要約

表217-1 OWA_SECパッケージのサブプログラム

サブプログラム

説明

GET_CLIENT_HOSTNAMEファンクション

クライアントのホスト名を戻します。

GET_CLIENT_IPファンクション

クライアントのIPアドレスを戻します。

GET_PASSWORDファンクション

ユーザーが入力したパスワードを戻します。

GET_USER_IDファンクション

ユーザーが入力したユーザー名を戻します。

SET_AUTHORIZATIONプロシージャ

カスタム認証に使用するPL/SQLアプリケーションを使用可能にします。

SET_PROTECTION_REALMプロシージャ

ページが存在するレルムを定義します。

GET_CLIENT_HOSTNAMEファンクション

このファンクションは、クライアントのホスト名を戻します。

構文

OWA_SEC.GET_CLIENT_HOSTNAME
RETURN VARCHAR2;

戻り値

ホスト名。

GET_CLIENT_IPファンクション

このファンクションは、クライアントのIPアドレスを戻します。

構文

OWA_SEC.GET_CLIENT_IP
RETURN OWA_UTIL.IP_ADDRESS;

戻り値

IPアドレス。owa_util.ip_addressデータ・タイプは、先頭から4つの要素にIPアドレスの4つの数値が格納されたPL/SQL表です。たとえば、IPアドレスが123.45.67.89で、変数ipaddrがowa_util.ip_addressデータ・タイプである場合、変数には次のように値が含まれます。

ipaddr(1) = 123
ipaddr(2) = 45
ipaddr(3) = 67
ipaddr(4) = 89

GET_PASSWORDファンクション

このファンクションは、ユーザーがログインに使用したパスワードを戻します。

構文

OWA_SEC.GET_PASSWORD
RETURN VARCHAR2;

戻り値

パスワード。

使用上の注意

安全のため、このファンクションは、カスタム認証が使用されている場合にのみTRUE値を戻します。カスタム認証を使用していない場合にこのファンクションをコールすると、ファンクションは未定義の値を戻します。このため、データベースのパスワードが漏洩することはありません。

GET_USER_IDファンクション

このファンクションは、ユーザーがログインに使用したユーザー名を戻します。

構文

OWA_SEC.GET_USER_ID
RETURN VARCHAR2;

戻り値

ユーザー名。

SET_AUTHORIZATIONプロシージャ

このプロシージャは、OWA_CUSTOMパッケージの初期化部分でコールされると、PL/SQLゲートウェイの認証スキームを設定します。これによって、ユーザーが要求したプロシージャを実行する前にユーザーの認証を実行するAUTHORIZEファンクションが実装されます。AUTHORIZEファンクションが配置される位置は、選択したスキームによって異なります。

構文

OWA_SEC.SET_AUTHORIZATION(
scheme         IN       INTEGER);

パラメータ

表217-2 SET_AUTHORIZATIONプロシージャのパラメータ

パラメータ

説明

scheme

認証スキーム。SET_AUTHORIZATIONの次のスキームのいずれかです。

- OWA_SEC.NO_CHECK - PL/SQLアプリケーションがカスタム認証を一切行わないことを示します。これがデフォルトです。

- OWA_SEC.GLOBAL - すべてのユーザーおよびすべてのプロシージャに対してコールされる認証ファンクションを定義します。これは、"sys"スキーマのOWA_CUSTOM.AUTHORIZEファンクションです。

- OWA_SEC.PER_PACKAGE- パッケージ内のプロシージャまたは無名プロシージャがコールされたときにコールされるAUTHORIZEファンクションを定義します。プロシージャがパッケージ内に存在する場合、ユーザーのスキーマ内でpackage.AUTHORIZEファンクションがコールされ、ユーザーの認証を行います。プロシージャがパッケージ内に存在しない場合、ユーザーのスキーマ内で無名AUTHORIZEファンクションがコールされます。

- OWA_SEC.CUSTOM - 各ユーザーに対して異なる認証ファンクションを実装します。ユーザーのスキーマ内でOWA_CUSTOM.AUTHORIZEファンクションがコールされ、ユーザーの認証を行います。ユーザーのスキーマにOWA_CUSTOM.AUTHORIZEファンクションが含まれていない場合、PL/SQLゲートウェイが"sys"スキーマ内を検索します。
このカスタムAUTHORIZEファンクションには、次の署名があります。

FUNCTION AUTHORIZE
RETURN BOOLEAN;

ファンクションからTRUEが戻された場合、認証は成功です。FALSEが戻された場合、認証は失敗です。AUTHORIZEファンクションが定義されていない場合、ゲートウェイはエラーを戻し、失敗します。

SET_PROTECTION_REALMプロシージャ

このプロシージャは、ユーザーに戻されるページのレルムを設定します。ユーザーはユーザー名を入力し、レルム内にすでに存在するページにログインします。

構文

OWA_SEC.SET_PROTECTION_REALM(
realm      IN      VARCHAR2);

パラメータ

表217-3 SET_PROTECTION_REALMプロシージャのパラメータ

パラメータ

説明

realm

ページが属するレルム。この文字列がユーザーに表示されます。

218 OWA_TEXT

OWA_TEXTパッケージには、OWA_PATTERNが文字列操作に使用するサブプログラムが含まれています。これは外部化されているため、直接使用できます。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_TEXTの使用方法

- タイプ

- OWA_TEXTサブプログラムの要約

OWA_TEXTの使用方法

- タイプ

タイプ

- MULTI_LINEデータ・タイプ

- ROW_LISTデータ・タイプ

- VC_ARRデータ・タイプ

MULTI_LINEデータ・タイプ

このデータ型は、大量のテキストを保持するPL/SQLレコードです。OWA_TEXT.VC_ARRデータ・タイプのrowsフィールドに、このレコードのテキスト・データが含まれます。

TYPE multi_line IS RECORD (
rows           vc_arr,
num_rows       INTEGER,
partial_row    BOOLEAN);

ROW_LISTデータ・タイプ

これは、処理するデータを保持するためのデータ・タイプです。

TYPE row_list IS RECORD (
rows           int_arr,
num_rows       INTEGER);

int_arr IS DEFINED AS:

TYPE int_arr IS TABLE OF INTEGER INDEX BY BINARY_INTEGER;

VC_ARRデータ・タイプ

これは、MULTI_LINEデータ・タイプのコンポーネントで、大量のテキストを保持する場合に使用します。

TYPE vc_arr IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;

OWA_TEXTサブプログラムの要約

表218-1 OWA_TEXTパッケージのサブプログラム

サブプログラム

説明

ADD2MULTIプロシージャ

既存のMULTI_LINEタイプにテキストを追加します。

NEW_ROW_LISTファンクションおよびプロシージャ

新しいROW_LISTを作成します。

PRINT_MULTIプロシージャ

MULTI_LISTの内容を印刷します。

PRINT_ROW_LISTプロシージャ

ROW_LISTの内容を印刷します。

STREAM2MULTIプロシージャ

VARCHAR2をMULTI_LINEタイプに変換します。

ADD2MULTIプロシージャ

このプロシージャは、既存のMULTI_LINEデータ・タイプに内容を追加します。

構文

OWA_TEXT.ADD2MULTI(
stream         IN       VARCHAR2,
mline          IN OUT   multi_line,

continue       IN       BOOLEAN   DEFAULT TRUE);

パラメータ

表218-2 ADD2MULTIプロシージャのパラメータ

パラメータ

説明

stream

追加するテキスト。

mline

OWA_TEXT.MULTI_LINEデータ・タイプ。このパラメータの出力には、streamが含まれます。

continue

TRUEの場合、プロシージャは前の最後の行内にstreamを付加します(32K以下であることを前提として)。FALSEの場合、プロシージャは新しい行内にstreamを配置します。

NEW_ROW_LISTファンクションおよびプロシージャ

このファンクションまたはプロシージャは、新しいOWA_TEXT.ROW_LISTデータ・タイプを作成します。ファンクションのバージョンは、パラメータを使用せず、新しいROW_LISTを空で戻します。プロシージャのバージョンは、出力パラメータとしてROW_LISTデータ・タイプを作成します。

構文

OWA_TEXT.NEW_ROW_LIST
RETURN ROW_LIST;

OWA_TEXT.NEW_ROW_LIST(
rlist    OUT     row_list);

パラメータ

表218-3 NEW_ROW_LISTプロシージャのパラメータ

パラメータ

説明

rlist

これは、新しいROW_LISTデータ・タイプを含む出力パラメータです。

戻り値

ファンクションのバージョンは、新しいROW_LISTデータ・タイプを戻します。

PRINT_MULTIプロシージャ

このプロシージャは、PRINTプロシージャまたはPRNプロシージャを使用して、OWA_TEXT.MULTI_LINEデータ・タイプの"rows"フィールドを印刷します。

構文

OWA_TEXT.PRINT_MULTI(
mline       IN       multi_line);

パラメータ

表218-4 PRINT_MULTIプロシージャのパラメータ

パラメータ

説明

mline

印刷するMULTI_LINEデータ・タイプ。

戻り値

MULTI_LINEの内容。

PRINT_ROW_LISTプロシージャ

このプロシージャは、PRINTプロシージャまたはPRNプロシージャを使用して、OWA_TEXT.ROW_LISTデータ・タイプの"rows"フィールドを印刷します。

構文

OWA_TEXT.PRINT_ROW_LIST(
rlist       IN       multi_line);

パラメータ

表218-5 PRINT_ROW_LISTプロシージャのパラメータ

パラメータ

説明

rlist

印刷するROW_LISTデータ・タイプ。

戻り値

ROW_LISTの内容。

STREAM2MULTIプロシージャ

このプロシージャは、文字列をMULTI_LINEデータ・タイプに変換します。

構文

OWA_TEXT.STREAM2MULTI(
stream         IN       VARCHAR2
mline          OUT      multi_line);

パラメータ

表218-6 STREAM2MULTIプロシージャのパラメータ

パラメータ

説明

stream

変換する文字列。

mline

OWA_TEXT.MULTI_LINEデータ・タイプのストリーム。

219 OWA_UTIL

OWA_UTILパッケージには、CGI環境変数値の取得、クライアントに戻されたデータの出力、HTML表の問合せ結果の出力などの操作を実行するユーティリティ・サブプログラムが含まれます。

関連項目:
このパッケージの実装の詳細は、次のマニュアルを参照してください。

- 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』

- 『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』

この章では、次の項目について説明します。

- OWA_UTILの使用方法

- 概要

- タイプ

- OWA_UTILサブプログラムの要約

OWA_UTILの使用方法

- 概要

- タイプ

概要

OWA_UTILパッケージには、3つのタイプのユーティリティ・サブプログラムが含まれます。

- 動的に生成したSQLコード付きのページが作成可能な動的SQL文ユーティリティ。

- CGI環境変数の値の取得、およびURLのリダイレクトが実行可能なHTMLユーティリティ。

- 日付処理が訂正可能なデート・ユーティリティ。日付の値はHTMLの単純な文字列ですが、Oracle Databaseによってデータ・タイプとして処理されます。

タイプ

- DATETYPEデータ・タイプ

- IDENT_ARRデータ・タイプ

- IP_ADDRESSデータ・タイプ

DATETYPEデータ・タイプ

TODATEファンクションはこのタイプの項目をDATEタイプに変換します。これはデータベースでデータとして解釈され、適切に処理されます。CHOOSE_DATEプロシージャを使用すると、ユーザーは目的の日付を選択できます。

TYPE dateType IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;

IDENT_ARRデータ・タイプ

このデータ・タイプは、配列に使用されます。

TYPE ident_arr IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;

IP_ADDRESSデータ・タイプ

このデータ・タイプは、OWA_SECパッケージのGET_CLIENT_IPファンクションによって使用されます。

TYPE ip_address IS TABLE OF INTEGER INDEX BY BINARY_INTEGER;

OWA_UTILサブプログラムの要約

表219-1 OWA_UTILパッケージのサブプログラム

サブプログラム

説明

BIND_VARIABLESファンクション

SQL問合せを準備して、その問合せに変数をバインドします。

CALENDARPRINTプロシージャ

カレンダを印刷します。

CELLSPRINTプロシージャ

HTML表の問合せのコンテンツを印刷します。

CHOOSE_DATEプロシージャ

ユーザーが日付を選択できるHTMLフォーム要素を生成します。

GET_CGI_ENVファンクション

指定したCGI環境変数の値を戻します。

GET_OWA_SERVICE_PATHファンクション

PL/SQLゲートウェイの仮想フルパスを戻します。

GET_PROCEDUREファンクション

PL/SQLゲートウェイによって起動されたプロシージャの名前を戻します。

HTTP_HEADER_CLOSEプロシージャ

HTTPヘッダーをクローズします。

LISTPRINTプロシージャ

問合せからのデータを含むHTMLフォーム要素を生成します。

MIME_HEADERプロシージャ

HTTPヘッダーにContent-Type行を生成します。

PRINT_CGI_ENVプロシージャ

すべてのCGI環境変数およびその値のリストを生成します。

REDIRECT_URLプロシージャ

HTTPヘッダーに場所の行を生成します。

SHOWPAGEプロシージャ

SQL*PlusのHTPおよびHTFパッケージによって生成されたページを印刷します。

SHOWSOURCEプロシージャ

指定したサブプログラムのソースを印刷します。

SIGNATUREプロシージャ

PL/SQLエージェントによって生成されたページであることを示す行を印刷します。

STATUS_LINEプロシージャ

HTTPヘッダーにステータスの行を生成します。

TABLEPRINTファンクション

データベースの表から、データをHTML表として印刷します。

TODATEファンクション

dateTypeデータを標準PL/SQL日付タイプに変換します。

WHO_CALLED_MEプロシージャ

プロシージャのコール元の情報を戻します。

BIND_VARIABLESファンクション

このファンクションは、SQL問合せに変数をバインドしてSQL問合せを準備し、その出力をオープン・カーソルに格納します。このファンクションを、動的に生成された問合せを送信するプロシージャに対するパラメータとして使用します。25までのバインド変数を指定できます。

構文

OWA_UTIL.BIND_VARIABLES(
theQuery       IN       VARCHAR2   DEFAULT NULL,
bv1Name        IN       VARCHAR2   DEFAULT NULL,
bv1Value       IN       VARCHAR2   DEFAULT NULL,
bv2Name        IN       VARCHAR2   DEFAULT NULL,
bv2Value       IN       VARCHAR2   DEFAULT NULL,
bv3Name        IN       VARCHAR2   DEFAULT NULL,
bv3Value       IN       VARCHAR2   DEFAULT NULL,
...
bv25Name       IN       VARCHAR2   DEFAULT NULL,
bv25Value      IN       VARCHAR2   DEFAULT NULL)
RETURN INTEGER;

パラメータ

表219-2 BIND_VARIABLESファンクションのパラメータ

パラメータ

説明

theQuery

SELECT文になる必要があるSQL問合せ文。

bv1Name

変数の名前。

bv1Value

変数の値。

戻り値

オープン・カーソルを識別する整数。

CALENDARPRINTプロシージャ

これらのプロシージャは、HTMLで境界線付きのカレンダを作成します。カレンダの各日付には、任意の数のハイパーテキスト・リンクを含むことができます。

このプロシージャには2つのバージョンがあります。

- バージョン1は、VARCHAR2文字列に格納されているハード・コードされた問合せを使用します。

- バージョン2は、BIND_VARIABLESファンクションで準備された動的問合せを使用します。

構文

OWA_UTIL.CALENDARPRINT(
p_query        IN       VARCHAR2,
p_mf_only      IN       VARCHAR2   DEFAULT 'N');

OWA_UTIL.CALENDARPRINT(
p_cursor       IN       INTEGER,
p_mf_only      IN       VARCHAR2   DEFAULT 'N');

パラメータ

表219-3 CALENDARPRINTプロシージャのパラメータ

パラメータ

説明

p_query

PL/SQL問合せ。

p_cursor

p_queryと同じ書式を含むPL/SQLカーソル。

p_mf_only

"N"(デフォルト)の場合、生成されたカレンダには日曜から土曜が含まれます。それ以外の場合は、月曜から金曜日のみが含まれます。

使用上の注意

問合せを次のように設計します。

- 1列目は「DATE」です。これは、プロシージャによって生成されたカレンダ出力を持つ問合せに生成された情報と相互に関連しています。

- この問合せ出力は、ORDER BYを使用してこの列でソートする必要があります。

- 2列目には、印刷する日付のテキストを含めます(ある場合)。

- 3列目には、生成したリンクの参照先を含めます。2列目の各項目は、この列で指定されたリンク先へのハイパーテキスト・リンクになります。この列が省略されると、2列目の項目は単純なテキストになり、リンクされません。

CELLSPRINTプロシージャ

このプロシージャは、SQL問合せの出力からHTML表を生成します。SQL基本データ単位はHTMLセルに、またSQL行はHTML行にマップされます。HTML表を開始および終了するためのコードを記述する必要があります。このプロシージャのバージョンは9つあります。

- 1つ目のバージョンは、問合せの結果を索引表に渡します。問合せを実行して、CELLSPRINTがフォーマットを実行します。SQL問合せの出力からのHTML表の生成について、より詳細に制御するには、HTFパッケージのFORMAT_CELLファンクションを使用します。

- 2つ目および3つ目のバージョンは、問合せまたはカーソルによって戻された行(指定された最大値まで)を表示します。

- 4つ目および5つ目のバージョンは、指定した行数をHTML表から排除します。4つ目および5つ目のバージョンを使用すると、非表示フォーム要素で見られる最後の行を保存することにより、結果セット内をスクロールできます。

- 6から9番目のバージョンは、行カウント出力パラメータを戻す点を除き、最初の4つのバージョンと同じです。

構文

OWA_UTIL.CELLSPRINT(
p_colCnt          IN    INTEGER,
p_resultTbl       IN    vc_arr,

p_format_numbers  IN    VARCHAR2   DEFAULT NULL);

OWA_UTIL.CELLSPRINT(
p_theQuery        IN    VARCHAR2,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  IN    VARCHAR2   DEFAULT NULL);

OWA_UTIL.CELLSPRINT(
p_theCursor       IN    INTEGER,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  iN    VARCHAR2   DEFAULT NULL);

OWA_UTIL.CELLSPRINT(
p_theQuery        IN    VARCHAR2,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  IN    VARCHAR2   DEFAULT NULL,
p_skip_rec        IN    NUMBER      DEFAULT 0,
p_more_data       OUT   BOOLEAN);

OWA_UTIL.CELLSPRINT(
p_theCursor       IN    INTEGER,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  IN    VARCHAR2   DEFAULT NULL,
p_skip_rec        IN    NUMBER     DEFAULT 0,
p_more_data       OUT   BOOLEAN);

OWA_UTIL.CELLSPRINT(
p_theQuery        IN    VARCHAR2,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  IN    VARCHAR2   DEFAULT NULL,
p_reccnt          OUT   NUMBER);

OWA_UTIL.CELLSPRINT(
p_theCursor       IN    INTEGER,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  IN    VARCHAR2   DEFAULT NULL,
p_reccnt          OUT   NUMBER);

OWA_UTIL.CELLSPRINT(
p_theQuery        IN    VARCHAR2,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  IN    VARCHAR2   DEFAULT NULL,
p_skip_rec        IN    NUMBER     DEFAULT 0,
p_more_data       OUT   BOOLEAN
p_reccnt          OUT   NUMBER);

OWA_UTIL.CELLSPRINT(
p_theCursor       IN    INTEGER,
p_max_rows        IN    NUMBER     DEFAULT 100,
p_format_numbers  IN    VARCHAR2   DEFAULT NULL,
p_skip_rec        IN    NUMBER     DEFAULT 0,
p_more_data       OUT   BOOLEAN,
p_reccnt          OUT   NUMBER);

パラメータ

表219-4 CELLSPRINTプロシージャのパラメータ

パラメータ

説明

p_query

PL/SQL問合せ。

p_colCnt

表内の列数。

p_theQuery

SQL SELECT文。

p_theCursor

カーソルID。これは、BIND_VARIABLESファンクションからの戻り値である場合もあります。

p_max_rows

印刷する行の最大数。

p_format_numbers

このパラメータの値がNULLでない場合、数字フィールドは最適に調整され、小数点以下2桁に丸められます。

p_skip_rec

HTML表から排除する行数。

p_more_data

問合せまたはカーソル内にさらに多くの行がある場合はTRUE、それ以外の場合はFALSEです。

p_reccnt

問合せによって戻された行数。この値には、スキップされた行(ある場合)は含まれません。

p_resultTbl

問合せの結果を含む索引表。問合せの各エントリは、1つの列の値に対応します。

例

このプロシージャでの生成結果は、次のようになります。

<tr><td>QueryResultItem</td><td>QueryResultItem</td></tr>...

CHOOSE_DATEプロシージャ

このプロシージャは、ユーザーが年、月および日を選択できる3つのHTMLフォーム要素を生成します。

構文

OWA_UTIL.CHOOSE_DATE(
p_name         IN       VARCHAR2,
p_date         IN       DATE       DEFAULT SYSDATE);

パラメータ

表219-5 CHOOSE_DATEプロシージャのパラメータ

パラメータ

説明

p_name

フォーム要素の名前。

p_date

HTMLページが表示されたときに選択した最初の日付。

使用上の注意

- これらの要素からデータを受け取るプロシージャのパラメータは、GET_CGI_ENVファンクションである必要があります。

- TODATEファンクションを使用して、GET_CGI_ENVファンクション値を標準のOracle DATEデータ・タイプに変換します。

例

<SELECT NAME="p_name" SIZE="1">
<OPTION value="01">1
...
<OPTION value="31">31
</SELECT>
-
<SELECT NAME="p_name" SIZE="1">
<OPTION value="01">JAN
...
<OPTION value="12">DEC
</SELECT>
-
<SELECT NAME="p_name" SIZE="1">
<OPTION value="1992">1992
...
<OPTION value="2002">2002
</SELECT>

GET_CGI_ENVファンクション

このファンクションは、指定したCGI環境変数の値を戻します。

構文

OWA_UTIL.GET_CGI_ENV(
param_name       IN      VARCHAR2)
RETURN VARCHAR2;

パラメータ

表219-6 GET_CGI_ENVファンクションのパラメータ

パラメータ

説明

param_name

CGI環境変数の名前。大文字と小文字は区別されません。

戻り値

指定したCGI環境変数の値。値が定義されていない場合、このファンクションはNULLを戻します。

GET_OWA_SERVICE_PATHファンクション

このファンクションは、要求を処理するPL/SQLゲートウェイの仮想フルパスを戻します。

構文

OWA_UTIL.GET_OWA_SERVICE_PATH
RETURN VARCHAR2;

戻り値

要求を処理するPL/SQLゲートウェイの仮想パス。

GET_PROCEDUREファンクション

このファンクションは、PL/SQLゲートウェイによって起動されたプロシージャの名前を戻します。

構文

OWA_UTIL.GET_PROCEDURE
RETURN VARCHAR2;

戻り値

プロシージャの名前。プロシージャがパッケージで定義されている場合は、パッケージ名も含みます。

HTTP_HEADER_CLOSEプロシージャ

このプロシージャは、HTTPヘッダーをクローズする改行文字を生成します。

構文

OWA_UTIL.HTTP_HEADER_CLOSE;

戻り値

HTTPヘッダーをクローズする改行文字。

使用上の注意

- MIME_HEADERプロシージャ、REDIRECT_URLプロシージャ、STATUS_LINEプロシージャなどのコールでbclose_headerパラメータを使用してヘッダーをクローズしていない場合、このプロシージャを使用します。

- HTP.PRINTまたはHTP.PRNコールの前には、HTTPヘッダーをクローズする必要があります。

LISTPRINTプロシージャ

このプロシージャは、SQL問合せの出力からHTML選択リスト・フォーム要素を生成します。このプロシージャのバージョンは2つあります。

- 1つ目のバージョンには、ハードコードされたSQL問合せが含まれます。

- 2つ目のバージョンは、BIND_VARIABLESファンクションを使用して準備された動的問合せを使用します。

構文

OWA_UTIL.LISTPRINT(
p_theQuery     IN       VARCHAR2,
p_cname        IN       VARCHAR2,
p_nsize        IN       NUMBER,
p_multiple     IN       BOOLEAN   DEFAULT FALSE);

OWA_UTIL.LISTPRINT(
p_theCursor    IN    INTEGER,
p_cname        IN       VARCHAR2,
p_nsize        IN       NUMBER,
p_multiple     IN       BOOLEAN   DEFAULT FALSE);

パラメータ

表219-7 LISTPRINTプロシージャのパラメータ

パラメータ

説明

p_theQuery

SQL問合せ。

p_theCursor

カーソルID。これは、BIND_VARIABLESファンクションからの戻り値である場合もあります。

p_cname

HTMLフォーム要素の名前。

p_nsize

フォーム要素のサイズ(ユーザーがスクロールせずに表示できる項目の数を制御します)。

p_multiple

複数の選択を許可するかどうかを指定します。

使用上の注意

問合せの出力内の列は、次の方法で処理されます。

- 1列目では、返信する値を指定します。これらの値は、OPTIONタグのVALUE属性に対するものです。

- 2列目では、ユーザーが表示する値を指定します。

- 3列目では、OPTIONタグで行をSELECTEDとしてマークするかどうかを指定します。値がNULLでない場合、行はSELECTEDです。

例

<SELECT NAME="p_cname" SIZE="p_nsize">
<OPTION SELECTED value='value_from_the_first_column'>value_from_the_second_column
<OPTION SELECTED value='value_from_the_first_column'>value_from_the_second_column
...
</SELECT>

MIME_HEADERプロシージャ

このプロシージャは、スクリプトが戻すデフォルトのMIMEヘッダーを変更します。このプロシージャは必ずHTP.PRINTまたはHTP.PRNコールの前に実行して、デフォルトのMIMEヘッダーを使用しないようにスクリプトに指示する必要があります。

構文

OWA_UTIL.MIME_HEADER(
ccontent_type    IN       VARCHAR2   DEFAULT 'text/html',
bclose_header    IN       BOOLEAN    DEFAULT TRUE,
ccharset         IN       VARCHAR2   DEFAULT NULL);

パラメータ

表219-8 MIME_HEADERプロシージャのパラメータ

パラメータ

説明

ccontent_type

生成するMIMEタイプ。

bclose_header

HTTPヘッダーをクローズするかどうかを指定します。TRUEの場合、2つの改行が送信され、HTTPヘッダーがクローズします。それ以外の場合は、1つの改行が送信され、HTTPヘッダーはオープンしたままになります。

ccharset

使用するキャラクタ・セット。キャラクタ・セットは、MIMEタイプがTEXTタイプの場合にのみ有効です。このため、このキャラクタ・セットは、渡されたMIMEタイプがTEXTタイプの場合にのみ、Content-Typeヘッダーにのみタグ付けされます。他のMIMEタイプ('IMAGE'など)には、タグ付きのキャラクタ・セットがありません。

例

Content-type: <ccontent_type>; charset=<ccharset>

たとえば、次のように入力したとします。

owa_util.mime_header('text/plain', false, 'ISO-8859-4')

生成結果は、次のようになります。

Content-type: text/plain; charset=ISO-8859-4\n

PRINT_CGI_ENVプロシージャ

このプロシージャは、PL/SQLゲートウェイによって使用可能になったすべてのCGI環境変数およびその値を、ストアド・プロシージャに生成します。

構文

OWA_UTIL.PRINT_CGI_ENV;

例

このプロシージャは、次の形式でリストを生成します。

cgi_env_var_name = value\n

REDIRECT_URLプロシージャ

このプロシージャは、アプリケーション・サーバーが、指定したURLにアクセスするように指定します。URLには、戻る先のWebページか、実行するプログラムのいずれかを指定します。

構文

OWA_UTIL.REDIRECT_URL(
curl           IN       VARCHAR2
bclose_header  IN       BOOLEAN    DEFAULT TRUE);

パラメータ

表219-9 REDIRECT_URLプロシージャのパラメータ

パラメータ

説明

curl

アクセスするURL。

bclose_header

HTTPヘッダーをクローズするかどうかを指定します。TRUEの場合、2つの改行が送信され、HTTPヘッダーがクローズします。それ以外の場合は、1つの改行が送信され、HTTPヘッダーはオープンしたままになります。

使用上の注意

このプロシージャは、HTPプロシージャまたはHTFファンクションのコールの前に実行する必要があります。

例

このプロシージャでの生成結果は、次のようになります。

Location: <curl>\n\n

SHOWPAGEプロシージャ

このプロシージャは、SQL*PlusのプロシージャのHTML出力を印刷します。このプロシージャでは、HTMLページを生成するHTPまたはHTFパッケージを使用する必要があります。また、このプロシージャは、HTPまたはHTFページ生成サブプログラムがコールされた後、および他のHTPまたはHTFサブプログラムが直接的または間接的にコールされる前に発行する必要があります。

構文

OWA_UTIL.SHOWPAGE;

使用上の注意

- このメソッドは、静的データが入力されたページの生成に便利です。

- このプロシージャは、DBMS_OUTPUTパッケージを使用し、各行32767文字までに限定されます。全体のバッファ・サイズは1,000,000バイトです。

例

HTPプロシージャの出力は、SQL*Plus、SQL*DBAまたはOracle Server Managerで表示されます。次に例を示します。

SQL> set serveroutput on
SQL> spool gretzky.html
SQL> execute hockey.pass("Gretzky")
SQL> execute owa_util.showpage
SQL> exit

これは、Webブラウザからアクセス可能なHTMLページを生成します。

SHOWSOURCEプロシージャ

このプロシージャは、指定したプロシージャ、ファンクションまたはパッケージのソースを印刷します。パッケージに属するプロシージャまたはファンクションが指定されている場合、パッケージ全体が表示されます。

構文

OWA_UTIL.SHOWSOURCE (
cname      IN     VARCHAR2);

パラメータ

表219-10 SHOWSOURCEプロシージャのパラメータ

パラメータ

説明

cname

ソースを表示するファンクションまたはプロシージャ。

SIGNATUREプロシージャ

このプロシージャは、HTMLドキュメント上で、署名行が後に続くHTML行を生成します。パラメータが指定されていると、プロシージャは、そのパラメータのPL/SQLソースを表示するためのハイパーテキスト・リンクも生成します。このリンクはSHOWSOURCEプロシージャをコールします。

構文

OWA_UTIL.SIGNATURE;

OWA_UTIL.SIGNATURE (
cname        IN        VARCHAR2);

パラメータ

表219-11 SIGNATUREプロシージャのパラメータ

パラメータ

説明

cname

ソースを表示するファンクションまたはプロシージャ。

例

パラメータがない場合、プロシージャは次のような行を生成します。

This page was produced by the PL/SQL Agent on August 9, 2001 09:30.

パラメータがある場合、プロシージャはHTMLドキュメントに次のような署名行を生成します。

This page was produced by the PL/SQL Agent on 8/09/01 09:30
View PL/SQL Source

STATUS_LINEプロシージャ

このプロシージャは、クライアントに標準のHTTPステータス・コードを送信します。このプロシージャはhtp.printまたはhtp.prnコールの前に実行して、ステータス・コードがコンテンツ・データではなくヘッダーの一部として戻されるようにする必要があります。

構文

OWA_UTIL.STATUS_LINE(
nstatus        IN       INTEGER,
creason        IN       VARCHAR2   DEFAULT NULL,
bclose_header  IN       BOOLEAN    DEFAULT TRUE);

パラメータ

表219-12 STATUS_LINEプロシージャのパラメータ

パラメータ

説明

nstatus

ステータス・コード。

creason

ステータス・コードの文字列。

bclose_header

HTTPヘッダーをクローズするかどうかを指定します。TRUEの場合、2つの改行が送信され、HTTPヘッダーがクローズします。それ以外の場合は、1つの改行が送信され、HTTPヘッダーはオープンしたままになります。

例

このプロシージャでの生成結果は、次のようになります。

Status: <nstatus> <creason>\n\n

TABLEPRINTファンクション

このファンクションは、データベース表から事前フォーマットされた表またはHTML表のいずれか(ユーザーのブラウザの機能に依存する)を生成します。

構文

OWA_UTIL.TABLEPRINT(
ctable         IN       VARCHAR2,
cattributes    IN       VARCHAR2   DEFAULT NULL,
ntable_type    IN       INTEGER    DEFAULT HTML_TABLE,
ccolumns       IN       VARCHAR2   DEFAULT '*',
cclauses       IN    VARCHAR2   DEFAULT NULL,
ccol_aliases   IN       VARCHAR2   DEFAULT NULL,
nrow_min       IN       NUMBER     DEFAULT 0,
nrow_max       IN       NUMBER     DEFAULT NULL)
RETURN BOOLEAN;

パラメータ

表219-13 TABLEPRINTファンクションのパラメータ

パラメータ

説明

ctable

データベース表。

cattributes

そのままの状態でタグに含まれるその他の属性。

ntable_type

表を生成する方法。<TABLE>タグを使用して表を生成するにはHTML_TABLEを指定し、また<PRE>タグを使用して表を生成するにはPRE_TABLEを指定します。これらは定数です。

- HTML_TABLE CONSTANT INTEGER := 1;

- PRE_TABLE CONSTANT INTEGER := 2;

ccolumns

生成された表に含める、ctableからのカンマ区切りリスト。

cclauses

データベース表から取り出す行を指定し、それらを並べる方法を指定する、WHEREまたはORDER BY句。

ccol_aliases

生成された表に対する、ヘッダーのカンマ区切りリスト。

nrow_min

取り出された行のうちの、表示する最初の行。

nrow_max

取り出された行のうちの、表示する最後の行。

戻り値

nrow_max要求を超える行がある場合はTRUEを、それ以外の場合はFALSEを返します。

使用上の注意

- RAW列はサポートされていますが、LONG RAW列はサポートされていません。LONG RAW列へ参照すると、「Not Printable」という結果が出力されます。

- このファンクションでは、cattributesは最後のパラメータではなく2番目のパラメータであることに注意してください。

例

HTML表をサポートしないブラウザでは、次のプロシージャを作成します。

CREATE OR REPLACE PROCEDURE showemps IS
ignore_more BOOLEAN;
BEGIN
ignore_more := OWA_UTIL.TABLEPRINT('emp', 'BORDER', OWA_UTIL.PRE_TABLE);
END;

次のようなURLを要求します。

http://myhost:7777/pls/hr/showemps

クライアントに次の結果が戻されます。

<PRE>
-----------------------------------------------------------------
| EMPNO |ENAME |JOB      |MGR   |HIREDATE   | SAL | COMM | DEPTNO |
-----------------------------------------------------------------
| 7369| SMITH  | CLERK   | 7902 | 17-DEC-80 | 800 |      | 20 |
| 7499| ALLEN  | SALESMAN| 7698 | 20-FEB-81 | 1600 | 300 | 30 |
| 7521| WARD   | SALESMAN| 7698 | 22-FEB-81 | 1250 | 500 | 30 |
| 7566| JONES  | MANAGER | 7839 | 02-APR-81 | 2975 |     | 20 |
| 7654| MARTIN | SALESMAN| 7698 | 28-SEP-81 | 1250 | 1400| 30 |
| 7698| BLAKE  | MANAGER | 7839 | 01-MAY-81 | 2850 |     | 30 |
| 7782| CLARK  | MANAGER | 7839 | 09-JUN-81 | 2450 |     | 10 |
| 7788| SCOTT  | ANALYST | 7566 | 09-DEC-82 | 3000 |     | 20 |
| 7839| KING   | PRESIDENT |    | 17-NOV-81 | 5000 |     | 10 |
| 7844| TURNER | SALESMAN| 7698 | 08-SEP-81 | 1500 | 0   | 30 |
| 7876| ADAMS  | CLERK   | 7788 | 12-JAN-83 | 1100 |     | 20 |
| 7900| JAMES  | CLERK   | 7698 | 03-DEC-81 | 950  |     | 30 |
| 7902| FORD   | ANALYST | 7566 | 03-DEC-81 | 3000 |     | 20 |
| 7934| MILLER | CLERK   | 7782 | 23-JAN-82 | 1300 |     | 10 |
-------------------------------------------------------------------
</PRE>

部署10の従業員、およびそれらの従業員のID、名前、月給のみを表示するには、次のプロシージャを作成します。

CREATE OR REPLACE PROCEDURE showemps_10 IS
ignore_more BOOLEAN;
begin
ignore_more := OWA_UTIL.TABLEPRINT
('EMP', 'BORDER', OWA_UTIL.PRE_TABLE,
'empno, ename, sal', 'WHERE deptno=10 ORDER BY empno',
'Employee Number, Name, Salary');
END;

次のようなURLを要求します。

http://myhost:7777/pls/hr/showemps_10

クライアントに次の結果が戻されます。

<PRE>
-------------------------------------
| Employee Number |Name    | Salary |
-------------------------------------
| 7782            | CLARK  | 2450   |
| 7839            | KING   | 5000   |
| 7934            | MILLER | 1300   |
-------------------------------------
</PRE>

HTML表をサポートするブラウザでHTML表内の部署表を表示するには、次のプロシージャを作成します。

CREATE OR REPLACE PROCEDURE showdept IS
ignore_more BOOLEAN;
BEGIN
ignore_more := oWA_UTIL.TABLEPRINT('dept', 'BORDER');
END;

次のようなURLを要求します。

http://myhost:7777/pls/hr/showdept

クライアントに次の結果が戻されます。

<TABLE BORDER>
<TR>
<TH>DEPTNO</TH>
<TH>DNAME</TH>
<TH>LOC</TH>
</TR>
<TR>
<TD ALIGN="LEFT">10</TD>
<TD ALIGN="LEFT">ACCOUNTING</TD>
<TD ALIGN="LEFT">NEW YORK</TD>
</TR>
<TR>
<TD ALIGN="LEFT">20</TD>
<TD ALIGN="LEFT">RESEARCH</TD>
<TD ALIGN="LEFT">DALLAS</TD>
</TR>
<TR>
<TD ALIGN="LEFT">30</TD>
<TD ALIGN="LEFT">SALES</TD>
<TD ALIGN="LEFT">CHICAGO</TD>
</TR>
<TR>
<TD ALIGN="LEFT">40</TD>
<TD ALIGN="LEFT">OPERATIONS</TD>
<TD ALIGN="LEFT">BOSTON</TD>
</TR>
</TABLE>

Webブラウザはこれをフォーマットして、次の表のように表示します。

DEPTNO

DNAME

LOC

10

ACCOUNTING

NEW YORK

20

RESEARCH

DALLAS

30

SALES

CHICAGO

TODATEファンクション

このファンクションは、DATETYPEデータ・タイプを標準のOracle DATEタイプに変換します。

構文

OWA_UTIL.TODATE(
p_dateArray      IN     dateType)
RETURN DATE;

パラメータ

表219-14 TODATEファンクションのパラメータ

パラメータ

説明

p_dateArray

変換する値。

WHO_CALLED_MEプロシージャ

このプロシージャは、これを起動したPL/SQLコード・ユニットについての情報を(出力パラメータ形式で)戻します。

構文

OWA_UTIL.WHO_CALLED_ME(
owner          OUT      VARCHAR2,
name           OUT      VARCHAR2,
lineno         OUT      NUMBER,
caller_t       OUT      VARCHAR2);

パラメータ

表219-15 WHO_CALLED_MEプロシージャのパラメータ

パラメータ

説明

owner

プログラム・ユニットの所有者。

name

プログラム・ユニットの名前。コール元のプログラム・ユニットがパッケージにラップされている場合はパッケージの名前になり、コール元のプログラム・ユニットがスタンドアロンのプロシージャまたはファンクションの場合はプロシージャまたはファンクションの名前になります。コール元のプログラム・ユニットが無名ブロックの一部である場合はNULLになります。

lineno

コールが実行されたプログラム・ユニット内の行番号。

caller_t

コールが実行されたプログラム・ユニットのタイプ。可能なタイプは、パッケージ本体、無名ブロック、プロシージャおよびファンクションです。プロシージャおよびファンクションは、スタンドアロンのプロシージャおよびファンクションに対してのみです。

220 SDO_CS

SDO_CSパッケージには、座標系を使用して作業するためのファンクションおよびプロシージャが含まれています。単一のジオメトリまたはジオメトリの全レイヤー(表で指定した列のすべてのジオメトリ)に対して明示的な座標変換を実行できます。

- SDO_CSのドキュメント

SDO_CSのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_CSに関する項を参照してください。

221 SDO_CSW_PROCESS

SDO_CSW_PROCESSパッケージには、Catalog Services for the Web(CSW)のサポートに関連する様々な処理操作のサブプログラムが含まれています。

- SDO_CSW_PROCESSのドキュメント

SDO_CSW_PROCESSのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_CSW_PROCESSに関する項を参照してください。

222 SDO_GCDR

SDO_GCDRパッケージには、Oracle Spatialのジオコーディング・サブプログラムが含まれています。これにより、未フォーマットの郵便用の住所をジオコーディングできます。

- SDO_GCDRのドキュメント

SDO_GCDRのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_GCDRに関する項を参照してください。

223 SDO_GEOM

SDO_GEOMパッケージに含まれているジオメトリ・ファンクションは、次のようなカテゴリにグループ分けできます(それぞれについて例を示します)。

- 2つのオブジェクト間の関係(TRUE/FALSE): RELATE、WITHIN_DISTANCE

- 検証: VALIDATE_GEOMETRY_WITH_CONTEXT、VALIDATE_LAYER_WITH_CONTEXT

- 1つのオブジェクトの操作: SDO_ARC_DENSIFY、SDO_AREA、SDO_BUFFER、SDO_CENTROID、SDO_CONVEXHULL、SDO_LENGTH、SDO_MBR、SDO_POINTONSURFACE

- 2つのオブジェクトの操作: SDO_DISTANCE、SDO_DIFFERENCE、SDO_INTERSECTION、SDO_UNION、SDO_XOR

この章では、次の項目について説明します。

- SDO_GEOMのドキュメント

SDO_GEOMのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_GEOMに関する項を参照してください。

224 SDO_GEOR

SDO_GEORパッケージには、Oracle Spatial GeoRaster機能に使用するファンクションおよびプロシージャが含まれています。これにより、ラスター・イメージ・データとそれに関連する空間ベクター・ジオメトリ・データおよびメタデータの格納、索引付け、問合せ、分析および配信が可能になります。

- SDO_GEORのドキュメント

SDO_GEORのドキュメント

Oracle Spatialのコンテキストでのこのパッケージの詳細は、『Oracle Spatial and Graph GeoRaster開発者ガイド』の「SDO_GEOR」を参照してください。

225 SDO_GEOR_ADMIN

SDO_GEOR_ADMINパッケージには、GeoRasterに関連する管理操作用のサブプログラムが含まれています。

- SDO_GEOR_ADMINのドキュメント

SDO_GEOR_ADMINのドキュメント

Oracle Spatialのコンテキストでのこのパッケージの詳細は、『Oracle Spatial and Graph GeoRaster開発者ガイド』のSDO_GEOR_ADMINに関する項を参照してください。

226 SDO_GEOR_AGGR

SDO_GEOR_AGGRパッケージは、GeoRasterオブジェクトで集計操作を実行するためのインタフェースを提供します。

- SDO_GEOR_AGGRのドキュメント

SDO_GEOR_AGGRのドキュメント

Oracle Spatialのコンテキストでのこのパッケージの詳細は、『Oracle Spatial and Graph GeoRaster開発者ガイド』のSDO_GEOR_AGGRに関する項を参照してください。

227 SDO_GEOR_RA

SDO_GEOR_RAパッケージは、GeoRaster関連のラスター代数と分析操作を実行するためのインタフェースを提供します。

- SDO_GEOR_RAのドキュメント

SDO_GEOR_RAのドキュメント

Oracle Spatialのコンテキストでのこのパッケージの詳細は、『Oracle Spatial and Graph GeoRaster開発者ガイド』のSDO_GEOR_RAに関する項を参照してください。

228 SDO_GEOR_UTL

SDO_GEOR_UTLパッケージには、Oracle Spatial GeoRaster機能に使用するユーティリティのファンクションおよびプロシージャが含まれています。この中にはGeoRasterデータでトリガーを使用する処理に関連するものもあります。

- SDO_GEOR_UTLのドキュメント

SDO_GEOR_UTLのドキュメント

Oracle Spatialのコンテキストでのこのパッケージの詳細は、『Oracle Spatial and Graph GeoRaster開発者ガイド』の「SDO_GEOR_UTL」を参照してください。

229 SDO_LRS

SDO_LRSパッケージには、線形参照要素の作成、変更、問合せおよび変換を行うファンクションが含まれています。

- SDO_LRSのドキュメント

SDO_LRSのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_LRSに関する項を参照してください。

230 SDO_MIGRATE

SDO_MIGRATEパッケージによって、Oracle Spatialの以前のリリースからジオメトリ表をアップグレードできます。

- SDO_MIGRATEのドキュメント

SDO_MIGRATEのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_MIGRATEに関する項を参照してください。

231 SDO_NET

SDO_NETパッケージには、ネットワーク内でノードおよびリンクとしてモデル化されたデータを処理するファンクションおよびプロシージャが含まれています。

- SDO_NETのドキュメント

SDO_NETのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph Topology Data Model and Network Data Model Graph開発者ガイド』のSDO_NETに関する項を参照してください。

232 SDO_OLS

SDO_OLSパッケージには、Spatial OpenLSサポート用のサブプログラムが含まれています。

- SDO_OLSのドキュメント

SDO_OLSのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_OLSに関する項を参照してください。

233 SDO_PC_PKG

SDO_PC_PKGパッケージには、Spatialでの点群の使用をサポートするサブプログラムが含まれています。

- SDO_PC_PKGのドキュメント

SDO_PC_PKGのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_PC_PKGに関する項を参照してください。

234 SDO_SAM

SDO_SAMパッケージには、空間分析およびデータ・マイニングに使用するファンクションおよびプロシージャが含まれています。

- SDO_SAMのドキュメント

SDO_SAMのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_SAMに関する項を参照してください。

235 SDO_TIN_PKG

SDO_TIN_PKGパッケージには、SpatialでのTriangulated Irregular Network(TIN)の使用をサポートするサブプログラムが含まれています。

- SDO_TIN_PKGのドキュメント

SDO_TIN_PKGのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_TIN_PKGに関する項を参照してください。

236 SDO_TOPO

SDO_TOPOパッケージには、Oracle Spatialトポロジを作成および管理するためのサブプログラムが含まれています。

- SDO_TOPOのドキュメント

SDO_TOPOのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph Topology Data Model and Network Data Model Graph開発者ガイド』のSDO_TOPOに関する項を参照してください。

237 SDO_TOPO_MAP

SDO_TOPO_MAPパッケージには、キャッシュを使用してOracle Spatialトポロジを編集する(TopoMapオブジェクト)ために使用するサブプログラムが含まれています。

- SDO_TOPO_MAPのドキュメント

SDO_TOPO_MAPのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph Topology Data Model and Network Data Model Graph開発者ガイド』のSDO_TOPO_MAPに関する項を参照してください。

238 SDO_TUNE

SDO_TUNEパッケージには、Oracle Spatialのチューニング・ファンクションおよびチューニング・プロシージャが含まれています。

- SDO_TUNEのドキュメント

SDO_TUNEのドキュメント

Oracle Spatialのコンテキストでのこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』の「SDO_TUNE」を参照してください。

239 SDO_UTIL

SDO_UTILパッケージには、Oracle Spatial用のユーティリティ・ファンクションおよびプロシージャが含まれています。

- SDO_UTILのドキュメント

SDO_UTILのドキュメント

Oracle Spatialのコンテキストでのこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』の「SDO_UTIL」を参照してください。

240 SDO_WFS_LOCK

SDO_WFS_LOCKパッケージには、機能表を登録および登録解除するためのWFSサポート用のサブプログラムが含まれています。フィーチャ表を登録するとWFSトランザクション・ロッキングに対して表が有効になり、フィーチャ表を登録解除するとWFSトランザクション・ロッキングに対して表が無効になります。

- SDO_WFS_LOCKのドキュメント

SDO_WFS_LOCKのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_WFS_LOCKに関する項を参照してください。

241 SDO_WFS_PROCESS

SDO_WFS_PROCESSパッケージには、Web Feature Serviceのサポートに関連する様々な処理操作のサブプログラムが含まれています。

- SDO_WFS_PROCESSのドキュメント

SDO_WFS_PROCESSのドキュメント

Oracle Spatialのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph開発者ガイド』のSDO_WFS_PROCESSに関する項を参照してください。

242 SEM_APIS

SEM_APISパッケージには、Oracle DatabaseでResource Description Framework(RDF)およびWeb Ontology Language(OWL)を使用して作業するためのサブプログラムが含まれています。

- SEM_APISのドキュメント

SEM_APISのドキュメント

Oracle Databaseセマンティック・テクノロジ・サポートのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph RDF Semantic Graph開発者ガイド』の「SEM_APIS」を参照してください。

243 SEM_OLS

SEM_OLSパッケージは、Oracle Label Security(OLS)を使用してRDFデータのトリプル・レベルのセキュリティを実現するインタフェースを提供します。

- SEM_OLSのドキュメント

SEM_OLSのドキュメント

このパッケージの詳細は、『Oracle Spatial and Graph RDF Semantic Graph開発者ガイド』の「SEM_OLS」を参照してください。

244 SEM_PERF

SEM_PERFパッケージには、Oracle DatabaseでのResource Description Framework(RDF)およびWeb Ontology Language(OWL)サポートのパフォーマンスを検証および拡張するためのサブプログラムが含まれています。

- SEM_PERFのドキュメント

SEM_PERFのドキュメント

Oracle Databaseセマンティック・テクノロジ・サポートのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph RDF Semantic Graph開発者ガイド』の「SEM_PERF」を参照してください。

245 SEM_RDFCTX

SEM_RDFCTXパッケージには、ドキュメントに対して作成されたエクストラクタ・ポリシーとセマンティク索引を管理するサブプログラムが含まれています。

- SEM_RDFCTXのドキュメント

SEM_RDFCTXのドキュメント

Oracle Databaseセマンティック・テクノロジ・サポートのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph RDF Semantic Graph開発者ガイド』の「SEM_RDFCTX」を参照してください。

246 SEM_RDFSA

SEM_RDFSAパッケージには、Virtual Private Database (VPD)またはOracle Label Security (OLS)を使用して、RDFデータに対するファイングレイン・アクセス・コントロールを提供するサブプログラムが含まれています。

- SEM_RDFSAのドキュメント

SEM_RDFSAのドキュメント

Oracle Databaseセマンティック・テクノロジ・サポートのコンテキストにおけるこのパッケージの詳細は、『Oracle Spatial and Graph RDF Semantic Graph開発者ガイド』の「SEM_RDFSA」を参照してください。

247 UTL_CALL_STACK

UTL_CALL_STACKパッケージは、現在実行中のサブプログラムに関する情報を示すインタフェースを提供します。あるファンクションは、サブプログラム名、ユニット名、所有者名、エディション名、および指定された動的深さの行番号を戻します。その他のファンクションはエラー・スタック情報を戻します。

関連項目:

- 条件付きコンパイルについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。

- PL/Scopeの使用およびPL/SQL階層プロファイラの使用については、『Oracle Database開発ガイド』を参照してください。

この章では、次の項目について説明します。

- UTL_CALL_STACKの使用

- 概要

- セキュリティ・モデル

- データ構造

- UTL_CALL_STACKサブプログラムの要約

UTL_CALL_STACKの使用

- 概要

- セキュリティ・モデル

概要

UTL_CALL_STACKパッケージは、動的および字句スタックからのサブプログラム名やこれらのスタックの深さを含め、PL/SQLプログラマが現在実行中のプログラムに関する情報を取得するためのインタフェースを提供します。個々のファンクションは、サブプログラム名、ユニット名、所有者名、エディション名、および指定された動的深さの行番号を戻します。その他のファンクションはエラー・スタック情報を戻します。これらの情報を利用して、より意味の深いエラー・ログやアプリケーション実行トレースを作成することができます。

動的深さ

PL/SQLサブプログラムの実行インスタンスの動的深さは再帰的に定義されます。

- 現在実行中のサブプログラム・インスタンスの動的深さは1です。

- それ以外の場合、サブプログラム・インスタンスの動的深さは、起動されたサブプログラムの動的深さよりも1つ多くなります。

- 実行中のサブプログラムを起動したか、実行中のサブプログラムによって起動されたSQL、Java、または他のPL/SQL以外のコンテキストが存在する場合、それらはサブプログラムであるかのようにコール・スタック上で1つのレベルを占有します。

AがBをコールし、BがCをコールし、CがDをコールし、DがEをコールし、EがFをコールし、FがEをコールするというコール・スタックの場合、このスタックは、動的深さが下に表記されている1つの行として表現できます。

A B C D E F E
7 6 5 4 3 2 1

字句の深さ

PL/SQLサブプログラムの字句深さは再帰的に定義されます。

- ユニット、匿名ブロック、トリガー、またはADTの字句深さは1です。

- 別のオブジェクト内で定義されたサブプログラムの字句深さは、そのオブジェクトの字句深さよりも1つ多くなります。

ブロックは字句深さに影響しません。

エラー深さ

エラー深さとは、エラー・スタック上のエラー数のことです。

たとえば、次の匿名ブロックを考えてみてください。

BEGIN
BEGIN
... (1)
raise zero_divide;
EXCEPTION
when others then
raise no_data_found;
END;
EXCEPTION
WHEN others THEN
... (2)
END;

(1)のエラー深さはゼロ、(2)のエラー深さは2です。

バックトレース

バックトレースとは、例外の発生場所からバックトレースの調査場所までのトレースのことです。

AがBをコールし、BがCをコールし、Cで例外が発生するコール・スタックを考えてみてください。バックトレースがCで調査された場合、バックトレースはCというユニットを1つ持つことになり、バックトレース深さは1になります。Aで調査された場合、そのユニット数はA、B、Cの3つになり、バックトレース深さは3になります。

例外が発生しない場合、バックトレースの深さはゼロです。

セキュリティ・モデル

UTL_CALL_STACKに対するEXECUTEはPUBLICに付与されます。

UTL_CALL_STACKパッケージは、ラップされたプログラム・ユニットを示しません。たとえば、プログラム・ユニットAがBをコールし、BはCをコールし、さらにUTL_CALL_STACKをコールしてサブプログラム・リストを決定するコール・スタックを考えます。プログラム・ユニットBがラップされている場合、サブプログラム・リストはプログラム・ユニットCのみを示します。

使用上の注意

コンパイラ最適化により、字句、動的およびバックトレースの深さを変更できます。

UTL_CALL_STACKは、RPC境界を超えてサポートされません。たとえば、Aがリモート・プロシージャBをコールした場合、BはUTL_CALL_STACKを使用してAに関する情報を取得できなくなります。

字句ユニット情報はPL/SQL条件付きコンパイル機能を通して使用可能になるため、UTL_CALL_STACKでは公開されません。

例外

次の表に、UTL_CALL_STACKで発生する例外を示します。

表247-1 UTL_CALL_STACKで発生する例外

例外

エラー・コード

説明

BAD_DEPTH_INDICATOR

64610

この例外は、指定された深さが境界を超えている場合に発生します。動的深さと字句深さは、正の整数値です。エラー深さとバックトレース深さは負以外の整数値であり、例外がない場合にのみゼロになります。

データ構造

UTL_CALL_STACKパッケージはVARRAYタイプ(UNIT_QUALIFIED_NAME)を定義します。

VARRAYタイプ

- UNIT_QUALIFIED_NAME

UNIT_QUALIFIED_NAME

TYPE UNIT_QUALIFIED_NAME IS VARRAY(256) OF VARCHAR2(32767);

このデータ構造はvarrayであり、個々の要素として順番にユニット名、サブプログラムの字句親、サブプログラム名を持っています。

例

次のように設計されたPL/SQLプロシージャを考えてみましょう。

PROCEDURE topLevel IS
FUNCTION localFunction(...) RETURNS VARCHAR2 IS
FUNCTION innerFunction(...) RETURNS VARCHAR2 IS
BEGIN
DECLARE
localVar PLS_INTEGER;
BEGIN
... (1)
END;
END;
BEGIN
...
END;

(1)におけるユニット修飾名は次のようになります。

["topLevel", "localFunction", "innerFunction"]

ユニットが匿名ブロックであれば、ユニット名は「__anonymous_block」となります。

UTL_CALL_STACKサブプログラムの要約

表247-2 UTL_CALL_STACKパッケージのサブプログラム

サブプログラム

説明

BACKTRACE_DEPTHファンクション

バックトレース内のバックトレースの項目数を戻します。

BACKTRACE_LINEファンクション

指定したバックトレース深さでのユニットの行番号を戻します。

BACKTRACE_UNITファンクション

指定したバックトレース深さでのユニットの名前を戻します。

CURRENT_EDITIONファンクション

指定した動的深さでのサブプログラムのユニットの現在のエディション名を戻します。

CONCATENATE_SUBPROGRAMファンクション

連結形式のユニット修飾名を戻します。

DYNAMIC_DEPTHファンクション

コール・スタック上のサブプログラム数を戻します。

ERROR_DEPTHファンクション

エラー・スタック上のエラー数を戻します。

ERROR_MSGファンクション

指定したエラー深さでのエラーのエラー・メッセージを戻します。

ERROR_NUMBERファンクション

指定したエラー深さでのエラーのエラー番号を戻します。

LEXICAL_DEPTHファンクション

指定した動的深さでのサブプログラムの字句ネスト・レベルを戻します。

OWNERファンクション

指定された動的深さにおけるサブプログラムのユニットの所有者名を返します。

UNIT_LINEファンクション

指定した動的深さでのサブプログラムのユニットの行番号を戻します。

SUBPROGRAMファンクション

指定した動的深さでのサブプログラムのユニット修飾名を戻します。

BACKTRACE_DEPTHファンクション

このファンクションは、バックトレース内のバックトレースの項目数を戻します。

構文

UTL_CALL_STACK.BACKTRACE_DEPTH
RETURN PLS_INTEGER;

戻り値

バックトレース内のバックトレースの項目数であり、例外が存在しない場合はゼロになります。

BACKTRACE_LINEファンクション

このファンクションは、指定したバックトレース深さでのユニットの行番号を戻します。

構文

UTL_CALL_STACK.BACKTRACE_LINE (
backtrace_depth   IN   PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表247-3 BACKTRACE_LINEファンクションのパラメータ

パラメータ

説明

backtrace_depth

バックトレースにおける深さ

戻り値

指定したバックトレース深さでのユニットの行番号

BACKTRACE_UNITファンクション

このファンクションは、指定したバックトレース深さでのユニットの名前を戻します。

構文

UTL_CALL_STACK.BACKTRACE_UNIT (
backtrace_depth   IN   PLS_INTEGER)
RETURN VARCHAR2;

パラメータ

表247-4 BACKTRACE_UNITファンクションのパラメータ

パラメータ

説明

backtrace_depth

バックトレースにおける深さ

戻り値

指定したバックトレース深さでのユニットの名前

CURRENT_EDITIONファンクション

このファンクションは、指定した動的深さでのサブプログラムのユニットの現在のエディション名を戻します。

構文

UTL_CALL_STACK.CURRENT_EDITION (
dynamic_depth    IN    PLS_INTEGER)
RETURN VARCHAR2;

パラメータ

表247-5 CURRENT_EDITIONファンクションのパラメータ

パラメータ

説明

dynamic_depth

エラー・スタックにおける深さ

戻り値

指定した動的深さでのサブプログラムのユニットの現在のエディション名

CONCATENATE_SUBPROGRAMファンクション

このファンクションは、連結形式のユニット修飾名を戻します。

構文

UTL_CALL_STACK.CONCATENATE_SUBPROGRAM (
qualified_name    IN    UNIT_QUALIFIED_NAME)
RETURN VARCHAR2;

パラメータ

表247-6 CONCATENATE_SUBPROGRAMファンクションのパラメータ

パラメータ

説明

qualified_name

ユニット修飾名

戻り値

フォームUNIT.SUBPROGRAM.LOCAL_SUBPROGRAMの文字列

DYNAMIC_DEPTHファンクション

このファンクションは、コール・スタック上のサブプログラム数を戻します。

構文

UTL_CALL_STACK.DYNAMIC_DEPTH
RETURN PLS_INTEGER;

戻り値

コール・スタック上のサブプログラム数

ERROR_DEPTHファンクション

このファンクションは、エラー・スタック上のエラー数を戻します。

構文

UTL_CALL_STACK.ERROR_DEPTH
RETURN PLS_INTEGER;

戻り値

エラー・スタック上のエラーの数

ERROR_MSGファンクション

このファンクションは、指定したエラー深さでのエラーのエラー・メッセージを戻します。

構文

UTL_CALL_STACK.ERROR_MSG (
error_depth    IN    PLS_INTEGER)
RETURN VARCHAR2;

パラメータ

表247-7 ERROR_MSGファンクションのパラメータ

パラメータ

説明

error_depth

エラー・スタックにおける深さ

戻り値

指定したエラー深さでのエラーのエラー・メッセージ

ERROR_NUMBERファンクション

このファンクションは、指定したエラー深さでのエラーのエラー番号を戻します。

構文

UTL_CALL_STACK.ERROR_NUMBER (
error_depth    IN    PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表247-8 ERROR_NUMBERファンクションのパラメータ

パラメータ

説明

error_depth

コール・スタックにおける深さ

戻り値

指定したエラー深さでのエラーのエラー番号

LEXICAL_DEPTHファンクション

このファンクションは、指定した動的深さでのサブプログラムの字句ネスト・レベルを戻します。

構文

UTL_CALL_STACK.LEXICAL_DEPTH (
dynamic_depth    IN    PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表247-9 LEXICAL_DEPTHファンクションのパラメータ

パラメータ

説明

dynamic_depth

コール・スタックにおける深さ

戻り値

指定した動的深さでのサブプログラムの字句ネスト・レベル

OWNERファンクション

このファンクションは、指定した動的深さでのサブプログラムのユニットの所有者名を戻します。

構文

UTL_CALL_STACK.OWNER (
dynamic_depth    IN    PLS_INTEGER)
RETURN VARCHAR2;

パラメータ

表247-10 OWNERファンクションのパラメータ

パラメータ

説明

dynamic_depth

コール・スタックにおける深さ

戻り値

指定した動的深さでのサブプログラムのユニットの所有者名

UNIT_LINEファンクション

このファンクションは、指定した動的深さでのサブプログラムのユニットの行番号を戻します。

構文

UTL_CALL_STACK.UNIT_LINE (
dynamic_depth    IN    PLS_INTEGER)
RETURN PLS_INTEGER;

パラメータ

表247-11 UNIT_LINEファンクションのパラメータ

パラメータ

説明

dynamic_depth

コール・スタックにおける深さ

戻り値

指定した動的深さでのサブプログラムのユニットの行番号

SUBPROGRAMファンクション

このファンクションは、指定した動的深さでのサブプログラムのユニット修飾名を戻します。

構文

UTL_CALL_STACK.SUBPROGRAM (
dynamic_depth    IN    PLS_INTEGER)
RETURN UNIT_QUALIFIED_NAME;

パラメータ

表247-12 SUBPROGRAMファンクションのパラメータ

パラメータ

説明

dynamic_depth

コール・スタックにおける深さ

戻り値

指定した動的深さでのサブプログラムのユニット修飾名を戻します。

248 UTL_COLL

UTL_COLLパッケージによって、問合せや更新を行うためのコレクション・ロケータをPL/SQLプログラムで使用できます。

この章では、次の項目について説明します。

- UTL_COLLサブプログラムの要約

UTL_COLLサブプログラムの要約

表248-1 UTL_COLLパッケージのサブプログラム

サブプログラム

説明

IS_LOCATORファンクション

コレクション項目が実際にロケータかどうかを判別します。

IS_LOCATORファンクション

このファンクションは、コレクション項目が実際にロケータかどうかを判別します。

構文

UTL_COLL.IS_LOCATOR (
coln IN STANDARD)
RETURNS BOOLEAN;

プラグマ

WNDS、WNPSおよびRNPSの各プラグマの断言。

パラメータ

表248-2 IS_LOCATORファンクションのパラメータ

パラメータ

説明

coln

ネストした表またはVARRAY項目

戻り値

表248-3 IS_LOCATORファンクションの戻り値

戻り値

説明

1

コレクション項目はロケータです。

0

コレクション項目はロケータではありません。

例

CREATE OR REPLACE TYPE list_t as TABLE OF VARCHAR2(20);
/

CREATE OR REPLACE TYPE phone_book_t AS OBJECT (
pno  number,
ph   list_t );
/

CREATE TABLE phone_book OF phone_book_t
NESTED TABLE ph STORE AS nt_ph;
CREATE TABLE phone_book1 OF phone_book_t
NESTED TABLE ph STORE AS nt_ph_1 RETURN LOCATOR;

INSERT INTO phone_book VALUES(1, list_t('650-633-5707','650-323-0953'));
INSERT INTO phone_book1 VALUES(1, list_t('415-555-1212'));

CREATE OR REPLACE PROCEDURE chk_coll IS
plist list_t;
plist1 list_t;
BEGIN
SELECT ph INTO plist FROM phone_book WHERE pno=1;

SELECT ph INTO plist1 FROM phone_book1 WHERE pno=1;

IF (UTL_COLL.IS_LOCATOR(plist)) THEN
DBMS_OUTPUT.PUT_LINE('plist is a locator');
ELSE
DBMS_OUTPUT.PUT_LINE('plist is not a locator');
END IF;

IF (UTL_COLL.IS_LOCATOR(plist1)) THEN
DBMS_OUTPUT.PUT_LINE('plist1 is a locator');
ELSE
DBMS_OUTPUT.PUT_LINE('plist1 is not a locator');
END IF;

END chk_coll;

SET SERVEROUTPUT ON
EXECUTE chk_coll;

249 UTL_COMPRESS

UTL_COMPRESSパッケージは、一連のデータ圧縮ユーティリティを提供します。

この章では、次の項目について説明します。

- UTL_COMPRESSの使用方法

- 定数

- 例外

- 使用上の注意

- UTL_COMPRESSサブプログラムの要約

UTL_COMPRESSの使用方法

- 定数

- 例外

- 使用上の注意

定数

ピース単位操作に使用するハンドルの最大数を定義します。

UTLCOMP_MAX_HANDLE   CONSTANT  PLS_INTEGER := 5;

例外

表249-1 UTL_COMPRESSの例外

例外

説明

BUFFER_TOO_SMALL

圧縮後の表現が大きすぎます。

DATA_ERROR

入力または出力データ・ストリームの書式が無効です。

INVALID_ARGUMENT

1つの引数のタイプまたは値が無効です。

INVALID_HANDLE

ピース単位の圧縮または圧縮解除には無効なハンドルです。

STREAM_ERROR

データ・ストリームの圧縮または圧縮解除中にエラーが発生しました。

使用上の注意

- LZ*ファンクションによって戻された一時LOBは、コール元がDBMS_LOB.FREETEMPORARYコールを使用して解放する必要があります。

- LZ_COMPRESS*またはLZ_UNCOMPRESS*に渡されたBFILEは、DBMS_LOB.FILEOPENでオープンする必要があります。

- 特別な状況(入力がすでに圧縮されている場合)では、UTL_COMPRESSサブプログラムの1つで生成された出力が、入力と同じ大きさかまたは入力よりもわずかに大きくなることがあります。

- UTL_COMPRESSで圧縮したデータの出力は、1つのファイル上のgzip(-nオプションを指定)/gunzipと互換性があります。

UTL_COMPRESSサブプログラムの要約

表249-2 UTL_COMPRESSパッケージのサブプログラム

サブプログラム

説明

ISOPENファンクション

ピース単位の圧縮(または圧縮解除)コンテキストに対するハンドルが、オープンしているかクローズしているかどうかを確認します。

LZ_COMPRESSファンクションおよびプロシージャ

Lempel-Ziv圧縮アルゴリズムを使用してデータを圧縮します。

LZ_COMPRESS_ADDプロシージャ

1つの圧縮データを追加します。

LZ_COMPRESS_CLOSE

ピース単位の圧縮操作をクローズして終了します。

LZ_COMPRESS_OPEN

圧縮状態とデータを保持するピース単位のコンテキストを初期化します。

LZ_UNCOMPRESSファンクションおよびプロシージャ

圧縮された入力を受け入れ、有効であることを確認して圧縮を解除します。

LZ_UNCOMPRESS_EXTRACTプロシージャ

1つの圧縮解除データを抽出します。

LZ_UNCOMPRESS_OPENファンクション

圧縮解除状態とデータを保持するピース単位のコンテキストを初期化します。

LZ_UNCOMPRESS_CLOSEプロシージャ

ピース単位の圧縮解除をクローズして終了します。

ISOPENファンクション

このファンクションは、ピース単位の圧縮(または圧縮解除)コンテキストに対するハンドルが、オープンしているかクローズしているかどうかを確認します。

構文

UTL_COMPRESS.ISOPEN(
handle in binary_integer)
RETURN BOOLEAN;

パラメータ

表249-3 ISOPENファンクションのパラメータ

パラメータ

説明

handle

ピース単位の圧縮解除コンテキストへのハンドル。

戻り値

指定したピース単位のハンドルがオープンしている場合はTRUE、それ以外の場合はFALSE。

例

IF (UTL_COMPRESS.ISOPEN(myhandle) = TRUE) then
UTL_COMPRESS.LZ_COMPRESS_CLOSE(myhandle, lob_1);
END IF;

次のようにコーディングすることもできます。

IF (UTL_COMPRESS.ISOPEN(myhandle) = TRUE) THEN
UTL_COMPRESS.LZ_UNCOMPRESS_CLOSE(myhandle);
END IF;

LZ_COMPRESSファンクションおよびプロシージャ

このファンクションおよびプロシージャでは、Lempel-Ziv圧縮アルゴリズムを使用してデータを圧縮します。

構文

次のファンクションは、RAWを入力として使用し、圧縮して、圧縮後のRAWの結果とメタデータを戻します。

UTL_COMPRESS.LZ_COMPRESS (
src       IN           RAW,
quality   IN           BINARY_INTEGER DEFAULT 6)
RETURN RAW;

次のファンクションは、BLOBを入力として使用し、圧縮して、圧縮後のデータの一時BLOBを戻します。

UTL_COMPRESS.LZ_COMPRESS (
src       IN           BLOB,
quality   IN           BINARY_INTEGER DEFAULT 6)
RETURN BLOB;

次のプロシージャは、圧縮後のデータを、圧縮後のデータ・サイズにトリミングした既存のBLOB(dst)に戻します。

UTL_COMPRESS.LZ_COMPRESS (
src      IN            BLOB,
dst      IN OUT NOCOPY BLOB,
quality  IN            BINARY_INTEGER DEFAULT 6);

次のファンクションは、圧縮後のデータの一時BLOBを戻します。

UTL_COMPRESS.LZ_COMPRESS (
src     IN            BFILE,
quality IN            BINARY_INTEGER DEFAULT 6)
RETURN BLOB;

次のプロシージャは、圧縮後のデータを、圧縮後のデータ・サイズにトリミングした既存のBLOB(dst)に戻します。

UTL_COMPRESS.LZ_COMPRESS (
src     IN            BFILE,
dst     IN OUT NOCOPY BLOB,
quality IN            BINARY_INTEGER DEFAULT 6);

パラメータ

表249-4 LZ_COMPRESSファンクションおよびプロシージャのパラメータ

パラメータ

説明

src

圧縮するデータ(RAW、BLOBまたはBFILE)。

dst

圧縮したデータを戻す宛先。

quality

1から9の範囲の整数。1は高速圧縮、9は最も効率のよい圧縮を指定します。デフォルトは6です。

使用上の注意

- qualityは、オプションの圧縮チューニング値です。UTL_COMPRESSの使用時に、速度と圧縮品質の関係(サイズ縮小の割合)を選択できます。圧縮速度を速くすると、データの圧縮率が低くなります。圧縮速度を遅くすると、データの圧縮率が高くなります。有効な値は1から9で、1が最も速く、9が最も遅くなります。qualityのデフォルト値は6です。

LZ_COMPRESS_ADDプロシージャ

このプロシージャは、1つの圧縮データを追加します。

構文

UTL_COMPRESS.LZ_COMPRESS_ADD (
handle IN             BINARY_INTEGER,
dst    IN OUT NOCOPY  BLOB,
src    IN             RAW);

パラメータ

表249-5 LZ_COMPRESS_ADDプロシージャのパラメータ

パラメータ

説明

handle

ピース単位の圧縮コンテキストへのハンドル。

dst

圧縮したデータを格納するために、LZ_COMPRESS_OPENによってオープンしたLOB。

src

圧縮する入力データ。

例外

- invalid_handle - 範囲外であるため無効か、ハンドルがオープンではありません。

- invalid_argument - handle、srcまたはdstの値がNULLであるか、dstの値が無効です。

LZ_COMPRESS_CLOSE

このプロシージャは、ピース単位の圧縮操作をクローズして終了します。

構文

UTL_COMPRESS.LZ_COMPRESS_CLOSE (
handle IN             BINARY_INTEGER,
dst    IN OUT NOCOPY  BLOB);

パラメータ

表249-6 LZ_COMPRESS_CLOSEプロシージャのパラメータ

パラメータ

説明

handle

ピース単位の圧縮コンテキストへのハンドル。

dst

圧縮したデータを格納するために、LZ_COMPRESS_OPENによってオープンしたLOB。

例外

- invalid_handle - 範囲外であるため無効か、ハンドルが初期化されていません。

- invalid_argument - handle、dstの値がNULLであるか、dstの値が無効です。

LZ_COMPRESS_OPEN

このファンクションは、圧縮状態とデータを保持するピース単位のコンテキストを初期化します。

構文

UTL_COMPRESS.LZ_COMPRESS_OPEN (
dst       IN OUT NOCOPY BLOB,
quality   IN            BINARY_INTEGER DEFAULT 6)
RETURN BINARY_INTEGER;

パラメータ

表249-7 LZ_COMPRESS_OPENファンクションのパラメータ

パラメータ

説明

dst

圧縮したデータを格納するためにユーザーが提供するLOB。

quality

結果としての圧縮出力の速度と効率の関係。

- 有効な値の範囲は1から9で、デフォルト値は6です。

- 1は最も速い圧縮です。9は最も遅い圧縮ですが、最適な圧縮ファイル・サイズになります。

戻り値

初期化されたピース単位の圧縮コンテキストへのハンドル。

例外

- invalid_handle - ハンドルが無効か、オープンしているハンドルが多すぎます。

- invalid_argument - dstの値がNULLであるか、qualityの指定が無効です。

使用上の注意

次の場合には、オープンしているハンドルをLZ_COMPRESS_CLOSEでクローズしてください。

- ピース単位の圧縮が完了したとき

- 処理の途中で例外が発生したとき

クローズしないとハンドルがリークします。

LZ_UNCOMPRESSファンクションおよびプロシージャ

このプロシージャは、RAW、BLOBまたはBFILEで圧縮された文字列を入力として使用し、有効な圧縮値であることを検証し、Lempel-Ziv圧縮アルゴリズムを使用して圧縮を解除して、圧縮を解除したRAWまたはBLOBの結果を戻します。

構文

次のファンクションは、圧縮解除後のデータをRAWとして戻します。

UTL_COMPRESS.LZ_UNCOMPRESS(
src  IN  RAW)
RETURN RAW;

次のファンクションは、圧縮解除後のデータを一時BLOBとして戻します。

UTL_COMPRESS.LZ_UNCOMPRESS(
src  IN  BLOB)
RETURN BLOB;

次のプロシージャは、圧縮解除後のデータを既存のBLOB(dst)に戻します。BLOBは圧縮解除後のデータ・サイズにトリミングされます。

UTL_COMPRESS.LZ_UNCOMPRESS(
src  IN  BLOB,
dst  IN OUT NOCOPY BLOB);

次のファンクションは、圧縮解除後のデータの一時BLOBを戻します。

UTL_COMPRESS.LZ_UNCOMPRESS(
src  IN BFILE)
RETURN BLOB;

次のプロシージャは、圧縮解除後のデータを既存のBLOB(dst)に戻します。元のdstのデータは上書きされます。

UTL_COMPRESS.LZ_UNCOMPRESS(
src  IN  BFILE,
dst  IN OUT NOCOPY BLOB);

パラメータ

表249-8 LZ_UNCOMPRESSファンクションおよびプロシージャのパラメータ

パラメータ

説明

src

圧縮したデータ。

dst

圧縮解除したデータを戻す宛先。

LZ_UNCOMPRESS_EXTRACTプロシージャ

このプロシージャは、1つの圧縮解除データを抽出します。

構文

UTL_COMPRESS.LZ_UNCOMPRESS_EXTRACT(
handle  IN          BINARY_INTEGER,
dst     OUT NOCOPY  RAW);

パラメータ

表249-9 LZ_UNCOMPRESS_EXTRACTファンクションのパラメータ

パラメータ

説明

handle

ピース単位の圧縮解除コンテキストへのハンドル。

dst

圧縮解除したデータ。

例外

- no_data_found - 圧縮解除が終了しました。

- invalid_handle - 範囲外であるため無効か、ハンドルが初期化されていません。

- invalid_argument - handleの値がNULLです。

LZ_UNCOMPRESS_OPENファンクション

このファンクションは、圧縮解除状態とデータを保持するピース単位のコンテキストを初期化します。

構文

UTL_COMPRESS.LZ_UNCOMPRESS_OPEN(
src  IN  BLOB)
RETURN BINARY_INTEGER;

パラメータ

表249-10 LZ_UNCOMPRESS_OPENファンクションのパラメータ

パラメータ

説明

src

圧縮解除する入力データ。

戻り値

初期化されたピース単位の圧縮コンテキストへのハンドル。

例外

- invalid_handle - ハンドルが無効か、オープンしているハンドルが多すぎます。

- invalid_argument - srcの値がNULLです。

使用上の注意

次の場合には、オープンしているハンドルをLZ_UNCOMPRESS_CLOSEでクローズしてください。

- ピース単位の圧縮解除が完了したとき

- 処理の途中で例外が発生したとき

クローズしないとハンドルがリークします。

LZ_UNCOMPRESS_CLOSEプロシージャ

このプロシージャは、ピース単位の圧縮解除をクローズして終了します。

構文

UTL_COMPRESS.LZ_UNCOMPRESS_CLOSE(
handle  IN   BINARY_INTEGER);

パラメータ

表249-11 LZ_UNCOMPRESS_CLOSEプロシージャのパラメータ

パラメータ

説明

handle

ピース単位の圧縮解除コンテキストへのハンドル。

例外

- invalid_handle - 範囲外であるため無効か、ハンドルが初期化されていません。

- invalid_argument - handleの値がNULLです。

250 UTL_ENCODE

UTL_ENCODEパッケージは、ホスト間でのデータ転送が可能になるように、RAWデータを標準形式にエンコードするファンクションを提供します。UTL_ENCODEファンクションを使用して、電子メール・テキストの本体をエンコードできます。また、このパッケージには、エンコード・ファンクションの対としてデコード・ファンクションも含まれています。デコード・ファンクションはエンコードの標準に準拠しており、送受信側においてOracle以外のユーティリティに対応しています。

この章では、次の項目について説明します。

- UTL_ENCODEサブプログラムの要約

UTL_ENCODEサブプログラムの要約

表250-1 UTL_ENCODEパッケージのサブプログラム

サブプログラム

説明

BASE64_DECODEファンクション

BASE 64にエンコードされたRAW入力文字列を読み込み、元のRAW値にデコードします。

BASE64_ENCODEファンクション

RAW値のバイナリ表現をBASE 64要素にエンコードし、RAW文字列の形式で戻します。

MIMEHEADER_DECODEファンクション

文字列をMIMEヘッダー形式からデコードします。

MIMEHEADER_ENCODEファンクション

文字列をMIMEヘッダー形式にエンコードします。

QUOTED_PRINTABLE_DECODEファンクション

引用符付きの出力可能な形式のVARCHAR2の入力文字列を読み込み、対応するRAW文字列にデコードします。

QUOTED_PRINTABLE_ENCODEファンクション

RAW入力文字列を読み込み、引用符付きの出力可能な形式の対応文字列にエンコードします。

TEXT_DECODEファンクション

キャラクタ・セットを区別するテキスト文字列をデコードします。

TEXT_ENCODEファンクション

キャラクタ・セットを区別するテキスト文字列をエンコードします。

UUDECODEファンクション

RAWのuuencode形式の入力文字列を読み込み、対応するRAW文字列にデコードします。

UUENCODEファンクション

RAW入力文字列を読み込み、対応するuuencode形式の文字列にエンコードします。

BASE64_DECODEファンクション

このファンクションは、BASE 64にエンコードされたRAW入力文字列を読み込み、元のRAW値にデコードします。

構文

UTL_ENCODE.BASE64_DECODE (
r  IN RAW)
RETURN RAW;

プラグマ

pragma RESTRICT_REFERENCES(base64_decode, WNDS, RNDS, WNPS, RNPS);

パラメータ

表250-2 BASE64_DECODEファンクションのパラメータ

パラメータ

説明

r

BASE 64にエンコードされたデータを含むRAW文字列。デフォルトのパラメータもオプションのパラメータも設定されていません。

戻り値

表250-3 BASE64_DECODEファンクションの戻り値

戻り値

説明

RAW

デコードされた文字列を含みます。

BASE64_ENCODEファンクション

このファンクションは、RAW値のバイナリ表現をBASE 64要素にエンコードし、RAW文字列の形式で戻します。

構文

UTL_ENCODE.BASE64_ENCODE (
r  IN RAW)
RETURN RAW;

プラグマ

pragma RESTRICT_REFERENCES(base64_encode, WNDS, RNDS, WNPS, RNPS);

パラメータ

表250-4 BASE64_ENCODEファンクションのパラメータ

パラメータ

説明

r

エンコードされるRAW値。デフォルトのパラメータもオプションのパラメータも設定されていません。

戻り値

表250-5 BASE64_ENCODEファンクションの戻り値

戻り値

説明

RAW

エンコードされたBASE 64要素を含みます。

MIMEHEADER_DECODEファンクション

このファンクションは、次の形式のエンコードされた語句を入力として受け入れます。

=?<charset>?<encoding>?<encoded text>?=
=?ISO-8859-1?Q?Here is some encoded text?=

<encoded text>はMIMEヘッダー・タグで囲まれ、文字列のデコード方法に関するMIMEHEADER_DECODEファンクション情報を示します。MIMEヘッダー・メタデータ・タグは入力文字列から取り除かれ、<encoded text>は次のようにデータベースのベース・キャラクタ・セットに変換されます。

- UTF16プラットフォームの場合は、エンコードされたテキストがUTF16からASCIIに変換されます。

- EBCDICプラットフォームの場合は、エンコードされたテキストがEBCDICからASCIIに変換されます。

- ASCIIまたはUTF8プラットフォームの場合は、変換は不要です。

文字列は、エンコードされた語句内の<encoding>メタデータ・タグの指定に従って、quoted-printableデコード形式またはBASE64デコード形式のどちらかを使用してデコードされます。変換およびデコードの結果としてのテキストは、VARCHAR2文字列としてコール元に戻されます。

構文

UTL_ENCODE.MIMEHEADER_DECODE (
buf    IN   VARCHAR2 CHARACTER SET ANY_CS)
RETURN data VARCHAR2 CHARACTER SET buf%CHARSET;

パラメータ

表250-6 MIMEHEADER_DECODEファンクションのパラメータ

パラメータ

説明

buf

MIMEヘッダー形式のタグのあるエンコードされたテキスト・データ。

戻り値

表250-7 MIMEHEADER_DECODEファンクションの戻り値

戻り値

説明

data

MIMEヘッダー形式のタグのあるエンコードされたテキスト・データ。

例

v2:=utl_encode.mimeheader_decode('=?ISO-8859-1?Q?Here is some encoded text?=');

MIMEHEADER_ENCODEファンクション

このファンクションは、次の形式のエンコードされた語句を出力として戻します。

=?<charset>?<encoding>?<encoded text>?=
=?ISO-8859-1?Q?Here is some text?=

buf入力パラメータはエンコード対象のテキストであり、<encoded text>になります。

<encoding>の値は"Q"または"B"になり、それぞれquoted-printableのエンコードまたはBASE64のエンコードを表します。ENCODING入力パラメータは、UTL_ENCODE.QUOTED_PRINTABLE、UTL_ENCODE.BASE64またはNULLを有効な値として受け入れます。NULLの場合は、quoted-printableのエンコードがデフォルト値として選択されます。

<charset>の値は、入力パラメータencode_charsetとして指定されます。NULLの場合は、データベース・キャラクタ・セットがデフォルト値として選択されます。

MIMEヘッダー・エンコード処理には、buf入力文字列からencode_charsetパラメータで指定されるキャラクタ・セットへの変換も含まれます。変換された文字列は、quoted-printableエンコード形式またはBASE64エンコード形式のいずれかにエンコードされます。MIMEヘッダー・タグは、後に追加される場合と前に付加される場合があります。

最終的に、文字列は次のようにデータベースのベース・キャラクタ・セットに変換されます。

- UTF16プラットフォームの場合は、エンコードされたテキストがUTF16に変換されます。

- EBCDICプラットフォームの場合は、エンコードされたテキストがEBCDICに変換されます。

- ASCIIまたはUTF8プラットフォームの場合は、変換は不要です。

構文

UTL_ENCODE.MIMEHEADER_ENCODE (
buf            IN  VARCHAR2 CHARACTER SET ANY_CS,
encode_charset IN  VARCHAR2 DEFAULT NULL,
encoding       IN  PLS_INTEGER DEFAULT NULL)
RETURN string VARCHAR2 CHARACTER SET buf%CHARSET;

パラメータ

表250-8 MIMEHEADER_ENCODEファンクションのパラメータ

パラメータ

説明

buf

テキスト・データ。

encode_charset

ターゲット・キャラクタ・セット。

encoding

エンコード形式。有効な値はUTL_ENCODE.BASE64、UTL_ENCODE.QUOTED_PRINTABLEおよびNULLです。

戻り値

表250-9 MIMEHEADER_ENCODEファンクションの戻り値

戻り値

説明

string

MIMEヘッダー形式のタグを持つ、VARCHAR2にエンコードされた文字列。

QUOTED_PRINTABLE_DECODEファンクション

このファンクションは、引用符付きの出力可能な形式のVARCHAR2の入力文字列を読み込み、対応するRAW文字列にデコードします。

構文

UTL_ENCODE.QUOTED_PRINTABLE_DECODE (
r  IN RAW)
RETURN RAW;

プラグマ

pragma RESTRICT_REFERENCES(quoted_printable_decode, WNDS, RNDS, WNPS, RNPS);

パラメータ

表250-10 QUOTED_PRINTABLE_DECODEファンクションのパラメータ

パラメータ

説明

r

引用符付きの出力可能なデータ文字列を含むRAW文字列。デフォルトのパラメータもオプションのパラメータも設定されていません。

戻り値

表250-11 QUOTED_PRINTABLE_DECODEファンクションの戻り値

戻り値

説明

RAW

デコードされた文字列。

QUOTED_PRINTABLE_ENCODEファンクション

このファンクションは、RAW入力文字列を読み込み、引用符付きの出力可能な形式の対応文字列にエンコードします。

構文

UTL_ENCODE.QUOTED_PRINTABLE_ENCODE (
r  IN RAW)
RETURN RAW;

プラグマ

pragma RESTRICT_REFERENCES(quoted_printable_encode, WNDS, RNDS,WNPS, RNPS);

パラメータ

表250-12 QUOTED_PRINTABLE_ENCODEファンクションのパラメータ

パラメータ

説明

r

RAW文字列。デフォルトのパラメータもオプションのパラメータも設定されていません。

戻り値

表250-13 QUOTED_PRINTABLE_ENCODEファンクションの戻り値

戻り値

説明

RAW

引用符付きの出力可能な文字列を含みます。

TEXT_DECODEファンクション

このファンクションをNULL以外に設定すると、encode_charsetパラメータの指定に従って、入力テキストがターゲット・キャラクタ・セットに変換されます。エンコードされたテキストは、次のようにデータベースのベース・キャラクタ・セットに変換されます。

- UTF16プラットフォームの場合は、エンコードされたテキストがUTF16からASCIIに変換されます。

- EBCDICプラットフォームの場合は、エンコードされたテキストがEBCDICからASCIIに変換されます。

- ASCIIまたはUTF8プラットフォームの場合は、変換は不要です。

それぞれのencodingパラメータに従って、quoted-printable形式またはBASE64形式のいずれかからデコードできます。NULLの場合は、quoted-printable形式がデフォルトのデコード形式として選択されます。encode_charsetがNULL以外の場合は、指定したキャラクタ・セットからデータベース・キャラクタ・セットに文字列が変換されます。デコードされ、変換された結果としてのテキスト文字列がコール元に戻されます。

構文

UTL_ENCODE.TEXT_DECODE(
buf            IN  VARCHAR2 CHARACTER SET ANY_CS,
encode_charset IN  VARCHAR2 DEFAULT NULL,
encoding       IN  PLS_INTEGER DEFAULT NULL)
RETURN string VARCHAR2 CHARACTER SET buf%CHARSET;

パラメータ

表250-14 TEXT_DECODEファンクションのパラメータ

パラメータ

説明

buf

エンコードされたテキスト・データ。

encode_charset

ソース・キャラクタ・セット。

encoding

エンコード形式。有効な値はUTL_ENCODE.BASE64、UTL_ENCODE.QUOTED_PRINTABLEおよびNULLです。

戻り値

表250-15 TEXT_DECODEファンクションの戻り値

戻り値

説明

string

VARCHAR2にデコードされたテキスト文字列。

例

v2:=UTL_ENCODE.TEXT_DECODE(
'Here is some text',
WE8ISO8859P1,
UTL_ENCODE.BASE64);

TEXT_ENCODEファンクション

このファンクションをNULL以外に設定すると、encode_charsetパラメータの指定に従って、入力テキストがターゲット・キャラクタ・セットに変換されます。テキストは、encodingパラメータの指定に従って、BASE64形式またはquoted-printable形式のどちらかにエンコードされます。encodingをNULLに設定すると、quoted-printable形式がデフォルトとして選択されます。

エンコードされたテキストは、次のようにデータベースのベース・キャラクタ・セットに変換されます。

- UTF16プラットフォームの場合は、エンコードされたテキストがUTF16に変換されます。

- EBCDICプラットフォームの場合は、エンコードされたテキストがEBCDICに変換されます。

- ASCIIまたはUTF8プラットフォームの場合は、変換は不要です。

エンコードされ、変換された結果としてのテキスト文字列がコール元に戻されます。

構文

UTL_ENCODE.TEXT_ENCODE (
buf            IN  VARCHAR2 CHARACTER SET ANY_CS,
encode_charset IN  VARCHAR2 DEFAULT NULL,
encoding       IN  PLS_INTEGER DEFAULT NULL)
RETURN string VARCHAR2 CHARACTER SET buf%CHARSET;

パラメータ

表250-16 TEXT_ENCODEファンクションのパラメータ

パラメータ

説明

buf

テキスト・データ。

encode_charset

ターゲット・キャラクタ・セット。

encoding

エンコード形式。有効な値はUTL_ENCODE.BASE64、UTL_ENCODE.QUOTED_PRINTABLEおよびNULLです。

戻り値

表250-17 TEXT_ENCODEファンクションの戻り値

戻り値

説明

string

MIMEヘッダー形式のタグを持つ、VARCHAR2にエンコードされた文字列。

例

v2:=utl_encode.text_encode(
'Here is some text',
'WE8ISO8859P1',
UTL_ENCODE.BASE64);

UUDECODEファンクション

このファンクションは、RAWのuuencode形式の入力文字列を読み込み、対応するRAW文字列にデコードします。データ・ストリームでのUUENCODEおよびUUDECODEの累積性については、「UUENCODEファンクション」を参照してください。

構文

UTL_ENCODE.UUDECODE (
r  IN RAW)
RETURN RAW;

プラグマ

pragma RESTRICT_REFERENCES(uudecode, WNDS, RNDS, WNPS, RNPS);

パラメータ

表250-18 UUDECODEファンクションのパラメータ

パラメータ

説明

r

uuencodeにエンコードされたデータ文字列を含むRAW文字列。デフォルトのパラメータもオプションのパラメータも設定されていません。

戻り値

表250-19 UUDECODEファンクションの戻り値

戻り値

説明

RAW

デコードされたRAW文字列。

UUENCODEファンクション

このファンクションは、RAW入力文字列を読み取り、対応するuuencode形式の文字列にエンコードします。このファンクションの出力は累積されます。つまり、このファンクションを使用すると、データ・ストリームを許容サイズのRAW値に分割してエンコードし、エンコードされた単一の文字列に連結することで、大容量のデータ・ストリームをエンコードできます。

構文

UTL_ENCODE.UUENCODE (
r          IN RAW,
type       IN PLS_INTEGER DEFAULT 1,
filename   IN VARCHAR2 DEFAULT NULL,
permission IN VARCHAR2 DEFAULT NULL) RETURN RAW;

プラグマ

pragma RESTRICT_REFERENCES(uuencode, WNDS, RNDS, WNPS, RNPS);

パラメータ

表250-20 UUENCODEファンクションのパラメータ

パラメータ

説明

r

RAW文字列

type

uuencodeにエンコードされた出力のタイプを含むオプションの数値パラメータ。オプション:

complete: 1の値を持つPL/SQLの事前定義定数。(デフォルト)header_piece ...middle_piece ...end_piece

filename

uuencodeファイル名を含むオプションのVARCHAR2パラメータ。デフォルトはuuencode.txtです。

permission

アクセス権モードを含むオプションのVARCHAR2パラメータ。デフォルトは0(テキスト文字列のゼロ)です。

戻り値

表250-21 UUENCODEファンクションの戻り値

戻り値

説明

RAW

uuencode形式の文字列を含みます。

251 UTL_FILE

UTL_FILEパッケージを使用して、PL/SQLプログラムでオペレーティング・システムのテキスト・ファイルの読込みと書込みができます。UTL_FILEは、オペレーティング・システムのストリーム・ファイルI/Oの制約付きバージョンを提供します。

この章では、次の項目について説明します。

- UTL_FILEの使用方法

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- 例外

- 例

- データ構造

- UTL_FILEサブプログラムの要約

UTL_FILEの使用方法

- セキュリティ・モデル

- 使用上の注意

- ルールおよび制限

- 例外

- 例

セキュリティ・モデル

ユーザーがUTL_FILEを使用してアクセスできるファイルおよびディレクトリのセットは、ファクタおよびデータベース・パラメータの数によって制御されます。最初にアクセスできるのは、ユーザーが権限を付与されているディレクトリ・オブジェクトのセットです。ディレクトリ・オブジェクトの性質については、『Oracle Database SQL言語リファレンス』を参照してください。

ユーザーがディレクトリ・オブジェクトUSER_DIRに対してREADとWRITEの両方のアクセス権を持つ場合、USER_DIRで記述されているオペレーティング・システム・ディレクトリにあるファイルを開くことはできますが、このディレクトリのサブディレクトリや親ディレクトリにあるファイルを開くことはできません。

最後に、クライアント側(テキストI/O)とサーバー側の両方の実装について、オペレーティング・システム・ファイルに対するアクセス権限のチェックが行われます。

UTL_FILEでは、クライアント側とサーバー側の両方からのファイル・アクセスが提供されています。UTL_FILEをサーバー上で実行すると、そのサーバーからアクセスできるすべてのオペレーティング・システム・ファイルにアクセスできます。クライアント側では、Formsアプリケーションの場合と同様に、UTL_FILEによって、クライアントからアクセスできるオペレーティング・システム・ファイルへのアクセスが提供されます。

これまではUTL_FILEファンクションのアクセス可能なディレクトリは、UTL_FILE_DIRパラメータを使用して初期化ファイルに指定してきました。ただし、UTL_FILE_DIRへのアクセスはお薦めしません。かわりにディレクトリ・オブジェクト機能を使用することをお薦めします。この機能によって、UTL_FILE_DIRが置き換えられます。UTL_FILEのアプリケーション管理者による柔軟できめ細かい制御を可能にするディレクトリ・オブジェクトは、動的に(データベースを停止しないで)メンテナンスでき、Oracleの他のツールとの一貫性を保持しています。CREATE ANY DIRECTORY権限は、SYSおよびSYSTEMに対してのみデフォルトで付与されます。

注意:
ディレクトリのアクセス検証には、UTL_FILE_DIRではなく、CREATE DIRECTORY機能を使用してください。

ハード・リンクまたはシンボリック・リンクのいずれもサポートされていないことに注意してください。

UNIXシステムでは、FOPENファンクションで作成したファイルにはそのファイルの所有者、つまりインスタンスを実行するシャドウ・プロセスの所有者がいます。通常、この所有者はORACLEです。FOPENを使用して作成されたファイルは、UTL_FILEサブプログラムを使用する書込みと読込みが常に可能です。ただし、権限のないオペレーティング・システムのユーザーがPL/SQLの外部でこれらのファイルを読む必要がある場合は、システム管理者からのアクセス権の入手が必要になることがあります。

注意:

ディレクトリ・オブジェクト内のファイルにアクセスするために必要な権限は、オペレーティング・システムに固有の権限です。UTL_FILEディレクトリ・オブジェクト権限によって、ユーザーには、特定ディレクトリ内のすべてのファイルに対する読取りと書込みのアクセス権限が与えられます。

使用上の注意

ファイルの場所とファイル名の各パラメータは、別々の文字列としてFOPENファンクションに指定されるため、ファイルの場所は、アクセス可能なディレクトリ・オブジェクトのALL_DIRECTORIESビューで指定したアクセス可能なディレクトリのリストと照合してチェックできます。ファイルの場所と名前は、システム上の有効なファイル名である必要があり、ディレクトリはアクセス可能である必要があります。アクセス可能なディレクトリのサブディレクトリは、必ずしもアクセス可能である必要はありません。サブディレクトリも、ALL_DIRECTORIESオブジェクトと一致する完全パス名を使用して指定する必要があります。

UTL_FILEは読込み要求に対する行終了記号を暗黙的に解析するため、GET_LINEコールに対して戻されるバイト数に影響を与えます。たとえば、UTL_FILE.GET_LINEのlenパラメータは、文字データの要求バイト数を指定します。実際にユーザーに戻されるバイト数は、次のいずれかの値よりも少なくなります。

- GET_LINEのlenパラメータ

- 次の行終了文字までのバイト数

- UTL_FILE.FOPENによって指定されたmax_linesizeパラメータ

FOPEN max_linesizeパラメータは、1から32767の範囲内の数字である必要があります。指定がない場合は、デフォルト値である1024が指定されます。GET_LINE lenパラメータは、1から32767の範囲内の数字である必要があります。指定がない場合は、デフォルト値のmax_linesizeが指定されます。max_linesizeとlenに異なる値が指定された場合は、小さい方の値が優先されます。

UTL_FILE.GET_RAWは行終了記号を無視します。

UTL_FILEでは、UTL_FILE.FOPENによってテキスト・モードでオープンされるファイルは、データベースのキャラクタ・セットにエンコードされます。UTL_FILE.FOPEN_NCHARによってテキスト・モードでオープンされるファイルは、UTF8キャラクタ・セットにエンコードされます。オープンされたファイルが目的のキャラクタ・セットにエンコードされない場合、ファイルの読取り試行の結果は不定です。1つのキャラクタ・セットにエンコードされたデータが読み取られ、そのデータを別のキャラクタ・セットにエンコードするようにグローバリゼーション・サポートが命じられた(NLS_LANGなどを使用して)場合、結果は不定です。NLS_LANGを設定する場合は、データベースのキャラクタ・セットと同じものにする必要があります。

ルールおよび制限

UNIXでのCシェル環境変数などのオペレーティング・システム固有のパラメータは、ファイルの場所またはファイル名のパラメータでは使用できません。

UTL_FILEのI/O機能は、標準のオペレーティング・システムに備えられたストリーム・ファイルのI/O(OPEN、GET、PUT、CLOSE)機能に類似していますが、いくつかの点で制限があります。たとえば、FOPENファンクションをコールすると、ファイル・ハンドルが戻されますが、後続のGET_LINEまたはPUTのコールでこのファイル・ハンドルを使用し、ファイルへのストリームI/Oを実行します。ファイルのI/Oが完了した場合、FCLOSEをコールして出力を完了し、そのファイルに関連付けられたリソースを解放します。

注意:
UTL_FILEパッケージは、Oracle Procedure Builderが提供しているクライアント側のTEXT_IOパッケージと類似しています。サーバー・インプリメンテーションに対する制約事項には、UTL_FILEとTEXT_IOの間である程度のAPIに差異が必要です。PL/SQLのファイルI/Oでは、PL/SQL例外を使用して、ユーザーにエラーが戻されます。

例外

表251-1 UTL_FILEパッケージの例外

例外名

説明

INVALID_PATH

ファイルの場所が無効です。

INVALID_MODE

FOPEN内のopen_modeパラメータが無効です。

INVALID_FILEHANDLE

ファイル・ハンドルが無効です。

INVALID_OPERATION

要求どおりにファイルをオープンできないか、または操作できません。

READ_ERROR

宛先のバッファが小さすぎるか、または読取り操作中にオペレーティング・システムのエラーが発生しました。

WRITE_ERROR

書込み操作中にオペレーティング・システムのエラーが発生しました。

INTERNAL_ERROR

PL/SQL内の未指定エラー。

CHARSETMISMATCH

ファイルはFOPEN_NCHARを使用してオープンされていますが、後のI/O操作ではPUTFまたはGET_LINEなどのnoncharファンクションを使用します。

FILE_OPEN

要求した操作は、ファイルがオープンしているため失敗しました。

INVALID_MAXLINESIZE

FOPEN()のMAX_LINESIZE値が無効です。1から32767の範囲内の値にしてください。

INVALID_FILENAME

ファイル名パラメータが無効です。

ACCESS_DENIED

ファイルの場所に対するアクセス許可が拒否されました。

INVALID_OFFSET

INVALID_OFFSET例外の原因には次のようなものがあります。

- ABSOLUTE_OFFSET = NULLとRELATIVE_OFFSET = NULLが同時に発生

- ABSOLUTE_OFFSET < 0、または

- ファイルの終わりを超える検索がどちらかのオフセットで発生

DELETE_FAILED

要求したファイルの削除操作に失敗しました。

RENAME_FAILED

要求したファイル名変更操作に失敗しました。

UTL_FILEにおけるプロシージャでは、NO_DATA_FOUNDまたはVALUE_ERRORのような事前定義済のPL/SQL例外が発生することもあります。

例

例1

注意:
ここに示す例はUNIX固有のものです。

次の文があるとします。

SQL> CREATE DIRECTORY log_dir AS '/appl/gl/log';
SQL> GRANT READ ON DIRECTORY log_dir TO DBA;
SQL> GRANT WRITE ON DIRECTORY log_dir TO DBA;

SQL> CREATE DIRECTORY USER_DIR AS '/appl/gl/user'';
SQL> GRANT READ ON DIRECTORY USER_DIR TO PUBLIC;
SQL> GRANT WRITE ON DIRECTORY USER_DIR TO PUBLIC;

有効でアクセス可能なファイルの場所とファイル名は、次のとおりです。

ファイルの場所

ファイル名

読込みおよび書込み

/appl/gl/log

L12345.log

DBA権限を持つユーザー

/appl/gl/user

u12345.tmp

すべてのユーザー

次のファイルの場所とファイル名は無効です。

ファイルの場所

ファイル名

無効の理由

/appl/gl/log/backup

L12345.log

#サブディレクトリにアクセスできません。

/APPL/gl/log

L12345.log

#ディレクトリの文字列は、O/Sで要求されている大/小文字区別ルールに従う必要があります。

/appl/gl/log

backup/L1234.log

#ファイル名にディレクトリ・パスの一部が含まれていない可能性があります。

/user/tmp

L12345.log

#対応するCREATE DIRECTORYコマンドが発行されていません。

例2

DECLARE
V1 VARCHAR2(32767);
F1 UTL_FILE.FILE_TYPE;
BEGIN
-- In this example MAX_LINESIZE is less than GET_LINE's length request
-- so the number of bytes returned will be 256 or less if a line terminator is seen.
F1 := UTL_FILE.FOPEN('USER_DIR','u12345.tmp','R',256);
UTL_FILE.GET_LINE(F1,V1,32767);
UTL_FILE.FCLOSE(F1);

-- In this example, FOPEN's MAX_LINESIZE is NULL and defaults to 1024,
-- so the number of bytes returned will be 1024 or less if a line terminator is seen.
F1 := UTL_FILE.FOPEN('USER_DIR','u12345.tmp','R');
UTL_FILE.GET_LINE(F1,V1,32767);
UTL_FILE.FCLOSE(F1);

-- In this example, GET_LINE doesn't specify a number of bytes, so it defaults to
-- the same value as FOPEN's MAX_LINESIZE which is NULL in this case and defaults to 1024.
-- So the number of bytes returned will be 1024 or less if a line terminator is seen.
F1 := UTL_FILE.FOPEN('USER_DIR','u12345.tmp','R');
UTL_FILE.GET_LINE(F1,V1);
UTL_FILE.FCLOSE(F1);
END;

データ構造

UTL_FILEパッケージは、レコード・タイプを定義します。

レコード・タイプ

- FILETYPEレコード・タイプ

FILETYPEレコード・タイプ

FILE_TYPEの内容は、UTL_FILEパッケージ専用です。このレコードのコンポーネントを参照または変更しないでください。

TYPE file_type IS RECORD (
id          BINARY_INTEGER,
datatype    BINARY_INTEGER,
byte_mode   BOOLEAN);

フィールド

表251-2 FILE_TYPEのフィールド

フィールド

説明

id

内部ファイル・ハンドル番号を示す数値。

datatype

ファイルのタイプを示します(CHARファイル、Ncharファイルまたは他のファイル(バイナリ))。

byte_mode

ファイルがバイナリ・ファイルとしてオープンされたか、テキスト・ファイルとしてオープンされたかを示します。

注意:
データベース・セッション間または単一セッション内でのFILE_TYPE値の永続性は保証されていません。ファイル・ハンドルのクローン化やダミー・ファイルの使用を試みると、予測できない結果が生じる可能性があります。

UTL_FILEサブプログラムの要約

表251-3 UTL_FILEサブプログラム

サブプログラム

説明

FCLOSEプロシージャ

ファイルをクローズします。

FCLOSE_ALLプロシージャ

オープンしているファイル・ハンドルをすべてクローズします。

FCOPYプロシージャ

ファイルの連続部分を新規に作成したファイルにコピーします。

FFLUSHプロシージャ

保留中のすべての出力データを物理的にファイルへ書き込みます。

FGETATTRプロシージャ

ディスク・ファイルの属性を読み込んで戻します。

FGETPOSファンクション

ファイル内の現行の相対オフセット位置をバイト数で戻します。

FOPENファンクション

入力用または出力用にファイルをオープンします。

FOPEN_NCHARファンクション

入力用または出力用にファイルをUnicodeでオープンします。

FREMOVEプロシージャ

ユーザーに十分な権限があるという前提で、ディスク・ファイルを削除します。

FRENAMEプロシージャ

UNIXのmvファンクションと同じように、既存のファイルに新規の名前を指定します。

FSEEKプロシージャ

指定したバイトの数だけ、ファイル内でポインタを前方または後方に調整します。

GET_LINEプロシージャ

オープンしているファイルからテキストを読み込みます。

GET_LINE_NCHARプロシージャ

オープンしているファイルからテキストをUnicodeで読み込みます。

GET_RAWプロシージャ

RAW文字列値をファイルから読み込み、読み込んだバイトの数だけ、ファイルのポインタを前方に調整します。

IS_OPENファンクション

ファイル・ハンドルが、オープンしているファイルを参照しているかどうかを判別します。

NEW_LINEプロシージャ

1つ以上のオペレーティング・システム固有の行終了記号をファイルに書き込みます。

PUTプロシージャ

ファイルに1つの文字列を書き込みます。

PUT_LINEプロシージャ

ファイルに1行書き込み、それによってオペレーティング・システム固有の行終了記号を1つ追加します。

PUT_LINE_NCHARプロシージャ

ファイルにUnicode行を1行書き込みます。

PUT_NCHARプロシージャ

ファイルに1つのUnicode文字列を書き込みます。

PUTFプロシージャ

書式付きのPUTプロシージャです。

PUTF_NCHARプロシージャ

書式付きのPUT_NCHARプロシージャ。ファイルにUnicode文字列を1つ、書式付きで書き込みます。

PUT_RAWプロシージャ

RAWデータ値を入力として受け入れ、出力バッファに書き込みます。

FCLOSEプロシージャ

このプロシージャは、ファイル・ハンドルが示すオープン・ファイルをクローズします。

構文

UTL_FILE.FCLOSE (
file IN OUT FILE_TYPE);

パラメータ

表251-4 FCLOSEプロシージャのパラメータ

パラメータ

説明

file

FOPENまたはFOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。

使用上の注意

FCLOSEの実行時に、まだ書き込んでいないデータがバッファに残っていると、ファイルのクローズ時にWRITE_ERROR例外を受け取る場合があります。

例外

WRITE_ERROR
INVALID_FILEHANDLE

FCLOSE_ALLプロシージャ

このプロシージャは、セッションでオープンしているすべてのファイル・ハンドルをクローズします。これは、PL/SQLプログラムの例外終了などの非常時のクリーンアップ・プロシージャとして使用します。

構文

UTL_FILE.FCLOSE_ALL;

使用上の注意

注意:
FCLOSE_ALLは、ユーザーが保持しているオープン・ファイル・ハンドルの状態は変更しません。つまり、FCLOSE_ALLコール後のファイル・ハンドルのIS_OPENテストでは、たとえファイルがすでにクローズしていてもTRUEが戻されます。FCLOSE_ALLの前にオープンされたファイルには、以降の読込み操作や書込み操作を行うことができません。

例外

WRITE_ERROR

FCOPYプロシージャ

このプロシージャは、ファイルの連続部分を新規に作成したファイルにコピーします。デフォルトでは、start_lineパラメータとend_lineパラメータが省略されると、ファイル全体がコピーされます。ソース・ファイルは読取りモードでオープンします。宛先ファイルは書込みモードでオープンします。ソース・ファイルのコピー操作では、ファイルの一部を選択するために、開始および終了の行番号をオプションで指定できます。

構文

UTL_FILE.FCOPY (
src_location    IN VARCHAR2,
src_filename    IN VARCHAR2,
dest_location   IN VARCHAR2,
dest_filename   IN VARCHAR2,
start_line      IN BINARY_INTEGER DEFAULT 1,
end_line        IN BINARY_INTEGER DEFAULT NULL);

パラメータ

表251-5 FCOPYプロシージャのパラメータ

パラメータ

説明

src_location

ソース・ファイルのディレクトリ位置。ALL_DIRECTORIESビューのDIRECTORY_NAME(大/小文字が区別されます)。

src_filename

コピー対象のソース・ファイル。

dest_location

宛先ファイルが作成される宛先ディレクトリ。

dest_filename

ソース・ファイルから作成された宛先ファイル。

start_line

コピー操作を開始する行の番号。デフォルトは、最初の行の1です。

end_line

コピー操作を停止する行の番号。デフォルトは、ファイルの最後を示すNULLです。

例外

INVALID_FILENAME

INVALID_PATH

INVALID_OPERATION

INVALID_OFFSET

READ_ERROR

WRITE_ERROR

FFLUSHプロシージャ

FFLUSHは、ファイル・ハンドルが示すファイルに、保留中のデータを物理的に書き込みます。ファイルに書き込むデータは通常バッファリングされます。FFLUSHプロシージャは、バッファリングされているデータを強制的にファイルに書き込みます。データは改行文字で終了する必要があります。

フラッシュは、まだオープンしているファイルを読み込む必要がある場合に役立ちます。たとえば、デバッグ・メッセージをファイルにフラッシュして、即時に読み込むことができます。

構文

UTL_FILE.FFLUSH (
file  IN FILE_TYPE);

パラメータ

表251-6 FFLUSHプロシージャのパラメータ

パラメータ

説明

file

FOPENまたはFOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。

例外

INVALID_FILENAME

INVALID_MAXLINESIZE

INVALID_OPERATION

WRITE_ERROR

FGETATTRプロシージャ

このプロシージャは、ディスク・ファイルの属性を読み込んで戻します。

構文

UTL_FILE.FGETATTR(
location     IN VARCHAR2,
filename     IN VARCHAR2,
fexists      OUT BOOLEAN,
file_length  OUT NUMBER,
block_size   OUT BINARY_INTEGER);

パラメータ

表251-7 FGETATTRプロシージャのパラメータ

パラメータ

説明

location

ソース・ファイルのディレクトリ位置。ALL_DIRECTORIESビューのDIRECTORY_NAME(大/小文字が区別されます)。

filename

検証されるファイルの名前。

fexists

ファイルが存在するかどうかを示すブール値。

file_length

ファイルの長さ(バイト単位)。ファイルが存在しない場合はNULLです。

block_size

ファイル・システムのブロック・サイズ(バイト単位)。ファイルが存在しない場合はNULLです。

例外

INVALID_PATH

INVALID_FILENAME

INVALID_OPERATION

READ_ERROR

ACCESS_DENIED

FGETPOSファンクション

このファンクションは、ファイル内の現行の相対オフセット位置をバイト数で戻します。

構文

UTL_FILE.FGETPOS (
file IN FILE_TYPE)
RETURN PLS_INTEGER;

パラメータ

表251-8 FGETPOSのパラメータ

パラメータ

説明

file

ソース・ファイルのディレクトリ位置。

戻り値

FGETPOSは、オープン・ファイルの相対的なオフセット位置をバイト数で戻します。ファイルがオープンしていない場合は、例外が発生します。ファイルの先頭では、0が戻されます。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

READ_ERROR

使用上の注意

ファイルがバイト・モード操作用にオープンしている場合は、INVALID OPERATION例外が発生します。

FOPENファンクション

このファンクションは、ファイルをオープンします。最大行サイズを指定でき、最大50ファイルまで同時にオープンできます。「FOPEN_NCHARファンクション」も参照してください。

構文

UTL_FILE.FOPEN (
location     IN VARCHAR2,
filename     IN VARCHAR2,
open_mode    IN VARCHAR2,
max_linesize IN BINARY_INTEGER DEFAULT 1024)
RETURN FILE_TYPE;

パラメータ

表251-9 FOPENファンクションのパラメータ

パラメータ

説明

location

ファイルのディレクトリ位置。この文字列はディレクトリのオブジェクト名で、大文字で指定する必要があります。UTL_FILEのユーザーがFOPENを実行するには、このディレクトリに対する読取り権限が付与されている必要があります。

filename

拡張子(ファイル・タイプ)も含めたファイル名で、ディレクトリ・パスはありません。ディレクトリ・パスがファイル名の一部として指定される場合も、FOPENに無視されます。UNIXでのファイル名は、/で終了できません。

open_mode

ファイルのオープン方法を指定します。次のモードがあります。

- r -- テキストの読込み

- w -- テキストの書込み

- a -- テキストの追加

- rb -- バイトの読込み

- wb -- バイトの書込み

- ab -- バイトの追加

open_modeに'a'や'ab'を指定してファイルをオープンしようとしたときに、そのファイルが存在しない場合、ファイルは書込みモードで作成されます。

max_linesize

改行文字を含むこのファイルの1行当たりの最大文字数(最小値は1、最大値は32767)。指定がない場合は、デフォルト値である1024が指定されます。

戻り値

FOPENは、そのファイルを操作する後続プロシージャすべてに渡す必要のあるファイル・ハンドルを戻します。ファイル・ハンドルの特定の内容は、UTL_FILEパッケージ専用であり、UTL_FILEのユーザーは、個々のコンポーネントの参照または変更を行わないでください。

表251-10 FOPENファンクションの戻り値

戻り値

説明

FILE_TYPE

オープン・ファイルのハンドル。

例外

INVALID_MAXILINESIZE

INVALID_MODE

INVALID_OPERATION

INVALID_PATH

INVALID_FILENAME

使用上の注意

ファイルの場所とファイル名の各パラメータは、引用符付きの文字列としてFOPENファンクションに指定する必要があります。これによってファイルの場所を、アクセス可能なディレクトリ・オブジェクトのALL_DIRECTORIESビューで指定されたアクセス可能なディレクトリのリストと照合してチェックできます。

FOPEN_NCHARファンクション

このファンクションは、指定した最大行サイズで入力用または出力用ファイルを各国語キャラクタ・セット・モードでオープンします。最大50ファイルまで同時にオープンできます。このファンクションを使用すると、データベース・キャラクタ・セットではなくUnicodeでテキスト・ファイルの読込みまたは書込みを実行できます。

NVARCHAR2のバッファの内容が(データベースの各国語キャラクタ・セットによっては)AL16UTF16またはUTF8の可能性がある場合でも、ファイルの内容は常にUTF8で読取りおよび書込みされます。UTL_FILEは、必要に応じてUTF8とAL16UTF16の間で変換を行います。

「FOPENファンクション」も参照してください。

構文

UTL_FILE.FOPEN_NCHAR (
location     IN VARCHAR2,
filename     IN VARCHAR2,
open_mode    IN VARCHAR2,
max_linesize IN BINARY_INTEGER DEFAULT 1024)
RETURN FILE_TYPE;

パラメータ

表251-11 FOPEN_NCHARファンクションのパラメータ

パラメータ

説明

location

ファイルのディレクトリ位置。

filename

ファイル名(拡張子を含む)。

open_mode

ファイルをオープンするモード(r、w、a、rb、wb、ab)

max_linesize

改行文字を含むこのファイルの1行当たりの最大文字数(最小値は1、最大値は32767)。

戻り値

FOPEN_NCHARは、そのファイルを操作する後続プロシージャすべてに渡す必要のあるファイル・ハンドルを戻します。ファイル・ハンドルの特定の内容は、UTL_FILEパッケージ専用であり、UTL_FILEのユーザーは、個々のコンポーネントの参照または変更を行わないでください。

表251-12 FOPEN_NCHARファンクションの戻り値

戻り値

説明

FILE_TYPE

オープン・ファイルのハンドル。

例外

INVALID_MAXILINESIZE

INVALID_MODE

INVALID_OPERATION

INVALID_PATH

FREMOVEプロシージャ

このプロシージャは、ユーザーに十分な権限があるという前提で、ディスク・ファイルを削除します。

構文

UTL_FILE.FREMOVE (
location IN VARCHAR2,
filename IN VARCHAR2);

パラメータ

表251-13 FREMOVEプロシージャのパラメータ

パラメータ

説明

location

ファイルのディレクトリ位置。ALL_DIRECTORIESビューのDIRECTORY_NAME(大/小文字が区別されます)。

filename

削除されるファイルの名前。

例外

ACCESS_DENIED

DELETE_FAILED

INVALID_FILENAME

INVALID_OPERATION

INVALID_PATH

使用上の注意

FREMOVEプロシージャでは、ファイルを削除する前に権限の有無を検証しません。ファイルとディレクトリに対するアクセス権限は、O/Sによって検証されます。障害時には、例外が戻されます。

FRENAMEプロシージャ

このプロシージャは、UNIXのmvファンクションと同じように、既存のファイルに新規の名前を指定します。

構文

UTL_FILE.FRENAME (
src_location     IN   VARCHAR2,
src_filename     IN   VARCHAR2,
dest_location    IN   VARCHAR2,
dest_filename    IN   VARCHAR2,
overwrite        IN   BOOLEAN DEFAULT FALSE);

パラメータ

表251-14 FRENAMEプロシージャのパラメータ

パラメータ

説明

src_location

ソース・ファイルのディレクトリ位置。ALL_DIRECTORIESビューのDIRECTORY_NAME(大/小文字が区別されます)。

src_filename

名前変更対象のソース・ファイル。

dest_location

宛先ファイルの宛先ディレクトリ。ALL_DIRECTORIESビューのDIRECTORY_NAME(大/小文字が区別されます)。

dest_filename

ファイルの新しい名前。

overwrite

デフォルトはFALSEです。ソース・ディレクトリと宛先ディレクトリの両方に対するアクセス権限の付与が必要です。宛先ディレクトリにファイルがある場合は、overwriteパラメータを使用して、そのファイルを上書きするかどうかを指定できます。デフォルトは、上書きしない場合のFALSEです。

例外

ACCESS_DENIED

INVALID_FILENAME

INVALID_PATH

RENAME_FAILED

FSEEKプロシージャ

このプロシージャは、指定したバイトの数だけ、ファイル内でポインタを前方または後方に調整します。

構文

UTL_FILE.FSEEK (
file             IN OUT  UTL_FILE.FILE_TYPE,
absolute_offset  IN      PL_INTEGER DEFAULT NULL,
relative_offset  IN      PLS_INTEGER DEFAULT NULL);

パラメータ

表251-15 FSEEKプロシージャのパラメータ

パラメータ

説明

file

ファイル・ハンドル。

absolute_offset

検索先の絶対位置。デフォルト=NULL。

relative_offset

前方または後方に検索するバイト数。正数=前方、負の整数=後方、0(ゼロ)=現在の位置、デフォルト=NULL。

例外

INVALID_FILEHANDLE

INVALID_OFFSET

INVALID_OPERATION

READ_ERROR

使用上の注意

- FSEEKを使用すると、最初にファイルのクローズと再オープンを行わずに、ファイル内の前の行を読み込むことができます。ナビゲートするバイト数を把握しておく必要があります。

- relative_offsetを使用する場合、このプロシージャは前方検索(relative_offset > 0の場合)、または後方検索(relative_offset < 0の場合)を行い、指定されたrelative_offsetバイトの数のみファイルを検索します。

- 指定されたバイト数に至る前にファイルの先頭まで到達した場合、ファイル・ポインタはファイルの先頭に置かれます。指定されたバイト数に至る前にファイルの終わりに達した場合、INVALID_OFFSETエラーが発生します。

- absolute_offsetの場合、このプロシージャは、バイト数で指定された絶対位置を検索します。

- ファイルがバイト・モード操作用にオープンしている場合は、INVALID OPERATION例外が発生します。

GET_LINEプロシージャ

このプロシージャは、ファイル・ハンドルが示すオープン・ファイルからテキストを1行読み込んで、出力バッファ・パラメータに配置します。テキストは、ファイルまたはlenパラメータの最後まで読み込まれますが、行の終了記号は含まれません。FOPENに指定されているmax_linesizeを超えることはできません。

構文

UTL_FILE.GET_LINE (
file        IN  FILE_TYPE,
buffer      OUT VARCHAR2,
len         IN  PLS_INTEGER DEFAULT NULL);

パラメータ

表251-16 GET_LINEプロシージャのパラメータ

パラメータ

説明

file

FOPENコールが戻すアクティブなファイル・ハンドル。

ファイルは読込み用(モードr)としてオープンする必要があります。そうでない場合は、INVALID_OPERATION例外が発生します。

buffer

ファイルから読み込まれた行を受け取るデータ・バッファ。

len

ファイルから読み込むバイト数。デフォルトはNULLです。NULLを指定すると、max_linesizeの値が設定されます。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

NO_DATA_FOUND

READ_ERROR

使用上の注意

行がバッファに収まらない場合は、READ_ERROR例外が発生します。ファイルの終わりに到達したためにテキストが読み込まれなかった場合は、NO_DATA_FOUND例外が発生します。ファイルがバイト・モード操作用にオープンしている場合は、INVALID_OPERATION例外が発生します。

行終了記号の文字はバッファに読み込まれないため、ブランク行を読み込むと空の文字列が戻されます。

bufferパラメータの最大サイズは、より小さいサイズをFOPENに指定しないかぎり、32767バイトです。指定しない場合は、デフォルト値の1024が設定されます。「GET_LINE_NCHARプロシージャ」も参照してください。

GET_LINE_NCHARプロシージャ

このプロシージャは、ファイル・ハンドルが示すオープン・ファイルからテキストを1行読み込んで、出力バッファ・パラメータに配置します。このファンクションを使用すると、データベース・キャラクタ・セットではなくUnicodeでテキスト・ファイルの読込みを実行できます。

ファイルは、各国語キャラクタ・セット・モードでオープンされ、UTF8キャラクタ・セットにエンコードされます。想定されるバッファのデータ・タイプは、NVARCHAR2です。別のデータ・タイプ(NCHAR、NCLOBまたはVARCHAR2など)の変数が指定されていると、テキストの読取り後にNVARCHAR2から標準の暗黙的な変換が実行されます。

「GET_LINEプロシージャ」も参照してください。

構文

UTL_FILE.GET_LINE_NCHAR (
file        IN  FILE_TYPE,
buffer      OUT NVARCHAR2,
len         IN  PLS_INTEGER DEFAULT NULL);

パラメータ

表251-17 GET_LINE_NCHARプロシージャのパラメータ

パラメータ

説明

file

FOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。このファイルは読込み用(モードr)にオープンされる必要があります。ファイルをFOPEN_NCHARではなくFOPENでオープンした場合は、CHARSETMISMATCH例外が発生します。

buffer

ファイルから読み込まれた行を受け取るデータ・バッファ。

len

ファイルから読み込むバイト数。デフォルトはNULLです。NULLを指定すると、max_linesizeの値が設定されます。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

NO_DATA_FOUND

READ_ERROR

GET_RAWプロシージャ

このプロシージャは、RAW文字列値をファイルから読み込み、読み込んだバイトの数だけ、ファイルのポインタを前方に調整します。UTL_FILE.GET_RAWは行終了記号を無視します。

構文

UTL_FILE.GET_RAW (
file       IN            UTL_FILE.FILE_TYPE,
buffer     OUT NOCOPY    RAW,
len        IN            PLS_INTEGER DEFAULT NULL);

パラメータ

表251-18 GET_RAWプロシージャのパラメータ

パラメータ

説明

file

ファイル・ハンドル。

buffer

RAWデータ。

len

ファイルから読み込むバイト数。デフォルトはNULLです。NULLの場合、lenはRAWの最大長とみなされます。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

LENGTH_MISMATCH

NO_DATA_FOUND

READ_ERROR

使用上の注意

このサブプログラムでは、ファイルの最後を超えて読込みを試みるときにNo_Data_Found例外が発生します。アプリケーションの処理ループ内でこの例外を捕捉して、この状態を許可する必要があります。

PROCEDURE Sys.p (n IN VARCHAR2) IS
h     UTL_FILE.FILE_TYPE := UTL_FILE.FOPEN('D', n, 'r', 32767);
Buf   RAW(32767);
Amnt  CONSTANT PLS_INTEGER := 32767;
BEGIN
LOOP
BEGIN
Utl_File.Get_Raw(h, Buf, Amnt);
-- Do something with this chunk
EXCEPTION WHEN No_Data_Found THEN EXIT; END;
END LOOP;
UTL_FILE.FCLOSE (h);
END;

IS_OPENファンクション

このファンクションは、オープン・ファイルをファイル・ハンドルが識別しているかどうかをテストします。IS_OPENは、ファイル・ハンドルが、オープン状態でクローズしていないファイルを示しているかどうかを通知するのみです。これは、ユーザーがファイル・ハンドルを使用しようとしたときに、オペレーティング・システムのエラーが発生しないことを保証するものではありません。

構文

UTL_FILE.IS_OPEN (
file  IN FILE_TYPE)
RETURN BOOLEAN;

パラメータ

表251-19 IS_OPENファンクションのパラメータ

パラメータ

説明

file

FOPENまたはFOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。

戻り値

TRUEまたはFALSE

例外

INVALID_FILEHANDLE

NEW_LINEプロシージャ

このプロシージャは、入力ファイル・ハンドルが示すファイルに、1つ以上の行終了記号を書き込みます。行終了記号はプラットフォーム固有の文字や文字列であるため、このプロシージャはPUTとは異なります。

構文

UTL_FILE.NEW_LINE (
file     IN FILE_TYPE,
lines    IN BINARY_INTEGER := 1);

パラメータ

表251-20 NEW_LINEプロシージャのパラメータ

パラメータ

説明

file

FOPENまたはFOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。

lines

ファイルに書き込む行終了記号の数。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

PUTプロシージャ

PUTプロシージャは、ファイル・ハンドルが示すオープン・ファイルに、バッファ・パラメータ内に格納されているテキスト文字列を書き込みます。このファイルは書込み操作用にオープンされる必要があります。PUTは、行終了記号を追加しません。NEW_LINEを使用して行を終了するか、またはPUT_LINEを使用して行終了記号付きの完全な1行を書き込んでください。「PUT_NCHARプロシージャ」も参照してください。

構文

UTL_FILE.PUT (
file      IN FILE_TYPE,
buffer    IN VARCHAR2);

パラメータ

表251-21 PUTプロシージャのパラメータ

パラメータ

説明

file

FOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。このファイルは書込み用にオープンされる必要があります。

buffer

ファイルに書き込むテキストを含んだバッファ。

ファイルはモードwまたはモードaを使用してオープンする必要があります。これ以外のモードを使用すると、INVALID_OPERATION例外が発生します。

使用上の注意

bufferパラメータの最大サイズは、より小さいサイズをFOPENに指定しないかぎり、32767バイトです。指定がない場合は、デフォルト値である1024が指定されます。連続したPUTコールの全合計は、途中でバッファ・フラッシュをしないかぎり、32767を超えません。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

PUT_LINEプロシージャ

このプロシージャは、ファイル・ハンドルが示すオープン・ファイルに、バッファ・パラメータ内に格納されているテキスト文字列を書き込みます。このファイルは書込み操作用にオープンされる必要があります。PUT_LINEは、プラットフォーム固有の行終了文字または文字列で行を終了します。

「PUT_LINE_NCHARプロシージャ」も参照してください。

構文

UTL_FILE.PUT_LINE (
file      IN FILE_TYPE,
buffer    IN VARCHAR2,
autoflush IN BOOLEAN DEFAULT FALSE);

パラメータ

表251-22 PUT_LINEプロシージャのパラメータ

パラメータ

説明

file

FOPENコールが戻すアクティブなファイル・ハンドル。

buffer

ファイルに書き込む行を含んだテキスト・バッファ。

autoflush

WRITEの後で、バッファをディスクにフラッシュします。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

使用上の注意

- bufferパラメータの最大サイズは、より小さいサイズをFOPENに指定しないかぎり、32767バイトです。指定がない場合は、デフォルト値である1024が指定されます。連続したPUTコールの全合計は、途中でバッファ・フラッシュをしないかぎり、32767を超えません。

- ファイルがバイト・モード操作用にオープンしている場合は、INVALID OPERATION例外が発生します。

PUT_LINE_NCHARプロシージャ

このプロシージャは、ファイル・ハンドルが示すオープン・ファイルに、バッファ・パラメータ内に格納されているテキスト文字列を書き込みます。このファンクションを使用すると、データベース・キャラクタ・セットではなくUnicodeでテキスト・ファイルの書込みを実行できます。このプロシージャは、書き込まれたテキストに行セパレータが追加されることを除いて、PUT_NCHARプロシージャと同じです。「PUT_LINEプロシージャ」も参照してください。

構文

UTL_FILE.PUT_LINE_NCHAR (
file    IN FILE_TYPE,
buffer  IN NVARCHAR2);

パラメータ

表251-23 PUT_LINE_NCHARプロシージャのパラメータ

パラメータ

説明

file

FOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。このファイルは書込み用にオープンされる必要があります。

buffer

ファイルに書き込む行を含んだテキスト・バッファ。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

使用上の注意

- bufferパラメータの最大サイズは、より小さいサイズをFOPENに指定しないかぎり、32767バイトです。指定がない場合は、デフォルト値である1024が指定されます。連続したPUTコールの全合計は、途中でバッファ・フラッシュをしないかぎり、32767を超えません。

- ファイルがバイト・モード操作用にオープンしている場合は、INVALID OPERATION例外が発生します。

PUT_NCHARプロシージャ

このプロシージャは、ファイル・ハンドルが示すオープン・ファイルに、バッファ・パラメータ内に格納されているテキスト文字列を書き込みます。

このファンクションを使用すると、データベース・キャラクタ・セットではなくUnicodeでテキスト・ファイルの書込みを実行できます。このファイルは、各国語キャラクタ・セット・モードでオープンされる必要があります。テキスト文字列は、UTF8キャラクタ・セットで書き込まれます。想定されるバッファのデータ・タイプは、NVARCHAR2です。別のデータ・タイプの変数が指定されていると、テキストの書込み前にNVARCHAR2への暗黙的な変換が実行されます。

「PUTプロシージャ」も参照してください。

構文

UTL_FILE.PUT_NCHAR (
file      IN FILE_TYPE,
buffer    IN NVARCHAR2);

パラメータ

表251-24 PUT_NCHARプロシージャのパラメータ

パラメータ

説明

file

FOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。ファイルをFOPEN_NCHARではなくFOPENでオープンした場合は、CHARSETMISMATCH例外が発生します。

buffer

ファイルに書き込むテキストを含んだバッファ。

ファイルはモードwまたはモードaを使用してオープンする必要があります。これ以外のモードを使用すると、INVALID_OPERATION例外が発生します。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

使用上の注意

bufferパラメータの最大サイズは、より小さいサイズをFOPENに指定しないかぎり、32767バイトです。指定がない場合は、デフォルト値である1024が指定されます。連続したPUTコールの全合計は、途中でバッファ・フラッシュをしないかぎり、32767を超えません。

PUTFプロシージャ

このプロシージャは、書式付きのPUTプロシージャです。これは、制限付きのprintf()のように動作します。「PUTF_NCHARプロシージャ」も参照してください。

構文

UTL_FILE.PUTF (
file    IN FILE_TYPE,
format  IN VARCHAR2,
[arg1   IN VARCHAR2  DEFAULT NULL,
. . .
arg5    IN VARCHAR2  DEFAULT NULL]);

パラメータ

表251-25 PUTFプロシージャのパラメータ

パラメータ

説明

file

FOPENコールが戻すアクティブなファイル・ハンドル。

format

テキストや書式文字\nと%sを含むことができる書式文字列。

arg1..arg5

1から5個までのオプションの引数文字列。

引数文字列は、書式文字列内の%s書式指定文字に、順序正しく置き換えられます。

引数より多い書式指定文字が書式パラメータ文字列内にある場合は、引数のない各%sは空の文字列に置き換えられます。

使用上の注意

- ファイルがバイト・モード操作用にオープンしている場合は、INVALID OPERATION例外が発生します。

- 書式文字列には任意のテキストを指定できますが、文字列%sと\nには次のような特別な意味があります。

文字列

意味

%s

この文字列を引数リスト内の次の引数の文字列値に置き換えます。

\n

適切なプラットフォーム固有の行終了記号に置き換えます。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

例

次に、行を書き込む例を示します。

Hello, world!
I come from Zork with greetings for all earthlings.

my_world  varchar2(4) := 'Zork';
...
PUTF(my_handle, 'Hello, world!\nI come from %s with %s.\n',
my_world,
'greetings for all earthlings');

引数より多い%s書式指定文字が書式パラメータ内にある場合は、対応する引数のない%sは空の文字列に置き換えられます。

PUTF_NCHARプロシージャ

このプロシージャは、PUT_NCHARプロシージャの書式設定されたバージョンです。PUTF_NCHARを使用すると、データベース・キャラクタ・セットではなくUnicodeでテキスト・ファイルの書込みを実行できます。このプロシージャは、書式要素\nおよび%sを含む書式文字列を受け入れ、書式文字列内の%sの連続インスタンスを最大で5つの引数に置き換えることができます。書式文字列および引数に想定されるデータ・タイプは、NVARCHAR2です。

別のデータ・タイプの変数が指定されていると、テキストの書式化前にNVARCHAR2への暗黙的な変換が実行されます。書式化されたテキストは、ファイル・ハンドルが示すファイルにUTF8キャラクタ・セットで書き込まれます。このファイルは、各国語キャラクタ・セット・モードでオープンされる必要があります。

構文

UTL_FILE.PUTF_NCHAR (
file    IN FILE_TYPE,
format  IN NVARCHAR2,
[arg1   IN NVARCHAR2  DEFAULT NULL,
. . .
arg5    IN NVARCHAR2  DEFAULT NULL]);

パラメータ

表251-26 PUTF_NCHARプロシージャのパラメータ

パラメータ

説明

file

FOPEN_NCHARコールが戻すアクティブなファイル・ハンドル。このファイルは読込み用(モードr)にオープンされる必要があります。ファイルをFOPEN_NCHARではなくFOPENでオープンした場合は、CHARSETMISMATCH例外が発生します。

format

テキストや書式文字\nと%sを含むことができる書式文字列。

arg1..arg5

1から5個までのオプションの引数文字列。

引数文字列は、書式文字列内の%s書式指定文字に、順序正しく置き換えられます。

引数より多い書式指定文字が書式パラメータ文字列内にある場合は、引数のない各%sは空の文字列に置き換えられます。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

使用上の注意

- bufferパラメータの最大サイズは、より小さいサイズをFOPENに指定しないかぎり、32767バイトです。指定がない場合は、デフォルト値である1024が指定されます。連続したPUTコールの全合計は、途中でバッファ・フラッシュをしないかぎり、32767を超えません。

- ファイルがバイト・モード操作用にオープンしている場合は、INVALID OPERATION例外が発生します。

PUT_RAWプロシージャ

このプロシージャは、RAWデータ値を入力として受け入れ、出力バッファに書き込みます。

構文

UTL_FILE.PUT_RAW (
file          IN    UTL_FILE.FILE_TYPE,
buffer        IN    RAW,
autoflush     IN    BOOLEAN DEFAULT FALSE);

パラメータ

表251-27 PUT_RAWプロシージャのパラメータ

パラメータ

説明

file

ファイル・ハンドル。

buffer

バッファに書き込まれたRAWデータ。

autoflush

TRUEの場合は、出力バッファに値を書き込んだ後でフラッシュを実行します。デフォルトはFALSEです。

例外

INVALID_FILEHANDLE

INVALID_OPERATION

WRITE_ERROR

使用上の注意

3番目の引数をTRUEに設定することで、バッファの自動フラッシュを要求できます。

bufferパラメータの最大サイズは、より小さいサイズをFOPENに指定しないかぎり、32767バイトです。指定がない場合は、デフォルト値である1024が指定されます。連続したPUTコールの全合計は、途中でバッファ・フラッシュをしないかぎり、32767を超えません。

252 UTL_HTTP

UTL_HTTPパッケージは、SQLとPL/SQLからHypertext Transfer Protocol(HTTP)のコールアウトを行います。これを使用すると、HTTPを経由してインターネット上のデータにアクセスできます。

パッケージでHTTPSを使用してWebサイトからデータをフェッチする場合は、Oracle Wallet Managerが必要で、Oracle Wallet Managerは、Oracle Wallet Managerまたはorapkiユーティリティを使用して作成できます。HTTPS以外のフェッチの場合は、Oracle Walletは必要ありません。

関連項目:

- 第266章「UTL_URL」

- 第263章「UTL_SMTP」

- Wallet Managerの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

この章では、次の項目について説明します。

- UTL_HTTPの使用方法

- 概要

- セキュリティ・モデル

- 定数

- データ・タイプ

- 使用上の注意

- 例外

- 例

- サブプログラム・グループ

- セッションの設定サブプログラム

- HTTP要求サブプログラム

- HTTP要求コンテキスト・サブプログラム

- HTTP応答サブプログラム

- HTTP Cookieサブプログラム

- HTTPの永続的接続サブプログラム

- エラー条件のサブプログラム

- UTL_HTTPサブプログラムの要約

UTL_HTTPの使用方法

この項では、UTL_HTTPパッケージの使用に関連する項目について説明します。

- 概要

- セキュリティ・モデル

- 定数

- データ・タイプ

- 使用上の注意

- 例外

- 例

概要

UTL_HTTPパッケージを使用すると、Web(HTTP)サーバーと通信するPL/SQLプログラムを記述できます。UTL_HTTPには、SQL問合せで使用できるファンクションが含まれています。

このパッケージは、HTTPSとも呼ばれるSecured Socket Layer protocol (SSL)上のHTTPをサポートしています。また、リモートWebサーバーで認証をするためにウォレットでクライアント証明書を送信することで、SSLクライアント認証もサポートしています。

インターネット関連の他のデータアクセス・プロトコル(ファイル転送プロトコル(FTP)またはGopherプロトコル)は、これらのプロトコルをサポートするHTTPプロキシ・サーバーを使用してサポートされます。

セキュリティ・モデル

このパッケージは実行者権限のパッケージであるため、起動するユーザーには、接続するリモート・ネットワーク・ホストに割り当てられたアクセス制御リストによってconnect権限が付与されている必要があります。また、Oracle Walletに格納されている資格証明を使用してリモートWebサーバーに対してユーザー自身を認証するためのuse-client-certificates権限とuse-passwords権限も必要となります。

注意:
詳細は、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。

定数

UTL_HTTPパッケージでは、次の表に示す定数が使用されます。

- UTL_HTTP定数: HTTPバージョン

- UTL_HTTP定数: デフォルト・ポート

- UTL_HTTP定数: HTTP 1.1のステータス・コード

表252-1 UTL_HTTP定数: HTTPバージョン

名前

タイプ

値

説明

HTTP_VERSION_1_0

VARCHAR2(10)

'HTTP/1.0'

BEGIN_REQUESTファンクションで使用できるHTTPバージョン1.0を示します。

HTTP_VERSION_1_1

VARCHAR2(10)

'HTTP/1.1'

BEGIN_REQUESTファンクションで使用できるHTTPバージョン1.1を示します。

表252-2 UTL_HTTP定数: デフォルト・ポート

名前

タイプ

値

説明

DEFAULT_HTTP_PORT

PLS_INTEGER

80

Webサーバーまたはプロキシ・サーバーがリスニングするデフォルトのTCP/IPポート(80)。

DEFAULT_HTTPS_PORT

PLS_INTEGER

443

HTTPS WebサーバーがリスニングするデフォルトのTCP/IPポート(443)。

表252-3 UTL_HTTP定数 - HTTP 1.1のステータス・コード

名前

タイプ

値

説明

HTTP_CONTINUE

PLS_INTEGER

100

クライアントは要求を継続する必要があります。この仮の応答を使用して、サーバーで要求の最初の部分が受信され、まだ拒否されていないことをクライアントに通知します。

HTTP_SWITCHING_PROTOCOLS

PLS_INTEGER

101

サーバーは、Upgradeメッセージ・ヘッダー・フィールドを介して、クライアントによる、この接続で使用されているアプリケーション・プロトコルの変更要求を解釈し、それらに応じます。サーバーは、101応答を終了する空の行の直後にある応答のUpgradeヘッダー・フィールドで定義されているプロトコルにプロトコルを切り替えます。

HTTP_OK

PLS_INTEGER

200

応答は成功しました。応答とともに戻される情報は、要求で使用されたメソッドによって異なります。

HTTP_CREATED CONSTANT

PLS_INTEGER

201

要求が満たされ、新規リソースが作成されます。

HTTP_ACCEPTED

PLS_INTEGER

202

要求の処理は受け入れられましたが、処理は完了していません。要求は、実際に処理が行われる際に拒否される可能性があるため、最終的には処理されない場合もあります。

HTTP_NON_AUTHORITATIVE_INFO

PLS_INTEGER

203

エンティティヘッダーに戻されるメタ情報は、オリジナル・サーバーから収集可能な最終的なセットではなく、ローカルまたはサードパーティ・コピーから収集されます。

HTTP_NO_CONTENT

PLS_INTEGER

204

サーバーは、要求を満たしましたが、エンティティ本体を戻す必要はありません。また、更新されたメタ情報を戻す場合もあります。

HTTP_RESET_CONTENT

PLS_INTEGER

205

サーバーは要求を満たしました。ユーザー・エージェントは、要求の送信元ドキュメント・ビューをリセットする必要があります。応答にはエンティティを含めないでください。

HTTP_PARTIAL_CONTENT

PLS_INTEGER

206

サーバーは、リソースに対するGET要求の一部を満たしました。

HTTP_MULTIPLE_CHOICES

PLS_INTEGER

300

要求されたリソースが一連の表現のいずれかに対応しています。各表現には固有の場所があり、ユーザー(またはユーザー・エージェント)が適切な表現を選択し、要求をその表現の場所にリダイレクトできるようにエージェントドリブンのネゴシエーション情報が提供されます。

HTTP_MOVED_PERMANENTLY

PLS_INTEGER

301

要求されたリソースが新規永続URIに割り当てられています。このリソースを今後参照するには、戻されたURIのいずれかを使用する必要があります。

HTTP_FOUND CONSTANT

PLS_INTEGER

302

要求されたリソースが一時的に別のURIに存在しています。

HTTP_SEE_OTHER

PLS_INTEGER

303

要求への応答が別のURIに存在している可能性があります。この応答は、リソースに対してGETメソッドを使用して取得する必要があります。

HTTP_NOT_MODIFIED

PLS_INTEGER

304

クライアントが条件付きGET要求を実行し、アクセスは許可されているが、ドキュメントは変更されていない場合、サーバーはこのステータス・コードで応答します。

HTTP_USE_PROXY

PLS_INTEGER

305

要求されたリソースには、「位置」フィールドで指定されているプロキシを使用してアクセスする必要があります。「位置」フィールドには、プロキシのURIが指定されています。

HTTP_TEMPORARY_REDIRECT

PLS_INTEGER

307

要求されたリソースが一時的に別のURIに存在しています。

HTTP_BAD_REQUEST

PLS_INTEGER

400

不適切な構文のため、要求がサーバーで解釈されませんでした。

HTTP_UNAUTHORIZED

PLS_INTEGER

401

要求には、ユーザー認証が必要です。クライアントは、適切なAuthorizationヘッダー・フィールドを使用して要求を繰り返します。要求に認証資格証明が含まれている場合、401応答は資格証明の認証が拒否されたことを示します。

HTTP_PAYMENT_REQUIRED

PLS_INTEGER

402

このコードは将来使用するために予約されています。

HTTP_FORBIDDEN

PLS_INTEGER

403

サーバーは、要求を解釈しましたが、要求を満たすことを拒否しています。

HTTP_NOT_FOUND

PLS_INTEGER

404

サーバーで、要求URIと一致するURIは検出されませんでした。

HTTP_NOT_ACCEPTABLE

PLS_INTEGER

406

要求で識別されるリソースは、応答エンティティの生成のみを行うことができます。応答エンティティには、要求で送信される受入れヘッダーに応じて、受け入れられないコンテンツ特性があります。

HTTP_PROXY_AUTH_REQUIRED

PLS_INTEGER

407

このコードは401(未許可)と類似していますが、クライアントがプロキシを使用して最初にクライアント自身を認証する必要があることを示します。

HTTP_REQUEST_TIME_OUT

PLS_INTEGER

408

クライアントは、サーバーの待機時間内に要求を作成しませんでした。

HTTP_CONFLICT

PLS_INTEGER

409

リソースの現在の状態との競合のため、要求は完了されませんでした。

HTTP_GONE

PLS_INTEGER

410

要求されたリソースはサーバーで使用できなくなりました。転送アドレスが不明です。

HTTP_LENGTH_REQUIRED

PLS_INTEGER

411

サーバーは、Content-Lengthが定義されていない要求の受入れを拒否します。

HTTP_PRECONDITION_FAILED

PLS_INTEGER

412

1つ以上の要求ヘッダー・フィールドに指定されている事前条件が、サーバーでのテストでfalseと評価されました。

HTTP_REQUEST_ENTITY_TOO_LARGE CONSTANT

PLS_INTEGER

413

サーバーは、要求エンティティがサーバーで処理可能な大きさよりも大きいため、要求の処理を拒否しています。

HTTP_REQUEST_URI_TOO_LARGE

PLS_INTEGER

414

サーバーは、要求URIがサーバーで解釈可能な長さよりも長いため、要求の処理を拒否しています。

HTTP_UNSUPPORTED_MEDIA_TYPE

PLS_INTEGER

415

要求のエンティティの形式が、要求されているメソッド用に要求されているリソースでサポートされている形式ではないため、サーバーは要求の処理を拒否しています。

HTTP_REQ_RANGE_NOT_SATISFIABLE

PLS_INTEGER

416

要求にRange要求ヘッダー・フィールドが含まれている場合、サーバーはこのステータス・コードの応答を戻します。このフィールドの範囲指定子の値は選択したリソースの現在のエクステントにオーバーラップせず、要求にIf-Range要求ヘッダー・フィールドは含まれませんでした。

HTTP_EXPECTATION_FAILED

PLS_INTEGER

417

このサーバーがExpect要求ヘッダー・フィールドに指定されている期待値を満たすことができなかったか、またはサーバーがプロキシの場合は、ネクスト・ホップ・サーバーが要求を満たすことができなかった明確な証拠がサーバーに存在します。

HTTP_NOT_IMPLEMENTED

PLS_INTEGER

501

サーバーは、要求を満たすために必要な機能をサポートしていません。

HTTP_BAD_GATEWAY

PLS_INTEGER

502

ゲートウェイまたはプロキシとして動作しているサーバーが、要求を満たすためにアクセスしたアップストリーム・サーバーから無効な応答を受信しました。

HTTP_SERVICE_UNAVAILABLE

PLS_INTEGER

503

現在、サーバーは、一時的なオーバーロードまたはメンテナンスのため、要求を処理できません。

HTTP_GATEWAY_TIME_OUT

PLS_INTEGER

504

ゲートウェイまたはプロキシとして動作しているサーバーが、URI(HTTP、FTP、LDAPなど)で指定されているアップストリーム・サーバー、または要求の完了の試行時にアクセスする必要があるその他の補助サーバー(DNSなど)からタイムリな応答を受信しませんでした。

HTTP_VERSION_NOT_SUPPORTED

PLS_INTEGER

505

サーバーは、要求メッセージで使用されたHTTPプロトコルのバージョンをサポートしていないか、またはサポートすることを拒否しています。

データ・タイプ

- REQタイプ

- RESPタイプ

- COOKIEタイプおよびCOOKIE_TABLEタイプ

- CONNECTIONタイプ

- REQUEST_CONTEXT_KEYタイプ

REQタイプ

このPL/SQLレコード・タイプを使用して、HTTP要求を表します。

構文

TYPE req IS RECORD (
url           VARCHAR2(32767),
method        VARCHAR2(64),
http_version  VARCHAR2(64));

パラメータ

表252-4 REQタイプのパラメータ

パラメータ

説明

url

HTTP要求のURL。BEGIN_REQUESTにより要求が作成された後に設定されます。

method

URLにより識別されたリソースで実行されるメソッド。BEGIN_REQUESTにより要求が作成された後に設定されます。

http_version

要求の送信に使用されるHTTPプロトコルのバージョン。BEGIN_REQUESTにより要求が作成された後に設定されます。

使用上の注意

インタフェースbegin_requestからREQに戻される情報は読取り専用です。レコードのフィールド値を変更しても、要求には影響はありません。

REQレコード・タイプには名前がprivate_という接頭辞で始まる他のフィールドがあります。このフィールドはプライベートで、UTL_HTTPパッケージの実装で使用することを目的としています。これらのフィールドは変更しないでください。

REQUEST_CONTEXT_KEYタイプ

このタイプは、要求コンテキストへのキーを表すために使用します。要求コンテキストとは、HTTP要求で使用するプライベートのWalletおよびCookieの表を保持しているコンテキストのことです。プライベートのWalletおよびCookieの表は、パッケージに保持されているセッション全体の表とは異なり、データベース・セッション内の他のHTTP要求と共有されません。

構文

SUBTYPE request_context_key IS PLS_INTEGER;

使用上の注意

セキュリティを強化するために、UTL_HTTPではPL/SQLプログラムにより要求コンテキストを作成できます。要求コンテキストはプライベート・コンテキストで、HTTP要求時およびHTTP応答の受信時に同じデータベース・セッション内の他のプログラムと共有されない、WalletおよびCookieの表を保持しています。PL/SQLプログラムで機密情報(認証の資格証明書など)を含むWalletやCookieを使用する場合は、要求コンテキストを使用する必要があります。

RESPタイプ

このPL/SQLレコード・タイプは、HTTP応答を表します。

構文

TYPE resp IS RECORD (
status_code    PLS_INTEGER,
reason_phrase  VARCHAR2(256),
http_version   VARCHAR2(64));

パラメータ

表252-5 RESPタイプのパラメータ

パラメータ

説明

status_code

Webサーバーにより戻されるステータス・コード。Webサーバーにより処理されるHTTP要求の結果を示す3桁の整数です。GET_RESPONSEにより応答が処理された後に設定されます。

reason_phrase

ステータス・コードを記述するWebサーバーにより戻される短いテキスト・メッセージ。Webサーバーにより処理されるHTTP要求の結果を簡潔に説明します。GET_RESPONSEにより応答が処理された後に設定されます。

http_version

HTTP応答に使用されるHTTPプロトコルのバージョン。GET_RESPONSEにより応答が処理された後に設定されます。

使用上の注意

インタフェースGET_RESPONSEからRESPに戻される情報は読取り専用です。RESPレコード・タイプには名前がprivate_という接頭辞で始まる他のフィールドがあります。このフィールドはプライベートで、UTL_HTTPパッケージの実装で使用することを目的としています。これらのフィールドは変更しないでください。

COOKIEタイプおよびCOOKIE_TABLEタイプ

COOKIEタイプは、HTTP Cookieを表すPL/SQLレコード・タイプです。COOKIE_TABLEタイプは、HTTP Cookieのコレクションを表すPL/SQL索引付き表タイプです。

構文

TYPE cookie IS RECORD (
name  VARCHAR2(256),
value  VARCHAR2(1024),
domain  VARCHAR2(256),
expire  TIMESTAMP WITH TIME ZONE,
path  VARCHAR2(1024),
secure  BOOLEAN,
version  PLS_INTEGER,
comment  VARCHAR2(1024));

TYPE cookie_table IS TABLE OF cookie INDEX BY binary_integer;

COOKIEレコード・タイプのフィールド

表252-6に、COOKIEおよびCOOKIE_TABLEレコード・タイプのフィールドを示します。

表252-6 COOKIEおよびCOOKIE_TABLEタイプのフィールド

フィールド

説明

name

HTTP Cookieの名前。

value

Cookieの値。

domain

Cookieが有効なドメイン。

expire

Cookieの期限が切れる時刻。

path

Cookieを適用するURLのサブセット。

secure

セキュリティ保護された手段でのみWebサーバーにCookieを戻す必要があります。

version

Cookieが準拠するHTTP Cookie仕様のバージョン。NetscapeのCookieの場合、このフィールドはNULLです。

comment

Cookieの用途を記述したコメント。NetscapeのCookieの場合、このフィールドはNULLです。

使用上の注意

PL/SQLプログラムは通常、UTL_HTTPパッケージに格納されたCookie情報を調査または変更しません。Cookieは、パッケージが透過的に保持します。UTL_HTTPパッケージ内部で保持され、データベース・セッションの期間のみ存続します。データベース・セッションの期間以降もCookieの保持を必要とするPL/SQLアプリケーションは、GET_COOKIESを使用してCookieを読み取り、データベース表に永続的に格納し、次のデータベース・セッションでADD_COOKIESを使用してパッケージにCookieを再度格納できます。cookieレコードのすべてのフィールド(ただしcommentフィールドは除く)は、格納する必要があります。Cookie情報は変更しないでください。変更すると、Webサーバーでアプリケーション・エラーが発生したり、PL/SQLおよびWebサーバー・アプリケーションのセキュリティが損なわれることがあります。詳細は、「Cookieの取出しおよびリストア」を参照してください。

CONNECTIONタイプ

このPL/SQLレコード・タイプを使用して、HTTP 1.1プロトコルの仕様に従い、HTTP要求が完了した後に永続的に保持されるネットワーク接続のリモート・ホストおよびTCP/IPポートを表します。永続的なネットワーク接続は、後続のHTTP要求により同じホストおよびポートに対して再利用できます。ネットワーク接続の待機時間が回避されるため、後続のHTTP要求は高速に処理されます。connection_tableは、connectionのPL/SQL表です。

Webサーバーに直接HTTPを永続的に接続する場合は、hostおよびportフィールドにWebサーバーのホスト名およびTCP/IPポート番号が含まれます。proxy_hostおよびproxy_portフィールドは設定されません。プロキシを使用してWebサーバーへの接続に以前使用されていたHTTPに永続的に接続する場合は、proxy_hostおよびproxy_portフィールドにプロキシ・サーバーのホスト名およびTCP/IPポート番号が含まれます。hostおよびportフィールドは設定されません。これは、プロキシ・サーバーに接続している間、永続的接続が特定のターゲットWebサーバーにバインドされないことを示します。プロキシ・サーバーへのHTTPの永続的接続を使用して、プロキシを使用するターゲットWebサーバーにアクセスできます。

SSLフィールドは、Secured Socket Layer (SSL)がHTTPの永続的接続で使用されているかどうかを示します。HTTPS要求は、SSLを介して作成されたHTTP要求です。プロキシを使用して接続したHTTPS (SSL)の永続的接続の場合は、hostおよびportフィールドにターゲットHTTPS Webサーバーのホスト名およびTCP/IPポート番号が含まれます。これらのフィールドは常に設定されます。プロキシ・サーバーを使用してHTTPS Webサーバーに永続的にHTTPS接続を行った場合は、同じターゲットWebサーバーに別の要求を行う場合にのみ再利用できます。

構文

TYPE connection IS RECORD (
host  VARCHAR2(256),
port  PLS_INTEGER,
proxy_host  VARCHAR2(256),
proxy_port  PLS_INTEGER,
ssl  BOOLEAN);

TYPE connection_table IS TABLE OF connection INDEX BY BINARY_INTEGER;

使用上の注意

- 操作フロー

- 単純なHTTPのフェッチ

- HTTP要求

- HTTP応答

- HTTPの永続的接続

- エラー条件

- セッションの設定

- 要求コンテキスト

- 外部パスワード・ストア

操作フロー

UTL_HTTPパッケージは、HTTPプロトコルへのアクセスを提供します。インタフェースは、図252-1に示す順序でコールする必要があります。そうでない場合は、例外が発生します。

図252-1 UTL_HTTPパッケージのコア・フロー

随時、次をコールできます。

- Cookieを操作する非プロトコル・インタフェース

- GET_COOKIE_COUNT

- GET_COOKIES

- ADD_COOKIES

- CLEAR_COOKIES

- 永続的接続

- GET_PERSISTENT_CONN_COUNT

- GET_PERSISTENT_CONNS

- CLOSE_PERSISTENT_CONN

- CLOSE_PERSISTENT_CONNS

- UTL_HTTPパッケージの属性および構成を現行のセッションで操作するインタフェース

- SET_PROXY

- GET_PROXY

- SET_COOKIE_SUPPORT

- GET_COOKIE_SUPPORT

- SET_FOLLOW_REDIRECT

- GET_FOLLOW_REDIRECT

- SET_BODY_CHARSET

- GET_BODY_CHARSET

- SET_PERSISTENT_CONN_SUPPORT

- GET_PERSISTENT_CONN_SUPPORT

- SET_DETAILED_EXCP_SUPPORT

- GET_DETAILED_EXCP_SUPPORT

- SET_WALLET

- SET_TRANSFER_TIMEOUT

- GET_TRANSFER_TIMEOUT

- UTL_HTTPパッケージの最新の詳細な例外コードおよびメッセージを現行のセッションで取り出すインタフェース

- GET_DETAILED_SQLCODE

- GET_DETAILED_SQLERRM

注意:
要求および応答のインタフェースによっては、現行のセッションでパッケージの属性および構成を操作するインタフェースと同じ名前を設定できる場合があります。これらは、要求または応答を操作するインタフェースのオーバーロード・バージョンです。

単純なHTTPのフェッチ

REQUESTおよびREQUEST_PIECESは、Uniform Resource Locator(URL)の文字列を使用し、サイトに接続して、そのサイトで取得したデータ(通常はHTML)を戻します。

同一マシン(同一の権限や環境変数など)でブラウザを使用してURLに接続できない場合、REQUESTまたはREQUEST_PIECESで、そのURLへの接続が成功することは期待できません。

REQUESTまたはREQUEST_PIECESに失敗した場合(たとえば、例外が発生した場合やHTML形式のエラー・メッセージが戻された場合で、URL引数は正しいと考えられる場合)は、ブラウザで同じURLに接続を試みて、ユーザーのマシンからネットワークの可用性を検証します。ユーザーのブラウザにプロキシ・サーバー・セットがある場合、そのセットは、オプションのproxyパラメータを使用してREQUESTまたはREQUEST_PIECESの各コールごとに設定する必要があります。

注意:
UTL_HTTPでは、環境変数を使用してそのプロキシ動作を指定することもできます。たとえば、UNIXでは、環境変数http_proxyをURLに設定することによって、そのサービスをHTTP要求のプロキシ・サーバーとして使用するように指定します。また、環境変数no_proxyをドメイン名に設定することによって、そのドメインのURLではHTTPプロキシ・サーバーを使用しないように指定します。UTL_HTTPパッケージがOracle Databaseサーバーで実行される場合、データベース・インスタンスの開始時に設定された環境設定が使用されます。

関連項目:
単一コール・サブプログラムでの単純なHTTPのフェッチ

HTTP要求

サブプログラムのHTTP要求グループは、HTTP要求を開始し、属性を操作し、要求情報をWebサーバーに送信します。要求が作成されると、現行のセッションのHTTP Cookieサポート、リダイレクトへの準拠、本体キャラクタ・セット、永続的接続のサポートおよび転送タイムアウトのデフォルト設定が継承されます。これらの設定は、要求インタフェースをコールすることにより変更できます。

関連項目:
HTTP要求サブプログラム

HTTP応答

サブプログラムのHTTP応答グループは、GET_RESPONSEから取得したHTTP応答を操作し、Webサーバーから応答情報を受信します。応答が要求に対して作成されると、要求からHTTP Cookieサポート、リダイレクトへの準拠、本体キャラクタ・セット、永続的接続のサポートおよび転送タイムアウトについての設定が継承されます。応答インタフェースをコールすることにより変更できるのは、本体キャラクタ・セットのみです。

関連項目:
HTTP応答サブプログラム

HTTP Cookie

UTL_HTTPパッケージでは、HTTP Cookieを操作するためのサブプログラムが提供されます。

関連項目:
HTTP Cookieサブプログラム

HTTPの永続的接続

UTL_HTTPパッケージでは、永続的接続を操作するためのサブプログラムが提供されます。

関連項目:
HTTPの永続的接続サブプログラム

エラー条件

UTL_HTTPパッケージでは、エラー情報を取り出すためのサブプログラムが提供されます。

関連項目:
エラー条件のサブプログラム

セッションの設定

HTTP要求がデータベースのユーザー・セッション内で実行される場合、セッションの設定によりUTL_HTTPの構成およびデフォルトの動作を操作します。要求が作成されると、現行のセッションのHTTP Cookieサポート、リダイレクトへの準拠、本体キャラクタ・セット、永続的接続のサポートおよび転送タイムアウトのデフォルト設定が継承されます。これらの設定は、要求インタフェースをコールすることにより後で変更できます。要求に対する応答が作成されると、この要求からこれらの設定が継承されます。応答インタフェースをコールすることにより後で変更できるのは、本体キャラクタ・セットのみです。

関連項目:
セッションの設定サブプログラム

要求コンテキスト

UTL_HTTPパッケージは、すべてのHTTP要求と応答が共有できる共通のWalletおよびCookieの表をデータベース・セッション内に保持します。これによって、セッション内でWalletを共有したり、Cookieにアプリケーション状態を保持することが容易になります。ただし、同じデータベース・セッション内の他のアプリケーションとは共有しないWalletまたはCookieにプライベート情報を格納するアプリケーションの場合は、固有のWalletおよびCookieの表を保持する要求コンテキストを定義し、それを使用してHTTP要求を行うことができます。

関連項目:
HTTP要求サブプログラム

外部パスワード・ストア

UTL_HTTPパッケージでは、HTTPパスワードの資格証明をOracle Walletの外部パスワード・ストアに格納することができます。外部パスワード・ストアを使用すると、パスワードを容易かつ安全に格納できるため、アプリケーション開発者が記憶域を保持する必要がなくなります。

関連項目:
SET_AUTHENTICATION_FROM_WALLETプロシージャ

例外

表252-7に、UTL_HTTPパッケージのインタフェースによって発生させる可能性のある例外を示します。デフォルトでは要求の実行に失敗すると、UTL_HTTPによりrequest_failed例外が発生します。set_detailed_excp_supportにより詳細な例外が発生するようにパッケージが設定されている場合、残りの例外は直接発生します(ただし、end_of_body例外は除きます。この例外は、設定にかかわらず、READ_TEXT、READ_LINEおよびREAD_RAWにより呼び出されます)。

表252-7 UTL_HTTPの例外

例外

エラー・コード

理由

発生した場所

BAD_ARGUMENT

29261

インタフェースに渡された引数が不適切です。

detailed_exceptionが有効な場合のHTTP要求インタフェースまたはHTTP応答インタフェース。

BAD_URL

29262

要求されたURLの構成が不適切です。

detailed_exceptionが有効な場合のBEGIN_REQUEST。

END_OF_BODY

29266

HTTP応答本体の終わりに到達しています。

detailed_exceptionが有効な場合のREAD_RAW、READ_TEXTおよびREAD_LINE。

HEADER_NOT_FOUND

29265

ヘッダーが見つかりません。

detailed_exceptionが有効な場合のGET_HEADERおよびGET_HEADER_BY_NAME。

HTTP_CLIENT_ERROR

29268

GET_RESPONSEで、応答ステータス・コードがクライアントでのエラー発生を示しています(4xxのステータス・コード)。または、begin_requestで、HTTPプロキシが、プロキシ経由のHTTPS要求時に4xxのステータス・コードを戻しています。

detailed_exceptionが有効な場合のGET_RESPONSEおよびBEGIN_REQUEST。

HTTP_SERVER_ERROR

29269

GET_RESPONSEで、応答ステータス・コードがクライアントでのエラー発生を示しています(5xxのステータス・コード)。または、begin_requestで、HTTPプロキシが、プロキシ経由のHTTPS要求時に5xxのステータス・コードを戻しています。

detailed_exceptionが有効な場合のGET_RESPONSEおよびBEGIN_REQUEST。

NETWORK_ACCESS_DENIED

24247

リモート・ネットワーク・ホストまたはOracle Wallet内の資格証明へのアクセスが拒否されました。

detailed_exceptionが有効な場合のBEGIN_REQUESTおよびSET_AUTHENTICATION_FROM_WALLET。

ILLEGAL_CALL

29267

HTTP要求の現在の状態ではUTL_HTTPへのコールが不正です。

detailed_exceptionが有効な場合のSET_HEADER、SET_AUTHENTICATIONおよびSET_PERSISTENT_CONN_SUPPORT。

PARTIAL_MULTIBYTE_EXCEPTION

29275

完全に読み込まれた文字はありません。応答本体の終わりにマルチバイト・キャラクタの一部が検出されました。

detailed_exceptionが有効な場合のREAD_TEXTおよびREAD_LINE。

PROTOCOL_ERROR

29263

Webサーバーとの通信でHTTPプロトコルのエラーが発生しました。

detailed_exceptionが有効な場合のSET_HEADER、GET_RESPONSE、READ_RAW、READ_TEXTおよびREAD_LINE。

REQUEST_FAILED

29273

要求の実行に失敗しました。

detailed_exceptionが無効な場合のHTTP要求インタフェースまたはHTTP応答インタフェース。

TOO_MANY_REQUESTS

29270

オープンされている要求または応答が多すぎます。

detailed_exceptionが有効な場合のBEGIN_REQUEST。

TRANSFER_TIMEOUT

29276

データが読み込まれず、読込みタイムアウトが発生しました。

detailed_exceptionが有効な場合のREAD_TEXTおよびREAD_LINE。

UNKNOWN_SCHEME

29264

要求されたURLのスキームが不明です。

detailed_exceptionが有効な場合のBEGIN_REQUESTおよびGET_RESPONSE。

注意:
partial_multibyte_charおよびtransfer_timeoutの例外は、UTL_TCPで定義された同じ例外の複製です。これらは、パッケージを使用するときに、UTL_TCPの知識を必要としなくても済むように、このパッケージで定義されています。これらの例外は複製であるため、このパッケージのpartial_multibyte_charおよびtransfer_timeout例外を補足する例外ハンドルは、UTL_TCPの例外も捕捉します。

REQUESTおよびREQUEST_PIECESでは、なんらかの例外が発生してdetailed_exceptionが無効な場合に、request_failed例外が発生します。

例

次の例では、UTL_HTTPの使用方法を示します。

- 一般的な使用方法

- HTTP応答ヘッダーの取出し

- HTTP認証の処理

- Cookieの取出しおよびリストア

- プライベートのWalletおよびCookieの表によるHTTP要求

一般的な使用方法

SET SERVEROUTPUT ON SIZE 40000

DECLARE
req   UTL_HTTP.REQ;
resp  UTL_HTTP.RESP;
value VARCHAR2(1024);
BEGIN
UTL_HTTP.SET_PROXY('proxy.my-company.com', 'corp.my-company.com');
req := UTL_HTTP.BEGIN_REQUEST('http://www-hr.corp.my-company.com');
UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
resp := UTL_HTTP.GET_RESPONSE(req);
LOOP
UTL_HTTP.READ_LINE(resp, value, TRUE);
DBMS_OUTPUT.PUT_LINE(value);
END LOOP;
UTL_HTTP.END_RESPONSE(resp);
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(resp);
END;

HTTP応答ヘッダーの取出し

SET SERVEROUTPUT ON SIZE 40000

DECLARE
req   UTL_HTTP.REQ;
resp  UTL_HTTP.RESP;
name  VARCHAR2(256);
value VARCHAR2(1024);
BEGIN
UTL_HTTP.SET_PROXY('proxy.my-company.com', 'corp.my-company.com');
req := UTL_HTTP.BEGIN_REQUEST('http://www-hr.corp.my-company.com');
UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
resp := UTL_HTTP.GET_RESPONSE(req);
DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || resp.status_code);
DBMS_OUTPUT.PUT_LINE('HTTP response reason phrase: ' || resp.reason_phrase);
FOR i IN 1..UTL_HTTP.GET_HEADER_COUNT(resp) LOOP
UTL_HTTP.GET_HEADER(resp, i, name, value);
DBMS_OUTPUT.PUT_LINE(name || ': ' || value);
END LOOP;
UTL_HTTP.END_RESPONSE(resp);
END;

HTTP認証の処理

SET serveroutput ON SIZE 40000

CREATE OR REPLACE PROCEDURE get_page (url      IN VARCHAR2,
username IN VARCHAR2 DEFAULT NULL,
password IN VARCHAR2 DEFAULT NULL,
realm    IN VARCHAR2 DEFAULT NULL) AS
req       UTL_HTTP.REQ;
resp      UTL_HTTP.RESP;
my_scheme VARCHAR2(256);
my_realm  VARCHAR2(256);
name      VARCHAR2(256);
value     VARCHAR2(256);
BEGIN
-- Turn off checking of status code. We will check it by ourselves.
UTL_HTTP.SET_RESPONSE_ERROR_CHECK(FALSE);
req := UTL_HTTP.BEGIN_REQUEST(url);
IF (username IS NOT NULL) THEN
UTL_HTTP.SET_AUTHENTICATION(req, username, password); -- Use HTTP Basic Authen. Scheme
END IF;
resp := UTL_HTTP.GET_RESPONSE(req);
IF (resp.status_code = UTL_HTTP.HTTP_UNAUTHORIZED) THEN
UTL_HTTP.GET_AUTHENTICATION(resp, my_scheme, my_realm, FALSE);
DBMS_OUTPUT.PUT_LINE('Web proxy server is protected.');
DBMS_OUTPUT.PUT('Please supplied the required ' || my_scheme || ' authentication username/password for realm ' || my_realm || ' for the proxy server.');
UTL_HTTP.END_RESPONSE(resp);
RETURN;
ELSIF (resp.status_code = UTL_HTTP.HTTP_PROXY_AUTH_REQUIRED) THEN
UTL_HTTP.GET_AUTHENTICATION(resp, my_scheme, my_realm, TRUE);
DBMS_OUTPUT.PUT_LINE('Web page ' || url || ' is protected.');
DBMS_OUTPUT.PUT('Please supplied the required ' || my_scheme || ' authentication username/password for realm ' || my_realm || ' for the Web page.');
UTL_HTTP.END_RESPONSE(resp);
RETURN;
END IF;
FOR i IN 1..UTL_HTTP.GET_HEADER_COUNT(resp) LOOP
UTL_HTTP.GET_HEADER(resp, i, name, value);
DBMS_OUTPUT.PUT_LINE(name || ': ' || value);
END LOOP;
UTL_HTTP.END_RESPONSE(resp);
END;

Cookieの取出しおよびリストア

CREATE TABLE my_cookies (
session_id  INTEGER,
name        VARCHAR2(256),
value       VARCHAR2(1024),
domain      VARCHAR2(256),
expire      DATE,
path        VARCHAR2(1024),
secure      VARCHAR2(1),
version     INTEGER);

CREATE SEQUENCE session_id;
SET SERVEROUTPUT ON SIZE 40000

REM Retrieve cookies from UTL_HTTP
CREATE OR REPLACE FUNCTION save_cookies RETURN PLS_INTEGER AS
cookies        UTL_HTTP.COOKIE_TABLE;
my_session_id  PLS_INTEGER;
secure         VARCHAR2(1);
BEGIN
/* assume that some cookies have been set in previous HTTP requests. */
UTL_HTTP.GET_COOKIES(cookies);
SELECT session_id.nextval INTO my_session_id FROM DUAL;
FOR i in 1..cookies.count LOOP
IF (cookies(i).secure) THEN
secure := 'Y';
ELSE
secure := 'N';
END IF;
INSERT INTO my_cookies
VALUES (my_session_id, cookies(i).name, cookies(i).value,
cookies(i).domain,
cookies(i).expire, cookies(i).path, secure, cookies(i).version);
END LOOP;
RETURN my_session_id;
END;
/

REM Retrieve cookies from UTL_HTTP
CREATE OR REPLACE PROCEDURE restore_cookies (this_session_id IN PLS_INTEGER)
AS
cookies        UTL_HTTP.COOKIE_TABLE;
cookie         UTL_HTTP.COOKIE;
i              PLS_INTEGER := 0;
CURSOR c (c_session_id PLS_INTEGER) IS
SELECT * FROM my_cookies WHERE session_id = c_session_id;
BEGIN
FOR r IN c(this_session_id) LOOP
i := i + 1;
cookie.name     := r.name;
cookie.value    := r.value;
cookie.domain   := r.domain;
cookie.expire   := r.expire;
cookie.path     := r.path;
IF (r.secure = 'Y') THEN
cookie.secure := TRUE;
ELSE
cookie.secure := FALSE;
END IF;
cookie.version := r.version;
cookies(i) := cookie;
END LOOP;
UTL_HTTP.CLEAR_COOKIES;
UTL_HTTP.ADD_COOKIES(cookies);
END;
/

プライベートのWalletおよびCookieの表によるHTTP要求

SET SERVEROUTPUT ON SIZE 40000

CREATE OR REPLACE PROCEDURE DISPLAY_PAGE(url IN VARCHAR2) AS
request_context UTL_HTTP.REQUEST_CONTEXT_KEY;
req             UTL_HTTP.REQ;
resp            UTL_HTTP.RESP;
data            VARCHAR2(1024);

BEGIN

-- Create a request context with its wallet and cookie table
request_context := UTL_HTTP.CREATE_REQUEST_CONTEXT(
wallet_path          => 'file:/oracle/wallets/test/wallet',
wallet_password      => '******',
enable_cookies       => TRUE,
max_cookies          => 300,
max_cookies_per_site => 20);

-- Make a HTTP request using the private wallet and cookie
-- table in the request context
req := UTL_HTTP.BEGIN_REQUEST(
url             => url,
request_context => request_context);
resp := UTL_HTTP.GET_RESPONSE(req);

BEGIN
LOOP
UTL_HTTP.READ_TEXT(resp, data);
DBMS_OUTPUT.PUT(data);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(resp);
END;

-- Destroy the request context
UTL_HTTP.DESTROY_REQUEST_CONTEXT(request_context);

END;

BEGIN
DISPLAY_PAGE('https://www.example.com/');
END;
/

サブプログラム・グループ

UTL_HTTP のサブプログラムは、機能ごとに次のようにグループ分けされています。

- 単一コール・サブプログラムでの単純なHTTPのフェッチ

- セッションの設定サブプログラム

- HTTP要求サブプログラム

- HTTP要求コンテキスト・サブプログラム

- HTTP応答サブプログラム

- HTTP Cookieサブプログラム

- HTTPの永続的接続サブプログラム

- エラー条件のサブプログラム

単一コール・サブプログラムでの単純なHTTPのフェッチ

REQUESTおよびREQUEST_PIECESは、Uniform Resource Locator(URL)の文字列を使用し、サイトに接続して、そのサイトで取得したデータ(通常はHTML)を戻します。

表252-8 UTL_HTTPサブプログラム: 単一コールでの単純なHTTPのフェッチ

サブプログラム

説明

REQUESTファンクション

指定したURLから取り出したデータの最初の2000バイトまでを戻します。このファンクションは、SQL問合せで直接使用できます。

REQUEST_PIECESファンクション

指定したURLから取り出したデータについて、2000バイト・ピースのPL/SQL表を戻します。

セッションの設定サブプログラム

表252-9 UTL_HTTPサブプログラム: セッションの設定

サブプログラム

説明

GET_BODY_CHARSETプロシージャ

将来のHTTP要求すべての本体におけるデフォルトのキャラクタ・セットを取り出します。

GET_COOKIE_SUPPORTプロシージャ

現在のCookieのサポート設定を取り出します。

GET_DETAILED_EXCP_SUPPORTプロシージャ

UTL_HTTPパッケージが詳細な例外を呼び出すかどうかをチェックします。

GET_FOLLOW_REDIRECTプロシージャ

現行のセッションでのfollow_redirectの設定を取り出します。

GET_PERSISTENT_CONN_SUPPORTプロシージャ

永続的接続のサポートが有効かどうかをチェックし、現行のセッションでの永続的接続の最大回数を取得します。

GET_PROXYプロシージャ

現在のプロキシ設定を取り出します。

GET_RESPONSE_ERROR_CHECKプロシージャ

応答エラー・チェックが設定されているかどうかをチェックします。

GET_TRANSFER_TIMEOUTプロシージャ

現在のネットワーク転送のタイムアウト値を取り出します。

SET_TRANSFER_TIMEOUTプロシージャ

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合、将来のすべてのHTTP要求本体におけるデフォルトのキャラクタ・セットを設定します。

SET_COOKIE_SUPPORTプロシージャ

将来のHTTP要求がHTTP Cookieをサポートするかどうかを設定し、現在のデータベース・ユーザー・セッションで保持されるCookieの最大数を設定します。

SET_DETAILED_EXCP_SUPPORTプロシージャ

UTL_HTTPパッケージが詳細な例外を呼び出すように設定します。

SET_FOLLOW_REDIRECTプロシージャ

GET_RESPONSEファンクションでの将来の要求に対するHTTP応答において、HTTPリダイレクトの指示にUTL_HTTPが従う最大回数を設定します。

SET_PERSISTENT_CONN_SUPPORTプロシージャ

将来のHTTP要求がHTTP 1.1の永続的接続をサポートするかどうかを設定し、現在のデータベース・ユーザー・セッションで保持される永続的接続の最大回数を設定します。

SET_PROXYプロシージャ

HTTPまたは他のプロトコルの要求で使用するプロキシを設定します。

SET_RESPONSE_ERROR_CHECKプロシージャ

Webサーバーがエラーを示すステータス・コード(4xxまたは5xx)を戻した場合に、GET_RESPONSEが例外を呼び出すかどうかを設定します。

SET_TRANSFER_TIMEOUTプロシージャ

UTL_HTTPがWebサーバーまたはプロキシ・サーバーからHTTP応答を読み込むタイムアウト値を設定します。

SET_WALLETプロシージャ

Secure Sockets Layer(SSL)、つまり、HTTPSを経由するHTTP要求すべてに使用するOracle Walletを設定します。

HTTP要求サブプログラム

表252-10 UTL_HTTPサブプログラム: HTTP要求

サブプログラム

説明

BEGIN_REQUESTファンクション

新しいHTTP要求を開始します。UTL_HTTPはターゲットWebサーバーまたはプロキシ・サーバーへのネットワーク接続を確立し、HTTP要求行を送信します。

SET_HEADERプロシージャ

HTTP要求ヘッダーを設定します。要求ヘッダーは、設定後ただちにWebサーバーに送信されます。

SET_AUTHENTICATIONプロシージャ

HTTP要求ヘッダーのHTTP認証情報を設定します。Webサーバーが要求を認証するにはこの情報が必要です。

SET_AUTHENTICATION_FROM_WALLETプロシージャ

Oracle Walletに格納されているユーザー名とパスワードの資格証明を使用して、Webサーバーで認証される要求に必要なHTTP要求ヘッダーのHTTP認証情報を設定します。

SET_BODY_CHARSETプロシージャ

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合は、要求本体のデフォルトのキャラクタ・セットを設定します。

SET_COOKIE_SUPPORTプロシージャ

要求のHTTP Cookieのサポートを有効または無効にします。

SET_FOLLOW_REDIRECTプロシージャ

GET_RESPONSEファンクションでのこの要求に対するHTTP応答において、HTTPリダイレクトの指示にUTL_HTTPが従う最大回数を設定します。

SET_PERSISTENT_CONN_SUPPORTプロシージャ

要求のHTTP 1.1の永続的接続のサポートを有効または無効にします。

SET_PROXYプロシージャ

HTTP要求本体にテキスト行を書き込み、改行文字(UTL_TCPで定義されるCRLF)を使用して行を終了します。

WRITE_RAWプロシージャ

HTTP要求本体にバイナリ・データを書き込みます。

WRITE_TEXTプロシージャ

HTTP要求本体にテキスト・データを書き込みます。

HTTP要求コンテキスト・サブプログラム

表252-11 UTL_HTTPサブプログラム: HTTP要求コンテキスト

サブプログラム

説明

CREATE_REQUEST_CONTEXTファンクション

UTL_HTTP内にWalletおよびCookieの表に対する要求コンテキストを作成します。

DESTROY_REQUEST_CONTEXTプロシージャ

UTL_HTTPの要求コンテキストを破棄します。

HTTP応答サブプログラム

表252-12 UTL_HTTPサブプログラム: HTTP応答

サブプログラム

説明

END_RESPONSEプロシージャ

HTTP応答を終了します。HTTP要求および応答を完了します。

GET_AUTHENTICATIONプロシージャ

Webサーバーが受け入れる要求に必要なHTTP認証情報を、HTTP応答ヘッダーの指示に従って取り出します。

GET_HEADERプロシージャ

応答で戻されたn回目のHTTP応答ヘッダーの名前および値を戻します。

GET_HEADER_BY_NAMEプロシージャ

特定のヘッダー名を持つ応答に戻されたHTTP応答ヘッダーの値を戻します。

GET_HEADER_COUNTファンクション

応答で戻されたHTTP応答ヘッダーの数を戻します。

GET_RESPONSEファンクション

HTTP応答を読み込みます。ファンクションが戻ると、ステータス行およびHTTP応答ヘッダーが読み込まれて処理されます。

READ_LINEプロシージャ

HTTP応答本体を行末までテキスト形式で読み込み、コール元が提供したバッファに出力を戻します。

READ_RAWプロシージャ

HTTP応答本体をバイナリ形式で読み込み、コール元が指定したバッファに出力を戻します。

READ_TEXTプロシージャ

HTTP応答本体をテキスト形式で読み込み、コール元が指定したバッファに出力を戻します。

SET_BODY_CHARSETプロシージャ

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合は、応答本体のキャラクタ・セットを設定します。

HTTP Cookieサブプログラム

表252-13 UTL_HTTPサブプログラム: HTTP Cookie

サブプログラム

説明

ADD_COOKIESプロシージャ

要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかにCookieを追加します。

CLEAR_COOKIESプロシージャ

要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかに保持されているCookieをすべて消去します。

GET_COOKIE_COUNTファンクション

要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかに保持されているCookieの数を戻します。

GET_COOKIESファンクション

要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかに保持されているすべてのCookieを戻します。

HTTPの永続的接続サブプログラム

表252-14 UTL_HTTPサブプログラム: HTTPの永続的接続

サブプログラム

説明

CLOSE_PERSISTENT_CONNプロシージャ

現在のデータベース・セッションでUTL_HTTPパッケージが保持するHTTPの永続的接続をクローズします。

CLOSE_PERSISTENT_CONNSプロシージャ

現在のデータベース・セッションでUTL_HTTPパッケージが保持するHTTPの永続的接続のグループをクローズします。

GET_PERSISTENT_CONN_COUNTファンクション

UTL_HTTPパッケージにより現在永続的に保持されているネットワーク接続数をWebサーバーに戻します。

GET_PERSISTENT_CONNSプロシージャ

UTL_HTTPパッケージにより現在永続的に保持されているネットワーク接続をすべてWebサーバーに戻します。

エラー条件のサブプログラム

表252-15 UTL_HTTPサブプログラム: エラー条件

サブプログラム

説明

GET_DETAILED_SQLCODEファンクション

最後に発生した例外の詳細なSQLCODEを取り出します。

GET_DETAILED_SQLERRMファンクション

最後に発生した例外の詳細なSQLERRMを取り出します。

UTL_HTTPサブプログラムの要約

表252-16 UTL_HTTPパッケージのサブプログラム

サブプログラム

説明

グループ

ADD_COOKIESプロシージャ

要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかにCookieを追加します。

HTTP Cookieサブプログラム

BEGIN_REQUESTファンクション

新しいHTTP要求を開始します。UTL_HTTPはターゲットWebサーバーまたはプロキシ・サーバーへのネットワーク接続を確立し、HTTP要求行を送信します。

HTTP要求サブプログラム

CLEAR_COOKIESプロシージャ

要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかに保持されているCookieをすべて消去します。

HTTP Cookieサブプログラム

CLOSE_PERSISTENT_CONNプロシージャ

現在のデータベース・セッションでUTL_HTTPパッケージが保持するHTTPの永続的接続をクローズします。

HTTPの永続的接続サブプログラム

CLOSE_PERSISTENT_CONNSプロシージャ

現在のデータベース・セッションでUTL_HTTPパッケージが保持するHTTPの永続的接続のグループをクローズします。

HTTPの永続的接続サブプログラム

CREATE_REQUEST_CONTEXTファンクション

UTL_HTTP内にWalletおよびCookieの表に対する要求コンテキストを作成します。

HTTP要求サブプログラム

DESTROY_REQUEST_CONTEXTプロシージャ

WalletおよびCookieの表に対する、UTL_HTTP内の要求コンテキストを破棄します。

HTTP要求サブプログラム

END_REQUESTプロシージャ

HTTP要求を終了します。

HTTP要求サブプログラム

END_RESPONSEプロシージャ

HTTP応答を終了します。HTTP要求および応答を完了します。

HTTP応答サブプログラム

GET_AUTHENTICATIONプロシージャ

Webサーバーが受け入れる要求に必要なHTTP認証情報を、HTTP応答ヘッダーの指示に従って取り出します。

HTTP応答サブプログラム

GET_BODY_CHARSETプロシージャ

将来のHTTP要求すべての本体におけるデフォルトのキャラクタ・セットを取り出します。

セッションの設定サブプログラム

GET_COOKIE_COUNTファンクション

すべてのWebサーバーにより設定されたUTL_HTTPパッケージが現在保持するCookieの数を戻します。

HTTP Cookieサブプログラム

GET_COOKIE_SUPPORTプロシージャ

現在のCookieのサポート設定を取り出します。

セッションの設定サブプログラム

GET_COOKIESファンクション

すべてのWebサーバーにより設定されたUTL_HTTPパッケージが現在保持するすべてのCookieを戻します。

HTTP Cookieサブプログラム

GET_DETAILED_EXCP_SUPPORTプロシージャ

UTL_HTTPパッケージが詳細な例外を呼び出すかどうかをチェックします。

セッションの設定サブプログラム

GET_DETAILED_SQLCODEファンクション

最後に発生した例外の詳細なSQLCODEを取り出します。

エラー条件のサブプログラム

GET_DETAILED_SQLERRMファンクション

最後に発生した例外の詳細なSQLERRMを取り出します。

エラー条件のサブプログラム

GET_FOLLOW_REDIRECTプロシージャ

現行のセッションでのfollow_redirectの設定を取り出します。

セッションの設定サブプログラム

GET_HEADERプロシージャ

応答で戻されたn回目のHTTP応答ヘッダーの名前および値を戻します。

HTTP応答サブプログラム

GET_HEADER_BY_NAMEプロシージャ

特定のヘッダー名を持つ応答に戻されたHTTP応答ヘッダーの値を戻します。

HTTP応答サブプログラム

GET_HEADER_COUNTファンクション

応答で戻されたHTTP応答ヘッダーの数を戻します。

HTTP応答およびHTTP応答サブプログラム

GET_PERSISTENT_CONN_COUNTファンクション

UTL_HTTPパッケージにより現在永続的に保持されているネットワーク接続数をWebサーバーに戻します。

HTTPの永続的接続サブプログラム

GET_HEADER_COUNTファンクション

将来のHTTP要求がHTTP 1.1の永続的接続をサポートするかどうかを確認し、現在のデータベース・ユーザー・セッションで保持される永続的接続の最大回数を設定します。

セッションの設定サブプログラム

GET_PERSISTENT_CONN_SUPPORTプロシージャ

永続的接続のサポートが有効かどうかを確認し、現行のセッションでの永続的接続の最大回数を取得します(「セッションの設定サブプログラム」を参照)。

HTTPの永続的接続サブプログラム

GET_PERSISTENT_CONNSプロシージャ

UTL_HTTPパッケージにより現在永続的に保持されているネットワーク接続をすべてWebサーバーに戻します。

HTTPの永続的接続サブプログラム

GET_PROXYプロシージャ

現在のプロキシ設定を取り出します。

セッションの設定サブプログラム

GET_RESPONSEファンクション

HTTP応答を読み込みます。ファンクションが戻ると、ステータス行およびHTTP応答ヘッダーが読み込まれて処理されます。

HTTP応答サブプログラム

GET_RESPONSE_ERROR_CHECKプロシージャ

応答エラー・チェックが設定されているかどうかをチェックします。

セッションの設定サブプログラム

GET_TRANSFER_TIMEOUTプロシージャ

現在のネットワーク転送のタイムアウト値を取り出します。

セッションの設定サブプログラム

READ_LINEプロシージャ

HTTP応答本体を行末までテキスト形式で読み込み、コール元が提供したバッファに出力を戻します。

HTTP応答サブプログラム

READ_RAWプロシージャ

HTTP応答本体をバイナリ形式で読み込み、コール元が指定したバッファに出力を戻します。

HTTP応答サブプログラム

READ_TEXTプロシージャ

HTTP応答本体をテキスト形式で読み込み、コール元が指定したバッファに出力を戻します。

HTTP応答サブプログラム

REQUESTファンクション

指定したURLから取り出したデータの最初の2000バイトまでを戻します。このファンクションは、SQL問合せで直接使用できます。

単一コール・サブプログラムでの単純なHTTPのフェッチ

REQUEST_PIECESファンクション

指定したURLから取り出したデータについて、2000バイト・ピースのPL/SQL表を戻します。

単一コール・サブプログラムでの単純なHTTPのフェッチ

SET_AUTHENTICATIONプロシージャ

HTTP要求ヘッダーのHTTP認証情報を設定します。Webサーバーが要求を認証するにはこの情報が必要です。

HTTP要求サブプログラム

SET_AUTHENTICATION_FROM_WALLETプロシージャ

Oracle Walletに格納されているユーザー名とパスワードの資格証明を使用して、Webサーバーで認証される要求に必要なHTTP要求ヘッダーのHTTP認証情報を設定します。

HTTP要求サブプログラム

SET_BODY_CHARSETプロシージャ

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合、将来のすべてのHTTP要求本体におけるデフォルトのキャラクタ・セットを設定します。

セッションの設定サブプログラム

SET_BODY_CHARSETプロシージャ

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合は、要求本体のデフォルトのキャラクタ・セットを設定します。

HTTP要求サブプログラム

SET_BODY_CHARSETプロシージャ

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合は、応答本体のキャラクタ・セットを設定します。

HTTP応答サブプログラムおよびセッションの設定サブプログラム

SET_COOKIE_SUPPORTプロシージャ

要求のHTTP Cookieのサポートを有効または無効にします。

HTTP要求サブプログラム

SET_DETAILED_EXCP_SUPPORTプロシージャ

将来のHTTP要求がHTTP Cookieをサポートするかどうかを設定し、現在のデータベース・ユーザー・セッションで保持されるCookieの最大数を設定します。

セッションの設定サブプログラム

SET_DETAILED_EXCP_SUPPORTプロシージャ

UTL_HTTPパッケージが詳細な例外を呼び出すように設定します。

セッションの設定サブプログラム

SET_FOLLOW_REDIRECTプロシージャ

GET_RESPONSEファンクションでの要求に対するHTTP応答において、HTTPリダイレクトの指示にUTL_HTTPが従う最大回数を設定します。

HTTP要求サブプログラム

SET_HEADERプロシージャ

GET_RESPONSEファンクションでの将来の要求に対するHTTP応答において、HTTPリダイレクトの指示にUTL_HTTPが従う最大回数を設定します。

セッションの設定サブプログラム

SET_HEADERプロシージャ

HTTP要求ヘッダーを設定します。要求ヘッダーは、設定後ただちにWebサーバーに送信されます。

HTTP要求サブプログラム

SET_PERSISTENT_CONN_SUPPORTプロシージャ

要求のHTTP 1.1の永続的接続のサポートを有効または無効にします。

HTTP要求サブプログラム

SET_PROXYプロシージャ

HTTPまたは他のプロトコルの要求で使用するプロキシを設定します。

セッションの設定およびセッションの設定サブプログラム

SET_RESPONSE_ERROR_CHECKプロシージャ

Webサーバーがエラーを示すステータス・コード(4xxまたは5xx)を戻した場合に、GET_RESPONSEが例外を呼び出すかどうかを設定します。

セッションの設定サブプログラム

SET_TRANSFER_TIMEOUTプロシージャ

UTL_HTTPがWebサーバーまたはプロキシ・サーバーからHTTP応答を読み込むタイムアウト値を設定します。

セッションの設定およびセッションの設定サブプログラム

SET_WALLETプロシージャ

Secure Sockets Layer(SSL)、つまり、HTTPSを経由するHTTP要求すべてに使用するOracle Walletを設定します。

セッションの設定サブプログラム

WRITE_LINEプロシージャ

HTTP要求本体にテキスト行を書き込み、改行文字(UTL_TCPで定義されるCRLF)を使用して行を終了します。

HTTP要求サブプログラム

WRITE_RAWプロシージャ

HTTP要求本体にバイナリ・データを書き込みます。

HTTP要求サブプログラム

WRITE_TEXTプロシージャ

HTTP要求本体にテキスト・データを書き込みます。

HTTP要求サブプログラム

ADD_COOKIESプロシージャ

このプロシージャは、要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかにCookieを追加します。

関連項目:
「HTTP Cookie」および「HTTP Cookieサブプログラム」

構文

UTL_HTTP.ADD_COOKIES (
cookies          IN  cookie_table,
request_context  IN  request_context_key DEFAULT NULL);

パラメータ

表252-17 ADD_COOKIESプロシージャのパラメータ

パラメータ

説明

cookies

追加されるCookie。

request_context

Cookieを追加する要求コンテキスト。NULLの場合、CookieはUTL_HTTPパッケージのセッション状態に追加されます。

使用上の注意

パッケージが現在保持するCookieは、新しいCookieが追加されるまでクリアされません。

BEGIN_REQUESTファンクション

このファンクションは、新しいHTTP要求を開始します。UTL_HTTPはターゲットWebサーバーまたはプロキシ・サーバーへのネットワーク接続を確立し、HTTP要求行を送信します。PL/SQLプログラムは、他のインタフェースをコールして要求を継続し、完了します。URLには、サーバーへの要求を認証するために必要なユーザー名とパスワードが含まれている場合があります。書式は次のとおりです。

scheme://[user[:password]@]host[:port]/[...]

関連項目:
「HTTP要求」および「HTTP要求サブプログラム」

構文

UTL_HTTP.BEGIN_REQUEST (
url               IN  VARCHAR2,
method            IN  VARCHAR2 DEFAULT 'GET',
http_version      IN  VARCHAR2 DEFAULT NULL,
request_context   IN  request_context_key DEFAULT NULL)
RETURN req;

パラメータ

表252-18 BEGIN_REQUESTファンクションのパラメータ

パラメータ

説明

url

HTTP要求のURL。

method

URLにより識別されたリソースで実行されるメソッド。

http_version

要求を送信するHTTPプロトコルのバージョン。プロトコル・バージョンの形式はHTTP/major-version.minor-versionです。major-versionおよびminor-versionは正の値です。このパラメータがNULLに設定されている場合、UTL_HTTPは、サポートされているHTTPプロトコルの最新バージョンを使用して要求を送信します。パッケージがサポートする最新バージョンは1.1ですが、次のバージョンにアップグレード可能です。デフォルトはNULLです。

request_context

このHTTP要求で使用するプライベートのWalletおよびCookieの表を保持する要求コンテキスト。このパラメータがNULLの場合、現在のデータベース・セッションで共有しているWalletおよびCookieの表がかわりに使用されます。

使用上の注意

- このファンクションに引数として渡されたURLについては、URL仕様RFC 2396による不正な文字(空白など)の検証は行われません。コールを実行する場合は、UTL_URLパッケージを使用してこのような文字をエスケープする必要があります。URLはUS-ASCII文字のみで構成する必要があります。URLで有効な文字のリストは、第266章「UTL_URL」を参照してください。URLはUS-ASCII文字のみで構成する必要があるので注意してください。それ以外の文字のURLでの使用は避けてください。

- BEGIN_REQUESTは、長さが32767バイト以下のURLを送信できます。ただし、受け入れることができるURLの長さの制限はWebサーバーごとに異なります。多くの場合、この制限は4000バイトです。この制限を超えた場合の結果は、Webサーバーによって異なります。たとえば、Webサーバーが応答を戻さずにHTTP接続を削除する場合があります。この場合、続けてGET_RESPONSEファンクションを実行すると、PROTOCOL_ERROR例外が発生します。
URLのQUERY_STRING(疑問符(?)の後の情報)が長い場合、URLは長くなります。通常、POSTメソッドを使用して、要求本体でこのパラメータ指定を送信することをお薦めします。

req := UTL_HTTP.BEGIN_REQUEST (url=>the_url, method=>'POST');
UTL_HTTP.SET_HEADER (r      =>  req,
name   =>  'Content-Type',
value  =>  'application/x-www-form-urlencoded');
UTL_HTTP.SET_HEADER (r      =>   req,
name   =>   'Content-Length',
value  =>'  <length of data posted in bytes>');
UTL_HTTP.WRITE_TEXT (r      =>   req,
data   =>   'p1 = value1&p2=value2...');
resp := UTL_HTTP.GET_RESPONSE
(r     =>   req);
...

プログラマは、特定のWebサーバーがこの方法で提供されたデータを受け入れるかどうかを決定する必要があります。

- HTTPSを介してWebサーバーにアクセスするには、Oracle Walletを設定する必要があります。Oracle Walletの設定方法については、「SET_WALLETプロシージャ」を参照してください。SSLクライアント認証を使用するには、クライアント証明書をWallet内に格納し、コール側はWalletに対するuse-client-certificates権限を所有する必要があります。権限の付与については、『Oracle Databaseセキュリティ・ガイド』の外部ネットワーク・サービスへのファイングレイン・アクセスの管理に関する項を参照してください。

- リモートWebサーバーに直接接続するか、またはHTTPプロキシを介して間接的に接続するには、UTL_HTTPに、リモートWebサーバー・ホストまたはプロキシ・ホストそれぞれへのconnect ACL権限が必要です。

CLEAR_COOKIESプロシージャ

このプロシージャは、要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかに保持されているCookieをすべて消去します。

関連項目:
「HTTP Cookie」および「HTTP Cookieサブプログラム」

構文

UTL_HTTP.CLEAR_COOKIES (
request_context  IN  request_context_key DEFAULT NULL);

パラメータ

表252-19 CLEAR_COOKIESプロシージャのパラメータ

パラメータ

説明

request_context

Cookieを消去する要求コンテキスト。NULLの場合、UTL_HTTPパッケージのセッション状態に保持されているCookieがかわりに消去されます。

CLOSE_PERSISTENT_CONNプロシージャ

このプロシージャは、現在のデータベース・セッションでUTL_HTTPパッケージが保持するHTTPの永続的接続をクローズします。

関連項目:
「HTTPの永続的接続」および「HTTPの永続的接続サブプログラム」

構文

UTL_HTTP.CLOSE_PERSISTENT_CONN (
conn  IN connection);

パラメータ

表252-20 CLOSE_PERSISTENT_CONNプロシージャのパラメータ

パラメータ

説明

conn

クローズするHTTP永続的接続。

CLOSE_PERSISTENT_CONNSプロシージャ

このプロシージャは、現在のデータベース・セッションでUTL_HTTPパッケージが保持するHTTPの永続的接続のグループをクローズします。このプロシージャは、パターンを一致させる方法を使用して、クローズする永続的接続を判別します。

共通のプロパティ(特定のホストへのすべての接続やすべてのSSL接続など)を共有するHTTP永続的接続のグループをクローズするには、特定のパラメータを設定して残りのパラメータをNULLにします。このプロシージャがコールされたときにNULLに設定されていたパラメータは、クローズする接続の判別に使用されません。

たとえば、次のコールをプロシージャに使用して、foobarへの永続的接続をすべてクローズします。

UTL_HTTP.CLOSE_PERSISTENT_CONNS(host => 'foobar');

次のプロシージャ・コールによって、TCP/IPポート80のfoobarを介した永続的接続がすべて閉じられます。

UTL_HTTP.CLOSE_PERSISTENT_CONNS(proxy_host => 'foobar',
proxy_port => 80);

次のコールをプロシージャに使用して、永続的接続をすべてクローズします。

UTL_HTTP.CLOSE_PERSISTENT_CONNS;

関連項目:
「HTTPの永続的接続」および「HTTPの永続的接続サブプログラム」

構文

UTL_HTTP.CLOSE_PERSISTENT_CONNS (
host        IN VARCHAR2 DEFAULT NULL,
port        IN PLS_INTEGER DEFAULT NULL,
proxy_host  IN VARCHAR2 DEFAULT NULL,
proxy_port  IN PLS_INTEGER DEFAULT NULL,
ssl         IN BOOLEAN DEFAULT NULL);

パラメータ

表252-21 CLOSE_PERSISTENT_CONNSプロシージャのパラメータ

パラメータ

説明

host

永続的接続をクローズするホスト。

port

永続的接続をクローズするポート番号。

proxy_host

永続的接続をクローズするプロキシ・ホスト。

proxy_port

永続的接続をクローズするプロキシ・ポート。

ssl

永続的なSSL接続をクローズします。

使用上の注意

異なるTCP/IPポートでの同じWebサーバーへの接続は、個別にカウントされます。Webサーバーのホスト名は、元のHTTP要求のURLで指定されたとおりに識別されます。したがって、ドメイン名を持つ完全修飾されたホスト名は、ドメイン名のないホスト名とは別にカウントされます。

このプロシージャがコールされたときにパラメータでNULL値を使用すると、パッケージでクローズする永続的接続を決定したときに、コール元がその値を無視することを意味します。特定の永続的接続をクローズする場合に永続的接続でNULLに設定されているパラメータの値のみをNULLに設定するには、CLOSE_PERSISTENT_CONNプロシージャを使用して、特定の永続的接続をクローズします。

CREATE_REQUEST_CONTEXTファンクション

このファンクションは、要求コンテキストを作成します。要求コンテキストとは、HTTP要求時にプライベートで使用するWalletおよびCookieを保持しているコンテキストのことです。これによって、HTTP要求では、同じデータベース・セッションでHTTP要求をする他のアプリケーションと共有されないWalletおよびCookieの表を使用できます。

関連項目:
「要求コンテキスト」および「HTTP要求コンテキスト・サブプログラム」

構文

UTL_HTTP.CREATE_REQUEST_CONTEXT (
wallet_path          IN VARCHAR2 DEFAULT NULL,
wallet_password      IN VARCHAR2 DEFAULT NULL,
enable_cookies       IN BOOLEAN  DEFAULT TRUE,
max_cookies          IN PLS_INTEGER DEFAULT 300,
max_cookies_per_site IN PLS_INTEGER DEFAULT 20)
RETURN request_context_key;

パラメータ

表252-22 CREATE_REQUEST_CONTEXTファンクションのパラメータ

パラメータ

説明

wallet_path

Oracle Walletを含むディレクトリ・パス。形式はfile:directory-pathです。

wallet_password

Walletのオープンに必要なパスワード。Walletの自動ログインが有効の場合は、パスワードを省略してNULLに設定する必要があります。ウォレットの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

enable_cookies

この要求コンテキストを使用しているHTTP要求が、HTTP Cookieをサポートするかどうかを設定します。TRUEの場合はサポートが有効になり、FALSEの場合はサポートが無効になります。

max_cookies

この要求コンテキストで保持されるCookieの最大合計数を設定します。

max_cookies_per_site

この要求コンテキストで保持されるWebサイトごとのCookieの最大数を設定します。

戻り値

作成された要求コンテキスト。

例

DECLARE
request_context  UTL_HTTP.REQUEST_CONTEXT_KEY;
req              utl_http.req;
BEGIN
request_context := UTL_HTTP.CREATE_REQUEST_CONTEXT(
wallet_path          => 'file:/oracle/wallets/test_wallets',
wallet_password      => NULL,
enable_cookies       => TRUE,
max_cookies          => 300,
max_cookies_per_site => 20);
req := UTL_HTTP.BEGIN_REQUEST(
url                  => 'http://www.example.com/',
request_context      => request_context);
END;

DESTROY_REQUEST_CONTEXTプロシージャ

このプロシージャは、UTL_HTTPの要求コンテキストを破棄します。HTTP要求またはHTTP応答で要求コンテキストが使用されている場合、その要求コンテキストを破棄することはできません。

関連項目:
「要求コンテキスト」および「HTTP要求コンテキスト・サブプログラム」

構文

UTL_HTTP.DESTROY_REQUEST_CONTEXT (
request_context    request_context_key);

パラメータ

表252-23 DESTROY_REQUEST_CONTEXTプロシージャのパラメータ

パラメータ

説明

request_context

破棄する要求コンテキスト。

例

DECLARE
request_context  UTL_HTTP.REQUEST_CONTEXT_KEY;
BEGIN
request_context := UTL_HTTP.CREATE_REQUEST_CONTEXT(…);
…
UTL_HTTP.DESTROY_REQUEST_CONTEXT(request_context);
END;

END_REQUESTプロシージャ

このプロシージャは、HTTP要求を終了します。要求の完了および応答の待機を行わずにHTTP要求を終了するために、プログラムでこのプロシージャをコールできます。または、プログラムは要求の開始、応答の待機、応答のクローズという通常の順序を経て要求を終了することもできます。ネットワーク接続は常にクローズされ、再利用されることはありません。

関連項目:
「HTTP要求」および「HTTP要求サブプログラム」

構文

UTL_HTTP.END_REQUEST (
r  IN OUT NOCOPY req);

パラメータ

表252-24 END_REQUESTプロシージャのパラメータ

パラメータ

説明

r

HTTP要求。

END_RESPONSEプロシージャ

このプロシージャは、HTTP応答を終了します。HTTP要求および応答を完了します。この要求でHTTP 1.1の永続的接続を使用している場合を除き、ネットワーク接続もクローズされます。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.END_RESPONSE (
r  IN OUT NOCOPY resp);

パラメータ

表252-25 END_RESPONSEプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

GET_AUTHENTICATIONプロシージャ

このプロシージャは、Webサーバーが受け付ける要求に必要とされるHTTP認証情報をHTTP応答ヘッダーの指示に従って取り出します。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.GET_AUTHENTICATION(
r          IN OUT NOCOPY resp,
scheme     OUT VARCHAR2,
realm      OUT VARCHAR2,
for_proxy  IN BOOLEAN  DEFAULT FALSE);

パラメータ

表252-26 GET_AUTHENTICATIONプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

scheme

要求されたHTTP認証のスキーム。

realm

要求されたHTTP認証のレルム。

for_proxy

WebサーバーではなくHTTPプロキシ・サーバーにアクセスするために必要なHTTP認証情報を戻します。デフォルトはFALSEです。

使用上の注意

ドキュメントが保護されていることをWebクライアントが認識していない場合、そのドキュメントを取り出すには少なくとも2つのHTTP要求が必要です。最初のHTTP要求で、Webクライアントは必要な認証情報を提供せずに要求を作成します。したがって、この要求は拒否されます。Webクライアントは、GET_AUTHENTICATIONをコールすることにより、認証対象となる要求に必要な認証情報を判別します。Webクライアントは2回目の要求を行い、SET_AUTHORIZATIONを使用して必要な認証情報を提供します。Webサーバーが認証情報を検証できると、要求は正常に処理され、要求したドキュメントが戻されます。要求を行う前に、認証情報が必要であることをWebクライアントが認識している場合は、最初の要求で必要な認証情報を提供できます。これにより、余分な要求を行わずに済みます。

GET_BODY_CHARSETプロシージャ

このプロシージャは、将来のHTTP要求すべての本体におけるデフォルトのキャラクタ・セットを取り出します。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_BODY_CHARSET (
charset  OUT NOCOPY VARCHAR2);

パラメータ

表252-27 GET_BODY_CHARSETプロシージャのパラメータ

パラメータ

説明

charset

将来のHTTP要求すべての本体におけるデフォルトのキャラクタ・セット。

GET_COOKIE_COUNTファンクション

このファンクションは、要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかに保持されているCookieの数を戻します。

関連項目:
「HTTP Cookie」および「HTTP Cookieサブプログラム」

構文

UTL_HTTP.GET_COOKIE_COUNT (
request_context  IN  request_context_key DEFAULT NULL)
RETURN PLS_INTEGER;

パラメータ

表252-28 GET_COOKIE_COUNTファンクションのパラメータ

パラメータ

説明

request_context

Cookieの数が戻される要求コンテキスト。NULLの場合は、UTL_HTTPパッケージのセッション状態に保持されているCookieの数が戻されます。

GET_COOKIE_SUPPORTプロシージャ

このプロシージャは、現在のCookieサポート設定を取り出します。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_COOKIE_SUPPORT (
enable                OUT BOOLEAN,
max_cookies           OUT PLS_INTEGER,
max_cookies_per_site  OUT PLS_INTEGER);

パラメータ

表252-29 GET_COOKIE_SUPPORTプロシージャのパラメータ

パラメータ

説明

enable

将来のHTTP要求がHTTP Cookieをサポートするかどうかを設定します(TRUEの場合はサポートし、FALSEの場合はサポートしません)。

max_cookies

現在のデータベース・ユーザー・セッションで保持されるCookieの最大合計数を示します。

max_cookies_per_site

現行のセッションで各Webサイトについて保持されるCookieの最大合計数を示します。

GET_COOKIESファンクション

このファンクションは、要求コンテキストまたはUTL_HTTPパッケージのセッション状態のいずれかに保持されているCookieをすべて戻します。

関連項目:
「HTTP Cookie」および「HTTP Cookieサブプログラム」

構文

UTL_HTTP.GET_COOKIES (
cookies          IN  OUT NOCOPY cookie_table,
request_context  IN             request_context_key DEFAULT NULL);

パラメータ

表252-30 GET_COOKIESファンクションのパラメータ

パラメータ

説明

cookies

戻されるCookie。

request_context

Cookieが戻される要求コンテキスト。NULLの場合、UTL_HTTPパッケージのセッション状態に保持されているCookieがかわりに戻されます。

GET_DETAILED_EXCP_SUPPORTプロシージャ

このプロシージャは、UTL_HTTPパッケージが詳細な例外を呼び出すかどうかをチェックします。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_DETAILED_EXCP_SUPPORT (
enable  OUT BOOLEAN);

パラメータ

表252-31 GET_DETAILED_EXCP_SUPPORTプロシージャのパラメータ

パラメータ

説明

enable

UTL_HTTPに詳細な例外を発生させる場合はTRUE、そうでない場合はFALSEに設定します。

GET_DETAILED_SQLCODEファンクション

このファンクションは、最後に発生した例外の詳細なSQLCODEを取り出します。

関連項目:
「エラー条件」および「エラー条件のサブプログラム」

構文

UTL_HTTP.GET_DETAILED_SQLCODE
RETURN PLS_INTEGER;

GET_DETAILED_SQLERRMファンクション

このファンクションは、最後に発生した例外の詳細なSQLERRMを取り出します。

関連項目:
「エラー条件」および「エラー条件のサブプログラム」

構文

UTL_HTTP.GET_DETAILED_SQLERRM
RETURN VARCHAR2;

GET_FOLLOW_REDIRECTプロシージャ

このプロシージャは、現行のセッションでのfollow_redirect設定を取り出します。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_FOLLOW_REDIRECT (
max_redirects  OUT PLS_INTEGER);

パラメータ

表252-32 GET_FOLLOW_REDIRECTプロシージャのパラメータ

パラメータ

説明

max_redirects

将来のHTTP要求すべてに対するリダイレクトの最大回数。

GET_HEADERプロシージャ

このプロシージャは、応答で戻されたn回目のHTTP応答ヘッダーの名前および値を戻します。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.GET_HEADER (
r      IN OUT NOCOPY resp,
n      IN PLS_INTEGER,
name   OUT NOCOPY VARCHAR2,
value  OUT NOCOPY VARCHAR2);

パラメータ

表252-33 GET_HEADERプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

n

n番目に戻されるヘッダー。

name

HTTP応答ヘッダーの名前。

value

HTTP応答ヘッダーの値。

使用上の注意

リモートWebサーバーから戻された応答本体がchunked transfer encoding形式でエンコードされている場合、応答本体の末尾で戻される追跡ヘッダーが応答に追加され、応答ヘッダーのカウントが更新されます。応答本体の末尾に到達した後、応答を終了する前に追加ヘッダーを取り出すことができます。

GET_HEADER_BY_NAMEプロシージャ

このプロシージャは、特定のヘッダー名を持つ応答に戻されたHTTP応答ヘッダーの値を戻します。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.GET_HEADER_BY_NAME(
r      IN OUT NOCOPY resp,
name   IN VARCHAR2,
value  OUT NOCOPY VARCHAR2,
n      IN PLS_INTEGER DEFAULT 1);

パラメータ

表252-34 GET_HEADER_BY_NAMEプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

name

値が戻されるHTTP応答ヘッダーの名前。

value

HTTP応答ヘッダーの値。

n

戻すように指定した名前によりn番目に発生するHTTP応答ヘッダー。デフォルトは1です。

使用上の注意

リモートWebサーバーから戻された応答本体がchunked transfer encoding形式でエンコードされている場合、応答本体の末尾で戻される追跡ヘッダーが応答に追加され、応答ヘッダーのカウントが更新されます。応答本体の末尾に到達した後、応答を終了する前に追加ヘッダーを取り出すことができます。

GET_HEADER_COUNTファンクション

このファンクションは、応答で戻されたHTTP応答ヘッダーの数を戻します。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.GET_HEADER_COUNT (
r  IN OUT NOCOPY resp)
RETURN PLS_INTEGER;

パラメータ

表252-35 GET_HEADER_COUNTファンクションのパラメータ

パラメータ

説明

r

HTTP応答。

使用上の注意

リモートWebサーバーから戻された応答本体がchunked transfer encoding形式でエンコードされている場合、応答本体の末尾で戻される追跡ヘッダーが応答に追加され、応答ヘッダーのカウントが更新されます。応答本体の末尾に到達した後、応答を終了する前に追加ヘッダーを取り出すことができます。

GET_PERSISTENT_CONN_COUNTファンクション

このファンクションは、UTL_HTTPパッケージにより現在永続的に保持されているネットワーク接続数をWebサーバーに戻します。

関連項目:
「HTTPの永続的接続」および「HTTPの永続的接続サブプログラム」

構文

UTL_HTTP.GET_PERSISTENT_CONN_COUNT
RETURN PLS_INTEGER;

使用上の注意

異なるTCP/IPポートでの同じWebサーバーへの接続は、個別にカウントされます。Webサーバーのホスト名は、元のHTTP要求のURLで指定されたとおりに識別されます。したがって、ドメイン名を持つ完全修飾されたホスト名は、ドメイン名のないホスト名とは別にカウントされます。

GET_PERSISTENT_CONN_SUPPORTプロシージャ

このプロシージャは次の項目をチェックします。

- 永続的接続サポートが有効にされているかどうか。

- 現行のセッションでの永続的接続の最大数の取得。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_PERSISTENT_CONN_SUPPORT (
enable     OUT BOOLEAN,
max_conns  OUT PLS_INTEGER);

パラメータ

表252-36 GET_PERSISTENT_CONN_SUPPORTプロシージャのパラメータ

パラメータ

説明

enable

永続的接続サポートが有効にされている場合はTRUE、そうでない場合はFALSEです。

max_conns

現行のセッションで保持される永続的接続の最大数。

GET_PERSISTENT_CONNSプロシージャ

このプロシージャは、UTL_HTTPパッケージにより現在永続的に保持されているネットワーク接続をすべてWebサーバーに戻します。

関連項目:
「HTTPの永続的接続」および「HTTPの永続的接続サブプログラム」

構文

UTL_HTTP.get_persistent_conns (
connections  IN OUT NOCOPY connection_table);

パラメータ

表252-37 GET_PERSISTENT_CONNSプロシージャのパラメータ

パラメータ

説明

connections

永続的に保持されているネットワーク接続。

使用上の注意

異なるTCP/IPポートでの同じWebサーバーへの接続は、個別にカウントされます。Webサーバーのホスト名は、元のHTTP要求のURLで指定されたとおりに識別されます。したがって、ドメイン名を持つ完全修飾されたホスト名は、ドメイン名のないホスト名とは別にカウントされます。

GET_PROXYプロシージャ

このプロシージャは、現在のプロキシ設定を取り出します。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_PROXY (
proxy             OUT NOCOPY VARCHAR2,
no_proxy_domains  OUT NOCOPY VARCHAR2);

パラメータ

表252-38 GET_PROXYプロシージャのパラメータ

パラメータ

説明

proxy

UTL_HTTPパッケージにより現在使用されているプロキシ(ホストおよびオプションのポート番号)。

no_proxy_domains

プロキシをすべての要求に対して使用しないホストおよびドメインのリスト。

GET_RESPONSEファンクション

このファンクションは、HTTP応答を読み込みます。ファンクションが戻ると、ステータス行およびHTTP応答ヘッダーが読み込まれて処理されます。ステータス・コード、理由、HTTPプロトコルのバージョンは応答レコードに格納されます。このファンクションは、HTTPヘッダー・セクションを完了します。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.GET_RESPONSE (
r                       IN OUT NOCOPY req,
return_info_response    IN BOOLEAN DEFAULT FALSE)
RETURN resp;

パラメータ

表252-39 GET_RESPONSEファンクションのパラメータ

パラメータ

説明

r

HTTP応答。

return_info_response

100情報レスポンスを戻すか戻さないか。

- TRUEを指定すると、get_responseはHTTPサーバーから100情報レスポンスを受信したときにこのレスポンスを戻します。100レスポンスが戻された場合、リクエストは終了しません。

- FALSEを指定すると、APIはHTTPサーバーから受信した100情報レスポンスをすべて無視し、後続の100以外のレスポンスをかわりに戻します。デフォルトはFALSEです。

例外

- 詳細例外を無効にした場合:
ORA-29273 REQUEST_FAILED - 要求の実行に失敗しました。詳細なエラー・メッセージを取得するには、GET_DETAILED_EXCP_SUPPORTプロシージャとGET_DETAILED_SQLERRMファンクションを使用します。

- 詳細例外を有効にした場合:
ORA-29261 BAD_ARGUMENT - 渡された引数の一部が無効です。

- レスポンス・エラー検査を有効にした場合:
ORA-29268 HTTP_CLIENT_ERROR - レスポンス・コードは400範囲内にあります。

ORA-29269 HTTP_SERVER_ERROR - レスポンス・コードは500範囲内にあります。

使用上の注意

- 例外が発生したかしないかに関係なく、このファンクションが戻ると要求は終了します。END_REQUESTプロシージャを起動する必要はありません。

- URLリダイレクトが行われると、REQレコードのURLおよびmethodフィールドは、最後にリダイレクトされたURL、およびそのURLへのアクセスに使用されたメソッドに更新されます。

例

特定の状況では(HTTPクライアントによって開始された、または開始されていない)、HTTPサーバーは1xx情報レスポンスを戻す場合があります。このようなレスポンスを予期していないユーザーは、レスポンスを無視して通常のレスポンスの受信に進むようにGET_RESPONSEに指示できます。ユーザーがこのようなレスポンスを予期している場合、ユーザーはレスポンスを戻すようにGET_RESPONSEに指示できます。

たとえば、ユーザーが大きな要求本体を含むHTTP POST要求を発行する場合に、サーバーがデータを送信する前に要求を受け入れるように、HTTPサーバーを検査できます。このためには、ユーザーは追加のEXPECT: 100-CONTINUE要求ヘッダーを送信し、要求本体の送信に進む前に、サーバーから100 CONTINUEレスポンスがあるかどうか検査できます。その後、ユーザーは通常のHTTPレスポンスを受け取ります。

次に、コードの例を示します。

DECLARE
data  VARCHAR2(1024) := '...';
req   utl_http.req;
resp  utl_http.resp;
BEGIN

req := utl_http.begin_request('http://www.acme.com/receiver', 'POST');
utl_http.set_header(req, 'Content-Length', length(data));
-- Ask HTTP server to return "100 Continue" response
utl_http.set_header(req, 'Expect', '100-continue');
resp := utl_http.get_response(req, TRUE);

-- Check for and dispose "100 Continue" response
IF (resp.status_code <> 100) THEN
utl_http.end_response(resp);
raise_application_error(20000, 'Request rejected');
END IF;
utl_http.end_response(resp);

-- Now, send the request body
utl_http.write_text(req, data);

-- Get the regular response
resp := utl_http.get_response(req);
utl_http.read_text(resp, data);

utl_http.end_response(resp);

END;

GET_RESPONSE_ERROR_CHECKプロシージャ

このプロシージャは、応答エラー・チェックが設定されているかどうかをチェックします。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_RESPONSE_ERROR_CHECK (
enable  OUT BOOLEAN);

パラメータ

表252-40 GET_RESPONSE_ERROR_CHECKプロシージャのパラメータ

パラメータ

説明

enable

応答エラー・チェックが設定されている場合はTRUE、そうでない場合はFALSEです。

GET_TRANSFER_TIMEOUTプロシージャ

このプロシージャは、将来のHTTP要求に対するデフォルトのタイムアウト値を取り出します。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.GET_TRANSFER_TIMEOUT (
timeout  OUT PLS_INTEGER);

パラメータ

表252-41 GET_TRANSFER_TIMEOUTプロシージャのパラメータ

パラメータ

説明

timeout

ネットワーク転送のタイムアウト値(秒)。

READ_LINEプロシージャ

このプロシージャは、HTTP応答本体を行末までテキスト形式で読み込み、コール元が提供したバッファに出力を戻します。行末は、UTL_TCPのread_lineファンクションで定義されます。HTTP応答本体の終端に到達した場合、end_of_body例外が発生します。テキスト・データは、応答本体のキャラクタ・セットからデータベース・キャラクタ・セットに自動的に変換されます。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.READ_LINE(
r            IN OUT NOCOPY resp,
data         OUT NOCOPY  VARCHAR2 CHARACTER SET ANY_CS,
remove_crlf  IN  BOOLEAN DEFAULT FALSE);

パラメータ

表252-42 READ_LINEプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

data

テキスト形式のHTTP応答本体。

remove_crlf

TRUEの場合、改行文字が削除されます。

使用上の注意

UTL_HTTPパッケージは、HTTP 1.1 chunked transfer-encodingをサポートしています。応答ヘッダーで指定されたchunked transfer-encoding形式で応答本体が戻された場合、パッケージは自動的にチャンクをデコードし、チャンクを解除した形式の応答本体を戻します。

転送のタイムアウトがこの応答の要求で設定されている場合、read_lineは、タイムアウトが発生するまでの間、各データ・パケットが読み込まれるまで待機します。タイムアウトが発生すると、このプロシージャは読込みを停止し、正常に読み込んだデータをすべて戻します。正常に読み込まれたデータがない場合は、transfer_timeout例外が発生します。例外を処理し、読込み操作を後で再試行できます。

マルチバイト・キャラクタの一部が応答本体の終わりで検出された場合、read_lineは読込みを中止し、正常かつ完全に読み込まれたマルチバイト・キャラクタをすべて戻します。正常に読み込まれた文字がない場合は、partial_multibyte_char例外が発生します。read_rawプロシージャを使用して例外を処理し、部分的なマルチバイト・キャラクタのバイトをバイナリとして読み込むことができます。マルチバイト・キャラクタの一部が渡されていない状態でタイムアウトが発生し、応答本体の途中でマルチバイト・キャラクタの残りの部分が表示された場合は、transfer_timeout例外が発生します。例外を処理し、読込み操作を後で再試行できます。

Content-Type応答ヘッダーによって指定されている応答本体のキャラクタ・セットが不明であるか、Oracleではサポートされていない場合に、応答本体をテキストとして読み取ろうとすると、「ORA-01482: 指定されたキャラクタ・セットはサポートされていません。」という例外が発生します。応答本体は、READ_RAWプロシージャを使用してバイナリとして読み込むか、SET_BODY_CHARSETプロシージャを使用して、その応答本体のキャラクタ・セットを明示的に設定することで再度テキストとして読み込むことができます。

READ_RAWプロシージャ

このプロシージャは、HTTP応答本体をバイナリ形式で読み込み、コール元が提供したバッファに出力を戻します。HTTP応答本体の終端に到達した場合、end_of_body例外が発生します。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.READ_RAW(
r     IN OUT NOCOPY resp,
data  OUT NOCOPY RAW,
len   IN PLS_INTEGER DEFAULT NULL);

パラメータ

表252-43 READ_RAWプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

data

バイナリ形式のHTTP応答本体。

len

読み込むデータのバイト数。lenがNULLの場合、このプロシージャは、dataに割り当てられたバッファを最大限に活用して入力を読み込みます。HTTP応答本体の末尾に到達するまで、またはtransfer_timeoutの時間量が経過するまでに使用できるデータが少ない場合は、実際に戻されるデータ量が指定した量より減る可能性があります。デフォルトはNULLです。

使用上の注意

UTL_HTTPパッケージは、HTTP 1.1 chunked transfer-encodingをサポートしています。応答ヘッダーで指定されたchunked transfer-encoding形式で応答本体が戻された場合、パッケージは自動的にチャンクをデコードし、チャンクを解除した形式の応答本体を戻します。

転送のタイムアウトがこの応答の要求で設定されている場合、read_rawは、タイムアウトが発生するまでの間、各データ・パケットが読み込まれるまで待機します。タイムアウトが発生すると、read_rawは読込みを停止し、正常に読み込んだデータをすべて戻します。正常に読み込まれたデータがない場合は、transfer_timeout例外が発生します。例外を処理し、読込み操作を後で再試行できます。

READ_TEXTプロシージャ

このプロシージャは、HTTP応答本体をテキスト形式で読み込み、コール元が提供したバッファに出力を戻します。HTTP応答本体の終端に到達した場合、end_of_body例外が発生します。テキスト・データは、応答本体のキャラクタ・セットからデータベース・キャラクタ・セットに自動的に変換されます。

関連項目:
HTTP応答およびHTTP応答サブプログラム

構文

UTL_HTTP.READ_TEXT(
r     IN OUT NOCOPY resp,
data  OUT NOCOPY VARCHAR2 CHARACTER SET ANY_CS,
len   IN PLS_INTEGER DEFAULT NULL);

パラメータ

表252-44 READ_TEXTプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

data

テキスト形式のHTTP応答本体。

len

読み込まれるデータの最大文字数。lenがNULLの場合、このプロシージャは、dataに割り当てられたバッファを最大限に活用して入力を読み込みます。HTTP応答本体の末尾に到達するまで、またはtransfer_timeoutの時間量が経過するまでに使用できるデータが少ない場合は、実際に戻されるデータ量が指定した量より減る可能性があります。デフォルトはNULLです。

使用上の注意

UTL_HTTPパッケージは、HTTP 1.1 chunked transfer-encodingをサポートしています。応答ヘッダーで指定されたchunked transfer-encoding形式で応答本体が戻された場合、パッケージは自動的にチャンクをデコードし、チャンクを解除した形式の応答本体を戻します。

転送のタイムアウトがこの応答の要求で設定されている場合、read_textは、タイムアウトが発生するまでの間、各データ・パケットが読み込まれるまで待機します。タイムアウトが発生すると、このプロシージャは読込みを停止し、正常に読み込んだデータをすべて戻します。正常に読み込まれたデータがない場合は、transfer_timeout例外が発生します。例外を処理し、読込み操作を後で再試行できます。

マルチバイト・キャラクタの一部が応答本体の終わりで検出された場合、read_textは読込みを中止し、正常かつ完全に読み込まれたマルチバイト・キャラクタをすべて戻します。正常に読み込まれた文字がない場合は、partial_multibyte_char例外が発生します。read_rawプロシージャを使用して例外を処理し、部分的なマルチバイト・キャラクタのバイトをバイナリとして読み込むことができます。マルチバイト・キャラクタの一部が渡されていない状態でタイムアウトが発生し、応答本体の途中でマルチバイト・キャラクタの残りの部分が表示された場合は、transfer_timeout例外が発生します。例外を処理し、読込み操作を後で再試行できます。

Content-Type応答ヘッダーによって指定されている応答本体のキャラクタ・セットが不明であるか、Oracleでサポートされていない場合に、応答本体をテキストとして読み込もうとすると、「ORA-01482: 指定されたキャラクタ・セットはサポートされていません。」という例外が発生します。応答本体は、READ_RAWプロシージャを使用してバイナリとして読み込むか、SET_BODY_CHARSETプロシージャを使用して、その応答本体のキャラクタ・セットを明示的に設定することで再度テキストとして読み込むことができます。

REQUESTファンクション

このファンクションは、指定したURLから取り出したデータの最初の2000バイトまでを戻します。このファンクションは、SQL問合せで直接使用できます。URLには、サーバーへの要求を認証するために必要なユーザー名とパスワードが含まれている場合があります。書式は次のとおりです。

scheme://[user[:password]@]host[:port]/[...]

プロキシ文字列の中で指定するプロキシのユーザー名またはパスワード、あるいはその両方を定義できます。書式は次のとおりです。

[http://][user[:password]@]host[:port][/]

関連項目:
「単純なHTTPのフェッチ」および「単一コール・サブプログラムでの単純なHTTPのフェッチ」

構文

UTL_HTTP.REQUEST (
url              IN VARCHAR2,
proxy            IN VARCHAR2 DEFAULT NULL,
wallet_path      IN VARCHAR2 DEFAULT NULL,
wallet_password  IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;

プラグマ

pragma restrict_references (request, wnds, rnds, wnps, rnps);

パラメータ

表252-45 REQUESTファンクションのパラメータ

パラメータ

説明

url

URL。

proxy

(オプション)HTTP要求時に使用するプロキシ・サーバーを指定します。プロキシ設定の完全な形式については、SET_PROXYを参照してください。

wallet_path

(オプション)クライアント側のWalletを指定します。クライアント側のWalletには、HTTPS要求に必要な信頼されている認証局のリストが含まれています。wallet_pathの形式は、たとえば、PCではfile:c:\WINNT\Profiles\username\WALLETS、UNIXではfile:/home/username/walletsとなります。

UTL_HTTPパッケージがOracle Databaseサーバーで実行される場合は、データベース・サーバーからWalletにアクセスします。したがって、Walletのパスにデータベース・サーバーからアクセスできる必要があります。Oracle Walletの設定方法については、SET_WALLETプロシージャを参照してください。HTTPS以外の要求の場合は、Oracle Walletは必要ありません。

wallet_password

(オプション)Walletのオープンに必要なパスワードを指定します。

戻り値

戻りタイプは長さ2000以下の文字列で、引数URLへのHTTP要求から戻されたHTML結果から最初の2000バイトまでが含まれます。

例外

INIT_FAILED
REQUEST_FAILED

使用上の注意

このファンクションに引数として渡されたURLでは、URL仕様RFC 2396に従った不正文字(空白など)の検証は行われません。コール元は、UTL_URLパッケージを使用して、このような文字をエスケープする必要があります。URLで有効な文字のリストについては、パッケージのコメントを参照してください。URLはUS-ASCII文字のみで構成する必要があるので注意してください。それ以外の文字のURLでの使用は避けてください。

Oracle Walletの使用方法については、SET_WALLETファンクションのマニュアルを参照してください。Oracle Walletは、HTTPS Webサーバーへのアクセスに必要です。

応答エラー・チェックがオンにされないかぎり、Webサーバーから4xxまたは5xxの応答を受信してもこのファンクションが例外を呼び出すことはありません。そのかわりに、Webサーバーからフォーマット・エラー・メッセージが戻されます。

<HTML>
<HEAD>
<TITLE>Error Message</TITLE>
</HEAD>
<BODY>
<H1>Fatal Error 500</H1>
Can't Access Document:  http://home.nothing.comm.
<P>
<B>Reason:</B> Can't locate remote host:  home.nothing.comm.
<P>
<P><HR>
<ADDRESS><A HREF="http://www.w3.org">
CERN-HTTPD3.0A</A></ADDRESS>
</BODY>
</HTML>

例

SQL> SELECT UTL_HTTP.REQUEST('http://www.my-company.com/') FROM DUAL;
UTL_HTTP.REQUEST('HTTP://WWW.MY-COMPANY.COM/')
<html>
<head><title>My Company Home Page</title>
<!--changed Jan. 16, 19
1 row selected.

firewallの内側にいる場合は、proxyパラメータを含めます。たとえば、Oracle firewall内には、www-proxy.my-company.comという名前のプロキシ・サーバーがある場合があります。

SQLPLUS> SELECT
UTL_HTTP.REQUEST('http://www.my-company.com', 'www-proxy.us.my-company.com') FROM DUAL;

REQUEST_PIECESファンクション

このファンクションは、指定したURLから取り出したデータについて、2000バイト・ピースのPL/SQL表を戻します。プロキシ文字列の中で指定するプロキシのユーザー名またはパスワード、あるいはその両方を定義できます。書式は次のとおりです。

[http://][user[:password]@]host[:port][/]

関連項目:
「単純なHTTPのフェッチ」および「単一コール・サブプログラムでの単純なHTTPのフェッチ」

構文

TYPE html_pieces IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;

UTL_HTTP.REQUEST_PIECES (
url             IN VARCHAR2,
max_pieces      IN NATURAL DEFAULT 32767,
proxy           IN VARCHAR2 DEFAULT NULL,
wallet_path     IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
RETURN html_pieces;

プラグマ

PRAGMA RESTRICT_REFERENCES (request_pieces, WNDS, RNDS, WNPS, RNPS);

パラメータ

表252-46 REQUEST_PIECESファンクションのパラメータ

パラメータ

説明

url

URL。

max_pieces

(オプション)REQUEST_PIECESが戻すピースの最大数(長さは各2000文字、最後のピースはこれより短くなる場合があります)。指定する場合、引数は正の整数を指定します。

proxy

(オプション)HTTP要求時に使用するプロキシ・サーバーを指定します。プロキシ設定の完全な形式については、SET_PROXYを参照してください。

wallet_path

(オプション)クライアント側のWalletを指定します。クライアント側のWalletには、HTTPS要求に必要な信頼されている認証局のリストが含まれています。

wallet_pathの形式は、たとえば、PCではfile:c:\WINNT\Profiles\username\WALLETS、UNIXではfile:/home/username/walletsとなります。UTL_HTTPパッケージがOracle Databaseサーバーで実行される場合は、データベース・サーバーからWalletにアクセスします。したがって、Walletのパスにデータベース・サーバーからアクセスできる必要があります。

Oracle Walletの設定方法については、SET_WALLETプロシージャを参照してください。HTTPS以外の要求の場合は、Oracle Walletは必要ありません。

wallet_password

(オプション)Walletのオープンに必要なパスワードを指定します。

戻り値

REQUEST_PIECESは、UTL_HTTP.HTML_PIECESタイプのPL/SQL表を戻します。PL/SQL表の各要素は、最大長2,000の文字列です。REQUEST_PIECESにより戻されるPL/SQL表の要素は、そのURLに対してHTTP要求から取得した連続データです。

例外

INIT_FAILED
REQUEST_FAILED

使用上の注意

このファンクションに引数として渡されたURLでは、URL仕様RFC 2396に従った不正文字(空白など)の検証は行われません。コール元は、UTL_URLパッケージを使用して、このような文字をエスケープする必要があります。URLで有効な文字のリストについては、パッケージのコメントを参照してください。URLはUS-ASCII文字のみで構成する必要があるので注意してください。それ以外の文字のURLでの使用は避けてください。

このファンクションにより戻されるPL/SQL表の各エントリ(情報の断片)は、容量を完全に満たさない場合があります。このファンクションでは、前の断片が完全に満たされる前に、次の断片にデータが到着し始めます。

Oracle Walletの使用方法については、SET_WALLETファンクションのマニュアルを参照してください。Oracle Walletは、HTTPS Webサーバーへのアクセスに必要です。

応答エラー・チェックがオンにされないかぎり、Webサーバーから4xxまたは5xxの応答を受信してもこのファンクションが例外を呼び出すことはありません。そのかわりに、Webサーバーからフォーマット・エラー・メッセージが戻されます。

<HTML>
<HEAD>
<TITLE>Error Message</TITLE>
</HEAD>
<BODY>
<H1>Fatal Error 500</H1>
Can't Access Document:  http://home.nothing.comm.
<P>
<B>Reason:</B> Can't locate remote host:  home.nothing.comm.
<P>
<P><HR>
<ADDRESS><A HREF="http://www.w3.org">
CERN-HTTPD3.0A</A></ADDRESS>
</BODY>
</HTML>

例

SET SERVEROUTPUT ON

DECLARE
x   UTL_HTTP.HTML_PIECES;
len PLS_INTEGER;
BEGIN
x := UTL_HTTP.REQUEST_PIECES('http://www.oracle.com/', 100);
DBMS_OUTPUT.PUT_LINE(x.count || ' pieces were retrieved.');
DBMS_OUTPUT.PUT_LINE('with total length ');
IF x.count < 1 THEN
DBMS_OUTPUT.PUT_LINE('0');
ELSE
len := 0;
FOR i in 1..x.count LOOP
len := len + length(x(i));
END LOOP;
DBMS_OUTPUT.PUT_LINE(len);
END IF;
END;
/
-- Output
Statement processed.
4 pieces were retrieved.
with total length
7687

SET_AUTHENTICATIONプロシージャ

このプロシージャは、HTTP要求ヘッダーのHTTP認証情報を設定します。Webサーバーが要求を認証するにはこの情報が必要です。

関連項目:
「HTTP要求」および「HTTP要求サブプログラム」

構文

UTL_HTTP.SET_AUTHENTICATION(
r         IN OUT NOCOPY req,
username  IN VARCHAR2,
password  IN VARCHAR2,
scheme    IN VARCHAR2 DEFAULT 'Basic',
for_proxy IN BOOLEAN  DEFAULT FALSE);

パラメータ

表252-47 SET_AUTHENTICATIONプロシージャのパラメータ

パラメータ

説明

r

HTTP要求

username

HTTP認証のユーザー名。

password

HTTP認証のパスワード。

scheme

HTTP認証方式。Basic(HTTP基本認証方式)またはAWS(Amazon S3認証方式)のいずれか。デフォルトはBasicです。

for_proxy

HTTP認証情報がWebサーバーではなくHTTPプロキシ・サーバーにアクセスするためのものであるかどうかを識別します。デフォルトはFALSEです。

使用上の注意

サポートされている認証方式は、HTTP基本認証およびAmazon S3認証です。

SET_AUTHENTICATION_FROM_WALLETプロシージャ

このプロシージャは、Oracle Walletに格納されているユーザー名とパスワードの資格証明を使用して、Webサーバーで認証される要求に必要なHTTP要求ヘッダーのHTTP認証情報を設定します。

関連項目:
「外部パスワード・ストア」および「HTTP要求サブプログラム」

構文

UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET(
r         IN OUT NOCOPY req,
alias     IN VARCHAR2,
scheme    IN VARCHAR2 DEFAULT 'Basic',
for_proxy IN BOOLEAN  DEFAULT FALSE);

パラメータ

表252-48 SET_AUTHENTICATION_FROM_WALLETプロシージャのパラメータ

パラメータ

説明

r

HTTP要求。

alias

Oracle Walletに格納されているユーザー名とパスワードを識別して取得するための別名。

scheme

HTTP認証方式。Basic(HTTP基本認証方式)またはAWS(Amazon S3認証方式)のいずれか。デフォルトはBasicです。

for_proxy

HTTP認証情報がWebサーバーではなくHTTPプロキシ・サーバーにアクセスするためのものであるかどうかを識別します。デフォルトはFALSEです。

使用上の注意

- Wallet内のパスワードの資格証明を使用するには、UTL_HTTPユーザーにWalletに対するuse-passwords権限が必要です。

- サポートされている認証方式は、HTTP基本認証方式およびAmazon S3認証方式です。

例

Walletを作成し、Walletにユーザー名とパスワードを入力する場合

> mkstore -wrl /oracle/wallets/test_wallet -create
Enter password: ******
Enter password again: ******
> mkstore –wrl /oracle/wallets/test_wallet –createCredential hr-access jsmith
Your secret/Password is missing in the command line
Enter your secret/Password: ****
Re-enter your secret/Password: ****
Enter wallet password: ******

データベース管理者が、Walletに対するuse-passwords権限をユーザーに付与する場合

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
acl         => 'wallet-acl.xml',
description => 'Wallet ACL',
principal   => 'SCOTT',
is_grant    => TRUE,
privilege   => 'use-passwords');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_acl(
acl          => 'wallet-acl.xml',
wallet_path  => 'file: /oracle/wallets/test_wallet');
END;

Wallet内のユーザー名とパスワードを使用する場合

DECLARE
req  UTL_HTTP.req;
BEGIN
UTL_HTTP.SET_WALLET(path => 'file:/oracle/wallets/test_wallet');
req := UTL_HTTP.BEGIN_REQUEST(…);
UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET(req, 'hr-access');
…
END;

SET_BODY_CHARSETプロシージャ

このプロシージャはオーバーロードされています。各機能の説明は構文宣言の箇所に併記してあります。

関連項目:

- HTTP応答およびHTTP応答サブプログラム

- セッションの設定およびセッションの設定サブプログラム

構文

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合、将来のすべてのHTTP要求本体におけるデフォルトのキャラクタ・セットを設定します。要求または応答のメディア・タイプがtextで、キャラクタ・セット情報がContent-Typeヘッダーに含まれていない場合は、HTTPプロトコルの標準仕様に従い、要求または応答の本体キャラクタ・セットはデフォルトのISO-8859-1になります。要求に対して作成された応答は、現行のセッションの本体キャラクタ・セットではなく、要求のデフォルトの本体キャラクタ・セットを継承します。データベース・ユーザー・セッションでは、デフォルトの本体キャラクタ・セットはISO-8859-1です。デフォルトの本体キャラクタ・セットの設定は将来の要求に対してのみ影響を与え、既存の要求に影響はありません。要求が作成された後、要求を操作するその他のSET_BODY_CHARSETプロシージャを使用して、本体キャラクタ・セットを変更できます。

UTL_HTTP.SET_BODY_CHARSET (
charset  IN VARCHAR2 DEFAULT NULL);

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合は、要求本体のデフォルトのキャラクタ・セットを設定します。要求または応答のメディア・タイプがtextで、キャラクタ・セット情報がContent-Typeヘッダーに含まれていない場合は、HTTPプロトコルの標準仕様に従い、要求または応答の本体キャラクタ・セットはデフォルトのISO-8859-1になります。このプロシージャを使用して、要求がセッションのデフォルト設定を継承するデフォルトの本体キャラクタ・セットを変更します。

UTL_HTTP.SET_BODY_CHARSET(
r        IN OUT NOCOPY req,
charset  IN VARCHAR2 DEFAULT NULL);

メディア・タイプがtextで、キャラクタ・セットがContent-Typeヘッダーで指定されていない場合は、応答本体のキャラクタ・セットを設定します。HTTPプロトコルの標準仕様ごとに、要求または応答のメディア・タイプがtextで、キャラクタ・セット情報がContent-Typeヘッダーに含まれていない場合は、要求または応答の本体キャラクタ・セットはデフォルトのISO-8859-1になります。このプロシージャを使用して、応答が要求から継承するデフォルトの本体キャラクタ・セットを変更します。

UTL_HTTP.SET_BODY_CHARSET(
r        IN OUT NOCOPY resp,
charset  IN VARCHAR2 DEFAULT NULL);

パラメータ

表252-49 SET_BODY_CHARSETプロシージャのパラメータ

パラメータ

説明

r

HTTP応答。

charset

応答本体のデフォルトのキャラクタ・セット。キャラクタ・セットは、OracleまたはInternet Assigned Numbers Authority(IANA)のネーミング規則で命名できます。charsetがNULLの場合、データベース・キャラクタ・セットと想定されます。

SET_COOKIE_SUPPORTプロシージャ

このプロシージャはオーバーロードされています。各機能の説明は構文宣言の箇所に併記してあります。

このプロシージャの説明は次のとおりです。

関連項目:

- 「HTTP要求」および「HTTP要求サブプログラム」

- セッションの設定およびセッションの設定サブプログラム

構文

要求のHTTP Cookieのサポートを有効または無効にします。このプロシージャを使用して、要求がセッションのデフォルト設定を継承するCookieのサポート設定を変更します。

UTL_HTTP.SET_COOKIE_SUPPORT(
r       IN OUT NOCOPY REQ,
enable  IN BOOLEAN DEFAULT TRUE);

将来のHTTP要求がHTTP Cookieをサポートするかどうかを設定し、現在のデータベース・ユーザー・セッションで保持されるCookieの最大数を設定します。

UTL_HTTP.SET_COOKIE_SUPPORT (
enable       IN BOOLEAN,
max_cookies  IN PLS_INTEGER DEFAULT 300,
max_cookies_per_site  IN PLS_INTEGER DEFAULT 20);

パラメータ

表252-50 SET_COOKIE_SUPPORTプロシージャのパラメータ

パラメータ

説明

r

HTTP要求。

enable

HTTP Cookieサポートを有効にする場合はTRUE、無効に設定する場合はFALSEに設定します。

max_cookies

現行のセッションで保持されるCookieの最大合計数を設定します。

max_cookies_per_site

現行のセッションでWebサイトごとに保持されるCookieの最大合計数を設定します。

使用上の注意

CookieのサポートがHTTP要求に対して有効である場合、現行のセッションで保存され、要求に適用可能なCookieはすべて、HTTP Cookieの仕様標準に基づき、その要求でWebサーバーに戻されます。Cookieのサポートが要求に対して有効である場合は、要求への応答に設定されたCookieが現行のセッションに保存され、後続の要求でWebサーバーに戻されます。CookieのサポートがHTTP要求に対して無効である場合は、その要求でCookieはWebサーバーに戻されず、要求への応答に設定されたCookieは現行のセッションで保存されません。ただし、Set-Cookie HTTPヘッダーは応答からの取出しが可能です。

データベース・ユーザー・セッションでは、すべてのHTTP要求に対してCookieのサポートがデフォルトで有効にされています。Cookieのサポートのデフォルト設定(有効または無効)が影響するのは将来の要求に対してのみであり、既存の要求には影響ありません。要求が作成された後、要求を操作するその他のSET_COOKIE_SUPPORTプロシージャを使用して、Cookieのサポートの設定を変更できます。

現行のセッションにデフォルトで保存されるCookieの最大数は、各サイトにつき20、合計で300です。

Cookieの最大合計数または各Webサイトに対するCookieの最大数を減少させる場合は、減少後の最大数まで最も古いCookieからパージされます。現行のセッションに保存されたHTTP Cookieは、データベース・セッションの期間のみ存続します。永続的に格納されるCookieはありません。Cookieのサポートを無効にしても、現行のセッションに保存されたCookieはクリアされません。

GET_COOKIESおよびADD_COOKIESを使用したCookieの取出し、保存およびリストアを行う方法については、「例」を参照してください。

SET_DETAILED_EXCP_SUPPORTプロシージャ

このプロシージャは、UTL_HTTPパッケージが詳細な例外を呼び出すように設定します。デフォルトでは、HTTP要求が失敗すると、UTL_HTTPによりrequest_failed例外が発生します。エラーの詳細情報を参照するには、GET_DETAILED_SQLCODEおよびGET_DETAILED_SQLEERMを使用します。

関連項目:
セッションの設定およびセッションの設定サブプログラム

構文

UTL_HTTP.SET_DETAILED_EXCP_SUPPORT (
enable  IN BOOLEAN DEFAULT FALSE);

パラメータ

表252-51 SET_DETAILED_EXCP_SUPPORTプロシージャのパラメータ

パラメータ

説明

enable

UTL_HTTPに詳細な例外を直接発生させるように指示する場合はTRUE、そうでない場合はFALSEに設定します。

SET_FOLLOW_REDIRECTプロシージャ

このプロシージャは、GET_RESPONSEファンクションで現在または将来指定される要求に対するHTTP応答において、HTTPリダイレクトの指示にUTL_HTTPが従う最大回数を設定します。

関連項目:

- 「HTTP要求」および「HTTP要求サブプログラム」

- セッションの設定およびセッションの設定サブプログラム

構文

このプロシージャを使用して、リダイレクトの最大回数を設定します。

UTL_HTTP.SET_FOLLOW_REDIRECT (
max_redirects  IN PLS_INTEGER DEFAULT 3);

このプロシージャを使用して、要求がセッションのデフォルト設定を継承するリダイレクトの最大回数を変更します。

UTL_HTTP.SET_FOLLOW_REDIRECT(
r              IN OUT NOCOPY req,
max_redirects  IN PLS_INTEGER DEFAULT 3);

パラメータ

表252-52 SET_FOLLOW_REDIRECTプロシージャのパラメータ

パラメータ

説明

r

HTTP要求。

max_redirects

リダイレクトの最大回数。リダイレクトを無効にするには0(ゼロ)に設定します。

使用上の注意

max_redirectsが正の値に設定されている場合、GET_RESPONSEファンクションは、HTTP応答のステータス・コード301、302および307 (HTTP HEADおよびHTTP GETメソッドの場合)、303 (すべてのHTTPメソッドの場合)に対してリダイレクトされたURLに自動的に従います。さらにHTTP要求(要求メソッドはステータス・コード303のHTTP GETに変更されます)が新しい場所で再試行されます。リダイレクトされない最後の場所に到達するか、エラーが発生するか、または無限ループを回避するためにリダイレクトの最大回数に到達するまで、リダイレクトが実行されます。REQレコードのURLおよびmethodフィールドは、最後にリダイレクトされたURL、およびそのURLへのアクセスに使用されたメソッドに更新されます。リダイレクトの最大回数を0 (ゼロ)に設定し、自動リダイレクトを無効にします。

現行のセッションでは自動リダイレクトに従わないように設定していますが、個別にHTTP要求を指定してFOLLOW_REDIRECTファンクションのリダイレクト指示に従うように設定できます。その逆の設定も可能です。

データベース・ユーザー・セッションにおけるリダイレクトのデフォルト最大回数は3です。デフォルト値が影響を与えるのは将来の要求に対してのみであり、既存の要求に影響はありません。

リダイレクトを有効にするには、GET_RESPONSEの前にSET_FOLLOW_REDIRECTプロシージャをコールする必要があります。

SET_HEADERプロシージャ

このプロシージャは、HTTP要求ヘッダーを設定します。要求ヘッダーは、設定後ただちにWebサーバーに送信されます。

関連項目:
「HTTP要求」および「HTTP要求サブプログラム」

構文

UTL_HTTP.SET_HEADER (
r      IN OUT NOCOPY req,
name   IN VARCHAR2,
value  IN VARCHAR2);

パラメータ

表252-53 SET_HEADERプロシージャのパラメータ

パラメータ

説明

r

HTTP要求。

name

HTTP要求ヘッダーの名前。

value

HTTP要求ヘッダーの値。

使用上の注意

HTTPプロトコルの標準では、複数のHTTPヘッダーに同じ名前を付けることができます。したがって、既存のヘッダーと同じ名前を付けても置換されません。

HTTP 1.1を使用して要求を作成する場合、UTL_HTTPによりホストのヘッダーが自動的に設定されます。

このプロシージャを使用してContent-Typeヘッダーを設定すると、UTL_HTTPは、ヘッダー値からキャラクタ・セット情報を探します。キャラクタ・セット情報が存在する場合は、要求本体のキャラクタ・セットとして設定されます。SET_BODY_CHARSETプロシージャを使用すると、後でこの設定を変更できます。

Transfer-Encodingヘッダーにchunkedの値を設定すると、WRITE_TEXT、WRITE_LINEおよびWRITE_RAWプロシージャによって作成された要求本体が、UTL_HTTPによって自動的にエンコードされます。HTTP 1.1ベースのWebサーバーまたはCGIプログラムは、HTTP 1.1 chunked transfer-encoding形式でエンコードされた要求本体をサポートしていません。

SET_PERSISTENT_CONN_SUPPORTプロシージャ

このプロシージャはオーバーロードされています。各機能の説明は構文宣言の箇所に併記してあります。

関連項目:
「HTTP要求」および「HTTP要求サブプログラム」

構文

将来のHTTP要求がHTTP 1.1の永続的接続をサポートする必要があるかどうかを設定し、現在のデータベース・ユーザー・セッションで保持される永続的接続の最大数を設定します。

UTL_HTTP.SET_PERSISTENT_CONN_SUPPORT(
enable      IN BOOLEAN DEFAULT FALSE,
max_conns   IN PLS_INTEGER DEFAULT 0);

要求のHTTP 1.1の永続的接続のサポートを有効または無効にします。

UTL_HTTP.SET_PERSISTENT_CONN_SUPPORT(
r           IN OUT NOCOPY req,
enable      IN BOOLEAN DEFAULT FALSE);

パラメータ

表252-54 SET_PERSISTENT_CONN_SUPPORTプロシージャのパラメータ

パラメータ

説明

enable

ネットワークを永続的に接続するにはTRUEに設定します。そうでない場合はFALSEに設定します。

maximum_conns

接続の最大数

r

HTTP要求。

使用上の注意

永続的接続のサポートがHTTP要求に対して有効である場合、要求が適切に完了した後、パッケージはWebサーバーまたはプロキシ・サーバーへのネットワーク接続をパッケージ内でオープンにしたまま保持し、同じサーバーへの後続の要求でHTTP 1.1プロトコルの各仕様を再利用します。永続的接続がサポートされている場合、ネットワーク接続の待機時間が回避されるため、後続のHTTP要求は高速に処理できます。永続的接続のサポートが要求に対して無効である場合、要求が完了すると、パッケージは常に、HTTPヘッダー「Connection: close」をHTTP要求中で自動的に送信し、ネットワーク接続をクローズします。この設定は、HTTP 1.0プロトコルに準拠したHTTP要求には影響ありません。これは、要求が完了した後、ネットワーク接続が常にクローズされるためです。

要求を作成する際に、ターゲットWebサーバー(またはプロキシ・サーバー)が使用可能であれば、パッケージはこのターゲットとの既存の永続的接続を再利用しようとします。使用可能なサーバーがない場合、新しいネットワーク接続が開始されます。要求に対する永続的接続サポートの設定が影響するのは、要求が完了した後にネットワーク接続をクローズするかどうかということについてのみです。

このプロシージャを使用して、要求がセッションのデフォルト設定を継承する永続的接続のサポート設定を変更します。

UTL_HTTPで永続的接続を使用すると、同じサーバーから複数のWebページをフェッチする時間を短縮できる一方で、データベース・サーバーの貴重なシステム・リソース(ネットワーク接続)が消費されることにユーザーは注意してください。また、データベース・サーバーで多くのネットワーク接続がオープンにされたままである場合、永続的接続を過度に使用すると、データベース・サーバーのスケーラビリティが低下することがあります。ネットワーク接続は、後続の要求により即時使用される場合にのみオープンにし、不要な場合にはクローズしてください。「例」に示すように、セッションではデフォルトの永続的接続のサポートは無効に設定し、個々のHTTP要求で永続的接続を有効にします。

データベース・セッションにおける永続的接続の最大数のデフォルト値は0 (ゼロ)です。永続的接続を実際に有効にするには、永続的接続の最大数を正の値に設定する必要があります。そうでない場合は、接続は永続的に保持されません。

永続的接続を使用する必要がある場合は、BEGIN_REQUESTファンクションをコールする前に、maximum_connsパラメータを受け取るオーバーロードをコールする必要があります。このようにしなければ、他の形式のSET_PERSISTENT_CONN_SUPPORTがコールされた場合であっても、現在の要求に対して永続的接続が有効になりません。

例

セッション・レベルでのhttp要求の中でSET_PERSISTENT_CONN_SUPPORTを使用して、それぞれの要求後にアクティブな永続接続を示します。

DECLARE
pieces utl_http.html_pieces;
conns  utl_http.connection_table;
BEGIN

-- Turns on persistent connection support for the request_pieces call.
utl_http.set_persistent_conn_support(true, 1);

FOR i IN 1..10 LOOP

pieces := utl_http.request_pieces('http://www.example.com/');

-- Shows the active persistent connection
utl_http.get_persistent_conns(conns);
FOR j IN 1..conns.count LOOP
dbms_output.put_line('Persistent connection '||j||': '||conns(j).host||':'||conns(j).port);
END LOOP;

END LOOP;

-- Turns off persistent connection support. Set active max persistent connection to 0 to close all active connections.
utl_http.set_persistent_conn_support(false, 0);

END;
/

SET_PERSISTENT_CONN_SUPPORTをHTTP要求内で使用することで、それぞれの要求の中で永続接続を個々に使用して同じホストで複数のURLをフェッチする方法を示します。

DECLARE
-- Table to store the URLs
TYPE vc2_table IS TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
paths VC2_TABLE;

PROCEDURE fetch_pages(paths IN vc2_table) AS
req  UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
data VARCHAR2(1024);

BEGIN

-- Set the proxy server
UTL_HTTP.SET_PROXY('www-proxy.example.com:80', '');

FOR i IN 1..paths.count LOOP

req := UTL_HTTP.BEGIN_REQUEST(paths(i));

-- Use persistent connections except for the last request
IF (i < paths.count) THEN
-- Use a persistent connection for the current request
UTL_HTTP.SET_PERSISTENT_CONN_SUPPORT(req, TRUE);
END IF;

resp := UTL_HTTP.GET_RESPONSE(req);

-- Display the results of the response
DBMS_OUTPUT.PUT_LINE('-');
DBMS_OUTPUT.PUT_LINE('URL: ' || paths(i));
DBMS_OUTPUT.PUT_LINE('HTTP Response Status Code:   ' || resp.status_code);
DBMS_OUTPUT.PUT_LINE('HTTP Response Reason Phrase: ' || resp.reason_phrase);
DBMS_OUTPUT.PUT_LINE('HTTP Response Version:       ' || resp.http_version);

BEGIN
LOOP
UTL_HTTP.READ_TEXT(resp, data);
-- do something with the data
END LOOP;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
NULL;
END;
UTL_HTTP.END_RESPONSE(resp);
END LOOP;
END;

BEGIN
-- Set a maximum of 1 persistent connection, but start with persistent connections
-- off
UTL_HTTP.SET_PERSISTENT_CONN_SUPPORT(FALSE, 1);

-- Create a list of URLs
paths(1) := 'http://www.example.com/technetwork/index.html';
paths(2) := 'http://www.example.com/us/products/index.html';

fetch_pages(paths);
END;
/

SET_PROXYプロシージャ<