重新创建Oracle DUAL表

时间:2010-05-12 10:13:01

标签: oracle dual-table

有没有办法在Oracle中创建/重新创建双表?它被意外丢弃了。

3 个答案:

答案 0 :(得分:4)

您应该联系Oracle支持部门。

你有备份吗?如果是这样,请从备份中恢复该表。否则(如果您不能选择联系Oracle)......

Oracle对DUAL进行了特殊优化,但我不知道该表本身是否有任何特殊之处。我会像对待普通表一样对待它,看看会发生什么。试试这个:

以SYSDBA身份连接,然后执行以下命令:

CREATE TABLE SYS.DUAL
(
  DUMMY  VARCHAR2(1 BYTE)
);

INSERT INTO SYS.DUAL VALUES ( 'X' );

COMMIT;

GRANT SELECT ON SYS.DUAL TO public WITH GRANT OPTION;

CREATE PUBLIC SYNONYM DUAL FOR SYS.DUAL;

永远不会再次改变SYS架构中的任何内容!

编辑:刚刚注意到今天的重复:https://stackoverflow.com/questions/2816478/recovering-dual-table-in-oracle - 在此处添加了建议。

答案 1 :(得分:0)

如果DUAL被意外删除,Oracle将变得很奇怪。

如果没有SP2-0575: Use of Oracle SQL feature not in SQL92 Entry Level.,或者当前用户没有特权从中选择,SQLPlus会说sys.DUAL

感觉就像oracle根据DUAL确定与版本相关的功能。

答案 2 :(得分:-1)

Dual Table是系统表空间中的虚拟表。作为用户,你没有权利放弃它。如果你的架构中有自己的双表,你可以玩它。你可以执行dml,删除它,截断它等等。即使你丢弃,你也可以从之前的相同脚本中重新创建它。