>데이터 베이스 >Oracle >오라클 테이블에 파티션을 추가하는 방법

오라클 테이블에 파티션을 추가하는 방법

WBOY
WBOY원래의
2022-03-07 15:26:5628692검색

Oracle에서는 "ADD PARTITION"과 함께 ALTER 문을 사용하여 테이블에 파티션을 추가할 수 있습니다. 구문은 "ALTER TABLE 테이블 이름 ADD PARTITION 파티션 VALUES"입니다.

오라클 테이블에 파티션을 추가하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

Oracle의 테이블에 파티션을 추가하는 방법

1. 파티션 추가

다음 명령은 SALES 테이블에 P3 파티션을 추가합니다

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. 파티션 자르기

파티션 자르기는 특정 파티션의 데이터를 삭제하는 것을 의미합니다. 파티션은 삭제되지 않으며 다른 파티션의 데이터도 삭제되지 않습니다. 테이블에 파티션이 하나만 있는 경우 파티션이 잘릴 수 있습니다. 다음 명령으로 파티션을 자릅니다.

ALTER TABLE SALES TRUNCATE PARTITION P2;

다음 명령으로 하위 파티션을 자릅니다.

ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;

IV. 파티션 병합

파티션 병합은 인접한 파티션을 하나의 파티션으로 병합하는 것입니다. 더 높은 파티션의 경계. 파티션을 더 낮은 경계의 파티션에 병합할 수 없다는 점은 주목할 가치가 있습니다. 다음 명령은 P1 및 P2 파티션의 병합을 실현합니다.

ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;

5. 파티션 분할

파티션 분할 하나의 파티션을 두 개의 새 파티션으로 분할한 후에는 원래 파티션이 더 이상 존재하지 않습니다. 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;

Seven. 테이블 파티션 이름을 바꿉니다.

다음 명령은 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 Video Tutorial"

위 내용은 오라클 테이블에 파티션을 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.