更改DB2实例的fence用户的两种方法

阅读更多
碰到有个DB2的实例居然实例用户和fence用户是一样的
做了个测试,尝试更改fence用户
注意!无论使用哪个方法,都应该全面的备份数据库以及其参数设置。篇幅原因,这些以下没有列出。

鉴于第一个方法在db2idrop的时候会删除sqllib下面的某些文件,具有一定风险
所以推荐第二种方法,风险较小

###方法一:
思路:
1.使用db2cfexp导出实例配置
2.停止实例
3.删除实例
4.使用新的fence用户建立实例
5.使用db2cfimp导入原有实例配置
6.启动新的实例

参考:
[url]https://www-304.ibm.com/support/docview.wss?uid=swg21267506 [/url]

--建立instance,instance用户和fence用户一样
[root@localhost home]# /opt/ibm/db2/V9.7/instance/db2icrt -u db2inst4 db2inst4
DBI1070I  Program db2icrt completed successfully.

[root@localhost home]# su - db2inst4
[db2inst4@localhost ~]$ db2ilist
db2inst4
db2inst3

--查看fence用户
[db2inst4@localhost sqllib]$ db2pd -fmp |grep -i fen |grep -i user
Fenced User:     db2inst4

--开始更改
--1.使用db2cfexp导出实例配置
[db2inst4@localhost ~]$ db2cfexp cfexp.txt backup

--建立测试数据
[db2inst4@localhost ~]$ db2 "insert into t1 values (1)"
DB20000I  The SQL command completed successfully.
[db2inst4@localhost ~]$ db2 "insert into t1 values (2)"
DB20000I  The SQL command completed successfully.
[db2inst4@localhost ~]$ db2 "insert into t1 values (3)"
DB20000I  The SQL command completed successfully.
[db2inst4@localhost ~]$ db2 commit
DB20000I  The SQL command completed successfully.
[db2inst4@localhost ~]$ db2 "select * from t1"

C1         
-----------
          1
          2
          3

  3 record(s) selected.

--2.停止实例
[db2inst4@localhost ~]$ db2stop
SQL1025N  The database manager was not stopped because databases are still active.

--3.删除实例
[root@localhost ~]# /opt/ibm/db2/V9.7/instance/db2idrop db2inst4
DBI1070I  Program db2idrop completed successfully.
[root@localhost ~]# /opt/ibm/db2/V9.7/instance/db2ilist
db2inst3
--实例已经没有了

--4.使用新的fence用户建立实例

[root@localhost home]# /opt/ibm/db2/V9.7/instance/db2icrt -u db2fenc1 db2inst4
DBI1070I  Program db2icrt completed successfully.
[root@localhost home]# su - db2inst4
[db2inst4@localhost ~]$ db2ilist
db2inst4
db2inst3

--5.使用db2cfimp导入原有实例配置
[db2inst4@localhost ~]$ db2cfimp cfexp.txt

--6.启动新的实例
[db2inst4@localhost ~]$ db2start
SQL1063N  DB2START processing was successful.

--测试一下原有数据
[db2inst4@localhost ~]$ db2 "select * from t1"

C1         
-----------
          1
          2
          3

  3 record(s) selected.

--查看新的fence用户
[db2inst4@localhost ~]$ db2pd -fmp |grep -i fen
Trusted Path:    /home/db2inst4/sqllib/function/unfenced
Fenced User:     db2fenc1
[db2inst4@localhost ~]$ more ~/sqllib/ctrl/.fencedID 
db2fenc1

--ok


###方法二:
1.停止数据库
2.使用db2iupdt更新
3.db2updv9 ——如有需要
4.启动实例

--接着之前的实例,继续做。尝试把fence用户重新设置成db2inst3
[db2inst4@localhost ~]$ db2pd -fmp |grep -i fen
Trusted Path:    /home/db2inst4/sqllib/function/unfenced
Fenced User:     db2fenc1
[db2inst4@localhost ~]$ more ~db2inst1/sqllib/ctrl/.fencedID
/home/db2inst1/sqllib/ctrl/.fencedID: No such file or directory
[db2inst4@localhost ~]$ more ~/sqllib/ctrl/.fencedID 
db2fenc1

--1.停止数据库
[db2inst4@localhost ~]$ db2stop
SQL1064N  DB2STOP processing was successful.

--2.使用db2iupdt更新
[root@localhost db2inst4]# /opt/ibm/db2/V9.7/instance/db2iupdt -u db2inst3 db2inst4
/opt/ibm/db2/V9.7/instance/db2iutil: line 6163: chgowngrp: command not found
DBI1070I  Program db2iupdt completed successfully.

--4.启动实例
[db2inst4@localhost ~]$ db2start
SQL1063N  DB2START processing was successful.
--检查一下新的fence用户
[db2inst4@localhost ~]$ db2pd -fmp | grep -i fen
Trusted Path:    /home/db2inst4/sqllib/function/unfenced
Fenced User:     db2inst3
[db2inst4@localhost ~]$ cat sqllib/ctrl/.fencedID 
db2inst3

--成为新的fence用户了

--检查测试数据
[db2inst4@localhost ~]$ db2 "select * from t1"

C1         
-----------
          1
          2
          3

  3 record(s) selected.

--ok


你可能感兴趣的:(更改DB2实例的fence用户的两种方法)