Oracle etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Oracle etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

11 Nis 2015

Enterprise Manager Start - Stop - Status

Enterprise Manager

https://machine_name:port/em


emctl start dbconsole                  : Enterprise Manager servisini açar.

emctl stop dbconsole                   : Enterprise Manager servisini kapatır.

emctl status dbconsole                : Enterprise Manager servisi hakkında bilgi verir.

 

9 Nis 2014

Oracle Memory Yönetimi


Memory yönetimi denildiğinde akla ilk gelen SGA ve PGA terimleridir. Peki nedir bunlar?

SGA                                      : Kullanıcıların serverda yaptığı çalışmalar user process olarak isimlendirilir.   Paylaşımlı memory alanıdır.

PGA                                      : User Process den gelen taleplerin serverda karşılanması işlemine server process denir (Bir session için açılan taleptir.) Paylaşımsız memory alanıdır.



 

SGA Bileşenleri

 




Database Buffer Cache

Fiziksel alanda bulunan dataların kopyalarını saklar.Bunların dolması halinde en az sorgu gören bloklar silinir. LRU metedolojisi ile yönetilir.
 

Redo Log Buffer

DML ve DDL işlemlerin bilgilerini saklar (Datanın önceki ve sonraki hallerini tutar). FIFO mantığı ile blokları yönetir.

Shared Pool

4 Bileşenden oluşur

1.       Library Cache                                   : SQL cümleleri için optimizer devreye girer. Dolduğunda en az kullanılan ezilir.

2.       Data Dictionary Cache                    : Sorgulanan cümlenin meta dataları cache lenir.

3.       Fixed Area                                         : Size akış verisi yapmak için kullanılır.

4.       Other                                                  :

Large Pool

Backup ve Restore işlemlerinde kullanılır.

Java Pool

Java kodlarının derlenmesi için kullanılır.

Streams Pool

Oracle streams tarafından kullanılır.

 

8 Nis 2014

Archivelog Mode Devreye Alma



Redo log larda oluşan transaction hareketlerinin Archive log lara alınması için yapılması gerekenler aşağıdaki gibidir.


sqlplus / as sysdba                            : sysdba olarak bağlanıyoruz 

Shutdown immediate                        : Database i kapatıyoruz

Startup Mount                                   : Database i mount olarak açıyoruz

Alter database archivelog;                : Archivelog u devreye alıyoruz

Alter database open;                         : Database i açıyoruz

---------------------------------------------------------------------------------------------------------------
Şimdi Uygulama

sqlplus / as sysdba

SQL> shutdown immediate

SQL> startup mount

ORACLE instance started.

 

Total System Global Area  184549376 bytes

Fixed Size                  1300928 bytes

Variable Size             157820480 bytes

Database Buffers           25165824 bytes

Redo Buffers                 262144 bytes

Database mounted.

 

SQL> alter database archivelog;

Database altered.

 

SQL> alter database open;

Database altered.


Bu işlemlerden sonra log mode aşağıdaki gibi olacaktır.

SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

Şimdi bu loğlar nereye alınıyor?

select DEST_NAME,STATUS,DESTINATION from V$ARCHIVE_DEST;

4 Nis 2014

Oracle Listener




 

Listener, instance ile kullanıcılar arasında gateway işlevi görür. Tek listener birden çok database instance a hizmet edebilir.

Özetle, oracle veri tabanına gelen bağlantı isteklerinin karşılandığı servistir.

Herhangi bir çalışma anında listener servisinin stop olması durumunda session açan kullanıcıların bağlantıları devam edecektir. Yeni kullanıcılar ise database e bağlantı aşamasında hata alacaklardır.

 Linux üzerinde listener ile ilgili kontrol komutları:

 

$ lsnrctl <command name>    : syntax

$ lsnrctl status                        : Listener ın statüsünü gösterir

$ lsnrctl start                          : Listener servisini açar

$ lsnrctl stop                            : Listener servisini durdurur

 

27 Mar 2013

Oracle 10 G Table Space Kullanımı


SELECT
df.tablespace_name tspace,
round(df.bytes / (1024 * 1024)) tot_ts_size,
round(SUM(fs.bytes) / (1024 * 1024)) free_ts_size,
nvl(round(SUM(fs.bytes) * 100 / df.bytes),
1) ts_pct,
round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) ts_pct1
FROM dba_free_space fs,
(SELECT tablespace_name,
SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) df
WHERE fs.tablespace_name(+) = df.tablespace_name
GROUP BY df.tablespace_name,
df.bytes
UNION ALL
SELECT
df.tablespace_name tspace,
fs.bytes / (1024 * 1024) tot_ts_size,
SUM(df.bytes_free) / (1024 * 1024) free_ts_size,
nvl(round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes),
1) ts_pct,
round((SUM(fs.BYTES) - df.BYTES_free) * 100 / fs.bytes) ts_pct1
FROM dba_temp_files fs,
(SELECT tablespace_name,
bytes_free,
bytes_used
FROM V$temp_space_header
GROUP BY tablespace_name,
bytes_free,
bytes_used) df
WHERE fs.tablespace_name(+) = df.tablespace_name
GROUP BY df.tablespace_name,
fs.bytes,
df.bytes_free,
df.BYTES_used
ORDER BY 2 DESC

Faruk Hocama teşekkürler
http://www.farukazakli.blogspot.com/

Yada enterprise manager dan  grafikli olarak izleyebilirsiniz.

6 Oca 2013

Oracle Veritabanının kapatılması


  • Normal Kapatma (Shutdown): Veri tabanına bağlı tüm kullanıcılar, veritabanı oturumlarını kapatmadıkları sürece veri tabanı kapanmayacağından bu yöntem pek tercih edilmez.
  • Shutdown Transactional : Bu yöntem ile kullanıcıların veri kaybı yaşamaması sağlanır. DML komutlarının tamamlanmasından sonra commit edilir ve veri tabanı kapatılır.
  • Shutdown immediate : Bu yöntemde veri tabanına bağlı olan kullanıcıların yaptıkları değişiklikler Rollback yapıldıktan sonra veritabanı kapatılır.
  • Shutdown  Abort: Fişi çekmekten farklı değildir.

23 Kas 2012

Oracle database üzerinden mail gönderme

Database üzerinden mail göndermek için öncelikle ilgili package in create edilmesi gerekir.

CREATE OR REPLACE PACKAGE Unitec_Mail_API IS

 TYPE ARRAY IS TABLE OF VARCHAR2(255);
 PROCEDURE send(p_sender_email  IN VARCHAR2,
                 p_from         IN VARCHAR2,
                 p_to           IN ARRAY DEFAULT ARRAY(),
                 p_cc           IN ARRAY DEFAULT ARRAY(),
                 p_subject      IN VARCHAR2,
                 p_body         IN LONG);
END Unitec_Mail_API;

CREATE OR REPLACE PACKAGE BODY Unitec_Mail_API IS
  g_crlf      CHAR(2) DEFAULT chr(13) || chr(10);
  g_mail_conn utl_smtp.connection;
  g_mailhost  VARCHAR2(255) := 'smtp server ip si';  --smtp server

  FUNCTION address_email(p_string IN VARCHAR2, p_recipients IN ARRAY)
    RETURN VARCHAR2 IS
    l_recipients LONG;
  BEGIN
    FOR i IN 1 .. p_recipients.COUNT LOOP
      utl_smtp.rcpt(g_mail_conn, p_recipients(i));
      IF (l_recipients IS NULL) THEN
        l_recipients := p_string || p_recipients(i);
      ELSE
        l_recipients := l_recipients || ', ' || p_recipients(i);
      END IF;
    END LOOP;
    RETURN l_recipients;
  END;
 
  PROCEDURE send(p_sender_email IN VARCHAR2,
                 p_from         IN VARCHAR2,
                 p_to           IN ARRAY DEFAULT ARRAY(),
                 p_cc           IN ARRAY DEFAULT ARRAY(),
                 p_subject      IN VARCHAR2,
                 p_body         IN LONG) IS
    l_to_list  LONG;
    l_cc_list  LONG;
    l_date     VARCHAR2(255) DEFAULT to_char(SYSDATE,'dd MON yy hh24:mi:ss');
    PROCEDURE writeData(p_text IN VARCHAR2) IS
    BEGIN
      IF (p_text IS NOT NULL) THEN
        utl_smtp.write_data(g_mail_conn, p_text || g_crlf);
      END IF;
  END;
 
  BEGIN
    g_mail_conn := utl_smtp.open_connection(g_mailhost, 25); --get conn. to smtp server
    utl_smtp.helo(g_mail_conn, g_mailhost);
    utl_smtp.mail(g_mail_conn, p_sender_email);
    l_to_list  := address_email('To: ', p_to);
    l_cc_list  := address_email('Cc: ', p_cc);
    utl_smtp.open_data(g_mail_conn);
    writeData('Date: ' || l_date);
    dbms_output.put_line(l_date);
    writeData('From: ' || nvl(p_from, p_sender_email));
    writeData('Subject: ' || nvl(p_subject, '(no subject)'));
    writeData(l_to_list);
    writeData(l_cc_list);
    utl_smtp.write_data(g_mail_conn, '' || g_crlf);
    utl_smtp.write_data(g_mail_conn, p_body);
    utl_smtp.close_data(g_mail_conn);
    utl_smtp.quit(g_mail_conn);
  END send;
END Unitec_Mail_API;

Şimdi sıra test de

begin
Unitec_Mail_API.send(
'test@test.com',
'test@test.com',Unitec_Mail_API.array(
'test@test.com'),Unitec_Mail_API.array(
'test@test.com'),
'This is a subject',
'Hello, this is the mail you need' );
end;

  Bu aşamadan sonra database trigger lar ile otomatik mail kurgusunu oluşturabilirsiniz.