Monday, May 24, 2010

Setup Oracle 10g Data Guard for Apps 11i


$ tail -1 $TNS_ADMIN/tnsnames.ora
IFILE=/u01/oracle/R12/db/tech_st/10.2.0/network/admin/PROD_cttest1/PROD_cttest1_ifile.ora[oracle@cttest1

$ cat /u01/oracle/R12/db/tech_st/10.2.0/network/admin/PROD_cttest1/PROD_cttest1_ifile.ora
PROD_PRIM=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=cttest1.idc.oracle.com)
(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=PROD))
)
PROD_STBY=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=rrishav-idc1.idc.oracle.com)
(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=PROD))
)

$ cd $ORACLE_HOME/dbs
$ orapwd file=orapw password=

$ tail -1 initPROD.ora
IFILE=/u01/oracle/R12/db/tech_st/10.2.0/dbs/PROD_cttest1_ifile.ora

$ cat /u01/oracle/R12/db/tech_st/10.2.0/dbs/PROD_cttest1_ifile.ora
db_unique_name=PROD_PRIM
log_archive_config='dg_config=(PROD_PRIM,PROD_STBY)'
log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY'
db_recovery_file_dest_size = 107374182400
db_recovery_file_dest = '/u01/oracle/R12/db/apps_st/archivelog'
log_archive_dest_2='service=PROD_STBY valid_for=(online_logfiles,primary_role) db_unique_name=PROD_STBY LGWR ASYNC=20480 OPTIONAL REOPEN=15 NET_TIMEOUT=30'
log_archive_dest_state_2 = defer
fal_server='PROD_STBY'
fal_client='PROD_PRIM'
standby_archive_dest='LOCATION=USE_DB_RECOVERY_FILE_DEST'
standby_file_management=AUTO
parallel_execution_message_size=8192


SQL> select GROUP#, MEMBER from v$logfile;

GROUP# MEMBER
---------- --------------------------------------------------
2 /u01/oracle/R12/db/apps_st/data/log02a.dbf
2 /u01/oracle/R12/db/apps_st/data/log02b.dbf
1 /u01/oracle/R12/db/apps_st/data/log01a.dbf
1 /u01/oracle/R12/db/apps_st/data/log01b.dbf

SQL> select GROUP#, THREAD#, members, sum(bytes)/1024/1024 from v$log group by GROUP#, THREAD#, members;

GROUP# THREAD# MEMBERS SUM(BYTES)/1024/1024
---------- ---------- ---------- --------------------
2 1 2 1000
1 1 2 1000


alter database add standby logfile
thread 1 group 3 (
'/u01/oracle/R12/db/apps_st/data/stb_log03a.dbf',
'/u01/oracle/R12/db/apps_st/data/stb_log03b.dbf')
size 1000M;

alter database add standby logfile
thread 1 group 4 (
'/u01/oracle/R12/db/apps_st/data/stb_log04a.dbf',
'/u01/oracle/R12/db/apps_st/data/stb_log04b.dbf')
size 1000M;

alter database add standby logfile
thread 1 group 5 (
'/u01/oracle/R12/db/apps_st/data/stb_log05a.dbf',
'/u01/oracle/R12/db/apps_st/data/stb_log05b.dbf')
size 1000M;

SQL> select GROUP#, type, MEMBER from v$logfile;

GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------
2 ONLINE /u01/oracle/R12/db/apps_st/data/log02a.dbf
2 ONLINE /u01/oracle/R12/db/apps_st/data/log02b.dbf
1 ONLINE /u01/oracle/R12/db/apps_st/data/log01a.dbf
1 ONLINE /u01/oracle/R12/db/apps_st/data/log01b.dbf
3 STANDBY /u01/oracle/R12/db/apps_st/data/stb_log03a.dbf
3 STANDBY /u01/oracle/R12/db/apps_st/data/stb_log03b.dbf
4 STANDBY /u01/oracle/R12/db/apps_st/data/stb_log04a.dbf
4 STANDBY /u01/oracle/R12/db/apps_st/data/stb_log04b.dbf
5 STANDBY /u01/oracle/R12/db/apps_st/data/stb_log05a.dbf
5 STANDBY /u01/oracle/R12/db/apps_st/data/stb_log05b.dbf


=> run preclone on dbTier
=> scp the dbTier techstack
=> run preclone on appsTier
=> scp the appsTier

1. Connect to the primary database and, if desired, the recovery catalog database. For example, enter:

% rman TARGET SYS/oracle@trgt CATALOG rman/cat@catdb
backup database plus archivelog all;

2. Create the standby control file.

COPY CURRENT CONTROLFILE FOR STANDBY TO '/u01/oracle/R12/db/apps_st/archivelog/sby_control01.ctl';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; # so backup is consistent and recoverable

Copy "/u01/oracle/R12/db/apps_st/archivelog" to target.

3. Follow these steps to restore and recover the standby datafiles:
1. Ensure the end recovery time is greater than or equal to the
checkpoint SCN of the standby control file and
that a log file containing the checkpoint SCN is available for recovery.
2. If desired, issue a SET command to specify the end time, SCN,
or log sequence number for incomplete recovery.
3. If automatic channels are not configured, then manually allocate at least one auxiliary channel.
4. Specify the NOFILENAMECHECK parameter in the DUPLICATE command, and use the DORECOVER option.

For example, enter the following at the RMAN prompt to use a configured channel to create the standby database:

# If desired, issue a LIST command to determine the SCN of the standby control file.
# The SCN to which you recover must be greater than or equal to the standby control
# file SCN.
LIST BACKUP OF CONTROLFILE;
LIST COPY OF CONTROLFILE;

RUN
{
# If desired, issue a SET command to terminate recovery at a specified point.
# SET UNTIL SCN 143508;
DUPLICATE TARGET DATABASE FOR STANDBY
NOFILENAMECHECK
DORECOVER;
}

RMAN uses all incremental backups, archived redo log file backups, and archived redo log files to perform incomplete recovery. The standby database is left mounted.

4. Create Standby Redo Logs on the new standby database

5. Start Managed Database Recovery:
- On the standby database,
select DATABASE_ROLE from v$database;

The result should be as follows:
DATABASE_ROLE
----------------
PHYSICAL STANDBY

- On the production database enable the previously deferred remote destination
alter system set log_archive_dest_state_2=enable SID='*';

- recover managed standby database using current logfile disconnect;

==============
ON PRODUCTION
==============
SQL> select PROCESS, PID, STATUS, GROUP#, SEQUENCE# from v$managed_standby;

PROCESS PID STATUS GROUP# SEQUENCE#
--------- ---------- ------------ -------- ----------
ARCH 28013 CLOSING N/A 12
ARCH 28015 CLOSING 1 10
LNS 24932 WRITING 2 13 ----> log is sent to RFS

==============
ON STANDBY
==============
SQL> select PROCESS, PID, STATUS, GROUP#, SEQUENCE# from v$managed_standby;

PROCESS PID STATUS GROUP# SEQUENCE#
--------- ---------- ------------ -------- ----------
ARCH 18263 CLOSING 4 12
ARCH 18265 CONNECTED N/A 0
RFS 18315 IDLE N/A 0
MRP0 18270 APPLYING_LOG N/A 13
RFS 18311 IDLE 2 13

No comments:

Post a Comment