Oracle では、ALTER ステートメントと「ADD PARTITION」を使用してテーブルにパーティションを追加できます。構文は「ALTER TABLE テーブル名 ADD PARTITION パーティション VALUES」です。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
1. パーティションの追加
次のコマンドは、P3 パーティションを SALES テーブルに追加します。
ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2018-09-01','YYYY-MM-DD'));
注意: 上記で追加したパーティション境界は、最後のパーティション境界よりも高い必要があります。
次のコマンドは、SALES テーブルの P3 パーティションに P3SUB1 サブパーティションを追加します
ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');
2。パーティションの削除
次のコマンドは、 P3 テーブル パーティション :
ALTER TABLE SALES DROP PARTITION P3;
P4SUB1 サブパーティションは次のコマンドで削除されました:
ALTER TABLE SALES DROP SUBPARTITION P4SUB1;
注: 削除されたパーティションがテーブル内の唯一のパーティションである場合、このパーティションは削除できません。このパーティションを削除するには、テーブルを削除する必要があります。
3. パーティションの切り捨て
パーティションの切り捨てとは、パーティション内のデータを削除することを意味します。パーティションは削除されず、他のパーティションのデータも削除されません。 。 データ。テーブル内にパーティションが 1 つだけある場合、パーティションは切り詰められる可能性があります。次のコマンドを使用してパーティションを切り詰めます:
ALTER TABLE SALES TRUNCATE PARTITION P2;
次のコマンドを使用してサブパーティションを切り詰めます:
ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;
4. パーティションをマージします
マージするパーティションをマージします。隣接するパーティション パーティションは 1 つのパーティションにマージされ、結果のパーティションは上位のパーティションの境界を取得します。パーティションを下位の境界を持つパーティションにマージすることはできないことに注意してください。次のコマンドは、P1 パーティションと P2 パーティションのマージを実現します:
ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;
5. パーティションの分割
パーティションの分割 1 つのパーティションを 2 つの新しいパーティションに分割します。もはや存在しない。 HASH タイプのパーティションは分割できないことに注意してください。
ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);
6. パーティションの結合 (coalesca)
パーティションの結合とは、ハッシュ パーティション内のデータを他のパーティションに結合することです。サイズが大きい場合は、ハッシュ パーティションを追加して結合できますが、結合パーティションはハッシュ パーティション内でのみ使用できることに注意してください。次のコマンドを使用してパーティションを結合します:
ALTER TABLE SALES COALESCA PARTITION;
7. テーブル パーティションの名前を変更します
次のコマンドは P21 を P2
ALTER TABLE SALES RENAME PARTITION P21 TO P2;
# に変更します##eight 、関連クエリ
クロスパーティションクエリselect sum( *) from (select count(*) cn from t_table_SS PARTITION (P200709_1) union all select count(*) cn from t_table_SS PARTITION (P200709_2) );
SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='tableName'
select object_name,object_type,tablespace_name,sum(value) from v$segment_statistics where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX' group by object_name,object_type,tablespace_name order by 4 desc
--显示数据库所有分区表的信息: select * from DBA_PART_TABLES --显示当前用户可访问的所有分区表信息: select * from ALL_PART_TABLES --显示当前用户所有分区表的信息: select * from USER_PART_TABLES --显示表分区信息 显示数据库所有分区表的详细分区信息: select * from DBA_TAB_PARTITIONS --显示当前用户可访问的所有分区表的详细分区信息: select * from ALL_TAB_PARTITIONS --显示当前用户所有分区表的详细分区信息: select * from USER_TAB_PARTITIONS --显示子分区信息 显示数据库所有组合分区表的子分区信息: select * from DBA_TAB_SUBPARTITIONS --显示当前用户可访问的所有组合分区表的子分区信息: select * from ALL_TAB_SUBPARTITIONS --显示当前用户所有组合分区表的子分区信息: select * from USER_TAB_SUBPARTITIONS --显示分区列 显示数据库所有分区表的分区列信息: select * from DBA_PART_KEY_COLUMNS --显示当前用户可访问的所有分区表的分区列信息: select * from ALL_PART_KEY_COLUMNS --显示当前用户所有分区表的分区列信息: select * from USER_PART_KEY_COLUMNS --显示子分区列 显示数据库所有分区表的子分区列信息: select * from DBA_SUBPART_KEY_COLUMNS --显示当前用户可访问的所有分区表的子分区列信息: select * from ALL_SUBPART_KEY_COLUMNS --显示当前用户所有分区表的子分区列信息: select * from USER_SUBPART_KEY_COLUMNS --怎样查询出oracle数据库中所有的的分区表 select * from user_tables a where a.partitioned='YES' --删除一个表的数据是 truncate table table_name; --删除分区表一个分区的数据是 alter table table_name truncate partition p5;
Oracle ビデオ チュートリアル》
以上がOracle でテーブルにパーティションを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。