阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ORA-30078报错的两种解决方案

491次阅读
没有评论

共计 5622 个字符,预计需要花费 15 分钟才能阅读完成。

最近在尝试创建分区表时遇到了 ORA-30078 报错,提示“ORA-30078: 分区界限必须是 TIME/TIMESTAMP WITH TIME ZONE 文字”,很纳闷儿为什么会报错。

首先我创建一个测试表 hoegh1,其中包含一个 date 类型的时间字段,并以该字段做范围分区,创建成功;

紧接着,尝试创建测试表 hoegh2,其中包含一个 timestamp 类型的时间字段,并以该字段做范围分区,创建失败,遇到了 ORA-30078 报错。

过程如下:

  1. SQL>
  2. SQL> select * from v$version;
  3. BANNER
  4. —————————————————————-
  5. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 64bi
  6. PL/SQL Release 10.2.0.4.0 Production
  7. CORE 10.2.0.4.0 Production
  8. TNS for 64bit Windows: Version 10.2.0.4.0 Production
  9. NLSRTL Version 10.2.0.4.0 Production
  10. SQL>
  11. SQL>
  12. SQL> create table hoegh1
  13.   2 (
  14.   3 id NUMBER,
  15.   4 time date
  16.   5 )
  17.   6 partition by range(time)
  18.   7 (
  19.   8 partition p_201505 values less than(to_date(‘20150601’,‘yyyymmdd’)),
  20.   9 partition p_201506 values less than(to_date(‘20150701’,‘yyyymmdd’)),
  21.  10 partition p_201507 values less than(to_date(‘20150801’,‘yyyymmdd’)),
  22.  11 partition p_201508 values less than(to_date(‘20150901’,‘yyyymmdd’)),
  23.  12 partition p_201509 values less than(to_date(‘20151001’,‘yyyymmdd’)),
  24.  13 partition p_201510 values less than(to_date(‘20151101’,‘yyyymmdd’)),
  25.  14 partition p_201511 values less than(to_date(‘20151201’,‘yyyymmdd’)),
  26.  15 partition p_201512 values less than(to_date(‘20160101’,‘yyyymmdd’)),
  27.  16 partition p_201601 values less than(to_date(‘20160201’,‘yyyymmdd’)),
  28.  17 partition p_201602 values less than(to_date(‘20160301’,‘yyyymmdd’)),
  29.  18 partition p_201603 values less than(to_date(‘20160401’,‘yyyymmdd’)),
  30.  19 partition p_201604 values less than(to_date(‘20160501’,‘yyyymmdd’)),
  31.  20 partition p_201605 values less than(to_date(‘20160601’,‘yyyymmdd’)),
  32.  21 partition p_201606 values less than(to_date(‘20160701’,‘yyyymmdd’)),
  33.  22 partition p_201607 values less than(to_date(‘20160801’,‘yyyymmdd’))
  34.  23 );
  35. 表已创建。
  36. SQL>
  37. SQL>
  38. SQL> create table hoegh2
  39.   2 (
  40.   3 id NUMBER,
  41.   4 TIMESTAMP TIMESTAMP(6)
  42.   5 )
  43.   6 partition by range(TIMESTAMP)
  44.   7 (
  45.   8 partition p_201505 values less than(to_timestamp(‘20150601’,‘yyyymmdd’)),
  46.   9 partition p_201506 values less than(to_timestamp(‘20150701’,‘yyyymmdd’)),
  47.  10 partition p_201507 values less than(to_timestamp(‘20150801’,‘yyyymmdd’)),
  48.  11 partition p_201508 values less than(to_timestamp(‘20150901’,‘yyyymmdd’)),
  49.  12 partition p_201509 values less than(to_timestamp(‘20151001’,‘yyyymmdd’)),
  50.  13 partition p_201510 values less than(to_timestamp(‘20151101’,‘yyyymmdd’)),
  51.  14 partition p_201511 values less than(to_timestamp(‘20151201’,‘yyyymmdd’)),
  52.  15 partition p_201512 values less than(to_timestamp(‘20160101’,‘yyyymmdd’)),
  53.  16 partition p_201601 values less than(to_timestamp(‘20160201’,‘yyyymmdd’)),
  54.  17 partition p_201602 values less than(to_timestamp(‘20160301’,‘yyyymmdd’)),
  55.  18 partition p_201603 values less than(to_timestamp(‘20160401’,‘yyyymmdd’)),
  56.  19 partition p_201604 values less than(to_timestamp(‘20160501’,‘yyyymmdd’)),
  57.  20 partition p_201605 values less than(to_timestamp(‘20160601’,‘yyyymmdd’)),
  58.  21 partition p_201606 values less than(to_timestamp(‘20160701’,‘yyyymmdd’)),
  59.  22 partition p_201607 values less than(to_timestamp(‘20160801’,‘yyyymmdd’))
  60.  23 );
  61.   partition p_201505 values less than(to_timestamp(‘20150601’,‘yyyymmdd’)),
  62.                                       *
  63. 第 8 行出现错误:
  64. ORA30078: 分区界限必须是 TIME/TIMESTAMP WITH TIME ZONE 文字
  65. SQL>

    鉴于 timestamp 类型的时间精度比 date 类型的要高,因此不能修改列的类型。那怎么办呢?在这儿列出两种解决方案。

一、PARTITION value 类型更改为 to_date(‘20150601′,’yyyymmdd’)

  1. SQL>
  2. SQL> create table hoegh2
  3.   2 (
  4.   3 id NUMBER,
  5.   4 TIMESTAMP TIMESTAMP(6)
  6.   5 )
  7.   6 partition by range(TIMESTAMP)
  8.   7 (
  9.   8 partition p_201505 values less than(to_date(‘20150601’,‘yyyymmdd’)),
  10.   9 partition p_201506 values less than(to_date(‘20150701’,‘yyyymmdd’)),
  11.  10 partition p_201507 values less than(to_date(‘20150801’,‘yyyymmdd’)),
  12.  11 partition p_201508 values less than(to_date(‘20150901’,‘yyyymmdd’)),
  13.  12 partition p_201509 values less than(to_date(‘20151001’,‘yyyymmdd’)),
  14.  13 partition p_201510 values less than(to_date(‘20151101’,‘yyyymmdd’)),
  15.  14 partition p_201511 values less than(to_date(‘20151201’,‘yyyymmdd’)),
  16.  15 partition p_201512 values less than(to_date(‘20160101’,‘yyyymmdd’)),
  17.  16 partition p_201601 values less than(to_date(‘20160201’,‘yyyymmdd’)),
  18.  17 partition p_201602 values less than(to_date(‘20160301’,‘yyyymmdd’)),
  19.  18 partition p_201603 values less than(to_date(‘20160401’,‘yyyymmdd’)),
  20.  19 partition p_201604 values less than(to_date(‘20160501’,‘yyyymmdd’)),
  21.  20 partition p_201605 values less than(to_date(‘20160601’,‘yyyymmdd’)),
  22.  21 partition p_201606 values less than(to_date(‘20160701’,‘yyyymmdd’)),
  23.  22 partition p_201607 values less than(to_date(‘20160801’,‘yyyymmdd’))
  24.  23 );
  25. 表已创建。
  26. SQL>

二、PARTITION value 类型更改 timestamp’2015-06-01 00:00:00.000000′

  1. SQL>
  2. SQL> drop table hoegh2 purge;
  3. 表已删除。
  4. SQL> create table hoegh2
  5.   2 (
  6.   3 id NUMBER,
  7.   4 TIMESTAMP TIMESTAMP(6)
  8.   5 )
  9.   6 partition by range(TIMESTAMP)
  10.   7 (
  11.   8 partition p_201505 values less than(timestamp‘2015-06-01 00:00:00.000000’),
  12.   9 partition p_201506 values less than(timestamp‘2015-07-01 00:00:00.000000’),
  13.  10 partition p_201507 values less than(timestamp‘2015-08-01 00:00:00.000000’),
  14.  11 partition p_201508 values less than(timestamp‘2015-09-01 00:00:00.000000’),
  15.  12 partition p_201509 values less than(timestamp‘2015-10-01 00:00:00.000000’),
  16.  13 partition p_201510 values less than(timestamp‘2015-11-01 00:00:00.000000’),
  17.  14 partition p_201511 values less than(timestamp‘2015-12-01 00:00:00.000000’),
  18.  15 partition p_201512 values less than(timestamp‘2016-01-01 00:00:00.000000’),
  19.  16 partition p_201601 values less than(timestamp‘2016-02-01 00:00:00.000000’),
  20.  17 partition p_201602 values less than(timestamp‘2016-03-01 00:00:00.000000’),
  21.  18 partition p_201603 values less than(timestamp‘2016-04-01 00:00:00.000000’),
  22.  19 partition p_201604 values less than(timestamp‘2016-05-01 00:00:00.000000’),
  23.  20 partition p_201605 values less than(timestamp‘2016-06-01 00:00:00.000000’),
  24.  21 partition p_201606 values less than(timestamp‘2016-07-01 00:00:00.000000’),
  25.  22 partition p_201607 values less than(timestamp‘2016-08-01 00:00:00.000000’)
  26.  23 );
  27. 表已创建。
  28. SQL>

虽然问题得到了顺利解决,但是为什么会报错还是没弄明白,如果有了解原理的朋友还望不吝赐教。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133123.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5622字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7800384
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...