- 论坛徽章:
- 0
|
删除DUAL表后,发现数据库无法启动到Mount状态
数据库在正常启动的时候,会对系统表进行依赖性鉴权,发现dual表不存在,鉴权失败!
由此可见,dual表对ORACLE来说,虽然很小(只有一行一列),但却及其重要,没有它甚至不能正常登陆数据库!
但现在如何进入数据库重建dual表呢?
启动参数中可以通过replication_dependency_tracking=FALSE来指示数据库启动不对依赖性鉴权。将其写入init.ora文件,指定该参数文件进行启动。
SQL> startup pfile=/home/ora10g/admin/orcl/pfile/init.ora
ORACLE instance started.
Total System Global Area 629145600 bytes
Fixed Size 780420 bytes
Variable Size 170137468 bytes
Database Buffers 457179136 bytes
Redo Buffers 1048576 bytes
Database mounted.
Database opened.
现在数据库可以启动了,而且处于OPEN状态,
赶快重建dual表吧~
SQL> create table sys.dual
2 (dummy varchar2(1)
3 )
4 pctfree 10 pctused 4;
Table created.
SQL> insert into dual values('x');
1 row created.
SQL> commit;
Commit complete.
SQL> grant select on dual to public;
Grant succeeded.
建好该表后,正常启动验证一下,没有问题了^_^
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 629145600 bytes
Fixed Size 780420 bytes
Variable Size 174331772 bytes
Database Buffers 452984832 bytes
Redo Buffers 1048576 bytes
Database mounted.
Database opened.
结论、解决方案及效果
Dual表虽然很小,只有一行一列,但对ORACLE数据库却及其重要,很多SQL语句都直接用到该表,不管是ORACLE内部的还是应用中用到的。
通过该案例希望大家较为深入的了解dual表在ORACLE中的作用。 |
|