Tuesday, 9 July 2013

Data Guard

Data Guard is the name for Oracle's standby database solution, used for disaster recovery and high availability. Its nothing but a consistent copy of a database.

types of standby database:
a.Physical Standby Database
b.Logical Standby Database

Here You can see the Data Guard Configuration video...!



A.PHYSICAL STANDBY DATABASE CREATION
====================================
Primary database : " prim "
Standby database : " stan "

Step  1: Make sure that o/s and architecture on both Primary and Secondary are same.

Step  2: Install oracle same version software for Primary and Secondary.

Step  3: Check wheather Primary Database is in archive logmode.

        To Check : archive log list;
    If not enable then,
     >shut immediate
     >startup mount
     >alter database archivelog; 
     >alter database open;
        
    
Step  4: Change the database in logging Mode:

           > alter database force logging;

Step  5: Check wheather this database have Password File:
        ( If it doesnt exit create Password File )

          > select * from v$pwfile_users;
      
Step  6: Create Three Redo-log files to standby database(Primary Side):
           
          >alter database add standby logfile group 4 '/u01/app/oracle/oradata/prim/redo04.log' size 50m;
          >alter database add standby logfile group 5 '/u01/app/oracle/oradata/prim/redo05.log' size 50m;
          >alter database add standby logfile group 6 '/u01/app/oracle/oradata/prim/redo06.log' size 50m;
        
        Check the standby logfile : select * from v$standby_log;

Step  7: create pfile:
        
        >create pfile from spfile; 

Step  8: Edit Pfile and Parameters in primary:

         cd /u01/app/oracle/product/10.2.0/db_1/dbs

    vi initprim.ora
        
        Adding parameters in Pfile(Primary):add at the end
        
     db_unique_name=PRIM
         LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STAN)'
            LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIM'
     LOG_ARCHIVE_DEST_2='SERVICE=STAN LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STAN'
     LOG_ARCHIVE_DEST_STATE_1=ENABLE
     LOG_ARCHIVE_DEST_STATE_2=ENABLE
     LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
     LOG_ARCHIVE_MAX_PROCESSES=30
     remote_login_passwordfile='EXCLUSIVE'
     FAL_SERVER=STAN
     FAL_CLIENT=PRIM
     STANDBY_FILE_MANAGEMENT=AUTO
     DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/stan','/u01/app/oracle/oradata/prim'
     LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/stan','/u01/app/oracle/oradata/prim'

Step  9: Shutdown and Startup the primary database using Pfile.
        
     >shut immediate
        
         >startup nomount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initprim.ora';

Step 10: Create spfile from pfile and shutdown the primary database;
         
      >create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initprim.ora';

     >Shut immediate    

Step 11: Create necessary directorires for Standby database:
         
         cd /u01/app/oracle/admin     
     mkdir stan 
         cd /u01/app/oracle/admin/stan
     mkdir adump bdump cdump udump

         cd /u01/app/oracle/oradata    
     mkdir stan

Step 12: startup the primary database in mount and Create control file for standby database :

    > Startup mount
        
         >alter database create standby controlfile as '/u01/app/oracle/oradata/stan/control01.ctl'


Step 13: startup the primary database;

    > alter database open;

Step 14: Create Password file for standby database:
         
         $cd /u01/app/oracle/product/10.2.0/db_1/dbs
    
         cp orapwprim orapwstan 

Step 15: Copy the database file, log file from Primary to standby database:

        cd /u01/app/oracle/oradata/prim
         
         $cp *.dbf *.log /u01/app/oracle/oradata/stan

     
Step 16: Check the Listener

    ps -ef|grep tns
        
         $lsnrctl status

    if its down then start the listener

    $lsnrctl start
         
Steps 17: Check the tns entries

    tnsping <Database name>

    if not working then Edit and Put the TNS Entry for databases.

         $vi  /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsname.ora


Step 18: Copy the pfile from Primary to standby database:

         $cd  /u01/app/oracle/product/10.2.0/db_1/dbs
         $cp initprim.ora initstan.ora

Step 19: Edit pfile for standby database.

    $cd  /u01/app/oracle/product/10.2.0/db_1/dbs
     vi initstan.ora
         Replacing parameters in Pfile(standby):
        
    db_name='PRIM'
    db_unique_name=STAN
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STAN)'
    LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STAN'
    LOG_ARCHIVE_DEST_2='SERVICE=PRIM LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRIM'
    LOG_ARCHIVE_DEST_STATE_1=ENABLE
    LOG_ARCHIVE_DEST_STATE_2=ENABLE
    LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
    LOG_ARCHIVE_MAX_PROCESSES=30
    FAL_SERVER=PRIM
    FAL_CLIENT=STAN
    remote_login_passwordfile='EXCLUSIVE'
    DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/prim','/u01/app/oracle/oradata/stan'
    LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/prim','/u01/app/oracle/oradata/stan'
    STANDBY_FILE_MANAGEMENT=AUTO

       
       NOTE: Mention proper standby controlfile location 

Step 20: Startup the standby database in nomount stage:
   
         startup nomount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initstan.ora';

Step 21: create spfile:
        
         >create spfile from pfile;

Step 22: Shutdown and startup the standby database in mount stage:

    > shut immediate

    > startup mount

Step 23: Start MRP process in Standby database Side:
   
         >alter database recover managed standby database disconnect from session;

Step 24: Check the Sequence and applied in standby database:

         >select sequence#,applied from v$archived_log order by sequence#;

1 comment: