Working every day on a large Oracle production database (10g), we noticed that operations like
- granting an user read privileges on a table
- creating a trigger on a table
lock that table, and invalidate all the cursors insisting on it.
This has tremendous consequences if the table is big (> 20 million rows) and many users are working on it.
My question is: why is Oracle locking the table (we are not altering its structure, after all, but just giving an user the permission to read it) and why does it need to invalidate the cursors?
Is there a way to make actions like those "softer"?
Thanks in advance.
Alternative question: is there a way to know how many cursors are open on a specific table, in order to minimize the impact invalidation has on that object?