9i和10g的plan table

在oracle 10g中,plan table的基表已经改变,在9i的时候,还是一个table类型,在10g的时候,已经是temporary table类型了。

在10g中,如果通过dblink访问9i的库,那么explain table将无法显示。会报错:

我们去找9i下的explan table:

而在10g中:

我们看到2个表的定义已经发生了差别,字段也发生了变化,且9i中还是使用table,10g中是用temporary table了。而在9i中,我们还是需要手工创建plan_table,在10g中plan_table在数据库创建的时候,已经包含在catproc脚本中。他是通过catplan脚本在实现的。而在9i中,手工创建,是通过utlxplan脚本来实现。

在10g中,也有utlxplan脚本,也是创建table,这个在9i中一样,但是创建的plan_table的结构已然不同了。上面我们说的2个已经显示了9i的plan_table的定义和10g的plan_table的定义,前者通过utlxplan脚本创建,后者在db创建时,通过catplan脚本创建。而在10g中,还保留了utlxplan脚本。他的建表结构如下:

也是创建了table类型的plan table。但是这个explain table无法解析9i的通过dblink的执行计划,如果需要,我们还是手工将9i的utlxplan稍作修改,然后在执行:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据