
初始化参数: 默认
ini参数: 默认
间隔分区表执行merge into语句报错,信息如下:

DROP TABLE IF EXISTS TAB_P001;DROP TABLE IF EXISTS T1;CREATE TABLE T1 AS select USERNAME,USER_ID,CREATED from dba_users;CREATE TABLE TAB_P001(C1 VARCHAR2(96),C2 TIMESTAMP(6) NOT NULL,C3 VARCHAR2(32) NOT NULL, PRIMARY KEY(C3))PARTITION BY RANGE(C2)INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))(PARTITION "P_202201" VALUES LESS THAN( to_date('2022-02-01 00:00:00','yyyy-mm-dd hh24:mi:ss') ),PARTITION "P_202202" VALUES LESS THAN( to_date('2022-03-01 00:00:00','yyyy-mm-dd hh24:mi:ss')));MERGE INTO TAB_P001 a USING t1 bon (a.C3=b.user_id)WHEN MATCHED THENUPDATE SET a.C1='UPDATED'WHEN NOT MATCHED THENINSERT (C1,C2,C3) values(b.username,b.created,b.user_id);COMMIT;
DM中测试情况,默认会报错:

Oracle中测试正常:

该参数为动态、会话级参数,默认为0控制分区表的操作优化0:不优化;1:打开分区表DELETE优化;2:控制范围分区表创建的优化处理,转换为数据流方式实现;4:允许语句块中的间隔分区表自动扩展;8:开启对TRUNCATE分区表的优化处理;16:完全刷新时删除老数据使用DELETE方式。支持使用上述有效值的组合值,如7表示同时进行1、2、4的优化
---修改DEL_HP_OPT_FLAG参数值为4SP_SET_PARA_VALUE(1,'DEL_HP_OPT_FLAG',4);---执行merge into语句MERGE INTO TAB_P001 a USING t1 bon (a.C3=b.user_id)WHEN MATCHED THENUPDATE SET a.C1='UPDATED'WHEN NOT MATCHED THENINSERT (C1,C2,C3) values(b.username,b.created,b.user_id);

---设置DEL_HP_OPT_FLAG参数值为0SP_SET_PARA_VALUE(1,'DEL_HP_OPT_FLAG',0);---创建存储过程并测试create or replace procedure p_testasbegininsert into TAB_P001 values('AAAAA',to_date('2023-3-30','yyyy-mm-dd'),'66666')end;---执行存储过程call p_test();---设置DEL_HP_OPT_FLAG参数值为4SP_SET_PARA_VALUE(1,'DEL_HP_OPT_FLAG',4);---执行存储过程call p_test();

DEL_HP_OPT_FLAG参数属于动态、会话级参数,可直接在线修改生效,命令如下:
SP_SET_PARA_VALUE(1,'DEL_HP_OPT_FLAG',4);
以上为本期分享,希望能带给大家帮助。
点击了解相关分享:
【干货攻略】达梦数据库通过JDBC批量获取clob数据较慢的问题
【开班通知】DM8-DCP线上培训班招生中(2023-12月)
【开班通知】DM8-DCA线上培训班招生中(2023年12月20日开班)

文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




