使用 Oracle 数据库 10g 实施信息生命周期管理

OBE 主页 > 10gR2 单实例 > 可管理性

使用 Oracle 数据库 10g 实施信息生命周期管理

本教程的目的是向您显示如何通过使用信息生命周期管理战略利用 Oracle 数据库 10g 在数据的生命周期内管理数据。

大约 1 个小时

本教程包括下列主题:

指定数据类别

将数据类别分配给存储层

管理访问和移植
定义和实施合规性策略

将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注意:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。您可以单击单个屏幕截图将其隐藏。

信息生命周期管理 (ILM) 用于管理在数据生存周期期间所有涉及该数据的活动。

虽然大多数企业长期以来都将它们所存储的数据视为最有价值的公司资产之一,但它们管理和维护数据的方式千差万别。最初,数据用来帮助实现营运目标,经营企业,确定公司未来的发展方向和成功目标。然而,新的政府法规和准则(例如,美国的 Sarbanes-Oxley、HIPAA、DOD5015.2-STD 和欧盟的 European Data Privacy Directive)要求机构要在非常长的时间内保留和控制它们的信息,这迫使机构采取措施保留其数据。

今天的信息类型多样,如电子邮件、照片或在线交易处理系统的订单。现在所有机构面临的挑战是要了解它们的数据发展情况,确定数据增长方式,监视数据使用率随时间推移的变化情况,以及决定数据的保留时间。

今天,IT 经理试图满足其他两个目标:以尽可能低的成本存储海量数据;满足新推出的涉及数据保留和保护的法规要求。

Oracle 数据库 10g 可用于商务 ILM

Oracle 数据库 10g 目前可用于商务 ILM。它能够存储不同类型的数据,将您的所有数据存储在一个 Oracle 数据库中,这意味着它更易于管理,因为数据不是在不同地方使用许多不同格式进行存储,面是集中存储。Oracle 数据库是实施信息生命周期管理策略的理想平台,因为它有许多独特的特性,这使得实施 ILM 解决方案非常容易:

可实施的合规性策略: 实施数据保留、不变性、私密性、审计和过期
低成本: 使用低成本存储器降低运营成本

以四个简单步骤实施 ILM

可以通过执行以下四个简单步骤来使用 Oracle 数据库 10g 实施 ILM:

1.
2.
3. 按类别管理数据的访问和移植
4. 定义和实施合规性策略

可以按各种方式(例如,使用频率)对数据分类,然后可以为已确定的数据类别创建存储层。在其生命周期内,数据可能在不同的数据类别之间移植,并且对数据的访问受到不同方法的控制。

Oracle 数据库 10g 最适用于实施 ILM。它使用起来比较简单(无需管理专门的数据存储器),并且它独立于任何硬件运行。它的快速性能已经得到验证,可以快速检索信息。Oracle 数据库 10g 提供了一个智能的中央位置来存储数据并实施合规性策略。数据库中的安全特性确保了数据不受未授权访问的破坏,并且数据始终保持事务一致性。Oracle 数据库提供了全面的灵活性,并且可以快速地适应任何变化的要求,由于新法规不断推出,这一点极为重要。利用 Oracle 数据库 10g,可以用最低的可能成本实施一个全面的 ILM 解决方案。

本教程介绍了如何使用 Oracle 数据库中的众多特性来实施信息生命周期管理策略。在本教程中,您将为定义的每个数据类别创建存储层。在存储层之间移植数据、保护数据不受篡改的并控制查看数据的用户。

在本教程中,您将为一家虚拟公司实施 ILM,它必须保留自 1995 年以来的所有销售订单。只允许用户查看自 2000 年以来的数据,并且只允许一类特别的用户查看历史数据。

开始学习本教程之前,您应该先完成以下步骤:

1.
2.

定义数据类别的第一步是分析数据,确定最适合于该数据的数据类别。执行以下步骤,查看当前销售数据的分类情况:

1.

打开一个浏览器窗口,并输入以下 URL:

http://<your host name>:1158/em

system/oracl 的身份登录,然后单击 Login

如果显示 Oracle Database 10g Licensing Information 页面,则向下滚动到该页面底部并单击 I agree

 

2.

单击 Administration 选项卡。

 

3.

向下滚动至 Schema 区域。

 

4.

在 Database Objects 下,单击 Tables

 

5.

为 schema 输入 SH 并为 Object Name 输入 SALES,然后单击 Go

 

6.

确保选中 SALES,并单击 Edit

 

7.

选择 Partitions 选项卡。

 

8.

分区方法表明,数据已经使用 TIME_ID 列按日期进行了分类。分区名称和范围表明数据已经按照年、半年或季度根据其存在时间长短进行了分组。按时间分类数据是一种非常常见的方法,并且在这种情况下是最适合的方法。单击 Database Instance 路径式导航栏。

 

接下来,您需要指定所有数据的存储位置。一般而言,这将涉及到使用不同类型的存储设备(例如,将高性能磁盘用于频繁访问的数据,将低成本设备用于不常使用的数据和历史数据)。在本教程中,您将创建三个存储层:高性能、低成本和联机归档。因为您没有三种类型的存储设备,因此您将创建与这些层映射的表空间来替代它们。

在本部分中,您将执行以下任务:

为每个存储层创建表空间
将分区分配给存储层表空间

为每个存储层创建表空间

1.

在 Administration 页面的 Storage 下,选择 Tablespaces

 

2.

单击 Create 创建一个新的表空间。

 

3.

在 Name 域中输入 HIGH_PERFORMANCE。在 Datafiles 部分中,单击 Add

注意:对于 HIGH_PERFORMANCE 层,数据文件通常位于高性能存储设备上或 ASM 中。由于本教程无法使用这些存储选项,因此数据文件将与数据库的其他数据文件存储在同一位置。

 

4.

数据文件存储位置默认为 ORADATA\ORCL 目录。您计算机上的实际路径可能会有所不同。

为 File Name 输入 high_perf,并为 File Size 指定 3 MB。然后,单击 Continue

 

5.

单击 OK 完成表空间的创建。

 

6.

现在,您可以创建下一个存储层表空间。单击 Create。重复创建 Low_Cost 存储层的过程。

 

7.

在 Name 域中输入 LOW_COST。在 Datafiles 部分中,单击 Add

注意:对于 LOW_COST 存储层,数据文件通常位于低成本的 ATA 存储设备上。由于本示例不使用这些设备,因此本教程将这些数据文件与数据库的其他数据文件存储在同一位置。

 

8.

为 File Name 输入 low_cost,并为 File Size 指定 10 MB。在 Storage 下,单击 Automatically extend datafile when full (AUTOEXTEND) 并在 increment 项中输入 10KB。然后,单击 Continue

 

9.

单击 OK 完成表空间的创建。

 

10.

最后一层是 ONLINE_ARCHIVE 层,用于保存 2000 年以前的所有订单。单击 Create 为此存储层创建表空间。

 

11.

在 Name 域中输入 ONLINE_ARCHIVE。在 Datafiles 部分中,单击 Add

注意:对于联机归档层,数据文件通常位于低成本的 ATA 存储设备上。由于本示例不使用这些设备,因此本教程将这些数据文件与数据库的其他数据文件存储在同一位置。

 

12.

为 File Name 输入 online_arch,并为 File Size 指定 10 MB。然后,单击 Continue

 

13.

单击 OK 完成表空间的创建。

 

14.

现在,您将看到三个与 Tablespaces 页面上列出的每个存储层相对应的表空间。注意,表空间当前为空。在实际的 ILM 实施中,表空间的名称不一定要对应所需的存储层。由于未提供三种不同类型的实际存储设备,因此本教程使用了表空间方法来演示该过程。单击 Database Instance 路径式导航栏。

 

将分区分配给存储层表空间

创建存储层后,下一步是将保存数据的分区分配给相应的存储层。

1.

在 Schema 区域的 Database Objects 下,选择 Tables

 

2.

在 Schema 域中输入 SH,并在 Object Name 域中输入 SALES。然后,单击 Go

 

3.

选择 SALES,然后单击 Edit

 

4.

选择 Partitions 选项卡。

 

5.

首先分配 HIGH_PERFORMANCE 分区。High Performance 存储层应只包含 2003 年第三季度到第四季度的订单。在下拉列表框中选择最后一组页面。

 

6.

选择 SALES_Q3_2003 分区,为 Action 选择 Move,然后单击 Go

 

7.

单击 Tablespaces 域旁边的电筒图标。

 

8.

选择 HIGH_PERFORMANCE 表空间,并单击 Select

 

9.

单击 OK,将分区分配给 HIGH_PERFORMANCE 表空间。

 

10.

选择 SALES_Q4_2003 分区,为 Action 选择 Move,然后单击 Go

 

11.

在 Tablespace 域中输入 HIGH_PERFORMANCE,然后单击 OK

 

12.

单击 Apply,提交修改。

 

13.

现在,您可以将 Q4 2000Q2 2003 的分区分配给 LOW_COST 表空间。首先选择 SALES_Q1_2002 分区。然后,选择操作 Move 并单击 Go

 

14.

在 Tablespace 域中输入 LOW_COST,然后单击 OK

 

15.

对以下分区重复步骤 13 和 14,并将所有分区分配到 LOW_COST 表空间。针对最后一个分区单击 OK 后,选择 Previous 10

SALES_Q2_2003
SALES_Q1_2003
SALES_Q4_2002
SALES_Q3_2002
SALES_Q2_2002

 

16.

为以下分区重复步骤 13 和 14,并将所有分区分配到 LOW_COST 表空间。然后单击 Apply

SALES_Q4_2001
SALES_Q3_2001
SALES_Q2_2001
SALES_Q1_2001
SALES_Q4_2000
SALES_Q3_2000
SALES_Q2_2000
SALES_Q1_2000

 

17.

将以下分区移到 ONLINE_ARCHIVE 表空间。

SALES_Q3_1999
SALES_Q4_1999

完成后,选择 Previous 10,然后将以下分区移到 ONLINE_ARCHIVE 表空间。完成后,单击 Apply

SALES_1995
SALES_1996
SALES_H1_1997
SALES_H2_1997
SALES_Q1_1998
SALES_Q2_1998
SALES_Q3_1998
SALES_Q4_1998
SALES_Q1_1999
SALES_Q2_1999

 

18.

SH.SALES 表的所有分区都已经分配给不同的存储层。单击 Database Instance 路径式导航栏。

 

19.

在 Administration 页面的 Storage 下,单击 Tablespaces

 

20.

注意,表空间不再为空。单击 Database Instance 路径式导航栏。

 

实施 ILM 策略的第三步是确定访问数据的人员以及他们的操作。可以使用各种不同的技巧来限制对历史数据的访问,这样它便不会始终出现在例行报表中。此外,您可以防止对历史数据进行篡改,并演示如何利用最小的存储容量存储所有这些数据。执行下列任务:

控制对历史数据的访问

查询历史数据

限制对销售数据的更新访问

尝试更新历史数据

将历史数据设为只读
归档数据

返回主题列表

控制对历史数据的访问

由于所有数据存储在数据库中,因此必须确保仅在实际需要时才查看它们。这减少了查询执行次数并节省系统资源。

有两种可以用来限制对历史数据的访问的技巧:

使用视图
使用虚拟专用数据库 (VPD) 策略

本部分主要介绍如何使用视图。稍后部分将演示如何使用 VPD 策略。

在本部分中,您将创建两个视图,一个视图使标准用户可以访问 2000 年 1 月 1 日的数据,另一个视图使用户可以访问历史数据。执行以下步骤:

1.

在 Administration 选项卡的 Schema 区域中的 Databsae Objects 下,单击 Views

 

2.

首先,您将创建一个名为 SALES_HISTORICAL 的视图,它只允许访问 1999 年 12 月 31 日之前下的订单。

单击 Create

 

3.

在 Name 域中输入 SALES_HISTORICAL,在 Schema 域中输入 SH 并在 Query Text 域中输入以下文本:

SELECT * FROM sales WHERE time_id < '1-Jan-2000'
单击 OK

 

4.

现在,创建名为 SALES_CURRENT 的第二个视图,它允许访问 2000 年 1 月 1 日以后的所有销售数据。

单击 Create

 

5.

在 Name 域中输入 SALES_CURRENT,在 Schema 域中输入 SH,然后在 Query Text 域中输入以下文本:

SELECT * FROM sales WHERE time_id > '31-Dec-1999'
单击 OK

 

6.

视图创建完毕并显示在 Views 页面的底部。SALES_CURRENT 视图用于最近的数据,SALES_HISTORICAL 视图用于旧订单。

现在,创建要使用这些视图的 SH_USER 用户。单击 Database Instance 路径式导航栏。

 

查询历史数据

为了演示 SALES_HISTORICAL 视图只显示 2000 年之前的数据,查询 SALES_HISTORICAL 视图以报告其保存的最新数据。可以通过查询 TIME_ID 列完成该操作。执行以下步骤:

1. 启动 Windows 的 SQL*Plus,方法是:单击开始,依次选择所有程序Oracle Home 安装、Application Development 程序组、SQL*Plus

在 User Name 和 Password 中输入 sh,然后单击 OK

 

2.

输入以下命令:

@C:\wkdir\ilm_query01

ilm_query01.sql 脚本包含以下文本:

SELECT MAX(time_id)FROM sh.sales_historical;

 

3.

由于该视图只包含 1999 年年底之前的数据,因此现在可以轻松地报告哪些客户在 2000 年之前购买的产品数量最多。在 SQL*Plus 中执行以下命令:

@C:\wkdir\ilm_query02 

ilm_query02.sql 脚本包含以下文本:

COLUMN max_sales FORMAT $999999.99

SELECT cust_last_name, SUM(amount_sold) MAX_SALES
FROM sh.sales_historical h, sh.customers c
WHERE c.cust_id = h.cust_id
GROUP BY cust_last_name
ORDER BY max_sales DESC;

 

限制对销售数据的更新访问

为了符合一些新的法规,您需要显示只有授权用户可以更新销售数据。因此,需要创建一个名为 SH_USER 的新用户,所有应用程序将使用该用户名访问销售数据。只允许 SH_USER 用户读取销售数据。执行以下步骤:

1.

在企业管理器窗口中,从 Administration 选项卡向下滚动到 Schema 区域。

 

2.

在 Users & Privileges 下,单击 Users

 

3.

第一步是创建一个新用户 SH_USER。单击 Create

 

4.

为 Name 和 Password 输入 SH_USER。再次输入 SH_USER 确认该口令。为 Default Tablespace 输入 EXAMPLE,为 Temporary Tablespace 输入 TEMP,然后单击 Roles 选项卡。

 

5.

默认情况下,只将很少的资源授予新用户。单击 Edit List 将其他权限授予 SH_USER

 

6.

从 Available Roles 列表中选择 RESOURCE,并单击 Move

 

7.

单击 OK

 

8.

为了确保该用户只能读取销售数据和客户数据,必须向它们显式地授予这些对象的 SELECT 权限。单击 Object Privileges 选项卡。

 

9.

从 Select Object Type 下拉列表中选择 Table,并单击 Add

 

10.

在 Select Table Objects 域中,输入 SH.SALES, SH.SALES_HISTORICAL, SH.CUSTOMERS。在 Available Privileges 列表中,单击 Select。单击 Move 指示您要授予此权限,然后单击 OK

 

11.

Create User 页面现在显示将授予用户的对象权限。单击 OK 创建用户,并将权限授予新用户。

 

12.

SH_USER 用户创建成功。单击 Database Instance 路径式导航栏。

 

尝试更新历史数据

某些新法规要求数据不能进行更改,或者可能有企业要求在某个特定的日期之后不能更改记录。使用 Oracle 数据库内部的安全特性,SH_USER 用户将没有足够的权限来更新历史数据。执行以下步骤测试此功能:

1.

切换回 SQL*Plus 窗口,并执行以下 SQL 命令:

connect sh_user/sh_user
@C:\wkdir\ilm_update01

ilm_update01.sql 脚本包含以下文本:

UPDATE sh.sales SET prod_id=12 WHERE prod_id=13 AND time_id='10-Jan-98';

 

将历史数据设为只读

在数据的生命周期中将有一个时间点,在那时将不再允许对数据进行更新。在上一部分中,您看到了如何能够使用数据库安全性来防止更改,但更好的方法是将表空间设为只读。将表空间设为只读后,任何人都无法更新数据,即使具有销售表的 UPDATEDELETE 权限的用户也无法更新。执行以下步骤:

1.

转回 Enterprise Manager Database Control。在 Administration 选项卡的 Storage 下,单击 Tablespaces

 

2.

选择 ONLINE_ARCHIVE 表空间,选择操作 Make Readonly,然后单击 Go

 

3.

状态列中的剪贴板图标指示该表空间现在设置为只读。单击 ONLINE_ARCHIVE

 

4.

在 View Tablespace 页面上,Status 值确认表空间为只读。单击 Database Instance 路径式导航栏。

 

归档数据

数据生命周期中的某个时间可能不再需要数据。某些企业可能倾向于归档数据而不是实际删除该数据。您已经决定提取 XML 中的数据,因此如果曾需要将数据重新加载回数据库中,则数据本身描述了提取时使用的格式。Oracle 数据库 10g 提供了一些 XML 函数,可以将这些函数嵌套在 SQL 语句中以提取 XML 格式的数据。

执行以下步骤:

1.

从 SQL*Plus 窗口中,执行以下脚本:

@C:\wkdir\ilm_archive_sales
ilm_archive_sales.sql 脚本包含以下文本:

connect sh/sh
SELECT XMLELEMENT("Sales",
XMLElement ("timeid", time_id ),
XMLElement ("prodid", prod_id ),
XMLElement ("Customer", cust_id ),
XMLElement ("Channelid", channel_id ),
XMLElement ("Promotion", promo_id ),
XMLElement ("amount", amount_sold) ,
XMLElement ("quantity", quantity_sold) ) AS "RESULT"
FROM sales WHERE time_id > '1-Dec-01' AND time_id <'1-Jan-02';

 

Oracle 提供了一个智能的中央位置来存储数据并实施合规性策略。合规性策略有五个元素:保留、不变性、私密性、审计和过期。在本部分中,您将看到如何实施这些元素中的某些元素。执行下列任务:

指定关于销售的 VPD 策略
加密数据
审计数据访问

指定关于销售的 VPD 策略

由于在数据库中保留了如此多的数据,因此确保用户只查看允许他们查看的数据非常重要。尽管视图限制了用户可以在数据库中查看的内容,但如果用户不使用指定的应用程序查询数据而是使用 SQL*Plus 这样的工具,则用户可以绕过视图并直接查询表。可以使用虚拟专用数据库 (VPD) 定义安全性策略以避免这种可能的安全性漏洞。此安全性策略准确定义了执行查询的用户可以看到的数据,而不管采用什么方法访问数据。在这一部分中,您将使用 VPD 来防止对历史数据的访问。

执行以下步骤:

1.

首先,以 SH 用户的身份计算 SALES 表中可见行的数目。记录返回的行数。SH 用户当前可以访问 SALES 表中的所有数据。从 SQL*Plus 窗口中,运行以下 SQL 脚本:

@C:\wkdir\ilm_count_sales

ilm_count_sales.sql 包含以下内容:

connect sh/sh
SELECT COUNT(*) FROM sales;

 

2.

接下来,以 SYSTEM 用户的身份添加以下 VPD 策略,该策略将声明用户只能看到自从 2000 年 1 月 1 日以来的数据。从 SQL*Plus 会话中,运行以下 SQL 脚本:

@C:\wkdir\ilm_add_policy

ilm_add_policy.sql 包含以下内容:

connect system/oracle
CREATE OR REPLACE FUNCTION ilm_pf1 (oowner IN VARCHAR2, ojname IN VARCHAR2) RETURN VARCHAR2 AS
con VARCHAR2(200);
BEGIN
con :='time_id > ''31-DEC-1999''';
RETURN (con);
END ilm_pf1;
/
BEGIN
DBMS_RLS.ADD_POLICY (object_schema=>'SH',object_name=>'Sales',
policy_name=>'ilm_current_data',function_schema=>'system',
policy_function=>'ilm_pf1',
sec_relevant_cols=>'time_id');
END;
/

 

3.

现在,按照在第一步中执行的操作以用户 SH 的身份对 SALES 表执行同一查询。由于只有 2000 年 1 月 1 日以前的数据可供该用户使用,因此返回的行数较少。

从 SQL*Plus 窗口中,运行以下 SQL 命令:

@C:\wkdir\ilm_count_sales
exit

 

加密数据

要遵守某些新的安全性规则,必须将某些数据加密。Oracle 数据库 10g 第 2 版能够加密表中的单个列。在本部分中,您将添加一个新表来存储客户的信用卡详细信息。但实际的信用卡号将以加密格式存储在数据库操作系统文件中。

使用透明数据加密之前,必须创建一个钱夹。列加密使用 Oracle 钱夹安全地存储主加密密钥。为了实现更大的安全性,您需要创建一个新钱夹来存储数据加密主密钥,而不是使用默认的数据库钱夹。执行以下步骤

1.

首先,您需要更新 sqlnet.ora 文件以包含一个 ENCRYPTED_WALLET_LOCATION 条目。单击 Windows 桌面上的开始 按钮,单击运行...,然后在“打开”域中键入 notepad。然后单击 OK

 

2.

在记事本应用程序中,从菜单中选择文件,然后选择打开。使用“查找范围”下拉菜单导航到 Oracle Home 目录,记下该目录的路径,然后转到 NETWORK/ADMIN 子目录。将“文件类型”选择更改为“所有文件”,然后从所显示的文件列表中选择 sqlnet.ora,并单击打开

通过系统上的 Oracle Home 目录的路径名,将以下文本添加到该文件中。如果该文件不为空,则将以下条目添加到该文件的末尾:

ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=<Oracle Home Directory Path>)))
        

保存更改并退出该应用程序。

 

3.

从记事本菜单中选择文件,然后选择保存。然后,关闭应用程序窗口。

 

4.

需要确保监听器已经启动。单击 Windows 桌面上的开始 按钮,单击运行...,然后在“打开”字段中键入 cmd。然后单击 OK。当 cmd.exe 应用程序窗口打开后,在提示符下键入以下命令:

lsnrctl status

监听器应该启动,如上所述。如果未启动,则执行以下命令:

lsnrctl start

 

5.

接下来,打开钱夹并生成万能加密 密钥。由于该数据库不存在钱夹,因此设置万能密钥时将在 sqlnet.ora 文件的指定位置处自动创建一个新钱夹。

打开 SQL*Plus 窗口。以 SYSTEM 用户的身份登录,并使用 oracle 作为口令。然后,执行以下命令:

@C:\wkdir\ilm_encrypt_setup


ilm_encrypt_setup.sql 脚本将生成数据库服务器万能加密密钥,并使用以下命令设置 Oracle 钱夹口令:


connect / as sysdba
ALTER SYSTEM SET KEY IDENTIFIED BY "welcome1";

由于每个表都有各自的加密密钥,因此万能加密密钥是必需的。这些列密钥存储在数据库中。由于钱夹只能存储有限数目的密钥,因此使用万能密钥加密列秘钥。这样,可以拥有所需数量的列密钥,并将少量万能密钥存储在钱夹中。默认情况下,以上所示的命令使用 192 位的高级加密标准 (AES192) 生成一个密钥。

只需生成万能密钥一次。如果现有万能密钥已被破坏,则应只生成一个新的万能密钥。

打开钱夹后,只要数据库实例处于打开状态,该钱夹便保持打开状态。关闭并重新启动数据库实例时,请使用以下命令重新打开 Oracle 钱夹以访问存储的万能密钥,而不是生成一个新的万能密钥:

ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY "welcome1";


注意:只有拥有 ALTER SYSTEM 权限的用户才能打开钱夹;没有适当权限的用户将无法使用该密钥,因为该密钥对这些用户不可用。

6.

下面,创建一个表,其中包含一个用于存储加密信用卡信息的列。从 SQL*Plus 会话中,执行以下脚本:

@C:\wkdir\ilm_crtabl

connect system/oracle
CREATE TABLE credit_cards
(cust_id NUMBER,
cc_name VARCHAR2(30),
cc_no VARCHAR2(20) ENCRYPT);

 

7.

现在,向刚刚创建的表中添加一些数据。从 SQL*Plus 会话中,执行以下脚本:

@C:\wkdir\ilm_poptabl

INSERT INTO credit_cards VALUES
(49671, 'R Abigail', '123456789012'); COMMIT;

有关 Oracle 数据库 10g 第 2 版中加密功能的更多信息,请查看透明数据加密 OBE 教程。

 

审计数据访问

某些规则还要求您审计对数据进行的所有更改。细粒度访问控制能够在非常精细的细节级别审计数据访问并在出现安全性违规时调用过程。执行以下步骤:

1.

首先,创建一个对信用卡号码所做的更改进行审计的策略。在 SQL*Plus 窗口中,运行以下脚本:

@C:\wkdir\ilm_add_audit_policy
connect system/oracle
BEGIN
DBMS_FGA.ADD_POLICY (
object_schema => 'SYSTEM',
object_name => 'CREDIT_CARDS',
policy_name => 'CC_NOACCESS',
audit_column => 'cc_no',
statement_types => 'INSERT,UPDATE,DELETE'
);
END;
/

 

2.

启用策略后,现在可以向信用卡表中插入一行。审计记录将自动写入目录视图 DBA_FGA_AUDIT_TRAIL 中。从 SQL*Plus 窗口中,运行以下脚本:

@C:\wkdir\ilm_audit_insert

connect system/oracle
INSERT INTO credit_cards VALUES
(3256, 'G Brown', '123456789012'); COMMIT;

 

3.

现在,您可以查看审计跟踪表中包含的内容。在 SQL*Plus 窗口中,执行以下脚本:

@C:\wkdir\ilm_view_audit_trail

connect system/oracle
COLUMN db_user FORMAT a25
COLUMN object FORMAT a40
SELECT timestamp, db_user, object_schema ||'.'||object_name OBJECT, sql_text
FROM DBA_FGA_AUDIT_TRAIL;

现在,您可以关闭 SQL*Plus 窗口。

在本教程中,您学习了如何:

指定数据类别
将数据类别分配给存储层
管理访问和移植
实施合规性策略

返回主题列表