77范文网 - 专业文章范例文档资料分享平台

[精品]Oracle 数据库备份与恢复总结(2)

来源:网络收集 时间:2018-12-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Oracle数据库备份与恢复总结

关于Oracle数据库的备份与恢复,网上有不少文章。经过了不少项目,以及我在给公 司做培训时也有一些总结,现在总结在一起贴出来。以下方法,有一些可能不能完全归纳为

备份与恢复,但是作为开发DBA,有时也是很有用的。对于生产库,一般还是推荐使用 ARCHIVELOG模式下的OS备份或RMAN方法,要求比较高的可能还必须用到RAC等并 行处理的架构,这可是一个很大的主题了,在此不作讨论。

这里列出来,只是自己的一个备忘录以备需要时查看,有好多不全面或者不当的地方, 欢迎各位补充、批评指正!同时,本文借鉴了网上的一些相关文章,希望大侠们不要见怪, 此处一并谢过。

?exp/imp(导出与导入装库与卸库) ?SQL*Loader

?UserManagedBackupandRecovery(用户管理的备份与恢复) ?RMAN

?Flashback ?LogMiner

?备份与恢复的规划

1.exp/imp(导出与导入,装库与卸库) 1.1基本命令 1.获取帮助 $exphelp=y $imphelp=y 2.三种工作方式 (1)交互式方式

$exp//然后按提示输入所需要的参数 (2)命令行方式

$expuser/pwd@dbnamefile=/oracle/test.dmpfull=y//命令行中输入所需的参数 (3)参数文件方式

$expparfile=username.par//在参数文件中输入所需的参数 参数文件username.par内容 userid=username/userpassword buffer=8192000 compress=n grants=y

file=/oracle/test.dmp full=y 3.三种模式

(1)表方式,将指定表的数据导出/导入。 导出:

导出一张或几张表:

$expuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1,table2

6

导出某张表的部分数据

$expuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1query=\\”wherecol1=\\’?\\’

andcol2\\

导入一张或几张表

$impuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1,table2fromuser=dbuser touser=dbuser2commit=yignore=y

(2)用户方式,将指定用户的所有对象及数据导出/导入。 导出:

$expuser/pwdfile=/dir/xxx.dmplog=xxx.logowner=(xx,yy) 只导出数据对象,不导出数据(rows=n)

$expuser/pwdfile=/dir/xxx.dmplog=xxx.logowner=userrows=n 导入:

$impuser/pwdfile=/dir/xxx.dmplog=xxx.logfromuser=dbusertouser=dbuser2 commit=yignore=y

(3)全库方式,将数据库中的所有对象导出/导入 导出:

$expuser/pwdfile=/dir/xxx.dmplog=xxx.logfull=ycommit=yignore=y 导入:

$impuser/pwdfile=/dir/xxx.dmplog=xxx.logfromuser=dbusertouser=dbuser2 1.2高级选项

1.分割成多个文件

以多个固定大小文件方式导出:这种做法通常用在表数据量较大,单个dump文件可能 会超出文件系统的限制的情况

$expuser/pwdfile=1.dmp,2.dmp,3.dmp,?filesize=1000mlog=xxx.logfull=y 以多个固定大小文件方式导入

$impuser/pwdfile=1.dmp,2.dmp,3.dmp,?filesize=1000mtables=xxxfromuser=dbuser touser=dbuser2commit=yignore=y 2.增量导出/导入

//oracle9i以后exp不再支持inctype

必须为SYS或SYSTEM才可执行增量导出导入 增量导出:包括三个类型:

(1)“完全”增量导出(Complete)//备份整个数据库

$expuser/pwdfile=/dir/xxx.dmplog=xxx.loginctype=complete (2)“增量型”增量导出导出上一次备份后改变的数据。

$expuser/pwdfile=/dir/xxx.dmplog=xxx.loginctype=incremental

(3)“累计型”增量导出(Cumulative)只导出自上次“完全”导出之后数据库中变化 了的信息。

$expuser/pwdfile=/dir/xxx.dmplog=xxx.loginctype=cumulative 增量导入:

$impusr/pwdFULL=yinctype=system/restore/inctype 其中:

SYSTEM:导入系统对象

7

RESTORE:导入所有用户对象 3.以SYSDBA进行导出/导入 1.用于Oracle技术支持 2.用于表空间传输 例:

$imp\\'usr/pwd@instanceassysdba\\'tablespaces=xxtransport_tablespace=y file=xxx.dmpdatafiles=xxx.dbf

$impfile=expdat.dmpuserid=”””sys/passwordassysdba”””transport_tablespace=y

“datafile=(c:tempapp_data,c:tempapp_index)” 4.表空间传输(速度快)

表空间传输是8i新增加的一种快速在数据库间移动数据的一种办法,是把一个数 据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成dmp文件,这在有些时候是非常管用的,因为传输表空间移动数据就象复制文件一样快。 1.关于传输表空间有一些规则(10g前):

?源数据库和目标数据库必须运行在相同的硬件平台上。

?源数据库与目标数据库必须使用相同的字符集。 ?源数据库与目标数据库一定要有相同大小的数据块 ?目标数据库不能有与迁移表空间同名的表空间 ?SYS的对象不能迁移

?必须传输自包含的对象集

?有一些对象,如物化视图,基于函数的索引等不能被传输 (同字节序文件的跨平台可以用更换数据文件的文件头的方法)

(10g支持跨平台的表空间传输,只要操作系统字节顺序相同,就可以进行表空间 传输。需要使用RMAN转换文件格式,略) 2.检测一个表空间是否符合传输标准的方法:

SQL>execsys.dbms_tts.transport_set_check(‘tablespace_name’,true); SQL>select*fromsys.transport_set_violations;

如果没有行选择,表示该表空间只包含表数据,并且是自包含的。对于有些非自包 含的表空间,如数据表空间和索引表空间,可以一起传输。 3.简要使用步骤:

如果想参考详细使用方法,也可以参考ORACLE联机帮助。

1.设置表空间为只读(假定表空间名字为APP_Data和APP_Index) SQL>altertablespaceapp_datareadonly; SQL>altertablespaceapp_indexreadonly; 2.发出EXP命令

SQL>hostexpuserid=”””sys/passwordassysdba”””transport_tablespace=y tablespaces=(app_data,app_index) 以上需要注意的是

·为了在SQL中执行EXP,USERID必须用三个引号,在UNIX中也必须注意 避免“/”的使用

·在816和以后,必须使用sysdba才能操作

8

·这个命令在SQL中必须放置在一行(这里是因为显示问题放在了两行) 3.拷贝.dbf数据文件(以及.dmp文件)到另一个地点,即目标数据库

可以是cp(unix)或copy(windows)或通过ftp传输文件(一定要在bin方式) 4.把本地的表空间设置为读写

$altertablespaceapp_datareadwrite; $altertablespaceapp_indexreadwrite;

5.在目标数据库附加该数据文件(直接指定数据文件名)

(表空间不能存在,必须建立相应用户名或者用fromuser/touser) $impfile=expdat.dmpuserid=”””sys/passwordassysdba”””

transport_tablespace=ydatafiles=(“c:\\app_data.dbf,c:\\app_index.dbf”)tablespaces=app_data,app_indextts_owners=hr,oe 6.设置目标数据库表空间为读写

$altertablespaceapp_datareadwrite; $altertablespaceapp_indexreadwrite;

1.3优化

1.加快exp速度

加大large_pool_size,可以提高exp的速度

采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查. 设置较大的buffer,如果导出大对象,小buffer会失败。 export文件不在ORACLE使用的驱动器上 不要export到NFS文件系统

UNIX环境:用管道模式直接导入导出来提高imp/exp的性能 2.加快imp速度

建立一个indexfile,在数据import完成后在建立索引 将import文件放在不同的驱动器上 增加DB_BLOCK_BUFFERS 增加LOG_BUFFER

用非归档方式运行ORACLE:ALTERDATABASENOARCHIVELOG;

建立大的表空间和回滚段,OFFLINE其他回滚段,回滚段的大小为最大表的1/2 使用COMMIT=N 使用ANALYZE=N 单用户模式导入

UNIX环境:用管道模式直接导入导出来提高imp/exp的性能 3.通过unix/LinuxPIPE管道加快exp/imp速度 通过管道导出数据:

1.通过mknod-p建立管道

$mknod/home/exppipep//在目录/home下建立一个管道exppipe注意参数p 2.通过exp和gzip导出数据到建立的管道并压缩

$exptest/testfile=/home/exppipe&gzipexp.dmp.gz $exptest/testtables=bitmapfile=/home/newsys/test.pipe& gzipbitmap.dmp.gz 3.导出成功完成之后删除建立的管道

9

$rm-rf/home/exppipe 导出脚本:

###UNIX下ORACLE数据库通过PIPE管道进行备份

######using\trap\

LOGFILE=/opt/bakup/log/bakup_ora.log

exportLOGFILE

DUMPDIR=/archlog_node1 exportDUMPDIR exec>$LOGFILE2>&1 echo

echo'Beginat'`date` echo

#clearoldresultfile cd$DUMPDIR

if[-fexp.dmp.Z] then

echo\rmexp.dmp.Z fi

#makepipe

mkfifoexp.pipe chmoda+rwexp.pipe #gainthedmp.Zfile

compressexp.dmp.Z&

su-uoracle-c\echo

echo'expendat'`date` echo #rmpipe rmexp.pipe

#tarthedmp.Zfiletotape mt-f/dev/rmt/0rew

tarcvf/dev/rmt/0exp.dmp.Z echo

echo'tarendat'`date` echo

通过管道导入生成的文件: 1.通过mknod-p建立管道

$mknod/home/exppipep 2.导入生成的压缩文件

10

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库[精品]Oracle 数据库备份与恢复总结(2)在线全文阅读。

[精品]Oracle 数据库备份与恢复总结(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/397585.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: