碰到有个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运行的基本单位。 2. **DB2 Administration Server(管理服务器):** 这是指用于管理和监控DB2环境中多个实例的服务器。通过它,管理员可以集中地...
**FENCE** 和 **UNFENCE** 是DB2提供的两种存储过程,用于管理并行执行。FENCE用于锁定存储过程,而UNFENCE用于解锁。 #### SP错误处理用法 在DB2中,可以使用`TRY-CATCH`块来处理存储过程中发生的错误。例如: ```...
- **游标的两种定义方式**: - 使用`DECLARE CURSOR`声明游标。 - 或使用`DECLARE cur CURSOR WITH RETURN FOR SELECT`形式定义。 - **修改游标的当前记录的方法**:通过`UPDATE OF column_name`来更新当前游标行...
游标有两种定义方式:声明式和隐式。例如: ```sql DECLARE cur CURSOR FOR SELECT * FROM table; OPEN cur; FETCH cur INTO variable; CLOSE cur; ``` - **类似DECODE的转码操作**:可以使用`CASE WHEN`...
6. **游标的两种定义方式:** 游标可以通过声明游标的方式或使用动态SQL来定义。 7. **修改游标的当前记录的方法:** 使用`UPDATE OF`子句可以更新游标当前行的数据。 8. **类似DECODE的转码操作:** 可以使用`CASE ...
- **两种定义方式**: - 声明式游标:通过`DECLARE`语句声明,然后使用`OPEN`、`FETCH`和`CLOSE`来操作。 - 隐式游标:当执行`SELECT INTO`语句时自动创建,无需显式声明。 - **修改当前记录的方法**:通过`UPDATE...