Backup

Published on May 2016 | Categories: Types, Books - Non-fiction | Downloads: 94 | Comments: 0 | Views: 482
of 17
Download PDF   Embed   Report

Comments

Content

backup-incr-lev0-plus-recover.rmn
# backup-incr-lev0-plus-recover.rmn # --------------------------------# This script on the first run makes a level 0 backup if no one exists # In the second run run makes an incremental level 1 # On every subsequent run: # 1) Applies the previous level 1 to the backupset and # 2) Creates a new level 1 backup RUN { ALLOCATE CHANNEL disk1 DEVICE TYPE DISK ; ALLOCATE CHANNEL disk2 DEVICE TYPE DISK ; ALLOCATE CHANNEL disk3 DEVICE TYPE DISK ; ALLOCATE CHANNEL disk4 DEVICE TYPE DISK ; RECOVER COPY OF DATABASE WITH TAG 'INCREMENTAL_DAILY_UPDATED' ; BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'INCREMENTAL_DAILY_UPDATED' DATABASE PLUS ARCHIVELOG ; } # ------------------------------------# eof backup-incr-lev0-plus-recover.rmn

1-system-tablespace-loss
#!/bin/tcsh # 1-system-tablespace-loss # ------------------------

# This script crash the database and removes the system tablespace # --------------------------------------------------------------source ./set-environment echo Generating database crash ... echo set v_rmf=`echo 'select file_name from dba_data_files where file_id=1;' | sqlplus -s / as sysdba | grep system` setenv ORACLE_SID +ASM sqlplus -s $dbauser/$dbapwd as sysdba <<eof shutdown abort; eof sqlplus -s $dbauser/$dbapwd as sysdba <<eof startup eof echo echo Generating system tablespace loss ... echo asmcmd lsdg echo asmcmd ls +datadgnr/sati11/datafile echo asmcmd rm -rf $v_rmf echo asmcmd lsdg echo asmcmd ls +datadgnr/sati11/datafile echo

echo Trying to restart the database after the crash ... echo sqlplus -s $dbauser/$dbapwd@$datadb as sysdba <<eof startup eof exit # --------------------------------------------------------------# eof 1-system-tablespace-loss

1-restore-from-system-tablespace-loss
#!/bin/tcsh # 1-restore-from-system-tablespace-loss # -----------------------# This script restore the system tablespace after a crash that removed the system tablespace # -----------------------------------------------------------------------------source ./set-environment echo echo Executing Command : RESTORE and RECOVER SYSTEM DATAFILE echo setenv ORACLE_SID $datadb rman TARGET / <<eof restore datafile 1; recover datafile 1; alter database open; eof

sqlplus $dbauser/$dbapwd@$datadb as sysdba <<eof select file_name from dba_data_files; exit eof exit # --------------------------------------------------------------# eof 1-restore-from-system-tablespace-loss

2-user-datafile-loss
#!/bin/tcsh # 2-user-datafile-loss # -----------------------# This script create an application user then removes the user tablespace datafile # ------------------------------------------------------------------------------source ./set-environment setenv ORACLE_SID $datadb clear echo echo Preparing User Application ... echo # connect to the database, create user a apps and a dummy table, select from it # to simulate an application running # ---------------------------------------------------------------------------sqlplus -s $dbauser/$dbapwd@$datadb as sysdba <<eof drop user apps cascade;

create user apps identified by apps default tablespace users temporary tablespace temp; grant dba to apps; connect apps/apps@$datadb create table customers as select * from dba_users; update customers set username='CUSTOMER_'||USERNAME; commit; select username from customers; exit eof # generate the command to remove user's tablespace datafile from ASM # the tablespace is set offline to be able to remove it # -----------------------------------------------------------------echo echo Generating user datafile remove ... echo set v_rmf=`echo "select file_name from dba_data_files where tablespace_name='USERS';" | sqlplus -s / as sysdba | grep users` echo echo Setting tablespace users offline ... echo sqlplus -s $dbauser/$dbapwd@$datadb as sysdba <<eof alter tablespace users offline; eof # removing the users tablespace datafile from ASM # ----------------------------------------------

echo echo Removing tablespace users datafile ... echo setenv ORACLE_SID +ASM asmcmd lsdg echo asmcmd ls +datadgnr/$datadb/datafile echo asmcmd rm -rf $v_rmf echo asmcmd ls +datadgnr/$datadb/datafile echo asmcmd lsdg echo echo Checking application ... echo sqlplus -s $dbauser/$dbapwd@$datadb as sysdba <<eof select username from apps.customers; exit eof # --------------------------------------------------------------# eof 2-user-datafile-loss

2-restore-from-user-datafile-loss
#!/bin/tcsh # 2-restore-from-user-datafile-loss # -----------------------# This script restore the users tablespace while the database is still running

# --------------------------------------------------------------------------source ./set-environment echo Restoring and Recovering Tablespace Users ... echo setenv ORACLE_SID $datadb rman TARGET / <<eof restore tablespace users; recover tablespace users; sql 'alter tablespace users online' ; eof echo echo Checking application ... echo sqlplus -s $dbauser/$dbapwd@$datadb as sysdba <<eof select username from apps.customers; exit eof exit # --------------------------------------------------------------# eof 2-restore-from-user-datafile-loss

3-online-redolog-loss
#!/bin/tcsh # 3-online-redolog-loss # --------------------# This script simulates a database crash followed by the loss of all # online redologs

# ----------------------------------------------------------------source ./set-environment echo Generating database crash ... echo set v_logf=v\$logfile set v_logs=v\$log set v_logh=v\$log_history setenv ORACLE_SID $datadb # Create a script to remove online redologs # ----------------------------------------sqlplus -s / as sysdba <<eof set pages 50000 lines 120 echo off head off veri off flush off ti off spool rmonlnlog.sh select 'asmcmd rm '||member||'' from $v_logf where group#=1; spool off set echo on head on veri on set pages 50000 lines 120 spool redolog_miss_status-before_crash.log archive log list; select SEQUENCE# from $v_logh where FIRST_TIME=(select max(FIRST_TIME) from $v_logh); select * from $v_logs; spool off SHUTDOWN IMMEDIATE; eof echo # Remove online redologs

# ---------------------echo Removing online redo log group ... echo setenv ORACLE_SID +ASM chmod 700 ./rmonlnlog.sh ./rmonlnlog.sh rm ./rmonlnlog.sh # Restart the database after the simulated crash and check the error # ----------------------------------------------------------------echo echo Starting database after the crash ... echo setenv ORACLE_SID $datadb sqlplus -s / as sysdba <<eof STARTUP eof # ------------------------# eof 3-online-redolog-loss

3-restore-and-recover-from-online-redo-loss
#!/bin/tcsh # 3-restore-and-recover-from-online-redo-loss # ------------------------------------------# this script executes the procedure to restore and recover the database

# after the loss of all online logs # --------------------------------------------------------------------source ./set-environment set v_logf=v\$logfile set v_log=v\$log echo Executing Full Database Restore ... echo echo Please check the last archived sequence of the database. echo please enter sequence number to restore to ... set v_seq = $< echo setenv ORACLE_SID $datadb rman TARGET / <<eof STARTUP MOUNT; RESTORE DATABASE; RECOVER DATABASE UNTIL SEQUENCE $v_seq THREAD 1; ALTER DATABASE OPEN RESETLOGS; eof echo Checking Database after online redolog loss and database restore and recover echo sqlplus / as sysdba <<eof set pages 50000 lines 200 col member for a55 select * from $v_log; select member from $v_logf; exit eof

# ---------------------------------------------# eof 3-restore-and-recover-from-online-redo-loss

4-restore-and-recover-from-controlfile-loss
#!/bin/tcsh # 4-restore-and-recover-from-controlfile-loss # ------------------------------------------source ./set-environment echo Executing Controlfile Restore echo echo Please check the DBID on this file: echo ls -l /u01/app/oracle/BACKUP/sati11/dbid_124143874.lst.gz echo echo please enter DBID number of the database to restore the controlfile set v_dbid = $< echo # ----------------------------------------------# Restore the controlfile and recover the database # ----------------------------------------------setenv ORACLE_SID $datadb rman TARGET / <<eof SET DBID $v_dbid; STARTUP NOMOUNT; RESTORE CONTROLFILE FROM AUTOBACKUP; ALTER DATABASE MOUNT;

RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; eof set v_ctlf=v\$controlfile echo Checking Database after controlfile loss and restore echo sqlplus / as sysdba <<eof set pages 50000 lines 120 select name from $v_ctlf ; exit eof # ---------------------------------------------# eof 4-restore-and-recover-from-controlfile-loss

5-total-database-loss
#!/bin/tcsh # 5-total-database-loss # --------------------source ./set-environment echo Generating database crash ... echo set v_par=v\$parameter set v_dba=v\$database set v_logs=v\$log set v_logh=v\$log_history setenv ORACLE_SID $datadb # ----------------------------------------------# Get backup to restore controlfile and spfile

# ----------------------------------------------echo rman target / @listbk | grep autobackup echo # ----------------------------------------------# Get actual sequence before crashing the database # ----------------------------------------------sqlplus -s / as sysdba <<eof set echo on head on veri on pages 50000 lines 120 spool redolog_miss_status-before_crash.log archive log list; select name,dbid from $v_dba; select SEQUENCE# from $v_logh where FIRST_TIME=(select max(FIRST_TIME) from $v_logh); select * from $v_logs; spool off set pages 50000 lines 120 echo off head off veri off flush off ti off spool rmdbs.sh select 'asmcmd rm -rf '||a.value||'/'||b.name from $v_par a, $v_dba b where a.name='db_create_file_dest'; spool off SHUTDOWN IMMEDIATE eof # -----------------------------------------------

# Remove all database files # ----------------------------------------------echo echo Preparing to crash and burn database ... echo setenv ORACLE_SID +ASM chmod 700 ./rmdbs.sh ./rmdbs.sh rm rmdbs.sh echo echo Starting database after the crash ... echo setenv ORACLE_SID $datadb sqlplus -s / as sysdba <<eof STARTUP eof # ----------------------------------------------# Evaluate damage # ----------------------------------------------echo echo Evaluating damage ... echo echo Listing directories on ASM Data diskgroup echo setenv ORACLE_SID +ASM asmcmd ls +datadgnr echo

echo Listing directories on ASM Flash Recovery Area diskgroup echo asmcmd ls +fradg/$datadb echo # ------------------------# eof 5-total-database-loss

5-restore-and-recover-from-total-database-loss
#!/bin/tcsh # ------------------------------------------------# 5-restore-and-recover-from-total-database-loss # ------------------------------------------------source ./set-environment echo Executing Controlfile Restore echo echo please enter DBID number of the database to restore the controlfile set v_dbid = $< echo echo Please check the last archived sequence of the database. echo please enter sequence number to restore to ... set v_seq = $< echo echo Please enter the full path to the controlfile and spfile backup to restore them echo

set v_bkp = $< echo # ----------------------------------# Rebuild database diskgroup metadata # ----------------------------------echo Rebuilding Database Directory on Data Diskgroup echo setenv ORACLE_SID +ASM asmcmd md_restore -b /u01/app/oracle/BACKUP/sati11/asm_md_backup -t nodg -g DATADGNR asmcmd ls +DATADGNR echo echo Executing Rman Restore and Recovery Steps echo # ----------------------------------# Restore the database # ----------------------------------setenv ORACLE_SID $datadb rman TARGET / <<eof SET DBID $v_dbid; STARTUP NOMOUNT; RESTORE SPFILE FROM '$v_bkp'; STARTUP FORCE NOMOUNT; RESTORE CONTROLFILE FROM '$v_bkp'; ALTER DATABASE MOUNT; run { set until sequence $v_seq thread 1; restore database; recover database;

} ALTER DATABASE OPEN RESETLOGS; eof set v_log=v\$log set v_logf=v\$logfile set v_dbs=v\$database echo Checking Database after total database loss, restore and recover echo # -------------------------------------------# Check the database after restore and recover # -------------------------------------------sqlplus $dbauser/$dbapwd@$datadb as sysdba <<eof set pages 50000 lines 120 select * from $v_log; elect member from $v_logf; select name from $v_dbs; exit eof # ------------------------------------------------# eof 5-restore-and-recover-from-total-database-loss

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close