使用 Oracle 后端恢复 Altium 本地部署企业服务器
Parent page: 使用 Oracle 后端的 Altium On-Prem Enterprise Server
本文档面向 IT 管理员,适用于在 Enterprise Server 使用 Oracle 数据库后端时,恢复 Altium On-Prem Enterprise Server 数据的场景。文档包含 Enterprise Server 的相关细节、在使用 Oracle 的前提下的恢复流程、系统需求的重要信息,以及一个在 Microsoft Windows 平台上进行数据恢复的示例。
恢复流程概述
在使用 Oracle 后端时,Enterprise Server 的恢复取决于你们公司如何管理 Oracle 数据库。有些公司在 Windows Server 操作系统上运行 Oracle 数据库,而另一些公司则拥有完整的 Oracle 数据中心。恢复过程通常包含三个步骤,如下图所示。
Enterprise Server 与 Oracle 数据库恢复流程的高层概览。
本文档中的假设前提
尽管 Oracle 配置会因站点而异,本文档全程基于以下假设:
- 已按文档 Backing up Altium On-Prem Enterprise Server with an Oracle Backend 中所述完成 Enterprise Server 数据的完整备份以及其关联的 Oracle 数据导出(dump)。
- 由 IT 管理员执行恢复。至少,执行 Enterprise Server 恢复的用户应对宿主机具有管理员权限。
- 应有数据库管理员(DBA)在场执行 Oracle 数据导入。至少,执行本指南的用户应对公司 Oracle 数据库具有完整的读/写权限,以便导入并修改数据库。
- 本指南假设已存在一个 Enterprise Server 安装实例,并已配置且可与 Oracle 后端正常工作。(关于如何处理在新机器上部署新的 Enterprise Server 并将数据导入该实例的环境,请参阅 example section 获取更多细节。)
- 源 Oracle 服务器与目标 Oracle 服务器上使用的 Oracle Schema 以及 Oracle 应用凭据必须相同。
Enterprise Server 架构高层概览
与其他设计用于在 Microsoft Windows 上运行的软件类似,Enterprise Server 是一个多线程、多服务的服务器应用。由于本文档仅关注可能与 Oracle 数据库交互的 Enterprise Server 部分,下图已简化以表示整体的 Enterprise Server 后端架构。
Enterprise Server 架构的高层概览。Enterprise Server 的 Backend Storages 包含大部分客户二进制数据,而 Windows Services 是一组支撑服务的集合。
本文档重点关注 Backend Storages,因为该模块中的数据会被备份,可能迁移到另一台机器,然后在同一台或不同机器上恢复。在 Backend Storages 中包含以下内容:
- Databases – 包含元数据,例如元件封装与原理图符号的关联、参数、文件路径、指向元件供应链数据源的链接等。这些信息可能存储在 Firebird 或 Oracle 数据库中。
- File Storage – 该文件存储区域在 Enterprise Server 的 VCS 仓库中保存二进制数据。这些二进制数据包括 PCB 与原理图工程文档、封装、符号、Draftsman 以及其他原生或非原生的 Enterprise Server 文档等信息。
Altium Restore Tool 的高层概览
Altium 的恢复工具名为 avbackup.exe。它与 Enterprise Server 的备份/恢复使用的是同一个实用程序。这是一个命令行工具,IT 管理员可执行它来恢复 Enterprise Server 数据。avbackup.exe在 Enterprise Server 配置为默认 Firebird 数据库后端时,或使用 Oracle 数据库作为后端时,
使用 avbackup.exe 在采用 Oracle 数据库的 Enterprise Server 实现上进行操作时,管理员应注意以下事项:
- avbackup.exeNOT 不支持将 Enterprise Server 元数据恢复到 Oracle 数据库。该功能仅适用于使用 Firebird 数据库后端、且最初由 Enterprise Server Installer 自动配置的 Enterprise Server 实现。
- avbackup.exe可接收其作为备份工具时生成的 Zip 文件。该 Zip 文件包含所有 Enterprise Server 的二进制数据。
- Enterprise Server 必须处于运行状态。avbackup.exe在数据恢复期间,
将自动关闭所有 Enterprise Server 服务(包括 IIS 服务),并在成功恢复后重新启动其关闭的所有服务。
在 Windows 平台上使用 Oracle 后端恢复 Enterprise Server 数据的示例
在此示例中,说明也适用于可能没有专职 Oracle 数据库管理员(DBA)的小型企业,但仍需要在其网络中恢复 Enterprise Server 及其关联的 Oracle 数据。以下步骤展示了如何将 Enterprise Server 及其关联的 Oracle 数据库的基础备份恢复到一台新机器和新的 Oracle 数据库中。
所需项目
- 已存在可正常工作的、使用 Oracle 后端的 Enterprise Server 实例。
- 预先存在的文件夹与数据源:\n\t
- 用于存放 Enterprise Server 与 Oracle 数据的文件夹需要事先存在,并包含 Enterprise Server 备份 zip 文件以及 Oracle .DMP 文件的副本。
- 对 Enterprise Server 宿主机的管理员访问权限。这是正确运行 Enterprise Server 备份命令工具(avbackup.exe)所必需的。
- 对 Oracle 服务器的适当 DBA 访问权限(例如在 Windows 环境中,将用户的 Windows 账户加入
sysDBA角色)。
恢复流程
- 如果尚未设置任何使用 Oracle 后端的 Enterprise Server 预置实例,请阅读文档 Installing Altium On-Prem Enterprise Server with an Oracle Backend,其中提供了在新机器上使用 Oracle 后端搭建 Enterprise Server 的示例。
- 此时,你应已拥有一个使用 Oracle 的 Enterprise Server 实例——可能来自新安装或既有安装。
- 在 Enterprise Server 宿主机上:\n\t
- 创建一个恢复文件夹(使用统一的文件路径会更方便,例如:C:\Backups)。将 Enterprise Server 备份 Zip 文件放入该文件夹。
- 以管理员身份运行 avbackup.exe 工具来恢复 Enterprise Server 数据。该工具位于 C:\Program Files (x86)\Altium\Altium365\Tools\BackupTool 文件夹中。
- 关闭 IIS 的 Enterprise Server 服务,或关闭 Enterprise Server 宿主机。这将防止 Enterprise Server 服务对 Oracle 数据库进行任何非预期的写入操作。
- 在 Oracle 数据库宿主机上:\n\t
- 创建一个恢复文件夹,并将 Oracle
.dmp文件放入该文件夹(使用统一的文件路径会更方便,例如:C:\Backups)。 - 从 Oracle 数据库中删除/清除现有 schema 和用户账户。
- 创建一个恢复文件夹,并将 Oracle
删除 Oracle 用户账户及其关联 schema 可按如下方式进行。以本示例为例,我们将在 Microsoft Windows 上的 Oracle 数据库中删除现有用户账户 AESUSER313 及其关联的 Schema:
- 以管理员权限启动命令提示符。
- 如果 Oracle 机器上存在 IIS 服务,使用命令 net stop WAS 停止 IIS 服务,然后按 Y 并回车。
- 通过启动 SqlPlus 会话连接到 Oracle DB:
sqlplus / as sysdba
shutdown immediate;
startup restrict;
- 删除与 Enterprise Server 关联的 schema(本示例中 AESUSER313 是我们要删除的 schema 名称):
drop user AESUSER313 cascade;
- 通过重启机器或使用以下命令使数据库恢复正常运行:
shutdown immediate;
startup;
- 在 Oracle 服务器上创建相同的 Schema 并分配更高权限:\n\t
- 以管理员身份打开命令行并输入:
sqlplus / as sysdba;
CREATE user AESUSER313 identified by “Altium”;
GRANT ALL PRIVILEGES TO AESUSER313;
GRANT IMP_FULL_DATABASE TO AESUSER313;
- 或者,你也可以临时为该用户授予 DBA 角色,导入文件后再按如下所示撤销该权限:
GRANT DBA TO AESUSER313;
- 成功导入数据库后,撤销 DBA 权限:
revoke DBA from AESUSER313;
- 恢复 Oracle 数据(本节假设用户账户与 schema 均名为 AESUSER313,密码为 Altium):\n\n\t
- 以管理员权限启动命令提示符
- 使用命令停止 IIS 服务器:
net stop WAS
- 导入 Oracle 数据。导入命令示例如下:
imp AESUSER313/Altium@xe file=c:\Backups\AESUSER313.dmp log=c:\Backups\AESUSER313_import.log fromuser=AESUSER313 touser=AESUSER313
其中,
AESUSER313 – 对 schema 具有完整权限并有权访问数据库的用户。
Altium – 与 Enterprise Server 关联的 Oracle 用户账户密码。
xe – 目标数据库在 tnsnames.ora 中包含的网络服务名。
file = c:\Backups\AESUSER313.dmp – 备份位置。
log = c:\Backups\AESUSER313_import.log – 恢复日志(可选)。
fromuser=AESUSER313 – 备份 schema 的所有者。
touser=AESUSER313 – schema 的新所有者(如果所有者不同,你必须创建具有适当权限与角色的新用户)。
- 验证数据完整性。\n\t
- 检查 tnsname.ora 文件。如果你更改了 DB 服务器,应更新网络服务名。
- 验证 IIS 服务器设置。在 IIS 管理器中检查绑定里的“Host name”列是否为当前值。这里应为你的 Enterprise Server 当前的完全限定域名(FQDN)。
- 检查 C:\Program Files (x86)\Altium\Altium365\LocalVault.ini 文件中以下参数的取值。
- Domain – 你的域名名称。
- WebsiteDomain – 你的 Enterprise Server 的 FQDN。
- DataSourceType=Oracle – 如果使用 Oracle DB。
- User=AESUSER313 – Schema 的所有者。
- Password=Altium – DBA 定义的用户密码。
- DBLocation=FQDN 或 ip_address:1521 – 你的 DB 服务器地址。
- DatabaseName=xe – DB 当前的网络服务名,包含在 tnsnames.ora 中。
结论
尽管上述示例包含了与 Oracle Database 交互和操作相关的额外细节,但恢复 Enterprise Server 数据只有三个关键步骤:
- 步骤 1:停止 IIS 服务以及 Enterprise Server 的 IIS 应用程序池。
- 步骤 2:恢复 Enterprise Server 数据。
- 步骤 3:恢复与 Enterprise Server 相关联的 Oracle 数据。
按所述顺序执行该流程,可大幅降低因 Oracle 数据库与 Enterprise Server 二进制数据不匹配而导致数据损坏的可能性。