文档库 最新最全的文档下载
当前位置:文档库 › oracle安全机制

oracle安全机制

oracle安全机制
oracle安全机制

Oracle安全机制

安全性是评价一个数据库产品的重要指标,直接决定了数据库的优劣。Oracle数据库采用一系列的安全控制机制,以保证数据库的安全性。Oracle数据库在3个层次上采取安全控制机制。(1)系统安全性:在系统级别上控制数据库的存取和使用机制,包括有效的用户和口令、判断用户是否被授予权限可以连接数据库、用户创建数据库对象时可以使用的表空间大小、用户的资源限制、是否启动数据库的审计功能、用户可以进行哪些操作系统等。(2)数据安全性:在数据库模式对象级别上控制数据库的存取和使用机制,包括用户可以存取的模式对象以及在该对象上可以进行的操作等。用户要对某个模式对象进行操作,必须具有该对象相应的对象权限。(3)网络安全性:oracle数据库是网络数据库,因此网络数据库传输的安全性至关重要,主要包括登陆助手、目录管理、标签安全性等。Oracle通过分发Wallet、数字证书、SSL安全套接字和数据秘钥等办法来确保网络数据传输的安全性。

一、系统安全方面采取的安全机制包括用户管理、资源限制和口令管理、权

限管理、角色管理、审计、利用OEM进行安全管理。

1、用户管理

用户是数据库的使用者和管理者,Orcle数据库通过设置用户及其安全属性来控制用户对数据库的访问和操作。用户管理是Oracle数据库安全管理的核心和基础。Oracle数据库中的用户分为两类,一类是创建数据库时系统与定义的用户,而预定义的用户根据作用不同又可以分为三类:1、管理员用户,2、示例方案用户,3、内置用户;另一类是根据应用需要由DBA创建的用户。

可以通过查询数据字典视图dba_users,查看当前数据库中所有用户信息。

如下图所示显示open的用户是已经开启的用户,显示expired & locked的用户是已经过期或是锁定的用户

1.1用户属性

为了防止非授权用户对数据库进行操作,在创建数据库用户时,必须使用安全属性对用户进行限制。用户的安全属性包括以下几个方面:

●用户名:在同一数据库中,用户名必须唯一。并且用户名不能与角色名相

同。

●用户身份认证:Oracle数据库采用了多种用户身份认证方式,例如数据库

身份认证、外部认证、以及全局认证。

●默认表空间:用户创建数据库对象时,如果没有显示地指出该对象存储在哪

个表空间,系统会自动将该数据库对象存储在当前用户的默认表空间。

(表空间:Oracle数据库在逻辑上可以划分为一系列的区域,每一个区域称为一个表空间。表空间是Oracle数据库最大的逻辑存储结构,由一系列段构成。Oracle数据库对象就是以段的方式从表空间中获取存储空间

的。)

●临时表:保存临时数据信息的表。

●表空间配额:表空间配额限制用户在永久空间中可以使用的存储空间的大

小。

●概要文件:从会话级和调用级两个层次限制用户对数据库资源的使用,同时

设置用户的口令管理策略。

●设置用户的默认角色:通过设置默认角色,可以禁止或激活用户所具有的角

色。

●账户状态:创建用户的同时,可以设定用户的初始状态,包括用户口令是否

过期以及账户是否锁定等

1.2创建用户

如上图所示,创建用户chen 采用数据库认证,口令为chen ,默认表空间为users 该表空间配额为10MB ,默认临时表空间为temp ,初始状态不锁定。

如上图所示,创建用户如果不授权,该用户不能做任何操作,即便是连接数据库。只有给用户授予了create session 系统权限后,用户才可以连接数据库。

使用系统管理员登陆,授予用户chen 权限,才能使用户chen连接数据库。

如果口令设置为过期状态,即首次连接数据库时需要修改口令。

1.3用户身份认证

◎数据库身份认证将数据库的用户名与口令都保存在数据库内部,且口令以加密方式存储。当用户练级数据库时,需要提供用户名与口令信息,通过数据库认证后才能登陆。

◎外部身份认证用户账户由oracle数据库管理,但口令管理和身份验证由外部服务来完成。

◎全局身份认证采用oracle数据库的高级安全组件,利用LDAP目录服务器集中管理用户信息。当用户试图建立与数据库的连接时,oracle利用网络中的目录服务器中的信息对用户进行身份认证。

1.4修改用户

alter user user_name [identified][by password][…][account

lock|unlock]

1.5删除用户

drop user username [cascade];

1.6 查询用户

select username,account_status … from dba_users;

忘记密码的方法:打开cmd,输入sqlplus /nolog,回车;输入

“conn / as sysdba”;输入“alter user sys identified by 新密码”,注意:新密码最好以字母开头,否则可能出现错误Ora-00988。有了这个方法后,只要自己对oracle服务器有管理员权限,不记得密码的时候就可以随意修改密码了。

sqlplus /nolog,conn /as sysdba 之所以能够登录,在于oracle登录时的身份认证方式。 oracle在登录时,有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。而conn /as sysdba是属于操作系统认证。为什么这样说呢?你当前电脑开机时登录的用户,也就是进入操作系统的用户,例如是gooooal,它在你电脑的ora_dba组中。可以在“我的电脑”单击右键,找到“管理”,选择“本地用户和组”,发现有一个组叫“ora_dba”,双击它,看到成员列表中“gooooal”。也就是在conn /as sysdba,oracle会进行操作系统验证,发现你当前登录的用户就属于ora_dba组,因此才可以登录成功。你可以把ora_dba组中的“gooooal”用户删除,再conn /as sysdba,就发现进不去了。

解决用户sys任意密码可以登录的问题:

1、sys是Oracle的一个很特殊的用户,它只能按sysdba和sysoper身份登入,也就是说只要按以上两种身份登入,都是sys用户,表面上输入的用户名都是无效的。任何其它用户只能按Normal身份登入。

2、sys用户的合法认证有两种方式:一是操作系统认证方式,二是数据库口令认证方式。如果你登入的操作系统是Oracle用户组,那么直接通过操作系统认证连接到数据库,没有必要口令来认证。所以你随便输入一个口令都可以的。

2 资源限定与口令管理

在oracle数据库中,用户对数据库和系统资源使用的限制以及对用户口令的管理是通过概要文件(profile)实现的。概要文件是oracle数据库安全策略的重要组成部分。每个数据库必须具有一个概要文件。概要文件不是一个物理文件,而是存储在sys模式的几个表中的信息的集合。这些表是在创建数据库运行sql.bsq脚本时,调用denv.bsq脚本创建的,包括profile$表、profname 表、resource_map表、resource_cost表等。

2.1资源限制的级别

概要文件通过对一系列资源管理参数的设置,从会话级和调用级两个级别对用户使用资源进行限制。会话级资源限制是对用户在一个会话过程中所能使用的资源总量进行限制,而调用级资源限制是对一条SQL语句在执行过程中所能使用的资源总量进行限制。

2.2 资源限制的类型

通过设置通过设置概要文件中的参数值,可以从下列几个方面限制用户对数据库和系统资源的使用。

▼ CPU使用时间:在一个会话或一个调用过程中使用CPU的总量。

▼逻辑读:在一个会话或一个调用过程中读取物理磁盘和逻辑内存数据块的总量

▼每个用户的并发会话数,即一个用户最多同时开启会话的数量。

▼用户连接数据库的最长时间。

▼私有SQL区和PL/SQL区的总量。

2.3 启用或停用资源限制与口令管理

ALTER SYSTEM SET resource_limit=TRUE/FALSE;

2.3.1 口令管理参数介绍

Oracle数据库概要文件中用于口令管理的参数包括以下:

① FAILED_LOGIN_ATTEMPTS:限制用户在登陆oracle数据库允许失败的次数。

②PASSWORD_LOCK_TIME:设定登陆失败后,账户锁定时间。

③PASSWORD_LIFE_TIME:设置口令的有效天数。

④PASSWORD_GRACE_TIME:用于设定提示口令过期的天数。

⑤PASSWORD_REUSE_TIME:指定一个用户口令被修改后,必须经过多少天才可以重新使用该口令。

⑥PASSWORD_REUSE_MAX:指定一个口令被重新使用前,必须经过多少次修改。

⑦PASSWORD_VERIFY_FUNCTION:设置口令复杂性校验函数。

2.4 创建资源限制的概要文件

(上次不成功的原因,sessions写成了session,还有per写成了pre)

1如图:创建一个名为res_profile的概要文件,要求每个用户最多可以创建2个并发会话,每个会话持续时间最长为60min,会话的最长连续空闲时间为

20min,每个会话的私有SQL区为100KB,每个SQL语句占用CPU时间总量不超过10s.

2 将概要文件指定给用户rf

Alter user rf profile res_profile

3 将资源管理激活

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE scope=both;

4如下图,用户rf只能创建2个并发会话,创建第3个时出现错误:超出了限定范围

2.5 创建口令管理的概要文件

SQL>create profile pwd_profile limit

Failed_login_attempts 4 password_lock_time 10;

2.6 将概要文件分配给用户

将该概要文件指定给普通用户rf,用户连续登陆四次失败,锁定账户,10天后自动解锁。

用管理员账号解锁用户rf。

2.7 修改概要文件

例子:SQL>alter profile pwd_profile limit password_life_time 10;

将用户口令设置有效期为10天

例子:SQL>drop profile pwd_profile cascade;删除概要文件。

例子:SQL>select * from dba_profiles order by profile;查询数据库所有概要文件的参数设置。

3权限管理

Oracle数据库使用权限俩控制用户对数据库的访问和用户在数据库中所能执行的操作。用户在数据库中可以执行什么样的操作,以及可以对哪些对象进行操作,完全取决于该用户拥有的权限。

控制Oracle数据库访问的权限类型有两种:系统权限system privilege和对象权限Object privilege(方案对象)。系统权限向用户提供执行某一种或某一类型的数据库操作能力,对象权限对某个特定的数据库对象执行某种操作权限,如对表employees的插入、删除、修改、查询的权限等。

在oracle 数据库中给用户授权可以采用两种方式:1.利用grant命令直接为用户授权。2.现将权限授予角色,然后再将角色授予用户。

3.1 系统权限分类

在Oracle 11g数据库中,有200多种数据库权限,每种系统权限都为用户提供了执行某一些或某一类数据库操作的能力。查询所有系统权限信息的命令如下:

系统权限可以分为两大类:

●一类是对数据库某一类对象的操作能力,与具体的数据库对象无关,通常带有ANY关键字。例如,CREATE ANY TABLE系统权限允许用户在任何模式中创建表;SELECT ANY TABLE系统权限允许用户查询数据库中任何模式中的表和视图。

●另一类系统权限是数据库级别的某种操作能力。例如,CREATE SESSION系统权限允许用户登陆数据库:ALTER SYSTEM系统权限允许用户修改数据库参数。

使用系统权限的注意事项:

Select、Insert、Update、Delete都是对象权限,它们只针对用户自己模式下的对象,但如果加了Any关键字,针对的就是数据库中所有模式下的对象了。如果授予用户系统权限时使用了With Admin Option子句,则被授权的用户还可以将相应的权限授予其他用户。开发人员一般需要几个系统权限,其中包括Create Table、Create View和Create type系统权限,以创建支持前台应用程序的数据库模式。

查询当前用户所拥有的系统权限如下:

当前登陆用户被授予的系统权限也可以使用如下命令:

查看当前用户所拥有的对象权限:

查看特定用户所拥有的系统权限:

查询特定用户所拥有的对象权限:

如图所示用户rf,只有创建会话和创建概要文件的权限。

3.2 系统权限的授权与回收

只有DBA用户才可以拥有ALTER DATABASE系统权限。

例子:为用户chen授予create table 、create sequence系统权限

用户获得权限后,可以在chen模式下创建表和序列了,例如:

还可以授予用户权限,并且权限具有传递性。授予权限同时,在用户后面加上with admin option

数据库管理员可以使用revoke语句回收用户、角色或public用户组获得的系统的权限。例如:

回收用户系统权限时需要注意以下几点:

1 多个管理员授予用户同一个系统权限后,其中一个管理员回收其授予该用户的系统权限,该用户将不再拥有相应的系统权限。

2 为了回收用户系统权限的传递性,必须先回收用户的系统权限,然后再重新授予其相应的系统权限。

3如果一个用户获得的系统权限具有传递性,并且给其他用户授权,那么该用户系统权限被回收后,其他用户的系统权限并不受影响。

3.3 对象权限分类、授权、回收

对象权限是指对某个特定模式对象的操作权限。数据库模式对象所有者拥有该对象的所有对象权限,对象权限的管理实际上是对象所有者对其他用户操作该对象的权限管理。对象权限的授予实用grant语句,例如,查看授予用户对象权限,并查看该权限

此时用户rf就具有对表scott.emp进行查询、插入和更新的权限了,例如:

对象权限的回收,数据库管理员或对象所有者可以使用revoke语句回收用户、角色或public用户组获得的对象权限。

和系统权限类似,在进行对象权限回收时应该注意上面类似的三点。

4 角色管理

为了简化数据库权限的管理,在oracle数据库中引入角色的概念。所谓角色就是一系列相关权限的集合。可以将要授予相同身份用户的所有权限先授予角色,然后再将角色授予用户,这样用户就得到了该角色所具有的所有权限,从而简化了权限的管理。

4.1 角色的特点和优点

特点:角色名称在数据库中必须唯一,不能与用户同名;角色不是模式对象,删除创建角色的用户对角色没有影响;角色可以包含任何系统权限和对象权限;角色可以授予任何数据库用户和其他角色;授予用户的角色可以随时禁用或激活等。

优点:减少权限管理的工作量;有效的使用权限;提高应用安全性。

4.2 角色分类

◆预定义角色

Oracle数据库创建时由系统自动创建的一些常用的角色,这些角色已经由系统授予了相应的权限。

查询当前系统中的所有预定义角色:

查询select_catalog_role角色所具有的系统权限。

◆用户自定义角色

Oracle数据库允许用户自定义角色,并对自定义角色进行权限的授予与回收。同时允许角色进行修改、删除、禁用或激活等操作。创建角色使用create role语句。例子如下:

创建的几个角色分别是:一般角色;角色采用数据库认证,激活时需要口令;激活角色时采用操作系统认证、网络认证;激活角色时采用目录服务进行全局认证。

4.3 角色权限的授予与回收

创建一个角色后,如果不给角色授权,那么角色时没有用处的。因此,在创建角色后,需要给角色授权。给角色授权实际上是给角色授予适当的系统权限、对象权限或已有角色。在数据库运行时,可以为角色增加权限,也可以回收其权限。角色权限的授予、回收的过程与用户权限的授予、回收过程类似。

权限授予如下:

一个角色可以被授予另一角色,但不能授予其自身,既不能产生循环授权。

修改是指使用alter role语句修改角色的认证方式

如上图所示,为角色role_emp添加认证口令,取消角色role_manager的认证口令。

角色的禁用与激活

Set role

{角色名[identified by 口令][,角色名[identified by 口令]]…

|all[except 角色名[,角色名]…]|none};

注:

All:将使会话用户所有被授予的角色有效。

None:将禁用会话用户所有被授予的角色。

identified by 口令:启用需要口令的角色时,必须给出口令。

删除口令。如下图,激活角色role_manager.

删除角色,如下图:

4.4 利用角色进行权限管理

1给用户或角色授予角色:如下图,将预定义用户resource,connect 授予角色role_manager,将角色授予用户chen.

2 通过修改角色权限动态修改用户权限

3 从用户或其他角色回收角色

4 设置用户默认角色

当一个角色授予某一个用户后,该角色即成为该用户的默认角色。对于用户而言,用户的默认角色处于激活状态,而非默认角色处于禁用状态。

ALTER USER user DEFAULT ROLE role_list

5 查询角色信息

查询用户chen所具有的角色信息

上图是查看当前用户授予的所有角色信息。

5审计

审计是监视和记录用户对数据库所进行的操作,以供DBA进行统计和分析。利用审计可以完成下列任务:

●保证用户对自己在数据库中的活动负责。

●禁止用户在数据库中从事与自己职责不相符的活动。

●调查数据库中的可疑活动。

●通知审计员一个未授权用户在数据库中的活动。

●监视和收集特定数据库活动的数据。

5.1审计分类

语句审计:对特定的SQL语句进行审计,不指定具体对象。

权限审计:对特定的系统权限使用情况进行审计。

对象审计:对特定的模式对象上执行的特定语句进行审计。

网络审计:对网络协议错误与网络层内部错误进行审计。

5.2 审计环境设置

使用数据库审计功能,数据库管理员需要对数据库初始化参数AUDIT_TRAIL进行设置。AUDIT_TRAIL参数可以取值DB、DB EXTENDED、OS、XML EXTENDED、NONE。

◎ DB:默认值,表示启动审计功能,审计信息写入SYS.AUD$数据字典中。

◎ DB,EXTENDED:与DB相同,审计信息中还包括SQL语句绑定变量信息。

◎ OS:表示启动审计功能,审计信息写入操作系统文件。

◎ XML:表示启动审计功能,审计信息写入XML格式的操作系统文件中。

◎ XML,EXTENDED:与XML相同,但审计信息还包含SQL语句绑定变量信息。◎ NONE:表示不启动审计信息。

由于初始化参数audit_trail是静态参数,因此需要重新启动数据库,例如:

5.3语句审计

对特定类型的SQL语句进行审计,与具体的对象没有关系。包括下列几种情况:

1可以审计某个用户或所有用户的SQL语句;2可以使会话审计或存取审计;3可以对成功执行的SQL语句进行审计;4可以对没有成功执行的SQL语句进行审计;5可以对SQL语句进行审计,无论该语句是否成功执行。

例如可以通过不同选项组合,形成多种不同的审计:

当用户scott进行create table ,drop table 和truncate table这三种操作时就会产生审计信息,并保存在数据字典SYS.AUD$中

SQL>conn scott/scott;

SQL>create table test_audit(sno number,sname char(20));

查询AUD$

SQL>conn sys/sys as sysdba:

SQL> select returncode,action#,userid,userhost,terminal, from aud$

如果要了解当前数据库对哪些用户进行了语句审计以及审计设置信息,可以通过查询数据字典DBA_STMT_AUDIT_OPTS获得,例如:

5.4 权限审计

对特定的系统权限的使用情况进行审计,例如:

如果要了解当前数据库对哪些用户的系统权限进行了审计以及审计设置信息,可以通过查询数据字典DBA_PRIV_AUDIT_OPTS获得,例如:

取消对某个系统权限的审计,改audit命令为noaudit即可:

5.5 对象审计

是指对特定模式对象的操作进行审计,与用户没有关系。例如:

如果要了解当前数据库对哪些模式对象进行了审计以及审计设置信息,可以通过查询数据字典DBA_OBJ_AUDIT_OPTS获得,例如:

Oracle 数据库安全综述

Oracl e 数据库安全综述 邓明翥 2007061035 摘要信息时代,数据安全性和日俱增。对于企业数据库来说。安全性和系统性能同样重要.一旦数据丢失或者非法用户侵入,对于任何一个使用系统来说都是致命的问题.提高Oracle数据库安全性就要做好安全管理工作.文章从Oracle 入手从安全机制和安全策略两个角度分析其安全,并给出一些安全管理操作的具体方法,最后通过对比给出其安全策略的优点。 1数据库系统简介 1.1背景介绍 随着网络技术的飞速发展。网络安全问题日渐突出。数据库技术自20世纪60年代产生至今,也已得到了快速的发展和广泛使用,数据库中由于数据大量集中存放,且为众多用户直接共享,安全性问题尤为突出。 数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。经过几十年的发展,数据库技术在理论上得到不断完善的同时,也广泛地投入到财务、教育、电子政务、金融等领域中得到大规模的使用。目前,市场上不仅有能满足个人用户需要的桌面小型数据库管理系统,也有能提供大规模数据管理功能、使用在网络环境的大中型数据库管理系统。 1.2数据库系统产品简介 随着大规模数据组织和管理日益引起人们的关注,数据库系统显现出越来越大的市场价值,许多公司都推出了各具特色的数据库管理系统。下面对在市场上占据主流、具有一定代表意义的两款数据库系统做简要介绍。 1.2.1SQL Server简介 SQL Server是由Microsoft公司开发和推广的关系数据库管理系统。它最初是由Microsoft、Sybase、Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。由于Microsoft公司强大的开发能力和市场影响力,自1988年起,不断有新版本SQL Server推出并迅速占领中小型数据库市场。根据来自BZ Research2007年数据库整合和统计报告的数据,SQL Server的市场占有率为74.7%,高居第一。其中,SQL Server2000的用户群最为庞大,SQL Server2008是最新版本。本文所提及的SQL Server,如未特别指出,都指的是SQL Server2000。 SQL Server具有典型的C/S结构。使用图形化用户界面,使系统管理和数据库管理更加直观、简介。同时,还提供了丰富的编程接口工具,为用户进行程序

oracle的TM锁、TX锁知识完全普及 (2)

o r a c l e的T M锁、T X锁知识完全普及锁概念基础 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(ExclusiveLocks,即X锁)和共享锁(ShareLocks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(datalocks,数据锁),用于保护数据的完整性;DDL锁(dictionarylocks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internallocksandlatches),保护数据库的内部结构。 DML锁的目的在于保证并发情况下的数据完整性,。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。 当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX 锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。 在数据行上只有X锁(排他锁)。在Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。 当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失败等。 悲观封锁和乐观封锁 一、悲观封锁 锁在用户修改之前就发挥作用: Select..forupdate(nowait)

oracle数据库安全管理制度

竭诚为您提供优质文档/双击可除oracle数据库安全管理制度 篇一:规章制度之数据备份及应急恢复制度 医院信息系统运行与应用管理规章制度汇编 数据备份工作制度及应急恢复工作规定 数据备份工作制度 1、数据备份是备份his系统所有的数据,包括病人费用信息和医疗信息,关系到整个系统的正常运转,影响到全院的医疗工作的正常秩序,责任重大,数据管理员要有高度的事业心、责任感和一丝不苟万无一失的严谨工作作风。 2、严格按照《数据备份方案》要求,逐条认真操作,每天做逻辑备份,每周六作全部备份,每月做一次冷备份. 3、每两周对数据要进行一次恢复试验,以确保备份数据的安全可靠。 4、为了整理数据库,每月对oRacle数据库进行一次expoRt和inpoRt。 5、根据数据增长量,应定期对过期数据进行处理。 6、每天对服务器进行仔细检查,主要查看文件是否有损坏,cpu和内存占用资源情况,客户端登录和访问数据库

是否正常等。 7、如系统发现异常情况,要马上处理,处理不了要立即汇报,并提出建议。 8、严格遵守保密制度和网络管理规范,绝对保密数据管理员口令,当有其他人对服务器进行操作时,要亲自在场并作好详细记录,有第二者知道口令时要及时更改口令。 9、每次对服务器进行操作时,认真作好登录统计,不得马虎。 10、要熟练掌握nt、oRacle数据库知识,不断提高业务水平。 11、数据备份磁带要异地存放,安全保管。 12、如不按规定执行出现重大事故,追究责任者的一切责任并严肃处理。 应急恢复工作规定 1、当计算机网络中心服务器确认出现故障时,由系统管理员,按《数据备份恢复方案》进行系统恢复。 2、系统管理员由信息科主任指定专人负责恢复。当人员变动时应有交接手续。 3、当网络线路不通时,网络系统维护人员应立即到场进行维护,当光纤损坏时应立即使用备用光纤进行恢复,交换机出现故障时,应使用备用交换机,即刻通知前台工作站工作人员使用。

Oracle的五种锁

Oracle的五种Table Lock Oracle中的锁定可以分为几类:DML lock(data lock),DDL lock(dictionary lock)和internal lock/latch。 DML lock又可以分为row lock和table lock。row lock在select.. for update/insert/update/delete时隐式自动产生,而table lock除了隐式产生,也可以调用lock table in name来显示锁定。 如果不希望别的session lock/insert/update/delete表中任意一行,只允许查询,可以用lock table table_name in exclusive mode。(X)这个锁定模式级别最高,并发度最小。 如果允许别的session查询或用select for update锁定记录,不允许insert/update/delete,可以用lock table table_name in share row exclusive mode。(SRX) 如果允许别的session查询或select for update以及lock table table_name in share mode,只是不允许insert/update/delete,可以用lock table table_name in share mode。(share mode和share row exclusive mode的区别在于一个是非抢占式的而另一个是抢占式的。进入share row exclusive mode后其他session不能阻止你insert/update/delete,而进入share mode后其他session也同样可以进入share mode,进而阻止你对表的修改。(S) 还有两种锁定模式,row share(RS)和row exclusive(RX)。他们允许的并发操作更多,一般直接用DML语句自动获得,而不用lock语句。 ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4:Share 共享锁(S):阻止其他DML操作,share 5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive 6:exclusive 独占(X):独立访问使用,exclusive 数字越大锁级别越高, 影响的操作越多。 1级锁有:Select,有时会在v$locked_object出现。 2级锁有:Select for update,Lock For Update,Lock Row Share select for update当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查询这些数据行,不能进行update、delete 或select for update操作。 3级锁有:Insert, Update, Delete, Lock Row Exclusive 没有commit之前插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。 4级锁有:Create Index, Lock Share

ORACLE安全管理、备份与恢复

安全管理、备份与恢复 一、实验目的 1.掌握用户管理、权限管理、角色管理的操作方法; 2.了解物理备份与恢复、物理备份与恢复、逻辑备份与恢复的操作方法。 二、实验内容和要求 1、教程第230页,实训题第1到10小题 三、实验步骤 1、create user usera_exer identified by usera default tablespace users quota 10m on users account lock; 2、create user userb_exer identified by userb; 3、grant create session to usera_exer with admin option; grant select,update on scott.emp to usera_exer with grant option ; 4、alter user usera_exer account unlock; 5、connect usera_exer/usera; select* from scott.emp; update scott.emp set sal=sal+100; grant select,update on scott.emp to userb_exer; 6、revoke create session from usera_exer; grant create session to usera_exer; 7、revoke select ,update on scott.emp from usera_exer; grant select,update on scott.emp to usera_exer; 8、create role rolea ; create role roleb ; grant create table to rolea ; grant insert,update on scott.emp to rolea; grant connect,resource to roleb;

Oracle数据库安全加固文档

1 端口设置 1.1 避免使用默认的监听端口 配置项 名称 避免使用默认的监听端口 检查方法 1检查$ORACLE_HOME/network/admin/listener.ora中是否有port=1521一项。 操作步骤 1 备份$ORACLE_HOME/network/admin/目录下的tnsnames.ora, listener.ora 文件 2 备份$ORACLE_HOME/dbs目录下的spfileSid.ora和initSid.ora 3执行$ lsnrctl stop 关闭Listener 4用vi修改listener.ora中的端口号1521为其他端口 5用SQL>startup immediate 关闭数据库 6 修改initSid.ora添加一项LOCAL_LISTENER=listener1 7 在tnsnames.ora中添加一项 listener1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1522)) ) ) 8 SQL>create spfile from pfile 9 $ lsnrctl start 10 SQL>startup 启动数据库 回退操作 关闭Listener和数据库,恢复备份的文件到原来的目录,重启Listener和数据库。 风险 1.修改默认端口会影响到目前使用该数据库的应用,需要这些应用同步修改为新的端口 2.需要关闭重启数据库以及关闭重启Listener来完成端口的修改 2 用户与权限 2.1 设置LISTENER的启动关闭密码 配置项 名称 设置LISTENER的启动关闭密码 检查方法 检查$ORACLE_HOME/network/admin/listener.ora文件中是否有PASSWORDS_LISTENER一项,若有说明密码已设定。 操作步骤1 备份$ORACLE_HOME/network/admin/listener.ora文件2设置步骤 $ lsnrctl

ORACLEELOQUA安全管理云服务

ORACLE产品介绍 ORACLE ELOQUA 安全管理云服务 以更大的灵活性 保护宝贵的营销资产 主要特性 ?自定义安全用户组和角色 ?灵活的权限 ?三种访问类型 主要优势 ?可设定用户访问特性和功能的权限。?可保持不限数量的安全用户组。?可跨组使用复合权限。 ?可为单个营销资产分配权限。作为一个企业级营销平台,Oracle Eloqua 营销云服务提供了全面的用户安全性管理工具。例如,销售用户应比高级营销用户具有较为受限制的平台和资产访问权限。尽管标准的安全用户组足以满足大多数组织的需求,不过仍有一些组织需要通过额外的自定义安全用户组更有效地为组织角色设定系统访问权限。此外,一些组织可能需要对单个营销资产进行更细粒度的控制,以避免未经授权的人员意外访问和更改营销活动或设置。Oracle Eloqua 安全管理云服务可对用户安全性提供近乎无限的灵活性和控制。 自定义安全性角色 Oracle Eloqua 营销云服务标配一些通用安全用户组,可同时为大量用户分配应用权限。用户组中的任何用户都可以继承相应权限,因此系统管理工作快速便捷。这些标准的用户组足以满足常规需求,不过也有一些公司具有比较复杂或全球性的组织结构,需要以极致的灵活性在应用中分配用户权限。除了标准安全特性以外,Oracle Eloqua 安全管理云服务还可让用户能够 ?创建或复制自定义安全用户组和角色,即指定用户可以访问哪些特性和功能 ?构建和保持不限数量的安全用户组 ?将用户指定为多个安全用户组的成员,允许用户跨组使用复合或叠加权限—例如,仅允许用户在应用中执行营销活动,或者允许用户创建和编辑联系人,但不可访问营销活动 对营销资产的访问权限 自定义安全角色可指定对应用中的特性或功能的访问权限,并且可通过访问控制来指定对各个营销资产的访问权限。例如,您可能希望限制欧洲营销团队更改北美团队正在开发的登录页面,反之亦然。营销人员可以为特定用户或用户组分配资产权限,从而为访问权限提供极致的灵活性。借助 Oracle Eloqua 安全管理云服务的这些特性,您可以: ?限制用户或用户组(包括自定义用户组)对特定资产的访问 ?为任何类型的营销资产(包括营销活动、细分、电子邮件、表单、登录页面、页眉和页脚)分配权限 ?为用户或用户组分配以下三种访问权限之一:

oracle安全机制

Oracle安全机制 安全性是评价一个数据库产品的重要指标,直接决定了数据库的优劣。Oracle数据库采用一系列的安全控制机制,以保证数据库的安全性。Oracle数据库在3个层次上采取安全控制机制。(1)系统安全性:在系统级别上控制数据库的存取和使用机制,包括有效的用户和口令、判断用户是否被授予权限可以连接数据库、用户创建数据库对象时可以使用的表空间大小、用户的资源限制、是否启动数据库的审计功能、用户可以进行哪些操作系统等。(2)数据安全性:在数据库模式对象级别上控制数据库的存取和使用机制,包括用户可以存取的模式对象以及在该对象上可以进行的操作等。用户要对某个模式对象进行操作,必须具有该对象相应的对象权限。(3)网络安全性:oracle数据库是网络数据库,因此网络数据库传输的安全性至关重要,主要包括登陆助手、目录管理、标签安全性等。Oracle通过分发Wallet、数字证书、SSL安全套接字和数据秘钥等办法来确保网络数据传输的安全性。 一、系统安全方面采取的安全机制包括用户管理、资源限制和口令管理、权 限管理、角色管理、审计、利用OEM进行安全管理。 1、用户管理 用户是数据库的使用者和管理者,Orcle数据库通过设置用户及其安全属性来控制用户对数据库的访问和操作。用户管理是Oracle数据库安全管理的核心和基础。Oracle数据库中的用户分为两类,一类是创建数据库时系统与定义的用户,而预定义的用户根据作用不同又可以分为三类:1、管理员用户,2、示例方案用户,3、内置用户;另一类是根据应用需要由DBA创建的用户。 可以通过查询数据字典视图dba_users,查看当前数据库中所有用户信息。 如下图所示显示open的用户是已经开启的用户,显示expired & locked的用户是已经过期或是锁定的用户

介绍一下Oracle悲观锁和乐观锁

介绍一下Oracle悲观锁和乐观锁 为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做。先从悲观锁开始说。在SqlServer等其余很多数据库中,数据的锁定通常采用页级锁的方式,也就是说对一张表内的数据是一种串行化的更新插入机制,在任何时间同一张表只会插1条数据,别的想插入的数据要等到这一条数据插完以后才能依次插入。带来的后果就是性能的降低,在多用户并发访问的时候,当对一张表进行频繁操作时,会发现响应效率很低,数据库经常处于一种假死状态。而Oracle用的是行级锁,只是对想锁定的数据才进行锁定,其余的数据不相干,所以在对Oracle表中并发插数据的时候,基本上不会有任何影响。注:对于悲观锁是针对并发的可能性比较大,而一般在我们的应用中用乐观锁足以。Oracle的悲观锁需要利用一条现有的连接,分成两种方式,从SQL语句的区别来看,就

是一种是for update,一种是for update nowait的形式。比如我们看一个例子。首先建立测试用的数据库表。CREATE TABLE TEST(ID,NAME,LOCATION,VALUE,CONSTRAINT test_pk PRIMARY KEY(ID))AS SELECT deptno, dname, loc, 1 FROM scott.dept这里我们利用了Oracle的Sample的scott用户的表,把数据copy到我们的test表中。首先我们看一下for update锁定方式。首先我们执行如下的select for update语句。select * from test where id = 10 for update通过这条检索语句锁定以后,再开另外一个sql*plus窗口进行操作,再把上面这条sql语句执行一便,你会发现sqlplus好像死在那里了,好像检索不到数据的样子,但是也不返回任何结果,就属于卡在那里的感觉。这个时候是什么原因呢,就是一开始的第一个Session中的select for update语句把数据锁定住了。由于这里锁定的机制是wait的状态(只要不表示nowait 那就是wait),所以第二个Session(也就是卡住的那个sql*plus)中当前这个检索就处于等待状态。当第一个session最后commit或者rollback之后,第二个session中的检索结果就是自动跳出来,并且也把数据锁定住。不过如果你第二个session中你的检索语句如下所示。select * from test where id = 10也就是没有for update这种锁定数据的语句的话,就不会造成阻塞了。另外一种情况,就是当数据库数据被锁定的时候,也就是执行刚才for update那条sql以后,我们在另外一个session中执行for update nowait后又是什么样呢。比如如下的sql语句。由于这条语句中是制定采用nowait

Oracle数据库安全配置规范华为

目录 1概述 (2) 1.1适用范围 (2) 1.2内部适用性说明 .......................................................................................................... 错误!未定义书签。 1.3外部引用说明 .............................................................................................................. 错误!未定义书签。 1.4术语和定义 .................................................................................................................. 错误!未定义书签。 1.5符号和缩略语 (2) 2ORACLE安全配置要求 (2) 2.1账号 (2) 2.2口令 (7) 2.3日志 (11) 2.4其他 (13)

1概述 1.1适用范围 本规范明确了Oracle数据库安全配置方面的基本要求。 1.2符号和缩略语 2ORACLE安全配置要求 本规范所指的设备为ORACLE数据库。本规范提出的安全配置要求,在未特别说明的情况下,均适用于ORACLE数据库。 本规范从ORACLE数据库的认证授权功能、安全日志功能,和其他自身安全配置功能提出安全要求。 2.1账号 ORACLE应提供账号管理及认证授权功能,并应满足以下各项要求。 2.1.1按用户分配帐号

Oracle数据库安全配置手册

Oracle数据库安全配置手册 Version 1.0

版本控制

目录 第一章目的与范围 (1) 1.1目的 (1) 1.2适用范围 (1) 1.3数据库类型 (1) 第二章数据库安全规范 (1) 2.1操作系统安全 (1) 2.2帐户安全 (2) 2.3密码安全 (2) 2.4访问权限安全 (2) 2.5日志记录 (3) 2.6加密 (3) 2.7管理员客户端安全 (3) 2.8安全补丁 (3) 2.9审计 (3) 第三章数据库安全配置手册 (4) 3.1O RACLE数据库安全配置方法 (4) 3.1.1 基本漏洞加固方法 (4) 3.1.2 特定漏洞加固方法 (12)

第一章目的与范围 1.1 目的 为了加强宝付的数据安全管理,全面提高宝付各业务系统的数据安全水平,保证业务系统的正常运营,提高业务服务质量,特制定本方法。 本文档旨在于规范宝付对各业务系统的Oracle数据库进行安全加固处理。 1.2适用范围 本手册适用于对宝付公司的各业务系统的数据库系统加固进行指导。 1.3数据库类型 数据库类型为Oracle 11g。 第二章数据库安全规范 2.1 操作系统安全 要使数据库安全,首先要使其所在的平台和网络安全。然后就要考虑操作系统的安全性。Oracle使用大量用户不需要直接访问的文件。例如,数据文件和联机重做日志文件只能通过Oracle的后台进程进行读写。因此,只有要创建和删除这些文件的数据库管理员才需要在操作系统级直接访问它们。导出转储文件和其他备份文件也必须受到保护。可以把数据复制到其他数据库上,或者是作为复制模式的一部分,或者是提供一个开发数据库。若要保护数据的安全,就要对数

Oracle的事务及锁

1、事务的概念: 事务是一个基本的逻辑单元,它作为一个整体要么全部执行要么全部不执行。 2、事务的特性: 原子性:事务是处理的一个原子单位,每一个操作不可拆分,它要么全部执行成功,要么全部都不执行。 一致性:指事务完成时,必须使所有的数据在整体上不变。 隔离性:各事务之间相互隔离,此事务的执行不受其他并发事务执行的干扰。 持续性:指事务对数据库的改变应是持续存在的,不会因故障而发生丢失。 3、从功能是上划分,sql语言分为DDL、DML和DCL: 3.1DDL(Data Definition Language,数据定义语言): 用于定义和管理数据库中的所有对象的语言,如:create创建表空间、alter修改表空间、drop 删除表空间 3.2:DML(Data manipulation Language,数据操作语言): 处理数据等操作,如:insert插入数据、delete删除数据、update修改数据、select查询数据3.3:DCL(Data Control Language,数据控制语言): 授予或回收访问数据库的权限,控制数据库操作事务发生的时间及效果,对数据库实行监视,如:grant授权,rollback回滚,commit提交 4、事务的开始及结束: 一个事务可以由一条DDL语句单独组成或多条DML语句共同组成。一个事务从执行第一条sql语句开始,在它被提交或被回滚时结束。事务的提交可以是显式提交:用commit命令直接完成;也可以是提交隐式提交:用sql语句间接完成提交,这些语句有:alter,audit,comment,create,disconnect,drop,exit,grant,noaudit,quit,revoke,rename,会话终止等;还可以是自动提交:set autocommit on或set autocommit immediate设置为自动提交,则在插入、删除、修改语句执行后自动提交,使用set autocommit off可以取消自动提交,show autocommit可以查看自动提交是否打开。事务的回滚使用rollback;语句,可以为事务设置保存点,如:savepoint point1,然后使用rollback to [savepoint] point1回到保存点point1,若在point1后又设置了一个保存点savepoint point2,则在rollback to point1后将不能再回滚到point2,因为point2在point1的后面,point1的保存点不存在point2。 5、事务的并发性与一致性: 并发性:多个用户可以在同一时刻访问相同的数据。 一致性:保证并发性的同时,每个用户能得到一致的数据视图。 并发执行事务时,可能发生如下情况: ①脏读:某个事务读取了其他未提交事务修改过的数据。 脏读示例:提交读隔离级别可防止脏读,但不能防止不可重复读 ②不可重复读:某个事务读取一次数据后,其他事务修改了这些数据并进行了提交,这样当该事务重新读取这些数据时,就会得到与前一次读取不一致的结果。简单的说,就是同样的条件,你读取过的数据,再次读取时发现值不一样了。 不可重复读示例:可重复读隔离级别可防止脏读和不可重复读

Oracle数据库安全管理

公司内部 Oracle数据库安全管理 主题:Oracle数据库安全管理 项目名称:公司内部 撰写单位:海鼎 作者:吴昭松 版本号:0.1 日期:2006-3-8 审核 文档历史 参考文档

概述 本文概要性讲述Oracle数据库安全管理,使读者对Oracle的数据库安全管理有所了解。 包含内容: 1、概要文件; 2、管理用户; 3、权限和角色; 概要文件 概要文件是Oracle安全策略的重要组成部分,利用概要文件可以对数据库用户进行基本的资源限制,并且可以对用户的口令进行管理。 概要文件是命名的数据库和系统资源限制集合。通过为数据库用户指定概要文件,可以控制用户在数据库和实例中所能使用的资源。通常DBA会将数据库中用户分为几种类型,为每类用户创建概要文件。一个数据库用户只能指定一个概要文件。 在安装数据库时,Oracle会自动建立名为DEFAULT的默认概要文件,如果在创建新的数据库用户时没有为他指定概要文件,Oracle将自动为他指定这个默认概要文件。另外,如果在用户自定义的概要文件中没有指定某项参数,Oracle将使用DEFAULT概要文件中相应的参数作为默认值。 在概要文件中还可以对用户的口令管理策略进行设置。 资源限制参数 利用概要文件,可以对以下几类数据库和系统资源进行限制: ●CPU时间 ●逻辑读 ●用户的并发会话数 ●空闲时间 ●连接时间 ●私有SGA区 对这些资源的限制是通过在概要文件中设置资源参数来实现的。资源参数的值可以是一个整数,也可以是UNLIMITED(即不受限制),还可以是DEFAULT(使用默认概要文件中的参数设置)。 大部分的资源限制都可以在两个级别进行:会话级或调用级。会话级资源限制是对用户在一个会话过程中所能使用的资源进行的限制,而调用级资源限制是对一条SQL语句在执行过程中所能使用的资源进行的限制。 当会话或一条SQL语句占用的资源超过概要文件中的限制时,Oracle将中止并回退当前的操作,然后向用户返回错误信息。这时用户仍然有机会提交或回退当前的事务。如果受到的是会话级限制,在提交或回退事务后用户会话被中止(断开连接),但是如果受到的是调用级限制,用户会话还能继续进行,只是当前执行的SQL语句被终止。 下面分别介绍在概要文件中使用的各种资源参数: ●SESSIONS_PER_USER 该参数限制每个用户所允许建立的最大并发会话数目。达到这个限制时, 用户不能再建立任何数据库连接。

Oracle安全性的讲解

数据库安全性问题一直是围绕着数据库管理员的恶梦,数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。随着计算机技术的飞速发展,数据库的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。各种应用系统的数据库中大量数据的安全问题、敏感数据的防窃取和防篡改问题,越来越引起人们的高度重视。数据库系统作为信息的聚集体,是计算机信息系统的核心部件,其安全性至关重要,关系到企业兴衰、国家安全。因此,如何有效地保证数据库系统的安全,实现数据的保密性、完整性和有效性,已经成为如今关注的一个话题。 甲骨文董事长拉里·埃里森在 Oracle OpenWorld大会上,谈到了 一个观点——要保护数据库安全,关键在于加密。他还认为,我们不仅要为发往互联网的数据库中的数据加密,还要为从硬盘转移到后端系统的过程中的数据加密。他还建议企业禁止用户在没有进行加密的情况下实施数据备份。“因为如果没有加密的备份CD或者DVD光盘一旦丢失,你就会失去信息。” 数据库系统的安全性很大程度上依赖于数据库管理系统。如果数据库管理系统安全机制非常强大,则数据库系统的安全性能就较好。目前市场上流行的是关系式数据库管理系统,其安全性功能很弱,这就导致数据库系统的安全性存在一定的威胁。因此,数据库管理员应从以下几个方面对数据库的安全进行考虑。 一:用户角色的管理 这是保护数据库系统安全的重要手段之一。它通过建立不同的用户组和用户口令验证,可以有效地防止非法的Oracle用户进入数据库系统,造成不必要的麻烦和损坏;另外在Oracle数据库中,可以通过授权来对Oracle用户的操作进行限制,即允许一些用户可以对Oracle服务器进行访问,也就是说对整个数据库具有读写的权利,而大多数用户只能在同组内进行读写或对整个数据库只具有读的权利。在此,特别强调对SYS 和SYSTEM两个特殊账户的保密管理。 为了保护ORACLE数据库服务器的安全,应保证$ORACLE_HOME/bin目录下的所有内容的所有权为Oracle用户所有。 为了加强数据库在网络中的安全性,对于远程用户,应使用加密方式通过密码来访问数据库,加强网络上的DBA权限控制,如拒绝远程的DBA访问等。

oracle的TM锁T锁知识完全普及

o r a c l e的T M锁T锁知 识完全普及 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

oracle的TM锁、TX锁知识完全普及 锁概念基础 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护数据库的内部结构。 DML锁的目的在于保证并发情况下的数据完整性,。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。 当Oracle 执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM 锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。 在数据行上只有X锁(排他锁)。在 Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行 DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。 当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失败等。

JAVA中锁概及运用

一、锁的概念及分类 ORACLE数据库是现今数据库领域应用最广泛的,同时它也是一个庞大的系统,全面了解它、玩转它不但需要一定的理论知识,更需要开发经验与工程经验。本人是ORACLE一爱好者,以下是本人对ORACLE锁的一些经验,希望能与大家共同分享。 ORACLE锁具体分为以下几类: 1.按用户与系统划分,可以分为自动锁与显示锁 自动锁:当进行一项数据库操作时,缺省情况下,系统自动为此数据库操作获得所有有必要的锁。 显示锁:某些情况下,需要用户显示的锁定数据库操作要用到的数据,才能使数据库操作执行得更好,显示锁是用户为数据库对象设定的。 2.按锁级别划分,可分为共享锁、共享更新锁、排它锁 共享锁:共享锁使一个事务对特定数据库资源进行共享访问——另一事务也可对此资源进行访问或获得相同共享锁。共享锁为事务提供高并发性,但如拙劣的事务设计+共享锁容易造成死锁或数据更新丢失。 ―锁定表 ―仅允许其他用户执行查询操作 ―不能插入、更新和删除 ―多个用户可以同时在同一表中放置此锁 ―lock tab le table_name ―in share mode [nowait]; ― rollback 和commit 命令释放锁 ― nowait 关键字告诉其他用户不用等 共享更新锁 ―锁定要被更新的行 ―允许其他用户同时查询、插入、更新未被锁定的行 ―在 SELECT 语句中使用“FOR UPDATE”子句,可以强制使用共享更新锁 ―允许多个用户同时锁定表的不同行 加锁的两种方法 1 lock table tab_name in share update mode; 2 select column1,column2 from goods where goods where gid=1001 for update of column1,column2

Oracle数据库安全配置标准

XX公司 Oracle数据库安全配置标准(试行) 1 目的 为保证公司应用系统的信息安全,规范数据库层面的安全配置操作,制定本标准。 2 范围 本标准适用于公司各个业务系统中使用的Oracle 10g及以上数据库系统。 3 安全配置标准 3.1安装数据库的主机要求 ●主机应当专门用于数据库的安装和使用; ●数据库主机避免安装在域控制器上; ●硬件要求请参考Oracle 10g及以上各发行版自带的发行说明; ●主机操作系统层面应当保证安全:Oracle数据库可以安装在Windows Server,Linux,及各类Unix系统上,数据库软件安装之前,应当保证主机操作系统层面的安全,需要对主机进行安全设置,补丁更新,防病毒软件安装等。 3.2数据库补丁安装标准 日常运行维护中如果Oracle推出新的补丁,则应按照《基础平台运维管理办法》的相关规定,在进行评估、验证之后,升级相关补丁。 3.3数据库口令安全配置标准 3.3.1 密码复杂性配置要求 1.密码长度至少为8位 2.必须为DBA帐户和普通帐户提供复杂的口令,需要包含以下字符: ?英语大写字母 A, B, C, … Z ?英语小写字母 a, b, c, … z ?西方阿拉伯数字 0, 1, 2, (9)

?非字母数字字符,如标点符号,@, #, $, %, &, *等 ?为用户建profile,调整PASSWORD_VERIFY_FUNCTION,对密码负载度进行设置: 3.3.2 创建应用账号并授权 创建用户: SQL>create user username identified by password; 基本授权: SQL>grant connect,resource to username; 创建表空间: SQL>create tablespacetablespace_namedatafile ‘/home/oracle/tablespace_name.dbf’size 500m; 用户与表空间对应: SQL>alter user username default tablespacetablespace_name; 3.3.3 禁用不必要的数据库帐户 针对每个数据库里的数据库帐号,确保没有测试帐号和无用的帐号存在。如果存在,应该及时禁用。 使用如下语句查看数据库账号,并锁定不必要的账号 SQL> select username,password,account_status,default_tablespace from dba_users;

Oracle中锁的产生和解锁

Oracle中锁的产品和解锁 文档修改记录 版本号日期说明编写者审核者V1.0 20110822 初稿周伟明 1Oracle锁的介绍 在多进程或者多线程业务系统中,多个Oracle用户可以同时登录到一个Oracle数据库,对数据库中的数据进行操作难免会出现同时访问同一数据(表或者表中某一条记录)的情况,如果不对这种情况进行规范操作,数据的一致性和完整性就得不到保证,从而会出现意想不到的结果,所以必须有一种机制对并发访问进行控制和调度,避免造成数据更新不正确。 Oracle锁就是这样一种机制,它是控制并发操作最常用的方法。Oracle使用锁来防止进程相互之间发生的破坏性影响,当一个进程企图阻止另外一个进程对某条数据操作时,该进程就对这个数据进行锁,别的进程对这个数据操作之前,必须获得这个数据的解锁。 Oracle锁功能是Oracle DBMS自动完成的,不需要用户干预,但Oracle也提供了加锁的命令,供用户使用。 1.1 Oracle锁机制 Oracle自动使用不同锁类型来控制数据的并发操作,以防止用户之间的破坏性干扰。Oracle为一个事务自动锁一个资源,以防止其他事务对同一个资源的排他锁。当某种条件出现或者事务不再需要该资源时,锁自动解除。Oracle自动获取不同类型的锁取决于锁的资源及其所执行的操作。其中包括数据锁(DML)、字典锁(DDL)、内部锁、人工锁定、分布锁和并行缓冲管理锁。

1.1.1数据锁(DML)模式 数据锁保证表中数据在多个用户并发操作数据时保证数据的完整性,并防止相冲突的DML和DDL操作的破坏性干扰。 DML操作可在两个级别获取数据锁:行级锁(TX)和表级锁(TM)。 表级锁有以下几种方式 ●空 Null,即无锁。 ●行共享表锁(RS) 行共享表锁(有时也叫SS),表明事务保持已锁表行的表锁,并试图修改数据。 这种锁是在执行以下命令的时自动获取: Select …From 表名… for update for …; Lock Table 表名 in Row Share Mode; 当一个事务在一个表持有行共享锁的时候,允许其他事务并行查询、插入、修改或 者删除及再进行行锁,但禁止其他事务以排他方式进行操作该表。 Lock Table 表名 in Exclusive Mode; ●行排他表锁(RX) 行排他表锁(有时也叫SX)表示该事务对该资源有独占权利,通常是在修改记录 时发生这种锁。 该锁在执行以下命令的时候自动获取: Insert Into 表名…; Update 表名…; Delete From 表名…; Lock Table 表名 In Row Exclusive Mode; 当一个事务在一个表上持有行排他锁时,允许其他事务并行查询、插入、删除、修 改或者锁同一个表的其他行,但禁止其他事务使用下列命令进行并发锁: Lock Table 表名 In Share Mode; Lock Table 表名 In Share Row Exclusive Mode; Lock Table 表名 In Exclusive Mode; ●共享表锁(S)

相关文档