在维护Oracle数据库时,expdp是一个常用工具。下面简单介绍下使用方法(适合Oracle入门级选手)
创建目录
--创建导出目录
CREATE OR REPLACR DIRECTORY 目录名称 as '磁盘路径';
--查看数据库目录
select * from all_directories;
创建用户
CREATE USER EXPDPUSER IDENTIFIED BY "密码";
创建Oracle用户时,建议用户名为大写
用户授权
GRANT CONNECT,RESOURCE,EXP_FULL_DATABASE TO "用户名";
GRANT READ,WRITE ON DIRECTORY DUMP_DIR TO "用户名";
GRANT UNLIMITED TABLESPACE TO "用户名";
导出数据
将以下脚本保存为shell脚本,修改参数后即可执行备份
##用户每次登录设置一次环境变量
if [ -f ~/.bash_profile ];
then
. ~/.bash_profile
fi
##修改实例名
export instance_name=INSTANCE_NAME
##修改用户
export expdpuser=USERNAME
export password=PASSWORD
export schemas=USERNAME
##时间格式
export time=`date '+%Y%m%d%H%M'`
##备份所有对象数据
expdp \'''${expdpuser}'/"'${password}'"'@${instance_name}\' directory=dump_dir JOB_NAME="$instance_name"_"$schemas"_ALL_"$time" dumpfile="$instance_name"_"$schemas"_ALL_"$time"_%U.dmp logfile="$instance_name"_"$schemas"_ALL_"$time".log full=y compression=all metrics=y exclude=STATISTICS parallel=8
##备份某个schema所有数据
expdp \'''${expdpuser}'/"'${password}'"'@${instance_name}\' directory=dump_dir JOB_NAME="$instance_name"_"$schemas"_ALL_"$time" dumpfile="$instance_name"_"$schemas"_ALL_"$time"_%U.dmp logfile="$instance_name"_"$schemas"_ALL_"$time".log schema="$schemas" compression=all metrics=y exclude=STATISTICS parallel=8
##备份某个schema指定表数据
##修改tables后的参数
##expdp \'''${expdpuser}'/"'${password}'"'@${instance_name}\' directory=dump_dir dumpfile="$instance_name"_"$schemas"_TABLES_"$time".dmp logfile="$instance_name"_"$schemas"_TABLES_"$time".log tables=USERNAME.TABLENAME1,USERNAME.TABLENAME2 compression=all metrics=y parallel=8
##COMPRESSION:all/data_only/metadata_only/none/DEFAULT
##metrics:导出日志记录了每个对象的导出时间
作业相关
终止数据泵作业
--先查到这个作业的名称
select * from DBA_DATAPUMP_JOBS;
--shell中输入下面命令,查看作业的属性
--"$expdpuser"和"$password"参照导出脚本中的修改
--"$instance_name"_"$schemas"_ALL_"$time"从数据库中查出实际名字
$ impdp "$expdpuser"/"$password" attach="$instance_name"_"$schemas"_ALL_"$time"
--根据需求执行以下命令
--stop_job=immediate
--kill_job
--continue_client