ITPub博客

首页 > 数据库 > Oracle > [20240426]建立完善tpt seg2.sql脚本.txt

[20240426]建立完善tpt seg2.sql脚本.txt

原创 Oracle 作者:lfree 时间:2024-05-08 20:34:12 0 删除 编辑

[20240426]建立完善tpt seg2.sql脚本.txt

--//我修改tpt 的seg2脚本,一般使用seg2.sql脚本查询大部分对象没有partition_name,我设计缺省取消输出显示.
--//但是有一个小问题,我经常忘记输入参数2.这样因为在执行时会出现"奇怪现象",要回车才显示输出.
--//做一些小改动就可以避免这个问题.修改如下:
--//下划线内容为增加的内容,这样就可以规避这个问题,类似的问题可以如下方法解决.比如参数1等等...
--//另外tpt还提供1个清除参数设置的脚本undefparm.sql.

$ cat undefparm.sql.
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.

undefine 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

$ cat seg2.sql
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.

col seg_owner head OWNER for a20
col seg_segment_name head SEGMENT_NAME for a30
col seg_segment_type head SEGMENT_TYPE for a20
col v_con new_value v_con

set term off
column 2 new_value 2
~~~~~~~~~~~~~~~~~~~
select '' "2" from dual where 1=2;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select decode('&&2',NULL,'noprint','1','print','p','print','print','print','noprint') v_con from dual;
set term on

col seg_partition_name head SEG_PART_NAME for a30 &v_con

select
    round(bytes/1048576) seg_MB,
    owner seg_owner,
    segment_name seg_segment_name,
    partition_name seg_partition_name,
    segment_type seg_segment_type,
    tablespace_name seg_tablespace_name,
  blocks,
    header_file hdrfil,
    HEADER_BLOCK hdrblk
from
    dba_segments
where
    upper(segment_name) LIKE
                upper(CASE
                    WHEN INSTR('&1','.') > 0 THEN
                        SUBSTR('&1',INSTR('&1','.')+1)
                    ELSE
                        '&1'
                    END
                     )
AND    owner LIKE
        CASE WHEN INSTR('&1','.') > 0 THEN
            UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
        ELSE
            user
        END
/


--//简单测试看看:
1.环境:
SCOTT@test01p> @ver1

PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.2.0.1.0     Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0

2.测试:
SCOTT@test01p> define 2
SP2-0135: symbol 2 is UNDEFINED

SCOTT@test01p> @ seg2 scott.dept
    SEG_MB OWNER                SEGMENT_NAME                   SEGMENT_TYPE         SEG_TABLESPACE_NAME                BLOCKS     HDRFIL     HDRBLK
---------- -------------------- ------------------------------ -------------------- ------------------------------ ---------- ---------- ----------
         0 SCOTT                DEPT                           TABLE                USERS                                   8         11        130

SCOTT@test01p> @ seg2 scott.dept 1
    SEG_MB OWNER                SEGMENT_NAME                   SEG_PART_NAME                  SEGMENT_TYPE         SEG_TABLESPACE_NAME                BLOCKS     HDRFIL     HDRBLK
---------- -------------------- ------------------------------ ------------------------------ -------------------- ------------------------------ ---------- ---------- ----------
         0 SCOTT                DEPT                                                          TABLE                USERS                                   8         11        130
--//多了一个SEG_PART_NAME字段的输出.

SCOTT@test01p> define 2
DEFINE 2               = "1" (CHAR)

SCOTT@test01p> @undefparm
SCOTT@test01p> define 2
SP2-0135: symbol 2 is UNDEFINED


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

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969578