Oracle SQL - DML语句是否会导致对象无效?

时间:2011-06-22 21:39:52

标签: sql oracle oracle10g

我正在为我的公司编写一些批处理脚本,我在一些历史批处理脚本中看到了以下步骤:

  1. 有一个Delete from table where ....声明
  2. Oracle导入工具用于导入单个记录
  3. 重新编译架构
  4. 我不相信你需要在删除后重新编译模式然后导入(插入)。我错了吗?是否有可能DDL语句(例如delete和insert)会使对象无效?

2 个答案:

答案 0 :(得分:1)

想不出为什么会发生这种情况的原因,除非你的DML搞乱了数据字典,这听起来是个坏主意......

另据一种想法,也许重新编译会产生需要执行COMMIT的副作用吗?

答案 1 :(得分:1)

我假设您在导入时指定了TABLES参数?如果是这样,那么您处于TABLE模式,这意味着不会导入过程对象,视图等。 imp命令对可由进程导入的任何PL / SQL程序单元执行COMPILE。这可能会使其他依赖对象无效,因此在批处理脚本中重新编译步骤。当然,很多时候这种事情被放入一个基于另一个用作模板的脚本的脚本中,很容易就没必要了。