具体过程如下:
- 首先我创建了一个裸设备
mklv -t raw -y 'my_dbdat4_lv' datavg 100
创建lv时会同时生成2个设备,一个为字符设备(c开头的为字符设备rmy_dbdat4_lv),一个为块设备(b开头的为块设备)。
cd /dev
ls -lrt
brw-rw---- 1 system 37, 1 Oct 10 08:40 my_dbdat4_lv
crw-rw---- 1 system 37, 1 Oct 10 08:40 rmy_dbdat4_lv
我数据库使用的是字符设备
chown -R db2inst1:db2adm rmy_dbdat4_lv
- 在使用字符设备创建表空间的时候,报错SQL0294N The container is already in use. SQLSTATE=42730
建bufferpool和表空间语句如下:
建bufferpool:db2 CREATE BUFFERPOOL BP_4K SIZE 1280 PAGESIZE 4K
建表空间:db2 "CREATE TABLESPACE DMS_DAT4K PAGESIZE 4096 MANAGED BY DATABASE USING (DEVICE '/dev/rmy_dbdat4_lv' 10000000) BUFFERPOOL BP_4K"
报错后在网上搜了一些解决方案,都是使用使用 db2untag 实用程序来从容器除去 DB2 容器标记:
1、直接对块设备db2untag -f /dev/my_dbdat4_lv
但是db2untag命令不能成功运行,系统认为db2untag不是目录
2、因为我使用的是字符设备创建表空间,我试了一下db2untag -f /dev/rmy_dbdat4_lv
结果db2untag成功了,再去创建表空间也成功了