oracle数据库面试题

Oracle常见面试题
一、对数据库SQL200五、ORACLE熟悉吗?
   SQL2005是微软公司的数据库产品。是一个RDBMS数据库,通常应用在一些中型数据库的应用,不能跨平台。
   ORACLE是ORACLE公司的数据产品,支持海量数据存储,支持分布式布暑,支持多用户,跨平台,数据安全完整性控制性能优越,是一个ORDBMS,通常用在大型公司。
二、能不能设计数据库?如何实现数据库导入与导出的更新
   使用POWERDISINE工具的使用,通常知足第三范式就能够了。EXP与IMP数据库的逻辑导入与导出
三、如何只显示重复数据,或不显示重复数据
   显示重复:select * from tablename group by id having count(*)>1
   不显示重复:select * from tablename group by id having count(*)=1
四、什么是数据库的映射
   就是将数据库的表与字段对应到模型层类名与属性的过程.
五、如何用存储过程写分页?
   在SQLSERVER中使用TOP分页,在ORACLE中用ROWNUM,或分析函数ROW_NUMBER
   使用TOP:
   select top 20,n.* from tablename n minus select top 10,m.* from tablename m
   使用分析函数:
    select * from
   (select n.*,row_number() over(order by columnname) num  from tablename n)
    where num>=10 and num <=20;
   使用过程时,只要将分页的范围用两个参数就能够实现。在ORACLE中,要将过程封装在包里,还要用动态游标变量才能实现数据集的返回。
六、ORACLE中左链接与右链接
   左链接:LEFT JOIN  右链接:RIGHT JOIN
   select n.column,m.column from tablename1 n left join tablename2 m
   on n.columnname=m.columnname
   用WHERE实现:
   select n.column,m.column from tablename1 n, tablename2 m
   where n.columnname(+)=m.columnname

七、何时会用到触发器
   A安全管理、B日志管理、C复杂业务逻辑实现
八、如何实现数据库的优化?
    A、调整数据结构的设计。这一部分在开发信息系统以前完成,程序员须要考虑是否使用ORACLE数据库的分区功能,对于常常访问的数据库表是否须要创建索引等。
    B、调整应用程序结构设计。这一部分也是在开发信息系统以前完成,程序员在这一步须要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,仍是使用Browser/Web/Database的三层体系结构。不一样的应用程序体系结构要求的数据库资源是不一样的。
    C、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,所以SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。
    D、调整服务器内存分配。内存分配是在信息系统运行过程当中优化配置的,数据库管理员能够根据数据库运行情况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还能够调整程序全局区(PGA区)的大小。须要注意的是,SGA区不是越大越好,SGA区过大会占用操做系统使用的内存而引发虚拟内存的页面交换,这样反而会下降系统。
    E、调整硬盘I/O,这一步是在信息系统开发以前完成的。数据库管理员能够将组成同一个表空间的数据文件放在不一样的硬盘上,作到硬盘之间I/O负载均衡。
    F、调整操做系统参数,例如:运行在UNIX操做系统上的ORACLE数据库,能够调整UNIX数据缓冲池的大小,每一个进程所能使用的内存大小等参数。
9.T表:(字段:ID,NAME,ADDRESS,PHONE,LOGDATE)
  E表:(字段:NAME,ADDRESS,PHONE)
        1)将表T中的字段LOGDATE中为2001-02-11的数据更新为2003-01-01,请写出相应的SQL语句。(该字段类型为日期类型)
        update t set logdate=to_date('2003-01-01','yyyy-mm-dd')where logdate=to_date('2001-02-11','yyyy-mm-dd');
        2)请写出将表T中NAME存在重复的记录都列出来的SQL语句(按NAME排序)
        select * from t where name in (select name from t group by name having coung(*)>1) order by name;
        3)请写出题目2中,只保留重复记录的第一条,删除其他记录的SQL语句(即便该表不存在重复记录)
        select ID,NAME,ADDRESS,PHONE,LOGDATE from (select t.*,row_number() over(partition by name order by name) rn from t)where rn = 1;
        4)请写出将E表中的ADDRESS、PHONE更新到T表中的SQL语句(按NAME相同进行关联)
        update t set (address,phone)=(select address,phone from e where e.name=t.name);
        5)请写出将T表中第3~5行数据列出来的SQL语句
        select * from t where rownum <=5 minus select * from t where rownum <=2;
10.解释冷备份和热备份的不一样点以及各自的优势
  热备份针对归档模式的数据库,在数据库仍旧处于工做状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于全部模式的数据库。热备份的优势在于当备份时,数据库仍旧能够被使用而且能够将数据库恢复到任意一个时间点。冷备份的优势在于它的备份和恢复操做至关简单,而且因为冷备份的数据库能够工做在非归档模式下,数据库性能会比归档模式稍好。(由于没必要将archive log写入硬盘)
11.你必须利用备份恢复数据库,可是你没有控制文件,该如何解决问题呢?
    重建控制文件,用带backup control file 子句的recover 命令恢复数据库。
12.如何转换init.ora到spfile?
    使用create spfile from pfile 命令
13.解释data block , extent 和 segment的区别(这里建议用英文术语)
    data block是数据库中最小的逻辑存储单元。当数据库的对象须要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的全部extents被称为该对象的segment.
14.给出两个检查表结构的方法
    1)DESCRIBE命令
    2)DBMS_METADATA.GET_DDL 包
15.比较truncate和delete 命令
    二者均可以用来删除表中全部的记录。区别在于:truncate是DDL操做,它移动HWK,不须要 rollback segment .而Delete是DML操做须要rollback segment 且花费较长时间
16.给出在STAR SCHEMA中的两种表及它们分别含有的数据
  Fact tables 和dimension tables.  fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的信息
17.如何在不影响子表的前提下,重建一个母表
  子表的外键强制实效,重建母表,激活外键
18.解释归档和非归档模式之间的不一样和它们各自的优缺点
    归档模式是指你能够备份全部的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。可是非归档模式能够带来数据库性能上的少量提升
19.如何创建一个备份控制文件?
    Alter database backup control file to trace.
20.给出数据库正常启动所经历的几种状态 ?
    STARTUP NOMOUNT – 数据库实例启动
 STARTUP MOUNT      – 数据库装载
 STARTUP OPEN          – 数据库打开
21. 如何增长buffer cache的命中率?
        在数据库较繁忙时,适用buffer cache advisory 工具,查询v$db_cache_advice . 若是有必要更改,可使用 alter system set db_cache_size 命令
22. ORA-01555的应对方法?
        具体的出错信息是snapshot too old within rollback seg , 一般能够经过增大rollback seg来解决问题。固然也须要察看一下具体形成错误的SQL文本
23.建立数据库时自动创建的tablespace名称?
  SYSTEM tablespace.
24.建立用户时,须要赋予新用户什么权限才能使它联上数据库。
    CONNECT
25.如何在tablespace里增长数据文件?
    ALTER TABLESPACE <tablespace_name> ADD DATAFILE <datafile_name> SIZE <size>
26如何变更数据文件的大小?
    ALTER DATABASE DATAFILE <datafile_name> RESIZE <new_size>;
27.哪一个VIEW用来检查数据文件的大小?
     DBA_DATA_FILES
28.哪一个VIEW用来判断tablespace的剩余空间
    DBA_FREE_SPACE
29.如何判断谁往表里增长了一条纪录?
    auditing
30. 如何重构索引?
 ALTER INDEX <index_name> REBUILD;
31. 解释什么是Partitioning(分区)以及它的优势。
  Partition将大表和索引分割成更小,易于管理的分区。
32.  如何搜集表的各类状态数据?
      ANALYZE
  The ANALYZE command.
34. 如何启动SESSION级别的TRACE
     DBMS_SESSION.SET_SQL_TRACE
  ALTER SESSION SET SQL_TRACE = TRUE;
35.IMPORT和SQL*LOADER 这2个工具的不一样点
  这两个ORACLE工具都是用来将数据导入数据库的。区别是:IMPORT工具只能处理由另外一个ORACLE工具EXPORT生成的数据。而SQL*LOADER能够导入不一样的ASCII格式的数据源
36.用于网络链接的2个文件?
 TNSNAMES.ORA and SQLNET.ORA程序员

相关文章
相关标签/搜索