メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Oracle DB インスタンスの一般的な DBA システムタスク

このセクションでは、Oracle を実行する Amazon RDS DB インスタンスのシステムに関連する一般的な DBA タスクを実行する方法について説明します。マネージド型サービスの操作性を実現するために、Amazon RDS では DB インスタンスへのシェルアクセスは提供していません。また、上位の権限を必要とする特定のシステムプロシージャやシステムテーブルへのアクセスが制限されます。

セッションの切断

Amazon RDS プロシージャ rdsadmin.rdsadmin_util.disconnect を使用すると、専用サーバープロセスを終了して、現在のセッションを切断できます。disconnect プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

sid

number

必須

セッション識別子。

serial

number

必須

セッションのシリアル番号。

method

varchar

'即時'

optional

有効な値は 'IMMEDIATE' または 'POST_TRANSACTION' です。

以下の例では、セッションを切断しています。

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 プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

sid

number

必須

セッション識別子。

serial

number

必須

セッションのシリアル番号。

method

varchar

null

optional

有効な値は 'IMMEDIATE' または 'PROCESS' です。

以下の例では、セッションを強制終了しています。

begin rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number); end; /

セッション識別子とセッションのシリアル番号を取得するには、V$SESSION ビューを照会します。以下の例では、ユーザー AWSUSER のすべてのセッションを取得しています。

select SID, SERIAL#, STATUS from V$SESSION where USERNAME = 'AWSUSER';

method パラメータの値として IMMEDIATEPROCESS のいずれかを指定できます。PROCESS を値として指定すると、セッションに関連付けられたプロセスを強制停止できるようになります。これは IMMEDIATEmethod 値として使用してセッションの強制終了に失敗した場合にのみ行ってください。

制限セッションの有効化と無効化

Amazon RDS プロシージャ rdsadmin.rdsadmin_util.restricted_session を使用すると、制限セッションを有効または無効にすることができます。restricted_session プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

p_enable

boolean

true

optional

制限セッションを有効にするには true、制限セッションを無効にするには false に設定します。

次の例は、制限セッションを有効化および無効化する方法を示しています。

/* 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 権限の付与

通常多くのオブジェクトを含めることができるロールを使用して権限を転送します。Amazon RDS 手順 rdsadmin.rdsadmin_util.grant_sys_object を使用して、1 つのオブジェクトへ権限を付与できます。この手順は、マスターアカウントがロールまたは直接付与を通じてすでに持っている権限のみ付与します。

grant_sys_object プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

p_obj_name

varchar2

必須

権限を付与する元のオブジェクトの名前。オブジェクトとして、ディレクトリ、ファンクション、パッケージ、プロシージャ、シーケンス、テーブル、またはビューを指定できます。オブジェクト名のスペルは DBA_OBJECTS に表示されているとおりに正確に入力する必要があります。ほとんどのシステムオブジェクトが大文字で定義されるため、初めにこれを試すことをお勧めします。

p_grantee

varchar2

必須

権限を付与する先のオブジェクトの名前。オブジェクトとして、スキーマまたはロールを指定できます。

p_privilege

varchar2

null

必須

p_grant_option

boolean

false

optional

付与オプションで使用するには、true に設定します。p_grant_option パラメータは Oracle バージョン 11.2.0.4.v8 以降と 12.1.0.2.v4 以降でサポートされています。

以下の例では、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_CATALOG_ROLE ロールに付与された DBA ビューでの SELECT 権限の付与があります。このロールが with admin option を使用してユーザーにまだ直接付与されていない場合、権限を転送することはできません。DBA 権限がある場合は、そのロールを他のユーザーに直接付与できます。

以下の例では、SELECT_CATALOG_ROLEEXECUTE_CATALOG_ROLEUSER1 に付与しています。with admin option が使用されているため、USER1 は、SELECT_CATALOG_ROLE に許可された SYS オブジェクトへのアクセスを許可できるようになりました。

grant SELECT_CATALOG_ROLE to USER1 with admin option; grant EXECUTE_CATALOG_ROLE to USER1 with admin option;

すでに PUBLIC として許可されたオブジェクトへのアクセスは再許可する必要はありません。grant_sys_object プロシージャを使用してアクセスを再許可すると、プロシージャの呼び出しは成功します。

非マスターユーザーへの権限の付与

SELECT_CATALOG_ROLE ロールを使用すると、SYS スキーマ内の多くのオブジェクトに対する選択権限を付与できます。SELECT_CATALOG_ROLE ロールは、データディクショナリビューに対する SELECT 権限をユーザーに付与します。以下の例では、user1 という名前のユーザーにロール SELECT_CATALOG_ROLE を付与しています。

grant SELECT_CATALOG_ROLE to user1;

EXECUTE_CATALOG_ROLE ロールを使用することで、SYS スキーマ内の多くのオブジェクトに対する選択権限を付与できます。EXECUTE_CATALOG_ROLE ロールは、データディクショナリのパッケージとプロシージャに対する EXECUTE 権限をユーザーに付与します。以下の例では、user1 という名前のユーザーに EXECUTE_CATALOG_ROLE ロールを付与しています。

grant EXECUTE_CATALOG_ROLE to user1;

以下の例では、ロール SELECT_CATALOG_ROLEEXECUTE_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 to user1; grant SELECT on sh.sales TO user1;

DBMS_SCHEDULER ジョブの変更

Oracle プロシージャ dbms_scheduler.set_attribute を使用すると、DBMS_SCHEDULER ジョブを変更できます。詳細については、Oracle ドキュメントの「DBMS_SCHEDULER」と「SET_ATTRIBUTE プロシージャ」を参照してください。

Amazon RDS DB インスタンスを使用するときは、オブジェクト名にスキーマ名 SYS を付加します。以下の例では、monday window オブジェクトのリソースプラン属性を設定しています。

begin dbms_scheduler.set_attribute( name => 'SYS.MONDAY_WINDOW', attribute => 'RESOURCE_PLAN', value => 'resource_plan_1'); end; /

パスワードを検証するためのカスタム関数の作成

カスタムパスワード検証関数は、2 種類の方法で作成できます。標準検証ロジックを使用する場合、および SYS スキーマに関数を格納する場合は、create_verify_function の手順を使用します。カスタム検証ロジックを使用する場合、または SYS スキーマに関数を格納しない場合は、create_passthrough_verify_fcn の手順を使用します。

create_verify_function の手順

create_verify_function の手順は、Oracle バージョン 11.2.0.4.v9 以降、12.1.0.2.v5 以降でサポートされています。

Amazon RDS 手順 rdsadmin.rdsadmin_password_verify.create_verify_function を使用してパスワードを検証するには、カスタム関数を作成できます。create_verify_function プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

p_verify_function_name

varchar2

必須

カスタム関数の名前。この関数は、SYS スキーマに作成されます。この関数をユーザープロファイルに割り当てます。

p_min_length

number

8

optional

必要な文字の最小数。

p_max_length

number

256

optional

許容された文字の最大数。

p_min_letters

number

1

optional

必要な文字の最小数。

p_min_uppercase

number

0

optional

必要な大文字の最小数。

p_min_lowercase

number

0

optional

必要な小文字の最小数。

p_min_digits

number

1

optional

必要な数字の最小数。

p_min_special

number

0

optional

必要な特殊文字の最小数。

p_min_different_chars

number

3

optional

必要な固有文字の最小数。

p_disallow_username

boolean

true

optional

パスワードでユーザー名を禁止するには、true に設定します。

p_disallow_reverse

boolean

true

optional

パスワードで反転したユーザー名を禁止するには、true に設定します。

p_disallow_db_name

boolean

true

optional

パスワードでデータベースまたはサーバー名を禁止するには、true に設定します。

p_disallow_simple_strings

boolean

true

optional

パスワードで単純な文字列を禁止するには、true に設定します。

p_disallow_whitespace

boolean

false

optional

パスワードで空白文字を禁止するには、true に設定します。

p_disallow_at_sign

boolean

false

optional

パスワードで「@」を禁止するには、true に設定します。

複数のパスワード検証関数を作成できます。

カスタム関数名に制限があります。カスタム機能は、既存のシステムのオブジェクトと同じ名前を持つことができません。名前は、30 文字以下で、次の文字列 PASSWORDVERIFYCOMPLEXITYENFORCESTRENGTH の 1 つを含める必要があります。

次の例では、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_FUNCTION CUSTOM_PASSWORD_FUNCTION;

どのユーザープロファイルがどの照合機能に関連付けられているかを確認するには、DBA_PROFILES を照会します。以下の例では、CUSTOM_PASSWORD_FUNCTION という名前のカスタム検証関数に関連付けられたプロファイルを取得しています。

select * from DBA_PROFILES where RESOURCE = '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 以降、12.1.0.2.v7 以降でサポートされています。

Amazon RDS 手順 rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn を使用してパスワードを検証するには、カスタム関数を作成できます。create_passthrough_verify_fcn プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト値 必須 説明

p_verify_function_name

varchar2

必須

カスタム検証関数の名前。これは、SYS 関数で作成されるラッパー関数です。検証ロジックは含まれていません。この関数をユーザープロファイルに割り当てます。

p_target_owner

varchar2

必須

カスタム検証関数のスキーマ所有者。

p_target_function_name

varchar2

必須

検証ロジックを含む既存のカスタム関数の名前。カスタム関数はブール値を返します。パスワードが有効の場合は true、無効の場合は false が関数より返ります。

以下の例では、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_FUNCTION CUSTOM_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 Options Sets」を参照してください。

    注記

    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 インバウンドトラフィックを許可できるように、適切なファイアウォールのホワイトリストが必要になります。

    詳細については Security Groups for Your VPCAdding and Removing Rules をご覧ください。

  • ポート 53 でアウトバウンドトラフィックを許可するため、Amazon RDS DB インスタンスの VPC を設定します。VPC には、ポート 53 で UDP および TCP トラフィックを許可するアウトバウンドルールを含むセキュリティグループが必要になります。

    詳細については Security Groups for Your VPCAdding and Removing Rules をご覧ください。

  • Amazon RDS DB インスタンスと DNS サーバー間のルーティングパスは、DNS トラフィックを許可できるよう適切に設定してください。

    • Amazon RDS DB インスタンスと DNS サーバーが同じ VPC にない場合は、その間でピア接続を設定してください。詳細については What is VPC Peering? をご覧ください。

関連トピック