アーカイブモードを有効にした後でも、同じ方法で無効にできます。テナントがアーカイブモードを無効にする前に、進行中または一時停止中のログアーカイブタスクがある場合、アーカイブモードを無効にすると、システムはこれらのアーカイブタスクを自動的に停止します。
背景
現在のクラスタに sys、mysql_tenant、oracle_tenant の3つのテナントがあり、テナント mysql_tenant と oracle_tenant は両方ともアーカイブモードが有効であると仮定します。
注意
アーカイブタスクの状態が STOPPING で停止し、無効化できないのを防ぐため、アーカイブメディアが利用不可な場合でもアーカイブタスクを正常に無効化できるようにします。これにより、ログ消費モジュールも強制終了のシナリオでログを正しく消費できます。
システムテナントによる他のテナントのアーカイブモードの無効化
sys テナントは、クラスタ内のすべてのテナントまたは指定したテナントのアーカイブモードを無効にできます。
rootユーザーでクラスタのsysテナントにログインします。以下のステートメントを実行して、アーカイブモードを無効にします。
クラスタ内のすべてのテナントのアーカイブモードを無効にする
この方法は、クラスタ内のすべてのテナントのアーカイブモードを無効にします。
obclient [(none)]> ALTER SYSTEM NOARCHIVELOG [TENANT = ALL];コマンドが正常に実行されると、この例では
mysql_tenantとoracle_tenantの両方のアーカイブモードが無効になります。クラスタ内のすべてのテナントのアーカイブモードは、sysテナントのoceanbase.DBA_OB_TENANTSビューで確認できます。obclient [(none)]> SELECT TENANT_NAME, LOG_MODE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_TYPE='USER'\G *************************** 1. row *************************** TENANT_NAME: mysql_tenant LOG_MODE: NOARCHIVELOG *************************** 2. row *************************** TENANT_NAME: oracle_tenant LOG_MODE: NOARCHIVELOG 2 rows in setクラスタ内の指定したテナントのアーカイブモードを無効にする
この方法は、指定したテナントのアーカイブモードのみを無効にし、クラスタ内の他のテナントには影響しません。
obclient [(none)]> ALTER SYSTEM NOARCHIVELOG TENANT = mysql_tenant;説明
複数のテナントを同時に指定する場合、テナント名は半角カンマ(`,`)で区切ります。
コマンドが正常に実行されると、この例では
mysql_tenantがアーカイブモードを無効にします。テナント内のoceanbase.DBA_OB_TENANTSビューで、クラスタ内のすべてのテナントのアーカイブモードを確認できます。obclient [(none)]> SELECT TENANT_NAME, LOG_MODE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_TYPE = 'USER'\G *************************** 1. row *************************** TENANT_NAME: mysql_tenant LOG_MODE: NOARCHIVELOG *************************** 2. row *************************** TENANT_NAME: oracle_tenant LOG_MODE: ARCHIVELOG 2 rows in set
ユーザーテナントが自身のテナントのアーカイブモードを無効にする
ユーザーテナントは自身のテナントのアーカイブモードを直接無効にすることもでき、他のテナントには影響しません。
テナント管理者がデータベースにログインします。
この例では、
rootユーザーでmysql_tenantテナントにログインするか、SYSユーザーでoracle_tenantテナントにログインできます。以下のステートメントを実行して、アーカイブモードを無効にします。
obclient [xxx]> ALTER SYSTEM NOARCHIVELOG;コマンドが正常に実行されると、そのテナントの
DBA_OB_TENANTSビューで、そのテナントのアーカイブモードを直接確認できます。obclient [SYS]> SELECT TENANT_NAME, LOG_MODE FROM DBA_OB_TENANTS\G *************************** 1. row *************************** TENANT_NAME: oracle_tenant LOG_MODE: NOARCHIVELOG 1 rows in set