---
title: "为新创建的表设置透明加密 - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: 为新创建的表设置透明加密 本节主要介绍如何创建加密表空间来对新创建的表实现数据透明加密。 OceanBase 数据库的加密在形式上尽量兼容 Oracle 数据库，数据的加密单位为表空间（Tablespace）。OceanBase 数据库并非一个多数据文件的数据库系统，表空间是为了兼容而设计的概念，可以简单理解为表空间…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 为新创建的表设置透明加密

更新时间：2026-07-15 22:01:30

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/600.manage/500.security-and-permissions/500.data-storage-encryption/300.data-storage-encryption-of-oracle-mode/100.configure-internal-storage-encryption-of-oracle-mode.md)  

本节主要介绍如何创建加密表空间来对新创建的表实现数据透明加密。

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

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

#### 注意

开启 TDE 功能后，`UPDATE` 场景性能无影响，但其他场景的性能略有损耗。具体情况参见[透明数据加密 TDE 测试报告](../150.transparent-data-encryption-tde-test-report.md)。

## 配置 internal 方式的透明加密

internal 方式的存储主密钥，其加密信息主要在内部表中管理。为了避免日志回放时的循环依赖，该模式中的 clog 不做加密。

1. 管理员用户登录到集群的 Oracle 租户。
 2. 执行以下语句，开启 internal 方式的透明加密。

   配置项 `tde_method` 用于设置透明表空间加密的方式，默认为 `none` ，表示关闭透明表空间加密。

   更多配置项 `tde_method` 的说明信息，参见 [tde_method](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000220371)。

   #### 注意

   配置项 `tde_method` 一旦设置，就不能再修改。

   ```shell
   obclient> ALTER SYSTEM SET tde_method='internal';

   ```
 3. 执行以下语句，确认该租户上所有 OBServer 节点上的配置项 `tde_method` 的值均为 `internal`。

   ```shell
   obclient> SHOW PARAMETERS LIKE 'tde_method';

   ```
 4. 创建 Keystore。

   SQL 语句如下：

   ```shell
   obclient> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE keystore_name IDENTIFIED BY password;

   ```

   示例：

   ```shell
   obclient> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE sectest1 IDENTIFIED BY **3**;

   ```
 5. 开启 Keystore。

   SQL 语句如下：

   ```shell
   obclient> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password;

   ```

   其中，`password` 为上一步设置的 Keystore 的密钥。

   示例：

   ```shell
   obclient> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY **3**;

   ```
 6. 执行以下语句，生成主密钥。

   ```shell
   obclient> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password;

   ```

   语句中的 `password` 即为之前设置的 Keystore 的密钥。

   示例：

   ```shell
   obclient> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY **3**;

   ```
 7. 创建表空间并指定加密算法。

   可以指定加密算法 `aes-256`、`aes-128`、`aes-192`、`sm4-cbc`、`aes-128-gcm`、`aes-192-gcm`、`aes-256-gcm`、`sm4-gcm`。

   示例如下：

   ```shell
   obclient> CREATE TABLESPACE sectest_ts1 ENCRYPTION USING 'aes-256';

   ```

## 在加密的表空间中创建新表

1. 普通用户登录到 Oracle 租户。
 2. 创建表并指定表空间。

   ```shell
   obclient> CREATE TABLE t1 (id1 int, id2 int) TABLESPACE sectest_ts1;

   ```

   创建后，该表对应的任何事务都需要加密。
 3. 确认表空间内的表是否标记为加密。

   执行以下语句，查看 `encryptionalg` 是否为之前设置的 `aes-256`。

   ```shell
   obclient> SELECT table_name,encryptionalg,encrypted FROM V$OB_ENCRYPTED_TABLES;
   +------------+---------------+-----------+
   | TABLE_NAME | ENCRYPTIONALG | ENCRYPTED |
   +------------+---------------+-----------+
   | T1         | aes-256       | YES       |
   +------------+---------------+-----------+
   1 row in set

   ```

   `encryptionalg` 为 `aes-256`，且 `encrypted` 为 `YES` 则表示表加密配置成功。

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

## 相关文档

- [为已有表设置透明加密](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218711)
 - [解除加密](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218712)

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