`
guoyanxi
  • 浏览: 275701 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • db2
 
阅读更多
碰到有个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学习手册

    每个DB2实例都有一个唯一的名字,并且可以管理多个数据库。实例是DB2运行的基本单位。 2. **DB2 Administration Server(管理服务器):** 这是指用于管理和监控DB2环境中多个实例的服务器。通过它,管理员可以集中地...

    DB2手册pdf

    **FENCE** 和 **UNFENCE** 是DB2提供的两种存储过程,用于管理并行执行。FENCE用于锁定存储过程,而UNFENCE用于解锁。 #### SP错误处理用法 在DB2中,可以使用`TRY-CATCH`块来处理存储过程中发生的错误。例如: ```...

    DB2使用经验积累及心得

    - **游标的两种定义方式**: - 使用`DECLARE CURSOR`声明游标。 - 或使用`DECLARE cur CURSOR WITH RETURN FOR SELECT`形式定义。 - **修改游标的当前记录的方法**:通过`UPDATE OF column_name`来更新当前游标行...

    牛新庄:DB2使用经验

    游标有两种定义方式:声明式和隐式。例如: ```sql DECLARE cur CURSOR FOR SELECT * FROM table; OPEN cur; FETCH cur INTO variable; CLOSE cur; ``` - **类似DECODE的转码操作**:可以使用`CASE WHEN`...

    db2开发经验

    6. **游标的两种定义方式:** 游标可以通过声明游标的方式或使用动态SQL来定义。 7. **修改游标的当前记录的方法:** 使用`UPDATE OF`子句可以更新游标当前行的数据。 8. **类似DECODE的转码操作:** 可以使用`CASE ...

    DB2编程序技巧 (一)

    - **两种定义方式**: - 声明式游标:通过`DECLARE`语句声明,然后使用`OPEN`、`FETCH`和`CLOSE`来操作。 - 隐式游标:当执行`SELECT INTO`语句时自动创建,无需显式声明。 - **修改当前记录的方法**:通过`UPDATE...

Global site tag (gtag.js) - Google Analytics