テーブルを暗号化されたテーブル領域から移動させることで、そのテーブルの暗号化を解除できます。
背景
テーブルt1の暗号化状態は以下のとおりであり、テーブルt1は暗号化されたテーブル領域sectest_ts1内に存在します。
obclient> SELECT * FROM V$OB_ENCRYPTED_TABLES;
+----------+------------+---------------+---------------+-----------+----------------------------------+-------------+------------------+------------------+--------+--------+
| TABLE_ID | TABLE_NAME | TABLESPACE_ID | ENCRYPTIONALG | ENCRYPTED | ENCRYPTEDKEY | MASTERKEYID | BLOCKS_ENCRYPTED | BLOCKS_DECRYPTED | STATUS | CON_ID |
+----------+------------+---------------+---------------+-----------+----------------------------------+-------------+------------------+------------------+--------+--------+
| 500005 | T1 | 500004 | aes-256 | YES | xxxxxxxxxxxxxxxxxxxxxxxxxxxx66F3 | xxxx03 | 0 | 0 | NORMAL | 1010 |
+----------+------------+---------------+---------------+-----------+----------------------------------+-------------+------------------+------------------+--------+--------+
1 row in set
obclient> SHOW CREATE TABLE t1;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| TABLE | CREATE TABLE
|
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| T1 | CREATE TABLE "T1" (
"ID1" NUMBER(38),
"ID2" NUMBER(38)
) COMPRESS FOR ARCHIVE REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 TABLESPACE "SECTEST_TS1" |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
表を暗号化テーブルスペースから移動する
管理者がクラスタのOracleテナントにログインします。
表に対してプログレッシブマージを実行します。
progressive_merge_numの値を1より大きい数に設定し、プログレッシブマージの準備としてSHRINK SPACE操作を実行します。例:
obclient> ALTER TABLE t1 SET progressive_merge_num = 3; obclient> ALTER TABLE t1 SHRINK SPACE;手動で複数回のプログレッシブマージを開始します。
1回のプログレッシブマージを開始するステートメントは以下のとおりです:
obclient> ALTER SYSTEM MAJOR FREEZE;
説明
暗号化の解除は非同期プロセスであり、データの完全な復号を保証するためには、テーブルに対してプログレッシブマージを実行する必要があります。
暗号化されていないテーブルスペース
ts2を作成します。obclient> CREATE TABLESPACE ts2;表
t1を暗号化テーブルスペースsectest_ts1から暗号化されていないテーブルスペースts2に移動します。obclient> ALTER TABLE t1 TABLESPACE ts2;操作が成功した後、
SHOW CREATE TABLEステートメントを実行すると、表t1がテーブルスペースts2に移動されたことが確認できます。obclient> SHOW CREATE TABLE t1; +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | TABLE | CREATE TABLE | +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | T1 | CREATE TABLE "T1" ( "ID1" NUMBER(38), "ID2" NUMBER(38) ) COMPRESS FOR ARCHIVE REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 TABLESPACE "TS2" | +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in setV$OB_ENCRYPTED_TABLESビューをクエリして、表の暗号化状態を確認します。obclient> SELECT * FROM V$OB_ENCRYPTED_TABLES; +------------------+------------+------------------+---------------+-----------+--------------+-------------+------------------+------------------+------------+--------+ | TABLE_ID | TABLE_NAME | TABLESPACE_ID | ENCRYPTIONALG | ENCRYPTED | ENCRYPTEDKEY | MASTERKEYID | BLOCKS_ENCRYPTED | BLOCKS_DECRYPTED | STATUS | CON_ID | +------------------+------------+------------------+---------------+-----------+--------------+-------------+------------------+------------------+------------+--------+ | 500005 | T1 | 500012 | | NO | | 0 | 2 | 0 | NORMAL | 1010 | +------------------+------------+------------------+---------------+-----------+--------------+-------------+------------------+------------------+------------+--------+ 1 row in set表
t1のENCRYPTEDフィールドがNOであることが確認できます。これは、表t1の暗号化解除操作が成功したことを示しています。