本文详细介绍一下DB2数据库在Linux环境下的安装过程。所使用的Linux发行版是Ubuntu 12.04。DB2版本是DB2 Express-C V10.1 Linux 32位版,即DB2 V10的社区版(免费版本)。
装前准备
获取DB2
2.下载页面一共有5个文件:
第一个文件是DB2 Express-C light,一个轻量级的版本;
第二个文件是DB2 Express-C 的完整版,所以建议不用第一个,下第二个就行了;
第三个文件是Data Studio Administation Client,这个是一个单独的数据库管理软件,由于从DB2 V10开始,DB2数据库已经不再集成控制中心(Control Centre)了(意味着默认只能用命令行方式管理数据库),对DB2的GUI方式的管理由单独的Data Studio工具完成。所以为了便于管理DB2数据库,建议Data Studio也要下载安装。这里提供的只是Data Studio的管理客户端版,也可以选择下载Data Studio完整版。Data Studio是免费提供的。
第四个文件是Accessories Suit Text Search。这是DB2的一个全文本搜索组件,一个很强大的搜索组件。可装可不装。
第五个文件是National Language Pack for DB2,即本地化语言包。里面包含了DB2支持的全部语言。要注意:由于DB2安装时会自动根据操作系统的语言来选择DB2安装语言(当然,英文语言总是被安装的),如果你使用的Linux环境是中文的,那么安装过程中会要求提供语言包的地址(不知道如果不提供语言包是不是就安装成英文的了)。所以,建议下载这个语言包。
另外,IBM支持使用HTTP下载或者用它自己的Download Director下载。后者需要Java运行时环境。
安装必要软件
1.由于DB2的安装包是基于RPM的,所以需要安装一个rpm兼容的安装器。IBM推荐使用alien。安装命令为:
sudo apt-get install alien
2.由于DB2的安装过程需要依赖gcc,所以还需要安装libstdc++5和libaio-dev。安装命令为:
sudo apt-get install libstdc++5
sudo apt-get install libaio-dev
正式安装
1.下载得到的db2_v101_linuxia32_expc.tar.gz就是DB2安装包了。你可以在图形化界面上直接将其解压,得到expc目录。也可以在终端下,运行 $tar xzvf db2exc_91_LNX_x86.tar.gz 命令完成解压。这里以直接解压得到expc目录为例。
2.双击expc目录下的db2setup文件运行。或者终端下跳转到expc目录,然后键入sudo ./db2setup 开始安装。这里要注意:如果当前的Ubuntu用户不是root用户,那么直接双击db2setupyunx安装程序的话就是以非root方式安装。而终端下键入sudo ./db2setup则是进行root安装(当然如果没有sudo则同样是非root安装)。推荐root安装。所以这里使用后者。
3.稍后弹出安装页面,正式开始DB2安装。注意一定不要将上面的终端关闭了!
4.直接点击“安装产品”,接受许可协议,安装类型默认(典型),安装操作默认(响应文件),安装目录默认(root安装会安装到root目录下,非root安装会安装到当前用户的home目录下)。然后是DAS用户设置。DAS是数据库管理服务器,这里可以默认创建新用户,也可以使用现有用户。
使用新用户可以自己指定用户名,UID,组名,GID和用户主目录。这些都可以使用默认值,只需要设置一个密码就可以了。
使用现有用户则需要注意:指定的用户必须具有最低特权集。即不要使用root账户。还有,DAS用户不能和后面指定的实例所有者用户相同。
由于这个用户并不需要去特别管理,使用默认方式,创建一个新用户就行了。
5.然后进入实例设置页面,DB2必须至少要有一个实例才行,可以选择安装时创建DB2实例或者安装完成后再创建。选择安装后创建则后面就没有实例用户和受防护用户的设置内容了,但是需要安装完成后立即在终端中手动创建实例和实例用户等,要麻烦一些。所以这里选择安装时创建。
6.然后进入实例设置页面。这是DB2安装过程中最重要的一环了,和DAS用户设置一样,DB2实例所有者可以是创建的新用户,也可以直接使用现有用户。
如果创建新用户,则可自己指定用户名,组名,用户主目录等。DB2默认实例名和该实例的所有者用户名是一样的,比如默认创建一个用户名为db2inst1的用户,则实例名为db2inst1。
如果直接使用现有用户,则可以指定一个已存在的用户,比如直接指定为当前用户。使用现有用户主要是基于方便上的考虑。当然,创建的实例名也会和指定的现有用户的用户名一样。
要注意:Linux环境下,DB2实例直接是和用户相关联的,一个实例必须对应于一个实例所有者用户和一个受防护用户(当然实例所有者用户和受防护用户可以是同一个用户),一个用户也最多只能有一个DB2实例。想要创建多个实例就需要先创建多个用户。为了使用的方便,这里直接使用当前用户作为实例所有者用户,即为当前用户创建DB2实例。(如果使用别的用户创建实例,则使用当前用户登录后还要进行用户切换才能使用DB2数据库)
7.设置受防护的用户。上面介绍过,一个实例对应一个所有者用户和一个受防护用户。受防护用户的作用是以该用户执行不稳定的存储过程或函数,出错时不会影响到实例本身。(类似沙盒)
受防护用户的设置和所有者用户的设置一样,这里依然是设置为当前用户(会出现警告,无视)。
8.一切配置就绪,开始安装。安装过程中可能要求提供语言包镜像。将之前下载的语言包解压后,指定镜像目录为解压得到的目录就行了。
9.安装完成!
后续配置
启动/切换实例:
如果是创建了新的实例所有者,如db2inst1,而当前登录用户为maple,要启动db2inst1实例,则终端下需要输入以下命令启动(实例切换也是下述命令,因为同时只允许一个实例是活动的):
su db2inst1 (切换到db2inst1用户)
. ~/sqllib/db2profile (调入该用户配置脚本,设置db2inst1实例为当前实例)
db2start (启动当前实例)
如果当前登录用户为maple,而maple用户拥有实例maple,则要启动maple实例,终端下需要输入的命令为:
db2start (直接启动当前用户的实例)
如果我们希望一个实例在每次系统启动后自动启动,可以使用以下命令:
db2iauto -on
如:希望实例db2inst1自动启动,命令为:db2iauto -on db2inst1
如果希望关闭实例的自动启动,则可使用以下命令:
db2iauto -off
##################################################################################
以上实例的启动是以实例已经存在为前提的,如果安装DB2时选择在DB2安装完成后设置实例,则需要在安装完成后先创建实例。当然,如果需要创建多个实例,同样是执行下面的操作。注意下面的操作需要root方式执行。
1.创建用户组(DAS组,实例所有者组,受防护用户组):
sudo groupadd -g 999 db2iadm1
sudo groupadd -g 998 db2fadm1
sudo groupadd -g 997 dasadm1
2.创建用户(DAS用户,实例所有者,受防护用户):
sudo useradd -u 1002 -g dasadm1 -m -d /home/dasusr1 dasusr1 -p password2
sudo useradd -u 1003 -g db2fadm1 -m -d /home/db2fenc1 db2fenc1 -ppassword3
sudo useradd -u 1004 -g db2iadm1 -m -d /home/db2inst1db2inst1 -p password4
[3.创建DAS管理服务器:] (如果创建过DAS管理服务器,就不用再行创建了,一台计算机只能有一个DAS服务器,它能管理所有DB2实例)
sudo /opt/ibm/db2/V10.1/instance/dascrt -u dasusr1 (这里的dascrt命令的位置为DB2的安装目录,dasusr1为刚才创建的DAS用户)
另外:DAS服务器的关闭和开启需要切换到DAS用户下执行
/opt/ibm/db2/V10.1/das/bin/db2admin stop 或 /opt/ibm/db2/V10.1/das/bin/db2admin start
4.创建实例:
sudo /opt/ibm/db2/V10.1/instance/db2icrt-u db2fenc1 db2inst1 (db2icrt命令的位置为DB2的安装目录,db2fenc1为刚才创建的受防护用户,db2inst1为刚才创建的所有者用户)
5.按照上面启动实例的方法启动实例.
##################################################################################
创建样本数据库
DB2 V10安装完成后默认是不会创建Sample数据库的,创建Sample数据库的命令为:
db2sampl
注意:创建Sample数据库前请确认当前实例名,避免将数据库创建到别的实例上,显示所有数据库实例的命令是db2ilist。显示当前数据库实例的命令是
db2 get instance
如果需要将数据库创建到别的实例上,则参考前面实例启动/切换的内容先就行实例切换。