分享一个简单回滚seq的过程

xiaoxiao1984 xiaoxiao1984 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

CREATE OR REPLACE PROCEDURE reset_sequence(v_seq_name_in IN VARCHAR2,
v_init_value_in IN NUMBER) IS
v_seq_curr_value NUMBER;
v_increment_by NUMBER;
v_min_value NUMBER;
v_last_value NUMBER;
BEGIN
-- get seq min value and increment
SELECT min_value, increment_by
INTO v_min_value, v_increment_by
FROM user_sequences
WHERE sequence_name = upper(v_seq_name_in);
-- get seq current value
EXECUTE IMMEDIATE 'select ' || v_seq_name_in || '.nextval from dual'
INTO v_seq_curr_value;
-- rollback seq
IF (v_init_value_in > v_min_value)
THEN
v_seq_curr_value := v_init_value_in - v_seq_curr_value - 1;
ELSIF (v_init_value_in = v_min_value)
THEN
v_seq_curr_value := v_init_value_in - v_seq_curr_value;
ELSE
v_seq_curr_value := v_min_value - v_seq_curr_value;
END IF;
EXECUTE IMMEDIATE 'alter sequence ' || v_seq_name_in || ' increment by ' ||
v_seq_curr_value || ' nocache';
EXECUTE IMMEDIATE 'select ' || v_seq_name_in || '.nextval from dual'
INTO v_seq_curr_value;
-- check if it is less than min value
LOOP
EXECUTE IMMEDIATE 'select ' || v_seq_name_in || '.currval from dual'
INTO v_last_value;
EXIT WHEN v_last_value >= v_init_value_in - v_increment_by;
EXECUTE IMMEDIATE 'select ' || v_seq_name_in || '.nextval from dual'
INTO v_last_value;
END LOOP;
EXECUTE IMMEDIATE 'alter sequence ' || v_seq_name_in || ' increment by ' ||
v_increment_by || ' cache 20';
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END reset_sequence;
...全文

相关推荐

一次简单的Oracle恢复Case实战记录

发现问题 某网友的数据库由于坏盘了,并且存储掉电,导致数据库无法open了。单看其数据库alert log的错误来看,是非常之简单的,如下: Fri Oct 26 10:33:53 2018 Recovery of Online Redo Log: Thread 1 Group 3 Seq 39 Reading mem 0 Mem# 0: /fs/fs/oradata/orcl/redo03.log Block recovery stopped at EOT rba 39.77.16 Block recovery completed at rba 39.77.16, scn 0.100204

weixin_38672800

Oracle技术分享 数据库序列间断场景

说明:值从620变更为710,所以数据库一旦crash,内存的数据就丢失.说明:此处还能看到orclcdb进程,是因为GI自动开启数据库进程.a、Arollback occurs 应用出现回滚,但序列不会回滚。结论:表emp序列ID出现间断。:模拟数据库序列间断场景.结果:序列ID出现间断.

cqszpx

oracle常用命令-一完整的电子商务网案例

电子商务网站案例下载:(数据库脚本,java调用示例,.net(c#)调用示例 说明:一个电子商务网站的oracle数据库完整设计,包括: Oracle常用命令1(数据库、表空间) Oracle常用命令2(用户、角色管理) Oracle常用命令3(DDL、DML、TCL、DCL、序列) Oracle常用命令4(表分区) Oracle常用命令5(同义词、视图、索引) Oracle常用命令6(PL/SQL) Oracle常用命令7(游标) Oracle常用命令8(过程) Oracle常用命令9(函数) Oracle常用命令10(程序包) Oracle常用命令11(触发器) Oracle常用命令12(导入:imp、导出:exp) Oracle常用命令13(数据库的启动、关闭) Oracle常用命令14(.net / java代码调用(sql代码、程序包过程))

liuqiongliu

基于混合储能协调控制的三相并网逆变系统设计【附说明文档】

内容概要:本文针对含分布式电源的配电网在故障情况下的恢复问题,提出了一种将网络重构、孤岛划分与检修进度统一考虑的多时段优化模型。该模型以最小化网损和甩负荷惩罚为目标,综合考虑节点功率守恒、支路潮流、电压与容量限制、二阶锥松弛以及拓扑连通性等约束条件,利用混合整数二阶锥规划方法进行求解。通过引入虚拟流变量和大常数松弛技术,有效描述了供电片区的连通性与支路开断状态,避免了传统模型中因设置节点归属变量导致的变量规模膨胀问题。模型在IEEE33节点系统上实现了故障后多时段的重构与孤岛运行方案优化,并通过仿真展示了各时段的网络拓扑、电压分布和负荷恢复情况。文章还对模型的建模细节进行了深入评述,指出了当前实现中存在的简化与不足,如无功处理不完善、电压约束未区分失电节点、缺乏储能与开关操作成本等,并提出了相应的改进建议,为后续研究提供了方向。; 适合人群:电力系统自动化、智能电网及相关专业的研究生、科研人员及从事配电网故障恢复、分布式电源集成、优化调度等领域的工程技术人员。; 使用场景及目标:①用于研究含高比例分布式电源的主动配电网在故障条件下的韧性提升策略;②为实现网络重构与孤岛划分的协同优化提供建模参考;③适用于学术论文复现、课题研究建模与电力系统仿真教学;④目标是掌握基于二阶锥松弛与虚拟流的多时段混合整数规划方法在配电网恢复中的应用。; 阅读建议:建议结合文中引用的参考文献(如汤一达等、陈文兴等的研究)对比阅读,深入理解模型的理论渊源;在复现过程中重点关注虚拟流连通性、大常数松弛与二阶锥转换的实现机制;建议在现有模型基础上逐步加入负荷分级、储能动态、分布式电源出力调控等模块,以构建更贴近实际的完整故障恢复系统。

梦想科研社_研学

国央企创新负责人如何利用平台实现创新资源的精准配置与高效联动?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论 11
收藏 已收藏
分享
返回顶部
xiaoxiao1984
Oracle 17,133 成员 55,258 内容