二、DB2功能简介
1. 几个概念
在前面安装配置过程中,我们已经接触到一些DB2数据库的概念,其中有些概念与其它数据库有所区别。下面着重解释一下系统、数据库软件、实例和数据库的关系。
(1) 数据库软件
官方文档中称为DB2 副本,也就是数据库软件的一个拷贝,包括软件安装的二进制可执行文件和其他文件。
可以在单台机器上安装多个DB2 产品。每个DB2 副本可以处于相同代码级别,也可以处于不同代码级别,即不同版本。
DB2 产品的 root 用户安装可安装到您选择的安装路径中。缺省安装路径,对于 Linux 操作系统为:/opt/ibm/db2/V9.7
当缺省安装路径已经在使用时,如果安装一个新的 DB2 副本,那么必须指定安装路径,比如/opt/ibm/db2/V9.7_1。仅在使用“DB2 安装”向导安装 DB2 副本时,缺省路径的序号才会自动递增。无论使用哪种安装方法,都不能将另一个完整产品安装在另一个 DB2 副本所在的路径中(例如,/opt/ibm/db2/V9.7),也不支持安装到现有 DB2 副本的子目录中。
可使用 db2ls 命令可帮助您跟踪已安装的 DB2 产品及其安装路径。运行 db2ls 命令以找到安装在系统上的 DB2 产品。
(2) 实例
实例是逻辑数据库管理器环境,您可以在此环境中对数据库进行编目和设置配置参数。根据需要,可以在同一台物理服务器上创建多个实例,该服务器为每个实例提供唯一的数据库服务器环境。可使用多个实例优化每个实例的数据库管理器配置。并限制实例失败所带来的影响。如果一个实例失败,那么只影响一个实例。其他实例可继续正常运行。
在 Linux操作系统上以非 root 用户身份安装时,在安装 DB2 产品期间将创建单个实例。不能创建其他实例。
对于多个实例来说:
• 每个实例都需要额外的系统资源(虚拟内存和磁盘空间)。
• 由于要管理其他的实例,因此增加了管理工作量。
• 实例目录存储着与一个数据库实例相关的所有信息。实例目录一旦创建,就不能更改其位置。该目录包含:
数据库管理器配置文件
系统数据库目录
节点目录
节点配置文件(db2nodes.cfg)
包含调试信息的其他文件
可以在同一 DB2 副本或不同 DB2 副本中同时运行多个实例。要使用同一 DB2 副本中的多个实例,必须创建所有实例或者将它们升级到同一个 DB2 副本。在对要使用的实例发出命令之前,将 DB2INSTANCE 环境变量设置为该实例的名称。
要阻止实例访问另一实例的数据库,可在与实例同名的目录下为实例创建数据库文件。有关更多信息,请参阅 dftdbpath 数据库管理器配置参数。
要在具有多个 DB2 副本的系统中使用实例,要使用选择的特定 DB2 副本的正确环境变量设置该命令窗口。 方法是从命令窗口中运行db2envar脚本文件。
(3) 数据库
DB2 数据库是关系数据库。数据库将所有数据存储在彼此相关的表中。在这些表之间建立关系,以便可以共享数据并使重复项最少。
关系数据库是被视为一组表并按照关系数据模型操作的数据库。它包含一组用来存储、管理和访问数据的对象。这种对象示例包括表、视图、索引、函数、触发器和程序包。对象可以由系统(系统定义的对象)或用户(用户定义的对象)定义。
分布式关系数据库包含一组表和其他对象,它们分布在不同但内部相连的计算机系统中。每个计算机系统都有一个关系数据库管理器,用于管理其环境中的表。数据库管理器相互间的通信和合作方式允许给定数据库管理器在另一个计算机系统上执行 SQL 语句。
分区关系数据库是在多个数据库分区中管理其数据的关系数据库。这种将数据分布在多个数据库分区中的方式对大多数 SQL 语句来说是透明的。但是,某些数据定义语言 (DDL) 语句会考虑数据库分区信息,例如,CREATE DATABASE PARTITION GROUP。
联合数据库是其数据存储在多个数据源(例如,不同的关系数据库)中的关系数据库。这些数据看起来就像都位于单个大型数据库中一样,并且可以通过传统 SQL 查询来访问。对数据所作的更改可以显式定向至适当的数据源。
从上边的描述可知,一个系统可以包括多个DB2副本,每个副本可以包括多个实例,每个实例可以有多个数据库,通过改变当前环境变量,可以访问某个副本的某个实例下的不同数据库。分布式和联合数据库则是跨数据库访问的。
在我们的主测试环境中,目前只有一个DB2数据库软件,创建了一个实例,实例中创建了默认的sample数据库和兼容Oracle的oracle数据库。
(4) 用户和模式(Schema)
和Oracle不同,DB2没有自己的用户管理系统,db2的用户就是操作系统下的用户。
模式(schema)是用于在数据库中创建的数据库对象的一个高级限定符。它是数据库对象,例如表、视图、索引或触发器的一个集合。它提供了数据库对象的一个逻辑分类。
模式是用来组织数据库中对象的一种方式,可以把它理解为目录。所有同一个目录下的内容属于一个模式,要访问某个对象,就需要同时指定模式名和对象名,可以设定当前目录,那么此目录下的所有对象可以不带模式名访问。
在创建对象时,可以使用模式将这些对象进行分组。一个对象只能属于一种模式。使用 CREATE SCHEMA 语句来创建模式。有关模式的信息保存在连接的数据库的系统目录表中。
要创建模式,并且要使另一个用户成为该模式的所有者(可选),您需要 DBADM 权限。即使您不具有 DBADM 权限,也仍可以使用您自己的授权标识来创建模式。作为 CREATE SCHEMA 语句的一部分创建的任何对象的定义者是模式所有者。此所有者可以授予和撤销其他用户的模式特权。