Useful StorePrecedure数据库

2024-08-03

Useful StorePrecedure数据库(共9篇)

Useful StorePrecedure数据库 篇1

数据库(DataBase,简称DB)

严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。数据库能为各种用户共享,具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。

数据库管理系统(DataBase Mangement System,简称DBMS)

数据库管理系统(database management system)是一种操纵和管理数据库的软件,用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。

数据库管理系统主要提供如下功能。

1.数据定义:DBMS提供数据定义语言DDL(Data Definition Language),供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息被存放在数据字典(Data Dictionary)中。

2.数据操作:DBMS提供数据操作语言DML(Data Manipulation Language),供用户实现对数据的追加、删除、更新、查询等操作。

3.数据库的运行管理:数据库的运行管理功能是DBMS的运行控制、管理功能,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性。这些功能保证了数据库系统的正常运行。

4.数据组织、存储与管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法提高存取效率。

5.数据库的保护:数据库中的数据是信息社会的战略资源,随数据的保护至关重要。DBMS对数据库的保护通过4个方面来实现:数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。DBMS的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。

6.数据库的维护:这一部分包括数据库的数据载入、转换、转储、数据库的重组合重构以及性能监控等功能,这些功能分别由各个使用程序来完成。

7.通信:DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。对网络环境下的数据库系统,还应该包括DBMS与网络中其他软件系统的通信功能以及数据库之间的互操作功能。

数据库系统(DataBase System,简称DBS)

数据库系统一般由4个部分组成:

(1)数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。

(2)硬件:构成计算机系统的各种物理设备,包括存储所需的外部设备。硬件的配置应满足整个数据库系统的需要。

(3)软件:包括操作系统、数据库管理系统及应用程序。数据库管理系统(database management system,DBMS)是数据库系统的核心软件,是在操作系统(如Windows、Linux等操作系统)的支持下工作,解决如何科学地组织和存储数据,如何高效获取和维护数据的系统软件。其主要功能包括:数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。

(4)人员:主要有4类。

第一类为系统分析员和数据库设计人员:系统分析员负责应用系统的需求分析和规范说明,他们和用户及数据库管理员一起确定系统的硬件配置,并参与数据库系统的概要设计。数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。

第二类为应用程序员,负责编写使用数据库的应用程序。这些应用程序可对数据进行检索、建立、删除或修改。

第三类为最终用户,他们利用系统的接口或查询语言访问数据库。

第四类用户是数据库管理员(data base administrator,DBA),负责数据库的总体信息控制。DBA的具体职责包括:具体数据库中的信息内容和结构,决定数据库的存储结构和存取策略,定义数据库的安全性要求和完整性约束条件,监控数据库的使用和运行,负责数据库的性能改进、数据库的重组和重构,以提高系统的性能。

其实简单来说数据库,容纳数据的仓库,

数据库系统,数据库、数据库管理系统、硬件、操作人员的合在一起的总称

数据库管理系统,用来管理数据及数据库的系统。

数据库系统开发工具,以数据库管理系统为核心,用高级语言开发一套给傻瓜用户使用的数据库应用系统的软件。

数据库系统包含数据库管理系统、数据库及数据库开发工具所开发的软件(数据库应用系统)。

数据库系统开发工具开发出来的是数据库管理系统还是数据库管理工具??

管理工具,因为很多用户对数据库和数据库管理系统不会用,只会用简单的应用软件,所以需要有掌握技术的人员用数据库开发工具编软件给这些简单用户用。

数据库管理系统与数据库系统开发工具什么区别??

前者是后者开发软件的核心,后者除要以它为基准外,还要用高级语言编写程序。

在装操作系统时是不是已经装上了数据库管理系统??

没装,一般都得额外装,比如VFP,PB,SQLSEVER等。

顺便说一下,第一个人说的问题,

VF不是一个数据库管理系统,准确的说是一个数据库管理系统、数据库系统开发工具的综合体。高级用户,可以利用它直接管理数据库;而简单用户,要依赖高级用户用它所编写的应用程序来管理数据。

Useful StorePrecedure数据库 篇2

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

Sybase封锁原理

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

锁的类型

clearcase/“ target=”_blank“ >cccccc>可申请的锁

已有的锁SUXS∨∨×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是无法看见的。

死锁DEADLOCK

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

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

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

查找死锁原因

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

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

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

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

用sp_who获取关于被阻碍进程的信息

系统过程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

……

用sp_lock浏览锁

要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sqlserver进程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和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。

(责任编辑:铭铭)

Useful StorePrecedure数据库 篇3

下一页 1 2 3

在没有控制文件备份的情况下,重新创建控制文件也是其中一个选择。本文旨在帮助初学者学习之用,谢谢!!

如何恢复一个只有完好数据文件的数据库?

本文欲将此数据文件恢复成数据库TTI,实例名TTI

$ORACLE_HOME=d:oracleora92

1、创建相关目录

d:oracleoradatatti --拷贝数据文件到此目录下,如果没有redolog文件,需要手工创建

d:oracleadminttibdumpd:oracleadmintticdumpd:oracleadmintticreated:oracleadminttipfiled:oracleadminttiudump

2、创建初始化文件(本例的初始化文件D:oracleadminttipfileinit.ora)

可拷贝现有数据库的初始化文件进行修改,主要修改内容如下:

db_name=ttibackground_dump_dest=D:oracleadminttibdumpcore_dump_dest=D:oracleadmintticdumptimed_statistics=TRUEuser_dump_dest=D:oracleadminttiudumpcontrol_files=(“D:oracleoradatattiCONTROL01.CTL”, “D:oracleoradatattiCONTROL02.CTL”, “D:oracleoradatattiCONTROL03.CTL”)instance_name=ttidispatchers=“(PROTOCOL=TCP) (SERVICE=ttiXDB)”

3、创建实例及密码文件

开始-〉执行-〉cmdD:>oradim.exe -new -sid tti -startmode mD:>orapwd.exe file=d:oracleora92databasePWDtti.ora password=zlw001

4、添加监听和连接

1)在d:oracleora92networkadminlistener.ora中的SID_LIST_LISTENER下面添加如下内容:

(SID_DESC =(GLOBAL_DBNAME = tti)(ORACLE_HOME = D:oracleora92)(SID_NAME = tti))

2)在d:oracleora92networkadmintnsnames.ora中添加如下内容:

(这里注意:如果你的d:oracleora92networkadminsqlnet.ora中的参数

NAMES.DEFAULT_DOMAIN = ###,则你的tnsnames.ora中下面的title那里也要改为tti.###)

tti = #title(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST =MIS011)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = tti)))

Useful StorePrecedure数据库 篇4

无论是MySQL还是PostgreSQL数据库,如果你不能每天对其进行备份的话,那么应该每周对这些数据库进行备份操作一次。对许多企业来说,数据库信息代表着网站内容和其它重要的数据,因此,保持数据备份是非常重要的操作。

庆幸的是,MySQL和PostgreSQL都提供将数据库转化成flat-text文件的工具,这样你就可以将数据库信息输入到其它系统或者将数据库备份并保留它。

为了备份一个MySQL数据,可以使用mysqldump工具。例如,为了备份一个叫data的数据库,用户可以进行如下操作:

$ mysqldump -u webuser --password=pass data >data.dump

因为通常情况下,mysqldump采用的是标准格式,你应该将这一标准格式改写成一个文件名(在本例中写成data.dump),

对于这种自动备份的方法,唯一缺陷就是必须在命令行指定密码。

为了备份一个PostgreSQL数据库,可以使用pg_dump工具。访问数据库的用户需要运行这一工具。根据PostgreSQL规定的主机访问规则,你可能不需要给数据库输入密码就可以获得该数据库的信息。操作过程如下:

$ pg_dump data >data.dump

这与mysqldump工具同样有效,但是后者不要求用户名或者密码之类的信息,因为你是作为有权限访问该数据库的用户身份来运行这一工具。

在这两种数据库备份方法中,生成的输出文件提供了重新创建整个数据库的操作说明。因此,这一输出文件包含了数据和表格结构,这正是你创建数据库所必要的信息。

通过以上两类命令,你还可以使用另外一些命令行获取想保存的数据。对于这两类命令,你可以登录网站主页与阅读所有操作信息,并自定义你的数据库备份操作。

Useful StorePrecedure数据库 篇5

很多朋友只用了oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。

实现方法:

1、开始->设置->控制面板->管理工具->服务

停止所有Oracle服务。

2、开始->程序->Oracle - OraHome81->Oracle Installation Products->

Universal Installer

卸装所有Oracle产品,但Universal Installer本身不能被删除

5、运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。

6、运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动

这个列表,删除所有Oracle入口。

7、运行refedit,

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,

删除所有Oracle入口,

8、开始->设置->控制面板->系统->高级->环境变量

删除环境变量CLASSPATH和PATH中有关Oracle的设定

9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标

10、删除Program FilesOracle目录

11、重新启动计算机,重起后才能完全删除Oracle所在目录

12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入

口目录及所有子目录,并从Windows目录(一般为C:WINNT)下删除以下文

件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。

13、WIN.INI文件中若有[ORACLE]的标记段,删除该段

14、如有必要,删除所有Oracle相关的ODBC的DSN

15、到事件查看器中,删除Oracle相关的日志

说明:

如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装。安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了

(责任编辑:铭铭 mingming_ky@126.com TEL:(010)68476636)

Useful StorePrecedure数据库 篇6

1、数据库备份 如图 1 所示:

(1)备份类型:

有四种备份类型:

全部备份: 就是备份ECShop所有的表,一般选择这个方式,这个方式可以在灾难恢复的时候快速恢复。

标准备份:备份一些常用的表。

最小备份: 备份重要的一些数据表。

自定义备份:可以指定备份那些表。这种方法比较灵活。如图 2 所示:

(2)其他选项:

使用扩展插入(Extended Insert)方式:

推荐选择“否”,选“是”可能会导致数据恢复的时候由于 SQL 语句过长而等问题,

两种方式优缺点对比:选“是”:备份数据会比较小;选“否”:备份数据的兼容性比较高。

分卷备份 - 文件长度限制(kb):这个最好设置为 2048 ,因为这样会减少恢复数据的时候的超时等问题。

备份文件名称:这个可以设置一个唯一的备份名称即可。

填写好上面对应的选项后就可以备份了。

2、数据库恢复

在数据库备份的又上角有一恢复备份的链接,如图 3 所示:

点击链接后,进去可以看到恢复的选项,如图 5 所示:

恢复备份的数据来源,可以有两个方式,方式一是从本地提供sql文件来恢复。即从本地的电脑上的备份数据恢复到服务器数据库里面。这个方式直接选择本地的备份文件上传提交即可。

Useful StorePrecedure数据库 篇7

视图技术现在几乎所有的关系型数据库都支持,其应用也十分广泛,

采用视图的优点

1、 让数据库结构实现逻辑上的可扩充性:当数据库系统的物理信息(主要指表结构、表数据)已经完成后,如果由于新的业务要求导致表数据的不够,这时就可以采用视图技术进行扩充,通过视图中强大的SQL来完成功能。

2、 软件开发及数据查询处理方便:采用视图可以简化数据库系统的内部结构及其关系图,因为物理表很多时候是以数据库范式原则分析建立的,尤其在数据冗余处理方面与实际业务会产生较大的分歧,采用视图可以将多个表通过SQL联合起来,产生与实际业务相适应的数据结果,这极大方便了软件开发及数据查询,利用视图的SQL写起来也比较简单。

视图按功能的分类分析

1、 业务视图

业务视图在数据库应用中比较多,往往是实现返回一个具体的业务结果功能,里面的复杂程度随着业务的复杂而提高,这种视图往往只用在软件中的某个固定模块,所以在建立这种视图应考虑产生的业务数据信息是否有用和完整,不用的数据尽量不返回,如果须从其它表产生的数据应考虑在视图中产生,而不要在实现软件开发时的SQL中通过表链接产生,

2、 基本视图

基本视图是指一般是指在软件开发中多个模块都可能用到的视图,这种视图一般比较简单,不会超过四个表的链接,处理基本视图时应做详细的分析,使它的重用性达到最大,切不能因为当前的SQL处理就随便建立一个基本视图。应用了基本视图内的表不应该在外面的SQL中重复出现,否则可能导致ORACLE重复处理的现象。

视图建立备注:

视图中如果出现UNION操作的话在数据不重复的情况下应改为UNION ALL以提高速度。

功能大致相同的视图应在不影响性能及数据的前提下分析是否可以合并成一个视图,这有助于软件模块化开发及调试。

Useful StorePrecedure数据库 篇8

数据库在日积月累的操作过程中,不但自身体积会慢慢增长,其日志的容量大小同样也随着数据库实体文件的增长而增长,且会占用很大的空间.MSSQL数据库的大小包含数据(Data)和事务日志(TransactionLog)两个部分,

数据部分存储的是用户数据库中的数据,包含用户的数据表、视图、存储过程等等内容。

数据部分一般存储与数据库文件组中的.mdb文件中。一般来说,在正常使用的情况下,这

个部分的大小不会经常性地发生很大的变化,除非是用于存储论坛之类快速变化的数据内

容。一般而言,这个部分很少会需要缩小。

事务日志存储的是用户数据库操作的事务记录,主要是用于在数据库服务器发生故障(比

如电源故障之后),恢复数据库中的数据完整性而用的。这个部分一般存储于数据库文件

组中的.ldf文件中,

这个部分的大小经常会发生剧烈的变化。

在某些情况下,由于用户的查询语句(SQL语句)书写的问题,会造成数据库文件大小的

急剧膨胀,尤其是日志文件会变得非常大。这个时候需要对数据库加以缩小。缩小的操作

分为两个步骤:

步骤一 截断数据库中的日志内容

BACKUP LOG 数据库名称 WITH TRUNCATE_ONLY

步骤二 强制数据库压缩其大小

DBCC SHRINKDATABASE ( 数据库名称 , TRUNCATEONLY )

这两个步骤需要使用查询分析器来执行。关于其具体的意义,请参考MSSQL数据库附带的

Transact-SQL的帮助文件。

Useful StorePrecedure数据库 篇9

上周有同事对数据库进行了误操作,问我可不可以回到前一天的状态,恢复数据库的问题以前学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,果然顺利恢复了数据库,高兴地快要跳起来。

上一篇:共同建造卓越班组下一篇:明礼教育汇报材料