为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:达梦8
【操作系统】:centos7
【CPU】:
【问题描述】*:
刚做了个实验,初步能确认通过MOVE TABLESPACE方式将表数据从非加密表空间迁移至加密表空间后,数据内容有加密处理。
我使用的DM版本为:--03134284132-20231226-213242-20081
不知你那版本如何,建议你也做实验验证一下,以确保结果符合预期。
测试过程如下:
--创建测试用表空间
--非加密表空间
CREATE TABLESPACE TS_NOENC DATAFILE 'D:\TS_NOENC.DBF' SIZE 32;
--加密表空间,加密算法:DES_ECB_NOPAD
CREATE TABLESPACE TS_ENCED DATAFILE 'D:\TS_ENCED.DBF' SIZE 32 ENCRYPT WITH DES_ECB_NOPAD BY "tswcbYY1000jsjhFL!";
--创建测试用表,默认存储于非加密表空间中
CREATE TABLE T_TST_ENC
(
A INT,
B VARCHAR2(100)
)
STORAGE(ON TS_NOENC);
--插入及几条测试记录
INSERT INTO T_TST_ENC VALUES(1,'ABCDEFG'),(2,'abcdefg'),(3,'11223344'),(4,'55667788');
COMMIT;
--查询表索引信息
SELECT IDX.NAME
,DECODE(IDX_INFO.XTYPE & 0x01,0x00,'聚集索引(CLUSTER)') AS INDEX_TYPE
,IDX_INFO.GROUPID,IDX_INFO.ROOTFILE,IDX_INFO.ROOTPAGE
,DF.PATH
,RAWTOHEX(IDX_INFO.ROOTPAGE * PAGE) AS DATAPOS
FROM SYSOBJECTS TAB
,SYSOBJECTS IDX
,SYSINDEXES IDX_INFO
,V$DATAFILE DF
WHERE TAB.NAME = 'T_TST_ENC'
AND TAB.ID = IDX.PID
AND IDX_INFO.ID = IDX.ID
AND DF.GROUP_ID = IDX_INFO.GROUPID
AND DF.ID = IDX_INFO.ROOTFILE;
--查询结果
NAME INDEX_TYPE GROUPID ROOTFILE ROOTPAGE PATH DATAPOS
INDEX33743640 聚集索引(CLUSTER) 15 0 16 D:\TS_NOENC.DBF 00020000
/*
使用UltraEdit打开表空间文件,并定位到数据位置
能看到表中数据以明文形式存储,很容易释读出来
*/
00020000h: 0F 00 00 00 10 00 00 00 FF FF FF FF FF FF FF FF ; ........
00020010h: FF FF FF FF 14 00 00 00 00 00 00 00 78 84 F3 40 ; ........x勼@
00020020h: 00 00 00 00 06 00 EC 00 00 00 00 00 04 00 FF FF ; ......?......
00020030h: 52 00 5A 00 00 00 00 01 00 00 18 E3 02 02 0F 00 ; R.Z........?...
00020040h: 00 00 08 00 00 00 7C 00 0F 00 00 00 08 00 00 00 ; ......|.........
00020050h: 34 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF ; 4.........
00020060h: FF FF 00 22 00 01 00 00 00 87 41 42 43 44 45 46 ; .".....嘇BCDEF
00020070h: 47 01 00 00 00 00 00 FF FF FF FF 7F FF FF D5 33 ; G......?
00020080h: 2F 00 00 00 00 22 00 02 00 00 00 87 61 62 63 64 ; /....".....嘺bcd
00020090h: 65 66 67 02 00 00 00 00 00 FF FF FF FF 7F FF FF ; efg......
000200a0h: D5 33 2F 00 00 00 00 23 00 03 00 00 00 88 31 31 ; ?/....#.....?1
000200b0h: 32 32 33 33 34 34 03 00 00 00 00 00 FF FF FF FF ; 223344......
000200c0h: 7F FF FF D5 33 2F 00 00 00 00 23 00 04 00 00 00 ; ?/....#.....
000200d0h: 88 35 35 36 36 37 37 38 38 04 00 00 00 00 00 FF ; ?5667788......
000200e0h: FF FF FF 7F FF FF D5 33 2F 00 00 00 00 00 00 00 ; ?/.......
--将表存储表空间通过 MOVE TABLESPACE 方式迁移至加密表空间
ALTER TABLE T_TST_ENC MOVE TABLESPACE TS_ENCED;
--再查询表索引信息,能看到该表聚集索引已改到加密表空间存储
NAME INDEX_TYPE GROUPID ROOTFILE ROOTPAGE PATH DATAPOS
INDEX33743641 聚集索引(CLUSTER) 16 0 16 D:\TS_ENCED.DBF 00020000
/*
使用UltraEdit打开加密表空间文件,并定位到数据位置
能看到表中数据已以密文形式存储
*/
00020000h: 10 00 00 00 10 00 00 00 FF FF FF FF FF FF FF FF ; ........
00020010h: FF FF FF FF 14 00 00 00 00 00 00 00 C0 84 F3 40 ; ........绖驚
00020020h: 00 00 00 00 06 00 EC 00 00 00 00 00 04 00 FF FF ; ......?......
00020030h: E1 14 25 95 C0 69 4B E5 3B 9D 9F 17 C3 C6 C9 AD ; ?%暲iK?潫.闷森
00020040h: 03 36 96 D9 2C AF 44 5A E9 C1 A4 E3 74 C7 E1 E4 ; .6栙,疍Z榱ゃt轻?
00020050h: 43 AD 2E 53 53 5B A0 7D A0 CC 9F D0 56 77 DE E6 ; C?SS[爙犔熜Vw捩
00020060h: 05 2E 18 CE 2C EB 9E F1 18 F0 1D 9C 24 67 F1 7A ; ...?霝???g駔
00020070h: 1F 6B 74 5B A8 F9 26 3F 42 AC C4 F8 07 F1 F1 5E ; .kt[&?B?耨^
00020080h: 71 9C CA DA F5 A5 FD 5F C9 80 35 1A 84 F9 FD 88 ; q準邗_蓘5.匇龍
00020090h: 56 E9 88 CC 0B 89 40 89 99 FB 44 67 48 1A 45 02 ; V閳?堾墮鸇gH.E.
000200a0h: 5B AC D3 58 66 FE 37 F5 2E 9E 43 66 14 63 EC 41 ; [Xf??濩f.c霢
000200b0h: 9A 19 73 11 93 6C 6A B8 81 90 9B C9 1A 0A FA 9B ; ?s.搇j竵悰?.鷽
000200c0h: AD 54 41 0C 62 C3 5F 1F C3 2D 80 A1 51 53 C4 BB ; 璗A.b胈.?€S幕
000200d0h: 44 C3 09 ED CA 84 E4 04 47 11 6E 19 E4 3A 85 15 ; D?硎勪.G.n.??
000200e0h: 42 AC C4 F8 07 F1 F1 5E F0 8A 33 18 EA 35 42 9E ; B?耨^饖3.?B?
在透明加密中,密钥生成、密钥管理和加解密过程由数据库管理系统自动完成,用户不可见。透明加密的目的主要是保证存储在数据文件中的敏感数据的安全,并不能保护合法用户的个人私密数据。
对于表空间B下的表迁移到A下面是可以生效的;