ERP(TIPTOP)用户自行解锁操作说明(p_kill)

2024-02-21 19:40

本文主要是介绍ERP(TIPTOP)用户自行解锁操作说明(p_kill),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ERP(TIPTOP)用户自行解锁操作说明(试运行)

 

#操作截图①

 

 

--------------------------------------------------------------------线-----------------

 

#操作截图

 

--------------------------------------------------------------------线-----------------

 

 

# 说明

 

   1.操作说明①:用户输入程序编号p_kill,自动打开界面,自动带出当前登录ERP用户。

(备注: 此处[ERP用户编号]已做输入限制,ERP用户为CLASS-ACLASS-A1的用户可以输入其它用户进行解锁,反之只能对自己用户产生锁表进行解锁)

 

   2.操作说明②:用户输入完成之后,点击确定,然后再点击右边解除锁表按钮,作业会根据当前用户编号,进入数据库查找到此用户造成的表死锁,找到后并将其解除,由于公司数据库为oracle rac此过程会等上1~2分钟。

 

   3.解锁成功之后会弹出以下提示:

         

   4.此作业已经做好了管控,可以给各个基地的user提供执行权限(试运行暂时先开几个用户权限),方便在我们休假的时候,用户锁表,自行运行此作业进行解锁。

 

 

 

--------------------------------------------------------------------线-----------------

 

####(程序原理说明)

  1.新建作业 p_kill ()

  2oralce 数据库建立functionprocedure

Procedure:在oracle system用户下建立procedurexxxx,并将procedure的执行权限赋给其它营运中心(即其它oracle用户)

授权语句如下:

grant excute on xxxx(procedurename) to xx(user)

Function:在function里面调用procedure(因为GP版本太低,直接调用存储过程导致编译不通过!),记得每个营运中心都建立这个一模一样的function

  3.本作业主要调用的function和存储过程如下

fuction :

CREATE OR REPLACE FUNCTION killtable(var_name1 VARCHAR2 )
returnVARCHAR2  ISvar_log VARCHAR2(200);
beginlocktablekill(var_name =>var_name1,var_result => var_log);RETURN(var_log);
end ;

--------------------------------------------------------------------线-----------------

 

procedure:CREATEOR REPLACE PROCEDURE LOCKTABLEKILL(VAR_NAME  IN VARCHAR2,VAR_RESULTOUT VARCHAR2) ISVAR_SID    VARCHAR2(20);VAR_SERIALVARCHAR2(20);VAR_SQL    VARCHAR2(2000);VAR_SQL2   VARCHAR2(2000);VAR_USER   VARCHAR2(20);VAR_END    VARCHAR2(50);-------------------------------------------------------------------------description :  erp 用户调用procedure 给用户解锁---date&author : add by kk 2014-10-23---environment: oracle 10g  RAC----------------------------------------------------------------------
BEGINVAR_USER :=VAR_NAME;VAR_SQL  := 'select a.sid,a.serial#  FROM                                                                                                                                     
(SELECTSUBSTR(all_objects.owner||''.''||object_name,1,16) LockedOBJECT                                                            
,SUBSTR(os_user_name,1,10)TiptopUser                                                                                           
,gv$locked_object.processProcID                                                                                                
,SUBSTR(terminal,1,7)Terminal                                                                                                  
,gv$session.sid,gv$session.serial#                                                                                                 
,gv$session.machine                                                                                                                
,gv$session.INST_ID                                                                                                                FROMgv$locked_object,all_objects,gv$session                                                                                     WHEREgv$locked_object.object_id=all_objects.object_id                                                                             ANDgv$locked_object.SESSION_ID=gv$session.SID
) awhere   a.TiptopUser = ''' || VAR_USER ||'''
ANDrownum =1 ';--------------------------------------------------------------------------------------------  --上面这段sql只针对oracle 10g RAC, 如果是非RAC就简单多了,sql重新写下.
--这里只取了一行,当然你如果想把用户所有的锁表都罗列然后解锁 ,--可以考虑使用cursor, 然后再loop,循环使用alter命令干掉进程 ;--------------------------------------------------------------------------------------------DBMS_OUTPUT.PUT_LINE(VAR_SQL);EXECUTE IMMEDIATE VAR_SQLINTO VAR_SID, VAR_SERIAL;IF VAR_SID IS NOT NULL AND VAR_SERIAL IS NOTNULL THENSELECT VAR_SID || ',' || VAR_SERIAL INTOVAR_END FROM DUAL;VAR_RESULT := '死锁用户存在';DBMS_OUTPUT.PUT_LINE(VAR_END);VAR_SQL2 := 'alter system killsession ''' || VAR_END ||''' immediate ';DBMS_OUTPUT.PUT_LINE(VAR_SQL2);EXECUTE IMMEDIATE VAR_SQL2;VAR_RESULT := '死锁用户存在,且已经解锁!请重新运行ERP作业!';END IF;
EXCEPTIONWHEN NO_DATA_FOUND THENVAR_RESULT := '不存在死锁的用户';
END;

 

___________________________________________________________________

--------界面粗糙了一点,内容也单调了一些,功能还不够强大,后期继续改进------

---------各位大神多支招,感谢!!!-------------------------------------------------------------

------------------------------------------------edit by  kk  2014-10-23------------------

------------------------------------------------QQ309200966--------------------------------

___________________________________________________________________

这篇关于ERP(TIPTOP)用户自行解锁操作说明(p_kill)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/732859

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc