揭开功能强大的数据库表DUAL的神秘面纱

和系统数据库中的其他表一样,DUAL表可以插入、更新、删除操作,还可以执行drop操作,不同的是该表只有一行一列,但是我们可以用它来做很多事情如下:

1、查看当前用户,可以在SQL Plus中执行下面语句 select user from dual;

2、用来调用系统函数

  1. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间  
  2.  
  3. select SYS_CONTEXT('USERENV','TERMINAL') from dual;--获得主机名  
  4.  
  5. select SYS_CONTEXT('USERENV','language') from dual;--获得当前 locale  
  6.  
  7. select dbms_random.random from dual;--获得一个随机数 

3、得到序列的下一个值或当前值,用下面语句

  1. select your_sequence.nextval from dual;--获得序列your_sequence的下一个值  
  2.  
  3. select your_sequence.currval from dual;--获得序列your_sequence的当前值 

4、可以用做计算器 select 7*9 from dual;

Oracle系统中dual表是一个“神秘”的表,网上有很多网友都对该表进行了测试,该表还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。此时也不要慌乱,可以通过执行以下步骤来进行恢复。可以用sys用户登陆。

  1. SQL> create pfile=’d:pfile.bak’ from spfile  
  2.  
  3. SQL> shutdown immediate 

在d:pfile.bak文件中***加入一条:

  1. replication_dependency_tracking = FALSE 

重新启动数据库:

  1. SQL> startup pfile=’d:pfile.bak’  
  2.  
  3. SQL> create table “sys”.”DUAL”  
  4.  
  5. [an error occurred while processing this directive]  
  6.  
  7. ===== 

DUAL ? 有什么神秘的? 当你想得到ORACLE系统时间, 简简单单敲一行SQL不就得了吗? 故弄玄虚….

SQL> select sysdate from dual;

#p#

DUAL的使用很方便. 但是大家知道DUAL倒底是什么OBJECT, 它有什么特殊的行为吗? 来,我们一起看一看.首先搞清楚DUAL是什么OBJECT :

  1. SQL> connect system/manager  
  2.  
  3. Connected.  
  4.  
  5. SQL> select owner, object_name , object_type from dba_objects where object_name like '%DUAL%'; OWNER OBJECT_NAME OBJECT_TYPE  
  6.  
  7. --------------- --------------- -------------  
  8.  
  9. SYS DUAL TABLE PUBLIC DUAL SYNONYM 

原来DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用.

再看看它的结构:

  1. SQL> desc dual Name Null? Type  
  2.  
  3. ----------------------------------------- -------- ----------------------------  
  4.  
  5. DUMMY VARCHAR2(1)  
  6.  
  7. SQL>  

只有一个名字叫DUMMY的字符型COLUMN .

然后查询一下表里的数据:

  1. SQL> select dummy from dual;  
  2.  
  3. DUMMY  
  4.  
  5. ----------  
  6.  
  7. X 

只有一条记录, DUMMY的值是’X’ .很正常啊,没什么奇怪嘛. 好,下面就有奇妙的东西出现了!

插入一条记录:

  1. SQL> connect sys as sysdba  
  2.  
  3. Connected.  
  4.  
  5. SQL> insert into dual values ( 'Y');  
  6.  
  7. 1 row created.  
  8.  
  9. SQL> commit;  
  10.  
  11. Commit complete.  
  12.  
  13. SQL> select count(*) from dual;  
  14.  
  15. COUNT(*)  
  16.  
  17. ----------  
  18.  
  19. 2 

迄今为止,一切正常. 然而当我们再次查询记录时,奇怪的事情发生了

  1. SQL> select * from dual;  
  2.  
  3. DUMMY  
  4.  
  5. ----------  
  6.  
  7. X 

刚才插入的那条记录并没有显示出来 ! 明明DUAL表中有两条记录, 可就是只显示一条!

再试一下删除 ,狠一点,全删光 !

  1. SQL> delete from dual; /*注意没有限定条件,试图删除全部记录*/  
  2.  
  3. 1 row deleted.  
  4.  
  5. SQL> commit;  
  6.  
  7. Commit complete. 

哈哈,也只有一条记录被删掉,

  1. SQL> select * from dual;  
  2.  
  3. DUMMY  
  4.  
  5. ----------  
  6.  
  7. Y 

为什么会这样呢? 通过查看ORACLE官方的资料得知: ORACLE对DUAL表的操作做了一些内部处理,尽量保证DUAL表中只返回一条记录.当然这些内部操作是不可见的。

由此可见,Oracle数据库DUAL表的用途还是相当广泛的,如果想更多地了解Oracle的信息,请参考我们公司的网站的Oracle专栏:http://database./oracle/。

【编辑推荐】

  1. 解析OCR与Voting Disk以及其管理
  2. Oracle认证:Oracle优化器的优化方式
  3. Oracle数据库使用OMF来简化数据文件的管理
  4. 浅谈禁用以操作系统认证方式登录Oracle数据库
  5. 浅析Windows通过ODBC访问linux的Oracle数据库

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/241489.html<

赞 (0)
管理的头像管理
上一篇2025-04-24 08:51
下一篇 2025-04-24 08:52

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注