Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27953
  • 博文数量: 8
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-27 08:51
文章分类
文章存档

2014年(8)

我的朋友

分类: Oracle

2014-05-25 17:43:56

原文地址:Oracle export 數據自動壓縮 作者:gangjh

 Oracle 提供了exp程序,能方便的導出數據, 但該工具沒有壓縮功能.
 對於磁盤空間緊張的主機,比較好的方法是使用用命名管道,將數據導到pipe, mknod /dev/pipe p,
 通過gzip,或bzip2壓縮數據 .
 寫了段小程序自動處理,並提供自動ftp到遠端主機的功能


#!/bin/bash

# Write : Gan Jian Hui

# Description export ORACLE DUMP DATA and auto compress

# can auto upload to ftp server

# example:

# bexp userid=user/pass log=/tmp/aa.log rows=no owner=OLAPSYS file=ftp://ftpuser:ftppass@ftpserver/aaa.dmp.bz2 statistics=none

#

# Date : 2010/08/11

#


PID=$$;
PIPE="/tmp/tmp$USER.pipe.$PID"
PARFILE="/tmp/tmp$USER.parm.$PID"

[ -z $ORACLE_HOME ] && exit

[ -z "$*" ] && $ORACLE_HOME/bin/exp help=y

if echo "$*" |grep -qi 'help=y' ;then
    $ORACLE_HOME/bin/exp help=y
    exit
fi

# [[ "$PARM" =~ '[Ff][Ii][Ll][Ee]=*' ]] && echo file


while [ -n "$1" ] ; do
    PARM=$1 ;
    shift ;
    case $PARM in
        [fF][iI][lL][eE]\=*)
            echo "file=$PIPE" >>$PARFILE
            DMPFILE=${PARM:5}
            ;;
        *)
            echo "$PARM" >>$PARFILE
            ;;
    esac;
done



[ -f "$PARFILE" ] || exit
[ -p $PIPE ] || mknod $PIPE p
trap "rm -f -- '$PIPE' '$PARFILE'" EXIT



case $DMPFILE in
    ftp://*) [ -e /usr/bin/curl ] || exit
esac




$ORACLE_HOME/bin/exp parfile=$PARFILE &
case $DMPFILE in
    ftp://*.gz) gzip < $PIPE |curl -T - $DMPFILE ;;
    ftp://*.bz2) bzip2 < $PIPE |curl -T - $DMPFILE ;;
    *.gz) gzip < $PIPE > $DMPFILE ;;
    *.bz2) bzip2 < $PIPE > $DMPFILE ;;
    *) echo "'$1' cannot be compressd by bexp()" ;;
esac



阿飛 2010/08/12
阅读(941) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~