1.下面有关TABLESPACE和DATAFILE之间的关系的描述中,说法错误的是(D)
A.一个TABLESPACE可以有一个或多个DATAFILE
B.每个DATAFILE只能在一个TABLESPACE内
C.TABLE中的数据,通过HASH算法分布在TABLESPACE中的各个DATAFILE中
D.DATAFILE是逻辑上的概念,TABLESPACE则在物理上储存了数据库的种种对象
解析:表空间是Oracle数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。表空间在物理上体现为磁盘数据文件,每一个表空间由一个或多个数据文件组成,一个数据文件只可与一个表空间相联系,这是逻辑与物理的统一。对于选项D,TABLESPACE是逻辑上的概念,DATAFILE是物理上的概念,选项中正好说反了。
2.在Oracle中,数据块,重做日志块及控制文件数据块的大小分别是多少?如何查询
答:① 数据块(Data Block),是读写数据文件的最小单位,默认是8KB,可以通过SQL语句“SELECT FILE#,NAME,BLOCK_SIZE FROM V$DATAFILE;”查询
② 重做日志数据块(Redo Block),大小一般等于操作系统的系统块的大小,一般为512或4096,可以通过SQL语句“SELECT BLOCKSIZE FROM V$LOG;”或“SELECT LEBSZ FROM X$KCCLE;”查询
③ 控制文件数据块(Control File Block),默认为16KB,可以通过SQL语句“SELECT BLOCK_SIZE FROM V$CONTROLFILE;”查询
3.在Oracle中,如何查询逻辑读、物理读、执行次数和解析次数最多以及执行时间最长的SQL语句呢?如何寻找或监控效率低下的SQL语句
答:① 当前系统的SQL可以通过监控V$SQL_MONITOR、V$SESSION视图来实现,记录执行时间较长的SQL语句。对于历史SQL可以通过分析DBA_HIST_SQLSTAT视图。
② 分析现有的系统中的执行计划,重点检查驱动表与被驱动表顺序、表连接算法、排序是否有索引、索引使用。
③ 分析AWR、ASH和ADDM。
④ 通过OEM中性能监控的捕获5s以上的SQL。
⑤ 通过GV$SQLAREA视图来分析。
4.在Oracle中,$ORACLE_HOME和$ORACLE_BASE的区别是什么
答:ORACLE_BASE是Oracle软件的根目录,下面一般包括admin、cfgtoollogs、diag、fast_recovery_area和product等目录。ORACLE_HOME下则是Oracle的命令、连接库、安装助手、LISTENER等等一系列的内容。如果装了2个版本的Oracle,那么ORACLE_BASE可以是一个,但ORACLE_HOME是2个。
5.在Oracle中,如何找出当前有多少个用户登录到数据库
答:①查询V$SESSION视图,SQL命令为:“SELECT COUNT(1) FROM V$SESSION A”
②查询V$SYSSTAT视图,SQL命令为:“SELECT * FROM V$SYSSTAT A WHERE A.NAME='logons current'”