IvorySQL 在阿里云上验证 Oracle 兼容性:UTL_URL.ESCAPE/UNESCAPE 与 SYS_CONTEXT

简介: 该参赛项目为2026直通乌镇·太乙开源竞技赛作品,基于IvorySQL补全Oracle兼容能力:已实现并合入`UTL_URL.ESCAPE/UNESCAPE`(#1728/#1748),完成`SYS_CONTEXT`会话参数支持(#1936,待合入)。全程在ARM架构倚天云服务器上开发验证,践行“真机对照、实测为准”的迁移理念。

环境与配置

华东 2(上海)按量倚天 ECS,规格 ecs.g8y.xlarge(4 vCPU / 16 GiB),Ubuntu 24.04 ARM,公网 IP 直连 SSH。编译 IvorySQL + make check + oracle-check 耗时 7 分 40 秒。

# 启动实例
aliyun ecs StartInstance --RegionId cn-shanghai --InstanceId <实例ID>

# SSH 连接
ssh -i ~/.ssh/id_rsa root@公网IP

代码实现:UTL_URL.ESCAPE / UNESCAPE

IvorySQL 1728(ESCAPE)和 1748(UNESCAPE)已合并。

保留字符仅 ;/?:@&=+$,。非保留字符(字母、数字、-_.!~*'())默认放行。

-- 示例
SELECT UTL_URL.ESCAPE('https://example.com/a%20b#c');
-- 预期输出:https%3A%2F%2Fexample.com%2Fa%20b%2523c

escape_reserved_chars 参数控制分隔符一起转义。Oracle 默认 false,多字节按 url_charset 转十六进制。

会话问话:SYS_CONTEXT('USERENV'...)

1936 号检查通过,但 9 月 25 日未合并。

SELECT SYS_CONTEXT('USERENV', 'SERVER') AS server;
SELECT SYS_CONTEXT('USERENV', 'INSTANCE') AS instance;
SELECT SYS_CONTEXT('USERENV', 'NETWORK_PROTOCOL') AS protocol;
SELECT SYS_CONTEXT('USERENV', 'SERVICE_NAME') AS service;
  • SERVER:DEDICATED(IvorySQL 每连接独立后端进程)
  • INSTANCE:1
  • INSTANCE_NAME / SERVICE_NAME:当前库名
  • NETWORK_PROTOCOL:bequeath(本地) / tcp(网络)

性能数据与结果

项 结果
UTL_URL.ESCAPE (1728) 已合并
UTL_URL.UNESCAPE (1748) 已合并
SYS_CONTEXT 检查 (1936) 9 月 25 日未合并,不算成绩
编译 + make check 249/249 通过
oracle-check 25/25 通过(UTF8)
机器规格 ecs.g8y.xlarge,Ubuntu 24.04 ARM
总耗时 编译 2 分 30 秒(缓存),make check 249 项 7 分 40 秒

分期配置

  1. 实例准备

    • 购买 ecs.g8y.xlarge,地域 cn-shanghai,Ubuntu 24.04 ARM
    • 网络:公网 IPv4,按使用流量
    • 安全组:仅放自己 IP,TCP 22
  2. Oracle 容器部署

    • Docker 拉取 Oracle XE 容器(11.2/18/21)
    • 启动后确认容器可用
  3. IvorySQL 编译

    • 克隆仓库,make
    • make check
    • make oracle-check
  4. 测试验证

    • 连接 IvorySQL 实例
    • 执行上述 SQL 查询
    • 对比 Oracle 容器输出
  5. 停机

    • aliyun ecs StopInstance --RegionId cn-shanghai --InstanceId <ID> --StoppedMode StopCharging

常见问题

  • 库编码改成 LATIN1 后,5 项检查失败(非代码错误,预期 UTF8)
  • 公网 IP 下次重启地址会变,固定 IP 建议备案

(正文约 3200 字)

附录:详细配置命令

# 停止节省停机
aliyun ecs StopInstance --RegionId cn-shanghai --InstanceId <ID> --StoppedMode StopCharging

# 确认状态
aliyun ecs DescribeInstanceStatus --RegionId cn-shanghai --InstanceId <ID>

IvorySQL 编译目录下运行 make check。Oracle 用容器,实例停机时容器一起停止。

相关文章
|
5天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
5902 8
|
3天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
1066 2
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
17天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
3258 10
|
3天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
507 2
|
16天前
|
IDE 开发工具
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
Qoder国际版上线全新内置大模型Sonus(/ˈsoʊnəs/),全球领先,专精超长任务执行与电脑操作(Computer Use)。配合Qoder桌面端0.2.3版本,可自主完成编程、金融建模、科研及表格制作等复杂工作。现全面支持Qoder全系产品,效率提升3.2倍。
1826 8
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
|
11天前
|
缓存 IDE Java
【保姆级】Android Studio下载、安装和汉化教程(2026最新)
Android Studio 是 Google 官方推出的免费 Android 应用开发集成环境,基于 IntelliJ IDEA,内置模拟器、调试器、性能分析及 Compose 界面工具,功能全面,文档丰富,是安卓开发首选工具。(239字)
1240 1