Oracle中exp导出与imp导入的参数(full,owner/formuser/touser)测试

1、exp导出的参数(FULL,OWNER)测试

先知道的一点是full不能与owner共存,还有都是以用户的方式导出(在这里),其中不仅仅包括表,这可能就是下面报warnings的原因,因为Oracle系统库里边有动态的表或其它动态对象。

【A】首先是DBA(system)用户连接数据库

1)都不指            -> 仅仅导出system模式。(报了点warnings)
2)owner=test       -> 仅仅导出owner指定的模式(test)。
3)full=y           -> 全库导出,需注意!!!,因为有DBA权限。(也报了点warnings..)

【B】然后是普通用户(test)连接数据库

1)都不指          -> 仅仅导出test模式。
2)owner=test     -> 仅仅导出owner指定的模式(test),如果换成非己模式需要有访问的权限(可能不一定是DBA,待测试)。
3)full=y         -> 会提示没有dba权限,然后询问如下的问题(默认>我选的):
(2)U(sers), or (3)T(ables): (2)U > 2
Export grants (yes/no): yes > yes
Export table data (yes/no): yes > no
Compress extents (yes/no): yes > no
最后也仅仅导出了test,因为这里test用户只有访问test模式的权限,(也报了点warnings,但这里报的是无DBA权限)
如果有访问其他schema的权限的话估计也会导出其他模式(待测试),
如果有dba权限的话会导出全库(已测试,如【C】)。

【C】再来是普通用户(test1)拥有DBA权限连接数据库

1)都不指          -> 仅仅导出test1模式。
2)owner=test     -> 仅仅导出owner指定的模式(test),看好了这里是test不是test1,与【B】上面的一起看就明白。
3)full=y         -> 全库导出,需注意!!!,因为有DBA权限。(也报了点warnings..)

【D】最后,exp总结

其实不难发现都是权限搞的怪,如果test有dba权限,那就跟system没啥区别,记住下边的即可:
1)都不指,导出自己。
2)owner,导出owner所指,需有权限访问所指,否则报错退出。
3)full=y,导出全库,需有DBA权限,否则只会导出自己及所能访问的模式

2、imp导入的参数(FULL,OWNER变成了FROMUSER/TOUSER)测试

这里full也不能与fromuser/touser共存,只能选一个。

【A】首先是DBA(system)用户连接数据库

1)都不指                 -> 不管dmp文件是单个用户还是多个用户都会提示Must specify FULL=Y or provide FROMUSER/TOUSER or TABLES arguments。

2)FROMUSER/TOUSER
a)单独指定FROMUSER        -> 以模式(用户)的形式导入。
b)两个都指定              -> 会按顺序匹配用户以非用户(怼内容)的方式导入,FROMUSER匹配不到TOUSER的则以模式(用户)形式导入;所以如果需要把内容都导入system,FROMUSER有几个模式,TOUSER就得写几个system。
c)单独指定TOUSER          -> 又会提示Must specify FULL=Y or provide F....。

3)full=y                -> 如果dmp文件只有一个用户,所有东西导入到system用户;多个用户则以模式(用户)的形式导入,并非把所有东西导入到system,这里要特别注意!!!

注意的地方:
以用户的方式导入如果某个用户已经存在则使用已存在的用户,某个表已经存在就跳过(不匹配数据,就是说如果表存在但没有数据时,直接跳过不会插入数据)。

【B】然后是普通用户(test)连接数据库

1)都不指                 -> 报warning,不仅仅是Must...这个错误,反正就记住这样导入是不行的就行了。

2)FROMUSER/TOUSER
a)单独指定FROMUSER        -> 报没权限错误,因为是按用户导入的。
b)两个都指定              -> 跟上边一样按顺序匹配用户,但是如果dmp文件是以DBA用户导出的,你怎么导入都是不行的,因为你不配,哈哈哈。
c)单独指定TOUSER          -> 报错,非权限错误,即使dmp文件不是DBA用户导出的也会报错。

3)full=y                -> 跟上边一样,如果dmp文件只有一个用户要注意了,会以内容的方式导入,说第二遍了(还有如果dmp文件是以DBA用户导出的,你怎么导入都是不行的)。

【C】最后,imp总结

1 看【A】就好,认真看,不然删表累死你。
2 建议少用full=y,多用FROMUSER/TOUSER,因为你不知道dmp文件有几个用户,应该有命令查看的,有空查下资料。
3 而且如果用full=y有些没必要导入的用户也导入就不好了,全库迁移除外。
4 所以imp导入就都指定FROMUSER/TOUSER就行。

原文地址:https://www.cnblogs.com/weiwenpeng/p/10345419.html

时间: 2024-10-29 08:26:54

Oracle中exp导出与imp导入的参数(full,owner/formuser/touser)测试的相关文章

oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47448751 oracle中使用impdp数据泵导入数据时,假设导入之前已经创建了用户,会提示错误:"ORA-31684:对象类型已经存在".如: 事实上这个问题并不严重,能够先不创建用户,导入时指定一个超级用户导入: impdp system/123456@ORCL DIRECTORY=DUMP_EXP DUMPFILE=EXPDATA.DMP remap_sche

oracle中exp,imp的使用详解

基本语法和实例: 一.EXP:       有三种主要的方式(完全.用户.表) 1.完全:           EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y           如果要执行完全导出,必须具有特殊的权限 2.用户模式:           EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC           这样用户SONIC的所有对象被输出到

[转] - Oracle 中 EXP / IMP 使用方法

Exp/Imp是oracle备份数据的两个命令行工具 1.本地数据库导入导出 1.导出 (运行---cmd中操作) exp 用户名/密码@数据库实例名file=本地存放路径 eg: exp jnjp/[email protected] file=C:/jnjp.dmp 2.导入 imp 用户名/密码@数据库实例名file=本地数据库文件存放路径full=y   ignore=y eg: imp jnjp/[email protected]  file=E:\jnjp.dmp  full=y  i

oracle数据库cmd导出数据和导入数据

一:前言 每次我自己来导出oracle数据的数据进行备份的时候都是要看一遍记载的语句,还别说自己敲多了,也熟练了,但是还是不是很放心,所以就记载下来吧. 二:内容 (1).最简单,最直接的导入方式(这种导入需要用户具有dba权限) imp user/password file="H:/db_table.dmp" full=y (2).导出数据库的方式 A:最简单最直接的方式 exp user/password @192.168.22.22/orcl file=F:/db_table.d

Oracle中exp的使用2

在使用exp的时候,需要注意以下几点 当前客户端版本.目标客户端的版本.注意需要设置字符集,也就是NLS_LANG 参考oracle字符集的设置 NLS_LANG格式为: [NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]. NLS_LANGUAGE指的是Oracle消息使用的语言,日期中月分和日显示 NLS_TERRITORY指的是货比和数字格式,地区和计算星期及日期的习惯 NLS_CHARACTERSET指的是控制客户端应用程序使用的字符集 s

oracle两种导出导入方式,即imp与impdp之比较

尽管使用了很多次impexp及impdpexpdp但是使用起来还是会遇到很多问题,现总结如下: 应用:将一个用户的所有表结构及索引,触发器,过程,函数等导入到另一用户里 imp/exp 导出用户表结构加参数 rows=n 例如:exp aa/aaa file=e:aa.dmp rows=n 另外需要将这个用户的部分数据导到另一个用户里 再执行exp system/aaa file=e:aa2.dmp tables='aa.tab_name' query="where id>300"

oracle的exp和imp命令的使用【转载】

oracle的exp和imp命令的使用 我们通常要对ORACLE的数据进行导入,导出,在没有expdb,impdb以前(10G以前),我们都是使用exp 导出,imp命令来实现导入. 打开CMD窗口,实现IMP,EXP主要是SQLPLUS.EXE调用IMP.EXE,EXP.EXE来完成的. 下面是几个常用的关于exp,imp命令的一些举例 举例导出数据库服务abc,用户user,密码psd下的table1,table2,table3表到d:\data目录下,导出文件名为test.dmp,语句为:

oracle IMP导入错误 IMP-00003: ORACLE error 2298

一个项目:需要将数据库从老服务器迁移到新服务器,用exp导出的数据 imp导入exp导出备份时遇到下面错误提示: IMP-00017: following statement failed with ORACLE error 2298: "ALTER TABLE "RESERVATION" ENABLE CONSTRAINT "RESERVATION_FK31252591893468"" IMP-00003: ORACLE error 2298

oracle中带参存储过程的使用

Oracle中存储过程带参分为:输入参数(in)和输出参数(out) 例如: 1 create or replace procedure out_test(v_user in emp.user_name%type, 2 v_salary out emp.salary%type, 3 v_deptno out emp.emp_deptno%type) as 4 begin 5 select salary, emp_deptno 6 into v_salary, v_deptno 7 from em