您的位置:首页 > 数据库 > Oracle

转载-Oracle 数据库导入导出 dmp文件

2017-08-08 10:31 621 查看
首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入、导出数据。
补充:
1.要新建一个数据库;

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可

以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本

地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一

个用来测试,一个用来正式使用。
例如:imp命令导入数据:
imp username/password@SID file=XXX.dmp fromuser=XXX touser=XXX tables=(XXX,XXX)
其中,fromuser指对方数据库用户名,touser指你的数据库的用户名;

fromuser若为多个表空间的话,使用()将其括起来:fromuser=(a,b);
touser参数仿fromuser参数;
若只导入一部分表,使用tables参数,用()括起要导入的表;如果想全部导入,不需要指定tables参数

下面介绍的是导入导出的实例。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y

2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)

3 将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=

(inner_notify,notify_staff_relat)

上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面 加上 compress=y 来实现。
数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp

ignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导

入。
在后面加上 ignore=y 就可以了。

2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

注意:
操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步

可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp

执行示例:
F:\Work\Oracle_Data\backup>imp userid=test/test full=y

file=inner_notify.dmp

屏幕显示
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
. . 正在导入表 "INNER_NOTIFY" 4行被导入
准备启用约束条件...
成功终止导入,但出现警告。

转自:http://www.cnblogs.com/pinbo/archive/2010/10/22/1858246.html#undefined

对于 exp 报 oracle 错误 12154 以下解决方法

exp system/manager@TEST file=d:\daochu.dmp full=y

@后面跟的不是实例名,只是在tnsnames里面配的网络服务名

方法一:

查看$ORACLE_HOME/network/admin下的 tnsnames.ora 文件,如下所示:

ORCL_YZJ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.132.2.147)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

于是,执行导出表命令如下,导出成功:

[oracle@yingxiang-testServer1 ~]$ exp imgpf/imgpf@ORCL_YZJ file=/home/oracle/table_space/USDMP20140428.dmp

方法二:

10g以后提供了不配置tnsname.ora也可以连接数据库的方法
类似 sqlplus uname/pwd@127.0.0.1:1521/orcl
exp uname/pwd@127.0.0.1:1521/orcl file='xx.dmp'

对于导入操作:

IGNORE=Y  : 忽略已存在的表  默认N
DESTROY=Y  : 覆盖已存在的表  默认N

其他说明
转载自 https://www.cnblogs.com/gdjlc/p/6155510.html[/code] 背景:
oracle正式库通过exp命令导出的dmp备份包,现在通过imp命令还原到测试库,测试库上面的表数据全部不要,要用新的。

方法:
先删除用户、用户所在表空间,再新建用户和表空间,再imp导入。

过程:

1、用plsql查看用户的权限等信息并备份,例如

-- Create the user
create user testuser;
-- Grant/Revoke object privileges
grant execute on SYS.DBMS_JOB to testuser;
-- Grant/Revoke role privileges
grant connect to testuser;
grant resource to testuser;
-- Grant/Revoke system privileges
grant create job to testuser;
grant create materialized view to testuser;
grant create view to testuser;
grant debug connect session to testuser;
grant manage scheduler to testuser;
grant unlimited tablespace to testuser;

2、删除用户(如果用户下面有对象,需要加cascade参数)

drop user testuser cascade;

3、用sysdba用户查询表空间名称、磁盘路径文件

select username,default_tablespace from dba_users; (如用testuser登录,则查表user_users)
select file_name,tablespace_name from dba_data_files;

4、删除表空间

--将其offline
alter tablespace testdb offline;
--将磁盘上的数据文件一同删除(不知道啥原因,本人执行后磁盘上的数据文件还在,这时可以手动删除掉)
drop tablespace testdb including contents and datafiles;

5、创建表空间

create tablespace dev datafile 'D:\OraData\testdb' size 500m;

6、根据第1步备份的sql,创建用户

7、数据导入,在cmd命令行下执行

imp testuser/password@ORCL file=D:\backup.dmp fromuser=prduser touser=testuser

参数说明:
testuser/password 登录用户名和密码
file 输入文件
fromuser 所有人用户名列表,即导出dmp的用户名
touser 用户名列表,即导入dmp的用户名

----------------------------------------------
附,imp和exp对应,都具有三种模式
1、完全:
IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:/FULL.DMP FULL=Y

2、用户模式(必须指定FROMUSER、TOUSER参数):
IMP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数。

3、表模式(只导入指定的表):
IMP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP OWNER=SONIC TABLES=(SONIC)
这样用户SONIC的表SONIC就被导入。

imp参数
USERID 用户名/口令
FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小
FROMUSER 所有人用户名列表
FILE 输入文件 (EXPDAT.DMP)
TOUSER 用户名列表
SHOW 只列出文件内容 (N)
TABLES 表名列表
IGNORE 忽略创建错误 (N)
RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y)
INCTYPE 增量导入类型
INDEXES 导入索引 (Y)
COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y)
PARFILE 参数文件名
LOG 屏幕输出的日志文件
CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: