Oracle12c中性能优化&功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护
Oracle 12c中,通过延迟相关索引的维护可以优化某些DROP和TRUNCATE分区命令的性能,同时,保持全局索引为有效。
1. 设置
下面的例子演示带全局索引的表创建和加载数据的过程。
-- 建表
CREATE TABLE t1
(id NUMBER,
comment VARCHAR2(50),
crt_time DATE)
PARTITION BY RANGE (crt_time)
(PARTITION part_14 VALUES LESS THAN (TO_DATE('01/01/2015', 'DD/MM/YYYY'))TABLESPACE users,
PARTITION part_15 VALUES LESS THAN(TO_DATE('01/01/2016', 'DD/MM/YYYY')) TABLESPACE users);
ALTER TABLE t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);
CREATE INDEX t1_idx ON t1 (crt_time);
--加载数据
INSERT /*+ APPEND */ INTO t1
SELECT level,
'commit for ' || level,
CASE
WHEN MOD(level,2) = 0 THENTO_DATE('01/07/2014', 'DD/MM/YYYY')
ELSE TO_DATE('01/07/2015','DD/MM/YYYY')
END
FROM dual
CONNECT BY level <= 10000;
COMMIT;
EXEC DBMS_STATS.gather_table_stats(USER, 't1');
-- 检查索引
COLUMN table_name FORMAT A20
COLUMN index_name FORMAT A20
SElECT table_name,
index_name,
status
FROM user_indexes
ORDER BY 1,2;
TABLE_NAME INDEX_NAME STATUS
-------------------- -------------------- --------
T1 T1_IDX VALID
T1 T1_PK VALID
SQL>
2. 全局索引异步维护
现在,DROP和TRUNCATE PARTITION命令和UPDATE_INDEXES一起使用时,只会导致相关元数据的变化。该功能目前只能用于堆表,不支持对象表,域索引或SYS用户的对象。
实际的索引维护稍后被执行,当满足如下之一的条件时。
- SYS.PMO_DEFERRED_GIDX_MAINT_JOB作业每天2点被调度时。
- 通过 DBMS_SCHEDULER.RUN_JOB手工运行SYS.PMO_DEFERRED_GIDX_MAINT_JOB时。
- 运行DBMS_PART.CLEANUP_GIDX过程时。
- 运行ALTER INDEX REBUILD [PARTITION]命令时。
- 运行ALTER INDEX [PARTITION] COALESCE CLEANUP命令时。
Oracle12c前,如果我们DROP或TRUNCATE了一个分区,将会导致全局索引失效,UPDATE_INDEXES子句会导致操作期间索引重建,使得整个操作变慢。下例中,我们TRUNCATE一个分区,然后查看索引状态。
-- Truncate一个分区
ALTER TABLE t1 TRUNCATE PARTITIONpart_2014 DROP STORAGE UPDATE INDEXES;
或
ALTER TABLE t1 DROP PARTITION part_2014UPDATE INDEXES;
-- 查看索引状态
SElECT table_name,
index_name,
status
FROM user_indexes
ORDER BY 1,2;
TABLE_NAME INDEX_NAME STATUS
-------------------- ----------------------------
T1 T1_IDX VALID
T1 T1_PK VALID
SQL>
视图USER_INDEXE中ORPHANED_ENTRIES新列显示索引还没被维护。
-- 检查是否需要索引维护
SELECT index_name,
orphaned_entries
FROM user_indexes
ORDER BY 1;
INDEX_NAME ORP
-------------------- ---
T1_IDX YES
T1_PK YES
SQL>如果我们手工触发索引维护,我们将会看到ORPHANED_ENTRIES列的变化
-- 手工触发索引维护
EXECDBMS_PART.cleanup_gidx(USER, 't1');
-- 查看是否需要索引维护
SELECT index_name,
orphaned_entries
FROM user_indexes
ORDER BY 1;
INDEX_NAME ORP
-----------------------
T1_IDX NO
T1_PK NO
SQL>
Oracle12c中性能优化&功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护的更多相关文章
- Oracle12c中性能优化&功能增强新特性之临时undo
临时表最有意思的特点之一是undo段也存储在常规undo表空间中,而它们的undo反过来被redo保护,这会导致一些问题. 1) 写undo表空间需要数据库以读写模式打开,因此,只读数据库和物理备库 ...
- Oracle12c中性能优化&功能增强新特性之重大突破——内存列存储新特性
内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数据存在内存中的好处显而易见,而列 ...
- Oracle12c(12.1)中性能优化&功能增强之通过参数THREADED_EXECTION使用多线程模型
1. 后台 UNIX/Linux系统上,oracle用多进程模型.例如:linux上一个常规安装的数据库会有如下进程列: $ ps -ef | grep [o]ra_ oracle 15356 ...
- Oracle12c中性能优化增强新特性之数据库智能闪存
智能闪存功能最初在XD中引入.从Oracle11.2.0.2开始,除了用于XD存储,还可用于任何闪盘.Oracle12c中,不需卷管理器就可以使用闪盘. 1. 简介 智能闪存在solaris和lin ...
- Oracle12c功能增强 新特性之管理功能的增强
1. 数据文件在线重命名和迁移 不想先前的版本号.在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作.在12cR1中.数 ...
- Oracle12c功能增强新特性之维护&升级&恢复&数据泵等
1. 内容提要 1) 表分区维护的增强. 2) 数据库升级改善. 3) 跨网络还原/恢复数据文件. 4) 数据泵的增强. 5) 实时ADDM. 6) 并发统计信息收集. 2 ...
- Oracle12c中数据删除(delete)新特性之数据库内归档功能
有些应用有“标记删除”的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已.这种需求通常通过如下方法实现: 1) 给相关表增加一个另外的列,该列存储标志数据被删除的标记. 2) 给 ...
- Oracle12c中性能优化新特性之新增APPROX_COUNT_DISTINCT 快速唯一值计数函数
Oracle11g中,为了改善DBMS_STATS包收集统计信息时的唯一值计数功能,增加了 APPROX_COUNT_DISTINCT函数,但文档中未记载.Oracle12c文档中包括了该函数,因此, ...
- Oracle12c 中RAC功能增强新特性之ASM&Grid
1. 自动存储管理(ASM)方面的增强 1.1. Flex ASM 在典型的网格架构安装中,每个节点有自己的ASM实例运行并扮演该节点上数据库的存储容器的角色,对这种安装配置,存在单点失败的 ...
随机推荐
- python监控端口脚本[jkport1.0.py]
此脚本根据端口判断进程是否存活, 如果有指定的端口就证明进程是没问题的, 如果检测不到端口就是说业务进程已经挂掉了, 此时自动重启程序, 不多说下面请看脚本 创建脚本 我这里模拟的是nginx, 监控 ...
- Starting MySQL...The server quit without updating PID file [失败]local/mysql/data/localhost.localdomain.pid报错
在添加命令自动补全的时候mysql启动失败 这是原配 # For advice on how to change settings please see # http://dev.mysql.com/ ...
- 20145303刘俊谦 《网络对抗》Exp9 Web安全基础实践
20145303刘俊谦 <网络对抗>Exp9 Web安全基础实践 基础问题回答 1.SQL注入原理,如何防御 SQL注入 就是通过把SQL命令插入到"Web表单递交"或 ...
- 前端开发环境全面配置 --- mac OS
Mac 开发配置 brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...
- ajax post 参数说明
- HDU 1686 Oulippo
http://acm.hdu.edu.cn/showproblem.php?pid=1686 题意:给定一个文本串和给定一个模式串,求文本串中有几个模式串. 思路:直接套用KMP模板. #includ ...
- web前端小数点位数处理
- LR下载及破解
原文:http://chjuan1122.blog.163.com/blog/static/122892032013327111040128/ 地址:http://www.genilogix.com/ ...
- WPF基础学习笔记整理 (一)
基础知识: WPF:Windows Presentation Foundation,用于Windows的现代图形显示系统: WPF用于编写应用程序的表示层: 引入“内置硬件加速”和“分辨率无关”: S ...
- django 接口编写的配置
一.修改settings文件 ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'corsheaders' ] #加入该app 安装django-cors-hea ...