SlideShare a Scribd company logo
Geliştiriciler için
Oracle 11g yeni Özellikler
PL/SQL 11g yeni özellik
Simple Integer data Type

•

The SIMPLE_INTEGER ;PLS_INTEGER bir alt türüdür ve aritmetik işlemleri çok
hızlandırmaktadır.

l_simple_integer

SIMPLE_INTEGER := 0;

l_simple_integer_incr SIMPLE_INTEGER := 1;
FOR i IN 1 .. l_loops LOOP
l_simple_integer := l_simple_integer + l_simple_integer_incr;
END LOOP;
PL/SQL 11g yeni özellik
Continue
CONTINUE komutu ile yeni bir iterasyon başlatılabilir veya CONTINUE WHEN ile belli durumlarda
iterasyona devam edebilirsiniz
DECLARE
l_number NUMBER := 0;
BEGIN
FOR i IN 1 .. 100 LOOP
CONTINUE WHEN MOD(i,2) = 0;
-- Do something here!
l_number := l_number + 1;
END LOOP;

PL/SQL 11g yeni özellik
Sequence kullanımı

•

PL/SQL içinde NEXTVAL and CURRVAL sözde komutları ile SELECT .. DUAL kullanmadan
Sequenceları kullanabilirsiniz.

CREATE SEQUENCE test1_seq START WITH 1000000;
FOR i IN 1 ..l_loops LOOP
l_value := test1_seq.NEXTVAL;
END LOOP;
PLSQL_OPTIMIZE_LEVEL = 0

Bu seviyede kod üzerinde hiç bir değişiklik yapılmaz . Oldukları gibi execute edilirler.

Kodu değiştirmez
DECLARE
L_START_TIME NUMBER;
L_END_TIME

NUMBER;

A

NUMBER;

B

NUMBER;

C

NUMBER;

BEGIN
L_START_TIME := DBMS_UTILITY.GET_TIME();
FOR I IN 1..1000000000 LOOP
A := 1;
B := 1;
C := A+1;
END LOOP;
L_END_TIME := DBMS_UTILITY.GET_TIME();
DBMS_OUTPUT.PUT_LINE('Execution time:'||TO_CHAR(L_END_TIME - L_START_TIME));
END;
/
Execution time:19294
PLSQL_OPTIMIZE_LEVEL = 1

Bazı optimizasyon yöntemleri kullanır. Kod içindeki gereksiz exception ve komutları
çalıştırmaz. Kodu çok fazla değiştirmez.
DECLARE
L_START_TIME NUMBER;
L_END_TIME

NUMBER;

A

NUMBER;

B

NUMBER;

C

NUMBER;

BEGIN
L_START_TIME := DBMS_UTILITY.GET_TIME();
FOR I IN 1..1000000000 LOOP
A := 1;
B := 1;
C := A+1;
END LOOP;
L_END_TIME := DBMS_UTILITY.GET_TIME();
DBMS_OUTPUT.PUT_LINE('Execution time:'||TO_CHAR(L_END_TIME - L_START_TIME));
END;
/
Execution time:7112
PLSQL_OPTIMIZE_LEVEL = 2

En yeni optimizasyon yöntemleri kullanır. Kod içindeki gereksiz exception ve komutları
çalıştırmaz. Kodu çok fazla değiştirir. Aşağıda loop’u direk kaldırır.

DECLARE
L_START_TIME NUMBER;
L_END_TIME

NUMBER;

A

NUMBER;

B

NUMBER;

C

NUMBER;

BEGIN
L_START_TIME := DBMS_UTILITY.GET_TIME();
FOR I IN 1..1000000000 LOOP
A := 1;
B := 1;
C := A+1;
END LOOP;
L_END_TIME := DBMS_UTILITY.GET_TIME();
DBMS_OUTPUT.PUT_LINE('Execution time:'||TO_CHAR(L_END_TIME - L_START_TIME));
Execution time:0

PL/SQL 11g yeni özellik
Subprogram inlining PLSQL_OPTIMIZE_LEVEL = 3

Subprogram inlining sayesinde subprogramlar , program içinde compile zamanında açılarak orjinal koda
eklenirler. Böylece programlar runtime’da daha hızlı çalışacaklardır

PLSQL_OPTIMIZE_LEVEL=3 ‘de otomatik olarak inline yapılır.
PLSQL_OPTIMIZE_LEVEL=2 ‘ de ise PRAGMA kullanılarak manuel olarak inline yapılabilir.
BEGIN
FOR i IN 1 ..l_loops LOOP
PRAGMA INLINE (add_numbers, 'YES');
l_return := add_numbers(1, i);
END LOOP;
END;
/
PL/SQL 11g yeni özellik
Native Compile işlemi


Native compile 11g ‘de çok kolaylaşmıştır. C compiler ve DBA ‘ler tarafından herhangi bir
manuel müdahale yapılmadan PL/SQL kodları SYSTEM tablespace içinde execute edilebilir
şekilde saklananabilmektedir.



Native Compile işlemi ile sadece PL/SQL komutları hızlanmakta ; SQL komutlarında herhangi bir
iyileşme olmamaktadır.



Çok fazla nümerik işlem yapan kodların Native compile yapılması tavsiye edilmektedir.



Sık sık compile gören ve içinde SQL cümlelleri olan kodlara native compile tavsiye
edilmemektedir.
Partitioning

Oracle 11g Aşağıdaki partitioning özellikleri ile nerdeyse sınısız bir şekilde partitioning yapılabilir
duruma gelinmiştir.
reference partitioning,
interval partitioning,
partitioning virtual columns,
extended composite
Extended Composite Partitioning
Oracle 9i’ de composite partitioning olarak sadece range-hash and range-list
partitioning yapabiliyorduk. Oracle 11g ile beraber aşağıdaki türde composite
partitionlar yaratabiliriz.
•

Range-range

•

Range-hash

•

Range-list

•

List-range

•

List-hash

•

List-list
Composite Partition Örnekleri
create table sales
(
sales_id
product_code
state_code

number,
number,
varchar2(2)

)
partition by list (product_code)
subpartition by list (state_code)
(
partition p101 values (101)
(
subpartition p101_ct values ('CT'),
subpartition p101_ny values ('NY'),
subpartition p101_def values (default)
),
partition p201 values (201)
(
subpartition p201_ct values ('CT'),
subpartition p201_ny values ('NY'),
subpartition p201_def values (default)
)
)

create table sales1
(
sales_id
product_code
state_code

number,
number,
varchar2(2)

)
partition by list (state_code)
subpartition by range (product_code)
(
partition CT values ('CT')
(
subpartition ct_100 values less than (101),
subpartition ct_200 values less than (201)
),
partition NY values ('NY')
(
subpartition NY_100 values less than (101),
subpartition NY_200 values less than (201)
)
)
PL/SQL 11g yeni özellik
READ ONLY tablolar

•

11g ile beraber READ ONLY tablolar tanımlanabilmektedir. Eski versiyonlarda bunu yapabilmek
için view veya Grant kullanılması gerekmekteydi.

ALTER TABLE table_name READ ONLY;
ALTER TABLE table_name READ WRITE;

PL/SQL 11g yeni özellik
Invisible Index

•

Invisible index ile bir tablonun indexi drop edilmeden; execution plan’larda ilgili index’in
kullanılmamasını sağlamış oluruz.

•

OPTIMIZER_USE_INVISIBLE_INDEXES parametresi ile yönetilirler.

CREATE INDEX index_name ON table_name(column_name) INVISIBLE;
ALTER INDEX index_name INVISIBLE;
ALTER INDEX index_name VISIBLE;
PL/SQL 11g yeni özellik
TEMP Tablespace

•

Global Temporary tablolarımızı ayrı bir TEMPORARY tablespacede yaratabiliriz.

create temporary tablespace etl_temp
tempfile ‘../etl_temp_01.dbf'
size 1G;
Tablespace created.
create global temporary table data_load (
input_line varchar2 (2000) )
on commit preserve rows
tablespace etl_temp;
Table created.
PL/SQL 11g yeni özellik
Virtual Kolon

•

Virtual Kolonlar üzerinde index tanımlıyabiliriz. Bu function based index ‘dir

•

Virtual Kolonlar üzerinde Primary Key tanımlıyabilir, Foreign Key olarak kullanabilirsiniz.

•

Virtual Kolon üzerinde partition tanımlıyabilirsiniz

•

Virtual kolon ‘ları sadece DML komutları ile insert veya update edemezsiniz. 

CREATE TABLE employees (
id

NUMBER,

first_name

VARCHAR2(10),

last_name

VARCHAR2(10),

salary

NUMBER(9,2),

comm1

NUMBER(3),

comm2

NUMBER(3),

salary1

AS (ROUND(salary*(1+comm1/100),2)),

salary2

NUMBER GENERATED ALWAYS AS (ROUND(salary*(1+comm2/100),2)) VIRTUAL,

CONSTRAINT employees_pk PRIMARY KEY (id) );
Create index v_salary2 on employees( salary2);
Compound Trigger
Kullanımım

Compound Trigger ilebirtabloyailişkinbirçokdeğişik trigger
ortakdeğişkenlerikullanabilir. Amaç BULK işlemlerde ;bir DML
işlemiilebirdenfazlakayıt update edildiğinde ; tekbir DML ‘in trigger
tarafındaçalıştırılmasınısağlamaktır.
CompundTrigger’da
Before Statement, After Statement , Before row ve After row kodlarıolur.
Tümbukodlarortakdeğişkenlerivedizilereerişirler.
Before row ve Update row kodları ;değişiklikleridiziiçine atar,
After ve Before Stamenetkodlarıise ; BULK dmlişlemleriniçalıştırılar.
Geliştiriciler için Oracle_Part_2
Geliştiriciler için Oracle_Part_2

More Related Content

Viewers also liked

Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden GateAnar Godjaev
 
Instance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını IncelemeInstance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını IncelemeAnar Godjaev
 
Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Anar Godjaev
 
Asm disk group migration from
Asm disk group migration from Asm disk group migration from
Asm disk group migration from Anar Godjaev
 
Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇Anar Godjaev
 
Conditional Control
Conditional ControlConditional Control
Conditional ControlAnar Godjaev
 

Viewers also liked (12)

Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden Gate
 
Instance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını IncelemeInstance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını Inceleme
 
11 g RAC -ASM
11 g RAC -ASM11 g RAC -ASM
11 g RAC -ASM
 
PL/SQL Blocks
PL/SQL BlocksPL/SQL Blocks
PL/SQL Blocks
 
Oracle SQL
Oracle SQLOracle SQL
Oracle SQL
 
Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇
 
Asm disk group migration from
Asm disk group migration from Asm disk group migration from
Asm disk group migration from
 
Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇
 
Tuning SGA
Tuning SGATuning SGA
Tuning SGA
 
Conditional Control
Conditional ControlConditional Control
Conditional Control
 
Contraints
ContraintsContraints
Contraints
 
Wait Interface
Wait InterfaceWait Interface
Wait Interface
 

Similar to Geliştiriciler için Oracle_Part_2

GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...
GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...
GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...Anar Godjaev
 
kullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlarkullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlaroktaygokgol
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02
Cihan Özhan
 
Assembly for Hackers
Assembly for HackersAssembly for Hackers
Assembly for Hackers
Kale Siber Akademi
 
Stored procedure
Stored procedureStored procedure
Stored procedureoktaygokgol
 
3. aşırı yükleme yaşam alanı - dinamik bellek kullanımı
3. aşırı yükleme   yaşam alanı - dinamik bellek kullanımı3. aşırı yükleme   yaşam alanı - dinamik bellek kullanımı
3. aşırı yükleme yaşam alanı - dinamik bellek kullanımı
karmuhtam
 
İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09
Cihan Özhan
 
progressokulu.com Advanced Business Language Slide 11
progressokulu.com Advanced Business Language Slide 11progressokulu.com Advanced Business Language Slide 11
progressokulu.com Advanced Business Language Slide 11kaan verdioglu
 

Similar to Geliştiriciler için Oracle_Part_2 (10)

GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...
GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...
GELIŞTIRICILER IÇIN ORACLE 11G’DE ÖLÇEKLENEBILIR KOD GELIŞTIRME & YENI ÖZELLI...
 
kullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlarkullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlar
 
İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02İleri Seviye T-SQL Programlama - Chapter 02
İleri Seviye T-SQL Programlama - Chapter 02
 
Assembly for Hackers
Assembly for HackersAssembly for Hackers
Assembly for Hackers
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
3. aşırı yükleme yaşam alanı - dinamik bellek kullanımı
3. aşırı yükleme   yaşam alanı - dinamik bellek kullanımı3. aşırı yükleme   yaşam alanı - dinamik bellek kullanımı
3. aşırı yükleme yaşam alanı - dinamik bellek kullanımı
 
Pivot Unpivot
Pivot UnpivotPivot Unpivot
Pivot Unpivot
 
İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09İleri Seviye T-SQL Programlama - Chapter 09
İleri Seviye T-SQL Programlama - Chapter 09
 
progressokulu.com Advanced Business Language Slide 11
progressokulu.com Advanced Business Language Slide 11progressokulu.com Advanced Business Language Slide 11
progressokulu.com Advanced Business Language Slide 11
 
hafta3
hafta3hafta3
hafta3
 

More from Anar Godjaev

Oracle GoldenGate
Oracle GoldenGateOracle GoldenGate
Oracle GoldenGate
Anar Godjaev
 
how to protect your sensitive data using oracle database vault
how to protect your sensitive data using oracle database vaulthow to protect your sensitive data using oracle database vault
how to protect your sensitive data using oracle database vaultAnar Godjaev
 
Database Vault / Verinin Güvenliği
Database Vault /  Verinin GüvenliğiDatabase Vault /  Verinin Güvenliği
Database Vault / Verinin GüvenliğiAnar Godjaev
 
Oracle 10g Database Server Kurulum
Oracle 10g Database Server KurulumOracle 10g Database Server Kurulum
Oracle 10g Database Server KurulumAnar Godjaev
 
Backup and Recovery
Backup and RecoveryBackup and Recovery
Backup and RecoveryAnar Godjaev
 
Oracle Managed Files
Oracle Managed FilesOracle Managed Files
Oracle Managed FilesAnar Godjaev
 
Recovery Manager (RMAN)
Recovery Manager (RMAN)Recovery Manager (RMAN)
Recovery Manager (RMAN)Anar Godjaev
 
Oracle Enterprise Linux 5
Oracle Enterprise Linux 5Oracle Enterprise Linux 5
Oracle Enterprise Linux 5Anar Godjaev
 
Oracle Database 11g R2 Installation
Oracle Database 11g R2 InstallationOracle Database 11g R2 Installation
Oracle Database 11g R2 InstallationAnar Godjaev
 

More from Anar Godjaev (16)

Oracle GoldenGate
Oracle GoldenGateOracle GoldenGate
Oracle GoldenGate
 
how to protect your sensitive data using oracle database vault
how to protect your sensitive data using oracle database vaulthow to protect your sensitive data using oracle database vault
how to protect your sensitive data using oracle database vault
 
Database Vault / Verinin Güvenliği
Database Vault /  Verinin GüvenliğiDatabase Vault /  Verinin Güvenliği
Database Vault / Verinin Güvenliği
 
Oracle 10g Database Server Kurulum
Oracle 10g Database Server KurulumOracle 10g Database Server Kurulum
Oracle 10g Database Server Kurulum
 
Parallel Server
Parallel ServerParallel Server
Parallel Server
 
Table Partitions
Table PartitionsTable Partitions
Table Partitions
 
Backup and Recovery
Backup and RecoveryBackup and Recovery
Backup and Recovery
 
Memory Management
Memory ManagementMemory Management
Memory Management
 
LogMiner
LogMinerLogMiner
LogMiner
 
Undo Management
Undo ManagementUndo Management
Undo Management
 
ASM
ASMASM
ASM
 
Oracle Managed Files
Oracle Managed FilesOracle Managed Files
Oracle Managed Files
 
Recovery Manager (RMAN)
Recovery Manager (RMAN)Recovery Manager (RMAN)
Recovery Manager (RMAN)
 
Oracle Enterprise Linux 5
Oracle Enterprise Linux 5Oracle Enterprise Linux 5
Oracle Enterprise Linux 5
 
Oracle Database 11g R2 Installation
Oracle Database 11g R2 InstallationOracle Database 11g R2 Installation
Oracle Database 11g R2 Installation
 
Change DB Name
Change DB NameChange DB Name
Change DB Name
 

Geliştiriciler için Oracle_Part_2

  • 2. PL/SQL 11g yeni özellik Simple Integer data Type • The SIMPLE_INTEGER ;PLS_INTEGER bir alt türüdür ve aritmetik işlemleri çok hızlandırmaktadır. l_simple_integer SIMPLE_INTEGER := 0; l_simple_integer_incr SIMPLE_INTEGER := 1; FOR i IN 1 .. l_loops LOOP l_simple_integer := l_simple_integer + l_simple_integer_incr; END LOOP;
  • 3. PL/SQL 11g yeni özellik Continue CONTINUE komutu ile yeni bir iterasyon başlatılabilir veya CONTINUE WHEN ile belli durumlarda iterasyona devam edebilirsiniz DECLARE l_number NUMBER := 0; BEGIN FOR i IN 1 .. 100 LOOP CONTINUE WHEN MOD(i,2) = 0; -- Do something here! l_number := l_number + 1; END LOOP; PL/SQL 11g yeni özellik Sequence kullanımı • PL/SQL içinde NEXTVAL and CURRVAL sözde komutları ile SELECT .. DUAL kullanmadan Sequenceları kullanabilirsiniz. CREATE SEQUENCE test1_seq START WITH 1000000; FOR i IN 1 ..l_loops LOOP l_value := test1_seq.NEXTVAL; END LOOP;
  • 4. PLSQL_OPTIMIZE_LEVEL = 0 Bu seviyede kod üzerinde hiç bir değişiklik yapılmaz . Oldukları gibi execute edilirler. Kodu değiştirmez DECLARE L_START_TIME NUMBER; L_END_TIME NUMBER; A NUMBER; B NUMBER; C NUMBER; BEGIN L_START_TIME := DBMS_UTILITY.GET_TIME(); FOR I IN 1..1000000000 LOOP A := 1; B := 1; C := A+1; END LOOP; L_END_TIME := DBMS_UTILITY.GET_TIME(); DBMS_OUTPUT.PUT_LINE('Execution time:'||TO_CHAR(L_END_TIME - L_START_TIME)); END; / Execution time:19294
  • 5. PLSQL_OPTIMIZE_LEVEL = 1 Bazı optimizasyon yöntemleri kullanır. Kod içindeki gereksiz exception ve komutları çalıştırmaz. Kodu çok fazla değiştirmez. DECLARE L_START_TIME NUMBER; L_END_TIME NUMBER; A NUMBER; B NUMBER; C NUMBER; BEGIN L_START_TIME := DBMS_UTILITY.GET_TIME(); FOR I IN 1..1000000000 LOOP A := 1; B := 1; C := A+1; END LOOP; L_END_TIME := DBMS_UTILITY.GET_TIME(); DBMS_OUTPUT.PUT_LINE('Execution time:'||TO_CHAR(L_END_TIME - L_START_TIME)); END; / Execution time:7112
  • 6. PLSQL_OPTIMIZE_LEVEL = 2 En yeni optimizasyon yöntemleri kullanır. Kod içindeki gereksiz exception ve komutları çalıştırmaz. Kodu çok fazla değiştirir. Aşağıda loop’u direk kaldırır. DECLARE L_START_TIME NUMBER; L_END_TIME NUMBER; A NUMBER; B NUMBER; C NUMBER; BEGIN L_START_TIME := DBMS_UTILITY.GET_TIME(); FOR I IN 1..1000000000 LOOP A := 1; B := 1; C := A+1;
  • 7. END LOOP; L_END_TIME := DBMS_UTILITY.GET_TIME(); DBMS_OUTPUT.PUT_LINE('Execution time:'||TO_CHAR(L_END_TIME - L_START_TIME)); Execution time:0 PL/SQL 11g yeni özellik Subprogram inlining PLSQL_OPTIMIZE_LEVEL = 3 Subprogram inlining sayesinde subprogramlar , program içinde compile zamanında açılarak orjinal koda eklenirler. Böylece programlar runtime’da daha hızlı çalışacaklardır PLSQL_OPTIMIZE_LEVEL=3 ‘de otomatik olarak inline yapılır. PLSQL_OPTIMIZE_LEVEL=2 ‘ de ise PRAGMA kullanılarak manuel olarak inline yapılabilir. BEGIN FOR i IN 1 ..l_loops LOOP PRAGMA INLINE (add_numbers, 'YES'); l_return := add_numbers(1, i); END LOOP; END; /
  • 8. PL/SQL 11g yeni özellik Native Compile işlemi  Native compile 11g ‘de çok kolaylaşmıştır. C compiler ve DBA ‘ler tarafından herhangi bir manuel müdahale yapılmadan PL/SQL kodları SYSTEM tablespace içinde execute edilebilir şekilde saklananabilmektedir.  Native Compile işlemi ile sadece PL/SQL komutları hızlanmakta ; SQL komutlarında herhangi bir iyileşme olmamaktadır.  Çok fazla nümerik işlem yapan kodların Native compile yapılması tavsiye edilmektedir.  Sık sık compile gören ve içinde SQL cümlelleri olan kodlara native compile tavsiye edilmemektedir. Partitioning Oracle 11g Aşağıdaki partitioning özellikleri ile nerdeyse sınısız bir şekilde partitioning yapılabilir duruma gelinmiştir. reference partitioning, interval partitioning, partitioning virtual columns, extended composite Extended Composite Partitioning Oracle 9i’ de composite partitioning olarak sadece range-hash and range-list partitioning yapabiliyorduk. Oracle 11g ile beraber aşağıdaki türde composite partitionlar yaratabiliriz. • Range-range • Range-hash • Range-list • List-range • List-hash • List-list
  • 9. Composite Partition Örnekleri create table sales ( sales_id product_code state_code number, number, varchar2(2) ) partition by list (product_code) subpartition by list (state_code) ( partition p101 values (101) ( subpartition p101_ct values ('CT'), subpartition p101_ny values ('NY'), subpartition p101_def values (default) ), partition p201 values (201) ( subpartition p201_ct values ('CT'), subpartition p201_ny values ('NY'),
  • 10. subpartition p201_def values (default) ) ) create table sales1 ( sales_id product_code state_code number, number, varchar2(2) ) partition by list (state_code) subpartition by range (product_code) ( partition CT values ('CT') ( subpartition ct_100 values less than (101), subpartition ct_200 values less than (201) ), partition NY values ('NY') ( subpartition NY_100 values less than (101), subpartition NY_200 values less than (201) ) )
  • 11. PL/SQL 11g yeni özellik READ ONLY tablolar • 11g ile beraber READ ONLY tablolar tanımlanabilmektedir. Eski versiyonlarda bunu yapabilmek için view veya Grant kullanılması gerekmekteydi. ALTER TABLE table_name READ ONLY; ALTER TABLE table_name READ WRITE; PL/SQL 11g yeni özellik Invisible Index • Invisible index ile bir tablonun indexi drop edilmeden; execution plan’larda ilgili index’in kullanılmamasını sağlamış oluruz. • OPTIMIZER_USE_INVISIBLE_INDEXES parametresi ile yönetilirler. CREATE INDEX index_name ON table_name(column_name) INVISIBLE; ALTER INDEX index_name INVISIBLE; ALTER INDEX index_name VISIBLE;
  • 12. PL/SQL 11g yeni özellik TEMP Tablespace • Global Temporary tablolarımızı ayrı bir TEMPORARY tablespacede yaratabiliriz. create temporary tablespace etl_temp tempfile ‘../etl_temp_01.dbf' size 1G; Tablespace created. create global temporary table data_load ( input_line varchar2 (2000) ) on commit preserve rows tablespace etl_temp; Table created.
  • 13. PL/SQL 11g yeni özellik Virtual Kolon • Virtual Kolonlar üzerinde index tanımlıyabiliriz. Bu function based index ‘dir • Virtual Kolonlar üzerinde Primary Key tanımlıyabilir, Foreign Key olarak kullanabilirsiniz. • Virtual Kolon üzerinde partition tanımlıyabilirsiniz • Virtual kolon ‘ları sadece DML komutları ile insert veya update edemezsiniz.  CREATE TABLE employees ( id NUMBER, first_name VARCHAR2(10), last_name VARCHAR2(10), salary NUMBER(9,2), comm1 NUMBER(3), comm2 NUMBER(3), salary1 AS (ROUND(salary*(1+comm1/100),2)), salary2 NUMBER GENERATED ALWAYS AS (ROUND(salary*(1+comm2/100),2)) VIRTUAL, CONSTRAINT employees_pk PRIMARY KEY (id) ); Create index v_salary2 on employees( salary2);
  • 14. Compound Trigger Kullanımım Compound Trigger ilebirtabloyailişkinbirçokdeğişik trigger ortakdeğişkenlerikullanabilir. Amaç BULK işlemlerde ;bir DML işlemiilebirdenfazlakayıt update edildiğinde ; tekbir DML ‘in trigger tarafındaçalıştırılmasınısağlamaktır. CompundTrigger’da Before Statement, After Statement , Before row ve After row kodlarıolur. Tümbukodlarortakdeğişkenlerivedizilereerişirler. Before row ve Update row kodları ;değişiklikleridiziiçine atar, After ve Before Stamenetkodlarıise ; BULK dmlişlemleriniçalıştırılar.