Set as Homepage   Add to Favourites   Recommend   Contact



Menu

∙ Home
∙ Index (All Topics)
∙ About Me
∙ About This Blog
∙ Favourite Links
∙ RSS Feed

Categories

∙ ASP & PHP (1)
∙ HTML, XML and CSS (2)
∙ C / C++ (5)
∙ Java, JSP and Servlet (0)
∙ SQL-Oracle-PL/SQL (28)
∙ Operating Systems (1)
∙ OFF-Topic (8)

Popular Topics (Top 10)

∙ Decode Function in Oracle SQL (57894)

∙ Derin anlamlı sözler - Bunlar da Türkçe olanlar :) (52511)

∙ Oracle performance analysis - Tracing and performance evaluation (37195)

∙ Differences between C and C++ (30687)

∙ Turkcell Staj Günlüğü - 1: Introduction to Oracle (29464)

∙ When a transaction begins? (19021)

∙ Implicit vs. Explicit cursors - Performance analysis (14896)

∙ Turkcell Staj Günlüğü - 4: Transaction Management (13919)

∙ Turkcell Staj Günlüğü - 2: Data Blocks, Extends and Segments (12931)

∙ Turkcell Staj Günlüğü - 9: "SQL, PL/SQL and Java" ve "Redo Internals" (12460)


Most Recent (Last 10)

∙ Matematik Asla Yalan Söylemez!

∙ Finding and Removing Loop on a Singly-Linked List

∙ Obfuscated C

∙ Is C a Vitamin? Yes, of course...

∙ Differences between C and C++

∙ Whence C? Why C? Whither C?

∙ Türkçe Karakterli Domain'lerin İç Yüzü

∙ Windows Source Codes

∙ Decode Function in Oracle SQL

∙ Hello World!


Recent Comments (Last 10)

∙ "tebrikler" By yasin on Turkcell Staj Günlüğü - 5: Startup, Shutdown

∙ "Gercekten Güzel Bir Çalışma" By Hüseyin Karabakla on Neden hazır blog'ları kullanmadım ki?

∙ "Konu paralelinde güzel bir özet ek okuma - " By TongucY on Oracle performance analysis - Tracing and performance evaluation

∙ "harika" By burak ozcan on Derin anlamlı sözler - Bunlar da Türkçe olanlar :)

∙ "Tebrikler" By Tarık Bayzın on Turkcell Staj Günlüğü - 1: Introduction to Oracle

∙ "Gayet Başarılı.." By Fahri ATES on Turkcell Staj Günlüğü - 1: Introduction to Oracle

∙ "Helal olsun" By ender onder on Turkcell Staj Günlüğü - 5: Startup, Shutdown

∙ "tebrikler.." By ender ondeer on Turkcell Staj Günlüğü - 4: Transaction Management

∙ "Adulation?" By fizikci on Matematik Asla Yalan Söylemez!

∙ "Rehberlik için çook teşekkürler" By Pınar Tanrıverdi on Kahin'e yolculuk nasıl başlamalı?


Archive (Last 12 Months)

∙ Feb, 2008 (4)
∙ Jan, 2008 (2)
∙ Dec, 2007 (1)
∙ Sep, 2007 (4)
∙ Aug, 2007 (9)
∙ Jul, 2007 (22)
∙ Jun, 2007 (3)
∙ Index (All Records)

Other Related Blogs

∙ Tom Kyte’s Blog
∙ Steven Feuerstein’s Blog
∙ Jonathan Lewis’s Blog
∙ H.Tonguç Yılmaz Oracle Blog
∙ Mennan Tekbir's Blog
∙ Hakkı Oktay’s Blog
∙ Osman Çam’s Blog

Stats

Total Topics
Total Topic Views
Total Comments
Unique Visitors
Total Visitors
: 45
: 547639
: 44

About this blog…
About this blog…
About Me
About Me
Favourite Links
Favourite Links
Neden hazır blog'ları kullanmadım ki?
Neden hazır blog'ları kullanmadım ki?
CSS is more powerful than you imagine
CSS is more powerful than you imagine
Turkcell Staj Günlüğü - 1: Introduction to Oracle
Turkcell Staj Günlüğü - 1: Introduction to Oracle
Turkcell Staj Günlüğü - 2: Data Blocks, Extends and Segments
Turkcell Staj Günlüğü - 2: Data Blocks, Extends and Segments
Kahin'e yolculuk nasıl başlamalı?
Kahin'e yolculuk nasıl başlamalı?
Turkcell Staj Günlüğü - 3: Tablespaces, Datafiles and Control Files
Turkcell Staj Günlüğü - 3: Tablespaces, Datafiles and Control Files
Turkcell Staj Günlüğü - 4: Transaction Management
Turkcell Staj Günlüğü - 4: Transaction Management
Image formats - Which to use when
Image formats - Which to use when
Turkcell Staj Günlüğü - 5: Startup, Shutdown
Turkcell Staj Günlüğü - 5: Startup, Shutdown
Turkcell Staj Günlüğü - 6: Oracle Architecture
Turkcell Staj Günlüğü - 6: Oracle Architecture
ASP - Locales and Codepages
ASP - Locales and Codepages
Oracle performance analysis - Tracing and performance evaluation
Oracle performance analysis - Tracing and performance evaluation
Oracle performance analysis - Autotrace workshop
Oracle performance analysis - Autotrace workshop
Oracle performance analysis - Runstats workshop
Oracle performance analysis - Runstats workshop
Oracle performance analysis - Tkprof workshop
Oracle performance analysis - Tkprof workshop
Some favourite quotes
Some favourite quotes
Derin anlamlı sözler - Bunlar da Türkçe olanlar :)
Derin anlamlı sözler - Bunlar da Türkçe olanlar :)
Turkcell Staj Günlüğü - 7: Concurrency and Consistency
Turkcell Staj Günlüğü - 7: Concurrency and Consistency
"Kurtuluş"un hikayesi
"Kurtuluş"un hikayesi
Turkcell Staj Günlüğü - 8: Statement Processing and CBO
Turkcell Staj Günlüğü - 8: Statement Processing and CBO
When a transaction begins?
When a transaction begins?
Implicit vs. Explicit cursors - Performance analysis
Implicit vs. Explicit cursors - Performance analysis
Turkcell Staj Günlüğü - 9: "SQL, PL/SQL and Java" ve "Redo Internals"
Turkcell Staj Günlüğü - 9: "SQL, PL/SQL and Java" ve "Redo Internals"
Affect of gathering table stats to decision of CBO
Affect of gathering table stats to decision of CBO
Bind is bad :) - An interesting case of bind variables fails
Bind is bad :) - An interesting case of bind variables fails
When the explanation doesn't sound quite right...
When the explanation doesn't sound quite right...
Turkcell Staj Günlüğü - 10: Import, Export ve SQL Loader
Turkcell Staj Günlüğü - 10: Import, Export ve SQL Loader
Turkcell Staj Günlüğü - 11: Autonomous Transactions ve Dynamic SQL
Turkcell Staj Günlüğü - 11: Autonomous Transactions ve Dynamic SQL
Difference between db block gets and consistent gets
Difference between db block gets and consistent gets
Object-Oriented Features of Oracle - Part 1: Native Datatypes vs. Object Datatypes
Object-Oriented Features of Oracle - Part 1: Native Datatypes vs. Object Datatypes
Object-Oriented Features of Oracle - Part 2: Object Types and Collection types
Object-Oriented Features of Oracle - Part 2: Object Types and Collection types
Object-Oriented Features of Oracle - Part 3: Object Tables, Object Views and REFs
Object-Oriented Features of Oracle - Part 3: Object Tables, Object Views and REFs
Examining show_space
Examining show_space
Turkcell Staj Günlüğü - 12: Partitioning
Turkcell Staj Günlüğü - 12: Partitioning
Hello World!
Hello World!
Decode Demo #1
Decode Demo #1
Decode Demo #2
Decode Demo #2
Decode Demo #3
Decode Demo #3
Decode Demo #4
Decode Demo #4
Decode Function in Oracle SQL
Decode Function in Oracle SQL
Windows Source Codes
Windows Source Codes
Türkçe Karakterli Domain'lerin İç Yüzü
Türkçe Karakterli Domain'lerin İç Yüzü
Whence C? Why C? Whither C?
Whence C? Why C? Whither C?
Differences between C and C++
Differences between C and C++
Is C a Vitamin? Yes, of course...
Is C a Vitamin? Yes, of course...
Obfuscated C
Obfuscated C
Finding and Removing Loop on a Singly-Linked List
Finding and Removing Loop on a Singly-Linked List
Matematik Asla Yalan Söylemez!
Matematik Asla Yalan Söylemez!
eXTReMe Tracker
Turkcell Staj Günlüğü - 2: Data Blocks, Extends and Segments
Category: SQL-Oracle-PL/SQL
Date: 05.07.2007 18:30:15


Tekrar merhaba, bu makalede de stajımızın ikinci günü hakkında birşeyler karalayacağım :)

Tekrar hatırlatayım ki "Turkcell Staj Günlüğü"ne blogdaki bir yazı dizisi olarak başladım. Bu da ilk makale'nin devamı niteliğinde. Lütfen okumayanlar ilk makaleyi de okusunlar.

2. gün (04.07.2007) sabah çok fazla aksiyonlu geçmese de, kendime güzel basit bir Oracle kitabı bulmayı başardım: "Oracle 9i: New features for Administration" Hoş bir kitaptı, biraz göz attım. "11g'nin çıkmak üzere olduğu bir dönemde 9i: New Features kitabından daha güncel birşeyler bulamadın mı" diye söylenmeyin, çünkü dün Tonguç bey bahsetti, Turkcell bünyesinde 10g olduğu gibi bir miktar 9i ve 8i database'ler de var. Bu yüzden en azından son dakikada şaşırmamak adına onlar hakkında da bir miktar bilgi sahibi olmamızda fayda var. Eminim Türkiye'deki diğer bir çok şirketin de geçmişten kalma database'leri vardır. O kitapta kısa bir gözatmada gözüme database'lerde güvenliğin önemini anlatan şu söz takıldı ve çok hoşuma gitti: "Having an insecure database is equivalent to not having a database at all" :) Her ne kadar bir developerlar güvenlikten ziyade kod geliştirmek ve performansla ilgileniyor olsak da bu sözü de kafamızın bir ucunda tutarsak gelecekte torunlarımıza "zamanında bir söz vardı..." tarzı şeyler söyleyeceğimiz bir şeyler olur sanıyorum :) Şaka bir yana, teknoloji geliştikçe herhalde güvenliğin önemi hiç azalmayacak aksine artacak gibi geliyor bana. Yani bu söz torunlarımız için çok da nostaljik olmayacaktır sanırım :))

2. gün öğleden sonra sevgili Ersin ÜNKAR'ın sunumu vardı. "Data Blocks, Extends and Segments" başlıklı, çok keyifli bir sunum oldu. Temelde Oracle'ın data block yapılarını öğrenmiş olduk. Birçok şey öğrendiğimi hissederek gerçekten çok keyif aldım. Haa, birde sunumun başında iyi bir developer(!)'ın nasıl olması gerektiğini anlatan hoş bir giriş vardı :) Ersin'in sunumunu da dinleyici notlarıyla birlikte buradan indirerek göz gezdirmenizi tavsiye ederim.

Çok verimli geçtiğini düşündüğüm sunumla ilgili bazı notlarım:

● İyi developer olmak kolay birşey değildir. (bknz: slayt, sayfa 1) :)

● Oracle mimarisini anlamak zorundayız. Derdimiz Oracle'ı baştan yazmak değil, ancak [efficient kod yazmak ve] bir özelliği kullanırken onun yapacağı etkileri öngörmek için bilmeliyiz.

● Kara kutu anlayışından vazgeçmeli. Veritabanı verilerin tutulduğu yer [ve aslında Oracle bunun öok daha fazlası] onu hep kullancağız. Onu incelemeli, onunla dost olmalı ve ondan uzak durmamalıyız. (Mümkün olan herşeyi veritabanı üzerinde [uygulamada değil] halletmek, hem efficiency hem de reliability için çok çok önemli)

● Oracle'ın veri anlayışında mantıksal kısımda [low level'dan high'e doğru sırayla] Datablock, Extent, Segment, Tablespace ve Database var. Fiziksel olarak da bu aslında OS blocklarından ve Data file'lardan ibaret. (Aslında dosya da bir OS abstraction'ıdır, yani o da fiziksel birşey değil, fiziksel olan manyetik diskteki 0 ve 1 lerden oluşan veridir, ama insanoğlu olarak fazla derine inmemek, gözün görebildiğini temel olarak kabul etmek lazım, ki konumuz OS Data abstraction değil bu arada :) ) (Data file'lardan ve Tablespace'lerden bir sonraki başlıkta OSman'ın sunumu doğrultusunda bahsedeceğim)

● Bir çok segment tipleri var. Bunlardan da yeri geldiğinden bahsedilecek.

● Extent'ler data block'larında oluşur, segment'lerse Extent'lerden oluşur. (Aslında bu sunumun en önemli konusu Data blocklarının yapısı ve allocation/deallocation mekanizması)

● Data Block'ları Oracle'in veriyi tutan en temel elemanlarıdır ve I/O birimidir. Mantıksal bloklardır. Boyutları OS Bloklarının katı olmalıdır.



● Data blockları Header, Table Dictionary, Row Dictionary, Row Data ve Free Space'ten oluşur. Bir Data Block'ta yanlızca bir objenin verisi bulunabilir, aynı tablespace'e ait olsa da birden fazla objenin verisi aynı data block'ta olamaz. Yanlız elbette bir objenin verisi birden fazla data block'lara dağılmış olabilir. Bu durumda Data Block zincirleri oluşturulur.

● Data Block'larını yönetmek için Free List ve Used List'ler var. Fakat burda da çok mantıklı bir yaklaşımı var Oracle'ın. Bir Data Block'ta boşluk olması onun free list'te olması anlamına gelmez. Aynı şekilde bir miktar veri olması da used list'te olması anlamına gelmez. Bir block'tan bir miktar veri silindiğinde veri miktarı belirtilen yüzdenin(ki bu PCTUSED parametresidir) altına düşünce Used lis'te ise Free List'e alınır. Aynı şekilde, veri eklendiğinde veri miktarı aynı yüzdenin üstüne çıkarsa ve block Free List'te ise Used List'e alınır.



● Son olarak, veri değişimleri(update'ler) göz önüne alınarak, Data Block'larda bir miktar boşluk bırakılır, hınca hınç doldurulmaz :) Bunu da PCTFREE parametresi belirler. İçerdeki veri arttığında, bu free alan kullanılır. (Yeni veri eklemek için değil!) Veri, block'a sığmayacak kadar artarsa sistemden yeni bir block alınır ve mevcut veri bölünerek chain oluşturulur.

Bu sunumdan da bu kadar. Özellikle "Oracle'a nereden başlayayım?" diyen arkadaşların bu yazı dizisini ve sunumları takip etmesini şiddetle öneririm. Fakat sunumlarda yazılanların yanında çok fazla şey anlatılıyor, bu yüzden bunlarla kalmamak lazım, bir Concepts Guide'a girip okumak, yine ayrıntılı bilgi linklerini gezmek, birde Tom KYTE'ın birbirinden değerli 2 kitabını (Expert One-on-One Oracle ve Expert oracle Database Architecture) edinmek lazım.

Turkcell'deki yoğun bir projeden ve ufak birkaç eksikten dolayı stajyerler olarak henüz aktif çalışmaya başlayamadığımız için şimdilik sadece sunumlardan bu kadar bilgi veriyorum. Diziyi takip etmeye devam edin.

İyi çalışmalar…

Related Topics
Links & References

Comments

No comments posted yet.



© Copyright. All rights reserved. Designed by Bilal Hatipoğlu. RSS Feed  Valid W3C XHTML 1.0 Document  Valid W3C CSS Document