暂无图片
oracle表没有date类型的字段可以用在线重定义做range分区吗
我来答
分享
暂无图片 匿名用户
oracle表没有date类型的字段可以用在线重定义做range分区吗
暂无图片 10M

oracle表没有date类型的字段可以用在线重定义做range分区吗

数据库有一张表80个G了没做分区,本来打算用重定义转成分区表,看了下字段类型,所有字段类型都是varchar2的,比如createtime、updatetime这些字段的类型都是varchar2的,请问可以用在线重定义转吗

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
DarkAthena

这其实是两个问题,
1.varchar2字段是可以用于定义range分区的
2.在线重定义与你用什么东西分区没有关系,只要老表有主键(没有主键用ROWID也行,不过会麻烦一点),新定义的表能create出来,一般就能转

测试如下

--原表 CREATE TABLE table_o (ID NUMBER PRIMARY KEY, TIME varchar2(20)) ; --插入测试数据 insert into table_o values(123,'2021-01-03 12:00:00'); commit; --新表,用varchar2字段做range分区 CREATE TABLE table_n (ID NUMBER PRIMARY KEY, TIME varchar2(20)) PARTITION BY RANGE (TIME) (PARTITION P1 VALUES LESS THAN ('2021-01-01 00:00:00'), PARTITION P2 VALUES LESS THAN ('2021-02-01 00:00:00'), PARTITION P3 VALUES LESS THAN ('2021-03-01 00:00:00'), PARTITION P4 VALUES LESS THAN (MAXVALUE)); --校验是否可以重定义 begin DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'table_o', DBMS_REDEFINITION.CONS_USE_PK); end; / --开始重定义 begin DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'table_o', 'table_n'); end; / --模拟增量数据产生 insert into table_o values(456,'2021-02-03 12:00:00'); commit; --同步增量数据 begin dbms_redefinition.sync_interim_table(USER, 'table_o', 'table_n'); end; / --完成重定义 begin DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'table_o', 'table_n'); end; /
复制
暂无图片 评论
暂无图片 有用 1
打赏 0
弱小可怜又无助
升级问题到: 潜在风险
暂无图片 评论
暂无图片 有用 0
打赏 0
cqiwen

其实自己实验下就知道答案了。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
oracle 11g RAC crsctl status res -t 显示异常质询
回答 5
虽然和你的case不是完全匹配,但可以参考看看一下这个文章:ID1086563.1,估计也是一个bug之类的东西。http://blog.sina.com.cn/s/blog538285a701019
expdp导出全库才600多M,导入连30G都放不下?
回答 2
我不确定你说的30GB是磁盘空间,还是给的数据库表空间的大小导出的时候是否指定了可以使用数据压缩和指定编码方式,如果这样的话导出的话数据是会比导出的大了;另外你看看对应的用户表所在的表空间是否给够了导
oracle数据库告警日志位置为什么从ORACLE_BASE下变到了ORACLE_HOME下
回答 3
showparameter backgrounddumpdest其实数据库参数可以从alert日志中获取,上次启动时会把参数打印出来,通过pfile启动后,直接createspfilefro
表空间碎片清理
回答 1
表空间清理:删除对象(清空回收站)MOVE对象到其他表空间整理对象碎片(move或者shrink)
Oracle 批量执行SQL 编译存储过程 ,怎么操作?
回答 2
已采纳
可以用一段PLSQLBLOCK实现,例如下面就是编译当前用户所属的各个OBJECT(PACKAGE/TRIGGER/FUNCTION/TYPE等):declarelssqlvarchar2(100);
Oracle 12.1升级12.2求助
回答 3
已采纳
看看这个文件的日志D:\Oracle12C\cfgtoollogs\dbua\upgrade20240219060214PM\HWYUN/dirpreUpgradecatConcatcon43496.
Oracle 删除了表空间的一个数据文件,现在物理文件删了,但是数据库里的记录没删掉,怎么解决?
回答 4
1、数据库启动到mount,offline数据文件SQL>alterdatabasedatafile'/u01/app/oracle/oradata/orcl11g/test01.dbf'off
AWR分析报告问题求助:undefined
回答 1
这个数据库复杂很低,暂时可以不用管。可以关注TOPSQL,了解数据库参数规范设置方面的问题。
简要介绍数据库表的约束和主要类型、作用
回答 4
已采纳
主要四种:(1)实体完整性约束(每一行反应不同的实体)通过索引,唯一约束。主键约束或标识属性来体现;(2)域完整性约束(指给定列的输入有效性)通过限制数据类型,检查约束,输入格式,外键约束,默认值,非
有什么方式可以查询正在执行的ORACLE sql语句?
回答 2
根据SID,获取正在执行的sql,参考示例:DECLARECURSORcursql(ppresqladdrVARCHAR2)ISSELECTt.sqltextFROMv$sqltextwithnewl