管理Oracle数据库 — 记录使用日志
Oracle数据库作为目前业界最为流行的数据库管理系统之一,应用非常广泛。同时,Oracle数据库也是管理较为复杂的数据库之一,需要管理员具备一定的技术水准。在日常管理过程中,管理员需要关注数据库的稳定性和安全性,因此,记录使用日志成为了必不可少的一部分。
一般来说,Oracle数据库都会配置审计功能,并指定审计日志存储位置。在此基础上,管理员可以进行二次开发,实现更加灵活、便捷的审计功能。
下面,我们就以Oracle 11g数据库为例,详细介绍如何记录使用日志。
1. 配置审计
在Oracle数据库中开启audit功能:
SQL> alter system set audit_trl=db;
此命令会以数据库作为审计日志输出的目标。
接着,开启需要审计的项和级别:
SQL> audit create table by access;
在这里,我们以创建表这一操作为例进行审计,同时设定审计级别为access。
2. 查看审计日志
审计日志的查看方式有多种,我们介绍一下其中最基本的一种:使用系统表查看审计日志。
SQL> select username, to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss'), obj_name, action_name
from dba_audit_trl where obj_name = 'EMPLOYEES';
通过查询数据库中的dba_audit_trl表,就可以看到所有被审计的操作记录。
3. 定时清理审计日志
为了保证数据库尽量保持良好的性能和较小的存储空间占用,我们需要定期清理审计日志:
SQL> audit_trl_purge_timestamp
此命令会删除所有审计日志,只保留指定时间之后的审计记录。
4. 自定义审计
除了以上介绍的标准审计功能外,Oracle数据库还支持自定义审计功能,以满足管理员特定的审计需求。
自定义审计的实现过程如下:
– 创建审计表
此处以一个简单的例子为例:
SQL> create table audit_log
(
action_date timestamp default current_timestamp not null,
username varchar2(30) not null,
ip_address varchar2(15) not null,
session_id number not null,
action_detl varchar2(200) not null
);
– 创建审计过程
在数据库中,创建一个过程,使用系统变量,在审计表中插入有用的值。
SQL> CREATE OR REPLACE PROCEDURE audit_table
as
login_name varchar2(30) :=USER;
ip varchar2(15) := SYS_CONTEXT('USERENV','IP_ADDRESS');
sid NUMBER :=SYS_CONTEXT('USERENV','SID');
action varchar2(200):= 'Perform Audit';
BEGIN
INSERT INTO audit_log values (current_timestamp, login_name, ip, sid, action);
END audit_table;
– 审计
通过调用这个过程实现自定义审计:
SQL> exec audit_table;
此时,数据便会被记录到自定义的审计表中。
总结
通过配置Oracle数据库的审计功能,管理员可以详细记录数据库中的所有操作,保证数据库的安全与稳定;而通过自定义审计,管理员可以满足特定的审计需求,更加灵活地管理数据库。当然,这些只是Oracle数据库管理的入门阶段,对于真正的数据库管理人员,还有很多需要学习和掌握。