Oracle introduced a new idea that narrates to concurrency. The workspace is a transactionally constant view of all the tables in a database that have been permitted for workspace versioning. There is a PL/SQL package called DBMS_WM used for enabling and disabling workspace versioning for tables. The changes that are made in a workspace are invisible to users outside of the workspace until they are explicitly merged with the parent workspace. Any workspace can be the parent of another workspace, all workspaces are children of a master workspace. Workspaces are especially useful for long term modifications to data, such as what-if analyses or content management, which may be relevant only to a subset of the users who are accessing the data.
Each workspace has its own version of each table that has been modified. Only when the changes for a particular workspace are flushed to its parent workspace can other child workspaces see these changes. When the changes from one workspace are flushed to the parent, any update conflicts can be resolved through a specific batch rule. This batch rule determines which version should be used. You can set these batch rules using Oracle Enterprise Manager or programmatically, using the DBMS_WM package. You can also refresh a workspace with the most current version of the rows in the parent workspace.
Workspaces are designed to integrate with all existing Oracle features, such as referential integrity and triggers, although some restrictions are detailed in the documentation. You can also specify whether you want exclusive locks or shared locks in a workspace. Shared locks allow other sessions attached to the same workspace to share the data, while exclusive locks prevent other sessions from accessing the data for the interval of the lock.