oracle 10g数据泵之impdp |
作者 Slyべ凌云 查看 287 发表时间 2008/12/23 13:07 【论坛浏览】 |
要了解impdp,请先了解导出,我之前作过导出的笔记:oracle 10g数据泵之expdp。这两个笔记也许只对程序员有用,通常用于把正式区的数据导入到测试区,对数据库管理员也许帮助不大,他们使用这些工具大多是用于数据备份。 impdp可以将数据加载到整个数据库、特定的方案(也就是用户)、特定的表空间或者特定的表,也可以将表空间传输到数据库。impdp支持网络模式操作,即从另一个数据库加载数据。 使用impdp导入数据 1.指定转储文件(存放导出数据的文件)存放的目录 SQL>connect sys/password as sysdba; SQL>create directory dump_dir as ‘d:/dump’; 2.使用impdp命令 开始-->运行-->cmd impdp username/password parameter1[,parameter2,….] 其中,username表示用户名;password表示用户密码;parameter1和parameter2表示参数。参数的类型有近40个,可以使 用命令impdp help=y查看所有参数和参数的含义。下面介绍一些对导入数据库和表需要的常用参数,它们的含义和在expdp中的含义完全相同。 content :指定导入的内容。语法格式:content={all| data_only|metadate_only}。其中all表示导入对象定义及其数据,data_only表示只导入对象数据,metadate_only表示只导入对象定义。默认为all directory:指定转储文件和日志文件所在的默认位置(也就是保存数据的文件位置)。语法格式:directory=direcotry_object。direcotry_object 是create directory语句创建的目录对象。 dumpfile:指定转储文件的名称。语法格式:dumpfile=[ direcotry_object:]file_name[,….]。direcotry_object默认为上面directory参数指定的目录对 象。file_name默认名称是expdat.dmp。如果导入文件过大,可以指定多个文件名,如 direcotry_object:mydb_%U.dmp。”%U”是一个占位符,使用这种方式不会出现同名的文件。 logfile:指定日志文件的名称。语法格式:logfile=[ direcotry_object:]file_name。direcotry_object默认为directory参数指定的目录对象。 file_name日志文件,默认名称是export.log。 exclude:导入时要排除的对象。语法格式: exclude=object_type[:name_clause][,….]。object_type表示对象类型,如table、view、 index、function、preocedure,name_clause表示使用SQL语句,指定对象名的筛选条件,如table:”like ‘emp%’”表示排除emp开始的任何表。 include:导入时要包含的对象。语法格式:include =object_type[:name_clause][,….]。object_type和name_clause含义同exclude参数解释一样。 include和exclude不可以同时使用。当一个对象被包含时,所有相关对象也被包含。 network_link:指定网格导入时的数据库链接名。语法格式:network_link=database_link。database_link表示远程数据库链接名。 query:指定导入数据的where条件。语法格式:query=[schema.][table_name:]query_clause。其中 schema表示方案名,也就是用户名,table_name表示表名,query_clause表示条件子句,即where子句。 tables:指定导入表。语法格式:tables=[schema.]table_name[,….]。schema表示方案名,table_name表示表名 full:指定是否将整个数据库导入。语法格式:full={y|n}。y表示执行数据库导入,n表不执行。默认为n。 parfile:指定导入参数文件名。把impdp命令所需的参数写在一个文件中,执行impdp命令时指定这个文件,而不用指定各种参数 导入实例 顺便把expdp命令也写进来,以方便对比。为了不和上一篇导出笔记重复,这里以导入远程数据库的数据到本地数据库为例。 导出远程数据库 1.估算转储文件大小 如果数据库很大,这个过程也许会执行很久。在导出数据库之前,最好先估算一下转储文件(导出到的文件)的大小,以便确定合适filesize参数值,和确定是否有足够的磁盘空间。使用语法: expdp username/password@234DB full=y estimate_only=y nologfile=y; 其中estimate_only=y表示只估算转储文件的占的磁盘空间,不执行导出操作;@234DB表示远程数据库,它是在tnsnames.ora文件中定义的。 2.导出数据库 expdp username/password@234DB directory=dump_dir dumpfile=mydb_%U.dmp logfile=mydb.log filesize=200m full=y 其中dump_dir表示导出文件的目录,由于这里是导出远程数据库,所以这个目录是在远程机子中的;%U是一个占位符,表示01~99的两位数,这时执行会创建如MYDB_21.DMP之类的文件 3.导入整个数据库 impdp username/password directory=dump_dir dumpfile=mydb_%U.dmp full=y; 其中dump_dir表示入出文件的目录,这里要把远程导出的文件拷贝到本地机子上 导入远程表 1.导出表 expdp username/password@234DB directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp 其中schemas表示方案(即用户),emp表示远程数据库名。使用这种方式转储文件将保存在远程服务器的操作系统中。如果要把转储文件保存到本地机子,使用以下语法: expdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp network_link=to234db 其中username/password分别是本机数据库用户名和密码,to234db是本地数据库指向远程数据库的database link。这种方式可以把数据保存到本机中,但是会产生网络流量。 2.导入表 impdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp 其中schemas要和远程用户名相同,也就是说如果本地没有这个用户,要先创建用户,格式如: grant connect,resource to schemas identified by password。emp是要导入的表,如果本地schemas方案已经存在要导入的表,可以指定tables_exists_action参数,使用格 式是tables_exists_action={skip|append|truncate|replace}这四个参数值分别表示忽略这个表、把记录 追加到该表后面、先删除表数据再追加记录和使用新表替代已经存在的表。 |
oracle 10g数据泵之impdp
最新推荐文章于 2021-07-21 10:09:07 发布