oracle面试题

Posted 陈如水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle面试题相关的知识,希望对你有一定的参考价值。

索引原理

1,表中的数据按照索引从大到小排列;

2,取出两个字段,索引字段(sal)和rowid;

3,把这个结果集保存在一张特殊的表里面---->索引表;

4,根据索引表建立一颗Btree,使用二分查找法进行查找数据。

数据库的三大范式是什么?

1)第一范式:原子性,要求表中的每一列不可拆分

2)第二范式:一张表只描述一个实体

3)第三范式:所有列与主键直接相关,而不是间接相关

怎样优化Oracle数据库?

个人理解,数据库性能最关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO。

优化的一些原则:

1). Oracle的运行环境(网络,硬件等)

2). 使用合适的优化器;

3). 合理配置oracle实例参数;

4). 建立合适的索引(减少IO)

5). 将索引数据和表数据分开在不同的表空间上(降低IO冲突)

6). 建立表分区,将数据分别存储在不同的分区上(以空间换取时间,减少IO)

sql语句应该考虑哪些安全性?

1).防止sql注入,对特殊字符进行转义,过滤

2).使用预编译的sql语句绑定变量

3).最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。

4).当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。

请简述项目中优化sql语句执行效率的方法?

1)将where中用的比较频繁的字段建立索引;

2)减少表之间的关联,少使用join;

3)避免在索引列上使用计算,not,in和<>等操作;

4)select子句中避免使用‘*’,只查询使用的字段;

5)尽量用PreparedStatement来查询,不要用Statement。

什么情况下设置了索引但无法使用

1)以“%”开头的LIKE语句 (模糊查询);

2)OR语句前后没有同时使用索引;

3)数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型);

请简述oracle中的锁

行级锁主要是在执行操作过程中,锁定指定的行。主要的锁行语句有:

insert ,update,delete ,及select ....for update。

表级锁:指在运行操作指令过程中,由用户指定锁定某张表。

lock table XXX in mode share;--共享锁,

3)oracle中的锁分为共享锁,排他锁,共享排它,行共享,行排他等

怎样创建一个一个索引,索引使用的原则,有什么优点和缺点 ?

创建索引的基本语法:

CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名;

索引使用原则:

1)索引字段建议建立NOT NULL约束

2)经常与其他表进行连接的表,在连接字段上应该建立索引;

3)经常出现在Where子句中的字段,应该建立索引;

4)频繁DML的表,不要建立太多的索引;

5)不要将那些频繁修改的列作为索引列;

6)表中数据量少时,不适合创建索引

索引优点:

1)创建唯一性索引,保证数据库表中每一行数据的唯一性

2)大大加快数据的检索速度,这也是创建索引的最主要的原因

3)加速表和表之间的连接

4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

索引缺点:

1)索引创建在表上,不能创建在视图上

2)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

3)索引需要占物理空间

4.)当对表中的数据进行增删改的时候,索引也要动态的维护,降低了数据的维护速度

oracle用户是干嘛的,oracle用户的概念

oracle用户,通俗的讲就是访问oracle数据库的“人”。下面就让我们一起来了解一些oracle用户方面的知识。

一、用户的概念

oracle用户,即user,通俗的讲就是访问oracle数据库的“人”。在oracle中,可以对oracle用户的各种安全参数进行控制,以维护数据库的安全性,这些概念包括模式(schema)、权限、角色、存储设置、空间限额、存取资源限制、数据库审计等。每个用户都有一个口令,使用正确的用户/口令才能登录到数据库进行数据存取

二、用户默认表空间

表空间是信息存储的逻辑单位、当oracle用户连接到数据库进行资料存储时,若未指出数据的目标存储表空间时,则数据存储在用户的默认表空间中。比如:create table mytable(id varchar2(20),name varchar2(100)); 这条语句创建了一个表mytable,并将其存储在当前用户的默认表空间中,若要指定表空间,则:create table mytable(id varchar2(20),name varchar2(100)) tablespace tbs1;。用户的默认表空间可以在创建用户时指定,也可以使用aler user命令进行指定,具体语法见后面的介绍。

三、用户临时表空间

临时表空间主要用于order by语句的排序以及其它一些中间操作。在oracle9i之前,可以指定用户使用不同的临时表空间,从9i开始,临时表空间是通用的,所的用户都使用TEMP作为临时表空间。

四、用户资源文件

oracle用户资源文件用来对用户的资源存取进行限制,包括:cpu使用时间限制、内存逻辑读个数限制、每个用户同时可以连接的会话数据限制、一个会话的空间和时间限制、一个会话的持续时间限制、每次会话的专用SGA空间限制。

五、用户表空间限额

表空间存储限制是用户在某一个表空间中可以使用的存储空间总数。在创建或修改用户时,可以由参数quota指出。若用户在向表空间存储数据时,超出了此限额,则会产生错误。错误信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通过查询字典dba_ts_quotas查看表空间限额信息。

以上是关于oracle面试题的主要内容,如果未能解决你的问题,请参考以下文章

面试题

Oracle面试题

Oracle面试题

太牛了!Oracle存储过程转mysql工具

金融行业软件测试面试题(含答案)

oracle面试题