写法跟expdp命令一样 如导出命令: expdp 用户名/密码 schemas=用户名 directory=exp dumpfile=dmp logfile=explog
导入命令只需把expdp换成impdp就行 impdp 用户名/密码 schemas=用户名 directory=exp dumpfile=dmp logfile=implog
注意事项:
首先从导出的机器中传到要导入数据库的机器上,如Windows可以放在D:\imp 文件夹下(如果两台机器 *** 作系统不同,需使用二进制传输dmp文件)
在要导入数据的数据库创建导入导出目录
SQL>create directory as 'D:\imp';
3命令行中开始导入 impdp 用户名/密码 schemas=用户名 directory=exp dumpfile=dmp logfile=explog
应该是PostgreSQL数据库的备份文件。
数据库的导入导出是最常用的功能之一,每种数据库都提供有这方面的工具,PostgreSQL提供的对应工具为pg_dump和pg_restore。
pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。转储格式可以是一个脚本或者归档文件。
归档文件格式必须和pg_restore一起使用重建数据库。
X:\>pg_dump -U postgres -Fc TestDb1 >TestDb1dump
X:\>pg_restore -U postgres -d TestDb2 TestDb1dump
最近用到Oracle导出导入数据,在网上看了别人的一些文章,总结如下:
Oracle导出导出有两中方式:一、利用exp imp导出导入;二、利用Oracel数据泵expdp impdp导出导入。
一、利用exp imp导出导入
exp imp 语法如下:
exp:
1) 将数据库orcl完全导出
exp system/manager@orcl file=d:\orcl_bakdmp full=y
2) 将数据库中system用户的表导出
exp system/manager@orcl file=d:\system_bakdmp owner=system
3) 将数据库中表table1,table2导出
exp system/manager@orcl file=d:\table_bakdmp tables=(table1,table2)
4) 将数据库中的表customer中的字段mobile以"139"开头的数据导出
exp system/manager@orcl file=d:\mobile_bakdmp tables=customer query=\"where mobile like '139%' \"
imp:
1) 将备份文件bakdmp导出数据库
imp system/manager@orcl file=d:\bakdmp
如果数据表中表已经存在,会提示错误,在后面加上ignore=y就可以了。
2) 将备份文件bakdmp中的表table1导入
imp system/manager@orcl file=d:\bakdmp tables=(table1)
exp imp导出导入数据方式的好处是只要你本地安装了Oracle客户端,你就可以将服务器中的数据导出到你本地计算机。同样也可以将dmp文件从你本地导入到服务器数据库中。但是这种方式在Oracle11g版本中会出现一个问题:不能导出空表。Oracle11g新增了一个参数deferred_segment_creation,含义是段延迟创建,默认是true。当你新建了一张表,并且没用向其中插入数据时,这个表不会立即分配segment。
解决办法:
1、设置deferred_segment_creation参数为false后,无论是空表,还是非空表,都分配segment。
在sqlplus中,执行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
该值设置后,只对后面新增的表起作用,对之前建立的空表不起作用,并且注意要重启数据库让参数生效。
2、使用 ALLOCATE EXTEN
使用 ALLOCATE EXTEN可以为数据库对象分配Extent,语法如下:
alter table table_name allocate extent
构建对空表分配空间的SQL命令:
SQL>select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
批量生成要修改的语句。
然后执行这些修改语句,对所有空表分配空间。
此时用exp命令,可将包括空表在内的所有表导出。
二、利用expdp impdp导出导入
在Oracle10g中exp imp被重新设计为Oracle Data Pump(保留了原有的 exp imp工具)
数据泵与传统导出导入的区别;
1) exp和imp是客户端工具,他们既可以在客户端使用,也可以在服务端使用。
2) expdp和impdp是服务端工具,只能在Oracle服务端使用。
3) imp只适用于exp导出文件,impdp只适用于expdp导出文件。
expdp导出数据:
1、为输出路径建立一个数据库的directory对象。
create or replace directory dumpdir as 'd:\';
可以通过:select from dba_directories;查看。
2、给将要进行数据导出的用户授权访问。
grant read,write on directory dumpdir to test_expdp;
3、将数据导出
expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp_bakdmp logfile=test_expdp_baklog schemas=test_expdp
注意:这句话在cmd窗口中运行,并且最后不要加分号,否则会提示错误。因为这句话是 *** 作系统命令而不是SQL。
impdp导入数据:
1、给将要进行数据导入的用户授权访问。
grant read,write on directory dumpdir to test_impdp;
2、将数据导入
impdp test_impdp/impdp directory=dumpdir dumpfile=test_expdp_bakdmp remap_schema=test_expdp:test_impdp
最后:这些内容是我在查找资料时找到,由于比较杂乱,现在稍作整理,方便以后查阅。同时,如果能给需要的人提供一些帮助,那就再好不过了。
分类: 电脑/网络 >> *** 作系统/系统故障
解析:
当然可以,使用oracle自己的导入exp导出工具imp就可以做。作为一个oracle的管理员,exp和imp也是最常用的备份手段之一。
另附oracle的导入导出文档一个。
oracle Export and Import 简介
1、Export/Import的用处
Oracle Export/Import工具用于在数据库之间传递数据。
Export从数据库中导出数据到dump文件中
Import从dump文件中到入数据导数据库中
下面是一般使用他们的情况
(1)、两个数据库之间传送数据
同一个版本的oracle Server之间
不同版本的oracle Server之间
同种OS之间
不同种OS之间
(2)、用于数据库的备份和恢复
(3)、从一个SCHEMA传送到另一个SCHEMA
(4)、从一个TABLESPACE传送到另一个TABLESPACE
2、DUMP文件
EXPORT到出的是二进制格式的文件,不可以手工编辑,否则会损坏数据。
该文件在ORACLE支持的任何平台上都是一样的格式,可以在各平台上通用。
DUMP文件在IMPORT时采用向上兼容方式,就是说ORALCE7的DUMP文件可以导入到ORACLE8中,但是版本相差很大的版本之间可能有问题。
3、EXPORT/IMPORT过程
EXPORT导出的DUMP文件包含两种基本类型的数据
- DDL
- Data
DUMP文件包含所有重新创建Data Dictionary的DDL语句,基本上是可以读的格式。
但是应该注意的是,千万不要用文本编辑器编辑之,oracle说不支持这样做的。
下面列出的是DUMP文件中包括的ORACLE对象,分为TABLE/USER/FULL方式,有些对象
只是在FULL方式下才有(比如public synonyms, users, roles, rollback segments等)
Table mode User Mode Full Database Mode
---------------------- ---------------------- -------------------------
Table definitions Table definitions Table definitions
Table data Table data Table data
Owner's table grants Owner's grants Grants
Owner's table indexes Owner's indexes Indexes
Table constraints Table constraints Table constraints
Table triggers Table triggers All triggers
Clusters Clusters
Database links Database links
Job queues Job queues
Refresh groups Refresh groups
Sequences Sequences
Snapshots Snapshots
Snapshot logs Snapshot logs
Stored procedures Stored procedures
Private synonyms All synonyms
Views Views
Profiles
Replication catalog
Resource cost
Roles
Rollback segments
System audit options
System privileges
Tablespace definitions
Tablespace quotas
User definitions
4、IMPORT时的对象倒入顺序
在倒入数据时,ORACLE有一个特定的顺序,可能随数据库版本不同而有所变化,
但是
现在是这样的。
1 Tablespaces 14 Snapshot Logs
2 Profiles 15 Job Queues
3 Users 16 Refresh Groups
4 Roles 17 Cluster Definitions
5 System Privilege Grants 18 Tables (also grants,ments, indexes, constraints, auditing)
6 Role Grants
7 Default Roles 19 Referential Integrity
8 Tablespace Quotas 20 POSTTABLES actions
9 Resource Costs 21 Synonyms
10 Rollback Segments 22 Views
11 Database Links 23 Stored Procedures
12 Sequences 24 Triggers, Defaults and Auditing
13 Snapshots
按这个顺序主要是解决对象之间依赖关系可能产生的问题。TRIGGER最后导入,所以在INSERT数据到数据库时不会激发TRIGGER。在导入后可能会有一些状态是INVALID的PROCEDURE,主要是IMPORT时会影响一些数据库对象,而IMPORT并不重新编译PROCEDURE,从而造成这种情况,可以重新编译之,就能解决这个问题。
5、兼容性问题
IMPORT工具可以处理EXPORT 5122之后的版本导出的DUMP文件,所以你用ORACLE7的IMPORT处理ORACLE6的DUMP文件,依次类推,但是ORACLE如果版本相差很大有可能不能处理。具体的问题可以参照相应的文档,比如有关参数设置等(COMPATIBLE参数)
6、EXPORT需要的VIEW
EXPORT需要的VIEW是由CATEXPSQL创建,这些内部VIEW用于EXPORT组织DUMP文件中数据格式。
大部分VIEW用于收集创建DDL语句的,其他的主要供ORACLE开发人员用。
这些VIEW在不同ORACLE版本之间有可能不同,每个版本可能都有新的特性加入。
所以在新的版本里面执行旧的dump文件会有错误,一般可以执行CATEXPSQL解决这些问题,
解决向后兼容问题的一般步骤如下:
导出数据库的版本比目标数据库老的情况:
- 在需要导入的目标数据库中执行旧的CATEXPSQL
- 使用旧的EXPORT导出DUMP文件
- 使用旧的IMPORT导入到数据库中
- 在数据库中执行新的CATEXPSQL,以恢复该版本的EXPORT VIEW
导出数据库的版本比目标数据库新的情况:
- 在需要导入的目标数据库中执行新的CATEXPSQL
- 使用新的EXPORT导出DUMP文件
- 使用新的IMPORT导入到数据库中
- 在数据库中执行旧的CATEXPSQL,以恢复该版本的EXPORT VIEW
7、碎片整理
EXPORT/IMPORT一个很重要的应用方面就是整理碎片。因为如果时初次IMPPORT,就会重新CREATE TABLE 再导入数据,所以整张表都是连续存放的。另外缺省情况下EXPORT会在生成DUMP文件是“压缩(COMPRESS)”TABLE,但是这种压缩在很多情况下被误解。事实上,COMPRESS是改变STORAGE参数INITIAL的值。比如:
CREATE TABLE STORAGE( INITIAL 10K NEXT 10K)
现在数据已经扩展到100个EXTENT,如果采用COMPRESS=Y来EXPORT数据,则产生的语句时 STORAGE( INITIAL 1000K NEXT 10K)
我们可以看到NEXT值并没有改变,而INITIAL是所有EXTENT的总和。所以会出现如下情况,表A有4个100M的EXTENT,执行DELETE FROM A,然后再用COMPRESS=Y 导出数据,产生的CREATE TABLE语句将有400M的INITIAL EXTENT。即使这是TABLE中已经没有数据!!这是的DUMP文件即使很小,但是在IMPORT时就会产生一个巨大的TABLE
另外,也可能会超过DATAFILE的大小。比如,有4个50M的数据文件,其中表A有15个10M的EXTENT,如果采用COMPRESS=Y的方式导出数据,将会有INITIAL=150M,那么在重新导入时,不能分配一个150M的EXTENT,因为单个EXTENT不能跨多个文件。
8、在USER和TABLESPACE之间传送数据
一般情况下EXPORT的数据要恢复到它原来的地方去。如果SCOTT用户的表以TABLE或USER方式EXPORT数据,在IMPORT时,如果SCOTT用户不存在,则会报错!
以FULL方式导出的数据带有CREATE USER的信息,所以会自己创建USER来存放数据。
当然可以在IMPORT时使用FROMUSER和TOUSER参数来确定要导入的USER,但是要保证TOUSER一定已经存在啦。
9、EXPORT/IMPORT对SQUENCE的影响
在两种情况下,EXPORT/IMPORT会对SEQUENCE。
(1)如果在EXPORT时,用户正在取SEQUENCE的值,可能造成SEQUENCE的不一致。
(2)另外如果SEQUENCE使用CACHE,在EXPORT时,那些在CACHE中的值就会被忽略的,只是从数据字典里面取当前值EXPORT。
如果在进行FULL方式的EXPORT/IMPORT时,恰好在用sequence更新表中某列数据,而且不是上面两种情况,则导出的是更新前的数据。
如果采用常规路径方式,每一行数据都是用INSERT语句,一致性检查和INSERT TRIGGER
如果采用DIRECT方式,某些约束和trigger可能不触发,如果在trigger中使用sequencenextval,将会对sequence有影响。
Oracle 11g数据导入到10g
一、在11g服务器上,使用expdp命令备份数据
11g 导出语句:EXPDP USERID='facial/facial@orcl as sysdba' schemas=facialdirectory=DATA_PUMP_DIR dumpfile=testdmp logfile=testlog version=102010
二、在10g服务器上,使用impdp命令恢复数据
准备工作:1建库2建表空间3建用户并授权4将testdmp拷贝到10g的dpdump目录下
--创建表空间
create tablespace TS_Facial datafile 'E:\ORACLE\PRODUCT\1020\ORADATA\ORCL\FacialDBF' size 500M autoextend on next 50M;
--创建用户
create user Facial identified by Facial default tablespace TS_Facial;
--授权给用户
grant connect,resource,dba to Facial;
testdmp 和 testlog 放在E:\oracle\product\1020\admin\orcl\dpdump目录下
10g 导入语句:IMPDP USERID='facial/facial@orcl as sysdba' schemas=facialdirectory=DATA_PUMP_DIR dumpfile=testdmp logfile=testlog version=102010
oracle10g 数据导入到oracle11g 中:
在oracle10g 上执行:Exp ts/ts@orcl file=D:\tianshandmp
在oracle11g 上创建好表空间和用户后执行:Imp ts/ts@orcl file=D:\tianshandmp
Oracle11g 数据导入到oracle10g 中:
1在oracle11g 服务器命令行中用expdp 导出数据
expdp ts/ts@orcl directory=expdp_dir dumpfile=tianshandmp logfile=tianshanlog version=102010 (schemas=ccense)
2在oracle10g 服务器DOS 命令行中用IMPDP 导入数据:
把oracle11g 的备份文件放到oracl10g 服务器的impdp_dir 目录中,并创建好相应的用户和表空间,然后执行下面的命令:
impdp ts/ts@orcl directory=impdp_dir dumpfile=tianshandmp logfile=tianshanlog version=102010 (schemas=ccense)
Oracle 的imp/exp 组件的一个 *** 作原则就是向下兼容,且有一些规则:
1、低版本的exp/imp 可以连接到高版本(或同版本)的数据库服务器,但高版本的exp/imp 不能连接到低版本的数据库服务器。
2、高版本exp 出的dmp 文件,低版本无法imp(无法识别dmp 文件);低版本exp 出的dmp 文件,高版本可以imp(向下兼容)。
3、从Oracle 低版本Export 的数据可以Import 到Oracle 高版本中,但限于Oracle 的相邻版本,如从Oracle 7 到 Oracle 8。对于两个不相邻版本间进行转换,如从Oracle 6 到 Oracle 8,则应先将数据输入到中间版本—Oracle 7,再从中间数据库转入更高版本Oracle 8。
要还原dump可执行文件,需要使用Oracle的imp命令。该命令可以将dump文件导入到数据库中,实现还原功能。
使用imp命令的步骤如下:
1 登录到Oracle数据库服务器上;
2 运行imp命令,格式如下:
imp userid=username/password@database_name file=dump_file_namedmp log=log_file_namelog full=y
3 如果需要对dump文件进行还原,可以在imp命令中添加参数“fromuser”和“touser”来指定用户名。
以上就是关于oracle数据库怎么用impdp导入.dmp文件全部的内容,包括:oracle数据库怎么用impdp导入.dmp文件、怎么分析打开后缀为 .dump 的数据库文件、如何在oracle中导出,导入数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)