文档库 最新最全的文档下载
当前位置:文档库 › 数据库账号被锁定解决

数据库账号被锁定解决

数据库账号被锁定解决
数据库账号被锁定解决

在Oracle数据库操纵中,登录Oracle账号时提示失败,并且Oracle账号频繁被锁定。造成此故障的原因是什么呢?北京海淀甲骨文学习中心就介绍了这一过程,经由过程慢慢排查我们就能找到该故障的原因了。

下面记录下查找这个题目的步调。

1. 找到账号被锁按时候

哄骗sqlplus或者sqldeveloper,查询账号被锁定的时候,相干语句如下:

--批改当前会话的日期显示格局

alter session set nls_date_format = ""yyyy-MM-dd hh24:mi:ss"";

--查询被锁定账号的锁按时候

username,lock_date dba_users where username like ""TRSEKPV65_DEMO"";

比如这里的查询到的锁按时候为:20:03:03

2. 找到oracle的安装目次

项目组常识库的oracle安装路径为:C:\devsoftware\oracle11g

3. 找到监听日记

找到

C:\devsoftware\oracle11g\diag\tnslsnr\DEV2-216\listener\trace\listener.log文件,该文件会记录oracle的一些跟踪信息

4. 查看监听日记

找到该文件后,发明很大,无法用editplus打开。把该文件上传到linux机械或者在windows机械高低载一个tail.exe法度,履行tail -20 listener.log号令,查看该文件的最后20行内容。

5. 定位题目

按照上方查询到的时候,在日记中找到对应的时候地位,可以定位到当前时候Oracle所履行的操纵。

01-8月 -2011 20:03:35 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=portalteam)(CID=(PROGRAM=D:\TRS\TRSGateway4.6\gwserver_x64\TrsAgent.exe)(HOST=DEV2-216)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=fe80::e816:9e03:60ac:fdaa%11)(PORT=13678)) * establish * portalteam * 0

6. 总结

从上边可以看到,造成Oracle的账号被锁定的原因是由” TrsAgent.exe”过程造成的。细心一想,本来批改了暗码,没有批改GateWay的登录信息,所以造成了该账号登录Oracle经常失败,因为我们设备了Oracle的最大容许登录错误次数为10,所以跨越10次错误后账号将被锁定。

盈佳科技有限公司是甲骨文Oracle公司在北京指定授权IT学习中心,坐落于海淀区北四环中路。主要从事Oracle Java软件开发实训和学员的就业安排。Oracle Java软件开发实训课程摆脱了传统单一编程训练的知识结构,整个实训体系分为技术层面、理论层面、软件项目管理层面及团队合作层面。学员不仅能够学习到实用的技术,更可以在多方面得到综合训练,从而培养出适合企业需要的高素质人才。详情请访问:甲骨文官网网址:https://www.wendangku.net/doc/7e11569225.html,

数据库死锁问题总结

数据库死锁问题总结 1、死锁(Deadlock) 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造 成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系 统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力 协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象 死锁。一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每 个线程都在等待被其他线程占用并堵塞了的资源。例如,如果线程A锁住了记 录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发 生了死锁现象。计算机系统中,如果系统的资源分配策略不当,更常见的可能是 程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。 锁有多种实现方式,比如意向锁,共享-排他锁,锁表,树形协议,时间戳协 议等等。锁还有多种粒度,比如可以在表上加锁,也可以在记录上加锁。(回滚 一个,让另一个进程顺利进行) 产生死锁的原因主要是: (1)系统资源不足。 (2)进程运行推进的顺序不合适。 (3)资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能 性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序 与速度不同,也可能产生死锁。 产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 破解:静态分配(分配全部资源) (3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 破解:可剥夺 (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 破解:有序分配 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 死锁的预防和解除:

SQL数据库置疑的解决方法

SQL2000数据库置疑的解决方法 首先,在任何操作之前,必须要备份数据库(重要) 一、分离数据库 1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 2、展开服务器组,然后展开服务器,选中要分离的数据库 3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口 4、点击确定,该选定的数据库就被分离。 5.分离后,把原数据库里面.MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标盘下,例:D盘下 注意事项,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

二、附加数据库 1、在附加数据库之前,首先要移动数据库文件 在附加数据库之前,您必须将与数据库关联的 .MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标硬盘下,或是同一服务器的不同硬盘目录下。这两个文件一般位于C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。 2、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 3、展开服务器组,然后展开服务器 4、右击"数据库",然后选择“所有任务》附加数据库”,弹出窗口 5、输入要附加的数据库的MDF名称。如果不确定文件位于何处,单击浏览("...")搜索。若要确保指定的 MDF 文件正确,请单击"验证"。在"附加为"框内,输入数据库的名称。数据库名称不能与任何现有数据库名称相同。指定数据库的所有者 6、单击"确定"按钮。新附加的数据库的数据库节点即创建在"数据库"文件夹中

实验三死锁的检测和解除

南华大学计算机科学与技术学院 实验报告 课程名称操作系统I 姓名 学号 专业班级 任课教师 日期

一、实验内容 死锁的检测与解除 二、实验目的 掌握操作系统的进程管理与资源分配原理,掌握对操作系统安全性检验和死锁的解除的原理和方法。 三、实验题目 系统中有m 个同类资源被n 个进程共享,每个进程对资源的最大需求数分别为S1,S2,…,Sn,且Max(Si)<=m, (i=1,2,…n)。进程可以动态地申请资源和释放资源。编写一个程序,实现银行家算法,当系统将资源分配给某一进程而不会死锁时,就分配之。否则,推迟分配,并显示适当的信息。 分别使用检测“进程—资源循环等待链”的方法和Coffman 的算法来检测进程的死锁状态。对于相同的进程资源分配、占用次序,比较两个算法的结果。 四、设计思路和流程图 1.输入系统进程数量n和资源类型数量m。 2.输入每类资源的数量。 3.输入每个进程每类资源的最大需求量和已获资源量。 4.检验系统的安全。 5.若检测结果为系统不安全,可以对死锁进行解除,直到安全为 止再检测。 6.重复5操作,直到所有进程运行完毕。

五、主要数据结构及其说明 int Max[100][100]={0}; //各进程所需各类资源的最大需求; int Available[100]={0}; //系统可用资源; char Name[100]={0}; //资源的名称; int Allocation[100][100]={0}; //系统已分配资源; int Need[100][100]={0}; //还需要资源 int Request[100]={0}; //请求资源向量; int Temp[100]={0}; //存放安全序列; int Work[100]={0}; //存放系统可提供资源; bool Finish[100]={0};//存放已完成的序列 六、源程序并附上注释 #include "stdafx.h" #include #define False 0 #define True 1 using namespace std; int Max[100][100]={0}; //各进程所需各类资源的最大需求; int Available[100]={0}; //系统可用资源; char Name[100]={0}; //资源的名称; int Allocation[100][100]={0}; //系统已分配资源; int Need[100][100]={0}; //还需要资源 int Request[100]={0}; //请求资源向量; int Temp[100]={0}; //存放安全序列; int Work[100]={0}; //存放系统可提供资源; bool Finish[100]={0}; int M=100; //作业的最大数 int N=100; //资源的最大数 int l=0;//记录安全进程的TEMP下标 void ShowData()//初始化资源矩阵

第三章习题(处理机调度与死锁)

一、单项选择题 1.在为多道程序所提供的可共享的系统资源不足时,可能出现死锁。但是,不适当的 c 也可能产生死锁。 A.进程优先权 B.资源的线性分配 C.进程推进顺序 D. 分配队列优先权 2.采用资源剥夺法可解除死锁,还可以采用 b 方法解除死锁。 A.执行并行操作 B.撤消进程 C.拒绝分配新资源 D.修改信号量 3.产生死锁的四个必要条件是:互斥、 b 、循环等待和不剥夺。 A. 请求与阻塞 B.请求与保持 C. 请求与释放 D.释放与阻塞 4.发生死锁的必要条件有四个,要防止死锁的发生,可以破坏这四个必要条件,但破坏 a 条件是不太实际的。 A. 互斥 B.不可抢占 C. 部分分配 D.循环等待 5.在分时操作系统中,进程调度经常采用 c 算法。 A.先来先服务 B.最高优先权 C.时间片轮转 D.随机 6.资源的按序分配策略可以破坏 D 条件。 A. 互斥使用资源 B.占有且等待资源 C.非抢夺资源 D. 循环等待资源 7.在 C 的情况下,系统出现死锁。 A. 计算机系统发生了重大故障 B.有多个封锁的进程同时存在 C.若干进程因竞争资源而无休止地相互等待他方释放已占有的资源 D.资源数大大小于进程数或进程同时申请的资源数大大超过资源总数 8.银行家算法是一种 B 算法。 A.死锁解除 B.死锁避免 C.死锁预防 D. 死锁检测 9.当进程数大于资源数时,进程竞争资源 B 会产生死锁。 A.一定 B.不一定 10. B 优先权是在创建进程时确定的,确定之后在整个进程运行期间不再改变。 A.先来先服务 B.静态 C.动态 D.短作业 11. 某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是 B A.9 B.10 C.11 D.12 答:B 13.当检测出发生死锁时,可以通过撤消一个进程解除死锁。上述描述是 B 。 A. 正确的 B.错误的 14.在下列解决死锁的方法中,属于死锁预防策略的是 B 。 A. 银行家算法 B. 资源有序分配法 C.死锁检测法 D.资源分配图化简法 15.以下叙述中正确的是 B 。 A. 调度原语主要是按照一定的算法,从阻塞队列中选择一个进程,将处理机分配 给它。 B.预防死锁的发生可以通过破坏产生死锁的四个必要条件之一来实现,但破坏互斥条件的可能性不大。 C.进程进入临界区时要执行开锁原语。 D.既考虑作业等待时间,又考虑作业执行时间的调度算法是先来先服务算法。

Access大数据库技术项目化教程思考与练习

一、简答题 1.简述Access 2010的启动方法。 启动Access 2010的方式与启动一般应用程序的方式相同,有四种启动方式: (1)常规启动:开始→程序→Microsoft Office→Microsoft Access 2010。 (2)桌面图标快速启动:如果桌面上有Access快速启动图标,则双击该图标启动。 (3)“开始”菜单选项快速启动:单击“开始”菜单中的快速启动图标启动Access 2010。 (4)通过已存文件快速启动:在我的电脑或资源管理器中双击已存在的Access数据库文件启动Access 2010。 2.简述Access 2010的退出方法。 退出Access 2010的方法有以下几种: (1)单击Access窗口标题栏右侧的“关闭”按钮。 (2)双击Access窗口标题栏左侧的控制菜单图标。 (3)单击“文件”选顶卡中的“退出”按钮。 (4)按快捷键Alt+F4。 3.什么是Access?Access具有哪些特点和功能? (1)Access Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office办公自动化系列应用软件之一。 (2)Access的特点: 1)存储方式单一 2)面向对象 3)界面友好、易操作 4)集成环境、处理多种数据信息 5)支持ODBC(Open Data Base Connectivity,开放数据库互连) (3)Access的功能: 1)组织、存放与管理数据 2)查询数据 3)设计窗体 4)报表输出 5)数据共享 6)建立超链接 7)建立数据库应用系统 4.简述Access 2010工作界面的构成。 (1)标题栏 (2)自定义快速访问工具栏 (3)功能区 (4)导航窗格 (5)命令选项卡 (6)对象工作区 (7)状态栏

死锁问题解决方法

Sqlcode -244 死锁问题解决 版本说明 事件日期作者说明 创建09年4月16日Alan 创建文档 一、分析产生死锁的原因 这个问题通常是因为锁表产生的。要么是多个用户同时访问数据库导致该问题,要么是因为某个进程死了以后资源未释放导致的。 如果是前一种情况,可以考虑将数据库表的锁级别改为行锁,来减少撞锁的机会;或在应用程序中,用set lock mode wait 3这样的语句,在撞锁后等待若干秒重试。 如果是后一种情况,可以在数据库端用onstat -g ses/onstat -g sql/onstat -k等命令找出锁表的进程,用onmode -z命令结束进程;如果不行,就需要重新启动数据库来释放资源。 二、方法一 onmode -u 将数据库服务器强行进入单用户模式,来释放被锁的表。注意:生产环境不适合。 三、方法二 1、onstat -k |grep HDR+X 说明:HDR+X为排他锁,HDR 头,X 互斥。返回信息里面的owner项是正持有锁的线程的共享内存地址。 2、onstat -u |grep c60a363c 说明:c60a363c为1中查到的owner内容。sessid是会话标识符编号。 3、onstat -g ses 20287 说明:20287为2中查到的sessid内容。Pid为与此会话的前端关联的进程标识符。 4、onstat -g sql 20287

说明:20287为2中查到的sessid内容。通过上面的命令可以查看执行的sql语句。 5、ps -ef |grep 409918 说明:409918为4中查到的pid内容。由此,我们可以得到锁表的进程。可以根据锁表进程的重要程度采取相应的处理方法。对于重要且该进程可以自动重联数据库的进程,可以用onmode -z sessid的方法杀掉锁表session。否则也可以直接杀掉锁表的进程 kill -9 pid。 四、避免锁表频繁发生的方法 4.1将页锁改为行锁 1、执行下面sql语句可以查询当前库中所有为页锁的表名: select tabname from systables where locklevel='P' and tabid > 99 2、执行下面语句将页锁改为行锁 alter table tabname lock mode(row) 4.2统计更新 UPDATE STATISTICS; 4.3修改数据库配置onconfig OPTCOMPIND参数帮助优化程序为应用选择合适的访问方法。 ?如果OPTCOMPIND等于0,优化程序给予现存索引优先权,即使在表扫描比较快时。 ?如果OPTCOMPIND设置为1,给定查询的隔离级设置为Repeatable Read时,优化程序才使用索引。 ?如果OPTCOMPIND等于2,优化程序选择基于开销选择查询方式。,即使表扫描可以临时锁定整个表。 *建议设置:OPTCOMPIND 0 # To hint the optimizer 五、起停informix数据库 停掉informix数据库 onmode -ky 启动informix数据库 oninit 注意千万别加-i参数,这样会初始化表空间,造成数据完全丢失且无法挽回。

SQLServer2000数据库置疑的解决方法

SQLServer2000数据库置疑的解决方法sql2000中MSDB数据库置疑状态的解决方法 问题:我的SQL Server 2000的MSDB数据库,因为不正常关机,造成了置疑状态,请问采用什么方法能够弥补,解决方法一:你可以采用以下的代码进行修复: USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='msdb' Go sp_dboption 'msdb', 'single user', 'true' Go DBCC CHECKDB('msdb') Go update sysdatabases set status =28 where name='msdb' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption 'msdb', 'single user', 'false' Go 解决方法二:MSDB数据库解决过程 难点:由于MSDB数据库不能删除,将其文件拷出来,再次附加数据库,但新的不能同名,遇到了困难。附加数据库不能叫MSDB,也就是

1:先停止整个数据库,将该数据库的文件msdbdata.mdf和msdblog.ldf拷贝粘贴出来到另一个目录下。 2:将以上的文件再拷贝到另一个目录下,也就是说复制两次。 3:选择数据库右击鼠标 --》所有任务--》附加数据库将复制出的一个备份文件附加上去,其中,数据库名称叫MSDB1,用户是SA或ADMINISTRATOR。 4:将MSDB1数据库备份,备份成一个文件,当时我的叫MSDB。BAK。 5:选择置疑的数据库MSDB,选择恢复数据库,将刚才备份出来的数据库强行恢复到MSDB。 6:问题解决,MSDB库又能正常使用。 完成后赶快将数据库再次备份一次。呵呵。 另附:数据库置疑解决办法 还有,现在修复好了,但昨天的数据丢失了,以前的数据倒还在。难道昨天发生了什么异常情况, 我这里一篇解决数据库质疑的文档,提供给大家,日后备用: SQL SERVER数据库置疑后恢复步骤 1( 恢复步骤: a.将smlog_log.ldf文件备份到其它目录下; b.将源目录下的smlog_log.ldf文件改名为smlog_log_bak.ldf; c.执行以下语句修改数据库的状态: use Master go update sysdatabases set status=32768 where name=’数据库名称’ --修改状态 go shutdown with nowait --停止数据库服务器 go

ACCESS数据库应用技术课后习题参考答案

《ACCESS2010数据库应用技术》 课后习题参考答案 目录 第1章 (1) 第2章 (3) 第3章 (4) 第4章 (5) 第5章 (6) 第6章 (7) 第7章 (8) 第8章 (9) 第9章 (12) 第1章 一、选择题 1.B 2.A 3.B 4.B 5.D

6.C 7.A 8.D 9.C 10.A 11.C 12.D 13.B 14.D 15.B 二、填空题 1.数据库,数据库管理系统,数据库系统 2.元组,属性 3.1:n或一对多 4.选择 5.文件 6.表,窗体 三、问答题 1.答:计算机数据管理技术经历了人工管理、文件管理、数据库管理以及新型数据库系统等发展阶 段。 人工管理阶段的数据管理是以人工管理方式进行的,一般不需要将数据长期保存;由应用程序管理数据;数据有冗余,无法实现共享;数据对程序不具有独立性。 文件管理阶段利用操作系统的文件管理功能,将相关数据按一定的规则构成文件,通过文件系统对文件中的数据进行存取和管理,实现数据的文件管理方式。数据可以长期保存;数据对程序有一定独立性;但数据的共享性差、冗余度大,容易造成数据不一致;数据独立性差;数据之间缺乏有机的联系,缺乏对数据的统一控制和管理。

在数据库管理阶段,由数据库管理系统对数据进行统一的控制和管理,在应用程序和数据库之间保持较高的独立性,数据具有完整性、一致性和安全性高等特点,并且具有充分的共享性,有效地减少了数据冗余。 (在数据库管理阶段,学校信息管理中应用程序与数据库之间的关系如图1-4所示。有关学校信息管理 的数据都存放在一个统一的数据库中,数据库不再面向某个部门的应用,而是面向整个应用系统,实现了数据共享,并且数据库和应用程序之间保持较高的独立性。) 新型数据库系统包括分布式数据库系统、面向对象数据库系统、多媒体数据库系统等,为复杂数据的 管理以及数据库技术的应用开辟新的途径。 2.答:数据独立性是指应用程序与数据库的数据结构之间相互独立。在数据库系统中,因为采用了数 据库的三级模式结构,保证了数据库中数据的独立性。在数据存储结构改变时,不影响数据的全局逻辑结构,这样保证了数据的物理独立性。在全局逻辑结构改变时,不影响用户的局部逻辑结构以及应用程序,这样就保证了数据的逻辑独立性。 3.答:关系运算式如下: (1)σ年龄>35(患者) (2)σ职称='主任医师'(医生) (3)π(患者病例号,患者姓名)(σ姓名='王三'(医生患者)),其中连接的条件为“医生.医生编号=患者.医生编号”。 (4)π(医生编号,姓名,职称)(σ患者姓名='刘北'(医生患者)),其中连接的条件为“医生.医生编号=患者.医生编号”。 4.答:启动Access 2010常用的方法有3种: ①在Windows桌面中单击“开始”按钮,然后依次选择“所有程序”→“Microsoft Office”→“Microsoft Access 2010”选项。 ②先在Windows桌面上建立Access 2010的快捷方式,然后双击Access 2010快捷方式图标。 ③双击要打开的数据库文件。 退出Access 2010的方法主要有如下4种。 ①在Access 2010窗口中,选择“文件”→“退出”菜单命令。 ②单击Access 2010窗口右上角的“关闭”按钮。 ③双击Access 2010窗口左上角的控制菜单图标;或单击控制菜单图标,从打开的菜单中选择“关闭”命令;或按组合键Alt+F4。 ④右键单击Access 2010窗口标题栏,在打开的快捷菜单中,选择“关闭”命令。

sql server的死锁及处理方法

【转】处理sql server的死锁 --第一篇 --检测死锁 --如果发生死锁了,我们怎么去检测具体发生死锁的是哪条SQL语句或存储过程? --这时我们可以使用以下存储过程来检测,就可以查出引起死锁的进程和SQL语句。SQL Server自带的系统存储过程sp_who和sp_lock也可以用来查找阻塞和死锁, 但没有这里介绍的方法好用。 use master go create procedure sp_who_lock as begin declare @spid int,@bl int, @intTransactionCountOnEntry int, @intRowcount int, @intCountProperties int, @intCounter int create table #tmp_lock_who ( id int identity(1,1), spid smallint, bl smallint) IF @@ERROR<>0 RETURN @@ERROR insert into #tmp_lock_who(spid,bl) select 0 ,blocked from (select * from sysprocesses where blocked>0 ) a where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid) union select spid,blocked from sysprocesses where blocked>0 IF @@ERROR<>0 RETURN @@ERROR -- 找到临时表的记录数 select @intCountProperties = Count(*),@intCounter = 1 from #tmp_lock_who IF @@ERROR<>0 RETURN @@ERROR

《ACCESS数据库应用技术教程》习题参考答案

《Access数据库应用技术教程》课后习题参考答案第一章ACCESS2003入门 一、填空题: 1.人工管理、文件系统、数据库系统管理 2.数据库定义、数据库管理、数据库建立和维护 3.数据库 4.数据库管理系统、核心 5.实体集、属性、码 6.实体 7.实体内部、实体之间 8.联系、属性名、联系 9.层次、网状、关系、面向对象、关系模型 10.二维表、二维表 11.候选关键字、候选关键字、主关键字、主键 12.一个关系、一个关系 13.投影 14.等值连接、自然连接 15.范式 16.完整性约束 17.数据库窗口 18.表、查询、窗体、报表、页、宏、模块 19..mdb 20.VBA Application 二、选择题: 1.B 2.A 3.C 4.B 5.B 6.A 7.C 8.C 9.A 10.B 11.D 12.A 13.A 14.A 15.B 16.A 17.C 18.D 19.D 20.A 第二章数据库与表 一、填空题: 1.主键 2.不能相同、不能为空 3.设计 4.自动编号 5.数据表 6.字母、汉字、空格、1~64、

英文句号.、感叹号!、方括号[]、单撇号’ 7.货币型、数字型、文本型、备注型、是否型、文本型(或者数字型)8.显示和打印 9.< 10.输入模式、数据输入 11.格式 12.密码 13.非法 14.有效性规则 15.文本型、查阅 16.数据表 17.格式→字体、不需 18.字段名称、数据类型 19.OLE对象 20.冻结 二、选择题: 1.D 2.B 3.B 4.D 5.B 6.C 7.C 8.D 9.B 10.A 11.B 12.D 13.B 14.C 15.B 16.A 17.B 18.C 19.C 20.B 第三章查询 一、填空题 1、数据表视图、SQL视图、数据透视图视图、设计视图 2、图书编号in (1166,1388) 3、显示 4、生成表查询、更新查询 5、姓名like “李*” 6、窗体、报表 7、查询 8、生成表查询 二、选择题

数据库死锁的解决办法

Posts - 31 Articles - 0 Comments - 817 数据库死锁的解决办法 近日在博客网站上,回复别人的数据库死锁避免问题,之前也曾经几次答复过同样的内容,觉得很有必要汇聚成一个博客文章,方便大家。 这里的办法,对所有的数据库都适用。 这个解决办法步骤如下: 1. 每个表中加updated_count (integer) 字段 2. 新增一行数据,updated_count =0 : insert into table_x (f1,f2,...,update_count) values(...,0); 3. 根据主键获取一行数据SQL,封装成一个DAO 函数(我的习惯是每个表一个uuid 字段做主键。从不用组合主键,组合主键在多表join 时SQL 写起来很麻烦;也不用用户录入的业务数据做主键,因为凡是用户录入的数据都可能错误,然后要更改,不适合做主键)。 select * from table_x where pk = ? 4. 删除一行数据 4.1 先通过主键获取此行数据, 见3. 4.2 delete from table_x where pk = ? and update_count=? , 这里where 中的update_count 通过4.1 中获取 4.3 检查4.2 执行影响数据行数,如果删除失败,则是别人已经删除或者更新过同一行数据,抛异常,在最外面rollback,并通过合适的词语提醒用户有并发操作,请稍候再试。 int count = cmd.ExecuteNonQuery(); if(udpatedCount < 1){ throw new Exception(“检测到并发操作,为防止死锁,已放弃当前操作,请稍候再试,表xxx, 数据key ….”); } 5. 更新一行数据 5.1 先通过主键获取此行数据, 见3. 5.2 update table_x set f1=?,f2=?, ...,update_count=update_count+1 where pk = ? and updat e_count=? , 这里where 中的update_count 通过5.1 中获取 5.3 检查5.2 执行影响数据行数,如果更新失败,则是别人已经删除或者更新过同一行数据,抛异常,在最外面rollback,并通过合适的词语提醒用户有并发操作,请稍候再试。 int count = cmd.ExecuteNonQuery(); if(udpatedCount < 1){ throw new Exception(“检测到并发操作,为防止死锁,已放弃当前操作,请稍候再试,表xxx, 数据

SQL server 2008 数据库置疑的处理办法

SQL server 2008 数据库置疑的处理办法 1 把问题数据库备份后直接删除 停掉SQLSERVER服务,把服务器上出问题的数据库, 假设名称为ErrorDB的数据库文件及日志文件备份到其他目录,然后直接将其删除,把其数据库文件及日志文件也删除 2 新建同名数据库 启动SQLSERVER服务,新建同名数据库ErrorDB,文件目录和日志和原来一致 3 用备份的数据库文件替换新的数据库文件 停掉SQLSERVER服务,把备份的数据库文件替换新的数据库文件(只替换数据库文件,不替换日志文件) 启动SQLSERVER服务,打开数据库,这时数据库应该是不能访问的 -------------------设置应急模式、单用户模式、检查修复数据,取消单用户模式 ---------------------- 4 将数据库设置为应急状态 alter database ErrorDB set emergency 执行后,为了保险起见,重新停止、开启的SQLSERVER服务 再打开数据库,已经可以看到里面的内容了,如表,视图,存储过程等 数据库名称后有紧急标志,能看到数据库结构,但无法进行备份等操作 5 将数据库设置为单用户模式 ALTER DATABASE ErrorDB SET SINGLE_USER 6 对数据库进行检查修复 dbcc checkdb(EIMSDb,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(EIMSDb,REPAIR_REBUILD) 操作后,仍然停止启动SQLSERVER服务(不确定是否需要,我只是为了想无干扰查看执行后的数据库状况)重新打开数据库,已经是正常状态了,没有应急提示了 7 取消单用户模式 exec sp_dboption EIMSDb, N'single', N'false'

死锁的检测与解除C语言代码

实验名称:死锁的检测与解除姓名:杨秀龙 学号:1107300432 专业班级:创新实验班111 指导老师:霍林

实验题目 死锁的检测与解除 实验目的 为了更清楚系统对死锁是如何检测和当死锁发生时如何解除死锁 设计思想 首先需要建立和银行家算法类似的数组结构,先把孤立的进程(没有占用资源的进程)放入一个数组中,根据死锁原理,找出既不阻塞又非独立的进程结点,使之成为孤立的结点并放入孤立数组中,再释放该进程的占用资源,继续寻找下一个孤立结点,如果所有进程都能放入孤立数组中,则系统不会发生死锁,如果有进程不能放入,则系统将发生死锁,并进行死锁解除,撤消所有的死锁进程,释放它们占用的资源。 主要数据结构 和银行家算法类似,需要建立相应的数组 int allocation[M][M]; int request[M][M]; int available[M]; int line[M]; //管理不占用资源的进程 int no[M]; //记录造成死锁的进程 int work[M];

流程图 否

运行结果 图(1)不会发生死锁时 图(1)当发生死锁时

附录 源代码如下: # include "stdio.h" # define M 50 int allocation[M][M]; int request[M][M]; int available[M]; int line[M]; int no[M]; intn,m,i,j,f,a=0; main() { void check(); void remove(); void show(); printf("输入进程总数:"); scanf("%d", &n); printf("输入资源种类数量:"); scanf("%d", &m); printf("输入进程已占用的资源Allocation:\n"); for(i=0;i

S Q L 数据库出现置疑怎么解决

SQL数据库置疑的解决方法 首先,在任何操作之前,必须要备份数据库(特别注意) 一、分离数据库 1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 2、展开服务器组,然后展开服务器,选中要分离的数据库 3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口 4、点击确定,该选定的数据库就被分离。 5.分离后,把原数据库里面.MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标盘下,例:D盘下 注意事项,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

二、附加数据库 1、在附加数据库之前,首先要移动数据库文件 在附加数据库之前,您必须将与数据库关联的 .MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标硬盘下,或是同一服务器的不同硬盘目录下。这两个文件一般位于C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。 2、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器 3、展开服务器组,然后展开服务器 4、右击"数据库",然后选择“所有任务》附加数据库”,弹出窗口 5、输入要附加的数据库的MDF名称。如果不确定文件位于何处,单击浏览("...")搜索。若要确保指定的 MDF 文件正确,请单击"验证"。在"附加为"框内,输入数据库的名称。数据库名称不能与任何现有数据库名称相同。指定数据库的所有者 6、单击"确定"按钮。新附加的数据库的数据库节点即创建在"数据库"文件夹中

操作系统实验报告-死锁的检测与解除

操作系统实验报告 实验题目:死锁的检测与解除学生姓名:田凯飞 学生学号:1107300215 学生班级:计科111 指导老师:霍林

实验题目: 死锁的检测与解除。 实验目的: 在实验一中我们可以通过银行家算法和安全性检测来对系统对进程分配资源时进行安全性检测,这是避免系统发生死锁的有效方法,但是假如系统真的发生死锁的时候,系统也必须对此采取有效的措施,通过该实验我们可以深刻的认识系统对死锁的检测与解除的方法。 设计思想: 该程序是在银行家算法的基础上添加了死锁的解除模块得来的,死锁的解除采用的方法是:当系统发生死锁时,找到已分配资源最大的死锁进程,剥夺其已分配资源,再次检测是否发生死锁。 数据结构: 1)可用资源向量available: 这是一个含有m个元素的数组,其 中的每一个元素代表一类可利用资源数目。 2)最大需求矩阵max它是一个n m ?的矩阵,定义了系统中n个进程中得每一个进程对m类资源的最大需求。 3)可分配矩阵allocation: 这也一个n m ?的矩阵,定义了系统中每一类资源当前已分配给每一进程的资源数。 4)需求矩阵need: 这表示每一个进程尚需的各类资源数。 5)need[i][j]=max[i][j]-allocation[i][j]。 变量说明: 可用资源向量available[3]; 最大需求矩阵max[4][3]; 可分配矩阵allocation[4][3]; 需求矩阵need[4][3]; 进程状态标识finish[4]; 流程图:

否 是 否 是 运行结果: 无死锁: 算法开始 输入各进程的最大需求资源、 已分配资源和可利用资源数 显示各进程的最大需求资源、已分配资源和可利用资源数 选择进程并进行资源请求 请求是否合法 分配资源 是否死锁 输出进程序列以及该时刻的资源分配情况 解除占用资源最多的进程 算法结束

ACCESS2010数据库应用技术教程 (1)

ACCESS 2010数据库应用技术教程考试试 卷(A卷) 考生请注意: 试卷下载请解压,解压完成后请将你下载的试卷文件夹修改成以自己的学号—姓名命名的文件夹,然后打开文件夹完成试题。 本次考试是机试,希望大家边做边保存,防止完成内容丢失。在完成试卷的过程中如果出现计算机卡死现象请不要私自处理,请联系监考老师。 完成试卷后将所用文件保存并关闭,打成压缩包后上传至老师要求的服务器路径下。 加油!祝你考试成功! 理论题 【请在答题卡上完成】 一选择题(本题是单项选择题,每题只有一个备选答案,多选、错选、不选均不得分。共15小题,每题1分,共计15分) 1、人们常说的数据模型是指(A)。 A、概念模型 B、实现模型 C、网状模型 D、关系模型 2、实体联系图又称为(C)。 A、N-S图 B、DFD C、E-R图 D、RPD图 3、实体所具有的特性称为(B)。 A、实体 B、属性 C、元组 D、关系 4、数据库管理系统简称(C)。

A、DBO B、DBS C、DBMS D、DBA 5、实体联系图又称为(C)。 A、N-S图 B、DFD C、E-R图 D、RPD图 6、在宏中,openReport操作可用来打开指定的(D)。 A、查询 B、状态栏 C、窗体 D、报表 7、“商品”与“顾客”两个实体集之间的联系一般是(D)。 A、一对一 B、一对多 C、多对一 D、多对多 8、在E-R图中,用来表示实体的图形是(A)。 A、矩形 B、椭圆形 C、菱形 D、三角形 9、设有表示学生的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC关键字(键或码)为:(C)。 A、课程.成绩 B、学号.成绩 C、学号.课号 D、学号.姓名,成绩 10、在数据管理技术发展的三个阶段中,数据共享最好的是(C)。 A、人工管理阶段 B、文件系统阶段 C、数据库系统阶段 D、三个阶段相同 11、Access2003中,表的字段数据类型中不包括(D)。 A、文本型 B、数字型 C、窗口型 D、货币型 12、Access2003的表中,(D)不可以定义为主键。 A、自动编号 B、单字段 C、多字段 D、OLE对象 13、如果一个字段在多数情况下取一个固定的值,可以将这个值设置成字段的(B)。 A、关键字 B、默认值 C、有效性文本 D、输入掩码 14、在对某字符型字段进行升序排序时,假设该字段存在这样四个值:"100"、"22"、"18"和"3",则最后排序结果是(C)。

数据库解除死锁方法

先查看哪些表被锁住了: 杀进程中的会话: 如果有ora-00031错误,则在后面加immediate;alter system kill session '29,5497' immediate; 如何杀死oracle死锁进程

1.查哪个过程被锁: 查V$DB_OBJECT_CACHE视图: SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND CLOCKS!='0'; 2. 查是哪一个SID,通过SID可知道是哪个SESSION: 查V$ACCESS视图: SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名'; 3. 查出SID和SERIAL#: 查V$SESSION视图: SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'; 查V$PROCESS视图: SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR'; 4. 杀进程: (1)先杀ORACLE进程: ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#'; (2)再杀操作系统进程: KILL -9 刚才查出的SPID或ORAKILL 刚才查出的SID 刚才查出的SPID。 Oracle的死锁 查询数据库死锁:

查询出来的结果就是有死锁的session了,下面就是杀掉,拿到上面查询出来的SID和SERIAL#,填入到下面的语句中: alter system kill session 'sid,serial#'; 一般情况可以解决数据库存在的死锁了,或通过session id 查到对应的操作系统进程,在Unix中杀掉操作系统的进程。 然后采用kill (unix)或orakill(windows )。 在Unix中: 经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。 1)查找死锁的进程: 2)kill掉这个死锁的进程: alter system kill session ‘sid,serial#’; (其中sid=l.session_id) 3)如果还不能解决:

SQL数据库置疑解决方案(原因分析、预防措施、修复方法)附图

SQL数据库置疑解决方案 一、数据库置疑产生的原因 1、SQL Server所在分区空间是否够? 数据库文件大小是否达到最大文件限制? FAT32的格式只支持4G以内的文件。 2、数据库文件损坏或被非正常删除时出现这种情况。 3、病毒防火墙的扫描也会引起数据库置疑。 4、当SQL Server启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,数据库将会被标记为置疑。 5、电脑非法关机也会造成数据库置疑。 6、电脑磁盘有坏道有可能造成数据库置疑。 二、数据库置疑的预防 1、数据库存放的盘符,空间是否够大,经常检查盘符的空间。 2、数据库存放的盘符的格式设置为NTFS格式。 3、进行病毒清除时,尽量把SQL服务停掉,再进行检查。 4、尽量减少非正常关机。 5、建议客户购买后备电源。 6、给客户实施软件之后一定要做好自动备份。 7、建议客户每隔一定时间手动备份一次。 三、数据库置疑的修复 1、正常的备份、SQL数据库恢复方式 正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。 卸下数据库的命令:Sp_detach_db 数据库名 连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′[,...16] sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′ 使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。 例子: 假设数据库为pdm,其数据文件为pdm_data.mdf,日志文件为pdm_log.ldf。 下面我们讨论一下如何备份、恢复该数据库。 卸下数据库:sp_detach_db 'pdm' 连接数据库:sp_attach_db 'pdm','C:\Program Files\Microsoft SQL Server\MSSQL\Data\pdm_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\pdm_log.ldf'

相关文档
相关文档 最新文档