签到成功

知道了

CNDBA社区CNDBA社区

重建 SMON_SCN_TIME 聚集 和 SMON_SCN_TO_TIME 表

2017-06-10 00:41 4149 0 原创 Oracle 性能优化
作者: dave
在之前的博客中看了SMON_SCN_TIME表的说明及重建表上索引的方法,这里看一下重建SMON_SCN_TIME表和SMON_SCN_TO_TIME 聚集的方法。
Oracle smon_scn_time 表 说明

重建 SMON_SCN_TIME 表上的索引

1 重建Cluster:  SMON_SCN_TO_TIME 

在进行其他操作之前,先看cluster的概念。

官网的描述:
 cluster is a schema object that contains data from one or more tables.
1) An indexed cluster must contain more than one table, and all of the tables in the cluster have one or more columns in common. Oracle Database stores together all the rows from all the tables that share the same cluster key.
2) In a hash cluster, which can contain one or more tables, Oracle Database stores together rows that have the same hash key value.
For information on existing clusters, query the USER_CLUSTERS, ALL_CLUSTERS, and DBA_CLUSTERS data dictionary views.

聚集(cluster):用于将不同表中的数据存储到相同的物理数据块中,用于多表数据需要频繁进行联合查询的情况下。多表数据存储在相同数据块后,在对对表进行联合查询时,所需读取的物理块数减少,从而提高查询性能。

需要注意的是对聚集中单表的查询和对聚集中表数据进行修改或插入等事务操作时,性能将受到影响。

每一个聚集存储其中各聚集表的数据并维护该聚集索引,以便对数据进行排序。聚集索引中的索引列,称为聚集键(cluster key),其决定了数据在物理上的存储位置,这些列不应时常更新。聚集键通常是其聚集表中同某个表的主键相关联的某表的外键。

聚集分为索引聚集和哈希聚集两种。

聚集SMON_SCN_TO_TIME在不同的Oracle 版本中名称也不一样。

可以通过查看SMON_SCN_TIME表定义的方式查找对应的Cluster的名称:
select dbms_metadata.get_ddl('TABLE','SMON_SCN_TIME','SYS') FROM DUAL ;

在Oracle 9i和10g中,聚集的名称是:SMON_SCN_TO_TIME
在Oracle 11g和12c中,聚集的名称是:SMON_SCN_TO_TIME_AUX

1.1 truncate 聚集
当SMON_SCN_TIME表出现问题时,可以对聚集进行truncate操作:
[oracle@dave.cndba.cn ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 17 11:01:40 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> truncate CLUSTER "SYS"."SMON_SCN_TO_TIME_AUX";
Cluster truncated.
1.2 重建聚集
DROP CLUSTER SYS.SMON_SCN_TO_TIME_AUX INCLUDING TABLES CASCADE CONSTRAINTS;

CREATE CLUSTER SYS.SMON_SCN_TO_TIME_AUX
(
  THREAD                          NUMBER
)
TABLESPACE SYSAUX
INDEX
NOROWDEPENDENCIES
NOCACHE
NOPARALLEL;

CREATE INDEX SYS.SMON_SCN_TO_TIME_AUX_IDX ON CLUSTER SYS.SMON_SCN_TO_TIME_AUX
LOGGING
TABLESPACE SYSTEM
NOPARALLEL;

2 重建表:SMON_SCN_TIME

注意,如果之前执行了drop cluster的操作,那么默认也会把SMON_SCN_TIME 表drop掉:
SQL> select * from all_objects where object_name='SMON_SCN_TIME';
no rows selected

所以如果执行过drop cluster操作,直接创建表和索引就可以了:
DROP TABLE SYS.SMON_SCN_TIME CASCADE CONSTRAINTS;

CREATE TABLE SYS.SMON_SCN_TIME
(
  THREAD        NUMBER,
  TIME_MP       NUMBER,
  TIME_DP       DATE,
  SCN_WRP       NUMBER,
  SCN_BAS       NUMBER,
  NUM_MAPPINGS  NUMBER,
  TIM_SCN_MAP   RAW(1200),
  SCN           NUMBER                          DEFAULT 0,
  ORIG_THREAD   NUMBER                          DEFAULT 0           /* for downgrade */
)
NOCOMPRESS 
CLUSTER SYS.SMON_SCN_TO_TIME_AUX(THREAD);

CREATE UNIQUE INDEX SYS.SMON_SCN_TIME_SCN_IDX ON SYS.SMON_SCN_TIME
(SCN)
LOGGING
TABLESPACE SYSAUX
NOPARALLEL;

CREATE UNIQUE INDEX SYS.SMON_SCN_TIME_TIM_IDX ON SYS.SMON_SCN_TIME
(TIME_MP)
LOGGING
TABLESPACE SYSAUX
NOPARALLEL;

http://www.cndba.cn/dave/article/1976 http://www.cndba.cn/dave/article/1976 http://www.cndba.cn/dave/article/1976
http://www.cndba.cn/dave/article/1976
http://www.cndba.cn/dave/article/1976 http://www.cndba.cn/dave/article/1976 http://www.cndba.cn/dave/article/1976
http://www.cndba.cn/dave/article/1976
http://www.cndba.cn/dave/article/1976
http://www.cndba.cn/dave/article/1976

版权声明:本文为博主原创文章,未经博主允许不得转载。

重建 SMON_SCN_TIME 聚集 和 SMON_SCN_TO_TIME 表

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2239
    原创
  • 3
    翻译
  • 547
    转载
  • 186
    评论
  • 访问:6625871次
  • 积分:4249
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ