Oracle企业面试简答题2.docx
- 文档编号:29662504
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:9
- 大小:22.17KB
Oracle企业面试简答题2.docx
《Oracle企业面试简答题2.docx》由会员分享,可在线阅读,更多相关《Oracle企业面试简答题2.docx(9页珍藏版)》请在冰豆网上搜索。
Oracle企业面试简答题2
怎样创建一个存储过程,游标在存储过程怎么使用,有什么好处?
1.使用游标可以执行多个不相关的操作.如果希望当产生了结果集后,对结果集中的数据进行多种不相关的数据操作2.使用游标可以提供脚本的可读性3.使用游标可以建立命令字符串,使用游标可以传送表名,或者把变量传送到参数中,以便建立可以执行的命令字符串.。
优点:
1.存储过程增强了SQL语言的功能和灵活性2.可保证数据的安全性和完整性。
3保证数据的安全,维护数据库的完整性。
4改善SQL语句的性能,加快存储过程5可以降低网络的通信量
怎样将一个旧数据库数据移到一个新的数据库Imp/exp将数据库中的数据导入到新的库中,如果是存储迁移直接将存储设备挂到新机器上
主键有几种?
字符型,整数型、复合型
oracle的锁又几种,定义分别是什么?
行共享锁,行排他锁,共享锁,共享行排他锁,排他锁
在java种怎样调用oracle存储过程?
\(略)
rowid,rownum的定义?
rowid和rownum都是虚列,rowid是物理地址,用于定位oracle中具体数据的物理存储位置,rownum则是sql的输出结果排序,从下面的例子可以看出其中的区别。
oracle中存储过程,游标和函数的区别?
游标类似指针,游标可以执行多个不相关的操作.如果希望当产生了结果集后,对结果集中的数据进行多种不相关的数据操作,函数可以理解函数是存储过程的一种;函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值;两者都可以通过out参数返回值,如果需要返回多个参数则建议使用存储过程;在sql数据操纵语句中只能调用函数而不能调用存储过程
使用oracle伪列删除表中重复记录?
Deletetabletwheret.rowid!
=(selectmax(t1.rowid)fromtable1t1wheret1.name=t.name)如何使用Oracle的游标?
1).oracle中的游标分为显示游标和隐式游标2).显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理;隐式游标是在执行插入(insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由PL/SQL自动定义的。
3).显式游标的操作:
打开游标、操作游标、关闭游标;PL/SQL隐式地打开SQL游标,并在它内部处理SQL语句,然后关闭它
Oracle中function和procedure的区别?
1).可以理解函数是存储过程的一种2).函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值3).函数return返回值没有返回参数模式,存储过程通过out参数返回值,如果需要返回多个参数则建议使用存储过程4).在sql数据操纵语句中只能调用函数而不能调用存储过程
Oracle的导入导出有几种方式,有何区别?
1).使用oracle工具exp/imp2).使用plsql相关工具方法1.导入/导出的是二进制的数据,2.plsql导入/导出的是sql语句的文本文件
Oracle中有哪几种文件?
数据文件(一般后缀为.dbf或者.ora),日志文件(后缀名.log),控制文件(后缀名为.ctl)
怎样优化Oracle数据库,有几种方式?
个人理解,数据库性能最关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO,就个人理解应该分为物理的和逻辑的优化,物理的是指oracle产品本身的一些优化,逻辑优化是指应用程序级别的优化
物理优化的一些原则:
1).Oracle的运行环境(网络,硬件等)2).使用合适的优化器3).合理配置oracle实例参数4).建立合适的索引(减少IO)5).将索引数据和表数据分开在不同的表空间上(降低IO冲突)6).建立表分区,将数据分别存储在不同的分区上(以空间换取时间,减少IO)
逻辑上优化:
1).可以对表进行逻辑分割2).Sql语句使用占位符语句,并且开发时候必须按照规定编写sql语句3)一些耗时的操作,可以通过存储过程等在用户较少的情况下执行,从而错开系统使用的高峰时间,提高数据库性能4).尽量不使用*号5).选择有效的表名6).Where字句规则Oracle中Where字句时从右往左处理的,另外!
=符号比较的列将不使用索引7).使用ExitsNotExits替代InNotin8).合理使用事务,合理设置事务隔离性
Oracle中字符串用什么符号链接?
Oracle中使用||这个符号连接字符串如‘abc’||‘d’
Oracle是怎样分页的?
Oracle中使用rownum来进行分页,这个是效率最好的分页方法,hibernate也是使用rownum来进行oralce分页的select*from(selectrownumr,afromtabNamewhererownum<=20)wherer>10
Oralce怎样存储文件,能够存储哪些文件?
Oracle能存储clob、nclob、blob、bfile1。
Clob可变长度的字符型数据,也就是其他数据库中提到的文本型数据类型2.Nclob可变字符类型的数据,不过其存储的是Unicode字符集的字符数据3.Blob可变长度的二进制数据4.Bfile数据库外面存储的可变二进制数据
数据库怎样实现每隔30分钟备份一次?
通过操作系统的定时任务调用脚本导出数据库
Oracle中where条件查询和排序的性能比较?
Orderby使用索引的条件极为严格,只有满足如下情况才可以使用索引,1).orderby中的列必须包含相同的索引并且索引顺序和排序顺序一致2).不能有null值的列所以排序的性能往往并不高,所以建议尽量避免orderby
怎样创建一个一个索引,索引使用的原则,有什么优点和缺点
创建标准索引:
CREATEINDEX索引名ON表名(列名)TABLESPACE表空间名;
创建唯一索引:
CREATEuniqueINDEX索引名ON表名(列名)TABLESPACE表空间名;
创建组合索引:
CREATEINDEX索引名ON表名(列名1,列名2)TABLESPACE表空间名;
创建反向键索引:
CREATEINDEX索引名ON表名(列名)reverseTABLESPACE表空间名;
索引使用原则:
索引字段建议建立NOTNULL约束经常与其他表进行连接的表,在连接字段上应该建立索引;经常出现在Where子句中的字段且过滤性很强的,特别是大表的字段,应该建立索引;可选择性高的关键字,应该建立索引;可选择性低的关键字,但数据的值分布差异很大时,选择性数据比较少时仍然可以利用索引提高效率有点:
1.创建唯一性索引,保证数据库表中每一行数据的唯一性2.大大加快数据的检索速度,这也是创建索引的最主要的原因3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
缺点:
1.索引创建在表上,不能创建在视图上2.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加3.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大4.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
怎样创建一个视图,视图的好处,视图可以控制权限吗?
createview视图名asselect列名[别名]…from表[unio[all]select…]]好处:
1.可以简单的将视图理解为sql查询语句,视图最大的好处是不占系统空间2.一些安全性很高的系统,不会公布系统的表结构,可能会使用视图将一些敏感信息过虑或者重命名后公布结构3.简化查询可以控制权限的,在使用的时候需要将视图的使用权限grant给用户
怎样创建一个触发器,触发器的定义,触发器的游标怎样定义
CREATE[ORREPLACE]TIGGER触发器名触发时间触发事件
ON表名
[FOREACHROW]
BEGIN
pl/sql语句
CURSOR游标名isSELECT*FROM表名(定义游标)
END
其中:
触发器名:
触发器对象的名称。
由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。
触发时间:
指明触发器何时执行,该值可取:
before---表示在数据库动作之前触发器执行;after---表示在数据库动作之后出发器执行。
触发事件:
指明哪些数据库动作会触发此触发器insert:
数据库插入会触发此触发器;
怎样将一个旧数据库数据移到一个新的数据库
1.Imp/exp将数据库中的数据导入到新的库中2.如果是存储迁移直接将存储设备挂到新机器上
rowid,rownum的定义
1.rowid和rownum都是虚列2.rowid是物理地址,用于定位oracle中具体数据的物理存储位3.rownum则是sql的输出结果排序,从下面的例子可以看出其中的区别。
oracle中存储过程,游标和函数的区别
游标类似指针,游标可以执行多个不相关的操作.如果希望当产生了结果集后,对结果集中的数据进行多种不相关的数据操作。
函数可以理解函数是存储过程的一种;函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值;两者都可以通过out参数返回值,如果需要返回多个参数则建议使用存储过程;在sql数据操纵语句中只能调用函数而不能调用存储过程
使用oracle伪列删除表中重复记录:
Deletetabletwheret.rowid!
=(selectmax(t1.rowid)fromtable1t1wheret1.name=t.name)
简述oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制?
变化表mutatingtable,被DML语句正在修改的表,需要作为DELETECASCADE参考完整性限制的结果进行更新的表也是变化的,限制:
对于Session本身,不能读取正在变化的表,限制表constrainingtable,需要对参考完整性限制执行读操作的表,限制:
如果限制列正在被改变,那么读取或修改会触发错误,但是修改其它列是允许的。
oracle临时表有几种。
临时表和普通表的主要区别有哪些,使用临时表的主要原因是什么?
在Oracle中,可以创建以下两种临时表:
a。
会话特有的临时表CREATEGLOBALTEMPORARY()
ONCOMMITPRESERVEROWS;b。
事务特有的临时表CREATEGLOBALTEMPORARY()ONCOMMITDELETEROWS;CREATEGLOBALTEMPORARYTABLEMyTempTable所建的临时表虽然是存在的,但是
--ONCOMMITDELETEROWS说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ONCOMMITPRESERVEROWS说明临时表是会话指定,当中断会话时ORACLE将截断表。
aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引,请用SQL列出aa表里面存在的X在bb表不存在的X的值,请写出认为最快的语句,并解译原因
selectaa.xfromaawherenotexists(select'x'frombbwhereaa.x=bb.x);以上语句同时使用到了aa中x的索引和的bb中x的索引
Oracle系统进程主要有哪些,作用是什么
数据写进程(dbwr):
负责将更改的数据从数据库缓冲区高速缓存写入数据文件日志写进程(lgwr):
将重做日志缓冲区中的更改写入在线重做日志文件系统监控(smon):
检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复进程监控(pmon):
负责在一个Oracle进程失败时清理资源检查点进程(chpt):
负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。
归档进程(arcn):
在每次日志切换时把已满的日志组进行备份或归档作业调度器(cjq):
负责将调度与执行系统中已定义好的job,完成一些预定义的工作.恢复进程(reco):
保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback
Oracle写分页有哪些方法,你一般用什么方法?
用SQL语句写一个分页?
如何用存储过程写分页?
在SQLSERVER中使用TOP分页,在ORACLE中用ROWNUM,或分析函数ROW_NUMBER使用TOP:
selecttop20,n.*fromtablenamenminusselecttop10,m.*fromtablenamem
使用分析函数:
select*from
(selectn.*,row_number()over(orderbycolumnname)numfromtablenamen)
wherenum>=10andnum<=20;使用过程时,只要将分页的范围用两个参数就可以实现。
在ORACLE中,要将过程封装在包里,还要用动态游标变量才能实现数据集的返回。
Oracle中左连接与右连接的区别?
左连接就是前一个表所有数据,后一个表有满足条件的就查出,没有就以空代替。
右连接就是后一个表所有数据,前一个表有满足条件的就查出,没有就以空代替。
前后指的是LEFT或RIGHT前后
Oracle什么时候会用到触发器?
对数据进行增,删,改,查的时候,对代码的一个检查。
检查操作是否正确,以防止对数据的破坏。
DECODE函数的用法?
DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结回then1,...,如果不等于任何一个if值,则返回else。
初看一下,DECODE只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
还可以转化表结构
存储过程的用法?
在存储过程中异常的处理,分类?
举两个预定义异常的例子?
存储过程:
是预编译数据库SQL的集合存储过程是预编译过的,执行时勿须编译,执行速度更快,存储过程封装了一批SQL语句,便于维护数据的完整性与一致性。
并且可以多次调用。
异常:
自定义,预定义,
非预定义No_Data_FoundToo_Many_RowsCASE_NOT_FOUND
触发器中能用COMMIT,为什么?
在触发器中不能使用COMMIT;等事务控制语句。
因为触发器是事务触发的如果有事务控制语句就会影响到触发它的事务。
即连带触发它的语句之前的已经完成的没有提交的语句都要受到影响。
这是会影响到数据的一致性的。
归档模式与非归档模式?
为什么归档模式可以恢复到任意时刻?
归档是在重做日志文件被覆盖之前,将该重做日志文件通过复制操作系统文件的方式,保存到指定的位置。
保存下来的重做日志文件的集合被称为归档重做日志文件,复制的过程被称为归档。
在归档日志(ARCHIVELOG)模式下,
ORACLE对重做日志文件进行归档操作。
非归档日志(NOARCHIVELOG)模式下,不会对重做日志文件进行归档操作。
由于非归档模式不会在覆盖之前保存,这样就造成了数据库在一定时间之前的重做日志文件丢失,也就不能恢复到被覆盖之前。
而归档模式在任意时间上都有重做日志文件,故可以恢复到任意时刻。
解释TABLEFunction的用途
TABLEFunction是通过PL/SQL逻辑返回一组纪录,用于普通的表/视图。
他们也用于pipeline和ETL过程。
解释FUNCTION,PROCEDURE和PACKAGE区别
function和procedure是PL/SQL代码的集合,通常为了完成一个任务。
procedure不需要返回任
何值而function将返回一个值在另一方面,Package是为了完成一个商业功能的一组function和proceudre的集合
么是基本表?
什么是视图?
两者的区别和联系是什么?
基本表是数据库中本身独立存在的表,每个基本表对应一个关系模式。
在SQL中一个关系就对应一个基本表。
一个(或多个)基本表对应一个存储文件,一个基本表可以建立若干索引,它们都依附于基本表且存放在存储文件中。
视图是从一个或几个基本表导出的表。
视图本身不独立存储在数据库中,是一个虚表。
即数据库中只存放视图的定义及其关联的基本表名等信息而不存放视图对应的数据,这些数据仍然存放在导出视图的基本表中。
但SQL在查询视图时与基本表完全相同,且用户可以在视图上再定义视图。
但用视图对数据库中的数据进行增、删、改等更新操作时有一定的限制。
试述视图的优点。
(l)视图能够简化用户的操作;
(2)视图使用户能以多种角度看待同一数据;3)视图对重构数据库提供了一定程度的逻辑独立性;4)视图能够对机密数据提供安全保护。
所有的视图是否都可以更新?
为什么?
不是。
视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。
因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的
视图都是可更新的
.哪类视图是可以更新的?
哪类视图是不可更新的?
各举一例说明。
基本表的行列子集视图一般是可更新的。
若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的
简述oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制?
变化表mutatingtable被DML语句正在修改的表需要作为DELETECASCADE参考完整性限制的结果进行更新的表也是变化的限制:
对于Session本身,不能读取正在变化的表限制表constrainingtable需要对参考完整性限制执行读操作的表限制:
如果限制列正在被改变,那么读取或修改会触发错误,但是修改其它列是允许的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 企业 面试 答题