精华内容
下载资源
问答
  • 就需要查询user_tab_partitions 视图的HIGH_VALUE字段。 但是会发现这个字段的类型 是LONG 类型。例如: SQL> desc user_tab_partitions; Name Type Nullable Default Comments -------------...

    有时候我们需要查询分区表确定分区的大小。就需要查询user_tab_partitions 视图的 HIGH_VALUE字段。

    但是会发现这个字段的类型 是LONG 类型。例如:

    SQL> desc user_tab_partitions;
    Name                   Type         Nullable Default Comments
    ---------------------- ------------ -------- ------- --------
    TABLE_NAME             VARCHAR2(30) Y                         
    COMPOSITE              VARCHAR2(3)  Y                         
    PARTITION_NAME         VARCHAR2(30) Y                         
    SUBPARTITION_COUNT     NUMBER       Y                         
    HIGH_VALUE             LONG         Y                         
    HIGH_VALUE_LENGTH      NUMBER       Y                         
    PARTITION_POSITION     NUMBER       Y                         
    TABLESPACE_NAME        VARCHAR2(30) Y                        

    sqlplus 里面显示是TO_DATE 具体的内容:

    SQL> select t.table_name, t.partition_name, t.high_value
      2    from user_tab_partitions t
      3   where t.table_name = 'PART_IND_TEST'
      4     and t.partition_name = 'P_201401';

    TABLE_NAME                     PARTITION_NAME                 HIGH_VALUE
    ------------------------------ ------------------------------ ------------------------------------------------------------------------------------------
    PART_IND_TEST                  P_201401                       TO_DATE(' 2014-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')

    查询得到的内容是   TO_DATE(' 2014-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')

    但是更多的时候需求是希望得到2014-02-01 00:00:00 这个时间。

    并且在PL/SQL Developer 查询出来不是显示具体的内容

    创建一个函数,可以巧妙的绕过这个问题:

    create or replace function fun_high_value(p_tname   varchar2,
                                              p_parname varchar2)
      return varchar2 is
      l_high_value varchar2(1000);
    begin
      select t.high_value
        into l_high_value
        from user_tab_partitions t
       where t.table_name = p_tname
         and t.partition_name = p_parname;
      return l_high_value;
    end;

    select table_name,
           partition_name,
           fun_high_value(table_name, partition_name) high_value,
           substr(fun_high_value(table_name, partition_name), 10, 11)
      from user_tab_partitions t
     where t.table_name = 'PART_IND_TEST'
       and t.partition_name = 'P_201401';

    TABLE_NAME                     PARTITION_NAME                 HIGH_VALUE                                                                                 SUBSTR(FUN_HIGH_VALUE(TABLE_NAME,PARTITION_N
    ------------------------------ ------------------------------ ------------------------------------------------------------------------------------------ --------------------------------------------
    PART_IND_TEST                  P_201401                       TO_DATE(' 2014-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')         2014-02-01

    另外一个办法是使用XML db的语法查询。也能实现同样的需求:

    select *
      from (with xml as (SELECT dbms_xmlgen.getXMLType('select table_name, partition_name, high_value
                                     from user_tab_partitions t
                                    where t.table_name = ''' ||
                                                       t.table_name || ''' ') as x
                           from user_tables t
                          where t.TABLE_NAME in ('PART_IND_TEST'))
             select extractvalue(rws.object_value, '/ROW/TABLE_NAME') TABLE_NAME,
                    extractvalue(rws.object_value, '/ROW/PARTITION_NAME') PARTITION_NAME,
                    extractvalue(rws.object_value, '/ROW/HIGH_VALUE') HIGH_VALUE
               FROM XML X, TABLE(XMLSEQUENCE(EXTRACT(X.X, '/ROWSET/ROW'))) rws)
              where partition_name = 'P_201401'

     

    如果不想创建函数,数据库版本是12c以上的话,可以使用with语法:

    with function fun_high_value(p_tname varchar2,
    p_parname varchar2) return varchar2 is l_high_value varchar2(1000);
    begin
      select t.high_value
        into l_high_value
        from user_tab_partitions t
       where t.table_name = p_tname
         and t.partition_name = p_parname;
      return l_high_value;
    end;
    select table_name,
           partition_name,
           fun_high_value(table_name, partition_name) high_val
      from user_tab_partitions t
     where t.table_name = 'PART_IND_TEST'
       and t.partition_name = 'P_201401'

    以上是几种办法。你学会了么?

     

    下面是我的公众号:定期会更新一些Oracle 数据库及Python相关的学习经验。欢迎关注:

     

    展开全文
  • 在搜索user_tab_partitions的时候,发现有些表分区的num_rows为空,对比了其他非空的表,发现global_stats有区别,非空的是yes,空的是no。后来搜索找到了解决办法,可以进行统计。  全表分析 完全计算法: ...

            在搜索user_tab_partitions的时候,发现有些表分区的num_rows为空,对比了其他非空的表,发现global_stats有区别,非空的是yes,空的是no。后来搜索找到了解决办法,可以进行统计。

            全表分析   完全计算法:   analyze   table   abc   compute   statistics;   抽样估算法(抽样20%):   analyze   table   abc   estimate   statistics   sample   20   percent;   对表作完全计算所花的时间相当于做全表扫描,抽样估算法由于采用抽样,比完全计算法的生成统计速度要快,如果不是要求要有精确数据的话,尽量采用抽样分析法。建议对表分析采用抽样估算,对索引分析可以采用完全计算。 

            以上亲测可用。
    展开全文
  • user_tab_partitions.high_value字段是long,直接用sql窗口查不到该字段信息,用to_char.转换不可以,那这种情况怎么能实现 user_tab_partitions和其他表关联或显示long字段呢? ...


    标题:  Oracle user_tab_partitions.high_value字段 LONG类型 读取的几种方法 

    作者:lōττéry©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]



    由于user_tab_partitions.high_value字段是long,直接用sql窗口查不到该字段信息,用to_char.转换不可以,那这种情况怎么能实现user_tab_partitions和其他表关联或显示long字段呢?


    具体步骤依据如下:

    ① 追加到表查看:
    SQL> desc user_tab_partitions
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     TABLE_NAME                                         VARCHAR2(30 )
     COMPOSITE                                          VARCHAR2(3 )
     PARTITION_NAME                                     VARCHAR2(30 )
     SUBPARTITION_COUNT                                 NUMBER
     HIGH_VALUE                                         LONG
     ...

    SQL

    SQLcreate table lottery (table_name VARCHAR2( 30),partition_name VARCHAR2 (30),aa CLOB);

    SQLinsert into lottery select p.table_name,p.partition_name,to_lob(p.high_value) from user_tab_partitions p;


    ② 用循环打印/保存表方式
    例如:
    DECLARE
      CURSOR C_CONS IS
        SELECT P.TABLE_NAME, P.PARTITION_NAME, P.HIGH_VALUE
          FROM USER_TAB_PARTITIONS P;
      P_HIGH_VALUE     VARCHAR2(4000);
      P_TABLE_NAME     VARCHAR2(4000);
      P_PARTITION_NAME VARCHAR2(4000);
    BEGIN
      EXECUTE IMMEDIATE ('CREATE TABLE LOTTERY (TABLE_NAME VARCHAR2(4000),PARTITION_NAME VARCHAR2(4000),HIGH_VALUE VARCHAR2(4000))');
      FOR P_C_CONS IN C_CONS LOOP
        P_HIGH_VALUE     := P_C_CONS.HIGH_VALUE;
        P_TABLE_NAME     := P_C_CONS.TABLE_NAME;
        P_PARTITION_NAME := P_C_CONS.PARTITION_NAME;
        EXECUTE IMMEDIATE ('INSERT INTO LOTTERY VALUES(''' || P_TABLE_NAME ||
                          ''',''' || P_PARTITION_NAME || ''',''' ||
                          P_HIGH_VALUE || ''')');
        --DBMS_OUTPUT.PUT_LINE('INSERT INTO LOTTERY VALUES(''' || P_TABLE_NAME ||''',''' || P_PARTITION_NAME || ''',''' ||P_HIGH_VALUE || ''')');
      END LOOP;
      COMMIT;
    END;


    ③ 用【plsql developer】command window...查询
    例如:
    SELECT P.TABLE_NAME, P.PARTITION_NAME, P.HIGH_VALUE FROM USER_TAB_PARTITIONS P;




    此条目发表在 Oracle 分类目录。将固定连接加入收藏夹。



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

    转载于:http://blog.itpub.net/28602568/viewspace-1289283/

    展开全文
  • <...SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='TBL_PAGE';<!================显示表分区信息======================================================><!--显示数据库所...
    <!--查询ORACLE分区表存在多少个分区-->
      SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='TBL_PAGE';
      <!================显示表分区信息======================================================>
      <!--显示数据库所有的表分区信息-->
      SELECT * FROM DBA_PART_TABLES
      <!--显示当前用户可以访问的所有分区表信息-->
      SELECT * FROM ALL_PART_TABLES
      <!--显示当前用户所有分区表的信息-->
      SELECT * FROM USER_PART_TABLES
      <!================显示表分区详细信息===================================================>
      <!--显示表分区信息 显示数据库所有的表分区的详细分区信息-->
      SELECT * FROM DBA_TAB_PARTITIONS
      <!--显示当前用户可以访问的所有分区表的详细分区信息-->
      SELECT * FROM ALL_TAB_PARTITIONS
      <!--显示当前用户所有分区表的详细分区的信息-->
      SELECT * FROM USER_TAB_PARTITIONS
      <!=================显示子分区信息=====================================================>
      <!--显示子分区信息 显示数据库所有组合分区表的子分区信息-->
      SELECT * FROM DBA_TAB_SUBPARTITIONS
      <!--显示当前用户可以访问的所有组合分区表的子分区信息-->
      SELECT * FROM ALL_TAB_SUBPARTITIONS
      <!--显示当前用户所有组合分区表的子分区信息-->
      SELECT * FROM USER_TAB_SUBPARTITIONS
      <!=================显示分区列=====================================================>
      <!--显示数据库所有分区表的分区列信息-->
      SELECT * FROM DBA_PART_KEY_COLUMNS
      <!--显示当前用户可以访问的所有 分区表的 分区列信息-->
      SELECT * FROM ALL_PART_KEY_COLUMNS
      <!--显示当前用户所有分区表的分区列信息-->
      SELECT * FROM USER_PART_KEY_COLUMNS
      <!=================显示子分区列=====================================================>
      <!--显示数据库所有分区表的子分区列信息-->
      SELECT * FROM DBA_SUBPART_KEY_COLUMNS
      <!--显示当前用户可以访问的所有分区表的子分列信息-->
      SELECT * FROM ALL_SUBPART_KEY_COLUMNS
      <!--显示当前用户所有组合分区表的子分区信息-->
      SELECT * FROM USER_SUBPART_KEY_COLUMNS
      <!=================具体操作====================================================>
      <!--怎样查询出ORACLE数据库中所有的表分区-->
      SELECT * FROM USER_TABLES A WHERE A.PARTITIONED='YES'
      <!--删除一个表的数据时-->
      TRUNCATE TABLE TABLE_NAME;
      <!--删除分区表一个分区的数据时-->
      ALTER TABLE TABLE_NAME TRUNCATE PARTITION P5;

     

    转载于:https://www.cnblogs.com/cphmvp/p/3302290.html

    展开全文
  • 表 Count 字典位置

    2006-02-02 21:35:00
    USER_TAB_PARTITIONS
  • 如何查询分区表及其属性

    千次阅读 2015-04-25 10:13:43
    partition table 查询 –查询分区表的属性(USER_PART_TABLES表) select * from user_part_tables t where t.table_name=’ABC’;...select * from user_tab_partitions p where p.table_name=’
  • USER_TAB_PARTITIONS这个数据库字典表中查询: [code="java"]SELECT TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME FROM USER_TAB_PARTITIONS[/code]
  • Oracle常用查询

    2011-10-26 10:23:27
    显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS 显示子分区信息 显示数据库所有组合分区表的子分区信息:DBA_TAB_SUBPARTITIONS 显示当前用户可访问的所有组合分区表的子分区信息:ALL_TAB_...
  • oracle之表分区

    2018-08-06 09:06:18
    查看表的分区,利用user_tab_partitions select table_name,partition_name from user_tab_partitions where table_name='STUD'; 1:范围分区 --按行分区, create table stud( sid number primary...
  • Oracle查看分区表信息

    2011-12-02 15:42:32
    显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS 显示子分区信息 显示数据库所有组合分区表的子分区信息:DBA_TAB_SUBPARTITIONS 显示当前用户可访问的所有组合分区表的子分区信息:ALL_TAB_...
  • 大致思路是由DBA_TAB_PARTITIONS查询TABLE_NAME和HIGH_VALUE,来确定PARTION_NAME,通过SQL生成alter table语句。 由于DBA_TAB_PARTIONS的HIGH_VALUE字段是LONG,...没有DB权限可以换为USER_TAB_PARTITIONS表 ...
  • --查找表名 select * from User_tables where ...--查找某个表的分区 select * from user_tab_partitions where table_name = 'P_MROL2L_UELOCATION'; --查找某个表的子分区 select * from user_tab_subpartition...
  • 可通过查询USER_TAB_PARTITIONS视图来查询分区名单。[@more@]SQL> desc user_tab_partitions;Name...
  • oracle索引查询

    千次阅读 2018-03-12 09:41:10
    --查看分区表索引SELECT A.TABLE_NAME,A.TABLE_OWNER,A.INDEX_NAME,A.INDEX_TYPE,A.STATUS UISTATUS,C.STATUS UIPSTATUSFROM USER_INDEXES A, USER_TAB_PARTITIONS B, USER_IND_PARTITIONS CWHERE A.TABLE_NAME = B....
  • 部分系统表。

    千次阅读 2011-11-30 10:32:30
    --回收表 select * from user_recyclebin;...select distinct table_name from user_tab_partitions;  --查询表 select * from user_tables;  --查询表字段 select * from user_tab_columns;  --查询
  • oracle分区表彻底删除的办法当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名:SQL> select distinct table_name from user_tab_partitions;BIN$l+Pv5l1...
  • 常用数据字典汇总

    2014-01-02 23:31:49
    DBA_IND_PARTITIONS DBA_IND_SUBPARTITIONS ALL_TAB_PARTITIONS ALL_SUBPARTITION_TEMPLATES ALL_IND_COLUMNS ALL_INDEXES USER_SEQUENCES USER_CONS_COLUMNS USER_TAB_COLS
  • SELECT * FROM USER_TAB_PARTITIONS t WHERE t.TABLE_NAME = 'XXX'; SELECT * FROM USER_TAB_SUBPARTITIONS T WHERE T.TABLE_NAME = 'XXX'; --查询分区,子分区对应的数据, SELECT * FROM XXX PARTITION(RESULT_...
  • Oracle分区表彻底删除的办法当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名:SQL> select distinct table_name from user_tab_partitions;BIN$l+Pv5l1...
  • oracle分区表彻底删除的办法

    千次阅读 2015-07-02 16:35:02
    当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名: SQL> select distinct table_name from user_tab_partitions; BIN$l+Pv5l1jCMXgQKjAyQFA0A==$0 这样很容易导致...
  • 数据库积累

    2017-10-30 15:57:00
    #系统表 --查询某类表中,某个字段有哪些分布 select * from user_tab_cols a where a.TABLE_NAME like '%TBL%' and a.COLUMN_NAME like '%CLEAR%' ...SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='T表A...
  • 实验环境: 11.1.0.6.0 对ANONYMOUSUSER_ALL表中分区... select TABLE_NAME,PARTITION_NAME,HIGH_VALUE,PARTITION_POSITION,TABLESPACE_NAME from user_tab_partitions where TABLE_NAME='ANONYMOUSUSER_ALL';T...
  • 当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名: SQL&gt; select distinct table_name from user_tab_partitions; BIN$l+Pv5l1jCMXgQKjAyQFA0A==$0 这样很...
  • Oracle之常用查询语句

    2018-11-01 18:16:00
    SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='tablename'; -------------------------------------- --查询表下的所有子分区 SELECT * FROM USER_TAB_SUBPARTITIONS WHERE TABLE_NAME='tabl...
  • SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='分区表名称';
  • ORACLE 创建和删除分区

    2019-09-16 23:23:47
    select * from TEST_BOOK t; -- 查看分区数据 select table_name, partition_name from user_tab_partitions where table_name = 'TEST_BOOK'; -- 删除分区...
  • oracle巡检

    2013-06-21 16:37:10
    检查表和索引的统计信息是否太旧: 表: select * from user_tables ...select * from user_tab_partitions order by last_analyzed; 索引: select * from user_indexes order by last_analyzed; select * fr

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 122
精华内容 48
关键字:

user_tab_partitions