DB2如何使用内存
db2存储过程循环写法
db2存储过程循环写法在DB2数据库中,存储过程可以使用`FOR`循环或`WHILE`循环来实现。
下面是一个简单的DB2存储过程示例,演示了使用`WHILE`循环的写法。
请注意,实际使用时需要根据具体需求进行适当修改:```sqlCREATE PROCEDURE SampleProcedure()LANGUAGE SQLBEGIN--声明变量DECLARE counter INT DEFAULT 1;DECLARE maxCounter INT DEFAULT 10;-- WHILE循环WHILE counter <= maxCounter DO--在这里执行循环体的操作--例如,可以进行数据操作、条件判断等--输出循环次数--注意:DB2中的PRINT语句可以使用CALL DBMS_OUTPUT.PUT_LINE替代CALL DBMS_OUTPUT.PUT_LINE('Iteration: ' || counter);--增加计数器SET counter = counter + 1;END WHILE;END```在上面的例子中,`counter` 是一个计数器,`maxCounter` 是循环的最大次数。
`WHILE` 循环在`counter` 小于等于`maxCounter` 时执行循环体中的操作。
你可以根据实际需求修改循环体内的操作,比如进行数据库操作、条件判断等。
请注意,DB2的具体版本和配置可能会影响存储过程的编写方式,上面的示例基于一般的SQL语法和通用的存储过程规范。
在实际使用中,请查阅相应的DB2文档以确保语法和功能的兼容性。
DB2的参数配置说明
-- Database Manager Configuration
---------------------------------------------------------------------------------------------------
--10. 逐步升级前锁定列表的最大百分比 (maxlocks)
update database configuration for ncdata00 using maxlocks 18;
--11. 异步页清除程序数目 (NUM_IOCLEANERS)
update database configuration for ncdata00 using NUM_IOCLEANERS 3;
--1.应用程序支持层堆大小 (aslheapsz) (4K)
update dbm cfg using aslheapsz 256;
--2.排序堆阈值 (sheapthres) (4K)
update dbm cfg using sheapthres 20000 ;
● 硬件配置在4CPU,4G内存设置情况
系统大约支持用户并发数:80左右
----------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
DB2的参数配置说明
DB2中内存的使用
DB2中内存的使用摘要:本文将向您讲解 DB2 内存使用的基础,以及共享内存和私有内存的概念。
这些内容同时适用于 32 位和 64 位的系统。
简介理解 DB2 如何使用内存,可以防止过度分配内存,并有助于对内存的使用进行调优,从而获得更好的性能。
本文将向您传授 DB2 内存使用的基础,以及共享内存和私有内存的概念。
这些内容同时适用于 32 位和 64 位的系统。
虽然对于 64 位系统有一些限制,但是在未来的一段时间内还不大可能触及这些限制。
因此,我们将焦点放在影响 32 位系统的内存限制,并对之进行详细的讨论。
我们首先讨论一般情况下 DB2 如何使用内存,接着讨论内存管理如何随着平台(AIX、Sun、HP、Linux 和 Windows)的不同而变化,以及它们对 DB2 的影响。
最后,我们将给出一些实际生活中客户处境/问题以及他们的解决方案的有意义的例子。
本文的内容适用于 DB2 version 8。
DB2 内存结构概述图 1中说明了 DB2 内存结构。
这种内存结构在所有平台上都是一致的。
注意:在多分区环境中,下面的图适用于多分区实例中的每个分区。
图 1 - DB2 内存结构DB2 在 4 种不同的内存集(memory set)内拆分和管理内存。
这 4 种内存集分别是:1.实例共享内存(instance shared memory)2.数据库共享内存(database shared memory)3.应用程序组共享内存(application group shared memory)4.代理私有内存(agent private memory)每种内存集由各种不同的内存池(亦称堆)组成。
图 1 也给出了各内存池的名称。
例如,locklist是属于数据库共享内存集的一个内存池。
sortheap是属于代理私有内存集的一个内存池。
我们将详细讨论每一种内存集。
实例共享内存每个 DB2 实例都有一个实例共享内存。
DB2-V9-内存分配与使用策略说课讲解
精品文档一 、 简介理解 DB2 如何使用内存,可以防止过度分配内存,并有助于对内存的使用进行调优,从 而获得更好的性能。
DB2 V9 引入了自动自调整内存管理 ,自适应的自调整内存功能通过自动设置内存配置参 数值以及调整缓冲池大小来简化内存配置任务。
启用此功能后,内存调整器就会在几个内存使用 者(包括:排序、程序包高速缓存、锁定列表和缓冲池)之间动态地分配可用内存资源,从而简 化了内存配置参数调整的工作量。
在 DB2 V9 之前,数据库 的内存配置参数和缓冲池都是由管理员手工设置的。
而数据库的 工作负载很少是静态的,而是动态变化的。
比如,当工作负载类型发生变化(由事务型变成了混 合型等)、用户增加、维护任务的运行或者其它应用程序消耗的资源变化等,都会造成工作负载 在不停的变化。
因此,即便是资深的数据库管理员调优过的系统,在另一个时候也未必是最优的。
数据库管理员需要根据变化随时做出调整,工作量大而效果也不明显。
变化可能在很短的时间内 发生,因此留给数据库管理员作出响应的时间很短。
数据库内存设置尤其容易受这些变化的影响, 因而会严重影响响应时间。
二、 DB2 内存结构精品文档精品文档DB2 在 4 种不同的内存集(memory set)内拆分和管理内存。
这 4 种内存集分别是: 精品文档精品文档 实例共享内存(instance shared memory) 数据库共享内存(database shared memory) 应用程序组共享内存(application group shared memory) (略) 代理私有内存(agent private memory)1. 实例共享内存每个 DB2 实例都有一个实例共享内存。
实例共享内存是在数据库管理器启动(db2start)时分配的,并随着数据库管理器的停止(db2stop) 而释放。
这种内存集用于实例级的任务,例如监控、审计和节点间通信。
第六讲DB2的数据存储管理.
象。
模式可分为系统模式和用户模式两种。
3
系统模式
系统模式是在数据库创建的时候系统自动生成的,系统 模式名称都是以SYS开头的,用户不能创建以“SYS”开头 的模式名称。 SYSIBM 是系统编目表和系统创建的索引的模式。 SYSCAT 该模式下的系统编目视图包含着数据库对象的定义以及数 据库对象的授权信息。SYSCAT.TABLES SYSSTAT 该模式下的系统编目视图包含着数据库的统计信息。 SYSFUN 系统内置函数都被归结到该模式下。
大小的限制以及单个目录大小的限制。
当单个容器中的所以空间都已分配之后,就认为该SMS表 空间已满,即使其它容器中还有剩余空间。 SMS表空间的最大优点是不需太多的管理开销,非常适合 于充当系统临时表空间。
21
创建SMS表空间
create tablespace smstabspc managed by system using('d:\tbspc1','e:\tbspc2','f:\tbspc3')
6
用户模式的使用
显式使用 引用数据库对象的时候指明了对象的模式。 select * from mike.table1 隐式使用
在存取数据库对象的时候不指定数据库对象的模式,系统 会自动使用缺省模式名作为数据库对象的模式,缺省的 模式名就是用户连接数据库时所使用的用户名。 connect to sample user mike using xxx
4
用户模式的创建
显式创建 create schema mike authorization mike
5
db2的使用
db2的使用DB2是IBM公司开发的关系型数据库管理系统,它可以运行在多个操作系统平台上,如Windows、Linux、Unix和IBM的主机操作系统等。
DB2的功能非常强大,可以用于各种企业级应用程序的开发和部署。
在本文中,我们将详细介绍DB2的使用,包括安装、配置、管理和编程等方面。
一、DB2的安装和配置1、先前准备(1)确定需要安装的DB2版本和操作系统平台,以及应用场景和需求;(2)确保计算机符合DB2的最低系统要求,包括硬件和软件配置等;(3)获取适用于操作系统的DB2安装介质,可以从IBM官网或授权渠道获取。
2、安装过程(1)下载安装介质并解压缩至指定位置;(2)运行安装程序,按照提示进行安装,可以根据需要选择安装路径和组件;(3)在安装向导中选择“完整安装”,可以安装DB2服务器、客户端、控制台和示例数据库等组件;(4)在安装向导中设置DB2实例的参数,如实例名称、端口、用户名和密码等,这些参数将决定DB2服务器的启动和运行方式;(5)完成安装后,可以通过命令行或控制台查看DB2实例状态,控制服务器的启停和配置。
3、基本配置(1)启动DB2服务器可以通过控制台或命令行方式启动DB2服务器,如下:Linux/Unix平台:db2startWindows平台:db2cmd,进入命令行模式,输入db2start启动服务器。
(2)连接DB2实例db2 connect to DATABASE user USERNAME using PASSWORDDATABASE为数据库名称,USERNAME为用户名,PASSWORD为密码。
(3)创建数据库db2 create database DATABASEDATABASE为数据库名称。
(4)设定权限和用户PRIVILEGE为权限名称,USER为用户名,OBJECT为对象名称。
二、DB2的管理1、数据库的备份和还原2、数据库的维护TABLENAME为表名称。
DB2 简明运维手册
DB2 简明运维手册数据库启动数据库正常启动的流程包括两个步骤,首先启动数据库实例,在root用户下切换到实例用户su - db2inst1,执行命令db2start然后激活对应的数据库,执行命令: db2 activate db 数据库名。
直到出现:则数据库成功启动。
数据库停止停止数据库使用如下命令:在root用户下切换到实例用户su - db2inst1,执行命令db2stop force,直到出现:则数据库停止成功。
数据库参数DB2的参数分为实例级参数和数据库级参数,以及实例注册变量实例级参数:主要设置实例使用的TCP/IP端口,查看实例端口通过命令:db2 get dbm cfg数据库实例注册变量:确认设置了通信协议为TCPIP,命令如下:如果没有设置则通过命令db2set DB2COMM=tcpip进行设置。
数据库参数确认内存自动调整已经打开,否则连接到数据库并执行db2 update db cfg for sample usingSELF_TUNING_MEM ON设置数据库的缺省日志参数为如果需要修改日志参数,可以通过命令db2 udpate db cfg for 数据库名using 参数名参数值例如增大备用日志文件数量到50,则可以通过命令修改创建数据库在实例用户下,执行db2 "create <数据库名> on <目标路径> using codeset UTF-8 territory cn"这样创建的数据库缺省页面大小(pagesize)为4K(4096),字符集为UTF-8,如果要使用GBK字符集,则把UTF-8修改为GBK即可。
创建缓冲池(bufferpool)为了使用与缺省页面大小不一致的表空间,例如缺省页面大小为4K,但是需要使用32K页的表空间,就必须先创建页面大小为32K的缓冲池,命令如下:db2 "create bufferpool bp32k pagesize 32768"bp32k为缓冲池的名字,通常每种页面大小创建一个缓冲池即可,例如8K页面的缓冲池可以命名为bp8k。
db2 v9的自动存储管理详细教程
IBM的DB2 V9 引入了自动存储器管理,使用自动存储功能可以帮助您简化表空间的存储管理,新创建的使用自动存储功能的表空间,其容器和空间分配完全由 DB2数据库管理器确定。
本文重点介绍使用DB2® V9 自动存储功能的数据库如何进行非增量重定向还原。
简介数据库可能会因为软件或硬件故障而不可用,可能会遇到存储问题、断电、应用程序故障或误操作等各种需要采取不同恢复措施的故障情况。
本文重点介绍使用了DB2® V9 的自动存储功能,不允许增量备份的数据库如何进行重定向还原。
由于使用自动存储器功能的数据库在还原方面和以往有了很大区别,客户在实际使用的过程中容易出现各种问题,所以本文对自动存储功能会有详细的阐述。
自动存储特性最初是在DB2 V8.2.2中引入的,DB2 V9扩展了这一特性,使用自动存储功能可以帮助您简化表空间的存储管理,新创建的使用自动存储功能的表空间,其容器和空间分配完全由 DB2数据库管理器确定。
自动存储管理自动存储器跨磁盘和文件系统自动增大数据库大小。
因此,在保持数据库管理的存储器性能和灵活性的同时,不再需要管理存储器容器。
在DB2 V9.1中,已对多分区数据库增加了自动存储器支持。
如果您使用的是带DPF(Data Partitioning Feature,数据库分区功能)的企业服务器版,那您可以使用支持自动存储器功能的多分区数据库。
在DB2 V9中创建新数据库的时候,默认启用自动存储功能,主要目的是简化表空间的存储管理,使用自动存储功能的数据库有一个或多个相关联的存储器路径,在创建表空间的时候不用指定存储的路径等特性。
对使用自动存储器功能的数据库,其表空间可以使用自动存储管理,也可以不使用自动存储管理。
对于不使用自动存储器功能的数据库,则其表空间不能使用自动存储管理。
自动存储器简化了存储管理,它使您能够指定用于数据库管理器存放表空间数据以及为各种用途分配空间的存储路径。
DB2的参数配置说明
DB2的参数配置说明DB2是一种关系型数据库管理系统(RDBMS),它支持在各种计算环境中存储、操作和检索数据。
在使用DB2时,通过合理的参数配置可以提高数据库的性能和可靠性。
以下是关于DB2参数配置的详细说明。
1.内存参数配置:1.1DB2_MEM_PERCENT:指定了DB2实例可使用的内存百分比,默认值为100。
可以根据实际情况调整此参数,以确保系统有足够的内存资源运行DB21.2DB2_MAX_IOSERVERS:指定了DB2实例可以使用的最大IO服务器数目,默认值为10。
可以根据服务器的硬件配置和负载情况调整此参数,以获得更好的IO性能。
1.3DB2_MAX_MEMORY:指定了DB2实例可以使用的最大内存量,默认为系统可用内存的一半。
可以根据系统的内存情况和负载调整此参数,以提高数据库的性能。
2.查询优化参数配置:2.1DB2_PARALLEL_IO:指定是否允许并行IO,默认为OFF。
可以在高负载环境下启用此参数,以提高查询性能。
2.2DB2_PARALLELISM:指定了DB2查询的并行度,默认为1、可以根据系统的CPU核心数和负载情况调整此参数,以提高查询的并行执行能力。
2.3DB2_STMT_CONC:指定了单个DB2会话中并行执行的最大语句数目,默认为1、可以根据系统的负载情况调整此参数,以提高并行执行的效率。
3.缓存参数配置:3.1DB2_NUM_IOSERVERS:指定了DB2实例可以使用的IO服务器数目,默认为10。
可以根据服务器硬件配置和负载情况调整此参数,以提高IO性能。
3.2DB2_NUM_CHEKBUFFERS:指定了每个缓冲池中的检查缓冲区数目,默认为100。
可以根据系统的内存情况和负载调整此参数,以提高缓存的性能。
3.3DB2_LOGFILSIZ:指定了每个日志文件的大小,默认为64MB。
可以根据系统的IO性能和重做日志的生成速度调整此参数,以避免日志文件的频繁切换。
Db2DMS表空间管理
Db2DMS表空间管理D B2DMS方式表空间管理指南在DB2数据库系统中存在两种类型的基本表空间:系统管理的空间(SMS)和数据库管理的空间(DMS)。
与SMS表空间相关联的容器是文件系统目录,而这些目录中的文件会随着表空间中对象的增长而增长。
文件会增加至达到其中一个容器上的文件系统限制或达到数据库的表空间大小限制。
DMS表空间由文件容器或原始设备容器组成,它们的大小是在将容器指定给表空间时设置的。
当容器中的所有空间都已被使用时,则认为表空间已满。
但是,与SMS不同,您可以使用ALTER TABLESPACE语句来添加或扩展容器,从而允许将更多的存储器空间提供给表空间。
DMS表空间还具有称为“自动调整大小”的功能。
当可以自动调整大小的DMS表空间中的空间被消耗时,DB2数据库系统可能回扩展一个或多个文件容器。
SMS表空间具有类似于自动增长的功能但术语“自动调整大小”专门用于DMS。
启用和禁用自动调整大小(AUTORESIZE)缺省情况下,不会对DMS表空间启用自动调整大小功能。
下列语句创建不启用自动调整大小功能的DMS表空间:CREATE TABLESPACE DMS1MANAGED BY DATABASEUSING(FILE'/db2files/DMS1'10M)要启用自动调整大小功能,将AUTORESIZE YES子句指定为CREATE TABLESPACE 语句的一部分:CREATE TABLESPACE DMS1MANAGED BY DATABASEUSING(FILE'/db2files/DMS1'10M)AUTORESIZE YES启用或禁用自动调整大小功能在已创建DMS表空间之后,还可以通过在ALTER TABLESPACE 语句上使用AUTORESIZE子句来启用或禁用自动调整大小功能:ALTER TABLESPACE DMS1AUTORESIZE YESALTER TABLESPACE DMS1AUTORESIZE NO有两个其他属性(MAXSIZE和INCREASESIZE)与自动调整大小的表空间相关联。
第六章DB2存取控制
DB2认证简介
DB2认证控制着数据库安全性计划的下列几个方面: ➢ 允许谁访问实例和/或数据库 ➢ 在何处/如何验证用户的密码
需要进行DB2认证过程的命令: ➢ ATTACH(连接实例) ➢ CONNECT(连接数据库)
如果在使用Attach和Connect命令的时候,没有提供用户名 和口令,系统将会使用用户在登录操作系统时所使用的用 户名和口令进行认证,认证的过程是由DB2之外的安全设 施来进行的。
如果想赋予某个用户Load权限,必须由具有SYSADM 或者DBADM权限的用户通过grant命令来授予。 db2 grant load on database to user tst1 db2 grant insert on table sales to user tst1
20
LOAD权限
具有LOAD权限的用户可以运行下列命令: ➢db2 quiesce tablespace for table ➢db2 list tablespace ➢db2 runstats(任何表) ➢db2 load insert(必须对表具有插入特权) ➢db2 load restart/terminate after load insert(必须对表具 有插入特权) ➢db2 load replace(必须对表具有插入和删除特权) ➢db2 load restart/terminate after load replace(必须对表具 有插入和删除特权)
CREATE_EXTERNAL_ 用户可以创建一个外部例程(UDF、存储过程
ROUTINE
等),供应用程序和数据库的其他用户使用
28
数据库对象特权
CONTROL (视图)
ALL DELETE INSERT SELECT UPDATE
db2表空间扩容
db2表空间扩容DB2表空间扩容1 - Detect what tablespace has size issuesdb2 list tablespaces show detail2 - Check the percentage of use from the tablespacedb2 list tablespace containers for <tablespace_id> show detail3 - Calculating the size of free space neededNow you are able to calculate the percentage of use from the tablespace. To get this number, do (Used Pages / Useable Pages) * 100 and then with this percentage you can continue calculating how many pages you need to increase to obtain the acceptable amount of free pages.4 - Verifying the filesystem and the free spaceContinuing, now you should check the total amount of free space at the fileystem. Do this typingdf -k <tablespace.path>And you'll be able to verify if it's enough space to extend the tablespace. Remember you can check the page size in the output of "db2 list tablespaces show detail" command.5 - Extending the tablespaceFinally, after all checked, you can execute the command to extend the pages of that tablespace. Do this using:db2 "alter tablespace <tablespace_name> extend (all <page_numbers>)"This will extend the size of your tablespace. Be careful when using EXTEND ALL clause when the tablespace has more than one container; in cases where the tablespace has more than one container, divide the total number of pages you intent to increase by the number of total containers.Example:db2 alter "tablespace IBMDB2SAMPLEREL extend (all 1000)"Alternatively, if it's not possible to extend the actual containers, a possibility is to add new containers to the tablespace. For that, you should enter the following command:db2 "alter tablespace <tablespace_name> add (FILE '<new_container_file>' <size>)"Where size can be in pages (only using the numbers you want), in KBytes (using a K following the number), in MBytes (usinga M following the number) or in GBytes (using a G following the number). Also, please note to use single quotes around the name of the file you'll use as a new container.注意事项:(AIX)1、hacmp 单点控制的lv操作,有时候出问题,建议在A 机直接扩lv, 在hacmp 切换到B机 hacmp⾃动importvg 会把lv 信息更新的。
DB2存储过程精简教程
如果没有明确声明 allowed-SQL,其默认值是 MODIFIES SQL D ATA。不同类型的存储过程执行的效率是不同的,其中 NO SQL 效率最好,MODIFIES SQL DATA 最差。如果存储过程只是读取 数据,但是因为没有声明 allowed-SQL 使其被当作对数据进行修 改的存储过程来执行,这显然会降低程序的执行效率。因此创建存 储过程时,应当明确声明其 allowed-SQL。
数据类型使用存储过程的优点储存过程的结构参数定义变量定义赋值语句条件控制语句循环语句常用操作符异常处理游标使用动态游标使用session临时表使用定长型字符串char变长型字符串varchar整数类型smallintintegerbigint带小数点的数字类型decimalrealdouble时间类型datetimetimestamp对象类型blobclobdbclob减少客户机与服务器之间的网络使用率
20
异常处理4
若SQL PROCEDURE语句执行后出错,引起SQLEXCEPTION条件,且 定义了相应条件的handler,则DB2将控制交给相应handler,若handler运 行成功,则SQLCODE及SQLSTATE重置为0及’00000’;若未定义handl er,则DB2中止PROCEDURE并返回CLIENT。 需要注意的是,任何语句的成功执行都会将SQLCODE、SQLSTATE重 置为0,’00000’。若需要截获出错代码,唯一的方法是在handler的第一条 语句将其中的一个值保存在变量中,如: DECLARE CONTINUE HANDLER for SQLEXCEPTION SET Saved_SQLCODE = SQLCODE; 若PROCEDURE中需要向客户端返回用户错误信息,可使用SIGNAL:
DB2存储进程基础详解
DB2存储过程-基础详解2010-12-20 来源:网络简介DB2 SQL Procedural Language(SQL PL)是SQL Persistent Stored Module 语言标准的一个子集。
该标准结合了SQL 访问数据的方便性和编程语言的流控制。
通过SQL PL 当前的语句集合和语言特性,可以用SQL 开发综合的、高级的程序,例如函数、存储过程和触发器。
这样便可以将业务逻辑封装到易于维护的数据库对象中,从而提高数据库应用程序的性能。
SQL PL 支持本地和全局变量,包括声明和赋值,还支持条件语句和迭代语句、控制语句的转移、错误管理语句以及返回结果集的方法。
这些话题将在本教程中讨论。
变量声明SQL 过程允许使用本地变量赋予和获取SQL 值,以支持所有SQL 逻辑。
在SQL 过程中,在代码中使用本地变量之前要先进行声明。
清单1 中的图演示了变量声明的语法:清单1. 变量声明的语法.-,-----------------.V ||--DECLARE----SQL-variable-name-+------------------------------->.-DEFAULT NULL------.>--+-data-type--+-------------------+-+-------------------------|| '-DEFAULT--constant-' |SQL-variable-name 定义本地变量的名称。
该名称不能与其他变量或参数名称相同,也不能与列名相同。
图1 显示了受支持的DB2 数据类型:DEFAULT值–如果没有指定,在声明时将赋值为NULL。
下面是变量声明的一些例子:DECLARE v_salary DEC(9,2) DEFAULT ;DECLARE v_status char(3) DEFAULT ‘YES’;DECLARE v_descrition VARCHAR(80);DECLARE v1, v2 INT DEFAULT 0;请注意,从DB2 version 开始才支持在一个DECLARE 语句中声明多个相同数据类型的变量。
DB2如何调整表空间大小
DB2如何调整表空间⼤⼩DB2如何调整表空间⼤⼩刚刚接到客户那边打的电话,程序⼀直报错,所有的业务都做不了,拷贝了⼀份应⽤服务器(weblogic)的⽇志,⽇志⾥显⽰:WARN : 2009-06-18 16:24:32,421: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: nullERROR: 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:78}: [ibm][db2][jcc][102][10040] ⾮⾃动批处理出现故障。
虽然已经提交了批处理,但是该批处理的某个成员⾄少发⽣了⼀个异常。
使⽤ getNextException() 来检索已经过批处理的特定元素的异常。
WARN : 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:77}: SQL Error: -289, SQLState: 57011ERROR: 2009-06-18 16:24:32,422: JDBCExceptionReporter[line:78}: Error for batch element #1: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMKWARN : 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:77}: SQL Error: -99999, SQLState: nullERROR: 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:78}: Error for batch element #2: [ibm][db2][jcc][t4][1026][11339] 错误检查:WARN : 2009-06-18 16:24:32,423: JDBCExceptionReporter[line:77}: SQL Error: -289, SQLState: 57011ERROR: 2009-06-18 16:24:32,424: JDBCExceptionReporter[line:78}: Error for batch element #2: DB2 SQL error: SQLCODE: -289, SQLSTATE: 57011, SQLERRMC: SMKERROR: 2009-06-18 16:24:32,424: AbstractFlushingEventListener[line:301}: Could not synchronize database state with sessionorg.hibernate.exception.GenericJDBCException: Could not execute JDBC batch updateat org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)at mit(JDBCTransaction.java:106)at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:575)atorg.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662) at mit(AbstractPlatformTransactionManager.java:632)atmitTransactionAfterReturning(TransactionAspectSupport.java:314) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)at $Proxy803.saveApply(Unknown Source)at nct.mp.counterservice.service.CounterServiceService.applySave(CounterServiceService.java:135)at nct.mp.counterservice.ejbAction.ApplySaveEjbAction.perform(ApplySaveEjbAction.java:32)at com.lbs.sieaf.webcontroller.RequestProcessor.processRequest(RequestProcessor.java:245)at com.lbs.sieaf.webcontroller.MainServlet.doProcess(MainServlet.java:65)at com.lbs.sieaf.webcontroller.MainServlet.doPost(MainServlet.java:49)at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)at com.lbs.sieaf.webcontroller.CSSaftyFilter.doFilter(CSSaftyFilter.java:167)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)at nct.cp.webcontroller.EncodingFilter.doFilter(EncodingFilter.java:66)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3212)at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)Caused by:com.ibm.db2.jcc.b.ni: [ibm][db2][jcc][102][10040] ⾮⾃动批处理出现故障。
db2表空间详解
3.2 表空间设计3.2.1 创建表空间表空间建立数据库系统使用的物理存储设备与用来存储数据的逻辑对象或表之间的关系。
对于非自动存储器表空间,在创建表空间时,必须知道将引用的容器的设备名或文件名。
另外,必须知道与要分配给表空间的每个设备名或文件名及分配空间大小。
对于自动存储器表空间,数据库管理器将根据与数据库关联的存储路径将容器指定给表空间。
在一个数据库内创建表空间,会将容器分配到表空间,并在数据库系统目录表中记录它的定义和属性,然后就可以在此表空间内创建表。
当创建数据库时,会创建3个初始表空间。
这3个初始表空间的页大小基于使用CREATE DATABASE命令时建立或接受的默认值。
此默认值还表示所有将来CREATE BUFFERPOOL和CREATE TABLESPACE语句的默认页大小。
如果在创建数据库时不指定页大小,那么默认大小是4KB。
如果在创建表空间时不指定页大小,那么默认页大小是创建数据库时设置的页大小。
创建表空间可以通过控制中心或命令行创建。
一、使用控制中心创建表空间使用控制中心创建表空间二、使用命令行创建表空间1.创建用户表空间创建SMS表空间:CREATE TABLESPACE <NAME> MANAGED BY SYSTEM USING (‘<path>’)创建DMS表空间:CREATE TABLESPACE <NAME> MANAGED BY DATABASE USING(DEVICE |FILE’<path>’<size>) 创建自动存储器表空间CREATE TABLESPACE <NAME>或CREATE TABLESPACE <NAME> MANAGED BY AUTOMATIC STORAGE例:1.在Windows上,使用3个不同的驱动器上的目录,创建SMS表空间CREATE TABLESPACE TS1 MANAGED BY SYSTEMUSING (‘d:\nxz_tbsp’,’e:\nxz_tbsp’,’f:\nxz_tbsp)2.使用各自有5000页的两个文件容器创建了一个DMS表空间:CREATE TABLESPACE TS2 MANAGED BY DATABASEUSING (FILE’d:\db2data\acc_tbsp’ 5000,FILE’e:\db2data\acc_tbsp’ 5000)在创建DMS表空间时,表空间文件容器不需要重建,DB2自动来创建,但裸设备容器无法自动创建,需要root用户参与。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DB2如何使用内存—— DB2内存结构 如何使用内存
代理私有内存( 代理私有内存(Agent private memory) )
Sort Heap ( sortheap) Sort heap:定义了私有排序所使用的私有内存页的最大数目, 或共享排序所使用的共享内存页的最大数目
用快照信息调节此参数: SortsPerTransaction = (Total Sorts) / (Commit statements attempted + Rollback statements attempted) PercentSortOverflow = (Sort overflows * 100 ) / (Total sorts)
• (1 ((buffer pool data physical reads + buffer pool index phy sical reads) / (buffer pool data logical reads + pool index logical reads)) ) * 100%
DB2如何使用内存—— DB2内存结构 如何使用内存
DB2如何使用内存—— DB2内存结构 如何使用内存
DB2如何使用内存—— DB2内存结构 如何使用内存
– Package Cache(PCKCACHESZ) – 作用:PRECOMPILE, BIND, and REBIND使 用的内存 – 大小: MAXAPPLS*8
DB2如何使用内存—— DB2内存结构 如何使用内存
DB2如何使用内存—— DB2内存结构 如何使用内存
代理私有内存( 代理私有内存(Agent private memory) )
代理私有内存池的大小由括号中的数据库配置参数指定: 代理私有内存池的大小由括号ห้องสมุดไป่ตู้的数据库配置参数指定: Application Heap ( applheapsz) Sort Heap ( sortheap) Statement Heap ( stmtheap) Statistics Heap ( stat_heap_sz) Query Heap ( query_heap_sz) Java Interpreter Heap ( java_heap_sz) Agent Stack Size ( agent_stack_sz) (仅适用于 Windows)
DB2如何使用内存—— DB2内存结构 如何使用内存
代理私有内存( 代理私有内存(Agent private memory) )
dbm级参数 级参数 代理的作用: 代理的作用: 当有外部应用程序连接至 DB2 实例提出访问请求时,DB2 的 DB2 代理就会被激活去应答这些请求 代表应用程序使用内存来优化、构建和执行访问计划,执行排 序,记录游标信息
DB2如何使用内存—— DB2内存结构 如何使用内存
应用程序共享内存( 应用程序共享内存(Application shared memory) )
db级参数 级参数 生命期: 生命期:Application连接上 —— Application连接结束 连接上 连接结束 作用范围:适用于下面的环境, 作用范围:适用于下面的环境,对其他环境这种内存集不存在 多分区(multi-partitioned)数据库。 启用了内部并行(intra-parallel)处理的未分区(non-partitioned)数据库。 支持连接集中器的数据库。
DB2如何使用内存—— DB2内存结构 如何使用内存
• Catalog Cache(catalogcache_sz)目录高速缓存 目录高速缓存
– 作用:用于高速缓存系统目录信息,存储:
SYSTABLES信息(属性的统计信息) 授权信息,如SYSDBAUTH信息和EXECUTE特权 SYSROUTINES信息 (用户定义的存储过程、私有函数的执行权 限)
DB2如何使用内存—— DB2内存结构 如何使用内存
DB2如何使用内存—— DB2内存结构 如何使用内存
– Lock Heap(locklist) – 作用:锁占用的内存空间 – 过小:产生锁升级,降低并发
DB2如何使用内存—— DB2内存结构 如何使用内存 – Lock Heap(locklist)--(续)初值估 --(续 --( 算:
DB2如何使用内存 如何使用内存
初稿
DB2如何使用内存——适用环境 如何使用内存
• 系统:32 位、 64 位 • 平台:AIX、Sun、HP、Linux 、Windows • 版本:DB2 version 8
DB2如何使用内存——数据库结构 如何使用内存
数据库实例(xyzhao) (NUMDB) = 8 最大并发活动数据库数 DB1 DB2 DB3 (MAXAPPLS) = AUTOMATIC 最大并发应用程序数 应用进程A 应用进程B 应用进程C (MAXAGENTS) = 200 最大现有代理程序数 代理1 代理2 代理3 数据库
DB2如何使用内存—— DB2内存结构 如何使用内存
数据库共享内存( 数据库共享内存(Database shared memory) )
db级参数 级参数 生命期:被激活 生命期:被激活——非激活状态 非激活状态 作用范围: 作用范围:本数据库 数据库共享内存 = (主缓冲池 + 4 个隐藏的缓冲池 + 数据库堆 +实用程序堆 + locklist + 包缓存 + 编目缓存) + (estore 的页数 * 100 字节) + 大约 10% 的开销 / 第一次被链接上——最后一个连接被断开 最后一个连接被断开 第一次被链接上
DB2如何使用内存—— DB2内存结构 如何使用内存
代理私有内存( 代理私有内存(Agent private memory) )
代理的生命期: 代理的生命期: 起始: 起始: 1、 NUM_INITAGENTS!=0 实例启动时便有一些代理 2、外部程序连接数据时 终止: 终止: 当事务处理完毕而且数据库连接断开,空闲代理数超过 NUM_POOLAGENTS,代理就消失了,否则变成空闲代理存在 代理池中
– 好处:允许数据库管理器不需要访问系统目录(或分区 数据库环境中的目录节点)来获取先前检测的信息,从而 降低其内部开销。 可以提高下面的整体性能
绑定程序包和编译 SQL 和 EQERY语句 涉及检查数据库级别特权的操作 涉及检查EXECUTE 特权的操作 连接至分区数据库环境中的非目录节点的应用程序
DB2如何使用内存—— DB2内存结构 如何使用内存
• Utility Heap(util_heap_sz )
– 作用:减少backup、restore、export、import和load时 对磁盘I/O的操作 – 调整依据:至少 10000 x CPU 数目
DB2如何使用内存—— DB2内存结构 如何使用内存
太小的缓冲池会产生过多的、不必要的物理 I/O。太大的缓冲池使 系统处在操作系统页面调度的风险中并消耗不必要的 CPU 周期来 管理过度分配的内存。
DB2如何使用内存—— DB2内存结构 如何使用内存
• MAIN BUFFERPOOL(S)——续hit ratio 续 • db2 "get snapshot for all bufferpools"
DB2如何使用内存—— DB2内存结构 如何使用内存
代理私有内存( 代理私有内存(Agent private memory) )
stmtheap - 语句堆大小
分配时间 : 对于每个语句的预编译或绑定期间——预编译或绑定完成时 动态 SQL 或 XQuery 语句,将在程序执行期间使用此工作区 静态 SQL 或 XQuery 语句,在绑定进程时使用此工作区
DB2如何使用内存—— DB2内存结构 如何使用内存
代理私有内存( 代理私有内存(Agent private memory) )
applheapsz - 应用程序堆大小配置参数
分配时间 始化代理程序为应用程序工作时 ——代理程序完成应用程序要做的工作 时
调整建议:
如果您的应用程序接收到一个错误,指示在该应用程序堆中没有足够的 存储空间,则增大此参数的值。
DB2如何使用内存—— DB2内存结构 如何使用内存 • DBHEAP
– DBHEAP (数据库堆):数据库堆控制可用于数据库 数据库堆) 对象信息的内存量。这些对象包括:索引、表、缓冲 池和表空间。事件监视器和日志缓冲区信息也存储在 这里。
• LOGBUFSZ:日志缓冲区的参数 • 存储内容:日志记录写到磁盘之前的缓冲区 • 好处: 降低将日志记录写到磁盘的频率,同时每次可写更多 的日志记录 • 调整依据:log pages read/log pages written尽可能小 • BUFFERPOOL AREA:控制块信息,用于记录bufferpool、 tablespace、indexes等控制信息(可用、无人用、脏页等信 息)
DB2如何使用内存—— DB2内存结构 如何使用内存
• Lock Heap(locklist)--(续)调优 --(续 --(
1、打开针对锁的 DB2 监视器: db2 -v update monitor switches using lock on db2 -v terminate 2、收集数据库快照: db2 -v get snapshot for database on DB_NAME 3、在快照输出中,检查下列各项: