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同样使用到排序和临时段。




