




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DBA 数据库管理操作手册前言本文档主要面对的应用对象是项目的实施人员。本文档主要包括的内容是有关sqlserver,oracle ,和db2数据库有关的操作。数据库日常管理(备份和恢复)本部分主要包括数据库的备份和恢复等操作内容。2.1sqlserver数据库Sqlserver数据库以操作简单,使用方便著称,在备份和恢复方面操作较简单。这些操作可以通过图形界面来进行。2.1.1备份鼠标点中要操作的数据库,右键选中“所有任务”中的“备份数据库”。会显示如下的界面:这里选择默认的数据库完全备份方式,在“添加”中选择一个备份存放的路径以后,单击“确定”即可。2.1.2恢复鼠标点中要操作的数据库,右键选中“所有任务”中的“还原数据库”,会弹出如下的界面:在“还原为数据库”可以指定要恢复成数据库的名字。如果恢复在本机上其他的数据库的备份集,则可以选中“还原”中的“数据库”按钮。这时在下拉框中选择要使用备份集的数据库,在选择具体要恢复的备份版本,在该备份版本上打勾,点击“确定”即可。如果恢复非本机上的数据库备份集,则可以选择“还原”中的“从设备”按钮。这时弹出如下的界面:点击“选择设备”按钮以后,会在弹出如下的界面:点击“添加”按钮点击浏览按钮,在备份集所在的目录下选择要恢复的备份文件,点击“确定”即可。2.1.3其他日常管理 删除多余的日志大多数的情况是sqlserver运行了一段时间以后,会产生大量的日志,在实施阶段这些日志有时是不需要保留的。可以用如下的命令删除掉日志,并收缩回空间:dump tran DB_NAMEwith no_logdbcc shrinkdatabase( DB_NAME)在使用的时候用数据库名代替蓝字部分即可。如果想在快速的消除日志,也可以用如下的方法:1.先分离数据库。(右键点中要分离的数据库,选择“所有任务”下的“分离数据库”)2.删除日志文件。3.附加上该数据库。(右键点中数据库,选择“所有任务”下的“附加数据库”)4.sqlserver会提示创建一个日志文件,大小为1m。这样日志文件就重建了,且大小是1m。但是这种方式有一个要求就是数据库要离线一段时间。具体可以根据情况选择使用哪种方法。2.2oracle数据库对于oracle数据库主要介绍数据库的启动,备份和恢复等内容。2.2.1启动和关闭oracle数据库Window 平台: 1. 在操作系统下指定要操作的实例名: 2. 启动sqlplus。 3. 用具有sysdba 权限的用户连上去。如: SQLconn sys/kingdee服务名 as sysdba4. 启动数据库: SQLstartup 关闭数据库:shutdown normal -正常方式关闭数据库shutdown abort -直接关闭数据库,正在访问数据库的会话会被突然终止, 如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。shutdown immediate -立即方式关闭数据库。在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源)。 AIX平台:1 在系统使用oracle用户. su oracle 2 操作系统级设定要操作的实例名3 找到sqlplus所在的目录,启动sqlplus。$ sqlplus /nolog4 在sqlplus中启动数据库。使用具有sysdba权限的用户登录到空闲的实例,然后键入启动命令: Sql startup 关闭数据库命令同Window 平台关闭数据库相同。2.2.2逻辑备份和恢复这部分只介绍逻辑备份和恢复。逻辑备份: Exp 用户名/密码服务名 owner=XXX file=路径 其中:用户名必须是有导出权限的用户,一般具有DBA权限的就可以。Owner:是要导出哪个用户的数据和表。File:是导出的文件存放的位置。 逻辑恢复: Imp 用户名/密码服务名 fromuser=XXX touser=XXX file=路径 其中:用户名:是由导入权限的用户,一般具有DBA权限的就可以。 Fromuser:指该备份对应的原有导出数据库的用户名。 Touser:只要导入到目标数据库中的用户名。 File:要恢复的备份文件的路径。一些必要的前期准备: 在导入之前,如果在目标数据库中没有原导出用户所对应的表空间的话,导入操作是不能成功执行的,这时要先创建一个与原有导出用户所属表空间相同名字的表空间。可以创建一个与原有导出用户不同名的用户。具体的命令如下: 例:1.建表空间: Create tablespace “KINGDEE_DATA_ykport_1103” Datafile d: KINGDEE_DATA_ykport_1103.ora size 100m;2.创建用户: Create user yk_1109 Identified by yk Default tablespace “KINGDEE_DATA_ykport_1103” Quota unlimited on “KINGDEE_DATA_ykport_1103”;3.DBA权限: Grant DBA to yk;4.设置文件的自动增长。Alter database datafile 路径 autoextend on ;例:alter database datafile D:KINGDEE_DATA_YKPORT_1103_2.ORA AUTOEXTEND on;2.3db2数据库2.3.1启动和关闭db2数据库启动数据库:1. “运行”中使用db2cmd命令,进入到db2命令界面:2. “确定”以后,进入到如下的界面:回车以后会出现“命令成功运行”的提示,则数据库启动成功。关闭数据库:1. “运行”中使用db2cmd命令,进入到db2命令界面.2. 在命令界面中输入“db2stop ”命令,如果不成功,则可以输入“db2stop force”命令。3如果出现“命令成功运行”的提示,则数据库成功关闭。2.3.2备份和恢复备份数据库:1. 并进入到db2的管理控制台。路径:“所有程序”IBM db2“一般管理工具”“控制中心”显示如下的界面:2. 在“所有数据库”中选择要进行备份的数据库。右键选择“备份”,则进入到如下的界面: 在“映像”的界面中,“介质”选择“文件系统”,在“添加”中选择备份存放的路径。点击“完成”。3. 如果系统运新一段时间以后出现如下的提示框,则备份成功。备份好了以后,可以在备份路径下看看是否已经存在刚刚备份生成的备份文件。恢复数据库:这里分两种情况:备份集第一次在数据库上恢复和相同数据库的不同版本的恢复。备份集第一次在数据库上恢复这种情况恢复比较简单,在db2提示符下输入如下的命令:Db2restore database dbname into newdbname其中:dbname是备份数据库的名字。 Newdbname是恢复以后使用的新的数据库名字。相同数据库的不同版本的恢复这种情况下,由于数据库备份的不同的版本使用的是同一个容器,所以在恢复不同版本的数据库之前,要重定向要恢复的数据库使用的容器。具体的命令如下:1. 使用重定向命令恢复db2数据库备份。Db2restore database dbname from 路径 into newdbname redirect如下图:2. 查看数据库表空间的情况:Db2list tablespaces show detail详见下图:可以看到有7个表空间。3. 重新设置表空间的容器.Db2 set tablespace containers for 0 using (path f:containertestzytbs0)Db2 set tablespace containers for 1 using (path f:containertestzytbs1)Db2 set tablespace containers for 2 using (path f:containertestzytbs2)Db2 set tablespace containers for 3 using (path f:containertestzytbs3)Db2 set tablespace containers for 4 using (path f:containertestzytbs4)Db2 set tablespace containers for 5 using (path f:containertestzytbs5)Db2 set tablespace containers for 6 using (path f:containertestzytbs6)Db2 set tablespace containers for 7 using (path f:containertestzytbs7)详见下图:4. 继续恢复数据库。Db2restore database dbname continue详见下图:至此数据库已经恢复完毕。可以用下面的语句查看一下:Db2list database directory数据库的性能监控和调试工具3.1sqlserver数据库3.1.1事件探查器主要用来跟踪数据库的SQL执行情况,发现耗时较长的SQL,从而发现影响性能的原因,分支机构可以使用此工具得到跟踪文件,把跟踪文件返回到研发,用来分析和定位问题。这是最有效的定位分析问题的手段。一.使用方法1)启动事件探查器工具在“开始”菜单,依次指向“程序”、“Microsoft SQL Server”,然后单击“事件探查器”。 2)打开该程序后选择“文件”菜单的“新建”的子菜单“跟踪”,打开如下的界面:选择SQL Server服务器名称(或者输入IP地址,如果是本机器可以输入“.”英文句号),然后输入SQL Server的身份验证登陆名和密码,可以和数据库管理员联系。3)选择“事件”选项卡在该图中设置需要跟踪的SQL Server事件类。主要用来跟踪SQL语句和存储过程的事件,通常情况下只要设置TSQL事件类的SQL:BatchCompleted事件和存储过程事件类RPC:Completed、SP:Completed事件即可。4)选择“数据列”选项卡,如下图:在该图中选择要捕获的数据列。建议把左边的数据列全部添加到选定的数据列表中,捕获完整,充分的信息。设置完上面的信息后,点击“运行”按钮。对选定的数据库服务器进行一定事件的跟踪,然后另存为跟踪文件,如下图:可以对数据列:CPU(事件所使用的CPU事件,毫秒为单位),Reads(服务器代表事件执行的逻辑磁盘读取数),Writes(服务器代表事件执行的物理磁盘写入数),Duration(事件所花费的事件总计,毫秒为单位)进行查看,查找读取或写入物理磁盘次数多的操作,耗时比较多的操作。为查找性能问题提供有力的证据,对性能优化也具有参考的价值。各个数据列的具体含义列举如下表,以供参考查阅。数据列列号描述Application Name110创建与 SQL Server 实例的连接的客户端应用程序名。 该列由应用程序传递的值填充,而不是由所显示的程序名填充。 Binary Data2与在跟踪中捕获的事件类相关的二进制值。 ClientProcessID19由主机计算机分配给进程的 ID,在该进程中客户应用程序正在运行。如果客户端提供客户端进程 ID,则填充此数据列。 Column Permissions44表明是否已设置了列权限。分析语句文本,以确定将哪些权限应用到了哪些列。 CPU 18事件所使用的 CPU 时间总计(以毫秒为单位)。 Database ID13USE database 语句所指定的数据库 ID,如果没有对给定实例发出过 USE database 语句,则是默认数据库。如果在跟踪内捕获 Server Name数据列且服务器可用,则 SQL 事件探查器将显示数据库名。 通过使用 DB_ID 函数确定数据库的值。 DatabaseName35正在运行用户语句的数据库的名称。 DBUserName140客户端的 SQL Server 用户名。Duration 13事件所花费的时间总计(以毫秒为单位)。 End Time 15事件结束时的时间。启动事件的事件类(如 SQL:BatchStarting 或 SP:Starting)的该列不填充。 Error31给定事件的错误号。通常是存储在 sysmessages 中的错误号。EventClass127捕获的事件类类型。 EventSubClass121事件子类的类型,提供有关每个事件类的进一步信息。例如,Execution Warning 事件类的事件子类值代表执行警告的类型: 1 = 查询等待。查询必须等待资源(如内存)才能执行。2 = 查询超时。查询在等待执行所需的资源时超时。所有事件类的该数据列均不填充。FileName36所修改的文件的逻辑名称。 Handle33ODBC、OLE DB 或 DB-Library 所用的整数,用以协调服务器的执行。 Host Name18正运行客户端的计算机名。如果客户端提供主机名,则填充此数据列。若要确定主机名,请使用 HOST_NAME 函数。Index ID24受事件影响的对象上的索引 ID。若要确定对象的索引 ID,请使用 sysindexes 系统表的 indid 列。 Integer Data25与在跟踪中捕获的事件类相关的整型值。 LoginName11用户的登录名(SQL Server 安全登录或 Microsoft Windows 登录凭据,格式为 DOMAINUsername)。LoginSid141登录用户的安全标识号 (SID)。可以在 master 数据库的 sysxlogins 表中找到该信息。对于服务器中的每个登录,SID 是唯一的。 Mode32不同事件所用的整数,用于描述事件已接收或要请求的状态。 NestLevel29表示 NESTLEVEL 所返回的数据的整数。 NT Domain Name17用户所属的 Microsoft Windows NT 4.0 或 Windows 2000 域。 NT User Name16Windows NT 4.0 或 Windows 2000 用户名。Object ID22系统分配的对象 ID。ObjectName34引用的对象名。ObjectType28表示事件中涉及的对象类型的值。该值对应于 sysobjects 中的 type 列。Owner Name37对象所有者的数据库用户名称。Permissions19表示所检查的权限类型的整型值。取值为: 1 = SELECT ALL2 = UPDATE ALL4 = REFERENCES ALL8 = INSERT16 = DELETE32 = EXECUTE(仅限于过程)4096 = SELECT ANY (至少一列)8192 = UPDATE ANY16384 = REFERENCES ANYReads16服务器代表事件执行的逻辑磁盘读取数。RoleName38要启用的应用程序角色名。Server Name126跟踪的 SQL Server 实例名。Severity20异常错误的严重级别。 SPID112SQL Server 指派的与客户端相关的服务器进程 ID。Start Time114启动事件的时间(可用时)。State30等同于错误状态代码。Success23表示事件是否成功。取值包括: 1 = 成功。0 = 失败例如,1 表示权限检查成功,0 表示该检查失败。TargetLoginName42对于以登录为目标的操作(例如,添加新登录),是目标登录的名称。TargetLoginSid43对于以目标为登录的操作(例如,添加新登录),是目标登录的 SID。TargetUserName39对于以数据库用户为目标的操作(例如授予用户权限),是该用户的名称。TextData1与跟踪内捕获的事件类相关的文本值。但是,如果正在跟踪参数化查询,则不以 TextData 列中的数据值显示变量。Transaction ID4系统分配的事务 ID。Writes17服务器代表事件执行的物理磁盘写入数。3.2oracle数据库3.2.1图形界面工具(performance manager)Oracle数据库自身带有众多的图形界面诊断工具,避免了输入繁琐的监控命令语句。 进入到oracle诊断工具的界面如下: 具体过程:1 先选中要监控的数据库。2 然后再单击工具菜单,选中diagnostic下面的performance manager。该项是一个全集,如果只是想看其中的top session,则直接可以选中top session。 在performance manager的界面中输入具有dba权限的用户名和密码,就可以看到如下的界面。 Performance manager工具里可以看到和监控的方面非常的多。包括:内存的使用情况,IO情况,oracle数据库进程情况,和sql语句运行的情况等等。下面以查看topsql为例来介绍该工具的使用方法:在上面的界面中选中”SQL”选项,详见下图:其中:在数据页签下面列出了监控的选项列表,该列表详细的列出了每一列的详细说明。在topsql页签,可以输入监控sql的过滤条件。在选项页签,可以选择过滤前几行的sql记录数和相关的排序列。 选择好以后,单击右下角的“显示图表”查看详细的信息。 显示界面可以按任何的一列进行排序。找到要查找的sql语句以后,要查看相关的执行计划,可以单击右键选择“下钻”到“解释计划”就可以看到执行使用的计划。具体查看的时候从步骤号从低到高的顺序查看。 3.2.2 statspack报告在数据库管理中,Oracle提供的statspack是一个很强大的工具,通过Statspack,可以收集系统信息,诊断数据库故障。下面我们来介绍Statspack的安装,配置,使用。为了能顺利地运行Statspack工具,则需要设置以下参数: job_queue_processes;0(如果不采用自动采集数据则可不设) timed_statistics=true(如果不采用自动采集数据则可不设)Statspack的安装 1.建一个单独的表空间用于Statspack或建在tools表空间上(;100MB) $sqlplus“/assysdba” SQLcreatetablespaceperfstat SQLdatafile/oracle/oradata/perfstat.dbf SQLsize500Mextentmanagementlocal; 2.建用户perfstat及表 SQL?/rdbms/admin/spcreate.sql 要求输入表空间及临时表空间. 建完后会在本目录下生成: spauto.lis spcpkg.lis spctab.lis spcusr.lis spdtab.lis spdusr.lis grepI“ora-“*.lis查看是否有错。 3删除statspack表 SQL?/rdbms/admin/spdrop.sql 4.测试statspack 采样数据 SQLexecstatspack.snap 后隔几分钟后再次采样数据 SQLexecstatspack.snap 生成报表 SQL?/rdbms/admin/spreport.sql也可以运行一个job,让数据库自动的定时收集统计信息。运行spauto.sql文件,该文件默认的收集周期是一小时,可以修改收集的周期,为半个小时收集一次。修改的方法是打开该文件,把1/24修改成1/48,收集的周期就改成了半个小时一收集。即修改如下的语句begin select instance_number into :instno from v$instance; dbms_job.submit(:jobno, statspack.snap;, trunc(sysdate+1/24,HH), trunc(SYSDATE+1/24,HH), TRUE, :instno); commit;end;修改成:begin select instance_number into :instno from v$instance; dbms_job.submit(:jobno, statspack.snap;, trunc(sysdate+1/48,HH), trunc(SYSDATE+1/48,HH), TRUE, :instno); commit;end;3.2.3 使用sqlplus中的autotrace.通过以下方法可以把Autotrace的权限授予Everyone,如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。 D:oracleora92sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 3 15:16:03 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL connect sys as sysdba请输入口令:已连接。SQL ?rdbmsadminutlxplan表已创建。SQL create public synonym plan_table for plan_table;同义词已创建。SQL grant all on plan_table to public ;授权成功。SQL ?sqlplusadminplustrceSQLSQL drop role plustrace;drop role plustrace*ERROR 位于第 1 行:ORA-01919: 角色PLUSTRACE不存在SQL create role plustrace;角色已创建SQLSQL grant select on v_$sesstat to plustrace;授权成功。SQL grant select on v_$statname to plustrace;授权成功。SQL grant select on v_$session to plustrace;授权成功。SQL grant plustrace to dba with admin option;授权成功。SQLSQL set echo off DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public这样所有用户都将拥有plustrace角色的权限.SQL grant plustrace to public ;授权成功。然后我们就可以使用AutoTrace的功能了.SQL connect eqsp/eqsp已连接。SQL set autotrace onSQL set timing onSQL 关于Autotrace几个常用选项的说明:SET AUTOTRACE OFF - 不生成AUTOTRACE 报告,这是缺省模式SET AUTOTRACE ON EXPLAIN - AUTOTRACE只显示优化器执行路径报告 SET AUTOTRACE ON STATISTICS - 只显示执行统计信息SET AUTOTRACE ON - 包含执行计划和统计信息 SET AUTOTRACE TRACEONLY - 同set autotrace on,但是不显示查询输出 SQL set autotrace traceonlySQL select table_name from user_tables;已选择98行。已用时间: 00: 00: 00.04Execution Plan-0 SELECT STATEMENT Optimizer=CHOOSE1 0 NESTED LOOPS2 1 NESTED LOOPS (OUTER)3 2 NESTED LOOPS (OUTER)4 3 NESTED LOOPS (OUTER)5 4 NESTED LOOPS (OUTER)6 5 NESTED LOOPS7 6 TABLE ACCESS (BY INDEX ROWID) OF OBJ$8 7 INDEX (RANGE SCAN) OF I_OBJ2 (UNIQUE)9 6 TABLE ACCESS (CLUSTER) OF TAB$10 9 INDEX (UNIQUE SCAN) OF I_OBJ# (NON-UNIQUE)11 5 TABLE ACCESS (BY INDEX ROWID) OF OBJ$12 11 INDEX (UNIQUE SCAN) OF I_OBJ1 (UNIQUE)13 4 INDEX (UNIQUE SCAN) OF I_OBJ1 (UNIQUE)14 3 TABLE ACCESS (CLUSTER) OF USER$15 14 INDEX (UNIQUE SCAN) OF I_USER# (NON-UNIQUE)16 2 TABLE ACCESS (CLUSTER) OF SEG$17 16 INDEX (UNIQUE SCAN) OF I_FILE#_BLOCK# (NON-UNIQUE)18 1 TABLE ACCESS (CLUSTER) OF TS$19 18 INDEX (UNIQUE SCAN) OF I_TS# (NON-UNIQUE)Statistics-0 recursive calls0 db block gets1389 consistent gets0 physical reads0 redo size2528 bytes sent via SQL*Net to client569 bytes received via SQL*Net from client8 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)98 rows processedSQL3.3db2数据库3.3.1图形界面工具和oracle数据库类似,db2数据库也有相应的图形界面的诊断工具:活动监视器。启动界面如下:按照向导的提示选项进行选择数据库信息以后,就进入到如下选择监视任务的界面: 在这个界面里可以选择系统定义的监控内容,也可以自己定义一个监控任务。选定好以后,就进行入到了如下的界面。可以在报告栏中选择关心的运行指标来显示,可以指定一个显示的刷新的频率。如果得到了一个有价值的显示信息,可以把当前的报告通过生成文本报告的形式保留下来。具体可以通过选择“活动监视器”菜单的下的“保存报告输出”选项。 除了活动监视器以外,db2还提供了很多其他的图形界面工具。如可以使用“内存可视化器”来监控db2数据库的内存的使用的情况。3.3.2数据库快照除了图形界面,也可以通过命令通过来抓去snaoshot( 快照)的方式来详细的监控数据库的运行情况:在数据库可以抓取如下几项的快照。在抓去之前先要打开监控的开关:命令如下:db2 update monitor switches using table on bufferpool on statement on sort on LOCK ON抓取快照的命令如下:db2 get snapshot for bufferpools on db1122buf.snapdb2 get snapshot for tables on db1122table.snapdb2 get snapshot for dynamic sql on db1122sql.snapdb2 get snapshot for database on db1122db.snapdb2 get snapshot for applications on db1122app.snap生成的文件放在当前的目录下面。值得注意的是:这个监控是实例级别的,所以抓取快照的命令要在db2cmd的界面下输入。3.3.3死锁监控监控死锁可以有两种方式。一种是通过数据库级别的snapshot来观测在测试期间是否有死锁发生,在数据库级别的snapshot是一个全局的快照,概括了数据库运行的整体情况。其中有一部分是描述锁信息的,详细如下:当前挂起的锁定 = 125锁定等待 = 18数据库等待锁定时间(毫秒) = 未收集在使用的锁定列表内存(以字节计)= 20040检测到死锁 = 0锁定升级 = 0互斥锁定升级 = 0当前正等待锁定的代理程序数 = 0锁定超时 = 0不确定事务数 = 0如果在检测到死锁该项的值大于,则表示有死锁的情况发生。这是可以参照lock 和db2目录下的死锁的详细信息来查看。第二种方式是直接在数据库的目录察看死锁的信息。目录类似如下:D:DB2NODE0000SQL00019DB2EVENTdb2detaildeadlock目录下面有两个文件:一个是控制文件,一个是记录事件的记录文件。其中控制文件记载了监控时间的一些信息,如监控的数据库信息等等。这个.evt文件是一个二进制的文件,不能够直接的打开,需要通过在db2cmd的命令界面下输入如下的命令把evt文件解析成文本文件:Db2evmon -path ./sqltrace.txt详见下图:运行完以后,会在db2detaildeadlock目录下出现一个sqltrace.txt文件。在这个目录中会纪录死锁的详细的信息。和快照不同的是,这个目录文件记录的是自从数据库启动死锁监控以后的所发生的所有的死锁情况。数据库的性能调整的一般方法4.1sqlserver数据库 IO调整 IO的调整对sqlserver数据库同样需要。 我们的帐套默认是放在一个文件中的,这样的当数据量增大以后,io的问题会影响数据库的运行的性能。可以通过添加文件的方式来分离io。还可以通过创建索引的时候指定创建的文件组的方式,来分开索引和数据等等。 如果语句有大量的表扫描,则也是产生大量的IO。调整io的一个很重要的方面是调整语句。尽量让语句使用到最佳的执行方式。 阻塞要检测SQL Server的数据库阻塞,可以采用两种方法之一:1、 使用SQL Server企业管理器当发现可能存在数据库阻塞时,打开SQL Server的“企业管理器”,展开发生阻塞的数据库服务器的“管理”夹,一直到展开“锁/进程 ID”,在此下面会列出类似 SPID 的项目,这些就是当前数据库上的连接。当发生阻塞时,至少会存在两个带锁的 SPID 项目,且以醒目的红色标注,点击相应的SPID 项目,在右边的窗格中会显示出该数据库连接所获得的锁和类型等信息。另外,阻塞时的连接有两种类型,一种是被阻塞的连接,另一种是阻塞源,通过SPID 标签的说明可以知道,但对于具体发生阻塞的原因,此方法并没有太大的帮助,只能确定是否有阻塞。2、 使用阻塞检测脚本使用SQL Server企业管理器来检查阻塞,通常带有很大的随机性,特别是可能当意识到有阻塞时,再打开企业管理器的时候,可能阻塞就自动解除,只能等待阻塞的下一次重现。为此,我们需要使用一种类似后台运行的方法,以批定的采样频率检测数据库可能的阻塞,如果有阻塞,则以阻塞列表的形式打印出来,而且要尽量不能干扰现有系统的运行。为此,我们使用了微软提供的特别优化的阻塞检测脚本:在SQL SERVER服务器上运行该脚本后,会在master系统数据库中创建一个名为sp_blocker_pss80的存储过程,当需要检测某段时间内阻塞的情况时,请使用SQL终端(SQL查询分析器,或者是OSQL、ISQL)编写如下的脚本并执行:WHILE 1=1BEGIN EXEC master.dbo.sp_blocker_pss80 - Or for fast mode - EXEC master.dbo.sp_blocker_pss80 fast=1 - Or for latch mode - EXEC master.dbo.sp_blocker_pss80 latch=1 WAITFOR DELAY 00:00:15ENDGO请注意,为了不影响性能,通常延迟的值不小于5秒,而且不大于60秒。 Topsql语句调整 可以在事件探查器中发现有大量读操作的sql语句。在针对这些语句进行分析和调整。调整方式是添加和调整索引的定义,尽量避免对有大量数据的表上使用全表扫描操作。4.2oracle数据库对于oracle数据库,如下的几个方面可能会影响数据库的运行效率,需要进行监控和调整。内存。IO。竞争。Topsql。Oracle数据库有很多方式查看上述几项的运行情况。但最常用的方式是做statspack,通过生成的报告来发现问题,再结合os收集的信息一起来定位问题。内存使用情况可以通过查看statspack报告中的各个内存区的命中率来判断是否足够。一般要求ufferpool和 share pool的命中率要分别在和以上。否则会影响数据库的运行性能。如果命中率不够则要适当放大该内存的大小。如果系统同时还要一定数量的并发连接,还要计算好pga_aggregate_target的大小。以免内存空间不够。这部分的调整相对较难,主要由DBA进行处理和调整。如果发现oracle数据库的内存需要调整,可以按着如下公式进行调整:PARAMETER: LOCK_SGASGA=物理内存-OS需求-PGAOS需求=0.30*物理内存PGA=并行进程数*3MBSGA分配:LOG BUFFER=3MBLARGE POOL=30MB(DEDICATED SERVER)JAVA POOL=20MBSHARED_POOLselect analyze table |owner|.|table_name| compute statistics; from dba_tables 2* where owner=NM1020; SQL select alter index |owner|.|index_name| compute statistics; from dba_indexes 2* where owner=NM1020;具体的过程如下:Sqlconn system/XXXX服务名Sql spool onSql spool analyzetable.sqlSql select analyze table |owner|.|table_name| compute statistics; from dba_tables 2* where owner=NM1020;。Sql spool offSql analyzetable.sql收集统计信息要定期进行,特别是在有大量的数据装载或发生变化的时候。4.3db2数据库要看Db2数据库是否有问题,首先要看看数据库的db2dialog.log文件,看看是否抛出一些异常信息。从系统抛出的异常信息入手进行调整。和Oracle数据库类似,db2数据库也通过抓取数据库运行时的快照来查看和发现系统问题的。可以抓取几个维度的快照
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 普通话教学课件效果
- 2025年公务员面试国际发展合作问题与答案
- 2025年安全员应急响应试题
- 2025年安全生产安全应急处理题库及答案
- 同坡屋面画法教学课件
- 2025年工程管理试题及答案解析
- 2025年应急救援员面试精讲题库
- 2025年瑜伽教练进阶实战模拟题与答案详解
- 2025年电子商务运营管理师考试试题及答案解析
- 机电专业知识培训心得课件
- GA 1800.6-2021电力系统治安反恐防范要求第6部分:核能发电企业
- 办公室主任竞聘报告课件
- 行为金融学案例
- 万科集团财务管理制度手册207
- “李可中医药学术流派论治厥阴病”-课件
- 通用技术作品设计报告
- 锚杆支护技术规范正式版本
- 隐形眼镜经营管理制度
- 下一代互联网技术
- 皮肤知识与问题性皮肤分析(入行必看)
- 单位消防安全评估报告(模板)
评论
0/150
提交评论