Oracle常见操作和命令
1. 在 Oracle 中,下⾯哪个命令可以修改⽤户的默认密码有效期为⽆限制?(单选)
A. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;
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 模式下的说法正确的是?(单选)
C.在数据库开启时可以进⾏全备。
解析:归档模式下可进⾏全库的热备。没有归档的全库备份⽆法⽤来进⾏完全恢复,因为缺少⽇志。
3.默认情况下,AWR 的快照会定期删除,因此导致⽆法⽐较⼀个很长区间的活动(⽐如今年的年末和去年的年末)。如下那种是实现这⼀⽬标的最佳⽅法?(单选)
B.保存年末快照为基线
解析:快照超过设置的 retention(wrm$_ion)区间就会被清理。
调⼤快照保留区间⾜够⼤虽然可以避免历史快照被清理,但对本案例并不是最优的⽅法。
baseline 是⼀段特定时间内的 snapshot 的集合,当异常发⽣时,使⽤异常时间段的snapshot 和 baseline 进⾏对⽐。baseline 中的 snapshot不受 AWR retention 的限制。
因此通过将关注的快照区间设置为基线并设置合适的过期时间(DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE 的expiration 参数),就可以确保这些快照不会被删除。
SYSAUX ⽤于存储快照数据,但是保留时间和空间⽆关。
STATISTICS_LEVEL 控制采集数据的详细程度,和保留多长时间⽆关。
4. 下述哪个内存组件在实例启动后⽆法动态伸缩?(单选)
D.log buffer
解析:log buffer 是在实例启动时固定分配的,其他组件均为可伸缩组件。
5. 关于⾃连接那两个说法是正确的?(多选)
A.它可以是左外连接
D.它可以是⼀个内连接
解析:相同表的关联可以是左外连接可以是内连接,没有必须是哪种连接⽅法。
6. 以下关于 ORACLE 缓冲池的描述,正确的是?(多选)
A.Recycle Pool ⽤于存储临时使⽤的、不被经常使⽤的较⼤的对象,避免导致默认池和保持池中的块⽼化⽽退出缓存。
B. DEFAULT Pool 采⽤ LRU 管理,更热的对象频繁访问时,原有 LRU 冷端的对象可能被 age out。
D.Keep Pool 中并不是热点表⼀直能够缓存,当 keep pool 不够的时候,最先缓存到 keep pool 的对象会被挤出
解析: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. 以下哪个参数可以控制笛卡尔积访问⽅式?(多选)
B._optimizer_mjc_enabled
C._optimizer_cartesian_enabled
答案:BC 解析:_optimizer_cartesian_enabled:控制是否允许笛卡尔积访问;
_optimizer_mjc_enabled:控制是否允许 merge join 笛卡尔积访问;
_b_tree_bitmap_plans:–控制位图索引转化; optimizer_index_cost_adj:调整索引扫描的转换成本百分⽐。
8. PG数据库中包含以下哪⼏种表连接⽅式?(多选)
B.NESTLOOP JOIN
C.HASH JOIN
D.MERGE JOIN
答案:BCD
解析:◆Nestloop Join
嵌套循环连接(Nestloop Join)是在两个表做连接时最朴素的⼀种连接⽅式。在嵌套循环中,内表被外表驱动,外表返回的每⼀⾏都要在内表中检索到与它匹配的⾏,因此整个查询返回的结果集不能太⼤(>10000不适合),要把返回⼦集较⼩的表作为外表,⽽且在内表的连接字段上要有索引,否则会很慢。
执⾏的过程:确定⼀个驱动表(outer table),另⼀个表为 inner table,驱动表中的每⼀⾏与 inner 表中的相应记录 JOIN,类似⼀个嵌套的循环。适⽤于驱动表的记录集⽐较⼩(<10000)⽽且 inner 表有有效的访问⽅法(index)。需要注意的是,JOIN 的顺序很重要,驱动表(outer table)的记录集⼀定要⼩,返回的结果集的相应时间是最快的
◆Hash Join
优化器使⽤两个表中较⼩的表,并利⽤连接键在内存中建⽴散列表,然后扫描较⼤的表并探测散列表,出与散列表匹配的⾏。
这种⽅式适⽤于较⼩的表可以完全放⼊内容的情况,这样总成本就是访问两个表的成本之和。但是如果表很⼤,不能完全放⼊内存,优化器会将它分割成若⼲不同的分区,把不能放⼊内存的部分写⼊磁盘的临时段,此时要有较⼤的临时段以便尽量提⾼I/O的性能。
◆Merge Join
通常情况下散列表连接的效果⽐合并连接好,然⽽如果源数据上有索引,或者结果已经被排过序,在执⾏排序合并连接时就不需要排序了,这时合并连接的性能会优于是散列连接。
9. 以下哪种⽅法可以回收表段中的可⽤空间?(多选)
A.alter table … move;
B.alter table … shrink space compact;
C.通过create table as select (CTAS)重建表
答案:ABC 解析:alter table shrink space compact
会移动表中的⾏并整理表上的碎⽚,但并不会调整⾼⽔位,也不会释放已占⽤的空间。只有不带 compact 选项时,才会调整⾼⽔位并释放空间。
10. 以下关于外连接的写法,哪些是正确的?(多选)
B 、select * from emp ,dept2 where emp .deptno =dept2.deptno (+) and dept2.deptno (+)=20 ;
D 、select * from emp left join dept2 using (deptno ) ;
答案:BD
【答案解析】select * from emp left join dept2 on emp.deptno=dept2.deptno where dept2.deptno=20、 select * from
emp,dept2 where emp.deptno=dept2.deptno(+) and dept2.deptno=20:会在最后进⾏过滤,失去了外连接的效果。
11.以下关于实例内存和会话内存,下⾯哪2种说法是正确的:?
C、SGA被所有会话写⼊;但是PGA只能被⼀个会话写⼊ 【正确答案】
D、会话能写PGA,但是不能写SGA
E、SGA在实例启动时分配 【正确答案】
12.DBWn进程是Oracle负责将脏块写⼊磁盘的后台进程,如果我们要加快它写出块的速度,可以配置多个DBWn进程,那么在Oracle 11g中最多可以配多少个呢?
D、36
解析:D
11g 36 个 ,12c 64 个
13.以下关于Oracle分区索引的表述,哪些是正确的?
B、不可以创建⾮前缀全局分区索引
C、与表分区⽅法相同的,是本地分区索引,与表分区的⽅法不相同的,是全局分区索引。
D、分区索引所在的基表需要为分区表
E、分区索引主要有本地分区索引和全局分区索引
解析:BCE
1、索引是否分区与表是否分区⽆关。
2、可以创建本地分区的唯⼀索引,但需要将分区键列加⼊做为索引列。
3、Oracle不⽀持创建⾮前缀全局分区索引
4、与索引所在分区表的分区⽅法相同的,是本地分区索引,反之,是全局分区索引。
14.以下哪些描述适⽤于位图索引?
A、需要更少的索引存储空间
B、可以创建复合索引
C、会存储索引列全空的记录
D、可以创建基于函数的索引
E、可以创建压缩索引
解析:ABCD
由于位图索引是⽤⼀个⼆进制位表⽰⼀⾏,所以,其所需要的索引空间会⽐较少。由于位图索引是⽤⼀个⼆进制位表⽰⼀⾏,所以,其所需要的索引空间会⽐较少。位图索引会存储索引列为空值的记录。位图索引可以创建基于函数的索引,也可以创建复合索引。但不能创建压缩的位图索引。
15.为了获取GV$SQL视图的定义,以下哪个⽅法可以得到正确的视图定义?
C 、select view_definition from gv$fixed_view_definition where view_name ='GV$SQL';
解析:C
数据库启动时,会创建名为GV FIXED_VIEW_DEFINITION中查到。然后继续创建名为GV_SQL的公
有同义词,该公有同义词指向GV_KaTeX parse error:Expected group after '_' at position 56: …_ddl('VIEW','GV_S QL’,‘SYS’)查询到视图GV_
SQL视图的定义⽂本,⽽是GV_
SQL。⽽从GV
SQL的定义⽂本,其FROM⼦句后⾯的对象才是内部对象表x$kglcursor_child。
SQL 的FIXED IEW 。其视图定义⽂本可以在GV V SQL (注意有下划线)的视图和名为GV SQL 的定义⽂本,但这两种⽅法获取的定义⽂本并不是GV SQL 视图的定义⽂本,在该定义⽂本中,FROM ⼦句中的对象是GV FIXED IEW EFINITION 中查到的GV V D
oracle登录命令16.以下的层次查询中的各个⼦句,其执⾏顺序为何?d
1 select *
2 from tab1
3 where
4 start with
5 connect by
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执⾏的时候所依赖的系统参数的值
解析:AB
OPT_PARAM关键字可以在SQL级别通过加HINT的⽅式来调整单个SQL执⾏的时候所依赖的系统参数的值;OPT_PARAM关键字后的参数信息如果不完整或只写OPT_PARAM关键字,相当于保留关键字,
会导致保留关键字后的HINT都被忽略,使⽤时需注意。
18.客户端的字符集为GB2312,数据库的字符集为AL32UTF8。请问,以下哪个设置NLS_LANG的⽅法,可以保证在数据库中存储正确编码的字符?
A、export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
解析:A NLS_LANG 需要设置为客户端字符集或者为超级。
19.以下并⾏的hint写法哪些是正确并且⾼效的
A、 /*+ parallel_index(a idx_01 8) /
B、/+ parallel(a 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(12
3); COMMIT;
D、使⽤长字符聚合查询(如:WM_CONCAT)返回⼤字段或插⼊到全局临时表中包含⼤字段值,这2类操作均会⽣产临时段,且临时段类型为LOB_DATA(V$SO RT_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='DAT A') 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 ADG 切换场景及具体切换步骤
计划内切换
(1)检查主库
select switchover_status from v$database;
SWITCHOVER_STATUS
SESSIONS ACTIVE
if[ switchover_status ="SESSIONS ACTIVE"| switchover_status ="TO STANDBY"];
then { go to next step }
else{ cancel switchover and check database }
(2)主库切为备库
alter database commit to switchover to physical standby with session shutdown;
shutdown immediate;
startup mount;
(3)检查备库
select switchover_status from v$database;
SWITCHOVER_STATUS
TO PRIMARY
if[ switchover_status ="SESSIONS ACTIVE"| switchover_status ="TO PRIMARY"];
then { go to next step }
else{ cancel switchover and check database }
(4)备库切为主库
alter database commit to switchover to PRIMARY with session shutdown;
(5)原主库恢复⽇志应⽤
alter database recover managed standby database using current logfile disconnect from session;
■计划外切换
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论