DB2使用笔记

1、赋予用户LOAD权限的步骤

   使用实例用户db2inst1登录数据库;
     使用命令db2 update dbm cfg using sysadm_group dasadm1给管理员用户组dasadm1赋予SYSADM权限;
     使用命令db2 connect to databaseName连接数据库;
     使用命令db2 grant secadm on database to user dasusr1给管理员用户dasusr1赋予SECADM权限;
     使用命令db2 disconnect pom_ct断开当前数据库的连接;
     使用命令db2 connect to databaseName user dasusr1 using 123456使用管理员用户dasusr1连接数据库;
     使用命令db2 grant load on database to user db2inst1赋予用户db2inst1 LOAD权限;

2、常见错误解决方式

     错误码1 解决:SET INTEGRITY FOR table_name IMMEDIATE CHECKED
   错误码3 解决:LOAD FROM *.txt OF DEL TERMINATE INTO 表名

3、临时禁用外键

  共有三种方式

  1)set integrity for table_name off  
   set integrity for table_name foreign key immediate unchecked

  2)禁用:ALTER TABLE <table-name> ALTER FOREIGN KEY <constraint-name> NOT ENFORCED 
   启用:ALTER TABLE <table-name> ALTER FOREIGN KEY <constraint-name> ENFORCED


  3)禁用:ALTER TABLE TABLENAME DISABLE CONSTRAINT CONSTRAINTNAME;
   启用:ALTER TABLE TABLENAME ENABLE CONSTRAINT CONSTRAINTNAME;


4、错误清单及解决方式

1) [IBM][CLI Driver] SQL30081N  检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:"SOCKETS"。检测到错误的位置:"172.16.2.140"。 检测到错误的通信函数:"connect"。协议特定的错误代码:"10060"、"*"、"*"。  SQLSTATE=08001

解决:

找到此C:/WINDOWS/system32/drivers/etc/路径下的hosts文件,并用记事本打开

在文件中添加你要连接的服务端主机的IP及 主机名:如127.0.0.1       localhost

2) 找不到数据库别名或数据库名称""或数据库别名 "" 已存在于本地数据库目录或系统数据库目录中。

解决:

    db2 list database directory   查看系统数据库目录,看不到要找的数据库,表示该数据库不在系统数据库目录中

  db2 list database directory on D:(在系统数据库目录找不到的情况下执行该指令,这里是盘符d),然后发现有sample和source的别名。说明在本地数据库目录中。

  db2 catalog database 数据库名 on d: 将数据库编目到节点上

  db2 drop database 数据库名 删除数据库

3)db2在更新表结构的时候报以下错误

SQLCODE: -443, SQLSTATE: 38553
打开db2命令行,切换到本机db2的/bnd”目录下,

1、db2 connect to 数据库名 user 用户名 using 密码

2、执行db2 bind db2schema.bnd blocking all grant public


原文地址:https://www.cnblogs.com/zhengbing/p/4228607.html