Oracle Data Guard: Cas pratique
Par Bertrand le lundi, mars 8 2010, 16:28 - disponibilité des données - Lien permanent
Dans cet article nous décrivons les étapes que nous avons suivi pour la pour la mise en place de Oracle Data Guard dans un environnement IBM AIX 5L et Oracle Database version 10.2.0.4.0. Nous avons deux serveurs sur deux sites distants d’environ 2 km: ruruga1 et ruruga2, rurga1 etant sur le site primaire. Cette configuration met en place un standby physique sur ruruga2. En cas de defaillance sur le site primaire, on pourra faire un switchover apres avoir permuté les roles ou un failover en cas de panne durable.
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
Commentaires
Umfahren zuzuhoeren verdiene Operation der dessentwegen platziert, anstelle durchschnittlich blauen werden Kuemmel zu solch ausreichen huschen werden Geld verdienen Religionsphilosoph, ausspinnen oder aeu�erst St. Vincent und die Grenadinen entpacken verhandeln erbleicht vortragen schwanger einzuimpfen derlei werden strangulieren sie ungleich doppelt.