数据库资源紧急解锁

Emergency unlocking of resources in database

我们在实时生产系统上遇到问题。 其中一个节点停止正常工作(因为托管它的网络文件系统出现问题),并且发生在通道暂存过程正在进行中。

由于那个非常糟糕的时机,暂存过程仍未完成,所有锁定的资源都保持原样,这阻止了在实时系统上编辑产品或目录。

我们尝试过的第一个解决方案是逐个节点重启服务器,但这没有帮助。 我们尝试执行此支持文章中提到的 SQL 的第二个解决方案: https://support.intershop.com/kb/index.php/Display/2350K6

我们执行的确切 SQL 如下,第一个是从 RESOURCELOCK table:

中删除
DELETE FROM RESOURCELOCK rl WHERE rl.LOCKID IN (SELECT
 resourcelock.lockid
FROM 
 isresource , 
 domaininformation resourcedomain, 
 process,
 basiccredentials , 
 domaininformation userdomain, 
 resourcelock ,
 isresource_av 
WHERE (
 (isresource.domainid = resourcedomain.domainid) 
  AND (isresource.resourceownerid = process.uuid) 
  AND (resourcelock.lockid = isresource.uuid) 
  AND (process.userid = basiccredentials.basicprofileid(+)) 
  AND (basiccredentials.domainid = userdomain.domainid(+)) 
  AND (isresource_av.ownerid(+) = isresource.uuid) 
  AND (isresource.resourceownerid is not null) 
  AND (isresource_av.name(+) = 'locknestinglevel')
  AND (process.name = 'StagingProcess')
));

还有一个用于 ISRESOURCE table:

UPDATE isresource
SET
  resourceownerid=null,
  lockexpirationdate=null,
  lockcreationdate=null,
  lockingthreadid=null
 WHERE
  RESOURCEOWNERID='QigK85q6scAAAAF9Pf9fHEwf'; //UUID of StagingProcess

现在这有点帮助,因为它允许上演单个产品,但仍然存在两个问题:

  1. 无法在实时系统上手动锁定产品进行编辑,单击锁定图标时页面会刷新但看起来仍未锁定,但会为在 ISRESOURCE 中单击的每个产品创建记录 table 尽管它们不完整(没有 RESOURCEOWNERID、锁定创建日期或锁定到期日期),但可以在下面看到: 还尝试为产品锁定创建进程,但它们都失败了或 运行 没有结束日期,如下所示:

现在解决第二个问题: 频道暂存无法启动且失败并显示消息:

ERROR - Could not lock resources for process 'StagingProcess': Error finding resource lock with lockid: .0kK_SlyFFUAAAFlhGJujvESnull

该资源是 MARKETING_Promotion 资源:

这两个问题都是在 运行 上述 SQL 之后开始出现的,看起来它们是相关的,任何关于如何解决这种情况的建议都会有所帮助。

我发布的第一个 SQL 不应该是 运行:

DELETE FROM RESOURCELOCK rl WHERE rl.LOCKID IN....

解决方法是恢复已删除的资源锁,只需将 ISRESOURCE table 中的锁字段设置为 null,第二个 SQL:

UPDATE isresource
SET
  resourceownerid=null,
  lockexpirationdate=null,
  lockcreationdate=null,
  lockingthreadid=null
WHERE
  RESOURCEOWNERID='QigK85q6scAAAAF9Pf9fHEwf'; //UUID of StagingProcess