--**AUDIT TRAIL 审计的跟踪
SQL> show parameter Audit --查询审计相关的参数
/*
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string C:\ORACLE\PRODUCT\10.2.0\ADMIN
\TESTDB\ADUMP
audit_sys_operations boolean FALSE
audit_trail string None --默认是关闭的
*/
Select * From v$parameter_valid_values --查看参数的有效值
Select * From v$parameter_valid_values Where Name ='audit_trail' --DB放在数据库的表中 OS放在操作系统的数据文件中 DB_EXTENDED比DB捕获更多值(执行语句,绑定变量值) XML以XML的格式放在操作系统中 EXTENDED实际上是XML EXTENDED只能组合使用,功能类似DB_EXTENDED
Alter System Set audit_trail=DB_EXTENDED Scope=Spfile; --静态参数 直接修改SPFILE 然后需要重启数据库
--审计的类型
1.(system)privilege 系统权限审计
Select * From system_privilege_map --查看系统审计权限内容CREATE SESSION,CREATE TABLE等
SQL> audit create Session --开启reate session的审计
Select * From dba_priv_audit_opts --查看开启了哪些权限审计
C:\>sqlplus system@testdb --使用system用户登录
Select * From dba_audit_trail --查看审计跟踪的记录
SQL> audit alter system by a; --对用户A进行的更改系统参数进行审计
SQL> Noaudit create Session --关闭create Session的审计
SQL> audit create Session By a Whenever Not Successful --审计a用户连接不成功的create Session
2.object(privilege) 对象权限审计
C:\>sqlplus System@testdb
SQL> create table t(id int,name varchar2(10));
表已创建。
SQL> insert into t values(1,'a');
已创建 1 行。
SQL> commit;
提交完成。
SQL> audit select on t; --审计所有select表t的操作
Select * From t --查询表t,产生审计记录
Select * From dba_obj_audit_opts --查看开启了哪些对象审计
Select * From dba_audit_trail --查看审计跟踪的记录
audit select on t [By Session]; --按session进行审计,即同一session只记录一次
audit select on t By Access; --每次访问记录一次审计
Audit All On t --审计表t的所有信息
3.Statement 语句审计 --针对SQL语句的特定关键字进行审计
Audit Table By a --a用户下对table进行操作进行审计
C:\>sqlplus a@testdb --开启语句审计,需要被审计用户重新登录
SQL> create table tt(id int);
Select * From dba_audit_trail --查看审计跟踪的记录
--关闭审计
Noaudit Table By a --关闭审计,必须加相关条件,否则不起作用
--*****审计的维护
Select * From aud$ --审计的基表
Delete From aud$ --为数不多的允许操作的系统表
--****强制审计
SYS用户登录的操作,都被强制审计
审计信息存放在系统文件中
(windows下,管理-系统工具-事件查看器-应用程序)
unix下,存放在 audit_file_dest 该系统属性指定的地址下 show parameter Audit 进行查看
windows审计类型为xml_extended时,也存放在audit_file_dest 该系统属性指定的地址下 如 C:\ORACLE\PRODUCT\10.2.0\Admin\TESTDB\ADUMP
--Fine-grained auditing(FGA) 精细粒度审计
C:\>sqlplus a@testdb
SQL> create table t(id int,name varchar2(10),salary number default 1000);
Insert Into t Values(1,'a',1000);
begin
dbms_fga.add_policy (
object_schema => 'A', --审计的用户
object_name => 'T', --审计的对象
policy_name => 'audit_t_salary', --给审计策略起名字
audit_condition=> 'id=1', --审计id=1的
audit_column => 'SALARY', --审计salary这一列
/*handler_schema => 'secure', --审计时触发其他动作
handler_module => 'log_emps_salary', --访问salary这一列时,同时触发secure下的存储过程log_emps_salary*/
enable => TRUE,
statement_types => 'SELECT' );
End;
/
Select * From dba_audit_policies --可以看到新建的审计策略
C:\>sqlplus a@testdb
Select * From t --用户a登录查询表t触发审计策略
Select Id,Name From t --没有访问敏感数据,不触发审计策略
Select * From dba_fga_audit_trail --查看FGA审计到的信息
Select * From dba_common_audit_trail --存放的Standard Audit普通审计和Fine Grained Audit精细粒度审计
--***********************
--***********************
--Configuring The Oracle Network Environment 配置网络
lsnrctl status --查看监听的状态
/*监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
服务摘要..
服务 "testDB" 包含 2 个例程。
例程 "testRID", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB_XPT" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功*/
配置服务命名时,服务名可以使用上面出现的服务的名字
监听的全局服务名改为testLSR
lsnrctl reload
lsnrctl status
/*监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
服务摘要..
服务 "testDB" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB_XPT" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testLSR" 包含 1 个例程。
例程 "testRID", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功*/
配置服务命名时,服务名使用testLSR,可以通过 --tnsping testDB
testDB是当前service_name属性的值
SQL> show parameter serviece_name;
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string testDB
SQL> alter system set service_names=testDB,B,C; --service_name属性的值增加B,C,最多允许64个值
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string TESTDB, B, C
lsnrctl status
/*监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
服务摘要..
服务 "B" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "C" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB_XPT" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testLSR" 包含 1 个例程。
例程 "testRID", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功*/
配置服务命名时,服务名使用B,C,可以通过
--******************* service_names的用途
1.
分别使用B和C创建服务命名
用不同的应用连接B和C,就可以区分B和C2个应用哪个占用的资源多
SQL> @C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\awrrpt.Sql --生成报告
查看AWR报告就能区分一段时间内,B和C应用使用资源的对比
2.
集群环境,通过service_names确定哪个服务器的负载轻
3.
lsnrctl status下 状态 UNKNOWN的是监听配置出的静态服务信息,不一定通,作用是1.数据库shutdown的状态下,必须通过静态服务信息SYS用户连接;2.EM必须用静态服务信息
lsnrctl status下 状态 READY 的是动态服务信息,数据库启动后一定能连通
AWR报告中只能监控连接到动态服务信息的SESSION
--*******************
Create Table t_obj As Select * From dba_objects
Create Index idx_t_obj On t_obj(object_id)
Select Max(object_id),Min(object_id) From t_obj --这个语句怎么优化
Select * From (Select Max(object_id) From t_obj)a,(Select Min(object_id) From t_obj)b
SQL> show parameter Audit --查询审计相关的参数
/*
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string C:\ORACLE\PRODUCT\10.2.0\ADMIN
\TESTDB\ADUMP
audit_sys_operations boolean FALSE
audit_trail string None --默认是关闭的
*/
Select * From v$parameter_valid_values --查看参数的有效值
Select * From v$parameter_valid_values Where Name ='audit_trail' --DB放在数据库的表中 OS放在操作系统的数据文件中 DB_EXTENDED比DB捕获更多值(执行语句,绑定变量值) XML以XML的格式放在操作系统中 EXTENDED实际上是XML EXTENDED只能组合使用,功能类似DB_EXTENDED
Alter System Set audit_trail=DB_EXTENDED Scope=Spfile; --静态参数 直接修改SPFILE 然后需要重启数据库
--审计的类型
1.(system)privilege 系统权限审计
Select * From system_privilege_map --查看系统审计权限内容CREATE SESSION,CREATE TABLE等
SQL> audit create Session --开启reate session的审计
Select * From dba_priv_audit_opts --查看开启了哪些权限审计
C:\>sqlplus system@testdb --使用system用户登录
Select * From dba_audit_trail --查看审计跟踪的记录
SQL> audit alter system by a; --对用户A进行的更改系统参数进行审计
SQL> Noaudit create Session --关闭create Session的审计
SQL> audit create Session By a Whenever Not Successful --审计a用户连接不成功的create Session
2.object(privilege) 对象权限审计
C:\>sqlplus System@testdb
SQL> create table t(id int,name varchar2(10));
表已创建。
SQL> insert into t values(1,'a');
已创建 1 行。
SQL> commit;
提交完成。
SQL> audit select on t; --审计所有select表t的操作
Select * From t --查询表t,产生审计记录
Select * From dba_obj_audit_opts --查看开启了哪些对象审计
Select * From dba_audit_trail --查看审计跟踪的记录
audit select on t [By Session]; --按session进行审计,即同一session只记录一次
audit select on t By Access; --每次访问记录一次审计
Audit All On t --审计表t的所有信息
3.Statement 语句审计 --针对SQL语句的特定关键字进行审计
Audit Table By a --a用户下对table进行操作进行审计
C:\>sqlplus a@testdb --开启语句审计,需要被审计用户重新登录
SQL> create table tt(id int);
Select * From dba_audit_trail --查看审计跟踪的记录
--关闭审计
Noaudit Table By a --关闭审计,必须加相关条件,否则不起作用
--*****审计的维护
Select * From aud$ --审计的基表
Delete From aud$ --为数不多的允许操作的系统表
--****强制审计
SYS用户登录的操作,都被强制审计
审计信息存放在系统文件中
(windows下,管理-系统工具-事件查看器-应用程序)
unix下,存放在 audit_file_dest 该系统属性指定的地址下 show parameter Audit 进行查看
windows审计类型为xml_extended时,也存放在audit_file_dest 该系统属性指定的地址下 如 C:\ORACLE\PRODUCT\10.2.0\Admin\TESTDB\ADUMP
--Fine-grained auditing(FGA) 精细粒度审计
C:\>sqlplus a@testdb
SQL> create table t(id int,name varchar2(10),salary number default 1000);
Insert Into t Values(1,'a',1000);
begin
dbms_fga.add_policy (
object_schema => 'A', --审计的用户
object_name => 'T', --审计的对象
policy_name => 'audit_t_salary', --给审计策略起名字
audit_condition=> 'id=1', --审计id=1的
audit_column => 'SALARY', --审计salary这一列
/*handler_schema => 'secure', --审计时触发其他动作
handler_module => 'log_emps_salary', --访问salary这一列时,同时触发secure下的存储过程log_emps_salary*/
enable => TRUE,
statement_types => 'SELECT' );
End;
/
Select * From dba_audit_policies --可以看到新建的审计策略
C:\>sqlplus a@testdb
Select * From t --用户a登录查询表t触发审计策略
Select Id,Name From t --没有访问敏感数据,不触发审计策略
Select * From dba_fga_audit_trail --查看FGA审计到的信息
Select * From dba_common_audit_trail --存放的Standard Audit普通审计和Fine Grained Audit精细粒度审计
--***********************
--***********************
--Configuring The Oracle Network Environment 配置网络
lsnrctl status --查看监听的状态
/*监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
服务摘要..
服务 "testDB" 包含 2 个例程。
例程 "testRID", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB_XPT" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功*/
配置服务命名时,服务名可以使用上面出现的服务的名字
监听的全局服务名改为testLSR
lsnrctl reload
lsnrctl status
/*监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
服务摘要..
服务 "testDB" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB_XPT" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testLSR" 包含 1 个例程。
例程 "testRID", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功*/
配置服务命名时,服务名使用testLSR,可以通过 --tnsping testDB
testDB是当前service_name属性的值
SQL> show parameter serviece_name;
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string testDB
SQL> alter system set service_names=testDB,B,C; --service_name属性的值增加B,C,最多允许64个值
SQL> show parameter service
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string TESTDB, B, C
lsnrctl status
/*监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
服务摘要..
服务 "B" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "C" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testDB_XPT" 包含 1 个例程。
例程 "testrid", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testLSR" 包含 1 个例程。
例程 "testRID", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功*/
配置服务命名时,服务名使用B,C,可以通过
--******************* service_names的用途
1.
分别使用B和C创建服务命名
用不同的应用连接B和C,就可以区分B和C2个应用哪个占用的资源多
SQL> @C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\awrrpt.Sql --生成报告
查看AWR报告就能区分一段时间内,B和C应用使用资源的对比
2.
集群环境,通过service_names确定哪个服务器的负载轻
3.
lsnrctl status下 状态 UNKNOWN的是监听配置出的静态服务信息,不一定通,作用是1.数据库shutdown的状态下,必须通过静态服务信息SYS用户连接;2.EM必须用静态服务信息
lsnrctl status下 状态 READY 的是动态服务信息,数据库启动后一定能连通
AWR报告中只能监控连接到动态服务信息的SESSION
--*******************
Create Table t_obj As Select * From dba_objects
Create Index idx_t_obj On t_obj(object_id)
Select Max(object_id),Min(object_id) From t_obj --这个语句怎么优化
Select * From (Select Max(object_id) From t_obj)a,(Select Min(object_id) From t_obj)b
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15810196/viewspace-1130242/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15810196/viewspace-1130242/