[20151004]表中最大分区数.txt

[20151004]表中最大分区数.txt

--oracle的表最大分区数能达到多少。依稀记得以前2^20-1 .

SCOTT@test01p> select power(2,20)-1 N10 from dual ;
                  N10
---------------------
              1048575

--参考链接:
http://blog.itpub.net/267265/viewspace-1061109/
D:\tools\rlwrap>oerr ora 14300
14300, 00000, "partitioning key maps to a partition outside maximum permitted number of partitions"
// *Cause:  The row inserted had a partitioning key that maps to a partition number greater than 1048575
// *Action  Ensure that the partitioning key falls within 1048575 partitions or subpartitions.

--从这个错误提示也可以旁证最大分区数1048575。如何验证呢?
--如果真要建立这样的表,估计数据字典的空间消耗会很大,不知道要多少时间。

1.建立如下测试环境:

SCOTT@test01p> @ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

CREATE TABLE partition_interval_tab (
  n1 NUMBER
,trade_date DATE
,n2 number
)
PARTITION BY RANGE (trade_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION p_1 values LESS THAN (TO_DATE(' 2013-11-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
,PARTITION p_2 values LESS THAN (TO_DATE(' 2013-12-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
);

insert into partition_interval_tab values (1, trunc(sysdate), 100);
insert into partition_interval_tab values (2, trunc(sysdate + 20), 200);
commit;

SCOTT@test01p> select partition_name,compression,compress_for from user_tab_partitions where table_name='PARTITION_INTERVAL_TAB';
PARTITION_NAME       COMPRESS COMPRESS_FOR
-------------------- -------- ------------------------------
P_1                  DISABLED
P_2                  DISABLED
SYS_P7753            DISABLED
SYS_P7754            DISABLED

--可以发现建立了4个分区。

2.测试:
SCOTT@test01p> select * from partition_interval_tab where trade_date >= trunc(sysdate+700);
no rows selected

SCOTT@test01p> @dpc ''  partition
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  6jc9tqsupurcm, child number 0
-------------------------------------
select * from partition_interval_tab where trade_date >=trunc(sysdate+700)
Plan hash value: 834375401
--------------------------------------------------------------------------------------------------------------------
| Id  | Operation                | Name                   | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop |
--------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |                        |        |       |    27 (100)|          |       |       |
|   1 |  PARTITION RANGE ITERATOR|                        |      1 |    35 |    27   (0)| 00:00:01 |   KEY |1048575|
|*  2 |   TABLE ACCESS FULL      | PARTITION_INTERVAL_TAB |      1 |    35 |    27   (0)| 00:00:01 |   KEY |1048575|
--------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1
   2 - SEL$1 / PARTITION_INTERVAL_TAB@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - filter("TRADE_DATE">=TRUNC(SYSDATE@!+700))

--从另外的角度认证最大分区数=1048575.

时间: 2024-10-04 17:14:00

[20151004]表中最大分区数.txt的相关文章

[20130803]12C在表中使用sequence.txt

[20130803]12C在表中使用sequence.txt 记得以前学习数据库的时候,第1个接触的数据库是informix,里面可以在表上定义顺序号,这样在插入时无需指定,保证唯一.(也许记忆有错,毕竟很久没使用它了).oracle 12c开始支持这种特性,我的感觉这些主要为了别的数据库移植到oracle上来. 做一个测试看看: SQL> @ver BANNER                                                                   

Excel2010工作表中如何导入txt文件

  1.打开Excel2010,点击"数据"选项卡,然后在最左边的"获取外部数据"菜单中选择"自文本"选项,在"导入文本文件"窗口中选择需要导入的文件. 2.打开"文本导入向导-步骤之1(共3步)"对话框中并选择"分隔符号"选项.点击"下一步". 3.打开"文本导入向导-步骤之2"对话框,并添加分列线,点击"下一步"按钮. 4.

Excel2010工作表中如何导入.txt文件

  通常在使用Excel工作表的时候,我们会把一些文件导入到Excel表格当中,但是许多文本文件字符不规则,不好排列,导入到Excel表格当中看起来十分混乱,这时候我们该如何是好呢? 操作步骤 1.打开Excel2010,点击"数据"选项卡,然后在最左边的"获取外部数据"菜单中选择"自文本"选项. 2.在"导入文本文件"窗口中选择需要导入的文件.按"导入"按钮. 3.打开"文本导入向导-步骤之1(

Oracle表中的最大分区数

表中可以允许的最大分区数是多少,以前并没有太在意过.如果不查文档,有没有快速的方法来得到结果呢. 当时手工是11.2的环境,于是首先想到了INTERVAL分区,这样只需要建立一个INTERVAL为1的分区表,并不停的插入数据,Oracle会自动扩展分区,只到分区上限Oracle会报错. 但是发现这种方法不但耗时很长,而且存在bug,Oracle频繁通过递归调用来创建分区,很快就会导致系统内存耗尽,6G的内存几乎都被共享池占用,系统出现ORA-4031错误.而这时仅仅建立了不到10000个分区.

利用groovy把表中数据导出成txt或csv

胶水语言就是胶水,写起也挺快的.这个脚本主要是从数据库中把表中的数据导出来生成文件.而不用每次都打开数据库编辑器去手工收集.然后结合强大的脚本(shell,bat)等基本就可以实现定时生成最新数据文本了. 目前这个groovy脚本只要输入sql语句,便会自动去反射表中的字段和类型.脚本名称:export.groovy import groovy.sql.Sql; try { if(this.args.size()<1) {     println "格式错误!请参照下面的正确格式"

[20130901]12C在表中使用sequence(补充).txt

[20130901]12C在表中使用sequence(补充).txt 对以前写的内容做一些补充. SQL> @ver BANNER                                                                               CON_ID-------------------------------------------------------------------------------- ----------Oracle Da

如何去除数据表中的重复数据

通常情况下,一个我们在做一个产品的时候,一开始可能由于设计考虑不周或者程序写的不够严谨,某个字段上的值产生重复了,但是又必须去掉,这个时候就稍微麻烦了一点,直接加一个UNIQUE KEY肯定是不行了,因为会报错. 现在,我们来采用一种变通的办法,不过可能会丢失一些数据 :) 在这里,我们设定一个表,其结构如下: mysql> desc `user`;+-------+------------------+------+-----+---------+----------------+| Fiel

如何向MySQL数据库的表中录入数据

当你建好了数据库及表时,你首先想到的就是向数据库的表中输入数据.这就牵涉到如何向数据库增加数据.下面我们就来探讨一下这个问题: 1.一般我们常用的方法是insert语句(这里假定各位的版本都不是很低).她有以下几种形式: insert into tablename values(value1,value2,...) insert into tablename(fieldname1,fieldname2,...) values(value1,value2,...) insert into tabl

如何用winhex在MFT表中添加记录被文件系统识别?

问题描述 如何用winhex在MFT表中添加记录被文件系统识别? 5C 如何用winhex在MFT表中添加记录被文件系统识别? 步骤如下: 1 我先在根目录下新建一个很小的TXT文件 例如a.txt 里面有内容123456789 2 用winhex找到啊a.txt在MFT表中的记录 复制十六进制数据 3 将复制的内容在MFT表中新建一个记录 修改其中的文件记录参考号+1 文件名 完成 但是 实际上没有被识别到 而且附加操作 新建一个文件 发现我刚刚粘贴的文件倍覆盖了 我以为是不是ntfs还有别的