Configuration sur le site primaire (instance DGA)

1- Activer Forced Loging

Cela permet de forcer la journalisation des operations meme quand elles sont executees avec l’option ‘nologging’

SQL > ALTER DATABASE FORCE LOGGING;

2- Creer un password file

cd $ORACLE_HOME/dbs
[ruruga1] > orapwd file=orapwruruga password=oracle force=y

Ce fichier sera copié sur ruruga2. Les mots de passes de sys doivent etre les memes sur les deux bases.

3-Configurer des redo log standby

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;

4- Passer la base en mode archive log

SQL> startup mount;
SQL> alter database archivelog;

5- Positionner les variables d’environnement

****************************************initDGA.ora***************************************************
DGA.__db_cache_size=750780416
DGA.__java_pool_size=4194304
DGA.__large_pool_size=4194304
DGA.__shared_pool_size=243269632
DGA.__streams_pool_size=0
*.audit_file_dest='/appli/oracle/admin/DGA/adump'
*.background_dump_dest='/appli/oracle/admin/DGA/bdump'
*.compatible='10.2.0.3.0'
*.CONTROL_FILES='/dg/ctl/control01.ctl','/dg/ctl/control02.ctl','/dg/ctl/control03.ctl'
*.core_dump_dest='/appli/oracle/admin/DGA/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.DB_NAME='DGA'
*.DB_UNIQUE_NAME='PRIMARY'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=DGAXDB)'
*.FAL_CLIENT='primary'
*.FAL_SERVER='standby'
*.job_queue_processes=10
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/dg/archive/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=primary'
*.LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=standby'
*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
*.LOG_ARCHIVE_FORMAT='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=1231028224
*.processes=150
*.REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE'
*.sga_target=1010612736
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/appli/oracle/admin/DGA/udump'

*******************************************END initDGA.ora**********************************************

6- Creer un standby control file

SQL> startup nomount pfile='/Full_path/initDGA.ora';
SQL> create spfile from pfile='/Full_path/initDGA.ora';
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/Full_path/myctl.ctl';

7- copier les fichier de donnes, les fichiers redo log, les archives, les fichiers de controle, les fichiers d’audit ($ORACLE_BASE/admin), le fichier initDGA.ora, le fichier de mot de passe de ruruga1 vers ruruga2. Les chemins doivent etre les memes.

Configuration sur le site secondaire (instance DGB)

8- Renommer le fichier initDGA.ora en initDGB.ora et modifier les valeurs des parametres comme suit.

******************************************initDGB.ora**********************************************
DGB.__db_cache_size=750780416
DGB.__java_pool_size=4194304
DGB.__large_pool_size=4194304
DGB.__shared_pool_size=243269632
DGB.__streams_pool_size=0
*.audit_file_dest='/appli/oracle/admin/DGB/adump'
*.background_dump_dest='/appli/oracle/admin/DGB/bdump'
*.compatible='10.2.0.3.0'
*.CONTROL_FILES='/dg/ctl/control01.ctl','/dg/ctl/control02.ctl','/dg/ctl/control03.ctl'
*.core_dump_dest='/appli/oracle/admin/DGB/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.DB_NAME='DGB'
*.DB_UNIQUE_NAME='standby'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=DGBXDB)'
*.FAL_CLIENT='standby'
*.FAL_SERVER='primary'
*.job_queue_processes=10
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/dg/archive/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=standby'
*.LOG_ARCHIVE_DEST_2='SERVICE=primary LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=primary'
*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
*.LOG_ARCHIVE_FORMAT='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=1231028224
*.processes=150
*.REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE'
*.sga_target=1010612736
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/appli/oracle/admin/DGB/udump'

*******************************************END initDGB.ora**********************************************

9- Enregistrer les services auprès des listeners

   Ajouter ces entrees dans les fichiers tnsnames.ora des deux bases.
********************************************tnsnames.ora**********************************************

PRIMARY =
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ruruga1)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DGA)
    )
  )

STANDBY =
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ruruga2)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DGB)
    )
  )

********************************************END tnsnames.ora******************************************

10- Creer un fichier spfile a partir du pfile et demarrer en mode mount.

SQL> startup nomount pfile=’/Full_path/initDGB,ora’

SQL> create spfile from pfile=’/Full_path/initDGB,ora’;

SQL> startup mount

11- Demarrer le recovery

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Verifier que les archives arrivent bien sur le standby

SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG
ORDER BY SEQUENCE#;

Proposé par:
Bertrand YABRE, DBA Oracle