linux 使用shell导出oracle用户表到文件服务器
使用shell脚本将oracle表从源服务器导出到中间文件服务器
- 首先以oracle用户登入到源服务器,在oracle下创建一个目录,目录名称为shell,然后创建一个shell脚本
mkdir shell
- 将以下命令复制到shell脚本中
如果不知道环境变量信息可以使用env命令查看
env
[oracle@oracle shell]$ vi expyiqun.sh
#!/bin/sh
export ORACLE_BASE=/ora/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export ORACLE_SID=orcl #数据库实例名
#export ORACLE_SID=yiqun #数据库实例名
#export ORACLE_SID=yiqun #数据库实例名
#多个实例名情况下
#获取昨日日期T+1
CURDATE=$(date -d "1 days ago" '+%Y-%m-%d')
#在本系统指定一个目录
backdir=/home/oracle/lj #和数据库同系统同用户下
#指定目录下指定dmp文件名字
backupfile=$backdir/$1_$2_$CURDATE.dmp
#删除指定日期导出文件
delete_file()
{
premonth=$(date -d"5 days ago" '+%Y-%m-%d')
rm -rf $backdir/$1_$2_$premonth*
}
#导出
cd $backdir
exp test1/123456@192.168.91.128/orcl #登入oracle用户名/密码@IP地址/实例名 FILE=$backupfile #备份到目录
log=$backdir/lg_$CURDATE.log #写日志文件 tables=T1; #table数据库表名,如果是多个表需要用括号括起来,表名与表名之间用逗号隔开
#压缩
zip -r $1_$2_$CURDATE.zip $backdir/$1_$2_$CURDATE.dmp #$1_$2_$CURDATE.dmp 文件名称和类型
#ftp 文件传输
scp $backdir/$1_$2_$CURDATE.zip #远程传输 root@192.168.91.130:/home/oracle/cbs #中间服务器linux用户名@ip地址:路径
delete_file $1 $2 /#两个参数,用于指定之前创建的文件名称,用于删除
-
保存并退出
-
将expyiqun.sh 赋权,权限为775并执行脚本
chmod 775 expyiqun.sh
./expyiqun.sh c g #参数名依据具体情况编写,我这是第一次导入,没有任何文件,不需要删除任何文件,就随便起了两个参数名
- 查看本地压缩包和是否传到远程服务器文件
分别在本地和中间服务器系统查看
ll /home/oracle/lj #查看本地
远程服务器查看
登入到远程服务器查看
cd /home/oracle/cbs
ll
完成。