zoukankan      html  css  js  c++  java
  • Drop dual

    一些互联网用户删除dual表还有一个问题:

    删除dual时间表hang直播,然后直接shutdown abort。话又说回来,当您启动数据库。发现open时间已经hang直播。但该数据库是真正开放的另一个窗口已经打开。

    下面的模拟:

    SYS@orcl11g>drop table dual;
    

    一直hang在这不动

    在另外一个窗体:

    SYS@orcl11g>shutdown abort
    ORACLE instance shut down.

    重新启动数据库:
    SYS@orcl11g>startup mount
    ORACLE instance started.
    Total System Global Area  417546240 bytes
    Fixed Size                  2213936 bytes
    Variable Size             327157712 bytes
    Database Buffers           83886080 bytes
    Redo Buffers                4288512 bytes
    Database mounted.

    SYS@orcl11g>alter database open;
    

    一直hang这个不动。打开另外一个窗体:
    SYS@orcl11g>select open_mode from v$database;
    OPEN_MODE
    ----------------------------------------
    READ WRITE
    
    SYS@orcl11g>
    发现数据库已经打开

    这是由于系统触发器造成,在初始化參数中增加:
    _system_trig_enabled=flase

    再次启动数据库:

    SYS@orcl11g>startup mount
    ORACLE instance started.
    Total System Global Area  417546240 bytes
    Fixed Size                  2213936 bytes
    Variable Size             327157712 bytes
    Database Buffers           83886080 bytes
    Redo Buffers                4288512 bytes
    Database mounted.
    SYS@orcl11g>show parameter _sys
    NAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    _system_trig_enabled                 boolean                FALSE
    audit_sys_operations                 boolean                FALSE
    audit_syslog_level                   string
    filesystemio_options                 string                 none
    ldap_directory_sysauth               string                 no
    SYS@orcl11g>alter database open;
    
    Database altered.
    
    最開始删除dual表的时候也是由于系统触发器的存在。


    如今我们禁用了系统触发器将dual删除看是什么效果:

    SYS@orcl11g>drop table dual;
    
    Table dropped.

    重新启动数据库:

    SYS@orcl11g>startup nomount pfile=initorcl11g.ora
    ORACLE instance started.
    Total System Global Area  417546240 bytes
    Fixed Size                  2213936 bytes
    Variable Size             327157712 bytes
    Database Buffers           83886080 bytes
    Redo Buffers                4288512 bytes
    SYS@orcl11g>show parameter rep
    NAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    replication_dependency_tracking      boolean                TRUE
    SYS@orcl11g>
    SYS@orcl11g>
    SYS@orcl11g>
    SYS@orcl11g>
    SYS@orcl11g>alter database mount;
    
    Database altered.
    
    SYS@orcl11g>alter database open;
    alter database open
    *
    ERROR at line 1:
    ORA-01092: ORACLE instance terminated. Disconnection forced
    ORA-01775: looping chain of synonyms
    Process ID: 2485
    Session ID: 1 Serial number: 3

    这里我们不用trace就知道是由于dual表的缘故,所以dual也是非常重要的。不要乱玩

    这时候我们须要将REPLICATION_DEPENDENCY_TRACKING參数设置为False才干打开数据库:
    官方文档给出的解释:
    REPLICATION_DEPENDENCY_TRACKING enables or disables dependency tracking for
    read/write operations to the database. Dependency tracking is essential for
    propagating changes in a replicated environment in parallel

    增加參数打开数据库:

    SYS@orcl11g>startup mount
    ORACLE instance started.
    Total System Global Area  417546240 bytes
    Fixed Size                  2213936 bytes
    Variable Size             327157712 bytes
    Database Buffers           83886080 bytes
    Redo Buffers                4288512 bytes
    Database mounted.
    SYS@orcl11g>show parameter rep
    NAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    replication_dependency_tracking      boolean                FALSE
    SYS@orcl11g>ak^H
    SP2-0042: unknown command "a" - rest of line ignored.
    SYS@orcl11g>a;ter^H
    SYS@orcl11g>alter database open;
    
    Database altered.
    
    SYS@orcl11g>select * from dual;
    select * from dual
                  *
    ERROR at line 1:
    ORA-01775: looping chain of synonyms
    这时候我们呢须要重建dual表:

    SYS@orcl11g>CREATE TABLE "SYS"."DUAL"
      2       (  "DUMMY" VARCHAR2(1)
      3       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
      4     NOCOMPRESS LOGGING
      5      STORAGE(INITIAL 16384 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      6      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      7      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      8      TABLESPACE "SYSTEM" ;
    
    
    Table created.
    
    SYS@orcl11g>SYS@orcl11g>GRANT SELECT ON "SYS"."DUAL" TO PUBLIC WITH GRANT OPTION;
    
    
    Grant succeeded.
    
    SYS@orcl11g>SYS@orcl11g>@?/rdbms/admin/utlrp.sql
    

    至此我们dual已经恢复完毕

    SYS@orcl11g>select 'www.zbdba.com' from dual;
    'WWW.ZBDBA.COM'
    --------------------------
    www.zbdba.com







    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    下班后两小时,决定你将会成为怎样的人?
    快速搭建IE测试环境(Virtualbox+ievms)
    这次,雅虎真的撤销QA团队了
    软件测试之测试用例颗粒度问题
    【转】软件质量谁负责
    定期来一次“绩效谈话”(摘自易中)
    xadmin引入celery4.0执行异步任务与定时任务
    dapi 基于Django的轻量级测试平台三 接口关联
    dapi 基于Django的轻量级测试平台二 前端页面
    dapi 基于Django的轻量级测试平台一 设计思想
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4658604.html
Copyright © 2011-2022 走看看