I should stress that this is all well covered in the documentation, but it was something I stumbled upon just recently.
Its common knowledge that you can lock a table:
SQL> create table T 2 ( x int ) 3 partition by range ( x ) 4 ( 5 partition p1 values less than (10), 6 partition p2 values less than (20), 7 partition p3 values less than (30) 8 ); Table created. SQL> lock table T in exclusive mode; Table(s) Locked.
However, you can also selectively lock just partitions of a table as well, using the standard partition clause, for example:
SQL> lock table T partition ( p1 ) in exclusive mode; Table(s) Locked.
whilst the following is still possible in session 2:
SQL> insert into T values (20); 1 row created.