前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对IMP-00013问题的思考(r3笔记第71天)

对IMP-00013问题的思考(r3笔记第71天)

作者头像
jeanron100
发布2018-03-15 11:47:34
5610
发布2018-03-15 11:47:34
举报

对于IMP的问题或者是各类ORA问题,如果碰到的时候使用oerr是一个很不错的参考方案。比如对于ora错误12041的解释如下。

> oerr ora 12041
12041, 00000, "cannot record ROWIDs for index-organized table \"%s\".\"%s\""
// *Cause:  Index-organized tables do not have ROWIDs. Therefore a materialized
//          view log that records the ROWIDs of an index-organized table
//          could not be created.
// *Action: Do not include the WITH ROWID option when using the
//          CREATE MATERIALIZED VIEW command and do not include the ADD ROWID
//          option when using the ALTER MATERIALIZED VIEW command if the master
//          table is index-organized.

其实碰到问题的时候,办法总比困难多。有很多的方式来解决,如果处理得当,就会避免很多后续的问题。 比如今天开发反馈在测试环境导入一个dump的时候 碰到了如下的错误。这个问题是很常见的。

Export file created by EXPORT:V11.02.00 via conventional path

IMP-00013: only a DBA can import a file exported by another DBA

IMP-00000: Import terminated unsuccessfully 基本有两种思路,一种是赋予dba权限,另外一种是赋予imp_full_database的权限。 通过错误的字面意思,是需要赋予dba的权限。如果这样做,就很被动了,因为目前测试环境有几十个,分别归属不同的开发小组,他们会根据需求导入对应的dump,这个dump是直接从现场环境中传过来的,导出的时候就直接用了dba的权限,所以在导入的时候就出了上面的错误。如果我们这次赋予了dba权限,那么这个用户就存在一定的风险,如果开发做了超出权限之外的操作,那就会造成一些不明不白的问题,所以如果赋予了dba权限,那么在dump导入之后就需要revoke dba权限。如果dba每次都去跟踪这些操作就显得有些“多余”了。所以就陷入一个很尴尬的境地,权限放开出问题是dba,不给权限导不了dump还是dba的问题。如果能够一劳永逸的解决问题就太好了。 这个时候如果我们细细的琢磨一下这个问题,就会发现,其实我们直接赋予imp_full_database的权限就够了。不用直接动用dba权限。 这个imp_full_database的权限目前来看也是安全的。如果开发拿到这个权限,还真干不了什么其他的操作。 所以目前为止我们可以认为imp_full_database的权限已经足够应付这个问题,不需要大动干戈,做吃力不讨好的事情。 事情到目前为止还没有完,真实的情况是过了一段时间又出现了问题。这次是在现场测试环境中碰到了,问题的原因是因为在开发测试环境中会有一些数据字典相关的数据。如果把各个模块的数据字典数据合并起来,就是一个dump文件了,根据流程这个dump文件需要在生产中部署。结果在现场的测试环境中就发现了这个问题。 这个问题说大也大,说下也小,当时有个哥们的处理思路就是生产环境中直接加个imp_full_database的权限就可以了。我当时就拒绝了。客户的环境中的任何权限,他们都有监控,我们不能在没有得到许可的情况下私自改动。 那个哥们当时也有点急了。

Man...

its just a privilege

otherwise we have to work again

you can revoke it

after my confirmation

我给他解释了一番,如果我们现在在哪个环境中碰到了问题,就这么修,那么现场测试环境也有几十套,我们也要一套一套这么修吗。况且现场环境中会不断的增加新的测试环境,没次新增一个,客户都会找到我说,你们的环境有问题,这样就把问题又推给dba了。到了生产,如果我们放了一马,私自修改了权限,那么从生产中导出的dump文件都需要这个权限,又得修。所以就是错误的连锁反应了。 他听了听,也确实有道理就把测试环境中的那个权限给revoke了之后,重新导出了一个dump。直到一年多过去了,也没有听说过生产中导入dump有问题。 所以对于这个问题的归纳就是,赋予imp_full_database权限,也不能一概而论,要根据需要来。要不就会画蛇添足。开发,测试,dba都工作相安无事才是真的好。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档