Chinaunix

标题: 发现NB7.1的一个BUG [打印本页]

作者: myguangzhou    时间: 2011-12-21 15:20
标题: 发现NB7.1的一个BUG
有个客户在测试NB7,当备份到WIN下面的ORACLE时发生比较诡异的现象:作业一运行就刷地完成了,作业detail没有任何报错,但却没有备份任何东西。OUT输出就只有几行,也没有错误;我让他把日志发给我,现在都没发给我。

于是自己在虚拟机上也测试了一把,结果比较好玩
我装完ORA之后,就修该了脚本的ORACLE_HOME\SID\CONNECT_STR等参数;尝试发起备份,也是没有任何错误,没有备份任何数据;OUT如下

==== started on 2011-12-21 星期三  13:24 ====
Script name: "e:\rman\hot_database_backup.cmd"
#                                       
  RMAN  :  E:\oracle\product\10.2.0\db_1\bin\rman.exe                       
  NLS_LANG  :  american               
  ORACLE_HOME  :  E:\oracle\product\10.2.0\db_1         
  ORACLE_SID  :  orcl           
  NLS_DATE_FORMAT  :  YYYY-MM-DD:hh24:mi:ss
  RMAN_LOG_FILE  :  "e:\rman\hot_database_backup.out"     
  NB_ORA_SERV  :  myhat                     
  NB_ORA_FULL  :  1                     
  NB_ORA_INCR  :  0                     
  NB_ORA_CINC  :  0                     

Recovery Manager: Release 10.2.0.4.0 - Production on Wed Dec 21 13:24:46 2011

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1298254140)
using target database control file instead of recovery catalog

RMAN>

Recovery Manager complete.
#   


从上面输出来看,Nbu只是RMAN TARGET了一下,没人执行任何备份脚本就退出了;很奇怪。
于是直接在客户端里RMAN备份,结果发现没有开启归档......不开归档,NBU也没觉察出来么?后来想想,因为没有执行备份脚本,因此ORA不会返回非归档模式无法备份的错误吧.....

于是开归档,手工执行RMAN是可以备份到SBT的;但是运行NBU作业返回正常,同样没执行备份;执行rman target / cmdfile错误,看样子应该是备份脚本没办法使用

于是到网上向别人要了个6.5的脚本,修改了home\sid\connect_str后就可以正常备份了......

对比了一下,NB7和NB6.5的脚本好像一样。。。看不出哪不同


作者: myguangzhou    时间: 2011-12-21 15:22
***************************************************
nb7.1脚本
***************************************************
@REM $Header: hot_database_backup.cmd,v 1.4 2010/08/04 17:55:57 $

@REM bcpyrght
@REM ***************************************************************************
@REM * $VRTScprght: Copyright 1993 - 2011 Symantec Corporation, All Rights Reserved $ *
@REM ***************************************************************************
@REM ecpyrght
@REM
@REM ---------------------------------------------------------------------------
@REM                          hot_database_backup.cmd
@REM ---------------------------------------------------------------------------
@REM This script uses Recovery Manager to take a hot (inconsistent) database
@REM backup. A hot backup is inconsistent because portions of the database are
@REM being modified and written to the disk while the backup is progressing.
@REM You must run your database in ARCHIVELOG mode to make hot backups.
@REM ---------------------------------------------------------------------------

@setlocal ENABLEEXTENSIONS

@REM ---------------------------------------------------------------------------
@REM No need to echo the commands.
@REM ---------------------------------------------------------------------------

@echo off

@REM ---------------------------------------------------------------------------
@REM Put output in the same filename, different extension.
@REM ---------------------------------------------------------------------------

@set RMAN_LOG_FILE="%~dpn0.out"

@REM ---------------------------------------------------------------------------
@REM You may want to delete the output file so that backup information does
@REM not accumulate.  If not, delete the following command.
@REM ---------------------------------------------------------------------------

@if exist %RMAN_LOG_FILE% del %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM Replace H:\oracle\ora102, below, with the Oracle home path.
@REM ---------------------------------------------------------------------------

@set ORACLE_HOME=E:\oracle\product\10.2.0

@REM ---------------------------------------------------------------------------
@REM Replace ora102, below, with the Oracle SID.
@REM ---------------------------------------------------------------------------

@set ORACLE_SID=orcl

@REM ---------------------------------------------------------------------------
@REM Replace sys/manager, below, with the target connect string.
@REM ---------------------------------------------------------------------------

@set TARGET_CONNECT_STR=/

@REM ---------------------------------------------------------------------------
@REM Set the Oracle Recovery Manager.
@REM ---------------------------------------------------------------------------

@set RMAN=%ORACLE_HOME%\bin\rman.exe

@REM ---------------------------------------------------------------------------
@REM Log the start of this script.
@REM ---------------------------------------------------------------------------

@for /F "tokens=1*" %%p in ('date /T') do @set DATE=%%p %%q
@for /F %%p in ('time /T') do @set DATE=%DATE% %%p

@echo ==== started on %DATE% ==== >> %RMAN_LOG_FILE%
@echo Script name: %0 >> %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM Several RMAN commands use time parameters that require NLS_LANG and
@REM NLS_DATE_FORMAT to be set. This example uses the standard date format.
@REM Replace below with the desired language values.
@REM ---------------------------------------------------------------------------

@set NLS_LANG=american
@set NLS_DATE_FORMAT=YYYY-MM-DD:hh24:mi:ss

@REM ---------------------------------------------------------------------------
@REM Print out environment variables set in this script.
@REM ---------------------------------------------------------------------------

@echo #                                       >> %RMAN_LOG_FILE%
@echo   RMAN  :  %RMAN%                       >> %RMAN_LOG_FILE%
@echo   NLS_LANG  :  %NLS_LANG%               >> %RMAN_LOG_FILE%
@echo   ORACLE_HOME  :  %ORACLE_HOME%         >> %RMAN_LOG_FILE%
@echo   ORACLE_SID  :  %ORACLE_SID%           >> %RMAN_LOG_FILE%
@echo   NLS_DATE_FORMAT  :  %NLS_DATE_FORMAT% >> %RMAN_LOG_FILE%
@echo   RMAN_LOG_FILE  :  %RMAN_LOG_FILE%     >> %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM Print out environment variables set in bphdb.
@REM ---------------------------------------------------------------------------

@echo   NB_ORA_SERV  :  %NB_ORA_SERV%                     >> %RMAN_LOG_FILE%
@echo   NB_ORA_FULL  :  %NB_ORA_FULL%                     >> %RMAN_LOG_FILE%
@echo   NB_ORA_INCR  :  %NB_ORA_INCR%                     >> %RMAN_LOG_FILE%
@echo   NB_ORA_CINC  :  %NB_ORA_CINC%                     >> %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM We assume that the database is properly opened. If desired, this would
@REM be the place to verify that.
@REM ---------------------------------------------------------------------------

@REM ---------------------------------------------------------------------------
@REM If this script is executed from a NetBackup schedule, NetBackup
@REM sets an NB_ORA environment variable based on the schedule type.
@REM For example, when:
@REM     schedule type is                BACKUP_TYPE is
@REM     ----------------                --------------
@REM Automatic Full                      INCREMENTAL LEVEL=0
@REM Automatic Differential Incremental  INCREMENTAL LEVEL=1
@REM Automatic Cumulative Incremental    INCREMENTAL LEVEL=1 CUMULATIVE
@REM
@REM For user initiated backups, BACKUP_TYPE defaults to incremental
@REM level 0 (Full).  To change the default for a user initiated
@REM backup to incremental or incrementatl cumulative, uncomment
@REM one of the following two lines.
@REM @set BACKUP_TYPE="INCREMENTAL LEVEL=1"
@REM @set BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"
@REM
@REM Note that we use incremental level 0 to specify full backups.
@REM That is because, although they are identical in content, only
@REM the incremental level 0 backup can have incremental backups of
@REM level > 0 applied to it.
@REM ---------------------------------------------------------------------------

@REM ---------------------------------------------------------------------------
@REM What kind of backup will we perform.
@REM ---------------------------------------------------------------------------

@if "%NB_ORA_FULL%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=0
@if "%NB_ORA_INCR%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=1
@if "%NB_ORA_CINC%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=1 CUMULATIVE
@if NOT DEFINED BACKUP_TYPE @set BACKUP_TYPE=INCREMENTAL Level=0

@REM ---------------------------------------------------------------------------
@REM Call Recovery Manager to initiate the backup. This example does not use a
@REM Recovery Catalog. If you choose to use one, remove the option, nocatalog,
@REM from the rman command line below and add a
@REM 'catalog <userid>/<passwd>@<net service name>' statement.
@REM
@REM  NOTE WHEN USING NET SERVICE NAME: When connecting to a database
@REM  using a net service name, you must use a send command or a parms operand to
@REM  specify environment variables.  In other words, when accessing a database
@REM  through a listener, the environment variables set at the system level are not
@REM  visible when RMAN is running.  For more information on the environment
@REM  variables, please refer to the NetBackup for Oracle Admin. Guide.
@REM
@REM If you are getting an error that the input line is too long, you will need
@REM to put the RMAN run block in a separate file.  Then use the "cmdfile"
@REM option of RMAN.  For more information on the "cmdfile" options please
@REM refer to the RMAN documentation.
@REM ---------------------------------------------------------------------------

@(
echo RUN {
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
echo BACKUP
echo       %BACKUP_TYPE%
echo       FORMAT 'bk_u%%u_s%%s_p%%p_t%%t'
echo       DATABASE;
echo sql 'alter system archive log current';
echo RELEASE CHANNEL ch00;
echo RELEASE CHANNEL ch01;
echo # Backup all archive logs
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo BACKUP
echo       FILESPERSET 20
echo       FORMAT 'arch-s%%s-p%%p-t%%t'
echo       ARCHIVELOG ALL;
echo RELEASE CHANNEL ch00;
@REM ----------------------------------------------------------------------------
@REM Note: During the process of backing up the database, RMAN also backs up the
@REM control file.  This version of the control file does not contain the
@REM information about the current backup because "nocatalog" has been specified.
@REM To include the information about the current backup, the control file should
@REM be backed up as the last step of the RMAN section.  This step would not be
@REM necessary if we were using a recovery catalog or auto control file backups.
@REM ----------------------------------------------------------------------------
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo BACKUP
@REM recommended format
echo       FORMAT 'cntrl_%s_%p_%t'
echo       CURRENT CONTROLFILE;
echo RELEASE CHANNEL ch00;
echo }
) | %RMAN% target %TARGET_CONNECT_STR% nocatalog msglog '%RMAN_LOG_FILE%' append

@set ERRLEVEL=%ERRORLEVEL%

@REM ---------------------------------------------------------------------------
@REM NetBackup (bphdb) stores the name of a file in an environment variable,
@REM called STATUS_FILE. This file is used by an automatic schedule to
@REM communicate status information with NetBackup's job monitor. It is up to
@REM the script to write a 0 (passed) or 1 (failure) to the status file.
@REM ---------------------------------------------------------------------------

@if %ERRLEVEL% NEQ 0 @goto err

@set LOGMSG=ended successfully
@if "%STATUS_FILE%" EQU "" goto end
@echo 0 > "%STATUS_FILE%"
@goto end

:err
@set LOGMSG=ended in error
@if "%STATUS_FILE%" EQU "" @goto end
@echo 1 > "%STATUS_FILE%"

:end

@REM ---------------------------------------------------------------------------
@REM Log the completion of this script.
@REM ---------------------------------------------------------------------------

@for /F "tokens=1*" %%p in ('date /T') do @set DATE=%%p %%q
@for /F %%p in ('time /T') do @set DATE=%DATE% %%p

@echo #  >> %RMAN_LOG_FILE%
@echo %==== %LOGMSG% on %DATE% ==== >> %RMAN_LOG_FILE%
@endlocal
@REM End of Main Program -----------------------------------------------------





作者: myguangzhou    时间: 2011-12-21 15:25
***************************************
6.x脚本
***************************************
@REM $Header: hot_database_backup.cmd,v 1.3 2005/11/28 19:01:53 $

@REM bcpyrght
@REM ***************************************************************************
@REM * $VRTScprght: Copyright 1993 - 2007 Symantec Corporation, All Rights Reserved $ *
@REM ***************************************************************************
@REM ecpyrght
@REM
@REM ---------------------------------------------------------------------------
@REM                          hot_database_backup.cmd
@REM ---------------------------------------------------------------------------
@REM This script uses Recovery Manager to take a hot (inconsistent) database
@REM backup. A hot backup is inconsistent because portions of the database are
@REM being modified and written to the disk while the backup is progressing.
@REM You must run your database in ARCHIVELOG mode to make hot backups.
@REM
@REM NOTE information for running proxy backups has been included.  These
@REM information sections begin with a comment line of PROXY
@REM ---------------------------------------------------------------------------

@setlocal ENABLEEXTENSIONS

@REM ---------------------------------------------------------------------------
@REM No need to echo the commands.
@REM ---------------------------------------------------------------------------

@echo off

@REM ---------------------------------------------------------------------------
@REM Put output in the same filename, different extension.
@REM ---------------------------------------------------------------------------

@set RMAN_LOG_FILE="%~dpn0.out"

@REM ---------------------------------------------------------------------------
@REM You may want to delete the output file so that backup information does
@REM not accumulate.  If not, delete the following command.
@REM ---------------------------------------------------------------------------

@if exist %RMAN_LOG_FILE% del %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM Replace H:\oracle\ora81, below, with the Oracle home path.
@REM ---------------------------------------------------------------------------

@set ORACLE_HOME=d:\orant

@REM ---------------------------------------------------------------------------
@REM Replace ora81, below, with the Oracle SID.
@REM ---------------------------------------------------------------------------

@set ORACLE_SID=orcl

@REM ---------------------------------------------------------------------------
@REM Replace sys/manager, below, with the target connect string.
@REM ---------------------------------------------------------------------------

@set TARGET_CONNECT_STR=/

@REM ---------------------------------------------------------------------------
@REM Set the Oracle Recovery Manager.
@REM ---------------------------------------------------------------------------

@set RMAN=%ORACLE_HOME%\bin\rman.exe

@REM ---------------------------------------------------------------------------
@REM PROXY
@REM For a PROXY backup, uncomment the line below and replace the value.
@REM
@REM       NB_ORA_PC_STREAMS - specifies the number of parallel backup streams
@REM                           to be started.
@REM ---------------------------------------------------------------------------
@REM @set NB_ORA_PC_STREAMS=3


@REM ---------------------------------------------------------------------------
@REM Log the start of this scripts.
@REM ---------------------------------------------------------------------------

@for /F "tokens=1*" %%p in ('date /T') do @set DATE=%%p %%q
@for /F %%p in ('time /T') do @set DATE=%DATE% %%p

@echo ==== started on %DATE% ==== >> %RMAN_LOG_FILE%
@echo Script name: %0 >> %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM Several RMAN commands use time parameters that require NLS_LANG and
@REM NLS_DATE_FORMAT to be set. This example uses the standard date format.
@REM Replace below with the desired language values.
@REM ---------------------------------------------------------------------------

@set NLS_LANG=american
@set NLS_DATE_FORMAT=YYYY-MM-DD:hh24:mi:ss

@REM ---------------------------------------------------------------------------
@REM Print out environment variables set in this script.
@REM ---------------------------------------------------------------------------

@echo #                                       >> %RMAN_LOG_FILE%
@echo   RMAN  :  %RMAN%                       >> %RMAN_LOG_FILE%
@echo   NLS_LANG  :  %NLS_LANG%               >> %RMAN_LOG_FILE%
@echo   ORACLE_HOME  :  %ORACLE_HOME%         >> %RMAN_LOG_FILE%
@echo   ORACLE_SID  :  %ORACLE_SID%           >> %RMAN_LOG_FILE%
@echo   NLS_DATE_FORMAT  :  %NLS_DATE_FORMAT% >> %RMAN_LOG_FILE%
@echo   RMAN_LOG_FILE  :  %RMAN_LOG_FILE%     >> %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM PROXY
@REM For a PROXY backup, uncomment the line below.
@REM ---------------------------------------------------------------------------
@REM @echo   NB_ORA_PC_STREAMS  :  %NB_ORA_PC_STREAMS%     >> %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM Print out environment variables set in bphdb.
@REM ---------------------------------------------------------------------------

@echo   NB_ORA_SERV  :  %NB_ORA_SERV%                     >> %RMAN_LOG_FILE%
@echo   NB_ORA_FULL  :  %NB_ORA_FULL%                     >> %RMAN_LOG_FILE%
@echo   NB_ORA_INCR  :  %NB_ORA_INCR%                     >> %RMAN_LOG_FILE%
@echo   NB_ORA_CINC  :  %NB_ORA_CINC%                     >> %RMAN_LOG_FILE%
@echo   NB_ORA_CLASS  :  %NB_ORA_CLASS%                   >> %RMAN_LOG_FILE%

@REM ---------------------------------------------------------------------------
@REM We assume that the database is properly opened. If desired, this would
@REM be the place to verify that.
@REM ---------------------------------------------------------------------------

@REM ---------------------------------------------------------------------------
@REM If this script is executed from a NetBackup schedule, NetBackup
@REM sets an NB_ORA environment variable based on the schedule type.
@REM For example, when:
@REM     schedule type is                BACKUP_TYPE is
@REM     ----------------                --------------
@REM Automatic Full                      INCREMENTAL LEVEL=0
@REM Automatic Differential Incremental  INCREMENTAL LEVEL=1
@REM Automatic Cumulative Incremental    INCREMENTAL LEVEL=1 CUMULATIVE
@REM
@REM For user initiated backups, BACKUP_TYPE defaults to incremental
@REM level 0 (Full).  To change the default for a user initiated
@REM backup to incremental or incrementatl cumulative, uncomment
@REM one of the following two lines.
@REM @set BACKUP_TYPE="INCREMENTAL LEVEL=1"
@REM @set BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"
@REM
@REM Note that we use incremental level 0 to specify full backups.
@REM That is because, although they are identical in content, only
@REM the incremental level 0 backup can have incremental backups of
@REM level > 0 applied to it.
@REM ---------------------------------------------------------------------------

@REM ---------------------------------------------------------------------------
@REM What kind of backup will we perform.
@REM ---------------------------------------------------------------------------

@if "%NB_ORA_FULL%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=0
@if "%NB_ORA_INCR%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=1
@if "%NB_ORA_CINC%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=1 CUMULATIVE
@if NOT DEFINED BACKUP_TYPE @set BACKUP_TYPE=INCREMENTAL Level=0

@REM ---------------------------------------------------------------------------
@REM Call Recovery Manager to initiate the backup. This example does not use a
@REM Recovery Catalog. If you choose to use one, remove the option, nocatalog,
@REM from the rman command line below and add a
@REM 'rcvcat <userid>/<passwd>@<tns alias>' statement.
@REM
@REM  NOTE WHEN USING TNS ALIAS: When connecting to a database
@REM  using a TNS alias, you must use a send command or a parms operand to
@REM  specify environment variables.  In other words, when accessing a database
@REM  through a listener, the environment variables set at the system level are not
@REM  visible when RMAN is running.  For more information on the environment
@REM  variables, please refer to the NetBackup for Oracle Admin. Guide.
@REM
@REM If you are getting an error that the input line is too long, you will need
@REM to put the RMAN run block in a separate file.  Then use the "cmdfile"
@REM option of RMAN.  For more information on the "cmdfile" options please
@REM refer to the RMAN documentation.
@REM ---------------------------------------------------------------------------

@REM ---------------------------------------------------------------------------
@REM PROXY
@REM For a PROXY backup, you must use a send command to specify
@REM the NB_ORA_PC_STREAMS environment variable. For example,
@REM echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
@REM echo SEND 'NB_ORA_PC_STREAMS=%%NB_ORA_PC_STREAMS%%';
@REM
@REM %BACKUP_TYPE% must also be removed and replaced with the PROXY parameter
@REM in the RMAN section associated with the data files.  For example,
@REM echo BACKUP
@REM echo       PROXY
@REM echo       FORMAT 'bk_u%%u_s%%s_p%%p_t%%t'
@REM echo       DATABASE;
@REM            .
@REM            .
@REM  Note that the controlfiles and archivelogs are not backed up using proxy
@REM  copy method. Rman will initiate non-proxy copy sessions to backup the
@REM  controlfile and archivelogs.
@REM ---------------------------------------------------------------------------
@(
echo RUN {
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
echo BACKUP
echo       %BACKUP_TYPE%
echo       FORMAT 'bk_u%%u_s%%s_p%%p_t%%t'
echo       DATABASE;
echo sql 'alter system archive log current';
echo RELEASE CHANNEL ch00;
echo RELEASE CHANNEL ch01;
echo # Backup all archive logs
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo BACKUP
echo       FILESPERSET 20
echo       FORMAT 'arch-s%%s-p%%p'
echo       ARCHIVELOG ALL DELETE INPUT;
echo RELEASE CHANNEL ch00;

echo # Control file backup

echo ALLOCATE CHANNEL ch00
echo     TYPE 'SBT_TAPE';
echo BACKUP
echo     FORMAT 'ctrl_u%%u_s%%s_p%%p_t%%t'
echo     CURRENT CONTROLFILE;
echo RELEASE CHANNEL ch00;
echo }
) | %RMAN% target %TARGET_CONNECT_STR% nocatalog msglog '%RMAN_LOG_FILE%' append

@set ERRLEVEL=%ERRORLEVEL%

@REM ---------------------------------------------------------------------------
@REM NetBackup (bphdb) stores the name of a file in an environment variable,
@REM called STATUS_FILE. This file is used by an automatic schedule to
@REM communicate status information with NetBackup's job monitor. It is up to
@REM the script to write a 0 (passed) or 1 (failure) to the status file.
@REM ---------------------------------------------------------------------------

@if %ERRLEVEL% NEQ 0 @goto err

@set LOGMSG=ended successfully
@if "%STATUS_FILE%" EQU "" goto end
@echo 0 > "%STATUS_FILE%"
@goto end

:err
@set LOGMSG=ended in error
@if "%STATUS_FILE%" EQU "" @goto end
@echo 1 > "%STATUS_FILE%"

:end

@REM ---------------------------------------------------------------------------
@REM Log the completion of this script.
@REM ---------------------------------------------------------------------------

@for /F "tokens=1*" %%p in ('date /T') do @set DATE=%%p %%q
@for /F %%p in ('time /T') do @set DATE=%DATE% %%p

@echo #  >> %RMAN_LOG_FILE%
@echo %==== %LOGMSG% on %DATE% ==== >> %RMAN_LOG_FILE%
@endlocal
@REM End of Main Program -----------------------------------------------------



作者: myguangzhou    时间: 2011-12-21 15:26
有神码不同吗?
眼力好的帮忙看看
作者: rtm009    时间: 2011-12-21 20:49
类似的问题一个是细节不一样 多去看文档 别想当然 一个就是去下载最新的sp包
作者: myguangzhou    时间: 2011-12-21 21:59
两个不同的环境都出现同样的问题呢
作者: wolfheader    时间: 2011-12-22 00:03
这里有在五道口做测试的么?赶紧出来啊,哈哈
作者: 无牙    时间: 2011-12-22 08:03
oracle_home不一样
作者: 无牙    时间: 2011-12-22 08:04
用个对比文件的工具不就行了?
作者: pingfan2    时间: 2011-12-22 12:46
无牙 发表于 2011-12-22 08:04
用个对比文件的工具不就行了?

fc命令,所有不同之处都会列出
作者: yoyosys    时间: 2011-12-22 15:36
先把最新的补丁打咯,然后再来判断,别盲目下结论
作者: myguangzhou    时间: 2011-12-22 16:13
无牙 发表于 2011-12-22 08:03
oracle_home不一样

ORA HOME当然不一样了,那是两个不同的脚本

但是备份出错显然跟HOME没关系的。
作者: myguangzhou    时间: 2011-12-22 16:14
如果要打补丁才能修正这个问题,这不正说明了是个BUG吗?

作者: myguangzhou    时间: 2011-12-22 16:18
rtm009 发表于 2011-12-21 20:49
类似的问题一个是细节不一样 多去看文档 别想当然 一个就是去下载最新的sp包

如果真要打SP包把这个问题修复了,那就是说这是个BUG了
我这个推测没问题吧
作者: myguangzhou    时间: 2011-12-22 16:22
之前在LEGATO7.X上也试过类似的问题
作者: C字裤男爵    时间: 2011-12-22 16:26
myguangzhou 发表于 2011-12-22 16:22
之前在LEGATO7.X上也试过类似的问题

这个估计是windows的问题?

不识别管道符“|”


作者: myguangzhou    时间: 2011-12-22 17:06
C字裤男爵 发表于 2011-12-22 16:26
这个估计是windows的问题?

不识别管道符“|”

LEGATO那次很搞笑,编辑完脚本之后保存就全都乱了
后来用其他版本带的脚本就好了
作者: C字裤男爵    时间: 2011-12-22 17:26
不能断定是NBU的bug,如果单纯是脚本问题的话这只是脚本的问题,而不是NBU软件的bug。

你这个问题我见过几次,是有的windows命令行解释程序不能解释管道符“|”导致的。
也就是
“) | %RMAN% target %TARGET_CONNECT_STR% nocatalog msglog '%RMAN_LOG_FILE%' append”
这一行。

如果想更深入的了解,收一下dbclient和bphdb的日志。
作者: myguangzhou    时间: 2011-12-22 22:00
C字裤男爵 发表于 2011-12-22 17:26
不能断定是NBU的bug,如果单纯是脚本问题的话这只是脚本的问题,而不是NBU软件的bug。

你这个问题我见过 ...

看out输出,是执行了rman target的,只是RUN的脚本没执行
作者: 无牙    时间: 2011-12-22 23:35
C字裤男爵 发表于 2011-12-22 17:26
不能断定是NBU的bug,如果单纯是脚本问题的话这只是脚本的问题,而不是NBU软件的bug。

你这个问题我见过 ...

看dbclient和bphdb的日志是标准的做法。
作者: C字裤男爵    时间: 2011-12-23 09:07
那是因为“|”没有把backup的脚本送进rman target,所以没有执行。

因为你现在的信息不完全,所以没有办法判断。

我怀疑bphdb log内有status = 29报错。
作者: 衍水狂客    时间: 2011-12-24 22:26
wolfheader 发表于 2011-12-22 00:03
这里有在五道口做测试的么?赶紧出来啊,哈哈

那地方是800。。。
作者: lfmy    时间: 2011-12-27 17:43
回复 21# C字裤男爵

要是管道符的问题,可以看看这个文档:
http://www.symantec.com/business ... 20&locale=zh_CN

Problem



NetBackup 客户端为Windows 2003,配置Oracle数据库备份策略运行后报29号错误,在RMAN命令行下直接执行备份命令则能够备份成功。



Error




bphdb log:

16:29:10.046 [1748.5904] <16> bphdb do_script: ERR - failed executing command <"C:\Program Files\VERITAS\NetBackup\DbExt\Oracle\Samples\hot_database_backup1.cmd">
16:29:10.046 [1748.5904] <16> bphdb do_script: ERR - exit status: <-1>
16:29:10.046 [1748.5904] <16> bphdb main: ERR - Error code: 29
16:29:10.046 [1748.5904] <16> bphdb Exit: ERR - bphdb exit status = 29: failed trying to exec a command
  



Environment




主服务器(Master server):Windows 2003/Netbackup 7.0

备份客户端 (Client):Windows 2003/Netbackup 7.0

数据库(Database) :Oracle Database 10.2.0 RAC
  



Cause



如下文所示,NetBackup 中提供的Oracle备份脚本使用管道符来发送备份命令:

@(
echo RUN {
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
echo BACKUP
echo       %BACKUP_TYPE%
echo       FORMAT 'bk_u%%u_s%%s_p%%p_t%%t'
echo       DATABASE;
echo sql 'alter system archive log current';
echo RELEASE CHANNEL ch00;
echo RELEASE CHANNEL ch01;
echo # Backup all archive logs
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo BACKUP
echo       FILESPERSET 20
echo       FORMAT 'arch-s%%s-p%%p'
echo       ARCHIVELOG ALL;
echo RELEASE CHANNEL ch00;
echo }
) | %RMAN% target %TARGET_CONNECT_STR% nocatalog msglog '%RMAN_LOG_FILE%' append

由于某些版本的Windows 2003的命令行解释程序(Shell)不能正常解释管道符“|”,以致备份脚本执行过程中不能正常调用RMAN来执行Oracle的备份脚本内容从而导致备份失败。
  



Solution



将脚本中生成的RMAN脚本内容输出到一个临时文件,随后在脚本中再次调用这个临时文件。

修改样例:

@(
echo RUN {
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
echo SEND 'NB_ORA_SERV=veritas-server,NB_ORA_CLIENT=dg1';
echo BACKUP
echo       %BACKUP_TYPE%
echo       FORMAT 'bk_u%%u_s%%s_p%%p_t%%t'
echo       DATABASE;
echo sql 'alter system archive log current';
echo RELEASE CHANNEL ch00;
echo RELEASE CHANNEL ch01;
echo # Backup all archive logs
echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' CONNECT 'sys/manager@WFTP1';
echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' CONNECT 'sys/manager@WFTP2';
echo BACKUP
echo       FILESPERSET 20
echo       FORMAT 'arch-s%%s-p%%p'
echo       ARCHIVELOG ALL;
echo RELEASE CHANNEL ch00;
echo RELEASE CHANNEL ch01;
echo }
) > c:\rman_cmd.txt
@%RMAN% target %TARGET_CONNECT_STR% nocatalog msglog '%RMAN_LOG_FILE%' append < c:\rman_cmd.txt
  




   
作者: saintdragon    时间: 2011-12-27 21:19
有bug很正常
作者: myguangzhou    时间: 2011-12-28 09:43
楼上有两位同学可能没注意到
我执行7.1的备份脚本时,是没有任何ERROR的,只是没有备份任何东西而已;换成6.X的脚本就OK了
另外不要纠结ORA HOME等参数,那些都弄对了的
作者: 无牙    时间: 2011-12-28 10:10
我在虚机里测试了一下,没有遇到LZ的问题。 测试的环境中只有Oracle的版本和LZ的不同。备份脚本的版本都是1.4。所以建议LZ从别人哪再拷贝一个脚本试一试,应该不是bug。判断是否为bug的首要条件是能重现。

测试环境:
master server: Suse 11, NBU7.1
media server: win2003, oracle 9.2.0.8 ,NBU7.1


作者: myguangzhou    时间: 2011-12-28 10:49
回复 26# 无牙


    回无牙
碰到这个问题是我们一个使用NBU5220的用户,NBU版本应该是7.1 06吧;而我在虚拟机上装的也是7.1,但是小版本应该不一致;但是问题却是一样
后来从群里向别人要了一个其他版本的备份脚本,修改了下参数就能备份成功了。


作者: myguangzhou    时间: 2011-12-28 10:50
刚才看了下,7.X用的是V1.4脚本,6.X用的是1.3
我用1.3的OK,1.4不行
作者: myguangzhou    时间: 2011-12-28 10:51
ORA是10GR2
MASTER分别是SUSE10(NBU5220的操作系统)和REDHAT5.5
作者: 无牙    时间: 2011-12-28 12:32
本帖最后由 无牙 于 2011-12-28 13:03 编辑
myguangzhou 发表于 2011-12-28 10:49
回复 26# 无牙


5220, 里面用的模板还是1.4。和NBU7.1GA用的是一样的。

5220中的NBU的版本如果是7.1.0.6不等于普通版NBU的7.1.0.6.

5220最新的版本是2.0.1,等同于标准版的7.1.0.2。

况且客户端的用的脚本不是来自master server的,是你安装的时候自带的。



作者: 无牙    时间: 2011-12-28 12:34
5220现在都有用户了?太神速了
作者: myguangzhou    时间: 2011-12-28 17:43
无牙 发表于 2011-12-28 12:32
5220, 里面用的模板还是1.4。和NBU7.1GA用的是一样的。

5220中的NBU的版本如果是7.1.0.6不等于普通 ...


安装脚本可以自己塞光盘装,也可以在N5220上DOWN压缩包然后再安装

效果都一样的


作者: 无牙    时间: 2011-12-28 22:50
myguangzhou 发表于 2011-12-28 17:43
安装脚本可以自己塞光盘装,也可以在N5220上DOWN压缩包然后再安装

效果都一样的


问题就出在这!
作者: C字裤男爵    时间: 2011-12-29 08:56
楼主不用纠结了。把你的bphdb和dbclient日志粘上来。
我也想知道这是不是NBU的bug?
作者: mophis    时间: 2011-12-29 15:39
呵呵,好久没搞NBU啦,看看!
作者: myguangzhou    时间: 2011-12-29 15:46
C字裤男爵 发表于 2011-12-29 08:56
楼主不用纠结了。把你的bphdb和dbclient日志粘上来。
我也想知道这是不是NBU的bug?


印象中这两个日志是没打开的吧

改天有空试试看
作者: hp106    时间: 2012-01-01 14:55
别一上来就是bug,应该不会有这么低级的问题吧。
我觉的还是好好检查下你的脚本吧。:wink:
作者: myguangzhou    时间: 2012-01-05 20:51
回复 37# hp106


    是我的表达能力有问题还是你的理解能力有问题呢
作者: huanglao2002    时间: 2012-01-31 22:42
本帖最后由 huanglao2002 于 2012-01-31 22:44 编辑

应该是nbu7.x 脚本的问题。
你可以尝试把rman run 开始脚本里面的以下注释删除。
我想rman 是不识别这些注释的。rman 应该只把#开头的当注释。
@REM ----------------------------------------------------------------------------
@REM Note: During the process of backing up the database, RMAN also backs up the
@REM control file.  This version of the control file does not contain the
@REM information about the current backup because "nocatalog" has been specified.
@REM To include the information about the current backup, the control file should
@REM be backed up as the last step of the RMAN section.  This step would not be
@REM necessary if we were using a recovery catalog or auto control file backups.
@REM ----------------------------------------------------------------------------

@REM recommended format
作者: 撒旦的使者    时间: 2012-02-03 10:32
纯技术贴.收藏了.
作者: 无牙    时间: 2012-02-03 12:06
啊,这也收藏
作者: yihe_zang    时间: 2012-10-14 17:13
回复 41# 无牙


    我现在的环境NBU7.5 for windows+Oracle 11g r2+windows server 2008r2上也同样出现,用的是NBU7.5提供的备份脚本!
作者: yihe_zang    时间: 2012-10-14 22:36
回复 1# myguangzhou


    前辈有没有试过用NBU7.x for Oracle的模版配置向导来备份Oracle呢?
作者: myguangzhou    时间: 2012-10-15 09:31
回复 43# yihe_zang


    no.后来直接用6.X的脚本
作者: tz104    时间: 2012-10-22 14:51
嗯,也碰到这问题。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2