精华内容
下载资源
问答
  • 就需要查询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_tables、user_tab_comments user_tables 在Oracle中,可用使用视图user_tables查看当前用户有哪些表,都有多少数据: 拓展:使用user_tables可查询当前用户的表;all_tables可查询所有用户的表;dba_tables查询...

    user_tables、user_tab_comments

    user_tables

    在Oracle中,可用使用视图user_tables查看当前用户有哪些表,都有多少数据:

    拓展:使用user_tables可查询当前用户的表;all_tables可查询所有用户的表;dba_tables查询包括系统表的所有表.

    user_tab_comments

    可以查看当前数据库用户的所有表

    拓展:user_col_comments 可以查看当前数据库用户所有表的字段

    user_objects

    是Oracle 字典表 的视图

    展开全文
  • 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

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

    SQL insert   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/

    展开全文
  • CREATE OR REPLACE function SMES_C.long_2_varchar ( p_table_owner in DBA_TAB_PARTITIONS.table_owner%type, p_ta...
  • 在每一次drop 表之后,这个视图会多出一条数据, 而且无法删除。 这是 oracle 的闪回技术, 意思是: 闪回技术有闪回表、闪回删除、闪回查询、闪回事务查询、闪回事务、闪回数据库、闪回数据归档。...
  • 今天本想计算下基于范围的索引选择率,但是通过user_tab_columns查询出来low_value和high_value结果是raw类型的,而且我们知道它是截取了后32位,如果我想知道他们代表确切的十进制...
  • user_tables表字段含义

    千次阅读 2018-12-04 17:59:01
    user_stats -是否有统计 duration - 临时表 的时间 skip_corrupt -是否忽略损坏的块标记在表和索引扫描(ENABLED)状态的或将引发一个错误(已禁用)。 monitoring -是否有监测属性集 cluster_owner -群集的所有...
  • 通过select * from user_tab_columns t where t.table_name = 'XX' (说明:XX为要找的表)得到表结构,但是有些表结构与新建的表字段顺序不一致(也就是用途VIEW查看表结构时的属性,如原表是A(NF,XB_DM,XB_MC,SJLY_...
  • 深入学习Oracle分区表及分区索引

    千次阅读 2018-07-09 15:41:11
     要查询创建分区的信息,可以通过查询user_part_tables,user_tab_partitions两个数据字典(索引分区、组织分区等信息也有对应的数据字典,后续示例会逐步提及)。  user_part_tables:记录分区的表的信息;  user_...
  • ![图片说明](https://img-ask.csdn.net/upload/201703/19/1489911075_599526.png)
  • oracle 表分区

    2018-06-03 19:09:28
    select partition_name from user_tab_partitions where table_name='TABLE_NAME_CDD'; /*查询第一个分区的数据*/ select * from TABLE_NAME_CDD PARTITION(part_name_P01);  注意:上面的例子中只要日期在2018-06-...
  • SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'   10. 查询索引信息 select object_name,object_type,tablespace_name,sum(value) from v$segment_statistics where statistic_...
  • SQL> select table_name,partition_name from user_tab_partitions where table_name='DAVID'; TABLE_NAME PARTITION_NAME ------------------------------ ------------------------------ CUSTADDR T_LIST...
  • SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'   10. 查询索引信息 select object_name,object_type,tablespace_name,sum(value) from v$segment_statistics where statistic_name IN...
  • 详解Oracle partition分区表

    万次阅读 2016-08-09 09:43:56
    USER_TAB_PARTITIONS  WHERE TABLE_NAME='tableName' --显示表分区信息 显示数据库所有分区表的详细 分区 信息:select * from  DBA_TAB_PARTITIONS --显示当前用户可访问的所有分区表的详细分区信息:...
  • SQL> selectpartition_name,blocks,num_rows,global_stats from user_tab_partitions where table_name='P'; PARTITION_NAME BLOCKS NUM_ROWS GLO ------------------------------ -------------------- --- ...
  •  select count(*) from user_tab_columns where table_name= upper(‘sys_operate’)  注:这两个例子都用到了upper这个函数,是因为在这里表名得大写,否则查出的结果不是正确的  user_constraints 用户的对象...
  • 统计信息所在的表

    2012-04-25 00:37:23
    -- cascade等于true表示收集表和索引的统计 dbms_stats.gather_table_stats(ownname => 'RDR', tabname => 'M_TABLE', cascade => true);...select * from user_tab_statistics; --表的统计信息 select * from u
  • oracle分区表

    千次阅读 2011-08-14 15:58:36
    Oracle中分区表的使用 前提:  查询分区:Select *From user_extents WHERE partition_name='分区名'; 1)创建表空间 create tablespace HRPM0 datafile '/oradata/mi
  • 当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名: SQL> select distinct table_name from user_tab_partitions; BIN$l+Pv5l1jCMXgQKjAyQFA0A==$0 这样很容易导致...
  • 一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very ...Tables can be partitioned into up to 1024K-1 separate partitions 联机文档上有关分区表和索引的说明: Partitioned Tables and Indexes ...
  • select * from DBA_TAB_PARTITIONS --显示当前用户可访问的所有分区表的详细分区信息: select * from ALL_TAB_PARTITIONS --显示当前用户所有分区表的详细分区信息: select * from USER_TAB_PARTITIONS ...
  • USER_TAB_PARTITIONS    表的每个分区的信息 USER_PART_KEY_COLUMNS   分区键使用的列 USER_PART_COL_STATISTICS    分区列的统计信息 USER_IND_PARTITIONS    索引分区 USER _IND_SUBPARTITIONS  ...
  • 查看表分区信息

    2010-10-15 18:16:00
    drop该表,分区表其实依旧存在,只是放入了回收站,列为待清理的对象)select * from USER_PART_TABLES 查看当前用户的分区表信息select * from USER_TAB_PARTITIONS 查看当前用户的表分区信息
  • 'testing partitions' ,adddate( '1995-01-01' ,(rand(v)*36520) mod 3652));    set  v = v + 1;    end  while;    end    //  mysql> delimiter ;  mysql> call load_...
  • 注:dba_tab_partitions | all_tab_partitions | user_tab_partitions表都可以 2.查看分区内数据(以SYS_P82分区为例) (1)如果 知道分区的名字 ,可以直接查询对应的分区名 ...
  • [20120507]视图all_tab_columns的定义问题.txt生产系统我发现一个问题,开发人员在使用pb9.0维护时要调用如下类似的语句:SELECT synonym_name FROM SYS.all_synony...
  • 创建用户 liaomin 与huqun 密码自定 Liaomin 用户创建表lucene Huqun 用户创建表 quartz 登陆liaomin 输出sql语句 SQL> select * from tab; TNAME TABTYPE CLUSTERID ----------------------...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,775
精华内容 3,510
关键字:

user_tab_partitions