Oracle使用expdp/impdp实现数据库迁移

Oracle使用expdp/impdp实现数据库迁移

导出

0. 准备导出路径

cd /u01/app/oracle
mkdir bak && chmod 777 bak

1、创建目录(sqlplus)

create  directory  bak  as '/u01/app/oracle/bak';

2、给目录赋权限(sqlplus)

grant read,write on directory bak to public;
exit

3、执行导出语句(cmd命令行)

expdp user1/pwd@127.0.0.1:1521/orcl schemas=user1 directory=bak dumpfile=DATA1.dmp logfile=DATA1-EXP.log

如果配置了Oracle的环境变量,特别是ORACLE_SID(对于单实例数据库)或ORACLE_HOME和TNS_ADMIN(对于使用TNS名称解析的情况),并且您的tnsnames.ora文件中已经包含了如何连接到orcl服务名的条目,那么您可以省略@172.16.2.40:1521/orcl部分

expdp user1/pwd schemas=user1 directory=bak dumpfile=DATA1.dmp logfile=DATA1-EXP.log

导入

0. 准备导入路径

cd /u01/app/oracle
mkdir bak && chmod 777 bak

1、创建目录(sqlplus)

create directory bak as '/u01/app/oracle/bak';

2、给目录赋权限(sqlplus)

grant read,write on directory bak to public;
create user user1 identified by pwd default tablespace USER_DATA1 temporary tablespace USER_TEMP1;
grant connect,resource,dba to user1;
exit

3、执行导入语句(cmd命令行)

impdp user1/pwd directory=bak dumpfile=DATA1.dmp logfile=DATA1-IMP.log

expdp完整脚本

@echo off
chcp 65001 > nul
setlocal enabledelayedexpansion
:: 创建目录(sqlplus)
:: create  directory  bak  as '/u01/app/oracle/bak';
:: 给目录赋权限(sqlplus)
:: grant read,write on directory bak to public;
echo 
:getInput
set /p today=请输入今天日期,如20240403:
if "!today!"=="" (  
    echo 输入不能为空,重新输入
    goto getInput  
) 
echo 已输入日期为:%today%
echo expdp user1/pwd@127.0.0.1:1521/orcl schemas=user1 directory=bak dumpfile=user1_backup_%today%.dmp logfile=user1_backup_%today%.log
echo --------
set /p bak=确认备份请输入y,否则不备份:
if "!bak!"=="y" (
echo %bak%
    expdp user1/pwd@127.0.0.1:1521/orcl schemas=user1 directory=bak dumpfile=user1_backup_%today%.dmp logfile=user1_backup_%today%.log
) else (
    echo 已取消备份!
)
echo 已完成
endlocal
pause
posted @ 2022-10-24 09:21  明月心~  阅读(302)  评论(0)    收藏  举报