实例(Instance)是逻辑数据库管理器环境,可以在实例中创建数据库、对数据库进行编目(参见 3.4.4 小节)和设置配置参数。根据需要,可以在同一台物理服务器上创建多个实例,每个实例拥有唯一的数据库服务器环境。通常情况下,一套系统在研发阶段处于一个实例中,在测试阶段使用另一个实例,这样开发和测试可以隔离开,相互不产生干扰。当系统可以正式发布时,直接从测试的实例进行升迁即可。
使用实例的另外一个好处是可以从实例和数据库两个层次进行权限管理。通常 DBA 都拥有对数据库很高的权限,但是当系统正式上线之后,考虑到某些业务的保密性,进行数据库维护的 DBA 不应该看到数据库中具体的数据。在 DB2 中,给这样的 DBA 分配 SYSCTRL 权限(实例级别的权限),而不分配 DBADM 权限(数据库级别的权限)(关于权限的内容参见第 5 章),就可以实现让该 DBA 对数据库进行正常的维护,而无法看到数据库内部的数据。
实例是一个逻辑环境,每个实例对应于一个进程,每个实例都拥有独立的系统资源。
DB2 在安装的时候会创建一个默认的实例,在 Windows 环境下为 DB2,在 UNIX 或 Linux 环境下为 db2inst1。
要创建实例必须拥有相应的权限,Windows 中属于 Administrators 组的用户,UNIX/Linux 中具有 root 权限的用户,可以创建新的实例。
创建实例的系统级命令为:
db2icrt < 实例名 > |
创建一个新的实例之后,在系统中就会产生对应的目录和进程。需要注意的是,在 UNIX 或 Linux 环境下,还需要提供受防护的用户标识(即 UNIX 和 Linux 识别的用户 ID),具体命令格式为:
db2icrt – u < 用户标识 > < 实例名 > |
删除实例的系统命令为:
db2idrop < 实例名 > |
列示实例的系统级命令为:
db2ilist |
可以使用 DB2 命令:
get instance |
来查看当前实例。其实在 UNIX 和 Linux 环境下实例就是当前用户。
当系统中包含多个实例时,可以在不同的实例之间进行切换。
Windows 环境下,使用系统级命令:
set DB2INSTANCE=< 实例名 > |
来切换实例。需要注意的是,在当前命令窗口中该命令不会生效,要先执行 exit 退出命令窗口,重新打开一个命令窗口执行该命令。还可以直接在控制面板中修改环境变量 DB2INSTANCE 的值。
在 UNIX 或 Linux 环境下,实例对应于一个用户,只要切换到该用户也就切换到了该实例中:
su - < 实例名 > |
例 3‑2 在 Linux 中创建一个名为 newinst1 的新实例。
创建新用户
使用 useradd 命令创建新用户,使用 passwd 命令修改密码,如图 3.4 所示。
切换到 DB2 默认的实例 db2inst1 中:
su – db2inst1 |
然后运行 db2level 命令,可以得到 DB2 的安装目录,本例中为 /opt/ibm/db2/V9.5。
切换到 root 账户下:
su – root |
进入到安装目录中的 instance 子目录中:
cd /opt/ibm/db2/V9.5/instance |
运行 db2icrt 命令创建新的实例:
./db2icrt – u newinst1 newinst1 |
切换回 db2inst1 用户,运行 db2ilist 命令列示所有实例:
su – db2inst1 db2ilist |
可以看到新建的 newinst1 实例。
有两点需要注意,一是 Linux 下用户名必须全部小写,二是 DB2 的实例名长度不能超过 8 位。
每个实例对应于一个进程,默认实例会自动启动,而在安装完成之后新建的实例不会自动启动。要启动一个实例,需要切换到该实例中,然后运行如下系统级命令:
db2start |
要停止当前实例,使用系统级命令:
db2stop |
如果想让一个实例自动启动(即让对应的进程自动执行)或者取消自动启动,在 Windows 环境中,可以通过在服务面板中进行设置,在 UNIX 或 Linux 环境中,可以使用如下系统级命令自动启动一个实例:
db2iauto – on < 实例名 > |
使用如下系统级命令取消一个实例的自动启动:
db2iauto – off < 实例名 > |
如果要管理远程的实例,需要先进行实例的附接(ATTACH),相应的语法为:
attach to < 实例名 > user < 用户名 > using < 密码 > |
断开与远程实例的连接使用如下命令:
detach |
关于实例附接后进行的详细管理操作,参见 3.4.4 小节。
DB2 中有一个特殊的实例,叫做 DB2 管理服务器(DB2 Administration Server,简称 DAS)。它能够调度执行在任务中心中创建的任务。DB2 创建的各种任务保存在一个称为“工具目录数据库”的特定数据库中,这些任务可以在任务中心或者控制中心中创建,然后由 DAS 进行调度。
DAS 在 Windows 中对应于控制面板中的“DB2DAS00”服务,在 UNIX 或 Linux 中,安装时会创建一个 dasadm1 用户,就是 DAS。
启动和停止 DAS 服务分别使用如下系统级命令:
db2admin start db2admin stop |
通过设置各种数据库管理器参数,可以实现对整个实例环境都有效的配置,使用命令 db2 get dbm cfg,可以得到数据库管理器的配置参数:
数据库管理器配置
节点类型 = 带有本地和远程客户机的数据库服务器 数据库管理器配置发行版级别 = 0x0c00 最大打开文件数 (MAXTOTFILOP) = 16000 CPU 速度(毫秒 / 指令) (CPUSPEED)= 2.597893e-007 最大并发活动数据库数 (NUMDB) = 8 联合数据库系统支持 (FEDERATED) = NO 事务处理器监视器名 (TP_MON_NAME) = 缺省对方付费账户 (DFT_ACCOUNT_STR) = Java Development Kit 安装路径(JDK_PATH)= D:PROGRA~1IBMSQLLIBjavajdk 诊断错误捕获级别 (DIAGLEVEL) = 3 通知级别 (NOTIFYLEVEL) = 3 诊断数据目录路径 (DIAGPATH) = 缺省数据库监视开关 缓冲池 (DFT_MON_BUFPOOL) = OFF 锁定 (DFT_MON_LOCK) = OFF 排序 (DFT_MON_SORT) = OFF 语句 (DFT_MON_STMT) = OFF 表 (DFT_MON_TABLE) = OFF 时间戳记 (DFT_MON_TIMESTAMP) = ON 工作单元 (DFT_MON_UOW) = OFF 监视实例和数据库的运行状况 (HEALTH_MON) = ON SYSADM 组名 (SYSADM_GROUP) = SYSCTRL 组名 (SYSCTRL_GROUP) = SYSMAINT 组名 (SYSMAINT_GROUP) = SYSMON 组名 (SYSMON_GROUP) = 客户机用户标识 - 密码插件 (CLNT_PW_PLUGIN) = 客户机 Kerberos 插件 (CLNT_KRB_PLUGIN) = IBMkrb5 组插件 (GROUP_PLUGIN) = 本地授权的 GSS 插件 (LOCAL_GSSPLUGIN) = 服务器插件方式 (SRV_PLUGIN_MODE)= UNFENCED GSS 插件的服务器列表 (SRVCON_GSSPLUGIN_LIST) = 服务器用户标识 - 密码插件 (SRVCON_PW_PLUGIN) = 服务器连接认证 (SRVCON_AUTH)= NOT_SPECIFIED 集群管理器 (CLUSTER_MGR) = 数据库管理器认证 (AUTHENTICATION) = SERVER 没有权限就允许编目 (CATALOG_NOAUTH) = NO 信赖所有客户机 (TRUST_ALLCLNTS) = YES 可信的客户机认证 (TRUST_CLNTAUTH) = CLIENT 绕过联合认证 (FED_NOAUTH) = NO 缺省数据库路径 (DFTDBPATH) = D: 数据库监视器堆大小(4KB) (MON_HEAP_SZ) = AUTOMATIC “Java 虚拟机”堆大小(4KB) (JAVA_HEAP_SZ) = 2048 审计缓冲区大小(4KB) (AUDIT_BUF_SZ) = 0 实例共享内存(4KB)的大小 (INSTANCE_MEMORY) = AUTOMATIC 备份缓冲区缺省大小(4KB) (BACKBUFSZ) = 1024 复原缓冲区缺省大小(4KB) (RESTBUFSZ) = 1024 代理程序的堆栈大小 (AGENT_STACK_SZ) = 16 最小已落实专用内存(4KB) (MIN_PRIV_MEM) = 32 专用内存阈值(4KB) (PRIV_MEM_THRESH) = 20000 排序堆阈值(4KB) (SHEAPTHRES) = 0 目录高速缓存支持 (DIR_CACHE) = YES 应用程序支持层堆大小(4KB) (ASLHEAPSZ) = 15 最大请求者 I/O 块大小(以字节计) (RQRIOBLK) = 32767 查询堆大小(4KB) (QUERY_HEAP_SZ) = 1000 已调速实用程序对工作负载的影响 (UTIL_IMPACT_LIM) = 10 代理程序的优先级 (AGENTPRI) = SYSTEM 代理程序池大小 (NUM_POOLAGENTS) = AUTOMATIC 池中的初始代理程序数 (NUM_INITAGENTS) = 0 最大协调代理程序数 (MAX_COORDAGENTS) = AUTOMATIC 最大客户机连接数 (MAX_CONNECTIONS) = AUTOMATIC 保留受防护的进程 (KEEPFENCED) = YES 合用受防护的进程的数目 (FENCED_POOL) = AUTOMATIC 受防护的进程的初始数目 (NUM_INITFENCED) = 0 索引重新创建时间和重做索引构建 (INDEXREC) = RESTART 事务管理器数据库名称 (TM_DATABASE) = 1ST_CONN 事务再同步时间间隔(秒) (RESYNC_INTERVAL) = 180 SPM 名称 (SPM_NAME) = GREENWI1 SPM 日志大小 (SPM_LOG_FILE_SZ) = 256 SPM 再同步代理程序限制 (SPM_MAX_RESYNC) = 20 SPM 日志路径 (SPM_LOG_PATH) = NetBIOS 工作站名 (NNAME) = TCP/IP 服务名称 (SVCENAME) = 发现方式 (DISCOVER) = SEARCH 发现服务器实例 (DISCOVER_INST) = ENABLE 最大查询并行度 (MAX_QUERYDEGREE) = ANY 启用分区内并行性 (INTRA_PARALLEL) = NO 内部通信缓冲区数(4KB) (FCM_NUM_BUFFERS)=AUTOMATIC 内部通信信道数 (FCM_NUM_CHANNELS)=AUTOMATIC db2start/db2stop 超时(分钟) (START_STOP_TIME) = 10 |
针对每个参数的详细解释,请参见 IBM 的官方手册。
在控制中心中,展开到实例级别,右键弹出菜单中选择“配置参数…”,可以通过图形界面查看和修改数据库管理器的配置参数,如图 3.5 所示。
实例级别的常用命令如表 3.1 所示。
命令名称 | 描述 |
---|---|
GET DBM CFG [SHOW DETAIL] | 返回数据库管理器的参数设置 |
UPDATE DBM CFG USING < 参数 > < 值 > | 将数据库管理器的某个参数设置为新的值 |
db2icrt < 实例名 > | 创建实例 |
db2idrop < 实例名 > | 删除实例 |
db2ilist | 列示实例 |
GET INSTANCE | Windows 中获取当前实例名称 |
set DB2INSTANCE=< 实例名 > | Windows 中切换实例 |
db2start | 启动当前实例 |
db2stop | 停止当前实例 |
db2iauto -<on|off> < 实例名 > | UNIX 或 Linux 下设置某个实例是否自动启动 |
ATTACH TO < 实例名 > [USER < 用户名 >] [USING < 密码 >] | 附接到指定的实例进行远程操作 |
DETACH | 断开与当前实例的附接 |
LIST ACTIVE DATABASES | 列出活动的数据库和连接数量 |
LIST APPLICATION [SHOW DETAIL] | 返回当前连接的应用程序的信息 |
FORCE APPLICATION[S] ALL | 断开与所有应用程序的连接 |
FORCE APPLICATION (< 句柄 1>[,< 句柄 2>, … ,< 句柄 n>]) | 断开指定句柄的应用程序的连接 |
db2admin start | 启动管理服务器实例 |
db2admin stop | 停止管理服务器实例 |
CATALOG LOCAL NODE < 节点名 > INSTANCE < 实例名 > | 编目实例作为本地节点 |
CATALOG TCPIP NODE < 节点名 > REMOTE < 主机名 > SERVER < 端口号 > | 编目远程实例作为本地节点 |
注:表格中大写的命令表示该命令是 DB2 级的,可以直接在命令行处理器中执行,小写的命令表示该命令是系统级的,需要在命令窗口中执行,而且在 UNIX 或 Linux 下必须小写,而在 Windows 下不区分大小写。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论