Error :
SYMPTOMS :
When attempting to update an invoice, the following error occurs:
APP-SQLAP-10771: Could not reserve record.
A database lock from another session has occurred on the table, AP_INVOICES_ALL, AP_INVOICE_LINES_ALL, AP_INVOICE_DISTRIBUTIONS_ALL.
To implement the solution on your instance follow the below steps:
1. Run the following to determine what tables are locked:
1. Run the following to determine what tables are locked:
SELECT a.object_id, a.session_id, substr(b.object_name, 1, 40)
FROM v$locked_object a, dba_objects b
WHERE a.object_id = b.object_id
AND b.object_name like 'AP_%'
ORDER BY b.object_name;
FROM v$locked_object a, dba_objects b
WHERE a.object_id = b.object_id
AND b.object_name like 'AP_%'
ORDER BY b.object_name;
2. Look at the results and insert whatever AP_% tables are returned from a) into the script below:
SELECT l.*, o.owner object_owner, o.object_name
FROM SYS.all_objects o, v$lock l
WHERE l.TYPE = 'TM'
AND o.object_id = l.id1
AND o.object_name in ('AP_INVOICES_ALL', 'AP_INVOICE_LINES_ALL', 'AP_INVOICE_DISTRIBUTIONS_ALL');
FROM SYS.all_objects o, v$lock l
WHERE l.TYPE = 'TM'
AND o.object_id = l.id1
AND o.object_name in ('AP_INVOICES_ALL', 'AP_INVOICE_LINES_ALL', 'AP_INVOICE_DISTRIBUTIONS_ALL');
3. Run the following:
SELECT SID, SERIAL#
FROM v$session
WHERE SID = <SID from b)>;
FROM v$session
WHERE SID = <SID from b)>;
4. Once the locking sessions have been identified, please use the below command to kill such sessions.
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
Reference:
R12: AP: Attempting to Update an Invoice Errors with APP-SQLAP-10771: could not reserve record (Doc ID 1200053.1)