数据库死锁定位及解决方案描述

数据库死锁定位及解决方案描述
数据库死锁定位及解决方案描述

问题描述:

系统业务繁忙时(特别是周一或周五),Oracle数据库出现死锁现象,造成数

据库挂起,业务中断。

问题定位

首先分析数据库后台日志alert_raca1.log,alert_raca2.log,发现数据库死

锁信息:

Global Enqueue Services Deadlock detected. More info in file

/oracle/admin/raca/bdump/raca1_lmd0_807258.trc.

Fri Mar 12 14:55:15 2010

Global Enqueue Services Deadlock detected. More info in file

/oracle/admin/raca/bdump/raca1_lmd0_807258.trc

找到相应的trace文件中的信息进行分析:

user session for deadlock lock 70000020a0d60a0

pid=138 serial=70 audsid=14754928 user: 49/GFCOB

O/S info: user: , term: , ospid: 1234, machine: GF14

program:

Current SQL Statement:

update WF_TASKINFO set processInfoId=:1, taskInstanceId=:2, nodeId=:3, taskName=:4, taskDescription=:5, status=:6, startDate=:7,

handleGroup=:8, handleBy=:9, createdDate=:10, endedGroup=:11,

endedBy=:12, endedDate=:13, expectedEndDate=:14, ownerType=:15, lockedBy=:16, lockedDate=:17, priority=:18, nodeType=:19,

isBacked=:20, isCopied=:21, isSuspended=:22, tokenId=:23,

extendField=:24, lastTaskInfoId=:25 where taskInfoId=:26

user session for deadlock lock 70000020a0d5f50

pid=246 serial=77 audsid=14754935 user: 49/GFCOB

O/S info: user: , term: , ospid: 1234, machine: GF14

program:

Current SQL Statement:

update HIS_GDB_B_BUSINESSISSUE set operateId=:1, taskInfoId=:2, handleGroup=:3, handleBy=:4, createdDate=:5, endedDate=:6,

endedType=:7, reply=:8, remark=:9 where orderHandleHistoryId=:10

找到造成死锁的sql语句后和业务开发人员进行分析,排除了队列死锁和位图索引死锁;

deadlock的dump信息;

BLOCKED 70000020a0d60a0 5 wq 2 cvtops x1 [0x234000e][0x1c6],[TX] [2008-008A-00000377] 1

BLOCKER 70000020a0d5f50 5 wq 1 cvtops x8 [0x234000e][0x1c6],[TX]

[200F-00F6-00000EAC] 1

BLOCKED 70000020a0d7330 5 wq 2 cvtops x1 [0x153002a][0x2932],[TX] [200F-00F6-00000EAC] 1

BLOCKER 70000020b62dba8 5 wq 1 cvtops x8 [0x153002a][0x2932],[TX] [2008-008A-00000377] 1

排查后,问题确定为是由ITL事务槽数过少且不能自动扩展造成的死锁:

业务表的建表语句:

-- Create table

create table WF_TASKINFO

(

TASKINFOID VARCHAR2(36) not null,

PROCESSINFOID VARCHAR2(36),

TASKINSTANCEID NUMBER(19),

………

)

tablespace GDB1

pctfree 10

initrans 1

maxtrans 255

问题分析

数据库出现死锁是由于业务表初始事务槽(ITL)个数分配太少,无法动态扩展造成的。

ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,用来记录该块所有发生的事务,一个itl可以看作是一个记录,在一个时间,可

以记录一个事务(包括提交或者未提交事务)。

如果一个事务一直没有提交,那么,这个事务将一直占用一个itl槽位,itl

里面记录了事务信息,回滚段的入口,事务类型等等。如果这个事务已经提交,那么,itl槽位中还保存的有这个事务提交时候的SCN号

对于已经提交的事务,itl槽位最好不要马上被覆盖,因为一致性读可能会用

到这个信息,一致性读的时候,可能需要从这里获得回滚段的入口,并从回滚段中获得一致性读。

itl的个数,受参数initrans控制,最大的itl个数,受maxtrans控制,在

一个块内部,默认分配了2个或3个itl的个数,如果这个块内还有空闲空间,那么Oracle是可以利用这些空闲空间并再分配itl的。如果没有了空闲空间,那么,这个块因为不能分配新的itl,所以就可能发生itl等待。

如果在并发量特别大的系统中,最好分配足够的itl个数,或者设置足够的pctfree,保证itl能扩展,但是 pctfree有可能是被行数据给消耗掉的,如update,所以,也有可能导致块内部的空间不够而导致itl等待。

解决方案与步骤

通过调整业务表的初始事务槽个数消除业务忙时由事务槽竞争造成的数据库死锁:

1.调整业务表的初始事务槽参数:

alter table WF_TASKINFO initrans 64;

………

2.调整业务表pctfree参数(可选):

alter table WF_TASKINFO pctfree 20;

3.将业务表move到其他的表空间:

alter table WF_TASKINFO move tablespace new_tbs;

4.调整完成,检查业务是否正常

(完整版)数据库关系代数习题

1.设有如图所示的关系S、SC和C,试用关系代数表达式表示下列查询语句: S C SC S# SNAME AGE SEX 1 李强23 男 2 刘丽22 女5 张友22 男C# CNAME TEACHER k1 C语言王华 k5 数据库原理程军 k8 编译原理程军 S# C# GRADE 1 k1 83 2 k1 85 5 k1 92 2 k5 90 5 k5 84 5 k8 80 (1) 检索”程军”老师所授课的课程号(C#)和课程名(CNAME)。 (2) 检索年龄大于21的男学生学号(S#)和姓名(SNAME)。 (3) 检索至少选修”程军”老师所授全部课程的学生姓名(SNAME)。 (4) 检索”李强”同学不学课程的课程号(C#)。 (5) 检索至少选修两门课程的课程号(S#)。 (6) 检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7) 检索选修课程包含”程军”老师所授课程之一的学生学号(S#)。 (8) 检索选修课程号为k1和k5的学生学号(S#)。 (9) 检索选修全部课程的学生姓名(SNAME)。 (10) 检索选修课程包含学号为2的学生所选修课程的学生学号(S#)。 (11) 检索选修课程名为”C语言”的学生学号(S#)和姓名(SNAME)。(12)检索没有一门课程成绩不及格的学生学号,姓名。 答:本题各个查询语句对应的关系代数表达式表示如下: (1) ΠC#,CNAME(σTEACHER ='程军'(C)) (2) ΠS#,SNAME(σAGE>21^SEX ='男'(S)) (3) ΠSNAME(S(ΠS#,C#(SC)÷ΠC#(σTEACHER ='程军'(C)))) (4) ΠC#(C)-ΠC#(σSNAME ='李强'(S)∞SC) (5) ΠS# (σ1=4^2≠5 (S C×SC)) (6) ΠC#,CNAME(C∞(ΠS#,C#(SC)÷ΠS#(S))) (7) ΠS# (SC∞ΠC# (σTEACHER ='程军'(C))) (8) ΠS#,C#(SC)÷ΠC#(σC#=’K1’VC#=’K5’ (C)) (9) ΠSNAME(S∞(ΠS#,C#(SC)÷ΠC#(C))) (10) ΠS#,C#(SC)÷ΠC#(σC#=’2’ (S C)) (11) ΠS#,SNAME(S∞ΠS#(SC∞(σCNAME ='C语言'(C)))) (12)П学号,姓名(学生)-П学号,姓名(σ分数<60(学生∞学习))。

数据库死锁问题总结

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

ACCESS数据库锁定问题

ACCESS数据库锁定问题 问题1 单位网站突然有的时候不能打开网页。重启电脑后问题解决。说是CONN.ASP第6行错误。同时生成一个.LDB文件。在网上查了下说是数据库没有关闭或锁定了。请问如何关闭啊,下边是CONN.ASP代码: <% starttime=timer() StrSQL="DBQ="+server.mappath("admin/data/news30000.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};" 'connstr="driver={SQL Server};server=(local);database=master;uid=sa;pwd=;" set conn=server.createobject("ADODB.CONNECTION") conn.open StrSQL(第6行) %> 答: 如果是ACCESS数据库,应该是并发访问造成的问题。因为ACCESS没有行锁。所以你有个一个用户在网上改一条数据,另外一个用户再上来访问相同一条数据时就给锁了。重启动后所有的连接全断开了,所以就没问题了。如果有可能最好不用ACCESS做后台数据库。 ---------------------------------- 问题2 我的数据库老是被锁住,网页打不开,请高手帮忙!!我的conn.asp是:<% scadb=mydata&"datahotel/#@@##feel.mdb" 'mydata 为各文件中设置的路径,请不要改动 connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&scadb&"") On Error Resume Next Set conn = Server.CreateObject("ADODB.Connection") conn.open connstr If Err Then err.Clear Set Conn = Nothing Response.Write "




数据库连接出错!!!请检查数据库连接指向^--^
" Response.End End If%> 答: 你的数据库连接写法是正确的,是不是数据库太大,几百M的话容易出现这个问题,建议换sql数据库。不想换的话可以把数据库下载到本地压缩修复一下再传上去。 ------------------------- 问题3

数据库复习题

一、填空题 1.数据库管理系统是位于用户和计算机操作系统之间的软件系统。 2.数据库系统中,实现数据管理功能的核心软件称为DBMS 。 3.关系数据模型作为数据模型的一种,由关系数据结构、关系数据操作和 关系的完整性约束三部分组成。 4.在关系数据库中,把数据表示成二维表,每一个二维表称为关系。 5.关系运算按其表达查询方式的不同可以分为两大类:关系代数和关系运 算。 6.关系数据模型定义的三类完整性分别是实体完整性、参照完整性和用户 自定义完整性。 7.在关系运算中,查找满足一定条件的元组的运算称之为选取。 8.实体完整性规则是对主键的约束,参照完整性规则是对外部链的约束。 9.在关系代数运算中,基本的运算有并运算、交运算、差运算和广义 笛卡尔积四个。 10.在E-R图中,两个实体之间的联系有一对一、一对多和多对多三种类 型。 11.E-R图中的冲突有三种:属性冲突、命名冲突和结构冲突。 12.SQL是 Structured Query Language 的缩写。 13.SQL的功能包括数据定义功能、数据操纵功能、数据查询功能和 数据控制功能四个部分。 14.在SQL Server2008中,数据库是由数据库文件和日志文件组成的。 15.每个触发器有插入表和删除表两个特殊的表在数据库中。 16.一个触发器由三部分组成触发事件、触发条件和动作。 17.索引可分为三类:唯一索引、聚集功索引和非聚集索引。 18.一个不好的关系模式通常存在的四个问题是数据冗余度大、插入异 常、删除异常和更新异常。 19._需求分析_是数据库设计的起点,为以后的具体设计做准备。 20.数据库设计分为六个阶段:需求分析、概念结构设计、逻辑结构 设计、数据库物理设计、数据库实施和数据库运行和维护。 21.将E-R图向关系模型进行转换是逻辑设计阶段的任务。 22.重新组织和构造数据库是运行和维护阶段的任务。 23.数据流图(DFD)是用于描述结构化方法中需求分析阶段的工具。 24.在数据库设计中,把数据需求写成文档,它是各类数据描述的集合,包括数 据项、数据结构、数据流、数据存储和数据加工过程的描述,通常称为数据字典。 25.并发操作所带来的数据异常包括三类丢失修改、不可复读和读脏 数据。 26.根据备份的内容,可以将备份分为完全备份、事务日志备份、差 异备份和文件备份。 27.数据库中预防死锁的方法通常有一次封锁法和顺序封锁法两种。 28.DBMS提供的最常用的封锁类型有两种,分别是排他锁和共享锁。 29.数据库系统运行过程中可能会出现事务故障、系统故障和介质故

(完整版)大学数据库考试复习试题带答案

2019数据库期末复习内容 1.选择题 (1)(数据库)是存储在计算机内结构化的数据的集合 (2)下述关于数据系统正确的描述是(数据库系统减少了数据冗余)。 (3)数据库(DB)、与数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(DBS 包含DB 和DBMS )。(4)数据库管理系统的工作不包括(为定义的确据库提供操作系统)。 (5)用于对现实世界进行描述的工具是(数据模型)。 (6)在数据库的三级模式结构中,描述数据库中全局逻辑结构和特征的是(模式)。 (7)E-R图用来建立数据库的(概念模型)。 (8)下列模型中不能直接描述实体间多对多的联系的是(关系模型)。 (9)数据模型的三个要素是(数据结构、数据操作、完整性约束) (10)数据库的设计人员和用户之间沟通信息的桥梁是(实体联系图)。 (11)数据的独立性分为(逻辑独立性和物理独立性)。 (12)数据库通常是根据(数据模型)来分类的。 (13)关系数据库系统能实现专门的关系运算,包括(选择、投影、连接、除)。 (14)在关系模型中,下述关于关键字的说法正确的是(可以由一个或多个其值能唯一标识该关系模式中任何元组的属性组成)。 (15)被称为关系的两个不变性,由关系数据库系统自动支持的是(实体完整性和参照完整性)。 (16)在关系中不能出现相同元组的约束是通过(主码)来实现。 (17)下列数据模型中,数据独立性最高的是(关系模型). (18)规范化理论是关系数据库进行逻辑设计的理论依据。根据这个理论,关系数据库中的关系必须满足:每一属性都是(不可分解的)。 (19)关系数据库规范化是为解决关系数据库中(插入异常、删除异常和数据冗余)问题而引入的。 (20)在关系数据库中,任何二元关系模式的最高范式必定是(BCNF ) (21)若属性X函数依赖于属性Y时,则属性X与属性Y之间的关系是(多对一)。 (22)设有关系模式:部门(部门代码,部门名称,部门成员,部门经理)由于其中(部门成员)属性存在,使该关系不属于第一范式。 (23)若关系模式R中的属性都是主属性,则R最高属于(3NF )。 (24)若要彻底消除插入异常和删除异常,关系模式最低要属于(BCNF)。 (25)关系模式分解的无损连接和保持函数依赖两个特性之间的联系是(没有必然联系)。 (26)关系模式中数据依赖的存在,可能会导致成立蕴涵后者数据插入异常,这是指(该插入的数据未被插入)。(27)设要对关系模式R(学号,姓名,课程代码,课程名,课程成绩)进行分解,将其规范化到3NF,下列(B)是正确的规范化结果。B.R1(学号,姓名)R2(课程代码,课程名)R3 (学号,课程代码,课程成绩) (28)有如下关系R(是BCNF)。 (29)对用户访问数据库的权限加以限定是为了保护数据库的(安全性)。 (30)下面(可移植性)不是数据库系统必须提供的数据控制功能。 (31)数据库系统中,对存取权限定义为(授权)。 (32)在数据库的安全性控制中,为了保证用户只能存取他有权存取的数据,在授权的定义中,数据对象的(范围越小),授权子系统就越灵活。 (33)数据库安全性遭到破坏的情况属于(非法用户读取数据库中的数据)。 (34)数据库的(完整性)是指数据的正确性和相容性。 (35)数据完整性保护中的约束条件是指(值的约束和结构的约束)。 (36)实体完整性和参照完整性属于(静态关系约束)。 (37)数据类型、取值范围、空值约束属于(静态列级约束)。

数据库原理及应用(第2版)习题参考答案..

第1章数据概述 一.选择题 1.下列关于数据库管理系统的说法,错误的是C A.数据库管理系统与操作系统有关,操作系统的类型决定了能够运行的数据库管理系统的类型 B.数据库管理系统对数据库文件的访问必须经过操作系统实现才能实现 C.数据库应用程序可以不经过数据库管理系统而直接读取数据库文件 D.数据库管理系统对用户隐藏了数据库文件的存放位置和文件名 2.下列关于用文件管理数据的说法,错误的是D A.用文件管理数据,难以提供应用程序对数据的独立性 B.当存储数据的文件名发生变化时,必须修改访问数据文件的应用程序 C.用文件存储数据的方式难以实现数据访问的安全控制 D.将相关的数据存储在一个文件中,有利于用户对数据进行分类,因此也可以加快用户操作数据的效率 3.下列说法中,不属于数据库管理系统特征的是C A.提供了应用程序和数据的独立性 B.所有的数据作为一个整体考虑,因此是相互关联的数据的集合 C.用户访问数据时,需要知道存储数据的文件的物理信息 D.能够保证数据库数据的可靠性,即使在存储数据的硬盘出现故障时,也能防止数据丢失 5.在数据库系统中,数据库管理系统和操作系统之间的关系是D A.相互调用 B.数据库管理系统调用操作系统 C.操作系统调用数据库管理系统 D.并发运行 6.数据库系统的物理独立性是指D A.不会因为数据的变化而影响应用程序 B.不会因为数据存储结构的变化而影响应用程序 C.不会因为数据存储策略的变化而影响数据的存储结构 D.不会因为数据逻辑结构的变化而影响应用程序 7.数据库管理系统是数据库系统的核心,它负责有效地组织、存储和管理数据,它位于用户和操作系统之间,属于A A.系统软件B.工具软件 C.应用软件D.数据软件 8.数据库系统是由若干部分组成的。下列不属于数据库系统组成部分的是B A.数据库B.操作系统 C.应用程序D.数据库管理系统 9.下列关于客户/服务器结构和文件服务器结构的描述,错误的是D A.客户/服务器结构将数据库存储在服务器端,文件服务器结构将数据存储在客户端 B.客户/服务器结构返回给客户端的是处理后的结果数据,文件服务器结构返回给客户端的是包含客户所需数据的文件 C.客户/服务器结构比文件服务器结构的网络开销小 D.客户/服务器结构可以提供数据共享功能,而用文件服务器结构存储的数据不能共享

死锁问题解决方法

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参数,这样会初始化表空间,造成数据完全丢失且无法挽回。

5-企业案例-网络安全审计系统(数据库审计)解决方案

数据库审计系统技术建议书

目次 1.综述 (1) 2.需求分析 (1) 2.1.内部人员面临的安全隐患 (2) 2.2.第三方维护人员的威胁 (2) 2.3.最高权限滥用风险 (2) 2.4.违规行为无法控制的风险 (2) 2.5.系统日志不能发现的安全隐患 (2) 2.6.系统崩溃带来审计结果的丢失 (3) 3.审计系统设计方案 (3) 3.1.设计思路和原则 (3) 3.2.系统设计原理 (4) 3.3.设计方案及系统配置 (14) 3.4.主要功能介绍 (5) 3.4.1.数据库审计........................ 错误!未定义书签。 3.4.2.网络运维审计 (9) 3.4.3.OA审计............................ 错误!未定义书签。 3.4.4.数据库响应时间及返回码的审计 (9) 3.4.5.业务系统三层关联 (9) 3.4.6.合规性规则和响应 (10) 3.4.7.审计报告输出 (12) 3.4.8.自身管理 (13) 3.4.9.系统安全性设计 (14) 3.5.负面影响评价 (16) 3.6.交换机性能影响评价 (17) 4.资质证书.......................... 错误!未定义书签。

1.综述 随着计算机和网络技术发展,信息系统的应用越来越广泛。数据库做为信息技术的核心和基础,承载着越来越多的关键业务系统,渐渐成为商业和公共安全中最具有战略性的资产,数据库的安全稳定运行也直接决定着业务系统能否正常使用。 围绕数据库的业务系统安全隐患如何得到有效解决,一直以来是IT治理人员和DBA们关注的焦点。做为资深信息安全厂商,结合多年的安全研究经验,提出如下解决思路: 管理层面:完善现有业务流程制度,明细人员职责和分工,规范内部员工的日常操作,严格监控第三方维护人员的操作。 技术层面:除了在业务网络部署相关的信息安全防护产品(如FW、IPS 等),还需要专门针对数据库部署独立安全审计产品,对关键的数据库操作行为进行审计,做到违规行为发生时及时告警,事故发生后精确溯源。 不过,审计关键应用程序和数据库不是一项简单工作。特别是数据库系统,服务于各有不同权限的大量用户,支持高并发的事务处理,还必须满足苛刻的服务水平要求。商业数据库软件内置的审计功能无法满足审计独立性的基本要求,还会降低数据库性能并增加管理费用。 2.需求分析 随着信息技术的发展,XXX已经建立了比较完善的信息系统,数据库中承载的信息越来越受到公司相关部门、领导的重视。同时数据库中储存着诸如XXX等极其重要和敏感的信息。这些信息一旦被篡改或者泄露,轻则造成企业或者社会的经济损失,重则影响企业形象甚至社会安全。 通过对XXX的深入调研,XXX面临的安全隐患归纳如下:

数据库习题答案

1.3 习题 1. 数据库的发展历史分为哪几个阶段?各有什么特点? 答:从数据管理的角度看,数据库技术到目前共经历了人工管理阶段、文件系统阶段和数据库系统阶段。 人工管理阶段数据管理特点:数据不保存,没有对数据进行管理的软件系统,没有文件的概念,数据不具有独立性。 文件系统阶段数据管理特点:数据可以长期保存,由文件系统管理数据,文件的形式已经多样化,数据具有一定的独立性。 数据库系统阶段数据管理特点:采用复杂的结构化的数据模型,较高的数据独立性,最低的冗余度,数据控制功能。 2. 简述数据、数据库、数据库管理系统、数据库系统的概念。 答:数据是指描述事物的符号记录。人们通过数据来认识世界,交流信息。 数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。 数据库管理系统(DataBase Management System,简称DBMS)是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能,它位于用户和操作系统之间,是一层数据管理软件。 数据库系统(DataBase System,简称DBS)是指在计算机系统中引入了数据库后的系统,由计算机硬件、数据库、数据库管理系统、应用程序和用户构成,即由计算机硬件、软件和使用人员构成。 3. 使用数据库系统有什么好处? 答:简化管理,提高效率,提供安全。 4. 试述数据库系统的三级模式结构和二级映象的特点。 答:从数据库管理系统的角度看,数据库系统通常采用三级模式结构:外模式、模式和内模式。数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS 管理,使用户能逻辑地、抽象地处理数据。 为了实现这三个层次上的联系和转换,数据库系统在这三级模式中提供了两层映象:外模式/模式的映象和模式/内模式的映象。 5. 什么是数据与程序的逻辑独立性?什么是数据与程序的物理独立性? 答:对于每一个外模式,数据库都有一个外模式/模式的映象,它定义并保证了外模式与数据模式之间的对应关系。当模式改变时,外模式/模式的映象要作相应的改变以保证外模式保持不变。应用程序是根据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,即数据的逻辑独立性。 数据库的内模式依赖于它的全局逻辑结构,即模式。它定义并保证了数据的逻辑模式与内模式之间的对应关系。当数据库的存储结构改变了,模式/内模式的映象也必须作相应的修

数据库锁表与解锁

数据库锁表与解锁 一、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,

(完整版)数据库原理与技术课程习题答案

数据库原理与技术课程习题答案 第1章 一、选择题 1.下列关于用文件管理数据的说法,错误的是D A.用文件管理数据,难以提供应用程序对数据的独立性 B.当存储数据的文件名发生变化时,必须修改访问数据文件的应用程序 C.用文件存储数据的方式难以实现数据访问的安全控制 D.将相关的数据存储在一个文件中,有利于用户对数据进行分类,因此也可以加快用户操作数据的效率 2.下列说法中,不属于数据库管理系统特征的是 C A.提供了应用程序和数据的独立性 B.所有的数据作为一个整体考虑,因此是相互关联的数据的集合 C.用户访问数据时,需要知道存储数据的文件的物理信息 D.能保证数据库数据的可靠性,即使在存储数据的硬盘出现故障时,也能防止数据丢失 3.数据库管理系统是数据库系统的核心,它负责有效地组织、存储和管理数据,它位于用 户和操作系统之间,属于A A.系统软件B.工具软件 C.应用软件D.数据软件 4.数据库系统是由若干部分组成的。下列不属于数据库系统组成部分的是B A.数据库B.操作系统 C.应用程序D.数据库管理系统 5.下列关于数据库技术的描述,错误的是D A.数据库中不但需要保存数据,而且还需要保存数据之间的关联关系 B.数据库中的数据具有较小的数据冗余 C.数据库中数据存储结构的变化不会影响到应用程序 D.由于数据库是存储在磁盘上的,因此用户在访问数据库时需要知道其存储位置 二、简答题 1.试说明数据、数据库、数据库管理系统和数据库系统的概念。 答: 数据是描述事物的符号记录。描述事物的符号可以是数字,也可以是文字、图形、图像、声音、语言等,数据有多种表现形式,它们都可以经过数字化后保存在计算机中。 数据库是长期存储在计算机中的有组织的、可共享的大量数据的集合。 数据库管理系统是一个专门用于实现对数据进行管理和维护的系统软件。 数据库系统一般由数据库、数据库管理系统(及相关的实用工具)、应用程序、数据库管理员组成。 2.数据管理技术的发展主要经历了哪几个阶段? 答: 数据管理技术的发展因此也就经历了文件管理和数据库管理两个阶段。 最初对数据的管理是以文件方式进行的,也就是用户通过编写应用程序来实现对数据的存储和管理。后来产生了数据库技术,也就是用数据库来存储和管理数据。 3.文件管理方式在管理数据方面有哪些缺陷? 答: 文件方式管理数据有如下缺点。(1)编写应用程序不方便。(2)数据冗余不可避免。(3)

数据库安全审计解决实施方案

数据库安全审计解决方案

————————————————————————————————作者:————————————————————————————————日期: 2

一、数据库安全审计需求概述 数据库系统是一个复杂而又关键的系统,数据库存在各种管理和技术上的风险,如果这些风险变为事实,那么企业数据将遭受严重的经济损失和法律风险。 而面对数据库的安全问题,企业常常要面对一下问题: ?数据库被恶意访问、攻击甚至数据偷窃,而企业无法及时发现、追踪并阻截这些恶意的行为。 ?数据库遭受恶意访问、攻击后,不能追踪到足够的证据。 ?不了解数据使用者对数据库访问的细节,从而无法保证数据安全,特别是敏感数据的管理。 ?来自内部的威胁:特权用户随意修改配置、改变或盗取数据,没有明确职责分工。 ?针对数据库、应用系统日志的审计只能做事后分析,周期长,且无法进行持续性审计。 ?审计缺乏规范性,无法有效成为公司的安全管理规范且满足外部审计需求。 ?人工审计面对海量数据,无法满足100%可见性,造成审计不完整。?DBA权责未完全区分开,导致审计效果问题。 二、Guardium企业数据管理综合解决方案 InfoSphere Guardium提供的一组集成模块,使用一个统一的控制台和后端数据存储,管理整个数据库的安全与合规周期。通过Guardium,IBM 现在提供一种直接解决数据库安全性和遵从性问题的自动、有效且高效的方法。可扩展企业安全平台既能实时保护数据库,又能自动化所有合规审计流程。这套方案不仅在解决问题方面表现卓越,而且在避免消极影响方面同样表现出色。它对数据库性能的影响几乎为零,无需对数据库作任何变更,甚至不依赖本地数据库日志或审计工具。 三、通过Guardium管理数据安全 ?发现、分类并且自动寻找、分类和保护敏感信息 使用数据库自动搜寻和信息分类功能来识别机密数据的存储位置,然后使用定制的分类标签来自动执行适用于特定级别的敏感信息的安全策

数据库原理与应用-期末考试复习题

数据库原理期末考试复习题 一、单选题 1.在数据库中存储的是(C)。 A. 数据 B. 数据模型 C. 数据及数据之间的联系 D. 信息 2.现有一个“教师”表,其中一个字段是教师的住址(字符型,20位长),如果不希望此字段包含空值,即某位教师现没有住址,则希望此字段自动填入“还没有”,应该( C )。 A. 为此列创建一个check约束 B. 为此列创建一个foreign key约束 C. 为此列创建一个default约束 D. 为此列创建一个primary key约束3.数据库系统包括( D )。 A. DB、DBMS B. DB、DBA C. DB、DBMS、DBA、计算机硬件 D. DB、DBMS、DBA、OS、计算机硬件 4.假设同一名称的产品有不同的型号和产地,则计算每种产品平均单价的SQL语句是(D)。 A. SELECT 产品名称,AVG(单价) FROM 产品GROUP BY 单价 B. SELECT 产品名称,AVG(单价) FROM 产品ORDER BY 单价 C. SELECT 产品名称,AVG(单价) FROM 产品ORDER BY 产品名称 D. SELECT 产品名称,AVG(单价) FROM 产品GROUP BY 产品名称 5.数据库中,数据的物理独立性是指(C)。 A. 数据库与数据库管理系统的相互独立 B. 用户程序与DBMS的相互独立 C. 用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的 D. 应用程序与数据库中数据的逻辑结构相互独立 6.关系数据库规范化是为解决关系数据库中(B)问题而引入的。 A. 提高查询速度 B. 保证数据的安全性和完整性 C. 减少数据操作的复杂性 D. 插入异常、删除异常和数据冗余 7.当前数据库应用系统的主流数据模型是(C)。 A. 层次数据模型 B. 网状数据模型 C. 关系数据模型 D. 面向对象数据模型 8.如果两个实体集之间的联系是m:n,转换为关系时(B)。 A. 联系本身不必单独转换为一个关系 B. 联系本身必须单独转换为一个关系 C. 联系本身也可以不单独转换为一个关系 D. 将两个实体集合并为一个实体集9.候选码中的属性可以有(C)。 A. 0个 B. 1个 C. 1个或多个 D. 多个 10.下列关于关系性质的描述中正确的是(B )。 A. 关系中行的值可以相同 B. 关系中列的值可以相同 C. 关系中行的次序不可以交换 D. 关系中列的次序不可以交换 11.在SQL 语句中,与X BETWEEN 20 AND 30 等价的表达式是(B)。 A. X>20 AND X<30 B. X>=20 AND X<=30 C. X>20 AND X<=30 D. X>=20 AND X<30 12.数据库系统具有许多特点,使其很快成为数据处理的主要工具,下列哪个特点不是数据库系统的特点(B )。 A. 具有复杂的数据结构 B. 不存在数据冗余

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

如何对行 表 数据库加锁

如何对行表数据库加锁 1如何锁一个表的某一行 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT*FROM table ROWLOCK WHERE id =1 2锁定数据库的一个表 SELECT*FROM table WITH (HOLDLOCK) 加锁语句: sybase: update表set col1=col1 where1=0 ; MSSQL: select col1 from表(tablockx) where1=0 ; oracle: LOCK TABLE表IN EXCLUSIVE MODE ; 加锁后其它人不可操作,直到加锁用户解锁,用commit或rollback解锁 几个例子帮助大家加深印象 设table1(A,B,C) A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 1)排它锁 新建两个连接 在第一个连接中执行以下语句 begin tran update table1 set A='aa' where B='b2' waitfor delay '00:00:30'--等待30秒 commit tran 在第二个连接中执行以下语句 begin tran select*from table1 where B='b2' commit tran

若同时执行上述两个语句,则select查询必须等待update执行完毕才能执行即要等待30秒 2)共享锁 在第一个连接中执行以下语句 begin tran select*from table1 holdlock-holdlock人为加锁 where B='b2' waitfor delay '00:00:30'--等待30秒 commit tran 在第二个连接中执行以下语句 begin tran select A,C from table1 where B='b2' update table1 set A='aa' where B='b2' commit tran 若同时执行上述两个语句,则第二个连接中的select查询可以执行 而update必须等待第一个事务释放共享锁转为排它锁后才能执行即要等待30秒 3)死锁 增设table2(D,E) D E d1 e1 d2 e2 在第一个连接中执行以下语句 begin tran update table1 set A='aa' where B='b2' waitfor delay '00:00:30' update table2 set D='d5' where E='e1' commit tran 在第二个连接中执行以下语句 begin tran update table2 set D='d5' where E='e1'

数据库 期末复习题(有答案)

数据库练习题 1、以下关于主键的描述正确的是(__)。 A.标识表中唯一的实体 B.创建唯一的索引,允许空值 C.只允许以表中第一字段建立 D.表中允许有多个主键 2、每个数据库有且只有一个(__)。 A、主要数据文件 B、次要数据文件 C、日志文件 D、索引文件 3、一个规范化的关系至少应当满足(___)的要求。 A、一范式 B、二范式 C、三范式 D、四范式 4.下列四项中,不属于数据库特点的是( )。 A.数据共享 B.数据完整性 C.数据冗余很高 D.数据独立性高 5、下列哪个不是sql 数据库文件的后缀(___)。 A、 .mdf B、 .ldf C、 .dbf D、 .ndf 6、下列标识符可以作为局部变量使用的是(___)。 A、 Myvar B、My var C、 @Myvar D、 @My var 7、在select 语句中,下列哪能一种子句用于将查询结果存储在一个新表中。 A、select 子句 B、from 子句 C、into 子句 D、 where 子句 8、看下面的语句 Declare @I int, @sum int Select @i=1,@sum=0 说出那一个语句是对的 A、语句;Declare @I int 功能定义变量I 是浮点变量 B、语句;Declare @I int 功能定义变量I 是整型变量 C、语句;Select @I= 功能定义变量I是字符变量 D、语句;Select @I= 功能定义变量I 是日期变量 9.SQL Server安装程序创建4个系统数据库,下列哪个不是( )系统数据库。 A.master B.model C.pub D.msdb 10、在select 语句中,下列哪能一种子句用于将查询结果存储在一个新表中。 A、select 子句 B、from 子句 C、into 子句 D、where 子句

数据库死锁的解决办法

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, 数据

相关文档
最新文档