【DB2学习笔记之四】实例概念及其操作
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
在DB2中实例的可以如下描述:一个实例提供了一个独立的环境,在这个环境里可以进行数据库操作和程序运行。在一个服务器中可以有多个实例,每个实例可以有多个数据库。由于环境是独立的,所以实例间内容上是不透明的,因此相同名字的项目会出现在不同的实例中。实例的出现为用户进行操作具有了独立性。从架构的角度来看,一个实例是构建于DB2二进制代码和用户数据项目中的一层。丢弃一个实例并不意味着必须放弃它所属的数据库。
创建实例时需要指定fenced user: 原因是默认情况下,用户定义的函数和存储过程是在 fenced 模式下创建的,因而这些进程运行在与 DB2 引擎不同的地址空间中,也称为系统控制器进程 db2sysc。这为数据库管理器提供了保护,使之免于被用户定义的例程意外地或恶意地破坏。
有一种实例叫做client instance,它是一种Server instance的缩小版实例,这种实例不能被开始或停止,在其上不能创建数据库。你在如下的情况下才需要它:You need to have a client instance if you have two physically separate Linux and UNIX machines, one containing the DB2 client code (assume it is an application server machine) and the other one containing the DB2 server code (the DB2 server machine).On the client machine a client instance must be created that will associate it to a given operating system user. Logging on as this user lets you perform the commands required to set up connectivity to the DB2 server machine.
在Linux下一般的DB2实例是使用多进程架构进行操作的,db2sysc是主进程,在这个主进程下有以下子进程:
db2acd:autonomic computing daemon DB2运行监控守护进程
db2ckpw: server端鉴权进程
db2gds: 帮助产生子进程,进行相关子进程管理的守护进程。
db2ipccm:管理IPC
db2resyn:涉及 twophase-commit的交易执行。
db2tcpcm:TCP通信管理。
db2wdog:看门狗进程。
一、创建
创建前的准备:
因为实例的名称必须与拥有实例的用户的名称相同。
所以 1 必须先创建拥有实例的用户: useradd dbinst
2 一个用户只能拥有一个实例
因为在server上创建时必须要指定一个FencedID(稍后会解释)
所以 1 必须先创建这个Fencedid: useradd dbfenc
1. 使用适当权限登录。
2. 运行 db2icrt 命令。
/opt/ibm/db2/V9.1/instance/db2icrt -a AuthType -u FencedID InstName
-a AuthType (Linux 或 UNIX)
表示实例的认证类型。AuthType 可为 SERVER、CLIENT 或 SERVER_ENCRYPT 其中之一。 SERVER 是缺省值。此参数是可选的。
-u FencedID
表示将用来运行受防护用户定义的函数(UDF)和受防护存储过程的用户的名称。如果您正在客户机上创建实例,那么此标志不是必需的。但是在server上创建时必须要指定这个FencedID的。指定您创建的受防护用户的名称。
InstName
表示实例的名称。实例的名称必须与拥有实例的用户的名称相同。指定您创建的拥有实例的用户的名称。将在拥有实例的用户的主目录中创建该实例
3.添加实例
/opt/ibm/db2/V9.1/instance/db2icrt -a server -u dbfenc dbinst
二、删除
db2drop instance_name
-f 是强制应用程序标志。如果指定了此标志,则将强制终止使用该实例的所有应用程序。
db2drop -f instance_name
三、启动一个存在的实例
su - 实例拥有者的UserID
db2start
四、停止一个运行中的实例
db2stop
强制停止使用:db2stop force等效于force applications all
五、明确当前运行中的实例
db2 get instance
六、查看系统中存在的实例
db2ilist
七、迁移实例
若您决定转而使用比服务器上安装的 DB2 软件更新的版本,或者需要将 32 位实例迁移为 64 位实例,就需要进行实例迁移。在 Windows 上,实例迁移是在必要的迁移过程中隐式完成的。在 Linux 和 UNIX 上,可使用以下命令显式地迁移已有实例:
db2imigr instance_name
八、更新DB2实例
在为 DB2 安装修补程序包或补丁时,一旦在服务器上安装好了修补程序包,您就需要更新已有实例,以链接到新的修补程序文件。使用以下命令更新实例:
db2iupdt instance_name
九、自动启动实例
db2iauto –on db2inst1
十、依附一个实例
attach 命令用来连接 DB2 实例,connect 命令用来连接 DB2 实例中的数据库。
要想进行实例级的维护任务,需要先使用attach命令进行实例附加。一些实例级的操作如下:
• Listing applications connected to your databases
• Forcing off applications
• Monitoring a database
• Updating the Database Manager Configuration parameters
举一个例子:
list applications命令列出了在现在活跃的实例中连接到所有数据库的程序,那么你不会在数据库级别上进行这个操作,而是要在实例级进行。
注意 在attach之前要先启动要attach的实例。
attach to instance_name_as_indicated_in_DB2INSANCE
若是显式的进行attach可以如下操作:
attach to db2 user XXX
若依附的本地或远程实例不是活跃的实例,那么使用命令
attach to node_name [user userId] [using password]
解依附为detach
注意在一个CLP会话中只能同时attach一个实例