收藏 分享(赏)

db2学习笔记(By 冬瓜头).doc

上传人:jinchen 文档编号:9208751 上传时间:2019-07-29 格式:DOC 页数:107 大小:4.54MB
下载 相关 举报
db2学习笔记(By 冬瓜头).doc_第1页
第1页 / 共107页
db2学习笔记(By 冬瓜头).doc_第2页
第2页 / 共107页
db2学习笔记(By 冬瓜头).doc_第3页
第3页 / 共107页
db2学习笔记(By 冬瓜头).doc_第4页
第4页 / 共107页
db2学习笔记(By 冬瓜头).doc_第5页
第5页 / 共107页
点击查看更多>>
资源描述

1、db2licm -n “DB2ESE“ 2增加许可处理器个数为 2 个。1.安装时把原,目标机时间都改为 20041011,然后安装 DB2,原 DB,sap 存放路径 E: 目标机 DB,sap 存放路径 D:2.原,目标机安装 sap3、在原里打加语言包,配 stms 这样原和目标的数据就不会一样了。可以复制了。停 sap,导出数据到 e:bk 以下都在目标机操作4、目标机 db2slim -a 导入 lic,db2licm -n “DB2ESE“ 2 修改 cpu 数5、目标机的日期从 20041011 为 20071011,启动 db2,sap 成功6、目标机 sap,导入从目标机拷入

2、的备份文件 F:bk7、使用 db2 stop,db2 start ,db2 restore db t01 from f:bk at 20041011113424 报错8、导入失败后,从启 sap,报错,发现 db2 可以 db2 start 但不能浏览表,报 SQL1119N 由于先前的复原不完整,所以不能连接或激活数据库“T01” SQLSTATE=57019安装完 db2 之后再修改时间,是会造成莫名错误的。Db2 disconnect xxxxxxbackup database xxxxx online to f:backup database xxxxx user xxxx tabl

3、espace (xxxxx) to f:backup db testdb tablespace testtest to f:backup提示输入用户密码。 update db cfg for xxxx using logretain recoverywindows 恢复的时候,路径必须和备份时候用的一样。而 unix 则不然,只要路径最后一段是镜像文件,则用路径途中的任何路径都可以识别到镜像。创建数据库时,容器设置大一点,否则会出错。如果提示不允许存储表空间,多半是因为处于备份暂挂,或者前滚暂挂状态,此时备份或者前滚就可以。Restore into 另外的库名的时候,不可以 redirect,

4、会提示出错,信息丢失。当将 logretain 设置为 recovery 之后,当前数据库立即处于 backup peding 状态,如果此时连接数据库,则提示 backup pending 状态。此时需要脱机备份一遍(不加 online) ,就可以连接成功。如果用联机备份恢复之后,提示处于前滚暂挂状态,则 db2 rollforward db xxx to end of logs and complete(或者 and stop,都可以,一样) (and cpmlete 如果不加,将一直处于前滚暂挂状态,虽然已经前滚到了末尾) 。如果 resotre 的时候出如下错误:提示说发生意外系统错误

5、,2007-07-03-15.24.14.187000+480 E513138H390 LEVEL: SeverePID : 2452 TID : 328 PROC : db2syscs.exeINSTANCE: DB2 NODE : 000FUNCTION: DB2 UDB, database utilities, sqludProcessSGRestore, probe:4129MESSAGE : ZRC=0x87020002=-2029912062=SQLB_BPSE “Debug logic error detected“DIA8501C A buffer pool logic err

6、or has occurred.有两种解决办法:1、redirected resotre2、有可能是系统时间产生的问题,比如备份的时候系统时间和恢复的时候系统时间相差好几年,总之系统时间问题。db2 connect to xxxxxx user administrator using xxxxxxxxdb2 list tablespace containers for 0(1,2,3) (show detail)必须先连接到某数据库后才可查看。db2 list tablespaces show detail(在连接到某数据库后方可使用,查看表空间所处的状态信息)db2 list history

7、 backup all for xxxxdb2 get db cfg for xxxxxxdb2 update db cfg for xxx using xxxxx xxxdb2iupdt 用于升级 fixpack 后,而 db2imigr 用于版本升级后。如果用 db2 updata db cfg for xxxxx using newlogpath c:log,必须在 c 盘 log 目录下建立一个log 文件夹,才可以生效。之后重新连接数据库,会发现新路径下面已经存在了和源路径相同的文件。并且可以删除原目录下的日志文件。以后会发现,cfg 中 newlogpath 又为空,日志文件路径c

8、:lognode0000输入 db2 进入 clp,会开一个 db2bp 进程和 db2 进程,connect reset,不会杀任何进程,terminate,会杀掉这两个进程。db2 list database directory(on c:,f:.),加上参数可以看到具体哪个 sql0000 对应哪个数据库。db2 list applications 查看当前应用的连接状态。db2 create regular tablespace xxxxx pagesize 4k managed by database using (file f:container0 2000,file f:cont

9、ainer1 2000) extentsize 8 prefetchsize 8 bufferpool xxxxxxxdb2 alter tablespace xxxxx add () resize ()db2 create database testtest on f: using codeset gbk territory cn collate using system catalog tablespace managed by database using (file xxxxx 2000) extentsize 8 prefetchsize 8 overhead 10.5 transf

10、errate 0.33 user tablespace managed by database using () extentsize 8 prefetchsize 8 overhead 10.5 transferrate 0.33 temporary tablespace managed by database using () extentsize 8 prefetchsize 8 overhead 10.5 transferrate 0.33db2 create table xxxxx (colum1 character(10),colum2 character(20) in users

11、pace1默认日志位置:盘符实例名 node0000sql0000xsqlogdirDb2 alter tablespace xxxxx extend(或者 reduce) (all 1000),将所有容器增加 1000 页。Rebalance 的时候如果启动了 backup,则 backup 会暂停 rebalance 的执行,备份结束后再启动 rebalance。db2 目录结构。1、顶级目录-DB2 ,这是实例名,所谓实例,我理解的就是一套完整的数据库运行环境和内存结构,和 oracle 的实例含义差不多,只不过 oracle 一台机器同一时间只能运行一个实例,而 DB2 则可以同时运行

12、多个实例,每个实例下包含多个数据库,而数据库包含各种对象,如:表、视图、索引、触发器、过程之类的,而和 oracle 相对应的,这些对象都是属于某个用户即属于某个模式。这里模式的概念和 oracle 里类似,也许所有数据库系统中模式的概念都大同小异。2、Node0000,这是数据库分区名,新版本的 DB2 中,数据库分区取代了以前版本中的节点的概念。一个数据库分区是数据库的一个子集,拥有自己的配置文件、数据、索引和日志。在多分区数据库环境下,一个数据库可以被划分为多个分区,不同的分区可以驻留在不同的物理机器上,从而提高整个数据库系统的处理能力。在这种环境下,每个分区都有自己的编号,这个编号会体

13、现在数据库的目录结构中。比如,如果该分区的编号为 3,则该层目录名称应为 NODE0003。对于单分区数据库环境,该目录名固定为 NODE0000。这和 Oracle 集群是不是很像。3、SQL00001,代表了实例下的一个数据库,每建一个数据库,编号就会加一,如果想看看这个目录对应了哪个数据库,可以在 clp 下运行命令 LIST DATABASE DIRECTORY ON D,这个命令查看了 D 盘下的目录,结果显示如下:4、SQLDBDIR ,存储本地数据库目录相关的文件。本地数据库目录中驻留在每个存储着数据库的驱动器或者路径中,用于存取子目录下的本地数据库。该目录中存储的每个条目中包含

14、着数据库名称、数据库别名以及数据库类型和数据库的位置信息。5、DB2EVENT,这个目录保存了 DB2 事件监视器产生的结果。事件监视器用于记录特定事件发生时数据库的活动,记录的结果可以被保存在表、命名管道或者文件中。要察看监控结果的话,可以使用事件分析器这样的图形化工具,或者 DB2EVMON 这样的文本工具。6、db2rhist.asc 文件也就是在备份和恢复过程中会用到的 DB2 恢复历史文件。该文件随着数据库的建立而建立,当对数据库进行了备份、恢复以及 LOAD 等操作时,该文件中都会记录相应信息。这些信息在进行恢复操作将起到至关重要的作用。该文件是如此重要,以至于为了防止该文件损坏,

15、DB2 同时生成了一个 db2rhist.bak 作为该文件的备份,而且,DB2 的 restore 命令还允许从备份映像中单独恢复该文件。用户可以使用 LIST HISTORY 命令来察看该文件的内容,也可以使用 UPDATE HISTORY 命令和 PRUNE HISTORY 命令来修改该文件,但不应当使用文本编辑器来直接处理。7、SQLBP.1 和 SQLBP.2 文件这两个文件中包含数据库中缓冲池的信息,用于对缓冲池进行管理。SQLBP.2 和 SQLBP.1 的内容完全相同,可以起到备份的作用。8、SQLDBCON 文件每个数据库都有自己的配置参数,这些配置信息都被存放在 SQLDB

16、CON 文件中,由于该文件是二进制格式,因此不能使用文本编辑器编辑,而应该使用 GET DB CFG 以及 UPDATE DB CFG 命令来察看和修改。9、SQLINSLK 和 SQLTMPLK 文件这两个文件都是用来保证该数据库只能被数据库管理器的一个实例来使用。10、SQLOGCTL.LFH 文件这个文件就是日志控制文件,里面记录着日志文件的状态,特别是包含了一个叫作LOGHEAD 的变量,该变量定义了当前第一个活动日志,该日志也是崩溃恢复的起点。在进行崩溃恢复的时候,DB2 会利用该变量的值来决定使用哪些日志来进行崩溃恢复。LOGHEAD 对于归档日志也有很重要的意义,该变量的值是归档

17、日志文件和活动日志文件的分割点,文件名序号小于 LOGHEAD 的值的日志文件都可以被归档到其他位置。要察看改变量的值,可以使用 GET DB CFG 命令。 11、SQLOGDIR 目录这个目录是数据库缺省的日志文件存放目录。不过,由于日志文件是数据库恢复策略中的决定性因素,因此要尽量保证日志文件的可用性。如果使用缺省设置,数据库的日志和数据都存放在同一位置,一旦发生介质错误,有可能造成日志文件和数据同时丢失,导致数据库无法恢复。因此,对于关键性应用,建议更改数据库配置参数 NEWLOGPATH 来修改日志文件的存储位置。12、SQLOGMIR.LFH 文件该文件与 SQLOGCTL.LFH

18、 文件的作用类似,不过专门适用于启用了镜像日志的 DB2 环境。13、SQLSPCS.1 和 SQLSPCS.2 文件这两个文件中包含了数据库中表空间的定义以及表空间的当前状态。如果这两个文件被损坏,数据库连接操作将会失败。以上介绍的文件和目录都是用于管理和控制数据库的,而数据库中的数据都是被存储在表空间中。在创建数据库时,系统必须预先创建三个表空间-系统目录表空间、系统临时表空间以及缺省用户表空间,如果不特别指定,这三个表空间都会是 SMS 表空间,由于 SMS 表空间的容器类型只能是目录,因此 DB2 会生成下列三个目录:SQLT0000.0 目录这个目录是系统目录表空间 SYSCATSP

19、ACE 所使用的容器。用于存储系统目录表。系统目录表由一组以 SYSIBM 为模式的表组成,是一个数据库的数据字典。系统目录表里面包含了三类信息。一类是数据库中所有数据库对象的定义信息;一类是数据库中的统计信息,在对应用程序进行优化时需要使用这些统计信息计算存取计划。此外,还有一类是数据库级别的授权信息。如果系统目录表空间处于异常,数据库连接操作将会失败。SQLT0001.0 目录这个目录是系统临时表空间 TEMPSPACE1 所使用的容器,用于存储数据库系统在操作过程中生成的临时数据,比如排序、多表连接等操作时所形成的临时表。每个数据库中必须至少存在一个系统临时表空间。SQLT0002.0

20、目录这个目录是缺省用户表空间 USERSPACE1 所使用的容器,用于存放用户创建的表。用户也可以在数据库创建后创建自己的用户表空间。db2 update db cfg for testdb using mirrorlogpath f:mirrorlog (必须先建立 f:mioorolog 文件夹,disconnect 之后,再 connect,便会发现在这个文件夹下有了 mirror 的 log)db2level 查看当前数据库版本以及安装信息。重定向恢复db2 backup db misdb to yourpath; db2 restore db misdb from yourpath

21、redirect; 执行完此句之后,如果不接着执行 set,执行其他语句可能会提示正处于设置存储器状态,必须执行 set,set 可以只 set 其中某些表空间,未设置新容器的表空间容器位置及大小均不变。 db2 set tablespace container for tablespace-id (你的 misrgl 表空间的 ID) using(file d:datamisrgl1.dat container-size) (file d:datamisrgl2.dat container-size) db2 restore db misdb continue; rollforward重定向

22、容器的时候,如果是 path 路径,则目录中必须为空,不为空的话会提示路径不正确。目标容器大小必须大于原容器大小。原表空间如果是 dms,则新的也必须是 dms,sms 也一样。set 容器路径之后,原来路径以及路径下的容器将被删除,转移到新路径下存放。如果要恢复单独的表空间,必须保证当前数据库中存在这个表空间,如果删除了,则不能单独恢复,必须全库恢复才可以。 (有点问题这一条)重定向恢复途中,可以 db2 list tablespaces show detail 查看当前表空间数量以及状态,以致于不会落下任何表空间。如果重定向恢复到一个新数据库,每个表空间都要重新定义新容器,此时必须 lis

23、t 一下,以防落下表空间,如果没有都 set 容器,将无法完成恢复。即使恢复到新数据库,新库的表空间管理类型必须和原一一对应,不然会提示容器路径不正确。重定向到新库时记住:into 在 from 的后面,如果在前面,则报错。Case 学习:在实例 dong 中备份了数据库 ttt,然后删除实例 dong,创建实例 db2,启动实例 db2,resotre 数据库 ttt,有时会报告容器已在使用错误。此时建立实例 dong,然后在dong 下恢复,成功,删除数据库 ttt,进入实例 db2,恢复,成功,数据库目录为 db2.制作脚本:编辑一个 bat 文件,输入 db2cmd 后接一个 db2

24、命令就可以。如果要用脚本顺序执行多条命令,则需要编写两个脚本,一个内容为 db2cmd aaaa.bat,另一个就是aaaa。bat,内容为一句句的 db2 开头的指令。默认 clp 每条指令后都会隐含一个 commit,如果加+c 参数,则去掉自动 commit,用户手动 commit。如果停止某数据库,然后删除其所有日志,再连接此数据库时候,会自动创建新日志。同样,如果将一个数据库全部删除,包括所有日志也删除(node0000 文件夹也删除) ,原日志存放在一个自定义的路径,而不是默认路径,而且有一个镜像路径,则在 restore 之后,连接此数据库,查看 db cfg,原日志路径和镜像路

25、径均不变,而且默认日志路径下也没有生成日志文件。但是当做一条指令比如 create 指令之后,立即在默认日志路径下生成了日志文件,而且此时查看 db cfg,发现日志路径变为了默认路径,镜像路径不变。如果此时重新建立 mirrorlog 路径,再 create,或者断开数据库再连接,均不会再 mirror 处生成日志。必须手动 update db cfg for xxxx using mirrorlogpath 路径,然后断开,重联数据库,就会看见镜像路径下生辰了新日志。如果恢复之前就存在镜像路径,但是不存在路径下的node0000 文件夹,则恢复之后的任何时刻,不管连接还是不连接 db,都不

26、会创建任何日志。但是如果存在 nod0000 文件夹,则恢复之后,没连接 db 之前,会写入一个 sqllpath.tag,当db2 connect to 之后,立即会写入 3 个镜像日志。如果 update 了 db cfg, newlogpath,则立即会在新路径下自动建立 node0000 文件夹,但是不写入任何日志。一旦重新连接 db 之后,立即生成 4 个文件(一个 tag,三个日志)断开 db 连接,然后删除镜像路径下的 node0000 文件夹,和自定义 newlogpath 路径下的所有文件和文件夹,再连接 db,则提示镜像路径无效,然后手动在镜像路径下建立node0000 文

27、件夹,重联 db,成功,并生成 4 个文件。此时自定义 newlogpath 下因为没有node0000 文件夹,所以也没有任何文件生成,如果手动建立一个 node0000 文件夹,disconn,然后 conn,就会在 newlogpath 下的 node0000 下也生成 4 个文件。如果恢复之前,自定义路径和镜像路径下都有 node0000 文件夹,则恢复之后,未连接之前,均会生成一个 tag 文件,连接之后,会各生成 3 个日志文件。而且自定义路径还是以前的路径,不会转为默认路径。drop db 的时候,相应日志路径,包括镜像路径的文件(node0000 不删除)全部被删除。如果在 d

28、rop 一个数据库之后,提示无法删除一些容器,让清理某某之类的,如果确定确实要删除数据库,则用 db2 uncatalog database xxxxx创建实例:db2icrt xxxxxx,删除实例:db2idrop。创建完后 db2ilist 即可发现新实例已经存在,但是没有运行。切换实例:set db2instancexxxxx,必须 db2start 一下,启动实例,之后才可以创建数据库等等。在 os 系统环境变量 db2instance 中给出了 os 启动默认启动的实例。db2 get instance 显示当前操作的实例。可以开多个 clp,处理多个实例。删除实例之后,其下的数据

29、库不会被删除,如果再创建同名实例,数据库并不会自动归属其下,必须进入当前实例,然后 db2 catalog db xxxx (on f:) ,方可。数据库名不能以数字开头,最大 8 位长。这样一个 case,实例 testtest 正在运行,我 backup 实例 testtest 下的数据库 ttttt,然后删除实例 testtest,然后创建实例 testtest,list 发现 testtest 实例下没有任何数据库。然后进入数据库所在磁盘删除连同实例文件夹一起的所有该实例下的数据库文件。然后 resotre,成功。这样一个 case,实例 testtest 正在运行,我 backup

30、实例 testtest 下的数据库 ttttt,然后删除实例 testtest,然后创建实例 testtest,db2start ,list 发现 testtest 实例下没有任何数据库。此时原来的数据文件都还在,然后 restore,提示本地数据库目录或者系统数据库目录中已存在 ttttt。然后手动 catalog db ttttt,然后恢复,成功。如果只编目了 db,但是对应路径的数据库文件不存在,那么 resotre 的时候也会提示“本地数据库目录或者系统数据库目录中已存在 ttttt”总结,恢复数据的时候,要么编目和尸体文件都没有,要么就都有,才能恢复成功,否则都会提示已存在 db。当

31、删除一个实例之后,尸体文件还在,此时再次创建同名实例,db2 list db diirectory,显示不出东西,但是 db2 list db directory on f:却可以显示出尸体文件所承载的数据库。对于没有日志归档的数据库,恢复的时候不可能进入前滚暂挂状态,因为更本就没有保存上次备份之后的全部日志,所以恢复之后,立即就可用了,上次备份之后的信息将全部丢失。每个实例都对应一个 os 系统服务。db2set -all 显示系统中已设置的注册表变量。db2set -lr 显示全部可配置的注册表变量。db2set parameter=value -i instance_name(某实例特定

32、) ,db2set parameter=value -g(全局特定)db2 get connection state(显示当前是否连接了数据库)创建 dms 的数据库时,有时会抱:数据库服务不能初始化系统路径,错误289,多半是因为 catalog 的容器空间不够大,增加大小试试看。db2 管理数据库文件,只认系统路径,不认系统盘 id,即便换了一块磁盘,只要路径相同,一样可以连接成功。另一个实例备份的数据库,可以在新实例中恢复,恢复之后,隶属于新实例。备份的时候数据库容器优先存放在原来的位置,如果原来的位置是默认在实例名目录下的,则恢复之后存放在新实例名目录下相同层次的目录中。其他控制文件都

33、存放到新实例名目录下。备份的时候,备份路径必须手动先创建,不然提示路径无效的。如果用一份联机备份恢复数据库,则必须有归档日志文件,否则提示节点 0 上丢失了日志文件。从联机备份恢复,不能加 without rf 参数,会报错,因为必须前滚drop db 之后,该 db 的一切文件都被删除。如果是从脱机备份来恢复,即使删除了全部数据文件和日志文件,那么也可以恢复,如果不加 without rf,则恢复完后会提示处于 rf 暂挂状态,此时只要 rf 到日志(其实根本没有日志)末尾就可以,假的。备份的时候会将数据库文件路径信息都记录下来,恢复的时候恢复到原来的路径下。从联机备份恢复时候,归档日志必须

34、要,如果手动复制日志用来保存,则必须停所有应用,停实例,关闭所有 db2 窗口,才能保持这些日志的可用性,不然复制出来也没用,会提示丢失日志文件。从联机备份恢复完毕之后,如果日志在其他路径(用了 overflow log path) ,则恢复之后,数据库默认路径下没有日志文件,此时连接,会提示 io 错误,查看 db2diag。log 会发现提示无法继续记录日志,此时需要将归档的日志手动复制到默认日志路径之下方可,这个比较怪异,因为 disconnect 之后,手动删除日志,然后再 connect,就会自动生成日志,但是刚恢复之后 connect,却会报 io 错误。db2 get snaps

35、hot for database manager 查看当前内存中的参数。Create database 之后,db2 的动作。1、 建立相关目录2、 建立目录下的相关控制文件3、 编目数据库4、 创建一个 buffer pool5、 创建一个临时表空间,两个常规表空间。这三个表空间都用刚才创建的那个 buffer pool。6、 4 个模式被创建:SYSIBM, SYSCAT, SYSSTAT, and SYSFUN,他们的拥有者为 sysibm用户。7、 创建并初始化系统编目表和视图。8、 初始化数据库配置文件9、 绑定工具到数据库10、 进行用户认证和授权DBADM authority,

36、along with CONNECT, CREATETAB, BINDADD, CREATE_NOT_FENCED, IMPLICIT_SCHEMA, and LOAD privileges, are granted to the user who created the database.等等。编目节点和数据库。Protocol: TCP/IP Port Number: 5000 Host Name: DB_SERVER Database Name: TEST_DB Database Server Platform: LinuxCATALOG TCPIP NODE db_server REM

37、OTE db_server SERVER 5000 OSTYPE LINUX CATALOG DATABASE test_db AS test_db AT NODE db_server AUTHENTICATION SERVER在客户端上,装 db2 client,装好之后,就会有 clp,运行 db2cmd,只需下列三步,就可以链接到一个远程的 db 2 server:db2 catalog tcpip node wooshuo remote 172.16.30.67 server 50000db2 catalog db sample as rsample at node wooshuo d

38、b2 connect to rsample user user using password如果在本地管理数据库,本地节点不需要编目,直接 catalog db xxxxx on x:就可以编目本地数据库了。客户端想要访问 server 上的数据库,必须在客户端编目入 server node 和 server database。DB2 的 4 种一致性隔离保护模式:Repeatable Read (RR 模式,只要一个应用扫描到的条目,不管有没有取出,都被上锁,除非此应用提交或者回滚。所以其他应用不能在此应用查询时候更改这些条目。最安全的模式,绝对一致性) Read Stability (RS

39、 模式,只上锁应用取出的条目,其他条目可以被其他应用更新。这种模式可能会产生幻影效应,即此次搜索的符合条件的条目比上次多,因为其他应用可以对其他条目进行更改。其他应用未提交修改之前,当前应用看不到修改的值)Cursor Stability (CS 模式,只上锁游标当前所在的条目。其他条目不上锁。可能会发生幻影效应和不可重复读效应。其他应用未提交修改之前,当前应用看不到修改的值) 。Uncommitted Read(UR 模式,仅当其他应用删除或者 alter 表属性的时候,当前应用取出的数据条目才被上锁,insert,update 都可被其他应用并行产生,当前应用可以读到其他应用未提交的修改值

40、。是最不安全,最不一致的级别。一般用于只读环境。 )Db2 change isolation to (rr,rs,cs,ur)MAXLOCKS 定义了应用程序持有的锁列表的百分比,在数据库管理器执行锁升级之前必须填充该锁列表。当一个应用程序所使用的锁列表百分比达到 MAXLOCKS 时,数据库管理器会升级这些锁,这意味着用表锁代替行锁,从而减少列表中锁的数量。当任何一个应用程序所持有的锁数量达到整个锁列表大小的这个百分比时,对该应用程序所持有的锁进行锁升级。如果锁列表用完了空间,那么也会发生锁升级。数据库管理器通过查看应用程序的锁列表并查找行锁最多的表,来决定对哪些锁进行升级。如果用一个表锁替

41、换这些行锁,将不再会超出 MAXLOCKS 值,那么锁升级就会停止。否则,锁升级就会一直进行,直到所持有的锁列表百分比低于 MAXLOCKS。MAXLOCKS 参数乘以 MAXAPPLS 参数不能小于 1004 种一致性效应:丢失更新效应:没有任何锁机制,多个应用可以同时读一个条目,谁后更新的,算谁的,先更新的将被末掉。脏读效应:T1 时刻 a 读取了一个条目,T2 时刻 a 修改了这个条目的值,T3 时刻 b 读取了该条目,T4 时刻 a 回滚了该条目的值,T5 时刻 b 得到了一个错误值,因为已经回滚了。不可重复读效应:a 在 T1 时刻读取某条目,T2 时刻 b 更改或者删除了这个条目,

42、T3时刻 a 再次读取该条目,结果值变了,或者发现不存在这个条目了。幻影效应:T1 时刻 a 搜索了一批条目,T2 时刻 b 更改了某些其他条目,恰好符合了T1 时刻 a 的搜索条件, T3 时刻 a 再次搜索,此时的条目和第一次搜索的条目不再一致。4 种锁属性:锁对象:指锁定的对象,表,表空间,行等等锁粒度:锁定的对象的粒度,整个表,整个表空间,或者只有几行。锁时效:锁定持续的时间锁模式:规定了访问加锁数据的方法模式。共有 12 种锁模式。ALTER TABLE LOCKSIZE ROW | TABLE任何访问这个表的交易,都会自动加锁整个表ALTER TABLE EMPLOYEE LOCK

43、SIZE ROW,行粒度加锁。默认为行加锁LOCK TABLE TableName IN SHARE | EXCLUSIVE MODE 。share 模式下,其他应用可以读但是不能改,exclusive 模式下,其他交易不能访问。Db2 将所有交易分成 4 类:锁的 6 个知识点:Lock compatibility (锁兼容性):如果一个交易已经加锁,另一个交易想再加锁,如果可以加锁,二者不冲突,就可以说二者是兼容的。Lock conversion (锁转换):就是一个交易如果想增加一个限制性更高的锁在当前数据源上,则 db2 自动将当前锁转换为更高限制性的锁,而不是另分配一个新锁,因为一个

44、交易同时只能对一份给定的数据源上一个锁。Lock escalation (锁扩大):当 locklist 参数配置过低,锁分配已经占用这个内存空间太满的时候,此时再有新交易想要分配锁,此时 db2 会将以前的行粒度锁合并为表粒度锁(这个动作仅当有交易选择了某表时才发生) ,循环执行,直到有足够的空间来分配新锁为止,如果直到最后都没有足够空间,则向应用报错,此交易以前的操作回滚。Lock waits and timeouts (锁等待和超时):一个交易如果长时间占用一个数据源(比如操作人离开操作机) ,可能造成其他交易不能访问当前数据源,新交易会一直等待下去,如果强行终止等不到锁的交易,则会影响

45、数据一致性,所以要引入超时机制。Locktimeout 是db cfg 中的一个参数,设置之后,如果新交易超过这个时间没有得到锁,则回滚,报错。如果设置为1,则表示永远等待。Deadlocks (死锁):两个应用互相请求对方已经掌管的数据源的锁,两边都等待,都挂起,都得不到锁。这种情况 db2 针对每个数据库都提供一个 deadlock detector 进程来解决这个问题。他每隔一段时间(可配置) ,就执行一次来查看是否有死锁发生,并解决。一旦发现死锁发生,他随即选择其中一个交易,让其回滚,并报 sql 错误。Concurrency and granularity(锁并行度和粒度):细粒度的

46、锁比粗粒度的锁耗费资源大。Db2 list command options 显示当前 clp 的设置信息。Db2 updata command options using parameter valueCommand options 也可以用 db2set db2options 来改变:db2set db2options=“-v -z myfile.log“701 学习笔记Db2 按照一下顺序来读取 registry 概要文件:1. Environment variables set with the DB2SET command. (or the export command on UNIX

47、 platforms).2. Registry values set with the instance node level profile (using the DB2SET -i command).3. Registry values set with the instance level profile (using the DB2SET -i command).4. Registry values set with the global level profile (using the DB2SET -g command).Db2 catalog local node xxxxx i

48、nstance xxxxx,编目本地节点和实例。Db2 get admin cfg, 查看 db2 管理器的配置。Db2 catalog local node xxxxx instance xxxx,这条语句,其实就是编目本地节点的本地实例,只是换一个名字,没有实际用处。可以编目多个名称,但是表示的都是同一个实例。编目实例之后,可以再 db2 catalog db xxxxx as xxxxx at node xxxxx 来编目其上的数据库。节点和数据库名称不能重叠(因为都是在本地编目,即使不同的节点(其实是同一个物理节点)下有相同的数据库,也不能重名(因为实际是同一个节点上的) ,必须 as

49、 一个别名才可以。Db2 detach,断开当前节点连接。Db2 attach to node,连接一个节点。出现 sql0752n:当使用 connect 类型 1 设置时,不允许在逻辑单元内连接数据库。此时commit 一下就可以了。要想从客户端处使用 GUI 方式 discover 方法来探索网络上的数据库服务器,则服务器端的 das 必须运行,并且各项参数配置正确:update admin cfg using discover searchupdate admin cfg using discover_comm tcpipdbm cfg 中的配置参数 TRUST_ALLCLNTS,如果设置为 yes,则不管受信任或者不受信任客户端,都在客户端本地认证。如果设置为 no,则不受信任客户端必须发送用户名和密码到 server 端认证,受信任的客户端还是在本地认证。TRUST_CLNTAUTH 参数,如果设置为 clinet,则认证在客户端进行。Understanding DB2学习笔记理解 ddl。Dml,和 dclDb2 环境变量级别设置:Set parameter=value注册表概要文件级别的设置:db2set parametervalue (i,g)DBM 级别

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报