加密库
语法格式
ENCRYPT DATABASE BY encry_name|encry_id [CASCADE]
参数解释
参数名称 | 参数解释 |
---|---|
encry_name | 加密机名称 |
encry_id | 加密机编号 |
CASCADE | 是否加密原有表 |
执行步骤
登录SYSSSO用户创建加密机。
登录SYSDBA用户创建库并在库下创建表。
查看存储文件下存储加密情况和未加密存储情况。
对库进行加密。
查看存储文件下存储加密情况和未加密存储情况。
预期结论
- 加密前能够明文查询到表中的数据。
- 加密后不再能明文查询到表中的数据。
示例
示例1
sql--使用SYSDBA用户创建测试库ENC1、ENC2 SQL> CREATE DATABASE ENC1; SQL> CREATE DATABASE ENC2; --在ENC1与ENC2库中分别创建表插入数据 SQL> USE ENC1 SQL> CREATE TABLE enc1_tab(enc VARCHAR); SQL> INSERT INTO enc1_tab VALUES('qwerqwer001'); SQL> USE ENC2 SQL> CREATE TABLE enc2_tab(enc VARCHAR); SQL> INSERT INTO enc2_tab VALUES('asdfasdf001'); SQL> CHECKPOINT;
- 上述示例,在未使用加密机加密存储文件情况下,数据“qwerqwer001”与“asdfasdf001”在数据库存储文件中以明文方式进行存储。
- 使用加密机“ENCRYPTOR1”加密库“ENC1”新增对象数据,使用加密机“ENCRYPTOR1”加密库“ENC2”所有数据。
示例2
sql--使用SYSDBA用户 SQL> USE ENC1 SQL> ENCRYPT DATABASE BY 'ENCRYPTOR1'; SQL> INSERT INTO enc1_tab VALUES('qwerqwer002'); SQL> CREATE TABLE enc1_tab_1(enc VARCHAR); SQL> INSERT INTO enc1_tab_1 VALUES('qwerqwer003'); SQL> USE ENC2 SQL> ENCRYPT DATABASE BY 'ENCRYPTOR1' CASCADE; SQL> INSERT INTO enc2_tab VALUES('asdfasdf002'); SQL> CREATE TABLE enc2_tab_1(enc VARCHAR); SQL> INSERT INTO enc2_tab_1 VALUES('asdfasdf003'); SQL> CHECKPOINT; SQL> USE SYSTEM SQL> SELECT db_name,encry_id FROM SYS_DATABASES WHERE db_name IN ('ENC1','ENC2'); DB_NAME | ENCRY_ID | ------------------------------------------------------------------------------ ENC1| 2 | ENC2| 2 |
- 上述示例,在数据库存储文件中分别查询“ENC1”和“ENC2”库中插入数据。
- 在“ENC1”库中,表“ENC1_TAB”中数据“qwerqwer001”、“qwerqwer002”仍然以明文方式存储于数据库存储文件;新建表“ENC1_TAB_1”中数据使用密文存储,在数据库存储文件中已无法查到“qwerqwer003”数据。
- 在“ENC2”库中,表“ENC2_TAB”与表“ENC2_TAB_1”的数据均以密文方式存储于数据库存储文件,在数据库存储文件已无法查到插入的数据。