oracle面试问题及答案有哪些

2021-01-11 面试问题

  oracle是一个什么信息的呢,指的又是什么的呢。通过下文,oracle面试问题及答案有哪些。我们一起来了解一下。

  oracle面试问题及答案有哪些一

  这也许是你一直期待的文章,在关注这部分技术问题的同时,请务必阅读有关面试中有关个人的问题和解答。这里的回答并不是十分全面,这些问题可以通过多个角度来进行解释,也许你不必在面试过程当中给出完全详尽的答案,只需要通过你的解答使面试考官了解你对ORACLE概念的熟悉程度。

  1。解释冷备份和热备份的不同点以及各自的优点

  解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

  2。你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?

  解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。

  3。如何转换init。ora到spfile?

  解答:使用create spfile from pfile 命令。

  4。解释data block , extent 和 segment的区别(这里建议用英文术语)

  解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent 。 一个数据库对象拥有的所有extents被称为该对象的segment。

  5。给出两个检查表结构的方法

  解答:1。DESCRIBE命令

  2。DBMS_METADATA。GET_DDL 包

  6。怎样查看数据库引擎的报错

  解答:alert log。

  oracle面试问题及答案有哪些二

  有三个用户test1,test2,test3, 三个用户都具有DBA色色权限。

  用TEST1用户创建一个表T1,并将其查询权限授予TEST2:

  SQL> create table t1 as select * from all_objects;

  表已创建。

  SQL> grant select on t1 to test2;

  授权成功。

  SQL> create table t1 as select * from all_objects;

  表已创建。

  SQL> grant select on t1 to test2;

  授权成功。

  用TEST2用户创建一个视图,视图的基表是TEST1.T1,并将查询权限授予TEST3:

  SQL> create view v_t1 as select * from test1.t1;

  视图已建立。

  SQL> grant select on v_t1 to test3;

  授权成功。

  SQL> create view v_t1 as select * from test1.t1;

  视图已建立。

  SQL> grant select on v_t1 to test3;

  授权成功。

  TEST3用户查询视图TEST2.V_T1:

  SQL> select * from test2.v_t1 where rownum<1;

  select * from test2.v_t1 where rownum<1

  *

  ERROR 位于第 1 行:

  ORA-01031: 权限不足

  SQL> select * from test2.v_t1 where rownum<1;

  select * from test2.v_t1 where rownum<1

  *

  ERROR 位于第 1 行:

  ORA-01031: 权限不足

  可以看到报了权限不足的错误,就算这里TEST3用户有DBA权限。

  这到底是怎么回事呢?

  其实视图的权限,有两点需要引起注意:

  1. 视图中,类似于定义者权限的存储过程,是屏蔽了角色权限的。比如如果TEST1没有显式地将T1表的SELECT权限给予TEST2,那么TEST2在创建视图V_T1时也会报ORA-01031错误,即使TEST2用户拥有DBA角色权限。

  2.如果在用户A的视图中,引用了其他用户B的表,用户A将视图的`访问权限给予用户C,那么就变相地将用户B的表的访问权限给予了用户C,因此,用户A必须有将用户B的表的访问权限转授用户C的权限,也就是用户B在授予A权限时,必须使用with grant option。

  显然这里正是由于第2点的原因,导致用户TEST3不能访问视图。用户TEST1执行下面的操作,将解决这个问题:

  SQL> grant select on t1 to test2 with grant option;

  授权成功。

  SQL> grant select on t1 to test2 with grant option;

  授权成功。

  对于视图的UPDATE,DELETE权限,同样是如此。

  在测试时,有一个现象,有点意思。就是如果用户TEST2没有显式地把V_T1的SELECT权限授予TEST3,而TEST3在有SELECT ANY TABLE或DBA权限时,则查询这个视图时不会报权限不足的错误。由于有SELECT ANY TABLE权限的存在,所有的用户表都可以被访问。但是显式授予表的权限时,似乎表的权限有更高的优先级,并且没有跟系统权限和角色权限进行结合。或者版本不同,表现得不一样,在我的测试中,是Oracle 9.2.0.8 for Windows。

【oracle面试问题及答案有哪些】相关文章:

Oracle技术面试问题09-08

教师面试有哪些问题04-11

五个经典面试问题及答案有哪些10-01

面试遭遇另类问题有哪些02-25

面试最难的问题有哪些02-01

流利面试英语有哪些问题01-24

经典面试问题有哪些01-28

面试应注意问题有哪些01-30

面试注意问题有哪些01-14