Autonomous DatabaseのPL/SQLパッケージ・ノート
Autonomous DatabaseでのOracle Database PL/SQLパッケージに関するノート。
使用できないPL/SQLパッケージ
-
DBMS_DEBUG_JDWP
-
DBMS_DEBUG_JDWP_CUSTOM
-
UTL_INADDR
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
サブプログラムに代わる安全で便利な代替プログラムです。詳細は、FUNCTION simple_bind_sおよびFUNCTION 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;
この例のコードは、最初に
DBMS_LDAP.INIT
関数を呼び出します。この関数は、LDAPサーバーとのセッションを初期化し、LDAPサーバーldap.example.com
との接続をポート番号636
で確立します。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;
この例のコードは、最初に
DBMS_LDAP.INIT
関数を呼び出します。この関数は、LDAPサーバーとのセッションを初期化し、LDAPサーバーldap.example.com
との接続をポート番号636
で確立します。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
に設定する必要はありません。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。 -
-
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_SMTP
-
サポートされている電子メール・プロバイダは、Oracle Cloud Infrastructure Email Deliveryサービスのみです。詳細は、電子メール配信サービスの概要を参照してください。
-
ホスト名に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_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のエグレス・ルールの対象となるように指定します。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。
-
-
DBMS_NETWORK_ACL_ADMIN
-
IPアドレスに対するACL権限の付与は許可されません。
-
HTTP_PROXY
ACLは、プライベート・エンドポイントで使用できます。
-
-
UTL_HTTP
のエラー次の表に、
UTL_HTTP
を使用している場合のエラー・メッセージおよび考えられる原因を示します:Error Message 考えられる原因 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
渡された資格証明が無効または無効であるか、ユーザーに資格証明に対する十分な権限がありません。
-
UTL_SMTP
エラーError Message 考えられる原因 ORA-29261: Bad argument
渡された資格証明が無効または無効であるか、ユーザーに資格証明に対する十分な権限がありません。
-
DBMS_LDAP
エラーError Message 考えられる原因 ORA-31400: Missing or invalid scheduler credential
渡された資格証明がNULLまたは無効です。
詳細は、『PL/SQLパッケージおよびタイプ・リファレンス』のUTL_HTTP、DBMS_LDAP、UTL_SMTP、UTL_TCPおよびDBMS_NETWORK_ACL_ADMINを参照してください。