oracle数据库审计
Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象。审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用。
下表中总结了Oracle数据库中不同类型的审计。
审 计 类 型 |
说 明 |
语句审计 |
按照语句类型审计SQL语句,而不论访问何种特定的模式对象。也可以在数据库中指定一个或多个用户,针对特定的语句审计这些用户 |
权限审计 |
审计系统权限,例如CREATE TABLE或ALTER INDEX。和语句审计一样,权限审计可以指定一个或多个特定的用户作为审计的目标 |
模式对象审计 |
审计特定模式对象上运行的特定语句(例如,DEPARTMENTS表上的UPDATE语句)。模式对象审计总是应用于数据库中的所有用户 |
细粒度的审计 |
根据访问对象的内容来审计表访问和权限。使用程序包DBMS_FGA来建立特定表上的策略 |
下面几节介绍DBA如何管理系统和对象权限使用的审计。当需要一定的粒度时,DBA可以使用细粒度的审计来监控对表中某些行或列的访问,而不仅仅是是否访问表。
和审计相关的主要参数
SQL>show parameter audit
audit_file_dest
audit_sys_operations
audit_trail
audit_sys_operations:
默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit
trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as
sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti
trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
audit_trail:
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;
XML:10g里新增的。
10g Values:
none
Disables database auditing.
os
Enables database auditing and directs all audit records to the
operating system's audit trail.db
Enables database auditing and directs all audit records to the
database audit trail (the SYS.AUD$ table).db,extended
Enables database auditing and directs all audit records to the
database audit trail (the SYS.AUD$ table).
In addition, populates the SQLBIND and SQLTEXT CLOB
columns of the SYS.AUD$ table.xml
Enables database auditing and writes all audit records to XML
format OS files.xml,extended
Enables database auditing and prints all columns of the audit
trail, including SqlText and SqlBind values.
注:
参数AUDIT_TRAIL不是动态的,为了使AUDIT_TRAIL参数中的改动生效,必须关闭数据库并重新启动。在对SYS.AUD$表进行审计时,
应该注意监控该表的大小,以避免影响SYS表空间中其他对象的空间需求。推荐周期性归档SYS.AUD$中的行,并且截取该表。Oracle提供了角色
DELETE_CATALOG_ROLE,和批处理作业中的特殊账户一起使用,用于归档和截取审计表。
audit_file_dest:Audit_trail=OS时
文件位置
1.语句审计
所有类型的审计都使用audit命令来打开审计,使用noaudit命令来关闭审计。对于语句审计,audit命令的格式看起来如下所示:
AUDIT sql_statement_clause BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL; |
sql_statement_clause包含很多条不同的信息,例如希望审计的SQL语句类型以及审计什
么人。
此外,希望在每次动作发生时都对其进行审计(by access)或者只审计一次(by
session)。默认是by session。
有时希望审计成功的动作:没有生成错误消息的语句。对于这些语句,添加whenever
successful。而有时只关心使用审计语句的命令是否失败,失败原因是权限违犯、用完表空间中的空间还是语法错误。对于这些情况,使用
whenever not successful。
对于大多数类别的审计方法,如果确实希望审计所有类型的表访问或某个用户的任何权限,则可以指定all而不是单个的语句类型或对象。
表1列出了可以审计的语句类型,并且在每个类别中包含了相关语句的简要描述。如果指定all,则审计该列表中的任何语句。然而,表2中的语句类型在启用审计时不属于all类别;必须在audit命令中显式地指定它们。
表1 包括在ALL类别中的可审计语句
语 句 选 项 |
SQL操作 |
ALTER |
所有ALTER |
CLUSTER |
CREATE、ALTER、DROP或TRUNCATE集群 |
CONTEXT |
CREATE CONTEXT或DROP |
DATABASE |
CREATE或DROP数据库链接 |
DIMENSION |
CREATE、ALTER或DROP维数 |
DIRECTORY |
CREATE或DROP目录 |
INDEX |
CREATE、ALTER或DROP索引 |
MATERIALIZED |
CREATE、ALTER或DROP物化视图 |
NOT EXISTS |
由于不存在的引用对象而造成的SQL语句的失败 |
PROCEDURE |
CREATE或DROP |
PROFILE |
CREATE、ALTER或DROP配置文件 |
PUBLIC DATABASE |
CREATE或DROP公有数据库链接 |
PUBLIC |
CREATE或DROP公有同义词 |
ROLE |
CREATE、ALTER、DROP或SET角色 |
ROLLBACK |
CREATE、ALTER或DROP回滚段 |
SEQUENCE |
CREATE或DROP序列 |
SESSION |
登录和退出 |
SYNONYM |
CREATE或DROP同义词 |
SYSTEM |
系统权限的AUDIT或NOAUDIT |
SYSTEM |
GRANT或REVOKE系统权限和角色 |
TABLE |
CREATE、DROP或TRUNCATE表 |
TABLESPACE |
CREATE、ALTER或DROP表空间 |
TRIGGER |
CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL |
TYPE |
CREATE、ALTER和DROP类型以及类型主体 |
USER |
CREATE、ALTER或DROP用户 |
VIEW |
CREATE或DROP视图 |
表2 显式指定的语句类型
语 句 选 项 |
SQL 操 作 |
ALTER |
任何ALTER |
ALTER |
任何ALTER |
COMMENT |
添加注释到表、视图、物化视图或它们中的任何列 |
DELETE |
删除表或视图中的行 |
EXECUTE |
执行程序包中的过程、函数或任何变量或游标 |
GRANT |
GRANT或REVOKE |
GRANT |
GRANT或REVOKE过程、函数或程序包上的权限 |
GRANT |
GRANT或REVOKE序列上的权限 |
GRANT |
GRANT或REVOKE表、视图或物化视图上的权限 |
GRANT TYPE |
GRANT或REVOKE |
INSERT |
INSERT |
LOCK TABLE |
表或视图上的LOCK |
SELECT |
引用序列的CURRVAL或NEXTVAL的任何命令 |
SELECT |
SELECT |
UPDATE |
在表或视图上执行UPDATE |
一些示例可以帮助读者更清楚地了解所有这些选项。在示例数据库中,用户KSHELTON具有HR模式和其他模式中所有表上的权限。允许
KSHELTON创建其中一些表上的索引,但如果有一些与执行计划改动相关的性能问题,则需要知道何时创建这些索引。可以使用如下命令审计
KSHELTON创建的索引:
SQL> audit index by kshelton; Audit succeeded. |
后面的某一天,KSHELTON在HR.JOBS表上创建了一个索引:
SQL> create index job_title_idx on hr.jobs(job_title); Index created. |
检查数据字典视图DBA_AUDIT_TRAIL中的审计跟踪,可以看到KSHELTON实际上在8月12日的5:15
P.M.创建了索引:
SQL> select username, to_char(timestamp,'MM/DD/YY HH24:MI') Timestamp, 2 obj_name, action_name, sql_text from dba_audit_trail 3 where username = 'KSHELTON';USERNAME TIMESTAMP OBJ_NAME ACTION_NAME SQL_TEXT --------- -------------- -------------- -------------- ---------------- KSHELTON 08/12/07 |
注意:
从Oracle Database
11g开始,只有在初始参数AUDIT_TRAIL被设置为DB_EXTENDED时,才填充DBA_AUDIT_TRAIL中的列SQL_TEXT和SQL_BIND。默认情况下,AUDIT_TRAIL的值是DB。
为了关闭HR.JOBS表上KSHELTON的审计,可以使用noaudit命令,如下所示:
SQL> noaudit index by kshelton; Noaudit succeeded. |
也可能希望按常规方式审计成功的和不成功的登录,这需要两个audit命令:
SQL> audit session whenever successful; Audit succeeded. SQL> audit session whenever not successful; Audit succeeded. |
2.权限审计
审计系统权限具有与语句审计相同的基本语法,但审计系统权限是在sql_statement_clause中,而不是在语句中,指定系统权限。
例如,可能希望将ALTER
TABLESPACE权限授予所有的DBA,但希望在发生这种情况时生成审计记录。启用对这种权限的审计的命令看起来类似于语句审计:
SQL> audit alter tablespace by access whenever successful; Audit succeeded. |
每次成功使用ALTER
TABLESPACE权限时,都会将一行内容添加到SYS.AUD$。
使
用SYSDBA和SYSOPER权限或者以SYS用户连接到数据库的系统管理员可以利用特殊的审计。为了启用这种额外的审计级别,可以设置初始参数
AUDIT_SYS_OPERATIONS为TRUE。这种审计记录发送到与操作系统审计记录相同的位置。因此,这个位置是和操作系统相关的。当使用其中
一种权限时执行的所有SQL语句,以及作为用户SYS执行的任何SQL语句,都会发送到操作系统审计位置。
模式对象审计
审计对各种模式对象的访问看起来类似于语句审计和权限审计:
AUDIT schema_object_clause BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL; |
schema_object_clause指定对象访问的类型以及访问的对象。可以审计特定对象上14种不同的操作类型,下表中列出了这些操作。
对 象 选 项 |
说 |
ALTER |
改变表、序列或物化视图 |
AUDIT |
审计任何对象上的命令 |
COMMENT |
添加注释到表、视图或物化视图 |
DELETE |
从表、视图或物化视图中删除行 |
EXECUTE |
执行过程、函数或程序包 |
FLASHBACK |
执行表或视图上的闪回操作 |
GRANT |
授予任何类型对象上的权限 |
INDEX |
创建表或物化视图上的索引 |
INSERT |
将行插入表、视图或物化视图中 |
LOCK |
锁定表、视图或物化视图 |
READ |
对DIRECTORY对象的内容执行读操作 |
RENAME |
重命名表、视图或过程 |
SELECT |
从表、视图、序列或物化视图中选择行 |
UPDATE |
更新表、视图或物化视图 |
如果希望审计HR.JOBS表上的所有insert和update命令,而不管谁正在进行更新,则每次该动作发生时,都可以使用如下所示的audit命令:
SQL> audit insert, update on hr.jobs by access whenever successful; Audit successful. |
用户KSHELTON决定向HR.JOBS表添加两个新行:
SQL> insert into hr.jobs (job_id, job_title, min_salary, max_salary) 2 values ('IN_CFO','Internet Chief Fun Officer', 7500, 50000); 1 row created.SQL> insert into hr.jobs (job_id, job_title, min_salary, max_salary) 2 values ('OE_VLD','Order Entry CC Validation', 5500, 20000); 1 row created. |
查看DBA_AUDIT_TRAIL视图,可以看到KSHELTON会话中的两个insert命令:
USERNAME TIMESTAMP OWNER OBJ_NAME ACTION_NAME SQL_TEXT ---------- -------------- -------- ---------- --------------- --------------------------------------------------------------- KSHELTON 08/12/07 22:54 3 rows selected. |
4.细粒度的审计
从Oracle9i开始,通过引入细粒度的对象审计,或称为FGA,审计变得更为关注某个方面,并且更为精确。由称为DBMS_FGA的PL/SQL程序包实现FGA。
使用标准的审计,可以轻松发现访问了哪些对象以及由谁访问,但无法知道访问了哪些行或列。细粒度的审计可解决这个问题,它不仅为需要访问的行指定谓词(或where子句),还指定了表中访问的列。通过只在访问某些行和列时审计对表的访问,可以极大地减少审计表条目的数量。
程序包DBMS_FGA具有4个过程:
ADD_POLICY |
添加使用谓词和审计列的审计策略 |
DROP_POLICY |
删除审计策略 |
DISABLE_POLICY |
禁用审计策略,但保留与表或视图关联的策略 |
ENABLE_POLICY |
启用策略 |
用户TAMARA通常每天访问HR.EMPLOYEES表,查找雇员的电子邮件地址。系统管理员怀疑TAMARA正在查看经理们的薪水信息,因此他们建立一个FGA策略,用于审计任何经理对SALARY列的任何访问:
begin dbms_fga.add_policy( object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => audit_condition => 'instr(job_id,''_MAN'') > 0', |
可以使用数据字典视图DBA_FGA_AUDIT_TRAIL访问细粒度审计的审计记录。如果一般需要查看标准的审计行和细粒度的审计行,则数据字典视图DBA_COMMON_AUDIT_TRAIL结合了这两种审计类型中的行。
继续看示例,用户TAMARA运行了如下两个SQL查询:
SQL> select employee_id, first_name, last_name, email from hr.employees 2 where employee_id = 114;EMPLOYEE_ID FIRST_NAME LAST_NAME ----------- ------------------ |
第一个查询访问经理信息,但没有访问SALARY列。第二个查询与第一个查询相同,但是访问了SALARY列,因此触发了FGA策略,从而在审计跟踪中生成了一行:
SQL> select to_char(timestamp,'mm/dd/yy hh24:mi') timestamp, 2 object_schema, object_name, policy_name, statement_type 3 from dba_fga_audit_trail 4 where db_user = 'TAMARA';TIMESTAMP OBJECT_SCHEMA OBJECT_NAME POLICY_NAME STATEMENT_TYPE -------------- ------------- ------------- ---------------- -------------- 08/12/07 18:07 HR EMPLOYEES SAL_SELECT_AUDIT SELECT1 row selected. |
因为在本章前面的VPD示例中建立了细粒度的访问控制来阻止对SALARY列的未授权访问,因此需要加倍检查策略函数,确保仍然正确限制了SALARY信息。细粒度的审计以及标准审计是确保首先正确建立授权策略的好方法。
5.与审计相关的数据字典视图
下表包含了与审计相关的数据字典视图。
数据字典视图 |
说 |
AUDIT_ACTIONS |
包含审计跟踪动作类型代码的描述,例如INSERT、DROP |
DBA_AUDIT_OBJECT |
与数据库中对象相关的审计跟踪记录 |
DBA_AUDIT_POLICIES |
数据库中的细粒度审计策略 |
DBA_AUDIT_SESSION |
与CONNECT和DISCONNECT相关的所有审计跟踪记录 |
DBA_AUDIT_STATEMENT |
与GRANT、REVOKE、AUDIT、NOAUDIT和ALTER |
DBA_AUDIT_TRAIL |
包含标准审计跟踪条目。USER_AUDIT_TRAILUSER_TRAIL_AUDIT只包含已连接用户的审计行 |
DBA_FGA_AUDIT_TRAIL |
细粒度审计策略的审计跟踪条目 |
(续表)
数据字典视图 |
说 |
DBA_COMMON_AUDIT_TRAIL |
将标准的审计行和细粒度的审计行结合在一个视图中 |
DBA_OBJ_AUDIT_OPTS |
对数据库对象生效的审计选项 |
DBA_PRIV_AUDIT_OPTS |
对系统权限生效的审计选项 |
DBA_STMT_AUDIT_OPTS |
对语句生效的审计选项 |
6.保护审计跟踪
审计跟踪自身需要受到保护,特别是在非系统用户必须访问表SYS.AUD$时。内置的角色DELETE_ANY_CATALOG是非SYS用户可以访问审计跟踪的一种方法(例如,归档和截取审计跟踪,以确保它不会影响到SYS表空间中其他对象的空间需求)。
为了建立对审计跟踪自身的审计,以SYSDBA身份连接到数据库,并运行下面的命令:
SQL> audit all on sys.aud$ by access; Audit succeeded. |
现
在,所有针对表SYS.AUD$的动作,包括select、insert、update和delete,都记录在SYS.AUD$自身中。但是,您可能会
问,如果某个人删除了标识对表SYS.AUD$访问的审计记录,这时会发生什么?此时将删除表中的行,但接着插入另一行,记录行的删除。因此,总是存在一
些针对SYS.AUD$表的(有意的或偶然的)活动的证据。此外,如果将AUDIT_SYS
_OPERATIONS设置为True,使用as sysdba、as
sysoper或以SYS自身连接的任何会话将记录到操作系统审计位置中,甚至Oracle
DBA可能都无法访问该位置。因此,有许多合适的安全措施,用于确保记录数据库中所有权限的活动,以及隐藏该活动的任何尝试。
7.启用增强的审计
从Oracle Database 11g开始,数据库配置助手(Database
Configuration
Assistant,DBCA)很容易启用默认的(增强的)审计。虽然记录审计信息有一些系统开销,但兼容性需求(例如,Sarbanes-Oxley法案中规定的兼容性需求)要求严格监控所有业务操作,包括数据库中与安全相关的操作。
可以在创建数据库时或在数据库已经创建之后使用DBCA配置默认审计。如果已经改变了很多审计设置,并想要将审计选项重置为基线值,则在数据库已创建之后使用DBCA配置默认审计就非常有用。
除将初始参数AUDIT_TRAIL的值设置为DB外,默认审计设置还审计audit
role命令本身。另外,在Audited Privileges选项卡的Oracle Enterprise Manager Audit
Settings页面中,可以查看默认的审计权限。
补充说明:
8、实例讲解
8.1、激活审计
审计相关的表安装
SQLPLUS>
connect / AS SYSDBA
SQLPLUS>
select * from sys.aud$;
--没有记录返回
SQLPLUS>
select * from dba_audit_trail;
- 没有记录返回
如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。
SQLPLUS>
connect / as sysdba
SQLPLUS>
@$ORACLE_HOME/rdbms/admin/cataudit.sql
审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间又足够的空间存放审计信息。
安装后要重启数据库
将审计相关的表移动到其他表空间
由于AUD$表等审计相关的表存放在SYSTEM表空间,因此为了不影响系统的性能,保护SYSTEM表空间,最好把AUD$移动到其他的表空间上。可以使用下面的语句来进行移动:
sql>connect / as
sysdba;
sql>alter table aud$ move tablespace
;
sql>alter index I_aud1 rebuild online
tablespace ;
SQL> alter table audit$ move tablespace
;
SQL> alter index i_audit rebuild online
tablespace ;
SQL> alter table audit_actions move
tablespace ;
SQL> alter index
i_audit_actions rebuild online tablespace ;
SQL> conn /as
sysdba
SQL> show parameter
audit
NAME
TYPE
VALUE
------------------------------------
-----------
------------------------------
audit_file_dest
string
/u01/app/oracle/admin/ORCL/adump
audit_sys_operations
boolean
FALSE
audit_syslog_level
string
audit_trail
string
NONE
SQL> alter system set
audit_sys_operations=TRUE scope=spfile;
--审计管理用户(以sysdba/sysoper角色登陆)
SQL> alter system set
audit_trail=db,extended
scope=spfile;
SQL> startup
force;
SQL> show parameter
audit
NAME
TYPE
VALUE
------------------------------------
-----------
------------------------------
audit_file_dest
string
/u01/app/oracle/admin/ORCL/adump
audit_sys_operations
boolean
TRUE
audit_syslog_level
string
audit_trail
string
DB,
EXTENDED
8.2、开始审计
SQL> conn /as
sysdba
SQL> audit all on
t_test;
SQL> conn
u_test
SQL> select * from
t_test;
SQL> insert into
u_test.t_test (c2,c5) values
('test1','2');
SQL>
commit;
SQL> delete from
u_test.t_test;
SQL>
commit;
SQL> conn /as
sysdba
SQL> col DEST_NAME
format a30
col OS_USERNAME format
a15
col USERNAME format
a15
col USERHOST format
a15
col TERMINAL format
a15
col OBJ_NAME format
a30
col SQL_TEXT format
a60
SQL> select
OS_USERNAME,username,USERHOST,TERMINAL,TIMESTAMP,OWNER,obj_name,ACTION_NAME,sessionid,os_process,sql_text
from dba_audit_trail;
sql> audit select
table by u_test by access;
如果在命令后面添加by
user则只对user的操作进行审计,如果省去by用户,则对系统中所有的用户进行审计(不包含sys用户).
例:
AUDIT DELETE ANY
TABLE;
--审计删除表的操作
AUDIT DELETE ANY TABLE
WHENEVER NOT SUCCESSFUL;
--只审计删除失败的情况
AUDIT DELETE ANY TABLE
WHENEVER SUCCESSFUL;
--只审计删除成功的情况
AUDIT
DELETE,UPDATE,INSERT ON user.table by test;
--审计test用户对表user.table的delete,update,insert操作
8.3、撤销审计
SQL> noaudit all on
t_test;
9、审计语句
多层环境下的审计:appserve-应用服务器,jackson-client
AUDIT SELECT TABLE BY
appserve ON BEHALF OF jackson;
审计连接或断开连接:
AUDIT
SESSION;
AUDIT SESSION BY jeff,
lori; --
指定用户
审计权限(使用该权限才能执行的操作):
AUDIT DELETE ANY TABLE BY
ACCESS WHENEVER NOT SUCCESSFUL;
AUDIT DELETE ANY
TABLE;
AUDIT SELECT TABLE,
INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER
NOT SUCCESSFUL;
对象审计:
AUDIT DELETE ON
jeff.emp;
AUDIT SELECT, INSERT,
DELETE ON jward.dept BY ACCESS WHENEVER
SUCCESSFUL;
取消审计:
NOAUDIT
session;
NOAUDIT session BY jeff,
lori;
NOAUDIT DELETE ANY
TABLE;
NOAUDIT SELECT TABLE,
INSERT TABLE, DELETE TABLE,EXECUTE
PROCEDURE;
NOAUDIT
ALL; --
取消所有statement审计
NOAUDIT ALL
PRIVILEGES; --
取消所有权限审计
NOAUDIT ALL ON
DEFAULT; --
取消所有对象审计
10、清除审计信息
DELETE FROM
SYS.AUD$;
DELETE FROM SYS.AUD$
WHERE obj$name='EMP';
11、审计视图
STMT_AUDIT_OPTION_MAP
-- 审计选项类型代码
AUDIT_ACTIONS
-- action代码
ALL_DEF_AUDIT_OPTS
-- 对象创建时默认的对象审计选项
DBA_STMT_AUDIT_OPTS
-- 当前数据库系统审计选项
DBA_PRIV_AUDIT_OPTS
-- 权限审计选项
DBA_OBJ_AUDIT_OPTS
USER_OBJ_AUDIT_OPTS
-- 对象审计选项
DBA_AUDIT_TRAIL
USER_AUDIT_TRAIL
-- 审计记录
DBA_AUDIT_OBJECT
USER_AUDIT_OBJECT
-- 审计对象列表
DBA_AUDIT_SESSION
USER_AUDIT_SESSION
-- session审计
DBA_AUDIT_STATEMENT
USER_AUDIT_STATEMENT
-- 语句审计
DBA_AUDIT_EXISTS
-- 使用BY AUDIT NOT
EXISTS选项的审计
DBA_AUDIT_POLICIES
-- 审计POLICIES
DBA_COMMON_AUDIT_TRAIL
-- 标准审计+精细审计
12、将审计结果表从system表空间里移动到别的表空间上
实际上sys.aud$表上包含了两个lob字段,并不是简单的move
table就可以。
下面是具体的过程:
alter table sys.aud$ move
tablespace users;
alter table sys.aud$ move
lob(sqlbind) store as( tablespace
USERS);
alter table sys.aud$ move
lob(SQLTEXT) store as( tablespace
USERS);
alter index sys.I_AUD1
rebuild tablespace users;
oracle数据库审计的更多相关文章
- OCA读书笔记(11) - 实现Oracle数据库审计
11 Implementing Oracle Database Auditing 描述DBA对于安全和审计的职责使能标准的数据库审计安全审计选项查看审计信息维护审计路径 最小权限原则只在计算机上安装所 ...
- 行云管家 V4.7产品新特性-国际化版本、支持Oracle的数据库审计、主机密码自动修改策略 发布日期:2018-11-22
行云管家在线体验: 行云管家[官网]-领先的云计算管理平台-云安全,堡垒机,自动化运维 行云管家新手有礼活动: 行云管家新手有礼,新用户1元即可体验专业版-优惠券 发布日期:2018-11-22 ...
- oracle之二数据库审计
数据库审计audit(PPT-I-320-334) 13.1 审计的功能:监控特定用户在database 的action(操作) 13.2 审计种类: 1)标准数据库审计(语句审计.权限审计.对象审计 ...
- Oracle数据库11g各版本介绍及功能比较
.标准版和企 业版.所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集 群,而无需更改一行代码.Oracle数据库11g企 ...
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
- 【转】oracle数据库开发的一些经验积累
1.不安装Oracle客户连接Oracle 8的方法 请将以下文件拷贝到运行文件所在目录 一.ODBC动态库 : ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc ...
- 使用Oracle的审计功能记录连接数据库登录失败的用户信息
最近公司有一个项目,用的oracle数据库,整天出现用户被锁的情况,后来百度查了一下,说是用户登录连续出错10次就会被锁住.于是想记录一下看看到底是哪个人在扫数据库的密码.百度了很久才找到方法,下面分 ...
- P6 EPPM手动安装指南(Oracle数据库)(一)
P6 EPPM手动安装指南(Oracle数据库) P6 EPPM Manual Installation Guide (Oracle Database) 1. 内容... 1 1.1. ...
随机推荐
- Linux扩展正则表达式
1. 扩展正则表达式 1.1 +(加号) + 表示前一个字符出现1次或1次以上 1.1.1 理解+ 要求:取出文件内容连续出现的小写字母 [root@oldboyedu50-lnb /oldboy]# ...
- [Swift通天遁地]五、高级扩展-(7)UIView(视图类型)的各种扩展方法
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- EF--DBFirst
EF框架有三种基本的方式:DB First,Model First,Code First.这里简单的说一下DB First,适合没有基础的同学照着做,学习基础的东西. DatabaseFirst就是围 ...
- mybatis or
这两天项目用到mybatis,碰到and or的联合查询,语句像这样的 select * from table where xxx = "xxx" and (xx1="x ...
- C#用Microsoft.Office.Interop.Word进行Word转PDF的问题
之前用Aspose.Word进行Word转PDF发现'\'这个字符会被转换成'¥'这样的错误,没办法只能换个方法了.下面是Microsoft.Office.Interop.Word转PDF的方法: p ...
- C#学习-处理Excel
首先先了解下一个Excel文件的组成 1.一个Excel包含多个工作表(Sheet) 2.一个工作表(Sheet)包含多行(Row) 3.一行(Row)包含多个单元格(Cell) 如何判断一个单元 ...
- Objective-C——关联对象
动态语言 OC是一种动态语言,它的方法,对象的类型都是到运行的时候才能够确定的.所以这就使得OC存在了关联对象这一强大的机制. 关联对象 所谓关联对象,其实就是我们在运行时对一个已存在的对象上面绑定一 ...
- Laravel 5.4.36 session 生效问题
在测试过程中发现 如果方法有echo 等函数输出到PHP的输出缓存中 存在 sessionID 不会放到http的请求头中 下次请求也就拿不到sessionid问题 问题的原因 代码位置:publ ...
- html用过标签记录
nowrap="nowrap" //用于列表中td不许换行 maxlength="100" //用于输入框的长度限制 colspan="2" ...
- 在ubuntu系统下下载和卸载skype
1.下载 sudo apt-get install skypeforlinux 2.卸载 sudo apt remove skypeforlinux