Oracle Redo Log Switch Map

Oracle veritabanında redo logların saatlik kaç kez switch olduğu bilgisini aşağıdaki sql komutu kullanarak öğrenebilirsiniz.

set linesize 300
set pagesize 5000
column 00 format 999 heading "00"
column 01 format 999 heading "01"
column 02 format 999 heading "02"
column 03 format 999 heading "03"
column 04 format 999 heading "04"
column 05 format 999 heading "05"
column 06 format 999 heading "06"
column 07 format 999 heading "07"
column 08 format 999 heading "08"
column 09 format 999 heading "09"
column 10 format 999 heading "10"
column 11 format 999 heading "11"
column 12 format 999 heading "12"
column 13 format 999 heading "13"
column 14 format 999 heading "14"
column 15 format 999 heading "15"
column 16 format 999 heading "16"
column 17 format 999 heading "17"
column 18 format 999 heading "18"
column 19 format 999 heading "19"
column 20 format 999 heading "20"
column 21 format 999 heading "21"
column 22 format 999 heading "22"
column 23 format 999 heading "23"
column 24 format 999 heading "24"
column "Day" for a5
column INST_ID for a7
column DAY_S for a8
column date_s for a14
prompt
prompt Redo Log Switches
prompt
select
CASE INST_ID WHEN 1 THEN date_str END date_s,
to_char(INST_ID) INST_ID,
CASE INST_ID WHEN 1 THEN "Day" END day_s,
"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"  from  (SELECT trunc (first_time) date_str,  INST_ID,
to_char (trunc (first_time),'Dy') "Day",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 0, 1)) "00",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 1, 1)) "01",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 2, 1)) "02",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 3, 1)) "03",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 4, 1)) "04",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 5, 1)) "05",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 6, 1)) "06",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 7, 1)) "07",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 8, 1)) "08",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 9, 1)) "09",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 10, 1)) "10",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 11, 1)) "11",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 12, 1)) "12",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 13, 1)) "13",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 14, 1)) "14",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 15, 1)) "15",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 16, 1)) "16",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 17, 1)) "17",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 18, 1)) "18",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 19, 1)) "19",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 20, 1)) "20",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 21, 1)) "21",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 22, 1)) "22",
sum (decode (to_number (to_char (FIRST_TIME, 'HH24')), 23, 1)) "23"
from gv$log_history
where trunc(first_time) > sysdate-30
group by INST_ID, trunc(first_time)
order by trunc(first_time) DESC, INST_ID );

Redo logların anlık durumlarını kontrol etmek için aşağıdaki komutu kullanabilirsiniz.

set linesize 2000
set pagesize 2000
col REDOLOG_FILE_NAME for a70
SELECT
    a.GROUP#,
    a.THREAD#,
    a.SEQUENCE#,
    a.ARCHIVED,
    a.STATUS,
    (a.BYTES/1024/1024) AS SIZE_MB,
    b.MEMBER    AS REDOLOG_FILE_NAME
FROM v$log a
JOIN v$logfile b ON a.Group#=b.Group#
ORDER BY 2, a.GROUP# ASC; 

Zaman içerisinde sql lerin devamını ekleyeceğim.

Oracle Enable/Disable Unified Audit

Merhaba arkadaşlar, bu yazıda oracle veritabanlarında unified auditing özelliğini açmayı göstereceğim. Unified özelliğinin açılması sunucu üzerinde bulunan tüm veritabanlarının kapalı olması gerekmektedir.

Veritabanı üzerinde unified auditin açık olup olmadığı kontrol aşağıdaki gibi yapılabilir.

SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
VALUE
-------
NO

Unified audit özelliği aşağıdaki şekilde açılır.

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_on ioracle

İşlem sonrasında unified audit özelliği açılmış olacaktır.

SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
VALUE
-------
YES

Veritabanı üzerinde bulunan logları aşağıdaki şekilde purge edebilirsiniz.

BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp =>  FALSE);
END;
/ 

OS üzerinde bulunan auditleri aşağıdaki şekilde purge edebilirsiniz

EXEC DBMS_AUDIT_MGMT.DROP_PURGE_JOB('CLEANUP_OS_DB_AUDIT_RECORDS');
BEGIN
DBMS_AUDIT_MGMT.DEINIT_CLEANUP(
AUDIT_TRAIL_TYPE   => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL);
END;
/

Son olarak açık olan unified audit aşağıdaki gibi kapatılabilir.

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_off ioracle 
SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

VALUE
-------
NO

[Resolved]: Uncaught Error: Call to undefined function oci_connect()

Php ile oracle veritabanlarına bağlanmaya balıştığınızda aşağıdaki gibi bir hata alıyorsanız çözümü bu yazıda bulabilirsiniz.

<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=testdb user=testusr password=12345");
Fatal error: Call to undefined function oci_connect() in /var/www/html/index.php on line 3

İlk olarak oracle download sayfasından ihtiyacınız olan client sürümünü indirebilirsiniz. Basic ve sdk paketini mutlaka indirmelisiniz. Diğer paketleri ihtiyacınız doğrultusunda indirebilirsiniz. Ben aşağıdaki tüm paketleri indirdim.

instantclient-basic-linux.x64-19.3.0.0.0dbru.zip
instantclient-sqlplus-linux.x64-19.3.0.0.0dbru.zip
instantclient-tools-linux.x64-19.3.0.0.0dbru.zip
instantclient-sdk-linux.x64-19.3.0.0.0dbru.zip
instantclient-jdbc-linux.x64-19.3.0.0.0dbru.zip
instantclient-odbc-linux.x64-19.3.0.0.0dbru.zip

İndirdiğiniz tüm paketleri /opt/oracle dizini altına çıkartın.

# mkdir /opt/oracle
# unzip instantclient-basic-linux.x64-19.3.0.0.0dbru.zip -d /opt/oracle/
# unzip instantclient-sqlplus-linux.x64-19.3.0.0.0dbru.zip -d /opt/oracle/
# unzip instantclient-tools-linux.x64-19.3.0.0.0dbru.zip -d /opt/oracle/
# unzip instantclient-sdk-linux.x64-19.3.0.0.0dbru.zip -d /opt/oracle/
# unzip instantclient-jdbc-linux.x64-19.3.0.0.0dbru.zip -d /opt/oracle/
# unzip instantclient-odbc-linux.x64-19.3.0.0.0dbru.zip -d /opt/oracle/
# ls /opt/oracle
instantclient_19_3
# mv instantclient_19_3 instantclient

Dizin yapısı yukarıdaki gibi olacaktır.

Eğer httpd kullanıyorsanız aşağıdaki dosyaların en altına ilgili komutları kopyalayın.

# cat /etc/sysconfig/httpd
LD_LIBRARY_PATH=/opt/oracle/instantclient
PATH=/opt/oracle/instantclient:$PATH
ORACLE_HOME=/opt/oracle/instantclient 
# cat /etc/bashrc
export LD_LIBRARY_PATH=/opt/oracle/instantclient
export PATH=/bin:/opt/oracle/instantclient:$PATH
export ORACLE_HOME=/opt/oracle/instantclien

Bu ayarlamaları yaptıktan sonra oci8 modülü kurulması gerekmektedir. Bu modülü pecl veya remi repository’i tanıtarak yum install şeklinde kurabilirsiniz. pecl ile aşağıdaki şekilde kurabilirsiniz.

# pecl download oci8
# tar -zxf oci8-1.4.10.tgz
# cd oci8-1.4.10

phpize ile paketi kurulum için hazırlamak gerekiyor. phpize kurulu değilse yum install phpize şeklinde kurabilirsiniz.

# phpize
# ./configure -with-oci8=shared,instantclient,/opt/oracle/instantclient
veya
# ./configure -with-oci8=shared,$ORACLE_HOME

Son aşama olarak paket kurulumunu aşağıdaki gibi gerçekleştirebilirsiniz.

# make install