暂无图片
DBMS_LOCK_ALLOCATED 这个是什么导致的锁?
我来答
分享
薛晓刚
2020-02-29
DBMS_LOCK_ALLOCATED 这个是什么导致的锁?

image.png

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
JiekeXu
暂无图片

官方文档描述如下:
DBMS_LOCK_ALLOCATED describes user-allocated locks.

Column Datatype NULL Description
NAME VARCHAR2(128) NOT NULL Name of the lock
LOCKID NUMBER(38) Lock identifier number
EXPIRATION DATE Planned lock expiration date (updates whenever the allocation procedure is run)

The DBMS_LOCK package provides an interface to Oracle Lock Management services. You can request a lock of a specific mode, give it a unique name recognizable in another procedure in the same or another instance, change the lock mode, and release it.

If you choose to identify locks by name, you can use ALLOCATE_UNIQUE to generate a unique lock identification number for these named locks.

The first session to call ALLOCATE_UNIQUE with a new lock name causes a unique lock ID to be generated and stored in the dbms_lock_allocated table. Subsequent calls (usually by other sessions) return the lock ID previously generated.

A lock name is associated with the returned lock ID for at least expiration_secs (defaults to 10 days) past the last call to ALLOCATE_UNIQUE with the given lock name. After this time, the row in the dbms_lock_allocated table for this lock name may be deleted in order to recover space. ALLOCATE_UNIQUE performs a commit.


看着费力翻译了一下,希望对你有帮助!

DBMS_LOCK包提供了Oracle Lock Management服务的接口。您可以请求特定模式的锁定,为它指定一个唯一的名称,该名称在相同或另一个实例中的另一个过程中可以识别,更改锁定模式,然后释放它。

如果选择按名称标识锁,则可以使用ALLOCATE_UNIQUE为这些命名的锁生成唯一的锁标识号。

第一个使用新锁名调用ALLOCATE_UNIQUE的会话将导致生成唯一的锁ID,并将其存储在dbms_lock_allocated表中。后续调用(通常是其他会话)将返回先前生成的锁ID。

在使用给定锁名对ALLOCATE_UNIQUE的最后一次调用之后,锁名与返回的锁ID至少关联了expiration_secs(默认为10天)。此时间之后,可以删除dbms_lock_allocated表中此锁名称的行以恢复空间。ALLOCATE_UNIQUE执行一次提交。

暂无图片 评论
暂无图片 有用 0
薛晓刚

感谢。不过我还是不明白,什么场景会产生这个?如何解决?多谢

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏