dual表的含义
dual表的含义
进入部门实习时第一次接触到dual,我还以为还是一个开发人员创建的一个普通表(其实是一种虚拟表),还特意去后台找这张表,结果发现这张表有点东西。
一、查看当前用户,可以执行下面语句 select user from dual;
二、用来调用系统函数
–获得当前系统时间
select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;
–获得主机名
select SYS_CONTEXT(‘USERENV’,‘TERMINAL’) from dual;
–获得当前locale
select SYS_CONTEXT(‘USERENV’,‘language’) from dual;
–获得一个随机数
select dbms_random.random from dual;
四、如果某个字段使用了序列值,也可以查看序列值,方便在插入时获取插入的id值。
–create sequence aaa increment by 1 start with 1 //给字段aaa创建序列值
–select aaa.nextval from dual;//查看aaa的下一个序列值
–select aaa.currval from dual;//查看aaa的当前序列值
五、不小心误删了dual表的话,可能会起不了数据库了
解决:使用sys用户登陆:
SQL> create pfile=’d:pfile.bak’ from spfile
SQL> shutdown immediate
在d:pfile.bak文件中最后加入一条:
replication_dependency_tracking = FALSE
重新启动数据库:
SQL> startup pfile=’d:pfile.bak’
SQL> create table “sys”.”DUAL”
[an error occurred while processing this directive]