Posts

Showing posts from December, 2013

DB2 Memory

db2mtrk的命令语法: Usage: db2mtrk -i | -d | -p [-m | -w] [-v] [-r interval [count]] [-h]  #详细语法 =>db2mtrk -i        #显示当前实例的内存使用情况 =>db2mtrk -i  -v   #显示当前实例的内存使用的详细信息 =>db2mtrk -d      #显示数据库的内存使用情况 =>db2mtrk -d -v   #显示数据库的内存使用情况的详细信息 =>db2mtrk -p     #显示代理进程专用内存使用率 =>db2mtrk -h     #显示帮助信息 -m 参数选项是显示最大的内存使用上线 -w 参数选项是显示使用过程中内存达到的最大值,既watermark -r  参数选项是重复显示 interval是重复显示的时间间隔数 count是要重复显示的次数

DB2 Constraint

informational constraint:不影响DML操作,又可以用于DB2优化,约束有用。 用法:普通constraint后添加 not enforced enable query optimization 例如: create table employee (empid integer not null, name  varchar(25), gender char(1) not null, constraint gender_ok check (gender in('M','F')) not enforced enable query optimization)   关闭:alter table employee alter check gender_ok disable query optimization   类型: 1. Relational Index 2. Spatial Grid Index 3. Dynamic Bitmap Index 4. Block Base Index 5. Xml Index 

DB2 INDEX

类型: 升序(默认)/ 降序 唯一 / 非唯一(默认)   创建: create [unique] index <index_name> on <tablename> (<column name> [desc]) 例如:create unique index itemno on albums (itemno) desc   唯一索引:保证列中的值不同,但是接受null 唯一约束:不接受null   数据库参数:LOGINDEXBUILD 说明:在日志中记录index创建,重建,重组操作,用于以后灾难恢复。 update db cfg for <dbname> using LOGINDEXBUILD on 默认为OFF   创建INDEX后如果发现SQL效率没有提高,需要runstats

DB2 Tools

Task Center:                         制定DB2计划任务 Design Advisor:                    针对系统性能给出建议 instance / database / tablespace / tablespace container SQL Performance Monitor:      分析应用系统对数据库操作 Command Editor:                 查看计划任务 Journal:                               查看数据库结构历史记录 Developer Workbench:         建立或者编译存储过程 Control Center                        控制中心(提供basic/advanced/custom视图) Active Monitor                        监控系统性能   AIX:     DB2 Workgroup Server Edition Linux:   DB2 ...

DB2 Backup Policy

#!/bin/bash   PATH=$PATH:$HOME/bin:$HOME/sqllib/bin:$HOME/sqllib/adm:$HOME/sqllib/misc DB2INSTANCE=commerce   export PATH DB2INSTANCE   today=`date +%Y%m%d` delday= `date -d "3 weeks ago" +%Y%m%d` mkdir /backup/commerce/$today mkdir /backup/commerce/logs/$today   db2 backup database COMMERCE online to "/backup/commerce/$today" include logs   cp -r /home/commerce/log/commerce/COMMERCE/NODE0000/C0000028/* /backup/commerce/logs/$today   cd /backup/commerce tar cvfz commerce_$today.tar.gz $today   cd /backup/commerce/logs tar cvfz commerce_log_$today.tar.gz $today   rm -rf /backup/commerce/logs/$today rm -rf /backup/commerce/$today   find /backup/commerce/logs/ -maxdepth 1 -mtime +30 -type f -exec /bin/rm -f {} \; find /backup/commerce/ -maxdepth 1 -mtime +30 -type f -exec /bin/rm -f {} \; 

DB2 镜像分割

Image
通过将数据写到硬盘上,为源数据库创建一个“瞬时”拷贝。 作用:1. 克隆数据库;2. 备份拷贝,用于恢复原始数据库 前提:暂挂I/O,不能进行写页操作。 命令: 暂挂:connect to <db name> set write suspend for database 恢复:set write resume for dataabse 工具:db2inidb 命令:db2inidb <db name> as {snapshot / standby / mirror } [relocate using config_file] snapshot:创建数据库的一个克隆,只读数据库 standby:创建一个备用数据库,通过应用日志保持和主库同步 mirror:恢复原始的源数据库的备份 relocate:当源和目标数据库在同一服务器上,需要配置这个参数 创建克隆数据库 1. 暂挂源数据库I/O connect to <db name> set write suspend for database 2. 针对内容: 数据库目录、表空间、本地数据库目录、活动日志 查询:sysadm.dbpaths 3. 目标服务器创建实例,复制相应的数据库目录,表空间、本地数据库目录、活动日志 4. 目标服务器启动实例; 源数据库恢复:set write resume for database 5. 使用snapshot选项初始化分割镜像数据库: db2inidb <dbname> as snapshot 创建备用数据库 1. 暂挂源数据库I/O connect to <db name> set write suspend for database 2. 针对内容: 数据库目录、表空间、本地数据库目录 查 询:sysadm.dbpaths 3. 目标服务器创建实例,复制相应的数据库目录,表空间、本地数据库目录 4. 目标服务器启动实例; 源数据库恢复:set write resume for database 5. 使用standby选项初始化分割镜像数据库:...

DB2 HADR Basic Knowledge

HARD模式 主备要求: 1. 操作系统一样; 2. DB2版本一样; 3. 表空间,表空间一样; 4. 数据库路径可以不同。   1. 日志同步方式: SYNC:            要求主库日志已经写入备库日志中才能继续 NEARSYNC:要求主库日志已经写入备库内存中才能继续 ASYNC:        只要求主库日志传送至备库   2. 管理命令: START HARD ON DATABASE <db name> as primary / standby [by force] STOP HARD ON DATABASE <db name> TAKEOVER HARD ON DATABASE <db name> [by force]   3. 搭建HARD a. 通过备份恢复,或者分割镜像创建备库,保持备库rollforward pending状态,主库备库实例名,数据库名,端口号一样。 b. 设置HARD参数: HADR_LOCAL_HOST-->自己服务器hostname HADR_LOCAL_SVC-->自己服务器端口 HADR_REMOTE_HOST-->对方服务器hostname HADR_REMOTE_SVC-->对方服务器端口 HADR_REMOTE_INST-->双方instance名 HADR_SYNCMODE -->NEARSYNC LOGINDEXBUILD --> ON   分配端口/etc/services 例如: 主库70000 Hadr_port      70000/tcp 备库80000 Hadr_port      80000/tcp   备库启动HARD:START...

DB2 HADR Installation

主库服务器:12.11.0.105 主库instance:commerce instance端口:50000 hadr端口:55001   备库服务器:12.11.0.108 备库instance:commerce instance端口:50000 hadr端口:55002   配置 主库服务器: 1. 创建数据库commerce db2 create database COMMERCE   2. 开启归档模式: db2 update db cfg for commerce using LOGRETAIN ON db2 update db cfg for commerce using TRACKMOD ON   3. 备份数据库commerce db2 backup database COMMERCE to "/tmp"   4. 设置备用数据库信息: db2 update alternate server for database COMMERCE using hostname 12.11.0.108 port 50000   5. 设置HADR参数: db2 update db cfg for COMMERCE using HADR_LOCAL_HOST 12.11.0.105 db2 update db cfg for COMMERCE using HADR_LOCAL_SVC 55001 db2 update db cfg for COMMERCE using HADR_REMOTE_HOST 12.11.0.108 db2 update db cfg for COMMERCE using HADR_REMOTE_SVC 55002 db2 update db cfg for COMMERCE using HADR_REMOTE_INST commerce db2 update db cfg for COMMERCE using HADR_SYNCMODE NEARSYNC db2 update db cfg for COMMERCE using HADR_TIMEOUT ...

DB2 Lock

锁状态(模式) 适用对象 描述 意向无(Intent None,IN) 表空间和表 锁的拥有者可以读取被锁定表中的数据(包括未提交数据),但不能更改这些数据。在这种模式中,锁的拥有者不获取行级锁;因此,其他并发应用程序可以读取和更改表中的数据。 意向共享(Intent Share,IS) 表空间和表 锁的拥有者可以读取被锁定表中的数据,但不能更改这些数据。同样,因为锁的拥有者不获取行级锁;所以,其他并发的应用程序可以读取和更改表中的数据。(当事务拥有表上的意向共享锁时,就在它所读取的每个行上进行共享锁定。)当事务没有表达更新表中行的意图时,就获取这种锁。(SELECT FOR UPDATE、UPDATE ... WHERE 和 INSERT 语句表达更新的意图。) 下一键共享(Next Key Share,NS) 行 锁拥有者和所有并发的事务都可以读(但不能更改)被锁定行中的数据。这种锁用来在使用读稳定性或游标稳定性事务隔离级别读取的数据上代替共享锁。 共享(Share,S) 表和行 锁拥有者和任何其他并发的事务都可以读(但不能更改)被锁定的表或行中的数据。只要表不是使用共享锁锁定的,那么该表中的单个行可以使用共享锁锁定。但是,如果表是用共享锁定的,则锁拥有者不能在该表中获取行级的共享锁。如果表或行是用共享锁锁定的,则其他并发事务可以读取数据,但不能对它进行更改。 意向互斥(Intent Exclusive,IX) 表空间和表 锁拥有者和任何其他并发的应用程序都可以读取和更改被锁定表中的数据。当锁拥有者从表中读取数据时,它在所读取的每一行上获取一个共享锁,而在它更新的每一行上获取更新锁和互斥锁。其他并发的应用程序可以读取和更新被锁定的表。当事务表达更新表中行的意图时,就获取这种锁。 带意向互斥的共享(Share With Intent Exclusive,SIX) 表 锁拥有者可以读取和更改被锁定表中的数据。锁拥有者在它更新的行上获取互斥锁,但不在它读取的行上获取锁;因此,其他并发的应用程序可以读取但不能更新被锁定表中的数据。 更新(Update,U) 表和行 锁的拥有者可以更新被锁定表中的数据,而且锁的拥有者在它所更新的任何行上自动获得互斥锁。其他并发的应用程序可以读取但不能更新被锁定表中的数据。 下一键弱互斥(Next Key Weak Exc...

DB2 ESE Linux Installation

1. 安装ESE   a. 挂载DB2安装光盘   b. 运行:./db2_install 根据提示输入:ESE   2. 安装补丁   a. 解压缩补丁包 tar xvf v9.7fp4_linuxx64_universal_fixpack.tar.gz   b. 进入文件夹 cd universal   c. 安装:./installFixPack 输入db2软件安装路径:/opt/ibm/db2/V9.7   3. 创建instance a. 进入文件夹 cd /opt/ibm/db2/V9.7/instance   b. 运行./db2isetup 过程中创建管理员: 例如: 用户名:das 组:dasadmin 密码: arvato   创建实例管理员: 例如: 用户名:commerce 组:db2group 密码:arvato   创建实例守护用户: 例如: 用户名:commfenc 组:db2group 密码:arvato   配置服务名,端口 服务名: db2c_commerce 端口: 50000   tool catalog不用配置   notification不用配置   informix datasource support不用配置   配置db2text search服务名,端口 服务名:db2j_commerce 端口:55000   4. 导入注册文件   从IBM网站i bm.com/software/passportadvantage下载 DB2_ESE_Restricted_QS_Activation_97.zip   将其中db2ese_o.lic文件上传服务器/opt/ibm/db2/V9.7 服务器上输入命令: su - commerce db2licm -a /opt/ibm/db2/V9...

DB2 Table

查看当前用户表:list tables   查看数据库定义所有表:list tables for all   查看指定模式表:list tables for schema <schema name>   查看当前用户名为模式表:list tables for schema   查看表结构:describe table <tablename>   创建:create table <schema name>.<table name> (<column name> <type>) in <tablespace name> 例如:create table agent.test (id integer, name varchar(10)) in users   修改: 增加列:alter table <schema name>.<table name> add column <column name> <type> 删除列:alter table <schema name>.<table name> drop column <column name> 设置列默认值:alter table <schema name>.<table name> alter column <column name> set default <默认值>   重命名:rename table 原表名 to 目标表名 说明:如果表存在相关object,则只能删除,重建。   删除表:drop table <schema name>.<table name> 删除schema:drop schema <schema name> restrict   复制表结构:create table 目标表名 like 原表名 in <tabl...

DB2 删除

删除数据库: su - <db instance user> db2 drop database <dbname>   删除实例: su - root cd /<db2 install directory>/instance  例如:/opt/ibm/db2/V9.7/instance ./db2idrop -f <instance name>   删除das: su - root cd /<db2 install directory>/instance  例如:/opt/ibm/db2/V9.7/instance ./dasdrop <das user>   删除DB2软件: su - root cd /<db2 install directory>/install  例如:/opt/ibm/db2/V9.7/install ./db2_deinstall -a   删除DB2用户: userdel -r <username>   删除表数据: 1. delete from <table name>:速度最慢   2. alter table <tablename> activate not logged initially with empty table:速度最快   3. load from /dev/null of del replace into <tablename> nonrecoveralbe   4. drop table <tablename>;     create table <tablename>...   a. 创建空文件 b. import from empty.del of del replace into <table name>   4. truncate t...

DB2 db2diag

查看某个时间段: db2diag -time 2009-05-23.00.00.00:2009-05-23.00.30.00 查看某个级别:db2diag -l error / warning 对应文件:/sqllib/db2dump/db2diag.log   清理db2diag文件: 1. 创建备份文件夹; 2. db2diag -A <备份路径> 例如: db2diag -A /home/commerce/sqllib/db2dump/db2diag_bak

DB2 字符集查看

查看字符集:db2 get db cfg for <dbname> | grep code

DB2 连接数

查看连接数:db2 list application / db2 get snapshot for application / db2pd -applications -db <dbname>   查看连接详情:db2 list application show detail   关闭连接:db2 force application(id)   关闭所有连接:db2 force application all   查看连接数配置:db2 get db cfg for 数据库名|grep app   修改连接数配置:db2 update db cfg for 数据库名 using 参数名字 参数值   推荐值: MAXAPPLS = 500 APPLHEAPSZ=1024   LOCKLIST = 512 * 128 * maxappls / 4096   maxlocks = 2 * 100 / maxappls 

DB2 数据库和对象权限

特权分类: 数据库级特权 对象级特权   数据库级特权: CREATETAB: 用户可以在数据库中创建表。 BINDADD: 用户可以使用 BIND 命令在数据库中创建包。 CONNECT: 用户可以连接数据库。 CREATE_NOT_FENCED: 用户可以创建 unfenced 用户定义函数(UDF)。 IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用 CREATE SCHEMA 命令。 LOAD: 用户可以将数据装载进表中。 QUIESCE_CONNECT: 用户可以访问处于静默(quiesced)状态的数据库。 CREATE_EXTERNAL_ROUTINE: 用户可以创建供应用程序和数据库的其他用户使用的过程。   对象级特权: 特权名称 相关对象 描述 CONTROL 表、视图、索引、包、别名、不同的类型、用户定义函数、序列 提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。 DELETE 表、视图 允许用户从对象中删除记录。 INSERT 表、视图 允许用户通过 INSERT 或 IMPORT 命令将记录插入对象中。 SELECT 表、视图 提供使用选择语句来查看对象内容的能力。 UPDATE 表、视图 允许用户使用更新语句修改对象中的记录。 ALTER 表 允许用户使用更改语句更改对象定义。 INDEX 表 允许用户使用创建索引语句在对象上创建索引。 REFERENCES 表 提供在对象上创建或删除外键约束的能力。 BIND 包 允许用户重新绑定现有的包。 EXECUTE 包、过程、函数、方法 允许用户执行包和例程。 ALTERIN 模式 允许用户修改模式中的对象定义。 CREATEIN 模式 允许用户在模式中创建对象。 DROPIN 模式 允许用户删除模式中的对象。   相关视图: syscat.tabauth syscat.colauth syscat.indexauth syscat.schemaauth syscat.routineauth syscat.packageauth   授权:db2 grant se...

DB2 automatic commit when shutdown

db2  UPDATE COMMAND OPTIONS USING c OFF 

DB2 Backup & Recover

Image
跨版本的备份恢复,必须使用离线备份集 备份类型: 1. 对数据库影响: 在线备份(热备份/联机备份):用户可以使用 离线备份(冷备份/脱机备份):用户无法使用 2. 备份内容: 完全备份:针对数据库所有数据的备份 增量备份:针对数据库部分数据备份 说明:累计增量、差异增量(delta备份) 累计增量:所有增量备份都是基于基础备份;log 差异增量:所有增量备份都是基于之前的增量备份。 备份文件命名规范: Alias/type/instance/node/catalog/node/year/month/day/hour/minute/second/sequence 离线备份 离线备份: backup database <dbname> [TO <path>] 查看当前到数据库的连接 db2 list applications 强制关闭所有到数据库连接 db2 force applications all 例如: db2 force application all db2 deactivate database B2CTEST1 backup database B2CTEST1 to "/tmp" with 2 buffers buffer 1024 parallelism 1 without prompting 增量备份 1. 修改DB2参数使其支持增量备份 db2 connect to <database name>; update db cfg using logretain on; update db cfg using trackmod on; db2stop force; db2start; 2. 增量备份 基础备份:db2 backup database <dbname> to <path> 差异增量备份:db2 backup database <dbname> incremental delta to <directory...