4. Managing the Database Instance
Management Framework
Elimizde komponent olarak 3 tane kavram var:
- Database instance
- Listener
- Management interface:
– Database Control
– Management agent (when using Grid Control)
Database instance = SGA + Background Proses bu süreç start olduğu anda instance ilk aşamaya gelmiş oluyor. ( nomount, mount, open)
Listener = uzaktan gelen bağlantının kontrolü listener servisi tarafından yapılır.
Management Interface =
database control = Tek database tek bir kontrol ile yönetiliyor. ( Enterprise Manager)
Biz orcl ismindeki db’nin tüm kontrolü buradan yapabiliriz.
management agent ( grid control) = Farzedelim ki orcl1 diye db var. Bunun interface’i var
ve buradan yönetimini sağlıyoruz. orcl2 diye başka bir db var ve bunun da interface’i
var. orcl3, orcl4 şeklinde devam ediyor. Ve hepside Enterprise Manager ile yönetiliyor.
orcl2 ya da orcl3 ile ilgili herhangi bir iş yapacağımız zaman orcl3’e bağlanıp konsolu açıyoruz ve yönetimi sağlıyoruz. Oracle bu noktada devreye girip bunun grid kontrolle yapılmasını tavsiye ediyor. Tek bir sayfa olsun ve giriş sayfasında db isimleri ya da makinelerinin adı ya da id’leri yazsın Bu durumun avantajı tek sayfa üzerinden sadece tıklama işlemi ile onun yönetim sayfasına bağlanıyoruz. Ayrı ayrı operasyon yönetmektense tek bir ortam üzerinden tüm süreci yönetiriz. ( Grid Control)
Starting and Stopping Database Control
Environment set etmek; Terminalden
. oraenv ORACLE_SID = [orcl] ? orcl // gitmek istediğimiz yer. environment set edildi. The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home1 is /u01/app/oracle $ emctl start dbconsole
srvctl status database -d orcl // db çalışıyor mu kontrolü
srvctl status listener -d listener //listener çalışıyor mu kontrolü
srvctl status asm // asm çalışıyor mu kontrolü
emctl status dbconsole // enterprise manager durum kontrolü
emctl start dbconsole // web tabanlı konsolu açar.
emctl stop dbconsole // web tabanlı konsolu kapat.
https://pcadi.oracle.com:1158/em //enterprise manager url
Windows tarafında ise:
set ORACLE_SID=orcl ile envriromenti set ediyoruz.
diğer kısımları aynen kullanabiliriz.
Oracle Enterprise Manager
https://machine_name:port/em şeklindedir.
Enterprise Manager’ı sadece admin kullanıcıları bağlanır. Konsolu yani veritabanını buradan yönetiriz.
SYSDBA rolü ile bağlantı kurar ve veritabanında her türlü işlemi gerçekleştirir.
Database Home Page
Other Oracle Tools
Birden fazla environment’ı olan sistemlerde home klasörünü olarak neresi olarak gördüğü önemlidir. Buna göre set edilmesi gerekir.
sqlplus / as sysdba ile sqplus’a sysdba olarak direkt bağlanabiliriz.
Eğer hangi instance içinde olduğunu bilmiyorsak
select instance_name from v$instance
ile hangi instance içinde olduğumuzu görürüz.
cd /u01/app/oracle/product/11.2.0/dbhome_1/sqldeveloper/
sqldeveloper’ın bulunduğu dizin.
sqldeveloper.sh // unix
sqldeveloper.exe // windows
Calling SQL*Plus from a Shell Script
./batch_sqlplus.sh sh.batch_sqlplus.sh execute eder.
Account is lock hatası var ise:
alter user hr indentified by hr account unlock
SID ismine dikkat etmek gerekmektedir. Daha sonra şekildeki gibi Success mesajını görürsek başarıyla bağlantı kurabiliriz.
şeklinde istediğimiz işlemleri yapan bir script oluşturuyoruz. ( EOF — End of File. O dizinde durur)
./batch_sqlplus.sh
şeklinde bir çıktı verir. Windows’ta bu script çalışmaz. sh scripti windows’ta çalışmaz. Eğer bir script yazıyorsak ve içinde sql sorguları varsa .sql uzantılı script yazarsak bunlar her ortamda çalışır.
sekaistscript.sql adında bir script oluşturuyoruz.
unix ortamda
vi sekaistscript.sql dedikten sonra açılan ekrandan yapılması gereken script işlemlerini yazabiliriz.
esc basınca bulunduğu insert moddan çıkar
:q kaydetmeden çık
:ws kaydet çık
gedit sekaistscript.sql ile içeriği görebiliriz.
sqlplus hr/hr @sekaistscript.sql --sqlplus'a bağlanmadan yaparız
bunun çalışması için ya doğru dizinde bulunmak lazım ya da full path vermek lazım. Ama en kolayı onu bulunduğun ortamın hemen altında yaratmak olur. Çünkü direkt olarak çalıştırabiliriz.
Parameter File
spfileorcl.ora ve initorcl.ora şeklinde iki tanedir. ( orcl kısmı sid isminine göre değişiklik gösterir)
SPFile server ya da sistem parametre dosyası olarak geçer.Binary formatlıdır. İçeriğine girip değişiklik yapılamaz. Ancak bu dosyanın birebir aynısı PFile olan dosya (initorcl.ora) spfile’ın kopyasıdır. Bir veritabanında spfile dosyası dbhome/ dbs altında bulunur.
show parameter spfile : +DATA/orcl/sp --spfile dosyamızın bulunduğu dizin.
karşılığında value kısmı boş ise pfile ile açıldığını gösterir.
karşılığında value bir değer almış ise spfile ile açıldığını gösterir.
'home/oracle/initorcl.ora' --bizim pfile dosyamız
Bir database açılırken pfile’ın içindeki spfile’ın location bilgisini kontrol eder.
Açılan bir database 11g R2 eğer ASM kurulumu varsa açılıştı hem pfile hem spfile kullanır.
create pfile 'home/oracle/initorcl.ora' from spfile; -- pfile dosyası yaratıyoruz. (Spfile'ı kullanarak)
Artık düzenlenebilir bir spfile dosyamız olmuş olacak.
Using SQL*Plus to View Parameters
Bir parametrenin syntax olarak tam nasıl yazıldığını bilmek zorunda değiliz.
show parameter para
dediğimizde içinde para geçen parametreleri bize listeler.
desc V$parameter --tablonun yapısı. dinamik performans view'ıdır aslında.
Parametrelerin Değerlerinin Değiştirilmesi
Statik parametre özelliğe sahip parametre ise:
Bu parametreyi sadece parametre dosyasında değiştirirsin. (Şuandaki sistemi entegre etmem tekrar açıldığında entegre ederim)
Önemli parametrelerdir. Çalışan sistemde değişiklik database aksiyonunu bozar.
Dinamik Parametre
Bunlar sistem çalışırken değişebilir. Database’i çok etkileyen değişiklikler değildir. Dinamik olanlar iki opsiyonla değişir.
- Session level (açılan session’da değişiklik yapar)
- system level ( sistemde değişiklik yapar)
alter system set open_cursors=500 scope=spfile; --static olan parametreler için --scope değiştirilen parametrenin hangi özellikle set edileceği --şimdi değiştirme açılıştan sonra değiştirir
scope = memory; — memory’de tutar. tekrar açılışta kaybolur
scope= both; — o anlık yansır ve tekrar başlatılınca aynı değerde kalır.
şeklinde değerlerde alabilir.
Parametre değiştirme örneği:
— alter session dediğimiz için sadece o session için değişiklik yapar.
— alter system dersek sistemde değişiklik yapar. sistem içni default scope=botht dur.
Shutting Down an Oracle Database Instance
- Yeni bağlantı gerçekleştirilebilir mi?
- Var olan bağlantılar
- Transaction gerçekleştiren bağlantılar
- Tutarlı Kapatıp kapatmadığı
gibi özelliklere göre yukarıda tablolandırılmıştır.
Normal ve Transactional pek kullanılmaz. Abort hiç bir kontrol yapmadan direkt kapatır. Zorunlu durumlarda tercih edilir. Biz çoğunlukla Immediate tercih edeceğiz. Zaman olarak uzun sürdü ise başka bir session da shu abort yapıp hemen kapatabiliriz. Abort diğerlerini ezer.
(idle bekleyen sorgulamalar demektir.) intstance recovery sürecinde bize yardımcı olan veritabanın tutarlı hale gelmesini sağlayan prosestir.
STARTUP FORCE >> Abort’la kapatıp startup ile açar.
Starting Up an Oracle Database Instance
idle olan instance açmak için:
Nomount = instance başlatılır. Background prosesleri aktif olur
Mount= Control File’larının açık ve senkron şekilde çalışması lazım.
Open= Database gerçek anlamıyla açık hale geliyor. Bütün control file ve instance’ler başlatılıyor. (redolog, datafile açılır. ve işlem yapar hale gelir) Sadece startup gönderirsek bütün basamakları yapmış olur.
Alert Log
Bir veritabanında herhangi bir problem ya da görüntüleme adına bilgi istediğimizde
Alert Log kısmına bakarız. Database kurulduğu andan itibaren içerisi bilgilerle
doldurulan ve illa büyük problemi gösterecek diye bir kaide olmayan amacı sadece bilgi
veren bir görüntüleme alanıdır. Bu alanı Enterprise Manager konsoldan Database Home page > Related Links region >Alert Log Content kısmından ulaşabiliriz.
Dynamic Performance Views
Biz SQL tarafında Data Dictionary views’larını gördük. Şimdi bu başlık altında Dynamic Performance Views’larını göreceğiz. DBA’in işlerini kolaylaştırmak adına tasarlanmış view yapılarıdır. Dynamic Performance Views V$ ile başlayan view’lardır. Bunları ezberlemek münkün değildir. Bu view’lar görüntüleme gerçekleştiren view’lardır.
select * from v$fixed_table -- dinamik view'ları sorgularız
Bu view’lar tamamen bilgi amaçlı ve veritabanında neler olduğunu görmek istediğimizde bakarız.
select * from v$fixed_table where name like '%BACKUP%'
1,2,3 de’ki gibi sorgulamalar ile gerekli görüntülemeler sağlanır.
select name from v$datafile;
Anlık olarak değişikliğe adapte olan view’lardır.
select current_scn from v$database;
Data Dictionary Views
DBA_ ile başlayanlar — her kullanıcının göremediği sadece dba yetkisine sahip olanların
ALL_ ile başlayanlar — user’ın sahip olduğu + yetkisinin olduğu görüntüleyebildiği
USER_ ile başlayanlar — kiminle bağlandı isek onun sahip olduğu view’lar
select * from dictionary;