ALTER TABLE tablename_part1 SET TABLESPACE oss 文を使用してテーブルパーティションを Object Storage Service (OSS) にアーカイブすると、親パーティションテーブルがロックされ、アクセスできなくなります。パーティションに大量のデータが含まれている場合、操作に時間がかかる場合があり、結果として生じるテーブルロックがビジネス運用に深刻な影響を与える可能性があります。この問題を解決するには、DETACH 操作と ATTACH 操作を使用して、親テーブルをロックせずにパーティションを OSS にアーカイブします。
使用上の注意
このソリューションは、テーブルパーティションを OSS にアーカイブする場合にのみ適用されます。親パーティションテーブルまたは非パーティションテーブルのアーカイブには適用されません。
親テーブルはレンジパーティションである必要があります。
親パーティションテーブルには、グローバルインデックスがあってはなりません。
アーカイブプロセス中は、アーカイブされたパーティションがロックされます。プロセス中にこのパーティションに対する読み取りまたは書き込みリクエストがないことを確認してください。アーカイブが完了すると、パーティションに対する通常の読み取りおよび書き込み操作が再開されます。
手順
この手順では、年ごとにパーティション化された sales という名前のテーブルを例として使用します。
sales_2024パーティションをsalesテーブルからデタッチします。ALTER TABLE sales DETACH PARTITION sales_2024;sales_2024パーティションを OSS にアーカイブします。この操作中は、sales_2024テーブルパーティションのみがロックされます。親テーブルと他のパーティションはアクセス可能なままです。ALTER TABLE sales_2024 SET TABLESPACE OSS;サブパーティションを親テーブルに再アタッチします。
ALTER TABLE sales ATTACH PARTITION sales_2024 FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');再アタッチ後、パーティションは親テーブルを介して読み取りおよび書き込み操作のために正常にアクセスできます。