An Oracle Database server consists of an Oracle Database and one or more Oracle Database instances. Every time a database is started, a shared memory area called the system global area (SGA) is allocated and Oracle Database background processes are started. The combination of the background processes and the SGA is called an Oracle Database instance.
Some hardware architectures (for example, shared disk systems) enable multiple computers to share access to data, software, or peripheral devices. Oracle Real Application Clusters (Oracle RAC) comprises two or more Oracle Database instances running on multiple clustered computers that communicate with each other by means of an interconnect. Oracle RAC uses Oracle Clusterware to access a shared database that resides on shared disks. Oracle RAC combines the processing power of these multiple interconnected computers to provide system redundancy, near linear scalability, and high availability. Oracle RAC also offers significant advantages for both OLTP and data warehouse systems, and all systems and applications can efficiently exploit clustered environments.You can scale applications in Oracle RAC environments to meet increasing data processing demands without changing the application code. When you add resources such as nodes or storage, Oracle RAC extends the processing powers of these resources beyond the limits of the individual components.
See Also:
Oracle Real Application Clusters Administration and Deployment Guide
When users connect to an Oracle Database server, they are connected to an Oracle Database instance. The database instance services those users by allocating other memory areas in addition to the SGA, and starting other processes in addition to the Oracle Database background processes. The following sections describe the various Oracle Database memory areas and processes:
Oracle Database Background Processes
An Oracle database uses memory structures and processes to manage and access the database. All memory structures exist in the main memory of the computers that constitute the database system. A process is a mechanism in an operating system that can run a series of steps. Some operating systems use the terms job or task. Oracle Database server uses three types of processes: Oracle processes—which include server processes and background processes—and user processes. On almost all systems, the Oracle processes and the user processes are on separate computers.- Oracle Database creates a set of background processes for each instance. The background processes consolidate functions that would otherwise be handled by multiple Oracle Database programs running for each user process. They asynchronously perform I/O and monitor other Oracle Database processes to provide increased parallelism for better performance and reliability.
See Also:
"Oracle Database Background Processes" for more information on some of the most common background processes - User processes—sometimes called client processes—are created and maintained to run the software code of an application program (such as an OCI or OCCI program) or an Oracle tool (such as Oracle Enterprise Manager). Most environments have separate machines (laptops, desktops, and so forth) for the client processes. User processes also manage communication with the server process through the program interface, which is described in a later section.
- Oracle Database creates server processes to handle requests from connected user processes. A server process communicates with the user process and interacts with Oracle Database to carry out requests from the associated user process. For example, if a user queries some data not already in the database buffers of the SGA, then the associated server process reads the proper data blocks from the datafiles into the SGA.
Oracle Database can be configured to vary the number of user processes for each server process. In a dedicated server configuration, a server process handles requests for a single user process. A shared server configuration lets many user processes share a small number of server processes, minimizing the number of server processes and maximizing the use of available system resources.
Chapter 9, "Process Architecture"
Instance Memory Structures
Oracle Database creates and uses memory structures for various purposes. For example, memory stores program code being run, data shared among users, and private data areas for each connected user. Two basic memory structures are associated with an Oracle Database:- The System Global Area (SGA) is a group of shared memory structures, known as SGA components, that contain data and control information for one Oracle Database instance. The SGA is shared by all server and background processes. Examples of data stored in the SGA include cached data blocks and shared SQL areas.
- The Program Global Areas (PGA) are memory regions that contain data and control information for a server or background process. A PGA is nonshared memory created by Oracle Database when a server or background process is started. Access to the PGA is exclusive to the process. Each server process and background process has its own PGA.
Chapter 8, "Memory Architecture" for more information
Türkçesi:
Bir Oracle Veritabanı sunucusu, bir Oracle Veritabanı ve bir veya daha fazla Oracle Veritabanı durumlarından oluşur.Her seferinde bir veritabanı sistemi global alanı (SGA), paylaşılan bir bellek alanı tahsis edilir ve Oracle Database arka plan işlemleri başlatılır.Arka plan işlemleri ve SGA kombinasyonu Oracle Veritabanı aşaması denir.
Oracle Real Application Clusters
Bazı donanım mimarileri, veri, yazılım, ya da çevresel aygıtlar (örneğin, paylaşılan disk sistemleri) erişim paylaşmak için birden fazla bilgisayar sağlar. Oracle Real Application Clusters (Oracle RAC) bir ara bağlantı sayesinde birbirleri ile iletişim kuran birden fazla kümelenmiş bilgisayarlar üzerinde çalışan iki veya daha fazla Oracle Veritabanı durumlarını kapsar.Oracle RAC, paylaşılan disk üzerinde bulunan bir paylaşılan veritabanına erişmek için Oracle Clusterware'i kullanır.Oracle RAC doğrusal ölçeklenebilirlik yakınında, sistem artıklık sağlamak için bu birden çok birbirine bağlı bilgisayarların işlem gücü, ve yüksek kullanılabilirliğini birleştirir.Oracle RAC, OLTP ve veri depolama sistemlerinin her ikisi için de önemli avantajlar sunuyor ve tüm sistem ve uygulamaları kümelenmiş ortamlarda verimli bir şekilde yararlanabiliriz.
Oracle RAC ortamlarda uygulama, uygulama kodu değiştirmeden artan veri işleme taleplerini karşılamak için ölçeklendirebilirsiniz.Bu düğümleri veya depolama gibi kaynakların eklediğinizde, Oracle RAC bu kaynakların işleme güçleri her bir bileşenin sınırlarının ötesine uzanır.
Kullanıcıların Oracle Veritabanı sunucusu bağladığınızda, Oracle Veritabanı örneğine bağlanır.Veritabanı örneği, SGA yanı sıra diğer bellek alanları tahsis ve Oracle Database arka plan işlemleri için ek olarak diğer işlemler başlayan bu kullanıcılara hizmet verir.Aşağıdaki bölümlerde çeşitli Oracle Veritabanı bellek alanları ve süreçlerini açıklar:
Oracle Database Background Processes
Bir Oracle veritabanı yönetmek ve veritabanı erişimi için bellek yapıları ve süreçleri kullanır.Tüm bellek yapıları, veritabanı sistemi oluşturan bilgisayarların ana bellek vardır.Bir süreç, bir dizi adımlarını çalıştırılabilir bir işletim sistemi için bir mekanizmadır. Bazı işletim sistemleri açısından iş ya da görev kullanır. Oracle Veritabanı sunucusu üç tür süreçleri kullanır: Sunucu süreçleri ve arka plan işlemleri içeren Oracle süreçleri ve kullanıcı işlemleridir.Hemen hemen tüm sistemler, Oracle süreçleri ve kullanıcı işlemleri ayrı bilgisayarlar üzerindedir.
- Oracle Database, her örneği için arka plan işlemlerinin bir dizisini oluşturur. Arka plan işlemleri fonksiyonları güçlendirir aksi takdirde her kullanıcı işlemi için çalışan çoklu Oracle Veritabanı programları tarafından ele alınmış olunurdu.Onlar daha iyi performans ve güvenilirlik için eşzamansız artan paralellik sağlamak için I / O ve monitör diğer Oracle Veritabanı işlemleri gerçekleştirebilirsiniz.
- Bazen istemci süreçleri olarak adlandırılıran Kullanıcı Prosesleri oluşturulur ve yazılım kodu (örneğin, bir OCI veya OCCI programı gibi) bir uygulama programı veya bir Oracle aracı (örneğin, Oracle Enterprise Manager gibi) çalıştırmak için korunur.Bir çok ortamlarda istemci işlemleri için ayrı makinalara (dizüstü bilgisayar, masaüstü bilgisayar, vb.) sahiptir.Kullanıcı prosesleri de, daha sonraki bir bölümünde tanımlanan program arayüzü üzerinden sunucu prosesleri ile iletişimi yönetir.
- Oracle Database, bağlı kullanıcı proseslerimi istekleri işlemek için sunucu proseslerini oluşturur. Bir bir sunucu prosesi, kullanıcı süreci ile iletişim kurar ve ilgili kullanıcı işlemi isteklerini gerçekleştirmek için Oracle Veritabanı ile etkileşime girer.Örneğin, bir kullanıcı zaten SGA veritabanı tamponları bazı verileri sorgular, sonra ilişkili bir sunucu prosesi uygun veri blokları SGA içine veri dosyalarıdan okur.
- Oracle Database, her sunucu işlemi için kullanıcı proseslerimi sayısına bağlı olarak değişiklik için konfigüre edilebilir.Ayrılmış bir sunucu yapılandırma içinde, bir sunucu prosesi, tek bir kullanıcı işlemi için istekleri işler.Paylaşılan bir sunucu yapılandırma birçok kullanıcı proseslerini küçük bir sayıda sunucu proseslerini, sunucu prosesleri sayısını en aza indirerek ve mevcut sistem kaynaklarının kullanımını maksimize ederek paylaşmanızı sağlar
Instance Memory Structures
Oracle veritabanı oluşturur ve bellek yapıları çeşitli amaçlar için kullanır. Örneğin, bellek bağlanan her kullanıcı için çalıştırılmakta olan program kodunu, kullanıcılar arasında paylaşılan verileri ve özel veri alanları depolar.İki temel bellek yapıları Oracle Veritabanı ile ilişkilidir:
- Sistem Genel Alanı (SGA) bileşenleri olarak bilinen bir Oracle Veritabanı örneği için veri ve kontrol bilgilerini içeren paylaşımlı bellek yapıları bir gruptur.SGA tüm sunucu ve arka paln süreçleri tarafından paylaşılır. SGA depolanan veri örnekleri önbelleğe alınan veri blokları ve paylaşımlı SQL alanları içerir.
- Program Genel Alanı (PGA), bir sunucu veya arka plan işlemi için veri ve kontrol bilgilerini içeren bellek bölgeleridir.PGA Oracle Veritabanı tarafından oluşturulan bir sunucu veya arka plan işlemi başlatıldığında paylaşılmamış bellektir.PGA erişim sürecine herkese açık değildir.Her sunucu süreci ve arka plan işlemi kendi PGA sahiptir.
Daha fazla Türkçe Kaynak Eklemek İstersek:
*ORACLE’DA BELLEK YAPISI(MEMORY STRUCTURE) VE ARKA PLAN İŞLEMLERİ(BACKGROUND PROCESSES)
Bu bölüm Oracle veritabanının yönetiminin sağlanmasında kullanılan işlemleri ve bellek yapılarını içermektedir. Tüm bellek yapıları veritabanının oluşturulduğu bilgisayarın ana belleğinde yer almaktadır. Bu bölüm birden fazla kullanıcının aynı anda veritabanına erişip işlemlerini gerçekleştirmesinin nasıl olduğunu anlamak açısından önemlidir. Aşağıdaki şekil bu bölüm için temel alınacaktır.Bellek Yapıları
Oracle işlemlerini gerçekleştirmek için bellek yapıları oluşturur ve bunları kullanır. Örneğin bellek çalışan program kodlarını ve kullanıcılar arasında paylaşılan verileri depolar. Oracle’da birkaç adet bellek yapısı mevcuttur: SGA(System Global Area), veritabanı tamponları(database buffers), redo log tamponları(redo log buffers) ve paylaşım havuzunu(shared pool) içerir.SGA(System Global Area)
SGA bir oracle veritabanı oturumu için gerekli verileri ve kontrol bilgilerini içeren paylaşımlı bellek bölgesidir. SGA ve Oracle arka plan işlemleri bir Oracle veritabanı oturumunu oluşturur. Veritabanı oturumu başladığında Oracle SGA’yı oluşturur ve veritabanı kapatıldığında yok eder. Her bir veritabanı oturumunun kendine ait bir SGA ‘sı vardır. Oracle’a bağlanan kullanıcılar SGA içerisinde verileri paylaşımlı olarak kullanırlar. Yüksek performansın sağlanabilmesi için SGA’nın olabildiğince büyük olması gerekir. SGA büyük olursa bu alanda daha fazla bilgi depolanabilir ve sabit diske erişim sayısı azalır. SGA içerisinde depolanan bilgi veritabanı tamponları, redo log tamponları ve paylaşım havuzunu içeren birkaç tip bellek yapısına bölünmüştür. Bu alanlar sabit büyüklüktedir ve veritabanı açılırken oluşturulurlar.Veritabanı Tampon Belleği(Database Buffer Cache)
En son kullanılan veri blokları SGA içerisinde veritabanı tamponu denilen yerde depolanır. Bu veritabanı tamponlarının hepsi veritabanı tampon belleğini oluşturur. Veritabanı tampon belleği değiştirilmiş ve değiştirilmemiş bilgileri içerir. Son kullanılan verilerin ya da çok kullanılan verilerin bellekte depolanması sayesinde sabit disk erişim işlemleri azalır.Redo Log Tamponu(Redo Log Buffer)
SGA’nın redo log tamponu veritabanı verileri üzerinde yapılan son değişiklikleri depolar. Redo log tamponunda depolanan değişiklik bilgileri veritabanı kurtarma işlemlerinde gerekli olan redo log dosyalarına kaydedilirler.Paylaşım Havuzu(Shared Pool)
Paylaşım havuzu SGA’nın paylaşımlı SQL alanları gibi bellek yapılarını içeren kısmıdır. Paylaşımlı SQL alanı veritabanına girilen her farklı SQL komutunu işlemek için gerklidir. Her bir paylaşımlı SQL alanı aynı komutu işleyen birden fazla uygulama tarafından kullanılır. Burada amaç diğer kullanıcılar için daha fazla paylaşımlı bellek alanı bırakabilmektir.Geniş Havuz(Large Pool)
Geniş havuz SGA içerisinde isteğe bağlı bir alandır. Bu alan yedekleme, yapılan işlemleri geri yükleme, sunucunun giriş/çıkış işlemleri vb. işlemlerde daha geniş bellek ihtiyacı için kullanılan alandır.Program Genel Alanı(PGA)
PGA sunucu işlemleri için veri ve kontrol bilgilerini içeren bellek tamponudur. Bir sunucu işlemi başlatıldığında PGA Oracle tarafından otomatik olarak başlatılır. Genellikle PGA bir kullanıcı ya da bağlantı için ayrılan belleğe denir. Bu bellek üç bölümü içerir: Birincisi yığın uzayı’dır(Stack Space). Yığın bir her bir bağlantıya ait değişkenleri, dizileri vb. yapıları tutan bellektir. İkincisi bağlantı bilgisi’dir(Session Information). Bağlantı bilgisi, “multitheraeded” sunucu olarak adlandırılan bir bilgisayarda çalışılmıyorsa PGA alanında, aksi halde SGA da depolanır.(“multithreaded” uygulamalar aynı kod ve data segmenti kullanıp, farklı program sayacı, kayıtlık ve yığın kullanan uygulamalar için kullanılır.) Üçüncüsü Özel SQL alanıdır. Bu alanda farklı amaçla kulanılan bazı değişkenleri tutmak için kullanılır.İşlem Yapısı(Process Architecture)
İşlem, işletim sistemlerinde, belli bir işi yapmak için bir adımlar dizisinin çalıştırılması olarak adlandırılmaktadır. Normalde her işlemin çalışabilmesi için bellekte kendine özel bir yeri vardır. Oracle’da da iki tür işlem vardır. Kullanıcı işlemleri(User Processes) ve Oracle İşlemleri(Oracle Processes).Kullanıcı İşlemleri(User(Client) Processes)
Bir kullanıcı işlemi bir uygulama ya da yazılımın çalıştırlmasını sağlamak için oluşturulur. Kullanıcı işlemleri program arayüzü(program interface) yoluyla sunucuyla iletişim işlemlerini sağlar.Program arayüzü bir kullanıcı işlemlerinin sunucu ile ileitişim kurmasında kullanılan mekanizmalar olark bilinir. Program arayüzü veritabanı ile bir Oracle Forms ya da Reports programı arasında iletişim standartlarını sağlar.
Oracle İşlemleri(Oracle Processes)
Oracle işlemleri diğer işlemler tarafından işlemin belli adımlarını gerçekleştirmesi için çağrılırlar. Oracle işlemleri de sunucu işlemleri(Server Processes) ve arka plan işlemleri(Background Processes) olarak ikiye ayrılır.Sunucu İşlemleri(Server Processes)
Oracle, veritabanına bağlanan bir kullanıcının isteklerini gerçekleştirebilmek için sunucu işlemlerini başlatır. Örneğin bir kullanıcının, o an SGA’nın veritabanı belleği’nde yer almayan bir bilgiyi sorgulaması, veri bloklarının veri dosyalarından okunup SGA’ya getirilmesini sağlayan sunucu işlemini başlatır. İstemci/Sunucu mimarili sistemlerde kullanıcı işlemleri ve sunucu işlemleri ayrı bilgisayarlarda çalıştırılır.Arka Plan İşlemleri(Background Processes)
Oracle her veritabanı için ayrı olarak bir dizi arka plan işlemleri oluşturur. Oracle veritabanına bir anda birden fazla kullanıcının bağlandığını ve belli programları çalıştırdığını düşünelim. Oracle programlar tarafından oluşturulan bu kullanıcı işlemleri’ni gerçekleştirmek için arka planda bazı işlemler gerçekleştirir. Her bir veritabanı kendi arka plan işlmelerine sahiptir. Şimdi bu arka plan işlmelerinin neler olduğuna bakalım:Veritabanı Yazıcısı(Database Writer- DBWn)
Veritabanı yazıcısı, veritabanı tampon belleğindeki değiştirilmiş veri bloklarını veri dosyalarına yazmakla görevlidir. Normalde tek bir veritabanı yazım işlemi bir çok sistemde yeterli olmasına rağmen, birden fazla yazım işlemi tanımlanabilir. Bu işlemlere DBW0…DBW9 şeklinde isim verilir. Veritabanı açılırken bu DB_WRITER_PROCESSES parametresi ile veritabına bildirilir.
Bir kullanıcı yaptığı değişiklikleri “commit” komutuyla onayladığında veritabanı yazıcısı bu değişiklikleri hemen veri dosyalarına kaydetmez. Veritabanı yazıcısı veri dosyalarına yazma işlemini kendi belirler ve ya SGA içerisine çok miktarda başka verilerin alınması gerektiği zaman ya da çok az veritabanı tamponu kaldığı zaman yazma işlemini gerçekleştirir. Veri dosyalarına yazım işlemi en son kullanılan verilerden başlanarak gerçekleştirilir.
Log Yazıcısı(Log Writer LGWR)
Log yazıcısı SGA’nın redo log tamponundaki bilgileri diske kaydetmek için kullanılır. LGWR tampondaki bilgileri o an kullanımda olan bir redo log dosyasına sıra ile yazar. Bu yazma işlemi veritabanının sahip olduğu birden fazla redo log dosyasına da yapılabilir.
Değişme Noktası(Checkpoint- CKPT)
Belirli zamanlarda SGA içerisindeki değişikliğe uğramış veritabanı tamponları DBWn tarafından belleğe yazılır. Bu işlem değişme noktası işlemi olarak adlandırılır. Değişme noktası işlemi DBWn’e değişme anlarını haber vermekten ve veritabanındaki bütün veri dosyalarını ve kontrol dosyalarını yeni değişme noktasından haberdar etmek için güncellemekten sorumludur.
Sistem Analizi(System Monitor-SMON)
Sistem Analizi veritabanı oturumu açılırken oturum için kurtarma yapar, yani kontrol dosyalarını kontrol ederek geri alınması gereken bir işlemin olup olmadığına bakar, eğer varsa geri allma işlemini gerçekleştirir. Birden fazla veritabanı oturumunun olduğu ortamlarda SMON aynı zamanda bozulan sistemler içinde ayrı ayrı kurtarma yapar. SMON aynı zamanda kullanılmayan geçici parçaları(temporary segment) temizlemekte ve herhangi bir problemden dolayı bozulan işlemleri kurtarmaktadır. Bozulan işlemlerin sorgu komutları SMON tarafından tablo uzayı ve veri dosyası tekrar aktif hale getirildikten sonra kurtarılır. Son olarak SMON veritabanında daha fazla boş yer açılsın diye boş genişlemeleri birleştirmektedir.
İşlem analizi(Process Monitor-PMON)
İşlem Analizi herhangi bir kullanıcı işlemi bozulduğunda o işlemin kurtarılmasını yapmaktadır. PMON işlemin kullandığı belleği ve kaynakları temizlemekten sorumludur. PMON aynı zamanda dispatcher(ileride anlatılıyor) ve sunucu işlemlerini kontrol eder ve kapandıklarında yeniden çalıştırır.
Yedekleyici(Archiver-ARCn)
Yeekleyici o an kullanılmakta olan redo log dosyalarını, doldukları zaman yedek depolama ünitelerine kopyalar. Tüm sistemler için bir ARC0 işleminin olması yeterli olsa da birden fazla işlem gerçekleştirilebilir. Bu LOG_ARCHIVE_MAX_PROCESSES parametrsei ile belirlenir. ARCn işlemi veritabanı ARCHIVELOG modda çalışırken kullanılır.
Geri Kurtarıcı(Recoverer-RECO)
Geri kurtarıcı dağıtık veritabanında sistem veya ağ hatalarından dolayı bekleyen işlemleri düzenler. Belli aralıklarla, yerel RECO uzaktaki veritabanına bağlanıp yereldeki dağıtık işlemlerle ilgili “commit” ve “rollback” işlemlerini yapmaktadır.
Dispatcer(Dnnn)
Dispatcher’lar çoklu ortamlarda isteğe bağlı olarak çalıştırılmaktadırlar. Her iletişim protokolü için en az bir dispatcher işlemi (D000,….,Dnnn) oluşturulmaktadır. Her dispatcher işlemi kullanıcı işlemlerinden gelen istekleri sunucu işlemlerine yönlendirmekte ve gelen cevapları da uygun kullanıcılara tekrar döndürmekten sorumludur.
Kilit(Lock-LCKO)
Kilit işlemleri birden fazla veritabanı oturumunun çalıştığı sistemlerde veritabanları arasında gereken bir takım kilitleme işlemlerini gerçekleştirir.
İş Kuyruğu(Job Queue-SNPn)
Dağıtık veri tabanı uygulamalarında 38 adetten fazla (SNP0,…,SNP9,SNPA,….SNPZ) iş kuyruğu işlemi tablo snapshot’larını otomatik olarak güncelleyebilir. Bu işlemler periyodik olarak başlatılır.
Oracle’ın Çalışmasına Bir Örnek
Aşağıdaki örnek bir istemcinin ağ üzerinden sunucudaki veritabanına erişip bir sorgulama yapmasının adımlarını içermektedir.- Oracle veritabanı “host” ya da “database server” olarak adlandırılan bilgisayarda çalışıyor vaziyettedir.
- Bir kullanıcı istemci bilgisayarda kullanıcı işlemlerini gerçekleştiren bir uygulama programını çalıştırmaktadır. İstemci bilgisayar sunucu bilgisayar ile bağlantısını uygun Net8 sürücüsünü kullanarak gerçekleştirir.
- Sunucu bilgisayarda da uygun bir Net8 sürücüsü çalışıyor vaziyettedir. Sunucu uygulama programından gelen bağlantı isteğini tespit eder ve kullanıcı işlemine karşılık gelen sunucu işlemini oluşturur.
- Kullanıcı bir SQL komutu çalıştırır ve yaptığı değişikliği “commit” eder, yani onaylar.Örneğin kullanıcı bir tablo içerisindeki bir kaydı değiştirir.
- Sunucu işlemi komutu alır ve paylaşım havuzunda bu SQL komutuna benzeyen bir paylaşımlı SQL alanı olup olmadığına bakar. Eğer böyle bir alan bulunursa sunucu işlemi kullanıcının bu SQL cümlesini çalıştırma haklarını kontrol eder. Eğer böyle bir alan yoksa yeni bir paylaşımlı SQL alanı oluşturulur ve SQL komutu çalıştırılır.
- Sunucu işlemi bu SQL komutu için gerekli verilerin SGA’da olup olmadığına bakar. Eğer burada yoksa ilgili veri dosyasından verileri alıp SGA’ya getirir.
- Sunucu işlemleri komutun gereklerine göre SGA’daki verileri değiştirir. DBWn değiştirilmiş veri bloklarını gerekli olduğu zaman kalıcı olarak diske kaydeder. SQL komutu onaylandığı için LGWR işlemi yapılan SQL işlemini redo log dosyalarına kaydeder.
- Eğer SQL komutunun çalıştırılması başarılı olduysa sunucu işlemi ağ üzerinden istemcideki uygulamaya mesaj gönderir. Eğer başarılı olmadıysa uygun hata mesajını gönderir.
- Tüm bu işlemler yapılırken veritabanı sunucusu diğer kullanıcıların aynı ya da farklı veriler üzerindeki işlemlerini de yürütür. Bu işlemlerin yapılabilmesi ve performansın artırılması için örneğimiz içerisinde anlatılmayan başka arka plan işlemleride gerçekleştirilir.
Hiç yorum yok:
Yorum Gönder