Oracle数据库备份与恢复.docx
- 文档编号:1751271
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:77
- 大小:77.16KB
Oracle数据库备份与恢复.docx
《Oracle数据库备份与恢复.docx》由会员分享,可在线阅读,更多相关《Oracle数据库备份与恢复.docx(77页珍藏版)》请在冰点文库上搜索。
Oracle数据库备份与恢复
一:
exp/imp(导出与导入装库与卸库)
1.1基本命令
1.获取帮助
$exphelp=y
$imphelp=y
2.三种工作方式
(1)交互式方式
$exp //然后按提示输入所需要的参数
(2)命令行方式
$exp[email=[ft=#333333,,]user/pwd@dbname]user/pwd@dbname[/email]file=/oracle/test.dmpfull=y //命令行中输入所需的参数
(3)参数文件方式
$expparfile=username.par //在参数文件中输入所需的参数
参数文件username.par内容userid=username/userpasswordbuffer=8192000
compress=ngrants=y
file=/oracle/test.dmpfull=y
3.三种模式
(1)表方式,将指定表的数据导出/导入。
导出:
导出一张或几张表:
$expuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1,table2
导出某张表的部分数据
$expuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1query=\“wherecol1=\‘…\’andcol2\<…\”
导入:
导入一张或几张表
$impuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1,
table2fromuser=dbusertouser=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=1000m log=xxx.logfull=y
以多个固定大小文件方式导入
$impuser/pwdfile=1.dmp,2.dmp,3.dmp,…filesize=1000m
tables=xxxfromuser=dbusertouser=dbuser2 commit=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:
导入系统对象
RESTORE:
导入所有用户对象
3.以SYSDBA进行导出/导入
1.用于Oracle技术支持
2.用于表空间传输
例:
$ imp \'usr/pwd@instance as sysdba\' tablespaces=xx transport_tablespace=yfile=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=ytablespaces=(app_data,app_index)
以上需要注意的是。
为了在SQL中执行EXP,USERID必须用三个引号,在UNIX中也必须注意避免“/”的使用。
在816和以后,必须使用sysdba才能操作。
这个命令在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=y datafiles=(“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.导出成功完成之后删除建立的管道
$rm -rf /home/exppipe
导出脚本:
###UNIX下ORACLE数据库通过PIPE管道进行备份
######using"export"and"tar"commandtobakuporacledatebase#######
trap""1#nohup
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]
thenecho"clearoldresultfile"
rmexp.dmp.Z
fi
# makepipe
mkfifoexp.pipe
chmoda+rwexp.pipe
# gainthedmp.Zfile
compress
su-uoracle-c"expuserid=ll/llfile=$DUMPDIR/exp.pipefull=ybuffer=20000000"
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.导入生成的压缩文件
$imptest/testfile=/home/exppipefromuser=testtouser=macro&gunzip
3.删除管道
$rm–fr/home/exppipe
4.全库导入的一般步骤
注意:
在导出时,需要通过toad或其他工具提取源数据库创建主键和索引的脚本
1.先全库加rows=n把结构导进去
$impsystem/managerfile=exp.dmplog=imp.logfull=yrows=nindexes=n
2.使业务用户的触发器失效/删除主键和唯一索引
spooldrop_pk_u.sql
select'altertable'||table_name||'dropconstraint'||constraint_name||';'
fromuser_constraints
whereconstraint_typein('P','U');
/
spooloff
spooldisable_trigger.sql
select'altertrigger'||trigger_name||'disable;'
fromuser_triggers;
/
spooloff
@drop_pk_u.sql
@disable_trigger.sql
3.以ignore=y全库导入$impsystem/managerfile=exp.dmplog=imp.logfull=yignore=y
4.通过toad或其他工具提取源数据库创建主键和索引的脚本,在目标数据库中创建主键和索引。
使触发器生效。
1.4常见问题
1.字符集问题
ORACLE多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示,货币形式,排序方式和CHAR,VARCHAR2,CLOB,LONG字段的数据的显示等有效。
ORACLE的多国语言设置最主要的两个特性就是国家语言设置与字符集设置,国家语言设置决定了界面或提示使用的语言种类,字符集决定了数据库保存与字符集有关数据(如文本)时候的编码规则。
ORACLE字符集设定,分为数据库字符集和客户端字符集环境设置。
在数据库端,
字符集在创建数据库的时候设定,并保存在数据库props$表中。
在客户端的字符集环境比较简单,主要就是环境变量或注册表项NLS_LANG,注意NLS_LANG的优先级别为:
参数文件<注册表<环境变量 使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。 这里需要一个2进制文件编辑工具即可,如uedit32.用编辑方式打开导出的dmp文件,获取2、3字节的内容,如0001,先把它转换为10进制数,为1,使用函数 NLS_CHARSET_NAME即可获得该字符集: SQL>selectnls_charset_name (1)fromdual;NLS_CHARSET_NAME (1) -------------------US7ASCII 可以知道该dmp文件的字符集为US7ASCII,如果需要把该dmp文件的字符集换成ZHS16GBK,则需要用NLS_CHARSET_ID获取该字符集的编号: SQL>selectnls_charset_id('zhs16gbk')fromdual;NLS_CHARSET_ID('ZHS16GBK') -------------------------- 把852换成16进制数,为354,把2、3字节的0001换成0354,即完成了把该dmp文件字符集从us7ascii到zhs16gbk的转化,这样,再把该dmp文件导入到zhs16gbk字符集的数据库就可以了。 2.版本问题 Exp/Imp很多时候,可以跨版本使用,如在版本7与版本8之间导出导入数据,但这样做必须选择正确的版本,规则为: 总是使用IMP的版本匹配数据库的版本,如果要导入到816,则使用816的导入工具。 总是使用EXP的版本匹配两个数据库中低的那个版本,如在815与816之间互导,则使用815的EXP工具。 imp和exp版本不能往上兼容: imp可以导入低版本exp生成的文件,不能导入高版本exp生成的文件。 二: SQL*Loader 2.1基本知识 Oracle的SQL*LOADER可以将外部格式化的文本数据加载到数据库表中。 通常与SPOOL导出文本数据方法配合使用。 1.命令格式 SQLLDRkeyword=value[,keyword=value,……] 例: $sqlldruser/pwdcontrol=emp.ctldata=emp.datbad=emp.badlog=emp.log 2.控制文件 SQL*LOADER根据控制文件可以找到需要加载的数据。 并且分析和解释这些数据。 控制文件由三个部分组成,具体参数参考帮助文档: 1.全局选件,行,跳过的记录数等;2.INFILE子句指定的输入数据;3.数据特性说明。 comment: ——注释 例: loaddatainfile* append ——除了append外,还有insert、replace、truncate等方式 intotableempfieldsterminatedby‘|’ ( no floatexternal,namechar(20), age integerexternal, duty char (1),salary floatexternal, upd_ts date(14)‘YYYYMMDDHH24MISS’) begindata 100000000003|Mulder|000020|1|000000005000|20020101000000 100000000004|Scully|000025|2|000000008000|20020101235959 控制文件中infile选项跟sqlldr命令行中data选项含义相同,如使用infile*则表明数据在本控制文件以begindata开头的区域内。 一些选项: FIELDSTERMINATEDBYWHITESPACEFIELDSTERMINATEDBYx'09'FILLER_1FILLER,//指定某一列将不会被装载 DEPTNOposition(1: 2),DNAMEposition(*: 16),//指定列的位置SEQNORECNUM//载入每行的行号 SKIPn //指定导入时可以跳过多少行数据 3.数据文件 按控制文件数据格式定义的数据行集, 例: 100000000001|Tom|000020|1|000000005000|20020101000000 100000000002|Jerry|000025|2|000000008000|20020101235959 固定格式、可变格式、流记录格式: 固定格式: 当数据固定的格式(长度一样)时且是在文件中得到时,要用INFILE"fixn" loaddata infile'example.dat'"fix11" intotableexample fieldsterminatedby','optionallyenclosedby'"' (col1char(5),col2char(7))example.dat: 001,cd,0002,fghi, 00003,lmn, 1,"pqrs", 0005,uvwx,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 备份 恢复