【问题标题】:Recreate the Oracle DUAL table重新创建 Oracle DUAL 表
【发布时间】:2011-02-18 13:17:40
【问题描述】:

有没有办法在 Oracle 中创建/重新创建双表?不小心掉了。

【问题讨论】:

    标签: oracle dual-table


    【解决方案1】:

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

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

    感觉oracle根据DUAL判断版本相关的特性。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您应该联系 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 - 在此处添加了建议。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-01
          • 2018-09-28
          • 1970-01-01
          • 1970-01-01
          • 2013-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多