通过shell检查分区表中是否含有默认分区(r2笔记87天)

在大数据量的系统中,分区表是很常见的,分区有多种类型,可以根据业务来选择自己需要的分区,不过为了数据的兼容性,需要考虑对于分区表设定一个默认的表分区,如果数据在插入表分区的时候,没有符合条件的分区,就会插入默认的表分区中。 这个可以根据自己的需要来设定,如果确实对数据有严格的要求,甚至可以要求不加入默认的分区。 以下的脚本会去"扫描"分区的信息,如果检测到没有默认的分区,就会生成对应的脚本。 可以根据自己的情况来决定是否需要加入分区。

sqlplus -s $1/$2@$SH_DB_SID <<EOF
set head off
set pages 100
set linesize 200
/* bad  performance
select name,Count(*)from user_part_key_columns where  object_type='TABLE' and name in
(
select table_name from user_tables where  partitioned='YES'
minus
  (select distinct  table_name
from  user_tab_partitions where  partition_name like '%MAX%'
  )
)
group by  name;
*/ 
select 'alter table  '||table_name||' add partition  PMAXVALUE   values less than ('||
decode(col_count, 1,  'MAXVALUE',
                                                           2,'MAXVALUE,MAXVALUE',
                                                           3,'MAXVALUE,MAXVALUE,MAXVALUE',
                                                           4,'MAXVALUE,MAXVALUE,MAXVALUE,MAXVALUE','partition out of range')||');'
     from
(
(
select t1.table_name,count(t2.name) col_count from user_tables  t1,user_part_key_columns t2
where t1.partitioned='YES'
and  t1.table_name=t2.name
and t2.object_type='TABLE'
group by  t1.table_name
)
minus
  (
  select   t2.name  table_name,count(t2.name)col_count
from user_tab_partitions  t1,user_part_key_columns t2
where  t1.partition_name like '%MAX%'
and  t1.table_name=t2.name
and t2.object_type='TABLE'
group by t2.name
   )
)
/
EOF
exit

简单运行一下,可以看到有一些分区表是灭有默认的分区的。可以根据自己的情况来定夺。

[ora11g@rac1 dbm_lite]$ ksh getmaxpar.sh system oracle
alter table  LOGMNRC_GSBA add partition  PMAXVALUE  values less than  (MAXVALUE);
alter table  LOGMNRC_GSII add partition  PMAXVALUE  values less  than (MAXVALUE);
alter table  LOGMNRC_GTCS add partition  PMAXVALUE  values  less than (MAXVALUE);
alter table  LOGMNRC_GTLO add partition  PMAXVALUE   values less than (MAXVALUE);
alter table  LOGMNRP_CTAS_PART_MAP add  partition  PMAXVALUE  values less than (MAXVALUE);
alter table   LOGMNR_ATTRCOL$ add partition  PMAXVALUE  values less than (MAXVALUE);
alter  table  LOGMNR_ATTRIBUTE$ add partition  PMAXVALUE  values less than  (MAXVALUE);
alter table  LOGMNR_CCOL$ add partition  PMAXVALUE  values less  than (MAXVALUE);
alter table  LOGMNR_CDEF$ add partition  PMAXVALUE  values  less than (MAXVALUE);
alter table  LOGMNR_COL$ add partition  PMAXVALUE   values less than (MAXVALUE);
alter table  LOGMNR_COLTYPE$ add partition   PMAXVALUE  values less than (MAXVALUE);
alter table  LOGMNR_DICTIONARY$ add  partition  PMAXVALUE  values less than (MAXVALUE);
alter table   LOGMNR_DICTSTATE$ add partition  PMAXVALUE  values less than  (MAXVALUE);
alter table  LOGMNR_ENC$ add partition  PMAXVALUE  values less  than (MAXVALUE);
alter table  LOGMNR_ICOL$ add partition  PMAXVALUE  values  less than (MAXVALUE); 

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Linux/Unix shell 脚本中调用SQL,RMAN脚本

        Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix ...

8710
来自专栏乐沙弥的世界

ORA-01652: unable to extend temp segment by 8192...

      最近在rebuild index时提示unable to extend temp segment by 8192 in tablespace..的错...

17810
来自专栏数据和云

续:跨平台版本迁移之 XTTS 方案操作指南

运行数据库对比脚本,通过创建 dblink,运行相关的数据库对象比对脚本。这里我们主要比对了存储过程,函数,触发器,试图,索引,表等等。

23240
来自专栏杨建荣的学习笔记

关于exp/imp的总结学习(r4笔记第26天)

关于exp/imp,是很常用的数据导出导入工具,在10g开始推出的数据泵datapump相当于是exp/imp的补充和升级版本。在后续章节再做一个总结。 exp...

31170
来自专栏Netkiller

数据库安全·开发加密插件

以下节选择《Netkiller Architect 手札》 作者:netkiller 地址 http://www.netkiller.cn/archit...

33370
来自专栏数据库新发现

高级复制中如何应对主体站点故障

« 在高级复制中如何切换主体定义站点 | Blog首页 | 自己动手,丰衣足食 »

8520
来自专栏乐沙弥的世界

ORA-02409:超时:分布式事务处理等待锁定ORA-02063

ORA-02409:超时:分布式事务处理等待锁定ORA-02063 一、错误现象与环境     前端应用程序运行时出现下面的错误提示: 事件添加失败:O...

13020
来自专栏乐沙弥的世界

PL/SQL 包编译时hang住的处理

       最近PL/SQL包在编译时被hang住,起初以为是所依赖的对象被锁住。结果出乎意料之外。下面直接看代码演示。

9560
来自专栏杨建荣的学习笔记

生产环境sql语句调优实战第五篇(r2笔记41天)

今天在生产环境中发现一条sql语句尽管走了主键索引,但是查询还是很慢。 sql语句类似下面的形式: SELECT /*+ index (bl1_cyc_paye...

34980
来自专栏deed博客

Oracle在Linux下安装

25920

扫码关注云+社区

领取腾讯云代金券