Oracle DB インスタンスの一般的な DBA システムタスク
このセクションでは、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 |
いいえ |
有効な値は |
次の例では、セッションを強制終了します。
begin rdsadmin.rdsadmin_util.kill( sid =>
sid
, serial =>serial_number
); end; /
セッション識別子とセッションのシリアル番号を取得するには、V$SESSION
ビューを照会します。次の例では、ユーザー AWSUSER
のすべてのセッションを取得します。
select SID, SERIAL#, STATUS from V$SESSION where USERNAME = '
AWSUSER
';
IMMEDIATE
パラメータの値として PROCESS
か method
のいずれかを指定できます。PROCESS
を method
値として指定すると、セッションに関連付けられたプロセスを強制終了できます。これは IMMEDIATE
を method
値として使用してセッションの強制終了に失敗した場合にのみ行ってください。
セッション内の SQL ステートメントのキャンセル
セッション内の SQL ステートメントをキャンセルするには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.cancel
を使用します。
注記
このプロシージャは Oracle バージョン 18.0.0.0 以降でサポートされています。
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;
SYS オブジェクトへの SELECT または EXECUTE 権限の付与
通常多くのオブジェクトを含めることができるロールを使用して権限を転送します。1 つのオブジェクトへ権限を付与するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.grant_sys_object
を使用します。このプロシージャは、ロールまたは直接付与を通じてマスターアカウントがすでに持っている権限のみ付与します。
grant_sys_object
プロシージャには以下のパラメータがあります。
パラメータ名 | データ型 | デフォルト値 | 必須 | 説明 |
---|---|---|---|---|
|
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; /
非マスターユーザーへの権限の付与
SYS
ロールを使用すると、SELECT_CATALOG_ROLE
スキーマ内の多くのオブジェクトに対する選択権限を付与できます。SELECT_CATALOG_ROLE
ロールは、データディクショナリビューに対する SELECT
権限をユーザーに付与します。次の例では、ユーザー SELECT_CATALOG_ROLE
にロール user1
を付与します。
grant SELECT_CATALOG_ROLE to
user1
;
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
;
パスワードを検証するためのカスタム関数の作成
カスタムパスワード検証関数は、2 種類の方法で作成できます。標準検証ロジックを使用する場合、および SYS
スキーマに関数を格納する場合は、create_verify_function
の手順を使用します。カスタム検証ロジックを使用する場合、または SYS
スキーマに関数を格納しない場合は、create_passthrough_verify_fcn
の手順を使用します。
create_verify_function プロシージャ
create_verify_function
プロシージャは、Oracle バージョン11.2.0.4.v9 以降、Oracle バージョン 12.1.0.2.v5 以降、すべての 12.2.0.1 バージョン、およびすべての
18.0.0.0 バージョンでサポートされています。
Amazon RDS 手順 rdsadmin.rdsadmin_password_verify.create_verify_function
を使用してパスワードを検証するには、カスタム関数を作成できます。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
という名前の関数を作成します。関数のパスワードは 12 文字以上で、2 つの大文字、1 つの数字、1 つの特殊文字が必要です。「@」は使用できません。
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
プロシージャは、Oracle バージョン11.2.0.4.v11 以降、Oracle バージョン 12.1.0.2.v7 以降、すべての 12.2.0.1 バージョン、およびすべての
18.0.0.0 バージョンでサポートされています。
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 DB インスタンスで utl_http、utl_tcp と utl_smtp を使用する をご覧ください。
Amazon RDS Oracle は、顧客所有のカスタム DNS サーバーでドメイン名サービス (DNS) 解決を許可します。Amazon RDS DB インスタンスからカスタム DNS サーバーを介して完全修飾ドメイン名のみを解決することができます。
カスタム DNS ネームサーバーを設定後、変更を DB インスタンスに反映させるまで約 30 分ほどかかります。DB インスタンスへの変更が反映されたら、すべてのアウトバウンドネットワークトラフィックのポート 53 の DNS サーバーにおいて DNS ルックアップクエリを行う必要があります。
Oracle Amazon RDS DB インスタンスでカスタム DNS サーバーをセットアップするには、次を実行します:
-
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 インバウンドトラフィックを許可できるように、適切なファイアウォールのホワイトリストが必要になります。
詳細については、「VPC のセキュリティグループ」と「ルールを追加および削除する」を参照してください。
-
ポート 53 でアウトバウンドトラフィックを許可するため、Amazon RDS DB インスタンスの VPC を設定します。VPC には、ポート 53 で UDP および TCP トラフィックを許可するアウトバウンドルールを含むセキュリティグループが必要になります。
詳細については、「VPC のセキュリティグループ」と「ルールを追加および削除する」を参照してください。
-
Amazon RDS DB インスタンスと DNS サーバー間のルーティングパスは、DNS トラフィックを許可できるよう適切に設定してください。
-
Amazon RDS DB インスタンスと DNS サーバーが同じ VPC にない場合は、両者の間でピア接続をセットアップする必要があります。詳細については、「VPC ピア機能とは」を参照してください。
-