Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ......

47
Filename : README --VER=4.0-100812 -file install 1.chmod +x 2.file copy nsr home: nsr_onbackup.sh /usr/BACKUP/oracle/ON-BACKUP: online_dbbackup.sh onbackupsave.sh -networker client setting Save set: /usr/BACKUP/oracle/ON-BACKUP/online_dbbackup.sh Backup command: nsr_onbackup.sh -H $ORACLE_HOME -S $ORACLE_SID Options: -H :ORACLE_HOME (Mandatory) -S :ORACLE_SID (Mandatory) -c : Compression (Optional,Default:Uncompression) -P :The number of save sessions (Optional,Default:5) -v :Verbose (Optional,for Debugger) -TC:Number of Tablespaces (Optional,Default:All Tablespaces)(Only >=8i) -I :Interval Time (Optional,Default:20 Sec) -LR:Log File Retention Day (Optional,Default:200 Day) -RR:Result Table Retention Day (Optional,Default:100 Day) ex)nsr_onbackup.sh -S OMS -H /oracle/OMS/oracle -v -c -DB StoreProcedure Creation sqlplus "/ as sysdba" SQL>@samsung_backup_create.sql -Backup Stop Command ONBACKUP_STOP ORACLE_SID - Register/Unregister Tablespaces to exclude for Register Tablespaces to exclude

Transcript of Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ......

Page 1: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

Filename : README

--VER=4.0-100812-file install1.chmod +x2.file copy nsr home: nsr_onbackup.sh

/usr/BACKUP/oracle/ON-BACKUP:online_dbbackup.sh onbackupsave.sh

-networker client setting

Save set:/usr/BACKUP/oracle/ON-BACKUP/online_dbbackup.sh

Backup command:

nsr_onbackup.sh -H $ORACLE_HOME -S $ORACLE_SID

Options:-H :ORACLE_HOME (Mandatory)-S :ORACLE_SID (Mandatory)-c : Compression (Optional,Default:Uncompression) -P :The number of save sessions (Optional,Default:5)-v :Verbose (Optional,for Debugger)-TC:Number of Tablespaces (Optional,Default:All Tablespaces)(Only >=8i)-I :Interval Time (Optional,Default:20 Sec)-LR:Log File Retention Day (Optional,Default:200 Day)-RR:Result Table Retention Day (Optional,Default:100 Day)

ex)nsr_onbackup.sh -S OMS -H /oracle/OMS/oracle -v -c

-DB StoreProcedure Creationsqlplus "/ as sysdba"SQL>@samsung_backup_create.sql

-Backup Stop CommandONBACKUP_STOP ORACLE_SID

- Register/Unregister Tablespaces to exclude for Register Tablespaces to excludesqlplus "/ as sysdba"SQL>insert into samsung_backup_tbs_exclude values ('Tablespace Name');SQL>commit;

for Unregister Tablespaces to excludesqlplus "/ as sysdba"SQL>delete samsung_backup_tbs_exclude where tablespace_name in ('Tablespace Name');SQL>commit;

Page 2: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

cf) for Oracle7.3You must make orapwd fileex)orapwd file=orapwSID password=*****

for Long ORACLE_HOMEYou must make /usr/BACKUP/oracle/ON-BACKUP/onbackup.profileand Add ORACLE_HOME=

Page 3: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

Filename : samsung_backup_create.sql

--VER=4.0-100812set serveroutput on

create table samsung_backup_result(BK_SETID NUMBER,BK_GROUP VARCHAR2(50),HOST_NAME VARCHAR2(64) NOT NULL,BK_SERVER VARCHAR2(64),BK_STATUS VARCHAR2(11),BK_SW VARCHAR2(50),BK_SW_VER VARCHAR2(50),BK_SCRIPT VARCHAR2(200),DB_SW VARCHAR2(20),DB_NAME VARCHAR2(16),BACKUP_TYPE VARCHAR2(50),BACKUP_LEVEL VARCHAR2(4),STARTTIME DATE,ENDTIME DATE,DEVICE_TYPE VARCHAR2(17),MEDIA VARCHAR2(65),BYTES NUMBER,OFF_LINE VARCHAR2(3) DEFAULT 'NO',COMPRESSED VARCHAR2(3) DEFAULT 'NO',PARALLEL NUMBER, CONTROLFILE_INCLUDED VARCHAR2(3) DEFAULT 'NO', COMMENTS VARCHAR2(1000) );grant select on samsung_backup_result to maxigent;

drop table samsung_backup_status/

create table samsung_backup_status asselect aa.tablespace,aa.datafile,aa.status,bb.min_filefrom (select a.tablespace_name tablespace, a.file_name datafile, b.status status, a.file_id file_id from sys.dba_data_files a, sys.v$backup b where a.file_id = b.file#) aa,(select tablespace_name,min(file_id) file_id,'Y' min_file from dba_data_files group by tablespace_name) bbwhere aa.file_id=bb.file_id(+)/

create table samsung_backup_tbs_exclude (tablespace_name varchar2(30))/grant select on samsung_backup_tbs_exclude to maxigent;

-- title: samsung_init_backup

Page 4: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

create or replace procedure samsung_init_backupis cursor tablespace_cursor is select distinct a.tablespace_name ts from sys.dba_data_files a, sys.v$backup b where a.file_id = b.file# and b.status = 'ACTIVE' order by ts;

sql_string varchar2(800); cursor_name integer; return_status integer;begin cursor_name := dbms_sql.open_cursor;

for tablespace_record in tablespace_cursor loop sql_string := 'alter tablespace '||tablespace_record.ts||' end backup'; dbms_sql.parse(cursor_name, sql_string, dbms_sql.v7); return_status := dbms_sql.execute(cursor_name); dbms_output.put_line('Issuing ALTER TABLESPACE '||tablespace_record.ts||' END BACKUP statement'); end loop;

sql_string := 'drop table samsung_backup_status'; dbms_sql.parse(cursor_name, sql_string, dbms_sql.v7); return_status := dbms_sql.execute(cursor_name); dbms_output.put_line('Issuing DROP TABLE SAMSUNG_BACKUP_STATUS statement');

sql_string := 'create table samsung_backup_status asselect aa.tablespace,aa.datafile,aa.status,bb.min_filefrom (select a.tablespace_name tablespace, a.file_name datafile, b.status status, a.file_id file_id from sys.dba_data_files a, sys.v$backup b where a.file_id = b.file#) aa,(select tablespace_name,min(file_id) file_id,''Y'' min_file from dba_data_files group by tablespace_name) bbwhere aa.file_id=bb.file_id(+)';

dbms_sql.parse(cursor_name, sql_string, dbms_sql.v7); return_status := dbms_sql.execute(cursor_name); dbms_output.put_line('Issuing CREATE TABLE SAMSUNG_BACKUP_STATUS AS ... statement');

dbms_sql.close_cursor(cursor_name);end samsung_init_backup;/

-- title: samsung_begin_backup

Page 5: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

create or replace procedure samsung_begin_backup(datafile_in varchar2)is samsung_tablespace samsung_backup_status.tablespace%type; samsung_datafile samsung_backup_status.datafile%type; samsung_status samsung_backup_status.status%type; samsung_min_file samsung_backup_status.min_file%type; b_date char(22); c_date char(22); sql_string varchar2(255);

cursor_name integer; return_status integer;

x NUMBER := 1;

beginloop select tablespace, datafile, status, min_file into samsung_tablespace, samsung_datafile, samsung_status, samsung_min_file from samsung_backup_status where datafile = datafile_in; if (samsung_status = 'NOT ACTIVE' and samsung_min_file = 'Y') then select to_char(sysdate,'(YYYY/MM/DD HH24:MI:SS)') into b_date from dual; cursor_name := dbms_sql.open_cursor; sql_string := 'alter tablespace '||samsung_tablespace||' begin backup'; dbms_sql.parse(cursor_name, sql_string, dbms_sql.v7); return_status := dbms_sql.execute(cursor_name); select to_char(sysdate,'(YYYY/MM/DD HH24:MI:SS)') into c_date from dual; dbms_output.put_line(b_date||' Issuing ALTER TABLESPACE '||samsung_tablespace||' BEGIN BACKUP statement-Begin Start'); dbms_output.put_line(c_date||' Issuing ALTER TABLESPACE '||samsung_tablespace||' BEGIN BACKUP statement-Begin Complete'); dbms_sql.close_cursor(cursor_name); update samsung_backup_status set status = 'ACTIVE' where tablespace = samsung_tablespace; commit; elsif samsung_status = 'COMPLETED' then dbms_output.put_line('the file backup already completed'); dbms_output.put_line('datafile:'||chr(39)||samsung_datafile||chr(39)); else dbms_output.put_line('the file is already in backup'); dbms_output.put_line('datafile:'||chr(39)||samsung_datafile||chr(39)); end if; exit when samsung_status||samsung_min_file <> 'NOT ACTIVE' ; if x > 100 then dbms_output.put_line('ORA-BEGIN_PENDING : the file is in pending begin-command'); dbms_output.put_line('datafile:'||chr(39)||samsung_datafile||chr(39)); exit; end if; x := x + 1; dbms_lock.sleep(20);

Page 6: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

end loop;end samsung_begin_backup;/

-- title: samsung_end_backupcreate or replace procedure samsung_end_backup(datafile_in varchar2)is cursor backup_status_cursor is select tablespace, datafile, status from samsung_backup_status where tablespace = ( select tablespace from samsung_backup_status where datafile = datafile_in);

samsung_tablespace samsung_backup_status.tablespace%type; c_date char(22); sql_string varchar2(255); backup_flag number := 0; cursor_name integer; return_status integer;begin update samsung_backup_status set status = 'COMPLETED' where datafile = datafile_in; commit; for backup_status_record in backup_status_cursor loop if backup_status_record.status in ('ACTIVE') then backup_flag := 1; end if; end loop; if backup_flag <> 1 then select tablespace,to_char(sysdate,'(YYYY/MM/DD HH24:MI:SS)') into samsung_tablespace,c_date from samsung_backup_status where datafile = datafile_in; cursor_name := dbms_sql.open_cursor; sql_string := 'alter tablespace '||samsung_tablespace||' end backup'; dbms_sql.parse(cursor_name, sql_string, dbms_sql.v7); return_status := dbms_sql.execute(cursor_name); dbms_output.put_line(c_date||' Issuing ALTER TABLESPACE '||samsung_tablespace||' END BACKUP statement'); dbms_sql.close_cursor(cursor_name); end if;end samsung_end_backup;/

create or replace procedure samsung_all_end_backupis cursor tablespace_cursor is select distinct a.tablespace_name ts from sys.dba_data_files a,

Page 7: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

sys.v$backup b where a.file_id = b.file# and b.status = 'ACTIVE' order by ts;

sql_string varchar2(255); cursor_name integer; return_status integer;begin cursor_name := dbms_sql.open_cursor;

for tablespace_record in tablespace_cursor loop sql_string := 'alter tablespace '||tablespace_record.ts||' end backup'; dbms_sql.parse(cursor_name, sql_string, dbms_sql.v7); return_status := dbms_sql.execute(cursor_name); dbms_output.put_line('Issuing ALTER TABLESPACE '||tablespace_record.ts||' END BACKUP statement (samsung_all_end_backup)'); end loop;

end samsung_all_end_backup;/

Filename : nsr_onbackup.sh

#!/bin/ksh ## Title : nsr_onbackup.sh## Desc. : Networker Script for Oracle DB Online Backup ## MODIFIED# Taek 08/12/2010 - Modify Post Command# Taek 12/03/2008 - su -> su - (for NetWorker Version 7.3)# Taek 10/24/2008 - Version Update# Taek 02/13/2008 - Version Update# Taek 07/24/2007 - Version Update# Taek 07/20/2007 - Upgrade (Ver. 4.0)# Taek 07/16/2007 - Version Update# Taek 07/02/2007 - Add Interval# Taek 06/27/2007 - Version Update# Taek 01/04/2005 - Add NUM_TBS # Taek 07/13/2004 - Modify su # Taek 09/27/2003 - Add ON_BACKUP_LOG_EXP_DAY# Taek 07/29/2003 - Add Compression Option -c

VER=4.0-100812

PATH=/bin:/usr/sbin:/usr/bin:/opt/networker/bin:/usr/networker/bin:/usr/opt/

Page 8: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

networker/bin:/bin:/bin/nsrSHLIB_PATH=/usr/libexport PATHexport SHLIB_PATH

processargs(){while [ $# -gt 0 ]do case "$1" in -s ) NSR_SERVER=$2 shift shift ;; -g ) NSR_GROUP=$2 shift shift ;; -LL) LLflag=y shift ;; -m ) Masquerade=$2 shift shift ;; -l ) Level=$2 shift shift ;; -W ) Output_width=$2 shift shift ;; -N ) Saveset_name=$2 shift shift ;; -v ) #Verbose Verbose=1 shift ;; -c ) #Compression Compression=1 shift ;; -H ) #Oracle home ORACLE_HOME=$2 shift shift ;; -S ) #Oracle SID ORACLE_SID=$2 shift

Page 9: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

shift ;; -P ) #MAX_SESSIONS MAX_SESSIONS=$2 shift shift ;; -I ) #Interval Interval=$2 shift shift ;; -TC) #NUM_TBS NUM_TBS=$2 shift shift ;; -LR) #LOG_RETENTION LOG_RETENTION=$2 shift shift ;; -RR) #RESULT_RETENTION RESULT_RETENTION=$2 shift shift ;; * ) SAMSUNG=$1 shift ;; esacdone}

make_save_cmd(){if [ -x /opt/networker/bin/save ]then SAVE_CMD=/opt/networker/bin/saveelif [ -x /usr/opt/networker/bin/save ]then SAVE_CMD=/usr/opt/networker/bin/saveelif [ -x /usr/sbin/save ]then SAVE_CMD=/usr/sbin/saveelif [ -x /bin/nsr/save ]then SAVE_CMD=/bin/nsr/saveelse SAVE_CMD=/usr/bin/savefi}

Page 10: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

handle_signal(){if [ $Pid != 0 ]; thenkill -1 $Pidfiexit 1}

backup_oracle(){ORACLE_OWNER=`/usr/bin/ls -l $ORACLE_HOME/bin/oracle | /usr/bin/awk '{print $3}'`ON_BACKUP_HOME=/usr/BACKUP/oracle/ON-BACKUP

PSNAME=online_dbbackup.shPSCOUNT=`ps -ef |grep $PSNAME |grep $ORACLE_SID |grep $NSR_GROUP |grep -v nsr_onbackup.sh |grep -v grep |grep -v vi |grep -v more |wc -l` if [ $PSCOUNT -eq 0 ] then su - $ORACLE_OWNER -c "$ON_BACKUP_HOME/online_dbbackup.sh $ALL_ARGS" & Pid=$! wait $Pid onbackup_status=$? if [ $onbackup_status != 0 ]; then echo "onbackup returned status of "$onbackup_status exit 1 fi else echo "Previous backup job is not completed !!" exit 1 fi}

# Default Variables : Don't Modify Default Var.!! If you want it, Modify onbackup.profile file !!

# PRE Command

ALL_ARGS=$*

make_save_cmd

if [ -a /usr/BACKUP/oracle/ON-BACKUP/onbackup.profile ]then. /usr/BACKUP/oracle/ON-BACKUP/onbackup.profileexport ORACLE_HOMEfi

export LOG_RETENTION

Page 11: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

processargs $*

# Main (Your backup procedure must be here!)

Pid=0

trap handle_signal 2 15

backup_oracle

# End

# POST Command

NSR_BACKUP_LOG=$ON_BACKUP_HOME/log/$ORACLE_SID/online_dbbackup.log.`date +%Y%m%d`

OnPid=`cat $ON_BACKUP_HOME/tmp/$ORACLE_SID/pidinfo | tail -1|sed 's/ //g'` if [ -r $NSR_BACKUP_LOG ]then

SUCCESS_CHECK=`cat $NSR_BACKUP_LOG |grep "(Pid:$OnPid)" |grep "Oracle Backup Status" | tail -1 | grep succeed |wc -l|sed 's/ //g'`

if [ "$SUCCESS_CHECK" -ne "0" ] then $SAVE_CMD -s $NSR_SERVER -g $NSR_GROUP -LL -m $Masquerade -l $Level -q -W $Output_width -N $Saveset_name $Saveset_name

exit 0 fi

fi

exit 1

Page 12: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

Filename : online_dbbackup.sh

#!/usr/bin/ksh ## Title : online_dbbackup.sh ## Desc. : Oracle DB Online Backup Script## MODIFIED# Taek 10/12/2010 - Add pidinfo (for nsr_onbackup.sh post command)# Taek 11/02/2009 - for Linux# Taek 10/24/2008 - Modify SAMSUNG_BACKUP_RESULT Value (Backup Type:DATAFILE -> DB)# Taek 02/13/2008 - Fix Begin Backup Error Bug # Taek 10/19/2007 - Add Backup Parameter File, Voting Disk # Taek 10/01/2007 - Modify Backup Time Format # Taek 09/19/2007 - Modify Backup Result Time Format # Taek 07/27/2007 - Add Fail Check Routine to Check Backup Completion Loop # Taek 07/24/2007 - Add Backup Time Limit# Taek 07/20/2007 - Upgrade (Ver. 4.0)# Taek 07/16/2007 - Version Update# Taek 07/02/2007 - Add Interval# Taek 06/27/2007 - Version Update# Taek 06/14/2007 - Add abnormal datafile name(including space) Backup# Taek 12/20/2005 - Modify end_backup()# Taek 10/27/2005 - Exclude ONLINE Check# Taek 08/11/2005 - Change Controlfile Backup Name# Taek 04/27/2005 - Modify SYSVAR# Taek 04/11/2005 - Modify set serveroutput on# Taek 03/21/2005 - Add set_sysvar# Taek 01/24/2005 - Modify display_summary (Add NSR_GROUP info),Fixed Excluding Tablespaces bug# Taek 01/04/2005 - Upgrade (Ver. 3.0)# Taek 12/16/2004 - Modify display_summary (for GB size)# Taek 06/17/2004 - Modify SQLDBA# Taek 05/31/2004 - Archived All Online Log off before backup controlfile# Taek 10/23/2003 - Change TNS_ADMIN for AUTHENTICATION_SERVICES# Taek 09/27/2003 - Add purge_log function # Taek 07/29/2003 - Add Compression Option -c # Taek 04/22/2003 - Modify filelist Query Statement for oracle9i # Taek 04/21/2003 - Modify oracle_error_handling # Taek 03/31/2003 - Remove -N option of save command# Taek 12/23/2002 - Fixed Initialize bug# Taek 12/03/2002 - Add SHLIB_PATH,LD_LIBRARY_PATH# Taek 11/16/2002 - Remove chmod Command # Taek 10/24/2002 - Add LANG for getdate bug# Taek 10/21/2002 - Modify SIZE,ELAPSED_TIME # Taek 10/18/2002 - Add /usr/xpg4/bin to PATH for SUN awk command# Taek 10/02/2002 - Add Argument -P(for MAX_SESSIONS) to Backup

Page 13: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

Command of nwadmin, add vecho # Taek 10/01/2002 - Rename zoi_objects to samsung_objects,save.sh to onbackupsave.sh, add get_backup_time # Taek 09/27/2002 - Add display_summary# Taek 09/21/2002 - Test Multi Oracle Backup# Taek 08/22/2002 - Modify set_sqldba for oracle9i# Taek 08/21/2002 - Change LOG,TMP Directory for Multi Oracle Backup# Taek 07/24/2002 - Change NSR_DIRECTIVE# JM 06/22/2002 - Change save.sh (Ver. 2.0)# Im, Sang Soon 03/12/1999 - Creation (Ver. 1.0)#

VER=4.0-100812

# functions

processargs(){while [ $# -gt 0 ]do case "$1" in -s ) NSR_SERVER=$2 shift shift ;; -g ) NSR_GROUP=$2 shift shift ;; -LL) LLflag=y shift ;; -m ) Masquerad=$2 shift shift ;; -l ) Level=$2 shift shift ;; -W ) Output_width=$2 shift shift ;; -N ) Saveset_name=$2

shift shift ;; -v ) #Verbose Verbose=1 shift ;;

Page 14: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

-c ) #Compression Compression=1 shift ;; -H ) #Oracle home ORACLE_HOME=$2 shift shift ;; -S ) #Oracle SID ORACLE_SID=$2 shift shift ;; -P ) #MAX_SESSIONS MAX_SESSIONS=$2 shift shift ;; -I ) #Interval Interval=$2 shift shift ;; -TC) #NUM_TBS NUM_TBS=$2 shift shift ;; -LR) #LOG_RETENTION LOG_RETENTION=$2 shift shift ;; -RR) #RESULT_RETENTION RESULT_RETENTION=$2 shift shift ;; * ) SAMSUNG=$1 shift ;; esacdone}

vecho(){if [ $Verbose -gt 0 ]; thenecho $*fi}

Page 15: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

export_variables(){export PATHexport SHLIB_PATHexport LD_LIBRARY_PATH

export NSR_SERVERexport NSR_BACKUP_LOGexport ON_BACKUP_TMP_HOMEexport NSR_GROUPexport Levelexport Masqueradexport Output_width export LLflag=yexport NSR_DIRECTIVEexport NSR_SAVE_STATUS

export ORACLE_SIDexport ORACLE_HOMEexport TNS_ADMINexport MAX_SESSIONSexport Compressionexport NUM_TBSexport Verboseexport Intervalexport LOG_RETENTIONexport RESULT_RETENTION}

end_backup(){

sleep 2

Run_time=`eval $getdate` echo "($Run_time) $PSNAME: kill -9 $PS_SAVE processes ....." >> $NSR_BACKUP_LOG

kill -9 `ps -ef|grep $PS_SAVE |grep -v grep |grep -v vi |grep -v more | awk '{print $2}'`

sleep 10

kill -9 `ps -ef|grep $PS_SAVE |grep -v grep |grep -v vi |grep -v more | awk '{print $2}'`

Run_time=`eval $getdate` echo "($Run_time) $PSNAME: Started All End Backup Marking !!" >> $NSR_BACKUP_LOG

$SQLDBA << EOF > $DB_STATUS$SYSVAR

Page 16: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

$CONNDBA$SYSVARexecute samsung_all_end_backup;disconnectEOF

oracle_error_handling

cat $DB_STATUS >> $NSR_BACKUP_LOG

Run_time=`eval $getdate` echo "($Run_time) $PSNAME: Finished All End Backup Marking !!" >> $NSR_BACKUP_LOG

}

display_summary(){Hostname=`uname -n`first_part=`echo "Oracle Backup Status:succeed level=full,"`second_part=`mminfo -s $NSR_SERVER -q"savetime>=$Start_time,savetime<=$End_time,group=$NSR_GROUP,client=$Hostname,client=b$Hostname " -r "name,totalsize(1),nfiles(1)" | \awk -v Backup_time=$Backup_time 'BEGIN { total_kb = 0; total_mb = 0; total_files = 0; files_str = "file" } { if ( $3 == "KB" ) { total_kb += $2 } else { if ( $3 == "GB" ) { total_mb += $2 * 1024 } else { total_mb += $2 }} total_files += $4 } END { if (total_files > 1) { files_str = "files" } else { files_str = "file" } if (total_kb > 1000) { total_mb += (total_kb / 1024) }if (total_mb > 0) { printf "%d.%d MB %s %d %s\n", total_mb, total_kb % 1000,Backup_time,total_files,files_str } else { printf "%d KB %s %d %s\n", total_kb,Backup_time,total_files, files_str }

Page 17: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

}'`echo " " >> $NSR_BACKUP_LOGecho "$Hostname(Pid:$$): $first_part$second_part" >> $NSR_BACKUP_LOGecho "==============================================================================================" >> $NSR_BACKUP_LOGreturn 0}

backup_abort_msg(){ Run_time=`eval $getdate` echo "($Run_time) $PSNAME: Backup Aborted !!" >> $NSR_BACKUP_LOG}

handle_signal(){ Error_time=`eval $getdate` ERRMSG="($Error_time) $PSNAME: received signal 2 or 15" BACKUPSTATUS="FAILED" echo $ERRMSG >> $NSR_BACKUP_LOG

end_backup rm -f $DB_STATUS $FILELIST $RESULT_STATUS $NSR_DIRECTIVE

backup_abort_msg ins_backup_result_fail exit 1}

oracle_error_handling(){grep 'ORA-' $DB_STATUS | grep -v 'ORA-00271' > /dev/null

if [ $? -eq 0 ]then Error_time=`eval $getdate` ORAMSG=`grep ORA- $DB_STATUS | awk -F "ORA-" '{print "ORA-"$2}'` ERRMSG="($Error_time) $PSNAME: oracle failed $ORAMSG" BACKUPSTATUS="FAILED" echo $ERRMSG

cp $DB_STATUS $DB_STATUS.err

backup_abort_msg ins_backup_result_fail exit 1fi >> $NSR_BACKUP_LOG}

result_oracle_error_handling(){

Page 18: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

grep 'ORA-' $DB_STATUS | grep -v 'ORA-00271' > /dev/null

if [ $? -eq 0 ]then Error_time=`eval $getdate` ORAMSG=`grep ORA- $DB_STATUS | awk -F "ORA-" '{print "ORA-"$2}'` echo "($Error_time) $PSNAME: Backup Result table handling failed $ORAMSG"

cp $DB_STATUS $DB_STATUS.err

exit 0fi >> $NSR_BACKUP_LOG}

networker_error_handling(){if [ "$RETURN_STATUS" -ne "0" ]then Error_time=`eval $getdate` ERRMSG="($Error_time) $PSNAME: save failed" BACKUPSTATUS="FAILED" echo $ERRMSG

cp $RESULT_STATUS $RESULT_STATUS.networker.err

rm -f $DB_STATUS $FILELIST $RESULT_STATUS $NSR_DIRECTIVE

backup_abort_msg ins_backup_result_fail exit 1fi >> $NSR_BACKUP_LOG}

save_error_handling(){if [ "$RETURN_STATUS" -ne "0" ]then Error_time=`eval $getdate` SAVEMSG=`grep fail $NSR_SAVE_STATUS` ERRMSG="($Error_time) $PSNAME: Error messages are detected !! : $SAVEMSG" BACKUPSTATUS="FAILED" echo $ERRMSG

end_backup backup_abort_msg ins_backup_result_fail exit 1fi >> $NSR_BACKUP_LOG}

nsr_error_handling(){

Page 19: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

if [ "$RETURN_STATUS" -ne "0" ]then Error_time=`eval $getdate` ERRMSG="($Error_time) $PSNAME: nsr_onbackup.sh killed" BACKUPSTATUS="FAILED" echo $ERRMSG

end_backup backup_abort_msg ins_backup_result_fail exit 1fi >> $NSR_BACKUP_LOG}

backup_stop_handling(){if [ "$RETURN_STATUS" -ne "0" ]then Error_time=`eval $getdate` STOPMSG=`grep Stop $BACKUP_STOP_FLAG` ERRMSG="($Error_time) $PSNAME: Backup Stop by User !! : $STOPMSG" BACKUPSTATUS="STOPPED" echo $ERRMSG

end_backup backup_abort_msg ins_backup_result_fail sleep 20 echo "$Hostname: Oracle Backup Status:fail level=full" echo "==============================================================================================" exit 0fi >> $NSR_BACKUP_LOG}

get_backup_time(){ $SQLDBA << EOF > $TIME_INFO$SYSVAR$CONNDBA$SYSVARselect 'Backup_time '|| lpad(trunc((to_date('$EndTime','YYYY/MM/DD HH24:MI:SS')-to_date('$BeginTime','YYYY/MM/DD HH24:MI:SS'))*24),2,0)||':'|| lpad(mod(trunc((to_date('$EndTime','YYYY/MM/DD HH24:MI:SS')-to_date('$BeginTime','YYYY/MM/DD HH24:MI:SS'))*24*60),60),2,0)||':'|| lpad(mod(round((to_date('$EndTime','YYYY/MM/DD HH24:MI:SS')-to_date('$BeginTime','YYYY/MM/DD HH24:MI:SS'))*24*60*60),60),2,0) from dual;disconnectEOF

Page 20: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

Backup_time=`cat $TIME_INFO | awk '$1 == "Backup_time" { print $2 }'`}

make_nsr_directive(){if [ $Compression -gt 0 ] then echo "<< /dev/ >>+rawasm: *<< /devices/ >>+rawasm: *<< / >>+compressasm: *" > $NSR_DIRECTIVEelse echo "<< /dev/ >>+rawasm: *<< /devices/ >>+rawasm: *" > $NSR_DIRECTIVEfi}

set_sqldba(){ SQLDBA="$ORACLE_HOME/bin/sqlplus /nolog"}

set_conn(){if [ -x $ORACLE_HOME/bin/svrmgrl ]then CONNDBA="connect internal/"else CONNDBA="connect / as sysdba"fi}

set_sysvar(){SYSVAR="SET SQLPROMPT 'SQL> 'SET FEEDBACK ON ECHO OFF VERIFY ON PAUSE OFF TIME OFF TIMING OFF TERMOUT ON SERVEROUTPUT ON SIZE 10000"}

make_save_cmd()

Page 21: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

{if [ -x /opt/networker/bin/save ]then SAVE_CMD=/opt/networker/bin/saveelif [ -x /usr/opt/networker/bin/save ]then SAVE_CMD=/usr/opt/networker/bin/saveelif [ -x /usr/sbin/save ]then SAVE_CMD=/usr/sbin/saveelif [ -x /bin/nsr/save ]then SAVE_CMD=/bin/nsr/saveelse SAVE_CMD=/usr/bin/savefi}

get_networker_version(){NSREXECD=`which nsrexecd`NW_VER=`what $NSREXECD |grep Release | awk '{print $2}'`}

purge_log(){find $ON_BACKUP_LOG_HOME -ctime +$LOG_RETENTION -exec rm -f {} \;find $ON_BACKUP_TMP_HOME -ctime +$LOG_RETENTION -exec rm -f {} \;}

get_file_info(){if [ "$NUM_TBS" -eq "" ]then $SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARselect 'File_Count '||count(*)from dba_data_files where tablespace_name in ( select a.tablespace_name from sys.dba_data_files a, sys.v\$backup b where a.file_id = b.file# group by a.tablespace_name )and tablespace_name not in (select tablespace_name from samsung_backup_tbs_exclude);select 'Tbs_Count '||count(*)from dba_tablespaces where tablespace_name in ( select a.tablespace_name from sys.dba_data_files a, sys.v\$backup b

Page 22: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

where a.file_id = b.file# group by a.tablespace_name )and tablespace_name not in (select tablespace_name from samsung_backup_tbs_exclude);select 'datafileAWK_sF'||a.file_name||'AWK_sF'from sys.dba_data_files a, sys.v\$backup bwhere a.file_id = b.file# and a.tablespace_name not in (select tablespace_name from samsung_backup_tbs_exclude)order by b.time,a.tablespace_name,a.file_id;disconnectEOF

oracle_error_handling

NUM_FILE=`cat $DB_STATUS | awk '$1 == "File_Count" { print $2 }'` NUM_TBS=`cat $DB_STATUS | awk '$1 == "Tbs_Count" { print $2 }'` cat $DB_STATUS | awk -F "AWK_sF" '$1 == "datafile" { print $2 }' > $FILELIST

else $SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARselect 'File_Count '||count(*)from dba_data_files where tablespace_name in ( select tablespace_name from ( select a.tablespace_name,max(b.time) from sys.dba_data_files a, sys.v\$backup b where a.file_id = b.file# and a.tablespace_name not in (select tablespace_name from samsung_backup_tbs_exclude) group by a.tablespace_name order by max(b.time)) where rownum <= $NUM_TBS);disconnectEOFecho "NF $NUM_FILE" >> $DB_STATUSoracle_error_handling

NUM_FILE=`cat $DB_STATUS | awk '$1 == "File_Count" { print $2 }'`

$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARselect 'datafileAWK_sF'||file_name||'AWK_sF' from(select a.file_name,b.time from sys.dba_data_files a, sys.v\$backup b where a.file_id = b.file# and a.tablespace_name not in (select tablespace_name from

Page 23: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

samsung_backup_tbs_exclude) order by b.time)where rownum <= $NUM_FILE ;disconnectEOF cat $DB_STATUS | awk -F "AWK_sF" '$1 == "datafile" { print $2 }' | head -$NUM_FILE > $FILELIST

fi}

get_num_tbs_exclude(){

$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARselect 'Tbs_Exclude_Count '||count(*)from samsung_backup_tbs_exclude ;disconnectEOF

oracle_error_handling

NUM_TBS_EXCLUDE=`cat $DB_STATUS | awk '$1 == "Tbs_Exclude_Count" { print $2 }'`

}

get_spfile(){

$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARselect 'spfileAWK_sF'||value||'AWK_sF' from v\$parameter where name='spfile';disconnectEOF

oracle_error_handling

SPFILE=`cat $DB_STATUS |grep spfile | awk -F "AWK_sF" '$1 == "spfile" { print $2 }'`

}

backup_result_purge(){

Page 24: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARdelete SAMSUNG_BACKUP_RESULT where BK_SW='$NSR_SW' and starttime < sysdate-$RESULT_RETENTION;commit;disconnectEOF

result_oracle_error_handling

}

ins_backup_result_succeed(){ $SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARinsert into SAMSUNG_BACKUP_RESULT (BYTES,BK_GROUP,HOST_NAME,BK_SERVER,BK_STATUS,BK_SW,BK_SW_VER,BK_SCRIPT, DB_SW,DB_NAME,BACKUP_TYPE,BACKUP_LEVEL, STARTTIME,ENDTIME, DEVICE_TYPE,OFF_LINE,COMPRESSED,PARALLEL,CONTROLFILE_INCLUDED)select sum(BYTES),'$NSR_GROUP','$Hostname','$NSR_SERVER','$BACKUPSTATUS','$NSR_SW','$NW_VER','$PSNAME-$VER', 'Oracle','$ORACLE_SID','DB','FULL', to_date('$BeginTime','YYYY/MM/DD HH24:MI:SS'),sysdate, 'TAPE','NO','$CompressYN',$MAX_SESSIONS,'$ControlY'from sys.dba_data_files where tablespace_name not in (select tablespace_name from samsung_backup_tbs_exclude) ;disconnectEOF

result_oracle_error_handling

}

ins_backup_result_fail(){Hostname=`uname -n` $SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVAR

Page 25: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

insert into SAMSUNG_BACKUP_RESULT (BK_GROUP,HOST_NAME,BK_SERVER,BK_STATUS,BK_SW,BK_SW_VER,BK_SCRIPT, DB_SW,DB_NAME,BACKUP_TYPE,BACKUP_LEVEL, STARTTIME,ENDTIME, DEVICE_TYPE,OFF_LINE,COMPRESSED,PARALLEL,COMMENTS)values ('$NSR_GROUP','$Hostname','$NSR_SERVER','$BACKUPSTATUS','$NSR_SW','$NW_VER','$PSNAME-$VER', 'Oracle','$ORACLE_SID','DB','FULL', to_date('$BeginTime','YYYY/MM/DD HH24:MI:SS'),sysdate, 'TAPE','NO','$CompressYN',$MAX_SESSIONS,'$ERRMSG') ;disconnectEOF

result_oracle_error_handling

}

# Default Variables

MAX_SESSIONS=5MAX_DATAFILES=99999999999NUM_TBS=""Verbose=0Compression=0Interval=20LOG_RETENTION=200RESULT_RETENTION=100

# Common Variables

processargs $*

PATH=/usr/xpg4/bin/:/bin:/usr/sbin:/usr/bin:/opt/networker/bin:/usr/networker/bin:/usr/opt/networker/bin:/bin/nsrSHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib64:/usr/libLD_LIBRARY_PATH=$ORACLE_HOME/lib64:$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/libLANG=""

PSNAME=`basename $0`PS_SAVE=onbackupsave.sh

ON_BACKUP_HOME=/usr/BACKUP/oracle/ON-BACKUPON_BACKUP_LOG_HOME=$ON_BACKUP_HOME/log/$ORACLE_SIDON_BACKUP_TMP_HOME=$ON_BACKUP_HOME/tmp/$ORACLE_SID

NSR_SW=NetWorkerNSR_DIRECTIVE=$ON_BACKUP_TMP_HOME/.nsr_directive~.$$NSR_SAVE_STATUS=$ON_BACKUP_TMP_HOME/.samsung_save_statusNSR_BACKUP_LOG=$ON_BACKUP_LOG_HOME/`basename $0 | cut -d. -

Page 26: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

f1`.log.`date +%Y%m%d`

DB_STATUS=$ON_BACKUP_TMP_HOME/.samsung_db_status~.$$BACKUP_STATUS=0SESSION_INFO=/$ON_BACKUP_TMP_HOME/.samsung_session_infoTIME_INFO=$ON_BACKUP_TMP_HOME/.samsung_time_info~.$$FILELIST=$ON_BACKUP_TMP_HOME/.samsung_filelist~.$$RESULT_STATUS=$ON_BACKUP_TMP_HOME/.samsung_result_status~.$$ TNS_ADMIN=$ON_BACKUP_TMP_HOME

BACKUP_STOP_FLAG=$ON_BACKUP_TMP_HOME/.samsung_backup_flag

echo=echogetdate="date '+%Y/%m/%d %H:%M:%S'"getdate_nw="date '+%a %b %d %H:%M:%S %Y'"

export_variables

# Maintrap handle_signal 2 15

purge_logbackup_result_purge

mkdir -p $ON_BACKUP_HOME/logmkdir -p $ON_BACKUP_HOME/tmp

mkdir -p $ON_BACKUP_LOG_HOMEmkdir -p $ON_BACKUP_TMP_HOME

cp -f $NSR_SAVE_STATUS $NSR_SAVE_STATUS.bakrm -f $NSR_SAVE_STATUSrm -f $BACKUP_STOP_FLAG

touch $NSR_SAVE_STATUStouch $BACKUP_STOP_FLAGcp /dev/null $TNS_ADMIN/sqlnet.ora

echo "$$" > $ON_BACKUP_TMP_HOME/pidinfo make_save_cmdget_networker_version

set_sysvarset_sqldbaset_connget_file_infoget_num_tbs_excludeget_spfile

Start_time=`eval $getdate_nw`BeginTime=`date '+%Y/%m/%d %H:%M:%S'`

Page 27: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

echo "Started backup job on $BeginTime for database:" >> $NSR_BACKUP_LOG

$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARselect 'controlfile '||name from v\$controlfile where rownum = 1;select 'db_name '||value from v\$parameter where name = 'db_name';archive log listdisconnectEOF

oracle_error_handling

CONTROLFILE_TMP=`cat $DB_STATUS | awk '$1 == "controlfile" { print $2 }'`CONTROLFILE=$ORACLE_HOME/dbs/`basename $CONTROLFILE_TMP`.$$.`date +%Y%m%d`STANDBYCONTROLFILE=$ORACLE_HOME/dbs/standby.ctl.`date +%Y%m%d`

DB_NAME=`cat $DB_STATUS | awk '$1 == "db_name" { print $2 }'`

if [ "$Compression" -eq "0" ] then CompressYN="NO" else CompressYN="YES" fi

echo " Script Version = $VER " >> $NSR_BACKUP_LOGecho " DB_NAME = $DB_NAME " >> $NSR_BACKUP_LOGecho " ORACLE_SID = $ORACLE_SID " >> $NSR_BACKUP_LOG

echo "Number of parallel I/O streams: $MAX_SESSIONS Backup Server: $NSR_SERVER Group: $NSR_GROUP Verbose: $Verbose Compression: $CompressYN Interval: $Interval Number of Tablespaces: $NUM_TBS (including $NUM_FILE datafiles, excluding $NUM_TBS_EXCLUDE tablespaces) " >> $NSR_BACKUP_LOG

echo "Started samsung_init_backup ................." >> $NSR_BACKUP_LOG $SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA

Page 28: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

$SYSVARexecute samsung_init_backup;disconnectEOF

oracle_error_handling

echo "Finished samsung_init_backup with no errors !!" >> $NSR_BACKUP_LOG

# Make nsr_directive

make_nsr_directive

echo "Starting backing up to tape" >> $NSR_BACKUP_LOG# Backup

FILE_CNT=`cat $FILELIST | wc -l`CNT=1while :do if [ "$CNT" -gt "$FILE_CNT" ] then break else DATAFILE=`head -$CNT $FILELIST | tail -1` CNT_RUN=`ps -ef | grep $ON_BACKUP_HOME/$PS_SAVE | grep -v grep | wc -l` if [ "$CNT_RUN" -eq "0" ] then sleep 5 CNT_RUN=`ps -ef | grep $ON_BACKUP_HOME/$PS_SAVE | grep -v grep | wc -l` fi if [ "$CNT_RUN" -lt "$MAX_SESSIONS" ] then $ON_BACKUP_HOME/$PS_SAVE "$DATAFILE" & NSR_STATUS=`ps -ef |grep nsr_onbackup.sh |grep -v grep |grep -v vi |grep -v more |wc -l` if [ "$NSR_STATUS" -eq "0" ] then sleep 1 if [ "$NSR_STATUS" -eq "0" ] then RETURN_STATUS=1 nsr_error_handling fi fi CNT=`expr $CNT + 1` fi fi grep 'fail' $NSR_SAVE_STATUS > $RESULT_STATUS if [ $? -eq 0 ] then RETURN_STATUS=1

Page 29: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

save_error_handling fi

grep 'Stop' $BACKUP_STOP_FLAG > $RESULT_STATUS if [ $? -eq 0 ] then RETURN_STATUS=1 backup_stop_handling fi

sleep $Intervaldone

# Check Backup CompletionCNT=1while [ $BACKUP_STATUS -lt $NUM_FILE ]do $SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARselect 'backup_status '||sum(decode(status,'COMPLETED',1,0)) from samsung_backup_status;disconnectEOF

BACKUP_STATUS=`cat $DB_STATUS | awk '$1 == "backup_status" { print $2 }'` vecho "(The Number of backuped files : $BACKUP_STATUS) " >> $NSR_BACKUP_LOG #for debug

grep 'fail' $NSR_SAVE_STATUS > $RESULT_STATUS if [ $? -eq 0 ] then RETURN_STATUS=1 save_error_handling fi

grep 'Stop' $BACKUP_STOP_FLAG > $RESULT_STATUS if [ $? -eq 0 ] then RETURN_STATUS=1 backup_stop_handling fi

if [ "$CNT" -gt "3000" ] then

Error_time=`eval $getdate` ERRMSG="($Error_time) $PSNAME: Backup-Job lasts Long Hours !!" BACKUPSTATUS="FAILED" echo $ERRMSG >> $NSR_BACKUP_LOG

Page 30: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

end_backup rm -f $DB_STATUS $FILELIST $RESULT_STATUS $NSR_DIRECTIVE

backup_abort_msg ins_backup_result_fail exit 0

fi CNT=`expr $CNT + 1`

sleep 30done

# Archive current online log files

Run_time=`eval $getdate`$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVAR!echo "($Run_time) Issuing ALTER SYSTEM ARCHIVE LOG CURRENT statement" >> $NSR_BACKUP_LOGalter system archive log current;disconnectEOF

oracle_error_handling

# Backup ControlfileRun_time=`eval $getdate`$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVAR!echo "($Run_time) Issuing ALTER DATABASE BACKUP CONTROLFILE TO '$CONTROLFILE' statement" >> $NSR_BACKUP_LOGalter database backup controlfile to '$CONTROLFILE';!echo "($Run_time) Issuing ALTER DATABASE CREATE STANDBY CONTROLFILE AS '$STANDBYCONTROLFILE' statement" >> $NSR_BACKUP_LOGalter database create standby controlfile as '$STANDBYCONTROLFILE';disconnectEOF

oracle_error_handling

Run_time=`eval $getdate`echo "($Run_time) Started save Control File \"$CONTROLFILE\"" >> $NSR_BACKUP_LOG

$SAVE_CMD -v -s $NSR_SERVER \ -g $NSR_GROUP \ -LL \

Page 31: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

-m $Masquerad \ -l $Level \ -W $Output_width \ -q \ $CONTROLFILE 2> $RESULT_STATUS

RETURN_STATUS=$?

networker_error_handling

Run_time=`eval $getdate` SIZE=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-4)" "$(NF-3) }'` ELAPSED_TIME=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-2) }'`

echo "($Run_time) Finished save Control File \"$CONTROLFILE\" ($SIZE, $ELAPSED_TIME)" >> $NSR_BACKUP_LOG

Run_time=`eval $getdate`rm -f $CONTROLFILEecho "($Run_time) Deleting Saved Backup Control file \"$CONTROLFILE\"" >> $NSR_BACKUP_LOG

Run_time=`eval $getdate`echo "($Run_time) Started save database file \"$STANDBYCONTROLFILE\"" >> $NSR_BACKUP_LOG

$SAVE_CMD -v -s $NSR_SERVER \ -g $NSR_GROUP \ -LL \ -m $Masquerad \ -l $Level \ -W $Output_width \ -q \ $STANDBYCONTROLFILE 2> $RESULT_STATUS

RETURN_STATUS=$?

networker_error_handlingRun_time=`eval $getdate` SIZE=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-4)" "$(NF-3) }'` ELAPSED_TIME=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-2) }'`

echo "($Run_time) Finished save database file \"$STANDBYCONTROLFILE\" ($SIZE, $ELAPSED_TIME)" >> $NSR_BACKUP_LOG

Run_time=`eval $getdate`rm -f $STANDBYCONTROLFILEecho "($Run_time) Deleting Saved Standby Control file \"$STANDBYCONTROLFILE\"" >> $NSR_BACKUP_LOG

Page 32: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

ORA_CRS_HOME=`ps -ef |grep crsd.bin |grep -v grep |grep -v awk |awk -F"/bin/crsd.bin" '{print $1}' |awk '{print $NF}' | sed 's/ //g'`

if [ "$ORA_CRS_HOME" != "" ]then

VOTEDISK=`$ORA_CRS_HOME/bin/crsctl query css votedisk | grep "0\." |awk '{print $3}' |head -1` if [ -r $VOTEDISK ] then

Run_time=`eval $getdate`echo "($Run_time) Started save Voting Disk \"$VOTEDISK\"" >> $NSR_BACKUP_LOG

$SAVE_CMD -v -s $NSR_SERVER \ -g $NSR_GROUP \ -f $NSR_DIRECTIVE \ -LL \ -m $Masquerad \ -l $Level \ -W $Output_width \ -q \ $VOTEDISK 2> $RESULT_STATUS

RETURN_STATUS=$?

networker_error_handling

Run_time=`eval $getdate` SIZE=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-4)" "$(NF-3) }'` ELAPSED_TIME=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-2) }'`

echo "($Run_time) Finished save Voting Disk \"$VOTEDISK\" ($SIZE, $ELAPSED_TIME)" >> $NSR_BACKUP_LOG

fifi

# Backup spfile

if [ "$SPFILE" != "" ]then

PFILEBAK=$ORACLE_HOME/dbs/init$ORACLE_SID.ora.bakRun_time=`eval $getdate`$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA

Page 33: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

$SYSVAR!echo "($Run_time) Issuing create pfile statement" >> $NSR_BACKUP_LOGcreate pfile='$PFILEBAK' from spfile;disconnectEOF

oracle_error_handling

Run_time=`eval $getdate`echo "($Run_time) Started save Parameter File \"$PFILEBAK\"" >> $NSR_BACKUP_LOG

$SAVE_CMD -v -s $NSR_SERVER \ -g $NSR_GROUP \ -LL \ -m $Masquerad \ -l $Level \ -W $Output_width \ -q \ $PFILEBAK 2> $RESULT_STATUS

RETURN_STATUS=$?

networker_error_handling

Run_time=`eval $getdate` SIZE=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-4)" "$(NF-3) }'` ELAPSED_TIME=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-2) }'`

echo "($Run_time) Finished save Parameter File \"$PFILEBAK\" ($SIZE, $ELAPSED_TIME)" >> $NSR_BACKUP_LOG

fi

Run_time=`eval $getdate`$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVAR!echo "($Run_time) Issuing ALTER SYSTEM SWITCH LOGFILE statement" >> $NSR_BACKUP_LOGalter system switch logfile;disconnectEOF

oracle_error_handling

End_time=`eval $getdate_nw`

Page 34: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

EndTime=`date '+%Y/%m/%d %H:%M:%S'`

echo "Completed backup job on $EndTime " >> $NSR_BACKUP_LOG

get_backup_time

display_summary

ControlY="YES"BACKUPSTATUS="SUCCEEDED"ins_backup_result_succeed

rm -f $DB_STATUS $FILELIST $RESULT_STATUS $NSR_DIRECTIVE $TIME_INFO

Page 35: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

Filename : onbackupsave.sh

#!/usr/bin/ksh## Title : onbackupsave.sh ## Desc. : This script must be executed by online_dbbackup.sh only!## MODIFIED# Taek 11/02/2009 - Version Update# Taek 12/03/2008 - Version Update# Taek 10/24/2008 - Version Update# Taek 02/13/2008 - Version Update# Taek 10/01/2007 - Modify Backup Time Format# Taek 07/24/2007 - Version Update# Taek 07/20/2007 - Upgrade (Ver. 4.0)# Taek 07/16/2007 - Version Update# Taek 07/02/2007 - Version Update# Taek 06/27/2007 - Modify SYSVAR (LINES 200)# Taek 06/14/2007 - Add abnormal datafile name(including space) Backup# Taek 12/20/2005 - Modify Error Handling# Taek 08/12/2005 - Add Error Trace File# Taek 04/27/2005 - Modify SYSVAR# Taek 04/11/2005 - Modify set serveroutput on# Taek 03/21/2005 - Add set_sysvar# Taek 01/04/2005 - Upgrade 3.0 # Taek 06/17/2004 - Modify SQLDBA# Taek 04/21/2003 - Modify oracle_error_handling# Taek 03/31/2003 - Remove -N option of save command# Taek 11/16/2002 - Remove chmod Command# Taek 10/01/2002 - Rename zoi_objects to samsung_objects # Taek 08/22/2002 - Modified set_sqldba for oracle9i# JM 06/22/2002 - Changed save options (Ver. 2.0)# Im, Sang Soon 03/12/1999 - Creation (Ver. 1.0)#

VER=4.0-100812

make_save_cmd(){if [ -x /opt/networker/bin/save ]then SAVE_CMD=/opt/networker/bin/saveelif [ -x /usr/opt/networker/bin/save ]then SAVE_CMD=/usr/opt/networker/bin/saveelif [ -x /usr/sbin/save ]then SAVE_CMD=/usr/sbin/saveelif [ -x /bin/nsr/save ]then SAVE_CMD=/bin/nsr/save

Page 36: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

else SAVE_CMD=/usr/bin/savefi}

set_sqldba(){ SQLDBA="$ORACLE_HOME/bin/sqlplus /nolog"}

set_conn(){if [ -x $ORACLE_HOME/bin/svrmgrl ]then CONNDBA="connect internal/"else CONNDBA="connect / as sysdba"fi}

set_sysvar(){SYSVAR="SET SQLPROMPT 'SQL> 'SET FEEDBACK ON ECHO OFF VERIFY ON PAUSE OFF TIME OFF TIMING OFF TERMOUT ON SERVEROUTPUT ON SIZE 10000 LINES 200"}

handle_signal1(){ Error_time=`eval $getdate` echo "$DATAFILE:fail(signal1)" >> $NSR_SAVE_STATUS echo "($Error_time) (Pid:$$)$PSNAME $DATAFILE: received signal 1" >> $NSR_BACKUP_LOG}

handle_signal15(){ Error_time=`eval $getdate` echo "$DATAFILE:fail(signal15)" >> $NSR_SAVE_STATUS echo "($Error_time) (Pid:$$)$PSNAME $DATAFILE: received signal 15" >> $NSR_BACKUP_LOG}

oracle_error_handling(){grep 'ORA-' $DB_STATUS > /dev/nullif [ $? -eq 0 ]then Error_time=`eval $getdate` ORAMSG=`grep ORA- $DB_STATUS |awk -F "ORA-" '{print "ORA-"$2}'`

Page 37: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

echo "($Error_time) (Pid:$$)$PSNAME $DATAFILE: oracle failed $ORAMSG"

echo "$DATAFILE:fail(oracle)" >> $NSR_SAVE_STATUS

cp $DB_STATUS $DB_STATUS.err exit 1fi >> $NSR_BACKUP_LOG}

networker_error_handling(){if [ "$RETURN_STATUS" -ne "0" ]then Error_time=`eval $getdate` echo "($Error_time) (Pid:$$)$PSNAME $DATAFILE: save failed"

echo "$DATAFILE:fail(save)" >> $NSR_SAVE_STATUS

cp $RESULT_STATUS $RESULT_STATUS.networker.err exit 1fi >> $NSR_BACKUP_LOG}

# Main

PATH=/usr/xpg4/bin/:/bin:/usr/sbin:/usr/bin:/opt/networker/bin:/usr/networker/bin:/usr/opt/networker/bin:/bin/nsr

LANG=""trap handle_signal1 1trap handle_signal15 15

make_save_cmd

# General variables

PSNAME=`basename $0`RESULT_STATUS=$ON_BACKUP_TMP_HOME/.result_status_$PSNAME~.$$DB_STATUS=$ON_BACKUP_TMP_HOME/.samsung_db_status_$PSNAME~.$$getdate="date '+%Y/%m/%d %H:%M:%S'"

# Check argument

if [ $# -ne 1 ]then echo "usage: $PSNAME datafile" exit 1else DATAFILE=$1fi

Page 38: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

set_sysvarset_sqldbaset_conn

# Begin Backup

$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARexecute samsung_begin_backup('$DATAFILE');disconnectEOF

oracle_error_handling

grep ' Issuing' $DB_STATUS |sed 's/SQL> //g' >> $NSR_BACKUP_LOG

# Savesleep 2

Run_time=`eval $getdate`echo "($Run_time) Started save database file \"$DATAFILE\"" >> $NSR_BACKUP_LOG

$SAVE_CMD -v -s $NSR_SERVER \ -g $NSR_GROUP \ -f $NSR_DIRECTIVE \ -LL \ -m $Masquerad \ -l $Level \ -W $Output_width \ "$DATAFILE" 2> $RESULT_STATUS RETURN_STATUS=$?

networker_error_handling

SIZE=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-4)" "$(NF-3) }'` ELAPSED_TIME=`cat $RESULT_STATUS | grep files | awk '{ print $(NF-2) }'`

Run_time=`eval $getdate`echo "($Run_time) Finished save database file \"$DATAFILE\" ($SIZE, $ELAPSED_TIME)" >> $NSR_BACKUP_LOG

sleep 2# End Backup

$SQLDBA << EOF > $DB_STATUS$SYSVAR$CONNDBA$SYSVARexecute samsung_end_backup('$DATAFILE');disconnect

Page 39: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

EOF

oracle_error_handling

grep ' Issuing' $DB_STATUS |sed 's/SQL> //g' >> $NSR_BACKUP_LOG

echo "$DATAFILE:completed" >> $NSR_SAVE_STATUS

rm -f $RESULT_STATUS $DB_STATUS

# End

Page 40: Web view · 2013-03-311.chmod +x. 2.file copy . nsr home: nsr_onbackup.sh ... file_id,''Y'' min_file from dba_data_files group by ... {print $3}' |head -1` if [ -r $VOTEDISK ] then.

Filename : ONBACKUP_STOP.sh

#!/usr/bin/ksh## Title : ONBACKUP_STOP.sh ### MODIFIED# Taek 07/20/2007 - Creation (Ver. 4.0)#

VER=4.0-100812

LANG=""

# General variables

ON_BACKUP_HOME=/usr/BACKUP/oracle/ON-BACKUP

PSNAME=`/usr/bin/basename $0`

if [ $# -ne 1 ]then echo "usage: $PSNAME ORACLE_SID" exit 1else ORACLE_SID=$1fi

ON_BACKUP_LOG_HOME=$ON_BACKUP_HOME/log/$ORACLE_SIDON_BACKUP_TMP_HOME=$ON_BACKUP_HOME/tmp/$ORACLE_SID

echo "Stop" > $ON_BACKUP_TMP_HOME/.samsung_backup_flag