show_space脚本

CREATE OR REPLACE PROCEDURE show_space(
  --this procedure can only be used for non-partitioned tables,indexex,clusters
  seg_name VARCHAR2
) AS
  blks_1       NUMBER;
  bytes_1      NUMBER;
  blks_2       NUMBER;
  bytes_2      NUMBER;
  blks_3       NUMBER;
  bytes_3      NUMBER;
  blks_4       NUMBER;
  bytes_4      NUMBER;
  blks_f       NUMBER;
  bytes_f      NUMBER;
  blks_u       NUMBER;
  bytes_u      NUMBER;
  tblks        NUMBER;
  tbs          NUMBER;
  ublks        NUMBER;
  ubs          NUMBER;
  luefid       NUMBER;
  luebid       NUMBER;
  lastub       NUMBER;
  free_blks     NUMBER;
  isassm       VARCHAR2(10);
  seg_type     VARCHAR2(10);
  PROCEDURE output(
    in_str   VARCHAR2
   ,in_num   NUMBER
   ,isformat NUMBER DEFAULT 0
  ) IS
    format_num VARCHAR2(20);
  BEGIN
    IF isformat = 0 THEN
      dbms_output.put_line(rpad(in_str, 35, '-') || '> ' || in_num);
    ELSE
      IF in_num / 1024 / 1024 < 1 AND in_num / 1024 / 1024 <> 0 THEN
        format_num := '0' || to_char(round(in_num / 1024 / 1024, 2));
      ELSE
        format_num := to_char(round(in_num / 1024 / 1024, 2));
      END IF;
      dbms_output.put_line(rpad(in_str, 35, '-') || '> ' || format_num ||
                           '(m)');
    END IF;
  END;

BEGIN
  --1.ensure segment_type
  SELECT a.segment_type
  INTO seg_type
  FROM dba_segments a
  WHERE a.segment_name = upper(seg_name);
  --2.ensure segment_space_management
  --(1).if it is table
  IF upper(seg_type)=upper('table') THEN
    SELECT a.segment_space_management
    INTO isassm
    FROM dba_tablespaces a, dba_tables b
    WHERE b.table_name = upper(seg_name)
          AND a.tablespace_name = b.tablespace_name;
  --(2).if it is index
  ELSIF upper(seg_type)=upper('index') THEN
    SELECT a.segment_space_management
    INTO isassm
    FROM dba_tablespaces a, dba_indexes b
    WHERE b.index_name = upper(seg_name)
          AND a.tablespace_name = b.tablespace_name;
  --(3).if it is cluster
  ELSIF upper(seg_type)=upper('cluster') THEN
    SELECT a.segment_space_management
    INTO isassm
    FROM dba_tablespaces a, dba_clusters b
    WHERE b.cluster_name = upper(seg_name)
          AND a.tablespace_name = b.tablespace_name;
  END IF;
  dbms_output.put_line('');
  dbms_output.put_line('## '||'the tablespace of this segment is ' || upper(isassm) || ' ##');
  dbms_output.put_line('');
  --3.dbms_space.unused_space
  dbms_space.unused_space(
    segment_owner             => upper(USER),
    segment_name              => upper(seg_name),
    segment_type              => upper(seg_type),
    total_blocks              => tblks,
    total_bytes               => tbs,
    unused_blocks             => ublks,
    unused_bytes              => ubs,
    last_used_extent_file_id  => luefid,
    last_used_extent_block_id => luebid,
    last_used_block           => lastub
  );
  output('total_blocks', tblks);
  output('total_bytes', tbs, 1);
  output('unused_blocks', ublks);
  output('unused_bytes', ubs, 1);
  output('last_used_extent_file_id', luefid);
  output('last_used_extent_block_id', luebid);
  output('last_used_block', lastub);
  --4.dbms_space.space_usage,this can only be used for assm
  IF upper(isassm) = upper('auto') THEN
      dbms_space.space_usage(
        segment_owner      => upper(USER),
        segment_name       => upper(seg_name),
        segment_type       => upper(seg_type),
        unformatted_blocks => blks_u,
        unformatted_bytes  => bytes_u,
        fs1_blocks         => blks_1,
        fs2_blocks         => blks_2,
        fs3_blocks         => blks_3,
        fs4_blocks         => blks_4,
        fs1_bytes          => bytes_1,
        fs2_bytes          => bytes_2,
        fs3_bytes          => bytes_3,
        fs4_bytes          => bytes_4,
        full_blocks        => blks_f,
        full_bytes         => bytes_f
      );
      output('unformatted_blocks', blks_u);
      output('unformatted_bytes', bytes_u, 1);
      output(' 0% --  25% free space blocks', blks_1);
      output(' 0% --  25% free space bytes', bytes_1, 1);
      output('25% --  50% free space blocks', blks_2);
      output('25% --  50% free space bytes', bytes_2, 1);
      output('50% --  75% free space blocks', blks_3);
      output('50% --  75% free space bytes', bytes_3, 1);
      output('75% -- 100% free space blocks', blks_4);
      output('75% -- 100% free space bytes', bytes_4, 1);
      output('full_blocks', blks_f);
      output('full_bytes', bytes_f, 1);
  END IF;
  --5.dbms_space.free_blocks,this can only be used for MSSM
  IF upper(isassm) = upper('manual') THEN
    dbms_space.free_blocks(
      segment_owner     => upper(USER),
      segment_name      => upper(seg_name),
      segment_type      => upper(seg_type),
      freelist_group_id => 0,
      free_blks         => free_blks
    );
    output('free_blocks',free_blks);
  END IF;
END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22745099/viewspace-625715/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22745099/viewspace-625715/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
修改完整版的sql存储(积分兑换脚本),改写出可执行的shell和hive脚本。 积分兑换脚本: create procedure "rptdev"."sp_wjq_jf_value_dhfz_show"( in @data_date integer default cast("dateformat"("now"()-1,'yyyymmdd') as integer), in @is_run_flag1 integer default 1, in @is_run_flag2 integer default 10 ) on exception resume /****************************************************************** -- Purpose : 兑换积分分析报表 -- Auther: xxx -- Date : 20210923 *******************************************************************/ begin declare @stat_date varchar(8); --统计日期 declare @month_id integer; --统计月份 declare @month_first_date varchar(8); --统计月的第一天 declare @month_last_date varchar(8); --统计月的最后一天 declare @last_month_first_date varchar(8); --上月的第一天 declare @last_month_last_date varchar(8); --上月的最后一天 declare @last_month integer; --上月 declare @last_last_month integer; --上上月 declare @last_month_this_day varchar(8); --上月当天 declare @last_year_this_month integer; --上年当月 declare @this_year_first_month integer; --本年首月 declare @last_year_last_month integer; --上年尾月 set @stat_date = convert(varchar(8),@data_date); set @month_id = @data_date/100; set @month_first_date = "dateformat"(@data_date,'yyyymm01'); --统计月的第一天 set @month_last_date = "dateformat"("dateadd"("dd",-1,"dateformat"("dateadd"("mm",1,@data_date),'yyyymm01')),'yyyymmdd'); --统计月的最后一天 set @last_month_first_date = "dateformat"("dateadd"("mm",-1,@data_date),'yyyymm01'); --上月第一天 set @last_month_last_date = "dateformat"("dateadd"("dd",-1,"dateformat"("dateadd"("mm",1,@data_date),'yyyymm01')),'yyyymmdd'); set @last_month = cast("dateformat"("dateadd"("month",-1,@data_date),'yyyymm') as integer); --上月 set @last_last_month = cast("dateformat"("dateadd"("month",-2,@data_date),'yyyymm') as integer); --上上月 set @last_month_this_day = "dateformat"("dateadd"("mm",-1,convert(date,@data_date)),'yyyymmdd'); --上月当天 set @last_year_this_month = convert(integer,"dateformat"("dateadd"("yy",-1,@last_month_this_day),'yyyymm')); --上年当月 set @this_year_first_month = convert(integer,"dateformat"("dateadd"("yy",0,@data_date),'yyyy01')); --本年首月 set @last_year_last_month = cast("dateformat"(convert(integer,"dateformat"("dateadd"("yy",-1,@data_date),'yyyy1231')),'yyyymm') as integer); --上年尾月 set temporary option "conversion_error" = 'OFF'; set temporary option "Query_Temp_Space_Limit" = 0; --drop table if exists rpt_wjq_jf_value_dhfz_list;commit;
06-07

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值