电脑技术学习

DB2 9 数据库服务器管理之DB2实例

dn001

  创建及删除实例

  DB2 实例 是一种逻辑上下文,DB2 命令及函数在其中执行。您可将实例视为管理对数据库文件的访问的服务或守护进程。在一台服务器上可定义多个实例。各实例独立于其他实例,也就是说所有实例均可分别管理、操纵及调优。

  要在 Windows 中创建实例,只需执行以下命令:

  db2icrt instance_name

  在 Linux 和 UNIX 中,您必须另外提供一个用户 ID,用以创建 fenced 用户定义的函数和存储过程进程,形式如下:

  db2icrt -u fenced_user_ID

  instance_name

  默认情况下,用户定义的函数和存储过程是在 fenced 模式下创建的,因而这些进程运行在与 DB2 引擎不同的地址空间中,也称为系统控制器进程 db2sysc。这为数据库管理器提供了保护,使之免于被用户定义的例程意外地或恶意地破坏。

  要删除一个实例,首先断开所有数据库连接,然后执行以下命令停止实例:

  db2idrop -f instance_name

  列举、迁移和更新 DB2 实例

  要列举服务器上存在的 DB2 实例,可使用以下命令:

  db2ilist

  若您决定转而使用比服务器上安装的 DB2 软件更新的版本,或者需要将 32 位实例迁移为 64 位实例,就需要进行实例迁移。在 Windows 上,实例迁移是在必要的迁移过程中隐式完成的。在 Linux 和 UNIX 上,可使用以下命令显式地迁移已有实例:

  db2imigr instance_name

  在为 DB2 安装修补程序包或补丁时,一旦在服务器上安装好了修补程序包,您就需要更新已有实例,以链接到新的修补程序文件。使用以下命令更新实例:

  db2iupdt instance_name

  设置 DB2 环境

  恰当地设置 DB2 环境非常重要,这是因为它控制着 DB2 操作和活动的方式。DB2 环境由以下几部分构成:

  • DB2 配置文件注册库
  • 操作系统环境变量
  • DB2 数据库管理器配置参数
  • DB2 数据库配置参数

  DB2 环境

  设置配置文件注册库

  DB2 配置文件注册库是特定于 DB2 的变量,它会影响 DB2 系统的管理、配置与性能。为使 DB2 配置文件注册库的更改生效,您通常需要停止并重启实例。

  要列举所支持的全部 DB2 配置文件注册库:

  db2set -lr

  要设置 DB2 配置文件注册库:

  db2set registry_variable = value

  请注意,在变量名、等号和变量值之间没有空格。下面给出一个将 DB2COMM 注册库变量设置为单一值的示例:

  db2set DB2COMM=TCPIP

  将 DB2COMM 注册库变量设置为多个值的示例如下:

  db2set DB2COMM=TCPIP,NPIPE,LOCAL

  要将 DB2 配置文件注册库重置为默认值,只需使用与上面相同的命令即可,但不指定任何值:

  db2set registry_variable =

  要显示服务器上当前设置的所有 DB2 配置文件注册库,请执行以下命令:

  db2set -all

  您将看到形式如下的输出结果:

  [e] DB2PATH=C:Program FilesIBMSQLLIB_01

  [i] DB2ACCOUNTNAME=IBM-TP101dwsnow

  [i] DB2INSTOWNER=IBM-SB2QTSR5RSN

  [i] DB2PORTRANGE=60001:60004

  [i] DB2INSTPROF=C:PROGRA~1IBMSQLLIB~1

  [i] DB2COMM=TCPIP,NPIPE,LOCAL

  [g] DB2_EXTSECURITY=YES

  [g] DB2SYSTEM=IBM-TP101

  [g] DB2PATH=C:Program FilesIBMSQLLIB_01

  [g] DB2INSTDEF=DB2V

  方括号( [])中包含的标记表示注册库配置文件的作用域,具体解释如下:

  • [e] 表示为当前会话或环境所设置的注册库
  • [u] 表示用户级注册库
  • [n] 表示节点级注册库
  • [i] 表示实例级注册库
  • [g] 表示全局级注册库
  •   设置系统环境变量

      绝大多数 DB2 环境设置都是由 DB2 配置文件注册库控制的。而那些未存储在配置文件注册库中的设置称为操作系统环境变量。设置系统变量的命令将根据您所使用的平台及 UNIX shell 而有所不同。

      下面给出几个示例:

    • 在 Windows 中: set DB2INSTANCE=PROD
    • 在 Linux 和 UNIX 的 Korn shell 中: export DB2INSTANCE=PROD

      DB2INSTANCE 是一个需要掌握的重要系统变量。它指定当前应用程序的会话或窗口的默认 DB2 实例。一旦设置好该变量,后续的所有 DB2 命令都将在该实例的作用域内执行。

      要了解您当前工作在哪个 DB2 实例中,可运行以下 DB2 命令:

      get instance

      举个例子,为此,您只要运行以下命令即可:

      db2 get instance

      此命令的输出结果形式如下:

      The current database manager instance is: DB2V

      设置配置参数

      在 DB2 中,存在两个配置 “级别”。在实例(或数据库管理器)级别,您可为该实例配置整个 DB2 环境,这将影响实例中的所有数据库和使用该实例中数据库的所有应用程序。在数据库 级别,您可配置参数,而这些参数将影响到访问特定数据库的所有应用程序的行为。关于参数的更多信息,请参阅 Monitoring DB2 activity 教程。数据库管理器、数据库配置参数及其值均可使用 DB2 Control Center 或 DB2 命令查看及设置。

      在 Control Center 中,右击需要配置或更改的实例或数据库,选择 Configure Parameters。您将看到一个配置参数的列表,并带有简短的描述、其当前及挂起值,如下所示。

      使用 DB2 Control Center 管理配置参数

      您还可通过使用如下 DB2 命令获得相同的输出结果:

      db2 get database manager configuration

      db2 get database configuration for database_name

      要更新 Control Center 中数据库管理器或数据库配置参数的值,打开 DBM 或 DB Configuration 窗口。找到您想要更改的参数,然后双击其值。单击 '...' 图标将打开一个包含如何设置变量的提示以及允许范围说明的窗体。

      若参数值可立即或动态更改,则在您单击 OK 后,更改立即生效。部分重要性较低的参数无法动态更改,在这种情况下,您将看到其当前值与挂起值不同。挂起值是新值,将在该实例或数据库下一次停止并重启后应用。Pending Value Effective 列告诉您新值将在何时生效。

      使用 DB2 Control Center 设置配置参数

      也可使用以下命令来设置您的数据库管理器或数据库配置参数的值:

      db2 update database manager configuration using parameter new_value

      db2 update database configuration for database_name using parameter new_value

      若您所指定的参数更改不能立即生效,则在您运行了 update db/dbm configuration 命令后,将返回形式如下的警告消息:

      SQL1362W One or more of the parameters submitted for immediate modification

      were not changed dynamically. Client changes will not be effective until the next time

      the application is started or the TERMINATE command has been issued. Server changes

      will not be effective until the next DB2START command.

  •   联机设置配置参数

      绝大多数配置参数均可在实例或数据库保持运行的情况下联机设置。只要可能,对这些联机配置参数的更改默认为立即生效。例如,若更改了 sortheap 的值,所有新的 SQL 请求将使用新值。为显式指定这种立即生效的行为,可将 immediate 关键字附加到 update 命令中:

      db2 update database manager configuration using parameter new_value

      immediate

      db2 update database configuration for database_name using

      parameter new_value

      immediate

      若您选择将此更改延迟至实例重启或数据库激活时,则应指定 deferred 关键字:

      db2 update database manager configuration using parameter new_value

      deferred

      db2 update database configuration for database_name using

      parameter new_value

      deferred

      有时,您可能希望找出已确定并延迟了哪些更改。为显示数据库管理器配置参数的当前值和挂起值,首先进入实例,然后在 get database manager configuration 命令中指定 show detail 选项,方法如下(请注意,instance_name 是系统环境变量 DB2INSTANCE 设置的值):

      db2 attach to instance_name

      db2 get database manager configuration show detail

      同样地,要列举数据库配置参数的当前值和挂起值,首先连接到数据库,然后使用 show detail 选项:

      db2 connect to database_name

      db2 get database configuration for database_name

      show detail

      挂起值列于 Delayed Value 列中,如下所示。

      数据库配置参数

      强制停止实例和数据库

      如果您需要使数据库或数据库管理器配置更改立即生效,而您所更改的参数并非动态,那么就需要停止并重启数据库或整个实例。若存在连接并使用此实例中一个或多个数据库的应用程序,您就无法停止并重启数据库或实例。此时,您可使用如下 DB2 命令,强行使用户断开 与数据库的连接:

      force application all

      您也可以在停止实例的同时断开所有用户的连接,命令如下:

      db2stop force

      若您只希望强制停止一个特定的应用程序,则需要了解该应用程序的句柄。 使用以下命令查找句柄:

      list applications

      您将看到形式如下的输出结果:

      Auth Id Application Appl. Application Id DB # of

      Name Handle Name Agents

      -------- -------------- ---------- ------------------------------ -------- -----

      DSNOW db2bp.exe 8 *LOCAL.DB2.020205193946 SAMPLE 1

      若您仅希望强制停止命令行处理器(或命令窗口),即本例中的 db2bp.exe 应用程序,可使用如下 DB2 命令:

      force application (8)