oracle认证:关于Oracle的Dual表Oracle认证考试

文章作者 100test 发表时间 2009:04:30 03:58:02
来源 100Test.Com百考试题网


  有朋友问到关于Oracle的Dual表问题,并且提到了Tom的一个链接:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
  很多人关心的是Dual的内部实现,这Oracle自然是不会披露的,不过我们可以从一些有限的资料获得关于Dual的印象:
  There is internalized code that makes this happen. Code checks that ensure that a table scan of SYS.DUAL only returns one row. Svrmgrl behaviour is incorrect but this is now an obsolete product.
  The base issue you should always remember and keep is: DUAL table should always have 1 ROW. Dual is a normal table with one dummy column of varchar2(1).
  This is basically used from several applications as a pseudo table for getting results from a 0select statement that use functions like sysdate or other prebuilt or application functions.
  If DUAL has no rows at all some applications (that use DUAL) may fail with NO_DATA_FOUND exception. If DUAL has more than 1 row then applications (that use DUAL) may fail with TOO_MANY_ROWS exception.
  So DUAL should ALWAYS have 1 and only 1 row.
  前两句话最为关键,实际上我们也容易猜到,Oracle通过内部代码来实现对于DUAL的访问和控制,并且通过Internal Code使得这个表与众不同。
  Tom提到在Close了Database之后,可以看到这个表的内存地址及展现,这说明这个表的结构并不单纯:
  SQL>. 0select * from dual.
  D
  -
  X
  SQL>. alter database close.
  Database altered.
  SQL>. 0select * from dual.
  ADDR INDX INST_ID D
  -------- ---------- ---------- -
  0A4F8858 0 1 X
  注意不要更改Dual表的内容,否则可能引起数据库的问题。
  如果该表意外删除,可以通过设置初始化参数replication_dependency_tracking = FALSE,重启数据库来重建该表。
  更多优质资料尽在百考试题论坛 百考试题在线题库 oracle认证更多详细资料

相关文章


Oracle认证:Oracle数据库开发经验浅谈Oracle认证考试
特定配置下Oracle日志批量提交的最优数量Oracle认证考试
oracle认证:Oracle与SQLServer事务处理的比较Oracle认证考试
Oracle10g安装中的NetWork和crt1.o错误Oracle认证考试
oracle认证:关于Oracle的Dual表Oracle认证考试
Oracle的差异增量备份和累积增量备份Oracle认证考试
oracle认证:浅谈如何将Oracle导出到XML文件Oracle认证考试
浅谈Oracle数据库多种安全性措施Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛