[转]Oracle DB 加强的数据安全管理

? 描述SecureFiles  如何提高大对象(LOB) 数据类型的性能

? 使用SQL 和PL/SQL API  访问SecureFiles

  • 管理企业信息

组织需要有效且安全地管理许多类型的数据:

? 结构化:简单数据,对象关系数据

? 半结构化:XML 文档,文字处理文档

? 非结构化:介质、医学数据、映像

管理企业信息

如今,应用程序必须处理多种类型的数据,这些数据主要分为结构化、半结构化和非结构化数据。使用大对象(LOB)
 的功能,可以将所有这些类型的数据存储在数据库中以及可从该数据库进行访问的操作系统(OS)
文件中。在关系数据库中保存对象关系数据时,文件系统所具有的简单性和性能使其非常适合于存储文件数据。

  • 现有LOB 实施中的问题

? LOB 大小限制

? 主要考虑“单写多读”数据

? 提供低并发性的DML

? 用户定义的版本控制

? 统一CHUNK大小:

– 影响碎片

– 大小上限

? Oracle Real Application Clusters (RAC) 的可扩展性问题

现有LOB 实施中的问题

在Oracle8i 中,LOB 设计是基于下列假设做出的:

?LOB 实例化的大小预计为几个兆字节。

?LOB
通常被视为“单写多读”类型的数据。很少进行更新,所以可以为所有类型的更新(大型或小型)对整个块进行版本化。

? 预计很少有批处理会流式处理数据。预计不会出现联机事务处理(OLTP)  类型的工作量。

? 保留的还原量由用户使用PCTVERSION和RETENTION 参数进行控制。这是额外的管理工作。

? 在假设LOB 大小通常是统一的前提下,CHUNK大小是一个静态参数。CHUNK大小的上限是32 KB 。

? 预计Oracle RAC 中不会出现高并发性的写入。

自首次实施后,业务要求已发生了显著变化。现在LOB
的使用方式与关系数据的相似,用于存储各种大小的半结构化和非结构化数据。数据大小可以从几千字节(用于HTML
链接)到几兆兆字节(用于流视频)不等。在LOB 中存储所有文件系统数据的Oracle
 文件系统会遇到类似OLTP  的高并发性访问。随着Oracle RAC
日益广泛的应用,必须解决Oracle RAC 的可扩展性问题。LOB
空间结构的现有设计不能满足这些新要求。

  • Oracle SecureFiles 

Oracle SecureFiles 重新设计了非结构化(文件)数据的处理方法,提供了以下全新的设计:

? 磁盘格式

– 可变块大小

? 网络协议

– 改进的输入/输出

? 版本化和共享机制

? 重做和还原算法

– 无用户配置

? 空间和内存增强功能

Oracle SecureFiles

Oracle Database 11 g 将LOB 数据类型作为Oracle SecureFiles
 进行了完全重新设计,显著改进了应用程序开发的性能、可管理性和易用性。新实施也提供了下一代高级功能,如智能压缩和透明加密。

使用SecureFiles  时,块大小介于Oracle  数据块大小到64 MB 之间。Oracle DB
尝试使数据集中在磁盘的相邻物理位置,从而将内部碎片降到最低。通过使用可变的块大小,SecureFiles
 避免对不必要的大型LOB 数据块进行版本化。

SecureFiles  还提供了新的客户机/
服务器网络层,从而允许在支持更高读写性能的服务器和客户机之间进行高速数据传输。SecureFiles
 自动确定生成重做和还原的最有效方法,因而不需要用户定义参数。SecureFiles
 自动确定是仅为更改生成重做和还原,还是通过生成完整的重做记录创建新版本。

由于SecureFiles
 需要维护各种内存中统计信息以帮助有效地分配内存和空间,所以将其设计为可自适应的智能工具。这样,由于减少了很难使用不可预测的负荷进行优化的可优化参数数量,可管理性有所提高。

  • 启用SecureFiles  存储

可通过下列方法启用SecureFiles  存储:

? 使用DB_SECUREFILE 初始化参数,此参数可采用下列值:

– ALWAYS | FORCE | PERMITTED |   NEVER |  IGNORE

? 使用Enterprise Manager

? 使用ALTER SESSION |  SYSTEM 命令:

SQL> ALTER SYSTEM SET  db_securefile = ‘ALWAYS‘;

启用SecureFiles  存储

使用DB_SECUREFILE 初始化参数,数据库管理员(DBA) 可确定SecureFiles
 的使用情况,其中有效值为:

? ALWAYS :尝试将所有LOB 创建为SecureFile LOB,但是仅可将自动段空间管理(ASSM)  表空间外的任何
LOB 创建为BasicFile LOB

? FORCE:强制将所有LOB 创建为SecureFile LOB

? PERMITTED:允许创建SecureFiles (默认值)

? NEVER:禁止创建SecureFiles

? IGNORE :禁止创建SecureFiles ,并忽略使用SecureFiles  选项强制创建BasicFiles
而导致的任何错误

如果指定了NEVER,则任何指定为SecureFiles  的LOB 均被创建为BasicFiles。如果对BasicFiles
使用任何SecureFiles
 特定的存储选项和功能(如压缩、加密和取消重复),则会导致异常错误。将对任何未指定的存储选项使用BasicFiles
默认值。如果指定了ALWAYS ,则系统中创建的所有LOB 均会被创建为SecureFiles 。必须在ASSM
 表空间中创建LOB ,否则会发生错误。将忽略所有指定的BasicFiles
存储选项。可以使用ALTER SYSTEM 命令更改所有存储的SecureFiles
 默认值,如幻灯片中所示。

也可以通过单击“Server (服务器)”选项卡中的“Initialization Parameters
(初始化参数)”链接来使用Enterprise Manager 设置参数。

  • SecureFiles:高级功能

? Oracle SecureFiles 提供了下列高级功能:

– 智能LOB 压缩

– 取消重复

– 透明加密

? 这些功能利用了数据库的安全性、可靠性和可扩展性。

SecureFiles:高级功能

Oracle SecureFiles
 实施也提供了下一代高级功能,如智能压缩和透明加密。压缩功能支持显式压缩SecureFiles 。SecureFiles
 仅为随机读取或写入访问透明解压缩所需的数据块集,从而自动维护未压缩和已压缩的偏移量之间的映射。如果将压缩级别从MEDIUM
更改为HIGH,则映射会自动进行更新以反映新的压缩算法。取消重复可自动检测重复的SecureFile LOB
 数据,并通过仅存储一个副本来节省空间-减少磁盘存储空间、I/O
 和重做事件记录。可在表级别或分区级别指定取消重复,但不能跨越分区的LOB
。取消重复需要使用高级压缩选项。

现在可以在适当位置存储加密的LOB 数据,并对其进行随机读取和写入,因而提高了数据的安全性。只能按列加密SecureFile LOB
 (与透明数据加密相同)。将使用相同的加密算法对LOB 列中的所有分区进行加密。无法对BasicFiles
数据进行加密。SecureFiles  支持行业标准加密算法:3DES168
、AES128、AES192(默认)和AES256。加密是高级安全选项的一部分。

注:必须将COMPATIBLE初始化参数设置为11.0.0.0.0 或更高,才能使用SecureFiles 。在11.1.0.0.0
兼容性下BasicFiles(以前的LOB)格式仍然受支持。设置11.0.0.0.0 后不会出现功能降低。

  • SecureFiles:存储选项

? MAXSIZE:指定最大LOB 段大小

? RETENTION:指定要使用的保留策略

– MAX :达到 MAXSIZE之前保留旧版本。

– MIN :至少将旧版本保留 MIN 秒。

– AUTO:默认值

– NONE:尽可能重用旧版本。

? 下列存储子句不适用于SecureFiles:

– CHUNK 、PCTVERSION 、FREEPOOLS、FREELISTS 和FREELIST
GROUPS

SecureFiles:存储选项

MAXSIZE是新的存储子句,用于控制SecureFiles
 的物理存储属性。MAXSIZE指定与存储子句级别相关的最大段大小。

RETENTION 指定SecureFiles  的以下项:

? MAX 在达到段MAXSIZE后重新使用旧版本。

? MIN 在指定的最短时间内保留旧版本。

? AUTO 是默认设置,主要对空间和时间进行折中使之达到平衡。这是自动确定的。

? NONE 尽可能重用旧版本。

使用ALTER TABLE 语句更改RETENTION 仅影响该语句执行后创建的空间。

对于SecureFiles ,不再需要指定CHUNK、PCTVERSION、FREEPOOLS、FREELISTS 和FREELIST
GROUPS。为了与现有脚本相兼容,将对这些子句进行分析但不解释它们。

  • 创建SecureFiles 

CREATE TABLE  func_spec(

id number, doc CLOB ENC RYPT USING ‘AES128‘ )

LOB(doc) STORE AS SECUREFILE

DEDUPLICATE LOB CACHE
NOLOGGING);

CREATE TABLE  test_spec (

id number, doc  CLOB)

LOB(doc) STORE AS SECUREFILE

COMPRESS HIGH
KEEP_DUPLICATES
 CACHE NOLOGGING);

CREATE TABLE design_spec (id number, doc  CLOB)

LOB(doc) STORE AS
SECUREFILE
 (ENCRYPT);

CREATE TABLE  design_spec (id number,

doc  CLOB ENCRYPT)

LOB(doc) STORE AS SECUREFILE;

创建SecureFiles

可使用CREATE TABLE语句中的存储关键字SECUREFILE创建带有LOB 列的SecureFiles 。早期数据库版本中的LOB
实施现在被称为BasicFiles。将LOB 列添加到表

时,可以指定是将其创建为SecureFiles  还是BasicFiles。如果没有指定存储类型,LOB
将创建为BasicFiles 以确保向后兼容性。

在幻灯片的第一个示例中,创建了一个名为FUNC_SPEC 的表,用于将文档存储为SecureFiles 。在该示例中您指定不希望存储LOB
的重复内容、读取时将高速缓存LOB ,

并且对LOB 执行更新时不生成还原。此外,您还指定将使用AES128 加密算法对存储在doc 列中的文档进行加密。与DEDUPLICATE
相反,KEEP_DUPLICATES可用在ALTER语句中。

第二个示例中,您要创建一个名为TEST_SPEC 的表,用于将文档存储为SecureFiles 。对于此表,您指定可以存储重复内容、LOB
将以压缩格式存储,并且将高速缓存LOB 而不进行记录。HIGH
压缩设置需要进行更多的工作,但可提供更有效的数据压缩。默认压缩是MEDIUM 。压缩算法在服务器端实施,允许对LOB
数据进行随机读取和写入,可以通过ALTER语句对其进行更改。

上面的第三和第四个示例会产生相同结果:使用默认的AES192 加密创建具有SecureFilesLOB 列的表。

  • 使用Enterprise Manager
    创建SecureFiles 

使用Enterprise Manager 创建SecureFiles

可以使用Enterprise Manager 通过“Schema(方案)”选项卡中的“Tables (表)”链接创建SecureFiles
。单击“Create(创建)”按钮后,可以针对要存储为SecureFile 的列单击“Advanced
Attributes(高级属性)”按钮输入任一 SecureFiles  选项。

考虑到向后兼容性,仍然支持早期版本中的LOB 实施,现在将其称为BasicFiles。如果将LOB
列添加到表中,则可以指定是将其创建为SecureFile 还是BasicFile 。如果没有指定存储类型,LOB
将创建为BasicFiles 以确保向后兼容性。

可以为高速缓存选项选择下列值:

? CACHE:为了提高访问速度,Oracle  将LOB 页置于缓冲区高速缓存中。

? NOCACHE:作为STORE AS 子句中的参数,NOCACHE指定不将LOB 值置于缓冲区高速缓存中。

? CACHE READS :仅在读取操作期间(而非写入操作期间),才将LOB 值置于缓冲区高速缓存中。

NOCACHE是SecureFile 和BasicFile LOB 的默认值。

  • 共享I/O  池

为了支持共享内存(与程序全局区(PGA)  相对)的大型 I/O,Oracle Database 11 g 中新增了共享I/O
 池内存组件,用于进行直接路径访问。这种情况仅适用于将SecureFiles
 创建为NOCACHE时(默认)。共享I/O  池默认大小为零,仅当存在SecureFiles
NOCACHE工作量时,系统才会将其大小增加到高速缓存的4%。由于这是共享资源,因此可由大型并发SecureFiles
 工作量使用。与其它池(如大型池或共享池)不同,用户进程不会生成ORA-04031 错误,但在释放更多共享I/O
 池缓冲区之前会临时退回到PGA 。

LOB 高速缓存是SecureFiles  体系结构中的新组件,通过收集和批处理数据以及重叠网络和磁盘I/O
 改进了LOB 访问性能。LOB 高速缓存从缓冲区高速缓存(常规缓冲区或共享I/O
 池的内存)借用内存。由于从缓冲区高速缓存借用的内存实质上适合于执行数据库I/O,并且适合在I/O
 完成后回退到该缓冲区高速缓存,因此可以避免不必要的内存复制。

在多实例Oracle Real Application Clusters 中,LOB 高速缓存为每个已访问的LOB
保留一个锁定。

  • 更改SecureFiles 

更改SecureFiles

使用DEDUPLICATE 选项,可以指定在LOB 列的两行或多行中相同的LOB
数据共享同一数据块。KEEP_DUPLICATES与此相反。Oracle
 使用安全的散列索引检测重复,并且将具有相同内容的LOB 合并到一个副本中,从而降低存储空间并简化存储管理。LOB
关键字是可选的,它可以使语法变得更清楚。

COMPRESS 或NOCOMPRESS关键字分别启用或禁用LOB 压缩。新的压缩设置会更改LOB
段中的所有LOB。

ENCRYPT或DECRYPT关键字可使用透明数据加密(TDE)  打开或关闭LOB 加密。新设置会更改LOB 段中的所有LOB
。可将LOB 段更改为仅启用或仅禁用LOB 加密。也就是

说,ALTER不能用于更新加密算法或加密密钥。可使用ALTER TABLE
REKEY语法更新加密算法或加密密钥。结合使用其它选项,在块级别执行加密可以提高性能(可能为最小的加密量)。

  • 访问SecureFiles  元数据

数据层接口与BasicFiles 的接口相同。

访问SecureFiles  元数据

DBMS_LOB 程序包:LOB 继承取消重复、加密和压缩的LOB 列设置,也可使用LOB 定位器API  在每个 LOB
级别上进行配置。但是不能使用LONG API  配置这些 LOB 设置。必须为这些功能使用以下DBMS_LOB
程序包附加函数:

? DBMS_LOB.GETOPTIONS:可使用此函数获得设置。返回与基于选项类型的预定义常量相对应的整数。

? DBMS_LOB.SETOPTIONS:此过程设置功能并允许按LOB 设置这些功能,从而覆盖默认的LOB
设置。这需要往返服务器以使更改变成永久更改。

DBMS_SPACE.SPACE_USAGE:使现有SPACE_USAGE 过程超载,以返回有关LOB 空间使用情况的信息。它返回LOB
段中所有LOB 使用的块中的磁盘空间量。该过程仅可对使用ASSM  创建的表空间使用,并且不将属于BasicFiles
的LOB 块视为已使用的空间。

  • 迁移到SecureFiles

使用LOB 接口超集,可轻松从BasicFile LOB 进行迁移。迁移到SecureFiles
 有两种建议方法:分区交换和联机重新定义。

分区交换

? 需要与表中最大分区相等的额外空间

? 可在交换期间维护索引

? 可将工作量分散到多个较小的维护窗口

? 要求表或分区脱机以执行交换

联机重新定义(建议做法)

? 不要求表或分区脱机

? 可并行进行

? 要求额外存储空间等于整个表,并且所有LOB 段均可用

? 要求重建所有全局索引

这些解决方案通常意味着使用输入LOB
列中的数据所用磁盘空间两倍的空间。但是,使用分区和按分区执行这些操作有助于降低所需的磁盘空间。

  • SecureFiles 迁移:示例

SecureFiles  迁移:示例

可以使用幻灯片中的示例将BasicFile LOB 迁移到SecureFile LOB。

首先,使用BasicFiles 创建表。该示例使用的是分区表。

然后,在表中插入数据。

之后,创建具有相同分区数的临时表,但是这次使用SecureFiles 。请注意,此临时表具有相同的列和类型。

最后一部分演示了如何使用DBMS_REDEFINITION过程通过先前创建的临时表重新定义表。

  • SecureFiles  监视

为了显示SecureFiles  的使用情况,已对下列视图进行了修改:

? *_SEGMENTS

? *_LOBS

? *_LOB_PARTITIONS

? *_PART_LOBS

SQL> SELECT segment_name, segment_type, segment_subtype

2  FROM dba_segments

3  WHERE tablespace_name = ‘SECF_TBS2‘

4  AND segment_type = ‘LOBSEGMENT‘

5  /

SEGMENT_NAME                
SEGMENT_TYPE        SEGMENT_SU

---------------------------- ------------------ ----------

SYS_LOB0000071583C00004$$    LOBSEGMENT      
   SECUREFILE

  • 小结

? SecureFiles  提高LOB 性能

? SQL 和PL/SQL API  访问SecureFiles

http://blog.csdn.net/rlhua/article/details/14126785

时间: 2024-08-23 02:51:54

[转]Oracle DB 加强的数据安全管理的相关文章

Oracle GoldenGate从oracle db 到非oracle db的初始化数据同步的方法

非oracle db以 sqlserver为样例说明: 我的思路 A :oracle db 生产 B: oracle db 中间机 C: sqlserver db 目的端 A-> B->C 注意:B上既有rep进程也有ext进程,此时.C上也须要建立针对B的rep进程. A->B能够完毕 在线的完毕初始化同步(基于scn号的expdp) A->B的初始化做完之后,stop 掉 B的rep进程,此时B库为静态数据库,此时进行B->C的同步(使用etl工具 or sqlserve

[转]Oracle DB 移动数据

? 描述移动数据的方式 ? 创建和使用目录对象 ? 使用SQL*Loader 加载非Oracle DB(或用户文件)中的数据 ? 使用外部表并通过与平台无关的文件移动数据 ? 说明Oracle 数据泵的一般体系结构 ? 使用数据泵的导出和导入实用程序在Oracle DB 之间移动数据 移动数据:一般体系结构 移动数据:一般体系结构 主要功能组件: ? DBMS_DATAPUMP:包括高速导出与导入实用程序的API,可用于成批地移动数据和元数据. ? 直接路径API (DPAPI):Oracle

Oracle DB 移动数据

描述移动数据的方式 ? 创建和使用目录对象 ? 使用SQL*Loader 加载非Oracle DB(或用户文件)中的数据 ? 使用外部表并通过与平台无关的文件移动数据 ? 说明Oracle 数据泵的一般体系结构 ? 使用数据泵的导出和导入实用程序在Oracle DB 之间移动数据 移动数据:一般体系结构 移动数据:一般体系结构 主要功能组件: ? DBMS_DATAPUMP:包括高速导出与导入实用程序的API,可用于成批地移动数据和元数据. ? 直接路径API (DPAPI):Oracle Da

[转]Oracle DB执行闪回数据库

? 配置闪回数据库 ? 执行闪回数据库操作 ? 监视闪回数据库 闪回数据库 闪回数据库操作: ? 作用类似于数据库的倒带按钮 ? 可以在用户造成了逻辑数据损坏的情况下使用 闪回数据库 使用闪回数据库,通过还原自先前某个时间点以来发生的所有更改,可快速将数据库恢复到那个时间的状态.因为不需要还原备份,所以此操作速度很快.可以使用此功能还原导致逻辑数据损坏的更改. 使用闪回数据库时,Oracle DB 可使用过去的块映像回退对数据库的更改.在正常数据库操作期间,Oracle DB 会不定期地将这些块

[转]Oracle DB管理内存

? 描述SGA 中的内存组件 ? 实施自动内存管理 ? 手动配置SGA 参数 ? 配置自动PGA 内存管理 内存管理:概览 DBA 必须将内存管理视为其工作中至关重要的部分,因为: ? 可用内存空间量有限 ? 为某些类型的功能分配更多内存可提高整体性能 ? 自动优化的内存分配通常是正确的配置,但特定环境甚至短期情况下可能需要特别注意 由于数据库服务器上的可用内存量有限,因此,对于Oracle DB 实例,必须注意内存的分配情况.如果将过多的内存分配给没有此需求的特定区域使用,则很可能导致其它功能

Oracle DB管理内存

? 描述SGA 中的内存组件? 实施自动内存管理? 手动配置SGA 参数? 配置自动PGA 内存管理  内存管理:概览DBA 必须将内存管理视为其工作中至关重要的部分,因为:? 可用内存空间量有限? 为某些类型的功能分配更多内存可提高整体性能? 自动优化的内存分配通常是正确的配置,但特定环境甚至短期情况下可能需要特别注意 由于数据库服务器上的可用内存量有限,因此,对于Oracle DB 实例,必须注意内存的分配情况.如果将过多的内存分配给没有此需求的特定区域使用,则很可能导致其它功能区没有足够的

Oracle GoldenGate (以下简称ogg)在异种os上同种db之间的数据同步。

ogg能实现的功能: 可以细化到单表同步,符合特定where条件的rows同步,指定column的同步. ogg 的竞争对手:ibm cdc:dell shareplex:dsg:dds等等 环境描述: 源头:windows 2003x64bit, oracle db 11.2.0.3 x64bit 目的端:suse linux ,oracle db 11.2.0.3 预先准备: 1.Microsoft Visual C ++ 2005 SP1 Redistributable Package 注

[转]Oracle DB 使用连接显示多个表中的数据

? 编写SELECT语句,以使用等值联接和非等值联接访问多个表中的数据 ? 使用自联接将表联接到自身 ? 使用OUTER联接查看通常不满足联接条件的数据 ? 生成两个或多个表中所有行的笛卡尔积 ? JOIN的类型及其语法 ? 自然联接: – USING子句 – ON子句 ? 自联接 ? 非等值联接 ? OUTER联接: – LEFT OUTER联接 – RIGHT OUTER联接 – FULL OUTER联接 ? 笛卡尔积 – 交叉联接 获取多个表中的数据 有时需要使用多个表中的数据.如两个独立

[转]Oracle DB 管理数据并发处理

? 描述锁定机制以及Oracle 如何管理数据并发处理 ? 使用SQL 管理数据 ? 识别和管理PL/SQL  对象 ? 描述触发器和触发事件 ? 监视和解决锁定冲突 通过SQL 处理数据 在数据库中使用基本数据操纵语言(DML) 语句来处理数据. INSERT 命令 ? 一次创建一行. ? 插入另一个表中的多行. 使用基本的INSERT 语句一次可创建一行.如果使用所谓的子选择,则可以使用INSERT命令将一个表中的若干行复制到另一个表.这种方法又称为INSERT SELECT 语句. 如以下