网站首页 > 文章中心 > 其它

oracle如何解除锁定

作者:小编 更新时间:2023-09-28 13:59:33 浏览量:53人看过

oracle查询资源占用,锁表解锁

① 先通过top命令查看产用资源较多的spid号

select sid,serial#,machine,username,program,sql_hash_value,sql_id,

select sql_text

from v$sqltext_with_newlines

where hash_value = hash_value

order by piece;

也可直接使用:

select a.*,b.SQL_TEXT from (

) a,v$sql b

where a.sql_id? = b.SQL_ID(◆)

Alter system kill session 'SID,SERIAL#'

解锁:

①查询哪些对象被锁:

? select object_name,machine,s.sid,s.serial#

? from v$locked_object l,dba_objects o ,v$session s

? where l.object_id = o.object_id and l.session_id=s.sid;

? select spid, osuser, s.program

? from v$session s,v$process p

Oracle数据库,如何解除数据库用户账户的锁定呢?如何修改口令呢?

这两个操作都需要用sysdba身份去修改,方法如下:

①.、win◆R,输入cmd,回车.

sqlplus?/nolog

conn?/?as?sysdba

alter?user?用户名?account?unlock;

alter?user?用户名?identified?by?密码;

ORACLE报错 ORA-28000: 帐户已被锁定 解决方法,如何解锁?

原因:oracle输入密码不正确,试了10次后,会自动锁定用户.

解决方法:使用sqlplus命令行解锁.

步骤:

①.、打开sqlplus窗口,用sysdba角色登录

? ? 用户已更改.

解锁成功啦!

oracle 帐号scott被锁定 如何解锁

原因:默认Oracle10g的scott不能登陆.

解决:

(1)conn

sys/sys

as

sysdba;//以DBA的身份登录

user

scott

account

unlock;//

然后解锁

scott/tiger

//弹出一个修改密码的对话框,修改一下密码就可以了

具体操作步骤如下:

C:

sqlplus

请输入用户名:sys

输入口令:sys

sysdba

//注意:在口令这里输入的密码后面必须要跟上

才可以.

SQL

alter

unlock;

用户已更改.

commit;

提交完成.

conn

更改scott口令

新口令:tiger

重新键入新口令:tiger

口令已更改

已连接.

另一种方法:你打开命令提示符,不要登录直接输入下面:

sys/tiger

以dba方式进入sys帐户;

给scott用户解锁;

如何解除Oracle 帐号锁定

查询锁表

SELECT object_name, machine, s.sid, s.serial#

FROM gv$locked_object l, dba_objects o, gv$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid;

--释放SESSION SQL:

--alter system kill session 'sid, serial#';

①对数据库操作update,insert,delete时候,数据库无法更新,操作等待时长,操作结果不发生改变

【加锁的原理】:比如一个操作在进行修改一表,它没完成,另一个操作也操作这张表时候就需要等待,前面操作结束之后才可进行操作.

Oracle锁表 行级锁 表级锁

---- 行被排他锁定

----在某行的锁被释放之前,其他用户不能修改此行 ----使用 commit 或 rollback 命令释放锁

----Oracle 通过使用 INSERT、UPDATE 和 SELECT...FOR UPDATE 语句自动获取行级锁

SELECT...FOR UPDATE 子句 ―在表的一行或多行上放置排他锁 ―用于防止其他用户更新该行

―可以执行除更新之外的其他操作

―select * from goods where gid=1001 ―for update of gname;

―只有该用户提交事务,其他用户才能够更新gname

―等待间隔不能是表达式、赋值变量或 PL/SQL 变量

―保护表的数据

―在多个用户同时访问数据时确保数据的完整性 ―可以设置为三种模式:共享、共享更新和 排他

语法:lock table table_namein mode; 共享锁 ―锁定表

―仅允许其他用户执行查询操作 ―不能插入、更新和删除

―多个用户可以同时在同一表中放置此锁 ―lock table table_name ―in share mode [nowait];

― rollback 和commit 命令释放锁 ― nowait 关键字告诉其他用户不用等待 共享更新锁

―锁定要被更新的行

―允许其他用户同时查询、插入、更新未被锁定的行

―在 SELECT 语句中使用"FOR UPDATE"子句,可以强制使用共享更新锁 ―允许多个用户同时锁定表的不同行

加锁的两种方法

―与其他两种锁相比,排他锁是限制性最强的表锁 ―仅允许其他用户查询数据

―不允许执行插入、删除和更新操作

―在同一时间仅允许一位用户在表上放置排他锁 ―共享锁与此相反

lock table tab_name in exclusive mode; lock table 表名[ 表名]... in share mode [nowait]

lock table 表名[ 表名]... in exclusive mode [nowait] lock table 表名[ 表名]... in share update mode[nowait]

-----------------------------------------------------------------------------------------------

LOCK Name

LOCK — 在事务中明确地锁定一个表 LOCK [ TABLE ] name

LOCK [ TABLE ] name IN [ ROW | ACCESS ] { SHARE | EXCLUSIVE } MODE

LOCK [ TABLE ] name IN SHARE ROW EXCLUSIVE MODE 输入

name

要锁定的现存的表.

ACCESS SHARE MODE

注意: 这个锁模式对被查询的表自动生效.

这是最小限制的锁模式,只与 ACCESS EXCLUSIVE 模式冲突. 它用于保护被查询的表免于被并行的 ALTER TABLE, DROP TABLE 和 VACUUM 对同一表操作的语句修改.

ROW SHARE MODE

注意: 任何 SELECT...FOR UPDATE 语句执行时自动生效. 因为它是一个共享锁,以后可能更新为 ROW EXCLUSIVE 锁.

与 EXCLUSIVE 和 ACCESS EXCLUSIVE 锁模式冲突.

ROW EXCLUSIVE MODE

注意: 任何 UPDATE, DELETE和 INSERT 语句执行时自动生效.

与 SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE 和 ACCESS EXCLUSIVE 模式冲突.

SHARE MODE

注意: 任何 CREATE INDEX 语句执行时自动附加. 共享锁住整个表.

与 ROW EXCLUSIVE,SHARE ROW EXCLUSIVE,EXCLUSIVE 和 ACCESS EXCLUSIVE 模式冲突.这个模式防止一个表被并行更新.

SHARE ROW EXCLUSIVE MODE

注意: 这个模式类似 EXCLUSIVE MODE,但是允许其他事务的 SHARE ROW 锁.

与 ROW EXCLUSIVE,SHARE,SHARE ROW EXCLUSIVE,EXCLUSIVE 和 ACCESS EXCLUSIVE 模式冲突.

EXCLUSIVE MODE

注意: 这个模式同样比 SHARE ROW EXCLUSIVE 更有约束力. 它阻塞所有并行的 ROW SHARE/SELECT... FOR UPDATE 查询.

ACCESS EXCLUSIVE MODE

注意: 由语句 ALTER TABLE, DROP TABLE,VACUUM 执行时自动生效.这是最严格的约束锁,它与所有其他的锁 模式冲突并且保护一个被锁定的表不被任何其他并行的操作更改.

注意: 一个不合格的 LOCK TABLE 同样要求这个锁模式 (例如,一条没有显式锁模式选项的命令).

输出

LOCK TABLE 成功锁定后的返回.

ERROR name: Table does not exist. 如果name 不存在,返回此信息.

描述

LOCK TABLE 控制一次事务的生命期内对某表的并行访问. Postgres 在可能的情况下尽可能使用最小约束的锁模式. LOCK TABLE 在你需要时提供更有约束力的锁.

RDBMS 锁定使用下面术语:

EXCLUSIVE

排它锁,防止其他(事务)锁的产生.

SHARE

允许其他(事务)共享锁.避免 EXCLUSIVE 锁.

ACCESS

锁定表结构.

ROW

锁定独立的行.

注意: 如果没有声明 EXCLUSIVE 或 SHARE,假设为 EXCLUSIVE.锁存在于事务周期内.

例如,一个应用在 READ COMMITED 隔离级别上运行事务, 并且它需要保证在表中的数据在事务的运行过程中都存在.要实现这个你 可以在查询之前对表使用 SHARE 锁模式进行锁定.这样将保护数据不被 并行修改并且为任何更进一步的对表的读操作提供实际状态的数据, 因为 SHARE 锁模式与任何写操作需要的 ROW EXCLUSIVE 模式冲突,并且你的 LOCK TABLE name IN SHARE MODE 语句将等到所有并行的写操作提交或回卷后才执行.

注意: 当在 SERIALIZABLE 隔离级别运行事务,而且你需要读取真实状态的数据时, 你必须在执行任何 DML 语句 (这时事务定义什么样的并行修改对它自己是可见的) 之前运行一个 LOCK TABLE 语句.

除了上面的要求外,如果一个事务准备修改一个表中的数据, 那么应该使用 SHARE ROW EXCLUSIVE 锁模式以避免死锁情况(当两个 并行的事务试图以 SHARE 模式锁住表然后试图更改表中的数据时, 两个事务(隐含的)都需要 ROW EXCLUSIVE 锁模式,而此模式与并行的 SHARE 锁冲突).

继续上面的死锁(两个事务彼此等待)问题, 你应该遵循两个通用的规则以避免死锁条件:

事务应该以相同的顺序对相同的对象请求锁.

事务请求两个互相冲突的锁模式的前提:其中一个锁模式是自冲突的 (也就是说,一次只能被一个事务持有). 如果涉及多种锁模式,那么事务应该总是最先请求最严格的锁模式.

这个规则的例子在前面的关于用 SHARE ROW EXCLUSIVE 模式取代 SHARE 模式的讨论中已经给出了. -----------------------------------------------------------------------------------------------

注意: Postgres 的确检测死锁, 并将回卷至少一个等待的事务以解决死锁.

注意

LOCK 是 Postgres 语言扩展.

除了ACCESS SHARE/EXCLUSIVE 锁模式外,所有其他 Postgres 锁模式和 LOCK TABLE 语句都与那些在 Oracle 里面的兼容.

LOCK 只在事务内部使用.

用法

演示在往一个外键表上插入时在有主键的表上使用 SHARE 的锁:

BEGIN WORK;

LOCK TABLE films IN SHARE MODE; SELECT id FROM films

WHERE name = 'Star Wars: Episode I - The Phantom Menace';

-- 如果记录没有返回则回卷

INSERT INTO films_user_comments VALUES

(_id_, 'GREAT! I was waiting for it for so long!'); COMMIT WORK;

在执行删除操作时对一个有主键的表进行 SHARE ROW EXCLUSIVE 锁:

Oracle账号被锁定如何解锁

今天访问应用的时候,发现账号被锁定,登录oracle后,发现很多用户都被锁定了.看下提示信息,原来是密码过期了导致账号被锁定.这里记录下这几个操作的常用命令,以方便以后自己的使用.

①查看用户的proifle是哪个,一般是default

SELECT username,PROFILE FROM dba_users;

SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

(1)alter user 用户名 identified by 原来的密码 account unlock; ----不用换新密码,用户名和密码也不用加引号,这个命令会解锁账号,同时取消密码过期.

以上就是土嘎嘎小编为大家整理的oracle如何解除锁定相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章