ORACLE全备份和0级增量备份的区别

ORACLE全备份和0级增量备份的区别,第1张

ORACLE全备份和0级增量备份的区别:

1、Level 0级就是对数据库一个全库备份,增量备份必须从0级开始,也就是说必须要有一个全库备份当基础。

2、如果做全库备份oracle也不认为这是level 0的全库备份,尽管是一样的也要单独做一次level 0。

3、有了level 0当基础才能有后面的 level 1 level 2 level 3 level 4。

全量备份:

1.导出epmssit数据库备份;

exp system/sysadmin@hnepms file=d:\datas\epmssit_bak20100401.dmp owner=epmssit

2.创建epmsprd用户以及表空间;

sqlplus "/as sysdba"

create tablespace epmsprd datafile 'D:\datas\epmsprd.ora' size 100M

create user epmsprd identified by epmsprd default tablespace epmsprd

grant resource,connect to epmsprd

3.将epmssit导入到epmsprd用户;

imp system/sysadmin@hnepms file=d:\datas\epmssit_bak20100401.dmp fromuser=epmssit touser=epmsprd

4.清理epmsprd数据库中的垃圾数据;

delete from xxxxxx

5.备份epmsprd;

exp system/sysadmin@hnepms file=d:\datas\epmsprd_bak20100401.dmp owner=epmsprd

ontape是informix数据库的简单易用的备份工具,但是它必须交互进行,对数据库的日常维护有一定的限制,比如,我们想在晚上进行备份,而不是在白天工作的时间。

下面我就简单示例,实现ontape的自动备份,这样我们就可以编写一个脚本,让 *** 作系统在系统不忙时自动调用。

假设:

1 ) $ONCONFIG 中参数 TAPEDEV已设置

TAPEDEV/Backup/archive0 # Tape device path

TAPEBLK16 # Tape block size (Kbytes)

TAPESIZE2000000 # Maximum amount of data to put on tape (Kbytes)

2) 备份数据的存放目录 /Backup ;

3) 备份过程产生的日志文件放在/opt/informix/archive目录下;

4) ftp.cmd 文件放在 /opt/informix/archive目录下;

#----------Autobackup.sh Begin----------

#

#autobackup.sh

#

#加载数据库环境

. /opt/informix/setenv

#设置备份日志文件

LOGFILE=/opt/informix/archive/archive.log

#取得当前系统日期

DATE=`date +%Y%m%d`

echo "---------- INFORMIX SYSTEM BACKUP(`date +%c`) ----------" >>$LOGFILE 2>&1

#生成一个备份的目标文件

touch /Backup/archive0 >>$LOGFILE 2>&1

chown informix:informix /Backup/archive0 >>$LOGFILE 2>&1

chmod 660 /Backup/archive0 >>$LOGFILE 2>&1

#开始零级备份

echo ` ` | ontape -s -L 0 >>$LOGFILE 2>&1

#将备份完成后的文件加上时间戳

mv -f /Backup/archive0 /Backup/archive.$DATE >>$LOGFILE 2>&1

#压缩备份

compress -f /Backup/archive.$DATE >>$LOGFILE 2>&1

#将备份文件传输到其它机器上

cp -f /Backup/archive.$DATE.Z /Backup/ftp >>$LOGFILE 2>&1

ftp -n </opt/informix/archive/ftp.cmd

rm -f /Backup/ftp/* >>$LOGFILE 2>&1

#删除5天前的备份

COUNTS=`ls /Backup|sort|wc -l`

echo "There is $COUNTS files in /Backup..." >>$LOGFILE 2>&1

if [ $COUNTS -ge 7 ] then

echo "An oldest file will be delete ,please wait..." >>$LOGFILE 2>&1

OLDFILE=`ls /Backup|sort|head -1` >>$LOGFILE 2>&1

cd /Backup

rm -f $OLDFILE >>$LOGFILE 2>&1

echo "Delete file completed ,$OLDFILE was deleted." >>$LOGFILE 2>&1

else

echo "There is no more then 6 file ,nothing to do..." >>$LOGFILE 2>&1

fi

#释放数据库无用内存

onmode -F

#------------autobackup.sh End-----------

以上脚本可以使用 *** 作系统的crontab命令,指定时间,自动运行,不用人工干预。

另外附上使用ftp命令的自动传输教本。

#------------ftp.cmd begin---------------------------

open 9.185.43.62

User backup backup123

cd /RemoteBackup

bin

bin

bin

bin

put /Backup/ftp/* /RemoteBackup/archive0

Bye

#--------------------------ftp.cmd end ----------------------

在远端系统上同样可以使用crontab命令来处理传输过去的文件。

大家可以自行修改以上脚本,使之适用于自己的环境。

Oracle数据库RMAN的自动备份脚本简介

各位同学知道Oracle数据库RMAN如何自动备份脚本嘛?下面我为大家整理了关于Oracle数据库RMAN的自动备份脚本文章,希望能为你提供帮助:

1、数据库设置为归档方式

2、数据库的备份脚本

db_full_backup.sh :数据库全备脚本

db_l0_backup.sh :数据库0级备份脚本

db_l1_backup.sh :数据库1级备份脚本

ftp.sh :数据FTP上传脚本

ftp_del.sh :数据FTP清理脚本

rman_bak.sh :数据备份主程序

3、备份原理

每周1、3、6进行0级备份

每周日、2、4、5进行1级备份

备份文件上传到FTP服务器

FTP服务器每周清理一次,但是清理后将周六和周日的备份进行保留(6.bak和0.bak)

所有工作防暑crontab中自动执行备份

4、备份目录含义

arc :数据库归档目录

rmanbak :数据库备份文件的保存目录

rmanscripts :数据库脚本存放路径

5、FTP目录

ftp上必须手动建立目录

L0:

---1

---3

---6

---6.bak

L1:

---2

---4

---5

---0

---0.bak

rman_bak.sh脚本主程序

#!/bin/bash

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

# Oracle auto backup using rman

#

# author:songrh

# week:1,3,6 Level 0 backup

# 2,4,5,0 Level 1 backup

# Copyright by ChenLong Tec

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

#

#

export ORACLE_BASE=/u02/oracle

export ORACLE_HOME=/u02/oracle/product/9.2.4

export ORACLE_SID=PROD

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

export NLS_LANG=american_america.ZHS16GBK

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NL33=$ORACLE_HOME/ocommon/nls/admin/data

export PATH=/bin:/usr/bin:/usr/sbin:$ORACLE_HOME/bin:$PATH

export PATH=$PATH:/opt/local/bin

#

SH_PATH=/u02/rmanscripts

ARC_PATH=/u02/arch

RMAN_BAK_PATH=/u02/rmanbak

#

#FULL_PATH=$RMAN_BAK_PATH/full

L0_PATH=$RMAN_BAK_PATH/L0

L1_PATH=$RMAN_BAK_PATH/L1

#

#DAY_TAG=`date "%Y-%m-%d"`

LOG_TAG=`date "%Y-%m-%d"`

#FIRST_DAY=`date %e`

WEEK=`date %w`

#WEEK=1

#

# FTP configure

IP="122.120.150.155"

FTPUSER="ftpbak"

FTPPASS="******"

FTPROOT0="L0"

FTPROOT1="L1"

#

DISK_USE=`df -k |sed -n '/u02/'p | awk '{print $5}' |sed 's/%//'`

####check path function

############

if [[ $DISK_USE -ge 90 ]]then

rm -rf $L0_PATH/*

rm -rf $L1_PATH/*

fi

if [ "$WEEK" = "6" -o "$WEEK" = "3" -o "$WEEK" = "1" ]then

if [ ! -d $L0_PATH ]then

mkdir $L0_PATH

fi

if [ "$WEEK" = "1" ]then

rm -rf $L0_PATH/*

rm -rf $L1_PATH/*

mkdir $L0_PATH/$WEEK

$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK

cd $L0_PATH/$WEEK

$SH_PATH/ftp_del.sh $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log

else

if [ ! -d $L0_PATH/$WEEK ]then

mkdir $L0_PATH/$WEEK

$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK

cd $L0_PATH/$WEEK

$SH_PATH/ftp.sh $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log

else


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6811051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存