♣ 题目部分 在Oracle中,Oracle的DBLINK是什么?...其实,DBLINK和数据库中的VIEW差不多,创建DBLINK的时候需要知道待读取数据库的IP地址、ORACLE_SID以及数据库用户名和密码。...DROP PUBLIC DATABASE LINK两个权限: GRANT CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK TO SCOTT; 查询数据库的.../密码,然后在本地数据库中通过DBLINK访问远程数据库“TNS_BJLHR”中SCOTT.TB_TEST表,SQL语句如下所示: SELECT * FROM SCOTT.TB_TEST@DBL_BJLHR...; 创建DBLINK的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库的时候,而直接将相关的内容写到DBLINK的配置中,如下所示: CREATE DATABASE LINK
今天在调用Oracle Function遇到一个异常 ?...这是我的函数(为了再现随手写的) create or replace function test_f(id varchar2) return varchar2 is Result varchar2...MSD_PN from t_did where diddid = ID; IF MSD_PN IS NOT NULL THEN RESULT := 'ERROR:' || ID || '在系統中不存在...MSD_PN from t_did where diddid = ID; IF MSD_PN IS NOT NULL THEN RESULT := 'ERROR:' || ID || '在系統中不存在
在Oracle中,如果要进行日期间的查询需要用到Oracle的内置函数to_date()。...1、Oracle日期查询的边界问题 此外,日期间的查询还涉及一个边界问题,因为每个人的思维方式不同,因此写出的语句都不同。...而在第3行中,如果你忘记在后边+1,那么程序就认为你查询的是比“2010-07-06 00:00:00”这个时间小的记录,那么7月6号当天的是数据就查不出来了。...-07-05 12:00:00', 'yyyy-mm-dd hh24:mi:ss'); 因为Oracle是不区分大小写的,所以如果你在第2行的to_date函数中把日期格式写成:'yyyy-MM-dd...而在MySQL的SQL查询中,日期格式是这样写的“yyyy-MM-dd HH:mm:ss",其中大写的MM表示月、小写的mm表示分钟。
♣ 题目部分 在Oracle中,SCN是什么? ♣ 答案部分 SCN(System Change Number,系统改变号)是一个由系统内部维护的序列号,在数据库全局是唯一的。...当系统需要更新的时候自动增加,它是系统中维持数据的一致性和顺序恢复的重要标志,是数据库中非常重要的一种数据结构。...SCN是在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交的事务分配一个唯一的SCN。SCN的值是对数据库进行更改的逻辑时间点。SCN是一个只会增加、不会减少的数字。...由于SCN描述的是数据一致性的状态,所以,它会在各种涉及数据一致性的场合中起到重要作用。...本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗 ?
题目部分 在Oracle中,什么是闪回查询(Flashback Query)? 答案部分 闪回查询(Flashback Query)是查询过去某个时间点或某个SCN值对应的表中的数据信息。...它是基于回滚(Undo)表空间中的回滚信息实现。...闪回查询分为基于AS OF TIMESTAMP和基于AS OF SCN的闪回查询,如下所示: SELECT * FROM SCOTT.EMP AS OF TIMESTAMP(SYSTIMESTAMP...---------- -------------------- 1 li 已用时间: 00: 00: 00.02 ------查询第一个事务提交,第二个事务还没有提交时的数据 11...,第三个事务还没有提交时的数据 12:23:33 SQL> select * from old_t as of timestamp to_timestamp('2012-11-14 11:41:38',
♣ 题目部分 在Oracle中,LogMiner是什么?其有哪些用途?请简述LogMiner的使用过程。...♣ 答案部分 众所周知,所有对用户数据和数据字典的改变都记录在Oracle的Redo日志中,因此,Redo日志包含了所有进行恢复操作所需要的信息。...但是,原始的Redo日志文件无法看懂,所以,Oracle从8i以后提供了一个非常有用的分析工具,称为LogMiner。使用该工具可以轻松获得Redo日志文件(包含归档日志文件)中的具体内容。...6、执行后续审计 (一)安装LogMiner工具 在默认情况下,Oracle已经安装了LogMiner工具。...确保在创建Flat File文件的过程中,不能有DDL操作被执行。
♣ 题目部分 在Oracle中,和子查询相关的查询转换有哪些?...也就是说,EXISTS子句中的子查询被展开,其中的对象与主查询中的对象直接进行半关联操作。...这里的NA,实际表示Null-Aware的意思,在11g及以后的版本中,Oracle增加了对空值敏感的反关联的支持。...因此在执行计划中,分别对两者进行了扫描(直观感觉就是对DEPT_LHR进行了两次扫描),然后再做关联查询。...DEPTNO"=10) 在这个查询中,外部对EMP_LHR表的查询要同时满足SUB1和SUB2两个子查询,而SUB1在语义上又是SUB2的子集,因此优化器将两个子查询进行了合并(只进行一次对DEPT_LHR
Oracle 中的树查询和 connect by 使用 connect by 和 start with 来建立类似于树的报表并不难,只要遵循以下基本原则即可: 使用 connect by 时各子句的顺序应为...: select from where start with connect by order by prior 使报表的顺序为从根到叶(如果 prior 列是父辈)或从叶到根(如果 prior 列是后代...where 子句可以从树中排除个体,但不排除它们的子孙(或者祖先,如果 prior 列是后代)。...connect by 中的条件(尤其是不等于)消除个体和它所有的子孙(或祖先,依赖于怎样跟踪树)。 connect by 不能与 where 子句中的表连接在一起使用。 下面是几个例子 1....排除个体,但不排除它们的子孙 SELECT n_parendid, n_name, (LEVEL - 1), n_id FROM navigation WHERE n_parendid IS NOT NULL
一条sql怎么查出单表中含有父子关系的数据呢?...tab.name, '\' ) FROM tab WHERE LEVEL = 3 CONNECT BY PRIOR tab.id = tab.parid image.png 还有其他更优雅的写法吗...,需要注意的是如果with后面的值是子节点那么求出的就是他的父节点和祖宗节点,如果是父节点那么求出的就是他的子节点和子孙节点,如果不懂可以把上面start with 后面的条件改成 p.parent=0...关键词prior,prior跟它右边的父节点放在一起(prior p.parent)表示往父节点方向遍历, 反之,如果 prior跟子节点放在一起(prior p.id)表示往叶子方向遍历。...这里需要注意的 =p.id 放在prior关键词的前面或者后面都没什么关系,也就是上面可以这样写 p.id= prior p.paren。重要的是prior旁边放的
使用Oracle中的start with .. connect by prior ..语句可以轻松实现。.../rdbms/admin/utlsampl.sql 发现脚本跑完没有显示报错,但也没有成功创建表,进一步排查发现因为是我们使用的是19c的一个PDB,脚本中的连接库方式默认没有指定,需要修改下。...我们先在tnsnames.ora配置文件中添加这个PDB的配置: --配置tnsnames.ora CMDB = (DESCRIPTION = (ADDRESS = (PROTOCOL =...再次执行,scott用户下面熟悉的测试表创建成功。 查询emp表: SQL> conn scott/tiger@cmdb Connected....利用层次查询中的伪列level和表达式sys_connect_by_path,查询如下: select level, ename, job, sys_connect_by_path(ename,'->'
♣ 题目部分 在Oracle中,函数索引是什么?...♣ 答案部分 在Oracle中,有一类特殊的索引,称为函数索引(Function-Based Indexes,FBI),它基于对表中列进行计算后的结果创建索引。...函数索引在不修改应用程序的逻辑基础上提高了查询性能。如果没有函数索引,那么任何在列上执行了函数的查询都不能使用这个列的索引。当在查询中包含该函数时,数据库才会使用该函数索引。...对于函数索引的索引列的函数查询可以通过视图DBA_IND_EXPRESSIONS来实现,通过如下的SQL语句可以查询所有的函数索引: SELECT * FROM DBA_INDEXES D WHERE...② 如果被函数索引所引用的用户自定义PL/SQL函数失效了或该函数索引的属主没有了在函数索引里面使用的函数的执行权限,那么对这张表上的执行的所有的操作(例如SELECT查询、DML等)也将失败(会报错:
♣ 题目部分 在Oracle中,压缩索引是什么? ♣ 答案部分 Oracle数据库可以使用键压缩(Key Compression)来压缩B-Tree索引或索引组织表中的主键列值的部分。...键压缩可以大大减少索引所使用的空间,使用了键压缩的索引称为压缩索引。对索引进行压缩更多的意义在于节省存储空间,减少I/O时间。...压缩也是会引入存储开销的,只是很多时候压缩节省的空间比压缩需要的存储开销更大,所以压缩以后整体的存储开销减小了。...可以使用如下的SQL将索引重建为压缩或非压缩的索引: ALTER INDEX EMPLOYEE_LAST_NAME_IDX REBUILD NOCOMPRESS;--非压缩 ALTER INDEX EMPLOYEE_LAST_NAME_IDX...'; 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
♣ 题目部分 在Oracle中,位图索引是什么? ♣ 答案部分 位图索引(Bitmap Indexes)是一种使用位图的特殊数据库索引。它针对大量相同值的列而创建,例如:类别、型号等。...在传统的B-Tree索引中,一个索引条目指向单个行,但是在位图索引中,每个索引键存储指向多个行的指针。相对于B-Tree索引,位图索引占用的空间非常小,创建和使用速度非常快。...位图索引与其它索引不同,它不是存储的索引列的列值,而是以比特位0、1的形式存储,所以在空间上它占的空间比较小,相应的一致性查询所使用的数据块也比较小,查询的效率就会比较高。...所以,一般应用于即席查询和快速统计条数。由于位图索引本身存储特性的限制,所以,在重复率较低的列或需要经常更新的列上是不适合建立位图索引的。另外,位图索引更新列更容易引起死锁。...可以使用如下的SQL语句查询数据库中的所有位图索引: SELECT * FROM DBA_INDEXES D WHERE D.INDEX_TYPE='BITMAP'; 本文选自《Oracle程序员面试笔试宝典
1、Group by 进行分组查询, group by 子句可以将数据分为若干个组 1.1 分组查询 注意: 出现在 SELECT 子句中的字段,如果不是包含在多行函数中,那么该字段必须同时在...1.2 带 where 的分组查询 注意: group by 子句要写到 where 子句的后面 a) 查询每个部门的人数和平均工资, 排除 10 部门 select deptno, count(...*), avg(sal) from emp where deptno10 group by deptno order by deptno; 1.3 带 having 的分组查询 注意: where...子句中不允许使用分组函数, 分组函数用于分组前过滤 having 用于过滤分组后的条件 a) 查询每个部门的总工资和平均工资, 排除平均工资低于 1600 的部门 select deptno...分组查询时相关关键词的顺序: from–>where–>group by–>select–>having–>order by a) 在 emp 表中,列出工资最小值小于 2000 的职位 select
当表自查询的时候,就基本会用到递归的查询 比如一个员工表 主键 名字 职位 上级id 部门id id...1001 y100 1003 赵六 员工 1001 y100 像这张表就会用到自查询..., 有自查询的表的话,基本会用到递归查询 比如我要查询部门id为“y100”的,张三经理带领的这个团队底下所有的员工.
♣ 题目部分 在Oracle中,V$SESSION_LONGOPS视图的作用是什么?...♣ 答案部分 在Oracle 11g之前的版本,长时间运行的SQL可以通过监控VSESSION_LONGOPS来观察,当某个操作执行时间超过6秒时,就会被记录在VSESSION_LONGOPS中,通常可以监控到全表扫描...、全索引扫描、哈希连接、并行查询等操作。...V$SESSION_LONGOPS查询脚本如下所示: SET LINE 9999 PAGESIZE 9999 COL USERNAME FORMAT A10 COL SESSION_INFO FORMAT...SESSION_LONGOPS A WHERE A.TIME_REMAINING 0 ORDER BY A.TIME_REMAINING DESC, A.SQL_ID, A.SID; 本文选自《Oracle
题目部分 如何查找或监控效率低下的SQL语句?在Oracle中,errorstack的作用是什么?...答案部分 在使用Oracle数据库的过程中,可能会遇到各种各样的错误或异常,而且这些错误或异常的提示并不具体,那么这个时候就可以使用Oracle提供的一种对于错误堆栈进行跟踪的方法即errorstack...,也可以在参数文件中设置,这个设置仅当某个特定的错误出现时才被触发,如设置ORA-01438事件的跟踪: alter system set events '1438 trace name errorstack...forever,level 3';--启用 ...执行SQL语句... alter system set events '1438 trace name errorstack off';--关闭 接下来在告警日志中找到相关的跟踪文件...本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
Q 题目 在Oracle中,实例恢复和介质恢复的区别是什么? A 答案 Redo日志是Oracle为确保已经提交的事务不会丢失而建立的一种机制。...但是,这些数据文件可能还包含未提交的更改,要么是在实例失败前保存到数据文件中的,或者是在前滚过程中引入的。...Oracle数据库使用检查点位置,保证每个低于其SCN的已提交更改都已保存到磁盘。Oracle数据库应用Undo块,以回滚数据块中在实例失败前写入的或前滚过程中引入的未提交更改。...Oracle数据库应用Undo块回滚在数据块中未提交的改变,这些数据块是在实例失败之前或者前滚期间被写入的。回滚会将已执行但尚未提交的更改会返回到初始状态。...操作对应的Undo信息(在Buffer Cache生成对应中的Undo Block)就会首先生成其对应的Redo信息(Undo Block's Redo Entry)并写入Log Buffer中。
♣ 题目部分 在Oracle中,Oracle Cluster Health Monitor(CHM)的作用是什么?...在Oracle 11.2.0.3之后,AIX和Linux平台在安装Grid时默认安装CHM。...manage -get repsize #查看CHM数据保留时间(s) oclumon manage -repos resize 68083 #修改CHM数据保留时间(s) 在集群中,可以通过下面的命令查看...00:01:31 /u01/app/11.2.0/grid/bin/osysmond.bin 2、Cluster Logger Service(ologgerd):在一个集群中,ologgerd会有一个主节点...当ologgerd在当前的节点遇到问题而无法启动后,它会在备用节点启用。该服务会将osysmond收集的数据保存到CHM资料库中($GRID_HOME/crf/db)。
题目部分 在Oracle中,什么是闪回版本查询(Flashback Version Query)?...答案部分 闪回版本查询(Flashback Version Query)是查询过去某个时间段或某个SCN段内表中数据的变化情况。闪回版本查询基于回滚(Undo)表空间中的回滚信息实现。...SCN段;AS OF用于指定闪回查询时查询的时间点或SCN。...在闪回版本查询的目标列中,可以使用下列几个伪列返回版本信息: l VERSIONS_STARTTIME:基于时间的版本有效范围的下界; l VERSIONS_STARTSCN:基于SCN的版本有效范围的下界...闪回版本查询注意事项: ① VERSIONS子句不能用于查询的表包括外部表、临时表和固定表。 ② 不能使用VERSIONS子句查询视图。但是,在视图定义中可使用VERSIONS子句。
领取专属 10元无门槛券
手把手带您无忧上云