文档库 最新最全的文档下载
当前位置:文档库 › ORACLE账户解锁定的方法

ORACLE账户解锁定的方法

ORACLE账户解锁定的方法
ORACLE账户解锁定的方法

ORACLE账户锁定解决办法如果数据库中某个账户登录时,提示被锁定

则如果想使用此账户登录时,解决办法参考下文。

●操作系统版本为:

Microsoft Windows[版本5.2.3790]

(C) 版权所有1985-2003 Microsoft Corp.

●解决方法:

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三6月24 10:43:39 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba

已连接。

SQL> alter user system account unlock;

用户已更改。

SQL> exit

从OracleDatabase 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options 断开

C:\Documents and Settings\Administrator>sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三6月24 10:45:26 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

请输入用户名: system

输入口令:

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL>

至此账户解锁成功。

另外一种方法:

同理,如果想锁定此用户的话:

在系统账户下,及sys账户下,

Sqlplus / as sysdba

SQL>ALTER USER scott ACCOUNT LOCK;

用户已更改

【VIP专享】Oracle权限、角色和用户

Oracle数据库权限、角色和用户总结 前言: ORACLE数据库系统预先定义了CONNECT 、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE五个角色。 CONNECT具有创建表、视图、序列等特权;(alter session create cluster ) RESOURCE具有创建过程、触发器、表、序列等特权、 DBA具有全部系统特权; EXP_FULL_DATABASE、IMP_FULL_DATABASE具有卸出与装入数据库的特权。 权限管理 一、权限分类 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。 实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理: 1、系统权限分类: DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。 CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。 2、系统权限授权命令: [系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)] 授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...; [普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。] 例:

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数据库日常维护手册 在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。 一、Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: ●数据库的启动、关闭,启动时的非缺省参数; ●数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因; ●对数据库进行的某些操作,如创建或删除表空间、增加数据文件; ●数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600) DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理 问题处理 启动参数不对检查初始化参数文件 因为检查点操作或归档操作没有完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率; 有人未经授权删除了表空间检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限 出现坏块检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建 表空间不够增加数据文件到相应的表空间 出现ORA-600根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁 二、数据库表空间使用情况监控(字典管理表空间)

数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。 select tablespace_name, count(*) chunks , max(bytes/1024/1024) max_chunk from dba_free_space group by tablespace_name; 个人收集整理 上面的SQL列出了数据库中每个表空间的空闲块情况,如下所示: TABLESPACE_NAME CHUNKS MAX_CHUNK -------------------- ---------- ---------- INDX 1 57.9921875 RBS 3 490.992188 RMAN_TS 1 16.515625 SYSTEM 1 207.296875 TEMP 20 70.8046875 TOOLS 1 11.8359375 USERS 67 71.3671875个人收集整理 其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle 数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合: alter tablespace 表空间名 coalesce; 然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。 MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。 对表空间的扩充对表空间的数据文件大小进行扩展,或向表空间增加数据文件,具体操作见“存储管理”部份。 三、查看数据库的连接情况

Oracle用户被锁定解决方法

Oracle用户被锁定解决方法 分类:oracle管理2011-12-27 11:183692人阅读评论(0)收藏举报oraclelogindatesessionusersql 1、用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. 2、查看具体的被锁时间 SQL> select username,lock_date from dba_users where username='TEST'; USERNAME LOCK_DATE TEST 2009-03-10 08:51:03 3、解锁 SQL> alter user test account unlock; User altered. 4、查看是那个ip造成的test用户被锁 查看$ORACLE_HOME/network/admin/log/listener.log日志 10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HO ST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49434)) * establish * lhoms * 0 10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HO ST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49435)) * establish * lhoms * 0 这样可知是上面10.69.1.11的ip尝试多次失败登陆造成的被锁 注: 一般数据库默认是10次尝试失败后锁住用户 1、查看FAILED_LOGIN_ATTEMPTS的值 select * from dba_profiles where RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS'; 2、修改为30次 alter profile default limit FAILED_LOGIN_ATTEMPTS 30; 3、修改为无限次(为安全起见,不建议使用) alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

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

数据库锁表与解锁

数据库锁表与解锁 一、mysql 锁定表:LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},…] 解锁表:UNLOCK TABLES 例子: LOCK TABLES table1 WRITE ,table2 READ 、、、更多表枷锁; 说明:1、READ 锁代表其她用户只能读不能其她操作 2、WRITE锁代表:其她用户不能任何操作(包括读) 查瞧那些表被锁:show OPEN TABLES where In_use > 0; 全局加锁:FLUSH TABLES WITH READ LOCK(这个命令就是全局读锁定,执行了命令之后所有库所有表都被锁定只读。解锁也就是:UNLOCK TABLES ) 二、oracle --行级锁定(同样对 mysql起作用) 通过 :select * from tableName t for update 或 select * from tableName t where id =1 for update 前者锁定整个表,后者多顶 id=1的一行数据(有主键,并且指定主键=值的只 锁定指定行) 说明:通过 select 、、、 for update 后其她用户只能读不能其她操作,锁定者通过 commit或 rollback命令自动解锁,或使用本文的解锁方式

(will)! --表级锁定 lock table in mode [nowait] 其中: lock_mode 就是锁定模式 nowait关键字用于防止无限期的等待其她用户释放锁 五种模式如下(1到5 级别越来越高,限制越来越大): 1、行共享(row share,rs):允许其她用户访问与锁定该表,但就是禁止排她锁定 整个表 2、排她锁(row exclusive ,rx):与行共享模式相同,同时禁止其她用户在此表上使用共享锁。使用select 、、、 for update语句会在表上自动应用行排她锁 3、共享(share ,s):共享锁将锁定表,仅允许其她用户查询表中的行,但不允许插入、更新、删除行。多个用户可以在同一表中放置共享锁,即允许资源共享,,因此得名“共享锁”。例如:如果用户每天都需要在结账时更新日销售额表,则可以在更新该表时使用共享锁以确保数据的一致性。 4、共享排她锁(share row exclusive,srx):执行比共享锁更多的限制。防止其 她事务在表上应用共享锁,、共享排她锁以及排她锁。 5、排她(exclusive,x):对表执行最大的限制。除了允许其她用户查询该表记录, 排她锁防止其她事务对表做任何更改或在表上应用任何类型的锁。 实例: lock table table_Name in exclusive mode; 要解锁需要锁定人执行 commit 或 rollback 或者用本文的解锁方式 (will)! --查询锁表 SELECT /*+ rule */ S、USERNAME, DECODE(L、TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,

介绍一下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数据库基本操作

实战经验Oracle数据库基本操作步步详解来源:2007年06月12日15:34网友评论:0条点击: 274 一,约束操作 1:更改约束名称: ALTER TABLE TName RENAME CONSTRAINT oldname TO newname; 2:删除约束 ALTER TABLE TName DROP CONSTRAINT cname 3:停止约束 ALTER TABLE TName MODIFY CONSTRAINT cname DISABLE; 4:起用约束 ALTER TABLE TName MODIFY CONSTRAINT cname ENABLE VALIDATE; 5:新增约束 ALTER TABLE TName ADD CONSTRAINT cname FOREIGN KEY (ORG_ID) REFERENCES ref_table (ORGID); 二,字段操作 1:更改字段数据类型: ALTER TABLE TName MODIFY(ORG_ID VARCHAR2(50 BYTE)); 2:更改字段数据长度: ALTER TABLE TName MODIFY(ORG_ID VARCHAR2(80 BYTE)); 3:修改表的列名 alter table TName rename column xx to yy; 三,表操作 1:删除表数据: truncate table TName; 2:复制空表结构 create table new_table as select * from old_table where 1=2; 3:复制表(含记录) create table new_table as select * from old_table ; 四,存储过程 1:命令行编译存储过程 ALTER PROCEDURE procedure_name COMPILE;

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 实训张大鹍手打总结 处理数据损坏

一、关于bbed bbed用于检测坏块和处理坏块。 BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新连接。 二、编译bbed 1、进入lib目录 [oracle@zdk ~]$ cd $ORACLE_HOME [oracle@zdk db_1]$ cd rdbms/lib/ [oracle@zdk lib]$ pwd /u01/app/oracle/product/10.2.0.1/db_1/rdbms/lib 2、激活bbed [oracle@zdk lib]$ make -f ins_rdbms.mk /u01/app/oracle/product/10.2.0.1/db_1/rdbms/lib/bbed Linking BBED utility (bbed) rm -f /u01/app/oracle/product/10.2.0.1/db_1/rdbms/lib/bbed gcc-o/u01/app/oracle/product/10.2.0.1/db_1/rdbms/lib/bbed -L/u01/app/oracle/product/10.2.0.1/db_1/rdbms/lib/ -L/u01/app/oracle/product/10.2.0.1/db_1/lib/ -L/u01/app/oracle/product/10.2.0.1/db_1/lib/stubs/ -L/usr/lib -lirc

ORACLE数据库用户与权限管理

ORACLE数据库用户与权限管理ORACLE是多用户系统,它允许许多用户共享系统资源。为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制。 2.1 ORACLE数据库安全策略 建立系统级的安全保证 系统级特权是通过授予用户系统级的权利来实现,系统级的权利(系统特权)包括:建立表空间、建立用户、修改用户的权利、删除用户等。系统特权可授予用户,也可以随时回收。ORACLE系统特权有80多种。 建立对象级的安全保证 对象级特权通过授予用户对数据库中特定的表、视图、序列等进行操作(查询、增、删改)的权利来实现。 建立用户级的安全保证 用户级安全保障通过用户口令和角色机制(一组权利)来实现。引入角色机制的目的是简化对用户的授权与管理。做法是把用户按照其功能分组,为每个用户建立角色,然后把角色分配给用户,具有同样角色的用户有相同的特权。 2.2 用户管理 ORACLE用户管理的内容主要包括用户的建立、修改和删除用户的建立

2.3系统特权管理与控制 ORACLE 提供了80多种系统特权,其中每一个系统特权允许用户执行一个或一类数据库操作。 授予系统特权 回收系统特权 显示已被授予的系统特权(某用户的系统级特权) 2.4 对象特权管理与控制 ORACLE对象特权指用户在指定的表上进行特殊操作的权利。这些特殊操作包括增、删、改、查看、执行(存储过程)、引用(其它表字段作为外键)、索引等。 授予对象特权

//级联授权 回收对象特权 显示已被授予的全部对象特权 2.5 角色的管理 ORACLE的角色是命名的相关特权组(包括系统特权与对象特权),ORACLE用它来简化特权管理,可把它授予用户或其它角色。 ORACLE数据库系统预先定义了CONNECT 、RESOURCE、 DBA、 EXP_FULL_DATABASE、IMP_FULL_DATABASE五个角色。CONNECT具有创建表、视图、序列等特权;RESOURCE具有创建过程、触发器、表、序列等特权、DBA具有全部系统特权;EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出与装入数据库的特权。 通过查询sys.dba_sys_privs可以了解每种角色拥有的权利。 授予用户角色

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的错误。这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失败等。

ORACLE坏块(ORA-01578)处理方法

ORACLE坏块(ORA-01578)处理方法 文章分类:数据库 0.模拟出现坏块环境 SQL> CREATE TABLESPACE "TEST" 2 LOGGING 3 DATAFILE 'D:\ORACLE\ORADATA\ALAN\TEST.ora' SIZE 1M EXTENT 4 MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 5 / 表空间已创建。 SQL> create user alantest identified by alantest 2 default tablespace test 3 temporary tablespace temp; 用户已创建 SQL> grant dba to alantest; 授权成功。 SQL> connect alantest/alantest 已连接。 SQL> show user USER 为"ALANTEST" SQL> create table test_alan as select * from dba_objects; RMAN> backup database format='c:\rmanbackup\FULL_%U'; 启动 backup 于 07-7月 -06 正在使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=18 devtype=DISK 通道 ORA_DISK_1: 正在激活 full 数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 在备份集中包含当前的 SPFILE 备份集中包括当前控制檔 输入数据文件 fno=00001 name=D:\ORACLE\ORADATA\ALAN\SYSTEM01.DBF 输入数据文件 fno=00002 name=D:\ORACLE\ORADATA\ALAN\UNDOTBS01.DBF 输入数据文件 fno=00003 name=D:\ORACLE\ORADATA\ALAN\INDX01.DBF 输入数据文件 fno=00005 name=D:\ORACLE\ORADATA\ALAN\USERS01.DBF

oracle hr解锁和加密

Oracle解锁与加锁(hr用户为例) [oracle@jieshi9i ~]$ sqlplus /nolog SQL*Plus: Release 9.2.0.4.0 - Production on Tue Jul 14 18:12:38 2009 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> conn sys/sys as sysdba Connected. SQL> show user USER is "SYS" SQL> desc dba_users Name Null? Type ----------------------------------------- -------- ---------------------------- USERNAME NOT NULL VARCHAR2(30) USER_ID NOT NULL NUMBER PASSWORD VARCHAR2(30) ACCOUNT_STATUS NOT NULL VARCHAR2(32) LOCK_DATE DATE EXPIRY_DATE DATE DEFAULT_TABLESPACE NOT NULL VARCHAR2(30) TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30) CREATED NOT NULL DATE PROFILE NOT NULL VARCHAR2(30) INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30) EXTERNAL_NAME VARCHAR2(4000)

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坏块修复

Oracle 坏块总结收藏 Oracle数据库出现坏块现象是指:在Oracle数据库的一个或多个数据块(一个数据块的容量在创建数据库时由db_block_size参数指定,缺省为8K)内出现内容混乱的现象。由于正常的数据块都有固定的合法内容格式,坏块的出现,导致数据库进程无法正常解析数据块的内容,进而使数据库进程报错乃至挂起,并级联导致整个数据库实例出现异常。 一.坏块的产生原因 坏块产生的原因大致有以下几种: 1.1 硬件问题 Oracle进程在处理一个数据块时,首先将其读入物理内存空间,在处理完成后,再由特定进程将其写回磁盘;如果在这个过程中,出现内存故障,CPU计算失误,都会导致内存数据块的内容混乱,最后反映到写回磁盘的数据块内容有误。同样,如果存储子系统出现异常,数据块损坏也就随之出现了。 1.2 操作系统BUG 由于Oracle进程对数据块的读写,都是以操作系统内核调用(system call)的方式完成的,如果操作系统在内核调用存在问题,必然导致Oracle进程写入非法的内容。 1.3 操作系统的I/O错误或缓冲问题 1.4 内存或paging问题 Oracle软件BUG Oracle软件特定版本上,可能出现导致数据块的内容出现异常BUG。

1.5 非Oracle进程扰乱Oracle共享内存区域 如上文所述,在当数据块的内容被读入主机的物理内存时,如果其他非Oracle进程,对Oracle 使用的共享内存区域形成了扰乱,最终导致写回磁盘的数据块内容混乱。 1.6 异常关机,掉电,终止服务 异常关机,掉电,终止服务使进程异常终止,而破坏数据块的完整性,导致坏块产生。注:这也是为什么突然断电会导致数据库无法启动 由上可见,坏块的形成原因复杂。当出现坏块时,为了找到确切的原因,需要大量的分析时间和排查操作,甚至需要多次重现才能找出根本原因。但当故障发生在生产系统上,我们为了减少停机时间,会尽快实施应急权变措施以保证系统的可用性,这样就破坏了故障现场,对根本原因的分析因而也更加困难了。 二.坏块的预防 坏块问题破坏性大,但并非不可预防。 2.1 在https://www.wendangku.net/doc/3f4977070.html,网站,Oracle定期发布基于特定软件版本的“已知问题(known issues)说明”。对于可能导致坏块的Oracle软件BUG,在Oracle公司内部,是作为高严重级别的问题进行处理,在“已知问题(known issues)说明”中,这些BUG以严重(Noticable)问题标出(标记为*或+),部分问题,Oracle还会发布警告(Alert)通告。在文档中,Oracle会提供相应的补丁或应对措施。 2.2 Oracle提供备份恢复工具-Recovery Manager,提供了扫描文件检查坏块的功能。 在Recovery Manager界面中,使用: RMAN> BACKUP CHECK LOGICAL V ALIDATE DATAFILE n ;

ORACLE账户解锁定的方法

ORACLE账户锁定解决办法如果数据库中某个账户登录时,提示被锁定 则如果想使用此账户登录时,解决办法参考下文。 ●操作系统版本为: Microsoft Windows[版本5.2.3790] (C) 版权所有1985-2003 Microsoft Corp. ●解决方法: C:\Documents and Settings\Administrator>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期三6月24 10:43:39 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn /as sysdba 已连接。 SQL> alter user system account unlock; 用户已更改。 SQL> exit 从OracleDatabase 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 断开 C:\Documents and Settings\Administrator>sqlplus SQL*Plus: Release 10.2.0.1.0 - Production on 星期三6月24 10:45:26 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. 请输入用户名: system

相关文档