一、关于数据泵的概述
在Oracle 10g中,数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。
通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。
数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以推出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改
二、数据泵的使用
示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
注意到与EXP不同,EXPDP增加了一个主要的参数:DIRECTORY
这个参数是用来定义一个路径,前面已经提到,数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server端的路径
如:
//创建目录
create or replace directory expdir as 'd:/';
//给test赋予目录的读写权限
grant read,write on directory expdir to test;
//导出数据
C:/>expdp test/test@acf dumpfile=test.dmp directory=expdir
三、EXPDP/IMPDP的停止与重启动
EXPDP和IMPDP的本质在于,通过API调用,把传统的EXP/IMP类交付式模式的操作,转变成数据库内部的job任务,从而实现了任务的可终止与重启动。
c:/expdp test/test@acf directory=dpdata dumpfile=full.dmp full=y job_name=expfull
在执行过程中,可以拿下Ctrl+C组合键,退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务。
在Oracle 10中,由于EXPDP是数据库内部定义的任务,已经与客户端无关。退出交互之后,会进入export的命令行模式,此时支持status等查看命令:
Export> status
如果想停止改任务,可以发出stop_job命令
Export> stop_job
接下来可以通过命令行再次连接到这个任务
c:/expdp test/test@acf attach=expfull
通过start_job命令重新启动导出
Export> start_job
4、EXPDP排出部分对象的导出
在EXPDP的帮助文件中,可以看到存在EXCLUDE和INCLUDE参数
这个两个参数文档中介绍的命令格式存在问题,这个两个参数的正确用法是:
EXCLUDE=OBJECT_TYPE[:name_clause][,...]
INCLUDE=OBJECT_TYPE[:name_clause][,...]
示例:
expdp
impdp
有了这些还不够,由于命令中包含了多个特殊字符,在不同的操作系统下需要通过转义字符才能使上面的命令顺利执行
如:EXCLUDE=TABLE:/"IN('BIGTALE')/"
oracle学习小结1
http://jackyrong.javaeye.com/blog/482724
7 导出表
导出自己的表
exp userid=scott/xxx@xxx tables=(a,b) file=c:/xxx.dmp;
导出其他的方案
exp userid=system/xx@xxx tables=(scott.a,scott.b) file=c:/xxx.dmp
只导出表结构,不导数据
exp userid=system/xx@xxx tables=(scott.a,scott.b) file=c:/xxx.dmp rows=n;
如果要导出大表,则加参数direct=y
导出方案
exp userid=system/xx@xxx owner=(scott,system) file=c:/xxxx.dmp;
Oracle 备份与恢复
http://www.oracle.com/technology/global/cn/obe/2day_dba/backup.htm
http://www.oracle.com.cn/viewthread.php?tid=33849
故障类型:
实例恢复:
主要用于DB实例故障引起的DB停机,OS错误、意外掉电、进程故障、shutdown abort终止时故障
实例恢复,在再次启动DB时,由DB根据重做日志文件记录的内容(如未提交的事务,已提交但未完成的事务)自动完成恢复。
介质恢复:联机备份时发生实例故障,则需介质恢复,介质损坏引起介质恢复
脱机备份与恢复/冷备份与恢复、联机备份与恢复/热备份与恢复、逻辑备份与恢复、
脱机备份与恢复/冷备份与恢复
http://bbs.chinaunix.net/viewthread.php?tid=776954
shutdown 默认为 normal
shutdown normal //快速关闭,做个检查点
不允许新的连接、不等待会话结束、事务结束、做个检查点并关闭数据文件。启动时不需要实例恢复。
shutdown abort //快速关闭,重启DB恢复
不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件.启动时自动进行实例恢复
不可联机备份与恢复,'不干净'关闭数据库方式,可能包含未提交事务和不一致数据.若执行abort,则应重启DB,由DB
对事务和不一致数据进行处理,然后执行shutdown normal、shutdown immediate或shutdown transaction,最后脱机备份与恢复
shutdown immediate //快速关闭,截断当前事务
不允许新的连接、不等待会话结束、不等待事务结束、做个检查点并关闭数据文件.没有结束的事务自动rollback.
启动时不需要实例恢复。
shutdown transaction //快速关闭,等待事务结束
不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件.启动时不需要实例恢复.
对于ABORT,DB Buffer Cache的内容没有写入数据文件,没有提交的事务也没有回滚。数据库没有dismount和关闭,数据文件也没有关闭。当数据库启动时,需要通过redo log恢复数据,通过回滚段对事务回滚,对资源进行释放。
对于NORMAL、TRANSACTIONAL、IMMEDIATE,DB Buffer Cache的内容写入了数据文件,没有提交的事务被回滚,所有的资源被释放,数据库被“干净”的关闭。
STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ database] | MOUNT | NOMOUNT]
startup open:
缺省参数为OPEN,打开数据库,允许数据库的访问.当前实例的控制文件中所描述的所有文件都已经打开.
startup mount:
仅仅给DBA进行管理操作,不允许数据库的用户访问。仅仅只是当前实例的控制文件被打开,数据文件未打开。
startup nomount:
仅仅通过初始化文件,分配出SGA区,启动数据库后台进程,没有打开控制文件和数据文件。不能任何访问数据库。
STARTUP PFILE=filename:
以filename为初始化文件启动数据库,不是采用缺省初始化文件.
STARTUP FORCE:
中止当前数据库的运行,并开始重新正常的启动数据库。
STARTUP RESTRICT:
只允许具有RESTRICTED SESSION权限的用户访问数据库。
STARTUP RECOVER:
数据库启动,并开始介质恢复。
若执行shutdown abort则应重启DB,由DB对事物不一致数据进行处理,然后执行shutdown normal,shutdown immediate或shutdown transaction,最后执行脱机备份与恢复.脱机备份保证DB,脱机状态较长.
联机备份与恢复/热备份与恢复 7x24
DB处于archirvelog(归档模式),好处:当数据文件或表空间处于备份与恢复时,用户仍可访问其他数据.
逻辑备份与恢复/数据备份
客服端工具imp/exp 数据泵工具expdp/impdp
特点:多种方式,DB级、方案(或用户)级/表级.
不同OS间传输,oracle二进制文件存储.
不同oracle间传输
低>>>高版本间升级
高>>>低版本间升级
提高DB可用性策略
设计备份与恢复策略前考略的问题
有多少数据需要保护,能承受多少数据丢失?
DB那些数据常修改,何时载数据,何时改DB结构?
备份可脱机多长时间,是否7x24小时,何时使用DB最频繁?
恢复时间多快?
备份/恢复所需要的资源?如:工具、人员、设备、时间等
是否需要闪回技术逆向更改?
周备份,短时停数据库,则热备.
防止故障
数据/存储故障
逻辑/物理故障
物理故障:数据文件、控制文件、重做日志文件和归档日志文件.
磁盘毁损,人为意外删除数据文件或改写配置文件
逻辑故障:表、索引、或表记录.一般人为原因是最大原因
人为逻辑故障:
误删文件、数据
update语句中不正确使用where子句更新过多行
oracle10g flashback (闪回)技术支持航、事务、表、表空间和DB存储故障
估计空间量
设计布局、数据、归档文件分开,以免I/O竞争
创建逻辑卷和文件系统
定义和执行数据备份和恢复计划
创建用户的数据库
ASM(自动存储管理),内核中提供垂直集成文件系统和数据卷管理器
ASM本地镜像机制扩展SAME(全部条带话和镜像)用于防治存储故障的选件.
启动实现三倍镜像,支撑硬件辅助恢复技术能力、将强数据保护.
备份策略
非7x24 noarchivelog下操作
7x24 archivelog操作,2次/周、2次/月
多个DB恢复目录的恢复管理器 RMAN
控制文件
SQL>select status,name from v$controlfile;
数据文件
SQL>select status,file_name form dba_data_files;
联机重做日志文件
SQL>select group#,status,member from v$logfile;
脱机备份
--不连DB方式启动sqlplus
SQL>sqlplus /nolog
SQL>connect system/password AS SYSDBA
--脱机备份
SQL>shutdown immediate
--备份拷贝:控制文件、数据文件、重做日志文件 ok
SQL>startup open
--在改变DB结构(如改变参数设置:表空间、表及控制文件,数据文件,重做日志文件的位置和名称)后,都应脱机备份
脱机恢复
data pump(数据泵)进行逻辑备份与恢复
expdp/impdp 服务端程序使用,可以解决:a.表 b.方案 c.数据库
实现逻辑备份和恢复
数据方案之间传输
数据库之间传输
数据库应用软件升级
消除磁盘碎片
SQL>connect sys/password AS SYSDBA
SQL>create directory dump_dir AS 'e:/dump';
SQL>grant read,write on directory dump_dir to system,myuser;
expdp username/password parameter1[,parameter2,...]
C:/expdp system/password full=y estimate_only=y estimate=statistice nologfile=y
导出表
导出myuser方案的department和student表的过程
c:/expdp myuser/password directory=dump_dir dumpfile=myusertab.dmp logfile=myusertab.log tables=department,student
导出方案
导出muyser方案的过程
c:/expdp myuser/password directory=dump_dir dumpfile=myuser.dmp logfile=myuser.log schemas=myuser job_name=exp_myuser_schema
导出数据库
使用参数文件导出数据库
文件:e:/dump/myparfile.txt
内容:dumpfile=dump_dir:mydb_%U.dmp
logfile=dump_dir:mydb.log
filesize=100M
job_name=exp_full
full=y
导出整个数据库过程,时间较长多则几个小时,不易完全成功,不建议使用
c:/expdp system/password parfile=e:/dump/myparfile.txt
使用impdp导入数据 impdp username/password parameter1[,parameter2,...]
parameter如:sqlfile=[directory_object:]file_name sqlfile=目录对象名:sql脚本名
导入数据
SQL>connect myuser/password
SQL>delete from student;
SQL>commit;
C:/impdp myuser/password directory=dump_dir dumpfile=myusertab.dmp logfile=myuser_imp.log conect=data_only table=student
导入表
SQL>drop table student cascade constraints;
SQL>desc student;
c:/impdp myuser/password directory=dump_dir dumpfile=myusertab.dmp logfile=myusertab_imp.log tables=student
导入方案
SQL>connect system/password
SQL>drop user myuser cascade;
SQL>grant connect,resource to myuser identified by password
SQL>alter user myuser default tablespace myts01 temporary tablespace=temp;
若导入前没有创建用户,则导入方案是会有错误提示信息
c:/impdp system/password directory=dump_dir dumpfile=myuser.dmp logfile=myuser_imp.log schemas=myuser job_name=imp_schema
在OEM中导出导入数据 集成impdp/expdp
---------------------------------------------------------------------------------------------------------------------
Oracle imp/exp 详解