前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试684】在Oracle中,什么是DUAL表?

【DB笔试面试684】在Oracle中,什么是DUAL表?

作者头像
AiDBA宝典
发布2019-11-12 15:00:19
1.1K0
发布2019-11-12 15:00:19
举报
文章被收录于专栏:小麦苗的DB宝专栏
目部分

在Oracle中,什么是DUAL表?

答案部分 有关Oracle的DUAL表,需要掌握以下几点内容:

① 系统提供的一个DUMMY表,临时显示结果的表,里边的内容没有特定的意义,就是为了存在而存在。

② DUAL是属于SYS用户的一个表,然后以公共同义词的方式供其他数据库用户使用,这一点可以由以下SQL验证:

代码语言:javascript
复制
SELECT D.OWNER,D.OBJECT_NAME,D.OBJECT_ID,D.OBJECT_TYPE FROM DBA_OBJECTS D WHERE D.OBJECT_NAME='DUAL';

③ Oracle对DUAL表的操作做了一些内部处理,尽量保证DUAL表中只返回一条记录。当然这些内部操作是不可见的。

④ 若DUAL表出现问题,则所有相关的基础操作都会受到影响;若DUAL表被删除的话,则数据库将不能启动,报ORA-01775的错误。

⑤ DUAL在数据库OPEN状态下是一行一列的表,但是在MOUNT和NOMOUNT状态下是一行四列的表。

⑥ DUAL的常用方式如下所示:

a. 查看当前连接用户 SELECT USER FROM DUAL;

b. 查看当前日期、时间 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

c. 当作计算器用 SELECT 8*9 FROM DUAL;

d. 查看序列值 SELECT MYSEQ.NEXTVAL FROM DUAL;

需要注意的是,如果DUAL被删除的话,那么总体的恢复思路是在数据库OPEN的情况下重建DUAL表,重建的语句如下所示:

代码语言:javascript
复制
CREATE TABLE SYS.DUAL(DUMMY VARCHAR2(1)) STORAGE(INITIAL 1) TABLESPACE SYSTEM;
INSERT INTO DUAL VALUES('X');
COMMIT;
CREATE OR REPLACE PUBLIC SYNONYM DUAL FOR DUAL;
GRANT SELECT ON DUAL TO PUBLIC WITH GRANT OPTION;
@?/rdbms/admin/utlrp.sql

如果是DUAL被删除后重启了数据库,那么就需要设置参数REPLICATION_DEPENDENCY_TRACKING为FALSE才能启动数据库。

& 说明:

有关DUAL表破坏后的恢复可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2123291

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档