削除されたオブジェクトはごみ箱に移動し、その後 FLASHBACK ステートメントを使用してごみ箱のオブジェクトをリストアできます。
注意事項
テーブルをリストアする際、Flashbackオブジェクトの順序は従属関係に従う必要があり、データベースをフラッシュバックしてから、テーブルをフラッシュバックします。
インデックスの直接リストアはサポートされていません。
FLASHBACKステートメントでテーブルをリストアすると、そのテーブルのインデックスも自動的にリストアされます。ごみ箱からオブジェクトをリストアする際、リストアオブジェクトの名前を変更できますが、既存のオブジェクト名と重複できません。重複するとシステムはエラーを返します。
MySQLテナントの場合、ごみ箱からテーブルをリストアする前に、そのテーブルが属するデータベースが削除されている場合は、データベースをリストアしてからテーブルをリストアする必要があります。
テーブルがごみ箱に入る前に特定のテーブルグループに属していた場合、ごみ箱からリストア後、そのテーブルはデフォルトで元のテーブルグループに戻ります。元のテーブルグループが既に削除されている場合、そのテーブルはリストア後、どのテーブルグループにも属しません。
テナントのリストア
現在、テナントを削除できるのは sys テナントのみであるため、ごみ箱にあるテナントを通常のテナントにリストアできるのも sys テナントのみです。リストア時にはテナント名を変更できますが、既存のテナント名と重複できません。重複するとシステムはエラーを返します。
sysテナントでデータベースにログインします。接続例は以下のとおりです。データベースへの接続時は、実際の環境に合わせてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aデータベースへの接続操作の詳細については、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
SHOW RECYCLEBINステートメントを実行し、ごみ箱内のオブジェクト名を取得します。obclient [(none)]> SHOW RECYCLEBIN; +-------------------------------------+-------------------+----------+----------------------------+ | OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | +-------------------------------------+-------------------+----------+----------------------------+ | RECYCLE_$_100017_1672050541224936 | oracle001 | TENANT | 2023-01-16 11:01:40.258000 | | __recycle_$_100017_1673426335319344 | __idx_500788_idx1 | INDEX | 2023-01-11 16:38:55.318878 | | __recycle_$_100017_1673426335331800 | t1 | TABLE | 2023-01-11 16:38:55.331481 | | __recycle_$_100017_1673854707660504 | infotest | DATABASE | 2023-01-16 15:38:27.660436 | +-------------------------------------+-------------------+----------+----------------------------+ 4 rows in set業務ニーズに基づき、適切なシナリオを選択して、ごみ箱内のテナントをリストアします。
ごみ箱内のテナントを通常のテナントにリストアし、リストア後のテナント名はごみ箱に入る前のテナント名と同じにします。
ステートメントは以下のとおりです:
FLASHBACK TENANT tenant_name TO BEFORE DROP;ここで、
tenant_nameにはごみ箱内の名前、テナントの元の名前、どちらも使用可能です。ごみ箱内の名前はグローバルに一意であるため、ごみ箱内の名前を使用すると、リストアされるテナントがどのテナントかを明確にできます。そのため、テナントのリストアにはごみ箱内の名前の使用を推奨します。元の名前を使用する場合、ごみ箱内に同名の複数のテナントが存在すると、リストアされるテナントはそれらのテナントのうち最後にごみ箱に入ったテナントになります。例:
obclient [(none)]> FLASHBACK TENANT RECYCLE_$_100017_1672050541224936 TO BEFORE DROP; Query OK, 0 rows affectedごみ箱内のテナントを通常のテナントにリストアして、名前を変更します。
FLASHBACK TENANT tenant_name TO BEFORE DROP RENAME TO new_tenant_name;関連パラメータの説明は以下のとおりです:
tenant_nameにはごみ箱内の名前、テナントの元の名前、どちらも使用可能です。ごみ箱内の名前はグローバルに一意であるため、ごみ箱内の名前を使用すると、リストアされるテナントがどのテナントかを明確にできます。そのため、テナントのリストアにはごみ箱内の名前の使用を推奨します。元の名前を使用する場合、ごみ箱内に同名の複数のテナントが存在すると、リストアされるテナントはそれらのテナントのうち最後にごみ箱に入ったテナントになります。new_tenant_nameは、ごみ箱からリストア後のテナント名、すなわち名前を変更した後のテナント名を表します。
例:
obclient [(none)]> FLASHBACK TENANT RECYCLE_$_100017_1672050541224936 TO BEFORE DROP RENAME TO new_oracle; Query OK, 0 rows affected
データベースのリストア
sysテナントまたはMySQLユーザーテナントは、ごみ箱からデータベースをリストアできます。リストア時にデータベース名を変更できますが、既存のデータベースと同名にできません。同じ名前の場合、システムはエラーを返します。
sysテナントまたはMySQLユーザーテナントのテナント管理者がデータベースにログインします。説明
デフォルトでMySQLテナントの管理者ユーザーは
rootユーザーです。接続例は以下のとおりです。データベースへの接続時は、実際の環境に準じてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aより詳細なデータベース接続操作の手順については、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
SHOW RECYCLEBINステートメントを実行し、ごみ箱内のオブジェクト名を取得します。obclient [(none)]> SHOW RECYCLEBIN; +-------------------------------------+-------------------+----------+----------------------------+ | OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | +-------------------------------------+-------------------+----------+----------------------------+ | __recycle_$_100017_1673426335319344 | __idx_500788_idx1 | INDEX | 2023-01-11 16:38:55.318878 | | __recycle_$_100017_1673426335331800 | t1 | TABLE | 2023-01-11 16:38:55.331481 | | __recycle_$_100017_1673854707660504 | infotest | DATABASE | 2023-01-16 15:38:27.660436 | +-------------------------------------+-------------------+----------+----------------------------+ 3 rows in set業務ニーズに応じて、適切なシナリオを選択し、ごみ箱内のデータベースをリストアします。
ごみ箱からデータベースをリストアします。リストア後のデータベース名は、ごみ箱に入る前の名前になります。
FLASHBACK DATABASE object_name TO BEFORE DROP;ここで、
object_nameはデータベースオブジェクトがごみ箱内で持つ名前を表します。元の名前の使用はサポートされていません。例:
obclient [(none)]> FLASHBACK DATABASE __recycle_$_100017_1673854707660504 TO BEFORE DROP; Query OK, 0 rows affectedこのステートメントを実行した後、リストア対象のデータベースがテナント内の既存データベースと同名の場合、システムはエラーを返します。
obclient [(none)]> FLASHBACK DATABASE __recycle_$_100017_1673854707660504 TO BEFORE DROP; ERROR 1007 (HY000): Can't create database 'infotest'; database existsごみ箱からデータベースをリストアして名前を変更します。
FLASHBACK DATABASE object_name TO BEFORE DROP RENAME TO new_database_name;ここで:
object_nameはデータベースオブジェクトがごみ箱内で持つ名前を表します。元の名前の使用はサポートされていません。new_database_name:ごみ箱からリストア後のデータベース名を表します。
例:
obclient [(none)]> FLASHBACK DATABASE __recycle_$_100017_1673854707660504 TO BEFORE DROP RENAME TO new_infotest; Query OK, 0 rows affected
テーブルのリストア
sysテナント、MySQLユーザーテナント、およびOracleユーザーテナントは、いずれもごみ箱からテーブルをリストアできます。リストア時にはテーブル名を変更できますが、既存のテーブルと同名にできません。同じ名前の場合、システムはエラーを返します。
sysテナントまたはユーザーテナントのテナント管理者がデータベースにログインします。説明
デフォルトでは、MySQLテナントの管理者ユーザーは
rootユーザー、Oracleテナントの管理者ユーザーはSYSユーザーです。接続例は以下のとおりです。データベースへの接続時は、実際の環境に準じてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aより詳細なデータベース接続操作の手順については、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
SHOW RECYCLEBINステートメントを実行し、ごみ箱内のオブジェクト名を取得します。obclient [(none)]> SHOW RECYCLEBIN; +-------------------------------------+-------------------+----------+----------------------------+ | OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | +-------------------------------------+-------------------+----------+----------------------------+ | __recycle_$_100017_1673426335319344 | __idx_500788_idx1 | INDEX | 2023-01-11 16:38:55.318878 | | __recycle_$_100017_1673426335331800 | t1 | TABLE | 2023-01-11 16:38:55.331481 | | __recycle_$_100017_1673854707660504 | infotest | DATABASE | 2023-01-16 15:38:27.660436 | +-------------------------------------+-------------------+----------+----------------------------+ 3 rows in set業務ニーズに応じて、適切なシナリオを選択し、ごみ箱内のテーブルをリストアします。
ごみ箱からテーブルをリストアします。リストア後のテーブル名は、ごみ箱に入る前のテーブル名になります。
FLASHBACK TABLE object_name TO BEFORE DROP;ここで、
object_nameはごみ箱内のテーブルオブジェクト名を表します。元の名前を使用することもできますが、ごみ箱内の名前はグローバルに一意であるため、ごみ箱内の名前の使用を推奨します。例:
obclient [(none)]> FLASHBACK TABLE __recycle_$_100017_1673426335331800 TO BEFORE DROP; Query OK, 0 rows affectedこのステートメントを実行すると、リストア後のテーブル名はごみ箱に入る前の名前になり、そのテーブルが属するデータベースまたはSchemaオブジェクトは、テーブル削除前に属していたデータベースまたはSchemaオブジェクトのままになります。テーブルがごみ箱に入る前の名前が既存のテーブルと同名の場合、システムはエラーを返します。
ごみ箱からテーブルをリストアして名前を変更します。
FLASHBACK TABLE object_name TO BEFORE DROP RENAME To new_table_name;ここで、
object_nameはごみ箱内のテーブルオブジェクト名を表します。元の名前を使用することもできますが、ごみ箱内の名前はグローバルに一意であるため、ごみ箱内の名前の使用を推奨します。new_table_nameはテーブルリストア後の新しい名前を表します。例:
obclient [(none)]> FLASHBACK TABLE __recycle_$_100017_1673426335331800 TO BEFORE DROP RENAME To infotable; Query OK, 0 rows affectedこのステートメントを実行すると、リストア後のテーブル名は新しい名前になり、そのテーブルが属するデータベースまたはSchemaオブジェクトは、テーブル削除前に属していたデータベースまたはSchemaオブジェクトのままになります。名前を変更したテーブル名が既存のテーブルと同名の場合、システムはエラーを返します。
ごみ箱からテーブルを指定されたデータベースまたはSchemaオブジェクトにリストアして名前を変更します。
FLASHBACK TABLE object_name TO BEFORE DROP RENAME To database_name.new_table_name;ここで、
object_nameはごみ箱内のテーブルオブジェクト名を表します。元の名前を使用することもできますが、ごみ箱内の名前はグローバルに一意であるため、ごみ箱内の名前の使用を推奨します。database_name.new_table_nameはテーブルリストア後の新しい名前およびそれが属するデータベースまたはSchemaオブジェクトを表します。Oracleテナントでは、Schemaオブジェクト名はユーザー名と同じになります。例:
obclient [(none)]> FLASHBACK TABLE __recycle_$_100017_1673426335331800 TO BEFORE DROP RENAME To test.infotable; Query OK, 0 rows affectedこのステートメントを実行すると、リストア後のテーブル名は新しい名前になり、そのテーブルが属するデータベースまたはSchemaオブジェクトは指定されたデータベースまたはSchemaオブジェクトになります。名前を変更したテーブル名が既存のテーブルと同名の場合、システムはエラーを返します。
関連ドキュメント
ごみ箱に関する詳細は、以下の情報を参照してください: