Creating Far Sync instance step by step
These are the steps of creating Far Sync instance in the command line:
Create 12.1 primary db
Create 12.1 physical standby
Create regular standby DG broker configuration
modify network file (on primary and standby) and add entries for the far_sync instance, add to tnsnames.ora on Primary hosts and standby hosts:
Copy tnsnames.ora to new farsync server – ensure all hosts mentioned in tnsnames are written also in /etc/hosts
Add to listener.ora in far sync server
Install on Far Sync host 12.1 database software, On primary database:
edit initFarSyncInst.ora, Add the following lines:
Change the following lines:
Delete the following lines:
On Primary - Copy pfile, created controlfile file to far sync server (with the instance name).
On Far Sync Server - Create required directories
create grid resource
copy password file from primary
Get password file back to ASM on FarSyncHost
Create .bashrc on the far sync server and define Oracle environment parameters.
Recommended: move the redo + archives to the correct location on far sync server
Start far sync standby database
Restore controlfile from to ASM.
Find the ASM full name of the controlfile.
Update spfile with the new controlfile found in the last step.
Create init.ora file calling to the ASM spfile
Restart instance to load with the new spfile
Setup listenerand far sync instance are starting automatically using Oracle Restart (Grid Infrastructure)
Create standby log on the far sync (if it was not already created on the primary):
Check if you need to create more threads if the primary is in RAC
If needed add more standby redo logs at the same size to the other threads manually as much as it needed
Verify database role is Far Sync
On primary database:
Add to data guard broker setup
Oracle 12.2 Priority
Oracle 12.1 Alternate
Change the mode Maximum Availability
FarSyncInst =Note: (UR=A) is needed to connect to a BLOCKED unmounted database instance.
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = FarSyncHost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FarSyncInst)
(UR=A)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0 )(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=FarSyncInst)
(ORACLE_HOME=/oracle/product/12.1.0.2/dbhome_1)
(GLOBAL_DBNAME=FarSyncInst)
)
(SID_DESC=
(SID_NAME=FarSyncInst)
(ORACLE_HOME=/oracle/product/12.1.0.2/dbhome_1)
(GLOBAL_DBNAME=FarSyncInst_DGMGRL)
)
(SID_DESC=
(SID_NAME=FarSyncInst)
(ORACLE_HOME=/oracle/product/12.1.0.2/dbhome_1)
(GLOBAL_DBNAME=FarSyncInst_DGB)
)
)
ADR_BASE_LISTENER = /oracle
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
VALID_NODE_CHECKING_REGISTRATION_LISTENER=SUBNET
SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/u01/app/oracle/product/12.1.0.2/db/dbs/farsync_FarSyncInst_control.ctl';
SQL> create pfile='/u01/app/oracle/product/12.1.0.2/db/dbs/initFarSyncInst.ora' from spfile;
*.db_unique_name=FarSyncInst
*.cpu_count=1
*.log_archive_config='DG_CONFIG=(PrimaryDB,StandbyDB,FarSyncInst)'
*.audit_file_dest='/oracle/admin/FarSyncInst/adump'
*.fal_server='PrimaryDB','StandbyDB'
*.log_archive_dest_1 ='location=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES)'
*.control_files='/oracle/product/12.1.0.2/dbhome_1/dbs/farsync_FarSyncInst_control.ctl'
*.undo_tablespace='UNDOTBS1'
*.sga_target=384m
*.db_create_file_dest='+DATA'
*.db_recovery_file_dest='+DATA'
*.db_recovery_file_dest_size=50g
*.db_file_name_convert='+DATA/PrimaryDB/', '+DATA/FarSyncInst/'
*.log_file_name_convert='+DATA/PrimaryDB/', '+DATA/FarSyncInst/'
*.dg_broker_config_file1='+DATA/FarSyncInst/dr1FarSyncInst.dat'
*.dg_broker_config_file2='+DATA/FarSyncInst/dr2FarSyncInst.dat'
*.diagnostic_dest='/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=FarSyncInstXDB)'
.__*
.instance_number
.log_archive_format
.log_archive_trace
.thread
.undo_tablespace
log_archive_max_processes
memory_target
LOG_ARCHIVE_DEST_2
LOG_ARCHIVE_DEST_3
cluster_database
processes
open_cursors
memory_target
remote_listener
db_writer_processes
gcs_server_processes
sessions?
resource_manager_plan?
cd $ORACLE_HOME/dbs
scp initFarSyncInst.ora farsync_FarSyncInst_control.ctl FarSyncHost:/oracle/product/12.1.0.2/dbhome_1/dbs/
mkdir -p $ORACLE_HOME/rdbms/audit
mkdir -p $ORACLE_BASE/admin/FarSyncInst/adump
srvctl add database -d FarSyncInst -o /oracle/product/12.1.0.2/dbhome_1 -n FarSyncInst -i FarSyncInst -y automatic -r FAR_SYNC
ASM> pwget --dbuniquename PrimaryDB
+DATA/PrimaryDB/PASSWORD/pwdPrimaryDB.276.913723271
ASM> pwcopy +DATA/PrimaryDB/PASSWORD/pwdPrimaryDB.276.913723271 /tmp/
copying +DATA/PrimaryDB/PASSWORD/pwdPrimaryDB.276.913723271 -> /tmp/pwdPrimaryDB.276.913723271
$ scp /tmp/pwdPrimaryDB.276.913723271 FarSyncHost: /tmp
ASM> mkdir +DATA/FarSyncInst
ASM> pwcopy --dbuniquename FarSyncInst /tmp/pwdPrimaryDB.276.913723271 +DATA/FarSyncInst/pwdFarSyncInst
$ export ORACLE_SID=FarSyncInst
SQL> startup nomount
SQL> create spfile from pfile='/oracle/product/12.1.0.2/dbhome_1/dbs/initFarSyncInst.ora';
SQL> shutdown abort
SQL> startup nomount
$ rman nocatalog
RMAN> connect target;
RMAN> restore controlfile to '+DATA' from '/oracle/product/12.1.0.2/dbhome_1/dbs/farsync_FarSyncInst_control.ctl';
$ asmcmd
ASMCMD [+] > cd DATA
ASMCMD [+DATA] > find --type controlfile . *
+DATA/FarSyncInst/CONTROLFILE/current.622.902053967
SQL> alter system set control_files='+DATA/FarSyncInst/CONTROLFILE/current.622.902053967' scope=spfile;
SQL> create pfile='/oracle/product/12.1.0.2/dbhome_1/dbs/initFarSyncInst.ora' from spfile;
SQL> create spfile='+DATA/FarSyncInst/spfileFarSyncInst.ora' from pfile='/oracle/product/12.1.0.2/dbhome_1/dbs/initFarSyncInst.ora';
$ mv initFarSyncInst.ora _initFarSyncInst.ora
$ mv spfileFarSyncInst.ora _spfileFarSyncInst.ora
$ vi initFarSyncInst.ora
SPFILE='+DATA/FarSyncInst/spfileFarSyncInst.ora'
SQL> shutdown abort
SQL> startup mount
srvctl add listener -l LISTENER -o /oracle/12.1.0/grid
srvctl start listener
$ srvctl add database -d FarSyncInst -o /oracle/product/12.1.0.2/dbhome_1 -n FarSyncInst -i FarSyncInst -y automatic -r FAR_SYNC
$ srvctl start database -d FarSyncInst
set serveroutput on;
declare
log_num number;
log_size number;
log_num_standby number;
begin
for j in (select inst_id i from gv$instance) loop
select count(*) into log_num from gv$log where inst_id=j.i ;
select count(*) into log_num_standby from gv$standby_log where inst_id=j.i ;
select max(BYTES) into log_size from gv$log where inst_id=j.i ;
for i in 1..(log_num+1-log_num_standby) loop
--execute immediate 'ALTER DATABASE ADD STANDBY LOGFILE THREAD '||j.i ||' SIZE '||log_size;
dbms_output.put_line('ALTER DATABASE ADD STANDBY LOGFILE THREAD '||j.i ||' SIZE '||log_size||';');
end loop;
end loop;
end;
/
select GROUP#,THREAD# from v$standby_log;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 SIZE 52428800
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
FAR SYNC
SQL> select DB_UNIQUE_NAME,DEST_ROLE from V$DATAGUARD_CONFIG;
DB_UNIQUE_NAME DEST_ROLE
------------------------------ -----------------
FarSyncInst FAR SYNC INSTANCE
PrimaryDB UNKNOWN
StandbyDB UNKNOWN
SQL> ALTER SYSTEM Set LOG_ARCHIVE_CONFIG='DG_CONFIG=(PrimaryDB,StandbyDB,FarSyncInst)';
SQL> Alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both;
SQL> ALTER SYSTEM Set LOG_ARCHIVE_DEST_2=' ';
SQL> ALTER DATABASE SET STANDBY TO MAXIMIZE AVAILABILITY;
$ dgmgrl /
DGMGRL> ADD FAR_SYNC FarSyncInst AS CONNECT IDENTIFIER IS FarSyncInst;
DGMGRL> EDIT FAR_SYNC FarSyncInst SET PROPERTY RedoRoutes = '(PrimaryDB : StandbyDB ASYNC)';
DGMGRL> EDIT DATABASE StandbyDB SET PROPERTY LogXptMode = 'SYNC';
DGMGRL> EDIT DATABASE PrimaryDB SET PROPERTY MaxFailure = 0;
DGMGRL> EDIT FAR_SYNC FarSyncInst SET PROPERTY MaxFailure = 1;
DGMGRL> EDIT DATABASE StandbyDB SET PROPERTY MaxFailure = 0;
DGMGRL> EDIT DATABASE StandbyDB SET PROPERTY RedoRoutes = '(LOCAL : PrimaryDB ASYNC)';
DGMGRL> ENABLE CONFIGURATION;
DGMGRL> EDIT DATABASE PrimaryDB SET PROPERTY RedoRoutes = '(LOCAL : ( FarSyncInst SYNC PRIORITY=1, StandbyDB ASYNC PRIORITY=2 ) )';
DGMGRL> EDIT DATABASE PrimaryDB SET PROPERTY RedoRoutes = '(LOCAL : FarSyncInst SYNC ALT =(StandbyDB ASYNC FALLBACK))';
DGMGRL> DISABLE CONFIGURATION;
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
DGMGRL> ENABLE CONFIGURATION;
Comments
Post a Comment