ホームページ  >  記事  >  データベース  >  Oracle でテーブルにパーティションを追加する方法

Oracle でテーブルにパーティションを追加する方法

WBOY
WBOYオリジナル
2022-03-07 15:26:5628518ブラウズ

Oracle では、ALTER ステートメントと「ADD PARTITION」を使用してテーブルにパーティションを追加できます。構文は「ALTER TABLE テーブル名 ADD PARTITION パーティション VALUES」です。

Oracle でテーブルにパーティションを追加する方法

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle のテーブルにパーティションを追加する方法

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。