SlideShare a Scribd company logo
Oracle’da Transaction
Yönetimi
Emrah METE
TURKCELL TEKNOLOJİ
TROUG Database Developement SIG Etkinliği
5 Temmuz 2012
http://emrahmete.wordpress.com/about/
Marmara Üniversitesi - Bilgisayar Teknolojisi ve
Programlama
Yıldız Teknik Üniversitesi - Bilgisayar Mühendisliği
Turkcell Teknoloji - Yazılım Geliştirme Mühendisi
emrahmete.wordpress.com
TROUG - Yönetim Kurulu Üyeliği
Emrah METE
Yahoo OracleTurk Grubu Moderatör
Ajanda
• Transaction Kavramı
• Transaction Özellikleri
• Transaction Control
• Concurrency ve Consistency
• Redo ve Undo Üretimi
• Transaction Locks
• Autonomous Transaction
Transactions (ACID)
• Atomicity: Transaction’lar atomiktir, parçalanamazlar.
Ya tamamı çalışır yada hiç çalışmaz.
• Consistency: Transaction’lar database’i tutarlı bir
durumdan diğer bir tutarlı duruma taşır.
• Isolation: Transaction commit ile sonlanana kadar
yapılan değişiklikler diğer sessionlarda görünmez.
• Durability: Transaction commit ile sonlanmış ise artık
yapılan tüm değişiklikler kalıcı hale gelmiştir.
Transactions
Begining Of a Transaction
• Assigns UNDO DATA Segment
• Allocating UNDO SEGMENT and UNDO
Segment Table Slot
• Generating Transaction ID (XID)
XIDUSN Segment number
XIDSLOT Slot number
XIDSQN Sequence number
Example:0002.028.000004DA
• SELECT XID FROM v$transaction
Transaction Control Statements
End Of Transactions
• COMMIT
• ROLLBACK
• ROLLBACK TO SAVEPOINT
• SET TRANSACTION
Autonomous Transactions
Distributed Transactions
Two Phase COMMIT
İstemci
Uzaktaki sunucu 2
Uzaktaki sunucu 1
Ana Oracle
Veritabanı
COMMIT;
?
?
Onay
Onay
Dağıtık işlem başarı ile tamamlandı.
Transaction’ı başlatan node hata alsaydı?
Concurrency and Locks
• Oracle, birden çok user’ın eş zamanlı olarak veri erişimini kilitler
kullanarak yönetir.
• DML cümleleri row level kilit kullanırken, DDL kilitleri şema
nesnelerini kilitleyebilir.
• Yazma yönünde eriştiğimiz bilgi satır seviyesinde kilit alır ve başka
bir user o kilit serbest bırakılana kadar kilitli satıra yazma erişimi
sağlayamaz.
• Kilit sayısı arttıkça concurrency düşer. Bu bağlamda transaction
yönetimi oldukça önemlidir.
• Oracle otomatik olarak kilit seviyesini en düşük seviyede tutar.
• Oracle lock eskalasyonu hiç bir zaman yapmaz. Çünkü lock
eskalasyonu olası deadlock problemlerine sebiyet verebilir.
• Oracle concurrency seviyesini arttırmak için kilit dönüştürme
işlemini gerçekleştirebilir.
REDO and UNDO
Log Buffer Undo Block
UPDATE score
SET runs = 75
WHERE team = 'AUS';
Data Block
Undo Header
UPDATE score
SET wickets = 7
WHERE team = 'AUS';
UPDATE score
SET runs = 77, wickets = 8
WHERE team = 'AUS';
block 42 slot 0
col0: ENG
col1: 841
col2: 3
block 42 slot 1
col0: AUS
col1: 74
col2: 6
slot 22: 10
COMMIT;slot 22: 105.2 slot 22: 10
block 42 slot 1
col1: 74
5.1
block 42 slot 1
col1: 74
5.1
block 42 slot 1
col1: 74
5.1
block 42 slot 1
col1: 75
11.5
col1: 75
col1: 75
block 42 slot 1
col2: 6
5.1
block 42 slot 1
col2: 6
5.1
block 42 slot 1
col2: 6
5.1
block 42 slot 1
col2: 7
11.5
col2: 7
col2: 7
block 42 slot 2
col2: 75
col3: 7
block 42 slot 1
col1: 75
col2: 7
5.1
block 42 slot 2
col2: 75
col3: 7
block 42 slot 1
col1: 75
col2: 7
5.1 block 42 slot 2
col2: 75
col3: 7
block 42 slot 1
col1: 75
col2: 7
5.1
block 42 slot 1
col1: 77
col2: 8
11.5 col1: 77
col2: 8
col1: 77
col2: 8
slot 22: 95.4 slot 22: 9
slot 22: 9
ROLLBACK
Undo Block
Data Block
Undo Header
UPDATE score
SET wickets = 9
WHERE team = 'AUS';
UPDATE score
SET wickets = 10
WHERE team = 'AUS';
block 42 slot 0
col0: ENG
col1: 841
col2: 3
block 42 slot 1
col0: AUS
col1: 77
col2: 8
slot 22: 10
ROLLBACK;slot 22: 105.2 slot 22: 10
block 42 slot 1
col2: 8
5.1
block 42 slot 1
col2: 9
11.5
col2: 9
block 42 slot 1
col2: 9
5.1
block 42 slot 1
col2: 10
11.5
slot 22: 95.4
slot 22: 105.6
slot 22: 105.11
block 42 slot 1
col2: 9
11.5
block 42 slot 1
col2: 8
11.5
block 42 slot 1
col2: 8
5.1
col2: 9
block 42 slot 1
col2: 9
5.1 block 42 slot 2
col3: 8
5.1
block 42 slot 2
col3: 8
5.1
block 42 slot 2
col3: 9
5.1
block 42 slot 2
col3: 9
5.1
col2: 10
col2: 10
col2: 9
col2: 9
slot 22: 10
slot 22: 10
col2: 8
col2: 8
slot 22: 10
slot 22: 10
slot 22: 9
slot 22: 9
Log Buffer
Online Redo And Archived Redo
1a 2a 3a
1b 2b 3b
ARCH
X:/
Y:/
Z:/
LGWR LGWR
LGWR
ARC
ARC
ARC
Log Buffer
LGWR
How can I measure produced Redo
Size?
• Bir tabloya INSERT – UPDATE – DELETE işlemleri
gönderek COMMIT veya ROLLBACK çalıştırmadan
REDO üretimini bu basit görüntü yardımı ile
ölçebiliriz.
• CREATE OR REPLACE VIEW redo_size AS
SELECT value
FROM v$mystat ms, v$statname sn
WHERE ms.statistic# = sn.statistic# AND
sn.name = 'redo size';
Redo Üretimi Azaltılabilir mi?
Oracle veritabanında TEMPORARY TABLE seçeneğini kullanarak REDO
üretimini kısıtlayabilirsiniz, UNDO üretimi ROLLBACK edebilmek için yine
yaratılacaktır. *
Oracle veritabanında sadece bazı özel işlemler NOLOGGING seçeneği ile
yapılabilinir. *
Index creations and ALTERs (rebuilds)
Bulk INSERTs using a ‘direct path insert’ via the /*+APPEND */ hint
LOB operation (updates to large objects do not have to be logged
Table creations via the CREATE TABLE AS SELECT
Various ALTER TABLE operations such as MOVE and partition SPLIT
TRUNCATE (but it does not need a NOLOGGING clause, as it is always in
NOLOGGING mode)
COMMIT
• Generating System Change Number(SCN)
• All changes in the transactions permanent
• Erases all savepoints and Relaeses All Locks
• LGWR process writes remaining REDO into Redo
Log Buffer to Online Redo Log and Writes SCN
Online Redo Log
• Optimistic Approach/Low Cost
# of rows
inserted
Time to INSERT (secs) Time to COMMIT (secs) Redo Generated (bytes)
1 .01 .00 496
10 .01 .00 4476
100 .01 .00 26664
1000 .03 .00 266628
100000 3.35 .00 26520524
ROLLBACK
• Undoes all changes from transaction Undo
segments
• Release All Locks held by transaction
• Erase All Savepoints
• Optimistic Approach/High Cost
# of rows
inserted
Time to INSERT (secs) Time to ROLLBACK (secs) Redo Generated (bytes)
9 .06 .02 1,648
99 .04 .00 12,728
999 .04 .01 122,852
9,999 .94 .08 1,170,112
99,999 8.08 4.81 11,842,168
Recommendation
• Bitmap Index Kullanımı?
• Redo Üretimini Azaltmak?
• Prosedür/Fonksyon Yazarken nasıl
davranmalıyız?
• JDBC(AutoCommit)
Kaynaklar
• «Expert, Oracle Database Architecture
11g,10g,9i» Tom KYTE (2010)
• tahiti.oracle.com
• Oracle 10g Release 2 New Features Guide
• Oracle 10 Release 2 Concept Guide
• http://tonguc.wordpress.com/
• http://www.juliandyke.com/
Sorular?/Yorumlar
Emrah METE
Turkcell Teknoloji
emrahmete@gmail.com
emrahmete@wordpress.com
Teşekkürler
Emrah METE
Turkcell Teknoloji
emrahmete@gmail.com
emrahmete@wordpress.com

More Related Content

PPTX
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
PPTX
Oracle 12c Database In-Memory
PPTX
Oracle 12c Database In Memory DBA SIG
PPT
Solaris Sparc Sunucularda WebLogic Performansı
PDF
Oracle veritabanı yonetiminde onemli teknikler
PPTX
Opti̇mi̇zi̇ng Data Access
PPTX
Analytical Functions for DWH
PPTX
Useful Features of Oracle SQL Developer
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
Oracle 12c Database In-Memory
Oracle 12c Database In Memory DBA SIG
Solaris Sparc Sunucularda WebLogic Performansı
Oracle veritabanı yonetiminde onemli teknikler
Opti̇mi̇zi̇ng Data Access
Analytical Functions for DWH
Useful Features of Oracle SQL Developer

Similar to Oracle'da Transaction Yönetimi (20)

PPTX
Expert one-on-one Oracle / Redo ve Rollback
PPT
Veri Tabanı: SQL Gelişmiş Sorgular (Hafta 3)
PPTX
Veritabani Programlama - Oracle I.Egitim - SQL Komutlari
PDF
Sql cizimi
PPT
Veri Tabani: SQL'e Giriş (Hafta 2)
PPTX
Veri tabaniprogramlama 12.10.2012
DOCX
Redologlar ve Yöneti̇mi̇
PDF
Sql egitimi-basaksehir
DOC
DATABASEI ARCHIVE MODA ALMA
PDF
Sql proje
PPT
Veritabanı Sunusu - 1
PDF
Sql teknigi
PDF
Sql cevaplari
PDF
Sql sorgu işlemi (4)
PDF
Sql gorsel-egitim-seti
PDF
Sql projeleri
PDF
Sql hocasi
PDF
Sql dokumani
DOC
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
PDF
Sql sorulari
Expert one-on-one Oracle / Redo ve Rollback
Veri Tabanı: SQL Gelişmiş Sorgular (Hafta 3)
Veritabani Programlama - Oracle I.Egitim - SQL Komutlari
Sql cizimi
Veri Tabani: SQL'e Giriş (Hafta 2)
Veri tabaniprogramlama 12.10.2012
Redologlar ve Yöneti̇mi̇
Sql egitimi-basaksehir
DATABASEI ARCHIVE MODA ALMA
Sql proje
Veritabanı Sunusu - 1
Sql teknigi
Sql cevaplari
Sql sorgu işlemi (4)
Sql gorsel-egitim-seti
Sql projeleri
Sql hocasi
Sql dokumani
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Sql sorulari
Ad

Oracle'da Transaction Yönetimi

  • 1. Oracle’da Transaction Yönetimi Emrah METE TURKCELL TEKNOLOJİ TROUG Database Developement SIG Etkinliği 5 Temmuz 2012
  • 2. http://emrahmete.wordpress.com/about/ Marmara Üniversitesi - Bilgisayar Teknolojisi ve Programlama Yıldız Teknik Üniversitesi - Bilgisayar Mühendisliği Turkcell Teknoloji - Yazılım Geliştirme Mühendisi emrahmete.wordpress.com TROUG - Yönetim Kurulu Üyeliği Emrah METE Yahoo OracleTurk Grubu Moderatör
  • 3. Ajanda • Transaction Kavramı • Transaction Özellikleri • Transaction Control • Concurrency ve Consistency • Redo ve Undo Üretimi • Transaction Locks • Autonomous Transaction
  • 4. Transactions (ACID) • Atomicity: Transaction’lar atomiktir, parçalanamazlar. Ya tamamı çalışır yada hiç çalışmaz. • Consistency: Transaction’lar database’i tutarlı bir durumdan diğer bir tutarlı duruma taşır. • Isolation: Transaction commit ile sonlanana kadar yapılan değişiklikler diğer sessionlarda görünmez. • Durability: Transaction commit ile sonlanmış ise artık yapılan tüm değişiklikler kalıcı hale gelmiştir.
  • 6. Begining Of a Transaction • Assigns UNDO DATA Segment • Allocating UNDO SEGMENT and UNDO Segment Table Slot • Generating Transaction ID (XID) XIDUSN Segment number XIDSLOT Slot number XIDSQN Sequence number Example:0002.028.000004DA • SELECT XID FROM v$transaction
  • 7. Transaction Control Statements End Of Transactions • COMMIT • ROLLBACK • ROLLBACK TO SAVEPOINT • SET TRANSACTION
  • 9. Distributed Transactions Two Phase COMMIT İstemci Uzaktaki sunucu 2 Uzaktaki sunucu 1 Ana Oracle Veritabanı COMMIT; ? ? Onay Onay Dağıtık işlem başarı ile tamamlandı. Transaction’ı başlatan node hata alsaydı?
  • 10. Concurrency and Locks • Oracle, birden çok user’ın eş zamanlı olarak veri erişimini kilitler kullanarak yönetir. • DML cümleleri row level kilit kullanırken, DDL kilitleri şema nesnelerini kilitleyebilir. • Yazma yönünde eriştiğimiz bilgi satır seviyesinde kilit alır ve başka bir user o kilit serbest bırakılana kadar kilitli satıra yazma erişimi sağlayamaz. • Kilit sayısı arttıkça concurrency düşer. Bu bağlamda transaction yönetimi oldukça önemlidir. • Oracle otomatik olarak kilit seviyesini en düşük seviyede tutar. • Oracle lock eskalasyonu hiç bir zaman yapmaz. Çünkü lock eskalasyonu olası deadlock problemlerine sebiyet verebilir. • Oracle concurrency seviyesini arttırmak için kilit dönüştürme işlemini gerçekleştirebilir.
  • 11. REDO and UNDO Log Buffer Undo Block UPDATE score SET runs = 75 WHERE team = 'AUS'; Data Block Undo Header UPDATE score SET wickets = 7 WHERE team = 'AUS'; UPDATE score SET runs = 77, wickets = 8 WHERE team = 'AUS'; block 42 slot 0 col0: ENG col1: 841 col2: 3 block 42 slot 1 col0: AUS col1: 74 col2: 6 slot 22: 10 COMMIT;slot 22: 105.2 slot 22: 10 block 42 slot 1 col1: 74 5.1 block 42 slot 1 col1: 74 5.1 block 42 slot 1 col1: 74 5.1 block 42 slot 1 col1: 75 11.5 col1: 75 col1: 75 block 42 slot 1 col2: 6 5.1 block 42 slot 1 col2: 6 5.1 block 42 slot 1 col2: 6 5.1 block 42 slot 1 col2: 7 11.5 col2: 7 col2: 7 block 42 slot 2 col2: 75 col3: 7 block 42 slot 1 col1: 75 col2: 7 5.1 block 42 slot 2 col2: 75 col3: 7 block 42 slot 1 col1: 75 col2: 7 5.1 block 42 slot 2 col2: 75 col3: 7 block 42 slot 1 col1: 75 col2: 7 5.1 block 42 slot 1 col1: 77 col2: 8 11.5 col1: 77 col2: 8 col1: 77 col2: 8 slot 22: 95.4 slot 22: 9 slot 22: 9
  • 12. ROLLBACK Undo Block Data Block Undo Header UPDATE score SET wickets = 9 WHERE team = 'AUS'; UPDATE score SET wickets = 10 WHERE team = 'AUS'; block 42 slot 0 col0: ENG col1: 841 col2: 3 block 42 slot 1 col0: AUS col1: 77 col2: 8 slot 22: 10 ROLLBACK;slot 22: 105.2 slot 22: 10 block 42 slot 1 col2: 8 5.1 block 42 slot 1 col2: 9 11.5 col2: 9 block 42 slot 1 col2: 9 5.1 block 42 slot 1 col2: 10 11.5 slot 22: 95.4 slot 22: 105.6 slot 22: 105.11 block 42 slot 1 col2: 9 11.5 block 42 slot 1 col2: 8 11.5 block 42 slot 1 col2: 8 5.1 col2: 9 block 42 slot 1 col2: 9 5.1 block 42 slot 2 col3: 8 5.1 block 42 slot 2 col3: 8 5.1 block 42 slot 2 col3: 9 5.1 block 42 slot 2 col3: 9 5.1 col2: 10 col2: 10 col2: 9 col2: 9 slot 22: 10 slot 22: 10 col2: 8 col2: 8 slot 22: 10 slot 22: 10 slot 22: 9 slot 22: 9 Log Buffer
  • 13. Online Redo And Archived Redo 1a 2a 3a 1b 2b 3b ARCH X:/ Y:/ Z:/ LGWR LGWR LGWR ARC ARC ARC Log Buffer LGWR
  • 14. How can I measure produced Redo Size? • Bir tabloya INSERT – UPDATE – DELETE işlemleri gönderek COMMIT veya ROLLBACK çalıştırmadan REDO üretimini bu basit görüntü yardımı ile ölçebiliriz. • CREATE OR REPLACE VIEW redo_size AS SELECT value FROM v$mystat ms, v$statname sn WHERE ms.statistic# = sn.statistic# AND sn.name = 'redo size';
  • 15. Redo Üretimi Azaltılabilir mi? Oracle veritabanında TEMPORARY TABLE seçeneğini kullanarak REDO üretimini kısıtlayabilirsiniz, UNDO üretimi ROLLBACK edebilmek için yine yaratılacaktır. * Oracle veritabanında sadece bazı özel işlemler NOLOGGING seçeneği ile yapılabilinir. * Index creations and ALTERs (rebuilds) Bulk INSERTs using a ‘direct path insert’ via the /*+APPEND */ hint LOB operation (updates to large objects do not have to be logged Table creations via the CREATE TABLE AS SELECT Various ALTER TABLE operations such as MOVE and partition SPLIT TRUNCATE (but it does not need a NOLOGGING clause, as it is always in NOLOGGING mode)
  • 16. COMMIT • Generating System Change Number(SCN) • All changes in the transactions permanent • Erases all savepoints and Relaeses All Locks • LGWR process writes remaining REDO into Redo Log Buffer to Online Redo Log and Writes SCN Online Redo Log • Optimistic Approach/Low Cost # of rows inserted Time to INSERT (secs) Time to COMMIT (secs) Redo Generated (bytes) 1 .01 .00 496 10 .01 .00 4476 100 .01 .00 26664 1000 .03 .00 266628 100000 3.35 .00 26520524
  • 17. ROLLBACK • Undoes all changes from transaction Undo segments • Release All Locks held by transaction • Erase All Savepoints • Optimistic Approach/High Cost # of rows inserted Time to INSERT (secs) Time to ROLLBACK (secs) Redo Generated (bytes) 9 .06 .02 1,648 99 .04 .00 12,728 999 .04 .01 122,852 9,999 .94 .08 1,170,112 99,999 8.08 4.81 11,842,168
  • 18. Recommendation • Bitmap Index Kullanımı? • Redo Üretimini Azaltmak? • Prosedür/Fonksyon Yazarken nasıl davranmalıyız? • JDBC(AutoCommit)
  • 19. Kaynaklar • «Expert, Oracle Database Architecture 11g,10g,9i» Tom KYTE (2010) • tahiti.oracle.com • Oracle 10g Release 2 New Features Guide • Oracle 10 Release 2 Concept Guide • http://tonguc.wordpress.com/ • http://www.juliandyke.com/

Editor's Notes

  • #5: https://emrahmete.wordpress.com/2012/05/26/oracle-transactions-1/ https://emrahmete.wordpress.com/2012/05/26/oracle-transactions-2/ - Statement Level Atomicity - Procedural Level Atomicty - Transaction Level Atomicty DDL Atomicity DDL and Atomicity DDL cümlecikleri otomatik olarak, çalıştıktan önce ve sonra sanki commit komutu verilimiş gibi çalışmaktadır. Yazdığımız PL/SQL kod bloklarında bu ayrıntının unutulmaması gerekmektedir. Aksi takdirde çalıştırdığımız DDL’er auto commit olduğundan dolayı transaction mantığımızı kırabilir ve db’nin atomicity ile bize sunduğu consistent yapıyı bozmamıza sebeiyet verebilir.
  • #7: Bir transactiom DML, DDL yada SET TRANSACTION söz deyimi ile başlatılabilir.
  • #8: COMMIT: Çalışmasını dışardan vereceğimiz komut ile tetiklebilmek için 2 farklı komut çalıştırabiliriz. Bunlar COMMIT ve COMMIT WORK’tür. Commit transaction’ı sonlandırarak tüm yapılan değişikliklerin kalıcı olmasını sağlamaktadır. Bu sayede yapılan tüm değişiklikler tüm sessionlar tarafından görünür olabilecektir. DDL Cümleleri. ROLLBACK: Çalışmasını dışardan vereceğimiz komut ile tetiklebilmek için 2 farklı komut çalıştırabiliriz. Bunlar ROLLBACK ve ;ROLLBACK WORK’tür. Bu komutda transaction’ı sonlandırır ancak yapılan değişiklikleri bir önceki tutarlı duruma geri alır. Database transaction başlamadan hemen önceki durumuna geri döner. ROLLBACK segmentler okunarak data eski haline geri getirilir. SAVEPOINT: Save point transaction için check point noktaları oluşturmamıza yarar. Bir transaction içinde birden fazla savepoint noktası oluşturabilmekteyiz. ROLLBACK TO SAVEPOINT: Savepoint komutu ile beraber kullanılmaktadır. Bu komut ile beraber transaction savepoint ile belirtilen noktaya kadar geri sardırılır ve o noktadan sonra yapan değişiklikler geri alınır. Ör: INSERT INTO x(cola) VALUES (y); SAVEPOINT a; UPDATE x SET cola = 5; ROLLBACK WORK TO a; COMMIT; burada en son commit çalıştırıldıktan sonra sistem sadece ilk insert cümlesini kalıcı olarak saklıyacaktır. SET TRANSACTION: Bu komut transaction’ın sahip olduğu isolation seviyesi, read only veya read write özelliklerin set edilmesine olanak sağlayan bir komuttur. Bu komut aurıca manual undo management yapılırken transaction’ı bilgilendirme amaçlıda kullanılabilmektedir. Bu komutlardan en sık kullanılanları COMMIT ve ROLLBACK’tir. SAVEPOINT ise bazı özel durumlarda kullanılmaktadır. Bu yazıda Transactionlara kısa bir giriş yaptık. Bu yazı dizisine ait bir sonraki makalede ATOMICTY kavramını derinlemesine inceleyeceğiz. Umarım giriş ve farkındalık anlamında faydalı bir çalışma olmuştur.
  • #9: http://emrahmete.wordpress.com/2012/01/14/oracleda-autonomous-transactions-ozerk-db-islemleri-yapisi-ve-kullanimi/ Önemli Not: Autonomous olarak belirttiğimiz kod blokları mutlaka bir commit veya rollback komutu ile sonlandırılmalıdır. Aksi takdirde compile-time da hatalar alınacaktır. Şimdi Autonomus Transactionların Teorik Özelliklerinden Bahsedeceğim a) Autonomous Transactions ana transactiondan bağımsızdır. b) Ana transaction Autonomous Transaction’dan dönülene kadar suspend edilir. c) Autonomous Transactions nested bir yapıya işaret etmez. Nested bir transaction değildir. d) Ana transaction’da yapılacak ROLLBACK, Autonomous Transaction’ları etkilememektedir. e) Autonomus Transactionların sınırları begin-end blokları arasında belirlenmiştir. f) Autonomous Transaction üzerinden yapılmış commit işlemi, bu bölgede yapılmış değişikliklerin geçerli olması için yetecektir. g) İç içe yazılmış begin end bloklarını autonomous olarak belirleyemeyiz. Örnek: DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO autotable VALUES (514355); COMMIT; END; INSERT INTO autotable VALUES (355); ROLLBACK; END; h) Yazılacak otonom bloklarda sayı limiti yoktur. Dilenen sayıda otonom kod bloğu yazılıp ana transaction tarafından çağırılabilinir.
  • #10: 2PC – Two Phase Commit: In distributed transactions, Transparent to user. First phase: All the servers are put in pre-commit status (some of them may abort). Second phase: If all the servers are in pre-commit, all of them commit otherwise all of them roll back. RECO process resumes in-doubt 2PC’s (network failures etc..) Limits in a distributed transaction You cannot issue a COMMIT over a database link, you may only commit from the site that initiated the transaction You cannot do DDL over a database link, because DDL commits You cannot issue a SAVEPOINT over a database link, in shortly, you cannot issue any transaction control statements over a database link If you need DDL in a distributed transaction, you can use remote server’s DBMS_JOB supplied package, We use a link to schedule a job to be executed for a DDL, then it will work locally in remote server Ana node’un düştüğü durumu dperlendirmek lazım.
  • #11: 1- Okuyucular, aynı kaynaklar için diğer okuyucuları beklemez. 2- Yazıcılar da aynı kaynaklar için diğer okuyucuları beklemez. 3- Yazıcılar diğer yazıcıları sadece aynı anda aynı satırları değiştirmek istediklerinde beklerler. İnsert,update,select for update,merge TX lock alır. Row level lock
  • #12: DBA’in en önemli görevi kesinti oluşmasını engellemek, kesin oluşursa en kısa sürede veritabanını çalışır hale geri getirmektir. REDO bilgisi geri dönüş(Recovery)için ciddi önem taşır. Veri kaybı yaşanmaması gereken veritabanları için REDO dosyaları arşivlenmelidir. Her satır için o işlemin tekrar yapılabileceği bilgiler REDO, geri alınabileceği bilgiler de UNDO olarak Oracle veritabanı tarafından yaratılır. UNDO içinde sadece tablo değil ilgili tüm nesnelere ait geri alma bilgileri saklanır. UNDO üretimi de REDO üretilir ve korunur. INSERT INTO t (x,y) VALUES (1,1); UPDATE t SET x = x+1 WHERE x = 1; DELETE FROM t WHERE x = 2; DELETE sonrasında başarıyla COMMIT ettiğimiz durumu tartışalım. DELETE sonrasında başarıyla ROLLBACK ettiğimiz durumu tartışalım. UPDATE sonrasında veritabanı kontrolsüz(ABORT) kapanırsa ne olur tartışalım.
  • #17: DDL Cümleleri Auto Commitdir, transaction mantığımızı kırabileceğinden kullanırken dikkatli olmalıyız.
  • #19: Redo Üretimini Azaltmak Oracle veritabanında sadece bazı özel işlemler NOLOGGING seçeneği ile yapılabilinir. * Index creations and ALTERs (rebuilds) Bulk INSERTs using a ‘direct path insert’ via the /*+APPEND */ hint LOB operation (updates to large objects do not have to be logged Table creations via the CREATE TABLE AS SELECT Various ALTER TABLE operations such as MOVE and partition SPLIT TRUNCATE (but it does not need a NOLOGGING clause, as it is always in NOLOGGING mode)