分区表工具脚本

普通表转化成分区表的高效脚本

 通用转换存储过程

查询未建分区的大表脚本

1 prompt <p>当前用户下,表大小超过10个GB未建分区的
2 select segment_name,
3        segment_type,
4        sum(bytes) / 1024 / 1024 / 1024 object_size
5   from user_segments
6 WHERE segment_type = ‘TABLE‘
7 group by  segment_name, segment_type
8 having sum(bytes) / 1024 / 1024 / 1024 >= 10
9 order by object_size desc;

sql

查询失效的分区表索引

 1 prompt <p>查询当前用户下,失效-普通索引
 2 select t.index_name,
 3        t.table_name,
 4        blevel,
 5        t.num_rows,
 6        t.leaf_blocks,
 7        t.distinct_keys
 8   from user_indexes t
 9 where status = ‘INVALID‘;
10
11 prompt <p>查询当前用户下的失效-分区索引
12 select t1.blevel,
13        t1.leaf_blocks,
14        t1.INDEX_NAME,
15        t2.table_name,
16        t1.PARTITION_NAME,
17        t1.STATUS
18   from user_ind_partitions t1, user_indexes t2
19 where t1.index_name = t2.index_name
20    and t1.STATUS = ‘UNUSABLE‘;

查询分区表各分区大小严重不均匀情况

 1 --以下脚本可以分析分区表记录不平衡的情况,同时也可以从侧面发现由于疏于管理,大量当前数据进入默认分区的情况
 2 /*
 3
 4    注:这个语句不一定准确,尤其是在表未及时收集统计信息的时候
 5
 6 */
 7
 8 --统计信息系统一般会自动收集,这只是首次建成表后需要操作一下,以方便测试
 9 exec dbms_stats.gather_table_stats(ownname => ‘LJB‘,tabname => ‘RANGE_PART_TAB‘,estimate_percent => 10,method_opt=> ‘for all indexed columns‘,cascade=>TRUE) ;
10
11
12 --当前用户下,某个分区的记录数是平均记录数的2倍以上
13 set linesize 266
14 col table_name format a20
15 select table_name,
16        max(num_rows),
17        trunc(avg(num_rows),0),
18        sum(num_rows),
19        case when sum(num_rows),0 then 0,else trunc(max(num_rows) / sum(num_rows),2) end,
20        count(*)
21   from user_tab_partitions
22  group by table_name
23 having max(num_rows) / sum(num_rows) > 2 / count(*);
24
25 --也可用来作为判断查询当前用户下有因为疏于分区管理导致无大量数据进了建默认分区的参考。
26
27 select table_name,
28        partition_name,
29        num_rows
30  from user_tab_partitions
31  where table_name = ‘RANGE_PART_TAB‘
32  order by num_rows desc;
33
34
35 --请试验<分区类型_范围分.sql>后,体会上述脚本

查询分区数过多的表

 1 prompt <p>当前用户下分区最多的前10个对象
 2 select *
 3   from (select  table_name, count(*) cnt
 4           from user_tab_partitions
 5          group by  table_name
 6          order by cnt desc)
 7 where rownum <= 10;
 8
 9 prompt <p>当前用户下分区个数超过100个的表
10 select  table_name, count(*) cnt
11   from user_tab_partitions
12  having count(*) >= 100
13 group by table_name, table_name
14 order by cnt desc;
15
16 --或者如下更方便
17 select table_name, partitioning_type, subpartitioning_type
18   from user_part_tables
19  where partition_count > 100;

查询当前有多少带子分区的分区表

1 select table_name,
2        partitioning_type,
3        subpartitioning_type,
4        partition_count
5   from user_part_tables
6  where subpartitioning_type <> ‘NONE‘;
7
8
9 select count(*) from user_part_tables where  subpartitioning_type <> ‘NONE‘;

查询表中有没有过时类型的字段

 1 select table_name,
 2        column_name,
 3        data_type
 4   from user_tab_columns
 5  where data_type in ( ‘LONG‘,‘CHAR‘);
 6
 7
 8
 9
10
11
12
13
14
15
16
17 ------------------------------------------------------------------------------------
18
19 drop table t_long purge;
20 create table t_long (id int, name long);
21 drop table t_char purge;
22 create table t_char (id int, address char(10));
23 set linesize 266
24 col table_name  format a25
25 col column_name format a25
26 col data_type   format a20
27
28 SQL> select table_name,
29   2         column_name,
30   3         data_type
31   4    from user_tab_columns
32   5   where data_type in ( ‘LONG‘,‘CHAR‘);
33
34 TABLE_NAME                COLUMN_NAME             DATA_TYPE
35 ------------------------- ----------------------------------
36 T_CHAR                    ADDRESS                   CHAR
37 T_LONG                    NAME                      LONG

查询哪些外键未建索引

 1 --查看当前数据库哪些对象外键没建索引
 2 select table_name,
 3        constraint_name,
 4        cname1 || nvl2(cname2, ‘,‘ || cname2, null) ||
 5        nvl2(cname3, ‘,‘ || cname3, null) ||
 6        nvl2(cname4, ‘,‘ || cname4, null) ||
 7        nvl2(cname5, ‘,‘ || cname5, null) ||
 8        nvl2(cname6, ‘,‘ || cname6, null) ||
 9        nvl2(cname7, ‘,‘ || cname7, null) ||
10        nvl2(cname8, ‘,‘ || cname8, null) columns
11   from (select b.table_name,
12                b.constraint_name,
13                max(decode(position, 1, column_name, null)) cname1,
14                max(decode(position, 2, column_name, null)) cname2,
15                max(decode(position, 3, column_name, null)) cname3,
16                max(decode(position, 4, column_name, null)) cname4,
17                max(decode(position, 5, column_name, null)) cname5,
18                max(decode(position, 6, column_name, null)) cname6,
19                max(decode(position, 7, column_name, null)) cname7,
20                max(decode(position, 8, column_name, null)) cname8,
21                count(*) col_cnt
22           from (select substr(table_name, 1, 30) table_name,
23                        substr(constraint_name, 1, 30) constraint_name,
24                        substr(column_name, 1, 30) column_name,
25                        position
26                   from user_cons_columns) a,
27                user_constraints b
28          where a.constraint_name = b.constraint_name
29            and b.constraint_type = ‘R‘
30          group by b.table_name, b.constraint_name) cons
31  where col_cnt > ALL
32  (select count(*)
33           from user_ind_columns i
34          where i.table_name = cons.table_name
35            and i.column_name in (cname1, cname2, cname3, cname4, cname5,
36                 cname6, cname7, cname8)
37            and i.column_position <= cons.col_cnt
38          group by i.index_name)
39
40
41 查询所有含外键的表
42
43 select count(*),TABLE_NAME,c_constraint_name from (
44 select a.table_name,
45        substr(a.constraint_name, 1, 30) c_constraint_name,
46        substr(a.column_name, 1, 30) column_name,
47        position,
48        b.owner,
49        b.constraint_name,
50        b.constraint_type
51   from user_cons_columns a, user_constraints b
52  where a.constraint_name = b.constraint_name
53    and b.constraint_type = ‘R‘ )
54    group by TABLE_NAME,c_constraint_name
55
56  

时间: 2024-10-20 18:21:57

分区表工具脚本的相关文章

Unity3D 批量修改贴图导入设置工具脚本

这个Unity3D 批量修改贴图导入设置工具脚本十分小巧,但是威力大.特别针对大批量贴图要调整尺寸等等的时候作用尤为明显.在菜单中添加"Custom→Texture"的方式来批量改变所选的贴图导入设置.Unity本身只能一次打开一张图片进行导入设置,目前这个脚本可以批量更改贴图格式,是否开启MipMap,调整纹理最大尺寸,是否可读等等. 用法是把脚本放在你项目的资源目录的Editor文件夹下.然后选择你要批处理的纹理.到菜单中选择要处理的类型就可以了.ChangeTextureImpo

PowerShell工具脚本---按行数切割大文本文件

我编写的PowerShell工具脚本,[按行数切割大(文本)文件],生成n个小文件. 主要目的是为了能够让excel快速处理.或用脚本并发处理文本. 注意: 1 如果有必要,你可以先用其他工具,把大文本按行排序. 2 由于powershell本身就能自动识别win,linux换行.所以本脚本没有换行参数,也能正确分行. 3 win7+powershell2.0测试通过. 下载地址: http://files.cnblogs.com/files/piapia/split_file_ps_scrip

mac 前端仿站工具脚本

mac下没找到非常合适的工具来下载网站页面,来做模板网页用, 于是就查找资料,写了一个脚本,通过wget来下载页面,具体如下: #! /bin/bash URL="$2"PATH="$1" echo "download url: $URL"echo "download dir: $PATH" /usr/local/bin/wget -e robots=off -w 1 -xq -np -pk -E -t 1 -P "

Monkey工具脚本功能详解

●Monkey脚本 adb shell monkey -f <script> 1 参考源码:https://android.googlesource.com/platform/development/+/mastercmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java ●Monkey脚本主要命令 ?DispatchPointer  相当于把手按在某一个点上面 ?DispatchPress [keycode] 向系

AWD攻防工具脚本汇总(二)

情景五:批量修改ssh密码 拿到官方靶机第一件事改自己机器的ssh密码,当然也可以改别人的密码~ import paramiko import sys ssh_clients = [] timeout = 5 new_password = "[email protected]" def get_flag(): pass class SSH_Client(): def __init__(self, host, port, username, password): self.is_root

IPhone打包工具脚本

(后面就是代码了,我就不翻译了.) #!/usr/bin/perl use File::Copy; my $installPath = $ARGV[0]; #the name that displays on the iPhone my $bundleDisplayName = "New App"; # prerendered icons don't have the glossy effect applied over them. my $prerenderedIcon = 1; #

脚本式快捷键:一个简化shell终端命令输入的工具

1.解决的问题 当你需要一次输入很多个命令的时候,例如一次去多个目录删除文件cd dir1rm file1.tempcd ../../dir2rm -rf dir3 当你懒得输入一个好长的命令或者直接就记不住那么长的命令的时候,例如生成ctagsctags --languages=C++ --exclude=third_party --exclude=.git --exclude=build --exclude=out -R -f .tags 当你想要个类似快捷键来一键搞定重复的事情又懒得写好多

4个常用Linux VPS/服务器性能测评的脚本工具整理

我们网友在看到或者买到一台Linux VPS主机之后会做什么?肯定是要看看新买的这台机器是不是正如我们看到商家宣传或者网友说的那么好,比如在性能.速度.评分.IO读写上面的数据是否如何我们使用需要.当然,任何的软件测试或者别人的测试都不代表自己使用的效果,我们还是需要经受自己使用才能看到这个产品是否符合我们的用途. 4个常用Linux VPS/服务器性能测评的脚本工具整理4个常用Linux VPS/服务器性能测评的脚本工具整理 每一个网友都有自己的评判产品的标准或者工具,一般我们使用的工具都来自

互联网技术开发者必备的调试工具和脚本

俗话说的好:武功再好,一砖撂倒:功夫再高,也怕菜刀.可想而知,拥有工具是多么重要!!!哈哈,不闲扯了,直接给大家上工具吧.很多大牛都是有一套自己钟爱的工具集和资源集的哦.在今天这篇文章中,我将介绍一些能够帮助你高效开发的工具脚本和资源,权当抛砖引玉,希望能够带给大家帮助. 1.  JSFIDDLEJSFIDDLE是一个超棒的在线JS/CSS/HTML调试和分享工具,大家可以方便的在web页面中分享代码,或者调试代码.并且有效的和同事或者朋友分享. 2.  JSBinJSbin是另外一个相当不错的