Oracle 每日一题系列合集

2023年 12月 31日 35.2k 0

在墨天轮平台有个[数据库每日一题]栏目:www.modb.pro/test(复制到浏览器或者点击“阅读原文”可直达,每日一题),均是由数据库行业的专家亲自出题,墨天轮审核后发布的一系列数据库知识点集合,本次只是收集了 20 天的题目以及给出了尽可能详细的答案解析,以供大家多次阅读。

1. 在 Oracle 中,下面哪个命令可以修改用户的默认密码有效期为无限制?(单选)

A. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;

B. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 999;

C. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

D. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 180;

答案:C

解析:

【答案解析】ORACLE 修改默认密码有效期 180 天为无限制

1、查看用户的 proifle 是哪个,一般是 default:

sql>SELECT username,PROFILE FROM dba_users;

2、查看指定概要文件(如 default)的密码有效期设置:

sql>SELECT * FROM dba_profiles s WHERE s.profile=‘DEFAULT’ AND resource_name=‘PASSWORD_LIFE_TIME’;

3、将密码有效期由默认的 180 天修改成“无限制”:

sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

修改之后不需要重启动数据库,会立即生效。

4、修改后,还没有被提示 ORA-28002 警告的帐户不会再碰到同样的提示;

已经被提示的帐户必须再改一次密码,举例如下:

$sqlplus / as sysdba

sql> alter user 用户名 identified by ----不用换新密码

oracle11g 启动参数 resource_limit 无论设置为 false 还是 true,密码有效期都是生效的,所以必须通过以上方式进行修改。以上的帐户名请根据实际使用的帐户名更改。

2. 关于数据库处于 ARCHIVELOG 模式下的说法正确的是?(单选)

A. Fast Recovery Area

B. 在切换到 ARCHIVELOG 模式之前执行的所有备份都可以用于执行完全恢复。

C.在数据库开启时可以进行全备。

D. 在将数据库置于 ARCHIVELOG 模式之前,必须对联机重做日志文件进行多路复用。

答案:C

解析:归档模式下可进行全库的热备。没有归档的全库备份无法用来进行完全恢复,因为缺少日志。

3. 默认情况下,AWR 的快照会定期删除,因此导致无法比较一个很长区间的活动(比如今年的年末和去年的年末)。如下那种是实现这一目标的最佳方法?(单选)

A.设置参数 STATISTICS_LEVEL 为 AL L以禁止快照删除

B.保存年末快照为基线

C.设置 SYSAUX 表空间的数据文件 AUTOEXTEND 打开,因此快照不会被清除

D.调整快照保持区间为比一年稍多

答案:B

解析:快照超过设置的 retention(wrm$_wr_control.retention)区间就会被清理。

调大快照保留区间足够大虽然可以避免历史快照被清理,但对本案例并不是最优的方法。

baseline 是一段特定时间内的 snapshot 的集合,当异常发生时,使用异常时间段的snapshot 和 baseline 进行对比。baseline 中的 snapshot不受 AWR retention 的限制。

因此通过将关注的快照区间设置为基线并设置合适的过期时间(DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE 的 expiration 参数),就可以确保这些快照不会被删除。

SYSAUX 用于存储快照数据,但是保留时间和空间无关。

STATISTICS_LEVEL 控制采集数据的详细程度,和保留多长时间无关。

4. 下述哪个内存组件在实例启动后无法动态伸缩?(单选)

A.database buffer cache

B.Jave pool

C.stream pool

D.log buffer

答案:D

解析:log buffer 是在实例启动时固定分配的,其他组件均为可伸缩组件。

5. 关于自连接那两个说法是正确的?(多选)

A.它可以是左外连接

B.它必须是一个全外连接

C.关联列必须有索引

D.它可以是一个内连接

答案:AD

解析:相同表的关联可以是左外连接可以是内连接,没有必须是哪种连接方法。

6. 以下关于 ORACLE 缓冲池的描述,正确的是?(多选)

A.Recycle Pool 用于存储临时使用的、不被经常使用的较大的对象,避免导致默认池和保持池中的块老化而退出缓存。

B. DEFAULT Pool 采用 LRU 管理,更热的对象频繁访问时,原有 LRU 冷端的对象可能被 age out。

C.Recycle Pool 是为了让内存中的数据尽快被回收,设立的池

D.Keep Pool 中并不是热点表一直能够缓存,当 keep pool 不够的时候,最先缓存到 keep pool 的对象会被挤出

答案:ABD

解析:Keep Buffer Pool 的作用是缓存那些需要经常查询的对象但又容易被默认缓冲区置换出去的对象,按惯例,Keep pool 设置为合理的大小,以使其中存储的对象不再age out,也就是查询这个对象的操作不会引起磁盘IO操作,可以极大地提高查询性能。

并不是我们设置了 keep pool 之后,热点表就一定能够缓存在 keep pool ,keep pool 同样也是由 LRU 链表管理的,当 keep pool 不够的时候,最先缓存到 keep pool 的对象会被挤出,不过与 default pool 中的 LRU 的管理方式不同,在 keep pool 中表永远是从 MRU 移动到 LRU,不会由于你做了 F TS 而将表缓存到 LRU 端,在 keep pool 中对象永远是先进先出。

Recycle Buffer Pool 正好相反。Recycle Buffer Pool 用于存储临时使用的、不被经常使用的较大的对象,这些对象放置在 Default Buffer Pool 显然是不合适的,这些块会导致过量的缓冲区刷新输出,而且不会带来任何好处,因为等你想要再用这个块时,它可已经老化退出了缓存。要把这些段与默认池和保持池中的段分开,这样就不会导致默认池和保持池中的块老化而退出缓存。

7. 以下哪个参数可以控制笛卡尔积访问方式?(多选)

A._optimizer_index_cost_adj

B._optimizer_mjc_enabled

C._optimizer_cartesian_enabled

D._b_tree_bitmap_plans

答案:BC

解析:_optimizer_cartesian_enabled:控制是否允许笛卡尔积访问;

_optimizer_mjc_enabled:控制是否允许 merge join 笛卡尔积访问;

_b_tree_bitmap_plans:–控制位图索引转化;

optimizer_index_cost_adj:调整索引扫描的转换成本百分比。

8. PG数据库中包含以下哪几种表连接方式?(多选)

A.MERGE JOIN CARTESIAN

B.NESTLOOP JOIN

C.HASH JOIN

D.MERGE JOIN

答案:BCD

解析:◆Nestloop Join

嵌套循环连接(Nestloop Join)是在两个表做连接时最朴素的一种连接方式。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(>10000不适合),要把返回子集较小的表作为外表,而且在内表的连接字段上要有索引,否则会很慢。

执行的过程:确定一个驱动表(outer table),另一个表为 inner table,驱动表中的每一行与 inner 表中的相应记录 JOIN,类似一个嵌套的循环。适用于驱动表的记录集比较小(3->5->4->1 

B、2->4->3->5->1 

C、2->3->4->5->1 

D、2->4->5->3->1 

解析:D

SELECT ... FROM + 表名

WHERE + 条件3

START WITH + 条件1

CONNECT BY PRIOR + 条件2

17. 关于ORACLE的保留关键字OPT_PARAM的描述,正确的是?

A、OPT_PARAM用法为:/*+ OPT_PARAM('隐藏参数值','true/false') */

B、OPT_PARAM关键字可以在SQL级别通过加HINT的方式来调整单个SQL执行的时候所依赖的系统参数的值

C、HINT中只写OPT_PARAM关键字也不会有任何影响

D、OPT_PARAM后跟的参数值可以不完整,系统会忽略OPT_PARAM参数

解析:AB

OPT_PARAM关键字可以在SQL级别通过加HINT的方式来调整单个SQL执行的时候所依赖的系统参数的值;OPT_PARAM关键字后的参数信息如果不完整或只写OPT_PARAM关键字,相当于保留关键字,会导致保留关键字后的HINT都被忽略,使用时需注意。

18.客户端的字符集为GB2312,数据库的字符集为AL32UTF8。请问,以下哪个设置NLS_LANG的方法,可以保证在数据库中存储正确编码的字符?

  

A、export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

B、无需设置,因为AL32UTF8中的字符涵盖了GB2312中的字符。

C、export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

解析:A

NLS_LANG 需要设置为客户端字符集或者为超级。

19.以下并行的hint写法哪些是正确并且高效的

  

A、 /*+ parallel_index(a idx_01 8) */

B、/*+ parallel(a 8) */

C、/*+ parallel 8 */

D、/*+ index_parallel(a idx_01 8) */

E、/*+ parallel */

F、 /*+ parallel(8) */

解析:AB

A会导致优化器使用自动并行度。B会使得SQL中的所有表在某些情况下,都选择并行执行。C写法错误,索引的并行是/*+ parallel_index(table_name index_name degree)*/.

20.Oracle数据库中可通过V$SORT_USAGE动态视图查询当前实例各会话临时段使用情况,下列关于临时段描述正确的是?

  

A、使用GROUP BY和UNION语法的SQL语句,如分组和合并的数据量较大超过PGA排序区容量时,可能会使用到临时表空间。【正确答案】

B、使用会话表(GT_SESS_TAB)插入数据后,在同一个会话中使用删除语句(DELETE)语句无法释放临时段。DELETE FROM GT_SESS_TAB; 【正确答案】

C、使用事务表(GT_TRANS_TAB)插入数据后,在同一个会话中提交或回滚事务操作无法释放临时段。INSERT INTO GT_TRANS_TAB(TMP_ID) VALUES(123); COMMIT;

D、使用长字符聚合查询(如:WM_CONCAT)返回大字段或插入到全局临时表中包含大字段值,这2类操作均会生产临时段,且临时段类型为LOB_DATA(V$SORT_USAGE.SGTYPE='LOB_DATA') SELECT WM_CONCAT(COL_CHAR) CHAR_CLOB FROM T_CHAR_TAB; INSERT INTO GT_SESS_TAB(COL_CLOB) VALUES('123'); 【正确答案】

E、往如下全局临时表(GLOBAL TEMPORARY TABLE)插入数值型记录时,会话表GT_SESS_TAB(DBA_TABLES.DURATION='SYS$SESSION')和事务表GT_TRANS_TAB(DBA_TABLES.DURATION='SYS$TRANSACTION')这2类全局临时表均会生产临时段,且临时段类型为DATA(V$SORT_USAGE.SGTYPE='DATA') INSERT INTO GT_SESS_TAB(TMP_ID) VALUES(123); INSERT INTO GT_TRANS_TAB(TMP_ID) VALUES(123); 【正确答案】

F、在Oracle 11G或以上版本,除了通过断开会话连接释放临时段外,也可通过ALTER TABLESPACE TEMP SHRINK SPACE命令来降低临时表空间占用率。【正确答案】

【答案解析】ABDEF

插入到全局临时表均使用临时表空间存储,存储数据段(SEGMENT)为临时段

会话表需断开会话或使用前后使用TRUNCATE语句释放临时段

提交或回滚事务时,Oracle内部自动管理并释放事务表的临时段

聚合返回CLOB段和插入带LOB段的会话表,均会产生LOB段类型的临时段。插入带LOB段全局临时表时,还带有LOB段对应INDEX类型的临时段。

Oracle数据库中断开会话即可释放临时段,11G以上版本还提供了临时段收缩命令 ALTER TABLESPACE TEMP SHRINK SPACE

UNION语句实际执行计划中带有SORT UNION操作,涉及排序排重操作,大数据量较大时可能会使用到临时表空间。分组HASH GROUP BY同样使用到排序和临时段。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论