---
title: 系统包安装与升级-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于系统包安装与升级相关的常见问题和使用技巧，帮助您快速解决系统包安装与升级的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 系统包安装与升级

更新时间：2026-05-29 08:46

适用版本： V2.2.x、V3.1.x、V3.2.x 内容类型：TechNote  

OceanBase 系统包是基于 PL 编写的一套扩展功能，以供用于进行数据的管理和 SQL 功能的扩展。在默认情况下，安装 OceanBase 数据库企业版会自动安装系统包。如果在调用系统包时报对象不存在的错误，需要检查当前 OceanBase 数据库版本是否有该系统包。本文讲述手动安装、升级系统包的过程。

## 适用版本

OceanBase 数据库 V4.0 之前的所有版本。

## 查看已安装的系统包

- SYS 租户相关视图：

     - `__all_virtual_package`
     - `__all_virtual_routine`
 - Oracle 租户相关视图：

     - `DBA_SOURCE`：存储对象的文本源
     - `DBA_OBJECTS`：所有数据库对象
     - `DBA_PROCEDURES`：函数和存储过程

## 系统包安装和升级

1. 从对应的 OceanBase 数据库安装文件（RPM 包）里把 `admin` 目录下的系统包复制到当前 OBServer 的 `/home/admin/oceanbase/admin` 目录中。
 2. 在 SYS 租户中查看 `__all_virtual_package` 中是否有 `__DBMS_UPGRADE` 系统包升级程序。

   若无，则按照下面的步骤创建系统包升级程序。

      1. 打开升级模式。

        ```
        alter system set enable_upgrade_mode =true;

        ```
      2. 设置 SYS 租户使用 Oracle 兼容语法，以便可以执行 CREATE PACKAGE 的操作。

        ```
        set ob_compatibility_mode='oracle';

        ```
      3. 创建 `__DBMS_UPGRADE` 系统包升级程序。

        ```
        DELIMITER /

        CREATE OR REPLACE PACKAGE "__DBMS_UPGRADE" IS
        PROCEDURE UPGRADE(package_name VARCHAR2);
        PROCEDURE UPGRADE_ALL;
        END;
        /

        CREATE OR REPLACE PACKAGE BODY "__DBMS_UPGRADE" IS
        PROCEDURE UPGRADE(package_name VARCHAR2);
        PRAGMA INTERFACE(c, UPGRADE_SINGLE);
        PROCEDURE UPGRADE_ALL;
        PRAGMA INTERFACE(c, UPGRADE_ALL);
        END;
        /

        ```
 3. 执行升级程序。

      1. 通过 OBClient 客户端使用 `root@sys` 直连 OBServer（不能通过 OBProxy 连接，否则可能会报语法错误）。
      2. 调用 `__DBMS_UPGRADE` 执行安装、升级。

        ```
        CALL "__DBMS_UPGRADE".UPGRADE_ALL();    # 安装升级所有在 admin 目录下的包

        ```

        或者

        ```
        CALL "__DBMS_UPGRADE".UPGRADE('DBMS_STATS');      # 安装指定的包：DBMS_STATS

        ```
      3. 设置 SYS 租户使用 MySQL 兼容语法，并关闭升级模式。

        ```
        set ob_compatibility_mode='mysql';
        alter system set enable_upgrade_mode = false;

        ```

上一篇

[调用 PL 错误，错误代码 4161/ORA-00600](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000001049)

下一篇

[找不到系统包如何处理？](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000001056) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
