重新创建Oracle的DUAL表

4
有没有办法在Oracle中创建/重新创建双表?它被意外删除了。
3个回答

6

你应该联系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 - 在这里添加了一些建议。

0

如果意外删除了DUAL,Oracle会变得很奇怪。

如果没有sys.DUAL或当前用户没有选择它的特权,SQLPlus会显示SP2-0575:使用不在SQL92入门级中的Oracle SQL功能。

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


-1

Dual Table是系统表空间中的虚表。作为用户,您没有权力删除它。如果您在自己的模式中有自己的双重表,您可以玩弄它。您可以执行DML、删除和截断等操作。即使您删除了它,也可以从与以前相同的脚本重新创建它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接