5、Oracle备份

1.1 Oracle数据库备份

1.1.1 链接Oracle介质管理库


请在数据库节点上操作。

[[email protected]/usr/openv/netbackup/bin]$ ./oracle_link

Thu Jul  9 14:35:44 CST 2015

All Oracle instances should be shutdown before running this script.

Please log into the Unix system as the Oracle owner for running this script

Do you want to continue? (y/n) [n] y

LIBOBK path: /usr/openv/netbackup/bin

ORACLE_HOME: /oracle/product/11.2.0/db11g

Oracle version: 11.2.0.4.0

Platform type: x86_64

Linking LIBOBK:

ln -s /usr/openv/netbackup/bin/libobk.so64 /oracle/product/11.2.0/db11g/lib/libobk.so

Done

Please check the trace file located in /tmp/make_trace.36923

to make sure the linking process was successful.

[[email protected]/usr/openv/netbackup/bin]$

1.1.2 数据库信息确认


节点1

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            +FLASH_DG

Oldest online log sequence     28963

Next log sequence to archive   28966

Current log sequence           28966

SQL>

节点2

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            +FLASH_DG

Oldest online log sequence     28963

Next log sequence to archive   28966

Current log sequence           28966

SQL>

有以上信息可知,数据库归档文件放置在ASM共享存储上,故,后续归档文件备份策略仅需要在1个节点上配置。

1.1.3 确定备份策略名称


数据文件备份策略名称


oracle_db01_full


归档文件备份策略名称


oracle_db01_arch


控制文件备份策略名称


控制文件跟随数据文件和归档文件备份,不单独备份。

1.1.4 备份脚本配置

创建脚本目录,并拷贝模板脚本到目录下


[[email protected]/usr/openv]$ mkdir scripts

[[email protected]/usr/openv/netbackup/ext/db_ext/oracle/samples/rman]$ cp hot_database_backup.sh /usr/openv/scripts/

[[email protected]/usr/openv/scripts]$  cp hot_database_backup.sh  arch.sh

数据文件备份脚本:hot_database_backup.sh

归档文件备份脚本:arch.sh

获取oracle环境变量


[[email protected]/home/oracle]$ env |grep -i sid

ORACLE_SID= test1

[[email protected]/home/oracle]$ env |grep -i oracle_home

ORACLE_HOME=/oracle/product/11.2.0/db11g

[[email protected]/home/oracle]$

1.1.5 修改hot_database_backup.sh脚本


[[email protected] /usr/openv/scripts]$ cat hot_database_backup.sh

#!/bin/sh

# $Header: hot_database_backup.sh,v 1.3 2010/08/04 17:56:02 $

#

#bcpyrght

#***************************************************************************

#* $VRTScprght: Copyright 2014 Symantec Corporation, All Rights Reserved SY39-6648-5573-26-15-5  $ *

#***************************************************************************

#ecpyrght

#

# ---------------------------------------------------------------------------

#                       hot_database_backup.sh

# ---------------------------------------------------------------------------

#  This script uses Recovery Manager to take a hot (inconsistent) database

#  backup. A hot backup is inconsistent because portions of the database are

#  being modified and written to the disk while the backup is progressing.

#  You must run your database in ARCHIVELOG mode to make hot backups. It is

#  assumed that this script will be executed by user root. In order for RMAN

#  to work properly we switch user (su -) to the oracle dba account before

#  execution. If this script runs under a user account that has Oracle dba

#  privilege, it will be executed using this user‘s account.

# ---------------------------------------------------------------------------

# ---------------------------------------------------------------------------

# Determine the user which is executing this script.

# ---------------------------------------------------------------------------

CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`

# ---------------------------------------------------------------------------

# Put output in <this file name>.out. Change as desired.

# Note: output directory requires write permission.

# ---------------------------------------------------------------------------

RMAN_LOG_FILE=${0}.out

# ---------------------------------------------------------------------------

# You may want to delete the output file so that backup information does

# not accumulate.  If not, delete the following lines.

# ---------------------------------------------------------------------------

if [ -f "$RMAN_LOG_FILE" ]

then

rm -f "$RMAN_LOG_FILE"

fi

# -----------------------------------------------------------------

# Initialize the log file.

# -----------------------------------------------------------------

echo >> $RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Log the start of this script.

# ---------------------------------------------------------------------------

echo Script $0 >> $RMAN_LOG_FILE

echo ==== started on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Replace /db/oracle/product/ora102, below, with the Oracle home path.

# ---------------------------------------------------------------------------

ORACLE_HOME=/oracle/product/11.2.0/db11g

export ORACLE_HOME

# ---------------------------------------------------------------------------

# Replace ora102, below, with the Oracle SID of the target database.

# ---------------------------------------------------------------------------

ORACLE_SID=test1

export ORACLE_SID

# ---------------------------------------------------------------------------

# Replace ora102, below, with the Oracle DBA user id (account).

# ---------------------------------------------------------------------------

ORACLE_USER=oracle

# ---------------------------------------------------------------------------

# Set the target connect string.

# Replace "sys/manager", below, with the target connect string.

# ---------------------------------------------------------------------------

TARGET_CONNECT_STR=sys/manager

# ---------------------------------------------------------------------------

# Set the Oracle Recovery Manager name.

# ---------------------------------------------------------------------------

RMAN=$ORACLE_HOME/bin/rman

# ---------------------------------------------------------------------------

# Print out the value of the variables set by this script.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

echo   "RMAN: $RMAN" >> $RMAN_LOG_FILE

echo   "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE

echo   "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE

echo   "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Print out the value of the variables set by bphdb.

# ---------------------------------------------------------------------------

echo  >> $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_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE

echo   "NB_ORA_POLICY: $NB_ORA_POLICY" >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# NOTE: This script assumes that the database is properly opened. If desired,

# this would be the place to verify that.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# If this script is executed from a NetBackup schedule, NetBackup

# sets an NB_ORA environment variable based on the schedule type.

# The NB_ORA variable is then used to dynamically set BACKUP_TYPE

# For example, when:

#     schedule type is                BACKUP_TYPE is

#     ----------------                --------------

# Automatic Full                     INCREMENTAL LEVEL=0

# Automatic Differential Incremental INCREMENTAL LEVEL=1

# Automatic Cumulative Incremental   INCREMENTAL LEVEL=1 CUMULATIVE

#

# For user initiated backups, BACKUP_TYPE defaults to incremental

# level 0 (full).  To change the default for a user initiated

# backup to incremental or incremental cumulative, uncomment

# one of the following two lines.

# BACKUP_TYPE="INCREMENTAL LEVEL=1"

# BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"

#

# Note that we use incremental level 0 to specify full backups.

# That is because, although they are identical in content, only

# the incremental level 0 backup can have incremental backups of

# level > 0 applied to it.

# ---------------------------------------------------------------------------

if [ "$NB_ORA_FULL" = "1" ]

then

echo "Full backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=0"

elif [ "$NB_ORA_INCR" = "1" ]

then

echo "Differential incremental backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=1"

elif [ "$NB_ORA_CINC" = "1" ]

then

echo "Cumulative incremental backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"

elif [ "$BACKUP_TYPE" = "" ]

then

echo "Default - Full backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=0"

fi

# ---------------------------------------------------------------------------

# Call Recovery Manager to initiate the backup. This example does not use a

# Recovery Catalog. If you choose to use one, replace the option ‘nocatalog‘

# from the rman command line below with the

# ‘catalog <userid>/<passwd>@<net service name>‘ statement.

#

# Note: Any environment variables needed at run time by RMAN

#       must be set and exported within the switch user (su) command.

# ---------------------------------------------------------------------------

#  Backs up the whole database.  This backup is part of the incremental

#  strategy (this means it can have incremental backups of levels > 0

#  applied to it).

#

#  We do not need to explicitly request the control file to be included

#  in this backup, as it is automatically included each time file 1 of

#  the system tablespace is backed up (the inference: as it is a whole

#  database backup, file 1 of the system tablespace will be backed up,

#  hence the controlfile will also be included automatically).

#

#  Typically, a level 0 backup would be done at least once a week.

#

#  The scenario assumes:

#     o you are backing your database up to two tape drives

#     o you want each backup set to include a maximum of 5 files

#     o you wish to include offline datafiles, and read-only tablespaces,

#       in the backup

#     o you want the backup to continue if any files are inaccessible.

#     o you are not using a Recovery Catalog

#     o you are explicitly backing up the control file.  Since you are

#       specifying nocatalog, the controlfile backup that occurs

#       automatically as the result of backing up the system file is

#       not sufficient; it will not contain records for the backup that

#       is currently in progress.

#     o you want to archive the current log, back up all the

#       archive logs using two channels, putting a maximum of 20 logs

#       in a backup set, and deleting them once the backup is complete.

#

#  Note that the format string is constructed to guarantee uniqueness and

#  to enhance NetBackup for Oracle backup and restore performance.

#

#

#  NOTE WHEN USING NET SERVICE NAME: When connecting to a database

#  using a net service name, you must use a send command or a parms operand to

#  specify environment variables.  In other words, when accessing a database

#  through a listener, the environment variables set at the system level are not

#  visible when RMAN is running.  For more information on the environment

#  variables, please refer to the NetBackup for Oracle Admin. Guide.

#

# ---------------------------------------------------------------------------

CMD_STR="

ORACLE_HOME=$ORACLE_HOME

export ORACLE_HOME

ORACLE_SID=$ORACLE_SID

export ORACLE_SID

$RMAN target $TARGET_CONNECT_STR nocatalog msglog $RMAN_LOG_FILE append << EOF

RUN {

ALLOCATE CHANNEL ch00 TYPE ‘SBT_TAPE‘;

ALLOCATE CHANNEL ch01 TYPE ‘SBT_TAPE‘;

SEND CHANNEL ch00 ‘NB_ORA_POLICY=oracle_db01_full‘;

SEND CHANNEL ch01 ‘NB_ORA_POLICY=oracle_db01_full‘;

BACKUP

$BACKUP_TYPE

SKIP INACCESSIBLE

TAG hot_db_bk_level0

FILESPERSET 5

# recommended format

FORMAT ‘bk_%s_%p_%t‘

DATABASE;

sql ‘alter system archive log current‘;

RELEASE CHANNEL ch00;

RELEASE CHANNEL ch01;

# backup all archive logs

#ALLOCATE CHANNEL ch00 TYPE ‘SBT_TAPE‘;

#ALLOCATE CHANNEL ch01 TYPE ‘SBT_TAPE‘;

#SEND CHANNEL ch00 ‘NB_ORA_POLICY=oracle_db01_arch‘;

#SEND CHANNEL ch01 ‘NB_ORA_POLICY=oracle_db01_arch‘;

#BACKUP

#   filesperset 20

#   FORMAT ‘al_%s_%p_%t‘

#   ARCHIVELOG ALL DELETE INPUT;

#RELEASE CHANNEL ch00;

#RELEASE CHANNEL ch01;

#

# Note: During the process of backing up the database, RMAN also backs up the

# control file.  This version of the control file does not contain the

# information about the current backup because "nocatalog" has been specified.

# To include the information about the current backup, the control file should

# be backed up as the last step of the RMAN section.  This step would not be

# necessary if we were using a recovery catalog or auto control file backups.

#

ALLOCATE CHANNEL ch00 TYPE ‘SBT_TAPE‘;

SEND CHANNEL ch00 ‘NB_ORA_POLICY=oracle_db01_full‘;

BACKUP

# recommended format

FORMAT ‘cntrl_%s_%p_%t‘

CURRENT CONTROLFILE;

RELEASE CHANNEL ch00;

}

EOF

"

# Initiate the command string

if [ "$CUSER" = "root" ]

then

su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE

RSTAT=$?

else

/usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE

RSTAT=$?

fi

# ---------------------------------------------------------------------------

# Log the completion of this script.

# ---------------------------------------------------------------------------

if [ "$RSTAT" = "0" ]

then

LOGMSG="ended successfully"

else

LOGMSG="ended in error"

fi

echo >> $RMAN_LOG_FILE

echo Script $0 >> $RMAN_LOG_FILE

echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

exit $RSTAT

[[email protected] /usr/openv/scripts]$

1.1.6 修改arch.sh脚本


[[email protected] /usr/openv/scripts]$ cat arch.sh

#!/bin/sh

# $Header: hot_database_backup.sh,v 1.3 2010/08/04 17:56:02 $

#

#bcpyrght

#***************************************************************************

#* $VRTScprght: Copyright 2014 Symantec Corporation, All Rights Reserved SY39-6648-5573-26-15-5  $ *

#***************************************************************************

#ecpyrght

#

# ---------------------------------------------------------------------------

#                       hot_database_backup.sh

# ---------------------------------------------------------------------------

#  This script uses Recovery Manager to take a hot (inconsistent) database

#  backup. A hot backup is inconsistent because portions of the database are

#  being modified and written to the disk while the backup is progressing.

#  You must run your database in ARCHIVELOG mode to make hot backups. It is

#  assumed that this script will be executed by user root. In order for RMAN

#  to work properly we switch user (su -) to the oracle dba account before

#  execution. If this script runs under a user account that has Oracle dba

#  privilege, it will be executed using this user‘s account.

# ---------------------------------------------------------------------------

# ---------------------------------------------------------------------------

# Determine the user which is executing this script.

# ---------------------------------------------------------------------------

CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`

# ---------------------------------------------------------------------------

# Put output in <this file name>.out. Change as desired.

# Note: output directory requires write permission.

# ---------------------------------------------------------------------------

RMAN_LOG_FILE=${0}.out

# ---------------------------------------------------------------------------

# You may want to delete the output file so that backup information does

# not accumulate.  If not, delete the following lines.

# ---------------------------------------------------------------------------

if [ -f "$RMAN_LOG_FILE" ]

then

rm -f "$RMAN_LOG_FILE"

fi

# -----------------------------------------------------------------

# Initialize the log file.

# -----------------------------------------------------------------

echo >> $RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Log the start of this script.

# ---------------------------------------------------------------------------

echo Script $0 >> $RMAN_LOG_FILE

echo ==== started on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Replace /db/oracle/product/ora102, below, with the Oracle home path.

# ---------------------------------------------------------------------------

ORACLE_HOME=/oracle/product/11.2.0/db11g

export ORACLE_HOME

# ---------------------------------------------------------------------------

# Replace ora102, below, with the Oracle SID of the target database.

# ---------------------------------------------------------------------------

ORACLE_SID=test1

export ORACLE_SID

# ---------------------------------------------------------------------------

# Replace ora102, below, with the Oracle DBA user id (account).

# ---------------------------------------------------------------------------

ORACLE_USER=oracle

# ---------------------------------------------------------------------------

# Set the target connect string.

# Replace "sys/manager", below, with the target connect string.

# ---------------------------------------------------------------------------

TARGET_CONNECT_STR=sys/manager

# ---------------------------------------------------------------------------

# Set the Oracle Recovery Manager name.

# ---------------------------------------------------------------------------

RMAN=$ORACLE_HOME/bin/rman

# ---------------------------------------------------------------------------

# Print out the value of the variables set by this script.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

echo   "RMAN: $RMAN" >> $RMAN_LOG_FILE

echo   "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE

echo   "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE

echo   "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# Print out the value of the variables set by bphdb.

# ---------------------------------------------------------------------------

echo  >> $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_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE

echo   "NB_ORA_POLICY: $NB_ORA_POLICY" >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# NOTE: This script assumes that the database is properly opened. If desired,

# this would be the place to verify that.

# ---------------------------------------------------------------------------

echo >> $RMAN_LOG_FILE

# ---------------------------------------------------------------------------

# If this script is executed from a NetBackup schedule, NetBackup

# sets an NB_ORA environment variable based on the schedule type.

# The NB_ORA variable is then used to dynamically set BACKUP_TYPE

# For example, when:

#     schedule type is                BACKUP_TYPE is

#     ----------------                --------------

# Automatic Full                     INCREMENTAL LEVEL=0

# Automatic Differential Incremental INCREMENTAL LEVEL=1

# Automatic Cumulative Incremental   INCREMENTAL LEVEL=1 CUMULATIVE

#

# For user initiated backups, BACKUP_TYPE defaults to incremental

# level 0 (full).  To change the default for a user initiated

# backup to incremental or incremental cumulative, uncomment

# one of the following two lines.

# BACKUP_TYPE="INCREMENTAL LEVEL=1"

# BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"

#

# Note that we use incremental level 0 to specify full backups.

# That is because, although they are identical in content, only

# the incremental level 0 backup can have incremental backups of

# level > 0 applied to it.

# ---------------------------------------------------------------------------

if [ "$NB_ORA_FULL" = "1" ]

then

echo "Full backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=0"

elif [ "$NB_ORA_INCR" = "1" ]

then

echo "Differential incremental backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=1"

elif [ "$NB_ORA_CINC" = "1" ]

then

echo "Cumulative incremental backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"

elif [ "$BACKUP_TYPE" = "" ]

then

echo "Default - Full backup requested" >> $RMAN_LOG_FILE

BACKUP_TYPE="INCREMENTAL LEVEL=0"

fi

# ---------------------------------------------------------------------------

# Call Recovery Manager to initiate the backup. This example does not use a

# Recovery Catalog. If you choose to use one, replace the option ‘nocatalog‘

# from the rman command line below with the

# ‘catalog <userid>/<passwd>@<net service name>‘ statement.

#

# Note: Any environment variables needed at run time by RMAN

#       must be set and exported within the switch user (su) command.

# ---------------------------------------------------------------------------

#  Backs up the whole database.  This backup is part of the incremental

#  strategy (this means it can have incremental backups of levels > 0

#  applied to it).

#

#  We do not need to explicitly request the control file to be included

#  in this backup, as it is automatically included each time file 1 of

#  the system tablespace is backed up (the inference: as it is a whole

#  database backup, file 1 of the system tablespace will be backed up,

#  hence the controlfile will also be included automatically).

#

#  Typically, a level 0 backup would be done at least once a week.

#

#  The scenario assumes:

#     o you are backing your database up to two tape drives

#     o you want each backup set to include a maximum of 5 files

#     o you wish to include offline datafiles, and read-only tablespaces,

#       in the backup

#     o you want the backup to continue if any files are inaccessible.

#     o you are not using a Recovery Catalog

#     o you are explicitly backing up the control file.  Since you are

#       specifying nocatalog, the controlfile backup that occurs

#       automatically as the result of backing up the system file is

#       not sufficient; it will not contain records for the backup that

#       is currently in progress.

#     o you want to archive the current log, back up all the

#       archive logs using two channels, putting a maximum of 20 logs

#       in a backup set, and deleting them once the backup is complete.

#

#  Note that the format string is constructed to guarantee uniqueness and

#  to enhance NetBackup for Oracle backup and restore performance.

#

#

#  NOTE WHEN USING NET SERVICE NAME: When connecting to a database

#  using a net service name, you must use a send command or a parms operand to

#  specify environment variables.  In other words, when accessing a database

#  through a listener, the environment variables set at the system level are not

#  visible when RMAN is running.  For more information on the environment

#  variables, please refer to the NetBackup for Oracle Admin. Guide.

#

# ---------------------------------------------------------------------------

CMD_STR="

ORACLE_HOME=$ORACLE_HOME

export ORACLE_HOME

ORACLE_SID=$ORACLE_SID

export ORACLE_SID

$RMAN target $TARGET_CONNECT_STR nocatalog msglog $RMAN_LOG_FILE append << EOF

RUN {

#ALLOCATE CHANNEL ch00 TYPE ‘SBT_TAPE‘;

#ALLOCATE CHANNEL ch01 TYPE ‘SBT_TAPE‘;

#SEND CHANNEL ch00 ‘NB_ORA_POLICY=oracle_db01_full‘;

#SEND CHANNEL ch01 ‘NB_ORA_POLICY=oracle_db01_full‘;

#BACKUP

#    $BACKUP_TYPE

#    SKIP INACCESSIBLE

#    TAG hot_db_bk_level0

#    FILESPERSET 5

#    # recommended format

#    FORMAT ‘bk_%s_%p_%t‘

#    DATABASE;

#    sql ‘alter system archive log current‘;

#RELEASE CHANNEL ch00;

#RELEASE CHANNEL ch01;

# backup all archive logs

ALLOCATE CHANNEL ch00 TYPE ‘SBT_TAPE‘;

ALLOCATE CHANNEL ch01 TYPE ‘SBT_TAPE‘;

SEND CHANNEL ch00 ‘NB_ORA_POLICY=oracle_db01_arch‘;

SEND CHANNEL ch01 ‘NB_ORA_POLICY=oracle_db01_arch‘;

BACKUP

filesperset 20

FORMAT ‘al_%s_%p_%t‘

ARCHIVELOG ALL DELETE INPUT SKIP INACCESSIBLE;

RELEASE CHANNEL ch00;

RELEASE CHANNEL ch01;

#

# Note: During the process of backing up the database, RMAN also backs up the

# control file.  This version of the control file does not contain the

# information about the current backup because "nocatalog" has been specified.

# To include the information about the current backup, the control file should

# be backed up as the last step of the RMAN section.  This step would not be

# necessary if we were using a recovery catalog or auto control file backups.

#

ALLOCATE CHANNEL ch00 TYPE ‘SBT_TAPE‘;

SEND CHANNEL ch00 ‘NB_ORA_POLICY=oracle_db01_arch‘;

BACKUP

# recommended format

FORMAT ‘cntrl_%s_%p_%t‘

CURRENT CONTROLFILE;

RELEASE CHANNEL ch00;

}

EOF

"

# Initiate the command string

if [ "$CUSER" = "root" ]

then

su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE

RSTAT=$?

else

/usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE

RSTAT=$?

fi

# ---------------------------------------------------------------------------

# Log the completion of this script.

# ---------------------------------------------------------------------------

if [ "$RSTAT" = "0" ]

then

LOGMSG="ended successfully"

else

LOGMSG="ended in error"

fi

echo >> $RMAN_LOG_FILE

echo Script $0 >> $RMAN_LOG_FILE

echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

exit $RSTAT

1.1.7 脚本权限和属主修改


[[email protected] openv]# chmod –R 755 scripts/

[[email protected] openv]# chown –R oracle:oinstall scripts/

1.1.8 数据文件备份策略配置


nbu-b:~ # bppllist oracle_db01_full -U

------------------------------------------------------------

Policy Name:       oracle_db01_full

Policy Type:         Oracle

Active:              yes

Effective date:      2015-08-24 12:58:22

Block Incremental:   no

Mult. Data Streams:  no

Client Encrypt:      no

Checkpoint:          no

Policy Priority:     0

Max Jobs/Policy:     Unlimited

Disaster Recovery:   0

Collect BMR info:    no

Residence:           stu_disk_nbu-b

Volume Pool:         NetBackup

Server Group:        *ANY*

Keyword:             (none specified)

Data Classification:       -

Residence is Storage Lifecycle Policy:    no

Application Discovery:      no

Discovery Lifetime:      0 seconds

ASC Application and attributes: (none defined)

Granular Restore Info:  no

Ignore Client Direct:  no

Enable Metadata Indexing:  no

Index server name:  NULL

Use Accelerator:  no

Client List Type: 0

Selection List Type: 0

Oracle Backup Data File Name Format: NULL

Oracle Backup Archived Redo Log File Name Format: NULL

Oracle Backup Control File Name Format: NULL

Oracle Backup Fast Recovery Area File Name Format: NULL

Oracle Backup Set ID: NULL

Oracle Backup Data File Arguments: NULL

Oracle Backup Archived Redo Log Arguments: NULL

HW/OS/Client:  Linux         RedHat2.6.18  db01

Include:  /usr/openv/scripts/hot_database_backup.sh

Schedule:              full

Type:                Full Backup

Frequency:           every 1 day

Excluded Dates----------

No specific exclude dates entered

No exclude days of week entered

PFI Recovery:        0

Maximum MPX:         1

Retention Level:     3 (1 month)

Number Copies:       1

Fail on Error:       0

Residence:           (specific storage unit not required)

Volume Pool:         (same as policy volume pool)

Server Group:        (same as specified for policy)

Residence is Storage Lifecycle Policy:         0

Schedule indexing:   0

Daily Windows:

星期日  22:00:00  -->  星期一  05:00:00

星期一  22:00:00  -->  星期二  05:00:00

星期二  22:00:00  -->  星期三  05:00:00

星期三  22:00:00  -->  星期四  05:00:00

星期四  22:00:00  -->  星期五  05:00:00

星期五  22:00:00  -->  星期六  05:00:00

星期六  22:00:00  -->  星期日  05:00:00

Schedule:              Default-Application-Backup

Type:                Application Backup

Excluded Dates----------

No specific exclude dates entered

No exclude days of week entered

PFI Recovery:        0

Maximum MPX:         1

Retention Level:     3 (1 month)

Number Copies:       1

Fail on Error:       0

Residence:           (specific storage unit not required)

Volume Pool:         (same as policy volume pool)

Server Group:        (same as specified for policy)

Residence is Storage Lifecycle Policy:         0

Schedule indexing:   0

Daily Windows:

星期日  00:00:00  -->  星期日  24:00:00

星期一  00:00:00  -->  星期一  24:00:00

星期二  00:00:00  -->  星期二  24:00:00

星期三  00:00:00  -->  星期三  24:00:00

星期四  00:00:00  -->  星期四  24:00:00

星期五  00:00:00  -->  星期五  24:00:00

星期六  00:00:00  -->  星期六  24:00:00

1.1.9 归档日志备份策略配置


nbu-b:~ # bppllist oracle_db01_arch -U

------------------------------------------------------------

Policy Name:       oracle_db01_arch

Policy Type:         Oracle

Active:              yes

Effective date:      2015-08-24 13:05:29

Block Incremental:   no

Mult. Data Streams:  no

Client Encrypt:      no

Checkpoint:          no

Policy Priority:     0

Max Jobs/Policy:     Unlimited

Disaster Recovery:   0

Collect BMR info:    no

Residence:           stu_disk_nbu-b

Volume Pool:         NetBackup

Server Group:        *ANY*

Keyword:             (none specified)

Data Classification:       -

Residence is Storage Lifecycle Policy:    no

Application Discovery:      no

Discovery Lifetime:      0 seconds

ASC Application and attributes: (none defined)

Granular Restore Info:  no

Ignore Client Direct:  no

Enable Metadata Indexing:  no

Index server name:  NULL

Use Accelerator:  no

Client List Type: 0

Selection List Type: 0

Oracle Backup Data File Name Format: NULL

Oracle Backup Archived Redo Log File Name Format: NULL

Oracle Backup Control File Name Format: NULL

Oracle Backup Fast Recovery Area File Name Format: NULL

Oracle Backup Set ID: NULL

Oracle Backup Data File Arguments: NULL

Oracle Backup Archived Redo Log Arguments: NULL

HW/OS/Client:  Linux         RedHat2.6.18  db01

Include:  /usr/openv/scripts/arch.sh

Schedule:              full

Type:                Full Backup

Frequency:           every 6 hours

Excluded Dates----------

No specific exclude dates entered

No exclude days of week entered

PFI Recovery:        0

Maximum MPX:         1

Retention Level:     3 (1 month)

Number Copies:       1

Fail on Error:       0

Residence:           (specific storage unit not required)

Volume Pool:         (same as policy volume pool)

Server Group:        (same as specified for policy)

Residence is Storage Lifecycle Policy:         0

Schedule indexing:   0

Daily Windows:

星期日  00:00:00  -->  星期日  24:00:00

星期一  00:00:00  -->  星期一  24:00:00

星期二  00:00:00  -->  星期二  24:00:00

星期三  00:00:00  -->  星期三  24:00:00

星期四  00:00:00  -->  星期四  24:00:00

星期五  00:00:00  -->  星期五  24:00:00

星期六  00:00:00  -->  星期六  24:00:00

Schedule:              Default-Application-Backup

Type:                Application Backup

Excluded Dates----------

No specific exclude dates entered

No exclude days of week entered

PFI Recovery:        0

Maximum MPX:         1

Retention Level:     3 (1 month)

Number Copies:       1

Fail on Error:       0

Residence:           (specific storage unit not required)

Volume Pool:         (same as policy volume pool)

Server Group:        (same as specified for policy)

Residence is Storage Lifecycle Policy:         0

Schedule indexing:   0

Daily Windows:

星期日  00:00:00  -->  星期日  24:00:00

星期一  00:00:00  -->  星期一  24:00:00

星期二  00:00:00  -->  星期二  24:00:00

星期三  00:00:00  -->  星期三  24:00:00

星期四  00:00:00  -->  星期四  24:00:00

星期五  00:00:00  -->  星期五  24:00:00

星期六  00:00:00  -->  星期六  24:00:00

1.1.10 数据文件备份


nbu-b:~ # bpdbjobs |grep oracle_db01_full |head

29778         Backup Done      0             oracle_db01_full Default-Application-Backup           db01 2015-09-24 22:35:39  000:00:08      21024      25923  98.900002

29777         Backup Done      0             oracle_db01_full Default-Application-Backup           db01 2015-09-24 22:35:16  000:00:07        288        265  99.300003

29776         Backup Done      0             oracle_db01_full Default-Application-Backup           db01 2015-09-24 22:34:59  000:00:12      21024      16110  99.500000

29771         Backup Done      0             oracle_db01_full Default-Application-Backup           db01 2015-09-24 22:18:10  000:16:39   30659104      31001  98.800003

29757         Backup Done      0             oracle_db01_full Default-Application-Backup           db01 2015-09-24 22:00:12  000:17:51   13521696      12728  70.400002

29756         Backup Done      0             oracle_db01_full Default-Application-Backup           db01 2015-09-24 22:00:11  000:35:08   48215840      22976  70.599998

29749         Backup Done      0             oracle_db01_full                       full           db01 2015-09-24 22:00:00  000:35:57

1.1.11 归档日志备份


nbu-b:~ # bpdbjobs |grep oracle_db01_arch |head

30014         Backup Done      0             oracle_db01_arch Default-Application-Backup           db01 2015-09-24 11:04:22  000:00:07      21024      37610  99.099998

30013         Backup Done      0             oracle_db01_arch Default-Application-Backup           db01 2015-09-24 11:03:51  000:00:22     831776      68481  75.599998

30012         Backup Done      0             oracle_db01_arch Default-Application-Backup           db01 2015-09-24 11:03:51  000:00:24     847904      55545  73.599998

30011         Backup Done      0             oracle_db01_arch                       full           db01 2015-09-24 11:03:33  000:01:06

原文地址:https://www.cnblogs.com/yihr/p/9218408.html

时间: 2024-10-15 00:56:42

5、Oracle备份的相关文章

Oracle备份和恢复简史

Oracle备份和恢复简史 --http://www.searchdatabase.com.cn/showcontent_90388.htm?info=sinaweibo 这些年来,Oracle数据库备份和恢复方式已经发生了重大变化,特别是在Recovery Manager(RMAN)功能有了进一步改善之后.那么接下来,就让我们来回顾下,在没有RMAN之前,以及有了RMAN之后,DBA如何备份数据,以及RMAN如何改善这一过程. 回到很久之前的Oracle 5,那时候的备份是这么做的:关闭数据库

Oracle备份 还原命令

1.备份命令 exp username/password file=d:/test/test.dmp; 2.还原命令 imp username/password full=y file=d:/test/test.dmp; Oracle备份 还原命令

ORACLE备份还原(expdp/impdp)

1. 创建目录 SQL> create directory dump_file as '/db/backup'; 2. 目录赋权限 SQL> grant read,write on directorydump_file to bam; 查看目录 SQL> select * from dba_directories; 3. 备份 SQL>expdp user/pwd directory=dump_filedumpfile=expdp_%U.dmp logfile=expdp.log

oracle备份(expdp、exp)及还原(imp、impdp)的方法

oracle备份(exp.expdp) --按用户导出表expdp bdcdj/[email protected] schemas=bdcdj directory=a dumpfile=bdcdj.dmp --按表名导出表expdp scott/[email protected] TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;--按查询条件导出表expdp scott/[email protected] directory=dpdata

Oracle备份基本名词

1.高可用行 (1)HA(high availability HA) (2)RAC (Oracle Real Application Cluster) (3) DG (DATA Guard) (4) Oracle Replication (5) RAID和镜像驱动器 2.备份和恢复 (1)收集备份与恢复策略需求. (2)精心设计备份与恢复计划. 问题1 我们平时做的的备份都是物理备份. 备份: (1)类型 物理备份 逻辑备份 (2)数据库状态 a.联机备份(热)和脱机备份(冷) b.不一致备份和

Oracle备份之RMAN

1.备份:物理备份时文件层次的备份,逻辑备份时数据层次的备份,物理备份为主,逻辑备份作为补充.物理备份分为用户管理备份和RMAN备份,前者使用SQL命令和OS的cp命令进行文件备份,后者使用RMAN工具份.Undo Segment:修改记录过程中,记录修改前的状态会被记录到Undo Segment中,这条记录叫作前镜像(before images).当需要撤销修改比如执行rollback时,就用这条前镜像覆盖现有记录.对于Insert操作,前镜像就是一个空记录,对于Update,Delete操作

Oracle备份解决方案

备份解决方案 使用以下方法可执行备份: Recovery Manager Oracle Secure Backup 用户管理的备份 Recovery Manager (RMAN) 是推荐使用的 Oracle DB 备份方法.Oracle Secure Backup 通过添加了备份到磁带功能和网络备份功能,补充了现有功能.用户管理的备份是基于脚本的,因此 DBA 必须编写脚本.这种方法正逐渐被淘汰,因为它需要较多的人工.Oracle Secure Backup Oracle Secure Back

oracle备份 使用RMAN 工具

在日常维护中 备份是我们运维最常做的工作,并且非常重要 . 那九妹带你 使用RMAN 工具备份Orcle 三.使用RMAN工具 RMAN(recovery  manager)是oracle的一个重要工具,用于备份和恢复数据库文件.归档日志和控制文件.也可以用来执行完全或不完全的数据库恢复.RMAN有3种不同的用户接口:命令行方式,GUI方式(集成在OEM中的备份管理器).api方式(用于集成到第三方的备份软件中).它具有如下优点: 1)支持在线热备份 2)支持多级增量备份 3)支持并行备份.恢复

更换Oracle备份数据文件

应用背景:需要查看和修改一下Interlib中的数据,所以要反复的将备份数据进行导入和清空.整理一下步骤 删除tablespace drop tablespace interlib including contents; 删除User drop user interlib cascade; 重新创建表空间和用户 create tablespace interlib datafile'/opt/oracle/oradata/interlib/interlib.dbf' size 2048m; al

oracle备份恢复学习

备份和恢复是常遇到的操作,逻辑备份和物理备份.物理备份又分为冷备份和热备份. 一.逻辑备份,恢复 是指使用exp命令,简单易行,不影响正常的数据库操作.exp   用户名/密码   file=/home/oracle/dyan.dmp 可用必备命令参数owner=(ora,serv)只导出用户拥有的对象. tables=(t_bss_userinfo,t_bss_mailinfo)只导出指定的表. 相应的恢复命令imp,imp  用户名/密码   file=/home/oracle/dyan.d