提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
此shell脚本使用exp和imp方式导出导入dmp文件,逻辑简单,一看便懂
一、Oracle数据库exp和imp方式导数据
可通过以下链接学习exp和imp
链接: Oracle数据库exp和imp方式导数据.
二、shell脚本
1.创建配置文件
创建配置文件database.cfg,将数据库地址写入配置文件,便于后期修改
#中间库数据源
#用户名/密码@数据库ip:端口/实例名
DataBaseMid=abc/\"abc\"@127.0.0.1:1521/orcl
#新地址
DATABASE_SRC=@127.0.0.1:1521/ncmdb
2.编写脚本sysExpAndImp.sh
#!/bin/bash
#在应用服务器输入echo PATH就可以得到服务器的环境变量,替换下面的PATH
PATH=/usr/java/jdk1.8.0_181/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/openssh-8.6p1/bin:/usr/local/sbin:/home/zyb/bin:/home/zyb/bin:/u01/app/oracle/product/11.2.0/client_1/patch:/u01/app/oracle/product/11.2.0/client_1/bin
export PATH
. ~/cfg/database.cfg
export TMOUT=0
errorCount=5
echo "请选择使用模式,1 生产模式,其余任意字符 测试模式"
read runMode
#如果是输入1,则使用输入的密码登录数据库,否则使用配置文件中DataBaseMid数据库地址
if [ $runMode -eq 1 ];then
for((i=1;i<11;i++))
do
echo "请输入abc的数据库密码"
stty -echo
read pass_sys
stty echo
DATABASE_SYS=abc/\"$pass_sys\"$DATABASE_SRC
checkAccount=$(sqlplus -s $DATABASE_SYS <<EOF
set heading off
set feedback off
select 1 from dual;
exit
EOF
)
echo $checkAccount
if [ $checkAccount -eq 1 ];then
echo "登录成功!"
break
else
echo "登录失败!账户密码输入错误!"
fi
if [ $i -eq $errorCount ];then
exit 0
fi
done
fi
DATABASE=$DataBaseMid
######################数据库导入开始#########################
#处理sys
touser=${DataBaseMid%/\"*}
echo ${touser}
echo "开始导出sys的基础配置表"
exp $DATABASE_SYS FILE=sysinittables.dmp TABLES=admin_area_info,admin_rate_info,admin_s_org,admin_s_user,admin_s_user_org_rel,ADMIN_S_USER_ROLE_ORG_REL,admin_s_role,ADMIN_S_ORGTREE_ORG_REL
echo "开始导入sys的基础配置表"
imp $DATABASE FILE=sysinittables.dmp DATA_ONLY=Y FROMUSER=ncm_sys touser=${touser}
echo "导入sys的基础配置表执行成功"
M=`whoami`
if [ $? == 0 ];then
echo -e "***中间库参数导入结束,请继续:\n1、手动执行编译存储过程脚本:\e[35m <makeproc.sql> \e[0m\n2、执行收集初始化数据统计信息脚本\e[35m <analyInitTable.sh> \e[0m,路径:\e[35m </home/$M/handle/tableIndex> \e[0m"
else
echo -e "\e[31m 中间库参数导入ERROR!!! \e[0m"
fi
3.执行脚本
sh sysExpAndImp.sh
总结
仔细看链接: Oracle数据库exp和imp方式导数据.链接中讲述了exp和imp的使用方式,此shell仅仅写了两条命令而已。