赵老师教案网 >地图 >教案资料 >

数据库DBA工作总结

数据库DBA工作总结(热门16篇)_数据库DBA工作总结

时间:2022-10-09 赵老师教案网

数据库DBA工作总结(热门16篇)。

⬬ 数据库DBA工作总结 ⬬

互联网的迅猛发展,使网上遍布了成千上万的各类高性能计算机,如何更好地扩展和利用这些网络资源已成为一个重要研究方向,这正是网格计算的发展前景所在,

网格计算作为新一代的分布式计算方法,与传统分布式计算的主要区别在于在没有集中控制机制的情况下,通过对计算资源进行大规模共享,满足应用对高性能计算要求,并且这种对计算资源进行大规模共享是动态的、柔性的、安全的和协作式的。

网格安全问题是网格计算中的一个核心问题。我们都知道,安全与便利是一对矛盾的结合体。因为在保证网格计算安全性的同时,还必须要尽量方便用户和各种服务的交互与使用。在设计网格安全机制时特别要考虑网格计算环境的动态主体特征及复杂性。要保证网格计算环境中不同主体之间的相互鉴别和各主体间通信的保密性和完整性。基于以上原因,在网格计算环境中,安全问题比一般意义上的网络安全问题的覆盖面更广。在网格环境中,客户机位于不同的地理空间和组织,为保证网格实体(用户、资源和程序)之间的通信安全、防止篡改、实现组织中安全机制方面的互操作性。就需要具备有一个统一的网格安全基础设施, GSI(Grid Security Infrastructure)正是一个解决网格计算中安全问题的一个集成方案。

GSI为网格计算环境提供了一系列的安全协议、安全服务、安全SDK和命令行程序。GSI可以提供在网格计算环境中的安全认证,支持网格计算环境中主体之间的安全通信,防止主体假冒和数据泄密;为网格通信提供保密性、完整性和回放保护,及为网格用户提供单点登录和权限委托的能力。另外,GSI还可以用来对网格实体的身份进行验证,来确定该实体允许执行哪些操作。这些安全技术都能有效地保证网格计算环境的安全性和方便性。

GSI是保证网格计算安全性的核心。它支持用户代理、资源代理、认证机构和协议的实现。它向上提供一系列的安全协议,向下支持各种安全机制和技术。GSI采用GSS-API(Generic Security Service application programming interface) 作为其安全编程接口。提供了通用的安全服务,支持应用程序在源码级的可移植性。它在面向主体间安全鉴别和安全通信操作基础上,提供获得证书、执行安全鉴别、签署消息和加密消息等功能。

GSI的实现符合IETF提出的用于安全系统的标准(GSS-API),它主要集中在网络的传输层和应用层,并强调与现有分布式安全技术的融合。在公钥加密体系的基础上,充分利用现有的网络安全技术,对某些功能进行扩展,使得GSI可以支持单点登录。从而,在网格计算环境下提供一个一致的安全性界面,方便了网格的开发和使用。

实施网格安全策略必须集中于域间相互作用和映射域间操作。对单一信任域内的操作可通过Kerberos 和SSH方法。对每个信任域,都要有一个从全局到局部主体的映像。位于不同信任域的实体间的操作要求相互鉴别,

一个被鉴别的全局主体映像为一个局部主体时,被看作等同于局部主体的本地认证。在一个通用的计算环境中,主体和对象必须包含组内所有计算的实体。一个计算包括许多过程,每个过程代表一个用户。其中对象包括可用于网格环境中的大范围的资源。

基于GSI的安全策略是通过通用安全服务编程接口GSS-API、安全认证管理和用户代理的实现三个方面来体现的。在GSI中,着重解决的是安全的认证问题。

GSI通过创建用户代理、代理分配资源、进程分配资源、映射权限四种安全操作协议,充分体现了网格的解决方案。全局命名(证书)和代理证书使得用户对所有的访问资源只进行一次认证。代理证书和委托技术允许一个进程来代表用户访问资源。在GSI的安全策略和单一登录机制的基础上,构建一个网格安全体系,该体系结构体现了用户、资源和过程的鉴别,它支持用户到资源、资源到过程、过程到资源、过程到过程的鉴别。及与本地策略的相互协作及对不同资源的动态请求。

安全认证是对请求者与接受者双方进行身份验证的一个过程,是在SSL上进行的一个成功的安全认证,可以校验一个请求连接的合法性,并为其后的双方通信提供一个会话密钥。GSI的安全认证是基于用户的私钥创建一个代理,从而为用户提供认证方法。用户如果没有创建这个代理,就不能提交作业,也不能传输数据。(编程入门网)

GSI认证(certificates)的一个关键是认证证书。在网格计算环境中的每个用户和服务都需要通过认证证书来验证身份,GSI证书采用了X.509的证书格式。主体名称(subject name)是用来明确认证证书所表示的人或其它对象。主体的公钥(public key)来自于X.509 认证签署证书的认证中心。标识则记录了认证中心的名称。签署证书的认证中心的数字签名是可用来确认认证中心的合法性。

在相互认证进行之前,双方要相信彼此的认证中心。双方有彼此认证中心自身的证书,就可以确保双方由认证中心签署的证书具有合法性。双方主体都获得了证书,而且都信任彼此的认证中心后,则双方可相互明确彼此的身份,这就是相互鉴别(mutual authentication)的过程。GSI采用SSL( Secure Sockets Layer)协议作为它的相互认证协议。

网格安全问题是网格计算中的核心问题。网格计算的特点是网格计算会将现有的各种标准协议有机地融合起来,从而在网格计算中将协议和技术集成起来。网格系统和应用中的每个用户和服务,要求所有的安全标准,包括安全认证、安全身份相互鉴别、通信加密以、私钥保护及委托与单点登录,都能在网格计算环境中通过认证证书来验证身份。提供一个较好的认证解决方案,可以使用户,包含用户计算的过程以及该过程使用的资源都可以证明彼此的身份。

认证是形成安全政策的基础,它可以使各个局部安全策略都被集成为一个全局的框架。从而更加有利于网格实体之间实现安全的通信。

⬬ 数据库DBA工作总结 ⬬

1、课题名称

SQL Server 20xx数据库课程网站

2、课题目的

本网站依据开发要求主要应用于网站教学管理,完成对日常的教育工作中教学大纲发布,通知发布、课件发布、作业发布、学生在线自测、在线答题等的数字化管理。开发本系统可比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少极大地节约教学成本,加快查询速度、加强管理以及国家各部门关于信息化的步伐,使各项管理更加规范化。 2.1面向对象

该网站主要面向的对象是所有有需求的用户,本院的学生都可以在其上面下载课件,在线测试和留言。该网站的系统管理员可以进行用户管理,系统信息的维护等工作。老师则拥有权限可以上传课件,上传和发布作业,查看学生提交的作业,查看学生在线考试的分数记录,回答学生留言板的问题。该网站也不排除其他人员对网站的访问,同样可以对该网站自由的访问和操作。

2.2课程背景

随着计算机在中国的广泛普及,数值化管理手段的逐步完善,越来越多的学生逐渐习惯于是用信息化手段进行学习信息,这样也方便的老师使用信息化手段对学生进行管理。而信息化应用在教学管理中的应用是实现教学管理科学化、现代化的关键。因此,该网站为本书店提供了搞笑,准确,快速的管理模式,实现管理规范化、科学化。

3、项目概述

3.1网站需求分析

中国教育历来有重视质量的传统,形成了一整套行之有效的方法,要组织力量进行深入研究并加以发扬光大,形成中国教育的独特优势。同时要积极探索提高教育质量的新思路、新途径。树立科学的质量观,形成评价教育质量的新标准。坚持全面推进素质教育,把“成人”与“成才”作为教育质量的根本标准,职业教育和高等教育要把社会和就业市场的认可程度作为衡量教育质量的重要标准。这个标准要根据各级教育的特点予以细化。深化教育教学改革,推动各级各类教育的培养模式、课程体系、教学内容和教学方法的`改革与创新,利用新的方法和技术革新。特别是把教育的信息化作为提高教育质量的新手段,不仅是把硬件系统建立起来,更重要的是要在教学中广泛地应用起来。 3.2网站构架

前台主要包括导航栏(首页、相关新闻、课程标准、电子教案、教学课件、测试题库、课程论坛)、公告栏(包括公告通告、学校要闻、相关新闻、热帖、

后台包括信息管理(包括信息管理、公告管理)、课件管理(包括课件的添加管理、显示管理)、回复管理(帖子的回复管理、删除管理、热帖的显示管理)、管理员管理(查看会员信息、查看留言及回复)、权限管理(管理员增加、管理员修改、管理员删除)。

3.3主要内容及功能:本网站系统功能主要分为五大类:

(1)教学大纲和通知部分:教学大纲单独设计页面。通知和新闻发布部分在要在首页显示,发布通知是管理员的权限。

(2)课件发布系统:管理员可以发布课件,课件管理。老师可以上传课件。学生可以下载网上发布后的课件。

(3)作业发布系统:老师可以上传作业发布,学生可以下载作业,管理员拥有管理作业和删除以前老师发布的作业权利(防止积累过多)。

(4)网上测试系统:在线自测(题目全为选择题),有题库管理系统随机生成,每套题目有50道题目组成,在试卷的管理中随机生成的试卷分等级比如分简单和较难的试题(这些要在生成前学生选择的)

(5)论坛系统学生可以提交问题,然后由老师或者其他同学进行回答。学生对问题进行回复,编辑,删除等操作在管理员对其进行检查后显示,老师可以及时进行解答。

图3-1后台信息管理功能图

(6)实训案例系统:管理员可以发布作品和管理。老师可以上传一些学生的优秀作品,学生可以下载发布出的作品。

本系统性能力易于使用,具体有较高的扩展性和可维护性。这就需求数据库结构能充分满足各种信息的输入与输出,实现有组织地动态地存储大量关联数据,方便用户访问系统中的数据,它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。

4、项目特点

该网站是一个操作使用简单,界面漂亮美观的网站。具有以下特点: (1)简洁美观的操作界面

简单的操作界面能够大大的提高用户的操作速度,从而提高服务效率,使顾客节约一定的时间。因此美观又简单的操作界面使用户感觉舒适,该网站通过专业美工的精心打造,与学校网站具有相同的风格,给用户带来亲切感,从而避免在视觉带来的异样。 (2)科学的管理模式

系统采用科学的管理模式,管理员可以更好的了解用户需要什么,替用户轻松的完成需要整理信息:结构化管理模式,涵盖了新闻管理、电子教案编辑、用户管理、教学课件管理等等,为该网站的电子化管理提供了一套良好的管理模式。 (3)对外的开放性

通过数据库课程网站,比较低的成本实现优质教育教学资源的共享,打破现有的教育教学质量受制于教学资源不足的瓶颈,通过免费为师生提供优质教育教学质量。

(4)信息的整体性

数据库课程包括了教师、学生教材、教学技术手段、教学制度等要素。教学课程建设要考虑完整的课程建设的各个环节,即课堂授课水平、教与学的互动、学生课余的自主学习和实践动手的培养、学业成绩的评价以及教学辅助手段和教学参考书的建设等,要抓住个方面间的关系,关注整体建设而不是局部建设。 (5)师生的互动性

通过建立健全课程网站评价体系,即有效的反馈机制的建设,通过比较校内、校外、甚至国外专家、同行、学生在利用课程网站的建设方案,调查和补充课程

⬬ 数据库DBA工作总结 ⬬

我在sqlserver索引基础知识系列中,第一篇就讲了记录数据的基本格式。那里主要讲解的是,数据库的最小读存单元:数据页。一个数据页是8k大小。

对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。而是变化达到一定数量级后才会作这个操作。这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。

区是管理空间的基本单位。一个区是八个物理上连续的页(即64kb)。这意味着sqlserver数据库中每mb有16个区。

为了使空间分配更有效,sqlserver不会将所有区分配给包含少量数据的表。sqlserver有两种类型的区:

统一区,由单个对象所有。区中的所有8页只能由所属对象使用。

混合区,最多可由八个对象共享。区中八页的每页可由不同的对象所有。

通常从混合区向新表或索引分配页。当表或索引增长到8页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成8页,则对该索引的所有分配都使用统一区进行。

为何会这样呢?

其实很简单:

读或写8kb的时间与读或写64kb的时间几乎相同。

在8kb到64kb范围之内,单个磁盘i/o传输操作所花的时间主要是磁盘取数臂和读/写磁头运动的时间。

因此,从数学上来讲,当需要传输64kb以上的sql数据时,

尽可能地执行64kb磁盘传输是有益的,即分成数个64k的操作。

因为64kb传输基本上与8kb传输一样快,而每次传输的sqlserver数据是8kb传输的8倍。

我们通过一个实例来看有and操作符时候的最常见的一种情况。我们有下面一个表,

createtable[dbo].[member]([member_no][dbo].[numeric_id]identity(1,1)notnull,[lastname][dbo].[shortstring]notnull,[firstname][dbo].[shortstring]notnull,[middleinitial][dbo].[letter]null,[street][dbo].[shortstring]notnull,[city][dbo].[shortstring]notnull,[state_prov][dbo].[statecode]notnull,[country][dbo].[countrycode]notnull,[mail_code][dbo].[mailcode]notnull,[phone_no][dbo].[phonenumber]null,[photograph][image]null,[issue_dt][datetime]notnulldefault(getdate()),[expr_dt][datetime]notnulldefault(dateadd(year,1,getdate())),[region_no][dbo].[numeric_id]notnull,[corp_no][dbo].[numeric_id]null,[prev_balance][money]nulldefault(0),[curr_balance][money]nulldefault(0),[member_code][dbo].[status_code]notnulldefault(''))

这个表具备下面的四个索引:

索引名细节索引的列

member_corporation_linknonclusteredlocatedonprimarycorp_no

member_identclustered,unique,primarykeylocatedonprimarymember_no

member_region_linknonclusteredlocatedonprimaryregion_no

memberfirstnamenonclusteredlocatedonprimaryfirstname

当我们执行下面的sql查询时候,

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

sqlserver会根据索引方式,优化成下面方式来执行。

selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelike'k%'andm.member_no5000)a,--这个查询可以直接使用memberfirstname非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取3次

(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6)b

--这个查询可以直接使用member_region_link非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取10次

wherea.member_no=b.member_no

不信,你可以看这两个sql的执行计划,以及逻辑读信息,都是一样的。

其实上面的sql,如果优化成下面的方式,实际的逻辑读消耗也是一样的。为何sqlserver不会优化成下面的方式。是因为and操作符优化的另外一个原则。

1/26的数据和1/6的数据找交集的速度要比1/52的数据和1/3的数据找交集速度要慢。

selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelike'k%'--1/26数据)a,

(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6andm.member_no5000--1/3*1/2数据)bwherea.member_no=b.member_no

当然,我们要学习sql如何优化的话,就会用到查询语句中的一个功能,指定查询使用哪个索引来进行。

比如下面的查询语句

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(0))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(1))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(membercovering3))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(memberfirstname,member_region_link))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

这里index计算符可以是0,1,指定的一个或者多个索引名字。对于0,1的意义如下:

如果存在聚集索引,则index(0)强制执行聚集索引扫描,index(1)强制执行聚集索引扫描或查找(使用性能最高的一种)。

如果不存在聚集索引,则index(0)强制执行表扫描,index(1)被解释为错误。

总结知识点:

简单来说,我们可以这么理解:sqlserver对于每一条查询语句。会根据实际索引情况(sysindexes系统表中存储这些信息),分析每种组合可能的成本。然后选择它认为成本最小的一种。作为它实际执行的计划。

成本代价计算的一个主要组成部分是逻辑i/o的数量,特别是对于单表的查询。

and操作要满足所有条件,这样,经常会要求对几个数据集作交集。数据集越小,数据集的交集计算越节省成本。

的项目中,竟然出现了滥用聚集索引的问题。看来没有培训最最基础的索引的意义,代价,使用场景,是一个非常大的失误。这篇博客就是从这个角度来罗列索引的基础知识。

使用索引的意义

索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。

使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。

使用索引的代价

索引需要占用数据表以外的物理存储空间。

创建索引和维护索引要花费一定的时间。

当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

创建索引的列

主键

外键或在表联接操作中经常用到的列

在经常查询的字段上最好建立索引

不创建索引的列

很少在查询中被引用

包含较少的惟一值

定义为text、ntext或者image数据类型的列

heaps是stagingdata的很好选择,当它没有任何index时

excellentforhighperformancedataloading(parallelbulkloadandparallelindexcreationafterload)

excellentasapartitiontoapartitionedvieworapartitionedtable

聚集索引提高性能的方法,在前面几篇博客中分别提到过,下面只是一个简单的大纲,细节请参看前面几篇博客。

何时创建聚集索引?

clusteredindex会提高大多数table的性能,尤其是当它满足以下条件时:

独特,狭窄,静止:最重要的条件

持续增长的,最好是只向上增加。例如:

identity

date,identity

guid(onlywhenusingnewsequentialid()function)

聚集索引唯一性(独特型的问题)

由于聚集索引的b+树结构的叶子节点必须指向具体数据。如果你要建立聚集索引的列不唯一,并且你指定的创建的聚集索引是非唯一的聚集索引,则会有以下情况:

如果未使用unique属性创建聚集索引,数据库引擎将向表自动添加一个四字节uniqueifier列。必要时,数据库引擎将向行自动添加一个uniqueifier值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。

⬬ 数据库DBA工作总结 ⬬

1.以 Administrator 身份登录到 Windows NT.

您需要 Administrator 权限来创建、启动和停止服务,

2.打开命令提示符。

3.使用 dbsvc 实用程序创建服务,限制如下:

必须使用 -a 开关来指定 sybase 帐户,使用 -p 开关来指定它的口令。

不能使用 -as 或 -i 开关。

对于个人数据库服务器,可执行文件的名称应当是:

C:Program FilesSybaseSQL Anywhere 9win32dbeng9.exe

对于数据库服务器则是:

C:Program FilesSybaseSQL Anywhere 9win32dbsrv9.exe

您必须使用下列引擎参数:

4.输入要运行的任何数据库文件的完整路径。

该路径应当采取 数据库文件夹 文件名 .db 格式,其中数据库文件夹是 C2 数据库文件夹,其中包括所有其它相关参数。

例如,下列命令行可创建名为 asa_svc 的手工启动的服务,并且引用网络服务器,

它在 sybase 帐户下运行,其口令为sybase_password.它执行下列命令:

⬬ 数据库DBA工作总结 ⬬

本节内容是教育科学出版社《信息技术基础》教材第二章第四节“网络数据库的信息检索”的内容。本节教材分三部分构成,一是概述,教材通过一个简单的实例来体验从网络数据库获取信息的一般过程,目的是为络数据库的基本知识做准备性的铺垫。二是多样化的网络数据库,教材对这部分内容介绍比较多,意在让学生充分体验网络数据库的多样性和学会对各数据库信息的获取方法。三是网络数据库评价,在本章的最后重点安排了网络数据库的评价,目的是进一步提醒教师,在信息获取活动中,要培养学生及时、科学地评价信息的习惯,这是提高获取信息资源质量的关键,也是积累信息获取经验的关键一环。在本课教材访问丰富多彩的数据库这个模块中,应适当引导学生对资源进行点评,引导学生探索数据库这一现代信息管理手段的特点,为第七章中数据库知识的学习打下基础。

⑴虽然学生在初中有信息课,但是作为副科没有参加升学考试,所以学生在课堂上多数的时间是玩游戏、聊天,没有纠正学习这门课程的学习态度。初中学生上了高中后,其信息技术意识层次不齐,这就要教师有计划培养学生的信息技术意识。

⑵经过半个学期的学习,高一学生自觉性有所提高一般具备了一定的网络操作技能,这样对于本节课的学习已经有了相关知识上的准备。

4、教学重点与难点:

学习重点:网络数据库的理解、网络数据库的多样性、网络数据库信息的检索

学习难点:对网络数据库信息的检索、学生要用科学的评价方式判断所得信息的准确性

教学过程实质上是学生主动学习的过程,强调激发学生的兴趣,力求形成学生强烈的学习动机和乐学、善学的学习态度。本节是采用任务驱动法导入新课,采取合作探究法解决提出的任务,对于同学们的作答采取了赏识教育法树立大家的自信心。再利用提问启发法去发现新的问题,从而导入本节的内容。在新课网络数据库简介中,我采用了列举法和图表法加深对网络数据库概念的理解。网络数据库信息检索的一般过程和数字城市的介绍上都分别用了演示学习法,演示具体的各个操作步骤。网络数据库信息检索的一般过程和教育资源库的使用,都采取小组分工制合作探究法解决提出的任务。

教学指导在于提高学生的个性发展和全面发展。通过本节教学,主要使学生掌握以下几种学习方法:

同学们通过前面的学习,已学会了上网查找信息并能从网上将信息下载到本地计算机,幻灯片展示任务:

设置这三个任务的目的有2个:第一:激发学生的兴趣:“神六”的成功发射是中华民族值得骄傲的一件事情,以它为主题可以充分激发学生的探索欲望。第二:a、b项任务设置是对前面内容的复习,对c项任务设置是为了逐步导入本节的新课内容。

学生操作:学生二个为一组上网搜索合作探究完成任务(三分钟)。

信息反馈:通过大家的操作,我们可以发现a、b项任务同学们用前面所学的常规搜索引擎输入关键字的方法基本上都能找到完成,第三个任务如果还用搜索引擎查找,查找的结果就很不统一,很多同学都没有能找出来。

操作指导:这时我示意同学们如果觉得任务有困难可以先放一放,也不急于公布第三个任务的答案,使用提问启发法、发现问题法、解决问题法,导入本节新课

提问:为什么我们很多同学找不到第三个问题,而大家又是如何找到问题a和b,是如何搜索到的?

学生答:常规搜索网站:ggle、baidu、ss等搜索引擎网站。

缺点:内容有不准确性、结果重复,有许多不存在的网站,并不是所有内容都能查到。

提问:既然并不是所有的内容都能在常规搜索网站查到,且在常规搜索网站找到的内容有些又存在不准确性,有什么解决的办法呢?比如课本P31提供一则资料碰到的也是这样的问题,周小波又是如何解决的?

三个提问环环相扣,整个过程以学生为中心,让学生自己发现问题,解决问题。对学生的回答,老师首先要持肯定、鼓励的态度:正确的回答,要使用赏识法大力表扬树立大家的自信心,不完整或不准确的回答要委婉的指出,以免挫伤学生的积极性。在引导学生回答问题时,尽可能的给学生较多的发言机会,活跃课堂氛围,努力培养学生的兴趣,激发他们的学习热情。

根据同学的作答,导入本节的一个内容,也是本节的`重点之一。

课本只是讲述了数据库的重要性,对网络数据库的概念只是一笔带过。提供足够的资料让同学充分理解网络数据库概念。资料包括概念的列举和图表的展示:

网络数据库主要是指那些经过精心组织的提供网络访问的数据库,有专门负责人整理相关数据库,局限于某个专题的内容,针对某种特殊信息需求,以后台数据库为基础,用交互网页的形式展现在我们面前。比如关于图片、程序、驱动、小说、地图等内容的网络数据库。

简单地说,一个网络数据库就是用户利用浏览器作为输入接口,输入所需要的数据,浏览器将这些数据传送给网站,而网站再对这些数据进行处理。例如,将数据存入数据库,或者对数据库进行查询操作等,最后网站将操作结果传回给浏览器,通过浏览器将结果告知用户。

在我们的生活中回经常碰到这样的问题,检查银行帐户、股票价格、利率、实现电子商务等等。这些功能是用HTML编写的网页是无法做到的,因为用HTML无法完成交互功能,要做到这些,使用网络数据库技术。

提问:能否用网络数据库解决我们上课时候提出的第三个任务?(利用设问的形式告诉同学们答案是可以的)

提问:能否用数据库解决我们上课时候提出的第三个问题?

演示神州六号发射的时间在当年的农历时间:

我们先打开baidu 输入关键字“万年历” 打开相关的数据库网站

⬬ 数据库DBA工作总结 ⬬

DB2 UDB版本8使用“Windows Installer”技术安装,因此跟先前版本的安装和卸载有了很大的改变,

尽管在Windows操作系统上有四种方式可以卸载DB2 UDB版本8软件,它们并不完全一样。在卸载时应该首先考虑首选卸载方法。 剩下的方法必须在首选卸载方法失败,并且跟DB2 UDB服务人员联系后再尝试使用。

通过Windows控制面板中的添加/删除程序来卸载DB2 UDB 版本8是最好的方式,

根据不同的Windows操作系统,DB2产品在 添加/删除 程序窗口中可能有“删除” 和/或 “改变”按钮。 您可以使用任何一个按钮来卸载DB2。

在DB2卸载的第一个窗口中,“下一步”按钮可能是灰的。这是因为Windows会在后台执行一些程序确保DB2可以被卸载。一旦Windows Installer可以继续处理,“下一步”按钮会变为可用状态,您可以点击“下一步”继续后面的操作。

如果DB2卸载失败,您可以联系DB2服务人员,以便获取得到卸载日志和跟踪文件的方法,以便进一步确定问题的原因。

下面的卸载方法只应该在首选卸载方法失败的情况下使用。

⬬ 数据库DBA工作总结 ⬬

一、磁盘数据组织结构 在INFOR MI X-OnLine的磁盘数据组织结构中的最上层为逻辑概念上的 数据库 空间dbspace,每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,镜像数据存储块mirror保证当根数据存储块故障时,OnLine能够继续工作,每一个数据

在INFORMIX-OnLine的磁盘数据组织结构中的最上层为逻辑概念上的数据库空间dbspace,每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,镜像数据存储块mirror保证当根数据存储块故障时,OnLine能够继续工作。每一个数据存储块都有若干个数据页page组成,为了提高输入和输出效率,若干个连续的数据页组成数据连续页extent。用户的数据库database和数据表table存储在缺省的或者指定的数据库空间中,数据表的逻辑概念上的存储空间数据表空间tblspace有一个或若个安数据连续页extent组成,数据记录row存放在数据页page中。

为更好的的支持多媒体应用,多媒体数据可以存放在二进制大对象数据页Blobpage中,若干个二进制大对象数据页在此二进制大对象空间Blobspace。 OnLine使用逻辑日志Logicallog、物理日志Physicallog来管理数据库日志操作。

INFORMIX-OnLine的数据存放在物理上连续的数据存储块chunk中,数据存储块是OnLine数据存储的最大的物理单位。数据存储块可以有两种构造方法,其一是直接构造在系统的物理磁盘上,其二是构造在操作系统的文件或者卷上。

在第一种情况下,在操作系统上仅仅定义了这个(块)磁盘但没有格式化这个(块)磁盘,因此在这上面的所有数据操作都有OnLine来完成,操作系统对它不存在任何管理,数据空间在物理磁盘上连续,这种数据的存储空间称为原始空间rawspace。

而在第二种情况下,操作系统不仅定义了这个数据存储空间(文件),还管理这个数据存储空间(文件),数据文件操作时的内存缓冲、输入与输出。数据空间的建立受操作系统的制约,在物理存储上不连续。我们称这种数据存储空间为非原始空间cookedspace。

比较这两种数据的存储空间,原始空间在磁盘上连续,没有操作系统的缓存和制约,非原始空间在磁盘上不连续,存在着操作系统的缓存和操作系统的输入/输出的制约,因此在实际应用中,采用原始空间效率高于非原始空间,由于原始空间与系统设备有关,同时不同操作系统对设备的定义的不一致性,定义非原始空间比定义原始空间来得简单。我们将原始空间所对应的磁盘称原始设备rawdevice,而将非原始空间所对应的操作系统文件称操作系统文件cookedfile。

为了进一步提高数据库运行的效率,我们通常选用字符设备作为存放实际的原始设备,这样在我们输入/输出数据时,可以充分发挥系统的DMA能力。当我们使用原始设备时,可以在同一个原始设备上建立多个数据存储块。通过对数据存储块的参数OFFSET和SIZE的定义,其单位为KB,我们可以定义多个数据存储块在同一个磁盘或磁盘块上,参数OFFSET定义数据存储块的起始位置,参数SIZE定义数据存储块的大小,用户在设置参数OFFSET和SIZE时必须保证在物理磁盘上没有相互覆盖。

在原始设备/dev/rdsk/c0t1d1s0上建立三个数据存储块chunk1、chunk2和chunk3,它们的大小分别为50MB、30MB和50MB,由于chunk的SIZE单位为KB,因此chunk1、chunk2和chunk3的SIZE分别为50000、30000和50000。在通常情况下,第一个数据存储块chunk1的OFFSET为0,这样第二个数据存储块chunk2的OFFSET应为第一个数据存储块chunk1的SIZE,而第三个数据存储块chunk3的OFFSET则为第二个数据存储块chunk2的OFFSET加上第二个数据存储块chunk2的SIZE。为保证在两个数据存储块的相邻边界处不发生重叠,可以将后一个数据存储块的起始位置稍微挪后一点。如果采用操作系统文件作为数据存储空间时,一般不在一个文件中建立多个数据存储块。一个文件中建立多个数据存储块,操作系统对文件中数据的定位时间将更长。

不管是原始设备还是非原始设备,OnLine的概念是一致的。在实际应用中,可以一部分数据存储块用原始设备而另一部分用非原始设备,只是原始设备采用OnLine的管理的I/O机制,而非原始设备采用操作系统unix的I/O机制。

INFORMIX-OnLine在数据存储块中以数据页page为单位来组织存放数据,并以数据页为单位来输入输出数据,它的大小与数据在共享内存中数据缓冲区相一致,所以OnLine的数据页的大小是不可以改变的。数据页是OnLine组织存放数据的最小的物理单位。

根据不同从操作系统,OnLine的数据页的大小是不同的。例如在SCO、AT&T、UNISYS和HP等操作系统平台上,每一个数据页的大小为2KB,而在IBM和SEQUENT等操作系统平台上,每一个数据页的大小则为4KB。同时数据在共享内存中的缓冲区的大小也是根据操作系统的不同而不同,其值与数据页的大小一致。

为提高数据操作的效率,OnLine将若干个在物理磁盘上连续的数据页组成一个数据连续页extent。当用户创建一个数据表时,OnLine以数据连续页为单位在数据存储块中分配一块连续的空间,当用户的数据写满了这个数据连续页后,OnLine将以数据连续页为单位在数据存储块中申请一块连续空间,以存放更多的用户数据。在缺省情况下,初始化时第一个数据连续页为8个数据页。

数据连续页不能跨越数据存储块,当OnLine需要申请较多的数据页构成数据连续页时,如果OnLine找不到如数的在物理设备上连续的数据页时,OnLine将放弃这些不够构成一个数据连续页的数据页,OnLine将去下一个数据存储块去申请如数的在物理设备上连续的数据页。因此在实际系统中,过小的数据存储块将不利于数据操作性能和数据存取效率。

在INFORMIX-OnLine的磁盘数据组织中,数据库空间dbspace处于一个比较上层的位置。数据库空间是数据库在逻辑概念上的存储空间,一个或若干个数据库空间组成OnLine数据实体。在物理磁盘上,每一个数据库空间总对应于一个或几个数据存储块,在这些与数据库空间对应的数据存储块中,一定有一个数据存储块是根数据存储块,而其它的则是后继数据存储块。从功能上来看,根数据存储块除了具有后继数据存储块能够存储用户数据外,它还具有管理本数据库空间的功能;从数据存储块的保留页来看,根数据存储块具有56个保留页,而后继数据存储块仅有3个保留页。当然不同版本的OnLine在主、后继数据存储块的保留页的数量可能不同,但是根数据存储块需要更多的保留页来保存本数据库空间的定义。

在OnLine初始化后有一个称为根数据库空间rootdbs的数据库空间,它是OnLine系统的第一个数据库空间。当建立根数据库空间时,它的根数据存储块将被建立,所有数据库的日志和所有的定义信息都必须存放在该数据存储块中,它比所有其它根数据存储块的保留页更多。由于数据库日志定义的需要,因此对根数据库空间的根数据存储块的定义尤其重要,关于如何正确地定义根数据库空间的根数据存储块将在后面详细介绍,

为了提高数据库系统运行的效率,INFORMIX新的动态服务器OnLineDynamicServer7.1中引入了临时数据库空间的概念。在没有临时数据库空间的系统中,临时数据将建立的缺省的根数据库空间中,由于临时数据操作需要频繁的增加、删除,会给根数据库空间的数据存储块中造成很多碎片,将导致数据库操作效率的降低;另外当数据库备份时,那些临时数据也一起作备份,从而增加了数据备份量,降低了数据备份的效率。引入临时数据库空间后,用户的临时数据或者数据操作的中间结果将被存放在临时数据库空间中,同时当数据备份时临时数据库空间将不再被备份。

为提高OnLine运行时的数据高可靠性,OnLine在数据存储上引入了数据存储块镜像的机制。OnLine数据存储的镜像是对数据存储块而言的,但是其定义是对数据库空间的。当一个数据库空间被定义为镜像时,它下面的所有数据存储块全部镜像;当一个数据库空间被定义成没有镜像的时候,它下面的所有数据存储块全部没有镜像。

当OnLine在运行时,一旦数据存储块所在的物理磁盘发生读写故障,对于没有数据库空间没有镜像的系统,OnLine将自动关闭,并等待恢复。而对于具有镜像的数据库空间,OnLine将把存在读写故障的数据存储块标识为Down,同时OnLine将继续运行,用户完全可以根据需要,在适当的时候,恢复存在读写故障的数据存储块所在的磁盘,然后重构继续。因此一个具有镜像的数据库空间,其运行时的可靠性将大大高于不具有镜像的数据库空间。

在逻辑上,数据库存放在数据库空间dbspace中,数据表存放在数据表空间tblspace中。数据库空间是由数据存储块组成,数据表存在于这些数据存储块中,数据表空间是由连续存放该数据表记录的数据连续页组成。

OnLine能高效地执行联机事务处理的第二个机制是数据库服务器系统的共享内存。在一些不使用共享内存的数据管理系统中,管理进程只能在需要数据的时候,将该记录和索引的最新值读入该进程所占有的私用数据缓存中进行操作,由于频繁的磁盘I/O,使系统的运行效率降低,同时由于那些管理进程都各占一份数据缓存,使得系统内存的有效使用率降低。因此使用共享内存会有以下三方面的好处:

(1)数据缓存不再属于某个进程,所有的数据库进程均共享这块内存,降低了磁盘的I/O;

(2)所有数据库进程访问相同的访问,它们的值和索引在内存中只有一份拷贝,提高了内存的有效使用率;

(3)操作的相关记录被预读进共享内存中,由于内存的I/O效率极高,因而系统并发除了数据的能力得到提高。

随着OnLine功能和性能的不断提高,OnLine的共享内存也有所不同。尤其是INFORMIX的动态服务器OnLineDynamicServer(ODS)在其共享内存的结构上增加了两个功能模块。在OnLine5中,其共享内存仅有一个区域,驻留区Residentportion;动态服务器ODS7.1除了驻留区Residentportion外还增加了虚拟区Virtualportion和通讯区Communicationportion。

操作系统的共享内存参数对数据库服务器的共享内存的定义和建立会产生极大的影响。对INFORMIX来说,数据库服务器的共享内存绝对不能超过操作系统共享内存定义的允许范围。一个OnLine动态服务器7.1的共享内存不能超过操作系统所定义的一个UNIX进程所允许访问共享内存的极大值,由于操作系统对共享内存的定义往往不能满足OnLine动态服务器7.1的需要,因此,数据库管理员通常需要在建立其数据库应用系统以前,首先调谐操作系统的共享内存参数。

对于OnLine动态服务器7.1来说,操作系统的参数对它们的影响,在共享内存锁资源管理方面和虚拟处理器对共享内存访问操作方面是不全部相同的。它们对操作系统参数的要求也是不一样的,因此需要数据库管理员根据产品来决定操作系统的参数,在决定这些操作系统的参数前,请先阅读产品说明文件。例如OnLine动态服务器7.1的$INFORMIXDIR/release/ONLINE_7.1,在这个文件中它向数据库管理员阐述该INFORMIX产品在该机器平台上对操作系统参数的要求。同一种产品在不同的平台上,对该平台操作系统参数的要求非常有可能是不一样的;在同一平台上,同一产品的不同版本对操作系统参数也很有可能是不同的。

OnLine动态服务器7.1采用多进程Multi-processes多线索Multi-treads的数据库服务器机制,将每一个服务器进程根据用户定义分解成若干个线索,每一个线索响应一个用户的设计访问的请求。INFORMIX将每一个进程称作一个虚拟处理器Virtualprocess。

在以前的多处理器系统中,往往将用户的应用程序和系统的处理器CPU对应起来,每一个处理器都分别处理一个用户的应用程序;当应用程序数量多于处理器数目时,应用程序为争夺处理器资源CPU,而引起应用程序在运行时间上的不平衡;同时当应用程序的数量少于处理器数目时,由于一些处理器资源得不到运用而空闲,导致处理器资源运用上的不平衡。一种比较好的方法是将处理器与应用所需要的处理器分离开来,然后由数据库系统来平衡这种需求。在INFORMIX动态服务器中,用户应用程序发出的数据操作请求被称作虚拟处理器的服务器进程所接收,然后OnLine均匀地将这些服务器进程分配到系统实际的处理器CPU上。这样就较好地解决了上面所提到的两种不平衡状态。

在ODS7.1中每一个数据库服务器进程都称作一个虚拟处理器Virtualprocess,简称VP。若干个相同功能的虚拟处理器组成一个虚拟处理器类VirtualprocessClass,简称VPClass,每一个VPClass都表示一种功能的虚拟处理器。OnLine一共有七种虚拟处理器,它们是:

处理器虚拟处理器CPUVP,响应所有用户和OnLine系统对CPU资源的操作和协调。

磁盘输入输出虚拟处理器DiskI/OVP,响应用户和OnLine系统的磁盘输入输出请求,磁盘输入输出处理器分三种,异步输入输出AsynchronousI/O、物理日志输入输出Physical-logI/O和逻辑日志输入输出Logical-logI/O。

网络通讯虚拟处理器NetworkVP,响应用户的网络联接的请求。ODS的网络虚拟处理器有三种,它们分别用于管理tli、soc和ipc三种网络通讯接口。

系统管理虚拟处理器AdminstrationVP,运行OnLine系统管理程序和一些专职程序。

光盘虚拟处理器OpticalVP,当用户运行OnLine/Optical时管理光盘系统的运转。

审计虚拟处理器AuditVP,当用户系统需要一定的运行时数据安全性的时候,审计虚拟处理器在后台帮助检查每一个用户操作的合法性。

杂项管理虚拟处理器MiscellaneousVP,用于管理所有以上虚拟处理器不作的工作。

⬬ 数据库DBA工作总结 ⬬

对于像Sybase这样的大型DBMS系统而言,作为OLTP(联机事务处理)应用的基石,它需要能每天24小时, 每年365天不间断运行,由于其应用程序每天对数据库进行大量的插入、更新、删除等操作,在数据库的物理存储介质上产生了大量存储碎片,从而影响了存储的效率以及数据库应用运行的速度。是否可以像Windows操作系统的“碎片整理”程序一样,整理这些碎片,从而优化数据库存储,提高数据库的运行速度呢?答案是肯定的。本文将介绍Sybase 数据库的碎片类型以及碎片整理方法。 碎片类型

由于Sybase是通过OAM页、分配单元和扩展页来管理数据的,所以对OLTP应用的Database Server会十分频繁地进行数据删除、插入和更新等操作,时间一长就会出现以下几种情况:

即本来可以存放在一个页上的数据却分散地存储在多个页上。如果这些页存储在不同的扩展单元上,Database Server就要访问多个扩展单元,因此降低了系统性能。

在堆表中,当删除数据链中间的记录行时,会出现空页。随着空页的累积,扩展单元的利用率也会下降,从而出现扩展单元碎片。带cluster index的table也有可能出现扩展单元碎片。

当有扩展单元碎片存在,会出现以下问题:

● 对表进行处理时,常常出现死锁;

● 利用较大的I/O操作或增加I/O缓冲区的大小也无法改变较慢的I/O速度;

带有cluster index的table会由于插入记录而导致页分裂,但当删除记录后,页会获得释放,从而形成跨几个扩展单元和分配单元的数据,而要访问该数据就必须遍历几个扩展单元和分配单元。这将导致访问/查询记录的时间大大延长,开始时数据库的性能虽然较高,但使用一段时间后性能就会下降等问题。

实际上,数据在存储空间上排列得越紧密有序,Database Server访问的速度就越快,消除碎片有助于提高系统的性能和更有效地利用数据存储空间。

处理碎片有多种方法,如重新定义table的填充因子,根据table的定义删除并重新创建索引、重建表等。

本文给出的方法是通过BCP实用程序将用户数据库的数据以文本形式导出,然后将用户数据库彻底清空、截断,再将文本数据导入到数据库,从而达到消除碎片的目的,具有通用性。

下面以Sun Solaris 7操作系统下的Sybase Adaptive& nbspServer Enterprise 11.5为例,说明整理数据库数据的具体方法。

为防止在数据库碎片整理过程中出现不可预见的问题,有必要先备份数据库。

● 创建包含下列SQL语句的文件:

elect “bcp” + name + “out ./” + name + “_out.txt -Udboname -Pdbopwd -Ssys_name -c” vfrom sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_bcp_out. sql > b_out

● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_out

● 创建包含下列SQL语句的文件:

elect “truncate table” + name from sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_ trunc_out. sql > trunc_out. sql

● 编辑输出文件,去掉文件第一行和最后两行无关的字符,并在最后一行加入 go构成完整的SQL语句:vi trunc_out

● 执行以下语句,清空数据库的数据:

isql -Udboname -Pdbopwd < trunc_out. sql

● 创建包含下列SQL语句的文件:

elect “bcp” + name + “in ./” + name + “_out.txt& nbsp-Udboname -Pdbopwd -Ssys_name -c”from sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_ bcp_in. sql > b_in

● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_in

Sybase不自动维护索引的统计信息,当用truncate table截断数据库时,索引并没有改变,所以必须用update statistics来确保索引的统计信息对应当前表数据的统计,

● 创建包含下列SQL语句的文件:

elect “update statistics” + name from sysobjects where typ

● isql -Udboname -Pdbopasswd -Ssystemname < cre_upd_st. sql > upd_st. sql

● 编辑输出文件,去掉文件第一行和最后两行无关的字符,在最后一行加入 go构成完整的SQL语句:

● 更新数据库状态:

isql -Udboname -Pdbopasswd -Ssystemname < upd_st. sql

至此,基本上完成了数据库用户表的碎片整理工作。

在整理过程中,有以下两点需要注意:

当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。当空间不够时,要考虑用分割table或删除陈旧数据的方法缩小table的大小,或者考虑增加tempdb的大小。

当数据库执行bcp in脚本时会产生大量的log,为保证bcp in进程不致因为log溢出而中断,应该设置 database的选项“truncate log on chkpt”为“true”。

虽然Sybase数据库是自优化的,但只要数据库是动态的,数据库碎片现象就会存在。在OLTP应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。

实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。

⬬ 数据库DBA工作总结 ⬬

死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源,引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交。本文介绍一种处理解决这种死锁的方法。 Sybase封锁原理

数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁机制(LOCKING).

已有的锁 S U X S ∨ ∨ × U ∨ × × X × × × Sybase SQL Server有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下:

Sybase SQL Server是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。

SQL Server有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server试图尽可能地使用页锁。

当SQL Server决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server自动使用表锁。

SQL SERVER加锁有三种状态:

1)意向锁(intend)—是一种表级锁,它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。

2)阻塞(blocking,简记blk)—它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。

3)需求锁(demand)—表示此时该进程企图得到一个排它锁。它可以防止在这一表或页上加过多的S锁,她表示某一事务是下一个去锁定该表和该页的事务。

需求锁是一个内部过程,因此用sp_lock是无法看见的。

简单地说,有两个用户进程,每个进程都在一个单独的页或表上有一个锁,而且每个进程都想在对方进程的页或表上请求不相容锁时就会发生“死锁”。在这种情况下,第一个进程在等待另一进程释放锁,但另一进程要等到第一个进程的对象释放时才会释放自己的锁。

SQL Server检查是否死锁,并终止事务中CPU时间积累最小的用户(即最后进入的用户)。SQL Server回滚该用户的事务,并用消息号1205通知有此死锁行为的应用程序,然后允许其他用户进程继续进行,

在多用户情形下,每个用户的应用程序都应检查每个修改数据的事务是否有1205号消息,以此确定是否有可能死锁。消息号1025表示该用户的事务因死锁而终止并被回滚。应用程序必须重新开始这个事务处理。

既然管理信息系统长时间死锁的原因是由于我们提交或者是提交不当,那么我们就可以通过修改程序防止出现死锁。定位死锁出错处主要经过以下三步:

1)在死锁出现时,用SP_WHO,SP_LOCK获得进程与锁的活动情况。

2)结合库表sysobjects和相应的操作员信息表查出被锁的库表与锁住别人的操作员。

3)根据锁定的库表与操作员的岗位,可以估计出程序大约出错处。询问操作员在死锁时执行的具体操作即可完全定位出错处。最后查找程序并修改之。

系统过程sp_who给出系统进程的报告。如果用户的命令正被另一进程保持的锁阻碍,则:

◆status列显示“lock sleep”。

◆blk列显示保持该锁或这些锁的进程标识,即被谁锁定了。

◆loginame列显示登录操作员。结合相应的操作员信息表,便可知道操作员是谁。

Fid spid status loginame origname blk dbname cmd

0 1 lock sleep lm lm 18 QJYD SELECT

0 2 sleeping NULL NULL 0 master NETWORK HANDLER

0 3 sleeping NULL NULL 0 master NETWORK HANDLER

要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server进程id号,用sp_who可以得到锁定与被锁定的spid号:

◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh—共享锁,Ex—排它锁或更新锁,中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。“demand”后缀表明当前共享锁一释放, 该进程就申请互斥锁。

◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。

Fid Spid locktype table_id page row dbname Class context

0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur

0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock

0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur

根据sp_who与sp_lock命令的结果,结合sysobjects和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。

⬬ 数据库DBA工作总结 ⬬

供参考 SQL SERVER11.0.xFORSCOOPENSERVER5 一.安装SCOOpenServer5.0.2PATCH(OS5.0.4以上无需此步骤) OSS437a OSS441a OSS446a 二.建立SYBASE帐号(使用scoadmin) 修改shell文件,增加SYBASEDSQUERYPATH环境变量, 1.shorksh(.profile): SYBASE=安装目录 DSQU

SQLSERVER 11.0.x FOR SCO OPENSERVER 5

一. 安装 SCO OpenServer 5.0.2 PATCH (OS5.0.4以上无需此步骤)

修改shell文件,增加SYBASE DSQUERY PATH 环境变量。

1. sh or ksh (.profile):

PATH    =  $SYBASE/bin:$SYBASE/install:$PATH:

set    path  =  ($SYBASE/bin $SYBASE/install $path .)

三. 系统参数调整。

1. 共享内存。

加入:

将/etc/conf/sdevice.d/aio  文件“N”改为“Y”,

/etc/conf/sdevice.d/suds 文件“N”改为“Y”

在文件最后加入/etc/suds_ctrl -a     (注1)

例:检查SYBASE用户所处组的组号如50(group),则为suds_ctrl -a 50

% tar xvf /cdrom/ebfss/ebf7575.tar

% tar xvf /cdrom/ebfcs/ebf7791.tar

% $SYBASE/install/sybinit   (注4)

注:

1)以sybase登录,使用id命令可以得到group id或通过 cat /etc/passwd | grep sybase 得到。

2)若安装SQL Server 过程中boot server时出现下面错误(可检查errorlog文件):ulinitspinlock:allocate mutex lock failed则是因为在执行suds_ctrl时SYBASE用户组的组号不对,重新执行suds_ctrl即可。

3)#号为使用root用户进行操作,%号为使用sybase用户操作。

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

修改shell文件,增加SYBASE DSQUERY PATH 环境变量。

1. sh or ksh (.profile):

PATH    =  $SYBASE/bin:$SYBASE/install:$PATH:.

set    path  =  ($SYBASE/bin $SYBASE/install $path .)

% cd $SYBASE/init/sample_source_files

注:

1)#号为使用root用户进行操作,%号为使用sybase用户操作,

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

以root 登录:

创建sybase用户及用户组(useradd,groupadd或linuxconf)

#mount /mnt/cdrom (#mount -t iso9660 /dev/cdrom /mnt/cdrom)

# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-common-11.9.2-1.i386.rpm

# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-ase-11.9.2-1.i386.rpm

以sybase登录安装 ASE 11.9.2:

编辑用户登录文件:

Export SYBASE DSQUERY LD_LIBRARY_PATH LANG

--编辑源文件(/init/sample_resourde_files/srvbuild.adaptive_server.rs,

/init/sample_resourde_files/srvbuild.backup_server.rs)

将源文件拷贝到备用目录/usr/sybase/user中:

$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/ase.rs

$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/backup.rs

$srvbuildres -r /usr/sybase/user/ase.rs

$srvbuildres -r /usr/sybase/user/backup.rs

在root用户登录文件中加入以下语句:

(以bash用户,.bash_profile为例,更改系统内存值为60M)

echo “62914560” > /pro/sys/kernel/shmmax

⬬ 数据库DBA工作总结 ⬬

通过分析虚拟企业的特点以及目前知识管理系统的现状,研究了网格环境下虚拟企业的知识管理模式及其若干关键问题,并就如何实现协作式信息资源和企业知识的'管理和应用提出了初步解决方案,最后给出了基于网格技术的虚拟企业知识管理系统框架.

作 者:薛春芳 张劲松 Xue Chunfang Zhang Jinsong  作者单位:中南民族大学,武汉,430073 刊 名:情报杂志  PKU CSSCI英文刊名:JOURNAL OF INFORMATION 年,卷(期): 25(4) 分类号:G35 关键词:网格环境   虚拟企业   知识管理   系统框架  

⬬ 数据库DBA工作总结 ⬬

Waterxp 从oracle版本转化为sqlserver版本

为了oracle版本和sqlserver版本能很方便的转化,也为了两个版本能同步修改,特别是业务逻辑层,现决定如下:

A,两个版本的业务逻辑层都放在source目录下。在该目录下有两个目录:

sql 和ora。这两个目录有三个文件:

common.pbl ,water_modi.pbl,dw_version.pbl。

这三个 文件里面绝大部分是数据窗口,主要是因为sql server 和oracle的语法有差别。如果只是因为数据窗口有双引号在sql server里不能用,那么把数据窗口的select语法的字段引号去掉即可,因为没有引号的select语句在sql server和oracle下面都是可用的。修改的过程中注意update属性。

B,不同的数据库将使用不同的目录。

每台机器上建立下面的磁盘映射:

V  指向 \oraservr ql237 或者是 \oraserver\ora237

源代码在 \oraserver\code\water237 ource 里面。

P盘是肯定要有的, V盘由使用什么版本决定。

业务层的修改尽可能的在源代码处,因为这样修改能让两个版本同时修改。

P盘是类库可以不需要修改。

V盘里的数据窗口都需要改。

改sql237里面的数据窗口,要修改和要注意的地方:

oracle里面使用                     sql server 里面使用

to_char(readingdate,’yyyymm’)     convert(char(6),readingdate,111)

to_char(readingdate,’yyyy/mm’)     convert(char(7),readingdate,112)

decode( , , , ,)              case when then end 或者 isnull(x,0)

左右连接 (+)                  left outer join

修改过程中要注意数据窗口的update属性,

4,1先修改sql237目录下的三个pbl里面的数据窗口的语法。为了照顾数据窗口的update属性,建议使用edit source的方法,而且select语法字段的引号在sql server版本建议去掉。使用pb的replace功能即可。

4,2 修改某些数据窗口的内嵌式sql 的语法。因为有一些内嵌式sql 也使用了decode() ,或者是to_char(),这些语法在sqlserver也是必须代替的。

修改方法:

…………………case when then end ………..;

4,3 最后的工作是测试。这是最繁琐的最重要的。在测试的过程会发现有一些数据窗口在sql server不能用:修改方法是将字段的引号去掉或者是移到sql 和ora目录里面的dw_version.pbl文件里面,在那里进行修改。

4,4主要的数据表都已经迁移过来了,名字一样,可能在sql server有一些表的字段不够那么请重新导入一次。主要的存储过程都已经翻译过来,名字不一样。在测试的过程会发现有一些视图没有存在,那么请从oracle把语法拷贝出来,在sql server查询分析器里生成之。

⬬ 数据库DBA工作总结 ⬬

昨天帮一个朋友恢复了sql server 7.0 数据库,现在把过程写出来,大家一起分享:

我那个哥们是从别人那拷了一个数据库的数据文件 (c:\mssql7\data 目录下的文件)

最初我是用的:

在一台好的机器上重新安装SQL Server,建立相同的数据库设备(大小),和数据库

停掉SQL Server,用拷贝出来的数据库文件覆盖刚建立的数据库文件,再重新启动

SQL Server。但一直不可以。我猜关键是无法建立相同的数据库设备(大小)。

sp_attach_db_single_file // 附加数据库的单个文件到服务器

EXEC sp_attach_single_file_db 'pubs', 'e:\data\pubs.mdf'

sp_attach_db @dbname=“conmis2000”,@filename1=“d:

数据库DBA工作总结(热门16篇)_数据库DBA工作总结

时间:2022-10-09 赵老师教案网

数据库DBA工作总结(热门16篇)。

⬬ 数据库DBA工作总结 ⬬

互联网的迅猛发展,使网上遍布了成千上万的各类高性能计算机,如何更好地扩展和利用这些网络资源已成为一个重要研究方向,这正是网格计算的发展前景所在,

网格计算作为新一代的分布式计算方法,与传统分布式计算的主要区别在于在没有集中控制机制的情况下,通过对计算资源进行大规模共享,满足应用对高性能计算要求,并且这种对计算资源进行大规模共享是动态的、柔性的、安全的和协作式的。

网格安全问题是网格计算中的一个核心问题。我们都知道,安全与便利是一对矛盾的结合体。因为在保证网格计算安全性的同时,还必须要尽量方便用户和各种服务的交互与使用。在设计网格安全机制时特别要考虑网格计算环境的动态主体特征及复杂性。要保证网格计算环境中不同主体之间的相互鉴别和各主体间通信的保密性和完整性。基于以上原因,在网格计算环境中,安全问题比一般意义上的网络安全问题的覆盖面更广。在网格环境中,客户机位于不同的地理空间和组织,为保证网格实体(用户、资源和程序)之间的通信安全、防止篡改、实现组织中安全机制方面的互操作性。就需要具备有一个统一的网格安全基础设施, GSI(Grid Security Infrastructure)正是一个解决网格计算中安全问题的一个集成方案。

GSI为网格计算环境提供了一系列的安全协议、安全服务、安全SDK和命令行程序。GSI可以提供在网格计算环境中的安全认证,支持网格计算环境中主体之间的安全通信,防止主体假冒和数据泄密;为网格通信提供保密性、完整性和回放保护,及为网格用户提供单点登录和权限委托的能力。另外,GSI还可以用来对网格实体的身份进行验证,来确定该实体允许执行哪些操作。这些安全技术都能有效地保证网格计算环境的安全性和方便性。

GSI是保证网格计算安全性的核心。它支持用户代理、资源代理、认证机构和协议的实现。它向上提供一系列的安全协议,向下支持各种安全机制和技术。GSI采用GSS-API(Generic Security Service application programming interface) 作为其安全编程接口。提供了通用的安全服务,支持应用程序在源码级的可移植性。它在面向主体间安全鉴别和安全通信操作基础上,提供获得证书、执行安全鉴别、签署消息和加密消息等功能。

GSI的实现符合IETF提出的用于安全系统的标准(GSS-API),它主要集中在网络的传输层和应用层,并强调与现有分布式安全技术的融合。在公钥加密体系的基础上,充分利用现有的网络安全技术,对某些功能进行扩展,使得GSI可以支持单点登录。从而,在网格计算环境下提供一个一致的安全性界面,方便了网格的开发和使用。

实施网格安全策略必须集中于域间相互作用和映射域间操作。对单一信任域内的操作可通过Kerberos 和SSH方法。对每个信任域,都要有一个从全局到局部主体的映像。位于不同信任域的实体间的操作要求相互鉴别,

一个被鉴别的全局主体映像为一个局部主体时,被看作等同于局部主体的本地认证。在一个通用的计算环境中,主体和对象必须包含组内所有计算的实体。一个计算包括许多过程,每个过程代表一个用户。其中对象包括可用于网格环境中的大范围的资源。

基于GSI的安全策略是通过通用安全服务编程接口GSS-API、安全认证管理和用户代理的实现三个方面来体现的。在GSI中,着重解决的是安全的认证问题。

GSI通过创建用户代理、代理分配资源、进程分配资源、映射权限四种安全操作协议,充分体现了网格的解决方案。全局命名(证书)和代理证书使得用户对所有的访问资源只进行一次认证。代理证书和委托技术允许一个进程来代表用户访问资源。在GSI的安全策略和单一登录机制的基础上,构建一个网格安全体系,该体系结构体现了用户、资源和过程的鉴别,它支持用户到资源、资源到过程、过程到资源、过程到过程的鉴别。及与本地策略的相互协作及对不同资源的动态请求。

安全认证是对请求者与接受者双方进行身份验证的一个过程,是在SSL上进行的一个成功的安全认证,可以校验一个请求连接的合法性,并为其后的双方通信提供一个会话密钥。GSI的安全认证是基于用户的私钥创建一个代理,从而为用户提供认证方法。用户如果没有创建这个代理,就不能提交作业,也不能传输数据。(编程入门网)

GSI认证(certificates)的一个关键是认证证书。在网格计算环境中的每个用户和服务都需要通过认证证书来验证身份,GSI证书采用了X.509的证书格式。主体名称(subject name)是用来明确认证证书所表示的人或其它对象。主体的公钥(public key)来自于X.509 认证签署证书的认证中心。标识则记录了认证中心的名称。签署证书的认证中心的数字签名是可用来确认认证中心的合法性。

在相互认证进行之前,双方要相信彼此的认证中心。双方有彼此认证中心自身的证书,就可以确保双方由认证中心签署的证书具有合法性。双方主体都获得了证书,而且都信任彼此的认证中心后,则双方可相互明确彼此的身份,这就是相互鉴别(mutual authentication)的过程。GSI采用SSL( Secure Sockets Layer)协议作为它的相互认证协议。

网格安全问题是网格计算中的核心问题。网格计算的特点是网格计算会将现有的各种标准协议有机地融合起来,从而在网格计算中将协议和技术集成起来。网格系统和应用中的每个用户和服务,要求所有的安全标准,包括安全认证、安全身份相互鉴别、通信加密以、私钥保护及委托与单点登录,都能在网格计算环境中通过认证证书来验证身份。提供一个较好的认证解决方案,可以使用户,包含用户计算的过程以及该过程使用的资源都可以证明彼此的身份。

认证是形成安全政策的基础,它可以使各个局部安全策略都被集成为一个全局的框架。从而更加有利于网格实体之间实现安全的通信。

⬬ 数据库DBA工作总结 ⬬

1、课题名称

SQL Server 20xx数据库课程网站

2、课题目的

本网站依据开发要求主要应用于网站教学管理,完成对日常的教育工作中教学大纲发布,通知发布、课件发布、作业发布、学生在线自测、在线答题等的数字化管理。开发本系统可比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少极大地节约教学成本,加快查询速度、加强管理以及国家各部门关于信息化的步伐,使各项管理更加规范化。 2.1面向对象

该网站主要面向的对象是所有有需求的用户,本院的学生都可以在其上面下载课件,在线测试和留言。该网站的系统管理员可以进行用户管理,系统信息的维护等工作。老师则拥有权限可以上传课件,上传和发布作业,查看学生提交的作业,查看学生在线考试的分数记录,回答学生留言板的问题。该网站也不排除其他人员对网站的访问,同样可以对该网站自由的访问和操作。

2.2课程背景

随着计算机在中国的广泛普及,数值化管理手段的逐步完善,越来越多的学生逐渐习惯于是用信息化手段进行学习信息,这样也方便的老师使用信息化手段对学生进行管理。而信息化应用在教学管理中的应用是实现教学管理科学化、现代化的关键。因此,该网站为本书店提供了搞笑,准确,快速的管理模式,实现管理规范化、科学化。

3、项目概述

3.1网站需求分析

中国教育历来有重视质量的传统,形成了一整套行之有效的方法,要组织力量进行深入研究并加以发扬光大,形成中国教育的独特优势。同时要积极探索提高教育质量的新思路、新途径。树立科学的质量观,形成评价教育质量的新标准。坚持全面推进素质教育,把“成人”与“成才”作为教育质量的根本标准,职业教育和高等教育要把社会和就业市场的认可程度作为衡量教育质量的重要标准。这个标准要根据各级教育的特点予以细化。深化教育教学改革,推动各级各类教育的培养模式、课程体系、教学内容和教学方法的`改革与创新,利用新的方法和技术革新。特别是把教育的信息化作为提高教育质量的新手段,不仅是把硬件系统建立起来,更重要的是要在教学中广泛地应用起来。 3.2网站构架

前台主要包括导航栏(首页、相关新闻、课程标准、电子教案、教学课件、测试题库、课程论坛)、公告栏(包括公告通告、学校要闻、相关新闻、热帖、

后台包括信息管理(包括信息管理、公告管理)、课件管理(包括课件的添加管理、显示管理)、回复管理(帖子的回复管理、删除管理、热帖的显示管理)、管理员管理(查看会员信息、查看留言及回复)、权限管理(管理员增加、管理员修改、管理员删除)。

3.3主要内容及功能:本网站系统功能主要分为五大类:

(1)教学大纲和通知部分:教学大纲单独设计页面。通知和新闻发布部分在要在首页显示,发布通知是管理员的权限。

(2)课件发布系统:管理员可以发布课件,课件管理。老师可以上传课件。学生可以下载网上发布后的课件。

(3)作业发布系统:老师可以上传作业发布,学生可以下载作业,管理员拥有管理作业和删除以前老师发布的作业权利(防止积累过多)。

(4)网上测试系统:在线自测(题目全为选择题),有题库管理系统随机生成,每套题目有50道题目组成,在试卷的管理中随机生成的试卷分等级比如分简单和较难的试题(这些要在生成前学生选择的)

(5)论坛系统学生可以提交问题,然后由老师或者其他同学进行回答。学生对问题进行回复,编辑,删除等操作在管理员对其进行检查后显示,老师可以及时进行解答。

图3-1后台信息管理功能图

(6)实训案例系统:管理员可以发布作品和管理。老师可以上传一些学生的优秀作品,学生可以下载发布出的作品。

本系统性能力易于使用,具体有较高的扩展性和可维护性。这就需求数据库结构能充分满足各种信息的输入与输出,实现有组织地动态地存储大量关联数据,方便用户访问系统中的数据,它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。

4、项目特点

该网站是一个操作使用简单,界面漂亮美观的网站。具有以下特点: (1)简洁美观的操作界面

简单的操作界面能够大大的提高用户的操作速度,从而提高服务效率,使顾客节约一定的时间。因此美观又简单的操作界面使用户感觉舒适,该网站通过专业美工的精心打造,与学校网站具有相同的风格,给用户带来亲切感,从而避免在视觉带来的异样。 (2)科学的管理模式

系统采用科学的管理模式,管理员可以更好的了解用户需要什么,替用户轻松的完成需要整理信息:结构化管理模式,涵盖了新闻管理、电子教案编辑、用户管理、教学课件管理等等,为该网站的电子化管理提供了一套良好的管理模式。 (3)对外的开放性

通过数据库课程网站,比较低的成本实现优质教育教学资源的共享,打破现有的教育教学质量受制于教学资源不足的瓶颈,通过免费为师生提供优质教育教学质量。

(4)信息的整体性

数据库课程包括了教师、学生教材、教学技术手段、教学制度等要素。教学课程建设要考虑完整的课程建设的各个环节,即课堂授课水平、教与学的互动、学生课余的自主学习和实践动手的培养、学业成绩的评价以及教学辅助手段和教学参考书的建设等,要抓住个方面间的关系,关注整体建设而不是局部建设。 (5)师生的互动性

通过建立健全课程网站评价体系,即有效的反馈机制的建设,通过比较校内、校外、甚至国外专家、同行、学生在利用课程网站的建设方案,调查和补充课程

⬬ 数据库DBA工作总结 ⬬

我在sqlserver索引基础知识系列中,第一篇就讲了记录数据的基本格式。那里主要讲解的是,数据库的最小读存单元:数据页。一个数据页是8k大小。

对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。而是变化达到一定数量级后才会作这个操作。这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。

区是管理空间的基本单位。一个区是八个物理上连续的页(即64kb)。这意味着sqlserver数据库中每mb有16个区。

为了使空间分配更有效,sqlserver不会将所有区分配给包含少量数据的表。sqlserver有两种类型的区:

统一区,由单个对象所有。区中的所有8页只能由所属对象使用。

混合区,最多可由八个对象共享。区中八页的每页可由不同的对象所有。

通常从混合区向新表或索引分配页。当表或索引增长到8页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成8页,则对该索引的所有分配都使用统一区进行。

为何会这样呢?

其实很简单:

读或写8kb的时间与读或写64kb的时间几乎相同。

在8kb到64kb范围之内,单个磁盘i/o传输操作所花的时间主要是磁盘取数臂和读/写磁头运动的时间。

因此,从数学上来讲,当需要传输64kb以上的sql数据时,

尽可能地执行64kb磁盘传输是有益的,即分成数个64k的操作。

因为64kb传输基本上与8kb传输一样快,而每次传输的sqlserver数据是8kb传输的8倍。

我们通过一个实例来看有and操作符时候的最常见的一种情况。我们有下面一个表,

createtable[dbo].[member]([member_no][dbo].[numeric_id]identity(1,1)notnull,[lastname][dbo].[shortstring]notnull,[firstname][dbo].[shortstring]notnull,[middleinitial][dbo].[letter]null,[street][dbo].[shortstring]notnull,[city][dbo].[shortstring]notnull,[state_prov][dbo].[statecode]notnull,[country][dbo].[countrycode]notnull,[mail_code][dbo].[mailcode]notnull,[phone_no][dbo].[phonenumber]null,[photograph][image]null,[issue_dt][datetime]notnulldefault(getdate()),[expr_dt][datetime]notnulldefault(dateadd(year,1,getdate())),[region_no][dbo].[numeric_id]notnull,[corp_no][dbo].[numeric_id]null,[prev_balance][money]nulldefault(0),[curr_balance][money]nulldefault(0),[member_code][dbo].[status_code]notnulldefault(''))

这个表具备下面的四个索引:

索引名细节索引的列

member_corporation_linknonclusteredlocatedonprimarycorp_no

member_identclustered,unique,primarykeylocatedonprimarymember_no

member_region_linknonclusteredlocatedonprimaryregion_no

memberfirstnamenonclusteredlocatedonprimaryfirstname

当我们执行下面的sql查询时候,

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

sqlserver会根据索引方式,优化成下面方式来执行。

selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelike'k%'andm.member_no5000)a,--这个查询可以直接使用memberfirstname非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取3次

(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6)b

--这个查询可以直接使用member_region_link非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取10次

wherea.member_no=b.member_no

不信,你可以看这两个sql的执行计划,以及逻辑读信息,都是一样的。

其实上面的sql,如果优化成下面的方式,实际的逻辑读消耗也是一样的。为何sqlserver不会优化成下面的方式。是因为and操作符优化的另外一个原则。

1/26的数据和1/6的数据找交集的速度要比1/52的数据和1/3的数据找交集速度要慢。

selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelike'k%'--1/26数据)a,

(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6andm.member_no5000--1/3*1/2数据)bwherea.member_no=b.member_no

当然,我们要学习sql如何优化的话,就会用到查询语句中的一个功能,指定查询使用哪个索引来进行。

比如下面的查询语句

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(0))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(1))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(membercovering3))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(memberfirstname,member_region_link))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

这里index计算符可以是0,1,指定的一个或者多个索引名字。对于0,1的意义如下:

如果存在聚集索引,则index(0)强制执行聚集索引扫描,index(1)强制执行聚集索引扫描或查找(使用性能最高的一种)。

如果不存在聚集索引,则index(0)强制执行表扫描,index(1)被解释为错误。

总结知识点:

简单来说,我们可以这么理解:sqlserver对于每一条查询语句。会根据实际索引情况(sysindexes系统表中存储这些信息),分析每种组合可能的成本。然后选择它认为成本最小的一种。作为它实际执行的计划。

成本代价计算的一个主要组成部分是逻辑i/o的数量,特别是对于单表的查询。

and操作要满足所有条件,这样,经常会要求对几个数据集作交集。数据集越小,数据集的交集计算越节省成本。

的项目中,竟然出现了滥用聚集索引的问题。看来没有培训最最基础的索引的意义,代价,使用场景,是一个非常大的失误。这篇博客就是从这个角度来罗列索引的基础知识。

使用索引的意义

索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。

使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。

使用索引的代价

索引需要占用数据表以外的物理存储空间。

创建索引和维护索引要花费一定的时间。

当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

创建索引的列

主键

外键或在表联接操作中经常用到的列

在经常查询的字段上最好建立索引

不创建索引的列

很少在查询中被引用

包含较少的惟一值

定义为text、ntext或者image数据类型的列

heaps是stagingdata的很好选择,当它没有任何index时

excellentforhighperformancedataloading(parallelbulkloadandparallelindexcreationafterload)

excellentasapartitiontoapartitionedvieworapartitionedtable

聚集索引提高性能的方法,在前面几篇博客中分别提到过,下面只是一个简单的大纲,细节请参看前面几篇博客。

何时创建聚集索引?

clusteredindex会提高大多数table的性能,尤其是当它满足以下条件时:

独特,狭窄,静止:最重要的条件

持续增长的,最好是只向上增加。例如:

identity

date,identity

guid(onlywhenusingnewsequentialid()function)

聚集索引唯一性(独特型的问题)

由于聚集索引的b+树结构的叶子节点必须指向具体数据。如果你要建立聚集索引的列不唯一,并且你指定的创建的聚集索引是非唯一的聚集索引,则会有以下情况:

如果未使用unique属性创建聚集索引,数据库引擎将向表自动添加一个四字节uniqueifier列。必要时,数据库引擎将向行自动添加一个uniqueifier值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。

⬬ 数据库DBA工作总结 ⬬

1.以 Administrator 身份登录到 Windows NT.

您需要 Administrator 权限来创建、启动和停止服务,

2.打开命令提示符。

3.使用 dbsvc 实用程序创建服务,限制如下:

必须使用 -a 开关来指定 sybase 帐户,使用 -p 开关来指定它的口令。

不能使用 -as 或 -i 开关。

对于个人数据库服务器,可执行文件的名称应当是:

C:Program FilesSybaseSQL Anywhere 9win32dbeng9.exe

对于数据库服务器则是:

C:Program FilesSybaseSQL Anywhere 9win32dbsrv9.exe

您必须使用下列引擎参数:

4.输入要运行的任何数据库文件的完整路径。

该路径应当采取 数据库文件夹 文件名 .db 格式,其中数据库文件夹是 C2 数据库文件夹,其中包括所有其它相关参数。

例如,下列命令行可创建名为 asa_svc 的手工启动的服务,并且引用网络服务器,

它在 sybase 帐户下运行,其口令为sybase_password.它执行下列命令:

⬬ 数据库DBA工作总结 ⬬

本节内容是教育科学出版社《信息技术基础》教材第二章第四节“网络数据库的信息检索”的内容。本节教材分三部分构成,一是概述,教材通过一个简单的实例来体验从网络数据库获取信息的一般过程,目的是为络数据库的基本知识做准备性的铺垫。二是多样化的网络数据库,教材对这部分内容介绍比较多,意在让学生充分体验网络数据库的多样性和学会对各数据库信息的获取方法。三是网络数据库评价,在本章的最后重点安排了网络数据库的评价,目的是进一步提醒教师,在信息获取活动中,要培养学生及时、科学地评价信息的习惯,这是提高获取信息资源质量的关键,也是积累信息获取经验的关键一环。在本课教材访问丰富多彩的数据库这个模块中,应适当引导学生对资源进行点评,引导学生探索数据库这一现代信息管理手段的特点,为第七章中数据库知识的学习打下基础。

⑴虽然学生在初中有信息课,但是作为副科没有参加升学考试,所以学生在课堂上多数的时间是玩游戏、聊天,没有纠正学习这门课程的学习态度。初中学生上了高中后,其信息技术意识层次不齐,这就要教师有计划培养学生的信息技术意识。

⑵经过半个学期的学习,高一学生自觉性有所提高一般具备了一定的网络操作技能,这样对于本节课的学习已经有了相关知识上的准备。

4、教学重点与难点:

学习重点:网络数据库的理解、网络数据库的多样性、网络数据库信息的检索

学习难点:对网络数据库信息的检索、学生要用科学的评价方式判断所得信息的准确性

教学过程实质上是学生主动学习的过程,强调激发学生的兴趣,力求形成学生强烈的学习动机和乐学、善学的学习态度。本节是采用任务驱动法导入新课,采取合作探究法解决提出的任务,对于同学们的作答采取了赏识教育法树立大家的自信心。再利用提问启发法去发现新的问题,从而导入本节的内容。在新课网络数据库简介中,我采用了列举法和图表法加深对网络数据库概念的理解。网络数据库信息检索的一般过程和数字城市的介绍上都分别用了演示学习法,演示具体的各个操作步骤。网络数据库信息检索的一般过程和教育资源库的使用,都采取小组分工制合作探究法解决提出的任务。

教学指导在于提高学生的个性发展和全面发展。通过本节教学,主要使学生掌握以下几种学习方法:

同学们通过前面的学习,已学会了上网查找信息并能从网上将信息下载到本地计算机,幻灯片展示任务:

设置这三个任务的目的有2个:第一:激发学生的兴趣:“神六”的成功发射是中华民族值得骄傲的一件事情,以它为主题可以充分激发学生的探索欲望。第二:a、b项任务设置是对前面内容的复习,对c项任务设置是为了逐步导入本节的新课内容。

学生操作:学生二个为一组上网搜索合作探究完成任务(三分钟)。

信息反馈:通过大家的操作,我们可以发现a、b项任务同学们用前面所学的常规搜索引擎输入关键字的方法基本上都能找到完成,第三个任务如果还用搜索引擎查找,查找的结果就很不统一,很多同学都没有能找出来。

操作指导:这时我示意同学们如果觉得任务有困难可以先放一放,也不急于公布第三个任务的答案,使用提问启发法、发现问题法、解决问题法,导入本节新课

提问:为什么我们很多同学找不到第三个问题,而大家又是如何找到问题a和b,是如何搜索到的?

学生答:常规搜索网站:ggle、baidu、ss等搜索引擎网站。

缺点:内容有不准确性、结果重复,有许多不存在的网站,并不是所有内容都能查到。

提问:既然并不是所有的内容都能在常规搜索网站查到,且在常规搜索网站找到的内容有些又存在不准确性,有什么解决的办法呢?比如课本P31提供一则资料碰到的也是这样的问题,周小波又是如何解决的?

三个提问环环相扣,整个过程以学生为中心,让学生自己发现问题,解决问题。对学生的回答,老师首先要持肯定、鼓励的态度:正确的回答,要使用赏识法大力表扬树立大家的自信心,不完整或不准确的回答要委婉的指出,以免挫伤学生的积极性。在引导学生回答问题时,尽可能的给学生较多的发言机会,活跃课堂氛围,努力培养学生的兴趣,激发他们的学习热情。

根据同学的作答,导入本节的一个内容,也是本节的`重点之一。

课本只是讲述了数据库的重要性,对网络数据库的概念只是一笔带过。提供足够的资料让同学充分理解网络数据库概念。资料包括概念的列举和图表的展示:

网络数据库主要是指那些经过精心组织的提供网络访问的数据库,有专门负责人整理相关数据库,局限于某个专题的内容,针对某种特殊信息需求,以后台数据库为基础,用交互网页的形式展现在我们面前。比如关于图片、程序、驱动、小说、地图等内容的网络数据库。

简单地说,一个网络数据库就是用户利用浏览器作为输入接口,输入所需要的数据,浏览器将这些数据传送给网站,而网站再对这些数据进行处理。例如,将数据存入数据库,或者对数据库进行查询操作等,最后网站将操作结果传回给浏览器,通过浏览器将结果告知用户。

在我们的生活中回经常碰到这样的问题,检查银行帐户、股票价格、利率、实现电子商务等等。这些功能是用HTML编写的网页是无法做到的,因为用HTML无法完成交互功能,要做到这些,使用网络数据库技术。

提问:能否用网络数据库解决我们上课时候提出的第三个任务?(利用设问的形式告诉同学们答案是可以的)

提问:能否用数据库解决我们上课时候提出的第三个问题?

演示神州六号发射的时间在当年的农历时间:

我们先打开baidu 输入关键字“万年历” 打开相关的数据库网站

⬬ 数据库DBA工作总结 ⬬

DB2 UDB版本8使用“Windows Installer”技术安装,因此跟先前版本的安装和卸载有了很大的改变,

尽管在Windows操作系统上有四种方式可以卸载DB2 UDB版本8软件,它们并不完全一样。在卸载时应该首先考虑首选卸载方法。 剩下的方法必须在首选卸载方法失败,并且跟DB2 UDB服务人员联系后再尝试使用。

通过Windows控制面板中的添加/删除程序来卸载DB2 UDB 版本8是最好的方式,

根据不同的Windows操作系统,DB2产品在 添加/删除 程序窗口中可能有“删除” 和/或 “改变”按钮。 您可以使用任何一个按钮来卸载DB2。

在DB2卸载的第一个窗口中,“下一步”按钮可能是灰的。这是因为Windows会在后台执行一些程序确保DB2可以被卸载。一旦Windows Installer可以继续处理,“下一步”按钮会变为可用状态,您可以点击“下一步”继续后面的操作。

如果DB2卸载失败,您可以联系DB2服务人员,以便获取得到卸载日志和跟踪文件的方法,以便进一步确定问题的原因。

下面的卸载方法只应该在首选卸载方法失败的情况下使用。

⬬ 数据库DBA工作总结 ⬬

一、磁盘数据组织结构 在INFOR MI X-OnLine的磁盘数据组织结构中的最上层为逻辑概念上的 数据库 空间dbspace,每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,镜像数据存储块mirror保证当根数据存储块故障时,OnLine能够继续工作,每一个数据

在INFORMIX-OnLine的磁盘数据组织结构中的最上层为逻辑概念上的数据库空间dbspace,每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,镜像数据存储块mirror保证当根数据存储块故障时,OnLine能够继续工作。每一个数据存储块都有若干个数据页page组成,为了提高输入和输出效率,若干个连续的数据页组成数据连续页extent。用户的数据库database和数据表table存储在缺省的或者指定的数据库空间中,数据表的逻辑概念上的存储空间数据表空间tblspace有一个或若个安数据连续页extent组成,数据记录row存放在数据页page中。

为更好的的支持多媒体应用,多媒体数据可以存放在二进制大对象数据页Blobpage中,若干个二进制大对象数据页在此二进制大对象空间Blobspace。 OnLine使用逻辑日志Logicallog、物理日志Physicallog来管理数据库日志操作。

INFORMIX-OnLine的数据存放在物理上连续的数据存储块chunk中,数据存储块是OnLine数据存储的最大的物理单位。数据存储块可以有两种构造方法,其一是直接构造在系统的物理磁盘上,其二是构造在操作系统的文件或者卷上。

在第一种情况下,在操作系统上仅仅定义了这个(块)磁盘但没有格式化这个(块)磁盘,因此在这上面的所有数据操作都有OnLine来完成,操作系统对它不存在任何管理,数据空间在物理磁盘上连续,这种数据的存储空间称为原始空间rawspace。

而在第二种情况下,操作系统不仅定义了这个数据存储空间(文件),还管理这个数据存储空间(文件),数据文件操作时的内存缓冲、输入与输出。数据空间的建立受操作系统的制约,在物理存储上不连续。我们称这种数据存储空间为非原始空间cookedspace。

比较这两种数据的存储空间,原始空间在磁盘上连续,没有操作系统的缓存和制约,非原始空间在磁盘上不连续,存在着操作系统的缓存和操作系统的输入/输出的制约,因此在实际应用中,采用原始空间效率高于非原始空间,由于原始空间与系统设备有关,同时不同操作系统对设备的定义的不一致性,定义非原始空间比定义原始空间来得简单。我们将原始空间所对应的磁盘称原始设备rawdevice,而将非原始空间所对应的操作系统文件称操作系统文件cookedfile。

为了进一步提高数据库运行的效率,我们通常选用字符设备作为存放实际的原始设备,这样在我们输入/输出数据时,可以充分发挥系统的DMA能力。当我们使用原始设备时,可以在同一个原始设备上建立多个数据存储块。通过对数据存储块的参数OFFSET和SIZE的定义,其单位为KB,我们可以定义多个数据存储块在同一个磁盘或磁盘块上,参数OFFSET定义数据存储块的起始位置,参数SIZE定义数据存储块的大小,用户在设置参数OFFSET和SIZE时必须保证在物理磁盘上没有相互覆盖。

在原始设备/dev/rdsk/c0t1d1s0上建立三个数据存储块chunk1、chunk2和chunk3,它们的大小分别为50MB、30MB和50MB,由于chunk的SIZE单位为KB,因此chunk1、chunk2和chunk3的SIZE分别为50000、30000和50000。在通常情况下,第一个数据存储块chunk1的OFFSET为0,这样第二个数据存储块chunk2的OFFSET应为第一个数据存储块chunk1的SIZE,而第三个数据存储块chunk3的OFFSET则为第二个数据存储块chunk2的OFFSET加上第二个数据存储块chunk2的SIZE。为保证在两个数据存储块的相邻边界处不发生重叠,可以将后一个数据存储块的起始位置稍微挪后一点。如果采用操作系统文件作为数据存储空间时,一般不在一个文件中建立多个数据存储块。一个文件中建立多个数据存储块,操作系统对文件中数据的定位时间将更长。

不管是原始设备还是非原始设备,OnLine的概念是一致的。在实际应用中,可以一部分数据存储块用原始设备而另一部分用非原始设备,只是原始设备采用OnLine的管理的I/O机制,而非原始设备采用操作系统unix的I/O机制。

INFORMIX-OnLine在数据存储块中以数据页page为单位来组织存放数据,并以数据页为单位来输入输出数据,它的大小与数据在共享内存中数据缓冲区相一致,所以OnLine的数据页的大小是不可以改变的。数据页是OnLine组织存放数据的最小的物理单位。

根据不同从操作系统,OnLine的数据页的大小是不同的。例如在SCO、AT&T、UNISYS和HP等操作系统平台上,每一个数据页的大小为2KB,而在IBM和SEQUENT等操作系统平台上,每一个数据页的大小则为4KB。同时数据在共享内存中的缓冲区的大小也是根据操作系统的不同而不同,其值与数据页的大小一致。

为提高数据操作的效率,OnLine将若干个在物理磁盘上连续的数据页组成一个数据连续页extent。当用户创建一个数据表时,OnLine以数据连续页为单位在数据存储块中分配一块连续的空间,当用户的数据写满了这个数据连续页后,OnLine将以数据连续页为单位在数据存储块中申请一块连续空间,以存放更多的用户数据。在缺省情况下,初始化时第一个数据连续页为8个数据页。

数据连续页不能跨越数据存储块,当OnLine需要申请较多的数据页构成数据连续页时,如果OnLine找不到如数的在物理设备上连续的数据页时,OnLine将放弃这些不够构成一个数据连续页的数据页,OnLine将去下一个数据存储块去申请如数的在物理设备上连续的数据页。因此在实际系统中,过小的数据存储块将不利于数据操作性能和数据存取效率。

在INFORMIX-OnLine的磁盘数据组织中,数据库空间dbspace处于一个比较上层的位置。数据库空间是数据库在逻辑概念上的存储空间,一个或若干个数据库空间组成OnLine数据实体。在物理磁盘上,每一个数据库空间总对应于一个或几个数据存储块,在这些与数据库空间对应的数据存储块中,一定有一个数据存储块是根数据存储块,而其它的则是后继数据存储块。从功能上来看,根数据存储块除了具有后继数据存储块能够存储用户数据外,它还具有管理本数据库空间的功能;从数据存储块的保留页来看,根数据存储块具有56个保留页,而后继数据存储块仅有3个保留页。当然不同版本的OnLine在主、后继数据存储块的保留页的数量可能不同,但是根数据存储块需要更多的保留页来保存本数据库空间的定义。

在OnLine初始化后有一个称为根数据库空间rootdbs的数据库空间,它是OnLine系统的第一个数据库空间。当建立根数据库空间时,它的根数据存储块将被建立,所有数据库的日志和所有的定义信息都必须存放在该数据存储块中,它比所有其它根数据存储块的保留页更多。由于数据库日志定义的需要,因此对根数据库空间的根数据存储块的定义尤其重要,关于如何正确地定义根数据库空间的根数据存储块将在后面详细介绍,

为了提高数据库系统运行的效率,INFORMIX新的动态服务器OnLineDynamicServer7.1中引入了临时数据库空间的概念。在没有临时数据库空间的系统中,临时数据将建立的缺省的根数据库空间中,由于临时数据操作需要频繁的增加、删除,会给根数据库空间的数据存储块中造成很多碎片,将导致数据库操作效率的降低;另外当数据库备份时,那些临时数据也一起作备份,从而增加了数据备份量,降低了数据备份的效率。引入临时数据库空间后,用户的临时数据或者数据操作的中间结果将被存放在临时数据库空间中,同时当数据备份时临时数据库空间将不再被备份。

为提高OnLine运行时的数据高可靠性,OnLine在数据存储上引入了数据存储块镜像的机制。OnLine数据存储的镜像是对数据存储块而言的,但是其定义是对数据库空间的。当一个数据库空间被定义为镜像时,它下面的所有数据存储块全部镜像;当一个数据库空间被定义成没有镜像的时候,它下面的所有数据存储块全部没有镜像。

当OnLine在运行时,一旦数据存储块所在的物理磁盘发生读写故障,对于没有数据库空间没有镜像的系统,OnLine将自动关闭,并等待恢复。而对于具有镜像的数据库空间,OnLine将把存在读写故障的数据存储块标识为Down,同时OnLine将继续运行,用户完全可以根据需要,在适当的时候,恢复存在读写故障的数据存储块所在的磁盘,然后重构继续。因此一个具有镜像的数据库空间,其运行时的可靠性将大大高于不具有镜像的数据库空间。

在逻辑上,数据库存放在数据库空间dbspace中,数据表存放在数据表空间tblspace中。数据库空间是由数据存储块组成,数据表存在于这些数据存储块中,数据表空间是由连续存放该数据表记录的数据连续页组成。

OnLine能高效地执行联机事务处理的第二个机制是数据库服务器系统的共享内存。在一些不使用共享内存的数据管理系统中,管理进程只能在需要数据的时候,将该记录和索引的最新值读入该进程所占有的私用数据缓存中进行操作,由于频繁的磁盘I/O,使系统的运行效率降低,同时由于那些管理进程都各占一份数据缓存,使得系统内存的有效使用率降低。因此使用共享内存会有以下三方面的好处:

(1)数据缓存不再属于某个进程,所有的数据库进程均共享这块内存,降低了磁盘的I/O;

(2)所有数据库进程访问相同的访问,它们的值和索引在内存中只有一份拷贝,提高了内存的有效使用率;

(3)操作的相关记录被预读进共享内存中,由于内存的I/O效率极高,因而系统并发除了数据的能力得到提高。

随着OnLine功能和性能的不断提高,OnLine的共享内存也有所不同。尤其是INFORMIX的动态服务器OnLineDynamicServer(ODS)在其共享内存的结构上增加了两个功能模块。在OnLine5中,其共享内存仅有一个区域,驻留区Residentportion;动态服务器ODS7.1除了驻留区Residentportion外还增加了虚拟区Virtualportion和通讯区Communicationportion。

操作系统的共享内存参数对数据库服务器的共享内存的定义和建立会产生极大的影响。对INFORMIX来说,数据库服务器的共享内存绝对不能超过操作系统共享内存定义的允许范围。一个OnLine动态服务器7.1的共享内存不能超过操作系统所定义的一个UNIX进程所允许访问共享内存的极大值,由于操作系统对共享内存的定义往往不能满足OnLine动态服务器7.1的需要,因此,数据库管理员通常需要在建立其数据库应用系统以前,首先调谐操作系统的共享内存参数。

对于OnLine动态服务器7.1来说,操作系统的参数对它们的影响,在共享内存锁资源管理方面和虚拟处理器对共享内存访问操作方面是不全部相同的。它们对操作系统参数的要求也是不一样的,因此需要数据库管理员根据产品来决定操作系统的参数,在决定这些操作系统的参数前,请先阅读产品说明文件。例如OnLine动态服务器7.1的$INFORMIXDIR/release/ONLINE_7.1,在这个文件中它向数据库管理员阐述该INFORMIX产品在该机器平台上对操作系统参数的要求。同一种产品在不同的平台上,对该平台操作系统参数的要求非常有可能是不一样的;在同一平台上,同一产品的不同版本对操作系统参数也很有可能是不同的。

OnLine动态服务器7.1采用多进程Multi-processes多线索Multi-treads的数据库服务器机制,将每一个服务器进程根据用户定义分解成若干个线索,每一个线索响应一个用户的设计访问的请求。INFORMIX将每一个进程称作一个虚拟处理器Virtualprocess。

在以前的多处理器系统中,往往将用户的应用程序和系统的处理器CPU对应起来,每一个处理器都分别处理一个用户的应用程序;当应用程序数量多于处理器数目时,应用程序为争夺处理器资源CPU,而引起应用程序在运行时间上的不平衡;同时当应用程序的数量少于处理器数目时,由于一些处理器资源得不到运用而空闲,导致处理器资源运用上的不平衡。一种比较好的方法是将处理器与应用所需要的处理器分离开来,然后由数据库系统来平衡这种需求。在INFORMIX动态服务器中,用户应用程序发出的数据操作请求被称作虚拟处理器的服务器进程所接收,然后OnLine均匀地将这些服务器进程分配到系统实际的处理器CPU上。这样就较好地解决了上面所提到的两种不平衡状态。

在ODS7.1中每一个数据库服务器进程都称作一个虚拟处理器Virtualprocess,简称VP。若干个相同功能的虚拟处理器组成一个虚拟处理器类VirtualprocessClass,简称VPClass,每一个VPClass都表示一种功能的虚拟处理器。OnLine一共有七种虚拟处理器,它们是:

处理器虚拟处理器CPUVP,响应所有用户和OnLine系统对CPU资源的操作和协调。

磁盘输入输出虚拟处理器DiskI/OVP,响应用户和OnLine系统的磁盘输入输出请求,磁盘输入输出处理器分三种,异步输入输出AsynchronousI/O、物理日志输入输出Physical-logI/O和逻辑日志输入输出Logical-logI/O。

网络通讯虚拟处理器NetworkVP,响应用户的网络联接的请求。ODS的网络虚拟处理器有三种,它们分别用于管理tli、soc和ipc三种网络通讯接口。

系统管理虚拟处理器AdminstrationVP,运行OnLine系统管理程序和一些专职程序。

光盘虚拟处理器OpticalVP,当用户运行OnLine/Optical时管理光盘系统的运转。

审计虚拟处理器AuditVP,当用户系统需要一定的运行时数据安全性的时候,审计虚拟处理器在后台帮助检查每一个用户操作的合法性。

杂项管理虚拟处理器MiscellaneousVP,用于管理所有以上虚拟处理器不作的工作。

⬬ 数据库DBA工作总结 ⬬

对于像Sybase这样的大型DBMS系统而言,作为OLTP(联机事务处理)应用的基石,它需要能每天24小时, 每年365天不间断运行,由于其应用程序每天对数据库进行大量的插入、更新、删除等操作,在数据库的物理存储介质上产生了大量存储碎片,从而影响了存储的效率以及数据库应用运行的速度。是否可以像Windows操作系统的“碎片整理”程序一样,整理这些碎片,从而优化数据库存储,提高数据库的运行速度呢?答案是肯定的。本文将介绍Sybase 数据库的碎片类型以及碎片整理方法。 碎片类型

由于Sybase是通过OAM页、分配单元和扩展页来管理数据的,所以对OLTP应用的Database Server会十分频繁地进行数据删除、插入和更新等操作,时间一长就会出现以下几种情况:

即本来可以存放在一个页上的数据却分散地存储在多个页上。如果这些页存储在不同的扩展单元上,Database Server就要访问多个扩展单元,因此降低了系统性能。

在堆表中,当删除数据链中间的记录行时,会出现空页。随着空页的累积,扩展单元的利用率也会下降,从而出现扩展单元碎片。带cluster index的table也有可能出现扩展单元碎片。

当有扩展单元碎片存在,会出现以下问题:

● 对表进行处理时,常常出现死锁;

● 利用较大的I/O操作或增加I/O缓冲区的大小也无法改变较慢的I/O速度;

带有cluster index的table会由于插入记录而导致页分裂,但当删除记录后,页会获得释放,从而形成跨几个扩展单元和分配单元的数据,而要访问该数据就必须遍历几个扩展单元和分配单元。这将导致访问/查询记录的时间大大延长,开始时数据库的性能虽然较高,但使用一段时间后性能就会下降等问题。

实际上,数据在存储空间上排列得越紧密有序,Database Server访问的速度就越快,消除碎片有助于提高系统的性能和更有效地利用数据存储空间。

处理碎片有多种方法,如重新定义table的填充因子,根据table的定义删除并重新创建索引、重建表等。

本文给出的方法是通过BCP实用程序将用户数据库的数据以文本形式导出,然后将用户数据库彻底清空、截断,再将文本数据导入到数据库,从而达到消除碎片的目的,具有通用性。

下面以Sun Solaris 7操作系统下的Sybase Adaptive& nbspServer Enterprise 11.5为例,说明整理数据库数据的具体方法。

为防止在数据库碎片整理过程中出现不可预见的问题,有必要先备份数据库。

● 创建包含下列SQL语句的文件:

elect “bcp” + name + “out ./” + name + “_out.txt -Udboname -Pdbopwd -Ssys_name -c” vfrom sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_bcp_out. sql > b_out

● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_out

● 创建包含下列SQL语句的文件:

elect “truncate table” + name from sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_ trunc_out. sql > trunc_out. sql

● 编辑输出文件,去掉文件第一行和最后两行无关的字符,并在最后一行加入 go构成完整的SQL语句:vi trunc_out

● 执行以下语句,清空数据库的数据:

isql -Udboname -Pdbopwd < trunc_out. sql

● 创建包含下列SQL语句的文件:

elect “bcp” + name + “in ./” + name + “_out.txt& nbsp-Udboname -Pdbopwd -Ssys_name -c”from sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_ bcp_in. sql > b_in

● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_in

Sybase不自动维护索引的统计信息,当用truncate table截断数据库时,索引并没有改变,所以必须用update statistics来确保索引的统计信息对应当前表数据的统计,

● 创建包含下列SQL语句的文件:

elect “update statistics” + name from sysobjects where typ

● isql -Udboname -Pdbopasswd -Ssystemname < cre_upd_st. sql > upd_st. sql

● 编辑输出文件,去掉文件第一行和最后两行无关的字符,在最后一行加入 go构成完整的SQL语句:

● 更新数据库状态:

isql -Udboname -Pdbopasswd -Ssystemname < upd_st. sql

至此,基本上完成了数据库用户表的碎片整理工作。

在整理过程中,有以下两点需要注意:

当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。当空间不够时,要考虑用分割table或删除陈旧数据的方法缩小table的大小,或者考虑增加tempdb的大小。

当数据库执行bcp in脚本时会产生大量的log,为保证bcp in进程不致因为log溢出而中断,应该设置 database的选项“truncate log on chkpt”为“true”。

虽然Sybase数据库是自优化的,但只要数据库是动态的,数据库碎片现象就会存在。在OLTP应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。

实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。

⬬ 数据库DBA工作总结 ⬬

死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源,引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交。本文介绍一种处理解决这种死锁的方法。 Sybase封锁原理

数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁机制(LOCKING).

已有的锁 S U X S ∨ ∨ × U ∨ × × X × × × Sybase SQL Server有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下:

Sybase SQL Server是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。

SQL Server有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server试图尽可能地使用页锁。

当SQL Server决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server自动使用表锁。

SQL SERVER加锁有三种状态:

1)意向锁(intend)—是一种表级锁,它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。

2)阻塞(blocking,简记blk)—它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。

3)需求锁(demand)—表示此时该进程企图得到一个排它锁。它可以防止在这一表或页上加过多的S锁,她表示某一事务是下一个去锁定该表和该页的事务。

需求锁是一个内部过程,因此用sp_lock是无法看见的。

简单地说,有两个用户进程,每个进程都在一个单独的页或表上有一个锁,而且每个进程都想在对方进程的页或表上请求不相容锁时就会发生“死锁”。在这种情况下,第一个进程在等待另一进程释放锁,但另一进程要等到第一个进程的对象释放时才会释放自己的锁。

SQL Server检查是否死锁,并终止事务中CPU时间积累最小的用户(即最后进入的用户)。SQL Server回滚该用户的事务,并用消息号1205通知有此死锁行为的应用程序,然后允许其他用户进程继续进行,

在多用户情形下,每个用户的应用程序都应检查每个修改数据的事务是否有1205号消息,以此确定是否有可能死锁。消息号1025表示该用户的事务因死锁而终止并被回滚。应用程序必须重新开始这个事务处理。

既然管理信息系统长时间死锁的原因是由于我们提交或者是提交不当,那么我们就可以通过修改程序防止出现死锁。定位死锁出错处主要经过以下三步:

1)在死锁出现时,用SP_WHO,SP_LOCK获得进程与锁的活动情况。

2)结合库表sysobjects和相应的操作员信息表查出被锁的库表与锁住别人的操作员。

3)根据锁定的库表与操作员的岗位,可以估计出程序大约出错处。询问操作员在死锁时执行的具体操作即可完全定位出错处。最后查找程序并修改之。

系统过程sp_who给出系统进程的报告。如果用户的命令正被另一进程保持的锁阻碍,则:

◆status列显示“lock sleep”。

◆blk列显示保持该锁或这些锁的进程标识,即被谁锁定了。

◆loginame列显示登录操作员。结合相应的操作员信息表,便可知道操作员是谁。

Fid spid status loginame origname blk dbname cmd

0 1 lock sleep lm lm 18 QJYD SELECT

0 2 sleeping NULL NULL 0 master NETWORK HANDLER

0 3 sleeping NULL NULL 0 master NETWORK HANDLER

要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server进程id号,用sp_who可以得到锁定与被锁定的spid号:

◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh—共享锁,Ex—排它锁或更新锁,中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。“demand”后缀表明当前共享锁一释放, 该进程就申请互斥锁。

◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。

Fid Spid locktype table_id page row dbname Class context

0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur

0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock

0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur

根据sp_who与sp_lock命令的结果,结合sysobjects和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。

⬬ 数据库DBA工作总结 ⬬

供参考 SQL SERVER11.0.xFORSCOOPENSERVER5 一.安装SCOOpenServer5.0.2PATCH(OS5.0.4以上无需此步骤) OSS437a OSS441a OSS446a 二.建立SYBASE帐号(使用scoadmin) 修改shell文件,增加SYBASEDSQUERYPATH环境变量, 1.shorksh(.profile): SYBASE=安装目录 DSQU

SQLSERVER 11.0.x FOR SCO OPENSERVER 5

一. 安装 SCO OpenServer 5.0.2 PATCH (OS5.0.4以上无需此步骤)

修改shell文件,增加SYBASE DSQUERY PATH 环境变量。

1. sh or ksh (.profile):

PATH    =  $SYBASE/bin:$SYBASE/install:$PATH:

set    path  =  ($SYBASE/bin $SYBASE/install $path .)

三. 系统参数调整。

1. 共享内存。

加入:

将/etc/conf/sdevice.d/aio  文件“N”改为“Y”,

/etc/conf/sdevice.d/suds 文件“N”改为“Y”

在文件最后加入/etc/suds_ctrl -a     (注1)

例:检查SYBASE用户所处组的组号如50(group),则为suds_ctrl -a 50

% tar xvf /cdrom/ebfss/ebf7575.tar

% tar xvf /cdrom/ebfcs/ebf7791.tar

% $SYBASE/install/sybinit   (注4)

注:

1)以sybase登录,使用id命令可以得到group id或通过 cat /etc/passwd | grep sybase 得到。

2)若安装SQL Server 过程中boot server时出现下面错误(可检查errorlog文件):ulinitspinlock:allocate mutex lock failed则是因为在执行suds_ctrl时SYBASE用户组的组号不对,重新执行suds_ctrl即可。

3)#号为使用root用户进行操作,%号为使用sybase用户操作。

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

修改shell文件,增加SYBASE DSQUERY PATH 环境变量。

1. sh or ksh (.profile):

PATH    =  $SYBASE/bin:$SYBASE/install:$PATH:.

set    path  =  ($SYBASE/bin $SYBASE/install $path .)

% cd $SYBASE/init/sample_source_files

注:

1)#号为使用root用户进行操作,%号为使用sybase用户操作,

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

以root 登录:

创建sybase用户及用户组(useradd,groupadd或linuxconf)

#mount /mnt/cdrom (#mount -t iso9660 /dev/cdrom /mnt/cdrom)

# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-common-11.9.2-1.i386.rpm

# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-ase-11.9.2-1.i386.rpm

以sybase登录安装 ASE 11.9.2:

编辑用户登录文件:

Export SYBASE DSQUERY LD_LIBRARY_PATH LANG

--编辑源文件(/init/sample_resourde_files/srvbuild.adaptive_server.rs,

/init/sample_resourde_files/srvbuild.backup_server.rs)

将源文件拷贝到备用目录/usr/sybase/user中:

$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/ase.rs

$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/backup.rs

$srvbuildres -r /usr/sybase/user/ase.rs

$srvbuildres -r /usr/sybase/user/backup.rs

在root用户登录文件中加入以下语句:

(以bash用户,.bash_profile为例,更改系统内存值为60M)

echo “62914560” > /pro/sys/kernel/shmmax

⬬ 数据库DBA工作总结 ⬬

通过分析虚拟企业的特点以及目前知识管理系统的现状,研究了网格环境下虚拟企业的知识管理模式及其若干关键问题,并就如何实现协作式信息资源和企业知识的'管理和应用提出了初步解决方案,最后给出了基于网格技术的虚拟企业知识管理系统框架.

作 者:薛春芳 张劲松 Xue Chunfang Zhang Jinsong  作者单位:中南民族大学,武汉,430073 刊 名:情报杂志  PKU CSSCI英文刊名:JOURNAL OF INFORMATION 年,卷(期): 25(4) 分类号:G35 关键词:网格环境   虚拟企业   知识管理   系统框架  

⬬ 数据库DBA工作总结 ⬬

Waterxp 从oracle版本转化为sqlserver版本

为了oracle版本和sqlserver版本能很方便的转化,也为了两个版本能同步修改,特别是业务逻辑层,现决定如下:

A,两个版本的业务逻辑层都放在source目录下。在该目录下有两个目录:

sql 和ora。这两个目录有三个文件:

common.pbl ,water_modi.pbl,dw_version.pbl。

这三个 文件里面绝大部分是数据窗口,主要是因为sql server 和oracle的语法有差别。如果只是因为数据窗口有双引号在sql server里不能用,那么把数据窗口的select语法的字段引号去掉即可,因为没有引号的select语句在sql server和oracle下面都是可用的。修改的过程中注意update属性。

B,不同的数据库将使用不同的目录。

每台机器上建立下面的磁盘映射:

V  指向 \\oraservr ql237 或者是 \\oraserver\ora237

源代码在 \\oraserver\code\water237 ource 里面。

P盘是肯定要有的, V盘由使用什么版本决定。

业务层的修改尽可能的在源代码处,因为这样修改能让两个版本同时修改。

P盘是类库可以不需要修改。

V盘里的数据窗口都需要改。

改sql237里面的数据窗口,要修改和要注意的地方:

oracle里面使用                     sql server 里面使用

to_char(readingdate,’yyyymm’)     convert(char(6),readingdate,111)

to_char(readingdate,’yyyy/mm’)     convert(char(7),readingdate,112)

decode( , , , ,)              case when then end 或者 isnull(x,0)

左右连接 (+)                  left outer join

修改过程中要注意数据窗口的update属性,

4,1先修改sql237目录下的三个pbl里面的数据窗口的语法。为了照顾数据窗口的update属性,建议使用edit source的方法,而且select语法字段的引号在sql server版本建议去掉。使用pb的replace功能即可。

4,2 修改某些数据窗口的内嵌式sql 的语法。因为有一些内嵌式sql 也使用了decode() ,或者是to_char(),这些语法在sqlserver也是必须代替的。

修改方法:

…………………case when then end ………..;

4,3 最后的工作是测试。这是最繁琐的最重要的。在测试的过程会发现有一些数据窗口在sql server不能用:修改方法是将字段的引号去掉或者是移到sql 和ora目录里面的dw_version.pbl文件里面,在那里进行修改。

4,4主要的数据表都已经迁移过来了,名字一样,可能在sql server有一些表的字段不够那么请重新导入一次。主要的存储过程都已经翻译过来,名字不一样。在测试的过程会发现有一些视图没有存在,那么请从oracle把语法拷贝出来,在sql server查询分析器里生成之。

⬬ 数据库DBA工作总结 ⬬

昨天帮一个朋友恢复了sql server 7.0 数据库,现在把过程写出来,大家一起分享:

我那个哥们是从别人那拷了一个数据库的数据文件 (c:\mssql7\data 目录下的文件)

最初我是用的:

在一台好的机器上重新安装SQL Server,建立相同的数据库设备(大小),和数据库

停掉SQL Server,用拷贝出来的数据库文件覆盖刚建立的数据库文件,再重新启动

SQL Server。但一直不可以。我猜关键是无法建立相同的数据库设备(大小)。

sp_attach_db_single_file // 附加数据库的单个文件到服务器

EXEC sp_attach_single_file_db 'pubs', 'e:\data\pubs.mdf'

sp_attach_db @dbname=“conmis2000”,@filename1=“d:\1\conmis2000_data.mdf”,@filename2=“ d:\1\conmis2000_log.ldf”

如何附加数据库文件到服务器(即:通过*.mdf  *ldf 文件修复数据库)

另外查找资料时看到也可以通过日志恢复以前的数据,

用日志恢复:

restore log {data_name|@database_name_var}

with [norecovery\recovery tandby_undo_file_name]

[,][stopat={data_time|@data_time_var}

例如:库名为database1 日志为database1_log 要求恢复2000/6/15 1:00前的数据:

with recovery,stopat='jun 15,2000 1:00 am'

参考书有:<SQL SERVER7.0 系统管理和应用开发指南>(清华大学出版社)

⬬ 数据库DBA工作总结 ⬬

上周有同事对数据库进行了误操作,问我可不可以回到前一天的状态,恢复数据库的问题以前学DB2的时候遇到过,那时我想SQL Server中应该也会有方法把数据库恢复到前一天的。我的机器上ERP的数据库日志从800M增张到了2G,Log增长得这么快,想必是把所有的操作都记录上了。网上找了几天的资料,SQL Server Books Online也看了一个星期,没有找到答案,CSDN上找到一篇从日志恢复数据库的文章同SQL Server Online上面的说明一样写的不清不楚。问了几个公司里资历深一点的同事,都没有找到答案,昨天早晨6点半的时候醒来,想起DB2中的恢复模型,恢复的数据库应该是在恢复点之前的数据库,于是早早就起来,来到办公室,实验了一次,以为会成功,没想到还是没有成功恢复,很沮丧。

研究这个问题都一个星期了,仍然没有解决,整个星期五一天都不好受,想起了Boy,一个新人训时跟我们开交流会的RD leader,

结果还是没有答案,不过Boy很热情,把这个问题转发给了我们的DBA Running,Running好象是搞oracle的,sql server中的这种恢复也不熟悉,不过他说:多从原理方面考虑。

没辄,只好到Microsoft的 上面去找一下,溜达了一圈,有一篇文章提到,最好不要使用Auto close,auto shrink选项,我想可能是这两个选项的问题吧。于是周五下午的时候,又试了一次,SQL Query Analyzer里面运行restore database等了半天都没反应,我只好祈祷能够恢复成功,结果并不如人愿,出来了红色的错误信息,说是数据库存取冲突,原来是SQL Server Enterprise Manager也在使用数据库,于是关了Enterprise Manager,果然顺利恢复了数据库,高兴地快要跳起来。

工作几个月,常常都感觉到理论方面的基础知识不够丰富,一些帮助文档看不懂,或者运行不了的时候,常常都是因为理论基础。一些问题想要去解决常常要花很长的时间,所以以后还是从基础理论入手学习数据库。

⬬ 数据库DBA工作总结 ⬬

这个函数库和 SQL Server 数据库函数库几乎完全相同,实际上是本函数先出现,之后才出现 SQL Server 数据库函数库,

而就用户观点 Sybase 和 MS SQL Server 6.x 也是几乎相同的。当然 MS SQL Server 7.0 之后的差异就比较大了。

取得最后 query 影响的列数。

语法: int sybase_affected_rows(int [link_identifier]);

内容说明: 本函数用来取得最后一次对数据库下 query 指令所影响的列数,会影响的为 INSERT、UPDATE 或 DELETE 等指令,而 SELECT 不会影响。参数 link_identifier 可省略,为打开数据库的连接代号。返回值即为列数。

关闭与数据库的连接。

语法: boolean sybase_close(int link_identifier);

内容说明: 本函数用来关闭与 Sybase 数据库的连接,能关闭的为使用 sybase_connect 函数打开的数据库,若使用 sybase_pconnect() 打开的数据库则不能以本函数关闭。参数 link_identifier 可省略,为打开数据库的连接代号。关闭成功则返回 true 值。

参考: sybase_connect() sybase_pconnect()

连上数据库。

语法: int sybase_connect(string [servername], string [username], string [password]);

内容说明: 本函数用来打开与 Sybase 数据库的连接。参数 servername 为欲连上的数据库服务器名称。参数 username 及 password 可省略,分别为连接使用的帐号及密码。使用本函数需注意早点关闭数据库,以减少系统的负担。连接成功则返回数据库的连接代号,失败返回 false 值。

参考: sybase_close() sybase_pconnect()

移动列指针。

语法: boolean sybase_data_seek(int result_identifier, int row_number);

内容说明: 本函数用来移动 Sybase 资料表中的列指针到指定的列上,可供 sybase_fetch_row() 等函数使用。参数 result_identifier 为查询的代号值。参数 row_number 则为欲移往的列数。若失败则返回 false 值。

参考: sybase_close() sybase_pconnect()

返回数组资料。

语法: array sybase_fetch_array(int result);

内容说明: 本函数用来将查询结果 result 拆到数组变量中,

若 result 没有资料,则返回 false 值。而本函数可以说是 sybase_fetch_row() 的加强函数,除可以将返回列及数字索引放入数组之外,还可以将文字索引放入数组中。

这是 joey@ (22-Feb-) 所提出的例子

$q = sybase_query(“SELECT COUNT(DISTINCT OPPORTUN99vY_ID) FROM M_OPP_INTERESTS WHERE INTEREST_ID = $i_id”, $db);

while ($op_by_int = sybase_fetch_arr

ay($q)) {

while (list($k, $v) = each($op_by_int)) {

echo “$op[$k] => $vn”;

$op[computed] => 2164 sybase_fetch_field

取得字段信息。

语法: object sybase_fetch_field(int result, int field_offset);

内容说明: 本函数返回的类资料为 result 的字段 (Column) 信息。返回类的属性如下:

numeric - 若为 1 表示本字段为数字类型 (numeric)

返回类资料。

语法: object sybase_fetch_object(int result);

内容说明: 本函数用来将查询结果 result 拆到类变量中。使用方法和 sybase_fetch_array() 几乎相同,不同的地方在于本函数返回资料是类而不是数组。若 result 没有资料,则返回 false 值。另外值得注意的地方是,取回的类资料的索引只能是文字而不能用数字,这是因为类的特性。类资料的特性中所有的属性 (property) 名称都不能是数字,因此只好乖乖使用文字字符串当索引了。关于速度方面,本函数的处理速度几乎和 sybase_fetch_array() 及 sybase_fetch_row() 二函数差不多,要用哪个函数还是看使用的需求决定。

参考: sybase_fetch_array() sybase_fetch_row()

返回单列的各字段。

语法: array sybase_fetch_row(int result);

内容说明: 本函数用来将查询结果 result 之单列拆到数组变量中。数组的索引是数字索引,第一个的索引值是 0。若 result 没有资料,则返回 false 值。

参考: sybase_fetch_array() sybase_fetch_object() sybase_data_seek() sybase_result()

配置指针到返回值的某字段。

语法: int sybase_field_seek(int result, int field_offset);

内容说明: 本函数配置目前的指针到返回值的特定字段中。参数 result 为返回值代码。参数 field_offset 则为指定的字段序数。

释放返回占用内存。

语法: int sybase_free_result(int result);

内容说明: 本函数可以释放目前 Sybase 数据库 query 返回所占用的内存。一般只有在非常担心在内存的使用上可能会不足的情形下才会用本函数。PHP 程序会在结束时自动释放。

取得返回字段的数目。

语法: int sybase_num_fields(int result);

内容说明: 本函数可以得到返回字段的数目。参数 result 为返回值代码。

⬬ 数据库DBA工作总结 ⬬

数据库DBA工作总结



数据库管理员(Database Administrator,简称DBA),是负责管理和维护数据库系统的专业人员。在过去的一段时间里,数据库管理的角色发生了许多改变,主要是由于数据量的增加和技术的进步。以下是我对DBA工作的总结,包括当前的趋势和挑战。



首先,DBA的工作职责涉及数据库的设计、创建、维护和优化。他们负责确保数据库系统的安全性、高可用性和性能。在设计阶段,DBA需要与开发人员密切合作,确定数据库结构和规范。在创建阶段,DBA需要根据需求创建数据库实例,并设置适当的权限和访问控制。在维护阶段,DBA负责备份和还原数据库,监控数据库性能,以及处理数据库故障和数据恢复。在优化阶段,DBA需要分析数据库的性能瓶颈,并提供相应的优化建议。



其次,随着云计算和大数据的发展,DBA的角色也有所改变。越来越多的组织将数据库迁移到云平台上,这需要DBA熟悉云架构和相应的管理工具。此外,大数据技术的兴起也带来了对DBA的新挑战。DBA需要学习和掌握Hadoop、NoSQL和分布式数据库等技术,以支持组织处理海量数据和实现实时分析。



此外,数据安全和合规性成为DBA关注的重点。随着数据泄露和网络攻击的增加,DBA需要采取相应的安全措施,防止未经授权的访问和数据泄露。此外,隐私法规和合规性要求(DBA)需要确保数据库操作符合相关法律法规,并定期进行安全审核和漏洞修复。



同时,DBA还需要具备良好的沟通和协作能力。他们通常需要与开发人员、系统管理员和其他相关部门合作,解决数据库问题和提供技术支持。因此,DBA需要具备良好的团队合作和解决问题的能力。



未来,DBA的角色将继续演变和发展。随着人工智能和自动化技术的兴起,一些重复性和繁琐的数据库管理任务可能会自动化,这使得DBA将有更多时间专注于数据库设计和优化。此外,随着数据分析和人工智能的需求增加,DBA也需要学习数据科学和机器学习等相关领域的知识。



总结而言,数据库DBA的工作是全面的,在设计、创建、维护和优化数据库方面扮演着重要角色。未来,DBA需要不断学习和适应新的技术趋势,以保持自己的竞争力。此外,与相关部门的协作和沟通能力也是DBA必备的技能之一。 DBA的角色将随着技术的进步和需求的变化不断发展,DBA也应紧跟时代的步伐,不断提升自己的能力和知识水平。

本文来源://www.zjan56.com/jiaoanziliao/136939.html

上一页:玉兰树的祝福的句子(经典74句) \conmis2000_data.mdf”,@filename2=“ d:

数据库DBA工作总结(热门16篇)_数据库DBA工作总结

时间:2022-10-09 赵老师教案网

数据库DBA工作总结(热门16篇)。

⬬ 数据库DBA工作总结 ⬬

互联网的迅猛发展,使网上遍布了成千上万的各类高性能计算机,如何更好地扩展和利用这些网络资源已成为一个重要研究方向,这正是网格计算的发展前景所在,

网格计算作为新一代的分布式计算方法,与传统分布式计算的主要区别在于在没有集中控制机制的情况下,通过对计算资源进行大规模共享,满足应用对高性能计算要求,并且这种对计算资源进行大规模共享是动态的、柔性的、安全的和协作式的。

网格安全问题是网格计算中的一个核心问题。我们都知道,安全与便利是一对矛盾的结合体。因为在保证网格计算安全性的同时,还必须要尽量方便用户和各种服务的交互与使用。在设计网格安全机制时特别要考虑网格计算环境的动态主体特征及复杂性。要保证网格计算环境中不同主体之间的相互鉴别和各主体间通信的保密性和完整性。基于以上原因,在网格计算环境中,安全问题比一般意义上的网络安全问题的覆盖面更广。在网格环境中,客户机位于不同的地理空间和组织,为保证网格实体(用户、资源和程序)之间的通信安全、防止篡改、实现组织中安全机制方面的互操作性。就需要具备有一个统一的网格安全基础设施, GSI(Grid Security Infrastructure)正是一个解决网格计算中安全问题的一个集成方案。

GSI为网格计算环境提供了一系列的安全协议、安全服务、安全SDK和命令行程序。GSI可以提供在网格计算环境中的安全认证,支持网格计算环境中主体之间的安全通信,防止主体假冒和数据泄密;为网格通信提供保密性、完整性和回放保护,及为网格用户提供单点登录和权限委托的能力。另外,GSI还可以用来对网格实体的身份进行验证,来确定该实体允许执行哪些操作。这些安全技术都能有效地保证网格计算环境的安全性和方便性。

GSI是保证网格计算安全性的核心。它支持用户代理、资源代理、认证机构和协议的实现。它向上提供一系列的安全协议,向下支持各种安全机制和技术。GSI采用GSS-API(Generic Security Service application programming interface) 作为其安全编程接口。提供了通用的安全服务,支持应用程序在源码级的可移植性。它在面向主体间安全鉴别和安全通信操作基础上,提供获得证书、执行安全鉴别、签署消息和加密消息等功能。

GSI的实现符合IETF提出的用于安全系统的标准(GSS-API),它主要集中在网络的传输层和应用层,并强调与现有分布式安全技术的融合。在公钥加密体系的基础上,充分利用现有的网络安全技术,对某些功能进行扩展,使得GSI可以支持单点登录。从而,在网格计算环境下提供一个一致的安全性界面,方便了网格的开发和使用。

实施网格安全策略必须集中于域间相互作用和映射域间操作。对单一信任域内的操作可通过Kerberos 和SSH方法。对每个信任域,都要有一个从全局到局部主体的映像。位于不同信任域的实体间的操作要求相互鉴别,

一个被鉴别的全局主体映像为一个局部主体时,被看作等同于局部主体的本地认证。在一个通用的计算环境中,主体和对象必须包含组内所有计算的实体。一个计算包括许多过程,每个过程代表一个用户。其中对象包括可用于网格环境中的大范围的资源。

基于GSI的安全策略是通过通用安全服务编程接口GSS-API、安全认证管理和用户代理的实现三个方面来体现的。在GSI中,着重解决的是安全的认证问题。

GSI通过创建用户代理、代理分配资源、进程分配资源、映射权限四种安全操作协议,充分体现了网格的解决方案。全局命名(证书)和代理证书使得用户对所有的访问资源只进行一次认证。代理证书和委托技术允许一个进程来代表用户访问资源。在GSI的安全策略和单一登录机制的基础上,构建一个网格安全体系,该体系结构体现了用户、资源和过程的鉴别,它支持用户到资源、资源到过程、过程到资源、过程到过程的鉴别。及与本地策略的相互协作及对不同资源的动态请求。

安全认证是对请求者与接受者双方进行身份验证的一个过程,是在SSL上进行的一个成功的安全认证,可以校验一个请求连接的合法性,并为其后的双方通信提供一个会话密钥。GSI的安全认证是基于用户的私钥创建一个代理,从而为用户提供认证方法。用户如果没有创建这个代理,就不能提交作业,也不能传输数据。(编程入门网)

GSI认证(certificates)的一个关键是认证证书。在网格计算环境中的每个用户和服务都需要通过认证证书来验证身份,GSI证书采用了X.509的证书格式。主体名称(subject name)是用来明确认证证书所表示的人或其它对象。主体的公钥(public key)来自于X.509 认证签署证书的认证中心。标识则记录了认证中心的名称。签署证书的认证中心的数字签名是可用来确认认证中心的合法性。

在相互认证进行之前,双方要相信彼此的认证中心。双方有彼此认证中心自身的证书,就可以确保双方由认证中心签署的证书具有合法性。双方主体都获得了证书,而且都信任彼此的认证中心后,则双方可相互明确彼此的身份,这就是相互鉴别(mutual authentication)的过程。GSI采用SSL( Secure Sockets Layer)协议作为它的相互认证协议。

网格安全问题是网格计算中的核心问题。网格计算的特点是网格计算会将现有的各种标准协议有机地融合起来,从而在网格计算中将协议和技术集成起来。网格系统和应用中的每个用户和服务,要求所有的安全标准,包括安全认证、安全身份相互鉴别、通信加密以、私钥保护及委托与单点登录,都能在网格计算环境中通过认证证书来验证身份。提供一个较好的认证解决方案,可以使用户,包含用户计算的过程以及该过程使用的资源都可以证明彼此的身份。

认证是形成安全政策的基础,它可以使各个局部安全策略都被集成为一个全局的框架。从而更加有利于网格实体之间实现安全的通信。

⬬ 数据库DBA工作总结 ⬬

1、课题名称

SQL Server 20xx数据库课程网站

2、课题目的

本网站依据开发要求主要应用于网站教学管理,完成对日常的教育工作中教学大纲发布,通知发布、课件发布、作业发布、学生在线自测、在线答题等的数字化管理。开发本系统可比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少极大地节约教学成本,加快查询速度、加强管理以及国家各部门关于信息化的步伐,使各项管理更加规范化。 2.1面向对象

该网站主要面向的对象是所有有需求的用户,本院的学生都可以在其上面下载课件,在线测试和留言。该网站的系统管理员可以进行用户管理,系统信息的维护等工作。老师则拥有权限可以上传课件,上传和发布作业,查看学生提交的作业,查看学生在线考试的分数记录,回答学生留言板的问题。该网站也不排除其他人员对网站的访问,同样可以对该网站自由的访问和操作。

2.2课程背景

随着计算机在中国的广泛普及,数值化管理手段的逐步完善,越来越多的学生逐渐习惯于是用信息化手段进行学习信息,这样也方便的老师使用信息化手段对学生进行管理。而信息化应用在教学管理中的应用是实现教学管理科学化、现代化的关键。因此,该网站为本书店提供了搞笑,准确,快速的管理模式,实现管理规范化、科学化。

3、项目概述

3.1网站需求分析

中国教育历来有重视质量的传统,形成了一整套行之有效的方法,要组织力量进行深入研究并加以发扬光大,形成中国教育的独特优势。同时要积极探索提高教育质量的新思路、新途径。树立科学的质量观,形成评价教育质量的新标准。坚持全面推进素质教育,把“成人”与“成才”作为教育质量的根本标准,职业教育和高等教育要把社会和就业市场的认可程度作为衡量教育质量的重要标准。这个标准要根据各级教育的特点予以细化。深化教育教学改革,推动各级各类教育的培养模式、课程体系、教学内容和教学方法的`改革与创新,利用新的方法和技术革新。特别是把教育的信息化作为提高教育质量的新手段,不仅是把硬件系统建立起来,更重要的是要在教学中广泛地应用起来。 3.2网站构架

前台主要包括导航栏(首页、相关新闻、课程标准、电子教案、教学课件、测试题库、课程论坛)、公告栏(包括公告通告、学校要闻、相关新闻、热帖、

后台包括信息管理(包括信息管理、公告管理)、课件管理(包括课件的添加管理、显示管理)、回复管理(帖子的回复管理、删除管理、热帖的显示管理)、管理员管理(查看会员信息、查看留言及回复)、权限管理(管理员增加、管理员修改、管理员删除)。

3.3主要内容及功能:本网站系统功能主要分为五大类:

(1)教学大纲和通知部分:教学大纲单独设计页面。通知和新闻发布部分在要在首页显示,发布通知是管理员的权限。

(2)课件发布系统:管理员可以发布课件,课件管理。老师可以上传课件。学生可以下载网上发布后的课件。

(3)作业发布系统:老师可以上传作业发布,学生可以下载作业,管理员拥有管理作业和删除以前老师发布的作业权利(防止积累过多)。

(4)网上测试系统:在线自测(题目全为选择题),有题库管理系统随机生成,每套题目有50道题目组成,在试卷的管理中随机生成的试卷分等级比如分简单和较难的试题(这些要在生成前学生选择的)

(5)论坛系统学生可以提交问题,然后由老师或者其他同学进行回答。学生对问题进行回复,编辑,删除等操作在管理员对其进行检查后显示,老师可以及时进行解答。

图3-1后台信息管理功能图

(6)实训案例系统:管理员可以发布作品和管理。老师可以上传一些学生的优秀作品,学生可以下载发布出的作品。

本系统性能力易于使用,具体有较高的扩展性和可维护性。这就需求数据库结构能充分满足各种信息的输入与输出,实现有组织地动态地存储大量关联数据,方便用户访问系统中的数据,它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。

4、项目特点

该网站是一个操作使用简单,界面漂亮美观的网站。具有以下特点: (1)简洁美观的操作界面

简单的操作界面能够大大的提高用户的操作速度,从而提高服务效率,使顾客节约一定的时间。因此美观又简单的操作界面使用户感觉舒适,该网站通过专业美工的精心打造,与学校网站具有相同的风格,给用户带来亲切感,从而避免在视觉带来的异样。 (2)科学的管理模式

系统采用科学的管理模式,管理员可以更好的了解用户需要什么,替用户轻松的完成需要整理信息:结构化管理模式,涵盖了新闻管理、电子教案编辑、用户管理、教学课件管理等等,为该网站的电子化管理提供了一套良好的管理模式。 (3)对外的开放性

通过数据库课程网站,比较低的成本实现优质教育教学资源的共享,打破现有的教育教学质量受制于教学资源不足的瓶颈,通过免费为师生提供优质教育教学质量。

(4)信息的整体性

数据库课程包括了教师、学生教材、教学技术手段、教学制度等要素。教学课程建设要考虑完整的课程建设的各个环节,即课堂授课水平、教与学的互动、学生课余的自主学习和实践动手的培养、学业成绩的评价以及教学辅助手段和教学参考书的建设等,要抓住个方面间的关系,关注整体建设而不是局部建设。 (5)师生的互动性

通过建立健全课程网站评价体系,即有效的反馈机制的建设,通过比较校内、校外、甚至国外专家、同行、学生在利用课程网站的建设方案,调查和补充课程

⬬ 数据库DBA工作总结 ⬬

我在sqlserver索引基础知识系列中,第一篇就讲了记录数据的基本格式。那里主要讲解的是,数据库的最小读存单元:数据页。一个数据页是8k大小。

对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。而是变化达到一定数量级后才会作这个操作。这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。

区是管理空间的基本单位。一个区是八个物理上连续的页(即64kb)。这意味着sqlserver数据库中每mb有16个区。

为了使空间分配更有效,sqlserver不会将所有区分配给包含少量数据的表。sqlserver有两种类型的区:

统一区,由单个对象所有。区中的所有8页只能由所属对象使用。

混合区,最多可由八个对象共享。区中八页的每页可由不同的对象所有。

通常从混合区向新表或索引分配页。当表或索引增长到8页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成8页,则对该索引的所有分配都使用统一区进行。

为何会这样呢?

其实很简单:

读或写8kb的时间与读或写64kb的时间几乎相同。

在8kb到64kb范围之内,单个磁盘i/o传输操作所花的时间主要是磁盘取数臂和读/写磁头运动的时间。

因此,从数学上来讲,当需要传输64kb以上的sql数据时,

尽可能地执行64kb磁盘传输是有益的,即分成数个64k的操作。

因为64kb传输基本上与8kb传输一样快,而每次传输的sqlserver数据是8kb传输的8倍。

我们通过一个实例来看有and操作符时候的最常见的一种情况。我们有下面一个表,

createtable[dbo].[member]([member_no][dbo].[numeric_id]identity(1,1)notnull,[lastname][dbo].[shortstring]notnull,[firstname][dbo].[shortstring]notnull,[middleinitial][dbo].[letter]null,[street][dbo].[shortstring]notnull,[city][dbo].[shortstring]notnull,[state_prov][dbo].[statecode]notnull,[country][dbo].[countrycode]notnull,[mail_code][dbo].[mailcode]notnull,[phone_no][dbo].[phonenumber]null,[photograph][image]null,[issue_dt][datetime]notnulldefault(getdate()),[expr_dt][datetime]notnulldefault(dateadd(year,1,getdate())),[region_no][dbo].[numeric_id]notnull,[corp_no][dbo].[numeric_id]null,[prev_balance][money]nulldefault(0),[curr_balance][money]nulldefault(0),[member_code][dbo].[status_code]notnulldefault(''))

这个表具备下面的四个索引:

索引名细节索引的列

member_corporation_linknonclusteredlocatedonprimarycorp_no

member_identclustered,unique,primarykeylocatedonprimarymember_no

member_region_linknonclusteredlocatedonprimaryregion_no

memberfirstnamenonclusteredlocatedonprimaryfirstname

当我们执行下面的sql查询时候,

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

sqlserver会根据索引方式,优化成下面方式来执行。

selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelike'k%'andm.member_no5000)a,--这个查询可以直接使用memberfirstname非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取3次

(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6)b

--这个查询可以直接使用member_region_link非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取10次

wherea.member_no=b.member_no

不信,你可以看这两个sql的执行计划,以及逻辑读信息,都是一样的。

其实上面的sql,如果优化成下面的方式,实际的逻辑读消耗也是一样的。为何sqlserver不会优化成下面的方式。是因为and操作符优化的另外一个原则。

1/26的数据和1/6的数据找交集的速度要比1/52的数据和1/3的数据找交集速度要慢。

selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelike'k%'--1/26数据)a,

(selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6andm.member_no5000--1/3*1/2数据)bwherea.member_no=b.member_no

当然,我们要学习sql如何优化的话,就会用到查询语句中的一个功能,指定查询使用哪个索引来进行。

比如下面的查询语句

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(0))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(1))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(membercovering3))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(memberfirstname,member_region_link))wherem.firstnamelike'k%'andm.region_no6andm.member_no5000go

这里index计算符可以是0,1,指定的一个或者多个索引名字。对于0,1的意义如下:

如果存在聚集索引,则index(0)强制执行聚集索引扫描,index(1)强制执行聚集索引扫描或查找(使用性能最高的一种)。

如果不存在聚集索引,则index(0)强制执行表扫描,index(1)被解释为错误。

总结知识点:

简单来说,我们可以这么理解:sqlserver对于每一条查询语句。会根据实际索引情况(sysindexes系统表中存储这些信息),分析每种组合可能的成本。然后选择它认为成本最小的一种。作为它实际执行的计划。

成本代价计算的一个主要组成部分是逻辑i/o的数量,特别是对于单表的查询。

and操作要满足所有条件,这样,经常会要求对几个数据集作交集。数据集越小,数据集的交集计算越节省成本。

的项目中,竟然出现了滥用聚集索引的问题。看来没有培训最最基础的索引的意义,代价,使用场景,是一个非常大的失误。这篇博客就是从这个角度来罗列索引的基础知识。

使用索引的意义

索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。

使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。

使用索引的代价

索引需要占用数据表以外的物理存储空间。

创建索引和维护索引要花费一定的时间。

当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

创建索引的列

主键

外键或在表联接操作中经常用到的列

在经常查询的字段上最好建立索引

不创建索引的列

很少在查询中被引用

包含较少的惟一值

定义为text、ntext或者image数据类型的列

heaps是stagingdata的很好选择,当它没有任何index时

excellentforhighperformancedataloading(parallelbulkloadandparallelindexcreationafterload)

excellentasapartitiontoapartitionedvieworapartitionedtable

聚集索引提高性能的方法,在前面几篇博客中分别提到过,下面只是一个简单的大纲,细节请参看前面几篇博客。

何时创建聚集索引?

clusteredindex会提高大多数table的性能,尤其是当它满足以下条件时:

独特,狭窄,静止:最重要的条件

持续增长的,最好是只向上增加。例如:

identity

date,identity

guid(onlywhenusingnewsequentialid()function)

聚集索引唯一性(独特型的问题)

由于聚集索引的b+树结构的叶子节点必须指向具体数据。如果你要建立聚集索引的列不唯一,并且你指定的创建的聚集索引是非唯一的聚集索引,则会有以下情况:

如果未使用unique属性创建聚集索引,数据库引擎将向表自动添加一个四字节uniqueifier列。必要时,数据库引擎将向行自动添加一个uniqueifier值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。

⬬ 数据库DBA工作总结 ⬬

1.以 Administrator 身份登录到 Windows NT.

您需要 Administrator 权限来创建、启动和停止服务,

2.打开命令提示符。

3.使用 dbsvc 实用程序创建服务,限制如下:

必须使用 -a 开关来指定 sybase 帐户,使用 -p 开关来指定它的口令。

不能使用 -as 或 -i 开关。

对于个人数据库服务器,可执行文件的名称应当是:

C:Program FilesSybaseSQL Anywhere 9win32dbeng9.exe

对于数据库服务器则是:

C:Program FilesSybaseSQL Anywhere 9win32dbsrv9.exe

您必须使用下列引擎参数:

4.输入要运行的任何数据库文件的完整路径。

该路径应当采取 数据库文件夹 文件名 .db 格式,其中数据库文件夹是 C2 数据库文件夹,其中包括所有其它相关参数。

例如,下列命令行可创建名为 asa_svc 的手工启动的服务,并且引用网络服务器,

它在 sybase 帐户下运行,其口令为sybase_password.它执行下列命令:

⬬ 数据库DBA工作总结 ⬬

本节内容是教育科学出版社《信息技术基础》教材第二章第四节“网络数据库的信息检索”的内容。本节教材分三部分构成,一是概述,教材通过一个简单的实例来体验从网络数据库获取信息的一般过程,目的是为络数据库的基本知识做准备性的铺垫。二是多样化的网络数据库,教材对这部分内容介绍比较多,意在让学生充分体验网络数据库的多样性和学会对各数据库信息的获取方法。三是网络数据库评价,在本章的最后重点安排了网络数据库的评价,目的是进一步提醒教师,在信息获取活动中,要培养学生及时、科学地评价信息的习惯,这是提高获取信息资源质量的关键,也是积累信息获取经验的关键一环。在本课教材访问丰富多彩的数据库这个模块中,应适当引导学生对资源进行点评,引导学生探索数据库这一现代信息管理手段的特点,为第七章中数据库知识的学习打下基础。

⑴虽然学生在初中有信息课,但是作为副科没有参加升学考试,所以学生在课堂上多数的时间是玩游戏、聊天,没有纠正学习这门课程的学习态度。初中学生上了高中后,其信息技术意识层次不齐,这就要教师有计划培养学生的信息技术意识。

⑵经过半个学期的学习,高一学生自觉性有所提高一般具备了一定的网络操作技能,这样对于本节课的学习已经有了相关知识上的准备。

4、教学重点与难点:

学习重点:网络数据库的理解、网络数据库的多样性、网络数据库信息的检索

学习难点:对网络数据库信息的检索、学生要用科学的评价方式判断所得信息的准确性

教学过程实质上是学生主动学习的过程,强调激发学生的兴趣,力求形成学生强烈的学习动机和乐学、善学的学习态度。本节是采用任务驱动法导入新课,采取合作探究法解决提出的任务,对于同学们的作答采取了赏识教育法树立大家的自信心。再利用提问启发法去发现新的问题,从而导入本节的内容。在新课网络数据库简介中,我采用了列举法和图表法加深对网络数据库概念的理解。网络数据库信息检索的一般过程和数字城市的介绍上都分别用了演示学习法,演示具体的各个操作步骤。网络数据库信息检索的一般过程和教育资源库的使用,都采取小组分工制合作探究法解决提出的任务。

教学指导在于提高学生的个性发展和全面发展。通过本节教学,主要使学生掌握以下几种学习方法:

同学们通过前面的学习,已学会了上网查找信息并能从网上将信息下载到本地计算机,幻灯片展示任务:

设置这三个任务的目的有2个:第一:激发学生的兴趣:“神六”的成功发射是中华民族值得骄傲的一件事情,以它为主题可以充分激发学生的探索欲望。第二:a、b项任务设置是对前面内容的复习,对c项任务设置是为了逐步导入本节的新课内容。

学生操作:学生二个为一组上网搜索合作探究完成任务(三分钟)。

信息反馈:通过大家的操作,我们可以发现a、b项任务同学们用前面所学的常规搜索引擎输入关键字的方法基本上都能找到完成,第三个任务如果还用搜索引擎查找,查找的结果就很不统一,很多同学都没有能找出来。

操作指导:这时我示意同学们如果觉得任务有困难可以先放一放,也不急于公布第三个任务的答案,使用提问启发法、发现问题法、解决问题法,导入本节新课

提问:为什么我们很多同学找不到第三个问题,而大家又是如何找到问题a和b,是如何搜索到的?

学生答:常规搜索网站:ggle、baidu、ss等搜索引擎网站。

缺点:内容有不准确性、结果重复,有许多不存在的网站,并不是所有内容都能查到。

提问:既然并不是所有的内容都能在常规搜索网站查到,且在常规搜索网站找到的内容有些又存在不准确性,有什么解决的办法呢?比如课本P31提供一则资料碰到的也是这样的问题,周小波又是如何解决的?

三个提问环环相扣,整个过程以学生为中心,让学生自己发现问题,解决问题。对学生的回答,老师首先要持肯定、鼓励的态度:正确的回答,要使用赏识法大力表扬树立大家的自信心,不完整或不准确的回答要委婉的指出,以免挫伤学生的积极性。在引导学生回答问题时,尽可能的给学生较多的发言机会,活跃课堂氛围,努力培养学生的兴趣,激发他们的学习热情。

根据同学的作答,导入本节的一个内容,也是本节的`重点之一。

课本只是讲述了数据库的重要性,对网络数据库的概念只是一笔带过。提供足够的资料让同学充分理解网络数据库概念。资料包括概念的列举和图表的展示:

网络数据库主要是指那些经过精心组织的提供网络访问的数据库,有专门负责人整理相关数据库,局限于某个专题的内容,针对某种特殊信息需求,以后台数据库为基础,用交互网页的形式展现在我们面前。比如关于图片、程序、驱动、小说、地图等内容的网络数据库。

简单地说,一个网络数据库就是用户利用浏览器作为输入接口,输入所需要的数据,浏览器将这些数据传送给网站,而网站再对这些数据进行处理。例如,将数据存入数据库,或者对数据库进行查询操作等,最后网站将操作结果传回给浏览器,通过浏览器将结果告知用户。

在我们的生活中回经常碰到这样的问题,检查银行帐户、股票价格、利率、实现电子商务等等。这些功能是用HTML编写的网页是无法做到的,因为用HTML无法完成交互功能,要做到这些,使用网络数据库技术。

提问:能否用网络数据库解决我们上课时候提出的第三个任务?(利用设问的形式告诉同学们答案是可以的)

提问:能否用数据库解决我们上课时候提出的第三个问题?

演示神州六号发射的时间在当年的农历时间:

我们先打开baidu 输入关键字“万年历” 打开相关的数据库网站

⬬ 数据库DBA工作总结 ⬬

DB2 UDB版本8使用“Windows Installer”技术安装,因此跟先前版本的安装和卸载有了很大的改变,

尽管在Windows操作系统上有四种方式可以卸载DB2 UDB版本8软件,它们并不完全一样。在卸载时应该首先考虑首选卸载方法。 剩下的方法必须在首选卸载方法失败,并且跟DB2 UDB服务人员联系后再尝试使用。

通过Windows控制面板中的添加/删除程序来卸载DB2 UDB 版本8是最好的方式,

根据不同的Windows操作系统,DB2产品在 添加/删除 程序窗口中可能有“删除” 和/或 “改变”按钮。 您可以使用任何一个按钮来卸载DB2。

在DB2卸载的第一个窗口中,“下一步”按钮可能是灰的。这是因为Windows会在后台执行一些程序确保DB2可以被卸载。一旦Windows Installer可以继续处理,“下一步”按钮会变为可用状态,您可以点击“下一步”继续后面的操作。

如果DB2卸载失败,您可以联系DB2服务人员,以便获取得到卸载日志和跟踪文件的方法,以便进一步确定问题的原因。

下面的卸载方法只应该在首选卸载方法失败的情况下使用。

⬬ 数据库DBA工作总结 ⬬

一、磁盘数据组织结构 在INFOR MI X-OnLine的磁盘数据组织结构中的最上层为逻辑概念上的 数据库 空间dbspace,每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,镜像数据存储块mirror保证当根数据存储块故障时,OnLine能够继续工作,每一个数据

在INFORMIX-OnLine的磁盘数据组织结构中的最上层为逻辑概念上的数据库空间dbspace,每一个数据库空间都有一个或若干个物理单位数据存储块chunk组成,镜像数据存储块mirror保证当根数据存储块故障时,OnLine能够继续工作。每一个数据存储块都有若干个数据页page组成,为了提高输入和输出效率,若干个连续的数据页组成数据连续页extent。用户的数据库database和数据表table存储在缺省的或者指定的数据库空间中,数据表的逻辑概念上的存储空间数据表空间tblspace有一个或若个安数据连续页extent组成,数据记录row存放在数据页page中。

为更好的的支持多媒体应用,多媒体数据可以存放在二进制大对象数据页Blobpage中,若干个二进制大对象数据页在此二进制大对象空间Blobspace。 OnLine使用逻辑日志Logicallog、物理日志Physicallog来管理数据库日志操作。

INFORMIX-OnLine的数据存放在物理上连续的数据存储块chunk中,数据存储块是OnLine数据存储的最大的物理单位。数据存储块可以有两种构造方法,其一是直接构造在系统的物理磁盘上,其二是构造在操作系统的文件或者卷上。

在第一种情况下,在操作系统上仅仅定义了这个(块)磁盘但没有格式化这个(块)磁盘,因此在这上面的所有数据操作都有OnLine来完成,操作系统对它不存在任何管理,数据空间在物理磁盘上连续,这种数据的存储空间称为原始空间rawspace。

而在第二种情况下,操作系统不仅定义了这个数据存储空间(文件),还管理这个数据存储空间(文件),数据文件操作时的内存缓冲、输入与输出。数据空间的建立受操作系统的制约,在物理存储上不连续。我们称这种数据存储空间为非原始空间cookedspace。

比较这两种数据的存储空间,原始空间在磁盘上连续,没有操作系统的缓存和制约,非原始空间在磁盘上不连续,存在着操作系统的缓存和操作系统的输入/输出的制约,因此在实际应用中,采用原始空间效率高于非原始空间,由于原始空间与系统设备有关,同时不同操作系统对设备的定义的不一致性,定义非原始空间比定义原始空间来得简单。我们将原始空间所对应的磁盘称原始设备rawdevice,而将非原始空间所对应的操作系统文件称操作系统文件cookedfile。

为了进一步提高数据库运行的效率,我们通常选用字符设备作为存放实际的原始设备,这样在我们输入/输出数据时,可以充分发挥系统的DMA能力。当我们使用原始设备时,可以在同一个原始设备上建立多个数据存储块。通过对数据存储块的参数OFFSET和SIZE的定义,其单位为KB,我们可以定义多个数据存储块在同一个磁盘或磁盘块上,参数OFFSET定义数据存储块的起始位置,参数SIZE定义数据存储块的大小,用户在设置参数OFFSET和SIZE时必须保证在物理磁盘上没有相互覆盖。

在原始设备/dev/rdsk/c0t1d1s0上建立三个数据存储块chunk1、chunk2和chunk3,它们的大小分别为50MB、30MB和50MB,由于chunk的SIZE单位为KB,因此chunk1、chunk2和chunk3的SIZE分别为50000、30000和50000。在通常情况下,第一个数据存储块chunk1的OFFSET为0,这样第二个数据存储块chunk2的OFFSET应为第一个数据存储块chunk1的SIZE,而第三个数据存储块chunk3的OFFSET则为第二个数据存储块chunk2的OFFSET加上第二个数据存储块chunk2的SIZE。为保证在两个数据存储块的相邻边界处不发生重叠,可以将后一个数据存储块的起始位置稍微挪后一点。如果采用操作系统文件作为数据存储空间时,一般不在一个文件中建立多个数据存储块。一个文件中建立多个数据存储块,操作系统对文件中数据的定位时间将更长。

不管是原始设备还是非原始设备,OnLine的概念是一致的。在实际应用中,可以一部分数据存储块用原始设备而另一部分用非原始设备,只是原始设备采用OnLine的管理的I/O机制,而非原始设备采用操作系统unix的I/O机制。

INFORMIX-OnLine在数据存储块中以数据页page为单位来组织存放数据,并以数据页为单位来输入输出数据,它的大小与数据在共享内存中数据缓冲区相一致,所以OnLine的数据页的大小是不可以改变的。数据页是OnLine组织存放数据的最小的物理单位。

根据不同从操作系统,OnLine的数据页的大小是不同的。例如在SCO、AT&T、UNISYS和HP等操作系统平台上,每一个数据页的大小为2KB,而在IBM和SEQUENT等操作系统平台上,每一个数据页的大小则为4KB。同时数据在共享内存中的缓冲区的大小也是根据操作系统的不同而不同,其值与数据页的大小一致。

为提高数据操作的效率,OnLine将若干个在物理磁盘上连续的数据页组成一个数据连续页extent。当用户创建一个数据表时,OnLine以数据连续页为单位在数据存储块中分配一块连续的空间,当用户的数据写满了这个数据连续页后,OnLine将以数据连续页为单位在数据存储块中申请一块连续空间,以存放更多的用户数据。在缺省情况下,初始化时第一个数据连续页为8个数据页。

数据连续页不能跨越数据存储块,当OnLine需要申请较多的数据页构成数据连续页时,如果OnLine找不到如数的在物理设备上连续的数据页时,OnLine将放弃这些不够构成一个数据连续页的数据页,OnLine将去下一个数据存储块去申请如数的在物理设备上连续的数据页。因此在实际系统中,过小的数据存储块将不利于数据操作性能和数据存取效率。

在INFORMIX-OnLine的磁盘数据组织中,数据库空间dbspace处于一个比较上层的位置。数据库空间是数据库在逻辑概念上的存储空间,一个或若干个数据库空间组成OnLine数据实体。在物理磁盘上,每一个数据库空间总对应于一个或几个数据存储块,在这些与数据库空间对应的数据存储块中,一定有一个数据存储块是根数据存储块,而其它的则是后继数据存储块。从功能上来看,根数据存储块除了具有后继数据存储块能够存储用户数据外,它还具有管理本数据库空间的功能;从数据存储块的保留页来看,根数据存储块具有56个保留页,而后继数据存储块仅有3个保留页。当然不同版本的OnLine在主、后继数据存储块的保留页的数量可能不同,但是根数据存储块需要更多的保留页来保存本数据库空间的定义。

在OnLine初始化后有一个称为根数据库空间rootdbs的数据库空间,它是OnLine系统的第一个数据库空间。当建立根数据库空间时,它的根数据存储块将被建立,所有数据库的日志和所有的定义信息都必须存放在该数据存储块中,它比所有其它根数据存储块的保留页更多。由于数据库日志定义的需要,因此对根数据库空间的根数据存储块的定义尤其重要,关于如何正确地定义根数据库空间的根数据存储块将在后面详细介绍,

为了提高数据库系统运行的效率,INFORMIX新的动态服务器OnLineDynamicServer7.1中引入了临时数据库空间的概念。在没有临时数据库空间的系统中,临时数据将建立的缺省的根数据库空间中,由于临时数据操作需要频繁的增加、删除,会给根数据库空间的数据存储块中造成很多碎片,将导致数据库操作效率的降低;另外当数据库备份时,那些临时数据也一起作备份,从而增加了数据备份量,降低了数据备份的效率。引入临时数据库空间后,用户的临时数据或者数据操作的中间结果将被存放在临时数据库空间中,同时当数据备份时临时数据库空间将不再被备份。

为提高OnLine运行时的数据高可靠性,OnLine在数据存储上引入了数据存储块镜像的机制。OnLine数据存储的镜像是对数据存储块而言的,但是其定义是对数据库空间的。当一个数据库空间被定义为镜像时,它下面的所有数据存储块全部镜像;当一个数据库空间被定义成没有镜像的时候,它下面的所有数据存储块全部没有镜像。

当OnLine在运行时,一旦数据存储块所在的物理磁盘发生读写故障,对于没有数据库空间没有镜像的系统,OnLine将自动关闭,并等待恢复。而对于具有镜像的数据库空间,OnLine将把存在读写故障的数据存储块标识为Down,同时OnLine将继续运行,用户完全可以根据需要,在适当的时候,恢复存在读写故障的数据存储块所在的磁盘,然后重构继续。因此一个具有镜像的数据库空间,其运行时的可靠性将大大高于不具有镜像的数据库空间。

在逻辑上,数据库存放在数据库空间dbspace中,数据表存放在数据表空间tblspace中。数据库空间是由数据存储块组成,数据表存在于这些数据存储块中,数据表空间是由连续存放该数据表记录的数据连续页组成。

OnLine能高效地执行联机事务处理的第二个机制是数据库服务器系统的共享内存。在一些不使用共享内存的数据管理系统中,管理进程只能在需要数据的时候,将该记录和索引的最新值读入该进程所占有的私用数据缓存中进行操作,由于频繁的磁盘I/O,使系统的运行效率降低,同时由于那些管理进程都各占一份数据缓存,使得系统内存的有效使用率降低。因此使用共享内存会有以下三方面的好处:

(1)数据缓存不再属于某个进程,所有的数据库进程均共享这块内存,降低了磁盘的I/O;

(2)所有数据库进程访问相同的访问,它们的值和索引在内存中只有一份拷贝,提高了内存的有效使用率;

(3)操作的相关记录被预读进共享内存中,由于内存的I/O效率极高,因而系统并发除了数据的能力得到提高。

随着OnLine功能和性能的不断提高,OnLine的共享内存也有所不同。尤其是INFORMIX的动态服务器OnLineDynamicServer(ODS)在其共享内存的结构上增加了两个功能模块。在OnLine5中,其共享内存仅有一个区域,驻留区Residentportion;动态服务器ODS7.1除了驻留区Residentportion外还增加了虚拟区Virtualportion和通讯区Communicationportion。

操作系统的共享内存参数对数据库服务器的共享内存的定义和建立会产生极大的影响。对INFORMIX来说,数据库服务器的共享内存绝对不能超过操作系统共享内存定义的允许范围。一个OnLine动态服务器7.1的共享内存不能超过操作系统所定义的一个UNIX进程所允许访问共享内存的极大值,由于操作系统对共享内存的定义往往不能满足OnLine动态服务器7.1的需要,因此,数据库管理员通常需要在建立其数据库应用系统以前,首先调谐操作系统的共享内存参数。

对于OnLine动态服务器7.1来说,操作系统的参数对它们的影响,在共享内存锁资源管理方面和虚拟处理器对共享内存访问操作方面是不全部相同的。它们对操作系统参数的要求也是不一样的,因此需要数据库管理员根据产品来决定操作系统的参数,在决定这些操作系统的参数前,请先阅读产品说明文件。例如OnLine动态服务器7.1的$INFORMIXDIR/release/ONLINE_7.1,在这个文件中它向数据库管理员阐述该INFORMIX产品在该机器平台上对操作系统参数的要求。同一种产品在不同的平台上,对该平台操作系统参数的要求非常有可能是不一样的;在同一平台上,同一产品的不同版本对操作系统参数也很有可能是不同的。

OnLine动态服务器7.1采用多进程Multi-processes多线索Multi-treads的数据库服务器机制,将每一个服务器进程根据用户定义分解成若干个线索,每一个线索响应一个用户的设计访问的请求。INFORMIX将每一个进程称作一个虚拟处理器Virtualprocess。

在以前的多处理器系统中,往往将用户的应用程序和系统的处理器CPU对应起来,每一个处理器都分别处理一个用户的应用程序;当应用程序数量多于处理器数目时,应用程序为争夺处理器资源CPU,而引起应用程序在运行时间上的不平衡;同时当应用程序的数量少于处理器数目时,由于一些处理器资源得不到运用而空闲,导致处理器资源运用上的不平衡。一种比较好的方法是将处理器与应用所需要的处理器分离开来,然后由数据库系统来平衡这种需求。在INFORMIX动态服务器中,用户应用程序发出的数据操作请求被称作虚拟处理器的服务器进程所接收,然后OnLine均匀地将这些服务器进程分配到系统实际的处理器CPU上。这样就较好地解决了上面所提到的两种不平衡状态。

在ODS7.1中每一个数据库服务器进程都称作一个虚拟处理器Virtualprocess,简称VP。若干个相同功能的虚拟处理器组成一个虚拟处理器类VirtualprocessClass,简称VPClass,每一个VPClass都表示一种功能的虚拟处理器。OnLine一共有七种虚拟处理器,它们是:

处理器虚拟处理器CPUVP,响应所有用户和OnLine系统对CPU资源的操作和协调。

磁盘输入输出虚拟处理器DiskI/OVP,响应用户和OnLine系统的磁盘输入输出请求,磁盘输入输出处理器分三种,异步输入输出AsynchronousI/O、物理日志输入输出Physical-logI/O和逻辑日志输入输出Logical-logI/O。

网络通讯虚拟处理器NetworkVP,响应用户的网络联接的请求。ODS的网络虚拟处理器有三种,它们分别用于管理tli、soc和ipc三种网络通讯接口。

系统管理虚拟处理器AdminstrationVP,运行OnLine系统管理程序和一些专职程序。

光盘虚拟处理器OpticalVP,当用户运行OnLine/Optical时管理光盘系统的运转。

审计虚拟处理器AuditVP,当用户系统需要一定的运行时数据安全性的时候,审计虚拟处理器在后台帮助检查每一个用户操作的合法性。

杂项管理虚拟处理器MiscellaneousVP,用于管理所有以上虚拟处理器不作的工作。

⬬ 数据库DBA工作总结 ⬬

对于像Sybase这样的大型DBMS系统而言,作为OLTP(联机事务处理)应用的基石,它需要能每天24小时, 每年365天不间断运行,由于其应用程序每天对数据库进行大量的插入、更新、删除等操作,在数据库的物理存储介质上产生了大量存储碎片,从而影响了存储的效率以及数据库应用运行的速度。是否可以像Windows操作系统的“碎片整理”程序一样,整理这些碎片,从而优化数据库存储,提高数据库的运行速度呢?答案是肯定的。本文将介绍Sybase 数据库的碎片类型以及碎片整理方法。 碎片类型

由于Sybase是通过OAM页、分配单元和扩展页来管理数据的,所以对OLTP应用的Database Server会十分频繁地进行数据删除、插入和更新等操作,时间一长就会出现以下几种情况:

即本来可以存放在一个页上的数据却分散地存储在多个页上。如果这些页存储在不同的扩展单元上,Database Server就要访问多个扩展单元,因此降低了系统性能。

在堆表中,当删除数据链中间的记录行时,会出现空页。随着空页的累积,扩展单元的利用率也会下降,从而出现扩展单元碎片。带cluster index的table也有可能出现扩展单元碎片。

当有扩展单元碎片存在,会出现以下问题:

● 对表进行处理时,常常出现死锁;

● 利用较大的I/O操作或增加I/O缓冲区的大小也无法改变较慢的I/O速度;

带有cluster index的table会由于插入记录而导致页分裂,但当删除记录后,页会获得释放,从而形成跨几个扩展单元和分配单元的数据,而要访问该数据就必须遍历几个扩展单元和分配单元。这将导致访问/查询记录的时间大大延长,开始时数据库的性能虽然较高,但使用一段时间后性能就会下降等问题。

实际上,数据在存储空间上排列得越紧密有序,Database Server访问的速度就越快,消除碎片有助于提高系统的性能和更有效地利用数据存储空间。

处理碎片有多种方法,如重新定义table的填充因子,根据table的定义删除并重新创建索引、重建表等。

本文给出的方法是通过BCP实用程序将用户数据库的数据以文本形式导出,然后将用户数据库彻底清空、截断,再将文本数据导入到数据库,从而达到消除碎片的目的,具有通用性。

下面以Sun Solaris 7操作系统下的Sybase Adaptive& nbspServer Enterprise 11.5为例,说明整理数据库数据的具体方法。

为防止在数据库碎片整理过程中出现不可预见的问题,有必要先备份数据库。

● 创建包含下列SQL语句的文件:

elect “bcp” + name + “out ./” + name + “_out.txt -Udboname -Pdbopwd -Ssys_name -c” vfrom sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_bcp_out. sql > b_out

● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_out

● 创建包含下列SQL语句的文件:

elect “truncate table” + name from sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_ trunc_out. sql > trunc_out. sql

● 编辑输出文件,去掉文件第一行和最后两行无关的字符,并在最后一行加入 go构成完整的SQL语句:vi trunc_out

● 执行以下语句,清空数据库的数据:

isql -Udboname -Pdbopwd < trunc_out. sql

● 创建包含下列SQL语句的文件:

elect “bcp” + name + “in ./” + name + “_out.txt& nbsp-Udboname -Pdbopwd -Ssys_name -c”from sysobjects where type = ‘U’

● isql -Udboname -Pdbopwd -Ssystemname < cre_ bcp_in. sql > b_in

● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_in

Sybase不自动维护索引的统计信息,当用truncate table截断数据库时,索引并没有改变,所以必须用update statistics来确保索引的统计信息对应当前表数据的统计,

● 创建包含下列SQL语句的文件:

elect “update statistics” + name from sysobjects where typ

● isql -Udboname -Pdbopasswd -Ssystemname < cre_upd_st. sql > upd_st. sql

● 编辑输出文件,去掉文件第一行和最后两行无关的字符,在最后一行加入 go构成完整的SQL语句:

● 更新数据库状态:

isql -Udboname -Pdbopasswd -Ssystemname < upd_st. sql

至此,基本上完成了数据库用户表的碎片整理工作。

在整理过程中,有以下两点需要注意:

当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。当空间不够时,要考虑用分割table或删除陈旧数据的方法缩小table的大小,或者考虑增加tempdb的大小。

当数据库执行bcp in脚本时会产生大量的log,为保证bcp in进程不致因为log溢出而中断,应该设置 database的选项“truncate log on chkpt”为“true”。

虽然Sybase数据库是自优化的,但只要数据库是动态的,数据库碎片现象就会存在。在OLTP应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。

实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。

⬬ 数据库DBA工作总结 ⬬

死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源,引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交。本文介绍一种处理解决这种死锁的方法。 Sybase封锁原理

数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁机制(LOCKING).

已有的锁 S U X S ∨ ∨ × U ∨ × × X × × × Sybase SQL Server有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下:

Sybase SQL Server是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。

SQL Server有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server试图尽可能地使用页锁。

当SQL Server决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server自动使用表锁。

SQL SERVER加锁有三种状态:

1)意向锁(intend)—是一种表级锁,它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。

2)阻塞(blocking,简记blk)—它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。

3)需求锁(demand)—表示此时该进程企图得到一个排它锁。它可以防止在这一表或页上加过多的S锁,她表示某一事务是下一个去锁定该表和该页的事务。

需求锁是一个内部过程,因此用sp_lock是无法看见的。

简单地说,有两个用户进程,每个进程都在一个单独的页或表上有一个锁,而且每个进程都想在对方进程的页或表上请求不相容锁时就会发生“死锁”。在这种情况下,第一个进程在等待另一进程释放锁,但另一进程要等到第一个进程的对象释放时才会释放自己的锁。

SQL Server检查是否死锁,并终止事务中CPU时间积累最小的用户(即最后进入的用户)。SQL Server回滚该用户的事务,并用消息号1205通知有此死锁行为的应用程序,然后允许其他用户进程继续进行,

在多用户情形下,每个用户的应用程序都应检查每个修改数据的事务是否有1205号消息,以此确定是否有可能死锁。消息号1025表示该用户的事务因死锁而终止并被回滚。应用程序必须重新开始这个事务处理。

既然管理信息系统长时间死锁的原因是由于我们提交或者是提交不当,那么我们就可以通过修改程序防止出现死锁。定位死锁出错处主要经过以下三步:

1)在死锁出现时,用SP_WHO,SP_LOCK获得进程与锁的活动情况。

2)结合库表sysobjects和相应的操作员信息表查出被锁的库表与锁住别人的操作员。

3)根据锁定的库表与操作员的岗位,可以估计出程序大约出错处。询问操作员在死锁时执行的具体操作即可完全定位出错处。最后查找程序并修改之。

系统过程sp_who给出系统进程的报告。如果用户的命令正被另一进程保持的锁阻碍,则:

◆status列显示“lock sleep”。

◆blk列显示保持该锁或这些锁的进程标识,即被谁锁定了。

◆loginame列显示登录操作员。结合相应的操作员信息表,便可知道操作员是谁。

Fid spid status loginame origname blk dbname cmd

0 1 lock sleep lm lm 18 QJYD SELECT

0 2 sleeping NULL NULL 0 master NETWORK HANDLER

0 3 sleeping NULL NULL 0 master NETWORK HANDLER

要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server进程id号,用sp_who可以得到锁定与被锁定的spid号:

◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh—共享锁,Ex—排它锁或更新锁,中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。“demand”后缀表明当前共享锁一释放, 该进程就申请互斥锁。

◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。

Fid Spid locktype table_id page row dbname Class context

0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur

0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock

0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur

根据sp_who与sp_lock命令的结果,结合sysobjects和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。

⬬ 数据库DBA工作总结 ⬬

供参考 SQL SERVER11.0.xFORSCOOPENSERVER5 一.安装SCOOpenServer5.0.2PATCH(OS5.0.4以上无需此步骤) OSS437a OSS441a OSS446a 二.建立SYBASE帐号(使用scoadmin) 修改shell文件,增加SYBASEDSQUERYPATH环境变量, 1.shorksh(.profile): SYBASE=安装目录 DSQU

SQLSERVER 11.0.x FOR SCO OPENSERVER 5

一. 安装 SCO OpenServer 5.0.2 PATCH (OS5.0.4以上无需此步骤)

修改shell文件,增加SYBASE DSQUERY PATH 环境变量。

1. sh or ksh (.profile):

PATH    =  $SYBASE/bin:$SYBASE/install:$PATH:

set    path  =  ($SYBASE/bin $SYBASE/install $path .)

三. 系统参数调整。

1. 共享内存。

加入:

将/etc/conf/sdevice.d/aio  文件“N”改为“Y”,

/etc/conf/sdevice.d/suds 文件“N”改为“Y”

在文件最后加入/etc/suds_ctrl -a     (注1)

例:检查SYBASE用户所处组的组号如50(group),则为suds_ctrl -a 50

% tar xvf /cdrom/ebfss/ebf7575.tar

% tar xvf /cdrom/ebfcs/ebf7791.tar

% $SYBASE/install/sybinit   (注4)

注:

1)以sybase登录,使用id命令可以得到group id或通过 cat /etc/passwd | grep sybase 得到。

2)若安装SQL Server 过程中boot server时出现下面错误(可检查errorlog文件):ulinitspinlock:allocate mutex lock failed则是因为在执行suds_ctrl时SYBASE用户组的组号不对,重新执行suds_ctrl即可。

3)#号为使用root用户进行操作,%号为使用sybase用户操作。

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

修改shell文件,增加SYBASE DSQUERY PATH 环境变量。

1. sh or ksh (.profile):

PATH    =  $SYBASE/bin:$SYBASE/install:$PATH:.

set    path  =  ($SYBASE/bin $SYBASE/install $path .)

% cd $SYBASE/init/sample_source_files

注:

1)#号为使用root用户进行操作,%号为使用sybase用户操作,

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

以root 登录:

创建sybase用户及用户组(useradd,groupadd或linuxconf)

#mount /mnt/cdrom (#mount -t iso9660 /dev/cdrom /mnt/cdrom)

# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-common-11.9.2-1.i386.rpm

# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-ase-11.9.2-1.i386.rpm

以sybase登录安装 ASE 11.9.2:

编辑用户登录文件:

Export SYBASE DSQUERY LD_LIBRARY_PATH LANG

--编辑源文件(/init/sample_resourde_files/srvbuild.adaptive_server.rs,

/init/sample_resourde_files/srvbuild.backup_server.rs)

将源文件拷贝到备用目录/usr/sybase/user中:

$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/ase.rs

$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/backup.rs

$srvbuildres -r /usr/sybase/user/ase.rs

$srvbuildres -r /usr/sybase/user/backup.rs

在root用户登录文件中加入以下语句:

(以bash用户,.bash_profile为例,更改系统内存值为60M)

echo “62914560” > /pro/sys/kernel/shmmax

⬬ 数据库DBA工作总结 ⬬

通过分析虚拟企业的特点以及目前知识管理系统的现状,研究了网格环境下虚拟企业的知识管理模式及其若干关键问题,并就如何实现协作式信息资源和企业知识的'管理和应用提出了初步解决方案,最后给出了基于网格技术的虚拟企业知识管理系统框架.

作 者:薛春芳 张劲松 Xue Chunfang Zhang Jinsong  作者单位:中南民族大学,武汉,430073 刊 名:情报杂志  PKU CSSCI英文刊名:JOURNAL OF INFORMATION 年,卷(期): 25(4) 分类号:G35 关键词:网格环境   虚拟企业   知识管理   系统框架  

⬬ 数据库DBA工作总结 ⬬

Waterxp 从oracle版本转化为sqlserver版本

为了oracle版本和sqlserver版本能很方便的转化,也为了两个版本能同步修改,特别是业务逻辑层,现决定如下:

A,两个版本的业务逻辑层都放在source目录下。在该目录下有两个目录:

sql 和ora。这两个目录有三个文件:

common.pbl ,water_modi.pbl,dw_version.pbl。

这三个 文件里面绝大部分是数据窗口,主要是因为sql server 和oracle的语法有差别。如果只是因为数据窗口有双引号在sql server里不能用,那么把数据窗口的select语法的字段引号去掉即可,因为没有引号的select语句在sql server和oracle下面都是可用的。修改的过程中注意update属性。

B,不同的数据库将使用不同的目录。

每台机器上建立下面的磁盘映射:

V  指向 \\oraservr ql237 或者是 \\oraserver\ora237

源代码在 \\oraserver\code\water237 ource 里面。

P盘是肯定要有的, V盘由使用什么版本决定。

业务层的修改尽可能的在源代码处,因为这样修改能让两个版本同时修改。

P盘是类库可以不需要修改。

V盘里的数据窗口都需要改。

改sql237里面的数据窗口,要修改和要注意的地方:

oracle里面使用                     sql server 里面使用

to_char(readingdate,’yyyymm’)     convert(char(6),readingdate,111)

to_char(readingdate,’yyyy/mm’)     convert(char(7),readingdate,112)

decode( , , , ,)              case when then end 或者 isnull(x,0)

左右连接 (+)                  left outer join

修改过程中要注意数据窗口的update属性,

4,1先修改sql237目录下的三个pbl里面的数据窗口的语法。为了照顾数据窗口的update属性,建议使用edit source的方法,而且select语法字段的引号在sql server版本建议去掉。使用pb的replace功能即可。

4,2 修改某些数据窗口的内嵌式sql 的语法。因为有一些内嵌式sql 也使用了decode() ,或者是to_char(),这些语法在sqlserver也是必须代替的。

修改方法:

…………………case when then end ………..;

4,3 最后的工作是测试。这是最繁琐的最重要的。在测试的过程会发现有一些数据窗口在sql server不能用:修改方法是将字段的引号去掉或者是移到sql 和ora目录里面的dw_version.pbl文件里面,在那里进行修改。

4,4主要的数据表都已经迁移过来了,名字一样,可能在sql server有一些表的字段不够那么请重新导入一次。主要的存储过程都已经翻译过来,名字不一样。在测试的过程会发现有一些视图没有存在,那么请从oracle把语法拷贝出来,在sql server查询分析器里生成之。

⬬ 数据库DBA工作总结 ⬬

昨天帮一个朋友恢复了sql server 7.0 数据库,现在把过程写出来,大家一起分享:

我那个哥们是从别人那拷了一个数据库的数据文件 (c:\mssql7\data 目录下的文件)

最初我是用的:

在一台好的机器上重新安装SQL Server,建立相同的数据库设备(大小),和数据库

停掉SQL Server,用拷贝出来的数据库文件覆盖刚建立的数据库文件,再重新启动

SQL Server。但一直不可以。我猜关键是无法建立相同的数据库设备(大小)。

sp_attach_db_single_file // 附加数据库的单个文件到服务器

EXEC sp_attach_single_file_db 'pubs', 'e:\data\pubs.mdf'

sp_attach_db @dbname=“conmis2000”,@filename1=“d:\1\conmis2000_data.mdf”,@filename2=“ d:\1\conmis2000_log.ldf”

如何附加数据库文件到服务器(即:通过*.mdf  *ldf 文件修复数据库)

另外查找资料时看到也可以通过日志恢复以前的数据,

用日志恢复:

restore log {data_name|@database_name_var}

with [norecovery\recovery tandby_undo_file_name]

[,][stopat={data_time|@data_time_var}

例如:库名为database1 日志为database1_log 要求恢复2000/6/15 1:00前的数据:

with recovery,stopat='jun 15,2000 1:00 am'

参考书有:<SQL SERVER7.0 系统管理和应用开发指南>(清华大学出版社)

⬬ 数据库DBA工作总结 ⬬

上周有同事对数据库进行了误操作,问我可不可以回到前一天的状态,恢复数据库的问题以前学DB2的时候遇到过,那时我想SQL Server中应该也会有方法把数据库恢复到前一天的。我的机器上ERP的数据库日志从800M增张到了2G,Log增长得这么快,想必是把所有的操作都记录上了。网上找了几天的资料,SQL Server Books Online也看了一个星期,没有找到答案,CSDN上找到一篇从日志恢复数据库的文章同SQL Server Online上面的说明一样写的不清不楚。问了几个公司里资历深一点的同事,都没有找到答案,昨天早晨6点半的时候醒来,想起DB2中的恢复模型,恢复的数据库应该是在恢复点之前的数据库,于是早早就起来,来到办公室,实验了一次,以为会成功,没想到还是没有成功恢复,很沮丧。

研究这个问题都一个星期了,仍然没有解决,整个星期五一天都不好受,想起了Boy,一个新人训时跟我们开交流会的RD leader,

结果还是没有答案,不过Boy很热情,把这个问题转发给了我们的DBA Running,Running好象是搞oracle的,sql server中的这种恢复也不熟悉,不过他说:多从原理方面考虑。

没辄,只好到Microsoft的 上面去找一下,溜达了一圈,有一篇文章提到,最好不要使用Auto close,auto shrink选项,我想可能是这两个选项的问题吧。于是周五下午的时候,又试了一次,SQL Query Analyzer里面运行restore database等了半天都没反应,我只好祈祷能够恢复成功,结果并不如人愿,出来了红色的错误信息,说是数据库存取冲突,原来是SQL Server Enterprise Manager也在使用数据库,于是关了Enterprise Manager,果然顺利恢复了数据库,高兴地快要跳起来。

工作几个月,常常都感觉到理论方面的基础知识不够丰富,一些帮助文档看不懂,或者运行不了的时候,常常都是因为理论基础。一些问题想要去解决常常要花很长的时间,所以以后还是从基础理论入手学习数据库。

⬬ 数据库DBA工作总结 ⬬

这个函数库和 SQL Server 数据库函数库几乎完全相同,实际上是本函数先出现,之后才出现 SQL Server 数据库函数库,

而就用户观点 Sybase 和 MS SQL Server 6.x 也是几乎相同的。当然 MS SQL Server 7.0 之后的差异就比较大了。

取得最后 query 影响的列数。

语法: int sybase_affected_rows(int [link_identifier]);

内容说明: 本函数用来取得最后一次对数据库下 query 指令所影响的列数,会影响的为 INSERT、UPDATE 或 DELETE 等指令,而 SELECT 不会影响。参数 link_identifier 可省略,为打开数据库的连接代号。返回值即为列数。

关闭与数据库的连接。

语法: boolean sybase_close(int link_identifier);

内容说明: 本函数用来关闭与 Sybase 数据库的连接,能关闭的为使用 sybase_connect 函数打开的数据库,若使用 sybase_pconnect() 打开的数据库则不能以本函数关闭。参数 link_identifier 可省略,为打开数据库的连接代号。关闭成功则返回 true 值。

参考: sybase_connect() sybase_pconnect()

连上数据库。

语法: int sybase_connect(string [servername], string [username], string [password]);

内容说明: 本函数用来打开与 Sybase 数据库的连接。参数 servername 为欲连上的数据库服务器名称。参数 username 及 password 可省略,分别为连接使用的帐号及密码。使用本函数需注意早点关闭数据库,以减少系统的负担。连接成功则返回数据库的连接代号,失败返回 false 值。

参考: sybase_close() sybase_pconnect()

移动列指针。

语法: boolean sybase_data_seek(int result_identifier, int row_number);

内容说明: 本函数用来移动 Sybase 资料表中的列指针到指定的列上,可供 sybase_fetch_row() 等函数使用。参数 result_identifier 为查询的代号值。参数 row_number 则为欲移往的列数。若失败则返回 false 值。

参考: sybase_close() sybase_pconnect()

返回数组资料。

语法: array sybase_fetch_array(int result);

内容说明: 本函数用来将查询结果 result 拆到数组变量中,

若 result 没有资料,则返回 false 值。而本函数可以说是 sybase_fetch_row() 的加强函数,除可以将返回列及数字索引放入数组之外,还可以将文字索引放入数组中。

这是 joey@ (22-Feb-) 所提出的例子

$q = sybase_query(“SELECT COUNT(DISTINCT OPPORTUN99vY_ID) FROM M_OPP_INTERESTS WHERE INTEREST_ID = $i_id”, $db);

while ($op_by_int = sybase_fetch_arr

ay($q)) {

while (list($k, $v) = each($op_by_int)) {

echo “$op[$k] => $vn”;

$op[computed] => 2164 sybase_fetch_field

取得字段信息。

语法: object sybase_fetch_field(int result, int field_offset);

内容说明: 本函数返回的类资料为 result 的字段 (Column) 信息。返回类的属性如下:

numeric - 若为 1 表示本字段为数字类型 (numeric)

返回类资料。

语法: object sybase_fetch_object(int result);

内容说明: 本函数用来将查询结果 result 拆到类变量中。使用方法和 sybase_fetch_array() 几乎相同,不同的地方在于本函数返回资料是类而不是数组。若 result 没有资料,则返回 false 值。另外值得注意的地方是,取回的类资料的索引只能是文字而不能用数字,这是因为类的特性。类资料的特性中所有的属性 (property) 名称都不能是数字,因此只好乖乖使用文字字符串当索引了。关于速度方面,本函数的处理速度几乎和 sybase_fetch_array() 及 sybase_fetch_row() 二函数差不多,要用哪个函数还是看使用的需求决定。

参考: sybase_fetch_array() sybase_fetch_row()

返回单列的各字段。

语法: array sybase_fetch_row(int result);

内容说明: 本函数用来将查询结果 result 之单列拆到数组变量中。数组的索引是数字索引,第一个的索引值是 0。若 result 没有资料,则返回 false 值。

参考: sybase_fetch_array() sybase_fetch_object() sybase_data_seek() sybase_result()

配置指针到返回值的某字段。

语法: int sybase_field_seek(int result, int field_offset);

内容说明: 本函数配置目前的指针到返回值的特定字段中。参数 result 为返回值代码。参数 field_offset 则为指定的字段序数。

释放返回占用内存。

语法: int sybase_free_result(int result);

内容说明: 本函数可以释放目前 Sybase 数据库 query 返回所占用的内存。一般只有在非常担心在内存的使用上可能会不足的情形下才会用本函数。PHP 程序会在结束时自动释放。

取得返回字段的数目。

语法: int sybase_num_fields(int result);

内容说明: 本函数可以得到返回字段的数目。参数 result 为返回值代码。

⬬ 数据库DBA工作总结 ⬬

数据库DBA工作总结



数据库管理员(Database Administrator,简称DBA),是负责管理和维护数据库系统的专业人员。在过去的一段时间里,数据库管理的角色发生了许多改变,主要是由于数据量的增加和技术的进步。以下是我对DBA工作的总结,包括当前的趋势和挑战。



首先,DBA的工作职责涉及数据库的设计、创建、维护和优化。他们负责确保数据库系统的安全性、高可用性和性能。在设计阶段,DBA需要与开发人员密切合作,确定数据库结构和规范。在创建阶段,DBA需要根据需求创建数据库实例,并设置适当的权限和访问控制。在维护阶段,DBA负责备份和还原数据库,监控数据库性能,以及处理数据库故障和数据恢复。在优化阶段,DBA需要分析数据库的性能瓶颈,并提供相应的优化建议。



其次,随着云计算和大数据的发展,DBA的角色也有所改变。越来越多的组织将数据库迁移到云平台上,这需要DBA熟悉云架构和相应的管理工具。此外,大数据技术的兴起也带来了对DBA的新挑战。DBA需要学习和掌握Hadoop、NoSQL和分布式数据库等技术,以支持组织处理海量数据和实现实时分析。



此外,数据安全和合规性成为DBA关注的重点。随着数据泄露和网络攻击的增加,DBA需要采取相应的安全措施,防止未经授权的访问和数据泄露。此外,隐私法规和合规性要求(DBA)需要确保数据库操作符合相关法律法规,并定期进行安全审核和漏洞修复。



同时,DBA还需要具备良好的沟通和协作能力。他们通常需要与开发人员、系统管理员和其他相关部门合作,解决数据库问题和提供技术支持。因此,DBA需要具备良好的团队合作和解决问题的能力。



未来,DBA的角色将继续演变和发展。随着人工智能和自动化技术的兴起,一些重复性和繁琐的数据库管理任务可能会自动化,这使得DBA将有更多时间专注于数据库设计和优化。此外,随着数据分析和人工智能的需求增加,DBA也需要学习数据科学和机器学习等相关领域的知识。



总结而言,数据库DBA的工作是全面的,在设计、创建、维护和优化数据库方面扮演着重要角色。未来,DBA需要不断学习和适应新的技术趋势,以保持自己的竞争力。此外,与相关部门的协作和沟通能力也是DBA必备的技能之一。 DBA的角色将随着技术的进步和需求的变化不断发展,DBA也应紧跟时代的步伐,不断提升自己的能力和知识水平。

本文来源://www.zjan56.com/jiaoanziliao/136939.html

上一页:玉兰树的祝福的句子(经典74句) \conmis2000_log.ldf”

如何附加数据库文件到服务器(即:通过*.mdf  *ldf 文件修复数据库)

另外查找资料时看到也可以通过日志恢复以前的数据,

用日志恢复:

restore log {data_name|@database_name_var}

with [norecovery\recovery tandby_undo_file_name]

[,][stopat={data_time|@data_time_var}

例如:库名为database1 日志为database1_log 要求恢复2000/6/15 1:00前的数据:

with recovery,stopat='jun 15,2000 1:00 am'

参考书有:<SQL SERVER7.0 系统管理和应用开发指南>(清华大学出版社)

⬬ 数据库DBA工作总结 ⬬

上周有同事对数据库进行了误操作,问我可不可以回到前一天的状态,恢复数据库的问题以前学DB2的时候遇到过,那时我想SQL Server中应该也会有方法把数据库恢复到前一天的。我的机器上ERP的数据库日志从800M增张到了2G,Log增长得这么快,想必是把所有的操作都记录上了。网上找了几天的资料,SQL Server Books Online也看了一个星期,没有找到答案,CSDN上找到一篇从日志恢复数据库的文章同SQL Server Online上面的说明一样写的不清不楚。问了几个公司里资历深一点的同事,都没有找到答案,昨天早晨6点半的时候醒来,想起DB2中的恢复模型,恢复的数据库应该是在恢复点之前的数据库,于是早早就起来,来到办公室,实验了一次,以为会成功,没想到还是没有成功恢复,很沮丧。

研究这个问题都一个星期了,仍然没有解决,整个星期五一天都不好受,想起了Boy,一个新人训时跟我们开交流会的RD leader,

结果还是没有答案,不过Boy很热情,把这个问题转发给了我们的DBA Running,Running好象是搞oracle的,sql server中的这种恢复也不熟悉,不过他说:多从原理方面考虑。

没辄,只好到Microsoft的 上面去找一下,溜达了一圈,有一篇文章提到,最好不要使用Auto close,auto shrink选项,我想可能是这两个选项的问题吧。于是周五下午的时候,又试了一次,SQL Query Analyzer里面运行restore database等了半天都没反应,我只好祈祷能够恢复成功,结果并不如人愿,出来了红色的错误信息,说是数据库存取冲突,原来是SQL Server Enterprise Manager也在使用数据库,于是关了Enterprise Manager,果然顺利恢复了数据库,高兴地快要跳起来。

工作几个月,常常都感觉到理论方面的基础知识不够丰富,一些帮助文档看不懂,或者运行不了的时候,常常都是因为理论基础。一些问题想要去解决常常要花很长的时间,所以以后还是从基础理论入手学习数据库。

⬬ 数据库DBA工作总结 ⬬

这个函数库和 SQL Server 数据库函数库几乎完全相同,实际上是本函数先出现,之后才出现 SQL Server 数据库函数库,

而就用户观点 Sybase 和 MS SQL Server 6.x 也是几乎相同的。当然 MS SQL Server 7.0 之后的差异就比较大了。

取得最后 query 影响的列数。

语法: int sybase_affected_rows(int [link_identifier]);

内容说明: 本函数用来取得最后一次对数据库下 query 指令所影响的列数,会影响的为 INSERT、UPDATE 或 DELETE 等指令,而 SELECT 不会影响。参数 link_identifier 可省略,为打开数据库的连接代号。返回值即为列数。

关闭与数据库的连接。

语法: boolean sybase_close(int link_identifier);

内容说明: 本函数用来关闭与 Sybase 数据库的连接,能关闭的为使用 sybase_connect 函数打开的数据库,若使用 sybase_pconnect() 打开的数据库则不能以本函数关闭。参数 link_identifier 可省略,为打开数据库的连接代号。关闭成功则返回 true 值。

参考: sybase_connect() sybase_pconnect()

连上数据库。

语法: int sybase_connect(string [servername], string [username], string [password]);

内容说明: 本函数用来打开与 Sybase 数据库的连接。参数 servername 为欲连上的数据库服务器名称。参数 username 及 password 可省略,分别为连接使用的帐号及密码。使用本函数需注意早点关闭数据库,以减少系统的负担。连接成功则返回数据库的连接代号,失败返回 false 值。

参考: sybase_close() sybase_pconnect()

移动列指针。

语法: boolean sybase_data_seek(int result_identifier, int row_number);

内容说明: 本函数用来移动 Sybase 资料表中的列指针到指定的列上,可供 sybase_fetch_row() 等函数使用。参数 result_identifier 为查询的代号值。参数 row_number 则为欲移往的列数。若失败则返回 false 值。

参考: sybase_close() sybase_pconnect()

返回数组资料。

语法: array sybase_fetch_array(int result);

内容说明: 本函数用来将查询结果 result 拆到数组变量中,

若 result 没有资料,则返回 false 值。而本函数可以说是 sybase_fetch_row() 的加强函数,除可以将返回列及数字索引放入数组之外,还可以将文字索引放入数组中。

这是 joey@ (22-Feb-) 所提出的例子

$q = sybase_query(“SELECT COUNT(DISTINCT OPPORTUN99vY_ID) FROM M_OPP_INTERESTS WHERE INTEREST_ID = $i_id”, $db);

while ($op_by_int = sybase_fetch_arr

ay($q)) {

while (list($k, $v) = each($op_by_int)) {

echo “$op[$k] => $vn”;

$op[computed] => 2164 sybase_fetch_field

取得字段信息。

语法: object sybase_fetch_field(int result, int field_offset);

内容说明: 本函数返回的类资料为 result 的字段 (Column) 信息。返回类的属性如下:

numeric - 若为 1 表示本字段为数字类型 (numeric)

返回类资料。

语法: object sybase_fetch_object(int result);

内容说明: 本函数用来将查询结果 result 拆到类变量中。使用方法和 sybase_fetch_array() 几乎相同,不同的地方在于本函数返回资料是类而不是数组。若 result 没有资料,则返回 false 值。另外值得注意的地方是,取回的类资料的索引只能是文字而不能用数字,这是因为类的特性。类资料的特性中所有的属性 (property) 名称都不能是数字,因此只好乖乖使用文字字符串当索引了。关于速度方面,本函数的处理速度几乎和 sybase_fetch_array() 及 sybase_fetch_row() 二函数差不多,要用哪个函数还是看使用的需求决定。

参考: sybase_fetch_array() sybase_fetch_row()

返回单列的各字段。

语法: array sybase_fetch_row(int result);

内容说明: 本函数用来将查询结果 result 之单列拆到数组变量中。数组的索引是数字索引,第一个的索引值是 0。若 result 没有资料,则返回 false 值。

参考: sybase_fetch_array() sybase_fetch_object() sybase_data_seek() sybase_result()

配置指针到返回值的某字段。

语法: int sybase_field_seek(int result, int field_offset);

内容说明: 本函数配置目前的指针到返回值的特定字段中。参数 result 为返回值代码。参数 field_offset 则为指定的字段序数。

释放返回占用内存。

语法: int sybase_free_result(int result);

内容说明: 本函数可以释放目前 Sybase 数据库 query 返回所占用的内存。一般只有在非常担心在内存的使用上可能会不足的情形下才会用本函数。PHP 程序会在结束时自动释放。

取得返回字段的数目。

语法: int sybase_num_fields(int result);

内容说明: 本函数可以得到返回字段的数目。参数 result 为返回值代码。

⬬ 数据库DBA工作总结 ⬬

数据库DBA工作总结



数据库管理员(Database Administrator,简称DBA),是负责管理和维护数据库系统的专业人员。在过去的一段时间里,数据库管理的角色发生了许多改变,主要是由于数据量的增加和技术的进步。以下是我对DBA工作的总结,包括当前的趋势和挑战。



首先,DBA的工作职责涉及数据库的设计、创建、维护和优化。他们负责确保数据库系统的安全性、高可用性和性能。在设计阶段,DBA需要与开发人员密切合作,确定数据库结构和规范。在创建阶段,DBA需要根据需求创建数据库实例,并设置适当的权限和访问控制。在维护阶段,DBA负责备份和还原数据库,监控数据库性能,以及处理数据库故障和数据恢复。在优化阶段,DBA需要分析数据库的性能瓶颈,并提供相应的优化建议。



其次,随着云计算和大数据的发展,DBA的角色也有所改变。越来越多的组织将数据库迁移到云平台上,这需要DBA熟悉云架构和相应的管理工具。此外,大数据技术的兴起也带来了对DBA的新挑战。DBA需要学习和掌握Hadoop、NoSQL和分布式数据库等技术,以支持组织处理海量数据和实现实时分析。



此外,数据安全和合规性成为DBA关注的重点。随着数据泄露和网络攻击的增加,DBA需要采取相应的安全措施,防止未经授权的访问和数据泄露。此外,隐私法规和合规性要求(DBA)需要确保数据库操作符合相关法律法规,并定期进行安全审核和漏洞修复。



同时,DBA还需要具备良好的沟通和协作能力。他们通常需要与开发人员、系统管理员和其他相关部门合作,解决数据库问题和提供技术支持。因此,DBA需要具备良好的团队合作和解决问题的能力。



未来,DBA的角色将继续演变和发展。随着人工智能和自动化技术的兴起,一些重复性和繁琐的数据库管理任务可能会自动化,这使得DBA将有更多时间专注于数据库设计和优化。此外,随着数据分析和人工智能的需求增加,DBA也需要学习数据科学和机器学习等相关领域的知识。



总结而言,数据库DBA的工作是全面的,在设计、创建、维护和优化数据库方面扮演着重要角色。未来,DBA需要不断学习和适应新的技术趋势,以保持自己的竞争力。此外,与相关部门的协作和沟通能力也是DBA必备的技能之一。 DBA的角色将随着技术的进步和需求的变化不断发展,DBA也应紧跟时代的步伐,不断提升自己的能力和知识水平。

本文来源://www.zjan56.com/jiaoanziliao/136939.html