ORACLE数据库的备份和恢复实验大全.docx
《ORACLE数据库的备份和恢复实验大全.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库的备份和恢复实验大全.docx(79页珍藏版)》请在冰豆网上搜索。
ORACLE数据库的备份和恢复实验大全
ORACLE数据库的备份和恢复
Exp导出和imp导入
EXP的概念
1、EXP是ORACLE的小工具。
用来操作数据库中的数据。
2、EXP只备份数据,和物理结构无关。
3、数据库必须在OPEN下,才可以使用EXP和IMP。
4、导出的是一个二进制文件
使用EXP的目的
1、数据库的迁移
2、归档历史的数据
3、重新组织表
4、转移数据给其它数据库
5、物理备份的辅助
EXP和IMP的使用方式
1、交互模式
2、命令行模式
3、参数文件模式
4。
图形向导模式
交互模式导出和导入数据
该实验的目的是初步认识逻辑备份
交互模式
在操作系统下键入:
exp
然后在提示下完成导出
缺点:
参数提示不全
下次运行不能自动重复,必须手工输入
实验:
在交互模式下导出EMP表
C:
\bk>exp
Export:
Release9.2.0.8.0-ProductiononSatSep2209:
36:
282007
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
Username:
scott/tiger
Connectedto:
Oracle9iEnterpriseEditionRelease9.2.0.8.0-Production
WiththePartitioning,OLAPandOracleDataMiningoptions
JServerRelease9.2.0.8.0-Production
Enterarrayfetchbuffersize:
4096>8192
Exportfile:
EXPDAT.DMP>c:
\bk\1.dmp
(2)U(sers),or(3)T(ables):
(2)U>t
Exporttabledata(yes/no):
yes>
Compressextents(yes/no):
yes>
回车就是默认
ExportdoneinZHS16GBKcharactersetandAL16UTF16NCHARcharacterset
AbouttoexportspecifiedtablesviaConventionalPath...
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>t1
..exportingtableT11rowsexported
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>dept
..exportingtableDEPT4rowsexported
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>emp
..exportingtableEMP14rowsexported
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>
Exportterminatedsuccessfullywithoutwarnings.
命令行模式导出和导入数据
该实验的目的是使用命令行模式进行逻辑备份
命令行模式
用显式的模式书写所需要的参数值
缺点:
当参数太多的时候书写不便,可读性差。
特殊字符需要转义
实验:
用命令行模式导出EMP表
C:
\bk>expscott/tigerfile=c:
\bk\1.dmptables=emp,dept,t1log=c:
\bk\1.log
Export:
Release9.2.0.8.0-ProductiononSatSep2209:
50:
172007
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
Connectedto:
Oracle9iEnterpriseEditionRelease9.2.0.8.0-Production
WiththePartitioning,OLAPandOracleDataMiningoptions
JServerRelease9.2.0.8.0-Production
ExportdoneinZHS16GBKcharactersetandAL16UTF16NCHARcharacterset
AbouttoexportspecifiedtablesviaConventionalPath...
..exportingtableEMP14rowsexported
..exportingtableDEPT4rowsexported
..exportingtableT11rowsexported
Exportterminatedsuccessfullywithoutwarnings.
参数文件模式导出和导入数据
该实验的目的是使用参数文件进行逻辑备份
参数文件模式
强烈推荐的模式
书写方便,可读性好,可以反复调用
Expparfile=d:
\bk\1.txt
实验:
用参数文件模式导出EMP表
参数文件中的注释是#
c:
\bk\e.txt文件的内容如下
userid=scott/tiger
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\exp_users.dmp
feedback=10000
tables=emp
C:
\bk>expparfile=c:
\bk\e.txt
图形模式
用OEM的图形向导来建立导出的参数文件,必须正确的配置首选项的参数。
主要有操作系统的密码和数据库的密码两个配置。
其中操作系统的帐号必须有批处理作业的权限。
导出的内容
1、导出表
2、导出用户
3、全数据库导出
4、导出表空间的定义
导出和导入表的操作
该实验的目的是通过对表的备份和恢复,掌握数据库的逻辑备份
1.表的备份和恢复
导出表t1,将t1表从数据库中删除droptablet1;导入表t1,验证表已经恢复
2.将scott用户的表导入到u1用户
建立u1用户,并赋予权限
conn/assysdba
dropuseru1cascade;
createuseru1identifiedbyu1;
grantconnect,resourcetou1;
alteruseru1defaulttablespaceusers;
在scott用户下建立实验表t81
connscott/tiger
droptablet81;
createtablet81asselect*fromemp;
updatet81setsal=81;
commit;
书写导出参数文件
c:
\bk\e81.txt文件的内容如下
userid=scott/tiger
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t81.dmp
feedback=10000
tables=t81
导出t81表
expparfile=c:
\bk\e81.txt
书写导入参数文件
c:
\bk\i81.txt文件的内容如下
userid=system/manager
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t81.dmp
feedback=10000
tables=t81
touser=u1
impparfile=c:
\bk\i81.txt
connu1/u1
select*fromt81;
3.将数据库一的scott用户的表导入到数据库二的u1用户
发生字符集的转换,先由数据库一的字符集转为导出客户端的字符集.
再由导出的字符集转换为导入的数据库二的字符集.最好都设置为相同的
字符集.如果一定要转换,请由小的字符集转到比它大的字符集.
userid=system/manager@remote_db
4.导出一张表的部分符合条件的行.用来备份历史数据和避开坏的数据块.
书写导出参数文件
c:
\bk\e81.txt文件的内容如下
userid=scott/tiger
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t81.dmp
feedback=10000
tables=t81
query='wheredeptno=30'
建立大的表,导出一张表除了某个块的所有行.
connscott/tiger
droptablet1;
createtablet1asselect*fromall_objects;
selectdbms_rowid.rowid_block_number(rowid)block#,count(*)from
t1groupbydbms_rowid.rowid_block_number(rowid);
BLOCK#COUNT(*)
-----------------
6891
6986
7085
7188
假如我想导出除了71块以外的行.
书写导出参数文件
c:
\bk\e1.txt文件的内容如下
userid=scott/tiger
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t1.dmp
feedback=10000
tables=t1
query='wheredbms_rowid.rowid_block_number(rowid)<>71'
5.追加导入数据
当建立表失败的时候,不终止导入,接着将数据追加到表中,当然表的结构要相同.如果
有约束的情况下不能违反约束
c:
\bk\i1.txt文件的内容如下
userid=scott/tiger
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t1.dmp
feedback=10000
tables=t1
ignore=y
总结:
导出表的时候是将表的所有信息都导出,包含索引的定义,对象权限,约束等.
导入的时候会找原来的表空间建立表,如果原来的表空间不存在,就建立表在导入用户的
默认表空间.所以如果原来表在system就很难处理,因为每次都先回system表空间,每个数据库
都有system表空间.这时我们要先将表挪动到其他表空间后再导出和导入.
和导出导入速度最相关的参数是buffer,设置正确的大小.一般我们在内存大的情况下设置100m或者更大.
内存小的情况下设置为10m左右.feedback是进度条,一般设置为最大表的百分之一.千万不要
设置为1,比如feedback=10000的含义是完成10000行以一个点来显示.
导出和导入用户操作
该实验的目的是逻辑备份用户
导出用户
书写导出参数文件
c:
\bk\e1.txt文件的内容如下
userid=scott/tiger
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t1.dmp
feedback=10000
参数文件中不说导出什么内容,默认的是导出当前用户的所有数据.
同时导出多个用户
c:
\bk\e1.txt文件的内容如下
userid=system/manager
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t1.dmp
feedback=10000
owner=HR,scottsh
#owner列表可以是以空格分割,逗号分割,或者回车分割
导入用户,建立用户并赋予权限,再进行导入.
conn/assysdba
dropuserscottcascade;
grantconnect,resourcetoscottidentifiedbytiger;
alteruserscottdefaulttablespaceusers;
c:
\bk\i1.txt文件的内容如下
userid=system/manager
buffer=100000
log=c:
\bk\exp.log
file=c:
\bk\t1.dmp
feedback=10000
fromuser=scott
touser=scott
导出和导入全数据库操作
该实验的目的是逻辑备份全数据库
全库导出
userid=system/manager
buffer=100000
file=d:
\bk\1.dmp
log=d:
\bk\1.log
feedback=10000
Full=y
导出除SYS用户以外的所有其它用户的数据,以及索引,约束和同义词等。
导出和导入表空间操作
该实验的目的是逻辑备份表空间内的数据,不含有存储过程.
导出表空间
userid=system/manager
buffer=100000
file=d:
\bk\1.dmp
log=d:
\bk\1.log
feedback=1
Tablespaces=users
导出users表空间内的所有表,以及这些表的约束和触发器。
数据泵(datapump)10g新特性
只能将数据存储在服务器端
不支持物理路径
直接用api来加载和卸载数据
性能要比exp/imp快的多
导出的控制更强,如只导出函数,存储过程等
监控信息更加丰富
数据泵
该实验的目的是使用10g的新特性,数据泵.
导出t1
Sqlplus>
connsystem/manager
createdirectorydpdata1as'c:
\bk';
grantread,writeondirectorydpdata1toscott;
Dos>expdphelp=y
expdpscott/tigertables=t1directory=DPDATA1
dumpfile=pump_t1.dmpjob_name=CASES_EXPORT
导入t1
impdpscott/tigertables=t1directory=DPDATA1dumpfile=pump_t1.dmpjob_name=CASES_EXPORT
监控作业
DBA_DATAPUMP_JOBS
DBA_DATAPUMP_SESSIONS
V$SESSION
V$SESSION_LONGOPS
导入和导出过程中
Control-C进入交互模式
CONTINUE_CLIENT继续工作
冷备份
停止数据库后做的备份
所有的数据库都可以冷备份
冷备份不能备局部,必须备份整体
没有增量备份策略
需要的空间较大
概念简单,执行简单
冷备份的执行步骤
1。
一致性停止数据库(shutdownimmediate)
2。
备份数据文件,控制文件,日志文件
密码文件,参数文件,临时文件(可选)
3。
启动数据库
书写冷备份脚本
select'copy'||name||'d:
\bk'fromv$datafile
unionall
select'copy'||name||'d:
\bk'fromv$controlfile
unionall
select'copy'||name||'d:
\bk'fromv$tempfile
unionall
select'copy'||member||'d:
\bk'fromv$logfile;
copyD:
\ORACLE\ORADATA\ORA10\SYSTEM01.DBFd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\UNDOTBS01.DBFd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\SYSAUX01.DBFd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\USERS01.DBFd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\TL.DBFd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\T2M.DBFd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\BIGTS.BIGd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\CONTROL01.CTLd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\CONTROL02.CTLd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\CONTROL03.CTLd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\TEMP.TMPd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\TEMP03.DBFd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\REDO03.LOGd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\REDO02.LOGd:
\bk
copyD:
\ORACLE\ORADATA\ORA10\REDO01.LOGd:
\bk
当然这是脚本的局部,前面得加停止数据库,后面加启动数据库,另外加上参数文件和密码文件得备份命令.
运行脚本
查看日志
1。
数据库停止了
2。
复制成功了
3。
数据库启动了
优点
冷备份是最可靠的备份
在不完全恢复前和后都最好做冷备份
缺点
必须停止数据库
空间占用大,冷备份是一个整体,不能备份局部.所以使用的时候有一定的局限性,当然你是归档数据库可以备份局部,但一般我们不这么做,因为归档数据库可以热备份,不必停止数据库.
冷备份的恢复
停止数据库,将备份复制回原来的目录就可以
将数据库带回到备份的时间点
如果想恢复全部的交易
请应用归档的日志
将冷备份恢复到其它目录
该实验的目的是理解什么是mount,如何修改文件的路径.
练习
将冷备份的数据库恢复到其它磁盘
1。
将冷备份的数据库恢复到不同的磁盘
2。
修改参数文件中control_files的值,指到新的文件
3。
启动数据库到mount状态
4。
改文件的名称到新位置
5。
Alterdatabaseopen;
修改实例的名称
该实验的目的是理解什么是nomount,注册表和服务的配置.
实例的名称可以更改
1。
修改instance_name参数的值,改为新的名称###
2。
建立新的服务项
oradim–new–sid###
3.修改注册表中oracle_sid=###
4.重新进入sqlplus
5.启动数据库
6。
验证selectinstance_namefromv$instance;
7.修改监听和网络服务名称的配置。
通过修改实例的名称
更加深入理解实例的概念
实例是访问数据库的方法
实例由内存加后台进程组成
条件
有冷备份
目的
将该备份恢复到其它主机上
实际应用
准备备用数据库
重大灾难导致主机不可再用
将冷备份恢复到其它主机
该实验的目的是彻底的理解冷备份,冷备份是放之四海皆准,可以跨越平台,但得重新建立控制文件.理解dump目录得重要性.
1。
新主机已经安装了同版本的数据库产品
2。
操作系统一致
3。
将备份恢复到任意目录
4。
将参数文件和密码文件恢复到oracle_home\database
建立参数文件中所描述的路径,或改为新路径
5。
修改注册表oracle_sid
6。
建立服务项oradim–new–sid###
7.修改参数文件的control_files到新的目标
8。
Startupmount
9.更改文件名称alterdatabaserenamefile‘…’to‘…’;
10.alterdatabaseopen;
实验目的
理解产品和数据库的关系
数据库的运行基本模式
非归档数据库(默认模式)
日志切换后不复制到其它位置,下次使用时将老信息覆盖。
如果日志被覆盖,以前的备份就只能恢复到日志被覆盖前的备份时间点。
归档模式
日志切换后要复制到其它位置。
数据库处于哪种模式由控制文件决定
将数据库改为归档数据库
该实验的目的是理解什么是归档,极其归档数据库得配置
改为归档数据库
修改参数
log_archive_format=ARC%S_%R.%T
log_archive_dest_1='location=c:
\arc'
停止数据库(一定要一致性停数据库)
启动到mount状态
Alterdatabasearchivelog;
Alterdatabaseopen;
验证archiveloglist;
归档数据库的维护
Altersystemswitchlogfile;
查看归档目录
select*fromv$archive_processes;
select*fromv$archived_log;
Select*fromv$log;
如果归档进程报错
archivelogstop;
archivelogstart;
热备份
数据库open下的备份
数据库必须处于归档状态
可以备份局部
没有增量备份策略
备份内容
数据文件
控制文件
归档日志文件
密码文件
参数文件
不能备份在线的日志文件
数据文件的备份
Altertablespaceusersbeginbackup;
Hostcopy#######********
Altertablespaceusersendbackup;
除了临时表空间外,所有表空间都要做一遍。
Select*fromv$backup;
交易一直存在,当你复制的时候,文件已经变化了
Altertablespaceusersbeginbackup;
1.将该表空间的文件单独存盘。
2。
将该表空间的文件头冷冻
3。
日志的产生加入了变化块的原来拷贝
4.数据文件体不影响,因为文件头中没有我们的数据,所以交易可以继续
5。
恢复的时候需要归档文件的支持
Altertablespaceusersendbackup;
将文件头解冻
将控制文件中最新的存盘时间SCN写入文件头
一句话,热备份的文件是一个无效的垃圾文件,需要日志的配合才能恢复,所以归档数据库是热备份的前提条件.热备份的文件中只有一个数据块是保真的,就是被冷冻的数据文件头的第一个块,文件头有8个块,数据库只会冷冻一个,因为数据库只是需要一个scn坐标而已.其余的7个数据块含有范围的信息,是会改变的,不能冷冻.我们备份的垃圾文件的数据块有两类,一是scn小于头的