db2查看隔离级别命令
- 格式:docx
- 大小:11.32 KB
- 文档页数:3
DB2数据库中的锁和隔离级别在DB2数据库中,是通过行级锁和表级锁协调作用来提供较好的并发性,同时保证数据库中数据的安全。
在DB2中缺省情况下使用行级锁(当然需要IS/IX锁配合),只有当出现锁资源不足,或者是用命令指定使用表级锁的情况下,才会在应用连接中使用表级锁。
对锁资源分配有兴趣的读者可以参考DB2的管理手册,查找其中关于locklist和maxlocks 参数的论述。
对于用命令指定表级锁的情况,可以参考DB2的命令手册中的lock table 命令,此命令用于直接锁表。
隔离级别主要用于控制在DB2根据应用提交的SQL语句向DB2数据库中的相应对象加锁时,会锁住哪些纪录,也就是锁定的范围。
隔离级别的不同,锁定的纪录的范围可能会有很大的差别。
隔离级别分为RR/RS/CS/UR这四个级别。
下面让我们来逐一论述:1.RR隔离级别(可重复读,Reapeatable Read):在此隔离级别下,DB2会锁住所有相关的纪录。
在一个SQL语句执行期间,所有执行此语句扫描过的纪录都会被加上相应的锁。
具体的锁的类型还是由操作的类型来决定,如果是读取,则加共享锁;如果是更新,则加独占锁。
由于会锁定所有为获得SQL语句的结果而扫描的纪录,所以锁的数量可能会很庞大,这个时候,索引的增加可能会对SQL语句的执行有很大的影响,因为索引会影响SQL语句扫描的纪录数量。
2.RS隔离级别(读稳定性,Read Stability):此隔离级别的要求比RR隔离级别稍弱,此隔离级别下会锁定所有符合条件的纪录。
不论是读取,还是更新,如果SQL语句中包含查询条件,则会对所有符合条件的纪录加相应的锁。
如果没有条件语句,也就是对表中的所有记录进行处理,则会对所有的纪录加锁。
3.CS隔离级别(游标稳定性,Cursor Stability):此隔离级别仅锁住当前处理的纪录。
4.UR隔离级别(未提交的读,Uncommitted Read,UR):此隔离级别下,如果是读取操作,不会出现任何的行级锁。
db2命令参数withur查询DB2数据库,⽼遇到select * from XXX with ur, 好奇ur是什么作⽤(转)DB2中,共有四种隔离级:RS,RR,CS,UR,DB2提供了这4种不同的保护级别来隔离数据。
隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间。
两个应⽤程序即使执⾏的相同的操作,也可能由于选择的隔离级的不同⽽造成加锁的结果不同。
1、ur(Uncommited Read) 就是俗称“脏读“,在没有提交数据的时候能够读到更新的数据;是最低的隔离级别,并且提供最⾼的并⾏性。
2、cs(Cursor Stability) 在⼀个事务中进⾏查询时,允许读取提交前的数据,数据提交后,当前查询就可以读取到数据,update数据的时候并不锁表,在这⼀隔离级别中,游标的“当前”⾏是锁定的。
如果该⾏只是被读,锁定会⼀直持续到⼀个新⾏被访问或者该⼯作单元终⽌。
如果该⾏被修改,锁定会⼀直持续到该⼯作单元终⽌。
3、rs(Read Stability)读稳定性,在⼀个事务中进⾏查询时,不允许读取其他事务update的数据,允许读取到其他事务提交的新增数据,使⽤读稳定性,在同⼀个⼯作单元中的⼀个程序进程所检索的全部⾏都会被锁定。
对于⼀个给定的游标,它要锁定所有与结果集匹配的⾏,例如,如果你有⼀个含1000⾏的表并且查询返回10⾏,那么只有那10⾏会被锁定。
读稳定性使⽤中等级别的锁定。
4、rr(Repeatable Read)可重新性,可重复读是最⾼的隔离级别,提供了最⼤程度的锁定和最少的并⾏。
产⽣结果集的所有⾏都会被锁定,也就是说,即使不必出现在最终结果集中的⾏也会被锁定。
在此该⼯作单元结束前,任何其它程序都不能修改,删除或插⼊⼀个会影响结果集的⾏。
重复读确保程序在⼀个⼯作单元中多次进⾏的同⼀项查询都返回结果。
在⼀个事务中进⾏查询时,不允许任何对这个查询表的数据修改。
深入解析DB2------高级管理、内部体系结构与诊断案例第 6 章我们在进行客户支持时遇到最多的话题之一就是锁。
“为什么DB2 锁住了这个表、行或者对象?”,“这个锁会阻塞多长时间及为什么?”;“为什么出现了死锁?”,“我的锁请求在等待什么?”,诸如此类问题等等。
更仔细地分析一些常见的锁示例可以说明DB2 锁定策略背后的原则。
在国内很多DB2 用户都会碰到有关锁等待、死锁和锁升级等锁相关的问题,本章将会对这些问题以及解决方法做详细的讲解。
本章主要讲解如下内容:∙隔离级别和锁∙加锁总结∙乐观锁∙内部锁∙设置锁相关的注册变量6.1 隔离级别和锁要维护数据库的一致性和数据完整性,同时又允许多个应用程序同时访问一个数据库,将这样的特性称为并发性。
DB2 数据库尝试强制实施并发性的方法之一是使用隔离级别,它决定在第一个事务访问数据时,如何对其他事务锁定或隔离该事务所使用的数据。
DB2 使用下列隔离级别来强制实施并发性:∙可重复读(Reapeatable Read,RR)∙读稳定性(Read Stability,RS)∙游标稳定性(Cursor Stability,CS)∙未提交的读(Uncommitted Read,UR)隔离级别是根据称为现象(Phenomena) 的三个禁止操作序列来声明的:∙脏读(Dirty Read):在事务A 提交修改结果之前,其他事务即可看到事务A的修改结果。
∙不可重复读(Non-Repeatable Read):在事务A提交之前,允许其他事务修改和删除事务A涉及的数据,导致事务A中执行同样操作的结果集变小。
∙幻像读(Phantom Read):事务A在提交查询结果之前,其他事务可以插入或者更改事务A 涉及的数据,导致事务 A 中执行同样操作的结果集增大。
数据库并发性( 可以同时访问同一资源的事务数量) 因隔离级别不同而有所差异,可重复读隔离级别可以防止所有现象,但是会大大降低并发性。
DB2命令DB2命令总汇DB2常⽤命令汇总之⼀db2 -tvf my.sqldb2level 显⽰db2的版本号显⽰SQL出错信息db2 "? sql6031"db2mtrk管理DAS产⽣:root运⾏-dascrt -u dasuser1删除:root运⾏-dasdrop启动:dasusr1运⾏-db2admin start停⽌:dasusr1运⾏-db2admin stopdb2_killipcleandb2start dbpartitionnum 9 restartAIX启动控制中⼼:db2ccDB2⽤户管理:db2 use os to manage users.You can use following steps to add a db2 user:1,add a user on os.2,grant rights to user.GRANT CREATETAB,CONNECT ON DATABASE TO USER FUJIE;grant select, update, delete on table employee to user john with grant option⼀,实例产⽣db2icrt -a AuthType(SERVER,CLIENT,SERVER_ENCRYPT) -p PORT_NAME表空间PREFETCHSIZE的设置,EXTENTSIZE的关系,缓冲池的监控,页清除程序的多少。
临时表空间页⾯⼤⼩与其他表空间页⾯⼤⼩的设置,临时表空间与缓冲池的设置。
example:db2icrt db2 -s ese -p d:\db2 -u Administrator注意:在UNIX 上产⽣实例时需要产⽣⼀个和实例名称相同的⽤户名,和fencedid ⽤户。
如:db2icrt -s ese -u db2fenc2 db2inst2 将在db2inst2⽤户中产⽣实例db2inst2.缺省创建32位实例,创建64位实例:db2icrt -s ese -w 64 -u db2fenc2 db2inst2删除db2idrop instance-name启动db2start停⽌db2stop force连接db2 attach to testdb2db2 detach列出实例db2ilist设置当前实例set db2instance=得到当前实例db2 get instance设置实例⾃动重启动UNIXdb2iauto -ondb2iauto -off获取实例的配置参数db2 get dbm cfg修改配置参数例如:db2 update dbm cfg using authentication server_encryptdb2stop and db2start⼆,声明注册表和环境变量db2set 注意:设置完成后需要退出⽤户,再注册进⼊才能⽣效。
DB2命令大全.txt女人谨记:一定要吃好玩好睡好喝好。
一旦累死了,就别的女人花咱的钱,住咱的房,睡咱的老公,泡咱的男朋友,还打咱的娃。
db2常用命令大全EXPOR T TOD:\PR INTXM L.IXF OF I XF近一年来在项目开发中使用到了IBM的DB29.1的数据库产品,跟Orac le相比一些命令有很大的区别,而它最大的功能是支持xml存储、检索机制,通过XPath进行解析操作,使开发人员免于对xml文件在应用进行解析处理,先对其常用命令进行一下汇总,以免遗忘。
注意:在执行如下命令时,需要首先安装d b2客户端并通过在运行中输入d b2cmd 进行初始化一、基础篇1、db2conne ct to <数据库名> --连接到本地数据库名 db2conne ct to <数据库名> us er <用户名> u sing<密码>--连接到远端数据库2、db2 f orceappli catio n all --强迫所有应用断开数据库连接3、d b2 ba ckupdb db2name<数据库名称> --备份整个数据库数据d b2 re store db <db2na me> --还原数据库4、db2 l ist a pplic ation --查看所有连接(需要连接到具体数据库才能查看)5、d b2sta rt --启动数据库db2st op --停止数据库6、c reate data base<数据库名> usi ng co deset utf-8 ter ritor y CN --创建数据库使用utf-8编码7、db2 cat alog命令db2 c atalo g tcp ip no de <接点名称>remot e <远程数据库地址> ser ver <端口号> --把远程数据库映射到本地接点一般为50000db2catal og db <远程数据库名称> as <接点名称> atnodePUB11 --远程数据库名称到本地接点d b2 CO NNECT TO <接点名称> user <用户名> usi ng <密码> --连接本地接点访问远程数据库8、数据库导出db2lo ok -d <数据库名> -u <用户> -e -o <脚本名称>.s ql --导出数据库的表结构,其中用户空间一般为db2a dmin/db2in st1db2lo ok -d <数据库名> -u <用户> -t <表1> <表2> -e -o <脚本名称>.sq l --导出数据库中表1和表2的表结构db2move <数据库名> ex port --导出数据库数据d b2mov e <数据库名> e xport -tn<表1>,<表2> --导出数据库中表和表数据9、数据库导入db2 -tvf <脚本名称>.sql --把上述导出的表结构导入到数据库表结构d b2mov e <数据库名> l oad -lo re place --把上述“d b2mov e <数据库名> e xport “导出的数据导入到数据库中并把相同的数据替换掉在实际使用过程中,如果用到db2自增主键,需要使用by defa ult,而不是al ways,功能是一样的,但这样在数据移植时候会很方便!10、d b2 co nnect rese t 或d b2 te rmina te --断开与数据库的连接11、db2set d b2cod epage=1208 --修改页编码为120812、db2 d escri be ta ble <表名> --查看表结构13、db2 list tabl es --查看数据库中所有表结构d b2 li st ta blesfor s ystem --列出所有系统表14、db2listtable space s --列出表空间二、高级篇15、f etchfirst 10 r ows only --列出表中前10条数据例如:s elect * fr om <表名> fe tch f irst10 ro ws on ly16、coa lesce(字段名,转换后的值) --对是nul l的字段进行值转换例如:s elect coal esce(id,1) fro m <表名> --对表中id如果为null转换成117、da yofwe ek(日期) --计算出日期中是周几(1是周日,2是周一.......7是周六) da yofwe ek_is o --计算出日期中是周几(1是周一.......7是周日)例如:dayof week(date(2008-01-16)) --它会返回是4,代表星期三dayof week_iso(d ate(2008-01-16)) --它会返回是3,代表星期三18、da yofye ar(日期) --一年中的第几天,范围在1-366范围之内注意:参数中日期的格式是YYYY-MM-DD的形式,如果不是需要进行转换,否则函数不能使用例如:日期是20080116必须要进行转换da yofwe ek(co ncat(conca t(con cat(s ubstr(open Date,1,4),'-'),conca t(sub str(o penDa te,5,2),'-')),s ubstr(open Date,7,2))) asweek)这样格式正确的。
查询数据库隔离级别语句数据库隔离级别是指在多个事务同时访问数据库时,数据库系统为了保证数据的一致性和完整性而采取的一种机制。
不同的隔离级别会影响到事务的并发性和数据的一致性,因此在实际应用中需要根据具体情况选择合适的隔离级别。
以下是常见的查询数据库隔离级别语句:1. 查看当前数据库的隔离级别:```SELECT @@TX_ISOLATION;```2. 设置当前会话的隔离级别为READ UNCOMMITTED:```SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;```3. 设置当前会话的隔离级别为READ COMMITTED:```SET TRANSACTION ISOLATION LEVEL READ COMMITTED;```4. 设置当前会话的隔离级别为REPEATABLE READ:```SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;```5. 设置当前会话的隔离级别为SERIALIZABLE:```SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;```6. 查看当前会话的隔离级别:```SELECT @@TRANCOUNT, @@OPTIONS, @@ISOLATION_LEVEL;```7. 查看当前数据库支持的隔离级别:```SELECT * FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED');```8. 查看当前数据库的默认隔离级别:```SELECT name, is_read_committed_snapshot_on FROM sys.databases WHERE name = 'database_name';```9. 查看当前会话的事务状态:```SELECT transaction_id, name, transaction_begin_time, transaction_type FROM sys.dm_tran_active_transactions;```10. 查看当前会话的事务锁信息:```SELECT resource_type, resource_database_id, resource_associated_entity_id, request_mode, request_status FROM sys.dm_tran_locks WHERE request_session_id = @@SPID;```以上是常见的查询数据库隔离级别语句,通过这些语句可以了解当前数据库的隔离级别、设置会话的隔离级别、查看事务状态和锁信息等。
1.DB2产品的级别有那些?企业版的NTERPRISEEDITION工作组版WORKGROUPEDITION企业扩展版ENTERPRISEEXTENDEDEDITION个人版的PERSONALEDITION卫星版的SATELLITEEDITION微型版的EVERYPLACE2.可以连接到DB2数据库的产品有哪些?DB2客户端DB2CONNECTDB2DATAPROPAGATORDB2NET.DATADB2DATAJOINERDB2RELATIONALCONNECTWEBSPHERE应用服务器等3.DB2支持的通讯协议有哪些?TCP/IPNETBIOSAPPGIPX/SPXNAMEPIPE等4.DB2客户端产品有哪些?DB2运行时间客户端DB2RUNTIMECLIENTDB2管理客户端DB2ADMINISTRATIONCLIENTDB2应用程序开发客户端DB2APPLICATIONDEVELOPMENTCLIENTDB2瘦客户端DB2THINCLIENT5.一个数据库是否可以安装在多个数据库服务器上?可以6.从哪个版本后存储过程可以用SQL语句来创建?7.1版后7.DB2提供哪些关系扩展器?文本扩展器TEXTEXTENDER图象扩展器IMAGEEXTENDER音频扩展器AUDIOEXTENDER视频扩展器VIDEOEXTENDER空间数据扩展器SPATIALEXTENDERXML扩展器XMLEXTENDER网络搜索扩展器NET.SEARCHEXTENDER8.WINDOWS和OS/2环境下的DB2安装目录结构?用SETUP.EXE来安装\SQLLIB安装的根目录,包括README文件\SQLLIB\ADSM包含ADSTAR分布式存储管理器文件\SQLLIB\BIN包含DB2工具的可执行文件\SQLLIB\BND包含DB2工具的绑定文件\SQLLIB\CC包含运行控制中心所需的文件\SQLLIB\CFG包含默认的系统配置文件\SQLLIB\CONV包含代码页转换表文件\SQLLIB\DB2默认的实例目录\SQLLIB\DB2DAS00缺省的DB2管理服务器目录\SQLLIB\DOC包含DB2联机手册\SQLLIB\FUNCTION默认的用户自定义函数目录\SQLLIB\FUNCTION\UNFENCED默认的非隔离用户自定义函授目录\SQLLIB\HELP联机帮助文件\SQLLIB\JA V ADB2所需的JA V A类库JA VA12包含JDK1.2的支持程序\SQLLIB\MISC包含HTML搜索服务器文件\SQLLIB\MSG\PRIME包含信息文件\SQLLIB\QP包含QUERYPATROLLER的客户端文件\SQLLIB\SAMPLES包含样例程序和样例脚本\SQLLIB\SPMLOG包含DB2同步点管理器日志文件\SQLLIB\THNSETUP包含瘦客户端安装文件9.UNIX和LINUX环境下的DB2安装目录结构?用DB2SETUP.EXE来安装安装的根目录下还将创建以下目录:README安装的根目录,包括README文件ADM包含系统管理工具文件ADSM包含ADSTAR分布式存储管理器文件BIN包含DB2工具的二进制可执行文件BND包含DB2工具的绑定文件CC包含运行控制中心所需的文件CFG包含默认的系统配置文件CONV包含代码页转换表文件DOC包含DB2联机手册FUNCTION默认的用户自定义函数目录FUNCTION\UNFENCED默认的非隔离用户自定义函授目录INSTALL包含安装程序INSTANCE包含实例脚本JA V ADB2所需的JA V A类库LIBDB2库文件MAP包含DB2CONNECT使用的映射文件MISC包含HTML搜索服务器文件SAMPLES包含样例程序和样例脚本MSG\$L包含DB2信息文件10.AIX下用哪个命令来安装DB2?INSTALLP命令11.同一操作系统下可以安装多个DB2数据库?可以的12.如何停止实例?DB2STOP13.如何启动实例?DB2START14.如何修改注册项的值?DB2SET可以修改如:设定当前实例的一个参数DB2SETPARAMETER=V ALUE设定一个全局级的参数DB2SETPARAMETER=V ALUE-G(小写)查看能在配置文件注册表中设置的所有变量的列表DB2SET-LR(小写)15.如何在CLP执行操作系统的命令?在命令前加"!"作为前缀DB2=>!DIRC:\16.在CLP中命令过长怎么办?用"\"作为续行符号17.如何获得DB2的命令的语法相关信息?DB2?显示所有DB2命令DB2?COMMAND显示命令信息DB2?SQLnnnn显示这个SQLCODE的解释信息DB2?DB2nnnn显示这个DB2错误的解释信息18.如何查看当前CLP的设置?DB2=>LISTCOMANDOPTIONS19.如何更新当前CLP会话的特定项设置?DB2UPDATECOMMANDOPTIONSUSINGOPTIONS...MANDWINDOWS可以通过哪个命令调用?DB2CMD命令21.管理服务器的默认名为?UNIX下为DB2ASWINDOWS下为DB2DAS0022.常用管理DB2服务器实例的命令?DB2ADMINSTART启动DB2管理服务器实例DB2ADMINSTOP停止DB2管理服务器实例DASICRTUNIX下创建DB2管理服务器实例DASIDROPUNIX下删除DB2管理服务器实例DB2ADMINCREATEWINDOWSOROS/2下创建DB2管理服务器实例DB2ADMINDROPWINDOWSOROS/2下删除DB2管理服务器实例DB2GETADMINCFG显示DB2管理服务器的配置参数DB2UPDATEADMINCFG修改DB2管理服务器的配置参数DB2RESETADMINCFG将DB2管理服务器的配置参数设为默认值23.DB2目录分为哪几种?系统数据库目录本地数据库目录节点目录DCS目录管理节点目录24.如何查看系统数据库目录?LISTDBDIRECTORY25.如何查看数据库服务器目录?LISTNODEDIRECTORY26.DB2实例的服务器的默认端口是?50000服务器名称为DB2CDB227.DB2UDB服务器端的认证类型有?SERVERSERVER_ENCRYPTCLIENTDCEDCE_SERVER_ENCRYPTKERBEROSKRB_SERVER_ENCRYPT28.DB2客户端的认证类型有?SERVERSERVER_ENCRYPTDCSDCS_ENCRYPTCLIENTDCE29.DB2中有哪几种类型的权限?SYSADM系统管理权限SYSCTRL系统控制权限SYSMAINT系统维护权限DBADM数据库管理权限LOAD对表进行LOAD操作的权限30.不能通过GRANT授权的权限有哪种?SYSAMSYSCTRLSYSMAINT要更该述权限必须修改数据库管理器配置参数31.表的类型有哪些?永久表(基表)临时表(说明表)临时表(派生表)32.如何知道一个用户有多少表?SELECT*FROMSYSIBM.SYSTABLESWHERECREATOR='USER'33.如何知道用户下的函数?select*ERFUNCTIONselect*fromsysibm.SYSFUNCTIONS34.如何知道用户下的VIEW数?select*fromsysibm.sysviewsWHERECREATOR='USER'35.如何知道当前DB2的版本?select*fromsysibm.sysvERSIONS36.如何知道用户下的TRIGGER数?select*fromsysibm.SYSTRIGGERSWHERESCHEMA='USER'37.如何知道TABLESPACE的状况?select*fromsysibm.SYSTABLESPACES38.如何知道SEQUENCE的状况?select*fromsysibm.SYSSEQUENCES39.如何知道SCHEMA的状况?select*fromsysibm.SYSSCHEMATA40.如何知道INDEX的状况?select*fromsysibm.SYSINDEXES41.如何知道表的字段的状况?select*fromsysibm.SYSCOLUMNSWHERETBNAME='AAAA'42.如何知道DB2的数据类型?select*fromsysibm.SYSDATATYPES43.如何知道BUFFERPOOLS状况?select*fromsysibm.SYSBUFFERPOOLS44.DB2表的字段的修改限制?只能修改V ARCHAR2类型的并且只能增加不能减少.45.如何查看表的结构?DESCRIBLETABLETABLE_NAMEORDESCRIBLESELECT*FROMSCHEMA.TABLE_NAME46.如何快速清除一个大表?ALTERTABLETABLE_NAMEACTIVENOTLOGGEDINITALLYWITHEMP TYTABLEALTER TABLETABLE_NAME ACTIVE NOT LOGGED INITALLY WIT H EMPTYTABLE两个commit之间的delete 动作是不记日志的commitalter table ab activate not logged intiallydelete ab where id >1000commit(创建的表ab不记录日志:create table ab (id int) not logged initially)47.如何查看数据库的包?select*fromsysCAT.PACKAGES48.如何查看数据库的存储过程?SELECT*FROMSYSCAT.PROCEDURES49.如何查看表的约束?SELECT*FROMSYSCAT.CHECKSWHERETABNAME='AAAA'50.如何查看表的引用完整约束?SELECT*FROMSYSCAT.REFERENCESWHERETABNAME='AAAA'51.安装DB2默认的事例名称是?在WINDOWS或OS/2中默认的是DB2在LINUX或UNIX环境下默认的是DB2INST152.安装后的默认帐户是?在WINDOWS或OS/2中默认的是DB2ADMIN 在LINUX或UNIX环境下默认的是DB2AS 53.事例的类型有哪些?CLIENT(客户)STANDALONE(独立的)SATELLITE(卫星)EEDB2EEE54.如何创建事例?DB2ICRTINSTNAME<...PARAMETERS>55.如何列出系统上的所有可用事例?DB2ILIST56.如何知道当前对话用的是哪个事例? GETINSTANCE57.如何更新事例的配置?DB2IUPDT58.如何删除事例?DB2IDROPINSTANCE_NAME具体步骤如下:停止事例上所有应用程序在所有打开的命令行上执行DB2TERMINATE运行DB2STOP备份DB2INSTPROF注册变量指出的事例目录退出事例所有登陆者使用DB2IDROP也可以删除ID59.如何列出本地系统上有许可信息的所有产品?DB2LICM-L60.如何增加一产品许可?DB2LICM-AFILENAME61.如何删除一个产品的许可?DB2LICM-RPRODUCTPASSWORD62.如何更新已购买的许可数量?DB2LICM-U63.如何强制只使用已经购买的数量?DB2LICM-EHARD64.如何更新系统上所使用的许可政策类型?DB2LICM-PREGISTEREDCONCURRENT65.如何更新系统上的处理器的数量?DB2LICM-N66.如何查询许可文件记录的版本信息?DB2LICM-V67.如何查询DB2LICM的帮助信息?DB2LICM-H68.一个数据库至少包括哪些表空间?一个目录表空间一个或多个用户表空间一个或多个临时表空间69.根据数据与存储空间之间移动的控制方式不同,分哪两种表空间? 系统管理的空间(SMS)数据库管理的空间(DMS)70.如何列出系统数据库目录的内容? LISTDATABASEDIRECTORY71.CREATEDATABASE是SQL命令吗?不是,是系统命令72.如何查看数据库ABC的配置文件的内容? GETDATABASECONFIGURATIONFORABC73.如何将数据库ABC的参数设置为默认数值? RESETDATABASECONFIGURATIONFORABC74.如何修改数据库ABC配置参数数值? UPDATEDATABASECONFIGURATIONFORABCUSING75.如何重新启动数据库?RESTARTDATABASEDATABASE_NAME76.如何激活数据库?ACTIV ATEDATABASEDATABASE_NAME77.如何停止数据库?DEACTIV ATEDATABASEDATABASE_NAME78.如何删除数据库?DROPDATABASEDATABASE_NAME79.如何建立模式?CREATESCHEMASCHEMA_NAME80.如何设置模式?SETSCHEMA=SCHEMA_NAME81.表的类型有哪些?基本表结果表概要表类型表子类型子表声明的临时表系统临时表82.如何定义序列? CREATESEQUENCEORDERSEQSTARTWITH1INCREMENTBY1NOMAXV ALUENOCYCLECACHE2483.如何将表置于检查挂起状态?SETINTEGRITYTABLE_NAMEOFF84.如何获得表的排斥锁?LOCKTABLETABLE_NAMEINEXCLUSIVEMODE85.如何把表调整为没有检查数据的在线状态?SETINTEGRITYFORTABLE_NAMEALLIMMEDIATEUNCHECKED86.如何解除表的锁定?COMMIT87.如何关闭表的日志?ALTERTABLETABLE_NAMEACTIVENOTLOGGEDINIALLY88.如何删除表?DROPSCHEMA.TABLE_NAME89.如何重命名表?RENAMETABLE_OLDTOTABLE_NEW90.如何取当前时间?SELECTCURRENTTIMESTAMPFROMSYSIBM.SYSDUMMY1 91.如何创建DB2的概要表?DB2的概要表功能类似于ORACLE的实体化视图!语法为:CREATESUMMARYTABLETABLE_NAMEAS(FULLSELECT)...例如:定义一个可以刷新的概要表:CREATESUMMARYTABLETABLE_NAMEAS(SELECT*FROMTABLE_ NAME1WHERECOL1='AAA')DATAINITIALLYDEFERREDREFRESHDEFERRED其中DATAINITIALLYDEFERRED规定不能将数据作为CREATETABLE语句的一部分插入表中.REFRESHDEFERRED规定表中的数据可以在任何使用了REFRESHTABLE语句的时候获得刷新!92.如何刷新概要表?REFRESHTABLESUM_TABLE其中SUM_TABLE为概要表.93.如何修改概要表?ALTERTABLESUM_TABLE...94.如何创建临时表?语法:DECLAREGLOBALTEMPORARYTABLETABLE_NAMEAS(FULLSELECT)DEFINITIONONLYEXCLUDINGIDENTITYCOLUMNATTRIBUTESONCOMMITDELETEROWSNOTLOGGED第一行规定临时表的名称.第二行规定临时表的列的定义.第三行规定不是从源结果表定义中复制的恒等列.第四行规定如果没有打开WITHGOLD光标,将会删除表的所有行.第五行规定不对表的改变进行记录.例如:DECLAREGLOBALTEMPORARYTABLEDEC_BSEMPMSAS(SELECT*FROMBSEMPMS)DEFINITIONONLYEXCLUDINGIDENTITYCOLUMNATTRIBUTESONCOMMITDELETEROWSNOTLOGGED95.视图的管理?如何创建视图:CREATEVIEWVIEW_NAMEASSELECT*FROMTABLE_NAMEWHERE...删除视图:DROPVIEWVIEW_NAME96.如何知道视图定义的内容?SELECT*FROMSYSCAT.VIEWS中的TEXT列中.97.如何创建别名?CREATEALIASALIAS_NAMEFORPRO_NAME后面的PRO_NAME可以是TABLE,VIEW,ALIAS,NICKNAME等.98.如何创建序列?例如:CREATESEQUENCESEQUENCE_NAMESTARTWITHSTART_NUMBERINCREMENTBYVALUE1NOMAXVALUENOCYCLE CACHEMAXIMUMNUMBEROFSEQUENCEVALUES第一行规定序列的名称.第二行规定序列的开始数值.第三行规定每次新增的幅度.第四行规定没有最大数值限制.第五行规定最大数值限制.99.如何更改序列?ALTERSEQUENCESEQUENCE_NAME...可以修改的参数STARTWITH的START_NUMBERINCREMENT的VALUE1NOMAXVALUE的数值NOCYCLE属性MAXIMUMNUMBEROFSEQUENCEVALUES最大数值100.如何删除序列?DROPSEQUENCESEQUENCE_NAME101.DB2支持导入(IMPORT)的文件格式有?有:DEL,ASC,IXF,WSF等102.DB2支持导出(EXPORT)的文件格式有?有:DEL,IXF,WSF等.不支持ASC格式.103.DB2支持载入(LOAD)的文件格式有?有:DEL,ASC,IXF等.不支持WSF格式.104.DB2支持DB2MOVE的文件格式有?有:IXF等.不支持ASC,DEL,WSF格式.105.DB2数据库监控的两个组成部分?快照监控(SNAPSHOTMONITOR)可返回特定时间点的数据库活动的快照.事件监控(EVENTMONITOR)记录事件发生的数据.106.系统监控的数据元素类型?计数器(COUNTER)记录活动发生的次数.测量(GAUGE)测量条目的当前值.水线(WATERMARK)从监控来元素达到的最大或最小数值.信息(INFORMATION)监控活动的参照类型细节.时间点(TIMESTAMP)活动发生的日期时间.时间(TIME)返回一个活动花费的时间.107.如何知道监控堆所需的页的数量?(NUMBEROFMONITORINGAPPLICATIONS+1)*(NUMBEROFDATABA SES*(800+(NUMBEROFTABLESACCESSED*20)+((NUMBEROFAPPLICATIONSCONNECTED+1)*(200+( NUMBEROFTABLESPACES*100)))))/4096其大小受参数MON_HEAD_SZ控制.108.如何建立事件监控器?CREATEEVENTMONITORTABLEMONFORTABLESWRITETOFILE'D:\T EMP'109.如何激活事件监控器?SETEVENTMONITORTABLEMONSTATE1110.如何停止事件监控器?SETEVENTMONITORTABLEMONSTATE0111.如何查询监控器的状态?SELECTEVMONNAME,EVENT_MON_STATE(EVMONNAME)FROMSY SCAT.EVENTMONITORS112.如何删除事件监控器?DROPEVENTMONITORTABLEMON113.UNIX和WINDOWS上创建管道事件监控器(PIPE意EVNT见MONITOR)的不同?第一步:定义事件监控器UNIX:CONNECTTOSAMPLECREATEEVENTMONITORSTMB2FORSTATEMENTSWRITETOPIPE'/TMP/EVPIPE1'WINDOWS:CONNECTTOSAMPLECREATEEVENTMONITORSTMB2FORSTATEMENTSWRITETOPIPE'\\.\T MP\EVPIPE1'第二步:建立命名管道UNIX:可以使用MKFIFO()函数或者MKFIFO命令.WINDOWS:可以使用CREATENAMEDPIPE()函数,管道名称与CREATEEVENTMONITOR规定名称相同.第三步:打开命名管道UNIX:使用OPEN()函数.WINDOWS:使用CONNECTNAMEDPIPE()函数.也可以用DB2EVMON命令,如:DB2EVMON-DBSAMPLE-EVMSTMB2第四步:激活命名管道事件监控器除非自动激活命名管道事件监控器,否则SETEVENTMONITORSTMB2STATE1第五步:从命名管道读取数据UNIX:可以使用READ()函数.WINDOWS:可以使用READFILE()函数.第六步:停止事件监控器SETEVENTMONITORSTMB2STATE0第七步:关闭命名管道UNIX:可以使用CLOSE()函数.WINDOWS:可以使用DISCONNECTNAMEDPIPE()函数.第八步:删除命名管道UNIX:可以使用UNLINK()函数.WINDOWS:可以使用CLOSEHANDLE()函数.114.DB2的SQL语句的类别DCL:数据控制语言,提供对数据库对象的访问权限.DDL:数据定义语言,创建,修改,删除数据库对象的.DML:数据操纵语言,用来插入,更新,删除数据的.115.DCL的权限有哪些?CONTROL权限:如果用户创建一个对象,则改用户能完全访问该对象. GRANT语句将权限授予给用户.REVOKE语句撤销一个用户的权限.116.DDL有哪些?CREATEDECLAREALTERDROP等117.DML有哪些?INSERTSELECTUPDATEDELETE等118.DB2有没有布尔类型?没有119.如何查询DB2的内置函数?自带文档ADMINISTION-->SQLREFERENCE-->FUNCTIONS内120.如何执行DB2的脚本文件?DB2-VTFFILENAME121.DB2中象ORACLE的ROWNUM()是?ROW_NUMBER()OVER()122.DB2如何得到错误代码的说明?DB2?SQLCODE123.DB2中的VARCHAR转换为INTEGER的函数为?CAST()124.DB2中的INTEGER转换为VARCHAR的函数为?CHAR()125.DB2中的VARCHAR转换为DATE的函数为?DATE()126.DB2中的DATE转换为VARCHAR的函数为? CHAR()127.DB2中的TRIGGER能否修改?不能,只能删除重建128.WINDOWS下如何知道DB2的端口号?\WINNT\SYSTEM32\DRIVERS\ETC\SERVICES129.DB2如何执行存储过程?可以DB2CALLPROCEDURE_NAME130.如何进入DB2的DOS命令方式?DB2CMD131.如何得到DB2的进程号?DB2LISTAPPLICATIONS132.如何杀DB2的进程?FORCEAPPLICATION(ID)133.A用户安装DB2后,如何用B用户启动DATABASE? 在B用户下的.PROFILE中加上./HOME/DB2INST/SQLLIB/DB2PROFILE134.DB2中类似ORACLE的快照是?SUMMARYTABLEDB2函数135.A VG()返回一组数值的平均值.SELECTA VG(SALARY)FROMBSEMPMS;136.CORR(),CORRELATION()返回一对数值的关系系数.SELECTCORRELATION(SALARY,BONUS)FROMBSEMPMS;137.COUNT()返回一组行或值的个数.SELECTCOUNT(*)FROMBSEMPMS;138.COV AR(),COV ARIANCE()返回一对数值的协方差.SELECTCOV AR(SALARY,BONUS)FROMBSEMPMS;139.MAX()返回一组数值中的最大值.SELECTMAX(SALARY)FROMBSEMPMS;140.MIN()返回一组数值中的最小值.SELECTMIN(SALARY)FROMBSEMPMS;141.STDDEV()返回一组数值的标准偏差.SELECTSTDDEV(SALARY)FROMBSEMPMS;142.SUM()返回一组数据的和.SELECTSUM(SALARY)FROMBSEMPMS;143.V AR(),V ARIANCE()返回一组数值的方差.SELECTV ARIANCE(SALARY)FROMBSEMPMS; 144.ABS(),ABSV AL()返回参数的绝对值.SELECTABS(-3.4)FROMBSEMPMS;145.ACOS()返回参数的反余弦值.SELECTACOS(0.9)FROMBSEMPMS;146.ASCII()返回整数参数最左边的字符的ASCII码. SELECTASCII('R')FROMBSEMPMS;147.ASIN()返回用弧度表示的角度的参数的反正弦函数. SELECTASIN(0.9)FROMBSEMPMS;148.ATAN()返回参数的反正切值,该参数用弧度表示的角度的参数. SELECTATAN(0.9)FROMBSEMPMS;149.ATAN2()返回用弧度表示的角度的X和Y坐标的反正切值. SELECTATAN2(0.5,0.9)FROMBSEMPMS;150.BIGINT()返回整型常量中的数字或字符串的64位整数表示. SELECTBIGINT(EMP_NO)FROMBSEMPMS;151.CEILING()ORCEIL()返回比参数大或等于参数的最小的整数值.SELECTCEILING(3.56)FROMBSEMPMS;SELECTCEIL(4.67)FROMBSEMPMS;152.CHAR()返回日期时间型,字符串,整数,十进制或双精度浮点数的字符串表示.SELECTCHAR(SALARY,',')FROMBSEMPMS;153.CHR()返回具有由参数指定的ASCII码的字符.SELECTCHAR(167)FROMBSEMPMS;154.CONCAT()返回两个字符串的连接.SELECTCONCAT(EMP_NO,EMP_NAM)FROMBSEMPMS;155.YEAR()返回数值的年部分.SELECTYEAR('2003/01/02')FROMBSEMPMS;156.V ARCHAR()返回字符串,日期型,图形串的可变长度的字符串表示.SELECTV ARCHAR(EMP_NAM,50)FROMBSEMPMS;157.UCASE()ORUPPER()返回字符串的大写.SELECTUCASE(EMP_NAM)FROMBSEMPMS;SELECTUPPER(EMP_NO)FROMBSEMPMS;158.TRUNCATE()ORTRUNC()从表达式小数点右边的位置开始截断并返回该数值.SELECTTRUNCATE(345.6789,2)FROMBSEMPMS;159.TIME()返回一个数值中的时间.SELECTTIME('2001-03-19.12.30.123456')FROMBSEMPMS;160.SUBSTR(EXP1,EXP2)返回EXP1串自EXP2处开始的子串.SELECTSUBSTR('CDNJFDJFJD',5)FROMBSEMPMS;SELECTSUBSTR('CDNJFDJFJD',5,2)FROMBSEMPMS;161.SQRT()返回该参数的平方根.SELECTSQRT(36)FROMBSEMPMS;162.SPACE()返回由参数指定的长度,包含空格在内的字符串.SELECTSPACE(10)FROMBSEMPMS;163.SECOND()返回一个数值的秒部分.SELECTSECOND('18:34:32')FROMBSEMPMS;164.RTRIM()删除字符串尾部的空格.SELECTRTRIM('COMMENT')FROMBSEMPMS;165.ROUND(EXP1,EXP2)返回EXP1小数点右边的第EXP2位置处开始的四舍五入值.SELECTROUND(2345.6789,2)FROMBSEMPMS;166.REPLACE(EXP1,EXP2,EXP3)用EXP3替代EXP1中所有的EXP2SELECTCHAR(REPLACE('ROMANDD','NDD','CCB'),10)FROMBSEMPM S167.REPEAT(EXP1,EXP2)返回EXP1重复EXP2次后的字符串.SELECTCHAR(REPEAT('REPEAT',3),21)FROMBSEMPMS;168.REAL()返回一个数值的单精度浮点数表示.SELECTREAL(10)FROMBSEMPMS;169.RAND()返回0和1之间的随机浮点数.SELECTRAND()FROMBSEMPMS;170.POWER(EXP1,EXP2)返回EXP1的EXP2次幂.SELECTPOWER(2,5)FROMBSEMPMS;171.POSSTR(EXP1,EXP2)返回EXP2在EXP1中的位置.SELECT('ABCDEFGH','D')FROMBSEMPMS;172.NULLIF(EXP1,EXP2)如果EXP1=EXP2,则为NULL,否则为EXP1173.NODENUMBER()返回行的分区号.SELECTNODENUMBER(EMP_NO)FROMBSEMPMS;174.MONTH()返回一个数值的月部分.SELECTMONTH('2003/10/20')FROMBSEMPMS;175.MOD(EXP1,EXP2)返回EXP1除以EXP2的余数.SELECTMOD(20,8)FROMBSEMPMS;176.MINUTE()返回一个数值的分钟部分.SELECTMINUTE('18:34:23')FROMBSEMPMS;177.LTRIM()删除字符串前面的空格.SELECTLTRIM('CDDD')FROMBSEMPMS;178.HOUR()返回一个数值的小时部分.SELECTHOUR('18:34:23')FROMBSEMPMS;179.DOUBLE()如果参数是一个数字表达式,返回与其相对应的浮点数,如果参数是字符串表达式,则返回该数的字符串表达式.SELECTDOUBLE('5678')FROMBSEMPMS;180.EXP()返回参数的指数函数.SELECTEXP(2)FROMBSEMPMS;181.FLOAT()返回一个数的浮点表示.SELECTFLOAT(789)FROMBSEMPMS;182.FLOOR()返回小于或等于参数的最大整数.SLECTFLOOR(88.93)FROMBSEMPMS;183.HEX()返回一个表示为字符串的值的16进制表示.SELECTHEX(16)FROMBSEMPMS;当我被上帝造出来时,上帝问我想在人间当一个怎样的人,我不假思索的说,我要做一个伟大的世人皆知的人。
並行性和隔離級別在多個用戶處理資料庫時會發生的現象在單用戶資料庫中,每個事務都按照順序執行,不會與其他事務發生衝突。
然而在多用戶資料庫環境中,多個事務可以同時執行,所以每個事務都有可能與其他正在運行的事務發生衝突。
當多用戶環境中的事務之間沒有互相隔離時,可能會出現四種類型的事件(或現象):∙更新遺失:當兩個事務讀取相同資料並試圖更新該資料時就會出現這種事件,結果其中一個事務作出的更新就會丟失。
舉例來說:Transaction 1 和Transaction 2 讀取同一行資料,然後它們都根據所讀取的資料計算該行的新值。
如果Transaction 1 用它計算出的新值更新該行,而Transaction 2 隨後也更新了該行,那麼由Transaction 1 所執行的更新操作就會丟失。
∙錯誤讀取:當事務讀取還未被發送的資料時,就會發生這種事件。
舉例來說:Transaction 1 修改了一行資料,然後Transaction 2 在Transaction 1 還未發送修改操作之前讀取了被修改的行。
如果Transaction 1 回復了修改操作,那麼Transaction 2 讀取的資料就可以看作是從未存在過的。
∙不可重複的讀:當事務兩次讀取同一行資料,但每次得到的資料都不一樣時,就會發生這種事件。
舉例來說:Transaction 1 讀取一行資料,然後Transaction 2 修改或刪除該行並發送修改操作。
當Transaction 1 試圖重新讀取該行時,它就會得到不同的資料值(如果該行被更新)或發現該行不再存在(如果該行被刪除)。
∙虛讀:如果符合搜索條件的一行資料在後面的讀取操作中出現,但該行資料卻不屬於最初的資料,就會發生這種事件。
舉例來說:Transaction 1 讀取滿足某種搜索條件的一些行,然後Transaction 2 插入了符合Transaction 1 的搜索條件的一個新行。
如果Transaction 1 重新執行產生原來那些行的查詢,就會得到不同的行。
查询数据库隔离级别语句
在关系型数据库中,事务隔离级别是指多个事务同时运行时,相互之间的隔离程度。
不同的隔离级别有着不同的特点和应用场景。
在使用数据库时,查询当前设置的隔离级别非常重要,可以使用以下语句查询当前数据库的隔离级别:
1. MySQL
SHOW VARIABLES LIKE 'transaction_isolation';
2. SQL Server
DBCC USEROPTIONS;
3. Oracle
SELECT VALUE FROM V$PARAMETER WHERE NAME =
'isolation_level';
4. PostgreSQL
SHOW TRANSACTION ISOLATION LEVEL;
5. SQLite
PRAGMA read_uncommitted;
6. DB2
SELECT CURRENT ISOLATION FROM SYSIBMADM.ENV_INST_INFO;
以上是常见数据库查询隔离级别的语句,可以根据自己使用的数据库系统进行查询。
通过查询当前隔离级别,可以更好地理解数据库事务的隔离机制,避免出现数据异常的情况。
- 1 -。
标识:密级:版本:001公安边防部队应用软件一体化工程技术文件一体化平台db2命令查阅手册_针对linux中国电子科技集团公司第十五研究所北京品恩科技有限公司二○一○年一月一体化平台db2命令查阅手册_针对linux拟制:审核:质量保证:批准:文档修改记录版本号修改内容描述修改人日期备注目录1概述 (6)1.1标识 (6)1.2术语及缩略语 (6)1.3文档概述 (6)2引用文档 (7)3命令查阅 (7)3.1 db2环境 (7)3.1.1全部 DB2 配置文件注册库 (7)3.1.2显示配置文件注册库 (7)3.1.3进入 db2 命令环境 (7)3.1.4设置数据库参数 (7)3.1.5获取 db2 数据库管理配置环境信息 (7)3.1.6更新数据库管理器参数信息 (7)3.1.7获取 db2 某个数据库数据库管理配置环境信息 (8)3.1.8查看DB2实列的配置参数 (8)3.1.9系统数据库目录 (8)3.1.10显示用户数据库的存取权限 (8)3.1.11查看db2版本信息是否过期 (db2licm) (8)3.1.12如何知道DB2的数据类型 (8)3.1.13如何知道当前DB2的版本 (8)3.1.14查看命令选项 (8)3.1.15信息帮助 (? XXXnnnnn ) (8)3.1.16 SQL 帮助(说明 SQL 语句的语法) ................... 错误!未定义书签。
3.2缓冲池 (8)3.2.1查看缓冲池 (8)3.2.2创建缓冲池 (9)3.2.3更改缓冲池的大小 (9)3.2.4计算缓冲池命中率 (10)3.3表空间 (10)3.3.1创建表空间 (10)3.3.2删除表空间 (13)3.3.3创建系统临时表空间............................... 错误!未定义书签。
3.3.4创建临时表空间................................... 错误!未定义书签。
作业:1.使用命令监控锁的情况,使用类型2.练习在CLP命令中使用不同的隔离级别3.使用快照监控数据库的使用情况4.使用表函数监控SQL语句的使用情况1.使用命令监控锁的情况,使用类型[myinst@ye ~]$ db2 activate database mydb3SQL1493N The application is already connected to an active database.#查看锁表--看应用在等什么[myinst@ye ~]$ db2pd -db mydb3 -locks showlock waitDatabase Member 0 -- Database MYDB3 -- Active -- Up 0 days 01:50:51 -- Date 2015-08-18-15.48.27.193864Locks:Address TranHdl Lockname Type Mode Sts Owner Dur HoldCount Att ReleaseFlg rrIID TableNm SchemaNm[myinst@ye ~]$ db2 get db cfg |grep DLCHKTIME#是DB2检查死锁的间隔时间,该值为10000msInterval for checking deadlock (ms) (DLCHKTIME) = 10000[myinst@ye ~]$ db2 get db cfg |grep LOCKTIMEOUT#锁等待最长时间,单位是秒Lock timeout (sec) (LOCKTIMEOUT) = -1Lock timeout events (MON_LOCKTIMEOUT) = NONE#查看当前的隔离级别[myinst@ye ~]$ db2 "SELECT CURRENT ISOLATION FROM SYSIBM.SYSDUMMY1"#查看锁表--用快照[myinst@ye ~]$ db2 "GET SNAPSHOT FOR LOCKS ON mydb3"Database Lock SnapshotDatabase name = MYDB3Database path = /www/db2/db2test/myinst/NODE0000/SQL00001/MEMBER0000/Input database alias = MYDB3Locks held = 0Applications currently connected = 1Agents currently waiting on locks = 0Snapshot timestamp = 08/18/2015 15:53:47.009051Application handle = 13Application ID = *LOCAL.DB2.150818055741Sequence number = 00001Application name = db2fw0CONNECT Authorization ID = MYINSTApplication status = Connect CompletedStatus change time = Not CollectedApplication code page = 1386Locks held = 0Total wait time (ms) = 0Application handle = 12Application ID = *LOCAL.DB2.150818055740Sequence number = 00001Application name = db2lusedCONNECT Authorization ID = MYINSTApplication status = Connect CompletedStatus change time = Not CollectedApplication code page = 1208Locks held = 0Total wait time (ms) = 0Application handle = 11Application ID = *LOCAL.DB2.150818055739Sequence number = 00001Application name = db2wlmdCONNECT Authorization ID = MYINSTApplication status = Connect CompletedStatus change time = Not CollectedApplication code page = 1208Locks held = 0Total wait time (ms) = 0Application handle = 10Application ID = *LOCAL.DB2.150818055738 Sequence number = 00001Application name = db2taskdCONNECT Authorization ID = MYINSTApplication status = Connect CompletedStatus change time = Not Collected Application code page = 1208Locks held = 0Total wait time (ms) = 02.练习在CLP命令中使用不同的隔离级别DB2隔离级别分为如下四种:a、可重复读(Repeatable Read,RR)b、读稳定性(Read Stability,RS)c、游标稳定性(Cursor Stability,CS)d、未提交读(Uncommitted Read,UR)DB2默认的隔离级别为:游标稳定性(CS)[myinst@ye ~]$ db2 list command optionsCommand Line Processor Option SettingsBackend process wait time (seconds) (DB2BQTIME) = 1No. of retries to connect to backend (DB2BQTRY) = 60 Request queue wait time (seconds) (DB2RQTIME) = 5Input queue wait time (seconds) (DB2IQTIME) = 5 Command options (DB2OPTIONS) =Option Description Current Setting ------ ---------------------------------------- ----------------a Display SQLCA OFF-b Auto-Bind ON-c Auto-Commit ON-d Retrieve and display XML declarations OFF-e Display SQLCODE/SQLSTATE OFF-f Read from input file OFF-i Display XML data with indentation OFF-j Return code for system calls OFF-l Log commands in history file OFF-m Display the number of rows affected OFF-n Remove new line character OFF-o Display output ON-p Display interactive input prompt ON-q Preserve whitespaces & linefeeds OFF-r Save output to report file OFF-s Stop execution on command error OFF-t Set statement termination character OFF-v Echo current command OFF-w Display FETCH/SELECT warning messages ON-x Suppress printing of column headings OFF-z Save all output to output file OFF[myinst@ye ~]$ db2 "update command options using c off"DB20000I The UPDATE COMMAND OPTIONS command completed successfully.[myinst@ye ~]$ db2 +c(c) Copyright IBM Corporation 1993,2007Command Line Processor for DB2 Client 10.5.5You can issue database manager commands and SQL statements from the command prompt. For example:db2 => connect to sampledb2 => bind sample.bnddb2 => select * from emp for update with rrID CNAME----------- --------------------1 a1 record(s) selected.db2 => select * from emp for update with csID CNAME----------- --------------------1 a1 record(s) selected.db2 => select * from emp for update with urID CNAME----------- --------------------1 a1 record(s) selected.db2 => select * from emp for update with rsID CNAME----------- --------------------1 a1 record(s) selected.[myinst@ye ~]$ db2 "create table lck(pid int, uid int, id int, name varchar(10))"; DB20000I The SQL command completed successfully.[myinst@ye ~]$ db2 "alter table lck alter column pid set not null";DB20000I The SQL command completed successfully.[myinst@ye ~]$ db2 "reorg table lck";DB20000I The REORG command completed successfully.db2 => create unique index uniqindx on lck(uid)DB20000I The SQL command completed successfully.db2 => create index normalindx on lck(id)DB20000I The SQL command completed successfully.db2 => insert into lck values(1,1,1,'test1')DB20000I The SQL command completed successfully.db2 => insert into lck values(2,2,2,'test2')DB20000I The SQL command completed successfully.db2 => insert into lck values(3,3,3,'test3')DB20000I The SQL command completed successfully.db2 => insert into lck values(4,4,3,'test3')DB20000I The SQL command completed successfully.db2 => insert into lck values(5,5,5,'test5')DB20000I The SQL command completed successfully.db2 => runstats on table lck and detailed indexes all shrlevel change DB20000I The RUNSTATS command completed successfully.[myinst@ye ~]$ db2 +cdb2 => select * from lck where pid=1 for update with rrPID UID ID NAME----------- ----------- ----------- ----------1 1 1 test11 record(s) selected.db2 => select * from lck where name='test2' for update with rrPID UID ID NAME----------- ----------- ----------- ----------2 2 2 test21 record(s) selected.db2 => select * from lck where name='test2' for update with rsPID UID ID NAME----------- ----------- ----------- ----------2 2 2 test21 record(s) selected.db2 => select * from lck where id=3 for update with rrPID UID ID NAME----------- ----------- ----------- ----------3 3 3 test34 4 3 test32 record(s) selected.db2 => select * from lck where id=3 for update with rsPID UID ID NAME----------- ----------- ----------- ----------3 3 3 test34 4 3 test3 2 record(s) selected.session2:[myinst@ye ~]$ db2 -t出现了表锁#可以查看表锁情况3.使用快照监控数据库的使用情况[myinst@ye ~]$ db2 get monitor switchesMonitor Recording SwitchesSwitch list for member 0Buffer Pool Activity Information (BUFFERPOOL) = OFFLock Information (LOCK) = OFFSorting Information (SORT) = OFFSQL Statement Information (STATEMENT) = OFFTable Activity Information (TABLE) = OFFTake Timestamp Information (TIMESTAMP) = ON 08/18/2015 13:54:41.614454 Unit of Work Information (UOW) = OFF[myinst@ye ~]$ db2 update monitor switches using lock on statement onDB20000I The UPDATE MONITOR SWITCHES command completed successfully. [myinst@ye ~]$ db2 get monitor switchesMonitor Recording SwitchesSwitch list for member 0Buffer Pool Activity Information (BUFFERPOOL) = OFFLock Information (LOCK) = ON 08/18/2015 13:59:57.793842 Sorting Information (SORT) = OFFSQL Statement Information (STATEMENT) = ON 08/18/2015 13:59:57.793842 Table Activity Information (TABLE) = OFFTake Timestamp Information (TIMESTAMP) = ON 08/18/2015 13:54:41.614454 Unit of Work Information (UOW) = OFF#查看快照信息--查看数据库管理器级别快照信息[myinst@ye ~]$ db2 get snapshot for dbmDatabase Manager SnapshotNode type = Enterprise Server Edition with local and remote clientsInstance name = myinstNumber of members in DB2 instance = 1Database manager status = ActiveProduct name = DB2 v10.5.0.5Service level = s141128 (IP23633)Private Sort heap allocated = 0Private Sort heap high water mark = 0Post threshold sorts = Not CollectedPiped sorts requested = 0Piped sorts accepted = 0Start Database Manager timestamp = 08/18/2015 13:54:41.614454Last reset timestamp =Snapshot timestamp = 08/18/2015 14:19:34.072548Remote connections to db manager = 7Remote connections executing in db manager = 0Local connections = 1Local connections executing in db manager = 0Active local databases = 1High water mark for agents registered = 12Agents registered = 12Idle agents = 0Committed private Memory (Bytes) = 24051712Switch list for member 0Buffer Pool Activity Information (BUFFERPOOL) = OFFLock Information (LOCK) = ON 08/18/2015 13:57:37.650306 Sorting Information (SORT) = OFFSQL Statement Information (STATEMENT) = ON 08/18/2015 13:59:57.860423 Table Activity Information (TABLE) = OFFTake Timestamp Information (TIMESTAMP) = ON 08/18/2015 13:54:41.614454Unit of Work Information (UOW) = OFFAgents assigned from pool = 23Agents created from empty pool = 15Agents stolen from another application = 0High water mark for coordinating agents = 12Hash joins after heap threshold exceeded = 0OLAP functions after heap threshold exceeded = 0[myinst@ye ~]$ db2 get snapshot for database on mydb3Database SnapshotDatabase name = MYDB3Database path = /www/db2/db2test/myinst/NODE0000/SQL00001/MEMBER0000/Input database alias = MYDB3Database status = ActiveCatalog database partition number = 0Catalog network node name = Operating system running at database server= LINUXAMD64Location of the database = LocalFirst database connect timestamp = 08/18/2015 13:57:36.024785Last reset timestamp =Last backup timestamp = 08/11/2015 14:21:39.000000Snapshot timestamp = 08/18/2015 14:22:19.669943Number of automatic storage paths = 1Automatic storage path = /www/db2/db2testNode number = 0State = In UseHigh water mark for connections = 9Application connects = 23Secondary connects total = 8Applications connected currently = 1Appls. executing in db manager currently = 0Agents associated with applications = 8Maximum agents associated with applications= 9Maximum coordinating agents = 9Number of Threshold Violations = 0Locks held currently = 0Lock waits = 0Time database waited on locks (ms) = 0Lock list memory in use (Bytes) = 38400Deadlocks detected = 0Lock escalations = 0Exclusive lock escalations = 0Agents currently waiting on locks = 0Lock Timeouts = 0Number of indoubt transactions = 0#查看应用级别快照信息#db2 get snapshot for application agentid appl-handler#注:appl-handler可以从list applicaitions的输出中得到[myinst@ye ~]$ db2 "get snapshot for application agentid 8"Application SnapshotApplication handle = 8Application status = UOW WaitingStatus change time = Not CollectedApplication code page = 1208Application country/region code = 1DUOW correlation token = *LOCAL.myinst.150818055736 Application name = db2bpApplication ID = *LOCAL.myinst.150818055736 Sequence number = 00003TP Monitor client user ID =TP Monitor client workstation name =TP Monitor client application name =TP Monitor client accounting string =Connection request start timestamp = 08/18/2015 13:57:36.024785 Connect request completion timestamp = 08/18/2015 13:57:37.664637 Application idle time = 6 minutes 39 seconds CONNECT Authorization ID = MYINSTClient login ID = myinstConfiguration NNAME of client = Client database manager product ID = SQL10055Process ID of client application = 2658Platform of client application = LINUXAMD64Communication protocol of client = Local ClientInbound communication address = *LOCAL.myinstDatabase name = MYDB3Database path = /www/db2/db2test/myinst/NODE0000/SQL00001/MEMBER0000/Client database alias = MYDB3Input database alias =Last reset timestamp =Snapshot timestamp = 08/18/2015 14:48:27.627417 Authorization level granted =User authority:DBADM authoritySECADM authorityDATAACCESS authorityACCESSCTRL authorityGroup authority:SYSADM authorityCREATETAB authorityBINDADD authorityCONNECT authorityIMPLICIT_SCHEMA authorityCoordinator member number = 0Current member number = 0Coordinator agent process or thread ID = 21Current Workload ID = 1Agents stolen = 0Agents waiting on locks = 0Maximum associated agents = 1Priority at which application agents work = 0Priority type = DynamicLock timeout (seconds) = -1Locks held by application = 0Lock waits since connect = 0Time application waited on locks (ms) = 0Deadlocks detected = 0Lock escalations = 0Exclusive lock escalations = 0Number of Lock Timeouts since connected = 0Total time UOW waited on locks (ms) = Not CollectedTotal sorts = 0Total sort time (ms) = Not CollectedTotal sort overflows = 0#查看表级别快照信息#db2 get snapshot for tables on dbname#注:需要把tables快照开关设为ON才会有作用[myinst@ye ~]$ db2 "get snapshot for tables on mydb3"Table SnapshotFirst database connect timestamp = 08/18/2015 13:57:36.024785Last reset timestamp =Snapshot timestamp = 08/18/2015 14:46:14.123659Database name = MYDB3Database path = /www/db2/db2test/myinst/NODE0000/SQL00001/MEMBER0000/Input database alias = MYDB3Number of accessed tables = 6Table ListTable Schema = SYSIBMTable Name = SYSTABLESTable Type = CatalogData Object Pages = 8Index Object Pages = 20LOB Object pages = 120Rows Read = Not CollectedRows Written = 40Overflows = 0Page Reorgs = 0Table Schema = SYSIBMTable Name = SYSINDEXESTable Type = CatalogData Object Pages = 5Index Object Pages = 10LOB Object pages = 1Rows Read = Not CollectedRows Written = 42Overflows = 0Page Reorgs = 0Table Schema = SYSTOOLSTable Name = HMON_ATM_INFOTable Type = UserData Object Pages = 2Index Object Pages = 4Rows Read = Not CollectedRows Written = 0Overflows = 1Page Reorgs = 0Table Schema = SYSIBMTable Name = SYSDATAPARTITIONSTable Type = CatalogData Object Pages = 1Index Object Pages = 14Rows Read = Not CollectedRows Written = 1Overflows = 0Page Reorgs = 0Table Schema = SYSIBMTable Name = SYSPLANTable Type = CatalogData Object Pages = 6Index Object Pages = 10LOB Object pages = 56Rows Read = Not CollectedRows Written = 4Overflows = 0Page Reorgs = 0Table Schema = SYSIBMTable Name = SYSCOLDISTTable Type = CatalogData Object Pages = 123Index Object Pages = 84Rows Read = Not CollectedRows Written = 120Overflows = 0Page Reorgs = 0#查看锁快照信息#db2 get snapshot for locks on dbname 这条命令很有用,可以查看具体有哪些锁。
db2隔离级别-回复数据库隔离级别对于数据库管理系统的性能和数据一致性至关重要。
在多用户环境中,数据库系统必须支持同时执行多个事务,并确保事务之间的相互隔离和数据的一致性。
不同的隔离级别提供了不同的方法来处理并发读写的事务,从而影响系统的性能和数据的一致性。
本文将详细介绍db2数据库的隔离级别。
1. 什么是隔离级别?隔离级别是数据库系统用于控制并发事务执行的一种机制。
它决定了一个事务对于其他事务的可见性以及并发读写事务之间的互相影响程度。
隔离级别通常是通过锁机制来实现的。
隔离级别越高,允许的并发度越低,但数据的一致性和可靠性越高。
2. db2数据库的隔离级别有哪些?db2数据库支持四个隔离级别:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。
这些隔离级别提供了不同的事务控制方式,可以满足不同的应用需求。
- 读未提交(Read Uncommitted):最低级别的隔离级别。
在这个级别下,一个事务可以读取正在被其他事务修改的数据。
这种级别的隔离性较差,可能导致脏读(Dirty Read)和不可重复读(Non-Repeatable Read)。
- 读已提交(Read Committed):在这个级别下,一个事务只能读取已经提交的数据,不能读取正在被其他事务修改的数据。
这种级别的隔离性较好,可以避免脏读,但可能导致不可重复读。
- 可重复读(Repeatable Read):在这个级别下,一个事务在执行过程中多次读取同一个数据的结果保持一致,即使其他事务对该数据进行了修改。
这种级别的隔离性更好,可以避免脏读和不可重复读,但可能导致幻读(Phantom Read)。
- 串行化(Serializable):最高级别的隔离级别。
在这个级别下,事务完全串行执行,事务之间不存在并发。
这种级别的隔离性最好,可以避免脏读、不可重复读和幻读,但可能导致系统并发性能低下。
DB2中的四种隔离级:RS,RR,CS,UR一.读可靠性(RS-Read Stability)(例:select * from tab with rs;)如果使用这种隔离级,在一个事务中所有被读取过的行上都会被加上NS锁,直到该事务被提交或回滚,行上的锁才会被释放。
这样可以保证在一个事务中即使多次读取同一行,得到的值不会改变。
根据实际测试情况,RS模式下:查询完毕以后,满足条件的结果集中的记录被锁定,不满足条件的不被锁定。
可以对不满足条件的记录更新,也可以插入新的记录。
其他人可以查询满足已经锁定的记录,但不可以更新。
二.重复读(RR-Repeat Read) (例:select * from tab with rr;)如果使用这种隔离级,在一个事务中所有被读取过的行上都会被加上S锁,知道该事务被提交或回滚,行上的锁才会被释放。
这样可以保证在一个事务中即使多次读取同一行,得到的值不会改变。
对于读可靠性,应用程序只对符合要求的所有行加锁,而对于重复读,应用程序将对所有被扫描过的行都加锁。
例如,如果一个应用程序对一个表中的 10000行数据进行扫描,最终找到了100条符合搜索条件的结果行。
如果该应用程序使用的是读可靠性隔离级,应用程序将只对这符合条件的100行加锁; 如果该应用程序使用的是重复读隔离级,应用程序将对被扫描过的10000行都加锁。
三.游标可靠性(CS-Cursor Stability)(例:select * from tab with cs;)如果使用这种隔离级,在一个事务中,结果集中只有正在被读取的那一行(游标指向的行)将被加上NS锁,其他未被处理的行上不被加锁。
这种隔离级只能保证正在被处理的行的值不会被其他并发的程序所改变。
该隔离级是DB2缺省的隔离级。
仅仅在游标在该行的时候锁定,这是一种非常弱的隔离状态。
四.未提交读(UR-Uncommitted Read) (例:select * from tab with ur;)如果使用这种隔离级,对于只读操作,不加行锁。
一.Db2pd工具参数db2pd 命令有 22 个选项。
如果要对所有数据库分区服务器上、所有活动的本地数据库运行所有这些选项,只需要输入 db2pd –everything,也可通过下表所示的范围选项限制信息的范围。
表 1. db2pd 范围选项注意,dbp2pd 选项可以在实例的范围内,也可以在数据库的范围内。
如果使用数据库范围,指定的数据库必须已经激活。
表 2. db2pd 选项的范围表 2 显示了每个 db2pd 选项、选项的说明和对应的范围。
更好的是,可以指定–repeat 参数重复该命令。
比方说,下面的命令每 2 秒钟显示一次 DB2 内存信息,共 5 次:db2pd –mempools –repeat 2 5此外,通过 file= 参数还可以将特定 db2pd 命令选项的结果保存到文件中。
file 和 repeat 参数可以结合使用:db2pd –mempools file=memp.txt –repeat 2 5其中,memp.txt 保存输出结果。
二.监控的例子下面这些例子说明了如何用 db2pd 工具监控您的数据库环境。
例1:如果希望了解当前 DB2 的级别和当前操作系统的信息,可以输入以下命令:–version 选项显示了系统上运行的当前 DB2 的版本和级别。
输入 db2level 命令也可以得到同样的信息。
–osinfo 选项显示 OS、CPU、物理内存和虚拟内存信息。
类似的 OS 信息也可以在 DB2 启动时的 db2diag.log 中找到。
例2:db2pd 命令的所有选项都可以使用前三个字符的缩写,只有两个除外:-mempools 和–memsets。
使用缩写形式,上面的例子可以改写为:上面的命令使用了混合范围选项。
–lock/-loc 和–transactions/-tra 是数据库范围内的选项,agents/–age 是实例范围内的选项。
虽然范围选项是混合的,仍然可以显示当前活动代理的锁定和事务信息。
db2命令大家在应用DB2的时候可能会遇到一些看似简单的问题,特别对新手来说,我在此简单的总结一下,发布给大家,希望对大家能有所帮助,同时也欢迎大家一起探讨,共同发展,共同进步!以下主要以DB2 7.X为基础的. 以下的字符为小写.本文对DB2高手来说是不用看的.1. DB2产品的级别有那些?企业版的 NTERPRISE EDITION工作组版 WORKGROUP EDITION企业扩展版 ENTERPRISE EXTENDED EDITION个人版的 PERSONAL EDITION卫星版的 SATELLITE EDITION微型版的 EVERYPLACE2. 可以连接到DB2数据库的产品有哪些?DB2客户端DB2 CONNECTDB2 DATAPROPAGATORDB2 NET.DATADB2 DATAJOINERDB2 RELATIONAL CONNECTWEBSPHERE应用服务器等3. DB2支持的通讯协议有哪些?TCP/IPNETBIOSAPPGIPX/SPXNAME PIPE等4. DB2客户端产品有哪些?DB2运行时间客户端 DB2 RUNTIME CLIENTDB2管理客户端 DB2 ADMINISTRATION CLIENTDB2应用程序开发客户端 DB2 APPLICATION DEVELOPMENT CLIENTDB2瘦客户端 DB2 THIN CLIENT5. 一个数据库是否可以安装在多个数据库服务器上?可以6. 从哪个版本后存储过程可以用SQL语句来创建?7.1版后7. DB2提供哪些关系扩展器?文本扩展器 TEXT EXTENDER图象扩展器 IMAGE EXTENDER音频扩展器 AUDIO EXTENDER视频扩展器 VIDEO EXTENDER空间数据扩展器 SPATIAL EXTENDERXML扩展器 XML EXTENDER网络搜索扩展器 NET.SEARCH EXTENDER8. WINDOWS和OS/2环境下的DB2安装目录结构?用SETUP.EXE来安装SQLLIB 安装的根目录,包括README文件SQLLIBADSM 包含ADSTAR分布式存储管理器文件SQLLIBBIN 包含DB2工具的可执行文件SQLLIBBND 包含DB2工具的绑定文件SQLLIBCC 包含运行控制中心所需的文件SQLLIBCFG 包含默认的系统配置文件SQLLIBCONV 包含代码页转换表文件SQLLIBDB2 默认的实例目录SQLLIBDB2DAS00 缺省的DB2管理服务器目录SQLLIBFUNCTIONUNFENCED 默认的非隔离用户自定义函授目录 SQLLIBHELP 联机帮助文件SQLLIBJAVA DB2所需的JAVA类库JAVA12 包含JDK1.2的支持程序SQLLIBMISC 包含HTML搜索服务器文件SQLLIBMSGPRIME 包含信息文件SQLLIBQP 包含QUERY PATROLLER的客户端文件SQLLIBSAMPLES 包含样例程序和样例脚本SQLLIBSPMLOG 包含DB2同步点管理器日志文件SQLLIBTHNSETUP 包含瘦客户端安装文件9. UNIX和LINUX环境下的DB2安装目录结构?用DB2SETUP.EXE来安装安装的根目录下还将创建以下目录:README 安装的根目录,包括README文件ADM 包含系统管理工具文件ADSM 包含ADSTAR分布式存储管理器文件BIN 包含DB2工具的二进制可执行文件BND 包含DB2工具的绑定文件CC 包含运行控制中心所需的文件CFG 包含默认的系统配置文件CONV 包含代码页转换表文件DOC 包含DB2联机手册FUNCTION 默认的用户自定义函数目录FUNCTIONUNFENCED 默认的非隔离用户自定义函授目录INSTALL 包含安装程序INSTANCE 包含实例脚本JAVA DB2所需的JAVA类库LIB DB2库文件MAP 包含DB2 CONNECT使用的映射文件MISC 包含HTML搜索服务器文件SAMPLES 包含样例程序和样例脚本MSG$L 包含DB2信息文件10. AIX下用哪个命令来安装DB2?INSTALLP命令11. 同一操作系统下可以安装多个DB2 数据库?可以的12. 如何停止实例?DB2STOP13. 如何启动实例?DB2START14. 如何修改注册项的值?DB2SET可以修改如:设定当前实例的一个参数DB2SET PARAMETER=value设定一个全局级的参数DB2SET PARAMETER=value -G (小写)查看能在配置文件注册表中设置的所有变量的列表DB2SET -LR (小写)15. 如何在CLP执行操作系统的命令?在命令前加" ! "作为前缀DB2=> !DIR C:16. 在CLP中命令过长怎么办?用 " " 作为续行符号17. 如何获得DB2的命令的语法相关信息?DB2? 显示所有DB2命令DB2? DB2nnnn 显示这个DB2错误的解释信息18. 如何查看当前CLP的设置?DB2=>LIST COMAND OPTIONS19. 如何更新当前CLP会话的特定项设置?DB2 UPDATE COMMAND OPTIONS USING OPTIONS ...20. COMMAND WINDOWS可以通过哪个命令调用?DB2CMD命令21. 管理服务器的默认名为?UNIX下为DB2ASWINDOWS下为DB2DAS0022. 常用管理DB2服务器实例的命令?DB2ADMIN START 启动DB2管理服务器实例DB2ADMIN STOP 停止DB2管理服务器实例DASICRT UNIX下创建DB2管理服务器实例DASIDROP UNIX下删除DB2管理服务器实例DB2ADMIN CREATE WINDOWS OR OS/2下创建DB2管理服务器实例 DB2ADMIN DROP WINDOWS OR OS/2下删除DB2管理服务器实例 DB2 GET ADMIN CFG 显示DB2管理服务器的配置参数DB2 UPDATE ADMIN CFG 修改DB2管理服务器的配置参数DB2 RESET ADMIN CFG 将DB2管理服务器的配置参数设为默认值23. DB2目录分为哪几种?系统数据库目录本地数据库目录节点目录DCS目录管理节点目录24. 如何查看系统数据库目录?LIST DB DIRECTORY25. 如何查看数据库服务器目录?LIST NODE DIRECTORY26. DB2实例的服务器的默认端口是?50000服务器名称为DB2CDB227. DB2 UDB服务器端的认证类型有?SERVERSERVER_ENCRYPTCLIENTDCEDCE_SERVER_ENCRYPTKERBEROSKRB_SERVER_ENCRYPT28. DB2客户端的认证类型有?SERVERSERVER_ENCRYPTDCSDCS_ENCRYPTCLIENTDCE29. DB2中有哪几种类型的权限?SYSADM 系统管理权限SYSCTRL 系统控制权限SYSMAINT 系统维护权限DBADM 数据库管理权限LOAD 对表进行LOAD操作的权限30. 不能通过GRANT授权的权限有哪种?SYSAMSYSMAINT要更该上述权限必须修改数据库管理器配置参数31. 表的类型有哪些?永久表(基表)临时表(说明表)临时表(派生表)32. 如何知道一个用户有多少表?SELECT * FROM SYSIBM.SYSTABLES WHERE CREATOR=‘USER‘33. 如何知道用户下的函数?select * from ERFUNCTIONselect * from sysibm.SYSFUNCTIONS34. 如何知道用户下的VIEW 数?select * from sysibm.sysviews WHERE CREATOR=‘USER‘35. 如何知道当前DB2的版本?select * from sysibm.sysvERSIONS36. 如何知道用户下的TRIGGER 数?select * from sysibm.SYSTRIGGERS WHERE SCHEMA=‘USER‘37. 如何知道TABLESPACE的状况?select * from sysibm.SYSTABLESPACES38. 如何知道SEQUENCE的状况?select * from sysibm.SYSSEQUENCES39. 如何知道SCHEMA的状况?select * from sysibm.SYSSCHEMATA40. 如何知道INDEX的状况?select * from sysibm.SYSINDEXES41. 如何知道表的字段的状况?select * from sysibm.SYSCOLUMNS WHERE TBNAME=‘AAAA‘42. 如何知道DB2的数据类型?select * from sysibm.SYSDATATYPES43. 如何知道BUFFERPOOLS状况?select * from sysibm.SYSBUFFERPOOLS44. DB2表的字段的修改限制?只能修改VARCHAR2类型的并且只能增加不能减少.45. 如何查看表的结构?DESCRIBLE TABLE TABLE_NAMEORDESCRIBLE SELECT * FROM SCHEMA.TABLE_NAME46. 如何快速清除一个大表?ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITALLY WITH EMPTY TABLE 47. 如何查看数据库的包?select * from sysCAT.PACKAGES48. 如何查看数据库的存储过程?SELECT * FROM SYSCAT.PROCEDURES49. 如何查看表的约束?SELECT * FROM SYSCAT.CHECKS WHERE TABNAME=‘AAAA‘50. 如何查看表的引用完整约束?SELECT * FROM SYSCAT.REFERENCES WHERE TABNAME=‘AAAA‘2003-10-14 9:45:00 鲜花(0) 鸡蛋(0)mornlee头衔:二当家等级:版主文章:147积分:442注册:2003-6-28字体大小第2楼DB2常用傻瓜问题1000问(之二)作者: CCBZZP大家在应用DB2的时候可能会遇到一些看似简单的问题,特别对新手来说,我在此简单的总结一下,发布给大家,希望对大家能有所帮助,同时也欢迎大家一起探讨,共同发展,共同进步!以下主要以DB2 7.X为基础的. 以下的字符为小写.本文对DB2高手来说是不用看的.所有字符為小寫.51. 安裝DB2默認的事例名稱是?在WINDOWS或OS/2中默認的是DB2在LINUX或UNIX環境下默認的是DB2INST152. 安裝后的默認帳戶是?在WINDOWS或OS/2中默認的是DB2ADMIN在LINUX或UNIX環境下默認的是DB2AS53. 事例的類型有哪些?CLIENT(客戶)STANDALONE(獨立的)SATELLITE(衛星)EE DB2EEE54. 如何創建事例?DB2ICRT INSTNAME <...PARAMETERS>55. 如何列出系統上的所有可用事例?DB2ILIST56. 如何知道當前對話用的是哪個事例?GET INSTANCE57. 如何更新事例的配置?DB2IUPDT <INST NAME><PARAMETER OPTIONS...>58. 如何刪除事例?DB2IDROP INSTANCE_NAME具体步驟如下:停止事例上所有應用程序在所有打開的命令行上執行DB2 TERMINATE咝蠨B2STOP備份DB2INSTPROF注冊變量指出的事例目錄退出事例所有登陸者使用DB2IDROP也可以刪除ID59. 如何列出本地系統上有許可信息的所有產品?DB2LICM -L60. 如何增加一產品許可?61. 如何刪除一個產品的許可?DB2LICM -R PRODUCT PASSWORD62. 如何更新已購買的許可數量?DB2LICM -U <PRODUCT PASSWORD> <NUMBER OF USERS>63. 如何強制只使用已經購買的數量?DB2LICM -E HARD64. 如何更新系統上所使用的許可政策類型?DB2LICM -P <PRODUCT PASSWORD> REGISTERED CONCURRENT 65. 如何更新系統上的處理器的數量?DB2LICM -N <PRODUCT PASSWORD> <NUMBER OF PROCESSORS> 66. 如何查詢許可文件記錄的版本信息?DB2LICM -V67. 如何查詢DB2LICM的幫助信息?DB2LICM -H68. 一個數据庫至少包括哪些表空間?一個目錄表空間一個或多個用戶表空間一個或多個臨時表空間69. 根据數据与存儲空間之間移動的控制方式不同,分哪兩种表空間?系統管理的空間(SMS)數据庫管理的空間(DMS)70. 如何列出系統數据庫目錄的內容?LIST DATABASE DIRECTORY71. CREATE DATABASE 是SQL命令嗎?不是, 是系統命令72. 如何查看數据庫ABC的配置文件的內容?GET DATABASE CONFIGURATION FOR ABC73. 如何將數据庫ABC的參數設置為默認數值?RESET DATABASE CONFIGURATION FOR ABC74. 如何修改數据庫ABC配置參數數值?UPDATE DATABASE CONFIGURATION FOR ABCUSING <PARAMETER NAME> <NEW value>75. 如何重新啟動數据庫?RESTART DATABASE DATABASE_NAME76. 如何激活數据庫?ACTIVATE DATABASE DATABASE_NAME77. 如何停止數据庫?DEACTIVATE DATABASE DATABASE_NAME78. 如何刪除數据庫?DROP DATABASE DATABASE_NAME79. 如何建立模式?CREATE SCHEMA SCHEMA_NAME80. 如何設置模式?SET SCHEMA=SCHEMA_NAME81. 表的類型有哪些?基本表結果表概要表類型表子類型聲明的臨時表系統臨時表82. 如何定義序列?CREATE SEQUENCE ORDERSEQ START WITH 1 INCREMENT BY 1 NOMAXvalue NOCYCLE CACHE 2483. 如何將表置于檢查挂起狀態?SET INTEGRITY TABLE_NAME OFF84. 如何獲得表的排斥鎖?LOCK TABLE TABLE_NAME IN EXCLUSIVE MODE85. 如何把表調整為沒有檢查數據的在線狀態?SET INTEGRITY FOR TABLE_NAME ALL IMMEDIATE UNCHECKED86. 如何解除表的鎖定?COMMIT87. 如何關閉表的日志?ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INIALLY88. 如何刪除表?DROP SCHEMA.TABLE_NAME89. 如何重命名表?RENAME TABLE_OLD TO TABLE_NEW90. 如何取當前時間?SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1Enjoy Freedom2003-10-14 9:46:00mornlee头衔:二当家等级:版主文章:147积分:442注册:2003-6-28字体大小第3楼DB2常用傻瓜问题1000问(之三)作者: CCBZZP大家在应用DB2的时候可能会遇到一些看似简单的问题,特别对新手来说,我在此简单的总结一下,发布给大家,希望对大家能有所帮助,同时也欢迎大家一起探讨,共同发展,共同进步!以下主要以DB2 7.X为基础的. 以下的字符为小写.本文对DB2高手来说是不用看的.所有字符為小寫.91. 如何創建DB2的概要表?DB2的概要表功能類似于ORACLE的實体化視圖!語法為:CREATE SUMMARY TABLE TABLE_NAME AS (FULLSELECT) ...定義一個可以刷新的概要表:CREATE SUMMARY TABLE TABLE_NAME AS (SELECT * FROM TABLE_NAME1 WHERE COL1=‘AAA‘)DATA INITIALLY DEFERRED REFRESH DEFERRED其中DATA INITIALLY DEFERRED規定不能將數据作為CREATE TABLE語句的一部分插入表中. REFRESH DEFERRED規定表中的數据可以在任何使用了REFRESH TABLE語句的時候獲得刷新!92. 如何刷新概要表?REFRESH TABLE SUM_TABLE其中SUM_TABLE為概要表.93. 如何修改概要表?ALTER TABLE SUM_TABLE ...94. 如何創建臨時表?語法:DECLARE GLOBAL TEMPORARY TABLE TABLE_NAMEAS (FULLSELECT) DEFINITION ONLYEXCLUDING IDENTITY COLUMN ATTRIBUTESON COMMIT DELETE ROWSNOT LOGGED第一行規定臨時表的名稱.第二行規定臨時表的列的定義.第三行規定不是從源結果表定義中復制的恒等列.第四行規定如果沒有打開WITH GOLD光標,將會刪除表的所有行.第五行規定不對表的改變進行記錄.例如:DECLARE GLOBAL TEMPORARY TABLE DEC_BSEMPMSAS (SELECT * FROM BSEMPMS) DEFINITION ONLYEXCLUDING IDENTITY COLUMN ATTRIBUTESON COMMIT DELETE ROWSNOT LOGGED95. 視圖的管理?如何創建視圖:CREATE VIEW VIEW_NAME AS SELECT * FROM TABLE_NAME WHERE ...刪除視圖:DROP VIEW VIEW_NAME96. 如何知道視圖定義的內容?SELECT * FROM SYSCAT.VIEWS中的TEXT列中.97. 如何創建別名?CREATE ALIAS ALIAS_NAME FOR PRO_NAME后面的PRO_NAME可以是TABLE,VIEW,ALIAS,NICKNAME等.98. 如何創建序列?例如:CREATE SEQUENCE SEQUENCE_NAMESTART WITH START_NUMBERINCREMENT BY value1NOMAXvalueNOCYCLECACHE MAXIMUM NUMBER OF SEQUENCE valueS第一行規定序列的名稱.第二行規定序列的開始數值.第三行規定每次新增的幅度.第四行規定沒有最大數值限制.第五行規定最大數值限制.99. 如何更改序列?ALTER SEQUENCE SEQUENCE_NAME ...可以修改的參數START WITH 的 START_NUMBERINCREMENT 的 value1NOMAXvalue的數值NOCYCLE屬性100. 如何刪除序列?DROP SEQUENCE SEQUENCE_NAME101. DB2支持導入(IMPORT)的文件格式有?有: DEL,ASC,IXF,WSF等102. DB2支持導出(EXPORT)的文件格式有?有: DEL,IXF,WSF等.不支持ASC格式.103. DB2支持載入(LOAD)的文件格式有?有: DEL,ASC,IXF等.不支持WSF格式.104. DB2支持DB2MOVE的文件格式有?有: IXF等.不支持ASC,DEL,WSF格式.105. DB2數据庫監控的兩個組成部分?快照監控(SNAPSHOT MONITOR)可返回特定時間點的數据庫活動的快照.事件監控(EVENT MONITOR)記錄事件發生的數据.106. 系統監控的數据元素類型?計數器(COUNTER)記錄活動發生的次數.測量(GAUGE)測量條目的當前值.水線(WATER MARK)從監控來元素達到的最大或最小數值.信息(INFORMATION)監控活動的參照類型細節.時間點(TIMESTAMP)活動發生的日期時間.時間(TIME)返回一個活動花費的時間.107. 如何知道監控堆所需的頁的數量?(NUMBER OF MONITORING APPLICATIONS+1)*(NUMBER OF DATABASES*(800+ (NUMBER OF TABLESACCESSED*20)+((NUMBER OF APPLICATIONS CONNECTED+1)*(200+(NUMBER OF TABLE SPACES*100)))))/4096其大小受參數MON_HEAD_SZ控制.108. 如何建立事件監控器?CREATE EVENT MONITOR TABLEMON FOR TABLES WRITE TO FILE ‘D:TEMP‘109. 如何激活事件監控器?SET EVENT MONITOR TABLEMON STATE 1110. 如何停止事件監控器?SET EVENT MONITOR TABLEMON STATE 0111. 如何查詢監控器的狀態?SELECT EVMONNAME,EVENT_MON_STATE(EVMONNAME) FROMSYSCAT.EVENTMONITORS112. 如何刪除事件監控器?DROP EVENT MONITOR TABLEMON113. UNIX和WINDOWS上創建管道事件監控器(PIPE意EVNT見MONITOR)的不同?第一步: 定義事件監控器UNIX:CONNECT TO SAMPLECREATE EVENT MONITOR STMB2 FOR STATEMENTS WRITE TO PIPE ‘/TMP/EVPIPE1‘ WINDOWS:CONNECT TO SAMPLECREATE EVENT MONITOR STMB2 FOR STATEMENTS WRITE TO PIPE ‘.TMPEVPIPE1‘第二步: 建立命名管道UNIX:可以使用MKFIFO()函數或者MKFIFO命令.WINDOWS:可以使用CREATENAMEDPIPE()函數,管道名稱与CREATE EVENT MONITOR規定名稱相同.UNIX:使用OPEN()函數.WINDOWS:使用CONNECT NAMEDPIPE()函數.也可以用DB2EVMON命令,如:DB2EVMON -DB SAMPLE -EVM STMB2第四步: 激活命名管道事件監控器除非自動激活命名管道事件監控器,否則SET EVENT MONITOR STMB2 STATE 1第五步: 從命名管道讀取數据UNIX:可以使用READ()函數.WINDOWS:可以使用READFILE()函數.第六步: 停止事件監控器SET EVENT MONITOR STMB2 STATE 0第七步: 關閉命名管道UNIX:可以使用CLOSE()函數.WINDOWS:可以使用DISCONNECTNAMEDPIPE()函數.第八步: 刪除命名管道UNIX:可以使用UNLINK()函數.WINDOWS:可以使用CLOSEHANDLE()函數.114. DB2的SQL語句的類別?DCL: 數据控制語言,提供對數据庫對象的訪問權限.DDL: 數据定義語言,創建,修改,刪除數据庫對象的.DML: 數据操縱語言,用來插入,更新,刪除數据的.115. DCL的權限有哪些?CONTROL權限: 如果用戶創建一個對象,則改用戶能完全訪問該對象. GRANT 語句將權限授予給用戶.REVOKE 語句撤銷一個用戶的權限.116. DDL有哪些?CREATEDECLAREALTERDROP等117. DML有哪些?INSERTSELECTUPDATEDELETE等118. DB2有沒有布爾類型?沒有119. 如何查詢DB2的內置函數?自帶文檔ADMINISTION-->SQL REFERENCE-->FUNCTIONS內120. 如何執行DB2的腳本文件?DB2 -VTF FILENAME121. DB2中象ORACLE的ROWNUM()是?ROW_NUMBER() OVER()122. DB2如何得到錯誤代碼的說明?123. DB2中的VARCHAR轉換為INTEGER的函數為? CAST()124. DB2中的INTEGER轉換為VARCHAR的函數為? CHAR()125. DB2中的VARCHAR轉換為DATE的函數為?DATE()126. DB2中的DATE轉換為VARCHAR的函數為?CHAR()127. DB2中的TRIGGER能否修改?不能,只能刪除重建128. WINDOWS下如何知道DB2的端口號?WINNTSYSTEM32DRIVERSETCSERVICES 129. DB2如何執行存儲過程?可以 DB2 CALL PROCEDURE_NAME130. 如何進入DB2的DOS命令方式?DB2CMD131. 如何得到DB2的進程號?DB2 LIST APPLICATIONS132. 如何殺DB2的進程?FORCE APPLICATION(ID)133. A用戶安裝DB2后,如何用B用戶啟動DATABASE?在B用戶下的.PROFILE中加上./HOME/DB2INST/SQLLIB/DB2PROFILE134. DB2中類似ORACLE的快照是?SUMMARY TABLE。
db2查看隔离级别命令
介绍
在db2数据库中,隔离级别是指在并发场景下,数据库对事务之间的隔离程度。
通过设置不同的隔离级别,可以控制事务之间的相互影响程度。
本文将探讨如何使用db2查看隔离级别命令,以及详细介绍隔离级别的概念和各个级别的特点。
什么是隔离级别
隔离级别是数据库管理系统(DBMS)中的一个重要概念,用于控制数据库事务之间的隔离程度,以及并发执行时对数据的读取和修改的规则。
隔离级别越高,事务之间越不会相互干扰,但同时也会带来一定的性能损耗。
隔离级别是ACID(原子性、一致性、隔离性、持久性)特性中的一部分,确保了数据库事务的可靠性和一致性。
在db2中,一共有4个隔离级别,分别是Read Uncommitted(读未提交)、Read Committed(读已提交)、Repeatable Read(可重复读)、Serializable(串行化)。
下面将详细介绍各个隔离级别的特点。
Read Uncommitted(读未提交)
•脏读可能发生。
•事务A修改了数据,但尚未提交,事务B可以读取到未提交的数据。
•该隔离级别的性能最高,但数据的一致性无法得到保证。
Read Committed(读已提交)
•防止脏读。
•事务B只能读取到已经提交的数据,不能读取到事务A未提交的数据。
•该隔离级别是大多数数据库系统的默认隔离级别。
Repeatable Read(可重复读)
•防止脏读和不可重复读。
•事务A读取到的数据,在事务B修改之前不会发生变化。
•该隔离级别适用于需要保证事务期间数据的一致性的场景。
Serializable(串行化)
•最高的隔离级别,防止脏读、不可重复读和幻读。
•事务A读取到的数据,在事务B修改之前不会发生变化,且其他事务不能对该数据进行修改操作。
•该隔离级别是性能最差的,因为它会对数据库上的数据进行锁定,以确保并发执行时数据的一致性。
查看隔离级别命令
在db2数据库中,可以通过以下命令查看当前数据库的隔离级别设置:
db2 get isolation
该命令会输出当前数据库的隔离级别,例如:
SQL806W: DB2 UDB仅支持一个默认的隔离级别READ_COMMITTED,该级别的说明如下:
UC 读未提交隔离级别
CS 读已提交
RS 可重复读
RR 串行化
从输出结果中可以看出,当前数据库的隔离级别为Read Committed(读已提交)。
修改隔离级别
在db2数据库中,可以通过以下命令修改当前数据库的隔离级别:
db2 update db cfg using ISOLATION <隔离级别>
其中,<隔离级别>是要设置的隔离级别,可以是UC、CS、RS或RR。
修改隔离级别需要具备数据库管理员(DBA)的权限,执行命令后,需要重启数据
库才能生效。
总结
隔离级别是数据库管理系统中一个重要的概念,通过设置不同的隔离级别,可以控制事务之间的隔离程度,以及并发执行时对数据的读取和修改的规则。
db2提供了
四个隔离级别,分别是Read Uncommitted(读未提交)、Read Committed(读已
提交)、Repeatable Read(可重复读)和Serializable(串行化)。
通过使用
db2提供的查看隔离级别命令和修改隔离级别命令,可以方便地管理数据库的隔离
级别设置。
以上就是关于db2查看隔离级别命令的介绍,希望对你有所帮助。