连接到 Oracle Database (OracleToSQL)

若要将 Oracle 数据库迁移到 SQL Server,必须连接到你希望迁移的 Oracle 数据库。 连接时,SSMA 会获取有关全部 Oracle 架构的元数据,然后将其显示在“Oracle 元数据资源管理器”窗格中。 SSMA 存储有关数据库服务器的信息,而不存储密码。

与数据库的连接将保持活动状态,直至关闭项目。 重新打开项目时,如果希望与数据库建立活动连接,必须重新连接。

有关 Oracle 数据库的元数据不会自动更新。 相反,如果你希望在 Oracle 元数据资源管理器中更新元数据,则必须手动更新它。 有关详细信息,请参阅本文中的刷新 Oracle 元数据部分。

所需的 Oracle 权限

用于连接到 Oracle 数据库的帐户至少必须具有以下权限:

权限 说明
CONNECT 连接到数据库(创建会话)所必需的。
SELECT ANY DICTIONARY 查询系统字典表(例如 SYS.MLOG$)以发现所有对象所必需的。

这允许 SSMA 加载连接用户所拥有的架构中的全部对象。 在大多数实际方案中,存储过程之间存在跨架构引用,SSMA 必须能够发现全部引用对象,才能成功转换。 若要获取在其他架构中定义的对象的元数据,帐户必须具有以下附加权限:

权限 说明
SELECT ANY TABLE 发现其他架构中的表、视图、具体化视图和同义词所必需的。
SELECT ANY SEQUENCE 发现其他架构中的序列所必需的。
CREATE ANY PROCEDURE 发现其他架构中的过程、函数和包的 PL/SQL 所必需的。
CREATE ANY TRIGGER 发现其他架构中的触发器定义所必需的。
CREATE ANY TYPE 发现在其他架构中定义的类型所必需的。

某些 SSMA 功能需要更多权限。 例如,如果要使用测试器备份管理功能,则需要向连接用户授予以下权限:

权限 说明
EXECUTE ANY PROCEDURE 运行要在所有架构中测试的过程和函数所必需的。
CREATE ANY TABLEALTER ANY TABLE 创建和修改用于更改跟踪和备份的临时表所必需的。
INSERT ANY TABLEUPDATE ANY TABLE 将更改跟踪和备份数据插入临时表中所必需的。
DROP ANY TABLE 删除用于更改跟踪和备份的临时表所必需的。
CREATE ANY INDEXALTER ANY INDEX 在用于更改跟踪和备份的临时表上创建和修改索引所必需的。
DROP ANY INDEX 删除用于更改跟踪和备份的临时表的索引所必需的。
CREATE ANY TRIGGERALTER ANY TRIGGER 创建和修改用于更改跟踪的临时触发器所必需的。
DROP ANY TRIGGER 删除用于更改跟踪的临时触发器所必需的。

这是 SSMA 正常运行所需的一系列通用权限。 如果你希望将迁移范围缩小到架构子集的范围,可以通过向有限的对象集(而不是 ALL)授予上述权限来达到目的。 有时可能很难正确识别所有依赖项,从而妨碍 SSMA 正常运行。 强烈建议授予前面定义的一系列通用权限,在迁移过程中消除任何潜在的权限问题。

与 Oracle 建立连接

连接到数据库时,SSMA 会读取数据库元数据,然后将这些元数据添加到项目文件。 在将对象转换为 SQL Server 语法和将数据迁移到 SQL Server 时,SSMA 使用这些元数据。 你可以在“Oracle 元数据资源管理器”窗格中浏览此元数据,并查看各个数据库对象的属性。

重要

在尝试连接之前,请确保数据库服务器正在运行,而且可以接受连接。

连接到 Oracle

  1. “文件”菜单上,选择“连接到 Oracle”。

    如果之前已连接到 Oracle,则命令名称为 “重新连接到 Oracle”。

  2. “提供程序”框中,根据安装的提供程序,选择“Oracle 客户端提供程序”或“OLE DB 提供程序”。 默认值为 Oracle 客户端。

  3. “模式”框中,选择 “标准模式”、“TNSNAME 模式”或“连接字符串模式”

    使用标准模式来指定服务器名称和端口。 使用服务名称模式来手动指定 Oracle 服务名称。 使用连接字符串模式来提供完整的连接字符串。

  4. 如果选择标准模式,请提供以下值:

    1. 在“服务器名称”框中输入数据库服务器的名称或 IP 地址。

    2. 如果未将数据库服务器配置为接受默认端口 (1521) 上的连接,请在“服务器端口”框中输入用于 Oracle 连接的端口号。

    3. 在“Oracle SID”框中,输入系统标识符。

    4. “用户名”框中,输入具有必需权限的 Oracle 帐户。

    5. 在“密码”框中,输入指定用户名的密码。

  5. 如果选择 TNSNAME 模式,请提供以下值:

    1. “连接标识符”框中,输入数据库的连接标识符(TNS 别名)。
    2. “用户名”框中,输入具有必需权限的 Oracle 帐户。
    3. “密码”框中,输入指定用户名的密码。
  6. 如果选择连接字符串模式,请在“连接字符串”框中提供连接字符串。

    下面的示例演示 OLE DB 连接字符串:

    Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;

    以下示例演示了使用集成安全性的 Oracle 客户端连接字符串:

    Data Source=MyOracleDB;Integrated Security=yes;

    有关详细信息,请参阅连接到 Oracle (OracleToSQL)

重新连接到 Oracle

与数据库服务器的连接将保持活动状态,直至关闭项目。 重新打开项目时,如果希望与数据库建立活动连接,必须重新连接。 可以脱机工作,直至你要更新元数据、将数据库对象加载到 SQL Server 和迁移数据。

刷新 Oracle 元数据

有关 Oracle 数据库的元数据不会自动刷新。 Oracle 元数据资源管理器中的元数据是在首次连接或上次手动刷新元数据时的元数据快照。 可以手动更新全部架构、单个架构或单个数据库对象的元数据。

刷新元数据

  1. 确保已连接到数据库。

  2. 在 Oracle 元数据资源管理器中,选中要更新的每个架构或数据库对象旁边的复选框。

  3. 右键单击“架构”或单个架构或数据库对象,然后选择“从数据库刷新”。 如果没有活动连接,SSMA 将显示“连接到 Oracle”对话框,以便可以连接。

  4. 在“从数据库刷新”对话框中,指定要刷新的对象。

    • 若要刷新对象,请选择对象旁边的“活动”字段 ,直至出现箭头。
    • 若要防止对象刷新,请选择对象旁边的“活动”字段,直至出现 X
    • 若要刷新或拒绝对象类别,请选择类别文件夹旁边的“活动”字段。

    若要查看颜色编码的定义,请选择“图例” 按钮。

  5. 选择“确定”

后续步骤

另请参阅