Chinaunix首页 | 论坛 | 博客
  • 博客访问: 417403
  • 博文数量: 66
  • 博客积分: 1416
  • 博客等级: 上尉
  • 技术积分: 922
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-16 10:37
个人简介

高級Oracle DBA,善長Linux系統維運以及Oracle數據庫管理,開發,調優. 具有多年PL/SQL開發經驗.

文章分类

全部博文(66)

文章存档

2015年(9)

2014年(4)

2013年(5)

2010年(1)

2009年(3)

2008年(6)

2007年(30)

2006年(8)

我的朋友

分类: Oracle

2010-08-12 13:13:43

 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
阅读(1676) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~