linux 下 db2 常用的命令

实例管理

1.创建实例

什么是实例?

DB2的实例就是一组进程和一组共享内存。可把实例想象为一个数据库的集合,共同运行在一个逻辑服务单元中(同一个端口)。在一个系统中,用户可以创建若干个实例,每一个实例使用各自不同的端口服务于远程应用程序。每一个实例可以包含若干个数据库。

创建实例

[root@canna ~]# /opt/ibm/db2/V9.7/instance/db2icrt -? DBI1001I Usage: db2icrt [-h|-?] [-d] [-a AuthType] [-p PortName] [-s InstType] -u FencedID InstName Explanation: An invalid argument was entered for the db2icrt command. Valid arguments for this command are: -h|-? display the usage information. -d turn debug mode on. -a AuthType is the authentication type (SERVER, CLIENT, or SERVER_ENCRYPT) for the instance. -p PortName is the port name or port number to be used by this instance. -s InstType is the type of instance to be created (ese,wse, standalone, or client). ese used to create an instance for a DB2 database server with local and remote clients with DPF support. This type is the default instance type for DB2 Enterprise Server Edition. wse used to create an instance for a DB2 database server with local and remote clients. This type is the default instance type for DB2 Workgroup Edition, DB2 Express or Express-C Edition, and DB2 Connect Enterprise Edition. standalone used to create an instance for a DB2 database server with local clients. This type is the default instance type for DB2 Personal Edition. client used to create an instance for a IBM Data Server Client. This type is the default instance type for IBM Data Server Client products and DB2 Connect Personal Edition. DB2 products support their default instance types and the instance types lower than their default ones. For instance, DB2 Enterprise Edition supports the instance types of 'ese', 'wse', 'standalone' and 'client'. -u FencedID is the name of the user under which fenced UDFs and fenced stored procedures will be run. This flag is not required if only a IBM Data Server Client is installed. InstName is the name of the instance. User response: Confirm that user IDs and group names used to create the DB2 instance are valid. For information about naming rules, see the topic called "User, user ID and group naming rules" in the DB2 Information Center. Refer to the DB2 Information Center for a detailed description of the command. Correct the syntax and reissue the command.

创建服务端实例命令:
db2icrt -a server -s ese -p 55555 -u db2fenc db2inst
上述命令创建了实例名为db2inst的服务端实例,实例的端口为55555,实例的受防护用户为db2fenc。

受防护的用户

  • 表示用来运行受防护用户定义的函数 (UDF) 和受防护存储过程的用户的名称,受防护的用户用于在 DB2 数据库所使用的地址空间之外运行用户定义的函数(UDF)和存储过程(UDP)。缺省用户为 db2fenc1,缺省组为 db2fadm1。如果不需要此安全级别(例如,在测试环境中),那么可以使用实例所有者作为受防护的用户
  • 如果您正在 DB2 客户机上创建实例,那么此标志不是必需的。

创建客户端实例命令:
db2icrt -s client ark
上述命令创建了实例名为ark的客户端实例。

2. 启动/停止/列出实例
  • 启动实例。实例创建后,需要通过db2start命令启动才能工作。在UNIX平台下,在实例用户环境下启动实例是:
    db2start
  • 停止实例。停止实例的命令是:
    db2stop
    如果当前实例下某数据库有应用连接,则db2stop会报错,这时可通过 db2 force applications all
    把所有应用连接断开,或通过
    db2stop force
    强制停止实例。
  • 列出实例。可以通过
    db2ilist
    查看某个DB2版本下有哪些实例。

实例停止不了的问题?
当遇到db2stop force无法停止,而db2start也无法启动的问题,在UNIX/LINUX下,可通过db2_kill强制终止所有分区上执行的进程,然后执行ipcclear清理IPC资源,当重新启动数据库时,DB2会做崩溃恢复。

3. 更新实例

实例更新命令是db2iupdt,一般在打补丁或版本升级时使用。db2iupdt命令需要root用户执行,执行前需要首先停止实例。

4. 删除实例

删除实例的命令是db2idrop,使用root用户执行,删除前必须停止实例。注意:删除实例并不会删除实例下的数据库。

1. db2stop force 2. cd /opt/ibm/db2/V9.7/instance 3. ./db2idrop db2inst
5. 实例参数

每个实例都有一个配置参数文件用于控制实例相关的参数,如诊断路径,监控开关,安全相关的控制及服务端口号等。通过db2 get dbm cfg命令查看实例参数,以下对一些重要的参数进行来标注:
实例参数1

实例参数2

实例参数3

数据库管理

1.数据库结构

创建完实例后,就可以创建数据库,一个实例可以包含多个数据库,但一个数据库只能归属于一个实例。每个数据库是由一组对象构成的,如表,视图,索引 等。表是二维结构,由一些行和列构成,表数据存放在表空间里,表空间是数据库的逻辑存储层,每个数据库包含多个表空间,每个表空间只能归属于一个数据库。 从实例->数据库->表空间->表构成了DB2的逻辑层次关系,从物理存储上,每个表空间由一个或多个容器构成,容器映射到物理存储, 容器可以是目录,也可以是文件或裸设备,每个容器只能属于一个表空间。根据数据的管理方式,表空间分为系统管理(SMS)和数据库管理(DMS)。 DB2将表和索引数据存在页里(PAGE),页是DB2最小的物理分配单元,表中每行数据只能包含在一页,不能跨页。DB2支持的页大小共4 种:4K,8K,16K和32K,假定一行数据大小是20K,那么需要的页的大小是32K。 每个表空间是由一个或多个容器构成的,表空间仅仅是逻辑存储层,具体的数据是存在容器里。容器是由多个extent构成的。 表空间->容器->extent->page就构成了DB2的存储模型。

2.创建数据库
db2 "create database zdb automatic storage yes on /db2auto dbpath on '/db2path' using codeset utf-8 territory cn collate using system";

DBPATH ON : 表示数据库创建目录
USING CODESET codeset TERRITORY territory : 表示数据库编码集(codeset)和区域(territory)。数据库一旦创建,编码就无法改变。

3.删除数据库

db2 drop database

表空间管理

缓冲池了解

创建完数据库后,就需要我们来创建表空间了。在创建表空间前,我们先了解下缓冲池。

缓冲池指的是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。每个 DB2 数据库都必须具有一个缓冲池。

每个新数据库都定义了一个称为 IBMDEFAULTBP 的缺省缓冲池。可以使用 CREATE BUFFERPOOL、DROP BUFFERPOOL 和 ALTER BUFFERPOOL 语句来创建、删除和修改缓冲池。SYSCAT.BUFFERPOOLS 目录视图访问数据库中所定义的缓冲池的信息(具体参数可baidu or google)。

首次访问表中的数据行时,数据库管理器会将包含该数据的页放入缓冲池中。这些页将一直保留在缓冲池中,直到关闭数据库或者其他页需要使用某一页所占用的空间为止。缓冲池中的页可能正在使用,也可能没有使用,它们可能是脏页,也可能是干净页:

  • 正在使用的页就是当前正在读取或更新的页。为了保持数据一致性,数据库管理器只允许一次只有一个代理程序更新缓冲池中的给定页。如果正在更新某页,那么它正在内一个代理程序互斥地访问。如果正在读取该页,那么多个代理程序可以同时读取该页。
  • “脏”页包含已更改但尚未写入磁盘的数据。
  • 将一个已更改的页写入磁盘之后,它就是一个“干净”页,并且可能仍然保留在缓冲池中。

简单点说:缓冲池是把存储在磁盘中的数据缓存起来,便于我们访问数据,提高应用程序对数据库的访问速度。

缓冲池和表空间关系

  • 每个表空间都与一个特定的缓冲池相关。IBMDEFAULTBP 是缺省缓冲池。要使另一个缓冲池与表空间相关,那么该缓冲池必须存在并且它们具有相同的页大小。关联是在使用 CREATE TABLESPACE 语句创建表空间时定义的,但以后可使用 ALTER TABLESPACE 语句更改此关联。
  • 缓冲池页大小。缺省缓冲池的页大小是在使用 CREATE DATABASE 命令时设置的。此缺省值表示所有将来 CREATE BUFFERPOOL 和 CREATE TABLESPACE 语句的缺省页大小。如果在创建数据库时不指定页大小,那么缺省页大小是 4 KB。
    注: 如果确定数据库需要 8 KB、16 KB 或 32 KB 的页大小,那么必须至少定义一个具有相匹配的页大小并且与数据库中的表空间相关联的缓冲池。

创建缓冲池
db2 "create bufferpool bp32k size 10000 pagesize 32k"
创建一个名为bp32k的缓冲池,包含10000页,页大小为32k。

建立数据库时,DB2会创建三个默认的表空间。

  • 系统表空间(system tablespace),用来存储系统表,也就是数据字典的信息,一个数据库只能有一个系统表空间
  • 临时表空间(temporary tablespace),用来保存语句执行时产生的中间临时数据,如join,排序等操作都可能产生一些临时数据
  • 用户表空间(user tablespace),用来存储表,索引,大对象等数据
  • 只有建库时启用了automatic storage yes,表空间才支持自动存储管理
  • 创建缓冲池时,size表示页数,pagesize表示页大小,size*pagesize就是缓冲池的内存大小
2.表空间创建
#!/bin/bash # connect to db db2 connect to zdb; DMS="managed by database"; STMP_TBSP="temporary tablespace"; UTMP_TBSP="user temporary tablespace"; LARG_TBSP="large tablespace"; # 关闭文件系统缓存,减少系统开销,因为已使用bufferpool缓存数据 NFSC="no file system caching"; db2 "create $LARG_TBSP tbs_dat pagesize 32k $DMS using(FILE '/db2tbsp/zdb/dat_1' 10240M) bufferpool bp32k $NFSC"; db2 "create $LARG_TBSP tbs_idx pagesize 32k $DMS using(FILE '/db2tbsp/zdb/idx_1' 5120M) bufferpool bp32k $NFSC"; db2 "create $STMP_TBSP tbs_tmp pagesize 32k $DMS using(FILE '/db2tbsp/zdb/tmp_1' 5120M) bufferpool bp32k $NFSC"; db2 "create $UTMP_TBSP tbs_utmp pagesize 32k $DMS using(FILE '/db2tbsp/zdb/utmp_1' 5120M) bufferpool bp32k $NFSC";
3.表空间查看

常用的表空间监控方法:

# 显示每个表空间的最核心的信息 简单,直观 db2 list tablespaces [show detail] # 显示表空间容器的相关信息 db2 list tablespace containers for [show detail] # 显示表空间的配置信息、使用情况和容器信息 db2pd -d tablespaces # 显示的信息比list tablespaces更全面,比如是否启用了自动存储功能,以及表空间map信息 db2 get snapshot for tablespaces on # 通过查询管理视图 来查看表空间信息 db2 "select * from sysibmadm.snaptbsp" db2 "select * from sysibmadm.snapcontainer"
4.表空间修改

表空间更改。对于DMS表空间,提供了Add用来增加新的容器,Drop删除容器,Extend用来扩展已有容器大小,Reduce用来缩减已有容 器大小,Resize重新设定容器大小。对于Add和Drop操作,表空间容器间会发生数据重新平衡(Rebalance)。对于Reduce和 Resize操作,需要确保更改后的表空间容器有足够的空间,否则DB2会拒绝该操作。当遇到DMS表空间满的情况时,根据存储空间和对运维的影响,有以 下三种方案:

  • 如果表空间容器对应的存储中还有未分配空间,可通过alter tablespace的extend或resize选项扩展已有表空间容器的大小。下例是在每个容器上扩展了50GB:
    db2 "alter tablespace tbs_dat extend (file '/db2tbsp/zdb/dat_1' 10240M , file /db2tbsp/zdb/dat_2' 50G ) "

  • 如果表空间容器对应的存储中没有剩余空间时,可通过alter tablespace的add选项增加新的容器。需要注意的是:通过add增加容器会在容器间进行数据Reblance,即数据重新平衡。如果数据量很 大,Reblance的时间会很长,对系统性能会造成很大影响。下例增加一个新容器,表空间发生reblance
    db2 "alter tablespace tbs_dat add (file '/db2tbsp/zdb/dat_3' 50G ) "

  • 通过alter tablespace begin new stripe set选项。Begin new stripe set选项是当已有容器使用完后,再使用新增加的容器。
    db2 "alter tablespace tbs_dat begin new stripe set (file '/db2tbsp/zdb/dat_3' 50G ) "

5.表空间删除

db2 drop tablespace

参考

《DB2数据库最佳管理实践》

http://www.dblotus.com

也可以访问我的github

linux db2 常用命令




http://blog.sina.com.cn/s/blog_904dee7f0101e1lt.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 连接DB2数据库的命令是:db2 connect to [数据库名称] user [用户名] using [密码] 例如:db2 connect to sample user db2admin using password 请注意,这只是一个示例,您需要使用您自己的数据库名称,用户名和密码来连接到您的数据库。 ### 回答2: 要连接DB2数据库,我们需要安装DB2客户端软件,然后在Linux命令行使用db2命令来连接数据库。下面是连接DB2数据库的具体步骤: 1. 下载并安装DB2客户端软件 在IBM官网下载DB2客户端软件,安装后配置环境变量。可以在终端运行以下命令检查是否安装成功: ``` db2level ``` 2. 在Linux命令行中使用db2命令Linux命令行输入以下命令可以连接到DB2数据库: ``` db2 connect to DATABASE_NAME user USERNAME using PASSWORD ``` 其中,DATABASE_NAME为数据库名称,USERNAME为用户名,PASSWORD为密码。例如: ``` db2 connect to sample user db2inst1 using password ``` 3. 查询数据库信息 连接成功后,我们可以使用以下命令查询数据库信息: ``` db2 list database directory ``` 这会显示所有可用的数据库列表,包括数据库名称、数据库别名、数据库路径等信息。 4. 执行SQL语句 连接成功后,我们可以使用以下命令执行SQL语句: ``` db2 "SELECT * FROM TABLE_NAME" ``` 其中,TABLE_NAME为需要查询的表名,可以根据具体情况进行替换。查询结果将会在命令行中显示。如果需要将结果保存到文件中,可以使用以下命令: ``` db2 "SELECT * FROM TABLE_NAME" > result.txt ``` 这将把查询结果保存到result.txt文件中。 以上就是连接LinuxDB2数据库的具体步骤和命令,希望对大家有所帮助。 ### 回答3: 在Linux系统下连接IBM DB2数据库,需要使用db2命令行工具或者db2客户端工具,具体步骤如下: 1. 安装DB2客户端工具 如果没有安装DB2客户端工具,需要先下载并安装。安装后,需要设置环境变量,使db2命令能在任何目录下使用。具体可参考DB2官方文档。 2. 连接DB2数据库 在命令行中输入以下命令连接DB2数据库: db2 connect to <database_name> user <username> using <password> 其中,<database_name>表示数据库名,<username>表示用户名,<password>表示密码。 3. 建立连接 如果连接成功,会显示Connected to database <database_name>。此时,可以执行SQL语句来查询或操作DB2数据库。 4. 断开连接 退出当前连接,可以使用以下命令db2 disconnect 5. 其他命令 除了连接和断开连接,还有很多其他命令可以使用,例如执行SQL脚本、查看数据库信息等,可参考DB2官方文档。 其中,一些常用命令如下: - db2 -tvf <sql_file>:执行SQL脚本 - db2 list database directory:列出所有数据库 - db2 list tables for schema <schema_name>:列出指定模式(schema)下的所有表 - db2 describe table <table_name>:描述表结构信息 - db2 get db cfg:查看数据库配置信息 - db2 top:查看数据库资源利用率 总结: 以上为Linux连接DB2数据库的基本步骤和常用命令,通过这些命令,可以快速连接DB2数据库,并实现各种操作。但是需要注意的是,每个命令的参数和使用方法都有所不同,需要根据具体需求进行学习和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值