Scan-listener’a 2. portu eklemek

Selamlar,

bu makalede RAC ortamında tek bir scan listener’a ikinci bir port ekliyicez ve 2 instance farklı portlar üzerinden erişime açılacak.
Yani scan-listener’a 1521 portu ile gelen bir session ORCL instance’ına, 1621 portu üzerinden gelen session’lar ise TEST instance’ına bağlanacak.

1521 -> ORCL
1621 -> TEST

Bu işlem için aşağıdaki adımları tek tek izlememiz gerekli;

1- netca çalıştırılır ve 1621 portunu dinleyecek şekilde LISTENER2 adında bir listener oluşturulur.

2- grid user’ında olunduğu kontrol edilir ve aşağıdaki komut ile scan-listener’a 2. port eklenir.

oracle@db1 $ srvctl modify scan_listener -p "TCP:1521/TCP:1621"

3- TEST instance’ının tüm node’larında local_listener ve remote_listener parametreleri değiştirilir.

node_1
alter system set remote_listener="x3-scan:1621" scope=both sid='*';
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.104)(PORT = 1621))' scope=both sid='test1';
node_2
alter system set local_listener = '(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.105)(PORT = 1621))' scope=both sid='test2';

4- Listener servisi stop/start edilir.

oracle@rac1:>srvctl stop scan_listener
oracle@rac11:>srvctl start scan_listener

5- Listener kontrol edilir.

[grid@x3n1 ~]$ lsnrctl status listener2

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 22-OCT-2014 10:01:44

Copyright (c) 1991, 2013, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER2)))
STATUS of the LISTENER
------------------------
Alias LISTENER2
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 20-OCT-2014 08:57:32
Uptime 2 days 1 hr. 4 min. 13 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/x3n1/listener2/alert/log.xml
Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER2)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.1.102)(PORT=1621)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.1.104)(PORT=1621)))
Services Summary...
Service "test" has 1 instance(s).
 Instance "test1", status READY, has 1 handler(s) for this service...
Service "testXDB" has 1 instance(s).
 Instance "test1", status READY, has 1 handler(s) for this service...
The command completed successfully

Kolay gelsin.

DNFS ile database clone (RAC to single instance)

Selamlar,

bu makalede DNFS’in clone özelliğini kullanarak ZFS appliance üzerine backup’ını aldığımız bir database’i hızlı bir şekilde başka bir lokasyona clone’layacağız. Bu işi yeni bir test ortamı oluşturmak için kullanabilirsiniz. Image copy backup alacağımız için restore süresi oldukça kısa olacak.

Dizayn şu şekilde ;

Untitled-1 copyŞimdi adım adım başlayalım. Her adımın başına hangi server üzerinde çalışacağını yazmaya çalıştım.

1. [orcl1 & gantek] Öncelikle DNFS’i mount ediyoruz ve server’ın DNFS’e erişebildiğini kontrol ediyoruz. ‘/dnfs’ dizininin owner’ı oracle ve grubu oinstall olmalı.

[oracle@db dnfs]$ touch /dnfs/testfile
[oracle@db dnfs]$ cd /dnfs
[oracle@db dnfs]$ ls -l
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 testfile

2. [orcl1 & gantek] Tüm server’larda aşağıdaki dizinleri oluşturuyoruz. Bu dizinlere karşılık gelen share’ları da ZFS üzerinde oluşturmamız gerekiyor. Her dizin için share oluşturulmaz ise backup sırasında farklı kanallardan yazma işlemi yapamayız ve backup süremiz uzar.

[oracle@db dnfs]$ cd /dnfs
[oracle@db dnfs]$ mkdir clone_backup1 clone_backup2 clone_backup3 clone_backup4
[oracle@db dnfs]$ ls -l
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup1 
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup2 
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup3 
-rw-r--r--+ 1 oracle oinstall 0 Sep 26 2014 clone_backup4

3. [orcl1] Backup script’ini yazıyoruz ve image copy backup’ı başlatıyoruz. DNFS paralel olarak 4 dizin’e de backup alınıyor. Burada performansı arttırmak için channel sayısı arttırılabilir.

[oracle@db script]$ vi backup.sql
run{
    sql 'alter database begin backup';
    sql 'alter system set "_backup_file_bufcnt"=64 scope=memory';
    sql 'alter system set "_backup_file_bufsz"=1048576 scope=memory';
    configure device type disk parallelism 4 backup type to copy;
    allocate channel ch1 device type disk format '/dnfs/clone_backup1/%d_%T_%p_%U.dbf' ;
    allocate channel ch2 device type disk format '/dnfs/clone_backup2/%d_%T_%p_%U.dbf' ;
    allocate channel ch3 device type disk format '/dnfs/clone_backup3/%d_%T_%p_%U.dbf' ;
    allocate channel ch4 device type disk format '/dnfs/clone_backup4/%d_%T_%p_%U.dbf' ;
    backup as copy database tag '$FullBackUpSet_dbf';
    sql 'alter database end backup';
}
[oracle@db script]$ rman target /
RMAN> @backup.sql

4. [gantek] Değişkenleri set ediyoruz.
master_copy_dir: backup’ların durduğu dizini göstermeli.
clone_file_create_dest: datafile’ların konacağı dizini göstermeli. Clone işlemi tamamlandıktan       sonra tüm datafiler’lar burada olacak.

export ORACLE_SID=gantek
export MASTER_COPY_DIR=/dnfs/clone_backup*
export CLONE_FILE_CREATE_DEST=/u01/app/oracle/oradata/gantek
export CLONEDB_NAME=gantek

Okumaya devam et

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.