8 Eylül 2011 Perşembe

Overview of Accessing the Database / Veritabanı Erişimine Genel Bakış

This section describes Oracle Net Services, as well as how to start up the database, in the following sections:

Network Connections

Oracle Net Services is the interface between Oracle Database and the network communication protocols that facilitate distributed processing and distributed databases. Communication protocols define the way that data is transmitted and received on a network. Oracle Net Services supports communications on all major network protocols, including TCP/IP, HTTP, FTP, and WebDAV.
Using Oracle Net Services, application developers do not need to be concerned with supporting network communications in a database application. If a new protocol is used, then the database administrator makes some minor changes, and the application requires no modifications and continues to function.
Oracle Net, a component of Oracle Net Services, establishes and maintains a network session from a client application to an Oracle Database server. Once a network session is established, Oracle Net acts as the data courier for both the client application and the database server, exchanging messages between them. Oracle Net can perform these jobs because it is located on each computer in the network.
See Also:

Starting Up the Database

The three steps to starting an Oracle database and making it available for systemwide use are:
  1. Start an instance.
  2. Mount the database.
  3. Open the database.
A database administrator can perform these steps using Oracle Enterprise Manager, the SQL*Plus STARTUP statement, the srvctl command-line tool, or the Express Edition START command. When Oracle Database starts an instance, it reads the server parameter file (spfile) or initialization parameter file (pfile) to determine the values of initialization parameters. Then, it allocates an SGA and creates background processes.
See Also:
Chapter 12, "Database and Instance Startup and Shutdown"

How Oracle Database Works

The following example describes Oracle Database operations at the most basic level. This illustrates an Oracle Database configuration where the user and associated server process are on separate computers, connected through a network.
  1. An instance has started on the computer running Oracle Database, often called the host or database server.
  2. A computer running an application (a local computer or client workstation) runs an application in a user process. The client application attempts to establish a connection to the server using the proper Oracle Net Services driver.
  3. The server is running the proper Oracle Net Services driver. The server detects the connection request from the application and creates a dedicated server process on behalf of the user process.
  4. The user runs a SQL statement and commits the transaction. For example, the user changes a name in a row of a table.
  5. The server process receives the statement and checks the shared pool (an SGA component) for any shared SQL area that contains a similar SQL statement. If a shared SQL area is found, then the server process checks the user's access privileges to the requested data, and the existing shared SQL area is used to process the statement. If not, then a new shared SQL area is allocated for the statement, so it can be parsed and processed.
  6. The server process retrieves any necessary data values, either from the actual datafile (table) or those stored in the SGA.
  7. The server process modifies data in the system global area. The database writer process (DBWn) writes modified blocks permanently to disk when doing so is efficient. Because the transaction is committed, the log writer process (LGWR) immediately records the transaction in the redo log file.
  8. If the transaction is successful, then the server process sends a message across the network to the application. If it is not successful, then an error message is transmitted.
  9. Throughout this entire procedure, the other background processes run, watching for conditions that require intervention. In addition, the database server manages other users' transactions and prevents contention between transactions that request the same data.
See Also:
Chapter 9, "Process Architecture" for more information background processes

Türkçesi:

Bu bölümde, aşağıdaki bölümlerde veritabanını nasıl başlatılmasının yanı sıra, Oracle Net Services açıklanmaktadır:
  • Ağ Bağlantıları
  • Veritabanı Başlatma
  • Oracle Veritabanı Nasıl Çalışır?

Network Connections (Ağ Bağlantıları)

Oracle Net Services, Oracle Veritabanı ve ağ iletişim protokolleri arasında dağılmış işlem ve dağıtık veritabanları kolaylaştıran arayüzdür.Haberleşme protokolleri veri iletilir ve bir ağ üzerinden alınan yönteminizi tanımlar.Oracle Net Services, TCP / IP, HTTP, FTP ve WebDAV dahil olmak üzere tüm önemli ağ protokolleri üzerindeki iletişimleri destekler.

Oracle Net Services kullanarak, uygulama geliştiricileri, veritabanı uygulamasında ağ iletişimi destekleme ile ilgili olması gerekmez.Yeni bir protokol kullanılırsa, veritabanı yöneticisi bazı küçük değişiklikler yapar ve uygulama hiçbir değişiklik gerektirmez ve işlevini sürdürür.

Oracle Net Services bir bileşeni olan Oracle Net, Oracle Veritabanı sunucusu bir istemci uygulaması bir oturum için bir ağ kurar ve korur.Bir kere ağ oturumu kurulur, Oracle Net, her iki veri istemci uygulama ve veritabanı sunucusu için bunlar arasındaki mesajlar çevirerek veri kuryeri olarak görev yapar.Oracle Net bu işleri gerçekleştirebilir çünkü ağdaki her bir bilgisayarda yer alır.

Starting Up the Database ( Veritabanı Başlatma )

Oracle veritabanı başlayan ve sistemin bütünlüğünü kullanmak için kullanılabilir duruma getirme için üç adım vardır:
  • Bir örneği başlatın.
  • Veritabanına bağlayın.
  • Veritabanını açın.

Bir veritabanı yöneticisi, Oracle Enterprise Manager, SQL * Plus STARTUP deyimi, srvctl bir komut satırı aracı, ya da Express Edition START komutu kullanarak bu adımları gerçekleştirebilirsiniz.Oracle Veritabanı bir örneğinin başladığında, başlatma parametreleri değerlerini belirlemek için sunucu parametre dosyası (spfile) veya başlatma parametre dosyası (pfile'ı) okur.Sonra, bir SGA ayırır ve arka plan işlemleri oluşturur.

How Oracle Database Works

Aşağıdaki örnekte, en temel düzeyde Oracle Veritabanı işlemleri açıklar. Bu, kullanıcı ve ilişkili sunucu işlemi ayrı bilgisayarlarda bir Oracle Veritabanı yapılandırması, bir ağ üzerinden bağlı olduğunu göstermektedir.
  1. Oracle Veritabanı bir örneğini çalıştıran bilgisayarda başladığında, çoğu zaman host ya da veritabanı sunucusu çağrılmaktadır.
  2. Bir uygulama çalıştıran bir bilgisayar (yerel bir bilgisayar ya da istemci iş istasyonu), bir kullanıcı işlemi uygulaması çalışır.Istemci uygulaması doğru Oracle Net Services sürücü kullanarak sunucuya bir bağlantı kurmaya çalışır.
  3. Sunucu uygun Oracle Net Services sürücü çalışıyor.Uygulama sunucusuna bağlantı isteği algılar ve kullanıcı süreci adına adanmış bir sunucu işlemi oluşturur.
  4. Kullanıcı bir SQL deyimi çalışır ve transaction işler. Örneğin, kullanıcı bir tabloda bir satır isimi değiştirir.
  5. Sunucu işlemi bildirimi alır ve benzer bir SQL deyimi içeren herhangi bir paylaşımlı SQL alanı için paylaşılan havuzu (SGA bileşeni) kontrol eder. Paylaşılan bir SQL alanı bulunursa, daha sonra istenen veri sunucu işlemi kullanıcının erişim ayrıcalıklarını kontrol eder ve mevcut paylaşımlı SQL alanı bildirimi işlemek için kullanılır.Değilse, o zaman yeni bir paylaşımlı SQL alanı deyimi için tahsis edilir, bu yüzden çözümlenebilir ve işlenebilir..
  6. Sunucu işlemi gerekli veri değerleri ve gerçek veri dosyası (tablo) veya SGA depolanmış olanlarından yalnızca birini alır.
  7. Sunucu işlemi sistem global alanda veri değiştirir. veritabanı yazıcı süreci (DBWn) diske kalıcı olarak bloklar değiştirilmiş yazıyor ve bunu yaparken verimli olur.
  8. Işlem başarılı olursa, uygulama sunucu işlemi ağ üzerinden bir mesaj gönderir. Başarılı değilse, o zaman bir hata mesajı iletilir.
  9. Tüm bu süreci boyunca, müdahale gerektiren durumlar için diğer arka plan süreçlerini izlerken, çalıştırır. Buna ek olarak, veritabanı sunucusu diğer kullanıcıların işlemlerini yönetir ve aynı veri talep işlemleri arasındaki çekişmesini önler.



Daha fazla Türkçe Kaynak Eklemek İstersek:
*Tonguç bey'in sunumlarından aldığım bazı notları paylaşacağım bu makalede:

• Oracle instance'ı şu dört durumdan birinde olabilir: CLOSED, UNMOUNT, MOUNT, OPEN.
CLOSED MODE, instance'ın kapalı olduğu moddur. Bu durumda sadece sysdba olarak bağlanarak instance açılabilir. Instance'ın açılabilmesi için, initialization parameter dosyası veya server parameter dosyası(SPFILE) okunur. Bu dosyalar instance ve database ile ilgili parametereleri içerir. UNMOUNT MODE, instance'ın açılmış, fakat database'in mount edilmemiş durumudur. SPFILE veya initialization parameter file okunur, fakat control dosyaları okunmaz. Control dosyalarımızla ilgili bir problemimiz varsa, instance'ımızı bu mode'da başlatıp problemimizi çözebiliriz. MOUNT MODE, instance açılmış, database mount edilmiş, fakat database açılmamış durumudur. Mount etmek, database'i o instance ile ilişkilendirmek olarak düşünülebilir. Oracle, database'e ait bilgiler (datafileların konumu, redolog dosyalarının konumu vs.) içeren control dosyasını okuyarak database'i mount eder. OPEN MODE, herşeyin açık, database'in ayakta olduğu mode'dur. Redolog dosyaları ve datafile'lar okunur. Database, bir önceki zamanda anormal bir şekilde sonlanmışsa instance recovery yapılır, undo tablespace edinilir.

Database'in her durumunu örneklemek için aşağıdaki kod parçasını çalıştırdım:

C:\oraclexe\app\oracle\admin\XE\udump>sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Cum Tem 13 09:17:54 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter user-name: sys as sysdba
Enter password:

Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> quit
Disconnected from Oracle Database 10g Express Edition Release 10.2.0.1.0 - Produ
ction

Açık bir instance'da olduğum için önce kapattım. Şu anda instance'ımız CLOSED mode'unda. Şimdi login olmaya çalışalım:

C:\oraclexe\app\oracle\admin\XE\udump>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Cum Tem 13 09:20:14 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn tcell/tcell
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

Gördüğünüz gibi, normal kullanıcılar login olamıyor, çünkü database kapalı. Sadece sys, sysdba olarak login olabilir.

SQL> conn sys as sysdba
Enter password:
Connected to an idle instance.

Bağlandık ama idle instance yazıyor. Instance kapalı demek. Bu noktada herhangi bir tabloya erişmeye çalışalım.

SQL> select * from t;
select * from t
*
ERROR at line 1:
ORA-01034: ORACLE not available

Elbette erişemiyoruz. Şimdi NOMOUNT mode'a alalım:

SQL> startup nomount
ORACLE instance started.

Total System Global Area  146800640 bytes
Fixed Size                  1286220 bytes
Variable Size              62918580 bytes
Database Buffers           79691776 bytes
Redo Buffers                2904064 bytes

Instance açıldı, parametre dosyası okundu ve SGA allocate edildi. Şimdi database'imiz NOMOUNT Mode'da. Bu noktada bir tabloya erişmeye çalışalım:

SQL> select * from t;
select * from t
              *
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only

Hımm, bak sen! Neymiş o fixed table/view'lar?

SQL> select object from v$access;

OBJECT
--------------------------------------------------------------------------------

GV$ACCESS
V$ACCESS
X$KGLDP
X$KGLLK
X$KGLOB
X$KSUSE

6 rows selected.

Sadece bu 6 sistem tablosu tanımlı. Şimdi database'imizi mount edelim, ve yine tabloya erişmeye çalışalım:

SQL> alter database mount;

Database altered.

SQL> select * from t;
select * from t
              *
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only

Yine aynı durumdayız. Database daha açık değil. User'lar da tanımlı değil. Yine sadece sysdba bağlanıp database'ı açabilir. Şimdi database'i açalım:

SQL> alter database open;

Database altered.

NAME
--------------------------------------------------
bilal

Sonunda okuduk tablomuzu :) Şu anda database tamamiyle ayakta. Şimdi bir kaç deneme daha yapalım, ama önce instance'ı yine kapatalım:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area  146800640 bytes
Fixed Size                  1286220 bytes
Variable Size              62918580 bytes
Database Buffers           79691776 bytes
Redo Buffers                2904064 bytes
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01507: database not mounted

Unmount iken direk OPEN mode'a almaya çalıştık yemedi :) Peki bütün bu adımları yapmak zorunda mıyız db'yi açmak için? Tabiki hayır. Şimdi direk startup diyelim bakalım ne olacak:

SQL> shutdown immediate
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  146800640 bytes
Fixed Size                  1286220 bytes
Variable Size              62918580 bytes
Database Buffers           79691776 bytes
Redo Buffers                2904064 bytes
Database mounted.
Database opened.
SQL>

Download Code

Gördüğünüz gibi tek tek bütün işlemleri bizim yerimize yaptı. Herhangi bir sorun yok parametre dosyasında veya control dosyasında. DB açıldı.

• Database kapama komutu 3 türlüdür: SHUTDOWN, SHUTDOWN IMMEDIATE ve SHUTDOWN ABORT.
SHUTDOWN normal kapamadır. Mevcut transactionların sonlanmasını bekler, bu arada yenilerine izin verilmez. Hepsi sonlanınca kapanır. Bu özellikle çalışan sistemlerde pek kullanılmaz. SHUTDOWN IMMEDIATE, bütün aktif transaction'ları rollback yaparak hemen kapanır. Genelde bu kullanılır. SHUTDOWN ABORT ise bütün işlemleri anında iptal ederek direk kapatır. Elektriği çekmekle aynı şey denebilir :) Anormal bir kapanmadır. Bu şekilde kapatılırsa ilk açılışta instance recovery yapılır.
"Database and Instance Startup and Shutdown" Concepts Guide'dan 12. Chaper'ın konusu. Biraz daha ayrıntısını okumak isterseniz: http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/startup.htm

OLAP: Online Analytic Processing demektir. OLAP sistemler raporlama sistemleridir örneğin. Bu sistemlerde uzun süreli büyük sorgular çalıştırılır. Optimizaysonu bu ihtiyaçlar göz önünde bulundurularak yapılır. Örneğin, su sistemlerde çok fazla blok okuma ve harddisk'te büyük sort işlemleri yapılacağı düşünülerek configüresyon ve hardware olarak ona göre optimize edilebilir

OLTP: Online Transaction Processing demektir. OLTP sistemler normal transaction bazında sistemlerdir. Bu sistemlerde kısa sürelik çok sorgu çalıştırılır. Bu sistemlerde aynı anda bir çok kullanıcı bağlı olup çok sayıda ufak sorgu çalıştırılacağı düşünülerek ona göre tune edilir.

• Bir SQL sorgusu sırayla şu adımlardan geçer:
Parse, Bind, Execute ve Fetch. Sorgu önce parse edilir. Sonra varsa bind değerleri yerleştirilir. Sonra çalıştırılır ve sonuç fetch edilir. Parsing genelde çok maliyetli bir iştir. Sorgu ve etkilenen objeler analiz edilerek execution plan oluşturulur. Bu nedenle, aynı sorgudan yüzlerde kere çalışacaksa, yüzlerce kez bunu yapmamamak adına, Oracle her çalıştırılan sorguya bir hash değeri atar. Çalıştırılmak istenen sorgu ile daha önce çalıştırılan bir sorgunun hash değeri aynı ise, yani aynı sorgu bir kez daha çalıştırılacaksa tekrar parse edilmez. Böylece parse maliyetinden kurtulunur. Hash değeri SQL'in text'ine göre atandığı için, ufak harf farklılıkları, fazladan boşluk, büyük/küçük harf farkı gibi şeylerde sorgu aynı olsa bile farklı hash değerleri üretilir. Buna dikkat etmek gerekir. Bir de, bind variable kullanma konusunun öne burada kendini gösterir. Bu konunun ayrıntısına bind variable'lar ile ilgili sunumdan sonra gireceğiz.

Beni almış olduğum notların bir kısmı bu kadar. Bunun dışında bir çok farklı konulara da giriş yapıldı, fakat onlar ilerleyen sunumlarda ayrıntılarıyla gelecek, o yüzden burada yazmaya gerek görmedim. Bu makalede genelde startup-shutdown üzerinde durmuş olduk.




(Alıntıdır: http://www.bhatipoglu.com/entry/13/turkcell-staj-gunlugu-5--startup-shutdown )
*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.
  1. Oracle veritabanı “host” ya da “database server” olarak adlandırılan bilgisayarda çalışıyor vaziyettedir.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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