Locking objects
Published 23 March 2022
Object locking is only available in Source Control for Oracle 2 and later.
If your team works on a shared database, you can lock objects so other people can't edit the objects while you're working on them. This means teams don't accidentally overwrite work.
After you lock an object, you can work on it and check it in as usual. When you try to edit an object locked by someone else, the server returns an error. You can still unlock other people's objects if you need to.
Object locking isn't necessary for teams where each developer has their own copy of the database.
Setting up
To use object locking, a SQL script needs to be run on the database. You can do this from the Lock objects tab, or you can run the script manually.
For more information, and to view the script, see Setting up object locking.
Using the Lock objects tab
After locking is set up, the top pane lists objects that are currently locked in the database. The bottom pane lists objects that are currently unlocked.
The tab shows:
- the name of the object
- the type of object
- who the object was locked by
- the date the object was locked
- when the object was last edited
- the comment left by the person locking it (if one was provided)
You can move the mouse over the Date and Last edited columns to see exact time stamps.
To lock an object
- In the Unlocked objects pane, select the object you want to lock.
Type a comment explaining why you're locking the object (optional).
Comments help your team know if it's OK to unlock the object or check it in.Click Lock selected objects.
The object is locked and appears in the Locked objects pane. The rest of your team can see you've locked the object and won't be able to edit it until it's unlocked.
You can also lock an object by right-clicking it.
To unlock objects
- Select the objects in the Locked objects pane and click Unlock selected objects. You can unlock objects even if you're not the person who locked them.
- To unlock objects you locked yourself, click Unlock all my objects. You can also unlock an object by right-clicking it.
For an example of how a team might use object locking, see Example - locking objects.
Searching for objects
By default, searching is confined to the Name and Schema columns.
Searching in a particular column
To search in a particular column, use the column name followed by a colon and your search term – for example, name:department or lockedby:phil.
You can use any column name except Date and Last edited.
Searching for objects you locked
To search for objects you locked, use lockedby:(me). You don't need to replace (me) with your username.
Excluding a term
To exclude a term, use -. For example, to exclude objects with job in the object or schema name, use -job, or to exclude all tables, use -type:table.
Combining search terms
You can combine the above methods to make your search more specific. For example:
type:view -type:log department schema:hr
This displays views and materialized views - but not materialized view logs - containing department in the name or schema and hr in the schema.
To exclude a search term containing more than one word, use - before each word you want to exclude. If you only use - before the first word, only the first word will be excluded. The others will be included.
For example, if you want to search for views but exclude view logs, use both type:view and -type:log. If you use -type:view log, this will exclude views but search for logs.