今天在家在aix刚装了db2, 很高兴,这下学习db2又近了一步:
话不多说,下面记下操作过程中的各种报错:
1:创建数据库报错:
#su - db2inst2 (我的实例用户是db2inst2)
$db2 create db userdb
报错:SQL1043C Database Services could not initialize the system catalogs. Error
"-968" was returned.
网上查了下,使space 不足,咋办呢?
报错代码:SQLCODE 0968C :
报错信息:File System is full.(文件系统已满)
问题原因:超过当前用户标识所允许的最大文件大小。
解决方法:
切换用户为 db2inst2
su - db2inst2
更改fsize为100G,(209715100块512byte)
chuser fsize=209715100 db2inst2
重启计算机
shutdown -Fr
再次登陆系统并切换用户为 db2inst2
好下面继续创建数据库:
#su - db2inst2
$db2 create db userdb
报错:报一个i/o 错,我去db2diag.log 看了一下,还是报space 不足。
咋办呢?
......
继续研究:......
终于找到了一个解决方案,不管成还是不成,试试看呗:
a) 首先运行#smitty lv和smitty fs建立一个2G左右的文件系统/db/userdb
b) 然后运行#chmod 777 /db/userdb修改此文件系统的读写权限,
c) 其次运行#chown db2adm:db2inst1 /db/userdb修改此文件系统的属主
d) 最后$db2 create db USERDB on /db/userdb using codeset GBK territory CN
上面最后一步要建立在一下的基础上,((设置中文环境))(我的建议还是英文环境,以下几步不用设)
a) #su – db2inst2
b) $db2set db2codepage=1386
c) $db2set db2tcpip=tcpip
d) $db2set db2country=86
我没有设置,结果数据库是建好了,连的时候报错:
$ db2 connect to userdb
SQL0332N There is no available conversion for the source code page "1386" to
the target code page "819". Reason Code "1". SQLSTATE=57017
又咋办呢?现在database 建好了,连不上啊?
后来知道是建数据库是建成中文的,没有在command 设置db2set db2codepage=1386
有人建议是$db2set db2codepage=819
我试了一下,还是报同样的错,...... 还是重新建一个吧:
$db2 drop db userdb
$db2 create db userdb on /db/userdb
再连:success, 一颗心放下.呵呵
2增加一些配置:
2.1
修改数据库配置,提升数据库性能(将数据库的用户表空间userspaces建立在系统裸设备上,提升数据库性能)
a) 首先运行#smitty lv建立一个4G左右的raw device(如:lv_userdb)
b) 其次运行#chown db2adm:db2inst1 /dev/rlv_userdb修改此raw的属主
c) $db2 connect to userdb
d) $db2 drop tablespaces userspace1
e) $db2 create tablespace userspace1 managed by database using ( device ‘/dev/rlv_userdb’ 1000000) //1000000单位是page,每page大小是4K,所以总大小是4G。
说明一下,建表空间报错:原因是ksh 不认识:'('
后来的解决方案是:(先db2,在进行sql)
a) $db2
b) $db2>>create tablespace ..........
当然也有其它的方法:
c) $db2 "create tablespace userspace1 managed by database using ( device ‘/dev/rlv_userdb’ 1000000) "
就是加上引号,please try
2.2 修改数据库单个日志文件大小20M(20M=4*5000K)、主日志文件数量20个及辅助日志文件数量10个,确保应用产生的日志大小小于系统提供的日志空间大小,保证应用程序的安全运行,不至于应用在较大交易情况下出现日志rollback,导致交易失败的情况发生,提升数据库的稳定性。
a) $db2 connect to userdb
b) $db2 update db cfg using LOGFILSIZ 5000
c) $db2 update db cfg using LOGPRIMARY 20
d) $db2 update db cfg using LOGSECOND 10
上面的修改数据库单个日志文件大小,及相关的设置很重要,可以解决DB2日志文件已满的问题。
还有我看了还有将数据库日志重新定向到新的文件系统,便于系统管理员查看管理
a) 首先运行#smitty lv和#smitty fs建立一个1G左右的jfs2文件系统(如:lv_dblog),并mount此文件系统(如:mount /dblog)
b) 运行#chown db2adm:db2inst1 /dblog修改此文件系统的属主
c) 运行#chown 777 /dblog修改此文件系统的读写权限
d) $db2 connect to userdb
e) $db2 update db cfg using LOGNEWPATH /dblog
f) 运行exit退出db2inst1用户环境,再利用su – db2inst1进行,当运行db2 connect to userdb时,可以在/dblog目录下看见新产生的日志文件。
我试了一下,没有成功,报错:“LOGNEWPATH”......以后再研究,呵呵。