Sunday, June 14, 2009

PARTITION SUBPARTITION BÖLÜM 2

ORACLE 11g ile birlikte partition methotlarına yenileri eklendi. Bunlar
  • Range-Hash (available since 8i)
  • Range-List (available since 9i)
  • Range-Range
  • List-Range
  • List-Hash
  • List-List
Şu anda 11g makinamda kurulu olmadığı için bunlar için örnek kod yazamayacağim ama aşığıdaki sitede çok güzel örnekler mevcut.
http://www.oracle-base.com/articles/11g/PartitioningEnhancements_11gR1.php#virtual_column_based_partitioning
COMPRESS PARTITION
partition bazılı sıkıştırma (compress) işlemi yapabiliriz. Bir tabloyu compress yaratabiliriz ama bu demek değildir ki bütün partitionları compress olacak. Kendi belirlediğimiz herhangi birtanesi compress yapabiliriz.

--partition truncate etmek icin
alter table range_part truncate partition part_02


CREATE TABLE range_compress_part

( owner VARCHAR2(30 BYTE) NOT NULL,

object_name VARCHAR2(30 BYTE) NOT NULL,

subobject_name VARCHAR2(30 BYTE),

object_id NUMBER NOT NULL,

data_object_id NUMBER,

object_type VARCHAR2(19 BYTE),

created DATE NOT NULL,

last_ddl_time DATE NOT NULL,

TIMESTAMP VARCHAR2(19 BYTE),

status VARCHAR2(7 BYTE),

TEMPORARY VARCHAR2(1 BYTE),

GENERATED VARCHAR2(1 BYTE),

secondary VARCHAR2(1 BYTE)

)

compress

PARTITION BY RANGE (object_id)

(PARTITION part_01 VALUES LESS THAN (20000),

--kendi belirlediğim bir partition'u nocompress moda çekiyorum

PARTITION part_02 VALUES LESS THAN (40000) nocompress tablespace users ,

pARTITION part_03 VALUES LESS THAN (60000) tablespace example,

PARTITION part_04 VALUES LESS THAN (MAXVALUE) )

--yaratmış olduğumuz partitionlar ile ilgili ayrıntılı bilgi için aşağıdaki sorgu işimizi görecektir.

--burada yaratmış olduğumuz partitionların ayrıntılı bilgilerini alırız.

select table_name,partition_name,high_value,tablespace_name,compression from user_tab_partitions where lower(table_name)='range_part'

--kullancının sahip olduğu tablespaceleri görerek bunlardan birsisini seçebiliriz.

select * from user_tablespaces

--move partition

select * from user_tab_partitions where table_name='RANGE_PART'

alter table range_part move partition part_01 tablespace example

--move subpartition

select * from user_tab_subpartitions where table_name='RANGE_HASH_PART'

ALTER TABLE RANGE_HASH_PART move subPARTITION PART_004_SP3 tablespace example

--subpartition'ların adlarını ve tablespacelerini değiştirmek için için.

alter table RANGE_HASH_PART

set subpartition template (

subpartition sp1 tablespace users,

subpartition sp2 tablespace users,

subpartition sp3 tablespace users,

subpartition sp4 tablespace users

)

--add partition (partition eklemek için)

select * from user_tab_partitions where table_name='RANGE_PART'

--maxvalue oldugu için son partitionu silmek gerekiyor.Bu sebebten dolayı silip yeniden yaratıyoruz.

alter table range_part drop partition part_04

alter table range_part add partition part_04 values less than (70000)

--partition isimlerini değiştirmek için aşağıdaki komur işinizi görecektir.

alter table range_part rename partition part_01 to ilk_part

select * from user_tab_partitions where table_name='RANGE_PART'

No comments: