Wm rollback workspace

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script/commande SQL*Plus (Oracle Workspace Manager)
Voir aussi Wm workspace · Wm remove workspace · Wm freeze workspace

Wm rollback workspace annule toutes les modifications apportées dans un workspace depuis sa création, via DBMS_WM.RollbackWorkspace. L'opération s'exécute comme une transaction autonome, validée (commit) automatiquement à la fin.

Contraintes et comportement :

  • seuls les workspaces terminaux (« leaf », sans workspace descendant) peuvent être annulés ;
  • pendant l'exécution, le workspace est gelé en mode NO_ACCESS ;
  • une exception est levée si le workspace a des descendants, s'il n'existe pas, ou si le privilège nécessaire manque sur le workspace ou l'une des tables affectées.

À la différence de Wm remove workspace, qui supprime aussi la structure du workspace, RollbackWorkspace vide le workspace de ses données mais conserve son existence — il reste utilisable ensuite.

Script

-- Annule toutes les modifications d'un workspace terminal (leaf) depuis sa création
SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF

COLUMN current_workspace FORMAT a10 HEADING 'Current'
COLUMN owner              FORMAT a20 HEADING 'Workspace Owner'
COLUMN workspace           FORMAT a30 HEADING 'Workspace Name'
COLUMN createtime            FORMAT a20 HEADING 'Create Time'
COLUMN freeze_status          FORMAT a8  HEADING 'Freeze|Status'
COLUMN freeze_mode              FORMAT a20 HEADING 'Freeze|Mode'

-- Tous les workspaces
SELECT
    CASE WHEN dbms_wm.getworkspace = workspace THEN '    *' END AS current_workspace
  , owner
  , workspace
  , TO_CHAR(createtime, 'DD-MON-YYYY HH24:MI:SS') createtime
  , freeze_status
  , freeze_mode
FROM
    dba_workspaces
ORDER BY
    owner, workspace;

ACCEPT wm_rollback_workspace_name CHAR PROMPT 'Enter name of workspace to rollback: '

BEGIN
    dbms_wm.rollbackworkspace('&wm_rollback_workspace_name');
END;
/

Voir aussi