アーカイブモードを有効にした後でも、同じ方法でアーカイブモードを無効にできます。テナントがアーカイブモードを無効にする前に、進行中または一時停止中のログアーカイブタスクがある場合、アーカイブモードを無効にすると、システムはこれらのアーカイブタスクを自動的に停止します。
背景
現在のクラスタには 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