exp备份机制向expdp备份机制转换方案

Oracle · newbie_l · 于 1年前发布 · 669 次阅读

作者:云吞信息-cdshrewd

1.总体说明

某客户testdb由于数据库升级到11.2.0.4,从性能和可靠性的角度考虑,逻辑备份的方式建议采用expdp数据泵的方式进行。考虑到之前的备份都不是存放在服务器上,为了保持既有的方式,需要将expdp备份好的数据从AIX服务器上拷贝到本地windows主机上。本文档介绍的内容包括两部分:1、如何使用expdp备份数据;2、如何将备份好的文件拷贝到本地。

2.expdp备份配置

1.文件系统准备

建议新建一个文件系统,挂载点可以命名为/testdbexpdp,相关命令如下;
mklv -t jfs2 -y lv_expdp rootvg  100G
crfs -v jfs2 -d lv_expdp -m /testdbexpdp -A 'yes' -p 'rw' -a agblksize='4096' -a logname='INLINE'
mount /testdbexpdp
chown -R oracle:dba /testdbexpdp

2.directory准备

su - oracle
sqlplus / as sysdba
SQL>create directory datapump as '/testdbexpdp';   
SQL>grant read,write on directory datapump to SYSTEM,TEST;

3.导出命令(以oracle用户执行)

expdp userid=\"/ as sysdba\" directory=datapump dumpfile=TEST_$(date +%Y%m%d%H%M)_%U.dmp logfile=TEST_$(date +%Y%m%d%H%M).log parallel=4 schemas=TEST, TEST1
针对以上命令说明如下:
*directory=datapump*
这里是指定数据备份的目录名称,目录的名称具体对应那个目录,可以通过以下命令查看:
select * from dba_directories;
*dumpfile=TEST_$(date +%Y%m%d%H%M)_%U.dmp*
这里是指定导出的文件名,为了避免覆盖,所以这里加上了日期
*parallel=4*
这里是指定了并行导出,从而可以提高备份效率,使用该参数要求文件名最后加一个%U,从而生成多个文件
*schemas=TEST, TEST1*
这里是指定要导出哪些用户的数据,采用","分隔用户名

3.从AIX拷贝文件到Windows

1.下载psftp

下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

2.下载文件

psftp oracle@ 10.12.124.1
cd /testdbexpdp
lcd D:\testdbbak
mget " TEST_*.dmp"
exit

4.参考脚本及使用说明

为了方便实现自动化,这里给出参考脚本。相关具体位置,请根据实际情况确认。
脚本名称	建议存放位置	作用	执行位置及用户	如何调度
----------------------------------------------------------------------
expdp_testdb.sh	
/opt/oracle	
用户导出数据	
在AIX服务器使用oracle用户执行	
建议创建crontab任务执行
----------------------------------------------------------------------
psftp.exe	
建议存放在本地win
dows的D:\testdbbak\目录下	
负责文件传输	
本地windows,administrator用户	
由get_files.cmd负责控制调度
----------------------------------------------------------------------
et_files.cmd	
建议存放在本地windows的D:\testdbbak\目录下,必须和psftp.exe位于相同目录	
负责执行psftp脚本	
本地windows,administrator用户	
建议创建windows任务计划
------------------------------------------------------------------------
fileTransfer.bat	
建议存放在本地windows的D:\testdbbak\目录下,必须和psftp.exe位于相同目录	
负责提供psftp命令	
本地windows,administrator用户	
由get_files.cmd负责控制调度

附:

expdp_testdb.sh:

# cd /testdbexpdp    #这里千万确认目录位置正确(这个位置对应datapump这个directory),方能取消注释
# rm TEST_*.dmp     #这里千万确认文件名正确不会误删除,方能取消注释
expdp userid=\"/ as sysdba\" directory=datapump dumpfile=TEST_$(date +%Y%m%d%H%M)_%U.dmp logfile=TEST_$(date +%Y%m%d%H%M).log parallel=4 schemas=TEST, TEST1

get_files.cmd:

psftp oracle@ 10.12.124.1 -b D:\testdbbak\fileTransfer.bat -pw oracle

fileTransfer.bat:

cd /testdbexpdp
lcd D:\testdbbak
mget " TEST_*.dmp"
exit

本文由 newbie_l 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。


共收到 0 条回复
1楼 已删除.
ruyi#211个月前 0 个赞

牛逼~~

ruyi#311个月前 0 个赞

牛逼~~

回复本帖 (需要登录)