【Oracle】ORA-14758: Last partition in the range section cannot be dropped

本文详细介绍了在Oracle数据库中遇到ORA-14758错误的场景,即无法删除间隔分区的最高分区。通过分析错误原因,提出了解决方案,包括如何将自动分区调整为普通范围分区,以便删除所需分区。此外,还展示了如何在需要时将普通分区重新设置为自动分区。
摘要由CSDN通过智能技术生成

目录

1 软件环境

2 问题模拟

2.1 新建分区表

2.2 初始化数据

2.3 查看分区信息

2.4 删除分区P1

3 问题分析与解决

3.1 ORA ERR分析

3.2 问题解决


最近做数据库上线脚本的评审时,开发人员遇到了ORA-14758错误,本篇就针对这一错误进行分析,并给出解决方案。

1 软件环境

本实验的演示环境如下:

SQL> SELECT * from product_component_version;

PRODUCT VERSION STATUS
---------------------------------------- ---------- --------------------
NLSRTL 11.2.0.4.0 Production
Oracle Database 11g Enterprise Edition 11.2.0.4.0 64bit Production
PL/SQL 11.2.0.4.0 Production
TNS for Linux: 11.2.0.4.0 Production

2 问题模拟

按照如下步骤,创建数据库脚本,模拟ORA-14758错误。

2.1 新建分区表

SQL> create table t_interval
2 (
3 id number,
4 name varchar2(20),
5 cdate date default sysdate
6 )
7 partition by range(cdate)interval(numtodsinterval(1,'day'))
8 (
9 partition p1 values less than(to_date('2019-11-19','yyyy-mm-dd'))
10 );
Table created.

2.2 初始化数据

SQL> begin
2 for i in 1..10 loop
3 insert into t_interval values(i,'Test'||i,sysdate-2+i);
4 end loop;
5 commit;
6 end;
7 /
PL/SQL procedure successfully completed.

2.3 查看分区信息

SQL> col table_name for a30
SQL> select table_name,partition_name,partition_position from user_tab_partitions
2 where table_name='T_INTERVAL';
TABLE_NAME PARTITION_NAME PARTITION_POSITION
------------------------------ ------------------------------ ------------------
T_INTERVAL P1 1
T_INTERVAL SYS_P41 2
T_INTERVAL SYS_P42 3
T_INTERVAL SYS_P43 4
T_INTERVAL SYS_P44 5
T_INTERVAL SYS_P45 6
T_INTERVAL SYS_P46 7
T_INTERVAL S
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值