作者:Edelweiss Kammermann
分步计划迁移项目
2012 年 2 月发布
2009 年 1 月,Oracle 发布了一个针对 Oracle Discoverer 产品的发展方向声明,强烈鼓励用户迁移到 Oracle Business Intelligence 企业增强版 (OBIEE)。
对于在 Discoverer 上有较大投资且正在考虑这种迁移的组织,尽可能多地在 OBIEE 中重用原先在 Discoverer 上的工作非常重要。这样做可以尽量减小对 IT 人员和最终用户的影响,并且还允许他们在 OBIEE 中充分利用原先的功能。
在本文中,我们将了解执行此迁移所需的步骤,同时重用 Oracle Discoverer 中实现的许多代码。概括来说,要实现从 Discoverer 到 OBIEE 的迁移,我们需要解决以下对象的迁移:
EUL(最终用户层),它包含 Discoverer 用来执行查询的所有元数据
从 OBIEE 10g (10.1.3.4) 开始,Oracle 包括 Oracle Discoverer Metadata Conversion Assistant,该实用程序允许您从 Discoverer EUL 导出文件 (.EEx) 生成 BI 信息库文件 (.Rpd)。该实用程序文件名为 MigrateEUL.exe,对于 OBIEE 10g 可在目录 OracleBI/server/bin 中找到,对于 OBIEE 11g 则在 Oracle_BI1/bifoundation/server/bin 目录中。
执行此迁移的步骤如下:
将 EUL 从 Discoverer 导出到一个 .EEX 文件。
在 Oracle BI(10g 或 11g)中运行该实用程序将 .EEX 文件转换为信息库 (.Rpd) 文件。如果目标为 OBI 11g (11.1.1.5),您必须为该信息库分配一个口令。
如果您在 11g 中,则使用 Enterprise Manager 启用该信息库,如果您在 10g 中,则修改 NQSConfig.ini。
为进行演示,我们将 Discoverer 10.1.2.1 版 EUL 迁移到 11.1.1.5 Oracle BI 信息库。该 EUL 包含一个典型的星型模式,此模式包括事实表 SALES 和 5 个名为 CHANNELS、PRODUCTS、PROMOTIONS、CUSTOMERS 和 TIME 的维度。
导出 EUL
在 Oracle Discoverer Administrator 中,转到 File -> Export。在打开 Export Wizard 后,选择“The Entire End User Layer”选项以导出整个 EUL。
按 Next 按钮,随即显示“Step 2”对话框。选择将包含导出内容的位置和文件名 (.EEX)。
然后单击 Finish 创建导出文件。将显示一个进度窗口,您可以将日志捕获为文本文件以便稍后检查。
运行 Oracle Discoverer Metadata Conversion Assistant
Oracle Discoverer Metadata Assistant 实用程序通过命令行运行。在该实用程序所在的目录或文件夹中(如前所述),还有一个名为 MigrationConfig.properties 的配置属性文件。可以通过该属性文件中的设置来调整迁移的实现。(注意:该实用程序必须在安装 OBIEE 的计算机上运行。)
相关文档可在 Oracle_BI1/bifoundation/server/document 目录中的 DiscovererMetadataConversionAssistant.pdf 文件中找到。此文档共 30 页,提供了有关各个对象的迁移和转换的详细信息。
该迁移工具提供了一定灵活性,可以使用 MigrationConfig.properties 文件中的配置选项进行调整。以下是其中一些选项:
属性 | 设置 |
CreateAggregatedCols | TRUE — 将为量度列创建包含聚合(如 SUM、MIN、MAX、AVG 和 COUNT)的列。 FALSE — 将基于 EUL 中设置的 DEFAULT AGGREGATION 属性为量度列创建聚合列 |
CreateSeparateRPDs | TRUE — 为每个业务区生成单独的信息库。 FALSE — 将所有业务区迁移到一个信息库。 |
ExcludeJoins | 迁移期间要跳过的 JOIN_ID 的逗号分隔的列表。与 ConsiderMultiplePaths = TRUE 结合使用 |
ConsiderMultiplePaths | TRUE — Migration Assistant 将容纳迁移过程中跳过的联接。 FALSE — Migration Assistant 将不容纳迁移过程中跳过的联接。 |
IncludePathsForFolders | 迁移过程中必须容纳的跳过的联接的逗号分隔的 folder_id 列表 [在 Filename.exception.log 中可用]。 |
连接池参数 | DataSourceName、Username
|
下图显示配置文件的示例:
修改配置文件后,对 .eex 文件运行该实用程序以导出 EUL。
执行 Migration Assistant 生成了 BI Repository 11g (export_eul.rpd)。此外,它还创建了两个日志文件:export_eul.migration.log(包含有关迁移到高级别的过程的信息);以及 export_eul.exception.log(指示未迁移的项)。
为了打开信息库文件,我们使用 OBI Administration Tool 工具脱机打开该信息库。下图显示迁移产生了什么样的信息库。
为信息库口令分配值
以前我们说过,从 OBIEE 11g 11.1.5 版开始对信息库文件进行了加密。除了具有管理员权限的用户名和口令之外,还需要信息库口令。
新的信息库 export_eul.rpd 分配有一个默认生成的空口令。配置文件中没有选项可在迁移之前更改此口令。
由于我们的信息库是使用空口令创建的,为了启用最终用户查询,我们需要分配一个值。为执行此任务,必须使用 Oracle BI Administration Tool 以脱机模式打开信息库。打开之后,转到 File -> Change Password。
启用信息库
OBIEE 要求活动信息库位于注册目录中 — 默认情况下,在 instances\instance1\bifoundation\OracleBIServerComponent\coreapplication_obis1\repository 中。因此,要启用刚创建的信息库,首先将其复制/移动到该目录中,如下图所示:
将新创建的信息库复制到该目录后,即可启动 Oracle Enterprise Manager 11g Fusion Middleware Control 以启用该信息库:
在左侧导航面板中,选择实例“Business Intelligence:core application”。
在右侧面板中,选择 Deployment 选项卡和 Repository 选项。要加载新信息库,单击 Lock and Edit Configuration 按钮,这将允许我们修改设置。
然后按 Upload BI Server Repository 部分下的 Browse 按钮,选择信息库,并输入口令。然后按 Apply,再按 Activate Changes。这将应用所作更改。
应用这些更改之后,我们将看到一条消息,通知我们必须重新启动 BI 服务,这些更改才能生效。
按 Restart 按钮重新启动服务,这将激活我们的更改。然后新的信息库就变得可见,用户可以访问。(注意:要在 OBIEE 10g 中启用信息库,必须将信息库保存在 OracleBI\server\repository 文件夹中。通过更改 OracleBI\server\config 中的 NQSConfig.ini,在 [REPOSITORY] 部分添加条目 Star = export_eul.rpd , DEFAULT,将该信息库“注册”为可用。)
现在 EUL 已迁移完毕,以下是受影响的元素:
业务区:每个业务区转换为表示层中的一个主题区(通过 OBI Answers 对用户可见)。
简单文件夹:对于每个简单文件夹,在物理层中创建一个物理表,并在业务模型层中创建一个逻辑表。当简单文件夹属性“Visible to User”= Yes 时,在信息库的表示层创建一个显示表。
复杂文件夹:每个复杂文件夹成为逻辑层中的一个逻辑表,同时引用描述它们之间联接的逻辑表源表。复杂文件夹还与作为维度的那些基本文件夹联接。和简单文件夹的情况一样,如果属性指示它应对用户可见,则在表示层中创建一个表示表。
自定义文件夹:自定义文件夹作为“Select”类型的表迁移到信息库的物理层。对于每个自定义文件夹,将在业务层中创建一个逻辑表,若其设置为对用户可见,则在表示层中创建一个表。
列:每一列在其所属物理层表中创建,如果 Presentation 属性设置为对用户可见,则也在表示层中创建。
联接:每个联接保留作为物理层中的外键和业务模型层中的逻辑联接,以下几种情况除外:
- 在循环联接和多联接路径的情况下,该实用程序将为表生成别名,因为 OBI 不支持它们的原生形式。
- 当两个表之间共同共享多个维度时,不迁移这两个表之间的联接。
- 重复联接(文件夹 A 有到文件夹 B 的联接,反之亦然)将减少为随机选择的单一联接。
- 不迁移联接条件中包含计算的联接。
- 强制:如果条件是针对简单文件夹或自定义文件夹,则该条件应用于该文件夹的逻辑表源。对于复杂文件夹,条件将作为安全筛选器应用于 OBIEE 组“Everyone”。
- 可选:在 OBI 信息库中没有定义,应手动迁移到 OBI 目录。
- 迁移基于简单文件夹的层次结构;但不迁移基于复杂文件夹的层次结构。
- Oracle BI 中没有日期层次结构模板的直接等同物。但会迁移使用它们的层次结构结果。
- 用户权限:所有 EUL 用户作为“Everyone”组的一部分迁移到信息库,初始口令为大写的用户名。
以下是不受影响的对象:
Item 类:item 类在 Oracle BIEE 中没有等同物,因此不能迁移。Oracle BIEE 中的值列表将在创建筛选器时在运行时生成。
摘要文件夹不迁移。
基于其他复杂文件夹的复杂文件夹不迁移。
系统不能迁移作为维度的复杂文件夹。日志中将出现一条相应的消息。
基于复杂文件夹的层次结构不迁移。
可选条件需要在 OBI 目录中注册,它们不是信息库的一部分。
截至本文撰写之时,尚无任何工具可以让工作簿的迁移自动化进行。根据 Oracle 文档,您需要从头重新创建查询。这将迫使我们重做请求,重做一遍先前的工作。
本文提出的一种替代办法是重用由 Discoverer 生成的 SQL 查询,并将其直接应用于 Oracle BI,大大减少了创建查询的工作量。为此我们对 Oracle Discoverer 中的每个工作簿或工作表应用以下步骤:
使用 Discoverer Plus 或 Discoverer Desktop 在 Oracle Discoverer 中打开工作簿。
打开之后,转到 Tools (Tools) -> Show SQL。
选择此选项将打开一个窗口,其中显示该工作簿生成的 SQL 语句。使用窗口中的 copy 按钮复制整条语句。
转到 OBIEE 并选择“Create Analysis”,然后选择“Create Direct Database Request”。
在下一个窗口中,输入连接池的名称并粘贴从 Discoverer 复制的 SQL 语句。按 Validate SQL and retrieve columns 按钮选择列。(注意:连接池的名称和详细信息在信息库的物理层中。)
切换到 Results 选项卡显示此查询的数据。在本例中,它将变成:
要获得与 Discoverer 中相同格式的结果,只需将字段 Channel Name 和 Calendar_Year_Name 拖到 Table Prompts 区域。
切记,用户需要特殊权限才能直接对数据库执行查询。目录的管理员要从 OBIEE Administration 中的菜单选择 Manage Privileges 选项。
然后在 Answers 的权限部分,赋予用户以下权限:
迁移现已完成!但是还有一些重要的考虑事项。
例如,在首选的关系模型方面,OBIEE 与 Discoverer 之间有着本质的不同。在 OBIEE 信息库的业务模型层,表之间的关系应代表星型模式 — 至少要求有一个维度表和一个事实表。相反,Oracle Discoverer 不要求数据之间存在任何特殊类型的关系。因此,如果 Discoverer 数据模型不代表星型模式,则需要在迁移后进行更改以反映此结构。否则,信息库将不可用且不会为查询而启用。
同时注意:尽管 Oracle 表示元数据转换实用程序只迁移到版本 10g,且必须运行 Upgrade Assistant 以获得 11g 版的信息库,使用此实用程序生成的信息库版本实际上是适合 11g 版 11.1.1.3 和 11.1.1.5 的正确格式。