首頁 > 資料庫 > mysql教程 > Dropdual

Dropdual

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-07 16:10:24
原創
1030 人瀏覽過

有网友删除dual表出现了问题: 删除dual表的时候hang住,然后直接shutdown abort。再重新启动数据库的时候,发现open的时候一直hang住,但是打开另外一个窗口数据库确实已经打开的。 下面进行模拟: SYS@orcl11gdrop table dual; 一直hang在这不动 在另外一个

有网友删除dual表出现了问题:

删除dual表的时候hang住,然后直接shutdown abort。再重新启动数据库的时候,发现open的时候一直hang住,但是打开另外一个窗口数据库确实已经打开的。

下面进行模拟:

1

SYS@orcl11g>drop table dual;

登入後複製

一直hang在这不动

在另外一个窗口:

1

2

SYS@orcl11g>shutdown abort

ORACLE instance shut down.

登入後複製

重启数据库:

1

2

3

4

5

6

7

8

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.

登入後複製

1

SYS@orcl11g>alter database open;

登入後複製

一直hang这个不动,打开另外一个窗口:

1

2

3

4

5

6

SYS@orcl11g>select open_mode from v$database;

OPEN_MODE

----------------------------------------

READ WRITE

 

SYS@orcl11g>

登入後複製
发现数据库已经打开

这是因为系统触发器造成,在初始化参数中加入:
_system_trig_enabled=flase

再次启动数据库:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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删除看是什么效果:

1

2

3

SYS@orcl11g>drop table dual;

 

Table dropped.

登入後複製

重启数据库:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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

加入参数打开数据库:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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表:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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已经恢复完成

1

2

3

4

SYS@orcl11g>select 'www.zbdba.com' from dual;

'WWW.ZBDBA.COM'

--------------------------

www.zbdba.com

登入後複製




相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板