♣ 题目部分 在Oracle中,SQL概要(SQL Profile)的作用是什么?...使用SQL Profile的两个目的:①锁定或者说是稳定执行计划。②在不能修改应用中的SQL的情况下使SQL语句按指定的执行计划运行。...SQL Profile最大的优点是在不修改SQL语句和会话执行环境的情况下去优化SQL的执行效率,适合无法在应用程序中修改SQL时。...有两种生成SQL Profile的方法,分别是手动和采用STA来生成。...('FULL(t1@SEL$1)')是这里的格式如何写,在Mos上的文章note 215187.1中的sqlt.zip的目录utl中提供了脚本coe_xfr_sql_profile.sql可以生成这些信息
♣ 题目部分 在Oracle中,SQL优化在写法上有哪些常用的方法? ♣ 答案部分 一般在书写SQL时需要注意哪些问题,如何书写可以提高查询的效率呢?...实际上,Oracle在解析的过程中,会将“*”依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。...如果进行比较的两个值的数据类型不同,那么Oracle必须将其中一个值进行类型转换使其能够比较。这就是所谓的隐式类型转换。通常当开发人员将数字存储在字符列时会导致这种问题的产生。...由于转换是在每行都进行的,这会导致性能问题。一般情况下,当比较不同数据类型的数据时,Oracle自动地从复杂向简单的数据类型转换,该规则和MySQL中的隐式类型转换是一致的。...(16)在Oracle数据库里,IN和OR是等价的,优化器在处理带IN的目标SQL时会将其转换为带OR的等价SQL。
Q 题目 在Oracle中,实例恢复和介质恢复的区别是什么? A 答案 Redo日志是Oracle为确保已经提交的事务不会丢失而建立的一种机制。...恢复到过去的某一时间点是删除误更改的一种方法。...当事务提交时,LGWR将内存中的重做条目和事务SCN同时写入联机Redo日志。但是,DBWn进程只在最有利的时机将已修改的数据块写入数据文件。...Oracle数据库使用检查点位置,保证每个低于其SCN的已提交更改都已保存到磁盘。Oracle数据库应用Undo块,以回滚数据块中在实例失败前写入的或前滚过程中引入的未提交更改。...Oracle数据库应用Undo块回滚在数据块中未提交的改变,这些数据块是在实例失败之前或者前滚期间被写入的。回滚会将已执行但尚未提交的更改会返回到初始状态。
♣ 题目部分 在Oracle中,coe_load_sql_profile.sql脚本的作用是什么?...♣ 答案部分 可以使用coe_load_sql_profile.sql脚本直接固定执行计划,该脚本也可以实现直接把sqlprofile直接迁移到其它库中。...很多DBA习惯于使用coe_xfr_sql_profile.sql脚本来固定SQL执行计划,但是这个脚本操作起来比较麻烦,而且容易出错。这个脚本的正确用途是用来做不同数据库之间SQL执行计划的固定。...最方便的脚本是:coe_load_sql_profile.sql,使用这个脚本,只需要输入几个参数,就能完成快速恢复执行计划的任务。...SQL> 6.查看产生的sql profile,此时原语句在不加hint的情况下也走全表扫了select * from dba_sql_profiles; SQL>set line 9999 SQL>
♣ 题目部分 在Oracle中,coe_xfr_sql_profile.sql脚本的作用是什么?...♣ 答案部分 使用coe_xfr_sql_profile.sql脚本生成sqlprof_attr数据 最麻烦的sqlprof_attr('FULL(t1@SEL$1)')是这里的格式如何写,在Mos上的文章...note 215187.1中的sqlt.zip的目录utl中提供了脚本coe_xfr_sql_profile.sql可以生成这些信息。...实现手动加hint的方法,实际上面的语句问题的处理最佳的方法应该是重新收集SCOTT.TEST的统计信息才对。...③ 通过Sql Profile手动加Hint的方法很简单,而为SQL添加最合理的Hint才是关键。
♣ 题目部分 在Oracle中,如何得到已执行的目标SQL中的绑定变量的值?...♣ 答案部分 当Oracle解析和执行含有绑定变量的目标SQL时,如果满足如下两个条件之一,那么该SQL中的绑定变量的具体输入值就会被Oracle捕获: l 当含有绑定变量的目标SQL以硬解析的方式被执行时...l 当含有绑定变量的目标SQL以软解析或软软解析的方式重复执行时,Oracle在默认情况下至少得间隔15分钟才会捕获一次。...,Oracle只会捕获那些位于目标SQL的WHERE条件中的绑定变量的具体输入值,而对于那些使用了绑定变量的INSERT语句,不管该INSERT语句是否是以硬解析的方式执行,Oracle始终不会捕获INSERT...查询视图V$SQL_BIND_CAPTURE或V$SQL可以得到已执行目标SQL中绑定变量的具体输入值。
题目 在Oracle中,SESSIONS和PROCESSES的关系是什么? 答案 在数据库安装完成后,常常需要设置SESSIONS和PROCESSES的大小。...通过查找官方文档,可以知道SESSIONS参数的值在Oracle 10g和11g中是不同的,如下表所示: 属性Oracle 10gOracle 11gR2参数值的类型IntegerInteger默认值Derived...: (1.1 * PROCESSES) + 5Derived: (1.5 * PROCESSES) + 22是否可以动态修改NoNo范围1 to 2311 to 216 (即1到65536)注:在Oracle...11gR1中,该参数值和10g是一样的,修改语句为“ALTER SYSTEM SET PROCESSES|SESSIONS=200 SCOPE=SPFILE;” 由于SESSIONS的值是根据PROCESSES...在Oracle 11gR2以下版本中,SESSIONS大小的计算公式为:(1.1 * PROCESSES) + 5;在Oracle 11gR2中,SESSIONS大小的计算公式为:(1.5 * PROCESSES
♣ 题目部分 【DB笔试面试826】在Oracle中,ASH和AWR的关系是什么?...这样,对于长期检测Oracle的性能是不可能的。在Oracle 10g中,提供了永久保留ASH信息的方法,这就是AWR。...由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对VACTIVE_SESSION_HISTORY进行采样一次,并将信息保存到磁盘中。...而这个采样频率(1小时)和保留时间(Oracle 10g为7天,Oracle 11g为8天)是可以根据实际情况进行调整的,这就给DBA们提供了更加有效的系统监测工具。...图 3-24 ASH和AWR的关系 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
♣ 题目部分 在Oracle中,和谓词相关的查询转换有哪些?...ENAME"='DBA') 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
♣ 题目部分 在Oracle中,和视图相关的查询转换有哪些?...JOB"='DBA') 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
♣ 题目部分 在Oracle中,和“消除”相关的查询转换有哪些?...*Net to client 519 bytes received via SQL*Net from client 2 SQL*Net roundtrips to...*Net to client 552 bytes received via SQL*Net from client 5 SQL*Net roundtrips to...*Net to client 552 bytes received via SQL*Net from client 5 SQL*Net roundtrips to...EMPNO">=7782) 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
♣ 题目部分 在Oracle中,PFILE和SPFILE的区别是什么?...♣ 答案部分 参数文件(Parameter File)也叫初始化文件,它主要用来记录数据库的配置文件,在数据库启动时,Oracle读取参数文件,并根据参数文件中的参数设置来配置数据库,如内存的分配,允许打开的进程数和会话数等...SPFILE和PFILE的区别参考下表: 表 3-12 SPFILE和PFILE的区别 比较内容SPFILEPFILE格式二进制格式文本格式编辑方式Oracle 9i之后引入的概念,不能用文本编辑工具打开...,不能直接修改,只能存放在Oracle服务器端,只能使用如下几种方式修改: 1、利用OEM修改 2、在SQL*Plus里使用ALTER SYSTEM语句进行修改1、利用OEM修改(重启失效) 2、利用文本工具...,Oracle数据库在启动时寻找参数文件的顺序如下所示,如果这些文件都不存在,那么Oracle会报错: spfile.ora --> spfile.ora --> init.ora
Q 题目 在Oracle中,ROWID和ROWNUM的区别是什么? A 答案 Oracle有两个著名的伪列ROWID和ROWNUM,下面分别来介绍它们。...(一)ROWID ROWID是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个ROWID的伪列,但是表中并不物理存储ROWID列的值。...ROWID对访问一个表中的给定的行提供了最快的访问方法,通过ROWID可以直接定位到相应的数据块上,然后将其读到内存。...ROWID可以分为以下几种类型: l 物理ROWID:存储堆组织表、表簇、表分区、和索引分区中的行地址。 l 逻辑ROWID:存储索引组织表中的行地址。...(二)ROWNUM ROWNUM是一个伪列,不是真正的列,在表中并不真实存在,它是Oracle数据库从数据文件或缓冲区中读取数据的顺序。
♣ 题目部分 在Oracle中,固定SQL执行计划的方法有哪些?...♣ 答案部分 在实际项目中,通常在开发环境下,一些SQL执行没有任何功能问题,而当到了生产环境或生产环境的数据量发生较大的变量时,其SQL的执行效率非常低。...此时如果更改SQL,那么可能需要重新修改源程序以及重新编译程序。如果修改源程序的成本比较大,那么可以使用一些方法在不改变源应用程序的情况下更改特定SQL的执行计划并固定下来。...因为在SQL语句的执行计划发生更改时,可能存在性能风险。SQL计划发生更改的原因有很多,如优化程序版本、优化程序统计信息、优化程序参数、方案定义、系统设计和SQL概要文件创建等。...有4种方式可以固定和控制执行计划,分别是使用Hint(提示)、OUTLINE(存储概要)、SQL PROFILE(SQL概要文件)和SPM(SQL Plan Management,SQL计划管理),如下表所示
♣ 题目部分 在Oracle中,和子查询相关的查询转换有哪些?...这种转换属于基于代价的查询转换。...这里的NA,实际表示Null-Aware的意思,在11g及以后的版本中,Oracle增加了对空值敏感的反关联的支持。...因此在执行计划中,分别对两者进行了扫描(直观感觉就是对DEPT_LHR进行了两次扫描),然后再做关联查询。...DEPTNO"=10) 在这个查询中,外部对EMP_LHR表的查询要同时满足SUB1和SUB2两个子查询,而SUB1在语义上又是SUB2的子集,因此优化器将两个子查询进行了合并(只进行一次对DEPT_LHR
♣ 题目部分 在Oracle中,数据库和实例的关系是什么? ♣ 答案部分 数据库(DATABASE)是一个数据集合,Oracle数据库都将其数据存放在数据文件中。...在物理结构上,Oracle数据库必须的3类文件分别是数据文件、控制文件和联机Redo日志文件。在逻辑结构上,Oracle数据库由表空间、段、区和块组成。数据库名称由DB_NAME来标识。...实例在启动时会读取初始化参数文件(SPFILE或PFILE),获取数据库运行时的参数的值。实例名称由INSTANCE_NAME来标识。...从Oracle 12c开始,对于非CDB(non-CDB,非容器数据库)类型的数据库而言,它和Oracle 12c之前的数据库没有差别。...在12.1中,CDB和PDB的字符集必须一样,但是在12.2中,CDB和PDB的字符集可以不一样。 •根据应用程序的需要,PDB可以在PDB中创建表空间。
题目 在Oracle中,实例恢复和介质恢复的区别是什么? 答案 Redo日志是Oracle为确保已经提交的事务不会丢失而建立的一种机制。...恢复到过去的某一时间点是删除误更改的一种方法。...Oracle数据库使用检查点位置,保证每个低于其SCN的已提交更改都已保存到磁盘。Oracle数据库应用Undo块,以回滚数据块中在实例失败前写入的或前滚过程中引入的未提交更改。...Oracle数据库应用Undo块回滚在数据块中未提交的改变,这些数据块是在实例失败之前或者前滚期间被写入的。回滚会将已执行但尚未提交的更改会返回到初始状态。...总结一下,前滚和回滚是Oracle数据库实例发生意外崩溃,重新启动的时候,由SMON进行的自动恢复的过程。
♣ 题目部分 在Oracle中,RAC的脑裂和健忘分别指的是什么? ♣ 答案部分 (一)脑裂(SplitBrain) 在集群中,节点间通过心跳来了解彼此的健康状态,以确保各节点协调工作。...在集群环境中,存储设备都是共享的,这就意味着数据灾难。简单点说,就是如果由于私有网络硬件或软件的故障,导致集群节点间的私有网络在一定时间内无法进行正常的通信,这种现像称为脑裂。...在出现脑裂后,集群的重要任务就是保证错误节点与正确节点间的I/O是隔离的,这样才能避免对数据造成不一致的损坏。处理这个问题的方法就是:踢出错误节点执行修复过程。...健忘是由于某个节点更新了OCR(Oracle Cluster Registry,Oracle集群注册)中的内容,而集群中的另外一些节点此时处于关闭、维护或重启阶段,OCR Master进程来不及将其信息更新到这些异常节点缓存而导致的不一致...有关OCR的备份和恢复可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2121470 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
♣ 题目部分 在Oracle中,和“表达式和条件评估”相关的查询转换有哪些?...♣ 答案部分 (一)逻辑转换 LHR@orclasm > SELECT /*+FULL(A) FULL(B)*/ * FROM SCOTT.EMP A,SCOTT.DEPT B WHERE...DEPTNO"=20) (二)常量转换 LHR@orclasm > SELECT * FROM SCOTT.EMP A WHERE a.sal>=100+50; Execution Plan ---...SAL">=150) (三)LIKE转换 LHR@orclasm > SELECT * FROM SCOTT.EMP A WHERE A.ENAME LIKE 'lhr' ; -----------...EMPNO"<=2) 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
♣ 题目部分 在Oracle中,物理DG和快照DG相互转换的步骤有哪些? ♣ 答案部分 如何将一个物理DG转换为一个快照DG呢?...并且关闭数据库所有节点到MOUNT阶段: alter database recover managed standby database cancel; alter database close; 只需要执行一条非常简单的SQL...只在节点一执行: alter database convert to snapshot standby; 最后启动快照DG到OPEN状态: startup 如何将一个快照DG转换为一个物理DG呢?...,节点二处于关闭状态: STARTUP FORCE MOUNT; 或: alter database close; #节点1 shutdown immediate #节点2 只需要执行一条非常简单的SQL...只在节点一执行: alter database convert to physical standby; 以下命令可以查询出数据库的角色: startup force mount; select inst_id
领取专属 10元无门槛券
手把手带您无忧上云