SSMA for Oracle 中的新增功能 (OracleToSQL)

本文列出了每个版本中适用于 Oracle 的 SQL Server 迁移助手 (SSMA) 的更改。

注意

虽然 Microsoft Entra ID 是 Azure Active Directory (Azure AD) 的新名称,但为了防止中断现有环境,Azure AD 仍保留在一些硬编码的元素中,例如 UI 字段、连接提供程序、错误代码和 cmdlet。 在本文中,这两个名称可以互换。

SSMA v9.5

SSMA for Oracle 的 v9.5 版本包含以下更改:

  • 支持在 SSMA 控制台模式下排除架构

SSMA v9.4

SSMA for Oracle 的 v9.4 版本包含以下更改:

  • 使用批量仿真函数添加对 BULK COLLECT 转换的支持,以便在单次提取中检索多行。
  • 通过大规模迁移修复迁移中丢失订阅的问题。
  • 改进 DECODE 函数的转换。
  • 改进使用空字符串与 NULL 进行比较的转换。

SSMA v9.3

SSMA for Oracle 的 v9.3 版本包含以下更改:

  • 添加对 SQL Server 2022 目标的支持

SSMA v9.2

SSMA for Oracle 的 v9.2 版本包含以下更改:

  • 添加对旧版 Unicode 字符串文本的支持
  • 添加对 ESCAPE 子句中的任意表达式的支持
  • 针对 EXTRACT(XML) 和 XMLQUERY 的转换支持
  • 增强对大规模迁移的数据管道监视
  • 针对 EXTRACT(XML)、EXTRACTVALUE 和 XMLQUERY 的转换支持
  • 支持 Azure 数据工厂 (ADF) 管道监视

SSMA v9.1

SSMA for Oracle 的 v9.1 版本包含以下更改:

  • 支持通过 Azure 数据工厂的集成将数据从 Oracle 大规模迁移到 SQL
  • 添加对转换和数据迁移排除系统生成的不可见列的支持
  • 改进获取帮助体验

SSMA v9.0

SSMA for Oracle 的 v9.0 版本包含以下更改:

  • 添加对架构级别的 VARRAY 和 TABLE 用户定义类型的支持
  • 添加对用户定义类型的自变量、参数和本地声明转换的支持

SSMA v8.24

SSMA for Oracle 的 v8.24 版本包含以下更改:

  • 添加对 LISTAGG 函数的支持
  • 添加对 Oracle 复合触发器的支持
  • 改进 JOIN 子句和 PIPELINED 函数的检测逻辑
  • 改进“Save As”语句的命名

SSMA v8.23

SSMA for Oracle 的 v8.23 版本包含以下更改:

  • 支持在类型映射设置中将 DATE 类型从 Oracle 映射到 SQL Server DATE 类型
  • 支持为 Azure SQL 数据库目标添加的表分区,而且所有表分区都映射到主文件组
  • 用于从文件系统添加语句的新选项“允许来自文件的语句”
  • 在控制台模式下运行时增强的 XML 输出
  • 报告中新增了用于发送反馈的“反馈”链接
  • 在报告中,增强了可视化体验

SSMA v8.22

SSMA for Oracle 的 v8.22 版本包含以下更改:

  • 允许为目标数据库连接指定更多连接字符串选项
  • 介绍了评估报告中的摘要图表
  • 改进了评估报告中的消息导航

SSMA v8.21

SSMA for Oracle 的 v8.21 版本包含以下更改:

  • 修复与提供商名称相关的 OLE DB 连接字符串模式
  • 添加缺失的 ssma_oracle.fn_getColEntryByRange 仿真函数
  • 在目标数据库的行计数查询中使用 COUNT_BIG
  • 添加设置以便在合并操作中仿真 Oracle 的空字符串行为

SSMA v8.20

SSMA for Oracle 的 v8.20 版本包含以下更改:

  • 添加对分区表的支持
  • 添加 SKIP LOCKED 子句的转换

SSMA v8.19

SSMA for Oracle 的 v8.19 版本包含以下更改:

  • 在客户端存储和运行测试用例
  • 当用户定义列名称与系统函数匹配时,改进 SELECT 列表中的解析逻辑
  • 忽略系统定义列 (SYS_STS*) 和索引 (SYS_IL*)
  • 修复重新连接到 Oracle 数据库时,对象树中的包消失的问题。
  • 修复 32 位 SSMA 包中 Azure SQL 数据库的 CLR 程序集部署问题

SSMA v8.18

SSMA for Oracle 的 v8.18 版本包含以下更改:

  • 修复 Oracle 12c 版本 1 (12.1) 的序列加载

SSMA v8.17

SSMA for Oracle 的 v8.17 版本包含以下更改:

  • 增加对计算列的支持
  • 修复在表达式中使用区域性特定的运算符字符时的分析程序问题
  • 更新 HTML 评估报告以使用新式编辑器显示 SQL 文本

SSMA v8.16

SSMA for Oracle 的 v8.16 版本包含以下更改:

  • 添加对标识列的支持
  • 删除对旧版分析程序的支持
  • 修复了对象不从数据库刷新的问题

SSMA v8.15

除了多项辅助功能改进之外,SSMA for Oracle 的 v8.15 版本还包含以下更改:

  • 添加设置以便为 %type%rowtype 属性使用完整的类型规范
  • 改进评估报告以在新式浏览器中使用
  • 使用由数据库提供的颁发机构进行 Microsoft Entra/Azure AD 身份验证
  • 改进了从文件加载的语句的命名

SSMA v8.14

除了可确保为残障人士提供更多辅助功能的多项改进,SSMA for Oracle 的 v8.14 版本还包含以下更改:

  • 在项目元数据中存储完整的源/目标服务器版本(需升级项目)
  • 尽可能将 DBA 数据字典用于对象发现
  • 修复多个分析程序问题(PIVOT/UNPIVOTMERGE、替代引用)
  • 修复触发器中 INSERTING/DELETING/UPDATING 特殊函数的转换

SSMA v8.13

SSMA for Oracle 的 v8.13 版本包含以下更改:

  • 修复本地程序中 SQLCODESQLERRM 特殊函数的转换
  • 转换过程和函数调用时,请考虑隐式类型强制转换
  • 改进源连接字符串的日志记录,帮助排查连接问题

SSMA v8.12

SSMA for Oracle 的 v8.12 版本包含以下更改:

  • 支持 INSERTMERGEDELETE/UPDATE// 语句中的因式分解子句子查询
  • 有多路径或循环引用时,ON DELETE SET NULL 子句的转换消息
  • 改进了从动态 SQL 字符串创建的游标转换
  • 将 ODP.NET 更新到 v19.8

SSMA v8.11

SSMA for Oracle 的 v8.11 版本包含以下更改:

  • 支持 INSERT ... VALUES 语句中的子查询
  • 改进了 COMMIT 语句的转换
  • 修复 CONNECT BY LEVEL 子句转换中的错误
  • 更新了分析程序错误恢复逻辑,以降低其贪婪
  • 使用 MSAL.NET 库进行交互式 Microsoft Entra/Azure AD 身份验证

SSMA v8.10

SSMA for Oracle 的 v8.10 版本包含小幅度性能改进以及以下更改:

  • 修复索引整理表的测试程序问题
  • 修复扩展包中的扩展存储过程名称

SSMA v8.9

SSMA for Oracle 的 v8.9 版本包含以下更改:

  • 动态 SQL 字符串文本的转换
  • LAGFIRST_VALUELAST_VALUE 分析函数的转换
  • 添加对基本 ALTER TRIGGER/ALTER INDEX DDL 的支持(启用/禁用等)
  • 改进了内置函数名称匹配列的转换
  • 为可 NULL 列生成经筛选唯一索引
  • 改进了 Azure Synapse Analytics 的变量声明转换
  • 修复项目名称中的特殊字符问题

SSMA v8.8

SSMA for Oracle 的 v8.8 版本包括:

  • SQL Server 对象同步稳定性改进
  • 评估和转换过程中的 GUI 性能改进
  • 改进了分析 OVER PARTITION 子句的转换
  • 新的 LEAD 分析函数的转换
  • 新的子查询因式分解子句的转换
  • 新的 Azure Synapse Analytics 的 REPLICATE 分布选项
  • 全新的 Oracle 语法分析程序,可进一步提高转换性能

SSMA v8.7

SSMA for Oracle 的 v8.7 版本在图形用户界面中进行了小幅度修复和性能改进。

此外,SSMA for Oracle 现在允许根据“高级对象选择”对话框中的有效性状态来筛选对象。

重要

使用 SSMA v8.5 及更高版本时,.NET 4.7.2 是安装先决条件。 如果需要安装此版本,可以从此处下载运行时文件。

SSMA v8.6

除了一组旨在提高可用性和性能的针对性修补程序外,SSMA for Oracle 的 v8.6 版本通过添加一个使用户能够在转换后的代码中省略 SSMA 扩展属性的设置进行了增强。

若要利用此设置,请在 SSMA for Oracle 中导航到“工具>项目设置>常规>转换”,然后在“杂项”下,将“省略扩展属性”设置的值更新为“是”。

Omit Extended Properties setting

而且,SSMA for Oracle 现在提供改进后的 XMLTABLE 子句分析。

重要

使用 SSMA v8.5 及更高版本时,.NET 4.7.2 是安装先决条件。 如果需要安装此版本,可以从此处下载运行时文件。

SSMA v8.5

SSMA for Oracle 的 v8.5 版本进行了增强,支持 Microsoft Entra/Azure AD 身份验证和对 SQL Server 中的 JSON 功能的基本支持,以及一组旨在提高可用性和性能的针对性修补程序。

此外,增强的 SSMA for Oracle 还支持:

  • 将发现的选定对象数量限制为 990(Oracle 的 WHERE .. IN (..) 子句限制为 1000 项)。
  • RAWUNIQUEIDENTIFIER 的数据迁移。
  • 分析 PARALLEL_ENABLE 子句。

最后,SSMA for Oracle 的 v8.5 版本现在还提供:

  • 改进了已转换打包常量的性能。
  • 将用于 .NET 的 Oracle 数据提供程序更新到版本 19.5.0。

重要

使用 SSMA v8.5 时,.NET 4.7.2 是安装先决条件。 如果需要安装此版本,可以从此处下载运行时文件。

SSMA v8.4

SSMA for Oracle 的 v8.4 版本通过旨在解决辅助功能问题的针对性修补程序进行增强,并修复了与 SQL Server 2016 及后续版本的最大索引列(允许 32 列而不是 16 列)相关的错误。

此外,此版本的 SSMA for Oracle 添加了将 SYS_REFCURSOR 作为存储过程 OUT 参数进行转换。

重要

使用 SSMA 版本 7.4 到 8.4 时,.NET 4.5.2 是安装先决条件。

SSMA v8.3

SSMA for Oracle 的 v8.3 版本通过旨在提高质量和转换指标的针对性修补程序进行增强。 此外,此版本的 SSMA for Oracle 提供了以下修复:

  • 解决辅助功能问题。
  • 添加对 SQL Server 中 hierarchyid 类型的基本支持。
  • 解决通过同义词调用函数的未知返回类型问题。
  • 将 ODP.NET 更新为 v19.3。

SSMA v8.2

SSMA for Oracle 的 v8.2 版本经过增强,以便:

  • 添加对 DBMS_OUTPUT.ENABLE/DISABLE 的支持。
  • 在默认数据迁移查询中为 BINARY_DOUBLE 列删除 CAST AS FLOATBINARY_FLOAT
  • 修复序列刷新(若当前值已更改)。
  • 修复与错误解释伪列(如 ROWNUM 等)相关的错误(若存在名称相同的列)。
  • 修复在转换具有不明确的未解析标识符的 FOR 循环时发生的崩溃。

此外,此版本还包括一组旨在改善质量和转换指标的针对性修补程序,以及针对以下各项的修补程序:

  • 数据迁移后禁用的非群集索引的问题。
  • 在无提示安装期间检测 .NET Framework。
  • 下载新版本时发生的间歇性崩溃。

注意

自动更新的已知问题可能导致从 SSMA v8.1 更新到 v8.2 失败。 如果遇到此错误,请下载新版本并手动安装。

SSMA v8.1

SSMA for Oracle 的 v8.1 版本通过旨在提高质量和转换指标的针对性修补程序进行增强。

注意

自动更新的已知问题可能导致从 SSMA v8.0 更新到 v8.1 失败。 如果遇到此错误,请下载新版本并手动安装。

SSMA v8.0

SSMA for Oracle 的 v8.0 版本通过旨在提高质量和转换指标的针对性修补程序进行增强。 此版本还提供以下新功能:

  • 支持 Azure SQL 托管实例作为目标。 现在你可以创建面向 Azure SQL 托管实例的新项目:

    SQL MI project

    注意

    更新后的 SSMA for Oracle 扩展包允许在 Azure SQL 托管实例 上远程安装:

    SSMA for Oracle Extension Pack

    如果目标是 Azure SQL 托管实例,部分功能(包括测试程序和服务器端数据迁移等)不受支持。 在此处阅读详细信息。

  • 转换后修复顾问。 你可在此处了解相关详细信息。

  • 初步数据库/架构选择。

    连接到源时,用户现在可以选择感兴趣的数据库/架构。 仅选择计划迁移的架构将节省初始连接期间的时间,并提高总体 SSMA 性能。

    SSMA filter objects

  • 能够使用官方的托管 .NET 驱动程序连接到 Oracle。 OCI 驱动程序不再是在 Oracle 中使用 SQL Server 迁移助手的先决条件。

  • 默认情况下,能够将 ROWIDUROWID 映射到 VARCHAR。 在 uniqueidentifier 的基础上进行了更改,以适应显式 ROWID 列的数据迁移。

SSMA v7.10

SSMA for Oracle 的 v7.10 版本包含以下更改:

  • 针对性修补程序旨在提供额外的安全和隐私保护,以满足全球要求的变化。
  • 与分层查询相关的转换改进。

SSMA v7.9

SSMA for Oracle 的 v7.9 版本包含以下更改:

  • 旨在改进质量和转换指标的目标修补程序。
  • 支持将“Continue”语句从 Oracle 迁移到 SQL Server。
  • 支持在 SSMA 命令行中更改数据类型映射和项目首选项。
  • 支持使用 SQL Server Integration Services (SSIS) 来迁移数据。 转换架构后,可以使用右键单击上下文菜单选项来创建 SSIS 包。
  • SSMA 中的 Azure SQL 数据库连接对话框也已更改,以指定完全限定的服务器名称。 在早期版本的 SSMA 中,必须在项目设置中显式提及 Azure SQL 数据库前缀。

SSMA v7.8

SSMA for Oracle 的 v7.8 版本包含以下更改:

  • 支持:
    • IN 子句的行表达式。
    • 隐式类型强制转换。
    • Azure SQL 数据库的 UID 转换。
  • 更改“项目设置”中突出显示的类型映射。
  • 用户能够禁用遥测。

SSMA v7.7

SSMA for Oracle 的 v7.7 版本包含以下更改:

  • SSMA for Oracle 通过提高质量和转换指标的针对性修补程序进行了增强。
  • 根据客户的普遍需求,SSMA for Oracle 的 32 位版本已恢复。 与以前(v7.4 之前)的实现相比,它有两个安装程序包,但它们不能并排安装。 因此,必须根据你拥有的连接组件,选择最合适的版本。 在可能的情况下,最好使用 64 位版本。
  • 现在正式支持 SQL Server 2017,以及在 Linux 上支持 Oracle 扩展包(新的远程安装选项)。 请注意,当在 Linux 上安装时,扩展包功能受到限制,因为不支持测试程序和服务器端数据迁移功能。
  • SSMA for Oracle 允许将具体化视图作为常规表进行迁移(可通过“项目设置”-“同步”-“发现具体化视图的后备表”中的设置进行配置)。>>

SSMA v7.6

SSMA for Oracle 的 v7.6 版本经过增强,旨在提高质量和转换指标以及支持 SQL Server 2017(公共预览版)的针对性修补程序。 对 Windows 和 Linux 上的 SQL Server 2017 的支持尚为公共预览版,不应用于生产迁移。

SSMA v7.5

SSMA for Oracle 的 v7.5 版本包含以下更改:

  • 采用多项改进进行增强,以确保改善面向残障人士的辅助功能。
  • 更新以改进针对性修补程序的质量和转换指标,例如,根据客户反馈优化数据迁移期间的日期和浮点型数据类型的处理。

SSMA v7.4

SSMA for Oracle 的 v7.4 版本包含以下更改:

  • SSMA for Oracle 现在支持 Azure Synapse Analytics 作为迁移的目标平台。

    New Project window

    • 支持 Data Warehouse 存储选项,如下图所示:

    storage options for data warehouse

    • 支持数据分发选项,如下图所示:

    data distribution for data warehouse

  • 查询超时”选项现在可在源和目标上的架构对象发现期间使用。

    query timeout option

  • 根据客户反馈,通过目标修补程序,改进了质量和转换指标。

重要

.NET 4.5.2 是安装 SSMA v7.4 的先决条件。 此外,从 v7.4 开始,SSMA 的 32 位版本即将停止使用。

SSMA v7.3

SSMA for Oracle 的 v7.3 版本包含以下更改:

  • 通过基于客户反馈的针对性修补程序改进了质量和转换指标。
  • 通过以下项公开的 SSMA 扩展性框架:
    • 将功能导出到 SQL Server Data Tools (SSDT) 项目。
      • 现在可以将架构脚本从 SSMA 导出到 SSDT 项目。 可以使用架构脚本进行其他架构更改并部署数据库。

        Save as SSDT project command

    • SSMA 可用于执行自定义转换的库。

SSMA v7.2

SSMA for Oracle 的 v7.2 版本包含以下更改:

  • 根据客户反馈,利用目标修补程序改进了质量和转换指标。
  • 遥测增强功能,提供更好的数据点来排查客户问题,并且提高 SSMA 的转换率。

SSMA v7.1

SSMA for Oracle 的 v7.1 版本包含以下更改:

  • Windows 和 Linux CTP1 上的 SQL Server 2017 现在是支持用于迁移的目标平台。 此功能以技术预览版提供,允许将架构和数据移动到目标 SQL Server 实例。
  • SSMA 现在支持自动更新,以便在最新版本的 SSMA 可用后立即下载。
  • SSMA 可安装二进制文件现在通过 Windows Installer 包文件 (.msi) 传递。

2016 年 5 月

SSMA for Oracle 的 2016 年 5 月版本包含以下更改:

  • 添加了对 SQL Server 2016 的支持。

  • 添加了 Oracle 闪回存档表到 SQL Server 时态表的转换。

    注意

    SSMA 不会从 Oracle 闪回数据存档表复制历史数据。 因此,必须在迁移过程中手动复制历史数据。 此外,尽管 SSMA 不会在 SQL Server 元数据资源管理器中显示历史记录表,因为它被视为系统表,但你可以在 SQL Server Management Studio 中查看历史记录表。

    SQL Server 2016 不支持多项 Oracle 闪回功能,包括:

    • Oracle 闪回事务查询
    • DBMS_FLASHBACK
    • 闪回事务
    • 闪回数据存档
    • 闪回表
    • 闪回删除
    • 闪回数据库
  • 添加了从 Oracle VPD 策略到 SQL Server 策略对象的转换(Oracle 的行级别安全性)。

  • 缩短了 Oracle 的初始加载时间。

  • 改进了分析程序和解析程序。

  • 取消了 .NET 2.0 的安装程序检查。

  • 将扩展包依赖项从 .NET 3.5 更新为 .NET 4.0。

  • 修复了 SSMA 控制台的 save-projectopen-project 命令。

  • 修复了 SSMA 控制台的 securepassword 命令。

  • 修复了初始加载的对象计数。

  • 修复了 Oracle 的字符数据类型转换。

  • 修复了全局设置中的错误。

2016 年 3 月

SSMA for Oracle 的 2016 年 3 月预览版添加了对以下各项的支持:

  • 迁移到 SQL Server 2016。
  • 迁移 Oracle 行级别安全性(有一些限制)。
  • 将内存表中的 Oracle 迁移到 SQL Server 列存储。

2016 年 1 月

SSMA for Oracle 的 2014 年 1 月维护版本包含以下更改:

  • 添加了对聚集索引的支持。
  • 修复了缓慢的 Oracle 架构查询 (RFC 5076207)。
  • 修复了从控制台连接到 Azure。
  • 为 SSMA 增加了视图日志菜单项 (RFC 5706203)。
  • 添加了遥测。

2014 年 7 月

SSMA for Oracle 的 2014 年 7 月版本包含以下更改:

  • 添加了对 Azure SQL 数据库的支持。
  • 将扩展包功能移动到架构以支持 Azure SQL 数据库。
  • 添加了对 Oracle 具体化视图的支持。
  • 添加了对 SQL Server 2014 内存优化表的支持。
  • 包含针对具有 1 万多个对象的数据库进行过测试的性能改进。
  • 增加了用于处理大量对象的 UI 改进。
  • 添加了已知 LOB 架构的突出显示。
  • 包含转换速度改进。
  • 添加了对在 UI 中显示对象计数的支持。
  • 报告大小减少 25% 以上。
  • 改进了未分析构造的错误消息。

2014 年 4 月

SSMA for Oracle 的 2014 年 4 月版本包含以下更改:

  • 添加了对 MS SQL Server 2014 的支持。
  • 添加了对 Oracle 12 和查询优化的支持。
  • 修复了有关转换至 Azure 的错误。
  • 修复了有关 IE 10 中不可见报告页的错误。

2012 年 1 月

SSMA for Oracle 的 2012 年 1 月版本添加了对 RowTypeRecordType 输入参数默认为 NULL 的支持。

2011 年 7 月

SSMA for Oracle 的 2011 年 7 月版本包含以下更改:

  • 添加了对将 Oracle 序列转换为 SQL Server 2012 (11.x) 序列生成器的支持。
  • 改进了数据迁移期间的错误报告。
  • 改进了使用保留字的语句转换。
  • 改进了函数中日期值的隐式转换。

2011 年 4 月

SSMA for Oracle 的 2011 年 4 月版本包含以下更改:

  • 合并的“SSMA for Oracle”产品,支持 SQL Server 2005 (9.x)、SQL Server 2008 (10.x) 和 SQL Server 2012 (11.x)。
  • 添加了对连接和迁移到 SQL Server 2012 (11.x) 的支持。
  • 增强的客户端数据迁移引擎,支持数据并行迁移。
  • 使用 SimpleBulk 日志恢复模式改进了数据迁移性能。
  • 添加了对由早期版本的 SSMA(v4.0 和 v4.2)创建的项目后向兼容性的支持。
  • 添加了使用旧版 SSMA(v4.0 和 v4.2)安装 SSMA for Oracle v5.0 产品并排 (SxS) 的功能。
  • 添加了对在 PL/SQL 块中报告用户定义类型(包括子类型、VARRAYNESTED TABLE、对象表和对象视图),以及它们的使用情况和特别错误消息的支持。

2010 年 7 月

SSMA for Oracle 的 2010 年 7 月版本添加了:

  • 支持迁移到 SQL Server 2008 R2。
  • 用于命令行执行的新 SSMA 控制台应用程序。
  • 支持使用服务器端和客户端数据迁移引擎进行数据迁移。
  • 支持数据迁移中的“Custom SELECT”语句。
  • 支持从 Oracle 11g R2 进行迁移。

2008 年 6 月

SSMA for Oracle 的 2008 年 6 月版本包含以下更改:

  • 添加了对评估报告的改进,包括同义词的其他信息、可分析对象的原始源、面板和 SQL Server 徽标删除以及布局持久性。
  • 在对象转换中添加了改进:
    • 添加了包 DBMS_LOBDBMS_SQL 转换。
    • 修订了联接转换。
    • 修改集合和记录转换,现在通过每个字段的单独变量发布简单情况下的转换记录。
    • 对记录和集合实现的改进。
    • 添加了窗口聚合函数。
    • 添加了 ROLLUP/CUBE 子句。
    • NEXTVAL/CURVAL 的改进。
    • 添加了 SET 子句、分组集和分组 ID 中的列分组。
    • 添加了 MERGE 语句。
    • 添加了对新的日期/时间类型以及将记录和集合作为 CLR 数据类型进行转换的支持。
  • 添加了新的测试程序功能。 现在可以使用测试程序将表当做对象进行测试,可改变测试用例中多个可测试对象的调用顺序,用户可以使用记录和集合作为参数与返回值来测试程序和函数,而且添加了依赖项分析器来只检查已使用的表。

2007 年 8 月

SSMA for Oracle 的 2007 年 8 月版本添加了:

  • 新的测试程序组件让你可以创建、管理和运行测试用例,以便验证转换后的 SQL 代码。
  • 向 SQL 转换器添加了对子类型、集合以及本地模块转换的支持。
  • 新的同步功能让你可以在特定对象和 SQL Server 数据库之间进行同步。
  • 新的转换选项。

2007 年 4 月

2007 年 4 月发布的 SSMA for Oracle 是首个版本。