17 Mayıs 2009

Oracle Service Yönetimi

Oracle Clientları ve applicationlar, Oracle Serverlara erişirken “service” ler üzerinden bağlantı sağlarlar ve servisleri monitor ediyor olmak database üzerindeki iş yükünün dağılımını ve kaynak yönetimi (resource management) yapmamızıda kolaylaştırıyor olmak anlamına gelmektedir.

Oracle servis mantığında her database için 2 internal servis (SYS$BACKGROUND, SYS$USERS) ve 116 application servisi olmak üzere toplamda 118 servis kullanılmasına izin verir. Application servislerinden 1 tanesi ise hali hazırda database SID si ile ilişkilendirilmiş olan servisdir. Bir database için yaratılmış olan servisleri service_names parametresini kullanarak görebiliriz. Yeni bir servis yaratmak için;

- execute DBMS_SERVICE.CREATE_SERVICE('service_name','db_unique_name’);

- execute DBMS_SERVICE.START_SERVICE('service_name');

Applicationların connection stringlerinede bu servis isimlerini vererek yarattığımız servis üzerinden database imize bağlanmalarını sağlayabiliriz.

url="jdbc:oracle:thin:@(DESCRIPTION=
(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=node-1vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=node-2vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=node-3vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=node-4vip)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service_name)))"

Eğer gerek duyulursa bu servisi kullanarak bağlanan application userları için resource management yapılabilir yani eğer bir user bu servis üzerinden connection açmış ise, diğer bu servis üzerinden bağlanmış kullanıcılar ile ortak bir havuzu kullanıyorlarmış gibi yönetilebilirler. Örneğin, toplam session açma sayıları, idle kalabilme süreleri, parallel çalışabilme miltarları gibi kısıtlamalar yapılabilir.