- 浏览: 5160492 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
DBMS_LOCK授权
revoke execute on dbms_lock from apps;
grant execute on dbms_lock to apps;
将DBMS_LOCK包授权给USER:APPS.
相关操作:
-- create demo table
CREATE TABLE lock_test (
action VARCHAR2(10),
when TIMESTAMP(9));
GRANT insert ON lock_test TO public;
CREATE OR REPLACE PACKAGE lock_demo IS
v_lockname VARCHAR2(12) := 'control_lock';
v_lockhandle VARCHAR2(200);
v_result PLS_INTEGER;
-- obtain a lock
PROCEDURE request_lock(p_ltype INTEGER, p_retval OUT INTEGER);
-- release an existing lock
PROCEDURE release_lock(p_retval OUT INTEGER);
-- view the stored handle
FUNCTION see_handle RETURN VARCHAR2;
-- decode lock request
FUNCTION decode_req(p_result PLS_INTEGER) RETURN VARCHAR2;
-- decode lock release
FUNCTION decode_rel(p_result PLS_INTEGER) RETURN VARCHAR2;
END lock_demo;
/
CREATE OR REPLACE PACKAGE BODY lock_demo IS
PROCEDURE request_lock(p_ltype IN INTEGER, p_retval OUT INTEGER) IS
BEGIN
IF v_lockhandle IS NULL THEN
dbms_lock.allocate_unique(v_lockname, v_lockhandle);
p_retval :=dbms_lock.request(v_lockhandle, p_ltype);
END IF;
END request_lock;
------------------------------------------------------------
PROCEDURE release_lock(p_retval OUT INTEGER) IS
BEGIN
IF v_lockhandle IS NOT NULL THEN
p_retval :=dbms_lock.release(v_lockhandle);
END IF;
END release_lock;
------------------------------------------------------------
FUNCTION see_handle RETURN VARCHAR2 IS
BEGIN
IF v_lockhandle IS NOT NULL THEN
RETURN v_lockhandle;
ELSE
RETURN 'Not Allocated';
END IF;
END see_handle;
------------------------------------------------------------
FUNCTION decode_req(p_result PLS_INTEGER) RETURN VARCHAR2 IS
retval VARCHAR2(20);
BEGIN
SELECT DECODE(p_result,0,'Success',1,'Timeout',2,'Deadlock',
3,'Parameter Error',4,'Already owned',5,'Illegal Lock Handle')
INTO retval
FROM dual;
RETURN retval;
END decode_req;
------------------------------------------------------------
FUNCTION decode_rel(p_result PLS_INTEGER) RETURN VARCHAR2 IS
retval VARCHAR2(20);
BEGIN
SELECT DECODE(p_result,0,3, 'Parameter Error',4, 'Already owned',
5, 'Illegal Lock Handle')
INTO retval
FROM dual;
RETURN retval;
END decode_rel;
------------------------------------------------------------
END lock_demo;
/
GRANT execute ON lock_demo TO public;
set serveroutput on
-- get an exclusive lock in the current session (Session 1)
DECLARE
s VARCHAR2(200);
BEGIN
lock_demo.request_lock(6, s);
dbms_output.put_line(s);
END;
/
/* Two session request a shared lock (ss_mode). The shared lock cannot be acquired because session 1 holds an exclusive lock. Execution will stop on the request until the the exclusive lock is released. */
session2
set serveroutput on
DECLARE
s VARCHAR2(200);
BEGIN
uwclass.lock_demo.request_lock(
dbms_lock.ss_mode, s);
dbms_output.put_line(s);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('started', SYSTIMESTAMP);
dbms_lock.sleep(5);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('ended', SYSTIMESTAMP);
COMMIT;
END;
/
session 3
set serveroutput on
DECLARE
s VARCHAR2(200);
BEGIN
uwclass.lock_demo.request_lock(
dbms_lock.ss_mode, s);
dbms_output.put_line(s);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('started', SYSTIMESTAMP);
dbms_lock.sleep(5);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('ended' , SYSTIMESTAMP);
COMMIT;
END;
/
-- Session 1 releases its lock
DECLARE
s VARCHAR2(200);
BEGIN
lock_demo.release_lock(s);
dbms_output.put_line(s);
END;
/
-- Execution resumes when the exclusive lock is released
SELECT TO_CHAR(when,'dd.mm.yyyy hh24:mi:ss'), action
FROM lock_test
ORDER BY when;
revoke execute on dbms_lock from apps;
grant execute on dbms_lock to apps;
将DBMS_LOCK包授权给USER:APPS.
相关操作:
-- create demo table
CREATE TABLE lock_test (
action VARCHAR2(10),
when TIMESTAMP(9));
GRANT insert ON lock_test TO public;
CREATE OR REPLACE PACKAGE lock_demo IS
v_lockname VARCHAR2(12) := 'control_lock';
v_lockhandle VARCHAR2(200);
v_result PLS_INTEGER;
-- obtain a lock
PROCEDURE request_lock(p_ltype INTEGER, p_retval OUT INTEGER);
-- release an existing lock
PROCEDURE release_lock(p_retval OUT INTEGER);
-- view the stored handle
FUNCTION see_handle RETURN VARCHAR2;
-- decode lock request
FUNCTION decode_req(p_result PLS_INTEGER) RETURN VARCHAR2;
-- decode lock release
FUNCTION decode_rel(p_result PLS_INTEGER) RETURN VARCHAR2;
END lock_demo;
/
CREATE OR REPLACE PACKAGE BODY lock_demo IS
PROCEDURE request_lock(p_ltype IN INTEGER, p_retval OUT INTEGER) IS
BEGIN
IF v_lockhandle IS NULL THEN
dbms_lock.allocate_unique(v_lockname, v_lockhandle);
p_retval :=dbms_lock.request(v_lockhandle, p_ltype);
END IF;
END request_lock;
------------------------------------------------------------
PROCEDURE release_lock(p_retval OUT INTEGER) IS
BEGIN
IF v_lockhandle IS NOT NULL THEN
p_retval :=dbms_lock.release(v_lockhandle);
END IF;
END release_lock;
------------------------------------------------------------
FUNCTION see_handle RETURN VARCHAR2 IS
BEGIN
IF v_lockhandle IS NOT NULL THEN
RETURN v_lockhandle;
ELSE
RETURN 'Not Allocated';
END IF;
END see_handle;
------------------------------------------------------------
FUNCTION decode_req(p_result PLS_INTEGER) RETURN VARCHAR2 IS
retval VARCHAR2(20);
BEGIN
SELECT DECODE(p_result,0,'Success',1,'Timeout',2,'Deadlock',
3,'Parameter Error',4,'Already owned',5,'Illegal Lock Handle')
INTO retval
FROM dual;
RETURN retval;
END decode_req;
------------------------------------------------------------
FUNCTION decode_rel(p_result PLS_INTEGER) RETURN VARCHAR2 IS
retval VARCHAR2(20);
BEGIN
SELECT DECODE(p_result,0,3, 'Parameter Error',4, 'Already owned',
5, 'Illegal Lock Handle')
INTO retval
FROM dual;
RETURN retval;
END decode_rel;
------------------------------------------------------------
END lock_demo;
/
GRANT execute ON lock_demo TO public;
set serveroutput on
-- get an exclusive lock in the current session (Session 1)
DECLARE
s VARCHAR2(200);
BEGIN
lock_demo.request_lock(6, s);
dbms_output.put_line(s);
END;
/
/* Two session request a shared lock (ss_mode). The shared lock cannot be acquired because session 1 holds an exclusive lock. Execution will stop on the request until the the exclusive lock is released. */
session2
set serveroutput on
DECLARE
s VARCHAR2(200);
BEGIN
uwclass.lock_demo.request_lock(
dbms_lock.ss_mode, s);
dbms_output.put_line(s);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('started', SYSTIMESTAMP);
dbms_lock.sleep(5);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('ended', SYSTIMESTAMP);
COMMIT;
END;
/
session 3
set serveroutput on
DECLARE
s VARCHAR2(200);
BEGIN
uwclass.lock_demo.request_lock(
dbms_lock.ss_mode, s);
dbms_output.put_line(s);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('started', SYSTIMESTAMP);
dbms_lock.sleep(5);
INSERT INTO uwclass.lock_test
(action, when)
VALUES
('ended' , SYSTIMESTAMP);
COMMIT;
END;
/
-- Session 1 releases its lock
DECLARE
s VARCHAR2(200);
BEGIN
lock_demo.release_lock(s);
dbms_output.put_line(s);
END;
/
-- Execution resumes when the exclusive lock is released
SELECT TO_CHAR(when,'dd.mm.yyyy hh24:mi:ss'), action
FROM lock_test
ORDER BY when;
发表评论
-
Oracle连接故障的排除
2024-09-09 22:33 439Oracle版本为11G,操作系统为Windows Ser ... -
Oracle数据库相关系统突然提示“SQLException:违反协议”
2024-02-19 15:50 1111SQLException:违反协议这个异常可能由很多的 ... -
CentOS在Docker中安装Oracle
2024-02-06 12:13 11571.拉取Oracle镜像,并检 ... -
Windows Server安装oracle数据库一直停在82%
2023-02-04 12:01 578网上有个说法:服务器超过一定数量的CPU后,将不能正常安装 ... -
ORA-04030错误处理
2023-02-04 11:52 2622【错误描述】 错误信息如下: ORA-04030:在尝 ... -
ORA-04030错误处理
2023-02-04 11:45 403【错误描述】 错误信息如下: ORA-04030:在尝 ... -
Linux安装MySQL数据库
2019-06-10 22:27 17751.进入安装包所在目录,解压: tar zxvf mysql- ... -
确定MySQL在Linux系统中配置文件的位置
2019-04-14 19:30 27621.通过which mysql命令来查看mysql的安装位置。 ... -
mysql set names 命令和 mysql 字符编码问题
2019-04-12 00:34 1140转自:https://www.cnblogs.com/digd ... -
MYSQL中取当前周/月/季/年的第一天与最后一天
2018-11-17 23:16 2199转自:https://blog.csdn.net/ ... -
Oracle删除大量数据的实践
2016-11-07 18:03 5815一、引言 从来没有 ... -
Oracle 数据库简明教程 V0.1
2016-03-23 21:01 2049供初学者入门学习使用,以开发者常见、常用的知识为主,基本上 ... -
Oracle拆分字符串函数
2016-03-23 10:58 3353create or replace type string ... -
Oracle数据库远程连接无响应
2016-03-21 10:20 4296故障现象: 服务器本机使用sqlplus / as s ... -
Oracle PGA详解
2015-10-21 15:34 11461转自:http://yanguz123.iteye.com/b ... -
Oracle12C导入dmp数据
2015-10-08 23:43 20531Oracle12C,发生了较大的变化。以前熟悉的东西变得陌 ... -
SQLLDR数据导入小结
2015-07-25 22:06 75181.创建数据表 CREATE TABLE ... -
Window7安装Oracle10
2015-03-06 12:14 1603每次安装都要百度,转到自己的博客上,找起来方便,还能增加访 ... -
Oracle SQL Developer 连接 Mysql 数据库
2015-02-25 19:36 3656下载JDBC包,解压缩这里只要mysql-connector- ... -
Mysql数据备份与恢复
2015-02-25 19:15 1345备份/恢复策略 1. 要定期做 mysql备份,并考虑系统可以 ...
相关推荐
DBMS_LOCK是Oracle数据库系统中的一个内置包,用于在用户会话之间实现锁的管理,以确保并发操作的安全性和数据一致性。这篇博文深入探讨了DBMS_LOCK的功能、使用方法以及在实际应用中的重要性。 首先,我们要理解...
然而,当出现错误“ORA-04063: package body 'SYS.DBMS_REGISTRY_SYS' has errors”时,表明`DBMS_STATS`包或与其相关的`SYS.DBMS_REGISTRY_SYS`包体存在错误,这可能对数据库性能和正常操作造成影响。 **问题症状*...
为了使用特定的程序包,需要授予用户系统权限,例如执行 DBMS_PIPE、DBMS_LOCK 和 DBMS_JOB 等权限。 知识点 9: 建立测试环境 为了测试异步调用存储过程的方法,需要建立测试环境,包括创建模拟大业务处理存储过程...
在使用 DBMS_REDEFINITION 包时,需要注意执行权限,需要拥有 EXECUTE_CATALOG_ROLE 角色、CREATE ANY TABLE 权限、ALTER ANY TABLE 权限、DROP ANY TABLE 权限、LOCK ANY TABLE 权限、SELECT ANY TABLE 权限。...
以上只是Oracle内置包的一部分,实际上,Oracle还提供了许多其他的包,如DBMS_OUTPUT、DBMS_METADATA等,它们构成了Oracle数据库强大的功能集合,为开发人员提供了丰富的工具来处理各种数据库任务。掌握这些内置包的...
5. **DBMS_LOCK**: 提供锁定机制,确保并发操作时的数据一致性。 6. **DBMS_METADATA**: 用于获取数据库对象的元数据,如表、视图、索引等的DDL定义。 7. **DBMS_JOB**: 计划和调度任务,可以定期运行指定的PL/SQL...
PL/SQL包是由一系列PL/SQL过程和函数组成的,而SQL包则包含SQL相关的功能。 1. **DBMS_UTILITY** - 这个包提供了各种实用工具,如分析SQL语句的性能、格式化输出、获取数据库版本信息等。例如,`DBMS_UTILITY....
- 使用 Oracle 提供的 `DBMS_LOCK` 包可以在修改 SQL 或 PL/SQL 对象之前获得锁,从而避免不必要的等待。例如: ```sql DECLARE l_lock_id NUMBER; BEGIN -- 尝试获取锁 DBMS_LOCK.REQUEST( lock_id => l_...
DBMS_LOCK包提供了数据库锁定相关的方法,包括请求和释放锁。这些方法有助于管理并发操作,防止多个用户同时对同一数据进行修改导致的数据不一致性问题。 #### DBMSLOB DBMSLOB包提供了对大型对象(LOBs)的管理...
本文档旨在详细介绍达梦数据库(DM)中特有的DMGEO系统包以及兼容Oracle数据库的一系列系统包,包括DBMS_ALERT、DBMS_OUTPUT、UTL_FILE和UTL_MAIL等。这些系统包提供了丰富的功能,帮助开发人员、测试工程师、技术...
Oracle数据库系统提供了丰富的内置包,这些包包含了大量预定义的函数和过程,为数据库管理员和开发者提供了极大的便利。本文将详细介绍Oracle内置包的使用方法,包括它们的功能、调用方式以及示例应用。 1. **DBMS_...
- Oracle提供了一个PL/SQL包DBMS_LOCK,用于在PL/SQL环境中显式地创建和管理锁。例如,你可以使用`DBMS_LOCK.ALLOCATE_UNIQUE`分配一个锁,然后使用`DBMS_LOCK.REQUEST`请求锁,最后用`DBMS_LOCK.RELEASE`释放锁。 ...
DBMS_LOCK则是处理锁定问题的包,它提供了各种锁定机制,如申请、释放和等待锁,以确保多用户环境下的数据一致性。 此外,还有DBMS_JOB和DBMS_SCHEDULER这两个包,它们用于计划和执行数据库任务。DBMS_JOB更适合...
1. **Resumable Operations**:自Oracle 9i起引入,通过`DBMS_RESUMABLE`程序包支持暂停和恢复长时间运行的SQL或PL/SQL操作。 2. **Flashback Technologies**:自Oracle 10g开始,利用`DBMS_FLASHBACK`等程序包支持...
1.2.2 **服务器管理包** - 包括DBMS_JOB用于调度后台任务,DBMS_STATS用于收集和分析表的统计信息以优化查询性能,以及DBMS_LOCK用于实现应用程序级别的锁定机制。 1.2.3 **分布式数据库包** - 针对多数据库环境,...
对当前用户(测试用户),赋于以下权力:EXECUTE DBMS_PIPE、EXECUTE DBMS_LOCK、EXECUTE DBMS_JOB。 3. 建立模拟大业务处理存储过程 该存储过程通过循环 30 次,调用 DBMS_LOCK.SLEEP(1)(体眠 1 秒)和写管道...
Oracle API 还包含了一些重要的包,如 DBMS_LOCK、DBMS_OUTPUT 和 DBMS_SCHEDULER。DBMS_LOCK 包用于实现进程间的锁定机制,保证并发操作的安全;DBMS_OUTPUT 提供了在服务器端打印和查看信息的功能,对调试非常有用...
下面我们将深入探讨一些常见的Oracle包及其相关知识点。 1. **DBMS_OUTPUT**:这个包用于在PL/SQL程序中生成调试信息。通过调用`DBMS_OUTPUT.PUT_LINE`函数,可以将文本信息输出到服务器的控制台或客户端的查询结果...