EXP/IMP的学习

1>:导出某个用户下的某个表如何
exp userid=system/love2008 tables=love2008.test file=a.dmp
2>:导出某个用户下的某个表的部分数据
exp userid=system/love2008 tables=love2008.test file=a.dmp query="""where id>0 and name='2.0'"""
3>:报错:IMP-00002:无法打开要读取的a.dmp
exp userid=system/love2008 tables=love2008.test file=a.dmp;
这个错误就是因为FILE参数指定的是a.dmp;结果生成的文件就是a.dmp;,不应该在最后加;
imp userid=system/love2008 fromuser=love2008 touser=love2008 file=a.dmp;

3.1>:用SYSDBA导出数据库

exp "'sys/sys as sysdba'" file=a.dmp tables=a;

[@more@]

4>:exp help=y
USERID 必须是命令行中的第一个参数。

关键字 说明(默认) 关键字 说明(默认)
--------------------------------------------------------------------------
USERID 用户名/口令 FULL 导出整个文件 (N)
BUFFER 数据缓冲区大小 OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP) TABLES 表名称列表
COMPRESS 导入到一个区 (Y) RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y) INCTYPE 增量导出类型
INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)
DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y)
LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE)
ROWS 导出数据行 (Y) PARFILE 参数文件名
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 导出的约束条件 (Y)

OBJECT_CONSISTENT 只在对象导出期间设置为读的事务处理 (N)
FEEDBACK 每 x 行的显示进度 (0)
FILESIZE 每个转储文件的最大大小
FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间
QUERY 用于导出表的子集的 select 子句
RESUMABLE 遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME 用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
TTS_FULL_CHECK 对 TTS 执行完整的或部分相关性检查
TABLESPACES 要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE 调用 iAS 模式导出的模板名

5>:IMP导入用户

imp userid=system/love2008 file=a.dmp fromuser=love2008 touser=love2008 ;

ignore参数指定是否忽略表的存在

IMP之前的先前条件:

5.1:create tablespace (原用户的默认表空间)

5.2:create user love2008 .....

5.3:grant 权限

5.4:imp ....

5.5:若是此时导入出现了错误,检查错误后,重新删除用户带有CASCADE子句,因为IMP没有办法回滚,可能之前IMP的时候已经成功导入了一些

6:高/低版本导出导入问题(出自:http://fanqiang.chinaunix.net/db/oracle/2006-07-11/4806.shtml)。

一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:

1、在高版本数据库上运行底版本的catexp.sql;

2、使用低版本的EXP来导出高版本的数据;

3、使用低版本的IMP将数据库导入到底版本数据库中;

4、在高版本数据库上重新运行高版本的catexp.sql脚本。

但在9i中,上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误:

EXP-00008: ORACLE error %lu encountered

ORA-00904: invalid column name

这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261722,你可以到METALINK上去查看有关此BUG的详细信息。

BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。在Oracle9i中执行下面的SQL重建exu81rls视图即可。
CREATE OR REPLACE view exu81rls
(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)
AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')||decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')||decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')||decode(bitand(r.stmt_type,8), 0,'','DELETE,'),r.check_opt, r.enable_flag,DECODE(BITAND(r.stmt_type, 16), 0, 0, 1) from user$ u,obj$ o, rls$ r
where u.user# = o.owner#
and r.obj# = o.obj#
and (uid = 0 or uid = o.owner# or exists(select * from session_roles where role='SELECT_CATALOG_ROLE'))
/
grant select on sys.exu81rls to public;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/728254/viewspace-912718/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/728254/viewspace-912718/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值