---
title: "为已有表设置透明加密 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: 为已有表设置透明加密 功能适用性 OceanBase 数据库社区版暂不支持数据透明加密。 本节主要介绍如何为已有表开启透明加密。 OceanBase 数据库的数据加密单位为表空间（Tablespace）。OceanBase 数据库并非一个多数据文件的数据库系统，表空间是为了兼容而设计的概念，可以简单理解为表空间是一组…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# 为已有表设置透明加密

更新时间：2026-04-07 20:57:20

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/600.manage/500.security-and-permissions/500.data-encryption/400.data-storage-encryption/200.data-storage-encryption-of-mysql-mode/200.set-storage-encryption-for-existing-tables-of-mysql-mode.md)

#### 功能适用性

OceanBase 数据库社区版暂不支持数据透明加密。

本节主要介绍如何为已有表开启透明加密。

OceanBase 数据库的数据加密单位为表空间（Tablespace）。OceanBase 数据库并非一个多数据文件的数据库系统，表空间是为了兼容而设计的概念，可以简单理解为表空间是一组表的集合。

本节以在加密表空间 `sectest_ts1` 上为已有表 `t1` 开启加密为例，提供透明加密的操作指导。

## 使用限制

- 系统租户不能开启加密。
 - 租户配置透明加密后，除非租户重建，否则无法再切换为其他加密模式。

## 前提条件

在配置透明加密之前，需要先生成租户主密钥。请参见 [生成租户主密钥（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005375453)。

## 创建加密表空间

租户主密钥生成完成后，即可创建加密表空间。

1. 管理员用户登录到集群的 MySQL 租户。
 2. 创建表空间并指定加密算法。

   可以指定加密算法 `aes-256`、`aes-128`、`aes-192`、`sm4-cbc`、`aes-128-gcm`、`aes-192-gcm`、`aes-256-gcm`、`sm4-gcm`，如果使用 `'y'`，则表示默认使用 aes-256。

   示例如下：

   ```sql
   CREATE TABLESPACE sectest_ts1 encryption = 'y';

   ```

## 将已有表移入加密表空间

1. 普通用户登录到数据库的 MySQL 租户。
 2. 进入表所在的数据库后，将表 `t1` 移入表空间 `sectest_ts1` 中。

   ```sql
   ALTER TABLE t1 TABLESPACE sectest_ts1;

   ```

## 对表进行透明加密

1. 普通用户登录到数据库的 MySQL 租户。
 2. 设置表的 `progressive_merge_num` 值，给表做全量合并或渐进合并。

   `progressive_merge_num` 用于设置表的渐进合并的轮次，默认为 `0`，表示进行增量合并，100 轮次完成加密。如果值设置为 `1`，则表示进行全量合并。

   在给表做合并操作时，通常使用全量合并方式，如果表中的数据量很大，开启全量合并可能会导致单次合并时间过长，则建议使用渐进合并。

      - 对表执行全量合并

       a. 将 `progressive_merge_num` 的值设置为 `1`。

       ```sql
       ALTER TABLE t1 set progressive_merge_num = 1;

       ```

       b. 手动发起一轮合并。

       手动发起合并的操作请参见 [手动触发合并](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013687)。

       #### 说明

       对表执行全量合并后，待全量合并完成，所有表数据均已加密完成，您可以直接通过查看 `V$OB_ENCRYPTED_TABLES` 视图来确认加密完成情况。

       c. 待合并完成后，再将 `progressive_merge_num` 的值设置为 `0`。

       ```sql
       ALTER TABLE t1 set progressive_merge_num = 0;

       ```
      - 对表执行渐进合并

       a. 将 `progressive_merge_num` 的值设置为大于 `1` 的数。

       示例如下：

       ```sql
       ALTER TABLE t1 SET progressive_merge_num = 3;

       ```

       b. 手动发起多轮渐进合并，使表和其上的索引的所有存量宏块完成加密。

       发起一轮渐进合并的语句如下：

       ```sql
       ALTER SYSTEM MAJOR FREEZE;

       ```

       #### 说明

       渐进合并过程中，您可以通过查询 `V$OB_ENCRYPTED_TABLES` 视图来实时关注加密的完成情况。
 3. 完成后，您可以查看以下视图，确认所有宏块是否已完成加密。

   示例如下：

   ```sql
   SELECT * FROM oceanbase.V$OB_ENCRYPTED_TABLES;
   +----------+------------+---------------+---------------+-----------+----------------------------------+-------------+------------------+------------------+--------+--------+
   | TABLE_ID | TABLE_NAME | TABLESPACE_ID | ENCRYPTIONALG | ENCRYPTED | ENCRYPTEDKEY                     | MASTERKEYID | BLOCKS_ENCRYPTED | BLOCKS_DECRYPTED | STATUS | CON_ID |
   +----------+------------+---------------+---------------+-----------+----------------------------------+-------------+------------------+------------------+--------+--------+
   |   500010 | t1         |        500009 | aes-256       | YES       | xxxxxxxxxxxxxxxxxxxxxxxxxxxx7882 |      xxxx08 |                0 |                0 | NORMAL |      0 |
   +----------+------------+---------------+---------------+-----------+----------------------------------+-------------+------------------+------------------+--------+--------+
   1 row in set

   ```

   根据查询结果，如果 `BLOCKS_DECRYPTED` 字段的值为 `0`，则表示所有宏块都已完成加密。

   更多视图 `V$OB_ENCRYPTED_TABLES` 的字段及说明信息，参见 [V$OB_ENCRYPTED_TABLES](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002015164)。

## 相关文档

- [为新创建的表设置透明加密](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005375456)
 - [解除加密](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013503)

 上一篇 下一篇 ![有帮助](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) 咨询热线
