Oracle Basic [ non-partition table into partitioned table ]

12 12 2008

Oracle basic, Bagaimana cara ngerubah tabel non-partisi ke tabel berpartisi, berikut beberapa cara yang biasa digunakan: A. Metode Export/Import B. Insert dengan metode sub-query C. metode Partition exchange. Metode2 berikut akan membuat sebuah tabel partisi dari tabel yang sebelumnya belum dipartisi. Sekarang kita umpamakan tabel EMP adalah sebuah tabel non-partisi.

A. Metode Export/import

1) Export tabel EMP non-partisi:

exp username/password tables=emp file=emp_export.dmp log=emp_export.log

2) Drop table EMP:

DROP TABLE EMP CASCADE CONSTRAINTS PURGE;

3) Recreate tabel EMP dengan partisi:

create table EMP (
empo number(3),
name varchar2(15))
partition by range (qty)
(
partition p1 values less than (501),
partition p2 values less than (maxvalue)
);

4) Import tabel dengan gunakan parameter ignore=y:

imp user/password file=emp_export.dmp ignore=y

Parameter ignore=y akan membuat proses import skip pada proses create tabel dan melanjutkan meload semua data.

B. Insert dengan metode subquery

1) Create tabel partisi :

create table EMP_PART (
empo number(3),
name varchar2(15))
partition by range (qty)
(
partition p1 values less than (501),
partition p2 values less than (maxvalue)
);

2) Insert data kedalam tabel yang sudah kita create dan berpartisi dengan subquery dari tabel non-partisi:

insert into EMP_TEMP (qty, name) select * from EMP

Note: EMP adalah tabel non-partisi.

3) Selanjutnya kita ubah tabel yang sudah berpartisi sehingga mempunyai nama yang sama dengan tabel yang

original, DROP tabel original dan rename tabel baru yang sudah berpartisi:

DROP TABLE EMP CASCADE CONSTRAINTS PURGE;

alter table EMP_TEMP rename to EMP;

C. Metode Partition Exchange ALTER TABLE EXCHANGE PARTITION dapat digunakan untuk convert sebuah partisi atau

subpartisi ke tabel non-partisi dan dari tabel non-partisi ke tabel partisi atau subpartisi dari tabel partisi

dengan exchange data dan index segment.

1) “Create table dummy_temp as select …” dengan partisi yang kita perlukan

2) Kemudian lakukan alter table EXCHANGE partition with tabel dummy yang kita create ;

SQL> CREATE TABLE p_emp
2 (sal NUMBER(7,2))
3 PARTITION BY RANGE(sal)
4 (partition emp_p1 VALUES LESS THAN (2000),
5 partition emp_p2 VALUES LESS THAN (4000));

Table created.

SQL> SELECT * FROM emp;

EMPNO ENAME JOB MGR HIREDATE SAL
——— ———- ——— ——— ——— ———
7369 SMITH CLERK 7902 17-DEC-80 800 7499 ALLEN SALESMAN 7698 20-FEB-81 1600
7521 WARD SALESMAN 7698 22-FEB-81 1250 7566 JONES MANAGER 7839 02-APR-81 2975
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 7698 BLAKE MANAGER 7839 01-MAY-81 2850
7782 CLARK MANAGER 7839 09-JUN-81 2450 7788 SCOTT ANALYST 7566 19-APR-87 3000
7839 KING PRESIDENT 17-NOV-81 5000 7844 TURNER SALESMAN 7698 08-SEP-81 1500
7876 ADAMS CLERK 7788 23-MAY-87 1100 7900 JAMES CLERK 7698 03-DEC-81 950
7902 FORD ANALYST 7566 03-DEC-81 3000 7934 MILLER CLERK 7782 23-JAN-82 1300

14 rows selected.

SQL> CREATE TABLE dummy_y as SELECT sal FROM emp WHERE sal<2000;

Table created.

SQL> CREATE TABLE dummy_z as SELECT sal FROM emp WHERE sal BETWEEN 2000 AND 3999;

Table created.

SQL> alter table p_emp exchange partition emp_p1 with table dummy_y;

Table altered.

SQL> alter table p_emp exchange partition emp_p2 with table dummy_z;

Table altered








Follow

Get every new post delivered to your Inbox.