使用Oracle 10g数据泵(EXPDP/IMPDP)
http://junmail.iteye.com/blog/215780
一、关于数据泵的概述
在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 <other_parameters> schema=scott exclude=sequence,table:"in('EMP','DEPT')"
impdp <other_parameters> schema=scott include=function,package,procedure,table:"='EMP'"
有了这些还不够,由于命令中包含了多个特殊字符,在不同的操作系统下需要通过转义字符才能使上面的命令顺利执行
如:EXCLUDE=TABLE:\"IN('BIGTALE')\"
oracle学习小结1
http://jackyrong.iteye.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
- 脱机备份与恢复
- OEM中导入导出数据
- 提高数据可用性策略
- 使用数据泵进行逻辑备份与恢复
故障类型:
实例恢复:
主要用于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 详解
一、 EXP
C:\>exp help=y
通过输入 EXP 命令和用户名 / 口令,您可以
在用户 / 口令之后的命令 :
实例 : EXP SCOTT/TIGER
或者,您也可以通过输入跟有各种参数的 EXP 命令来控制 “ 导出 ” 的运行方式。
要指定参数,您可以使用关键字 :
格式 : EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
实例 : EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2) ,如果 T1 是分区表
USERID 必须是命令行中的第一个参数。
关键字 说明 默认
USERID 用户名 / 口令
FULL 导出整个文件 (N)
BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表
二、 IMP
1. 获取帮助
imp help=y
2. 导入一个完整数据库
imp system/manager file=bible_db log=dible_db full=y ignore=y
3. 导入一个或一组指定用户所属的全部表、索引和其他对象
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4. 将一个用户所属的数据导入另一个用户
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)
5. 导入一个表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6. 从多个文件导入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
7. 使用参数文件
imp system/manager parfile=bible_tables.par
bible_tables.par 参数文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
8. 增量导入
imp system./manager inctype= RECTORE FULL=Y FILE=A
Oralce 数据泵
http://junmail.iteye.com/blog/215780
一、关于数据泵的概述
在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 <other_parameters> schema=scott exclude=sequence,table:"in('EMP','DEPT')"
impdp <other_parameters> schema=scott include=function,package,procedure,table:"='EMP'"
有了这些还不够,由于命令中包含了多个特殊字符,在不同的操作系统下需要通过转义字符才能使上面的命令顺利执行
如:EXCLUDE=TABLE:\"IN('BIGTALE')\"
end