Manual AWR raporu almak

Selamlar,

bu makalede herhangi bir tool kullanmadan komut satırından awr raporu alıcaz. Örneğin Enterprise Manager’ın olmadığı ya da ulaşamadığımız ortamlarda oldukça işe yarayan bir yöntemdir.

AWR raporunu almak için “$ORACLE_HOME/rdbms/admin/awrrpt.sql” sql’ini çalıştırmamız yeterli olacaktır. Sırası ile şu soruları soracak;

1. Enter value for report_type: -> Rapor formatı, “HTML” giriyorum.
2. Enter value for num_days:    -> Kaç günlük snapshot’ları getireceğini soruyor, “1” giriyorum.
3. 
Enter value for begin_snap:  -> Listeye bakıp başlangıç snapshot’ını giriyorum.
4. 
Enter value for end_snap:     -> Listeye bakıp bitiş snapshot’ı giriyorum.
5. Enter value for report_name: -> Rapora bir isim veriyorum.

[oracle@fraud admin]$ sql @awrrpt.sql

SQL*Plus: Release 11.2.0.3.0 Production on Wed Sep 24 15:08:25 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options


Current Instance
~~~~~~~~~~~~~~~~

 DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
 74509941 CONCILIA 1 concilia


Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: html

Type Specified: html


Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 DB Id Inst Num DB Name Instance Host
------------ -------- ------------ ------------ ------------
* 74509941 1 CONCILIA concilia fraud.gantek
 .local

Using 74509941 for database Id
Using 1 for instance number


Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.


Enter value for num_days: 1

Listing the last day's Completed Snapshots

 Snap
Instance DB Name Snap Id Snap Started Level
------------ ------------ --------- ------------------ -----
concilia CONCILIA 1315 20 Sep 2014 00:00 1
 1316 20 Sep 2014 01:00 1
 1317 20 Sep 2014 02:00 1
 1318 20 Sep 2014 03:00 1
 1319 20 Sep 2014 04:00 1
 1320 20 Sep 2014 05:00 1
 1321 20 Sep 2014 06:00 1
 1322 20 Sep 2014 07:00 1
 1323 20 Sep 2014 08:00 1
 1324 20 Sep 2014 09:00 1
 1325 20 Sep 2014 10:00 1
 1326 20 Sep 2014 11:00 1
 1327 20 Sep 2014 12:00 1
 1328 20 Sep 2014 13:00 1
 1329 20 Sep 2014 14:00 1
 1330 20 Sep 2014 15:00 1
 1331 20 Sep 2014 16:00 1
 1332 20 Sep 2014 17:00 1
 1333 20 Sep 2014 18:00 1



Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 1324
Begin Snapshot Id specified: 1324

Enter value for end_snap: 1333
End Snapshot Id specified: 1333



Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_1324_1333.html. To use this name,
press <return> to continue, otherwise enter an alternative.

Enter value for report_name: awrrpt_1_1324_1333.html

Using the report name awrrpt_1_1324_1333.html

Okumaya devam et

Monitoring RMAN backup

Selamlar,

backup session’larını monitor etmek için ve herhangi bir backup’ı yarıda kesmek için bir kaç script paylaşmak istiyorum.

1. RMAN session’larını görmek

select b.sid, b.serial#, a.spid, b.client_info
 from v$process a, v$session b
 where a.addr=b.paddr and client_info like 'rman%';

2. RMAN session’larının yüzde kaçının tamamlandığını monitor etmek

SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
 FROM V$SESSION_LONGOPS
 WHERE OPNAME LIKE 'RMAN%'
 AND OPNAME NOT LIKE '%aggregate%'
 AND TOTALWORK != 0
 AND SOFAR <> TOTALWORK;

3. Mevcut session’ları kill etmek için ‘kill session’ komutlarını çıkartan sorgu

select 'alter system kill session '''||b.sid||','||b.serial#||''' immediate;'
 from
 v$process a, v$session b
 where
 a.addr=b.paddr and client_info
 like
 'rman%';

Kolay gelsin.

RMAN Recovery Catalog oluşturma

Selamlar,

Bu makalede RMAN recovery catalog oluşturucaz. Recovery Catalog ile birden fazla database’in backup metadatasını tek bir database’de tutabiliriz. Aslında backup’larımızın kendisi kadar backup metadatası da önemlidir. Normal şartlar altında backup metadatası control file’da tutulurken catalog ile bu bilgiler bir database’de saklanır. Ek olarak catalog içinde backup script’leri saklanabilir ve farklı database’lerde çalıştırılabilir. Adım adım recovery catalog oluşturulmasına bakalım;

 

1. rec_cat adında bir tablespace oluşturuyorum.

CREATE TABLESPACE rec_cat DATAFILE 
'+DATA' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M
LOGGING
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

2. Catalog user’ı olarak CAT adında bir user oluşturuyorum.

CREATE USER cat IDENTIFIED BY cat12345
DEFAULT TABLESPACE rec_cat
TEMPORARY TABLESPACE "TEMP"
QUOTA UNLIMITED ON rec_cat;

3. CAT user’ına gerekli hakları ve ‘RECOVERY_CATALOG_OWNER’ rolünü veriyorum.

GRANT CONNECT,RESOURCE TO cat;
GRANT "RECOVERY_CATALOG_OWNER" TO CAT;
ALTER USER CAT DEFAULT ROLE "RECOVERY_CATALOG_OWNER";

4. RMAN’e CAT user’ı ile bağlanıp catalog oluşturuyorum.

[oracle@x3n1 wallet]$ rman catalog cat/cat12345
Recovery Manager: Release 11.2.0.4.0 - Production on Sat Sep 13 12:56:56 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to recovery catalog database
RMAN> create catalog;
recovery catalog created

5. Artık database’e ve catalog’a bağlanabilirim.

[oracle@x3n1 wallet]$ rman target / catalog cat/cat12345
Recovery Manager: Release 11.2.0.4.0 - Production on Sat Sep 13 12:59:18 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1384901735)
connected to recovery catalog database
Başka Lokasyondaki Database’i catalog’a eklemek;
[oracle@x3n1 wallet]$ rman target / catalog cat/cat12345@CATALOGDB
Recovery Manager: Release 11.2.0.4.0 - Production on Sat Sep 13 12:59:18 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1384901735)
connected to recovery catalog database
RMAN> register database;

Kolay gelsin.

Oracle Wallet konfigürasyonu

Selamlar,

bu makalede Oracle’ın Wallet aracını kullanarak password girmeden database’e ve rman’e bağlanacağız.

Oracle Wallet 10G R2 ile çıkmış olan küçük ve konfigürasyonu çok basit bir araçtır. Tek amacı içerisine eklenen password’leri şifreleyerek sakmaktır. Bu sayede database’e bağlanırken veya rman ile backup alırken (örn. crontab’daki script ile) password’u açık bir şekilde kullanmak zorunda kalmayız. Konfigürasyonu şu şekilde.

1. tnsnames.ora dosyasına yeni bir alias eklenir

BCKP=
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db.local)(PORT = 1521))
    (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = orcl.local)
    )
 )

2. sqlnet.ora dosyasına aşağıdaki satırlar eklenir. (sqlnet.ora, tnsnames.ora dosyaları ORACLE_HOME/db_1/network/admin dizininde olmalı, kesinlikle GRID_HOME altına atılmamalıdır. sqlnet.ora dosyası GRID_HOME altında olursa ASM kapatıldığı zaman tekrar açılmama ile ilgili bir bug bulunmaktadır.)
Bu adımda directory düzgün bir şekilde verilmelidir. Bu directory’e az sonra wallet create edeceğiz. Herhangi bir dizin gösterilebilir.

WALLET_LOCATION = 
 (SOURCE = (METHOD = FILE) 
 (METHOD_DATA = 
 (DIRECTORY = /u01/app/oracle/product/11.2.0/db_1/wallet))) 
SQLNET.WALLET_OVERRIDE = TRUE 
SSL_CLIENT_AUTHENTICATION = FALSE

3. Database’de user oluştur.

create user bckp identified by bckp1234;
grant dba to bckp;
grant sysdba to bckp;

4. Wallet oluştur.
Wallet oluştururken yeni bir şifre oluşturmanızı isteyecektir. Bu şifre ileride wallet ile ilgili işlemleri yapmak için kullanılacak.
Not: Bu şifre ile wallet’a kayıtlı user’lar görülebilir ancak password’leri görmek mümkün değildir.

mkstore -wrl /u01/app/oracle/product/11.2.0/db_1/wallet -create

Okumaya devam et

Solaris 10 – swap alanı görüntüleme/ekleme

Selamlar,

bu makalede Solaris 10 işletim sistemine swap alanı ekliyicez. İşleme başlamadan önce mevcut swap alanı boyutunu kontrol ediyorum.

bash-3.2# swap -l
 swapfile dev swaplo blocks free
 /dev/dsk/c0d0s1 102,1 8 1060280 1060280
bash-3.2# swap -s
total: 307796k bytes allocated + 130032k reserved = 437828k used, 2579812k available

Daha sonra aşağıdaki adımları izliyorum ve swap alanım oluşuyor. (Not: mkfile komutundan sonra işlem bitmeden bir sonraki adıma geçmeyin.)

bash-3.2# cd /
bash-3.2# mkdir swap
bash-3.2# cd swap
bash-3.2# mkfile 3000m swapfile1
bash-3.2# swap -a /swap/swapfile1

swap dizinine ‘swapfile1′ isimli dosyam başarılı şekilde oluşturuldu.

bash-3.2# ls -l
 total 6147024
 -rw------T 1 root root 3145728000 Jul 10 10:26 swapfile1

Aşağıdaki komutlar ile tekrar swap alanını kontrol ediyorum.

bash-3.2# swap -l
 swapfile dev swaplo blocks free
 /dev/dsk/c0d0s1 102,1 8 1060280 1060280
 /swap/swapfile1 - 8 6143992 6143992
bash-3.2# swap -s
 total: 1128024k bytes allocated + 758136k reserved = 1886160k used, 3352396k available

Başarılı şekilde swap alanı ekledik.

Kolay gelsin.

Hostname Değiştirme (Linux)

Selamlar,

bu makalede sanal makinamda kurulu olan OEL 6.5’in hostname’ini değiştiricem.

Aşağıdaki adımları izliyorum;

/etc/sysconfig dizini altındaki network dosyasını editliyorum.

[root@machine02]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=machine02

ve HOSTNAME kısmını aşağıdaki gibi değiştiriyorum.

NETWORKING=yes
HOSTNAME=production

sistemi reboot ediyorum.

[root@machine02]# reboot

kontrol ediyorum.

[root@machine02]# hostname
production

Kolay gelsin.

killsession.sql

Selamlar,

bu makalede database’deki açık session’ları kill etmek için yazdığım script’i paylaşıcam. Script oldukça basit;

DECLARE
 CURSOR c1 IS
 SELECT sid, serial# FROM v$session WHERE USERNAME = upper('&1');
BEGIN
 FOR rec IN c1 LOOP
 EXECUTE IMMEDIATE 'alter system kill session ''' || rec.sid || ',' || rec.serial# || ''' immediate';
 END LOOP;
END;
/

Parametre olarak herhangi bir user vermek yeterli;

SQL> @killsession.sql hr
old 3: SELECT sid, serial# FROM v$session WHERE USERNAME = upper('&1');
new 3: SELECT sid, serial# FROM v$session WHERE USERNAME = upper('hr');

PL/SQL procedure successfully completed.

hr user’ı ile açtığım session’ı kontrol ediyorum.

[oracle@grid scripts]$ sqlplus hr/hr
SQL*Plus: Release 11.2.0.4.0 Production on Sun Jun 29 15:06:41 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL>
SQL> select * from dual;
select * from dual
 *
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 3445
Session ID: 61 Serial number: 5

Görüldüğü gibi hr user’ının açık session’ı kill edildi.

Kolay gelsin.