Autonomous DatabaseのPL/SQLパッケージ・ノート
Autonomous DatabaseでのOracle Database PL/SQLパッケージに関するノート。
使用できないPL/SQLパッケージ
-
DBMS_DEBUG_JDWP
-
DBMS_DEBUG_JDWP_CUSTOM
DBMS_LDAP PL/SQLパッケージのノート
DBMS_LDAP
パッケージのノートを示します。
-
ホスト名にIPアドレスを指定することはできません。
-
唯一許可されているポートは636です。
-
OPEN_SSL
プロシージャに対するSSLWRL
およびSSLWALLETPASSWD
引数は無視されます。SSLWRL
プロパティのデフォルト値は、Autonomous DatabaseでアウトバウンドWebリクエストを行うためにUTL_HTTP
およびDBMS_CLOUD
によって使用されるウォレットに設定されます。 -
DBMS_LDAP.SIMPLE_BIND_S
およびDBMS_LDAP.BIND_S
サブプログラムは、ディレクトリ・サーバーに対する認証を実行します。DBMS_LDAP.SIMPLE_BIND_S
およびDBMS_LDAP.BIND_S
サブプログラムは、資格証明オブジェクトを引数として受け入れるように変更されます。次に、これらの変更済サブプログラムの使用上のノートと例を示します。
-
変更された
SIMPLE_BIND_S
およびBIND_S
サブプログラムを使用すると、資格証明オブジェクトを渡してディレクトリ・サーバー認証を設定できます。資格証明オブジェクトはスキーマ・オブジェクトであるため、権限のあるユーザーのみがアクセスでき、資格証明を制御するためのスキーマ・レベルの権限を構成できます。スケジューラの資格証明を渡すことは、認証用のユーザー名/パスワード/キーを格納および管理するための適切で安全な方法です。 -
変更された
SIMPLE_BIND_S
およびBIND_S
サブプログラムは、以前に存在したSIMPLE_BIND_S
およびBIND_S
サブプログラムに代わる安全で便利なプログラムです。詳細は、「ファンクションsimple_bind_s」および「ファンクションbind_s」を参照してください。
-
SIMPLE_BIND_S
およびBIND_S
関数のCREDENTIAL
引数は、ディレクトリ・サーバーに対する資格証明ベースの認証を実行するために使用されます。 -
たとえば:
-
資格証明オブジェクトを作成します。
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'LDAP_CRED', username => 'web_app_user', password => 'password' ); END;
これにより、格納されたユーザー名/パスワードのペアを作成する資格証明オブジェクトが作成されます。
詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。
詳細は、スケジューラ・ジョブ資格証明の指定を参照してください。
-
DBMS_LDAP.SIMPLE_BIND_S
を起動します。DECLARE l_mail_conn DBMS_LDAP.INIT; BEGIN l_ldap_conn := DBMS_LDAP.INIT('ldap.example.com', 636); l_auth_result := DBMS_LDAP.SIMPLE_BIND_S(l_ldap_conn, 'LDAP_CRED'); ... END;
この例のコードは、まずLDAPサーバーとのセッションを初期化し、ポート番号
636
でLDAPサーバーldap.example.com
との接続を確立するDBMS_LDAP.INIT
関数を呼び出します。SIMPLE_BIND_S
ファンクションの値l_ldap_conn
はLDAPセッション・ハンドルで、LDAP_CRED
は資格証明名です。 -
function bind_s
は、ディレクトリ・サーバーに対して複雑な認証を実行します。たとえば:DECLARE l_mail_conn DBMS_LDAP.INIT; BEGIN l_ldap_conn := DBMS_LDAP.INIT('ldap.example.com', 636); l_auth_result := DBMS_LDAP.BIND_S(l_ldap_conn, 'LDAP_CRED', METH => DBMS_LDAP.AUTH_SIMPLE); ... END;
この例のコードは、まずLDAPサーバーとのセッションを初期化し、ポート番号
636
でLDAPサーバーldap.example.com
との接続を確立するDBMS_LDAP.INIT
関数を呼び出します。BIND_S
ファンクションの値l_ldap_conn
はLDAPセッション・ハンドルで、LDAP_CRED
は資格証明名です。METH
は認証方法です。有効な値はDBMS_LDAP_UTL.AUTH_SIMPLE
のみです。
-
-
スケジューラ資格証明を作成するには、
DBMS_CLOUD
またはDWROLE
に対するEXECUTE
権限が必要です。 -
渡された資格証明は、現在のスキーマに存在するか、スキーマ内の資格証明を指すシノニムを持ち、有効状態である必要があります。
-
異なるユーザー・スキーマ内の資格証明を指すパブリック・シノニムまたはプライベート・シノニムは、シノニムが指すベース資格証明オブジェクトに対する
EXECUTE
権限を持っている場合、CREDENTIAL
パラメータの値として指定できます。詳細は、「シノニムの概要」を参照してください。
-
-
SSL/TLSは、LDAPサーバーとAutonomous Databaseの間で発生するすべての通信に適用されます。
-
Autonomous Databaseインスタンスにプライベート・エンドポイントが構成されている場合は、
ROUTE_OUTBOUND_CONNECTIONS
データベース・パラメータをPRIVATE_ENDPOINT
に設定して、すべての送信LDAP接続がAutonomous Databaseインスタンスのプライベート・エンドポイントVCNエグレス・ルールの対象となることを指定します。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。 -
プライベート・エンドポイントでの接続に
DBMS_LDAP
を使用するには、DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE
を使用し、private_target
パラメータに値TRUE
を指定します。ノート
ROUTE_OUTBOUND_CONNECTIONS
をPRIVATE_ENDPOINT
に設定した場合、このAPIではprivate_target
パラメータをTRUE
に設定する必要はありません。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。 -
DBMS_LDAP
エラーエラー・メッセージ 考えられる原因 ORA-31400: Missing or invalid scheduler credential
渡された資格証明がNULLまたは無効です。
詳細は、『PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_LDAPを参照してください。
DBMS_NETWORK_ACL_ADMIN PL/SQLパッケージのノート
DBMS_NETWORK_ACL_ADMIN
パッケージのノートを示します。
-
IPアドレスに対するACL権限の付与は許可されていません。
-
HTTP_PROXY
ACLは、プライベート・エンドポイントで使用できます。
詳細は、『PL/SQLパッケージ・およびタイプ・リファレンス』のDBMS_NETWORK_ACL_ADMINを参照してください。
DBMS_SCHEDULERパッケージ・ノート
DBMS_SCHEDULER
パッケージのノートを提供します。
Autonomous Databaseでは、DBMS_SCHEDULER.CREATE_JOB
プロシージャは、job_type
パラメータのPLSQL_BLOCK
およびSTORED_PROCEDURE
ジョブ・タイプをサポートしています。
サポートされていないjob_type
を使用すると、次のようなメッセージが表示される場合があります。
ORA-27399: job type EXECUTABLE requires the CREATE EXTERNAL JOB privilege
ORA-27369: JOB OF TYPE EXECUTABLE FAILED WITH EXIT CODE: OPERATION NOT PERMITTED
詳細は、Oracle Schedulerでの事前定義済ジョブ・クラスおよびDBMS_SCHEDULERを参照してください。
UTL_HTTP PL/SQLパッケージのノート
UTL_HTTP
パッケージのノートを示します。
-
IPアドレスを介した接続は許可されません。
-
Autonomous Databaseインスタンスがパブリック・エンドポイントにある場合、
HTTPS
のみが許可されます。Autonomous Databaseインスタンスがプライベート・エンドポイント上にある場合、HTTPS
接続とHTTP_PROXY
接続の両方が許可されます(パブリック・エンドポイントとプライベート・エンドポイントの両方でHTTP
接続は許可されません)。 -
UTL_HTTP.set_proxy
APIは、Autonomous Databaseインスタンスがプライベート・エンドポイントにある場合に許可されます。 -
Autonomous Databaseインスタンスがプライベート・エンドポイントにあり、
HTTP_PROXY
またはUTL_HTTP.SET_PROXY
APIを使用する場合:-
DBMS_CLOUD
リクエストは、UTL_HTTP.SET_PROXY
で設定したプロキシ・サーバーを使用しません。これには、DBMS_CLOUD.SEND_REQUEST
と、DBMS_CLOUD.CREATE_EXTERNAL_TABLE
、DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
またはDBMS_CLOUD.CREATE_HYBRID_PART_TABLE
で定義したDBMS_CLOUD
外部表に対するすべてのオブジェクト・ストレージ・アクセスが含まれます。 -
APEX_WEB_SERVICE
リクエストは、UTL_HTTP.SET_PROXY
で設定したプロキシ・サーバーを使用しません。
-
-
すべてのWebサービスが保護されている必要があります。Autonomous Databaseインスタンスがパブリック・エンドポイントにある場合、許可されるポートは443のみです。Autonomous Databaseインスタンスがプライベート・エンドポイントにある場合、この制限は適用されません。
Autonomous Databaseインスタンスは、最も一般的に信頼できるルートおよび中間SSL証明書の90を超えるものを含むOracle Walletを使用して事前構成されます。Oracle Walletは一元管理されています。自己署名SSL証明書を使用して保護されているサイトのウォレットを使用するように
UTL_HTTP
を構成できます。詳細は、UTL_HTTPでの外部コールに対する顧客管理Walletの使用を参照してください。 -
SET_AUTHENTICATION_FROM_WALLET
プロシージャは使用できません。 -
CREATE_REQUEST_CONTEXT
、REQUEST
およびREQUEST_PIECES
プロシージャのWALLET_PATH
およびWALLET_PASSWORD
引数は無視されます。 -
SET_CREDENTIAL
プロシージャのCREDENTIAL
引数は、プロシージャへの入力として資格証明オブジェクトを渡すために使用されます。詳細は、スケジューラ・ジョブ資格証明の指定およびCREATE_CREDENTIALプロシージャを参照してください。 -
資格証明オブジェクトを作成するには、
DBMS_CLOUD
またはDWROLE
に対するEXECUTE
権限が必要です。 -
渡された資格証明は、現在のユーザー・スキーマに存在し、有効な状態である必要があります。
-
異なるユーザー・スキーマ内の資格証明を指すパブリック・シノニムまたはプライベート・シノニムは、シノニムが指すベース資格証明オブジェクトに対する
EXECUTE
権限を持っている場合、CREDENTIAL
パラメータの値として指定できます。詳細は、「シノニムの概要」を参照してください。 -
Oracle Walletの構成は変更できません。
SET_WALLET
プロシージャのすべての引数は無視されます。 -
Autonomous Databaseインスタンスがプライベート・エンドポイントで構成されている場合は、
ROUTE_OUTBOUND_CONNECTIONS
データベース・パラメータを'PRIVATE_ENDPOINT
'に設定して、すべての送信UTL_HTTP
接続がAutonomous Databaseインスタンスのプライベート・エンドポイントVCNのエグレス・ルールに従うことを指定します。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。 -
UTL_HTTP
エラー次の表に、
UTL_HTTP
を使用している場合のエラー・メッセージおよび考えられる原因を示します:エラー・メッセージ 考えられる原因 ORA-12545: Connect failed because target host or object does not exist
ターゲット・ホストまたはオブジェクトが存在しないか、プライベートです。
ORA-24247: network access denied by access control list (ACL)
指定したホストのアクセス制御リスト(ACL)が見つかりませんでした。
ORA-29024: Certificate validation failure
ホストの証明書が存在しないか、サポートされている証明書の中にありません。
ORA-29261: Bad argument
渡された資格証明が無効または無効であるか、ユーザーに資格証明に対する十分な権限がありません。
詳細は、『PL/SQLパッケージおよびタイプ・リファレンス』のUTL_HTTPを参照してください。
UTL_INADDR PL/SQLパッケージのノート
UTL_INADDR
パッケージのノートを示します。
-
UTL_INADDR
パッケージは、プライベート・エンドポイント(PE)を持つAutonomous Databaseインスタンスで使用できます。 -
GET_HOST_ADDRESS
ファンクションを使用できます。 -
GET_HOST_NAME
ファンクションは使用できません。
詳細は、『PL/SQLパッケージおよびタイプ・リファレンス』のUTL_INADDRを参照してください。
UTL_SMTP PL/SQLパッケージのノート
UTL_SMTP
パッケージのノートを示します。
-
パブリックSMTPエンドポイントは、ルーティングが顧客のリバース接続エンドポイント(RCE)を介して行われるかぎり使用できます。
-
ホスト名にIPアドレスを使用したメールは許可されません。
-
使用できるポートは25と587のみです。
-
SET_CREDENTIAL
ファンクションのCREDENTIAL
引数は、スケジューラ資格証明オブジェクトをファンクションへの入力として渡すために使用します。詳細は、スケジューラ・ジョブ資格証明の指定およびCREATE_CREDENTIALプロシージャを参照してください。 -
資格証明オブジェクトを作成するには、
DBMS_CLOUD
またはDWROLE
に対するEXECUTE
権限が必要です。 -
SET_CREDENTIAL
プロシージャのCREDENTIAL
引数は、資格証明オブジェクト・オブジェクトをプロシージャへの入力として渡すために使用します。詳細は、スケジューラ・ジョブ資格証明の指定を参照してください。 -
渡された資格証明は、現在のユーザー・スキーマに存在し、有効な状態である必要があります。
-
異なるユーザー・スキーマ内の資格証明を指すパブリック・シノニムまたはプライベート・シノニムは、シノニムが指すベース資格証明オブジェクトに対する
EXECUTE
権限を持っている場合、CREDENTIAL
パラメータの値として指定できます。詳細は、「シノニムの概要」を参照してください。 -
Autonomous Databaseインスタンスがプライベート・エンドポイントで構成されている場合は、
ROUTE_OUTBOUND_CONNECTIONS
データベース・パラメータを'PRIVATE_ENDPOINT
'に設定して、すべての送信UTL_SMTP
接続がAutonomous Databaseインスタンスのプライベート・エンドポイントVCNのエグレス・ルールに従うことを指定します。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。 -
UTL_SMTP
エラーエラー・メッセージ 考えられる原因 ORA-29261: Bad argument
渡された資格証明が無効または無効であるか、ユーザーに資格証明に対する十分な権限がありません。
詳細は、『PL/SQLパッケージおよびタイプ・リファレンス』のUTL_SMTPを参照してください。
UTL_TCP PL/SQLパッケージのノート
UTL_TCP
パッケージのノートを示します。
-
IPアドレスはホスト名では使用できません。
-
許可されるポートは、443 (HTTP) 25および587 (SMTP)のみです。
-
ポート443では、HTTPS URLのみが許可されます。
-
OPEN_CONNECTION
プロシージャのWALLET_PATH
およびWALLET_PASSWORD
引数は無視されます。WALLET_PATH
およびWALLET_PASSWORD
プロパティのデフォルト値は、Autonomous DatabaseでアウトバウンドWebリクエストを行うためにUTL_HTTP
およびDBMS_CLOUD
によって使用されるウォレットに設定されます。 -
SSL/TLSは、TCP/IP接続で発生するすべての通信に適用されます。
-
Autonomous Databaseインスタンスがプライベート・エンドポイントで構成されている場合は、
ROUTE_OUTBOUND_CONNECTIONS
データベース・パラメータを'PRIVATE_ENDPOINT
'に設定して、すべての送信UTL_TCP
接続がAutonomous Databaseインスタンスのプライベート・エンドポイントVCNのエグレス・ルールに従うことを指定します。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。
詳細は、『PL/SQLパッケージおよびタイプ・リファレンス』のUTL_TCPを参照してください。