Oracle8i使用经验集锦
来源:才华咖 本文已影响6.93K人
来源:才华咖 本文已影响6.93K人
对于Oracle学习者来说,Oracle8i是最常见不过了,小编下面为大家整理了一些使用经验,欢迎阅读参考:
一、8i EXP常用选项
1、FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如:
exp sys file=./db_ log=./db_ full=y rows=n compress=y direct=y
2、BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如:
exp new file=yw97_ log=yw97_2003_ feedback=10000 buffer=100000000 tables=WO4,OK_YT
3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。
需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:一、这样做的速度会慢很多,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。
如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文档号:30428.1),该文中有详细解释。
4、COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。
5、如何使用SYSDBA执行EXP/IMP?
这是一个很现实的问题,有时候我们需要使用SYSDBA来执行EXP/IMP,如进行传输表空间的EXP/IMP,以及在9i下用SYS用户来执行EXP/IMP时,都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP:
exp "'sys/sys as sysdba'" file= tables=gototop.t rows=n
6、QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,where子句的写法和SELECT中相同,如果是UNIX平台所有"和'都需要使用u26469屏蔽它们的特殊含义:
exp gototop/gototop file= log= tables=cyx.t query="where c1=20 and c2=gototop"
如果是windows平台,则使用下面的格式:
exp c/c@ncn file= log= tables=t query="""where id=1 and name='gototop'"""
二、8i IMP常用选项
1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。
2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。
另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上面的'参数都可以写在一个参数文件中,但我们一般很少使用。
三、Oracle9i EXP功能描述
Oracle9i EXP在原有的基础上新增了部分新的参数,按功能主要分为以下几个部分:
1、OBJECT_CONSISTENT - 用于设置EXP对象为只读以保持对象的一致性。默认是N。
2、FLASHBACK_SCN和FLASHBACK_TIME - 用于支持FLASHBACK功能而新增。
3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用于支持RESUMABLE空间分配而新增。
4、TTS_FULL_CHECK - 用于在传输表空间时使用依赖性检查。
5、TEMPLATE - 用于支持iAS。
6、TABLESPACES - 设置表空间导出模式。个人觉得对于一般用户而言,这个才是新增参数中最实用的一个,可以让用户在原来的FULL、OWNER、TABLES的基础上多了一种选择,使得EXP更加灵活。
四、不同版本的EXP/IMP问题?
一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:
1、在高版本数据库上运行底版本的;
2、使用低版本的EXP来导出高版本的数据;
3、使用低版本的IMP将数据库导入到底版本数据库中;
4、在高版本数据库上重新运行高版本的脚本。
但在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 , , e, hma, me, me,
decode(bitand(_type,1), 0,'', 'SELECT,')
|| decode(bitand(_type,2), 0,'', 'INSERT,')
|| decode(bitand(_type,4), 0,'', 'UPDATE,')
|| decode(bitand(_type,8), 0,'', 'DELETE,'),
k_opt, le_flag,
DECODE(BITAND(_type, 16), 0, 0, 1)
from user$ u, obj$ o, rls$ r
where # = r#
and # = #
and (uid = 0 or
uid = r# or
exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')
)
/
grant select on 81rls to public;
/
五、其他问题
本文只讨论了Oracle8i和9i中的EXP/IMP的一些情况,对于之前的版本,在8.0.X中,除了QUERY参数不能用外,其它差别不大。针对没有QUERY的情况,我们可以先在数据库中使用查询条件建立临时中间表,然后使用EXP导出这个中间表即可。至于Oracle7因为目前使用的人较少,gototop不打算在此做详细解释了,如果读者朋友有需求,你可以参考Metalink文档:“Overview of Export and Import in Oracle7”(文档号:61949.1)。关于EXP/IMP的详细参数信息你可以通过EXP/IMP HELP=Y来获得。
另外关于传输表空间的更多信息可以参考下面的Metelink文档,本文不再详述。
[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.
[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.
在进行并行EXP/IMP的时候,如果IMP过程建索引的话不建议同时运行5个以上的IMP,如果你想加快速度,可以在IMP的时候不建索引,这样只要内存允许,可以多跑几个,然后是SQL脚本创建需要的索引。
英语阅读:VIT declines to acquire Ang Mo Kio property
高中生优秀英语作文:Have a break away from electronics
如何理解Javascript的caller,callee,call,apply区别
Diaspora Finance Powers Global Development美文欣赏
英语短文:City Life Compared with Rural Life
如何理解Javascript的caller,callee,call,apply区别
英语美文阅读:Kerry: Anti-IS Coalition Could Contribute to B
Walk for children in poor areas英语作文
英语阅读:Are You Tricked by These Optical Illusions
「雅思写作」the Growth Cycle of A Volcanic Island
Oracle认证:ORACLE绑定变量BINDPEEKING
《科洛弗悖论(The Cloverfield Paradox)》的经典台词
如何理解Javascript的caller,callee,call,apply区别
Djokovic Fulfilled Career Grand英语作文
Relieve Psychological Pressure的英语短文
教学经验专题总结(集锦25篇)
如何理解Javascript的caller,callee,call,apply区别
英语短文:Celebration of Chinese New Year
学个词Learn a Word:malicious
Too many essential for children to learn英语作文
The place of Science and Technology in Modern Life英语作文
怎么使用“经验”造句
UN Chief Urges Leaders to Deliver on Climate Change美文欣赏
如何理解Javascript的caller,callee,call,apply区别
The colours of Miracle高中英语作文
Module 3 Unit 2 I love my pocket calculator说课稿
生活经验名言集锦
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
高中英语作文:My approach to difficulties in learning
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
托福英语写作范文:Examinations exert a pernicious influence on educat
如何理解Javascript的caller,callee,call,apply区别
Fancy the original or movie ones大学英语作文
BorlandC++使用BDE访问Oracle的方法
Linux Mint Cinnamon下使用vino-server配置桌面共享的方法
Oracle8i使用经验集锦
英语阅读:African Union Leaders Talk Mali, Chinese Investmen