DUAL表可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。
用sys用户登陆。
创建DUAL表。
授予公众SELECT权限(SQL如上述,但不要给UPDATE,INSERT,DELETE权限)。
向DUAL表插入一条记录(仅此一条): insert into dual values(''X'');
提交修改。
具体操作:
--用sys用户登陆。
SQL> create pfile=’d:/pfile.bak’ from spfile
SQL> shutdown immediate
--在d:/pfile.bak文件中最后加入一条:replication_dependency_tracking = FALSE
初始化参数REPLICATION_DEPENDENCY_TRACKING用于激活或禁止数据库读写操作的跟踪,默认值为TRUE。当设置该参数为TRUE时,会跟踪数据库读写操作;当设置该参数为FALSE时,不会跟踪数据库读写操作。
因为该初始化参数是静态参数,所以修改后必须重新启动例程。示例如下:
SQL>ALTER SYSTEM SET replication_dependency_tracking=false SCOPE=SPFILE;
SQL>startup force(重启生效)
--重新启动数据库:
SQL> startup pfile=’d:/pfile.bak’
SQL> create table sys.DUAL ( DUMMY varchar2(1) ) pctfree 10 pctused 4;
SQL> insert into dual values(‘X’);
SQL> commit;
SQL> Grant select on dual to Public;
授权成功。
SQL> select * from dual;
D
-
X
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL>
--OK, 下面就可以正常使用了。