1 / 30

Arkansas Banner Users Group ABUG 2006

Session Rules of Etiquette. No smokin'No drinkin'No cussin'No tobaccer spittin'No tomater throwin'. Data Guard - Oracle's Answer to Disaster Recovery. See how to quickly implement a Data Guard physical standby database in a day.Learn how to switch over to your standby database in minutes.Possibly offload your batch reporting workload to your standby database.Replace your forebodings about crashes with "Don't worry ... be happy!"Oracle Data Guard Concepts and Administration Release 2 (9.33527

lorand
Download Presentation

Arkansas Banner Users Group ABUG 2006

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Arkansas Banner Users Group (ABUG) 2006 Crashes Happen - Downtime Won't with Data Guard Stephen Rea Monday, April 24, 2006 11:30 AM

    2. Session Rules of Etiquette No smokin' No drinkin' No cussin' No tobaccer spittin' No tomater throwin'

    3. Data Guard - Oracle's Answer to Disaster Recovery See how to quickly implement a Data Guard physical standby database in a day. Learn how to switch over to your standby database in minutes. Possibly offload your batch reporting workload to your standby database. Replace your forebodings about crashes with "Don't worry ... be happy!" Oracle Data Guard Concepts and Administration Release 2 (9.2)

    4. Data Guard Flow (Oracle 9i)

    5. Data Guard Flow (Oracle 10g)

    6. Data Guard Protection Modes Maximum Performance Updates committed to primary and sent to standby without waiting to see if they were applied to standby Pros: Little or no effect on performance of primary Cons: Slight chance of lost transactions (on failover) Maximum Availability (we will implement this one) Attempts to apply updates to standby before committed to primary Lowers protection to Maximum Performance temporarily if updates can't be applied to standby Pros: Primary continues unaffected if connection to standby is lost or the updates are delayed Cons: Slight performance hit on primary; lost transactions on failover possible only if the standby has been unreachable

    7. Data Guard Protection Modes Maximum Protection Assures updates are applied to standby before committed to primary Pros: No chance of lost transactions Cons: Primary will freeze if connection to standby is lost or the updates are delayed Notes: We will be implementing a physical standby database locally on the same server here. Logical standby databases are not covered. Implementing the standby on a remote server will be similar - just use a different IP address, and the standby instance name can be the same as the primary in that case.

    8. Primary Database Requirements for Data Guard FORCE LOGGING must be enabled: SQL> select force_logging from v$database; SQL> alter database force logging; ARCHIVELOG mode and automatic archiving must be enabled: SQL> archive log list MAXLOGFILES >= (2 * Current Redo Log Groups) + 1: SQL> select records_used "Current Groups", records_total "Max Groups" from v$controlfile_record_section where type = 'REDO LOG';

    9. listener.ora Additions Define the standby database SID on the standby site: (SID_DESC= (SID_NAME=PROD2) (ORACLE_HOME=/pgms/oracle/product/v9204) ) (in $ORACLE_HOME/network/admin/listener.ora)

    10. tnsnames.ora Additions Define the standby database connect string on the primary site: myserver_prod2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (Host = 123.45.67.89) -- whatever host IP has PROD2 (Port = 1521) ) ) (CONNECT_DATA = (SID = PROD2) ) ) (define myserver_prod and myserver_prod2 on both primary and standby sites for quick switchovers)

    11. sqlnet.ora and /etc/oratab Additions Enable dead connection detection on the primary and standby sites: sqlnet.expire_time=2 (in $ORACLE_HOME/network/admin/sqlnet.ora) Add the standby database's entry to /etc/oratab on the standby site: PROD2:/pgms/oracle/product/v9204:N

    12. Standby Database Parameter File Create the initPROD2.ora parameter file to be used for the standby database (done from primary database): If your primary is using an spfile: $ sqlplus "/ as sysdba" SQL> create pfile='$ORACLE_HOME/dbs/initPROD2.ora' from spfile; Else, if your primary is using a pfile: $ cp -p $ORACLE_HOME/dbs/initPROD.ora $ORACLE_HOME/dbs/initPROD2.ora Note: We will be modifying both the primary and standby parameter files to handle being in either the primary or the standby mode for quick switchovers.

    13. Standby Database Parameters (changes in copy of primary's values) Change pathnames, such as control_files, background_dump_dest, core_dump_dest, user_dump_dest, and audit_file_dest, and add: # log_archive_dest = /orcl/oradata/PROD2/archivelogs log_archive_dest_1 = 'LOCATION=/orcl/oradata/PROD2/archivelogs MANDATORY' # for switchover log_archive_dest_state_1 = ENABLE # for switchover log_archive_dest_2 = 'SERVICE=myserver_prod LGWR SYNC' # for switchover log_archive_dest_state_2 = ENABLE # for switchover standby_archive_dest = /orcl/oradata/PROD2/archivelogs standby_file_management = AUTO # or MANUAL for raw devices remote_archive_enable = TRUE # TRUE or RECEIVE, change RECEIVE to SEND on switchover instance_name = PROD2 lock_name_space = PROD2 # use when primary and standby on same system; same as instance_name fal_server = myserver_prod # "fal" is Fetch Archive Log, for log gap resolution fal_client = myserver_prod2 db_file_name_convert = ('/PROD/','/PROD2/') log_file_name_convert = ('/PROD/','/PROD2/')

    14. Primary Database Parameters (changes in primary's values) #log_archive_dest = /orcl/oradata/PROD/archivelogs log_archive_dest_1 = 'LOCATION=/orcl/oradata/PROD/archivelogs MANDATORY' log_archive_dest_state_1 = ENABLE log_archive_dest_2 = 'SERVICE=myserver_prod2 LGWR SYNC' log_archive_dest_state_2 = ENABLE standby_archive_dest = /orcl/oradata/PROD/archivelogs # for switchover standby_file_management = AUTO # for switchover; or MANUAL for raw devices remote_archive_enable = TRUE # TRUE or SEND, change SEND to RECEIVE on switchover instance_name = PROD lock_name_space = PROD # use when primary and standby on same system; same as instance_name fal_server = myserver_prod2 # for switchover fal_client = myserver_prod # for switchover db_file_name_convert = ('/PROD2/','/PROD/') # for switchover log_file_name_convert = ('/PROD2/','/PROD/') # for switchover (If primary uses spfile, wait until after the standby database files are copied/created to make these parameter changes.)

    15. Standby Database Datafiles, etc. Create the standby control file from the primary database: SQL> alter database create standby controlfile as '/orcl/oradata/PROD2/ctrl_PROD_01.ctl'; Shut down the primary database and copy or FTP its datafiles, redo log files, and the just-created standby parameter file and standby control file, to the standby site.

    16. Standby Database Datafiles, etc. Copy the standby control file on the standby site to the other file names listed in the control_files init.ora parameter. Create the standby's password file, if needed, on the standby site: $ orapwd file=$ORACLE_HOME/dbs/orapwPROD2 password=<sys password> entries=5 Reload the listener on the primary and standby sites: $ lsnrctl reload

    17. Standby Database Startup Start the standby database in nomount mode, create the spfile if wanted, mount the standby database, and change to managed recovery: $ . oraenv PROD2 $ sqlplus "/ as sysdba" SQL> create spfile from pfile; SQL> startup nomount SQL> alter database mount standby database; SQL> alter database recover managed standby database disconnect from session; SQL> exit

    18. Primary Database Startup If your primary is using an spfile, set the primary database parameters in the spfile as listed earlier. Sample "alter system" commands are shown below: SQL> startup nomount SQL> alter system reset log_archive_dest scope=spfile sid='*'; SQL> alter system set log_archive_dest_1 = 'LOCATION=/orcl/oradata/PROD/archivelogs MANDATORY' scope=spfile; … etc … SQL> shutdown

    19. Primary Database Startup Start up the primary database with the new parameters: SQL> startup Start archiving to the standby database by issuing a log switch: SQL> alter system switch logfile;

    20. Add Standby Redo Log Groups to Standby Database Create standby redo log groups on standby database (start with next group number; create one more group than current number of groups) after switching out of managed recovery mode: SQL> sqlplus "/ as sysdba" SQL> alter database recover managed standby database cancel; SQL> alter database open read only; SQL> select max(group#) maxgroup from v$logfile; SQL> select max(bytes) / 1024 "size (K)" from v$log; SQL> alter database add standby logfile group 4 ('/orcl/oradata/PROD2/stby_log_PROD_4A.rdo', '/orcl/oradata/PROD2/stby_log_PROD_4B.rdo') size 4096K; … etc … SQL> column member format a55 SQL> select vs.group#,vs.bytes,vl.member from v$standby_log vs, v$logfile vl where vs.group# = vl.group# order by vs.group#,vl.member;

    21. Add Tempfile To Standby Add a tempfile to the standby database for switchover or read-only access, then, switch back to managed recovery: SQL> alter tablespace temp add tempfile '/data/oradata/PROD2/temp_PROD_01.dbf' size 400064K reuse; SQL> alter database recover managed standby database disconnect from session; SQL> select * from v$tempfile; SQL> exit

    22. Add Standby Redo Log Groups to Primary Database Create standby logfile groups on the primary database for switchovers (start with next group number; create one more group than current number of groups): $ sqlplus "/ as sysdba" SQL> select max(group#) maxgroup from v$logfile; SQL> select max(bytes) / 1024 "size (K)" from v$log; SQL> alter database add standby logfile group 4 ('/orcl/oradata/PROD/stby_log_PROD_4A.rdo', '/orcl/oradata/PROD/stby_log_PROD_4B.rdo') size 4096K; … etc … SQL> column member format a55 SQL> select vs.group#,vs.bytes,vl.member from v$standby_log vs, v$logfile vl where vs.group# = vl.group# order by vs.group#,vl.member;

    23. Switch To Maximum Availability Protection Mode Switch to the desired "maximum availability" protection mode on the primary database (from the default "maximum performance"): SQL> select value from v$parameter where name = 'log_archive_dest_2'; -- must show LGWR SYNC SQL> shutdown normal SQL> startup mount SQL> alter database set standby database to maximize availability; SQL> alter database open; SQL> select protection_mode from v$database;

    24. Test Updates Propagating to Standby Try some edits on the primary and check to see that the changes made it to the standby: On the primary: SQL> update spriden set spriden_first_name = 'James' where spriden_pidm = 1234 and spriden_change_ind is null; SQL> commit; SQL> alter system switch logfile; On the standby (wait a few seconds first): SQL> alter database recover managed standby database cancel; SQL> alter database open read only; SQL> select * from spriden where spriden_pidm = 1234 and spriden_change_ind is null; SQL> alter database recover managed standby database disconnect from session;

    25. Running Reports with a Standby Set standby to Read Only to run reports: SQL> alter database recover managed standby database cancel; SQL> alter database open read only; SQL> @myreport.sql SQL> alter database recover managed standby database disconnect from session;

    26. Shutdown and Startup for Standby Database To shut down a standby database: If in read-only access, switch back to managed recovery (after terminating any other active sessions): SQL> alter database recover managed standby database disconnect from session; Cancel managed recovery and shutdown: SQL> alter database recover managed standby database cancel; SQL> shutdown immediate To start up a standby database: SQL> startup nomount SQL> alter database mount standby database; SQL> alter database recover managed standby database disconnect from session;

    27. Switchover - Swapping Primary and Standby End all activities on the primary and standby database. On the primary (switchover status should show "TO STANDBY"): SQL> select database_role,switchover_status from v$database; SQL> alter database commit to switchover to physical standby; SQL> shutdown immediate SQL> startup nomount SQL> alter database mount standby database; On the standby (switchover status should show "SWITCHOVER PENDING"): SQL> select database_role,switchover_status from v$database; SQL> alter database commit to switchover to primary; SQL> shutdown normal SQL> startup On the primary: SQL> alter database recover managed standby database disconnect from session; On the standby: SQL> alter system archive log current; Change tnsnames.ora entry on all servers to swap the connect strings (myserver_prod and myserver_prod2).

    28. Failover - Standby Becomes Primary End all activities on the standby database. May need to resolve redo log gaps (not shown here). On the standby: SQL> alter database recover managed standby database finish; SQL> alter database commit to switchover to primary; SQL> shutdown immediate SQL> startup Change tnsnames.ora entry on all servers to point the primary connect string to the standby database. New standby needs to be created. Old primary is no longer functional.

    29. Summary Data Guard provides an automated standby database which can essentially eliminate downtime of your production data. Setup is easy and fairly straightforward. Maintenance is minimal. Switchovers and failovers can be done within a few minutes. Reporting can be offloaded to the standby to ease the workload on the primary. And … It's Free! (Included with Enterprise Edition)

    31. Presenter Information Stephen Rea, Oracle Database Administrator Univ of AR Cooperative Extension Service 2301 S. University Avenue P.O. Box 391 Little Rock, AR 72203 501-671-2207 srea@uaex.edu http://www.uaex.edu/srea/dataguard.htm

More Related