ANASAYFA MCSE ORACLE LINUX TEMEL PC SINEMA SPOR
Merak ettiğiniz veya öğrenmek istediğiniz konuları bize yazın.Makalelerini yayınlayalım.Mail adreslerimiz:
pektas.isil@gmail.com,acakmakli1983@gmail.com Bekliyoruz...

merhaba

Tüm bizi takip edenlere merhaba,
Öncelikle kendimizi tanıtmak gerekirse isimlerimiz, blogumuzun adından da anlaşılacağı üzere Işıl ve Ahmet. Çanakkale Onsekiz Mart Üniversitesi'nde Bilgisayar Mühendisi olarak 2002 - 2006 yılları arasında öğrenim gördük.Bu bloğu açmaktaki amacımız ise iş hayatımızda karşılaştığımız problemleri, size faydalı olacağını düşündüğümüz, kaynak olarak nitelendirilebilecek makaleleri, zaman zaman da iş hayatının biraz dışına çıkarak sosyal hayatla ilgili düşündüklerimizi veya beğendiğimiz ve beğenmediğimiz gelişmeleri aktarmak olacak. Umarım beraber hepimize faydalı olacak ve hoşça vakit geçirebileceğimiz konularda buluşuruz...

8 Mart 2010 Pazartesi

Oracle Veritabanında Profile ile Parola ve Kaynak Yönetimi Sağlamak

Oracle da profile parola kısıtlamaları ve kaynak yönetimi sağlamak için oluşturulur.
Kaynak yönetimi bilindiği gibi Enterprise Edition ın bir özelliği fakat Oracle profile kullanarakta bizlere Standard Edition'da da kaynak yönetimi yapma imkanı sağlamaktadır.Tabi bu işlemler daha yüzeysel yapılmaktadır.

Öncelikle database imizde var olan profile adlarına ve kontrol tiplerine bakalım,

SQL> desc dba_profiles
Name Null? Type
----------------------------------------- -------- ----------------------------
PROFILE NOT NULL VARCHAR2(30)
RESOURCE_NAME NOT NULL VARCHAR2(32)
RESOURCE_TYPE VARCHAR2(8)
LIMIT VARCHAR2(40)

SQL> select distinct profile from dba_profiles;

PROFILE
------------------------------
PROFDBA
PROFORD
DEFAULT

Parola

SQL> select distinct resource_name,resource_type from dba_profiles order by 2,1;

RESOURCE_NAME RESOURCE
-------------------------------- --------
COMPOSITE_LIMIT KERNEL
CONNECT_TIME KERNEL
CPU_PER_CALL KERNEL
CPU_PER_SESSION KERNEL
IDLE_TIME KERNEL
LOGICAL_READS_PER_CALL KERNEL
LOGICAL_READS_PER_SESSION KERNEL
PRIVATE_SGA KERNEL
SESSIONS_PER_USER KERNEL
FAILED_LOGIN_ATTEMPTS PASSWORD
PASSWORD_GRACE_TIME PASSWORD

RESOURCE_NAME RESOURCE
-------------------------------- --------
PASSWORD_LIFE_TIME PASSWORD
PASSWORD_LOCK_TIME PASSWORD
PASSWORD_REUSE_MAX PASSWORD
PASSWORD_REUSE_TIME PASSWORD
PASSWORD_VERIFY_FUNCTION PASSWORD


Not: Kernel ile ilgili parametrelerin aktif olabilmesi için resource_limit parametresi "TRUE" olmalıdır.

SQL> show parameter resource_limit

NAME TYPE VALUE
------------------------------------ -------------------------------- ----------------------------
resource_limit boolean FALSE

Password limitlerinin aktif olması bu parametreye bağlı değildir.Biz her iki tip limiti belirleyeceğimiz için parametreyi "TRUE" yapıyoruz.

SQL> alter system set resource_limit=TRUE;

System altered.


Öncelikle kernel limitlerini sırasıyla inceleyelim;

COMPOSITE_LIMIT : Veritabanında açılan bir bağlantının toplam kullanacağı kaynak sınırını belirler.CPU_PER_SESSION,CONNECT_TIME,LOGICAL_READS_PER_SESSION limitleri toplamıdır.

CONNECT_TIME : Açılan bir bağlantının dakika cinsinden veritabanına bağlı kalacağı süredir.

CPU_PER_CALL : Veritabanından istenen bir SQL vs gibi isteğin kullanabileceği centisecond (= 1/100 saniye) cinsinden CPU zamanıdır.

CPU_PER_SESSION : Bir bağlantının kullanabileceği centisecond cinsinden CPU zamanıdır.

IDLE_TIME : Veritabanına bağlanan session'ın dakika cinsinden idle da bekleyebileceği süre sınırı için kullanılır.

LOGICAL_READS_PER_CALL : Bir SQL cümlesinin,SQL sonlanmadan okuyabileceği block sayısının sınırını belirlememizi sağlar.

LOGICAL_READS_PER_SESSION : Bir bağlantının okuyabileceği block sayısını sınırlar.

PRIVATE_SGA : Shared Server mimari ile çalışan veritabanlarında bir bağlantının SGA içersinde kullanabileceği memory alanını kilobyte cinsinden sınırlamamızı sağlar.

SESSIONS_PER_USER : Adından da gayet net anlaşıldığı gibi bir kullanıcı ile bağlanılabilecek session sayısını ayarlamamızı sağlar.

Şimdide parola ile ilgili kısıtlamalara bakalım;

FAILED_LOGIN_ATTEMPTS : Kullanıcı hesabının kilitlenmesi için girilebilecek yanlış parola sayısını belirlememizi sağlar.

PASSWORD_GRACE_TIME : Password_life_time parametresindeki süre bittikten sonra kullanıcılara yeni paralo vermeleri için gerekli süreyi tanımlamızı sağlar.Bu süre zarfında eski paralo kullanılamaz durumdadır.

PASSWORD_LIFE_TIME : Kullanıcıya ait parolanın kullanılabileceği gün sayısını sınırlayan parametredir.

PASSWORD_LOCK_TIME : Failed_login_attemps sayısına ulaşıldığında user ın kaç gün kilitli kalacağını belirlememize yarayan parametredir.

PASSWORD_REUSE_MAX : Bir kullanıcının bir parolayı tekrar kullanılabilmesi için gerekli olan farklı parola sayısını belirler.

PASSWORD_REUSE_TIME : Bir kullanıcıya aynı parolayı tekrar verebilmemiz için gerekli olan gün sayısını sınırlamamızı sağlar.

PASSWORD_VERIFY_FUNCTION : Bu parametre ile parola doğrulama fonksiyonunu belirtebiliriz.

Evet artık profile oluştururken hangi kısıtlamanın ne anlama geldiğini öğrendiğimize göre küçük bir test yapalım.

CREATE PROFILE test LIMIT
SESSIONS_PER_USER 2
CPU_PER_SESSION 10000
CPU_PER_CALL UNLIMITED
CONNECT_TIME 5
IDLE_TIME 1
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
COMPOSITE_LIMIT UNLIMITED
PRIVATE_SGA UNLIMITED
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 150
PASSWORD_REUSE_MAX 5
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME 15
PASSWORD_VERIFY_FUNCTION NULL;


SQL> create user testlimit identified by testlimit profile test;

User created.

SQL> grant dba to testlimit ;

Grant succeeded.

Aynı kullanıcıyla en fazla 2 bağlantı sağlayabiliyoruz.3. bağlantıda aşağıdaki gibi hata aldık.

SQL> conn testlimit/testlimit@testdb
ERROR:
ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit

gibi kontroller yapabilirsiniz.

Varolan bir profile üzerinde aşağıdaki şekilde değişiklik yapabiliriz,

SQL> alter profile test limit CONNECT_TIME 10;

Profile altered.

Varolan kullanıcıların profile larını,

SQL> alter user test profile test;

User altered.

Şeklinde değiştirebiliriz.

Teşekkürler...