Documente Academic
Documente Profesional
Documente Cultură
OS
IP
Hostname
Memory
Swap
Oracle Version
Oracle Base
Oracle Home
Database Name
Instance Name
DB Unique
Name
Primary
Oracle Enterprise Linux 6.3 64 bit
192.168.6.162
primary.odg.com
2054308 kB
4128764 kB
11.2.0.3
/home/odg/oracle/app/oracle
home/odg/oracle/app/oracle /
product/11.2.0/db_1
prod
prod
prod
Standby
Oracle Enterprise Linux 6.3 64 bit
192.168.6.155
stby.odg.com
2054308 kB
4128764 kB
11.2.0.3
/home/odg/oracle/app/oracle
home/odg/oracle/app/oracle /
product/11.2.0/db_1
prod
stby
stby
Standby
/home/odg/oracle/app/oracle/admin/stby/ad
ump
/home/odg/oracle/app/oracle/diag/rdbms/stb
y/stby/trace
/home/odg/oracle/app/oracle/diag/rdbms/stb
y/stby/cdump
/home/odg/oracle/app/oracle/diag/rdbms/stb
y/stby/trace
/home/odg/oracle/app/oracle/admin/stby/dp
dump
/archive
/oradata/stby , /archive/stby
/oradata/stby
/oradata/stby
/archive/STBY
Page 1
PRIMARY
1. Pastikan database dalam kondisi archive mode:
SQL> select LOG_MODE from V$DATABASE;
LOG_MODE
-------------------ARCHIVELOG
Page 2
2 /oradata/prod/redo02.log
1 /oradata/prod/redo01.log
Buat standby redolog (kriteria pembuatan standby redolog = jumlah online redolog + 1)
SQL> alter database add standby logfile
'/oradata/prod/srl04.log' size 50M;
SQL> alter database add standby logfile
'/oradata/prod/srl05.log' size 50M;
SQL> alter database add standby logfile
'/oradata/prod/srl06.log' size 50M;
SQL> alter database add standby logfile
'/oradata/prod/srl07.log' size 50M;
group 4
group 5
group 6
group 7
Cek lagi
SQL> select group#, member from v$logfile order by 1;
GROUP#
-----1
2
3
4
5
6
7
MEMBER
--------------------------------------------/oradata/prod/redo01.log
/oradata/prod/redo02.log
/oradata/prod/redo03.log
/oradata/prod/srl04.log
/oradata/prod/srl05.log
/oradata/prod/srl06.log
/oradata/prod/srl07.log
5. Inisialisasi parameter, ubah parameter dengan cara berikut (perhatikan lokasi archive
LOG_ARCHIVE_DEST_1, lokasinya akan sama dengan lokasi di database stanby nantinya,
jadi kalau mau dibuat jadi /archive juga gak apa-apa.
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(prod,stby)'
scope=both;
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/archive/PROD
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=prod' scope=both;
Page 3
Optional
SQL> alter system set
DB_FILE_NAME_CONVERT='/oradata/stby/','/oradata/prod/' scope=spfile;
SQL> alter system set
LOG_FILE_NAME_CONVERT='/oradata/stby/','/oradata/prod/' scope=spfile;
STANDBY
Masuk sebagai user oracle, dan aktifkan profile-nya. Masuk ke folder lokasi listener (cd
$ORACLE_HOME/network/admin), kemudian buat static listener seperti di bawah ini (vi
listener.ora)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = stby)
(ORACLE_HOME = /home/odg/oracle/app/oracle/product/11.2.0/db_1)
(SID_NAME = stby)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = stby.odg.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
Page 4
Matikan FIREWALL
#
/etc/init.d/iptables stop
2. Buat tnsnames. ora di masing-masing server (primary dan standby) seperti dibawah
PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.odg.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prod)
)
)
STBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = stby.odg.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stby)
)
)
Mesin standby
$ tnsping prod
TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 23JUL-2013 14:35:14
Copyright (c) 1997, 2011, Oracle.
Page 5
STANDBY
1. Copy password file dari primary, rename password file tersebut menjadi password file dengan
nama database oracle untuk mesin standby
$ scp orapwprod
oracle@stby.odg.com:/home/odg/oracle/app/oracle/product/11.2.0/db_1/dbs
/orapwstby
The authenticity of host 'stby.odg.com (192.168.6.155)' can't be
established.
RSA key fingerprint is 27:8b:74:32:5e:9f:d6:46:53:95:52:4e:43:84:b9:94.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'stby.odg.com' (RSA) to the list of known
hosts.
oracle@stby.odg.com's password:
orapwprod
100% 1536
1.5KB/s
00:00
2. Buat pfile yang hanya berisi parameter DB_NAME, untuk parameter memory_target dan
db_block_size, samakan dengan parameter memory_target dan db_block_size di pfile database
di mesin primary
[oracle@stby dbs]$ vi initstby.ora
*.db_name='stby'
*.db_unique_name='stby'
*.memory_target=839909376
*.db_block_size=8192
3. Buat folder yang diperlukan untuk lokasi datafile, archive, dan adump (lakukan sebagai user
root)
# mkdir p /oradata/stby
# mkdir p /archive
# mkdir p /home/odg/oracle/app/oracle/admin/stby/adump
# chown R oracle:oinstall /oradata
# chown R oracle:oinstall /oradata/stby
# chown R oracle:oinstall /archive
# chown R oracle:oinstall /home/odg/oracle/app/oracle/admin/stby/adump
Cornelia Dwi Mulyawati [cornelia.dwimulyawati@gmail.com]
Page 6
4. Ubah oracle_sid menjadi nama sid untuk database standby, kemudian startup nomount
[oracle@stby dbs]$ export ORACLE_SID=stby
[oracle@stby dbs]$ sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.3.0 Production on Tue Jul 23 15:33:12 2013
Copyright (c) 1982, 2011, Oracle.
839282688
2233000
494931288
339738624
2379776
bytes
bytes
bytes
bytes
bytes
PRIMARY
1. Cek di sql, apakah bisa dilakukan koneksi sysdba
SQL> connect sys/oracle@prod as sysdba;
Connected.
2. Jalankan RMAN, koneksikan database primary dan auxiliary database (standby database),
jalankan duplicate rman
$ rman target sys/oracle@prod auxiliary sys/oracle@stby
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jul 23
16:13:25 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates.
reserved.
All rights
Page 7
set DB_FILE_NAME_CONVERT='/oradata/prod/','/oradata/stby/'
set LOG_FILE_NAME_CONVERT='/oradata/prod/','/oradata/stby/'
set control_files='/oradata/stby/control01.ctl'
set log_archive_max_processes='5'
set fal_client='stby'
set fal_server='prod'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(prod,stby)'
set log_archive_dest_2='service=prod ASYNC
valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=prod'
;
}
STANDBY
1. Cek status open_mode
SQL> SELECT NAME, DB_UNIQUE_NAME, DATABASE_ROLE, OPEN_MODE FROM
V$DATABASE;
NAME
DB_UNIQUE_NAME
DATABASE_ROLE
OPEN_MODE
--------- ------------------------------ ---------------- ------------PROD
stby
PHYSICAL STANDBY MOUNTED
2. Cek archive log, samakan dengan archive log list di mesin primary
SQL> archive log list;
Database log mode
Automatic archival
Archive destination
Oldest online log sequence
Next log sequence to archive
Current log sequence
Archive Mode
Enabled
/archive/PROD
0
0
24
Apabila lokasi archive di mesin standby tidak sesuai dengan lokasi yang diinginkan, maka ubah
lokasinya
a. Cek lokasi archive
SQL> sho parameter LOG_ARCHIVE_DEST_1;
NAME
TYPE
VALUE
----------------------- ----------- -----------------log_archive_dest_1
string
LOCATION=/archive/PROD
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=stby
log_archive_dest_10
string
log_archive_dest_11
string
log_archive_dest_12
string
log_archive_dest_13
string
log_archive_dest_14
string
Page 8
log_archive_dest_15
log_archive_dest_16
log_archive_dest_17
string
string
string
NAME
----------------------log_archive_dest_18
log_archive_dest_19
TYPE
VALUE
----------- ------------------string
string
PRIMARY
1. Jalankan query dibawah untuk men-tes apakah archive log yang di primary terkirim ke mesin
standby
SQL> alter system switch logfile;
System altered.
Setelah itu cek di mesin standby apakah archive log yang di primary terkirim ke mesin standby
Cornelia Dwi Mulyawati [cornelia.dwimulyawati@gmail.com]
Page 9
STANDBY
1. Cek apakah archive log dari mesin primary terkirim ke mesin standby
SQL> select process, thread#, sequence#, status from v$managed_standby;
PROCESS
THREAD# SEQUENCE# STATUS
--------- ---------- ---------- -----------ARCH
0
0 CONNECTED
ARCH
1
30 CLOSING
ARCH
0
0 CONNECTED
ARCH
0
0 CONNECTED
ARCH
1
31 CLOSING
RFS
0
0 IDLE
RFS
0
0 IDLE
RFS
0
0 IDLE
RFS
1
32 IDLE
MRP0
1
32 WAIT_FOR_LOG
10 rows selected.
2. Apabila ingin mematikan database standby dengan kondisi dimana archive dari primary dikirim
ke database standby, tetapi tidak di apply di database standby maka matikan MRP-nya
SQL> recover managed standby database cancel;
Media recovery complete.
SQL> select process, thread#, sequence#, status from v$managed_standby;
PROCESS
THREAD# SEQUENCE# STATUS
--------- ---------- ---------- -----------ARCH
0
0 CONNECTED
ARCH
1
30 CLOSING
ARCH
0
0 CONNECTED
ARCH
0
0 CONNECTED
ARCH
1
31 CLOSING
RFS
0
0 IDLE
RFS
0
0 IDLE
RFS
0
0 IDLE
RFS
1
32 IDLE
9 rows selected.
Page 10
SEQUENCE#
---------30
29
28
31
APPLIED
--------YES
YES
YES
YES
Page 11
STANDBY
1. Matikan standby database (archive dari primary dikirim ke database standby, tetapi tidak di
apply di database standby), agar dapat dilakukan query di database standby:
SQL> recover managed standby database cancel;
Media recovery complete.
APPLIED
--------YES
YES
YES
YES
YES
Page 12
THREAD#
-------1
0
0
0
1
1
0
0
1
0
SEQUENCE#
--------37
0
0
0
38
39
0
0
39
0
STATUS
-----------CLOSING
CONNECTED
CONNECTED
CONNECTED
CLOSING
WAIT_FOR_LOG
IDLE
IDLE
IDLE
IDLE
Note : kalau mau mengembalikan agar jadi odg lagi, di restart aja standby database-nya
Page 13
STANDBY
1. Stop redo apply-nya:
SQL> recover managed standby database cancel;
Media recovery complete.
3. Open database-nya
SQL> alter database open;
Database altered.
Note :
While the standby is in snapshot standby mode you are free to run transactions against the
snapshot standby.
Cornelia Dwi Mulyawati [cornelia.dwimulyawati@gmail.com]
Page 14
While the standby is in snapshot mode it still continues to receive redo data from the primary
but it does not apply the redo data. You verify the transport by switching logs on the primary
and looking at the alert log on the standby
Kira-kira tejemahannya begini (jangan percaya banget ya sama terjemahannya, takutnya kalau
salah, coba sambil buka google translate aja hehehehe):
Ketika databse standby dalam kondisi snapshot standby, maka dapat dilakukan transaksi di
snapshot standby tersebut.
Ketika standby database yang berada dalam dalam kondisi snapshot standby menerima redo
data dari primary tetapi tidak me-apply-nya, maka lakukan verifikasi pengiriman redo-nya
dengan switch log dan lihat alert di standby database
839282688
2233000
494931288
339738624
2379776
bytes
bytes
bytes
bytes
bytes
Page 15
3. Aktifkan MRP-nya :
SQL> recover managed standby database disconnect;
Media recovery complete
Page 16
SWITCHOVER
PRIMARY
Note :
- pastikan tidak ada job yang sedang running
- buka alert primary dan standby (tail f)
1. Cek job apa saja yang sedang running
SQL> SELECT * FROM DBA_JOBS_RUNNING;
no rows selected
SQL> SHOW PARAMETER job_queue_processes;
NAME
TYPE
VALUE
----------------------- ----------- -----------------------------job_queue_processes
integer
1000
Apabila value TO STANDBY atau SESSION ACTIVE, maka hal ini menandakan bahwa database
primary dapat di switchover menjadi database standby. Apabila value-nya bukan TO STANDBY
atau SESSION ACTIVE, katanya itu berarti redo transport-nya tidak ter-configure dengan benar
atau tidak berfungsi dengan sebagaimana mestinya.
4. Ayo kita switchover
- Kalau status switchover-nya TO STANDBY
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;
Database altered.
Page 17
STANDBY
Note : pastikan MRP aktif
1. Cek status switchover:
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-------------------TO PRIMARY
Apabila value-nya TO PRIMARY atau SESSION ACTIVE, maka hal ini menandakan bahwa
database standby dapat di switchover ke primary. Apabila value-nya bukan TO PRIMARY atau
SESSION ACTIVE, maka pastikan bahwa redo apply aktif dan dan redo tansport sudah di
configure dengan benar dan berfungsi sebagaimana mestinya.
2. Ayo kita switchover
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
Database altered.
2. Aktifkan MRP
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT
LOGFILE DISCONNECT;
Database altered
Page 18
POST-SWITCHOVER
Kembalikan semua value parameter yang di ubah pada saat switchover seperti semula pada saat
sebelum dilakukan switchover.
Page 19
ISENG-ISENG
Note : Ini bagian iseng-isengnya penulis yah. Kalau menurut yang baca, bagian ini gak penting,
silahkan diabaikan, hapus bagian ini, atau kalau perlu hapus file ini sekalian
STANDBY
Note : pastikan MRP aktif
1. Cek parameter standby_file_management
SQL> show parameter standby_file;
NAME
TYPE
VALUE
------------------------------------ ----------- ---------------------standby_file_management
string
AUTO
PRIMARY
1. Cek lokasi datafile
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------/oradata/prod/system01.dbf
/oradata/prod/sysaux01.dbf
/oradata/prod/undotbs01.dbf
/oradata/prod/users01.dbf
/oradata/prod/example01.dbf
Page 20
System altered.
3. Periksa datafile
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------/oradata/prod/system01.dbf
/oradata/prod/sysaux01.dbf
/oradata/prod/undotbs01.dbf
/oradata/prod/users01.dbf
/oradata/prod/example01.dbf
/oradata/prod/test.dbf
6 rows selected.
4. Periksa tablespace
SQL> select name from v$tablespace;
NAME
-----------------------------SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE
TEST
7 rows selected.
STANDBY
1. Periksa apakah datafile yang dibuat di primary, terkirim ke standby
SQL> select name from v$datafile;
NAME
---------------------------------------------------------------------/oradata/stby/system01.dbf
/oradata/stby/sysaux01.dbf
/oradata/stby/undotbs01.dbf
/oradata/stby/users01.dbf
/oradata/stby/example01.dbf
/oradata/stby/test.dbf
6 rows selected.
Page 21
Note : Oke, sukses ya. Tapi kalau value parameter standby_fie_management nya MANUAL
gimana ya.. Yuk dicoba
STANDBY
1. Matikan MRP
SQL> recover managed standby database cancel;
Media recovery complete.
Page 22
PRIMARY
1. Buat tablespace
SQL> create tablespace test01 datafile '/oradata/prod/test01.dbf' size
1m;
Tablespace created.
SQL> alter system switch logfile;
System altered.
3. Periksa tablespace-nya
SQL> select name from v$tablespace;
NAME
-----------------------------SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE
TEST
TEST01
8 rows selected.
Page 23
STANDBY
1. Cek alert-nya
Tue Aug 06 21:52:04 2013
Archived Log entry 41 added for thread 1 sequence 76 ID 0xdfb3abe dest
1:
Tue Aug 06 21:52:08 2013
Media Recovery Log /archive/STBY/1_76_821131093.arc
File #7 added to control file as 'UNNAMED00007' because
the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error 1274
Errors in file
/home/odg/oracle/app/oracle/diag/rdbms/stby/stby/trace/stby_mrp0_3098.t
rc:
ORA-01274: cannot add datafile '/oradata/prod/test01.dbf' - file could
not be created
Recovery interrupted!
Recovery stopped due to failure in applying recovery marker (opcode
17.30).
Datafiles are recovered to a consistent state at change 1327808 but
controlfile could be ahead of datafiles.
MRP0: Background Media Recovery process shutdown (stby)
2. Cek datafile
SQL> select name from v$datafile;
NAME
------------------------------------------------------------------------------/oradata/stby/system01.dbf
/oradata/stby/sysaux01.dbf
/oradata/stby/undotbs01.dbf
/oradata/stby/users01.dbf
/oradata/stby/example01.dbf
/oradata/stby/test.dbf
/home/odg/oracle/app/oracle/product/11.2.0/db_1/dbs/UNNAMED00007
7 rows selected.
Page 24
6. Aktifkan MRP-nya
SQL> recover managed standby database disconnect;
Media recovery complete.
Page 25
Note : Create database sudah dicoba, sekarang di drop aja ya.. Kan cuma buat iseng-iseng aja
tablespace yang tadi
PRIMARY
1. Drop database berikut datafile dan content-nya
SQL> drop tablespace test including contents and datafiles;
Tablespace dropped.
SQL> drop tablespace test01 including contents and datafiles;
Tablespace dropped.
SQL> alter system switch logfile;
System altered.
Note : ok, tablespace dan datafile sudah di hapus, tunggu beberapa saat lalu cek apakah
datafile dan tablespace tersebut terhapus juga di standby
STANDBY
1. Cek datafile dan tablespace apakah sudah terhapus atau belum
SQL> select name from v$tablespace;
NAME
-----------------------------SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE
6 rows selected.
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------/oradata/stby/system01.dbf
/oradata/stby/sysaux01.dbf
/oradata/stby/undotbs01.dbf
/oradata/stby/users01.dbf
/oradata/stby/example01.dbf
Page 26