8.2 KiB
Executable File
Network configuration
/etc/listener.ora on primary server:
LISTENER_DG =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=taris.swgalaxy)(PORT=1523))
)
SID_LIST_LISTENER_DG =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ASTYPRD_DGMGRL)
(SID_NAME = ASTYPRD)
(ORACLE_HOME = /app/oracle/product/21)
)
)
/etc/listener.ora on secondary server:
LISTENER_DG =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=mandalore.swgalaxy)(PORT=1523))
)
SID_LIST_LISTENER_DG =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ASTYDRP_DGMGRL)
(SID_NAME = ASTYDRP)
(ORACLE_HOME = /app/oracle/product/21)
)
)
Start LISTENER_DG on both servers:
lsnrctl start LISTENER_DG
/etc/tnsnames.ora on both servers:
ASTYPRD_DGMGRL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = taris.swgalaxy)(PORT = 1523))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ASTYPRD_DGMGRL)
)
)
ASTYDRP_DGMGRL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mandalore.swgalaxy)(PORT = 1523))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ASTYDRP_DGMGRL)
)
)
Dataguard initial duplication
From primary init.ora, create an init.ora from secondary database, test-it starting the secondary database in nomount and create a spfile from this init.ora. Startup secondary database in nomount mode. Copy also the passwordfile from primry to secondary server.
Try cross connections from both primary and secondary servers:
sqlplus 'sys/"*****"'@ASTYPRD_DGMGRL as sysdba
sqlplus 'sys/"*****"'@ASTYDRP_DGMGRL as sysdba
Create standby redolog on primary database using the result of following queries:
select 'ALTER DATABASE ADD STANDBY LOGFILE THREAD '||thread#||' size '||bytes||';' from v$log;
select distinct 'ALTER DATABASE ADD STANDBY LOGFILE THREAD '||thread#||' size '||bytes||';' from v$log;
If you plan to use backups on standby database, set required RMAN parameters prior to duplicate step:
configure archivelog deletion policy to applied on all standby;
configure db_unique_name 'ASTYDRP' connect identifier 'ASTYDRP_DGMGRL';
configure db_unique_name 'ASTYPRD' connect identifier 'ASTYPRD_DGMGRL';
Duplicate primary database for standby:
rman target='sys/"*****"'@ASTYPRD_DGMGRL auxiliary='sys/"*****"'@ASTYDRP_DGMGRL
run
{
allocate channel pri01 device type disk;
allocate channel pri02 device type disk;
allocate channel pri03 device type disk;
allocate channel pri04 device type disk;
allocate channel pri05 device type disk;
allocate channel pri06 device type disk;
allocate channel pri07 device type disk;
allocate channel pri08 device type disk;
allocate channel pri09 device type disk;
allocate channel pri10 device type disk;
allocate auxiliary channel aux01 device type disk;
allocate auxiliary channel aux02 device type disk;
allocate auxiliary channel aux03 device type disk;
allocate auxiliary channel aux04 device type disk;
allocate auxiliary channel aux05 device type disk;
allocate auxiliary channel aux06 device type disk;
allocate auxiliary channel aux07 device type disk;
allocate auxiliary channel aux08 device type disk;
allocate auxiliary channel aux09 device type disk;
allocate auxiliary channel aux10 device type disk;
duplicate database 'ASTY' for standby
from active database using compressed backupset section size 512M;
}
It is nor mandatory but recommanded to activate flashback on both databases (leaving for exmple then default retention target of 1 day):
alter database flashback ON;
Dataguard broker configuration
On primary database:
alter system set dg_broker_config_file1='/app/oracle/base/admin/ASTYPRD/dgmgrl/dr1ASTYPRD.dat' scope=both sid='*';
alter system set dg_broker_config_file2='/app/oracle/base/admin/ASTYPRD/dgmgrl/dr2ASTYPRD.dat' scope=both sid='*';
alter system set dg_broker_start=TRUE scope=both sid='*';
On secondary database:
alter system set dg_broker_config_file1='/app/oracle/base/admin/ASTYDRP/dgmgrl/dr1ASTYDRP.dat' scope=both sid='*';
alter system set dg_broker_config_file2='/app/oracle/base/admin/ASTYDRP/dgmgrl/dr2ASTYDRP.dat' scope=both sid='*';
alter system set dg_broker_start=TRUE scope=both sid='*';
On primary or secondary server:
dgmgrl
connect sys/*****@ASTYPRD_DGMGRL
create configuration ASTY as
primary database is ASTYPRD
connect identifier is ASTYPRD_DGMGRL;
add database ASTYDRP
as connect identifier is ASTYDRP_DGMGRL
maintained as physical;
enable configuration;
edit database 'astyprd' set property ArchiveLagTarget=0;
edit database 'astyprd' set property LogArchiveMaxProcesses=2;
edit database 'astyprd' set property LogArchiveMinSucceedDest=1;
edit database 'astyprd' set property StandbyFileManagement='AUTO';
edit database 'astydrp' set property ArchiveLagTarget=0;
edit database 'astydrp' set property LogArchiveMaxProcesses=2;
edit database 'astydrp' set property LogArchiveMinSucceedDest=1;
edit database 'astydrp' set property StandbyFileManagement='AUTO';
edit instance 'ASTYPRD' set property 'StaticConnectIdentifier'='ASTYPRD_DGMGRL';
edit instance 'ASTYDRP' set property 'StaticConnectIdentifier'='ASTYPRD_DGMGRL';
edit instance 'ASTYPRD' set property 'StaticConnectIdentifier'='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=taris.swgalaxy)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=ASTYPRD_DGMGRL)(INSTANCE_NAME=ASTYPRD)(SERVER=DEDICATED)))';
edit instance 'ASTYDRP' set property 'StaticConnectIdentifier'='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=mandalore.swgalaxy)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=ASTYDRP_DGMGRL)(INSTANCE_NAME=ASTYDRP)(SERVER=DEDICATED)))';
Wait a couple of minutes (after eventually archiving current log on primary database) therefore:
show configuration
show database 'astyprd'
show database 'astydrp'
validate database 'astyprd'
validate database 'astydrp'
To disable/enable redo apply on standby database:
edit database 'astydrp' set state='APPLY-OFF';
edit database 'astydrp' set state='ONLINE';
Backup primary and standby databases
Backup primary database:
rman target /
run
{
set nocfau;
allocate channel ch01 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYPRD/%d_%U_%s_%t.bck';
allocate channel ch02 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYPRD/%d_%U_%s_%t.bck';
allocate channel ch03 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYPRD/%d_%U_%s_%t.bck';
allocate channel ch04 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYPRD/%d_%U_%s_%t.bck';
backup as compressed backupset incremental level 0 database section size 2G include current controlfile plus archivelog delete input;
release channel ch01;
release channel ch02;
release channel ch03;
release channel ch04;
allocate channel ch01 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYPRD/%d_%U_%s_%t.controlfile';
backup current controlfile;
release channel ch01;
}
Backup standby database:
rman target='"sys/*****"'
run
{
set nocfau;
allocate channel ch01 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYDRP/%d_%U_%s_%t.bck';
allocate channel ch02 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYDRP/%d_%U_%s_%t.bck';
allocate channel ch03 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYDRP/%d_%U_%s_%t.bck';
allocate channel ch04 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYDRP/%d_%U_%s_%t.bck';
backup as compressed backupset incremental level 0 database section size 2G include current controlfile plus archivelog delete input;
release channel ch01;
release channel ch02;
release channel ch03;
release channel ch04;
allocate channel ch01 device type disk format '/mnt/yavin4/tmp/_oracle_/orabackup/ASTYDRP/%d_%U_%s_%t.controlfile';
backup current controlfile;
release channel ch01;
}