Thursday, August 27, 2009

Issue wait event "Log File Sync"

Oracle lagi,
untuk tipe aplikasi dan transaksi yang setiap kali transaksi commit
biasanya issue yang mungkin terjadi adalah "Log File Sync"
ada beberapa solusi baik dari sisi aplikasi maupun dari sisi database

salah satu blog yang menjelaskan solusinya adalah
http://sysdba.wordpress.com/2006/04/20/asynchronous-commit-a-new-feature-in-oracle-10gr2/

kemudian dari sisi database
a. Reduce contention on existing disks.
b. Put log files on faster disks.
c. Put alternate redo logs on different disks to minimize the effect archive processes
(log files switches).
4. Review application design, use NOLOGGING operations where appropriate, and avoid changing
more data than required.

Wednesday, August 26, 2009

Setup Oracle Stream for Schema replication between DB

Untuk membuat repikasi dengan menggunakan stream
satu schema dengan schema yang lain caranya adalah sebagai berikut , saya ambil contoh
untuk kloning schema HR  dari database PRODDB ke CLONEDB adalah sebagai berikut :
1. siapkan tablespace untuk logminer di PRODDB

CREATE TABLESPACE LOGMNRTS DATAFILE '/oradata/DB/logmnrtbs.dbf'
SIZE 100M AUTOEXTEND ON MAXSIZE UNLIMITED;
 
2. jalankan logminer
BEGIN
DBMS_LOGMNR_D.SET_TABLESPACE('LOGMNRTS');

END;

3. supplement logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (primary key,
unique, foreign key) COLUMNS;
ALTER TABLE apps_a.emp ADD SUPPLEMENTAL LOG GROUP
pk_emp (id) ALWAYS;

4. export schema HR dari PRODDB ke CLONEDB
5. create user stream admin di kedua database (PRODDB dan CLONEDB)
    create user STRMADMIN identified by STRMADMIN;
    grant CONNECT, DBA, IMP_FULL_DATABASE,EXP_FULL_DATABASE to "STRMADMIN";
    exec DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRMADMIN');
6. login sebagai strmadmin di PRODDB
    buat database ke user strmadmin di CLONEDB
7. configure apply process di CLONEDB
8. configure capture process di PRODDB
9. instantiate







CLONEDB (apply process) login dengan user strmadmin
-----------------------------


BEGIN

DBMS_STREAMS_ADM.SET_UP_QUEUE(
queue_table ='"STREAMS_APPLY_QT"',
queue_name ='"STREAMS_APPLY_Q"',
queue_user ='"STRMADMIN"');
END;
/

BEGIN
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
schema_name ='"HR"',
streams_type ='apply',
streams_name ='"STREAMS_APPLY"',
queue_name ='"STRMADMIN"."STREAMS_APPLY_Q"',
include_dml =true,
include_ddl =true,
include_tagged_lcr = false,
inclusion_rule = true);
END;
/

BEGIN
DBMS_APPLY_ADM.ALTER_APPLY
(
apply_name = 'STREAMS_APPLY',
apply_user = 'HR'
);
END;

COMMIT;

Jika kita tidak menginginkan apply proses di abort setiap kali error,
harus ada penanganan agar prosess apply tetap berjalan walaupun ada error,

BEGIN
DBMS_APPLY_ADM.SET_PARAMETER
( apply_name ='STREAMS_APPLY',
  parameter ='DISABLE_ON_ERROR',
  value ='N' );
END;

start apply
BEGIN
DBMS_APPLY_ADM.START_APPLY
(
apply_name ='STREAMS_APPLY'
);
END;

stop apply
BEGIN
DBMS_APPLY_ADM.STOP_APPLY
(
apply_name = 'STREAMS_APPLY'
);
END;

PRODDB (capture process) login dengan user strmadmin
-----------------------------
BEGIN

DBMS_STREAMS_ADM.SET_UP_QUEUE(
queue_table => '"STREAMS_CAPTURE_QT"',
queue_name => '"STREAMS_CAPTURE_Q"',
queue_user => '"STRMADMIN"');
END;

BEGIN
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
schema_name => '"HR"',
streams_type => 'capture',
streams_name => '"STREAMS_CAPTURE"',
queue_name => '"STRMADMIN"."STREAMS_CAPTURE_Q"',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
inclusion_rule => true);
END;

BEGIN
DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
schema_name => '"HR"',
streams_name => '"STREAMS_PROPAGATION"',
source_queue_name => '"STRMADMIN"."STREAMS_CAPTURE_Q"',
destination_queue_name => '"STRMADMIN"."STREAMS_APPLY_Q"@STRM',
include_dml => true,
include_ddl => true,
inclusion_rule => true );
END;
/
COMMIT;

process instantiate scn untuk schema :
1. di PRODDB login dengan user strmadmin

BEGIN

DBMS_OUTPUT.PUT_LINE ('Instantiation SCN is: ' DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER());
END;

setelah dapat nilai nya

2. di CLONEDB login dengan user strmadmin
exec DBMS_APPLY_ADM.set_schema_instantiation_scn(source_schema_name => 'HR',source_database_name => 'CLONEDB',instantiation_scn => 514740);


3. Kemudian jalankan capture process

BEGIN

DBMS_CAPTURE_ADM.START_CAPTURE(
capture_name => 'STREAMS_CAPTURE');
END;

BEGIN
DBMS_CAPTURE_ADM.STOP_CAPTURE(
capture_name => 'STREAMS_CAPTURE');
END;


kemudian lakukan test .... !!!
untuk monitoring proses yang terjadi di stream dengan menggunakan table-table
berikut :

v$streams_apply_reader
v$streams_apply_coordinator
v$streams_capture
dba_apply
dba_apply_error
dba_capture
dba_propagation
dba_queue_schedules

untuk memanage stream dengan menggunakan package-package di bawah :
1. dbms_apply_adm
2. dbms_capture_adm
3. dbms_streams_adm

Managing Logical Standby Database

Logical standby juga perlu di managed dan dimonitoring salah satu step-step nya adalah sebagai berikut :
1. untuk menjadikan standby database dalam keadaan guard

ALTER DATABASE GUARD ...... ;
mode nya terdiri dari 
    a. ALL
    b. NONE
    c. STANDBY
   
2. untuk manage transaksi
    dengan menggunakan package berikut     
    dbms_logstdby
    untuk skip transaksi
    exec DBMS_LOGSTDBY.SKIP_TRANSACTION(10,38,234);
    skip_transaction(xidusn_p IN NUMBER,
                           xidslt_p IN NUMBER,
                           xidsqn_p IN NUMBER);
    untuk melihat transaksinya dari 
    sqlplus > select * from dba_logstdby_events where current_scn is not null

3. untuk skip objects :

    exec DBMS_LOGSTDBY.SKIP('DML','SCOTT','EMP');
    exec DBMS_LOGSTDBY.SKIP('PROCEDURE', 'XYZ', '%', null); 
    exec DBMS_LOGSTDBY.SKIP('SCHEMA_DDL', 'VCS_MONITOR', '%', null);
    exec DBMS_LOGSTDBY.SKIP('DML', 'VCS_MONITOR', '%', null); 

4.sql apply biasanya secara otomatis melakukan delete archive log yang

sudah tidak terpakai, supaya tidak demikian dapat menggunakan script berikut
EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', FALSE);
lebih detail lagi untuk fungsi dari dbms_logstdby ada di 
 
http://www.psoug.org/reference/dbms_logstdby.html




QUERY untuk monitoring



select * from DBA_LOGSTDBY_PROGRESS
select * from DBA_LOGSTDBY_SKIP_TRANSACTION
select * from DBA_LOGSTDBY_PARAMETERS
select * from DBA_LOGSTDBY_LOG
select * from DBA_LOGSTDBY_SKIP
select * from DBA_LOGSTDBY_UNSUPPORTED
select * from DBA_LOGSTDBY_EVENTS
select * from DBA_LOGSTDBY_HISTORY




LOGSTDBY$APPLY_PROGRESS
LOGSTDBY$APPLY_MILESTONE
LOGSTDBY$SCN
LOGSTDBY$SKIP_SUPPORT
LOGSTDBY$SKIP
LOGSTDBY_SUPPORT
LOGSTDBY_UNSUPPORTED_TABLES
LOGSTDBY_LOG
V$LOGSTDBY
V$LOGSTDBY_STATS
V_$LOGSTDBY_TRANSACTION
V$LOGSTDBY_STATE
GV$LOGSTDBY

note :

pakage yang biasa untuk dilakukan manage logical
adalah dbms_logstdby
dan ada lagi yaitu DBMS_INTERNAL_LOGSTDBY (masih bingung cara pakenya)






Sunday, August 23, 2009

Create logical standby database 10g R2

pada kesempatan ini ane mau bagi2 pengalaman, bagi yang pernah coba ... diem aja (ke..ke..ke)
1. primary database (ORADB01)
2. standby database (ORADB01)

KONFIGURASI DI PRIMARY (ORADB01) :
listener.ora
--------------
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/apps/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER_LDG =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01.com)(PORT = 1521))
)
)
)
tnsnames.ora
LISTENER_LDG =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01.com)(PORT = 1521))
)

ORADB02 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db02.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORADB02)
)
)

ORADB01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORADB01)
)
)

INIT.ORA
------------
log_archive_dest_1='LOCATION=/oracle/apps/archive VALID_FOR=(ALL_LOGFILES,ALL_RO
LES) DB_UNIQUE_NAME=ORADB01'
log_archive_dest_2='SERVICE=ORADB02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMAR
Y_ROLE) DB_UNIQUE_NAME=ORADB02'
log_archive_dest_state_1=enable
log_archive_dest_state_2=defer
log_archive_max_processes=4
fal_server=ORADB02
fal_client=ORADB01
standby_file_management=auto
db_name=ORADB01
db_unique_name=ORADB01

KONFIGURASI DI STANDBY (ORADB02) :

listener.ora
--------------
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/apps/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER_STDBY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db02.com)(PORT = 1521))
)
)
)

tnsnames.ora
-----------------
LISTENER_STDBY =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db02.com)(PORT = 1521))
)

ORADB02 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db02.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORADB02)
)
)

ORADB01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORADB01)
)
)


init_parameter_standby :
-----------------------------
log_archive_dest_1='LOCATION=/oracle/apps/archive VALID_FOR=(ALL_LOGFILES,ALL_RO
LES) DB_UNIQUE_NAME=ORADB02'
log_archive_dest_2='SERVICE=ORADB01 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMAR
Y_ROLE) DB_UNIQUE_NAME=ORADB01'
log_archive_dest_state_1=enable
log_archive_dest_state_2=defer
log_archive_max_processes=4
fal_server=ORADB01
fal_client=ORADB02
standby_file_management=auto
db_name=ORADB01
db_unique_name=ORADB02


1. persiapan untuk membaut standby database di ORADB02
@primary
jadikan archive log mode
SQL> alter database force logging;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;

tambahkan standby log file
alter database add standby logfile group 4 ('/oracle/apps/oradata/ORADB01/stdby_redo04.log') size 52428800;

alter database add standby logfile group 5 ('/oracle/apps/oradata/ORADB01/stdby_redo05.log') size 52428800;

alter database add standby logfile group 6 ('/oracle/apps/oradata/ORADB01/stdby_redo06.log') size 52428800;

alter database add standby logfile group 7 ('/oracle/apps/oradata/ORADB01/stdby_redo07.log') size 52428800;

backup untuk standby dengan menggunakan rman :

a. rman target=/
b. backup full database format '/oracle/apps/flash_recovery_area/%d_%U.bckp' plus archivelog format
'/oracle/apps/flash_recovery_area/%d_%U.bckp';
c. CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/oracle/apps/flash_recovery_area/%U';
d. BACKUP CURRENT CONTROLFILE FOR STANDBY;

copykan hasil backup ke standby dengan lokasi yang sama
scp /oracle/apps/flash_refovery_area/* oracle@192.168.3.122:/oracle/apps/flash_refovery_area/

@standby database
1. buat orapwd
2. jalankan pfile dengan kondisi nomount
3. jalankan listener
4. restore clone rman dengan script berikut :
5. rman target=sys/oracle@oradb01 auxiliary=/
DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK;
6. create standby logfile :
alter database add standby logfile group 4 ('/oracle/apps/oradata/ORADB01/stdby_redo04.log') size
52428800;

alter database add standby logfile group 5 ('/oracle/apps/oradata/ORADB01/stdby_redo05.log') size
52428800;

alter database add standby logfile group 6 ('/oracle/apps/oradata/ORADB01/stdby_redo06.log') size
52428800;

alter database add standby logfile group 7 ('/oracle/apps/oradata/ORADB01/stdby_redo07.log') size
52428800;

7. alter database recover managed standby database using current log file disconnect from sessions



perpare for logical standby database :
===========================
@primary
------------
tambahkan ubah dan tambahkan parameter berikut
SQL> alter system set log_archive_dest_3='LOCATION=/oracle/apps/archive2/ valid_for=(standby_logfiles,standby_role) db_unique_name=DBORA01' scope=both;

SQL> alter system set log_archive_dest_1='LOCATION=/oracle/apps/archive/ valid_for=(online_logfiles,all_roles) db_unique_name=DBORA01' scope=BOTH;

SQL> alter system set log_archive_dest_state_3=enable scope=both;

@standby
------------
SQL> alter system set log_archive_dest_3='LOCATION=/oracle/apps/archive2/ valid_for=(standby_logfiles,standby_role) db_unique_name=DBORA02' scope=both;

SQL> alter system set log_archive_dest_1='LOCATION=/oracle/apps/archive/ valid_for=(online_logfiles,all_roles) db_unique_name=DBORA02' scope=BOTH;

SQL> alter system set log_archive_dest_state_3=enable scope=both;

@primary
-------------
jalankan log minner
EXECUTE DBMS_LOGSTDBY.BUILD;

@standby
1. alter database recover managed standby database cancel;
2. mengganti db_name dan dbid yang baru
3. alter database recover to logical standby ORADB02;
4. shutdown immediate
5. startup mount
6. alter database open resetlogs
7. alter database start logical standby apply immediate; (jalankan process apply)

perhatikan alert nya di kedua database
untuk monitoring dapat menggunakan script di bawah ini :

SELECT EVENT_TIME, STATUS, EVENT FROM DBA_LOGSTDBY_EVENTS
ORDER BY EVENT_TIMESTAMP, COMMIT_SCN;

SELECT APPLIED_SCN, LATEST_SCN, MINING_SCN, RESTART_SCN FROM V$LOGSTDBY_PROGRESS;

SELECT APPLIED_TIME, LATEST_TIME, MINING_TIME, RESTART_TIME FROM V$LOGSTDBY_PROGRESS;

SELECT * FROM V$LOGSTDBY_STATS;

SELECT SESSION_ID, STATE FROM V$LOGSTDBY_STATE;

kemudian lakukan perubahan-perubahan di primary dan lihat hasilnya di standby
pastikan bahwa standby dan primary dalam status open mode read_write :


HANDLER :
skip transaksi untuk table tertentu
EXECUTE DBMS_LOGSTDBY.SKIP (stmt => 'DML', schema_name => 'SCOTT', object_name => 'TESTLOGICAL');

to be continued .... for handler







Saturday, August 22, 2009

Nice Address for oracle tips and trick

Dear All,
N buat mastah-mastah oracle, just share link for update knowledge and sorry if REPOST :
1. untuk buat logical standby database di 10g R2
2. yang mau ujian....yang mau ujian silahkan di donlot
a. examcollection.info
b. www.freepreptest.com/examworx/1Z0-042.exe
buat nyang ini tinggal ganti belakangnya aja misal 1Z0-042.exe jadi 1Z0-050.exe
........ to be continue for update

Friday, August 21, 2009

Unable to create a new listener from the EM Console

Ini adalah sebuah bug di EM nya, maka workaround yang dapat kita gunakan adalah
sebagai berikut :
1)go to oracle_home/nework/tolls
2)open the file Netproperties
3)comment the line INSTALLEDCOMPONENTS=ORACLENET

isi dari Netproperties :

[oracle@oracentos tools]$ cat NetProperties
#Thu Aug 20 04:04:16 WIT 2009
ListenerTrace=Off
IPC=yes
CommentWarning=YES
TCPS=yes
USDOMESTIC=YES
Names=YES
TCP=yes
ProfileTrace=Off
NamesTrace=Off
NMP=no
#INSTALLEDCOMPONENTS=ORACLENET
p2=IPC
p1=TCP

Wednesday, August 12, 2009

copy full directory to another server

Buat copy satu directory di mesin server (unix)
ke mesin yang lain dapat copy full directory tersebut dengan isi-isinya
contoh script nya adalah sebagai berikut :

scp -rp OraClient/ appigate@10.128.2.84:/export/home/appigate

Monday, August 10, 2009

Failover test Oracle Data Guard

AT PRIMARY
untuk melakukan failover :
1. aktifkan flashback di primary
2. select flashback_on from v$database;
3. shutdown immediate
4. startup mount
5. alter database flashback on
6. alter database open
7. select flashback_on from v$database;
8. shutdown abort


AT STANDBY :
1. di standby usahakan tidak ada gap jika ada gap :
alter database register physical logfile '****.arch';

2. lakukan failover ke standby :
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
alter database commit to switchover to primary with session shutdown;
shutdown database
startup
check scn terkahir sebelum failover
select to_char(standby_became_primary_scn) from v$database;
> 312312

di primary hidupkan dalam kondisi mount:
startup mount
flashback database to scn 312312

alter database flashback off;

kemudian shutdown database primary
dari standby yang sudah jadi primary buat controlfile yang lain yang akan
digunakan primary

alter database create standby controlfile as 'test.ctl'
cp ke primary
kemudian startup mount
dan lakukan recover managed standby

STATUS = belum dirapihkan (mode=on)

change parameter session and process

merubah session dan process harus imbang, by default
rumusan nya adalah sebagai berikut

sessions = (1.1 x processes ) + 5
kalo processes nya = 1000
maka sessions nya disarankan 1105

di 11g cukup dengan merubah processes maka nilai session akan ditentukan sendiri
dengan rumusan di atas

Thursday, August 6, 2009

Unix - Unix - Unix

on solaris :
clear reboot using
shutdown -y -i6 -g0

untuk melihat process seperti tool top
di sun os 5.10 dapat menggunkan

prstat -a

Sunday, August 2, 2009

create package diagnostic using ADRCI at 11g

pengumuman-pengumuman bagi yang belum tau, yang udah tau diem ajah (kekekekeekek)
bair gak report bikin package untuk buat SR di oracle DB 11g ada cara untuk mendiagnosa
dan mengumpulkan semua report nya dalam satu package
kemudian dilakukan zip dan dikirim ke METAL-LINK
pake ADRCI, cara pake nya ginih

$ adrci
adrci > show homes
kalo banyak path nya lakukan set
adrci > set homepath diag/rdbms/oradev/ORADEV
adrci > show alert -tail
adrci > show incident
adrci > show incident -mode detail
adrci > show incident -mode DETAIL -p "incident_id=24177"

kalo kenyataanya ada error dipackage ajah

adrci > ips create package
adrci > ips add incident 24177 package 1
adrci> ips add file /oracle/apps/diag/rdbms/oradev/ORADEV/incident/incdir_24177/ORADEV_arc3_3084_i24177.trc package 2
adrci > ips generate package 1 in /oracle/home
nah kalo dah selesai masukin data analisa nya tinggal titutup sajah process packaging nya
adrci > ips finalize package 1


selamat mencoba :)




Saturday, August 1, 2009

Inconsisten Recovery Database

Untuk masalah recovery inconsitent (open resetlogs)
misal kita akan restore dari full backup dan restore archive log sampai sequence tertentu
untuk recovery karena ada table yang hilang/tertruncate maka sebelum nya kita check dl
kapan kira2 table tersebut terdrop atau tertruncate

check dl archive log
select * from v$archived_log
where creator <> 'RMAN'

kita bisa memperkirakan harus sampai sequence atau time atau scn berapa kita bisa restore
dan recover

script nya berikut :

RUN {      SET UNTIL SCN 1000;      
 # Alternatives:   # SET UNTIL TIME 'Nov 15 2004 09:00:00';   # SET UNTIL SEQUENCE 9923;     RESTORE DATABASE;   RECOVER DATABASE; }

yang sudah saya coba
sampai sequence ke 7

RUN {    # SET UNTIL SCN 1000;       # Alternatives:   # SET UNTIL TIME 'Nov 15 2004 09:00:00';   SET UNTIL SEQUENCE 8;     RESTORE DATABASE;   RECOVER DATABASE; 
  ALTER DATABASE OPEN RESETLOGS;  }

and DONE

mudah2an berguna :)

tambahan lagi
kita check yu, hasil backup yang bisa direstore
dari incremental nya
petunjuk bisa direstore sampe sequence, scn atau sampai waktu kapan

select sequence#,
to_char(first_time, 'DD-MM-YY HH24:MI:SS') timebkp
from v$backup_archivelog_details;

select name,
sequence#,
registrar,
to_char(first_time, 'DD-MM-YY HH24:MI:SS') timearc
from v$archived_log

:D ....

Disable auto start resource at RAC

misal kita punya PC yang pas2 an , ketika diinstall vmware untuk rac dan semua sudah terinstall baik
itu Clusterware dan database nya. Maka pada saat reboot vmware nya begitu berat kedua node nya
karena automatically instance database di rac akan dilakukan restart setelah semua resource startup
tambah berat lah vmware kita kadang terjadi hang walopun memory PC kita 3 GB. walah2
untuk mengantisipasinya ya kita buat supaya tidak autostart untuk resource2 tertentu misal
resource gsd ato resource instance dan service nya.
setelah clusterware naik baru kita manual untuk startup gsd dan instance atau service nya
caranya, ya begono :
misal untuk resource gsd

1. crs_stat -p ora.rac1.gsd
2. crs_stat -p ora.rac1.gsd > $ORA_CRS_HOME/crs/public/ora.rac1.gsd.cap (tambahin extention .cap)
3. vi ora.rac1.gsd.cap
rubah parameter AUTO_START=1 menjadi AUTO_START=2
4. kemudian update profile resource
crs_register -u ora.rac1.gsd
5. check dech profile yang sekarang crs_stat -p ora.rac1.gsd
nilainya harus seperti ini

NAME=ora.rac1.gsd
TYPE=application
ACTION_SCRIPT=/oracle/apps/product/10.2.0/crs_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=2
CHECK_INTERVAL=600
DESCRIPTION=CRS application for GSD on node
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=rac1
OPTIONAL_RESOURCES=
PLACEMENT=restricted
REQUIRED_RESOURCES=
RESTART_ATTEMPTS=5
SCRIPT_TIMEOUT=600
START_TIMEOUT=0
STOP_TIMEOUT=0
UPTIME_THRESHOLD=7d
USR_ORA_ALERT_NAME=
USR_ORA_CHECK_TIMEOUT=0
USR_ORA_CONNECT_STR=/ as sysdba
USR_ORA_DEBUG=0

NOTE = untuk instance RESTART_ATTEMPTS harus 0 atau 1

status = DONE :)