Oracle 10g application express veritabanı bağlantıları için APACHE mod_plsql modülünü kullanıyor. Sistem yoğun çalıştığında database tarafındaki sessionların asılı kalması gibi bir problem yaşandı.
Aşağıdaki bağlantıda mod_plsql ayarları için kullanabileceğimiz parametre ve açıklamaları yer alıyor.
PlsqlIdleSessionCleanupInterval 1
(Increasing this parameter allows pooled database connections to remain available, in the pool, for the specified time)
Default Value: 15 (minutes)
http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b12303/optplsql.htm#1026943
IDLE duruma oturumların temizlenmesi için yukarıdaki parametreyi verdim, sonuç olarak database tarafında asılı kalan 400 küsür APEX_PUBLIC_USER idle session sayısı 30, 40′lara kadar düştü,
[oracle@hercules Oracle]$ find . -name ‘opmn.xml’
./Middleware/Oracle_WT1/instances/instance1/config/OPMN/opmn/opmn.xml
./Middleware/asinst_1/config/OPMN/opmn/opmn.xml
[oracle@hercules Oracle]$ export ORACLE_INSTANCE=/home/oracle/Oracle/Middleware/asinst_11
[oracle@hercules Oracle]$ /home/oracle/Oracle/Middleware/Oracle_IDM1/opmn/bin/opmnctl status -l
Processes in Instance: asinst_1
———————————+——————–+———+———-+————+———-+———–+——
ias-component | process-type | pid | status | uid | memused | uptime | ports
———————————+——————–+———+———-+————+———-+———–+——
ohs1 | OHS | 30897 | Alive | 1053387021 | 419332 | 0:51:55 | https:10000,https:4444,http:7778
ovd1 | OVD | 28924 | Alive | 1053387015 | 703912 | 0:56:31 | https:8899,ldaps:7501,ldap:6501
oid1 | oidldapd | 28784 | Alive | 1053387013 | 95256 | 0:56:47 | N/A
oid1 | oidldapd | 28788 | Alive | 1053387014 | 488836 | 0:56:46 | N/A
oid1 | oidmon | 28775 | Alive | 1053387012 | 145944 | 0:56:47 | LDAPS:3131,LDAP:3060
EMAGENT | EMAGENT | 29576 | Alive | 1053387016 | 63836 | 0:56:20 | N/A
Database Resident Connection Pooling (DRCP) oracle 11g ile gelen önemli yeniliklerdendir. PHP kullanarak yapılan dedicated oracle veritabanı işlemleri, fazla talep olduğunda problemlere neden olmaktadır. 11g ile gelen DRCP özelliğini kullanarak bu problemi çözebilirsiniz.
oracle php performans problemlerini sona erdirmek için Oracle RAC + DRCP özelliğine sahip bir mimariye sahip olmalısınız. dedicated oracle database’e php ile direct connection kurmanın doğal sonucu performans problemleridir.

Teknik detaylar için aşağıdaki belgeye gözatabilirsiniz.
http://www.oracle.com/technetwork/topics/php/whatsnew/php-scalability-ha-twp-128842.pdf
11g kullanıyorsanız; DRCP özelliğini şu şekilde aktif hale getirebilirsiniz.
SQL>execute dbms_connection_pool.start_pool;
SQL> select * from gv$cpool_stats;
SQL> select component, round(current_size/1024/1024) current_size,
round(min_size/1024/1024) min, round(max_size/1024/1024) max
from v$memory_dynamic_components
COMPONENT,CURRENT_SIZE,MIN,MAX
shared pool,1792,1792,1792
large pool,64,64,64
java pool,256,256,256
streams pool,128,128,128
SGA Target,3136,3136,3136
DEFAULT buffer cache,832,832,832
KEEP buffer cache,0,0,0
RECYCLE buffer cache,0,0,0
DEFAULT 2K buffer cache,0,0,0
DEFAULT 4K buffer cache,0,0,0
DEFAULT 8K buffer cache,0,0,0
DEFAULT 16K buffer cache,0,0,0
DEFAULT 32K buffer cache,0,0,0
Shared IO Pool,0,0,0
PGA Target,1664,1664,1664
ASM Buffer Cache,0,0,0
Oracle database firewall ile database sunucunuzu ataklara karşı daha duyarlı hale getirebilirsiniz. Oracle database firewall network seviyesinde filtreleme yapar. White list, black list, exception list policies özellikleriyle sorgular için filtreleme yapmanıza imkan tanır.

White list özelliğinden faydalanarak izin verilen sorgular dışında sorgu çalıştırılmasını engelleyebilir, istenmeyen sorgu taleplerini alert özelliğinden faydalanarak takip edebilirsiniz. Operasyonel veritabanlarınız için sert güvenlik tedbirleri almanıza yardımcı olacak üründür.
Technical Information |
|
| Data Sheet | |
| Overview White Paper | |
| F5 and Database Firewall Integration | |
| Frequently asked questions | |
oracle asm size of files, learn file size oracle asm,
Eğer ASM (Automatic Storage Management) oturumunda;
ASMCMD> ls -s
ile dosya sizelarını göremiyorsanız,
Öncelikle ASM’e ait database instance’ına girmek için çevre değişkenleri aşağıdaki gibi ayarlanır ve sqlplus oturumu açılır. Çalıştırılan sorguyla ASM üzerindeki dosya size’larını görüntüleyebilirsiniz. active data guard çalışır hale getirmeden önce primary/standby taraflarındaki datafile’ları kontrol etmem için lazım olmuştu.
oracle$ export ORACLE_HOME=/u01/app/11.2.0/grid
oracle$ export ORACLE_SID=+ASM1
oracle$ sqlplus sys as sysdba
column MBYTES format 999,999;
column NAME format a50;
select a.bytes/(1024*1024) mbytes, b.name
from v$asm_file a, v$asm_alias b
where a.type != ‘ARCHIVELOG’ — avoid for readability
and a.group_number = b.group_number
and a.file_number = b.file_number
and a.incarnation = b.file_incarnation
order by b.name;
ASM Views
The ASM configuration can be viewed using the V$ASM_% views, .
| View | ASM Instance | DB Instance |
|---|---|---|
V$ASM_ALIAS |
Displays a row for each alias present in every disk group mounted by the ASM instance. | Returns no rows |
V$ASM_CLIENT |
Displays a row for each database instance using a disk group managed by the ASM instance. | Displays a row for the ASM instance if the database has open ASM files. |
V$ASM_DISK |
Displays a row for each disk discovered by the ASM instance, including disks which are not part of any disk group. | Displays a row for each disk in disk groups in use by the database instance. |
V$ASM_DISKGROUP |
Displays a row for each disk group discovered by the ASM instance. | Displays a row for each disk group mounted by the local ASM instance. |
V$ASM_FILE |
Displays a row for each file for each disk group mounted by the ASM instance. | Displays no rows. |
V$ASM_OPERATION |
Displays a row for each file for each long running operation executing in the ASM instance. | Displays no rows. |
V$ASM_TEMPLATE |
Displays a row for each template present in each disk group mounted by the ASM instance. | Displays a row for each template present in each disk group mounted by the ASM instance with which the database instance communicates. |
select a.name DiskGroup, b.disk_number Disk#, b.name DiskName, b.total_mb, b.free_mb, b.path, b.header_status from v$asm_disk b, v$asm_diskgroup a where a.group_number (+) =b.group_number order by b.group_number, b.disk_number, b.name;
Oracle DBMS_RANDOM.VALUE fonksiyonunu kullanarak aşağıdaki şekilde rasgele sayılar üretebilirsiniz.
SELECT ROUND (DBMS_RANDOM.VALUE (0, 9)) || ROUND (DBMS_RANDOM.VALUE (0, 9)) || ROUND (DBMS_RANDOM.VALUE (0, 9)) || ROUND (DBMS_RANDOM.VALUE (0, 9)) AS PIN from dual
broker aracını kullanarak switchover, failover ve check işlemlerini daha kolay gerçekleştirebiliriz;
primary ve standby (guard) tarafınının RAC olduğu bir yapı için broker configuration dosyaları mutlaka shared bir alanda tutulmalıdır. Yani eğer ASM kullanıyorsanız tüm node’larınızın configuration dosyalarına erişebilmesi için DG_BROKER_CONFIG_FILE1 ve DG_BROKER_CONFIG_FILE2 dosyaları asm içerisinde oluşmalıdır. Yapmazsanız Warning: ORA-16532: Data Guard broker configuration does not exist uyarı ile karşılaşacaksınız.
Kurulum için kullandığım komutlar aşağıdaki gibi;
Hem primary side ‘da hemde standby tarafında;
alter system set dg_broker_config_file1='+DATA/dr1RAC.dat' scope=both sid='*'; alter system set dg_broker_config_file2='+DATA/dr2RAC.dat' scope=both sid='*'; ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH sid='*';
dgmgrl içerisinde primary side tarafında;
CREATE CONFIGURATION 'GUARDCONF' AS PRIMARY DATABASE IS 'rac' CONNECT IDENTIFIER IS 'rac'; ADD DATABASE 'grac' AS CONNECT IDENTIFIER IS 'grac'; ENABLE CONFIGURATION;
Bunun dışında static listener tanımları yapılmalıdır. Static listener tanımlarını grid kullansanızda db tarafında tanımlamanız gerekiyor, switchover-failover işlemleri sonrası broker ancak bu şekilde db ‘e tekrar erişebiliyor,
Primary ve standby side için örnek listener tanımı; Global_dbname, sid_name, service_name’i standby tarafına uygun değişiklikleri yaparak aynı şekilde kullanabilirsiniz.
/u01/app/oracle/product/11.2.0/db_1/network/admin
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521))))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = kkrac)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = rac1)
(SERVICE_NAME = rac)
)
(SID_DESC =
(SID_NAME = rac1)
(SERVICE_NAME = rac)
(GLOBAL_DBNAME = rac_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
)
)
DGMGRL> switchover to grac
Performing switchover NOW, please wait…
Operation requires a connection to instance “grac2″ on database “grac”
Connecting to instance “grac2″…
Connected.
New primary database “grac” is opening…
Operation requires shutdown of instance “rac1″ on database “rac”
Shutting down instance “rac1″…
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance “rac1″ on database “rac”
Starting instance “rac1″…
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Database mounted.
Database opened.
Switchover succeeded, new primary is “grac”
Orac11g release2 RAC kurulumu başarıyla gerçekleştirdikten sonra, 2 node ‘um için single instance guard ayarlamalarını gerçekleştirdim. Amacım guard tarafına switchover işlemini yapmak ve tekrar yaptığım switchover işlemini RAC tarafına geri çekmek;
Standby tarafında ve rac tarafında broker’ı aktif hale getirip gerekli konfigurasyonu aşağıdaki gibi gerçekleştirdim.
ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH sid='*'; // sqlplus
DGMGRL>CREATE CONFIGURATION 'KKGUARDCONF' AS PRIMARY DATABASE IS 'kkrac' CONNECT IDENTIFIER IS 'kkrac'; DGMGRL>ADD DATABASE 'kkguard' AS CONNECT IDENTIFIER IS 'kkguard'; DGMGRL>ENABLE CONFIGURATION;
buraya kadar herhangi bir problem yok, primary side tarafında oluşan redo logları; standby tarafına transport işlemi başarıyla gerçekleşiyor.
DGMGRL> switchover to ‘kkguard’
işlemi primarydb imi standby tarafına çekiyor. Fakat burada dikkat edilmesi gereken detay; kkscan ile dinlenilen listenerlara switchover işlemi sonrasını erişilememesi. Bu yüzden warning mesajları alıyorsunuz.
Çözüm içinse static listener tanımlarının yapılması gerekiyor.
/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = KKRAC) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = KKRAC) ) (SID_DESC = (SID_NAME = KKRAC) (GLOBAL_DBNAME = KKRAC_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = kkrac1)(PORT = 1521)(IP = FIRST)) ) )
Anahter kelimeler: oracle 11gr2 rac broker switchover listener warning