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
浙公网安备 33010602011771号