SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是DRichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的 *** 作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
1、查看数据库锁,诊断锁的来源及类型:
select object_id,session_id,locked_mode from v$locked_object;
或者用以下命令:
select bowner,bobject_name,lsession_id,llocked_mode
from v$locked_object l, dba_objects b
where bobject_id=lobject_id 2、找出数据库的serial#,以备杀死:
select t2username,t2sid,t2serial#,t2logon_time
from v$locked_object t1,v$session t2
where t1session_id=t2sid order by t2logon_time; 3、杀死该session
alter system kill session 'sid,serial#'
记得以上是用SYS或者SYSTEM账户进入,要不没权限。
以下供参考:
1服务启动不能说明实例已被启动,服务与实例不是同的,在windows下,启动服务的时候,会一起开启实例,是因为注册表中,写明了,进入注册表中,可以看看:hkey_local_machine->software->oracle->home0->ora_服务名_autostart,你把这个改为false,那么服务关了之后,再开启动,实例则不会自动开启,连接时,会提示连接到一个空闲例程。然后再用startup来启动,才可以连接数据库你可以做下实险。
2sqlplus只是一个客户端程序,可用来管理数据库,启动这个程序,不等于打开数据库
3了解oracle的启动过程很关键,对数据库维护尤其重要,在windows下,服务一定要先开启动,不然的话,在sqlplus下怎么 *** 作基本都没有用。
1>启动实例
startup
nomount:读取参数文件,分配sga,启动后台进程。
2>安装数据库
startup
mount
实例与数据库对应,数据库仍关闭,依据参数文件中的control_files,读取并打开控制文件
3打开数据库
startup
根据控制文件,找到数据文件和日志文件,数据库被打开,此时用户可以 *** 作数据库
所以基本上是四个状态:shutdown->nomount->mount->open
当然中间,数据库还有一些状态和控制命令:
如:read
only,restrict等方法打开数据库。
如:alter
database
xxx等控制命令改变状态。
首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁。
你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILL
session,如果这个锁表是正常业务你把session
kill掉了会影响业务的。
建议先查原因再做决定。
(1)锁表查询的代码有以下的形式:
select
count()
from
v$locked_object;
select
from
v$locked_object;
(2)查看哪个表被锁
select
bowner,bobject_name,asession_id,alocked_mode
from
v$locked_object
a,dba_objects
b
where
bobject_id
=
aobject_id;
(3)查看是哪个session引起的
select
busername,bsid,bserial#,logon_time
from
v$locked_object
a,v$session
b
where
asession_id
=
bsid
order
by
blogon_time;
(4)查看是哪个sql引起的
select
busername,bsid,bserial#,c
from
v$locked_object
a,v$session
b,v$sql
c
where
asession_id
=
bsid
and
bSQL_ID
=
csql_id
and
csql_id
=
''
order
by
blogon_time;
(5)杀掉对应进程
执行命令:alter
system
kill
session'1025,41';
其中1025为sid,41为serial#
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发 *** 作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行 *** 作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新 *** 作。
在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。
扩展资料:
排它锁和共享锁的不同之处:
1、共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
2、共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据,资源共享。
3、共享锁又称为读锁(Share lock,简记为S锁),若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
参考资料:
参考资料:
用有DBA权限的用户或本地conn / as sysdba 登陆进行解锁
命令:alter user lxy account unlock;
ora-28000 the account is locked, 出现这种原因,是因为用户被锁定了,
一般出现这种原因,是因为程序连接数据库的数量大于配置的连接数,按照我的所遇到的问题,以下步骤可以解决。
1 程序连接大于 oracle 连接数;
处理方式: 重新设置 连接数: 用管理员进去,执行以下脚本,
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 10; --设定连接数
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED; --不限制连接数
2 程序连接大于 连接池配置的连接数;
处理方式:把连接池的连接数设置大一些;
3 释放用户锁:
用超级管理员,执行 alter user 用户名 account unlock;
以上就是关于求助,关于Sqlite报database is locked的问题全部的内容,包括:求助,关于Sqlite报database is locked的问题、数据库中某条数据被锁了。如何解锁、oracle 实例无法连接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)