Oracle DB インスタンスの一般的なシステムタスクの実行
次に、Oracle を実行している Amazon RDS DB インスタンスで、システムに関連する特定の一般的な DBA タスクを実行する方法を示します。マネージド型サービスの操作性を実現するために、Amazon RDS では DB インスタンスへのシェルアクセスは提供していません。また、上位の権限を必要とする特定のシステムプロシージャやシステムテーブルへのアクセスが制限されます。
トピック
セッションの切断
専用サーバープロセスを終了して現在のセッションを切断するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.disconnect
を使用します。disconnect
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
number |
— |
はい |
セッション識別子。 |
|
number |
— |
はい |
セッションのシリアル番号。 |
|
varchar |
'即時' |
いいえ |
有効な値は |
次の例では、セッションを切断します。
begin rdsadmin.rdsadmin_util.disconnect( sid =>
sid
, serial =>serial_number
); end; /
セッション識別子とセッションのシリアル番号を取得するには、V$SESSION
ビューを照会します。次の例では、ユーザー AWSUSER
のすべてのセッションを取得します。
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = '
AWSUSER
';
このメソッドを使用するにはデータベースが開いている必要があります。セッションの切断の詳細については、Oracle ドキュメントの「ALTER SYSTEM
セッションの終了
セッションを終了するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.kill
を使用します。kill
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
number |
— |
はい |
セッション識別子。 |
|
number |
— |
はい |
セッションのシリアル番号。 |
|
varchar |
null |
いいえ |
有効な値は
|
セッション識別子とセッションのシリアル番号を取得するには、V$SESSION
ビューを照会します。次の例では、ユーザー AWSUSER
のすべてのセッションを取得します。
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = '
AWSUSER
';
次の例では、セッションを終了します。
BEGIN rdsadmin.rdsadmin_util.kill( sid =>
sid
, serial =>serial_number
, method => 'IMMEDIATE'); END; /
次の例では、セッションに関連付けられたプロセスを終了します。
BEGIN rdsadmin.rdsadmin_util.kill( sid =>
sid
, serial =>serial_number
, method => 'PROCESS'); END; /
セッションでの SQL ステートメントのキャンセル
セッション内の SQL ステートメントをキャンセルするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.cancel
を使用します。
注記
この手順は Oracle Database 19c (19.0.0)、および RDS for Oracle のすべての上位メジャーバージョンおよびマイナーバージョンでサポートされています。
cancel
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
number |
— |
はい |
セッション識別子。 |
|
number |
— |
はい |
セッションのシリアル番号。 |
|
varchar2 |
null |
いいえ |
SQL ステートメントの SQL 識別子。 |
次の例では、セッション内の SQL ステートメントをキャンセルします。
begin rdsadmin.rdsadmin_util.cancel( sid =>
sid
, serial =>serial_number
, sql_id =>sql_id
); end; /
セッション識別子、セッションのシリアル番号、および SQL ステートメントの SQL 識別子を取得するには、V$SESSION
ビューを照会します。次の例では、ユーザー AWSUSER
のすべてのセッションと SQL 識別子を取得します。
select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = '
AWSUSER
';
制限セッションの有効化と無効化
制限セッションを有効または無効にするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.restricted_session
を使用します。restricted_session
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | はい | 説明 |
---|---|---|---|---|
|
boolean |
true |
いいえ |
制限セッションを有効にするには |
次の例では、制限セッションを有効化および無効化する方法を示します。
/* Verify that the database is currently unrestricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED /* Enable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true); /* Verify that the database is now restricted. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ---------- RESTRICTED /* Disable restricted sessions */ EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false); /* Verify that the database is now unrestricted again. */ SELECT LOGINS FROM V$INSTANCE; LOGINS ------- ALLOWED
共有プールのフラッシュ
共用プールをフラッシュするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.flush_shared_pool
を使用します。flush_shared_pool
プロシージャにはパラメータはありません。
次の例では、共有プールをフラッシュします。
EXEC rdsadmin.rdsadmin_util.flush_shared_pool;
バッファキャッシュのフラッシュ
バッファキャッシュをフラッシュするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.flush_buffer_cache
を使用します。flush_buffer_cache
プロシージャにはパラメータはありません。
次の例では、バッファキャッシュをフラッシュします。
EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;
データベースのスマートフラッシュキャッシュのフラッシュ
データベースのスマートフラッシュキャッシュをフラッシュするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.flush_flash_cache
を使用します。flush_flash_cache
プロシージャにはパラメータはありません。次の例では、データベースのスマートフラッシュキャッシュをフラッシュします。
EXEC rdsadmin.rdsadmin_util.flush_flash_cache;
RDS for Oracle でのデータベーススマートフラッシュキャッシュの使用に関する詳細は、「RDS for Oracle インスタンスストアへの一時データの保存」を参照してください。
SYS オブジェクトへの SELECT または EXECUTE 権限の付与
通常多くのオブジェクトを含めることができるロールを使用して権限を転送します。1 つのオブジェクトへ権限を付与するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.grant_sys_object
を使用します。このプロシージャは、ロールまたは直接付与によってマスターユーザーに既に付与されている権限のみを付与します。
grant_sys_object
プロシージャには以下のパラメータがあります。
重要
大文字と小文字を区別する識別子を使用してユーザーを作成した場合を除き、すべてのパラメータ値に大文字を使用します。例えば、CREATE USER
myuser
または CREATE USER MYUSER
を実行すると、データディクショナリに MYUSER
が保存されます。ただし、CREATE USER
"MyUser"
で二重引用符を使用すると、データディクショナリには MyUser
が保存されます。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
— |
はい |
権限を付与する元のオブジェクトの名前。オブジェクトとして、ディレクトリ、ファンクション、パッケージ、プロシージャ、シーケンス、テーブル、またはビューを指定できます。オブジェクト名のスペルは |
|
varchar2 |
— |
はい |
権限を付与する先のオブジェクトの名前。オブジェクトとして、スキーマまたはロールを指定できます。 |
|
varchar2 |
null |
はい |
— |
|
boolean |
false |
いいえ |
付与オプションで使用するには、 |
次の例では、オブジェクト V_$SESSION
に対する選択権限をユーザー USER1
に付与します。
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => '
V_$SESSION
', p_grantee => 'USER1
', p_privilege => 'SELECT
'); end; /
次の例では、付与オプションを使用して、オブジェクト V_$SESSION
に対する選択権限をユーザー USER1
に付与します。
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => '
V_$SESSION
', p_grantee => 'USER1
', p_privilege => 'SELECT
', p_grant_option =>true
); end; /
オブジェクトに対して権限を付与するには、付与オプションまたは with admin option
を使用して付与されたロールを通じてアカウントにこれらの権限が直接付与されている必要があります。最も一般的なケースとして、SELECT
ロールに付与された DBA ビューでの SELECT_CATALOG_ROLE
権限の付与があります。このロールが with admin option
を通じてユーザーにまだ直接付与されていない場合、権限を転送することはできません。DBA 権限がある場合は、そのロールを他のユーザーに直接付与できます。
次の例では、SELECT_CATALOG_ROLE
と EXECUTE_CATALOG_ROLE
を USER1
に付与します。with
admin option
が使用されているため、USER1
は、SELECT_CATALOG_ROLE
に許可された SYS オブジェクトへのアクセスを許可できるようになりました。
GRANT SELECT_CATALOG_ROLE TO
USER1
WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1
WITH ADMIN OPTION;
既に PUBLIC
として許可されたオブジェクトへのアクセスは再許可する必要はありません。grant_sys_object
プロシージャを使用してアクセスを再許可すると、プロシージャの呼び出しは成功します。
SYS オブジェクトに対する SELECT または EXECUTE 権限の取り消し
1 つのオブジェクトに対する権限を取り消すには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.revoke_sys_object
を使用します。このプロシージャは、ロールまたは直接付与によってマスターアカウントに既に付与されている権限のみを取り消します。
revoke_sys_object
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
— |
はい |
権限を取り消す対象のオブジェクトの名前。オブジェクトとして、ディレクトリ、ファンクション、パッケージ、プロシージャ、シーケンス、テーブル、またはビューを指定できます。オブジェクト名のスペルは |
|
varchar2 |
— |
はい |
権限を取り消す対象のオブジェクトの名前。オブジェクトとして、スキーマまたはロールを指定できます。 |
|
varchar2 |
null |
はい |
— |
次の例では、オブジェクト V_$SESSION
に対する選択権限をユーザー USER1
から取り消します。
begin rdsadmin.rdsadmin_util.revoke_sys_object( p_obj_name => '
V_$SESSION
', p_revokee => 'USER1
', p_privilege => 'SELECT
'); end; /
Oracle DB インスタンスの RDS_X$ ビューの管理
SYS
によってのみアクセス可能な SYS.X$
固定テーブルへのアクセスが必要になる場合があります。対象の X$
テーブルに SYS.RDS_X$
ビューを作成するには、rdsadmin.rdsadmin_util
パッケージの手順を使用します。マスターユーザーには、RDS_X$
ビューに対する SELECT … WITH GRANT OPTION
権限が自動的に付与されます。
rdsadmin.rdsadmin_util
プロシージャは、次のデータベースエンジンバージョンで使用できます。
-
21.0.0.0.ru-2023-10.rur-2023-10.r1
以降の Oracle Database 21c バージョン -
19.0.0.0.ru-2023-10.rur-2023-10.r1
以降の Oracle Database 19c バージョン
重要
内部的には、rdsadmin.rdsadmin_util
パッケージは X$
テーブルにビューを作成します。X$
テーブルは内部システムオブジェクトであり、Oracle Database のドキュメントでは説明されていません。本番用以外のデータベースで特定のビューをテストし、Oracle サポートのガイダンスに従って、本番用のデータベースにのみビューを作成することをお勧めしています。
RDS_X$ ビューで使用できる X$ 固定テーブルを一覧表示する
RDS_X$
ビューで使用できる X$ テーブルを一覧表示するには、RDS プロシージャ rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
を使用します。この手順はパラメータを受け付けません。次のステートメントは、対象となるすべての X$
テーブル (サンプル出力を含む) を一覧表示します。
SQL> SET SERVEROUTPUT ON SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views); 'X$BH' 'X$K2GTE' 'X$KCBWBPD' 'X$KCBWDS' 'X$KGLLK' 'X$KGLOB' 'X$KGLPN' 'X$KSLHOT' 'X$KSMSP' 'X$KSPPCV' 'X$KSPPI' 'X$KSPPSV' 'X$KSQEQ' 'X$KSQRS' 'X$KTUXE' 'X$KQRFP'
対象となる X$
テーブルの一覧は、時間の経過とともに変化する可能性があります。対象となる X$
固定テーブルのリストが最新であることを確認するには、定期的に list_allowed_sys_x$_views
を再実行してください。
SYS.RDS_X$ ビューの作成
対象となる X$
テーブルに RDS_X$
ビューを作成するには、RDS プロシージャ rdsadmin.rdsadmin_util.create_sys_x$_view
を使用します。rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
の出力に一覧表示されているテーブルのビューのみを作成できます。create_sys_x$_view
手順は、次のパラメータを受け付けます。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
Null |
はい |
有効な |
|
ブール値 |
FALSE |
いいえ |
|
次の例では、テーブル X$KGLOB
で SYS.RDS_X$KGLOB
ビューを作成します。ビュー名の形式は RDS_
です。X$tablename
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.
次のデータディクショナリクエリは、ビュー SYS.RDS_X$KGLOB
とそのステータスを表示します。マスターユーザーには、このビューに対する SELECT ... WITH GRANT OPTION
権限が自動的に付与されます。
SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; OWNER OBJECT_NAME STATUS ------------------------------ ------------------------------ ------------------------------ SYS RDS_X$KGLOB VALID
重要
X$
テーブルは、アップグレード前とアップグレード後で同じままである保証はありません。RDS for Oracle は、エンジンのアップグレード中に X$
テーブルで RDS_X$
ビューを削除して再作成します。次に、マスターユーザーに SELECT
... WITH GRANT OPTION
権限を付与します。アップグレード後、必要に応じて対応する RDS_X$
ビューでデータベースユーザーに権限を付与します。
SYS.RDS_X$ ビューの一覧表示
既存の RDS_X$
ビューを一覧表示するには、RDS プロシージャ rdsadmin.rdsadmin_util.list_created_sys_x$_views
を使用します。このプロシージャでは、プロシージャ create_sys_x$_view
によって作成されたビューのみが一覧表示されます。次の例では、対応する RDS_X$
ビュー (サンプル出力を含む) を持つ X$
テーブルを一覧表示します。
SQL> SET SERVEROUTPUT ON SQL> COL XD_TBL_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views); XD_TBL_NAME STATUS ------------------------------ ------------------------------ X$BH VALID X$K2GTE VALID X$KCBWBPD VALID 3 rows selected.
RDS_X$ ビューの削除
SYS.RDS_X$
ビューを削除するには、RDS プロシージャ rdsadmin.rdsadmin_util.drop_sys_x$_view
を使用します。rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
の出力に一覧表示されているビューだけを削除できます。drop_sys_x$_view
手順は、次のパラメータを受け付けます。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
Null |
はい |
有効な |
次の例では、テーブル X$KGLOB
で作成された RDS_X$KGLOB
ビューを削除します。
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.
次の例は、ビュー SYS.RDS_X$KGLOB
が削除されたことを示しています (サンプル出力を含む)。
SQL> SET SERVEROUTPUT ON SQL> COL OWNER FORMAT A30 SQL> COL OBJECT_NAME FORMAT A30 SQL> COL STATUS FORMAT A30 SQL> SET LINESIZE 200 SQL> SELECT OWNER, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB'; no rows selected
非マスターユーザーへの権限の付与
SYS
ロールを使用すると、SELECT_CATALOG_ROLE
スキーマ内の多くのオブジェクトに対する選択権限を付与できます。SELECT_CATALOG_ROLE
ロールは、データディクショナリビューに対する SELECT
権限をユーザーに付与します。次の例では、ユーザー SELECT_CATALOG_ROLE
にロール user1
を付与します。
GRANT SELECT_CATALOG_ROLE TO
user1
;
EXECUTE
ロールを使用すると、SYS
スキーマ内の多くのオブジェクトに対する EXECUTE_CATALOG_ROLE
権限を付与できます。EXECUTE_CATALOG_ROLE
ロールは、データディクショナリのパッケージとプロシージャに対する EXECUTE
権限をユーザーに付与します。次の例では、ユーザー user1 にロール EXECUTE_CATALOG_ROLE
を付与します。
GRANT EXECUTE_CATALOG_ROLE TO
user1
;
次の例では、ロール SELECT_CATALOG_ROLE
とロール EXECUTE_CATALOG_ROLE
が許可するアクセス権限を取得します。
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') ORDER BY ROLE, TABLE_NAME ASC;
次の例では、非マスターユーザー user1
を作成し、CREATE SESSION
権限を付与します。また、データベース sh.sales に対する SELECT
権限を付与します。
CREATE USER
user1
IDENTIFIED BY PASSWORD; GRANT CREATE SESSION TOuser1
; GRANT SELECT ONsh.sales
TOuser1
;
パスワードを検証するためのカスタム関数の作成
カスタムパスワード検証関数は、以下の方法で作成できます。
-
スタンダード検証ロジックを使用するには、また
SYS
スキーマに関数を格納するには、create_verify_function
の手順を使用します。 -
カスタム検証ロジックを使用するには、または
SYS
スキーマに関数を格納しないようにするには、create_passthrough_verify_fcn
の手順を使用します。
create_verify_function プロシージャ
Amazon RDS プロシージャ rdsadmin.rdsadmin_password_verify.create_verify_function
を使用してパスワードを検証するには、カスタム関数を作成できます。create_verify_function
プロシージャは、RDS for Oracle のすべてのバージョンでサポートされています。
create_verify_function
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
— |
はい |
カスタム関数の名前。この関数は、SYS スキーマに作成されます。この関数をユーザープロファイルに割り当てます。 |
|
number |
8 |
いいえ |
必要な文字の最小数。 |
|
number |
256 |
いいえ |
許容された文字の最大数。 |
|
number |
1 |
いいえ |
必要な文字の最小数。 |
|
number |
0 |
いいえ |
必要な大文字の最小数。 |
|
number |
0 |
いいえ |
必要な小文字の最小数。 |
|
number |
1 |
いいえ |
必要な数字の最小数。 |
|
number |
0 |
いいえ |
必要な特殊文字の最小数。 |
|
number |
3 |
いいえ |
古いパスワードと新しいパスワードの間で必要な異なる文字の最小数。 |
|
boolean |
true |
いいえ |
パスワードでユーザー名を禁止するには、 |
|
boolean |
true |
いいえ |
パスワードで反転したユーザー名を禁止するには、 |
|
boolean |
true |
いいえ |
パスワードでデータベースまたはサーバー名を禁止するには、 |
|
boolean |
true |
いいえ |
パスワードで単純な文字列を禁止するには、 |
|
boolean |
false |
いいえ |
パスワードで空白文字を禁止するには、 |
|
boolean |
false |
いいえ |
パスワードで「@」文字の使用を禁止するには、 |
複数のパスワード検証関数を作成できます。
カスタム関数名に制限があります。カスタム関数名を既存のシステムオブジェクト名と同じにすることはできません。30 文字を超える名前は使用できません。また、名前には文字列として PASSWORD
、VERIFY
、COMPLEXITY
、ENFORCE
、STRENGTH
のいずれかを含める必要があります。
次の例では、CUSTOM_PASSWORD_FUNCTION
という名前の関数を作成します。この関数のパスワードは、最低で 2 つの大文字、1 つの数字、1 つの特殊文字を含む、12 文字以上で構成する必要があります。また、「@」文字は使用できません。
begin rdsadmin.rdsadmin_password_verify.create_verify_function( p_verify_function_name => '
CUSTOM_PASSWORD_FUNCTION
', p_min_length =>12
, p_min_uppercase =>2
, p_min_digits =>1
, p_min_special =>1
, p_disallow_at_sign =>true
); end; /
検証関数のテキストを表示するには、DBA_SOURCE
を照会します。次の例では、カスタムパスワード関数 CUSTOM_PASSWORD_FUNCTION
のテキストを取得します。
COL TEXT FORMAT a150 SELECT TEXT FROM DBA_SOURCE WHERE OWNER = 'SYS' AND NAME = '
CUSTOM_PASSWORD_FUNCTION
' ORDER BY LINE;
検証関数をユーザープロファイルに関連付けるには、alter
profile
を使用します。次の例では、検証関数を DEFAULT
ユーザープロファイルに関連付けています。
ALTER PROFILE
DEFAULT
LIMIT PASSWORD_VERIFY_FUNCTIONCUSTOM_PASSWORD_FUNCTION
;
どのユーザープロファイルがどの照合機能に関連付けられているかを確認するには、DBA_PROFILES
を照会します。次の例では、カスタム検証関数 CUSTOM_PASSWORD_FUNCTION
に関連付けられたプロファイルを取得します。
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD' AND LIMIT = '
CUSTOM_PASSWORD_FUNCTION
'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION
次の例では、すべてのプロシージャとそれらに関連付けられたパスワード検証関数を取得します。
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------------------- -------------------------------- -------- ------------------------ DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD CUSTOM_PASSWORD_FUNCTION RDSADMIN PASSWORD_VERIFY_FUNCTION PASSWORD NULL
create_passthrough_verify_fcn プロシージャ
create_passthrough_verify_fcn
プロシージャは、RDS for Oracle のすべてのバージョンでサポートされています。
Amazon RDS プロシージャ rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn
を使用してパスワードを検証するには、カスタム関数を作成できます。create_passthrough_verify_fcn
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
varchar2 |
— |
はい |
カスタム検証関数の名前。これは、SYS 関数で作成されるラッパー関数です。検証ロジックは含まれていません。この関数をユーザープロファイルに割り当てます。 |
|
varchar2 |
— |
はい |
カスタム検証関数のスキーマ所有者。 |
|
varchar2 |
— |
はい |
検証ロジックを含む既存のカスタム関数の名前。カスタム関数はブール値を返します。パスワードが有効の場合は |
次の例では、PASSWORD_LOGIC_EXTRA_STRONG
という名前の関数のロジックを使用するパスワード検証関数を作成します。
begin rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn( p_verify_function_name => '
CUSTOM_PASSWORD_FUNCTION
', p_target_owner => 'TEST_USER
', p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG
'); end; /
検証関数をユーザープロファイルに関連付けるには、alter
profile
を使用します。次の例では、検証関数を DEFAULT
ユーザープロファイルに関連付けています。
ALTER PROFILE
DEFAULT
LIMIT PASSWORD_VERIFY_FUNCTIONCUSTOM_PASSWORD_FUNCTION
;
カスタム DNS サーバーのセットアップ
Amazon RDS は、Oracle を実行している DB インスタンスでのアウトバウンドのネットワークアクセスをサポートします。前提条件など、アウトバウンドのネットワークアクセスの詳細については、「証明書と Oracle ウォレットを使用した、UTL_HTTP アクセスの設定」を参照してください
Amazon RDS Oracle は、顧客所有のカスタム DNS サーバーでドメイン名サービス (DNS) 解決を許可します。Amazon RDS DB インスタンスからカスタム DNS サーバーを介して完全修飾ドメイン名のみを解決することができます。
カスタム DNS ネームサーバーを設定後、変更を DB インスタンスに反映させるまで約 30 分ほどかかります。DB インスタンスへの変更が反映されたら、すべてのアウトバウンドネットワークトラフィックのポート 53 の DNS サーバーにおいて DNS ルックアップクエリを行う必要があります。
Amazon RDS for Oracle DB インスタンスでカスタム DNS サーバーをセットアップするには、次を実行します。
-
Virtual Private Cloud (VPC) の DHCP オプションで
domain-name-servers
を DNS ネームサーバーの IP アドレスに設定します。詳細については、「DHCP オプションセット」を参照してください。注記
domain-name-servers
オプションが許可する値は 4 つまでになりますが、Amazon RDS DB インスタンスが使用するのは初期の値のみです。 -
DNS サーバーが、パブリック DNS 名、Amazon EC2 プライベート DNS 名、ユーザー固有の DNS 名を含むすべてのルックアップクエリを解決できることを確認します。DNS サーバーが処理できない DNS ルックアップがアウトバウンドネットワークトラフィックにある場合は、状況に適したアップストリーミング DNS プロバイダを必ず設定してください。
-
512 バイト以下の User Datagram Protocol (UDP) レスポンスを生成するように DNS サーバーを設定します。
-
1024 バイト以下の Transmission Control Protocol (TCP) レスポンスを生成するように DNS サーバーを設定します。
-
ポート 53 で Amazon RDS DB インスタンスからのインバウンドトラフィックを許可するように DNS サーバーを設定します。DNS サーバーが Amazon VPC にある場合、VPC にはポート 53 で UDP と TCP トラフィックを許可するインバウンドルールを含むセキュリティグループが必要になります。DNS サーバーが Amazon VPC にない場合は、ポート 53 で UDP と TCP インバウンドトラフィックを許可できるように、適切なファイアウォールの allow-listing が必要になります。
詳細については、「VPC のセキュリティグループ」と「ルールの追加と削除」を参照してください。
-
ポート 53 でアウトバウンドトラフィックを許可するため、Amazon RDS DB インスタンスの VPC を設定します。VPC には、ポート 53 で UDP および TCP トラフィックを許可するアウトバウンドルールを含むセキュリティグループが必要になります。
詳細については、「VPC のセキュリティグループ」と「ルールの追加と削除」を参照してください。
-
Amazon RDS DB インスタンスと DNS サーバー間のルーティングパスは、DNS トラフィックを許可できるよう適切に設定してください。
-
Amazon RDS DB インスタンスと DNS サーバーが同じ VPC にない場合は、両者の間でピア接続をセットアップする必要があります。詳細については、「VPC ピア機能とは」を参照してください。
-
システム診断イベントの設定と設定の解除
セッションレベルで診断イベントを設定および設定解除するには、Oracle SQL ステートメントを使用できます ALTER
SESSION SET EVENTS
。ただし、システムレベルでイベントを設定するには、Oracle SQL を使用できません。代わりに、rdsadmin.rdsadmin_util
パッケージ内のシステムイベント手順を使用します。システムイベント手順は、次のエンジンバージョンで使用できます。
-
すべての Oracle Database 21c バージョン
-
19.0.0.0.ru-2020-10.rur-2020-10.r1 以降の Oracle Database 19c バージョン
詳細については、「Amazon RDS for Oracle リリースノート」の「バージョン 19.0.0.0.ru-2020-10.rur-2020-10.r1」を参照してください。
重要
内部的には、rdsadmin.rdsadmin_util
パッケージは ALTER SYSTEM SET EVENTS
ステートメントを使用してイベントを設定します。ALTER
SYSTEM
ステートメントは、Oracle データベースのドキュメントには記載されていません。システム診断イベントによっては、大量のトレース情報を生成したり、競合を引き起こしたり、データベースの可用性に影響を与えることがあります。非稼動のデータベースで特定の診断イベントをテストし、Oracleサポートのガイダンスに従って、本番稼動用のデータベースにのみイベントを設定することをお勧めしています。
許可されたシステム診断イベントのリスト化
設定できるシステムイベントをリスト化するには、Amazon RDS の手順 rdsadmin.rdsadmin_util.list_allowed_system_events
を使用します。この手順はパラメータを受け付けません。
次の例では、設定可能なすべてのシステムイベントをリスト化します。
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
次の出力サンプルは、イベント番号とその説明をリスト化しています。set_system_event
これらのイベントを設定し、unset_system_event
設定解除するには、Amazon RDS の手順を使用します。
604 - error occurred at recursive SQL level 942 - table or view does not exist 1401 - inserted value too large for column 1403 - no data found 1410 - invalid ROWID 1422 - exact fetch returns more than requested number of rows 1426 - numeric overflow 1427 - single-row subquery returns more than one row 1476 - divisor is equal to zero 1483 - invalid length for DATE or NUMBER bind variable 1489 - result of string concatenation is too long 1652 - unable to extend temp segment by in tablespace 1858 - a non-numeric character was found where a numeric was expected 4031 - unable to allocate bytes of shared memory ("","","","") 6502 - PL/SQL: numeric or value error 10027 - Specify Deadlock Trace Information to be Dumped 10046 - enable SQL statement timing 10053 - CBO Enable optimizer trace 10173 - Dynamic Sampling time-out error 10442 - enable trace of kst for ORA-01555 diagnostics 12008 - error in materialized view refresh path 12012 - error on auto execute of job 12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 14400 - inserted partition key does not map to any partition 31693 - Table data object failed to load/unload and is being skipped due to error:
注記
許可されるシステムイベントのリストは、時間の経過とともに変化する可能性があります。対象イベントの最新のリストがあることを確認するには、rdsadmin.rdsadmin_util.list_allowed_system_events
を使用します。
システム診断イベントの設定
システムイベントを設定するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.set_system_event
を使用します。rdsadmin.rdsadmin_util.list_allowed_system_events
の出力にリストされているイベントだけを設定できます。set_system_event
手順は、次のパラメータを受け付けます。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
number |
— |
はい |
システムイベント番号。値は、 |
|
number |
— |
はい |
イベントレベル。異なるレベル値の説明については、Oracle データベースのドキュメントまたは Oracle サポートを参照してください。 |
手順 set_system_event
は、次の原則に従って必要なALTER SYSTEM SET EVENTS
ステートメントを構築および実行します。
-
イベントタイプ (
context
またはerrorstack
) は自動的に決定されます。 -
フォーム内のステートメントは、
ALTER SYSTEM SET EVENTS '
コンテキストイベントを設定します。この表記はevent
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
と同等です。event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
フォーム内のステートメントは、
ALTER SYSTEM SET EVENTS '
エラースタックイベントを設定します。この表記はevent
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
と同等です。event
TRACE NAME ERRORSTACK LEVELevent_level
'
次の例では、イベント 942 をレベル 3 に設定し、イベント 10442 をレベル 10 に設定します。サンプル出力が含まれています。
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3); Setting system event 942 with: alter system set events '942 errorstack (3)' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10); Setting system event 10442 with: alter system set events '10442 level 10' PL/SQL procedure successfully completed.
設定されているシステム診断イベントのリスト化
現在設定されているシステムイベントをリスト化するには、Amazon RDS の手順を使用します rdsadmin.rdsadmin_util.list_set_system_events
。この手順では、set_system_event
によってシステムレベルで設定されたイベントだけが報告されます。
次の例は、アクティブなシステムイベントをリスト化します。
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;
次のサンプル出力は、イベントのリスト、イベントタイプ、イベントが現在設定されているレベル、およびイベントが設定された時刻を示しています。
942 errorstack (3) - set at 2020-11-03 11:42:27 10442 level 10 - set at 2020-11-03 11:42:41 PL/SQL procedure successfully completed.
システム診断イベントの設定解除
システムイベントの設定を解除するには、Amazon RDS の手順を使用します rdsadmin.rdsadmin_util.unset_system_event
。設定を解除できるのは、rdsadmin.rdsadmin_util.list_allowed_system_events
の出力にリスト化されたイベントだけです 。unset_system_event
手順は、次のパラメータを受け付けます。
パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
|
number |
— |
はい |
システムイベント番号。値は、 |
次の例では、イベント 942 と 10442 の設定を解除します。サンプル出力が含まれています。
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942); Unsetting system event 942 with: alter system set events '942 off' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442); Unsetting system event 10442 with: alter system set events '10442 off' PL/SQL procedure successfully completed.