Oracle Workspace Manager 是什么?

Oracle Workspace Manager 是 Oracle9i 的一个新特性,它使应用程序不必对应用程序的 SQL (DML)进行任何更改,便可将相关内容透明安全地保存在适当位置,而且允许同时对同一生产数据进行读写访问。Workspace Manager 还支持 Oracle8i 和 Oracle Spatial,并得到 Oracle9i Enterprise Manager 的支持。

应用程序使用 PL/SQL 存储过程将用户设置到工作区中。一旦在某个工作区更改已启用版本标记的表中的数据(使用现有的应用程序 SQL),则将创建一个新的行版本(在同一个表空间),且新的行版本仅在该工作区内可见,直至其被显式合并到生产数据中。或者可以通过使用保存点将更改及时回滚到指定时间点。

工作区内的用户看到的总是整个数据库的事务一致性视图。这就意味着他们可看到在其工作区内发生的更改,以及当创建工作区或上一次刷新工作区时数据库中已存在的其他数据。

使用 Oracle Enterprise Manager 或调用 Workspace Manager PL/SQL API,可对表启用版本标记以及执行工作区操作,包括创建、转至工作区、转至日期、合并、刷新、回滚、比较、解决冲突和删除工作区,以及管理工作区安全和锁定。

应用程序使用工作区(Workspaces)可做什么?

  • 在需要数天、数星期或数月才能完成的数据更新期间,分组、隔离和版本标记的数据可透明地更新,并改善并发性
  • 根据工作区层次结构中的公共数据集对多种数据情况进行版本标记以进行“假设”分析
  • 跟踪版本历史及漫游工作区和数据版本,查看数据库在任何时间点的情况。
  • 实现 Oracle Spatial 长期事务处理

什么类型的应用程序可从 Workspace Manager 受益?

工程和 Web 设计,以及地理信息系统(GIS)都是需要管理复杂的、长时间的数据库事务的应用程序示例,这种事务可能需要数天、数星期或数月才能完成。传统的并发控制技术通常是不够完善的,因为它们通常将所有被更改的记录均锁定直至该事务完成。

Workspace Manager 为应用程序提供了什么好处?

Workspace Manager 为应用程序提供了三个主要好处。首先,工作区改善了对数据库中数据访问的并发性。它们允许在一个或多个工作区中对生产数据进行版本标记,同时允许同时访问该生产数据。其次,工作区版本标记和保存点创建了审计线索,支持回滚或查看特定时间点存在的数据的更改历史。最后,工作区可更方便地创建多个数据场景。每个场景可在不同的工作区中进行管理以进行“假设”分析。

Workspace Manager 能为开发人员和 DBA 提供了什么好处?

Workspace Manager 能为开发人员和 DBA 带来了一些好处。Workspace Manager PL/SQL API 包括完整的工作区语义集,其目的是:对具有或不具有历史数据的表启用版本标记;创建、刷新、合并、回滚以及删除工作区;设置、转至以及压缩保存点;管理工作区特定权限、访问模式和锁定;比较工作区和保存点;以及解决工作区之间的冲突。通过仅对发生更改的行进行版本标记并将新版本放置到相同的表空间,使存储扩展和行扩展最小化。 Workspaces Manager 紧密集成到 Oracle9i 中,包括对引用完整性、锁定、触发器、导入和导出等的支持。通过 Oracle Enterprise Manager 可以很方便地管理工作区,也可使用 Java API 通过 Web 访问工作区。

Workspace Manager 是 Oracle9 i、Oracle Spatial、Oracle8i 的特性吗?

Workspace Manager 是 Oracle9i 的新特性。长期事务处理(工作区)功能是一个非常强大和独特的特性。其它通用的 DBMS 还不具有这个特性。

Workspace Manager 也支持 Oracle8i、Oracle Spatial 版本 8.1.7,并受 Oracle9i Enterprise Manager 支持。

Workspace Manager API 包括哪些功能?

  • 工作区操作 —— 创建、刷新、合并、回滚、删除
  • 保存点 —— 创建、转至、压缩
  • 历史 —— 转至日期
  • 工作区权限 —— 访问、创建、删除、回滚、合并
  • 工作区访问模式 —— 读、写、管理、不操作
  • 工作区锁定 —— 独占和共享
  • 差异 —— 比较保存点及工作区
  • 冲突解决 —— 将子版本合并到父版本

工作区 操作 可从父工作区刷新数据,与父工作区合并数据以及将数据回滚到以前的保存点等。

保存点标记了一个时间点,工作区中的操作可回滚到该时间点。显式保存点由用户创建。一个保存点将导致在下一次更新某行时创建该行的一个新版本。可回滚自某个显式保存点以来对该行进行的更改。隐式保存点由 Workspace Manager 在创建新的子工作区时创建,子工作区可看到在该子工作区创建时数据库当时的一致性视图。子工作区中的用户在子工作区中执行一个刷新操作前,无法看到在父工作区中创建的新版本。

历史跟踪所有版本的时间和日期,用户可看到数据库在某个时间点的情况。

工作区权限使用户可访问、创建、删除、回滚及合并工作区。授予 DBA 的 WM_ADMIN_ROLE 的权限可以启用所有操作。这种权限可以是整个系统范围的,也可以是特定工作区范围的。Workspace Manager 权限集成在 Security Manager 中。

访问模式将工作区设置为不可访问、只读、只可写或仅供管理等操作之一。默认值为不可访问。

Workspace Manager 锁定是可用的,并有两种不同的方式,这是在除了传统的 Oracle 短事务提供的锁定之外。这些锁定的主要目的是消除在父工作区和子工作区之间的行冲突。

差异可存在于任何两个工作区 或指定工作区内的两个保存点之间。 行状态可能是以下之一:未更改、已更新、已删除、已插入或不存在。“不存在”表示特定主键的行在该工作区或基础工作区(共同祖先)中不存在,但已插入到别的工作区,所以它在这个工作区不存在。

冲突在两个工作区更改相同的行时就会出现。在子工作区与父工作区合并时必须解决这些冲突。可以采取表(批处理模式)方式,也可以逐个解决冲突的方式。批处理模式选项可通过选择父工作区、子工作区、公共祖先工作区(对父工作区和子工作区而言,称为基础工作区)或 None 中的值来解决所有的差异。None 表示不解决冲突。如果对每个冲突都从这些方法中进行选择并指定某一个值,则对每个冲突都会提示一次。

Workspace Manager 是如何工作的?

Workspace Manager API 是作为 PL/SQL 程序包实现的,并随 Oracle9i 自动安装。使用 API 或 Oracle Enterprise Manager 中的 Version Enabled Tables(版本化表)文件夹,可以有选择地对现有数据库或新建数据库中某些表或所有表启用版本标记。在该数据库中有一个工作区层次结构。默认情况下,当创建一个工作区时,将从最顶层的数据库工作区或从 活动 数据库工作区创建。

工作区中发生的所有更改都是由传统的短事务进行的。创建显式保存点将导致在下次更新某行的时候创建该行的一个新版本。 在一个或多个工作区中对同一生产数据进行的更改将自动捕获为该数据的新版本。通过仅对发生更改的行进行版本标记并将新版本放置到相同表空间,可使存储扩展和行扩展最小化。

在将更改合并到 活动 工作区时将自动检测冲突,这可由 Oracle Enterprise Manager 的用户或通过 API 编程来解决。

Workspace Manager 如何启用表的版本标记?

ENABLEVERSIONING 过程用于启用表的版本标记。它执行以下任务:

  • 对表增加四个工作区元数据列来存放以下数据:
    • VERSION_COL 为行版本 id
    • LTLOCK_COL 为锁定状态
    • DELSTATUS_COL 为删除状态
    • NEXTVER_COL 为下一个行版本 id
  • 更改表名,对表名添加后缀 _LT
  • 创建一个与原始表同名的视图。
  • 创建而不是触发该视图来插入、更新和删除版本行。一旦启用版本标记后,表中所有的行都支持多版本数据。 当访问该视图时,它将使用工作区元数据来显式仅与用户活动工作区相关的行版本。工作区基础架构对于最终用户是不可见的。

    历史选项使用名为 "<table_name>_HIST" 的视图来跟踪对某个表的修改,它可记录最近的修改或所有修改,相同版本中对某行的后续更改不会覆盖以前的更改。

应用程序用户如何进入工作区?

在登录时,用户位于活动工作区。GOTOWORKSPACE 过程可将当前用户会话转至目的工作区。用户对数据进行的所有后续修改均发生在目的工作区的最新版本上。

新版本存储在工作区中吗?

不是。 工作区不是一个存储机制。新的版本存放在启用版本标记的表及其关联的表空间中。工作区则能够方便地将一组更改(新的行版本)组合在一起,并使这些更改对工作区外的其它用户不可见,直至更改与生产数据合并。

Workspace Manager 可禁止某个表的版本标记吗?

DISABLEVERSIONING 过程可用于抵消 ENABLEVERSIONING 过程的效果。它删除用于行版本标记的 Workspace Manager 基础结构,且不会影响 活动 工作区中任何的用户数据。该工作区的层次结构和任何保存点仍然存在,但所有行均与 活动 工作区相同。 如果在禁止版本标记的表中某行有多个版本,则只保留该行最近的版本。

Workspace Manager 在工作区中提供了哪些安全性?

Workspace Manager 在标准的 Oracle 数据库权限之外还实现了一组权限。它们是:ACCESS(访问)、CREATE(创建)、REMOVE(删除)、MERGE(连接) 以及 ROLLBACK(回滚)。这些权限可分为两类:

  • 工作区级权限,在表单 priv _ WORKSPACE 中。这些权限使用户可影响指定工作区。
  • 系统级权限,在表单 priv_ANY_WORKSPACE中。 这些权限使用户可影响任何工作区。

每个权限都可以使用或不使用授权选项来授权。授权选项使被授予该权限的用户可以将该权限再授予其它用户。

Workspace Manager 提供了哪些补充的锁定功能?

除了支持传统的 Oracle 短事务所提供的锁定,Workspace Manager 还提供了两种类型的版本锁定来帮助消除父工作区和子工作区之间的行冲突。

  • 独占锁定——与短事务锁定类似,即一旦对某条记录设置了独占锁,则如果了锁定该记录的会话,数据库中其它用户都无法更改该记录。
  • 共享锁定——确保只有在该行被锁定的工作区内的用户允许修改该行。

锁定是一个独立于会话所在工作区的会话属性或工作区的属性。 如果是对某个会话启用锁定,则将对其参与的所有工作区内的行进行锁定。在两种锁定模式中,*其它*工作区内的用户,而不是发生锁定(某行)的工作区内的用户*无法*更改该行。也可将默认的锁定模式设置为适用于整个工作区。

锁定动作包括:

  • SetLockingOn SetLockingOff 设置对会话的锁定
  • SetWorkspaceLockModeOn SetWorkspaceLockModeOff 是对工作区进行行级锁定的默认模式。如果是 OFF ,则允许访问指定工作区内的各版本行,以及父工作区中的相应行。
  • GetLockMode 返回父工作区和子工作区的锁定模式。
  • LockRows UnlockRows 指定访问特定表中的版本行以及父工作区中的相应行。这个过程用于在更新行之前预先锁定行,或者在用 SQL 语句更新后自动锁定某行。

什么是保存点?

保存点就是一个时间戳,一个可将操作回滚到该点的工作区时间点。通过创建保存点,可以防止在该保存点创建之前工作区中所创建的内容被损坏。创建保存点将导致在下一次更新某行时创建该行的一个新版本。 保存点有两种类型:

  • 显式保存点可用于回滚工作区内的更改。
  • 隐式保存点是在每次创建新工作区时自动创建。隐式保存点是必要的,以便于子工作区的用户可看到在工作区创建时数据库当时的一个冻结视图。

如何进行合并或刷新操作,及如何解决工作区之间的冲突?

工作区合并就是将该工作区内进行的更改应用到其父工作区,并可选择是否删除该工作区。在合并过程中子工作区被冻结为 NO_ACCESS 模式,而父工作区则冻结为 READ_ONLY 模式。

在子工作区和父工作区或在两个对等工作区中发生更改的行可能导致数据冲突。冲突是在合并或刷新操作期间发现的:

  • 在合并操作中,子工作区的更改被合并到其父工作区中。
  • 在刷新操作期间,父工作区中进行的更改被合并到子工作区

冲突将以冲突视图的方式告诉用户,每个表有一个冲突视图。该冲突视图列出了发生冲突的行的主键,以及两个表空间中形成冲突的行的各列值。冲突可通过使用 ResolveConflicts 过程来解决。在这个过程期间,用户可从基础表、子表或父表中选择该行的值。如果在父工作区和子工作区之间没有冲突,则这两个工作区内的数据可进行合并。在执行 MergeWorkspace 或 RefreshWorkspace 操作前必须解决冲突。

工作区环境是如何管理的?

Database Workspace Manager 与 Oracle Enterprise Manager (OEM) 控制台集成在一起。Workspace Manager 也可以创建和维护元数据视图,存放有助于管理工作区环境和故障诊断的信息。这些视图对用户而言是只读的。


Enterprise Manager Integration 概要:

当连接到数据库时, 可看到一个称为 Workspace Management 的文件夹,打开该文件夹可看到两个子文件夹:Version Enabled Tables 和 Workspaces。

  • OEM 的 Version Enabled tables 子文件夹可用来查看表状态,并将表设置为启用版本标记。
  • OEM 的 Workspaces 文件夹允许:
    • 创建和查看工作区层次结构及属性,包括:
    • 设置和查看工作区访问模式。工作区的用户访问模式有:
      • 不可访问,这是默认值
      • 只读
      • 单写,允许所有其它用户阅读
      • 仅工作区操作,诸如合并和回滚
    • 设置和查看保存点
      • 当创建子工作区时系统即创建隐式保存点
      • 由用户创建显式保存点
    • 回滚自上一次显式保存点以来的更改
    • 解决任何两个工作区之间或一个工作区内两个保存点之间的差异
    • 用父工作区的数据刷新整个工作区、表或行。如果存在冲突,刷新工作区可能会失败。
    • 合并工作区内进行的所有更改或合并对特定表进行的更改。
    • 将权限设置为访问、创建、删除、回滚以及合并工作区

Workspace Manager 元数据视图概要:

Workspace Manager 创建并维护元数据视图来保存有助于管理工作区环境和故障诊断的信息。这些视图对用户是只读的。跨越整个工作区环境的视图有:

  • USER_WM_VERSIONED_TABLES ALL_WM_VERSIONED_TABLES
  • USER_WM_MODIFIED_TABLES ALL_WM_MODIFIED_TABLES
  • USER_WORKSPACES ALL_WORKSPACES 包含用户拥有的或可访问的工作区信息
  • USER_WORKSPACE_SAVEPOINTS ALL_WORKSPACE_SAVEPOINTS
  • USER_WORKSPACE_PRIVS ALL_WORKSPACE_PRIVS 包括所有用户权限
  • USER_WM_PRIVS 包括当前用户在每个工作区的权限
  • ROLE_WM_PRIVS
  • USER_WM_LOCKED_TABLES ALL_WM_LOCKED_TABLES
  • DBA_WORKSPACE_USERS 包含除 活动 工作区之外的工作区用户信息
  • USER_WM_RIC_INFO ALL_WM_RIC_INFO 包含引用完整性约束
  • USER_WM_TAB_TRIGGERS ALL_WM_TAB_TRIGGERS
  • ALL_VERSION_HVIEW 为工作区层次结构

为每个工作区启用的表创建的视图有:

  • 冲突视图
  • 差异视图
  • 锁定视图
  • 历史视图
  • 多工作区视图

 

 

Left Curve
热门下载
Right Curve