STANDBY DATABASE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string prod
alter system set log_archive_dest_2='service=prod db_unique_name=prod';
alter system set log_archive_dest_state_2=enable;
alter system set fal_server=proddr;
alter system set log_archive_dest_1='location=/u01/app/oracle/product/19/db_1/dbs/arch';
alter system set standby_file_management='auto';
RMAN> backup database format'/u01/prod_bkp/bkp_full_%U';
RMAN> backup archivelog all format '/u01/prod_bkp/bkp_archive_%U';
RMAN> backup current controlfile for standby format '/u01/prod_bkp/bkp_ctl_%U';
alter system set log_archive='dg_config=(prod ,proddr)';
RMAN> restore standby controlfile from '/u01/proddr_bkp/bkp_ctl_052ursvq_1_1';
RMAN> catalog start with '/u01/proddr_bkp';
---------------------------------------
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIMARY_DB,STANDBY_DB)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIMARY_DB';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=STANDBY_DB LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY_DB';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc';
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4;
ALTER SYSTEM SET FAL_SERVER=STANDBY_DB;
ALTER SYSTEM SET FAL_CLIENT=PRIMARY_DB;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/primary/data','/standby/data';
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/primary/data','/standby/data';
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
----------------------------------------------------
Enable ARCHIVELOG Mode:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ALTER DATABASE FORCE LOGGING;
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(PROD,PRODDR)';
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(prod,orcl)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/product/19/db_1/dbs/arch) DB_UNIQUE_NAME=PROD';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/proddruct/19/db_1/dbs/arch) DB_UNIQUE_NAME=proddr';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcl DB_UNIQUE_NAME=orcl'scope=both;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc';
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4;
ALTER SYSTEM SET FAL_SERVER=orcl;
ALTER SYSTEM SET FAL_CLIENT=PROD;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/PROD/','/u01/app/oracle/oradata/PRODDR/';
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/PROD/','/u01/app/oracle/oradata/PRODDR/';
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=devdr NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=devdr';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
SQL> startup NOMOUNT PFILE='/u01/app/oracle/product/19/db_1/dbs/initproddr.ora';
sqlplus /nolog
connect / as sysdba
select instance_name, status, database_status from v$instance;
------------------------------------
select name, open_mode, db_unique_name, database_role from v$database;
START MRP :
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
STOP MRP :
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
alter system set log_archive_dest_state_2='defer';
alter system set log_archive_dest_state_2='enable';
alter system switch logfile;
select error,status from v$archive_dest where dest_id=2;
select error,status from v$archive_dest where dest_id=1;
select process ,status ,sequence# from v$managed_standby;
select dest_id,status,destination,error from v$archive_dest where dest_id=2;
##checking order of arhive logs
select sequence#,first_time,next_time,applied,archived from v$archived_log
where name='orcl' order by first_time;
#GAP checking
select status,gap_status from v$archive_dest_status where dest_id=2;
select process ,status ,sequence# from v$managed_standby;
alter database recover managed standby database disconnect from session;
process checking -
select client_process,process,thread#,sequence#,status from v$managed_standby
where client_process='LGWR' or process='MRP0';
checking both prm and stan are in sync or not
SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received",
APPL.SEQUENCE# "Last Sequence Applied", (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference"
FROM
(SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,
(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;
sequence# checking
select max(sequence#) from v$archived_log;
select max(sequence#) from v$archived_log where applied='YES';
--------------------------------------------------------------
rman target sys@PRODDR
-- On primary
SELECT DEST_ID, DEST_NAME, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE TARGET='proddr';
checking the pwd file same or not on bith db -
md5sum orapwprod
systemctl disable firewalld
:%s/ prod/prodr
SQL> show parameter remote_login_passwordfile;
select group#,thread#,sequence#,archived,status from v$standby_log;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 '/u01/app/oracle/oradata/DEVDB/onlinelog/redo11.log' SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 '/u01/app/oracle/oradata/DEVDB/onlinelog/redo12.log' SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 '/u01/app/oracle/oradata/DEVDB/onlinelog/redo13.log' SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 14 '/u01/app/oracle/oradata/DEVDB/onlinelog/redo14.log' SIZE 50M;
orapwd file=$ORACLE_HOME/dbs/orapworcl entries=10 force=y
orapwd file=orapwdevdb password=sadashiv#123 entries=10 force=y
orapwd file=orapwprimary password=sonali#123 entries=10 force=y
orapwd file=orapwprod password=sadashiv#123 entries=10 force=y
sqlplus sys/sys@prod as sysdba
rman target sys/sadashiv#123@prod auxiliary sys/sadashiv#123@orcl1;
rman target sys/sys@prod auxiliary sys/sys@orcl1;
rman target sys/sonali#123@primary1 auxiliary sys/sonali#123@standby1;
alter sysetm register;
sqlplus sys/sys@ORCL1
mkdir -p /u01/app/oracle/admin/devdb/adump
mkdir -p /u01/data/db_files/devdb/
mkdir -p /u01/FRA/devdb
sadashiv#123
scp orapwporcl oracle@192.168.93.134:/u01/app/oracle/product/19.3/db_home/dbs
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/app/oracle/recovery_area' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 20G SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcl NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl';
SHOW PARAMETER LOCAL_LISTENER;
ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.93.132)(PORT=1521))' SCOPE=BOTH;
./runInstaller -executePrereqs -silent -responseFile /u01/app/oracle/product/19/db_1/install/response/db_install.rsp
./runInstaller -silent -responseFile /u01/app/oracle/product/19/db_1/install/response/db_install.rsp
./runInstaller -ignorePrereq -waitforcompletion -silent -responseFile /u01/app/oracle/product/19.3/db_home/install/response/db_install.rsp
CREATE CONFIGURATION 'my_dg_config' AS PRIMARY DATABASE IS 'prod' CONNECT IDENTIFIER IS 'prod';
ADD DATABASE 'orcl' AS CONNECT IDENTIFIER IS 'orcl' MAINTAINED AS PHYSICAL;
create spfile='/tmp/initorcl.ora' from pfile;
SQL> alter system set service_names='orcl$' scope=spfile;
RMAN> connect auxiliary sys@ORCL
rman target sys/sadashiv#123@ORCL1 auxiliary sys/sadashiv#123@PROD;
duplicate target database for standby from active database nofilenamecheck;
ALTER DATABASE FLASHBACK OFF;
alert location-
/u01/app/oracle/diag/rdbms/orcl/orcl/trace
control file location
/u01/app/oracle/oradata/PROD
alter database create standby controlfile as '/u01/app/oracle/oradata/PROD/orcl.ctl';
----------------------------------------------
mkdir /u01/bkp
rman target /
backup database format '/u01/bkp/full_bkp_%U';
backup archivelog all format '/u01/bkp/arch_%U';
backup current controlfile for standby format '/u01/bkp/control_ctl_%U';
backup incremental from scn 3209301 database format '/u01/bkp/incr_bkp_%U';
scp /u01/bkp *
standby
mkdir /u01/bkp
db in - no mount
rman target /
restore controlfile from '/u01/bkp/control_ctl_112vg1oa_1_1
alter database mount;
catalog start with '/u01/bkp/';
restore database ;
recover database ;
mrp start
check rfs status
alter database open resetlogs;
RMAN> restore standby controlfile from service 'ORCL1'; (db in no mount )
recover database from service 'ORCL1';
restore database from service 'ORCL1'
RMAN> restore standby controlfile from service 'ORCL1';
-------------------------------------
START REAL TIME REDO APPLY IN DG :
Directly apply the redologs without waiting to fill the standby redolog file MRP will apply it realtime no lag and no gap fast sync.
alter database recover managed standby database using current logfile;
--------------------------------
Incremental backup and restore in DG -
Determine the SCN on the Standby Database:-
SELECT CURRENT_SCN FROM V$DATABASE;
RMAN> CONNECT TARGET sys/sys@primary_db;
backup current controlfile for standby format '/u01/bkp/control_ctl_%U';
RMAN> RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE disk;
BACKUP INCREMENTAL FROM SCN 3209819 DATABASE FORMAT '/u01/bkp/incr_backup_%U';
RELEASE CHANNEL ch1;
}
RMAN> CONNECT TARGET sys/sys@stadby_db;
restore controlfile from '/u01/bkp/control_ctl_112vg1oa_1_1
RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE disk;
CATALOG START WITH '/u01/bkp/';
RECOVER DATABASE NOREDO;
RELEASE CHANNEL ch1;
}
----------------------------------
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%U';
exec DBMS_SERVICE.CREATE_SERVICE (service_name => 'prod1_rw', network_name => 'prod1_rw', failover_method => 'BASIC', failover_type =>
'SELECT', failover_retries => 30, failover_delay => 10);
----------------------------------------------
creating clinet connection -
BEGIN
DBMS_SERVICE.CREATE_SERVICE (
service_name => 'prod1_rw',
network_name => 'prod1_rw',
failover_method => 'BASIC',
failover_type => 'SELECT',
failover_retries => 30,
failover_delay => 10
);
END;
/
define db primary -
create or replace procedure prod1_rw_service
is
v_role VARCHAR(30);
begin
select DATABASE_ROLE into v_role from V$DATABASE;
if v_role = 'PRIMARY' then
DBMS_SERVICE.START_SERVICE('prod1_rw');
else
DBMS_SERVICE.STOP_SERVICE('prod1_rw');
end if;
end;
/
TRIGGER TO START SERVICE ON DB STARTUP:
=======================================
create or replace TRIGGER db_startup
after startup on database
begin
prod1_rw_service;
end;
/
TRIGGER TO START SERVICE ON DB ROLECHANGE:
==========================================
create or replace TRIGGER db_role_change
after db_role_change on database
begin
prod1_rw_service;
end;
/
SQL> exec prod1_rw_service;
tnsnames.ora file config on client -
prod =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.93.132)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.93.134)(PORT = 1521))
)
(CONNECT_DATA = (SERVICE_NAME = prod1_rw)
(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=30)(DELAY=10))
)
)
-------------------------------------------------------------------
Oracle Data Guard Manual Switchover and Failover on Physical Standby :
select name, open_mode, db_unique_name, database_role from v$database;
On primary:
===========
select STATUS, GAP_STATUS from V$ARCHIVE_DEST_STATUS where DEST_ID = 2;
On standby:
===========
select NAME, VALUE, DATUM_TIME from V$DATAGUARD_STATS;
On primary:
===========
select SWITCHOVER_STATUS from V$DATABASE;
alter database commit to switchover to physical standby with session shutdown;
startup mount;
Convert standby to primary:
select SWITCHOVER_STATUS from V$DATABASE;
alter database commit to switchover to primary with session shutdown;
alter database open;
On new standby on MRP -
alter database recover managed standby database disconnect;
------------------------------
Failover primary database :
select name, open_mode, db_unique_name, database_role from v$database;
On standby:
===========
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL> select SWITCHOVER_STATUS from V$DATABASE;
You must see TO PRIMARY or SESSIONS ACTIVE. Switch standby to primary
SQL> alter database commit to switchover to primary with session shutdown;
SQL> alter database open;
Rebuild Primary After Failover :
Post failover, there are two methods of rebuilding your failed primary
Method 1:Rebuild from scratch à RMAN duplicate
Method 2: Flashback database à only if Flashback was enabled
Get the SCN at which standby became primary:
select to_char(standby_became_primary_scn) from v$database;
Flashback crashed primary(proddb):
startup mount;
flashback database to scn <standby_became_primary_scn>;
alter database convert to physical standby;
alter database recover managed standby database disconnect;
--------------------------------------------------
Convert Physical Standby into Snapshot Standby:
On standby:
===========
SQL> alter database recover managed standby database cancel;
SQL> select name, open_mode from v$database; >> make sure its mounted
SQL> alter database convert to snapshot standby;
SQL> alter database open; >> open the DB
SQL> select name, open_mode, database_role from v$database;
Verifying snapshot standby:
On standby:
===========
SQL> select name, guarantee_flashback_database from v$restore_point;
SQL> create table student(sno number(2), s_name varchar2(10));
SQL> insert into student values(1,'RAM');
SQL> insert into student values (2,'Max');
SQL> commit;
SQL> select * from student;
Revert back snapshot standby to physical standby:
On standby:
===========
SQL> select name, open_mode, database_role from v$database;
SQL> shut immediate;
SQL> startup mount;
SQL> alter database convert to physical standby;
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database recover managed standby database disconnect;
SQL> select * from student;
-----------------------------------------
Configure Data Guard Broker :
Edit listeners
(SID_DESC=
(GLOBAL_DBNAME=orcl_DGMGRL)
(SID_NAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/19.3/db_home)
)
Stop MRP on standby :
On standby:
===========
SQL> alter database recover managed standby database cancel;
SQL> alter system set LOG_ARCHIVE_DEST_2='' SCOPE=BOTH sid='*';
On primary:
===========
SQL> alter system set LOG_ARCHIVE_DEST_2='' SCOPE=BOTH sid='*';
Enable broker :
On primary:
===========
SQL> alter system set dg_broker_start=true;
SQL> show parameter dg_broker_start;
On standby:
===========
SQL> alter system set dg_broker_start=true;
SQL> show parameter dg_broker_start;
Register primary with broker:
On primary:
===========
dgmgrl sys/sadashiv#123@prod1
DGMGRL> create configuration my_dg_config as primary database is prod connect identifier is prod1;
DGMGRL> show configuration;
Register standby with broker;
DGMGRL> add database orcl as connect identifier is orcl1;
DGMGRL> show configuration;
Enable Data Guard broker:
Once primary and standby are registered, we must enable broker
DGMGRL> DISABLE CONFIGURATION;
DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE prod;
DGMGRL> SHOW DATABASE orcl;
Turn on/off the apply process in DG :
edit database orcl set state=APPLY-OFF;
edit database orcl set state=APPLY-ON;
Turn on/off the TRANSPORT from the source db :
edit database prod set state=TRANSPORT-OFF
edit database prod set state=TRANSPORT-ON
------------------------------------------
Oracle Data Guard Broker Switchover and Failover:
Switchover Using DGMGRL :
On primary:
===========
dgmgrl sys/sys@prod
DGMGRL> show configuration;
DGMGRL> SWITCHOVER TO orcl;
DGMGRL> show configuration;
Revert Back Using DGMGRL:
On current primary(orcl):
==============================
dgmgrl sys/sys@orcl
DGMGRL> show configuration;
DGMGRL> switchover to prod;
DGMGRL> show configuration;
Data Guard Broker Failover :-
On primary:
===========
ps -ef|grep pmon
grid 2636 1 0 Apr15 ? 00:00:12 asm_pmon_+ASM
oracle 16914 1 0 14:03 ? 00:00:00 ora_pmon_prod
oracle 17722 15893 0 15:08 pts/0 00:00:00 grep pmon
kill -9 16914
Failover to Standby
On standby:
===========
dgmgrl sys/sys@orcl
DGMGRL> show configuration;
DGMGRL> FAILOVER TO orcl;
Performing failover NOW, please wait...
Failover succeeded, new primary is "orcl"
DGMGRL> show configuration;
Rebuild Primary After Failover :-
On current primary (orcl):
===============================
dgmgrl sys/sys@orcl
(note stb (prod - should be in mount )
DGMGRL> show configuration;
DGMGRL> reinstate database prod;
Reinstating database "proddb", please wait...
Verify proddb post reinstate:
On failed primary (prod):
===========================
select name,open_mode from v$database;
select process, status, sequence# from v$managed_standby;
Switchover to get original configuration:
On current primary (proddb_st):
===============================
dgmgrl sys/sys@orcl
DGMGRL> switchover to prod;
----------------------------------------
Configure Fast Start Failover :
On primary(proddb):
===================
dgmgrl sys/sys@proddb
DGMGRL> show database prod StaticConnectIdentifier;
DGMGRL> show database orcl StaticConnectIdentifier;
Define FastStartFailoverTarget:
On primary (proddb):
====================
dgmgrl sys/sys@prod
DGMGRL> SHOW FAST_START FAILOVER
DGMGRL> EDIT DATABASE prod SET PROPERTY FastStartFailoverTarget = 'orcl';
DGMGRL> EDIT DATABASE orcl SET PROPERTY FastStartFailoverTarget = 'prod';
DGMGRL> show database verbose prod;
DGMGRL> show database verbose orcl;
Define FastStartFailoverThreshold :
DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=30;
DGMGRL> show fast_start failover;
DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit = 30;
Enable FSFO : Never start observer on production database
On Standby Server:
==================
dgmgrl sys/sys@orcl
DGMGRL> ENABLE FAST_START FAILOVER;
DGMGRL> show configuration;
DGMGRL> start observer;
Test FSFO Configuration:
On primary (prod):
===================
sqlplus / as sysdb
SQL> shut abort;
On new primary (orcl):
===========================
sqlplus / as sysdba
SQL> select name, open_mode, db_unique_name from v$database;
Reinstate Failed Primary:
On failed primary (prod):
===========================
sqlplus / as sysdba
SQL> startup mount;
dgmgrl sys/sys@prod
DGMGRL> show configuration;
On current primary (orcl):
===============================
dgmgrl sys/sys@orcl
DGMGRL> show configuration;
DGMGRL> switchover to prod;
Disable FSFO:
dgmgrl sys/sys@prod
DGMGRL> DISABLE FAST_START FAILOVER;
Stop observer:
==============
dgmgrl sys/sys@orcl
DGMGRL> stop observer;
-----------------------------------------
Convert Physical Standby Into Logical Standby :
Primary Database Changes
DGMGRL> show configuration
Configuration - my_dg
Protection Mode: MaxPerformance
Members:
prod - Primary database
orcl - (*) Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 59 seconds ago)
In the primary database, retrieve the list of objects that are not supported
set pagesize 25;
column owner format a5;
select distinct owner, table_name from dba_logstdby_unsupported order by owner,table_name;
Check the reason behind those unsupported objects
select column_name,data_type from dba_logstdby_unsupported where owner='OE' and table_name= 'CUSTOMERS';
Identify the unsupported schemas on primary
Col owner format a20;
select owner from dba_logstdby_skip where statement_opt = 'INTERNAL SCHEMA';
Make sure each table row in primary database can be uniquely identified. To fix the table, make sure you add a primary key
SELECT OWNER, TABLE_NAME,BAD_COLUMN FROM DBA_LOGSTDBY_NOT_UNIQUE;
Redo Apply needs to be stopped on the Physical Standby now
DGMGRL> edit database ip7_st set state = apply-off;
Build Log Miner directory on primary
SQL> exec dbms_logstdby.build
Open Physical Standby
On Standby Server
=================
SQL> alter database recover to logical standby orcl;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database open resetlogs;
SQL> select name, open_mode, db_unique_name, database_role, guard_status from v$database;
Data Guard Broker Changes :
DGMGRL> remove database orcl;
Start Logical Apply Service on standby server
On Standby
==========
SQL> alter database start logical standby apply immediate;
Now add the new logical standby to the broker configuration
DGMGRL> add database orcl_stb as connect identifier is orcl_stb;
DGMGRL> enable database orcl_stb
DGMGRL> show configuration;
Configuration - my_dg
Protection Mode: MaxPerformance
Members:
prod - Primary database
orcl_stb - Logical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 5 seconds ago)
Verify logical standby:
On standby:
===========
ps -ef|grep lsp
SQL> SELECT name, value FROM v$logstdby_stats;
Shutting Down Logical Standby :
Switch log on primary
Alter system switch logfile;
On standby, stop LSP:
Alter database stop logical standby apply;
Shutdown immediate;
To start the LSP process on standby
Startup;
Alter database start logical standby apply immediate;
-----------------------------------------
EDIT DATABASE 'orcl' SET PROPERTY 'Log_Archive_Dest_State_2'='DEFER';
CREATE CONFIGURATION 'my_dg_config' AS PRIMARY DATABASE IS 'prod' CONNECT IDENTIFIER IS 'prod';
ADD DATABASE 'prod' AS CONNECT IDENTIFIER IS 'prod';
ENABLE DATABASE 'orcl';
ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
RMAN> run
{
duplicate target database for standby from active database
NOFILENAMECHECK
spfile
parameter_value_convert 'PROD','orcl'
set db_name='PROD'
set db_unique_name='orcl'
set db_file_name_convert '/u01/prod/oradata','/u01/prod/oradata'
set log_file_name_convert '/u01/prod/oradata/redolog',
'/u01/prod/oradata/redolog'
;
}
ALTER SYSTEM SET db_recovery_file_dest_size = 5G SCOPE=BOTH;
-
backup database plus archivelog;
alter database create standby controlfile as '/u01/bkp/orcl.ctl';
BACKUP DATAFILE 1 FORMAT '/u01/bkp/datafile1_%U.bkp';
log_archive_dest_2 string SERVICE=prod1 ASYNC VALID_FOR=
(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=prod
=====================================================
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/u01/app/oracle/controlfile_trace.sql' RESETLOGS;
/u01/app/controlfile_trace.sql
@/u01/app/controlfile_trace.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
DATAFILE
'/u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_mc8t4cp0_.dbf',
'/u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_mc8t9k3d_.dbf',
'/u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_mc8t9k44_.dbf',
'/u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_mc8t4ctg_.dbf'
'/u01/app/oracle/oradata/ORCL/datafile/o1_mf_temp_mc8thz20_.tmp
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_mc8thqfn_.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_mc8thqgr_.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_3_mc8thqjs_.log' SIZE 50M
-- Add additional redo log files here
CHARACTER SET AL32UTF8;
TEMPFILE
'/u01/app/oracle/oradata/ORCL/tempfile/temp01.dbf' SIZE 20M REUSE;
============================
Database drop with commands:
shut immediate;
startup mount ;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
DROP DATABASE;
rm -rf /path_to_your_database_files/*
================================
Comments
Post a Comment