impdp/expdp的示例分析

65次阅读
没有评论

共计 5175 个字符,预计需要花费 13 分钟才能阅读完成。

这篇文章给大家介绍 impdp/expdp 的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

create tablespace C_MAIN DATAFILE
D:\oracle\product\10.2.0\oradata\orcl\main.dbf SIZE
1024M

一.exp/imp 备份还原
可使用 plsql 进行这种 oracle 数据库的备份和还原。也可以使用 cmd 的命令行方式进行备份还原。
操作步骤大致有:
打开 cmd 窗口,切换到 d:\oracle10\product\10.1.0\db_1\bin\(oracle 安装目录下的可执行文件的文件夹目录)。
调用命令:

备份:
exp
user/pass@database file=F:\dump\20120521.dmp owner=(user) 
log=F:\dump\user-exp.log

还原
imp
newuser/pass@databasefile=F:\dump\20120521.dmp  fromuser=user touser=newuser
log=F:\dump\user-imp.log

二. 使用 expdp、impdp 备份还原

登录 linux 系统,sqlplus
/as sysdba 进入 sql 命令行,

2.1 查看目录:
SQL select * from
dba_directories;
2.2、指定 dump_dir 目录:(目录维护命令:)
SQL create directory
dump_dir as /oracle/backup // 建立
Drop directory
dump_dir;// 删除
2.3、为用户对该目录操作授权:
SQL grant read,write on directory
dump_dir to user_name;
2.4 进行命令操作:
备份:
expdp user/pass DIRECTORY =
dump_dir DUMPFILE=user.dmp SCHEMAS=user logfile=user-expdp.log 
version=10.2.0.1.0 (需要导入机器的 version:用于将高版本导出导入到低版本 oracle 数据库)
还原:
impdp
newuser/pass  DIRECTORY=dump_dir DUMPFILE=user.dmp REMAP_SCHEMA=user:newuser
logfile=user-impdp.log
table_exists_action=replace

REMAP_SCHEMA 参数是: 源 scheme:目标 scheme.

三、遇到的问题:
3.1processing
object type
scheme_export/table/statistics/table_statistics。执行到这里出现假死,停在这个画面很长时间
可以加一个参数 EXCLUDE=TABLE_STATISTICS。我是放着过了段时间回来执行完了。
3.2ORA-39213:
Metadata processing is not available 解决方法:
SQL execute
dbms_metadata_util.load_stylesheets; 
==========================================================
网上资料参考:

可参考资料  http://www.cnblogs.com/lanzi/archive/2011/01/06/1927731.html impdp 和 expdp 的参数都很详细

a. 创建到服务端的 dblink 
create database link link_name connect to username
identified by password using connect_string //username 和 password 是 server 端的  
b.conn / as sysdba 
create or replace directory dir as directory  
grant read,write on directory dir to username; 

c.expdp
username/password directory=dir network_link=link_name …
// 这里的 username 用创建 dblink 的那个用户,directory 也是目标数据库创建的  

4. 如果想不生成 dmp 文件而直接导入一个数据库,原理和 2 类似,直接使用 impdp 带 network_link
,这样可以直接 impdp,而绕过了 expdp 的步骤

以及文章:
http://tech.it168.com/db/o/2007-03-14/200703140943314.shtml

引用

要了解 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}这四个参数值分别表示忽略这个表、把记录
追加到该表后面、先删除表数据再追加记录和使用新表替代已经存在的表。

关于 impdp/expdp 的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计5175字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)