当前位置:  数据库>oracle

Oracle 常见初始化参数

    来源: 互联网  发布时间:2017-06-19

    本文导语: 间隔分区是范围分区的一个拓展,当插入的数据超过了现有的所有分区时,数据库会按照指定的间隔自动创建分区。Oracle支持创建单一的间隔分区表也可以创建interval-range、interval-hash和interval-list三种组合分区表。 使用间隔分区...

间隔分区是范围分区的一个拓展,当插入的数据超过了现有的所有分区时,数据库会按照指定的间隔自动创建分区。Oracle支持创建单一的间隔分区表也可以创建interval-range、interval-hash和interval-list三种组合分区表。

使用间隔分区的场景:

1.使用间隔分区最大的好处就是不用再提前手工的创建分区,只要后续创建的分区的分区间隔是统一的,就可以考虑使用间隔分区。并且,在后续创建的分区中还能通过store in 选项以循环复用的方式来将分区存放到不同的表空间里。

2.如果某张表是范围分区,则很容易的将该表转换成间隔分区表,例如sh用户下的sales表,可通过如下语句来修改:

SH@ORA11GR2 > ALTER TABLE sales SET INTERVAL (NUMTOYMINTERVAL(1,'MONTH'));
Table altered.


注意,如果范围分区存在最大分区MAXVALUE时,无法通过命令直接改为间隔分区。

例如,先创建表interval_test


create table interval_test (id number, name varchar2(20))

partition by range(id)

(partition p1 values less than (100),

partition p2 values less than (200),

partition p3 values less than(MAXVALUE));

接着尝试将该表修改为间隔分区表


SH@ORA11GR2 >  alter table interval_test set interval (200);

 alter table interval_test set interval (200)

*

ERROR at line 1:

ORA-14759: SET INTERVAL is not legal on this table.

使用oerr查看报错信息


[oracle@oracle11g ~]$ oerr  ora 14759

14759,  00000, "SET INTERVAL is not legal on this table."

// *Cause: SET INTERVAL clause was specified. ALTER TABLE SET INTERVAL is

//        only legal on a range partitioned table with a single partitioning

//        column. Additionally, this table cannot have a maxvalue partition

//        and cannot be the parent table for any reference partitioned tables.

// *Action: Use SET INTERVAL only on a valid table.


3.如果某张表为间隔分区表,则无法手工的对该表手动新增分区。所以如果决定将某张表修改为间隔分区,要考虑修改相关的应用程序或者存储过程。


SH@ORA11GR2 > alter table interval_sales add partition p4 values less than (to_date('20150101','yyyymmdd'));

alter table interval_sales add partition p4 values less than (to_date('20150101','yyyymmdd'))

            *

ERROR at line 1:

ORA-14760: ADD PARTITION is not permitted on Interval partitioned objects

使用间隔分区的限制:

1.只能指定一个分区键,并且键值类型只能为number或date。

2.间隔分区不支持索引组织表。

3.不能在间隔分区上创建域索引(domain index)


管理间隔分区:

1.创建间隔分区:


CREATE TABLE interval_sales

    ( prod_id        NUMBER(6)

    , cust_id        NUMBER

    , time_id        DATE

    , channel_id    CHAR(1)

    , promo_id      NUMBER(6)

    , quantity_sold  NUMBER(3)

    , amount_sold    NUMBER(10,2)

    )

  PARTITION BY RANGE (time_id)

  INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))

  STORE IN (interv1, interv2)

    ( PARTITION p0 VALUES LESS THAN (TO_DATE('1-1-2008', 'DD-MM-YYYY')),

      PARTITION p1 VALUES LESS THAN (TO_DATE('1-1-2009', 'DD-MM-YYYY')),

      PARTITION p2 VALUES LESS THAN (TO_DATE('1-7-2009', 'DD-MM-YYYY')),

      PARTITION p3 VALUES LESS THAN (TO_DATE('1-1-2010', 'DD-MM-YYYY')) );

2.禁用间隔分区


SH@ORA11GR2 > alter table interval_sales set interval ();

Table altered.

3.修改间隔分区interval值


SH@ORA11GR2 > alter table interval_sales set interval (NUMTOYMINTERVAL(1,'YEAR'));

Table altered.

4.删除间隔分区


SH@ORA11GR2 >  ALTER TABLE interval_sales  DROP PARTITION FOR(TO_DATE(' 2008-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));

Table altered.

5.Merge间隔分区

首先插入两条数据,让系统自动生成两个间隔分区


SH@ORA11GR2 > insert into interval_sales values (1,2,to_date('20150101','yyyymmdd'),3,3,3,3);

1 row created.

SH@ORA11GR2 > commit;

Commit complete.

SH@ORA11GR2 >  insert into interval_sales values (1,2,to_date('20150201','yyyymmdd'),3,3,3,3);

1 row created.

SH@ORA11GR2 > commit;

接着,执行命令,合并两个分区

SH@ORA11GR2 >  alter table interval_sales merge partitions for ( to_date('20150101','yyyymmdd')) , for(to_date('20150201','yyyymmdd'));
  Table altered.

注意,合并的两个分区需要前后相连,否则报错,无法合并!


    
 
 

您可能感兴趣的文章:

  • RedHat AS 4 安装oracle9i的时候,执行Disk1下的runInstaller后提示正在初始化虚拟机,请等待后就再无反应
  • PHP连接Oracle错误ORA-24324服务句柄未初始化的解决方法
  • Oracle Siebel Option Pack for IE ActiveX控件内存初始化漏洞
  • oracle初始化参数设置
  • Oracle数据库中系统初始化参数分析
  • 最常见的问题:哪里有Oracle7.3 for sco5.0.5的下载?
  • Oracle 10G安装中一些常见问题解决
  • Oracle插入日期数据常见的2个问题和解决方法
  • Oracle Index 的三个常见问题
  • ORACLE数据库应用开发常见问题及排除
  • Linux下Oracle常见安装错误总结及参考案例
  • Oracle常见错误诊断
  • oracle代码的常见错误汇总
  • Windows Oracle常见服务介绍
  • ORACLE常见错误代码的分析与解决(一)
  • 常见数据库系统比较 Oracle数据库
  • ORACLE常见错误代码的分析与解决二
  • Oracle数据库常见技术问题解答篇
  • ORACLE常见错误代码的分析与解决(二)
  • Oracle数据库TNS常见错误的解决方法汇总
  • ORACLE常见错误代码的分析与解决三
  • ORACLE常见错误代码的分析与解决(三)
  • Oracle常见错误代码的分析与解决
  • JDBC连接Oracle数据库常见问题及解决方法
  • oracle 常见等待事件及处理方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 深入解析Oracle参数及参数文件
  • Oracle数据库访问参数文件的顺序
  • Oracle初始参数与当前用户
  • Oracle中serveroutput参数一次设置永久保存方法
  • Oracle的spfile参数文件
  • Linux Oracle RAC内核参数
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • Sun Solaris运行Oracle数据库所需的内核参数
  • Linux下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结果
  • Oracle Streams存储过程中的一些参数
  • 快速修复Oracle参数文件的另类方法
  • jps连接oracle9i数据库出现内部参数错
  • oracle 参数文件audit_trail的认识
  • 在linux下安装oracle时,使用sysctl检查系统参数时出现许多error信息,不知道怎么回事,望高手指点!
  • 每日Oracle:配置日志模式的相关参数log_archive_des
  • Oracle 子程序参数模式,IN,OUT,NOCOPY
  • Oracle 使用set修改数据库运行参数
  • oracle impdp network_link参数使用介绍
  • Oracle 启动例程 STARTUP参数说明
  • Oracle表的分类以及相关参数的详解
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3