30 Nisan 2012 Pazartesi

Adim Adim Oracle urunleri kurulum


Oracle 11g r2 Dataguard(Standby) Kurulumu

Kullanılan sistem bilgileri

Primary veritabanı DB_UNIQUE_NAME: ORCL
Standby veritabanı DB_UNIQUE_NAME:ORCLST

ORACLE_SID: ORCL

Primary hostname: linux1 (OEL Linux 5.5)
Standby hostname: linux2 (OEL Linux 5.5)

##### Primary tarafda ########

SQL>STARTUP MOUNT;

SQL>ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

SQL>ALTER DATABASE FORCE LOGGING;

[oracle@linux1 ~]$ scp $ORACLE_HOME/dbs/orapwORCL  oracle@linux2:$ORACLE_HOME/dbs

SQL>ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,ORCLST)';

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORCLST SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLST';
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

SQL>ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
SQL>ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

SQL>ALTER SYSTEM SET FAL_SERVER=ORCLST;
// Eger farkli directoryler olacaksa
--SQL>ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DB11G_STBY','DB11G' SCOPE=SPFILE;
--SQL>ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='DB11G_STBY','DB11G'  SCOPE=SPFILE;
SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;


-- primary tarafda

SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/app/oracle/oradata/ORCL/orcl_stby.ctl';


-- Network (Her iki tarafda)

tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

ORCLST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCLST)
    )
  )

--listener standby tarafda

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux2)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
        (SID_DESC =
        (GLOBAL_DBNAME = ORCLST)
        (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
        (SID_NAME = ORCL)
        )
)


[oracle@linux1 ~]$ mkdir -p /u01/app/oracle/oradata/ORCL
[oracle@linux1 ~]$ mkdir -p /u01/app/oracle/flash_recovery_area/ORCL
[oracle@linux1 ~]$ mkdir -p /u01/app/oracle/admin/ORCL/adump

####### primary tarafda #######

[oracle@linux1 ~]$ # Standby controlfile to all locations.
[oracle@linux1 ~]$ scp /u01/app/oracle/oradata/ORCL/orcl_stby.ctl oracle@linux2:/u01/app/oracle/oradata/ORCL/control01.ctl
[oracle@linux1 ~]$ scp /u01/app/oracle/oradata/ORCL/orcl_stby.ctl oracle@linux2:/u01/app/oracle/flash_recovery_area/ORCL/control02.ctl

####### standby tarafda #######

[oracle@linux1 ~]$ vi /home/oracle/pfile.ora
    DB_NAME=ORCL

SQL> STARTUP NOMOUNT PFILE='/home/oracle/pfile.ora';

####### primary tarafda #######

[oracle@linux1 ~]$ rman target sys/oracle@ORCL AUXILIARY sys/oracle@ORCLST;

rman> DUPLICATE TARGET DATABASE
             FOR STANDBY
             FROM ACTIVE DATABASE
             DORECOVER
             SPFILE
             SET db_unique_name='ORCLST' COMMENT 'Is standby'
             SET FAL_SERVER='ORCL' COMMENT 'Is primary'
             SET FAL_CLIENT='ORCLST'
            NOFILENAMECHECK;

####### Her iki tarafdada #######

SQL>ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCL/standby_redo01.log') SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCL/standby_redo02.log') SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCL/standby_redo03.log') SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/ORCL/standby_redo04.log') SIZE 50M;

#### Standby`de apply islemini baslatmak icin #######

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


#######iptal etmek icin#######

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

#### Test Log Transport ####
On the primary server, check the latest archived redo log and force a log switch.
     
SQL>ALTER SYSTEM SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
    SQL>SELECT sequence#, first_time, next_time, applied FROM v$archived_log  ORDER BY sequence#;

    SQL>ALTER SYSTEM SWITCH LOGFILE;


## standby
Check the new archived redo log has arrived at the standby server and been applied.

    SQL>ALTER SYSTEM SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

    SQL>SELECT sequence#, first_time, next_time, applied FROM v$archived_log ORDER BY sequence#;


Read-Only Standby and Active Data Guard

Once a standby database is configured, it can be opened in read-only mode to allow query access. This is often used to offload reporting to the standby server, thereby freeing up resources on the primary server. When open in read-only mode, archive log shipping continues, but managed recovery is stopped, so the standby database becomes increasingly out of date until managed recovery is resumed.

###### Standby tarafda #######
To switch the standby database into read-only mode, do the following.

    SQL>SHUTDOWN IMMEDIATE;
    SQL>STARTUP MOUNT;
    SQL>ALTER DATABASE OPEN READ ONLY;

In 11g, Oracle introduced the Active Data Guard feature.
SQL>SHUTDOWN IMMEDIATE;
    SQL>STARTUP MOUNT;
    SQL>ALTER DATABASE OPEN READ ONLY;
    SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

    SQL>SELECT protection_mode FROM v$database;

    PROTECTION_MODE
    --------------------
    MAXIMUM PERFORMANCE

    -- Maximum Availability.
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
    SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

    -- Maximum Performance.
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
    SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

    -- Maximum Protection.
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
    SQL>SHUTDOWN IMMEDIATE;
    SQL>STARTUP MOUNT;
    SQL>;ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
    SQL>ALTER DATABASE OPEN;

1 Nisan 2012 Pazar

Faydali SQL`ler

Eğer sisteminiz archivelog’da çalışmıyorsa daha tutarsız ve anlık değişimlerden daha çok etkilenen şu sorguyu kullanabilirsiniz:
SELECT round(AVG(20 /
                   ((to_date(sonraki, 'HH24:MI') - to_date(logswicthzamani, 'HH24:MI')) * 24 * 60) * bytes
                     / (1024 * 1024)), 2) || ' MB' AS "Onerilen Redo"
FROM (SELECT bytes,
to_char(first_time, 'HH24:MI') AS logswicthzamani,
lead(to_char(first_time, 'HH24:MI'), 1) over(ORDER BY first_time) AS sonraki
FROM v$log) WHERE sonraki IS NOT NULL;

- Kullanilmayan indexler

select owner, index_name from dba_indexes where status='UNUSABLE';

15 Mart 2012 Perşembe

Mysql Export/Import

Bir tabloyu export ve import etmek icin.

export

[root@localhost ertugrula]# mysqldump logdb logs -u logger -p > log.txt


import

[root@localhost ertugrula]# mysql -u logger -p  logdb < log.txt

22 Şubat 2012 Çarşamba

Enterprise Manager Console ERROR: NMO not setuid-root (Unix-only)

we making below steps

[oracle@linux1 ~]$ su
Password:
[root@linux1 oracle]# cd $ORACLE_HOME
[root@linux1 db_1]# chmod 6750 bin/nm?
[root@linux1 db_1]# chmod 700 bin/emdctl
[root@linux1 db_1]# chmod 700 bin/emagent
[root@linux1 db_1]# chown root bin/nm?

[root@linux1 db_1]# exit

[oracle@linux1 ~]$ emctl stop dbconsole
[oracle@linux1 ~]$ emctl start dbconsole 


9 Aralık 2011 Cuma

#HY000Host 'XXX' is not allowed to connect to this MySQL server


mysql> grant all privileges on *.* to logger@192.168.10.14 identified by 'logger';

6 Aralık 2011 Salı

Glassfish Performans Iyilestirme (Tuning)

      Bu makalemizde Glassfish`in performans iyilestirmelerini inceleyecegiz. Neden buna ihtiyac duyuyoruz, cunku benimde basima geldigi gibi, proje gelistirim asamasinda hersey normal olarak gorunuyor ama, bir production sisteme yuklemeye, yani gercek calisma ortamina gecmeye basladigimizda iste o zaman  sorunlarla karsilasmaya basliyoruz.

    Peki neden bu sekilde oluyor derseniz, cok basit olarak sunu dusunebiliriz, Mesala siz bilgisayariniz uzerinde uygulama gelistiriyorsunuz ve yaptiklarinizi test etmek icin, belkide gunde en az 4-5 defa yeniden deploy ediyorsunuz, ve iste bu sekilde yaptiginiz icin, her yeni redeploy yapiliminda server yeniden restart oluyor diyebiliriz, restart oluyordan kastim, butun degerler sifirlanip yeniden basliyor, buna JVM yani RAM deki objelerin silinmesi vs. gibi diger butun degerler ilk haline donuyor. Ama gercek bir uygulama sunucusa attigimizda, belkide burada aylarca hic restart ve redeploy olmadan sistemin calismasi gerekiyor ve bizde performans problemlerini burada yasiyoruz.

   Sizinde tahmin edebileceginiz gibi, Application Server icindeki butun parametreler default olarak ayarlanmis gelmektedir. Ve bizimde makalemizin konusu bu, buradaki parametreleri optimum hale getirmeye calisacagiz.

Sozu cok fazla uzatmadan ise koyulalim..
  • Using the glassfish performance tuner
  • Deployment Settings
  • Logger Settings
  • Web Container Settings
  • EJB Container Settings
  • Java Message Service Settings
  • Transaction Service Settings
  • HTTP Service Settings
  • Network Listener Settings
  • Transport Settings
  • Thread Pool Settings
  • ORB Settings
  • Resource Settings
  • Load Balancer Settings
Makalemizde yukaridakileri adim adim inceleyecegiz.
Oncelikle sunu belirteyim, performance tuner glassfish`in sitesinde indirdigimiz surumde mevcut degil, oracle kendi sitesinde indirmemiz gerekecek, simdi diyeceksiniz glassfish oracle`in degilmi diye, bunu detayli bir sekilde ben bilmiyorum ama en yakin zamanda ogrenip, paylasacam.

Download icin..
http://www.oracle.com/technetwork/middleware/glassfish/downloads/ogs-3-1-1-downloads-439803.html
(ogs-3.1.1-unix-ml.sh linux icin)
(ogs-3.1.1-windows-ml.exe windows icin)
Using the glassfish performance tuner
    Performance tuner glassfish`in bize server deployment icin gerekli tavsiyelerde bulunur ve optimum ayarlari yapmamizda yardimci olur.
Ben kendi bilgisayarim icin asagidaki ayarlamalari yaptim.

Yukaridaki 1.adim da yapilacaklar, ikinci adimda ayarlanmis degerler goreceksiniz ve gelen JVM ile ilgili onlarinda detaylarini JVM tuning makalemizde gorecegiz.

Deployment Settings

Deployment Settings performance icin onemli ayarlari icermektedir.
1- Disable auto-deployment
Burada bahsedilen otomatik deploy, yani .war file`ini yada .ear file`nizi glassfish`in (glassfish-3.0.1/glassfish/domains/domain1/autodeploy/) directorisine attiginiz zaman glassfish onu otomatik olarak deploy edecektir. ve edebilmesi icin auto-deployment parametresinin enable olmasi gerekiyor.

Ama biz production sistemimizde bu parametreyi disable yapmaliyiz, cunku glassfish surekli autodeploy klasorunu kullanmaya calismasin, bu parametreyi production server`imizde disable yaptigimizda performansi artiracaktir.
Ayarlamak icin (http://127.0.0.1:4848/common/index.jsf)
 domain -> Application Cofiguration altinda 
                   Auto Deploy : disable.

2-Use Pre-compiled JavaServer Pages

JSP sayfalarinin derlenmesi cok yogun kaynak ve zaman alici islemlerden biridir. JSP sayfalarinin deploydan once derlenmesi ciddi performance artisi saglayacaktir. Ve bu ozelligi kullandigimiz zaman sadece servlet file`lari deploy olacaktir.

Ayarlamak icin (http://127.0.0.1:4848/common/index.jsf)
 domain -> Application Cofiguration altinda 
                   Precompile: enable.

 3- Disable Dynamic Application Reloading

 Eger bu parametre enable ise, o zaman server ve uygulamadaki degisiklikleri periodik olarak incelecektir ve buda performance kayiplarina neden olacaktir. Production serverimizde bu parameteriyi disable yapacagiz.

Ayarlamak icin (http://127.0.0.1:4848/common/index.jsf)
 domain -> Application Cofiguration altinda 
                   Reload: disable.
Son hali goruntulu olarak

Logger Settings